gpt4 book ai didi

performance - x86-64 ISA 的 32 位指针 : why not?

转载 作者:行者123 更新时间:2023-12-01 16:36:35 25 4
gpt4 key购买 nike

x86-64 指令集添加了更多寄存器和其他改进,以帮助简化可执行代码。然而,在许多应用程序中,增加的指针大小是一种负担。每个指针中多余的、未使用的字节会堵塞缓存,甚至可能溢出 RAM。例如,GCC 使用 -m32 标志进行构建,我认为这就是原因。

可以加载 32 位值并将其视为指针。这不需要额外的指令,只需加载/计算 32 位并从结果地址加载即可。不过,由于平台具有不同的内存映射,因此该技巧无法移植。在 Mac OS X 上,保留整个低 4 GiB 地址空间。尽管如此,对于我编写的一个程序,在使用之前将 0x100000000L 添加到 32 位“地址”,比真正的 64 位地址大大提高了性能,或者使用 -m32 进行编译。

拥有 32 位 x86-64 平台有什么根本障碍吗?我认为支持这样的嵌合体会增加任何操作系统的复杂性,任何想要最后 20% 的人都应该使用 Make it Work™,但它似乎仍然最适合各种计算密集型程序。

最佳答案

Linux 正在开发一个名为“x32”的 ABI。它是 x86_64 和 ia32 之间的混合,类似于您所描述的 - 32 位地址空间,同时使用完整的 64 位寄存器集。它需要一个自定义内核、binutils 和 gcc。

一些 SPEC 运行表明在某些基准测试中性能提高了约 30%。更多信息请参见 https://sites.google.com/site/x32abi/

关于performance - x86-64 ISA 的 32 位指针 : why not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9233306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com