基于CELL Broadband Engine开发高性能应用
扫描二维码
随时随地手机看文章
ibm公司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。
cell be编程模型对spe的编程,可以采用高级语言,如c和c++。并且cell be的编译器及开发包已经对c/c++进行了扩展,以提供对vector/simd的支持。实际上,对于应用程序的开发者来说,可以简单的将cell be看作一个9路的多处理器。由于ppe是一个双线程双发射、顺序执行的risc处理单元,它的一个时钟周期可以处理来自两个线程的指令(即所谓硬件多线程smt),因此加上8个spe,同一时刻可以有10个任务在同时运行。总的来担琍pe适合作为控制和任务调度处理器,spe则用于处理计算任务。 cell be 存在多种编程模型,对于简单的spe程序("small" spe program)来说,与普通的应用程序编程是类似的。我们需要将任务进行划分,针对不同的spe编写不同的代码,每个spe完成一个特定的任务。这种方式下,spe不需要访问主存,只需访问ls就够了。在这种方式下,spe的数据段、代码段的大小限制为256kb (ls的大小)。