原创 64首许德拉 极尽并发多线程之美?

2008-7-15 16:51 1990 1 1 分类: 汽车电子

 



曾经被冠名为Project Hydra的Niagara如今有了继任者,Sun数月前透露了Niagara2的架构和基本性能;而10多年来稳居RISC处理器性能王座的IBM,也刚在秋季处理器论坛上展示了Power6的细节。RISC的江湖,又将再起风云了。

 

64首许德拉 极尽并发多线程之美?


相信许多业内人士还能记得2005年Sun发布Niagara处理器和相应的T1000、T2000服务器时造成的轰动效果——在UltraSPARC影响力日益缩减的背景下,设计独特的Niagara成功得到了业界和用户的高度认可,其对Sun的重要意义不言而喻。而现在,新一代Niagara的设计细节,无疑值得我们关注。

 

新一代“九头蛇”概况


Niagara之所以被称之为许德拉,是因为在上世纪90年代末,该项目的最初发起人Kunle Olukotun教授将之命名为“Project Hydra”,其设计思路类似于同时期DEC公司的Piranha项目(该项目虽然中断,但其设计思路后来影响到了Alpha和Opteron),即面向商用服务器和网络设备,尽可能提升线程级并行计算效率(而非指令级并行计算效率)——这两个项目小组都采取了牺牲单线程运算能力,而尽可能在单一芯片上集成尽可能多的处理单元的方式。
Niagara II的设计目标是在不变的发热量和低耗能前提下,使芯片吞吐量加倍并增强单个线程执行效率。这些改善主要依靠加倍线程数目,增加单个核心的执行资源,以及常规系统结构和整合方式的彻底重构。
Niagara II有8个内核,每个内核最多可以运行8个线程,可同时运行多达64个线程,其设计基于TI(德州仪器)公司的65nm芯片工艺,并且使用了多达1831个针脚,其中711个用于I/O,剩余的用作供能和接地。NiagaraII的标准版本将附带4个具有全缓冲双内联内存模块(FBDIMM)内存支持功能的集成内存控制器、2个集成的10/1 Gb以太网端口,并且大幅提高了单线程性能。此外,Niagara2将提供集成的密码功能。每个内核都支持块密码和散列功能,包括AES、RC4、SHA、MD5、RSA和椭圆曲线密码学(ECC)。
采用Niagara2之后,内核之间不存在连接了,由此设计将减少CPU的资源争用——唯一的资源竞争将发生在内存和L2缓存上。每个线程都是由操作系统通过其自身的寄存器备份进行调度的轻量级进程。线程为L1缓存、地址转换缓冲器和ALU进行竞争。应用程序可以通过线程以线性方式进行扩展。
当然,Niagara除了并发线程的优势,在功率上也延续了上一代的优点。由于同类RISC处理器至少是150W的平均功率,Sun设计了功率仅为70W的原始Niagara。随着数据中心功率、冷却要求和空间成本的提高,这一特色或许将更为系统厂商们看重。
图1 Niagara II 的平面布局图
 
CCX: Crossbar;
CCU: 时钟控制单元;
DMU/PEU:高速 PCI;
ESR:以太网转换接口;SerDes:串并转换器;
FSR:FBD 接口;
L2B:二级回写存储器;
L2D:二级数据阵列;
L2T:二级标签阵列;
MCU:内存控制器;
MIO:各种I/O设备;
PSR:高速PCI接口;
RDP/TDS/RTX/MAC:以太网;
SII/SIO:IO 和内存间的来回通道;
SPC:SPARC 的核心;
TCU:测试控制单元。


 

集成FPU 不仅线程翻倍


虽然Niagara II很大程度上是前代产品的优化结果,但其微构架的改变还是非常的显著。NiagaraII的MPU(微处理器)中心是一个64位,8线程,成梯状按次序排列的处理单元,且其连接通道相对较短并且对预测执行(一个用于执行未明指令流的区域,当分支指令发出之后,传统处理器在未收到正确的反馈信息之前,是不能做任何工作的,而具有预测执行能力的新型处理器,可以估计即将执行的指令,采用预先计算的方法来加快整个处理过程)做了限制。Niagara II支持48位的虚拟寻址,以及40位的物理寻址。图2显示了Niagara I和Niagara II的核心的详细比较。
图2 Niagara I 和 Niagara II 的核心比较
64 Entry ITLB Fully Association:64-入口全相关指令数据转换后备缓冲器;
Thread Selection Mux:多线程选择部件;
Program Counter:程序计数器;
Thread Fetch Logic:线程提取逻辑电路;
Instruction Buffer:指令缓冲器;
Thread Select Logic:线程选择逻辑电路;
Decoder:译码器;
Integer Register File:整数寄存器文件;
FP Register File:浮点寄存器文件;
ALU:Arithmetic Logical Unit,算术逻辑单元;
FPU:Float Point Unit,浮点运算单元;
SPU:Stream Processing Unit,流处理单元;
Load Store Unit:加载存储单元;
Crossbar interface:crossbar 接口。
D-Cache:双通道缓存;
Shift:移位操作;
MUL,DIV:表示相乘和相处的汇编指令。


