服务器 频道

X3核心芯片组解密

    【IT168 报道】IBM 依靠最近的技术成就(即著名的 POWER4 和 POWER5)成为拥有超凡技术的微处理器设计厂商,与此同时,它在系统级设计领域也几乎没有对手,这是毫无疑问的。IBM 的系统设计历史可追溯到 S/360 的成功;今天,IBM 的 zSeries(S/360 的后继产品)代表了高端系统体系架构的顶峰。幸运的是,IBM 内部的其它部门已经获得了 IBM 大型机支配地位的技术优势。 John McCalpin 和 Tom Bradicich 博士都欣然承认它们的产品(分别是 pSeries 和 xSeries 系统)在很大程度上受着这些第一次由大型机架构所完善的技术的影响[1][2]。 看到大型机世界又出现了新的技术总是令人很兴奋的,因为摩尔法则让芯片组设计人员知道晶体管数目有不断增加的趋势。 本文详细分析了 IBM 新 X3 Architecture 的基本节点、一致性机制、内存子系统和 I/O 子系统,这些内容已由 Tom Bradicich 博士在 2005 年春的 IDF 上进行了介绍。

构造块

    大多数的 x86 服务器供应商使用的都是 Intel 的标准芯片组。 这对于“白牌机”供应商(因为它们无力支付研究和开发的费用)和其它供应商(如戴尔,它提前放弃了研究和开发方面的相关费用)当然是一个福音。 不过,对于 IBM 而言,这意味着一个可以充分发挥自己雄厚的系统专业知识、创建可扩展性更高的解决方案的大好机会。 这一战术正是 IBM 的常规战略。 IBM 往往看好可以利用它们的人才资源、并对竞争产品具有绝对优势的市场,避免进入那些高度竞争、对价格十分敏感的市场(如 PC)。

    XA-64e 或者“Hurricane”芯片组是 IBM 新一代 x86 芯片组,它的设计用途是从简单的单路处理器服务器和工作站扩展到具有双核处理器 的 64P 系统。 因为除了Unisys的 ES7000 和 IBM 的 xSeries,很少有大型的 x86 服务器,所以,有点难以找到 X3 Architecture 的比较点。 就像 Bradicich 博士在他的谈话中指出的,X3 最自然的比较对象是它的前代产品,即 EXA2 芯片组,因为 IBM 在这两款产品上拥有丰富的信息。 X3 象征着在前一代芯片组上取得了巨大的进步,它支持双 667MHz 前端总线、探听过滤器(snoop filter)、芯片内基于目录的一致性机制、虚拟高速缓存、PCI-X 2.0 和 DDR2 内存。

    像大多数大型系统一样,X3 使用小型 4路服务器(双核为8路)构造块并将它们连接成更大的系统。 每个 4路 都有本地内存、I/O、探听过滤器(snoop filter)和芯片内目录。 最多可将 8 个4路连接在一起,形成 32个处理器 的系统(使用双核芯片可达 64路)。 下面的图 1 介绍了一个 quad 的具体情况: 

图 1——单个Quad(4路)的 X3 芯片组的情况(基于 IBM 的幻灯片)
 
    X3 Architecture 是在 2005 年 2 月 22 日发布的,eServer x366 已从 3 月 29 日开始提供。x366 使用的是 Intel 的 Xeon MP 芯片 [3], 为该系统发布的第一个基准测试使用的是 Cranford  Xeon MP(3.66GHz、1MB L2 高速缓存)。 IBM 提交了两组 4路 TPC-C 结果;一个使用的是 MS SQL,一个使用的是 IBM 自己的 DB2。 基于 DB2 的系统以大约 9K TpmC 的微弱差距败给了 MS SQL 系统(基于 DB2 的系统是 141K TpmC,而 MS SQL 系统是 150K TpmC)[3]。

一致性机制

    对于使用 x86 MPU 的大型系统制造商而言,最复杂的地方在于一致性。 Intel CPU 使用写入无效、基于广播的窥探协议来强制执行高速缓存一致性。 尽管这是最简单的方法,而且可为小型配置(4路 及以下)提供最短的延时,但是,不适用于扩展到4路以上。 在大型系统中,会消耗太多的带宽用于一致性信息的广播,几乎没有给实际的数据留下什么空间。 几乎每个 8路以上专有系统都要依靠这种基于可扩展性更高的、目录更简明的高速缓存一致性模式,但是,这一方法在应用到较小的系统时开销太大。 X3 折衷了这两种方法,对节点间通信量使用的是混合的目录/广播机制和虚拟的 L4 高速缓存,对节点内部通信量使用的是探听过滤器(snoop filter)。 我们首先讨论探听过滤器,然后,讨论节点间的一致性机制。

