多核技术导论之片上多核处理器架构

提交新文章

2011年12月17日 07:00


1.3 片上多核处理器架构

1.3.1 多核芯片

一直以来,处理器芯片厂商都通过不断提高主频来提高处理器的性能。但随着芯片制程工艺的不断进步,从体系结构来看,传统处理器体系结构技术面临瓶颈,晶体管的集成度已超过上亿个,很难单纯通过提高主频来提升性能,而且主频的提高同时带来功耗的提高,也是直接促使单核转向多核的深层次原因;从应用需求来看,日益复杂的多媒体、科学计算、虚拟化等多个应用领域都呼唤更为强大的计算能力。在这样的背景下,各主流处理器厂商将产品战略从提高芯片的时钟频率转向多线程、多内核。

其实早在1985年,英特尔发布了80386DX,它需要与协微处理器80387相配合,从而完成需要大量浮点运算的任务。而80486则将80386和80387以及一个8KB的高速缓存集成在一个芯片内。从一定意义上,80486可以称为多核处理器的原始雏形。

多核处理器最直接的发展则认为是始于IBM。IBM在2001年发布了双核RISC处理器POWER4,它将两个64位PowerPC处理器内核集成在同一颗芯片上,成为首款采用多核设计的服务器处理器。在UNIX阵营当中,两大巨头HP和Sun也相继在2004年2月和3月发布了名为PA-RISC8800和UltraSPARC IV的双内核处理器。

目前的多核处理器的推出已经愈加频繁,在推出代号为Niagara的8核处理器之后,Sun还计划在今年年中推出Niagara 2处理器。IBM的Cell处理器,结合了1个PowerPC核心与8个协处理器构成的Cell 微处理器已经正式量产,并应用于PS3主机、医学影像处理、3D计算机绘图、影音多媒体等领域。

而真正意义上让多核处理器进入主流桌面应用,是从IA阵营正式引入多核架构开始。

AMD在2005年4月推出了它的双核处理器Opteron,专用于服务器和工作站。紧随其后它又推出了Athlon 64 X2双核系列产品,专用于台式机。目前,应用于高端台式机和笔记本的FX-60, FX-62以及Turion 64 X2产品都已经出现在市场上。

2006年5月,英特尔发布了其服务器芯片Xeon系列的新成员—双核芯片Dempsey。该产品使用了65纳米制造工艺,其5030和5080型号的主频在2.67GHz和3.73GHz之间。紧随其后的6月份,另一款双核芯片Woodcrest(Xeon 5100系列)登场。英特尔声称与奔腾D系列产品相比,其计算性能提高了80%,能耗降低了20%。

继双核之后,英特尔已经在2006年11月抢先推出了四核产品,AMD也推出代号为巴塞罗那的四核处理器。

微机上使用的多核处理器都使用了片上多核处理器架构。



1.3.2 片上多核处理器体系结构

片上多核处理器(Chip Multi-Processor,CMP)就是将多个计算内核集成在一个处理器芯片中,从而提高计算能力。

按计算内核的对等与否,CMP可分为同构多核和异构多核。计算内核相同,地位对等的称为同构多核,现在Intel和AMD主推的双核处理器,就是同构的双核处理器。计算内核不同,地位不对等的称为异构多核,异构多核多采用“主处理核+协处理核”的设计,IBM、索尼和东芝等联手设计推出的Cell处理器正是这种异构架构的典范。处理核本身的结构,关系到整个芯片的面积、功耗和性能。怎样继承和发展传统处理器的成果,直接影响多核的性能和实现周期。同时,根据Amdahl定理,程序的加速比受制于串行部分的比例和性能,所以,从理论上来看似乎异构微处理器的结构具有更好的性能。

CMP处理器的各CPU核心执行的程序之间需要进行数据的共享与同步,因此其硬件结构必须支持核间通信。高效的通信机制是CMP处理器高性能的重要保障,目前比较主流的片上高效通信机制有两种,一种是基于总线共享的Cache结构,一种是基于片上的互连结构。

总线共享Cache结构是指每个CPU内核拥有共享的二级或三级Cache,用于保存比较常用的数据,并通过连接核心的总线进行通信。这种系统的优点是结构简单,通信速度高,缺点是基于总线的结构可扩展性较差。