Niagara II 核心最为引人注目的改变是加倍了线程数,增加了一条执行通道,并且加入了一个浮点计算单元。上一代的改进主要是通过内核驱动使执行性能加倍,而这次改进将使Niagara II能够处理多变的工作负荷(Niagara I 没有能力适应太多浮点计算指令的工作负荷)。为了适应这些改进,Niagara II的基本管线增加了1级管线级数(管线级数越长,芯片频率提升的潜力也就越大)通过这种方法在8个线程中选取两个线程来执行。
在设计Niagara II过程中,由于设计师们对计划尤为谨慎和强调节约原则,必然会使内部组件的安排更为复杂。如图2所示,Niagara的8个线程实际上分为2组,每组一个管线,以使设计简化。从硬件上看这种线程的分组是静态的,但操作系统可以在组间迁移线程来保证顺应性。每个线程都分配了8个寄存器窗(寄存器窗方案尝试将程序调用和返回时保存和恢复的寄存器数量减至最小),需要用到160个整数寄存器(32个全局的,64个局部的,以及64个作参数传递用。)
Niagara II的指令读取器只是稍微做了些改进。Niagara II 静态地预测哪条分支将不被执行,并且能够预测执行过去执行过的条件转移指令,即使预测不准,也只是耽搁5个时钟周期。首先,线程选择逻辑单元决定哪些线程已经为指令读取器准备好。Niagara II 和Niagara I 不同,它的指令提取和指令分析不是严格耦合的,它的指令提取的目标是要使指令缓冲器转满,为了实现这个目标,指令提取策略做了讲究的定制。在活动线程中,它采用了一种最近提取策略,会从这个16KB的采用8路联合方式的L1缓存(一级指令缓存)的32位指令队列中预取4条指令。同时,指令高速缓存也包含一个简单的预取功能,可以提取下一个连续的缓冲指令队列。
指令的读取方式是统一化的,所以可以使用单端口的缓存。读取之后,这些线程被分为两组,每一组都有自己的指令缓冲器。每个线程组都有一个指令读取器,它将从这四个指令缓冲器中取出单条指令,然后送到译码器处理。每个时钟周期都会优先选择最近用过的就绪线程执行非预测指令。由于指令的选取是独立的,结构风险(Structural Hazard,即两条指令试图同时访问同一个资源)有时会发生。译码器能够通过延缓执行两条相互冲突指令中的一条来达到解决结构冒险的目的。一个单一位的LRU计数器用来交替使线程延时,以保证兼顾各个线程和顺利运行的目的。指令一旦解码,将马上送往执行功能单元。
每个线程组都拥有自己的私有ALU(算术逻辑部件),ALU同时也用于地址的生成和大多数的计算。基本上所有指令都被直接送往ALU,但是浮点数和内存操作指令将会经由它送到各自相应的执行单元。每个核心的所有8个线程共享一个FPU(浮点运算单元)和一个LSU(加载存储单元)。FPU的指令源是一个256×64位的寄存器文件,其中为每个线程分配的是32个。这种FPU支持Sun公司的VIS 2.0 SIMD扩展,而且有着饱和的执行管线数目,但平方根运算和除运算除外(可以同时运行来自不同线程的浮点指令),这种情况下的基本管线级数是12。FPU也处理比较复杂的整数运算指令,例如相乘,相除和复杂统计,对于Niagara I,这些则都由一个专用的ALU来完成。这又是一个避免不必要的数据复制的实例,较复杂的整数运算通过专用的硬件处理的优化方法并不多见。
流处理单元(SPU ,Stream Processing Unit Cryptographic acceleration)是一个用于处理加密运算的协处理器,它按照核心频率以全频率工作。SPU处理普通的诸如SHA,MD5,AES,DES等等的加密运算。它包含有一个模算术单元(MAU),一个加密单元,以及一个用于直接访问内存的DMA(直接存储器读取)引擎。MAU 和FPU共享乘法器,用来进行RSA运算(RSA算法 它是第一个既能用于数据加密也能用于数字签名的算法),二进制运算和整数的模运算、多项式运算以及椭圆或曲线的计算;并对加密工作负荷进行分级运算。MAU使用一个160-入口64位的暂存器,每个存储周期该暂存期可进行两次读操作一次写操作。这种加密(cipher)和散列(hash)运算单元的带宽设计和Niagara II的双10G/s以太网控制器相匹配,使“自由加密”成为可能。


