基于多核异构处理器CELL的N-Body并行算法设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

哈尔滨工业大学本科毕业设计(论文)
- -
I 摘要
近年来,异构多核处理器,即“主核心+协处理器”发展迅速,对并行计算处理的能力大大增强,受到越来越多的重视。

基于这种异构多核处理器,对并行算法的研究,对异构多核处理器在并行算法的应用具有重要的意义。

而CELL 正是这种异构多核处理器的代表,在许多方面得到应用。

N-BODY 问题在经典天体力学中占有很重要的地位,而且它涉及到科学与工程中的许多领域,研究这个问题有具有很重要的意义。

这个问题的主要特点是O(N*N )的计算量,采用并行算法来解决这个问题是必然的选择。

本文首先介绍了CELL 处理器的产生背景和CELL 处理器的结构,以及在CELL 处理器上上进行编程的基本模型。

然后提出了N-BODY 问题,以及研究N-BODY 问题的意义。

详细讲述了引力N-BODY 问题,以及解决这个问题的并行算法,并着重介绍了树形分级算法中的Banes-Hut 分级树算法和快速多极算法FMA(Fast Multiples Algorithm)。

之后讲述了利用CELL 处理器解决N-BODY 问题,采用的是树形分级算法,以及在CELL 处理器上编程的时候要注意的问题。

最后介绍了CELL 模拟器环境的安装,程序的执行以及实验功能与性能的模拟与实现,并分析得到的数据。

关键词 CELL 处理器 并行 N-BODY 问题 SPE 线程
哈尔滨工业大学本科毕业设计(论文)
- -
II Abstract
Heterogeneous multi-core processors which are "the main core + co-processor" developed quickly in recent years. The heterogeneous multi-core processors have great ability in parallel computing, and becoming more and more attractive. Parallel algorithm study on the heterogeneous multi-core processors has great significance. And the CELL processor is on behalf of heterogeneous multi-core processors and is applied in many ways. N-BODY problem has a very important position in classical celestial mechanics. It relates to science and engineering in many areas and study on this problem of great significance. The main features of this problem is O(N * N) of computation, and the best choice to solve this problem is parallel algorithm.
This paper first introduces the background of the CELL processor and the structure of the CELL processor. And the basic program model on this processor. Then we raise the N-BODY problem and the significance study on this problem. Later we make a detailed account of the gravitational N-BODY and the parallel algorithms to solve this problem with an emphasis on the classification tree algorithm in the Banes-Hut hierarchical tree algorithm and the fast multiplex algorithm for FMA (Fast Multiples Algorithm). After that we talk about using the classification tree algorithm to solve the N-BODY problem on the CELL processor and something we should pay attention to when we programming on this processor. Finally we introduce the installation of the environment simulator CELL, The implementation of the procedures as well as functionality and performance test and realization of the simulation. At last we analysis of the data which we get from the simulation.
Key words CELL processor Parallel N-BODY problem SPE thread
哈尔滨工业大学本科毕业设计(论文)
- - III
目录
摘要 ......................................................................................................................... I Abstract (II)
第1章 绪论 (1)
1.1 课题背景 ................................................................... 错误!未定义书签。

