跨进64位时代──剖析Itanium处理器

Author: Cloud Date: 2001年 1期

    目前英特尔公司的Pentium 4刚刚上市,各大媒体的CPU报道也基本上是围绕着这个新的焦点展开。但是让我们把眼光放远些,就能发现Pentium 4仅仅是“末代”的32位x86架构CPU,CPU的未来在于64位的新一代CPU。不同于以往的64位RISC架构的CPU,英特尔代号为“Merced”的Itanium(安腾)导入了许多新概念和新技术,目标是引领CPU市场跨入新型64位新时代。
      Itanium是一个新CPU系列中的开路先锋,使用由英特尔和惠普合作开发的EPIC指令组和内部结构,针对的市场目标是高端服务器和工作站。Itanium采用了最先进的CPU设计,具有前所未有的并行处理机制,因此实现了众多的新功能。Itanium的优点包括:64位的寻址空间,EPIC结构,大规模的并行执行内核,预测能力,可更迭的寄存器组,大容量、高速的缓存,系统配置的灵活性,高速的总线结构和充足的命令执行单元。
      现在,让我们看看Itanium的内部结构。
  #1    64位的EPIC
      64位CPU的一个明显好处就是64位的寻址空间。过去32位的CPU可以对4GB的内存直接寻址,超过4GB的内存就需要使用bank切换的低效率方式,就像当年DOS使用640KB以上内存时的那种感觉。目前配合Itanium的460GX芯片组可以支持64GB内存,当然SGI计划中的512块Itanium组成的超级系统不会满足于这么“少”的内存。
      EPIC是Explicitly Parallel Instruction Computing(完全并行指令计算)的缩写,用EPIC来描述Itanium的结构是十分贴切的,就像Athlon和Pentium系列属于CISC(复杂指令系统计算机)类型、PowerPC属于RISC(精简指令系统计算机)类型、Transmeta的Crusoe属于VLIW(超长指令字)类型一样。EPIC使用的指令字比VLIW更长、更复杂,并且还包括了各个指令如何并行执行的信息。
      多条EPIC指令由编译器合成为“包”,包中的指令集是一次发给CPU同时执行的,当然为了合理地并行操作,这些指令的工作应该是互不影响的。EPIC指令实际上是在软件编译的过程中被处理和分组的,这简化了Itanium的硬件设计,不必依赖昂贵和僵化的硬件逻辑;但显然Itanium的性能很大程度上依赖于软件编译技术和应用程序本身的算法。
      除了将程序变成指令外,EPIC编译软件还在程序中加入了分支提示、寄存器堆栈和更迭、数据和控制预测、内存提示等附加命令,帮助CPU更好地执行指令。相比之下过去的CPU要简单得多:CISC将这些计划功能交给硬件(这就是为什么Pentium比486的执行效率高得多),RISC将部分任务分给了编译软件,VLIW则将大部分的任务则仍交给编译器以提高灵活性,EPIC实际上就是更彻底并行的VLIW。
  #1    预测技术
      从Pentium以来,预测技术就一直是主流CPU提高性能的杀手锏,毕竟提前做好将来的事情就有可能“领先”,但是预测效率却难以提高(这方面AMD仍不如英特尔)。
      其实理论上讲,如果程序没有if/then/else的分支结构,就能减少预测失误,还更适合于并行执行。Itanium的预测技术就基于这个原理,使用编译软件预先去除分支结构。怎样消除分支呢?其实并不难懂,只要依靠并行结构充裕的处理能力,同时执行几个分支结构就能够“有备无患”了。
      Itanium的心脏是并行执行内核,而且并行的“宽度” 很大(规模庞大),就是说能够同时执行很多条指令。而且Itanium内核的“深度”也很大,达到10段流水线的结构,尽管同P6架构的10段和Pentium 4的20段相比没有多少长进,但对于EPIC来说还是很有潜力提高主频的。这里需要说明的是:流水线段数多并不直接意味着工作频率更高,但是如果将同样的工作分解成更多的段数来执行,无疑每段的电路结构就简化了,有利于提高时钟频率。
      回过头看Itanium,它可以同时执行6条EPIC指令,这比Pentium Ⅲ和Athlon的3条x86指令多了一倍;而且这6条EPIC指令被分配给9个功能通道执行:2个整数通道、2个浮点通道、2个存储器通道和3个分支通道;Itanium的执行单元共11个:4个整数单元、2个浮点单元、3个分支单元和2个存取单元。这让Itanium能够在一条指令中执行多个操作(SIMD类的SSE/SSE2指令组就是一个例子,难道打算抢T&L显示卡的饭碗?),所以它的峰值处理能力是每时钟周期20个操作,这个惊人的成绩“当然”是在某些浮点运算密集的应用中才能出现。
  #1    惊人的FPU和ALU
      Itanium共有4个浮点运算单元FMAC(浮点乘法/加法运算器),每周期两个主单元每个可以处理2次单精度、双精度或者扩展双精度(目前的最高精度)的浮点运算;另外两个附加单元是为3D图形等应用配置的,各自能处理2次单精度的浮点运算。这样如果是800MHz的Itanium就有32Gflops的高精度浮点能力和6.4Gflops的单精度浮点性能,完成SSE和SSE2指令自然不在话下,看来英特尔不但对顶级的3D图形处理和科学计算市场虎视眈眈,而且对普通大数据量的3D游戏也不放过。
      Itanium共有4个负责整数运算的ALU(算术逻辑单元),每个每周期能处理1次整数运算,也能够完成MMX指令。尽管对于800MHz的Itanium,3200MIPS的整数性能显得十分惊人,但却不能把竞争对手甩开太远。
  #1    充裕的寄存器组
      Itanium带来了128个浮点寄存器和128个整数寄存器,即使在每个时钟周期完成20个操作的忙碌情况下,也不会出现CPU内部寄存器不够用的情况,这在Itanium浮点能力超群的情况下,大大减少了等待的可能性、提高了执行效率。
      为了同时运行多个不同的软件,Itanium的寄存器组还能够进行更迭操作(为每个软件保持住不同的寄存器状态),这大大有利于同时处理多个数据流,特别适合服务器应用。
  #1    高速、大容量的缓存
      如果CPU常常要到速度相对较低的系统内存中读写数据,那么等待就是难以避免的了。从486时代开始,英特尔就为CPU配置各种高速缓存。
      Itanium具有3级缓存结构(很“遗憾”,最早采用3级缓存的主流CPU竟然是K6-3),其中L1和L2是芯片上集成的,大容量的L3装在卡匣内的PCB上──是不是又回到了Pentium Ⅱ的老路上了?Itanium的L1有16KB的整数数据缓存和16KB的指令缓存,不负责浮点数据;L2则有96KB大小;L3是与CPU同频工作的2MB或4MB的4路相关结构,800MHz达到12.8GB/s的惊人带宽。这确实可以改变大家对外置Cache速度的担心,何况容量还如此庞大,足以应付Itanium众多的流水线。(^01030101a^)
      为了进一步提高缓存的效率,英特尔还采用了数据预测和缓存提示功能。数据预测是在可能需要数据和数据可能已经改变的情况下,提早缓冲和提取数据。缓存提示是由编译软件添上的2位标志,帮助CPU在Cache中更快地寻找数据。
  #1    外部总线
      系统总线对CPU来说无异于“生命线”。Itanium最初将使用128位的133MHz总线,理论带宽是2.1GB/秒,再加上Pentium 4那样Quad Pump(4倍频)技术实际带宽应该是Pentium 4的2倍。
      第一代Itanium芯片组460GX使用双内存端口得到4.2GB/s的带宽,还支持64位、66MHz的PCI总线和AGP Pro 4×接口;今后的芯片组将允许用户选择使用DDR SDRAM,或是Rambus RDRAM;最终,英特尔计划将EPIC系列的服务器平台构建于DDR Ⅱ内存上(类似于QDR的4倍速内存,下一代的DDR SDRAM)。
  #1    配置的灵活性
      EPIC并非为小型系统设计,服务器和工作站可以使用1~4000片的Itanium组合。Itanium具有多种特性以达到硬件配置的灵活多变:大容量的L3缓存便于各CPU间的高速数据传输,全速的片上L2缓存降低了各CPU间的数据流量,Defferred-TransAction(分配传递)功能可以防止各CPU间的操作互相牵制,不会因为小型的数据造成浪费。
      460GX芯片组支持最多4块Itanium处理器,后续的芯片组将有更大的配置灵活性,第三方(OEM)的芯片组将比英特尔产品有更大的潜力。
  #1    容错与可靠性
      Itanium具有广泛的容错功能,在大多数的Cache和总线上都使用了ECC和奇偶校验技术。EPIC架构也有能力在出错时关闭应用程序或线程,而不必重新启动。
      包括惠普、IBM、康柏、SGI、微软和英特尔等公司在内的芯片组、操作系统和电脑系统供应商,都将为Itanium配备自己的容错和可靠性技术,并进一步使Itanium系统的正常工作时间提高到99.9%以上。
  #1    x86兼容性
      在x86软件几乎完全垄断的主流市场上,没有x86指令兼容性的CPU无异于将自己摆在了“大多数人”的对立面,然而兼容x86必然造成CPU核心结构的增加,而且x86指令的执行效率也是大问题──当初Pentium Ⅱ不就是16位的x86性能还比不上同频率的Pentium MMX吗?
      面对x86这个传统架构,AMD采取充分利用的策略,将16/32位的x86扩展到自己64位的x86-64给Sledgehammer(K8)使用;英特尔则像当初的P6架构一样,支持x86是肯定的,但是x86性能仅仅是维持同现有的P3系列相似。
      Itanium用集成在内部的硬件x86解码器,将传统的指令转化为EPIC指令,动态地并行执行,目的是让应用软件实现从x86代码向EPIC代码的平稳过渡。
  #1    Itanium的未来
      第一代的Itanium预计在2001年上半年上市,虽然主频为不是很高的733MHz和800MHz,但英特尔宣称Itanium的潜力很大,提高到1GHz以上完全不成问题,代号为McKinley的下一代EPIC产品将在2002年上半年推出,集成了L3缓存。再往后是0.13微米工艺的Madison,估计在2002年内出现。随后是低价格版本Deerfield,比Madison更具性价比……
      英特尔同惠普设计EPIC架构时,目标是保证未来25年的充裕发展空间,因此今后的工作还多着呢!例如:增加更多的功能单元(FMAC、ALU等)、更多的缓存、更大规模的并行操作和更多技术的流水线等等。
  #1    强敌环伺的64位市场
      Itanium是英特尔第一次进入企业级64位计算机市场的尝试,然而Sun、IBM、惠普、康柏和SGI都已经有了自己的64位CPU。其中IBM(产品是PowerPC)、惠普、康柏(产品是Alpha)和SGI(产品是MIPS)都采取“脚踩两只船”的策略,同时使用Itanium和自己的产品;Sun是该领域的霸主,可以预见Itanium同UltraSparc Ⅲ之间将有长期的竞争;AMD推出的Sledgehammer也将紧咬Itanium不放。Itanium系列拥有复杂的、前卫的EPIC结构,将能够提供前所未有的并行操作性能和潜力。若能如期上市,我们将看到英特尔把高端的服务器、工作站市场卷入永不止息的主流CPU大战之中。
  #1    Itanium性能规格一览
  #2    物理特性
      2540万个晶体管,6层金属化的C4(Flip-Chip)封装技术,1012针脚阵列,初始主频733MHz、800MHz。
  #2    浮点单元
      2个扩展双精度FMAC:每时钟周期4次双精度操作、800MHz时3.2GFlops双精度浮点性能,2个附加单精度FMAC:每时钟周期4次单精度操作、800MHz时6.4GFlops单精度浮点性能。
  #2    整数和分支单元
      4个单周期整数ALU,4个MMX单元,3个分支单元。