DMA 将数据传输到内存是否有特定的大小?例如,从 CPU 端,当数据被读取或写入物理内存 (DRAM) 时,它通常以 64 字节的粒度(缓存块大小)。我的问题是:当设备使用 DMA 写入内存时,控制器是否使用类似的固定大小进行实际数据传输?
请注意,我不是在询问 DMA 事务是否可以有不同大小的传输,因为更大的数据包总是可以分成固定大小的块。
谢谢阿卡
DMA 将数据传输到内存是否有特定的大小?例如,从 CPU 端,当数据被读取或写入物理内存 (DRAM) 时,它通常以 64 字节的粒度(缓存块大小)。我的问题是:当设备使用 DMA 写入内存时,控制器是否使用类似的固定大小进行实际数据传输?
请注意,我不是在询问 DMA 事务是否可以有不同大小的传输,因为更大的数据包总是可以分成固定大小的块。
谢谢阿卡
这是非常依赖于平台的。根据PCI-E 上的此信息表:
英特尔台式机芯片组最多支持 64 字节的最大有效负载,而英特尔服务器芯片组最多支持 128 字节的最大有效负载。这样做的主要原因是为了匹配缓存线大小,以便在前端总线上进行侦听。... 由英特尔以外的供应商生产的芯片组支持更高的价值;512 字节是服务器北桥的众所周知的最大有效负载值。
假设您正在谈论 PCI-E,您想要的搜索词是“PCI Express”和“有效负载大小”。