1.2 Cell 内部结构介绍 (5)
1.2.1 Cell 结构总揽 (5)
1.2.2 IBM 公布的性能数据: (7)
1.2.3 Power 处理单元(PPE ) (7)
1.2.4 协同处理单元(SPE ) (8)
1.2.5 SPE Local Stores (9)
1.2.6 The EIB and SMF (10)
1.2.7 CELL 处理器对并行的支持 (11)
1.3 CELL 处理器编程概述 (12)
1.3.1 基本编程模型 (12)
1.3.2 PPE 和SPE 的向量指令集 (13)
1.3.3 PPE 和SPE 间数据通信方式 (15)
1.3.4 程序编译及控制流 (15)
1.4 本文主要贡献 (18)
1.5 本章小结 (18)
第2章 N-BODY 问题及其并行算法 (19)
2.1 概述 (19)
2.2 N-BODY 问题 (19)
2.2.1 问题简介 (19)
2.2.2 引力N-BODY 问题基本概念 (20)
2.2.3 计算公式 (20)
2.2.4 算法思想 (21)
2.3 N-BODY 并行算法 (21)
2.3.1 树形分级算法 (21)
2.3.2 Banes-Hut 分级树算法 (22)
2.3.3 快速多极算法FMA(Fast Multipole Algorithm) (23)
哈尔滨工业大学本科毕业设计(论文)
- - IV
2.4 本章小结 (24)
第3章 基于CELL 解决N-BODY 问题 (25)
3.1 代码移植 (25)
3.1.1 并行化策略 (25)
3.1.2 从PPE 移植SIMD 代码到SPE (26)
3.1.3 代码移植需要考虑的问题 (26)
3.2 主要程序与数据结构 (27)
3.2.1 程序流程 (28)
3.2.2 主要数据结构 (30)
3.2.3 主要函数 (32)
3.2.4 PPE 端程序分析 (33)
3.2.5 SPE 端程序分析 (35)
3.3 本章小结 (36)
第4章 模拟器环境运行与实验模拟 (37)
4.1 模拟器环境的搭建 (37)
4.2 CELL 目录结构 (41)
4.3 模拟器的运行 (41)
4.3.1 实验的功能模拟 (46)
4.3.2 实验的性能模拟 (48)
4.4 本章小结 (50)
结论 (51)
致谢 (52)
参考文献 (53)
附录1 (55)
附录2 (58)
哈尔滨工业大学本科毕业设计(论文)
- -
1 第1章 绪论
1.1 Cell 体系结构提出的背景
由Sony, Toshiba 和IBM (简称STI 联盟)最初为PlayStation 3设计的“Cell 处理器”是一个高性能分布式体系结构处理器。

Cell 包括硬件Cell 和软件Cell 。

硬件Cell 采用多核技术,主要由一个PPE 和8个SPE 通过EIB 总线联结构成,各个单元协作且并行地处理计算机任务;软件Cell 包括数据和程序,它们被送往硬件Cell 进行计算并返回结果。

Cell 的每一个核都采用RISC 指令集结构,而指令的动态调度,寄存器换名等都由软件实现,从而大大提高了硬件速度[1]。

Cell 处理器的影响不仅仅局限于游戏市场,而将遍布整个计算机工业界。

Cell 在图形领域的优势是明显的:3D 图形所具有的巨大并行性以及可向量化和流水化处理的特征,而Cell 中的多个SPE 能对其进行大幅度加速;而数字信号处理中主要使用的FFT (快速傅立叶变换)算法也是一个高度可向量化的算法,Cell 的向量化与高并行性将使Cell 处理器成功地运用于DSP 领域;除此之外,Cell 处理器可有效运用于超级计算,服务器等多个领域。

1.1.1 RISC 指令集结构的优点
Cell 处理器中PPE 和SPE 都采用RISC 指令集结构,下面从CISC 的不足,针对CISC 不足进行改进的RISC 的优点以及RISC 面临的问题三方面进行分析。

1. CISC 的不足
复杂指令集计算机强化指令功能,实现软件功能向硬件功能转移,减少指令条数来提高计算机性能。

指令集本身的复杂性也带来了计算机体系结构的复杂性,这不仅增加了研制时间和成本,也容易造成设计失误。

指令集中各条指令功能不均衡,执行时间不同,不利于采用计算机体系结构的相关技术来提高性能,许多指令需要复杂的操作,因而运行速度慢。

2. RISC 的优点
针对CISC 指令集结构的不足,在20年代80年代RISC 指令集结构发
哈尔滨工业大学本科毕业设计(论文)
- -
2 展了起来。

RISC 指令集结构采用定量化设计计算机体系结构的方法,选取使用频率最高和最有用的指令,使每条指令的功能尽可能简单,并在一个机器周期内完成,指令长度均相同,只有Load 指令和Store 指令访问存储器,其他指令均在寄存器之间进行,以简单有效的方式支持高级语言,大大提高系统性能。

图1.1 在过去近20年RISC 性能统计图
3. RISC 面临的问题
上图的发展趋势符合摩尔定律,即在价格不变的情况下,计算机芯片的运算能力每18个月提高1倍。

