正如我一直以来的理解,AMD 通过逆向工程英特尔的指令集来构建他们的 CPU,现在向英特尔付费以使用他们的指令集,而英特尔对 AMD 的 64 位指令也做了同样的事情。
这就是 Windows 可以在两种类型的 CPU 上安装而无需购买特定版本(例如为 ARM 编译的版本)的方式,因此所有应用程序、游戏等都以相同的方式工作,在 CPU 上可互换工作...
然而最近发生的一些事情让我对此产生了疑问......
首先,我注意到一些游戏在我的系统(AMD)上有点滞后,读完后发现游戏针对英特尔 CPU 进行了优化......
此外,OSX 是在 Intel CPU 上销售的,但在发现 hackintosh 社区后发现,让 OSX 在 AMD 上运行是可能的,但非常困难。这是因为 OSX 又是为 Intel 设计的......
经过这些事情..
针对 Intel 或 AMD 进行优化意味着什么?如果它们注定要互相替代,怎么可能对其中一个有所不同/进行优化而不是对另一个进行优化呢?即两者都支持相同的指令等。
他们实施same ISA,但具有不同的性能特征,因为micro建筑学是不同的。
例如看阿格纳·福格的微建筑 pdf有关详细信息,以及来自x86标签维基。例如David Kanter 的 Haswell 微架构文章 vs. 他对 AMD Bulldozer 的评论.
Agner Fog 的指令表还准确地显示了每个 CPU 上每条指令的速度。例如imul r64, r64/m32, imm32
在 AMD Bulldozer 系列上,为 6 个周期延迟/每 4c 吞吐量一个周期。在 Intel SnB 系列上,延迟为 3c,吞吐量为 1c。
因此,在针对 AMD 进行调整时,值得将 64 位乘法替换为常数如果可能的话,进行几次轮班/添加。在英特尔,只有当你能在一两个班次内完成工作时,这可能才值得/lea
指示。
AMD 的设计还具有明显较弱的缓存层次结构和较低的单线程吞吐量,因为使用永久分割的核心对,而不是英特尔的超线程在同一核心上的两个硬件线程之间动态共享资源。 IIRC,AMD 计划在他们的下一个微架构中改变这一点。其中一些是你无法真正“优化”的东西,只是 AMD 速度较慢。 :(
所以他们运行相同的代码,因为这就是相同架构的含义。
某些 CPU 支持 ISA 扩展(新指令),而其他 CPU 则不支持。例如XOP 仅适用于 AMD,而 AVX2 和 BMI2(到目前为止)仅适用于 Intel,因此想要使用通用基线以上的代码必须在运行时检查支持。
维基百科的AMD挖掘机文章不是最新的。硬件已经问世有一段时间了,但文章仍然说它“预计有”AVX2 和 BMI2。 Agner Fog 还没有测试过它,也没有更新他的指令表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)