在X86平台上,从根复合体到端点的单一Memwr (BAR ACCESS)的最大大小是什么?
我的系统的设置是有一个PCIe端点设备插入到X86 PC上,这个设备的bar0大小是1 MBytes,这个内存范围已经映射到用户空间。
如果我将数据复制到内存的一部分,就可以在端点端获得bar访问(MemWr)。但是,如果我做一个大拷贝,例如1 MBytes, Memwr 请求总是将拆分成非常小的Memwr TLP(8字节或4字节),这与128 bytes的最大有效负载大小相距甚远。
为什么根comlex分裂请求?这与X86平台有关吗?在X86平台上,Memwr从根复合体到端点的最大大小是什么?
谢谢。
C
发布于 2013-07-03 18:44:00
在链接上使用的最大有效载荷大小( MPS )是EPs、MPS和RCs MPS之间的最小值。在你的例子中,似乎这里的限制数字是RC的数字。
发生这种情况的另一个原因是,如果您没有足够的流量控制信用( FCC ),那么您的驱动程序可以自主地选择拆分MWr,而不是等待FCC达到所需的值,如果它们能够到达的话。
干杯纳达夫。
https://stackoverflow.com/questions/17430529
复制相似问题