然而当指令集精简和高效到达一定程度之后,系统性能的提高将面临瓶颈,只靠改进指令集的设计来提高计算机性能的作用将越来越小;功耗和散热等都将影响单核处理器性能的改进。

在单核处理机的性能发展到极限时,多核处理器技术的出现解决了这一问题。

1.1.2 运算单元与存储单元的“距离”
Transmeta 公司曾经设计过一款名为VLIW Crusoe 的芯片。

该款芯片的设计理念是尽可能的简化芯片的构造,把指令的动态调度,寄存器换名,分
哈尔滨工业大学本科毕业设计(论文)
- -
3 支预测等复杂的事情交给软件去做,从而提高硬件的运行速度。

然而,这种设想没有得到成功。

原因在于,把处理器的复杂性转移到软件上,意味着把复杂性放到了主存里。

这样,就在CPU 和主存间的鸿沟进一步扩大,增加了延时。

图1.2 CPU 发展的三个阶段
上图展示了CPU 发展的三个阶段。

第一个阶段,指令被静态调度,此时还没有指令窗口的概念(Instruction Window ); 第二个阶段,处理单元的数目得到提高(比如有多个整数和浮点运算单元等)。

Cache 的大小也得到增加,因而有更多的指令和数据可以存在Cache 中。

此时,指令窗口技术引入。

指令得以在指令窗口中被重新调度,再输出给不同的处理单元并行地处理;第三个阶段,处理单元的数量也得到了一定增加(比如加入向量处理单元),流水线深度也得到增加。

这些变化导致了在每个时钟周期,有更多的"执行空间"(execution slots)需要填补;也就是说需要找到更多的,可以并行执行的指令。

因而控制逻辑里的工作量就增加了很多。

哈尔滨工业大学本科毕业设计(论文)
- -
4
图1.3 CPU 数量的增加,带来的CPU 与主存间距离的增大
图1.4 传统CPU 内部,执行单元与Cache 距离很大
从发展的趋势来看。

运算单元的增加,会导致储存单元与运算单元的距离越来越远。

从大的方面来看,CPU 数量的增加,会导致主存与CPU 之间的距离的增加(图1.3);从小的方面来看(如同上面所提到的),CPU 中处理单元单元的增加,会使Cache 与处理单元间(ALU 等)的距离越来越远(图1.4)。


哈尔滨工业大学本科毕业设计(论文)
- -
5 里,"更远"的距离,意味着更大的延迟。

1.1.3 异构多核与同构多核
现在由于单核处理器的性能瓶颈的限制,多核处理器成了处理器开发商必然的选择。

多核结构分为同构多核和异构多核。

MPR 一直认为服务器适合使用同构多核处理器。

此外PC 的处理器也在向同构双核方向发展,因为目前的软件架构通常是在后台运行应用程序或是同时执行多个应 用程序。

然而,如果要进一步提高PC 和其它消费电子产品的性能也许异构多核架构比较合适。

因为异构多核架构可以满足顾客不同的要求。

基于这一点,MPR 预 测未来十年PC 甚至处理器的设计将发生重大的变化。

即异构多核将越来越受到人们的重视[16]。

与多核同构配置相比,异构架构能够提供有利于流片投资以及功耗的更佳折中。

所以我们选择异构多核处理器,而CELL 处理器正是异构多核的代表。

1.1.4 CELL 结构的优势
Cell 体系结构能够成功的关键在于Cell 体系结构重新运用了RISC 的思想,采用了多核技术以及Local store 技术,扔掉了control logic 的负担,换来了更宽的处理单元以及更多的和处理单元靠得更近的存储单元。

与将所有复杂的控制交给编译器(普通的RISC 芯片中就如此)所不同的是,编译器、程序员、优秀的调度软件和一个general purpose 的CPU (PPE )一起承担了指令调度和资源分配等control logic 以前做的事情[1]。

1.2 Cell 系统架构
1.2.1 Cell 结构总揽
一个单独的Cell BE 处理器芯片由下面这些部分组成(下文中均使用英文简写):
∙ 1个Power 处理器单元(Processor Element (PPE))
∙ 8个协同处理器单元(Synergistic Processor Elements (SPE))
∙ 单元相互连接总线 (Element Interconnect Bus (EIB))
哈尔滨工业大学本科毕业设计(论文)
- - 6 ∙ 2个Rambus XDR 内存控制器
∙ Rambus FlexIO 接口
其中,按照不同的分类,可以将SPE 分解成SXU 、LS (Local Store )、SMF 或者SPU 和SMF 。

