对pcie dma传输的一些理解

mwr包(memory write),包中的地址信息是pc的物理地址,数据将写入该地址;

mrd包(memory read),pc在收到后会回复一个完成包,包含读取地址的数据;



scatter-gather dma通过链表式描述符实现非连续内存的高效传输;

每个描述符包含:

数据块的物理地址;

数据块的传输长度;

是否为链表的最后一项;

下一个描述符的物理地址;

工作过程:

板卡按照链表中的描述符顺序执行dma传输;

当传输到最后一个描述符时,通过中断或查询方式通知传输结束;

解决大块内存分配问题:

在pc上很难直接申请连续的大块物理内存;

通过页表机制,将多个非连续的内存页组合成一个逻辑连续的大内存区域;

将这些页表的信息组织成描述符链表,启动dma后,设备可以按照链表一次填充数据;

描述符是一个结构体,里面包含了不同的字段,比如物理地址:dma传输的数据块的起始地址;传输长度:本次dma传输的数据长度;下一个描述符的地址:指向下一个描述符的地址;状态信息:是否是链表中的最后一个描述符,或是否存在其他标志位(如stick bit);

描述符在内存中以链表的形式排列,设备在传输数据时,逐个读取并执行描述符中的操作;



设备能够通过硬件自动读取链表中的下一个描述符地址,dma控制器有一个状态机(硬件模块),他会在完成当前描述符后,自动读取链表中的下一个描述符,在启动dma之前,驱动程序将链表受地址写入设备的某个寄存器,作为dma的起始点;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值