gpt4 book ai didi

performance - 现代 x86 成本模型

转载 作者:行者123 更新时间:2023-12-03 09:08:06 34 4
gpt4 key购买 nike

我正在编写一个带有 x86 后端的 JIT 编译器,并且正在学习 x86 汇编器和机器代码。大约 20 年前,我使用 ARM 汇编程序,并对这些架构之间的成本模型差异感到惊讶。

具体来说,内存访问和分支在 ARM 上很昂贵,但在 x86 上等效的堆栈操作和跳转很便宜。我相信现代 x86 CPU 比 ARM 内核做的动态优化要多得多,我发现很难预测它们的效果。

编写 x86 汇编程序时要记住的好的成本模型是什么?哪些指令组合便宜,哪些指令组合昂贵?

例如,如果我的编译器总是生成用于加载整数或跳转到偏移量的长格式,即使整数很小或偏移量接近,我的编译器会更简单,但这会影响性能吗?

我还没有做过任何浮点运算,但我想尽快开始。普通代码和浮点代码之间的交互有什么不明显的吗?

我知道有很多关于 x86 优化的引用资料(例如 Michael Abrash),但我有一种预感,比几年前的任何东西都不适用于现代 x86 CPU,因为它们最近发生了很大变化。我对么?

最佳答案

最好的引用是Intel Optimization Manual ,它提供了有关所有最新 Intel 内核的体系结构危害和指令延迟的相当详细的信息,以及大量优化示例。

另一个很好的引用是 Agner Fog's optimization resources ,其优点还包括 AMD 内核。

请注意,特定成本模型本质上是特定于微架构的。不存在具有任何实际有效性的“x86 成本模型”。在指令层面,Atom 的性能特点与 i7 有着天壤之别。

我还要指出,x86 内核上的内存访问和分支实际上并不“便宜”——只是乱序执行模型变得如此复杂,以至于它可以在许多简单的场景中成功隐藏它们的成本。

关于performance - 现代 x86 成本模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9957004/

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