什么

有一个相对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位指针可能会对事物进行调整.

相关文章

文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限...
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Wi...
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Lin...
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,...
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 Open...