gpt4 book ai didi

dma - DMA如何与PCI Express设备一起使用?

转载 作者:行者123 更新时间:2023-12-03 14:52:15 30 4
gpt4 key购买 nike

假设CPU要从PCI Express设备进行DMA读取传输。与PCI Express设备的通信由事务层数据包(TLP)提供。从理论上讲,TLP的最大有效负载大小为1024个双字。那么,当CPU向PCI Express设备发出4兆字节大小的DMA读取命令时,DMA Controller 如何工作?

最佳答案

在PCIe枚举阶段,确定允许的最大有效负载大小(可以小于设备的最大有效负载大小:例如,中间PCIe交换机的最大有效负载大小较小)。

大多数PCIe设备是DMA主设备,因此驱动程序会将命令传输到设备。设备将发送几个写数据包,以xx个最大大小的TLP块传输4个MiB。

编辑1以回复评论1:

基于PCI的总线在芯片组中没有芯片或子电路形式的“DMA Controller ”。总线上的每个设备都可以成为总线主机。主存储器始终是从存储器。

假设您已经构建了自己的PCIe设备卡,它可以用作PCI主设备,并且您的程序(在CPU上运行)希望将数据从该卡发送到主内存(4 MiB)。

设备驱动程序从操作系统中知道该特定内存区域的内存映射(一些关键字:内存映射的I / O,PCI总线枚举,PCI BAR)。

驱动程序将命令(写入),源地址,目标地址和长度传输到设备。可以通过将字节发送到预定义BAR内的特殊地址或写入PCI配置空间来完成。卡上的DMA主设备会检查这些特殊区域中是否有新任务(分散收集列表)。如果是这样,这些任务就入队了。

现在,DMA主设备知道向何处发送多少数据。他将从本地内存中读取数据并将其包装为最大有效负载大小的512字节TLP(从枚举中得知路径设备<--->主内存上的最大有效负载大小)并将其发送到目标地址。基于PCI地址的路由机制将这些TLP定向到主存储器。

关于dma - DMA如何与PCI Express设备一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27470885/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com