那么它的失败是由什么技术原因造成的呢?表现不佳?与x86代码不兼容?编译器的复杂性?这艘“Itanic”为什么会下沉?
那么它的失败是由什么技术原因造成的呢?表现不佳?与x86代码不兼容?编译器的复杂性?这艘“Itanic”为什么会下沉?
Itanium失败的原因是,对于今天的工作负载来说,VLIW(非常长指令字)只是一个糟糕的想法。
唐纳德·克努斯(Donald Knuth)是一位广受尊敬的计算机科学家,在2008年的一次采访中表示:“‘Itanium’方法本应该是如此出色——直到发现希望的编译器基本上不可能编写。”1
这几乎完美地解释了问题。
对于科学计算,每个基本块至少包含几十条指令,VLIW可能效果良好。有足够的指令来创建良好的捆绑包。但对于更现代的工作负载,通常每个基本块只有6-7条指令,它就不起作用了(如果我没记错的话,这是SPEC2000的平均值)。编译器无法找到独立的指令放入捆绑包中。
Modern x86处理器(除了Intel Atom(Pre Silvermont)和我相信AMD E-3 ** / 4 **之外)都是乱序处理器。它们维护大约100条指令的动态指令窗口,在该窗口中,只要输入准备就绪,它们就执行指令。如果有多个指令准备好并且它们不竞争资源,则它们在同一周期内一起运行。在性能方面,与类似规格(缓存、核心等)的Itanium相比,它们表现出色。
那么为什么现在还会有人购买Itanium呢?实际上唯一的原因就是想运行HP-UX系统。如果你需要运行HP-UX系统,那么Itanium是唯一可行的选择...脚注1:
这是关于多核处理器价值的回答的一部分。Knuth认为,利用并行处理很难;在编译时找到和暴露细粒度指令级并行性(以及显式推测:EPIC)对于VLIW也是一个难题,与将顺序程序或函数拆分成多个线程以自动利用多个内核来获取粗粒度并行性有些相关。
11年后,他仍然基本正确:对于大多数非服务器软件来说,每个线程的性能仍然非常重要,并且是CPU供应商关注的焦点,因为许多内核并不能替代它。
很简单,它不兼容x86。这就是为什么有x86_64芯片的原因。
Itanium的设计理念是基于极其宽广的指令级并行处理,以在时钟频率受到热限制的情况下扩展处理器性能。
但AMD Opteron通过大量使用x86_64内核实现可扩展性能,并且兼容32位x86二进制代码,从而打破了采用Itanium的局面。
相比同样处理器数量的x86服务器,采用Itanium服务器的成本要高出10倍。
所有这些因素都减缓了Itanium服务器在主流市场中的采用。Itanium的主要市场现在是一个至少100亿美元/年的任务关键型企业计算市场,该市场仅由惠普、IBM和Sun等公司占据主导地位。
这个技术很难编写代码生成器,而且一开始就没有太多成功的原因(它是由英特尔制造的,那又怎样?)。
我听说有些JIT比解释器在Itanium上表现更差,因为gcc更好地优化了解释器;如果处理器需要那么高级别的优化,那就不行了。
非主流RISC正在失去市场;他们没有看到或希望它成为主流;太糟糕了,因为没有任何理由支持它。
我认为Itanium仍然有它的市场——高端系统和惠普刀片服务器。与x86相比,性能仍然要高得多。我不确定为什么有人会称其为失败,因为它为惠普创造了数十亿美元的收入(尽管这不仅仅是处理器;Itanium服务器销售也在创造收入)。