gpt4 book ai didi

hardware - "Itanium fiasco"背后的技术原因是什么(如果有的话)?

转载 作者:行者123 更新时间:2023-12-03 07:32:20 26 4
gpt4 key购买 nike

关闭。这个问题是off-topic .它目前不接受答案。












想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。

8年前关闭。




Improve this question




this article Jonh Dvorak 将安腾称为“过去 50 年中最伟大的失败之一”。虽然他描述了过度乐观的市场预期和这个想法的戏剧性财务结果,但他并没有深入探讨这个史诗般的失败的技术细节。我有机会使用安腾一段时间,我个人喜欢它的架构,与现代 x86 处理器架构相比,它是如此清晰、简单和直接……

那么它失败的技术原因是什么?表现不佳?与 x86 代码不兼容?编译器的复杂性?为什么这个“Itanic”会沉没?

Itanium processor block

最佳答案

Itanium 失败了,因为 VLIW 对于当今的工作负载简直是一个糟糕的主意。

Donald Knuth,广受尊敬的计算机科学家,said in a 2008 interview认为““安腾”方法 [本来] 非常棒——直到结果发现,人们想要的编译器基本上是不可能写出来的。”1

这几乎解决了问题。

对于科学计算,每个基本块至少有几十条指令,VLIW 可能工作正常。那里有足够的说明来创建好的包。对于更现代的工作负载,通常每个基本块大约有 6-7 条指令,但事实并非如此(这是 SPEC2000 的平均值,IIRC)。编译器根本找不到独立的指令来放入包中。

现代 x86 处理器,除了 Intel Atom(前 Silvermont)和我相信 AMD E-3**/4**,都是乱序处理器。它们维持一个大约 100 条指令的动态指令窗口,并在该窗口内在输入准备就绪时执行指令。如果多个指令准备好运行并且它们不竞争资源,它们将在同一个循环中一起运行。

那么这与 VLIW 有何不同? VLIW 和乱序之间的第一个关键区别是乱序处理器可以从不同的基本块中选择指令同时执行。这些指令无论如何都是推测执行的(主要基于分支预测)。第二个关键区别是无序处理器动态确定这些调度(即,每个动态指令都是独立调度的;VLIW 编译器对静态指令进行操作)。

第三个关键区别是,无序处理器的实现可以随心所欲,而无需更改指令集(英特尔酷睿有 5 个执行端口,其他处理器有 4 个,等等)。 VLIW 机器可以并且确实一次执行多个包(如果它们不冲突)。例如,early Itanium CPUs execute up to 2 VLIW bundles per clock cycle, 6 instructions ,后来的设计 (2011's Poulson and later) 最多运行 4 个包 = 每个时钟 12 条指令,SMT 从多个线程获取这些指令。在这方面,真正的 Itanium 硬件就像传统的有序超标量设计(如 P5 Pentium 或 Atom),但编译器有更多/更好的方式向硬件公开指令级并行性(理论上,如果它可以找到够了,这就是问题所在)。

在性能方面具有相似的规范(缓存、内核等),他们只是击败了安腾。

那么为什么现在要购买安腾呢?好吧,唯一的原因确实是 HP-UX。如果您想运行 HP-UX,那就是这样做的方法...

许多编译器作者不这么看——他们总是喜欢 Itanium 给他们更多的事情做,让他们重新控制等等。但他们不会承认它失败的惨状。

脚注 1:

这是对多核处理器值(value)的回应的一部分。 Knuth 说并行处理很难利用;在编译时为 VLIW 找到并公开细粒度指令级并行性(和显式推测:EPIC)也是一个难题,并且与寻找粗粒度并行性以将顺序程序或函数拆分为多个线程以自动进行充分利用多核。

11 年后他仍然基本正确:对于大多数非服务器软件来说,每线程性能仍然非常重要,这是 CPU 供应商所关注的,因为许多内核是不可替代的。

关于hardware - "Itanium fiasco"背后的技术原因是什么(如果有的话)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1011760/

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