by support »
Hi,
Well, the short answer is that you can't. To get an efficient utilization of the PCIe bandwidth, you need to use DMA.
I have had people reporting that two consecutive 32-bit writes were fused into a single write TLP packet by the root port. This is something the bridge is allowed to do, but as far as I know, there is no way to force it doing so. The underlying idea in designing the relevant chipsets is not to waste efforts optimizing data transmissions initiated by the host, since they're only intended for control.
You may try tricking the processor into sending a burst by e.g. making the relevant memory region cacheable and invalidate or flush the cache. But I don't know if that's even possible or if that would help.
So again, the bottom line is simple: The tool for what you want is DMA, and I will be delighted to hear from you again if you manage to speed up things somehow without that.
Eli
Hi,
Well, the short answer is that you can't. To get an efficient utilization of the PCIe bandwidth, you need to use DMA.
I have had people reporting that two consecutive 32-bit writes were fused into a single write TLP packet by the root port. This is something the bridge is allowed to do, but as far as I know, there is no way to force it doing so. The underlying idea in designing the relevant chipsets is not to waste efforts optimizing data transmissions initiated by the host, since they're only intended for control.
You may try tricking the processor into sending a burst by e.g. making the relevant memory region cacheable and invalidate or flush the cache. But I don't know if that's even possible or if that would help.
So again, the bottom line is simple: The tool for what you want is DMA, and I will be delighted to hear from you again if you manage to speed up things somehow without that.
Eli