架构的重要性
在让我们了解IA-64和x86-64这两个架构之前,让我们先来看看程序是如何运作的:
首先,程序员运用编程语言来编辑程序,这些程序在这个阶段还不过是一些文本文件。
接下来,语言编译器将这些文本编译成机器语言,这样这个程序就成为了计算机可以读懂的机器语言了。
最后计算机执行这些机器语句,并且将结果展现出来。
从这个过程中,我们发现,编辑程序时,程序的算法是相当重要的,这影响到了程序的工作效率,我们可以将程序员的编程能力比喻成“词汇量”,他的词汇量大,那么他编辑的程序就会相当简洁明了,可看性强,而执行效率高。同样,在编译过程和计算机执行过程中,架构就成了编译器的“词汇量”,假设一个架构繁杂而且命令重复性大,转换过程多,机器指令长度长,就会导致资源的大量浪费。这就意味着,如果编译器的词汇量小,那么无论计算机的频率有多高,执行单条命令的速度有多快,或者同时可以执行多少条指令,它的浪费将是相当大的,因为它影响了整个系统,对所有程序都有影响。
在目前这样一个工业发达的时期,竞争的任何一方都不可能在计算机频率和CPU的具体结构上超越对手很多,这样,一个机器执行效率问题就相当重要了,也就是说,CPU架构是影响计算机运行速度的很重要一环。
IA-64架构的运行
作为与AMD x86-64架构的对比,我们来看看Intel所制定的IA-64架构有什么技术特点和其运作情况。
相对于AMD的x86-64架构,IA-64显得就相当的清晰明了了,首先,IA-64不从硬件上支持x86的很大一批指令集,也就意味着现有的包括Microsoft Windows 2000和Microsoft Windows Me。其次,它拥有完整的64位CPU的一切特性和功能,属于不折不扣的高端产品,能在它上面运行的程序只有纯64位操作系统和应用软件。最后,它的软件前景并非相当乐观,但却并不悲观,毕竟目前个人电脑的软件业霸主Microsoft已经打算开发基于IA-64系统的64位操作系统,据悉可能是Windows 2000的64 bit版本,或者是Windows 2000的后继者Whistler的64位版本。
Intel认为,目前的架构开发面临一些挑战。
1、 目前的工业标准体系架构都是连续型的执行,效率低(执行完前面的命令才能继续后一个命令,不能并行执行);
2、 是目前的低效率的单指令;
3、 程序中不可预知的分支导致的预测错误——从而引起效率降低;
4、 对内存寻址的依赖性;
5、 寄存器和内存寻址受到数量限制;
6、 流水线的长度和循环问题;
这些仅仅是一些基础的挑战,而Intel在试图面对这些挑战时,觉得如果不废除现有的x86指令集这样一个繁复的CISC指令集显然只是一种修修补补,不能大幅度提升性能。在过去,CISC(复杂指令集)指令集和RISC(精简指令集)指令集这两种指令集曾经进行过一番斗争,最终,IBM等公司采用了RISC技术,占据了高端的服务器、大型终端和大型计算机领域,而Intel采用了CISC(后来包含了一定的RISC指令成分),占领了低端和PC市场。竞争到现在这样一个阶段,显然Intel认为CISC已经发展到尽头,它对资源的低利用效率已经不能再依靠高频率来弥补,所以决定将整个架构更偏向RISC。IA-64就是这样的一个产物,当然由于CISC在某些应用中的优势,Intel也善于结合CISC和RISC指令进入一个架构,所以它还是保留了不少CISC指令。
在这么我们这样一篇技术简介性文章中,我们并不能将IA-64这样一个全新的架构通过短短的一段话向各位讲解清楚,但我们可以说明一下它工作的优势,它是如何面对上面这些问题的:
1、 更改现有工业标准体系,建立IA-64架构后将采用并行运算方式的体系;
2、 单指令简化,即每条指令执行的功能减少,但执行效率变高;
3、 由于运行指令并行化,并且采用了程序控制指令,使分支预测更加准确,提高运算的利用效率;
4、 增加程序运行时的并行运算预测能力,使内存中需要的数据更容易在Cache中命中;
5、 增加内存的总容量,扩展到2的64次方,由原先的4GB内存扩展到惊人的180亿GB容量,并支持64位浮点数和32位浮点数,高精度的数字计算,提供高达82位的数据宽度。
6、 利用GR Stack来降低save/restore需要的调用,减少寄存器使用数量,使用的是Register Stacker Engine(RSE),使用全新的寄存器,总共128个64位寄存器,其中32个是静态的,96个是动态的。
7、 现有流水线采用的是顺序结构,一条运行结束后进行下一条,IA-64采用并行流水线结构,提高了工作效率。
8、 高速运算功能,在平行运算时,提供了2倍于运算频率的运算速度,简单来说,如果同样做连续除法,在相同时间内,若原有的架构可以运行3次,那么在频率相同的情况下IA-64架构CPU可以进行6次运算。
IA-64还有很多特性,但我们不能一一讲述,其最主要的功能已经基本提到了。目前,IA-64的第一批产品itanium已经正式发布,并将在2001年的第二季度交付使用,已有约5000片在500-800MHz频率的itanium装船待运。下图是Intel为了说明IA-64架构相对于过去的IA-32架构有多大的优势而做的对比图:
在这个图中,我们可以发现,itanium的性能确实强过IA-32体系产品很多,如果以同样频率的Pentium III Xeon 500和itanium 500MHz相比的话,性能比较应该在2:15左右。
再来看看Intel的IA-64发展概图:
可以看到,Intel的策略了,就是同时发展IA-64和IA-32的CPU,采用两条路线,原因就是IA-64不兼容IA-32体系的指令集,对Intel来说,也不知道是可喜还是可忧。可喜的是IA-64的CPU性能确实超级强大,可忧的是IA-32和IA-64并行发展会不会影响它的设计能力?市场上的过渡期究竟有多久?或许Intel已经得到了一些自己的答案,而并不让外界知道。
不过我们在看这个图的时候也发现了一个情况,那就是Intel总是将它的计划定得相当得长,不仅有了即将发布的IA-64打头阵的itanium,还准备了IA-64的主力产品,McKinley,在IA-32的服务器CPU方面,提供了Foster,这个Pentium 4的衍生物,并且在IA-64中确定了两个分支,我们并不清楚这两个分支究竟会如何。另外一个有趣的事情是,IA-32架构中发展至Foster以后的Future IA-32是使用虚线标示,而IA-64则采用了实箭头线,这说明Intel对IA-64开发的绝对优先,并且依照市场能否顺利转向IA-64而决定是否继续开发IA-32系列产品。
网友评论