DoSERV分析:详解Power6主要技术特性

      IBM公司的重量级产品Power6已确定于今年5月底全球亮相,意欲凭此收复去年被HP夺去的服务器市场老大的地位。与此同时,IBM透露了Power6的一些技术细节。
  
      主要技术特性
 
      Power6采用IBM的65纳米绝缘硅(SOI)工艺、10层金属片而制造。与90纳米工艺相比,在一定的功率下,性能提高了30%,这主要是由于使用了应变硅技术。IBM的65纳米工艺提供了0.65微米的高性能SRAM单元和0.4微米的单元以提高密度。存储阵列单元使用了与逻辑元件相比较低的电压,以减少功耗。据大家所说,IBM非常注重Power6的芯片设计,以此提高频率;而以前的设计却全面依赖自动化工具和逻辑设计。这有助于解决IBM为什么得以显著提高频率,但还是难以相信以前从未进行这样的优化。从竞争定位的角度来看,明明可以把性能提高2倍,却没有这么做,这似乎是不合理的。
 
      与前两代产品一样,Power6着重于系统架构事关重大的大系统环境。每个Power6微处理器单元(MPU)作为2路单芯片多处理器(CMP)设计来实现,340平方毫米的一块芯片上集成了两个同步多线程处理器以及每个核心都有的专用二级高速缓存。至于高档型号,四个Power6 MPU将封装在一个多芯片模块(MCM)内,另外还有四个三级全相联高速缓存(victim cache),每个大小是32MB。
 
      Power6有极高带宽可提供给处理器。在5GHz下,每个MPU都有300GB/s的带宽,大约80GB/s来自三级高速缓存、75GB/s来自内存、80GB/s来自MCM内总线、50GB/s来自远程处理器、20GB/s来自本地I/O。Power6的带宽通常比Power5+系统增加了一倍,这是由于频率提高、添加了一些新接口。Power6的非核心功能其运行频率都是核心频率的一半,2GHz到2.5GHz之间;而各种Power5+处理器的频率大约为0.8GHz到1.15GHz。
 
      Power6另外还有一个内存控制器和MCM内的结构线路,从而把I/O频率从CPU 频率的三分之一提高到了二分之一。每个内存控制器使用IBM的第三代同步内存接口连接到内存。与全缓冲DIMM一样,这些共存内存接口(SMI)芯片能够配置更大的内存空间、使用不同类型的内存(通常是款式较老的DDR提供容量,或者较新的DDR2/3提供带宽)。内存控制器和三级高速缓存都有不同的地址和数据总线,而互连结构和GX+ I/O总线复用寻址和数据总线。


      Power6的系统架构完全经过了重新设计,比前几代产品先进得多。用于大系统的Power5使用两条单向环(uni-directional ring)实现MCM内通信,而MCM间通信通过二维网状结构来进行。Power6则使用了两层架构和新的一致性协议进行配对。每个Power6 MCM组成了一个“单元”,全连接网络中最多可以排列8个单元。新的系统架构拥有比较低、比较稳定的时延。虽然低时延对提高性能而言必不可少,但稳定时延大大方便了操作系统(特别是Linux)进行管理。就Power6系统而言,有三级时延:MPU本地、MCM本地和远程。相比之下,在大尺寸的Power5+系统中,远程读取可能需要经历1到4个MCM间中继段(hop)、0到2个MCM内中继段。
 
      从一开始,IBM设计的Power6系统就具有极强的可配置性。通常每个周期传送8个字节的节点内总线可分成低端系统每个周期传送2个字节,而节点间总线也能每个周期传送4个字节。同样,两个集成的内存控制器每个周期都可以传送一半的字节,其中一个可以完全移除。外部的三级高速缓存是可选的,或者出现在MCM中,或者出现在外部配置中。IBM声称,所有这些选件旨在提供不同性价比的型号,以便更好地服务于客户。显然,有些工作负载可能根本无法放在高速缓存里面进行处理,客户可以订购功能精简的部件来节省费用。另一个因素可能是,IBM正试图通过重复使用遇到生产故障的设备来提高产量。譬如说,如果三级高速缓存不正确地接合到了MCM上,它可以作为“有价值的”产品重新封装。
  
       核心方面的变化
 
      虽然Power6的微架构不同于前几代产品,但毫无疑问它承袭了最初在 2000年宣布的Power4核心。IBM声称,Power6的性能大约比POWER5提高了一倍。实现手段是,将频率和带宽翻一番,同时保持了同样的流水线深度,另外对微架构作了许多逐步改进。
  
      Power6的基本流水线其级数与Power5一样多,不过针对不同阶段重新进行了平衡。最重要的是,相关的算术逻辑单元(ALU)操作如今可以持续执行,这就消除了原先的POWER4/5架构存在的一个缺陷。这就简化了无序调度,可能是指令发送/分派阶段在Power6里面使用2个周期(Power5使用4个周期)的原因。McCredie博士略带提到了其他变化,但没有进一步详细介绍。
 
      正如去年ISSCC上透露的那样,Power6的一级数据高速缓存(L1D)增加了一倍,增至64KB;联合并行处理也增加到了8路。因而, L1D时延增加到了4个周期,而Power5及大多数其他高性能MPU却是3个周期。正如前文猜测的那样,Power6包括两个4MB大小的专用二级高速缓存。尽管高速缓存是专用的,却有一个快速输出缓冲器(cast-out buffer),这便于两者之间快速通信,而不涉及三级高速缓存或者主内存。众所周知,如果一切都一样,共享高速缓存可以提供更高性能。不过在 Power6的情况下,并非一切都一样。尤其是,物理设计方面的因素比微架构的巧妙性来得重要。8MB的二级高速缓存太大了,在所需的带宽下,无法在目标存取时间内探测到它。因而,高速缓存被一分为二。三级高速缓存也得到了改进,因为它抛弃了POWER5+里面使用的分区技术;这就加大了三级高速缓存的实际尺寸,只需要极小成本。高速缓存的许多这些细小改进,尤其是提高了联合并行处理能力,对多线程执行极其有利,并且帮助IBM对Power6里面的同步多线程(SMT)实现了比前几代产品更大幅度的提升。
  
      Power6似乎保留了前一代产品的所有功能部件,不过也添加了对二进制编码的十进制数(BCD)和Altivec扩展指令集的硬件支持。据IBM声称,一半多点的用户数据采用BCD形式?D?D考虑到IBM的System i和p用户的常见工作负载,这似乎相当合理。大多数RISC架构把BCD支持功能添加到了系统厂商提供的软件库里面,这与801、MIPS和RISC- 1/2等早期项目所信奉的理念相一致。然而,IBM的POWER架构比与之竞争的架构更像CISC。为了支持即将推出的管理BCD的IEEE 754R标准,IBM添加了大约50条新指令以及十进制浮点处理单元(FPU)。包括所有的基本指令:加、乘、除,以及比例缩放、转换及其他重要功能。新的十进制功能部件共享浮点寄存器、浮点状态和控制寄存器。该部件实际上是四倍精度,可在144位中提供多达36位准确性,不过结果被压缩成了128位,以适合两个浮点寄存器,然后在使用之前进行解压缩。基本操作有点慢于ALU操作,拥有单一周期吞吐量,但有2个周期时延。虽然IBM在性能上没有提供任何有明确量值的好处,但就电信计费基准而言,与Java、C/C#或者汇编库相比,BCD支持功能估计可以把性能分别提高7倍、4倍或者2倍。同样, AltiVec执行部件已添加到了POWER6上,不过PPC970及其他处理器里面的微架构的这个部分有比较齐全的文档说明。
 
      注重可靠性、可用性及可服务性
 
      对IBM而言,可靠性、可用性及可服务性(RAS)必不可少。
  
      Power6使用了检验点系统来保持正确性、从容地校正及容许故障。这就需要恢复部件、错误记录器和重启动机制。处理器状态保存在恢复部件里面,用错误校正编码法(ECC)来保护。凡是会引起状态变化的操作,譬如寄存器或者高速缓存写入操作,都会检验奇偶性以及/或者ECC故障。如果出现可校正的错误(或者未出现错误),变化通常传送到处理器状态寄存器里面。不可校正的错误,如阵列奇偶性或者控制故障,就会触发记录器,记录错误类型,然后从已知的正确状态重新开始执行。这时候,任何临时错误都会得到正确解决。一再出现的错误会上报,然后已知的正确状态被传送给另一个CPU,随后该CPU开始执行。这可以透明地发现任何硬错误,然后隔离到单一处理器,但进一步的问题可能需要软件干预。除了这些注重MPU的改进外,另外还有前面提到的可改进RAS的系统改变。
 
      在管理方面,IBM也在改进Power6里面的虚拟化功能。在某些产品中,一个处理器就能存放2到300个虚拟实例,不过从理论上来说最多有可能使用1024个虚拟机。还添加了内存分区和迁移功能,这缩短了用于修复的系统停运时间。IBM还将为基于Power6的新系统提供Power Executive管理工具。Power Executive最近在英特尔的开发者论坛上进行了展示,这款管理工具用于处理评估功率、系统运行状态,并使用该信息作出决策,譬如关闭不需要的风扇或者限制功耗。
 
      IBM当前在性能方面的领导地位会在2008年面临重大挑战,届时Sun采用大规模多线程技术的Rock处理器和英特尔备受期待的Tukwila处理品将双双问世。IBM的路线图目前包括Power6+,这大概是采用45纳米的衍生产品。从IBM以往的做法来看,Power6+会在2008年下半年首次亮相。