Is there a specific size at which DMA transfers data to memory? For example, from CPU side when data is read or written to physical memory (DRAM) it is generally at the granularity of 64 bytes (cache block size). My question is: when a device uses DMA to write to memory is the controller uses similar fixed sizes for actual data transfer?

Please note that I am not asking for whether there can be different sizes of transfer for a DMA transactions, since a bigger packet can always be broken into fixed size blocks.

Thanks Arka

有帮助吗?

解决方案

This is extremely platform-dependent. According to this information sheet on PCI-E:

Intel desktop chipsets support at most a 64-byte maximum payload while Intel server chipsets support at most a 128-byte maximum payload. The primary reason for this is to match the cache line size for snooping on the front side bus. ... Chipsets produced by vendors other than Intel have supported a higher value; 512 bytes is the commonly known maximum payload value for a server North Bridge.

Assuming you are talking about PCI-E, the search terms you want are "PCI Express" and "payload size".

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top