诞生历史/其作用

IA64诞生的时代颇有时代意义。当时,处理器的发展遇到了瓶颈,内存寻址空间由于受到由32位CPU的限制而只能最大到约4G。无法满足人们日益增长的对高性能的计算机性能需求。为了应对此局面,Intel和惠普联手开发了全称为Intel Itanium architecture 的基于Itanium家族的64位处理器架构。Intel宣传:使用IA64的服务器具有64位运算能力、64位寻址空间和64位数据通路,突破了传统IA32架构的许多限制。

为什么IA64失败了
引用自《程序员》2013-2期《MAC OS背后的故事——向Intel迁移!(中)》

Intel 认为,Itanium将会是个终级架构,可以解决一切问题,将会是未来的发展方向。虽然指令集和x86完全不兼容,但随着服务器领域和将来的桌面领域从 32位迁移到64位,指令集肯定是需要做出重大改变的,利用这个机会,Intel自然可以自由采用一种新指令集和过去划清界限。于是索性就不用开发64位 的x86了,逼着大家都用Itanium就可以了。正当Intel做着天上降下黄金雨的美梦时,它完全没有意识到灾难己经临近。Itanium的设计看似完美无缺,但他们没有意识到其中两个重大的问题——指令宽度和Cache。“短板”原理在Itanium上应验x86的好处是,虽然这是一个CISC的指令集,但这个指令集对程序执行的逻辑没有额外的限制,所以只要Intel保证产生的运算结果是一致的,就可以以任何方式实现这个指令集,例如解成RISC、增加超纯量模块、调度成乱序并行执行,Intel想怎么做都可以。但Itanium让编译器决定一切,编译器自动判别依赖关系并产生一个个指令包,每个包内的指令不存在依赖关系,所以指令集一公布,要想改就困难了。例如每 个VLIW指令包是包着三个RISC指令的,如果若干年后做出了能并行执行六个指令的芯片,那它能一起执行两个VLIW指令吗?醒醒吧,因为这两个VLIW指令很可能有依赖关系!那可以重新让处理器判断依赖关系后再执行吗?该吃药了——Itanium花那么多血本就是想让编译器搞定一切而不用处理器判断!那怎么办呢?只有两个办法:其一是一次运行三条指令(即使我的机器有能力执行六个宽度),所以程序执行效率只有一半;其二是要求每有新一代的芯片出现,所有 程序都要重新编译才能完全发挥芯片设计的理论效能。这是让人无法忍受的一件事——难道今后软件发布出来,要为各个指令宽度的Itanium各做一个版本吗?更麻烦的问题是Cache。Cache是处理器上用于减少处理器访问记忆体所需平均时间的部件。其容量远小于内存,但速度却可以接近处 理器的频率。当处理器发出内存访问请求时,会先查看Cache内是否有请求资料。如果命中,则不经访问记忆体直接返回该资料;如果不存在,则要先把记忆体中的相应资料载入Cache,再将其返回处理器。与前面那种情况相比,这需要更长的等待时间。至于什么资料是在Cache内的,完全是由计算机程序运行时决定。编译器在编译时是无法预测程序在执行时所使用Cache的情况的——这一切完全是随机的。对于一个可以乱序执行的处理器而言,如果某 条数据的结果不在Cache里,可以动态调度,先执行别的语句,从内存里取出,再执行这条语句。像Itanium把可以并发的程序指令捆在一个包中,如果这个包中所需要的变量还在内存里,那处理器就什么都干不了,只能等从内存数据搬到Cache中。所以,Itanium的执行效率不会好于乱序执行的处理器。

并且,IA64对基于传统x86的程序兼容并不好,如果你想让你的应用在IA64的安腾服务器上运行,你需要重新编译一份IA64的应用。这在IA64主打的服务器市场也是一个大错误。企业用户如果购买了安腾服务器,他们会发现自己老版的IA64软件无法在新版IA64平台上发挥最高性能的运行,是因为Intel认为每有新一代的芯片出现,所有程序都要重新编译才能完全发挥芯片设计的理论效能。难道出一款处理器都要编译一份新版本吗?这使其在服务器市场也没有取得较好的评价。

IA64的失败---已经变成AMD的形状了

上世纪IBM为了防止Intel垄断处理器市场,要求Intel把x86授权给了一些其他公司使用,这其中就有AMD,AMD早期的x86处理器就是根据这个授权制造的。使得AMD拥有了技术积累及一些技术人才。
在世纪之交的时候,Intel联合惠普推出了IA64架构,此架构与之前的x86架构完全不兼容。但AMD推出的AMD64架构是基于x86架构指令集的扩展,使其同时支持x86和x64架构的软件。IA64为了与AMD64竞争,推出了IA64的x86兼容器 IA-32 EL 。但由于其效率感人。最终还是无法挽回IA64的失败。2017年,Intel正式宣布了停止IA64架构的处理器生产。正式宣告了IA64的死亡。

但是,虽然IA64失败了,但Intel不会放弃x64应用市场。它利用交叉授权取得了AMD64架构的授权。显然,Intel是不会允许自家产品中出现对手的名字。所以,一开始对外称呼为 IA-32E,一段时间后又改名为 EM64T ,最后又称为 Intel 64当然,时至今日,我们习惯性的将他和AMD64一起称为X86-64。

当然,在不同的系统里有着不同的对其的称呼:
BSD 系统;如 FreeBSD 以及部分Linux发行版,如 Ubuntu/debian等,将AMD64和Intel64统称为AMD64
红帽和ArchLinux 统称为x86-64或x86_64.
macOS :统称为x86_64
Windows :64位WindowsXP安装盘里称为AMD64,在32位WindowsXP安装盘中称为I386

最后修改:2021 年 03 月 11 日 08 : 14 PM
如果你喜欢我的文章,不妨赞赏一下。