挑战性的内存和I/O设计


讨论一块注重线程级并行性能的芯片时,当然要特别关注内存和I/O子系统。
图3-Niagara I 和 Niagara II 的内存系统比较
 

NiagaraII每个线程组都有一个ALU,该ALU也作为地址发生单元来起作用,并在得到LSU 请求时把地址传给LSU。LSU每存储周期处理一个存储操作,其中解码级负责保证没有管线竞争错误发生。Niagara I悲观地把所有对缓冲区数据发出请求的线程转为不活动状态,它假定这种请求将不会命中L1D中的数据。Niagara II改善单个线程执行效率的地方是,假定对L1D缓存的请求将会命中,并且会保持请求线程的活跃状态(当然有适当的逻辑恢复电路)。
Niagara II共有4个页表,每个页表支持8K, 64KB, 4MB or 256MB的页大小,它们都能由ITLB(指令数据转换后备缓冲器) 和DTLB(数据转换后备缓冲器)进行缓冲。ITLB和DTLB的未命中时都将由一个硬件的称为页表Walker(该功能将由处理器而不是虚拟机器管理软件来处理内存映射问题。尽管对性能的影响不会减少到零,但幅度却要小得多)的功能电路所服务。页表Walker可以以三种模式在4张页表中进行搜索匹配项:连续模式,平行模式,或者根据被请求数据的虚拟地址进行预测寻址。
Niagara II的L2二级缓存总容量为4M,平展成8个Bank,每个Bank 512KB,为16-路分组相关联,能独立处理单个的访问,并拥有和Crossbar之间的128位的出站端口和64位的入站端口。由于系统中的线程如此之多,如L2等的共享资源的访问热点问题自然是不得忽视的一个考虑方面。这里,L2高速缓存通过交错间插模式连接8个Bank,以此避免了许多访问热点问题。Niagara II运用的一项新技术是通过软件或操作系统指向的散列计算,把数据在不同区块之间分散存放,以减少关联性和数组尺寸造成的竞争访问冲突。
所有I/O设备都能支持DMA,但需要Crossbar 配备一个为核心从I/O设备读取数据的端口。Niagara II芯片内建了两个10Gb/s以太网端口,还有一个x8 PCI高速端口,可作为存储设备的接口。和其他使用多重芯片方案的系统相比,Niagara II通过把I/O设备整入内核,降低了相当可观的用电量,费用以及设计复杂性。处理20Gb/s的以太网流量的潜能的确让人瞩目,因为单单一个满载的10Gb/s端口就足以使不使用TCP/IP协处理器的微处理器应接不暇了。如果Sun的这一方案效果良好,它将使得RISC市场的对手们,如AMD、HP、IBM和Intel面临挑战。
总的来说,Crossbar支持8个数据输入口(指向SPARC工作站芯片内部的8个核心)和9个数据输出口(8个L2二级缓存库,以及I/O)。通过使用传闻的1.4GHz的时钟速度意味着Crossbar的带宽将达268.8GB/s。而同样让人印象深刻的高达42.7GB/s (FBD-667)的内存带宽将对它的表现进行有力支持。


并非完美 暂不支持SMP系统


一个有趣的地方是,这款在第18届Hot Chips(由IEEE主办的微处理器国际研讨会)上展示的多线程微处理器不支持单一系统含有多处理器(即目前只支持每系统单一处理器)。并非Sun不想设计出基于NiagaraII的SMP系统,关键是还存在一定技术障碍。对于以后Niagara II 系统将支持多处理器插槽主板的传闻,Sun最好的解释是他们首先要集中力量做好相对容易实现、调试和检验的单处理器插槽版本。可能在不远的将来,Crossbar 上的一个端口也能通过改进以适合于Hypertransport (HyperTransport技术由AMD发明,提供集成电路可升级、近阶高速、高效能及点对点连接的功能,目前包括AMD、Apple、Broadcom 、Cisco、nVIDIA、SGI、Sun与Transmeta等公司已经组成一个团体联合开发该技术),或者Sun自己开发的处理器整合技术,来创建更大的系统。
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
1
关闭 站长推荐上一条 /3 下一条