请教:
我们发现无论怎样修改Auto-prefetch agent中各个寄存器的值以及xio2001的MRRS,当CPU发起一次DMA 1MB 读取传输时,在xio2001 PCI侧所测量到的突发长度均无任何变化,一直为256B。
进一步的测试发现xio2001 pci read 的突发长度仅与CPU的PCIE控制器的参数相关:
1.当CPU PCIE 控制器的MRRS设置为512B,发起1MB的DMA读取操作,xio2001 的pci突发读取长度变为256B.
2.当CPU PCIE 控制器的MRRS设置为128B,发起1MB的DMA读取操作,xio2001 的pci突发读取长度变为128B.
3.当CPU PCIE 控制器的MRRS设置为512B,发起64B的DMA读取操作,xio2001 的pci突发读取长度变为64B
我们的疑问是:
1.xio2001 的Pre-Fetch Agent Request Limits Register默认为0x443,其预取长度应该为512B。当CPU仅发起64B的DMA请求时,xio2001 pci 侧所测量到的信号发现仅有64B的突发传输,为什么没有出现512B预取操作?看起来Pre-Fetch Agent似乎没有任何作用?
2.无论我们怎样修改xio2001 的Pre-Fetch Agent Request Limits Register,MRRS,以及CPU pcie控制器的相关寄存器,为什么最大的突发传输长度被限制在了256B,这一限制是受到什么因素的影响?