具体结构图1.5,1.6[1]:
图 1.5CELL 结构(1)
图1.6CELL 结构(2)
哈尔滨工业大学本科毕业设计(论文)
- -
7 1.2.2 IBM 公布的性能数据:

时钟频率Observed clock speed: > 4 GHz ●
峰值性能(单精度): > 256 GFlops ●
峰值性能(双精度): > 26 GFlops ●
每个SPU 的Local storage 的容量: 256KB ●
面积: 221 mm² ● 采用90nm 绝缘体硅技术(Silicon on Insulator )
● 晶体管数: 234M
为了进一步说明Cell 的结构,接下来将单独对每一个单元进行介绍。

1.2.3 Power 处理单元(PPE )
PPE 是一个64位的“Power 架构”的处理器。

IBM 一直用“Power 架构”指代其PowerPC 和POWER 处理器。

这种类型的处理器没有运用在PC 里,但使用在Apple 的Macintosh 系统中(型号G5)。

PPE 可以运行PowerPC 和POWER 处理器的二进制代码。

虽然PPE 使用PowerPC 的指令集,但其设计结构与理念都是全新的。

也就是说,PPE 不是基于现行的970/G5或POWER 处理器的设计。

PPE 拥有完全不同的体系结构,因此把PPE 的时钟频率与现行芯片作比较是没有意义的。

PPE 包含了一个64位的、多线程,指令双流出、顺序执行的Power 架构的处理器和两级on-chip cache 。

这个cache 保护了系统全局的数据一致性;PPE 还能包含VMX(Vector Multimedia extensions ,PowerPC 上的Actives 多媒体扩展),对多媒体应用程序使用SIMD 进行提速。

VMX 有犯个128位寄存器,每个寄存器可以保存16个8位、8个16位或者4个32位数据(可以是单精度浮点或者符号/无符号整数),但是VMX 不支持64位数据(双精度浮点)
PPE 具备硬件细密化多线程(Fine-Grained Multi-Threading ,FGMT),支持以“轮讯”方式进行线程调度实现“细密化”多线程处理。

当两个线程都是活跃的时候,那么处理器就会依次在各线程中拾取指令。

当出现一个线程不活跃或者发射(issue)不出指令的时候,另一个活跃的线程就会被允许每个周期都发射出一条指令。

在出现分支预测失败的时候,PPE 会出现8个时
哈尔滨工业大学本科毕业设计(论文)
- -
8 钟周期的流水线性能丢失以及4个时钟周期的数据。

ache 装载存取时间损失。

如果有一个线程出现分支预测失败的话,另一个线程通常可以马上执行,把流水线停滞的性能损失填补回来,从而实现更高的体系架构效率和更高的处理器资源利用率。

1.2.4 协同处理单元(SPE )
图 1.7SPE 结构
Cell 的计算能力主要来自于8个SPE 。

SPE 主要用于被优化执行PPE 分配的任务,这些往往是数据运算量大,运算复杂。

每个SPE 包含一个RISC 核心和一个256KB 的局部存储器。

每个SPE 是一个向量处理器,其行为相对独立。

每个SPE 运行在4GHz 频率上,拥有128×128位的寄存器,4个浮点运算单元(单精度),4个整数运算单元。

SPE 还拥有一个256 KB 的Local Store ,以此来取代Cache 。

另外还具有与全局数据保持一致性的DMA 控制器。

SPE 的组成单元和每一部分的带宽见图1.7。

几乎所有SPE 的指令都是被设计用来以SIMD 的形式在128位的数据上进行操作。

128位的数据可以由2个64位双精度浮点数或长整数、4个32位单精度浮点数或整数、8个16位short 、或16个8位的char 来组成。

128位的操作数被保存在一个寄存器中。

指令最多可以有三个操作数并产生
哈尔滨工业大学本科毕业设计(论文)
- -
9 一个结果。

每个寄存器文件有6个读和2个写端口。

