第1页:引言 |
Cell Broadband Engine(以下简称为Cell BE)处理器是对Cell Broadband Engine Architecture(以下简称为CBEA)的首次尝试应用,Cell BE是由索尼、东芝、IBM联合开发的,除了主要运用于索尼的下一代PS3游戏主机上,还将会运用在3D绘图、影音多媒体与科学运算等方面。
Cell BE以IBM所研发的64位元 POWER™处理机为核心(PPE),结合8个互相协作的处理机单元(SPEs)所构成的微处理器。CEBA架构可以很好的适用于多样的规划设计,并且支持PPE和8个SPEs分离工作,接下来我们要了解的就是Cell BE将会胜过任何和他相同数量级的多核处理器。
引言
直到目前以来,普遍意义上的提高处理器的性能主要源自处理器时钟频率的提高,拓宽超标量(super-scalar)结果或者加深超级流水线(super-pipeline)设计。然而如果在内存速度上没有一个相应的提高,这些方法只会增强内存的延迟和更加复杂的逻辑性来掩饰他们。更进一步的是,无法对内存进行大量的并行存储,多核并没有充分的利用流水线的执行能力和内存的带宽,导致对芯片空间利用较少和功率消耗方面不协调的增大。
而Cell BE方法设计则是集中在改进性能/空间和性能/能量比率方面。现在这个目标主要是通过运用强力的单核来完成,这些单核有效率的占用空间并且具有较少的功率消耗。利用一个高数据带宽将这些单核互相连接起来,他们既可以单独工作又可以协调工作。通过在单核间提供大量的并行存储,内存的带宽将会获得充分的利用。设计原理与目前的多核整合在一个芯片上类似,在Cell BE中,所有的核心都是强力单核。
接下来要介绍的就是对Cell BE的总的看法和他的工作特性,主要集中在PPE、SPEs、元件连接总线(Element Interconnect Bus)、XDR内存和I/O接口上。
第2页:Cell BE总览和它的工作特性 |
图1 Cell BE处理器结构图
图1展示了Cell BE处理器的大致结构,它包含一个64位元的Power处理机(PPE),另外Cell BE还整合了8各互相协作的处理机元件(SPEs),通过一个高速的内存一致的元件连接总线进行连接(EIB)。这个Cell BE首次应用将会将目标定为3.2 GHz。
在8个SPEs上的SIMD元件为Cell BE提供主要的计算能力。当使用单精度浮点乘加指令时,8个SPEs每个循环可以执行64个浮点操作。
整合的内存控制器(MIC)可以向外置的XDR内存提供的最大带宽为25.6GB/s,而整合的I/O控制器可以提供最大25GB/s(Inbound)和35GB/s(Outbound),EIB可以为PPE、SPEs、I/O接口之间提供最大为204.8GB/s的数据传输速度。
第3页:POWER 处理机(PPE) |
PPE由一个POWER处理单元和一个512KB的高速缓冲存储器相连,PPE是Cell BE中的主要处理器,并且负责运转操作系统和协同SPEs。PPE的设计关键目的就是最大化性能/能源和性能/空间比率。PPU是一个dual-issue、in-order并且支持双线路的处理器。
图2 PPU流水线
PPE核心可以同时提取四条指令和两个结果。PPE利用延时执行流水线和限制非in-order途径装入指令,从而提高in-order流水线性能。还允许PPE可以优先获取一些非顺序指令。
SPE性能
SPE是由一个协同处理单元(SPU)和一个内存流量控制器(MFC)的标准设计组成,一个SPU就是一个带有SIMD支持和256KB局部存储器的计算引擎。MFC含有一个DMA联合MMU的控制器,同时处理其他的SPUs和PPU同步运转。
SPU是带有128-entry和128-bit寄存器用来进行整形和符点操作的dual-issue、in-order机构。SPU从专属的局部存储器直接进行指令和数据操作,依靠一个通道接口用来访问主存和其他存储。这个通道接口在MFC内部,在SPU中可以独立运行,当SPU进行程序操作的时候能够翻译地址和进行DMA传输。
图3 SPE结构图
SPUs的SIMD支持可以在一个循环中执行十六个8位整数、八个16位整数、四个32为整数或者四个单精度浮点数操作。在3.2GHz的时钟频率下,每个SPU可以执行最大512亿个8位整数操作或者单精度25.6GFLOPs操作。图3展示了SPU中的主要功能部件,上面关于各个部件都有介绍。
依照图3所示,每个功能部件都被指派给两个执行流水线中的一个。浮点和定点单位处在even流水线而其他的那些功能部件处在odd流水线。SPU每个循环最大可以发出和完成两个指令。dual-issue发生在当取得的一组指令中带有两个issueable的指令时,一个在even流水线上执行,另外一个在odd流水线上执行。
指令取出共有三种类型:1)直接发动取址 2)按列预取 3)提示取址。取指令逻辑同时将32条指令取入ILB缓冲器中,当操作数完成时,issue逻辑就会将指令送给功能单元执行,提示指令可以预存入ILB。
像确定的LS存取时间、简单issue规则、嵌入软件分支提示这类的特性都由编译器和应用程序协调执行。由于协调作用的功效,带有DMA支持的SPEs具有较好的数据流带宽,高于目前大部分的处理器。
第4页:元件连接总线EIB |
Cell BE中的EIB是用来连接PPE、SPEs、外部I/O的。EIB由一个地址母线和四个16B-wide的数据环线构成,两个顺时针运转另外两个逆时针运转。只要他们的数据不发生交迭,每个环线最大可以允许3个并行发生的数据传输,EIB的操作速度是处理器速度的一半。
图4 EIB和连接元件
当requestor需要一个数据环路时,他向EIB数据总线判优器提供一个简单的请求,判优器对多个请求进行裁决,判定将数据环路给予那个requestor。内存控制器则给予最高级别的读取数据的优先权,而所有其他的requestor都相应的给予同等的优先权。任何总线requestor都可以使用4个环路中的任何一条发送或者接收数据。
EIB上的每个元件在每个总线循环中都可以同时发送和接收16B数据,最大的数据带宽受到每个总线循环过程中的地址搜寻最大速率的限制。因为每个搜址请求都可以最大达到128B,所以处在3.2GHz时钟频率下的理论的EIB的数据带宽为128Bx1.6GHz=204.8GB/s。
一般情况下的总线带宽都会低于峰值,大概有以下几个原因:1)所有的requestor都在同时访问同一个地址。 2)所有的数据传输都处于相同的方向(例如顺时针),导致另一边出现空转。 3)存在大量的局部缓冲线路传输导致总线效率的下降。 4)每个数据传输都是6-hop,对于使用同一个环路的单元具有抑制作用。
我们通过在实验室中所作的一系列试验,所有的8个SPEs流动存储或者读取彼此的存储。例如SPE0读取SPE2、SPE4读取SPE6等等,存储的时候反之亦然。
Test configuration | Aggregate EIB BW 3.2 GHz |
---|---|
SPE1 <-> SPE3, SPE5 <-> SPE7, SPE0 <-> SPE2, SPE4 <-> SPE6 | 186 GB/s |
SPE0 <-> SPE4, SPE1 <-> SPE5, SPE2 <-> SPE6, SPE3 <-> SPE7 | 197 GB/s |
SPE0 <-> SPE1, SPE2 <-> SPE3, SPE4 <-> SPE5, SPE6 <-> SPE7 | 197 GB/s |
SPE0 <-> SPE3, SPE1 <-> SPE2, SPE4 <-> SPE7, SPE5 <-> SPE6 | 197 GB/s |
SPE0 <-> SPE7, SPE1 <-> SPE6, SPE2 <-> SPE5, SPE3 <-> SPE4 | 78 GB/s |
SPE0 <-> SPE5, SPE1 <-> SPE4, SPE2 <-> SPE7, SPE3 <-> SPE6 | 95 GB/s |
SPE0 <-> SPE6, SPE1 <-> SPE7, SPE2 <-> SPE4, SPE3 <-> SPE5 | 197 GB/s |
表1 SPE to SPE的数据传输
在实验中,EIB的有效数据带宽稳定的达到了78GB/s(理论峰值的37%)和197GB/s(理论峰值的96%)之间。当处于上表的第5种SPEs设置并且在四个环路中只有一个数据传输发生的时候数据带宽为最低的78GB/s;当SPEs之间距离5个hops即第6种设置的时候,同时限制其他数据传输的发生,此时的数据带宽为95GB/s;在其他的各种情况下都达到了197Gb/s的数值。
第5页:内存子系统 |
存储接口控制器MIC是通过双XIO通道来连接外部RAMBUS XDR内存,每个RAMBUS通道最大可以达到256MB,总共就是512MB。
MIC系统对于每个XIO通道都有单独的请求队列,通过判优器进行判断,来决定进行读写的顺序。当书写16B-128B大小的数据时,可以利用masked-write直接操作,而少于16B的则需要通过read-modify-write操作。
在MIC中还有一些其他的性能增强特性,比如fast-mode模式。
每个XIO通道都操作与3.2GHz的时钟频率下,所以内存带宽的峰值就为25.6GB/s。,然而一些正规的内存操作会减少1GB/s的内存带宽。如果流动读取和存储混合起来,那么内存的带宽将会减少到21GB/s。
可变换的I/O接口
共有7个输出和5个接收RAMBUS RRAC FlexIO连接,每个都有1B的宽度,这些连接可以被配制成两个逻辑接口,FlexIO连接的操作频率是5GHz,所以I/O借口可以提供最大35GB/s(输出)和25GB/s(输入)的速率,一个典型的配置就是其中一个I/O接口为30GB/s(输出)和20GB/s(输入)的速率,而另一个接口则为5GB/s和5GB/s。
数据和命令通过数据接口时被转换为信息包。除了命令、响应和数据之外,每个数据包还含有数据标签、数据大小、命令标识和流控制信息,由于这些东西,两个接口的有效带宽都非常低,为50%-80%左右。当然,其他的一些诸如数据阻塞、源文件位置、I/O设备的速度都会对I/O的有效带宽造成影响。
第6页:应用举例和它们的工作性能 |
在接下来的片断里,我们做了一些应用来测试Cell BE芯片的性能。应用覆盖相当广泛有:矩阵相乘、Linpack、MPEG-2视频解码、三角转换和一些密码运算法则。
优化矩阵相乘
矩阵相乘用来计算C = A x B,A B C都是N项方阵,每个Cij都由下面的式子计算所得:
下面对矩阵进行优化,以减少计算过程中需要的内存带宽
转换后变成
# of Cycles | # of Insts. | CPI | Dual Issue | Channel Stalls | Other Stalls | # of Used Registers | GFLOPS | |
---|---|---|---|---|---|---|---|---|
Original (scalar) | 258.9M | 247.1M | 1.05 | 26.1% | 11.4% | 26.3% | 47 | 0.42 |
SIMD optimized | 9.78M | 13.8M | 0.711 | 40.3% | 3.0% | 9.8% | 60 | 10.96 |
SIMD + dbl buf | 9.68M | 13.6M | 0.711 | 41.4% | 2.6% | 10.2% | 65 | 11.12 |
Optimized code | 4.27M | 8.42M | 0.508 | 80.1% | 0.2% | 0.4% | 69 | 25.12 |
表2 矩阵相乘在一个SPU中的性能
图5 不同大小矩阵的并行矩阵乘法的性能
假定矩阵乘法可以达到它的单精度浮点计算能力峰值,一个带有SSE3的Pentium 4 3.2GHz可以达到25.6GFLOPS,然而Cell BE可以达到201GFLOPS,几乎可以达到Petnium 4的八倍计算能力。
第7页:Linpack优化 |
Linpack测试是一种使用尺寸由小到大的浮点矩阵乘法计算来考核处理器标量浮点性能以及缓存、内存系统带宽、延迟性能的测试工具,主要用于分析缓存、内存系统性能。由于源码开放,因此受到许多测试的青睐。其支持多处理器的高级版本更是成为衡量超级计算机性能的权威工具。
Single-SPU Linpack (DP) | matrix size | # of Cycles | # of Insts. | CPI | Dual Issue | Channel Stalls | Other Stalls | Used Regs | 3.2 GHz GFLOPs | Efficiency |
Orig. | 1Kx1K | 8.46G | 4.91G | 1.72 | 9.5% | 3.00% | 58.0% | 33 | 0.27 | 14.88% |
Opt. | 1Kx1K | 1.57G | 466M | 3.36 | 2.8% | 0.80% | 74.1% | 74 | 1.46 | 80.06% |
Opt. | 4Kx4K | 94.5G | 26.0G | 3.63 | 1.9% | 0.20% | 75.8% | 74 | 1.55 | 84.88% |
表6 双精度FP Linpack在单SPU上的性能
matrix size | # of Cycles | # of Insts. | CPI | Dual Issue | Channel Stalls | Other Stalls | Used Regs | SPEsim GFLOPS | Measured GFLOPS | Model Accuracy | Efficiency |
1Kx1K | 236.7M | 69.1M | 3.42 | 2.9% | 6.7% | 68.5% | 128 | 9.704 | 9.46 | 97.49% | 64.66% |
2Kx2K | 1.64G | 44.9M | 3.65 | 2.2% | 3.3% | 72.5% | 128 | 11.184 | 11.05 | 98.80% | 75.53% |
表7 8个SPUs上并行双精度Linpack的性能
1kx1k matrix | ||||||||
Number of SPUs | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
SPEsim (GFLOPS) | 1.46 | 2.84 | 4.15 | 5.39 | 6.56 | 7.66 | 8.67 | 9.71 |
Hardware (GFLOPS) | 1.45 | 2.81 | 4.11 | 5.32 | 6.46 | 7.52 | 8.51 | 9.46 |
Model Accuracy | 99.14% | 98.82% | 99.12% | 98.79% | 98.52% | 98.12% | 98.21% | 97.45% |
Efficiency | 79.23% | 76.78% | 74.86% | 72.68% | 70.60% | 68.49% | 66.43% | 64.62% |
表8 SPEsim和硬件性能结果比较
Linpack 1kx1k (DP) | Peak GFLOPS | Actual GFLOPS | Efficiency |
SPU, 3.2GHz | 1.83 | 1.45 | 79.23% |
8 SPUs, 3.2GHz | 14.63 | 9.46 | 64.66% |
Pentium4, 3.2GHz | 6.4 | 3.1 | 48.44% |
Pentium4 + SSE3, 3.6GHz | 14.4 | 7.2 | 50.00% |
Itanium, 1.6GHz | 6.4 | 5.95 | 92.97% |
表9 Cell BE和其它处理器关于Linpack性能的比较
第8页:MPEG-2视频解码优化 |
图6 MPEG-2解码流动进程
运用一个快速的IDCT运算法则,使用512个mpya和128个add/subtract指令来操作一个8x8 2-D IDCT。这个IDCT运算法则相当规范,并且可以简单的保持MPEG-2标准16bx16b相乘需求的精度。大部分的操作都通过4-way SIMD实施,矩阵调换是由8-way SIMD实施。
动作补偿部分操作基本上由8-way SIMD和一些16-way SIMD来执行。
# of Cycles | # of Insts. | CPI | # of Used Registers | Frames/sec. @3.2GHz | ||
---|---|---|---|---|---|---|
CIF | 1Mbps | 63.4M | 51.9M | 1.22 | 126 | 1514 |
SDTV | 5Mbps | 263M | 220M | 1.20 | 126 | 365 |
SDTV | 8Mbps | 324M | 290M | 1.12 | 126 | 296 |
HDTV | 18Mbps | 1.25G | 1.01G | 1.24 | 126 | 77 |
表10 单SPU MPEG-2在不同的办法下的解码性能
第9页:三角转换和Lighting优化 |
Transform-light是针对高端绘图流水线的一项评定测试,由于它的结构类的数据,在Cell BE上运行的Transform-light可以得益于SPU的SIMD支持。优化基本上集中在环线打开、增强dual-issue比率、估算重叠DMAs和避免分岔。
Loop Unrolling | PPC970 2GHz (Mvtx/sec) | PPC970 2.7GHz (Scaled) (Mvtx/sec) | SPE 3.2GHz (Mvtx/sec) | SPE Advantage |
---|---|---|---|---|
82.95 | 112 | 139.44 | 1.25 | |
2 | 94.8 | 128 | 155.92 | 1.22 |
4 | 89.47 | 121 | 208.48 | 1.73 |
8 | 58.45 | 79 | 217.2 | 2.75 |
表11 Transfom-Lighting性能比拼 SPE VS PowerPC 970
密码系统使用性能
密码学需要相当大的工作量,目前在绝大部分的工作中得到越来越多的应用。下面我们就用一个单核的SPE和目前处于尖端技术的带有SIMD的CPU进行比较。
Algorithms | SPE (Gb/sec) | Leading Brand CPU with SIMD (Gb/sec) | SPE Performance Advantage |
---|---|---|---|
AES ECB Encrypt - 128 bit key | 2.059 | 1.029 | 2.002 |
- 192 bit key | 1.710 | 0.877 | 1.950 |
- 256 bit key | 1.462 | 0.762 | 1.918 |
AES CBC Encrypt - 128 bit key | 0.795 | 0.968 | 0.821 |
- 192 bit key | 0.664 | 0.823 | 0.807 |
- 256 bit key | 0.570 | 0.725 | 0.786 |
AES ECB Decrypt - 128 bit key | 1.499 | 1.035 | 1.448 |
- 192 bit key | 1.252 | 0.870 | 1.438 |
- 256 bit key | 1.068 | 0.758 | 1.410 |
AES CBC Decrypt - 128 bit key | 1.507 | 0.966 | 1.560 |
- 192 bit key | 1.249 | 0.829 | 1.507 |
- 256 bit key | 1.066 | 0.724 | 1.472 |
DES - ECB encrypt | 0.492 | 0.426 | 1.156 |
- CBC encrypt | 0.275 | 0.417 | 0.660 |
- ECB decrypt | 0.492 | 0.425 | 1.158 |
- CBC decrypt | 0.489 | 0.421 | 1.162 |
TDES - ECB encrypt | 0.174 | 0.133 | 1.313 |
- CBC encrypt | 0.097 | 0.132 | 0.733 |
- ECB decrypt | 0.174 | 0.133 | 1.313 |
- CBC decrypt | 0.174 | 0.132 | 1.321 |
MD5 | 2.448 | 2.862 | 0.855 |
SHA-1 | 2.116 | 0.902 | 2.347 |
SHA-256 | 0.854 | 0.518 | 1.649 |
结果毫无疑问的证实了在密码学系统应用的性能上一个单核的SPE是目前较好的带有SIMD的CPU的2.3倍。
从上面的种种测试中我们可以看出,Cell BE在多个运算法则上都至少等于或者优于目前尖端的处理器,下面的表格总结了Cell BE在性能上与其它处理器相比的一些优点。Type | Algorithm | 3.2 GHz GPP | 3.2 GHz Cell BE | Perf Advantage |
---|---|---|---|---|
HPC | Matrix Multiplication (S.P.) | 25.6 Gflops* (w/SIMD) | 200 GFlops (8SPEs) | 8x (8SPEs) |
Linpack (S.P.) 4kx4k | 25.6 GFlops* (w/SIMD) | 156 GFlops (8SPEs) | 6x (8SPEs) | |
Linpack (D.P.) 1kx1k | 7.2 GFlops (3.6GHz IA32/SSE3) | 9.67 GFLops (8SPEs) | 1.3x (8SPEs) | |
graphics | TRE | .85 fps (2.7GHz G5/VMX) | 30 fps (Cell BE) | 35x (Cell BE) |
transform-light | 128 MVPS (2.7GHz G5/VMX) | 217 MVPS (one SPE) | 1.7x (one SPE) | |
security | AES ECB encryp. 128b key | 1.03 Gbps | 2.06Gbps (one SPE) | 2x (one SPE) |
AES ECB decryp. 128b key | 1.04 Gbps | 1.5Gbps (one SPE) | 1.4x (one SPE) | |
TDES ECB encryp. | 0.13 Gbps | 0.17 Gbps (one SPE) | 1.3x (one SPE) | |
DES ECB encryp. | 0.43 Gbps | 0.49 Gbps (one SPE) | 1.1x (one SPE) | |
SHA-1 | 0.9 Gbps | 2.12 Gbps (one SPE) | 2.3x (one SPE) | |
video processing | mpeg2 decoder (sdtv) | 354 fps (w/SIMD) | 329 fps (one SPE) | 0.9x (one SPE) |
表13 Cell BE VS 其它处理器应用程序性能比较