我们有配备XP64的Core2机器(Dell T5400).
我们观察到,当运行32位进程时,memcpy的性能大约为1.2GByte/s; 然而,64位进程中的memcpy达到大约2.2GByte/s(或英特尔编译器CRT的memcpy为2.4GByte/s).虽然最初的反应可能只是解释这个因为64位代码中可用的寄存器更宽,但我们观察到我们自己的类似memcpy的SSE汇编代码(应该使用128位宽的加载存储而不管32位/ 64位过程)表明它实现的复制带宽有类似的上限.
我的问题是,这个差异究竟是由于什么原因造成的?32位进程是否必须通过一些额外的WOW64箍来获取RAM?这与TLB或prefetchers有什么关系还是......什么?
感谢您的任何见解.
也在英特尔论坛上提出.