探听过滤器

    每个可扩展性控制器都有 48Mbits 的 eDRAM,组成 8 组,每组 6Mbits。 整个结构是一个由 ECC 保护的、具有 192k 行的 9 路相联表。 每行都有 9 路最近的高速缓存行请求以及高速缓存行的 MESI(Modified Exclusive Shared or Invalid)状态。 因为 Xeon 处理器 中的每个高速缓存行都由 2 个区段(每个区段 64 字节)构成的,所以,整个结构可以高速缓存 216MB 的数据(9 路 x 192K 项 x 128 字节)。 在只有一个节点时,整个表可用作探听过滤器。 Hurricane 芯片组拥有两个总线线段,探听过滤器在这两个段之间分割总线通信量。 在出现高速缓存未命中时,一个探听命令放到CPU总线上,探听过滤器截取该命令,并确定是否必须将探听命令传递到该4路中的另一个总线线段上。 如果读取请求在同一总线上的另一个处理器,则取消探听过滤器访问。 如果不在另一个处理器上,探听过滤器将确定是否进行下一个操作。 如果读取请求不在探听过滤器中,则直接从内存返回数据。 如果探听过滤器表明,请求的目标高速缓存行在另一个总线线段上,则该探听过滤器将探听指向另一总线线段。 如果另一个段仍然拥有该高速缓存行,则将请求转向此总线线段。 如果另一个线段不再拥有目标高速缓存行,则从内存返回数据。 因为协议是写入无效的,所以必须始终将写入请求传递到拥有所查询的高速缓存行副本的任何总线线段上。 下面的图 2显示了在读取请求上使用探听过滤器的好处。 与使用简单的转发器相比,探听过滤器在 4路系统上可以提升 10-15% 的性能。 
 

图 2——探听过滤器对于读取请求的好处

远程目录和 vL4 高速缓存

    在启动具有多个节点的系统时,BIOS 将48Mbits 的 eDRAM分成探听过滤器和远程目录(划分比率可能是 8:1、7:2、6:3 等等)。 这种分区已经根据系统的大小在 BIOS 中进行了硬编码;32路 系统的节点间通信量明显地比 8路系统的多,因此应该拥有一个更大的远程目录。 这种化分操作将来有可能由用户进行控制,但是,很可能仅对 HPC 或者彻底了解应用程序扩展特征的应用程序用户本身有吸引力。 远程目录会跟踪那些通过编址映射到主机内存、并由另一个节点检查的数据,它使用的格式与探听过滤器使用的格式相同。

    在节点请求一个地址在远程节点上的内存的高速缓存行时(本地处理器缓存和 vL4 都未命中),源节点将发送一个广播探听到系统中其它的所有节点上。 远程目录经过了巧妙的设计,仅仅支持单个节点向任何给定的探听广播响应。当一个节点接收另一个节点的请求且它的探听过滤器显示出它拥有该高速缓存行时,数据会发送到请求节点。 至多一个节点可以在它的探听过滤器中显示其拥有该缓存行。 特定请求的主节点(Home node)定义为请求的地址映射的内存所在的节点。 当非主节点(off-node)请求到达时,该主节点会会同时检查它的探听过滤器和远程目录。 如果远程目录显示,高速缓存行的所有权已经提供给另一个节点,则主节点不会返回数据。 如果该请求在探听过滤器中,或者不在远程目录中,则主节点会返回数据。 下面的图 3 显示了一个内存事务的例子。 
 


    在多节点系统中,虚拟 L4 高速缓存用于提高 X3 的可扩展性。 在启动时,BIOS 会留出一个单独的内存区,将其用作虚拟高速缓存。 尽管留出的内存量是硬编码的,它很可能可以由用户进行配置,供了解相关知识的用户使用(很可能又是 HPC 用户)。 可扩展性控制器使用 vL4 来存储以前请求的非本地高速缓存行(即高速缓存行在可扩展性控制器相对较遥远的地方)。 这提高了性能(因为 vL4 服务的数据请求的速度比节点间数据请求快)并且确保了内存一致性(因为每个高速缓存行在内存中都有唯一的位置)。 因此,在上面的图 3 中,NE quad 将从它的 vL4(或者高速缓存本身)而不是从内存中发送所请求的数据。

    如上所述,选择这一协议的目的是为了平衡目录协议(可扩展的延时)的好处和广播协议(低最初延时且成本低)的好处。 我们已经与 John Borkenhagen 博士稍微深入地讨论了这一点,John Borkenhagen 博士是 IBM 研究 RS64 IV 微处理器杰出的工程师,也是 X3 的首席架构师。 根据 Borkenhagen 博士的看法,模拟实验显示,混合协议在 4 quad 及 4 quad 以下配置上优于目录协议,在 8 quad 性能上和目录协议相当。 这似乎有点不寻常,但重要的是要记住,点对点协议需要提前知道目的地,这就需要额外查询关键的请求路径,而广播协议则没有这一操作。

