基于CELL Broadband Engine环境高性能计算开发应用
CELL BE处理器包括一个基于Powerpc架构的控制处理单元Power Processing Element (PPE)以及8个SIMD的协处理器单元——Synergistic Processing Elements (SPE),以及用以连接PPE, 输入输出单元以及SPE的高速环形数据总线——Element Interconnect BUS (EIB)。CELL BE同时还提供了DMA指令和控制机制以用于在不同处理单元之间提供高效的通信。PPE和SPE均为RISC结构,指令字长为32位,寻址空间为64位。SPE提供最高128位宽的SIMD的数据通路。工作在3.2GHz主频下,单个SPE对8位整型可提供51.2 Billion的峰值计算速度,对单精度浮点可提供25.6 GFlops的峰值计算速度。 为了提高内存访问速度,CELL BE采用Rambus XDR DRAM内存,提供2个32位的数据访问通道,每个通道的访问速率为12.8GB/s。为了提高I/O访问速度,在CELL BE中采用了高速、可配置的I/O接口——7个发射通道和5个接收通道的Rambus PRAC FlexIO,FlexIO工作5GHz下时,其发送带宽和接收带宽分别为35GB/s和25GB/s。
PPE和SPE都是基于RISC架构,双发射的SIMD处理器。CELL BE中所有的处理单元,I/O控制器,内存控制器都通过高速的EIB(4路128位宽的环形总线)互联。XIO接口提供与Rambus XDR内存的高速互连,FlexIO提供了高速I/O通道。PPE是一个兼容PowerPC 970架构的两路并发多线程处理器,包含一个32kB的L1 Cache(32kB的数据cache和32kB的指令cache), 256kB的L2 Cache以及一个VMX(VMX是PowerPC上的AltiVec多媒体扩展,Apple称为Velocity Engine。VMX本身就是一个向量处理单元,或者说是类似于Intel的SSE,SSE2的SIMD扩展。)单元。操作系统运行于PPE上,PPE负责对SPE进行调度,而SPE则负责主要的计算工作。SPE直接访问本地的Local Storage(LS)。它通过DMA方式访问主存,由DMA负责将指令和数据搬到LS。这种方式能够有效地减小内存读写延迟对处理器利用率的影响,因为SPE的计算和DMA传输可以并行地进行。SPE是一个高度可配置的处理单元,SPE可以被配置成不同的运行方式和存储保护(Isolation)模式。在存储保护模式下,PPU和其它SPE不能访问该SPE的LS,从而在硬件层次上提供了安全机制。这种机制在一些场合是非常有用的,如DRM。
A1.jpg
CELL BE编程模型
对SPE的编程,可以采用高级语言,如C和C++。并且CELL BE的编译器及开发包已经对C/C++进行了扩展,以提供对Vector/SIMD的支持。
实际上,对于应用程序的开发者来说,可以简单的将CELL BE看作一个9路的多处理器。由于PPE是一个双线程双发射、顺序执行的RISC处理单元,它的一个时钟周期可以处理来自两个线程的指令(即所谓硬件多线程SMT),因此加上8个SPE,同一时刻可以有10个任务在同时运行。总的来说,PPE适合作为控制和任务调度处理器,SPE则用于处理计算任务。
CELL BE 存在多种编程模型,对于简单的SPE程序("small" SPE program)来说,与普通的应用程序编程是类似的。我们需要将任务进行划分,针对不同的SPE编写不同的代码,每个SPE完成一个特定的任务。这种方式下,SPE不需要访问主存,只需访问LS就够了。在这种方式下,SPE的数据段、代码段的大小限制为256kB (LS的大小)。