基于片上互连的结构是指每个CPU核心具有独立的处理单元和Cache,各个CPU核心通过交叉开关或片上网络等方式连接在一起。各个CPU核心间通过消息通信。这种结构的优点是可扩展性好,数据带宽有保证;缺点是硬件结构复杂,且软件改动较大。

如何有效地利用多核技术,对于多核平台上的应用程序员来说是个首要问题。客户端应用程序开发者多年来一直停留在单线程世界,生产所谓的“顺序软件”,但是多核时代到来的结果是软件开发者必须找出新的开发软件的方法,选择程序执行模型。程序执行模型的适用性决定多核处理器能否以最低的代价提供最高的性能。程序执行模型是编译器设计人员与系统实现人员之间的接口。编译器设计人员决定如何将一种高级语言程序按一种程序执行模型转换成一种目标机器语言程序;系统实现人员则决定该程序执行模型在具体目标机器上的有效实现。当目标机器是多核体系结构时,产生的问题是:多核体系结构如何支持重要的程序执行模型?是否有其他的程序执行模型更适于多核的体系结构?这些程序执行模型能多大程度上满足应用的需要并为用户所接受?



1.3.3 典型多核芯片架构

本节以英特尔最新的多核处理器和Cell处理器为例分别介绍典型的同构多核和异构多核架构。

Intel目前最新的架构是Core微架构,所有Intel生产的x86架构的新处理器,无论面向台式机、笔记本和服务器,都将统一到Core微架构,架构如图1-1所示。

图1.1 Intel Core微架构

这是一个高效的双核心架构,支持36bit的物理寻址和48bit的虚拟内存寻址,采用共享式二级缓存设计,2个内核共享4MB的二级缓存。每个内核都采用乱序执行,加入对EM64T与SSE4指令集的支持,具有14级有效流水线,内建32KB一级指令缓存与32KB一级数据缓存,而且2个核心的一级数据缓存之间可以直接传输数据;具有4组指令解码单元,支持微指令融合与宏指令融合技术,每个时钟周期最多可以解码5条X86指令,生成7条微指令,并拥有改进的分支预测功能;拥有3个调度端口,内建5个执行单元,包括3个64bit的整数执行单元(ALU)、2个128bit的浮点执行单元(FPU)和3个128bit的SSE执行单元;采用新的内存相关性预测技术,支持增强的电源管理功能,支持硬件虚拟化技术和硬件防病毒功能。芯片内建数字温度传感器,可提供功率报告和温度报告等,配合系统实现动态的功耗控制和散热控制。

在2005年由IBM、索尼与东芝联合推出的Cell处理器,已经应用到索尼PS3和微软X360游戏机中,是第一款投入实际商用的异构多核处理器。Cell处理器具有1个运行Power指令的主核(PPE)和8个SIMD辅助核(SPE),通过1条高速总线(EIB)进行连接,其架构如图1-2所示。

图1.2 Cell架构

PPE包括1个64位、双发射、双线程、顺序执行的运算核心,可以同时提取4条指令和2个结果,负责运转操作系统和协同SPE;SPE是由1个辅助处理单元(SPU)和1个内存流量控制器(MFC)的标准设计组成。SPU是1个带有SIMD支持和256KB局部存储器的128位计算引擎;MFC有1个DMA联合MMU的控制器,从专属的局部存储器直接进行指令和数据操作,同时处理其他的SPU以及PPU同步运转,而且可以独立运行,当SPU运行的时候,并行的翻译地址和进行DMA传输。EIB连接PPE、SPE和外部I/O,由1个地址母线和4个128位的数据环线构成,2个顺时针运转另外2个逆时针运转,每个环线最大可以允许3个并行发生的数据传输。

Cell架构由于具有8个可以并行进行SIMD运算的SPE,并且通过EIB和高速内存提供足够的数据通路,而加速了浮点运算、矩阵运算、科学计算、多媒体处理等数据处理能力,3.2GHz处理器的单精度浮点运算的峰值可以达到201GFLOPS,而Intel同频率的奔腾4处理器的峰值仅25.6GFLOPS[30]。但是这种体系结构的巨大改变一方面要求操作系统支持必须提供足够的支持,另外一个方面编译器和编程模式发生了巨大的改变,Cell的编程规范中要求程序员对每个核进行单独的编程,PPE和SPE是不同的编程模式,通过特殊的编译器和链接器得到二进制代码,这给软件开发带来了新的压力和挑战。