有一个相对new Linux ABI referred to as x32,其中x86-64处理器以32位模式运行,因此指针仍然只有32位,但仍然使用64位架构特定的寄存器.所以你仍然限制在4GB的最大内存使用量,就像普通的32位一样,但你的指针占用的缓存空间比在64位时少,你可以有效地进行64位运算,并且可以访问更多的寄存器(16)比你在香草32位(8).
假设你的工作负载很好地适应4GB,那么x32的性能是否会比x86-64更差?
在我看来,如果你不需要额外的内存空间什么都不会丢失 – 你应该总是获得相同的性能(当你已经适应缓存时)或更好(当指针空间节省让你更适合缓存) .但如果有分页/ TLB /等,我不会感到惊讶.我不知道的细节.
最佳答案
当然,如果你有一个多线程程序,x32上的数据结构较小这一事实可能会导致线程之间的缓存线冲突 – 不同的对象可能在x32模式下分配到同一缓存行,而在x86_64模式下分配不同的缓存行.如果两个线程独立地修改这些对象,则缓存ping-ponging可能会严重降低x32代码的速度.当然,无论指针大小如何,这种缓存效果都可能发生,但如果代码已经调整为假设64位指针,那么转向32位指针可能会对事物进行调整.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。