This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

是否有办法提升Cortex-A57架构的CPU访问外设内存的性能?

各位ARM专家:

   请教遇到的一个问题,Cortex-A57架构的CPU通过PCIE插槽插上独立AMD显卡,发现通过内核或者glibc的memcpy在系统内存与显卡显存间拷贝数据,在两个不同厂家的CPU上都测试过,速度低于20MB/s;在x86上,该速度可达4000MB/s。

   请问有没有办法提升在系统内存与显卡显存间拷贝数据的速度?比如设置显存的页属性/cache策略?或者更有效率的指令(尝试用neon指令改写memcpy,性能可以提升5%左右)?谢谢。

Parents
  • 一般而言,memcpy的性能瓶颈都不在CPU而在memory system,在ARM的测试平台里A57的memcpy性能至少可以达到2GB/s以上。

    你看到A57访问PCIE带宽低的现象极有可能是由PCIE和ARM Architecture定义的memory model有所不同造成的。这个不同导致ARM CPU访问PCIE时会有额外的限制(比如不能利用CPU里的cache),此时带宽瓶颈在memory system。如果想提升性能,你可以在memory system上做相关研究。

    对于指令,我们建议在memory copy code尽量循环展开,即一个循环中包含更多的load和store指令,并且建议使用STRD/LDRD(aarch32) 或者STP/LDP(aarch64)这样的指令进行memory copy。

Reply
  • 一般而言,memcpy的性能瓶颈都不在CPU而在memory system,在ARM的测试平台里A57的memcpy性能至少可以达到2GB/s以上。

    你看到A57访问PCIE带宽低的现象极有可能是由PCIE和ARM Architecture定义的memory model有所不同造成的。这个不同导致ARM CPU访问PCIE时会有额外的限制(比如不能利用CPU里的cache),此时带宽瓶颈在memory system。如果想提升性能,你可以在memory system上做相关研究。

    对于指令,我们建议在memory copy code尽量循环展开,即一个循环中包含更多的load和store指令,并且建议使用STRD/LDRD(aarch32) 或者STP/LDP(aarch64)这样的指令进行memory copy。

Children
No data