SPE 的分支结构允许使用一条分支暗示指令来覆盖原来默认的分支预测策略。

分支暗示指令还能从分支目标处预取最多32条指令,因此如果分支暗示成功,则没有分支带来的损失。

指令取缓冲中的一个专门用于分支暗示机制。

此外,还有利用位选择指令来消除短分支的额外支持。

SPE 的指令集源于PowerPC 的向量扩展VMX/Actives ,可以处理8位、16位、32位整数和32位(单精度)、64位(双精度)浮点数,由于具备这样的数据处理能力,SPE 比传统的协处理器更强大、自由。

虽然它支持双精度浮点计算,但是性能会大打折扣(大约是单精度的1/10左右)。

同时,SPE 的指令级并行性很有限,这意味着SPE 的编译器显得非常重要。

SPE 与和传统CPU 的一个很大的不同在于,SPU 没有采用经典的Cache 结构,而是采用Local Store 。

就LS 和Cache 的存储单元而言,都是使用SRAM 来实现的。

不同的是Local Storage 是静态映射的,其内部的数据可以直接通过特定的地址空间访问到。

而Cache 中的内容是动态映射的,无法在指令中使用特定地址直接访问Cache 。

在实现上,Cache 要比Local Storage 复杂,当然简单的硬件设计对编译器的要求就更高一些。

SPE 可以看作是能够做到性能无损的分支预测。

1.2.5 SPE Local Stores
SPE 与和传统CPU 的一个很大的不同在于,SPE 没有Cache ,而是采用Local Store 。

每一个SPE 都有一个256Kbyte 的Local Store 。

Local Store 虽然与Cache 一样,是在芯片里的存储部件(on-chip memory ),但他们的行为却相差很大。

Local Store 的效率和L2 Cache 差不多。

由于没有使用Cache 的机制,复杂性得以大幅降低,处理的速度得到提高。

同时,由于SPE 的Local Store 之间没有一致性机制,使得整体的设计更加得简单。

此外,由于没有不存在一致性机制问题,Cell 中SPE 的数量可以方便的增加或减少,也就意味着Cell 结构的可缩放性(Scaling )比使用Cache 的传统系统要好很多。

当然,CELL 的硬件设计变的很简单,但是对编译器的要求就更高一些。

SPE 的Local Store 支持完全流水化的16-byte 宽的访问(对于访存指令)和128-byte 宽的访问(对于取指令和DMA 操作)。

由于Local Store 只
哈尔滨工业大学本科毕业设计(论文)
- - 10
有一个端口,取指令操作、DMA 和访存指令都要竞争地使用这个端口。

取指令操作只发生在Local Store 空闲的时候;最多一次取3.5条指令放在指令缓冲中,以留出更多的访问空闲时间。

Local Store 能够以最小1 Kb (最大16Kb )的块大小与主存进行数据交换。

MFC 控制器负责执行SPE 中LS 与Cell 系统内存间大量数据的交换,同时提供了高效的数据传输率。

MFC 主要是由DMA 单元和MIMO(Memory-Mapped I/O)Registers 单元构成的。

LS 能够与DMA 间以128位的块大小进行传输,DMA 控制器能够支持来自内部或外部的最多16个16Kbyte 的并发的访问。

DMA 控制器是全局内存地址空间的一部分;内部DMA 的地址在放上总线之前,会被MMIO 转换成为全局的地址。

程序通过一个通道接口来与DMA 单元进行交互,并可能初始化阻塞或非阻塞的访问。

1.2.6 The EIB and SMF
协同内存流控制器SMF (Synergistic Memory Flow Controller )将SPU 整合到Cell 系统结构中。

SMF 采用Power 保护模式和地址转换模式,使得SPU 拥有了Power 架构核心提供的保护和地址转换的能力。

SMF 主要是由DMA 单元和MMU 单元构成的。

Local Store 能够与DMA 间以128 bytes 的块大小进行传输。

DMA 控制器能够支持来自内部或外部的最多16个16K byte 的并发的访问。

DMA 控制器是全局内存地址空间的一部分;内部DMA 的地址在放上总线之前,会被MMU 转换成为全局的地址。

程序通过一个通道接口来与DMA 单元进行交互,并可能初始化阻塞或非阻塞的访问。