内存子系统

    X3 中改进最明显的部分是内存分级结构。 前一代 EXA2 同时支持 Itanium 和 Xeon 处理器。 因为前端总线具有不同的物理特性,因此,需要使用双芯片结构,请参见图 4;其中一个芯片处理前端总线(FSB),另一个芯片包含内存和 I/O 控制器。 令人遗憾的是,这导致产生了额外的芯片到芯片的互连,且处理器 和 I/O 与内存之间出现了相应的延时,从而降低了性能。 为了缓解这一损失,添加了 L4 高速缓存,并与 前端总线 控制器相连接。

    在将版本镜像到 pSeries 系统体系架构的迁移中,X3 消除外部的芯片互连,芯片组功能大部分整合到了一个芯片上。 因此,内存存取的互连跳跃少了一个,从而显著地降低了延时。 这还允许 IBM 在设计中完全去掉 L4 高速缓存,进一步降低成本和设计复杂性。 结果,X3 的本地内存延时达到了惊人的 108ns,而前一代为 265ns。 在下面的图 4 中可以看到这些变化。
 


    前述芯片整合还可以消除一个关键的瓶颈: 即内存控制器和可扩展控制器之间的连接。 在 EXA2 中,该互连只能提供 3.2GB/s 的带宽,这降低了 8 通道 DDR 内存架构的效能,因为该内存架构理论上可以提供 12.8GB/s 的带宽。 比较起来,X3 能够获得四个 DDR2-400 控制器的全部优势,可跨 8 个通道提供 21.3GB/s 的带宽。 注意:这显著地超过了前端总线能够提供的带宽,因此,大约有一半的内存带宽专门提供给了 I/O 设备和远程 quad。

RAS 特性

    IBM 还提供一系列供 X3 内存子系统使用的 RAS 特性。 该内存控制器支持热插拔、擦除(scrubbing)、位引导(bit steering)和镜像。 David Wang 在他的文章“Error Correcting Memory——第一部分”中十分详细地介绍了最先的三个特性,在此特别推荐。 内存镜像相当简单;它只是复制内存中的内容,模拟硬盘驱动器 RAID-1 的作用。 这也有降低一半内存容量和增加成本等令人遗憾的副作用。

I/O 子系统

    X3 的 I/O 也修改了;尽管从区块图表上看,其中的一些差异并非一目了然。 实际上,I/O 系统使用 InfiniBand electricals(可轻易地从当地的 IBM Microelectric 分支机构得到)与一对 64 位 PCI-X 2.0 控制器连接。 每个 PCI-X 总线以 266MHz 的速度全速运行,通过 6 个插槽提供总计 12GB/s 的带宽,这是 EXA2 芯片组的三倍。 控制器使用 32 位循环冗余校验(CRC)进行错误检测,支持热添加和插拔,但是没有 ECC 功能。 尽管 PCI-X 是当前通用的 I/O 技术,IBM 将来仍然会升级 X3,使其支持 PCI Express x8。