SMF 控制器使SPU 具有了数据传输和同步的能力,并实现了SPU 与Element Interconnect Bus (EIB )的接口。

如果把整个Cell 系统看成一个网络,那么EIB 可以看作是这个网络的集线器。

SMF 控制器同时实现了SPE 与PPE 单元之间数据交换的接口。

SMF 控制器负责执行SPU 中Local Storage 与Cell 系统内存间大量数据的交换,同时提供了高效的数据传输率。

同时,由于提供了异步的数据传输能力、PPE 和SPE 上的数据处理和数据传输的并行性,SMF 对于程序员也很重要。

因为程序员不再需要直接
哈尔滨工业大学本科毕业设计(论文)
- - 11
对数据的处理和传输进行操作[9]。

1.2.7 CELL 处理器对并行的支持
作为一个侧重向量结构设计的芯片而言,向量并行是最合适的应用。

科学计算,物理和生物模拟这些以往在向量并行超级计算机中广泛使用的计算模式都可以从 Cell 体系结构中受益。

而STI 声称Cell 真是一个"桌面超级计算机"的设计方案。

对于传统不可向量化的应用而言,单颗Cell 芯片的性能至少和两个 甚至更多PowerPC 970或者P4 3.6G 处理器相当。

对于可向量化的应用而言唯一潜在的问题就是相对受限的内存容量。

Cell 芯片本身有很大的寻址能力,而且Cell 还可以通过I/O 单元形成Stream Processing 来获得不错的性能。

实际上现在的GPU 已经在开始处理科学计算中的部分问题了。

目前的研究和使用情况表明"很多计算可以通过GPU 加速,包括稀疏线形系统求解,物理模拟,线 形代数操作,偏微分方程,快速傅立叶变换,水平集合计算,计算几何问题,以及非经典图论,例如体绘制,光线跟踪和流形象化。

"。

在 SC2004会议上已经出现了使用GPU Cluster 实现高性能计算的论文。

同时对于通用或者桌面应用领域,GPU 也开始逐步分担CPU 的繁重计算任务了。

计算机中的3D 图形芯片在很多性能上早已超过通用处理器。

以前他们被限制在3D 图形处理但是自从梯度(Shader)的加入,他们被用于许多更加具有通用性任务中,这样的通用性和通用处理器并非没有区别,但是Shader 4.0将比以前的版本具有更多的通用性。

目前Apple 已经开始使用称为Core Image 和Core Audio 的技术,通过利用GPU 的资源来加速多媒体应用的处理速度。

而Microsoft 也承诺最新的DirectX Next 将在Shader 中包括更多的通用能力。

Cell 的结构和运行方式和GPU 很接近。

而从设计一开始Cell 就面向了更加通用的领域,而GPU 一直专门正对图形处理。

对于开发者而言改写那些非3D 的应用程序在Cell 上要更容易写。

并且Cell 有快速的内部总线供主处理器核心和向量处理核心通讯使用,这和目前GPU 的使用方式有本质的区别。

目前的 GPU 只能通过慢速的AGP 或者PCI-Express 总线来访问内存。

虽然PCI-Express 比AGP 提升了许多,但是共享板上总线的性能总是
哈尔滨工业大学本科毕业设计(论文)
- - 12
受限 的。

目前GPU 和主存之间的数据传输相当慢。

目前GPU 在高性能和通用领域的进展几乎无一例外的都可以完全套用到Cell 上,并且Cell 具有更好的通用性,更好的移植环境和更高更均衡的性能支持。

1.3 CELL 处理器编程概述
Cell 异构多核处理器的高性能不仅来自于硬件体系结构的设计,还要依靠软件领域的支持。

Sony 公司的游戏机产品PlaystationR3为程序员用Cell 异构处理器进行开发提供了简单,经济的方法,需要在PS3上安装操Linux 作系统参见。

但是,缺少通用的开发和编程环境,Cell 处理器的性能不能够完全发挥,编程人员需要手动方式优化应用程序,才能充分发挥cell 芯片的性能潜力。

IBM 专门为在Cell 体系架构上进行软件和系统开发以及性能分析提供的一个完整的工具cell 处理器的软件开发套件SDK(Software Development Kit),目前的版本是2.1,提供了在Cell 处理器上高效的开发工具和开发库,仿真环境IBM Full-System Simulator for Cell ,以及大量的技术文档[2]。

1.3.1 基本编程模型
对于在Cell 处理器上编写应用程序,需要对PPE 和SPE 分别进行编程,可以采用高级语言,如C 和C++。

而且Cell 的SDK 已经对C/C++进行了扩展,以提供对Vector/SIMD 的支持。

其中SDK 中有用于编写程序的ECLIPSE 编程环境。

实际上,对于应用程序的开发者来说,可以将PPE 和SPE 可以看作是独立的处理器,由于PPE 是一个双线程处理单元,在加上8个SPE ,同一时刻可以有10个任务在同时运行。

总的来说,PPE 适合作为控制和任务调度处理器,SPE 则用于处理计算任务。

必须给PPE 指派控制任务,而应用程序相关的线程运算应完全由SPE 协同处理。

PPE 是系统的资源管理器,它负责处理操作系统任务、管理对内存的访问并控制SPE 的工作。

到现在为止,已经提出了许多模型,图1.8显示的是最基本的编程模型。

PPE 则负责创建,管理和维护这些SPE 线程,而SPE 则执行相应的子程序[2]。

哈尔滨工业大学本科毕业设计(论文)
- -
13
图1.8CELL 处理器基本编程模型
图1.8中,PPE 中执行的主程序划分多个SPE 的任务,数据及顺序,然后将分配好的各个部分给相应SPE ,然后由SPE 执行子程序。

当子程序执行完毕后,SPE 将处理完的数据通过DMA 方式传回给PPE 的主程序。

不过,仅仅是这样的程序不能完全充分发挥Cell 处理器的计算潜力,为了最大限度地利用Cell 处理器性能,可以将其抽象为一个异构并行处理系统,此系统存在以下两个层次的并行性:
1.线程级的并行处理,即在单位时间里,并行操作多个SPE 线程协调工作来获取最大性能;
2.指令级的并行处理,在每条指令中,尽可能执行SIMD 并行矢量操作。

总而言之,对于Cell 处理器高效编程的关键是如何同时利用多个SPE 的矢量操作。

1.3.2 PPE 和SPE 的向量指令集
向量是包含一个由多个数据元素组成的一维数组的指令作数。

这些数据
哈尔滨工业大学本科毕业设计(论文)
- - 14
元素可以是整数或者是浮点数。

大多数的VMX 向量多媒体扩展指令和SPU 指令都使用向量操作数。

向量也可以称之为SIMD 操作数。

SIMD 处理采用Data-level 并行操作模式。

Data-level 并操作是指需要转换一系列向量元素的操作能同时在该向量所有元素上执行。

也就是说单条指令可以并行地应用在多数据元素上[3]。

PPE 和SPE 都是基于租SC 架构的SIMD 向量处理器。

单指令流多数据流SIMD(Single Instruction Multiple Date),是指同一条指令流控制下多个数据单元操作同步地进行,提供高带宽的数据处理和高计算强度。

在向量处理器上,寄存器可以作为一个单元进行处理,也可以作为多个单元进行处理。

为了使用C/C 一来表示这种概念,vector:关键字被添加到C/C++语言中,它是一个原始数据类型,可以在整个寄存器上使用。

举例来说,vector unsigned int iyvec ; 创建一个包含4个整数的向量,其中的数据是一起进行加载、处理和存储的,变量iyvec 会同时引用这4个值,signed/unsigned 关键字是声明非浮点类型必需的。

为了利用C/C++语言扩展,必须在PPE 中代码包含头文altivec.h ,SPE 代码的开头包含头文件spu_intrinsics.h 。

向量常量的创建方法如下:先是在圆括号中的向量类型,然后使用花括号括起来的向量内容。

可以采用下面的方式给一个名为iyvec 的向量赋值:
Vector unsigned int iyvec = (vector unsigned int) {1, 2, 3, 4};
C/C++语言扩展包括了一些可以让程序员几乎能够访问指令的数据类型,下图1.9为一个简单的矢量加法运算过程
:
图1.9SIMD 矢量加法。

相关文档
最新文档