名异实同的 IOMMU

    尽管带宽的确给人以深刻的印象,X3 最显著的 I/O 特性并不是那么直观,尤其是 I/O 内存管理单元(IOMMU)。 大多数 I/O 设备通过名为 DMA(Direct Memory Access,直接内存存取)的流程与内存协作,它绕过了 CPU。 结果,DMA 常常要使用物理内存,因为虚拟地址转换是使用 TLBs 和页面表在 CPU 中执行的。 IOMMU 与支持 DMA 的设备一起工作为它们进行虚拟地址转换,所以,这些设备能够绕过 CPU 并执行 DMA。 IBM 对于 IOMMU 几乎不陌生;IBM 首次在 1971 年获得了这一概念的专利,尽管在 1985 年 IBM 的 PR/SM 首次推出后才进行了实施。基于这一历史,IOMMU 成为 IBM 服务器的标配就一点也不令人惊奇了,尽管 IBM 的专门术语将其称为转换控制项(Translation Control Entries,TCE)

    IBM 又重新将 p/i/zSeries 系统中的 IOMMU用于X3。 IOMMU 理论上支持 p/i/zSeries IOMMU 中的所有特性。 它支持 4GB I/O 地址空间,修改映射表需要管理程序权限。 不过,问题是它需要 BIOS 和操作系统对该功能的支持。 将来的 Linux 或者 Windows 很有可能拥有适当的功能,但是,目前还不具备。 另一个备选方案,这在不久的将来也更有可能实施的方案是,发布可以利用 IOMMU 的管理程序(或者虚拟机监控程序/VMM)。 很显然,备选方案将会是 VMware 和 Xen 项目。 利用 IOMMU 的管理程序会显著地改善 X3 的 I/O 子系统 RAS,对于 x86 服务器生态系统也是一个受欢迎的改进。

可扩展端口

    EXA2 上的可扩展性端口也得到了明显的改善。 像 I/O 子系统一样,可扩展性端口也使用 InfiniBand electricals。 X3 向其它 quad 提供三个链接,每个链接提供最高 6.4GB/s 的带宽,并且,像 I/O 子系统一样提供热故障切换和 32 位 CRC,但是,没有 ECC。 远程延时也从 735ns 下降到 222ns,仅是本地延时的两倍,这是一个非常巨大的成就。 这些数字反映的是在可扩展性端口上一次跳跃的往返存取时间。 对于节点超过 4 个系统,将引入两个跳跃。 顺便说一下,quads 可与最多两个可扩展性端口连接。 仅在 8P 配置上才有此可能,但是,使用两个可扩展性端口意味着可以承受其中一个端口出现故障,且可用的节点间带宽将翻一番,达到 12.8GB/s。RAS 优势被视为是更重要的贡献,这并不令人吃惊,尽管还不清楚这是否是因为额外的带宽发挥了边际性能的影响,还是因为 RAS 对于 IBM 的目标市场更加关键,或者两者都有。

    现在,在讨论了 X3 芯片组的所有主要子系统后,我们来看看 Hurricane 控制器的电路芯片(die)。如下图 5 所示: 
 

图 5——X3 可扩展性控制器的芯片显微照片(基于 IBM 幻灯片)

结论

    IBM 在所有 OEM 之中具有少有的地位;作为垂直集成的计算机厂商和大型机供应商,它是客户最后的选择。 为了利用丰富的技术传统,IBM 投资了 1 亿美元来开发 X3,新一代的 xSeries 服务器芯片组。 像之前的 EXA2 芯片组一样,X3 为 x86 服务器提供了优异的性能和 RAS;X3 还可以扩展到 32 个插座(如果双核 Xeon MP 推出,可达到 64P)。 IBM 的工程设计成绩令人难忘;在 TPC-C 中,4路 x366 在 Cranford Xeon MP 上达到了 150K 和 141K TpmC,领先最接近的 4路 Opteron约 20k,领先最接近的 Xeon约 30K(尽管系统使用的是以前的 3GHz Xeon  MP)。 Bradicich 博士提示,8路X3 系统有可能达到大约 220K tpmc;这和以前研制的16路系统几乎完全一样。 X3 的“非常好的性能”很可能是 16路配置,尽管还会宣布更大规模的配置。

    历史上看,IBM 已经将首次在大型机上开发的技术向下迁移到它们的 UNIX 服务器,并最终迁移到它们的 x86 服务器。 尽管面临着戴尔及其它厂商的价格竞争,越来越多的客户已经选择使用 IBM 的 xSeries 服务器所具有的高性能和 RAS 特性(更不用说它们优异的支持)。 在相当长的一段时间内,这一趋势很有可能会继续,尽管将来的 xSeries 服务器实际上会拥有一个实质性的对手。 Newisys 用于 Opteron 的 HORUS 芯片组在技术上应该可与 X3 竞争,但是还没有宣布基准测试得分,到目前为止HORUS 也没有 Tier 1 OEM 的支持。

    总的来说,IBM X3 Architecture 是可靠的新一代 xSeries 服务器平台。 它是前一代的革新,在延时、带宽和可扩展性方面具有许多明显的改进,还巧妙地提高了业已十分显著的 RAS 特性。 在短期内,X3 的商业成功几乎是确定无疑的,且在 18-24 个月后,还会出现新的产品,IBM 在 xSeries 标准方面应该是绰绰有余的。

0
相关文章