PowerPC学习.docx
- 文档编号:12576870
- 上传时间:2023-04-20
- 格式:DOCX
- 页数:30
- 大小:2.09MB
PowerPC学习.docx
《PowerPC学习.docx》由会员分享,可在线阅读,更多相关《PowerPC学习.docx(30页珍藏版)》请在冰豆网上搜索。
PowerPC学习
TechtalkofPowerPC
历史
1:
POWER
POWER是PowerOptimizationWithEnhancedRISC的缩写,是IBM的很多服务器、工作站和超级计算机的主要处理器。
POWER芯片起源于801CPU,是第二代RISC处理器。
POWER芯片在1990年被RS或RISCSystem/6000UNIX工作站(现在称为eServer和pSeries)采用,POWER的产品有POWER1、POWER2、POWER3,现在最高端的是POWER4。
POWER4处理器是目前单个芯片中性能最好的芯片。
801的设计非常简单。
但是由于所有的指令都必须在一个时钟周期内完成,因此其浮点运算和超量计算(并行处理)能力很差。
POWER体系结构就着重于解决这个问题。
POWER芯片采用了100多条指令,是非常优秀的一个RISC体系结构。
以下对每种POWER芯片简单进行一下介绍;更详细的内容请参考参考资料中的链接。
∙POWER1
发布于1990年:
每个芯片中集成了800,000个晶体管。
与当时其他的RISC处理器不同,POWER1进行了功能划分,这为这种功能强大的芯片赋予了超量计算的能力。
它还有单独的浮点寄存器,可以适应从低端到高端的UNIX工作站。
最初的POWER1芯片实际上是在一个主板上的几个芯片;后来很快就变成一个RSC(RISC单一芯片),其中集成了100多万个晶体管。
POWER1微处理器的RSC实现被火星探险任务用作中央处理器,它也是后来PowerPC产品线的先驱。
∙POWER2
发布于1993年,一直使用到1998年:
每个芯片中集成了1500万个晶体管。
POWER2芯片中新加了第二个浮点处理单元(FPU)和更多缓存。
PSSC超级芯片是POWER2这种8芯片体系结构的一种单片实现,使用这种芯片配置的一个32节点的IBM深蓝超级计算机在1997年击败了国际象棋冠军GarryKasparov。
∙POWER3
发布于1998年:
每个芯片中集成了1500万个晶体管。
第一个64位对称多处理器(SMP),POWER3完全兼容原来的POWER指令集,也可以与PowerPC指令集很好地兼容。
POWER3设计用来从事从太空探测到天气预报方面的科技计算应用。
它特有一个数据预取引擎,无阻塞的交叉数据缓存,双浮点执行单元,以及其他一些很好的设计。
POWER3-II使用铜作为连接介质重新实现了POWER3,这样以相同的价格可以获得两倍的性能。
∙POWER4
发布于2001年:
每个芯片中集成了1亿7400万个晶体管。
采用0.18微米的铜和SoI(绝缘硅)技术,POWER4是目前市场上单个芯片功能最强大的芯片。
POWER4继承了POWER3芯片的所有优点(包括与PowerPC指令集的兼容性),但是采用的却是全新的设计。
每个处理器都有2个64位的1GHz+的PowerPC核心,这是第一个单板上具有多核心设计的服务器处理器(也称为“片上CMP”或“片上服务器”)。
每个处理器都可以并行执行200条指令。
POWER4芯片取代了Star系列的处理器,是IBMRegatta服务器强大的动力之源,也是PowerPC970处理器(也称为AppleG5)的祖先。
POWER4+?
(也称为POWER4-II)功能与之类似,但是主频更高,功耗更低。
∙POWER5?
计划2004年发布。
与POWER3和POWER4芯片类似,POWER5是POWER和PowerPC体系结构的一种综合体。
这种芯片具有很多特性,例如通信加速、芯片多处理器、同步多线程,等等,据报告声称其性能超过POWER4芯片50%到100%。
POWER5芯片将装备一条新的服务器产品线,这些服务器代号为“Squadron”,将于2004年下半年在劳伦斯利物浦发布。
∙.POWER6?
计划2006年发布。
资料保密中。
2:
Star系列
RS64芯片首次于1998年面世,在IBM内部称之为Star系列,这是因为大部分代码字节中都包含了单词“star”或类似的单词(其中一个比较出名的例外是最初的RS64,其代号是“Apache”)。
Star系列芯片源自于对PowerPC体系结构的修改,同时还从POWER产品线中继承了很多特点。
从一开始起,这些芯片就只针对于一种应用进行优化:
商业应用。
这种专用化使其在UNIX服务器领域几乎在10年的时间中都牢居霸主地位。
RS64系列将诸如分支预测、浮点处理以及硬件预取之类的问题留给其兄弟POWER3芯片来解决,自己则专注于整数运算性能和大型复杂的片上、片外缓存的处理。
RS64系列从面世以来就一直是64位的,2000年在RS64IV中引入了多线程的设计。
RS64可以在一台机器内扩展到多达24个处理器,功耗则只需要每个处理器15瓦即可,这一点与其兄弟POWER芯片有很大的区别。
这些特性使RS64芯片非常适合一些系统,例如联机事务处理(OLTP)、商业智能、企业资源计划(ERP)以及其他一些大型的、功能强大的、具有多用户和多任务而缓存命中率很低的系统,其中包括Web服务。
RS64芯片只装备在IBM的eServeriSeries(RS系列)和pSeries(AS系列)服务器中。
∙RS64
发布于1997年,代号名:
Apache。
第一个RS64芯片,也是世界上第一个64位的PowerPCRISC芯片。
其超量运算能力和可扩展性都很好,与POWER1芯片的兼容性比后来的RS64芯片都要好。
由于对商业应用的专著,原来需要使用7个芯片的功能现在只需要一个芯片就可以实现。
RS64装备在AS/400(后来称为A35)和RS/6000中。
∙RS64II
发布于1998年,代号名:
Northstar。
第二代RS64芯片,其特点是每个卡上有4个处理器,每个RS/6000可以支持多达3个卡,从而可以装备4路、8路或12路的SMP系统。
∙RS64III
发布于1999年,代号名:
Pulsar。
第一个使用IBM的铜和绝缘硅技术的RS64芯片,现在可以支持6个处理器卡,可以扩展为24路的SMP机器。
∙RS64IV
发布于2001年,代号名:
IStar,SStar。
第一个市场份额很大的实现多线程的处理器,RS64IV比之前的处理器的速度更快,体积也更小。
现在,商业计算和科学计算的聚合对处理器的设计提出了一个要求:
在一个处理器上解决.
3:
PowerPC
PowerPC中的PC代表performancecomputing。
PowerPC源自于POWER体系结构,在1993年首次引入。
与IBM801类似,PowerPC从一开始设计就是要在各种计算机上运行:
从靠电池驱动的手持设备到超级计算机和大型机。
但是其第一个商业应用却是在桌面系统中,即PowerMacintosh6100。
PowerPC是Apple、IBM和摩托罗拉(Motorola)联盟(也称为AIM联盟)的产物,它基于POWER体系结构,但是与POWER又有很多的不同。
例如,PowerPC是开放的,它既支持高端的内存模型,也支持低端的内存模型,而POWER芯片是高端的。
最初的PowerPC设计也着重于浮点性能和多处理能力的研究。
当然,它也包含了大部分POWER指令。
很多应用程序都能在PowerPC上正常工作,这可能需要重新编译以进行一些转换。
尽管IBM和摩托罗拉分别独自开发了自己的芯片,但是从用户层来讲,所有的PowerPC处理器都运行相同的关键PowerPC指令集,这样可以确保在之上运行的所有软件产品都保持ABI兼容性。
从2000年开始,摩托罗拉和IBM的PowerPC芯片都开始遵循BookE规范,这样可以提供一些增强特性,从而使得PowerPC对嵌入式处理器应用(例如网络和存储设备,以及消费者设备)更具有吸引力。
除了兼容性之外,关于PowerPC体系结构的最大一个优点是它是开放的:
它定义了一个指令集(ISA),并且允许任何人来设计和制造与PowerPC兼容的处理器;为了支持PowerPC而开发的软件模块的源代码都可以自由使用。
最后,PowerPC核心的精简为其他部件预留了很大的空间,从新添加缓存到协处理都是如此,这样可以实现任意的设计复杂度。
IBM的4条服务器产品线中有两条与Apple计算机的桌面和服务器产品线同样基于PowerPC体系结构,分别是NintendoGameCube和IBM的“蓝色基因(BlueGene)”超级计算机。
现在,三种主要的PowerPC系列是嵌入式PowerPC400系列以及独立的PowerPC700和PowerPC900系列。
由于历史的原因,我们介绍独立的PowerPC600系列,因为它是第一个PowerPC芯片。
∙PowerPC600系列
PowerPC601是第一代PowerPC系列中的第一个芯片。
它是POWER和PowerPC体系结构之间的桥梁,其与POWER1的兼容性比以后的PowerPC都要好(甚至比POWER同一系列的芯片还要好),同时它还兼容Motorola88110总线。
PowerPC601的首次面世是在1994年最早的PowerMac6100中,其主频为66Mhz。
这条产品线中的下一个芯片是603,它是一个低端的核心,通常在汽车中可以找到。
它与PowerPC603同时发布,当时PowerPC604是业界最高端的芯片。
603和604都有一个“e”版本(603e和604e),该版本中对性能进行了改善。
最后,第一个64位的PowerPC芯片,也是很高端的PowerPC620于1995年发布。
∙PowerPC700系列
首次面世是在1998年,PowerPC740和PowerPC750与604e非常类似--有些人会说他们是同一个600/700系列的成员。
PowerPC750是世界上第一个基于铜的微处理器,当它用于Apple计算机时,通常称为G3。
它很快就被G4(或称为Motorola7400)所取代了。
32位的PowerPC750FX在2002年发布时其速度就达到了1GHz,这在业界引起一片哗然。
IBM随之在2003年又发布了750GX,它带有1MB的L2缓存,速度是1GHz,功耗大约是7瓦。
∙PowerPC900系列
64位的PowerPC970,这是POWER4的一个单核心版本,可以同时处理200条指令,其速度可以超过2GHz,而功耗不过几十瓦。
低功耗的优势使其一方面成为笔记本和其他便携式系统的宠儿,另一方面又成为大型服务器和存储设备的首选品。
它64位的处理能力和单指令多数据(SIMD)单元可以加速计算密集型的应用,例如多媒体和图形。
这种芯片用于Apple的桌面系统、Xserve服务器、图像系统以及日益增长的网络系统中。
AppleXerveG5是第一个装备PowerPC970FX的机器,这是第一个采用应变硅和绝缘硅技术制造的芯片,可以只需更低的功耗就实现更高的速度。
∙PowerPC400
这是PowerPC处理器中的嵌入式系列产品。
PowerPC的灵活性体系结构可以实现很多的专用系统,但是从来没有其他地方会像400系列一样灵活。
从机顶盒到IBM的“蓝色基因”超级计算机,到处都可以看到它的身影。
在这个系列的一端是PowerPC405EP,每个嵌入式处理器只需要1瓦的功耗就可以实现200MHz的主频;而另一端是基于铜技术的800MHz的PowerPC440系列,它可以提供业界最高端的嵌入式处理器。
每个子系列都可以专用,例如,PowerPC440GX的双千兆以太网和TCP/IP负载加速可以减少报文密集型应用对CPU的占用率50%以上。
大量的产品都是在对PowerPC400系列的核心进行高度修改而构建的,其中“蓝色基因”超级计算机就在每个芯片中采用了两个PowerPC440处理器和两个FP(浮点)核心。
虽然最初考虑用作一个桌面系统的芯片,但是PowerPC的低功耗使其成为嵌入式领域中很好的一个替代品,其高性能又对高级应用很有吸引力。
现在,PowerPC已经是很多东西的大脑:
从视频游戏终端、多媒体娱乐系统,到数字助手和蜂窝电话,再到基站和PBX开关。
我们家中的宽带的调制解调器、hub和路由器、自动化子系统、打印机、复印机以及传真中也都可以找到PowerPC。
当然,桌面系统中也会有PowerPC。
两方面的市场需求。
因此Star系列正被全新设计的POWER4芯片所取代。
4.ThePowerPCArchitectureMatures
Arch-overview(Version1.x)
PowerPCarchitecture(version1.x)
Referencemanuals-ProgrammingEnvironmentsManualfor32-BitImplementationsofthePowerPCArchitecture,Rev.3
1:
指令集
PowerPC体系结构分为三个级别(或者说是“book”)。
通过对体系结构以这种方式进行划分,为实现可以选择价格/性能比平衡的复杂性级别留出了空间,同时还保持了实现间的代码兼容性。
BookI.用户指令集体系结构
定义了通用于所有PowerPC实现的用户指令和寄存器的基本集合。
这些是非特权指令,为大多数程序所用。
BookII.虚拟环境体系结构
定义了常规应用软件要求之外的附加的用户级功能,比如高速缓存管理、原子操作和用户级计时器支持。
虽然这些操作也是非特权的,但是程序通常还是通过操作系统调用来访问这些函数。
BookIII.操作环境体系结构
定义了操作系统级需要和使用的操作。
其中包括用于内存管理、异常向量处理、特权寄存器访问、特权计时器访问的函数。
BookIII中详细说明了对各种系统服务和功能的直接硬件支持。
从最初的PowerPC体系结构的开发开始,就根据特定的市场需求而发生分支。
当前,PowerPC体系结构家族树有两个活跃的分支,分别是PowerPCAS体系结构和PowerPCBookE体系结构。
PowerPCAS和PowerPC都支持最初的PowerPC体系结构中定义的应用级基础设施,同时为它们的具体目标市场提供了最佳的优化。
就其两种操作模式之一而言,PowerPCAS实质上与最初的PowerPC相同,而PowerPCBookE在它的BookIII级别的定义中,已经走向了不同的方向,为低价格、低功率以及体系结构灵活的嵌入式应用进行了最优化。
当然,在32位的实现上还不能用双字整数指令,在大部分嵌入式实现中浮点指令也只是通过软件仿真提供支持。
2:
寄存器
PowerPC应用级寄存器
PowerPC的应用级寄存器分为三类:
通用寄存器(general-purposeregister,GPR)、浮点寄存器(floating-pointregister[FPR]和浮点状态和控制寄存器[Floating-PointStatusandControlRegister,FPSCR])和专用寄存器(special-purposeregister,SPR)。
让我们来分别看一下这三类寄存器。
通用寄存器(GPR)
用户指令集体系结构(BookI)规定,所有实现都有32个GPR(从GPR0到GPR31)。
GPR是所有整数操作的源和目的,也是所有加载/存储操作的地址操作数的源。
GPR还提供对SPR的访问。
所有GRP都是可用的,只有一种情况例外:
在某些指令中,GPR0只是代表数值0,而不会去查找GPR0的内容。
浮点寄存器(FPR)
BookI规定,所有实现都有32个FPR(从FPR0到FPR31)。
FPR是所有浮点操作的源和目的操作数,可以存放32位和64位的有符号和无符号整数,以及单精度和双精度浮点数。
FPR还提供对FPSCR的访问。
注意,嵌入式微处理器实现时经常不提供对浮点指令集的直接硬件支持,或者只是提供一个附加浮点硬件的接口。
很多嵌入式应用程序很少或者根本不需要浮点算法,而当需要的时候,对PowerPC浮点指令执行进行软件仿真就足够了。
在嵌入式微处理器中,硬件中省去浮点(支持)而为实现带来的芯片面积和功率的减少是至关重要的。
浮点状态和控制寄存器(FPSCR)捕获浮点操作的状态和异常结果,FPSCR还具有控制位,以支持特定的异常类型和对四种舍入模式之一的选择。
对FPSCR的访问要通过FPR。
专用寄存器(SPR)
SPR给出处理器核心内部资源的状态并对其进行控制。
不需要系统服务的支持就可以由应用程序读写的SPR包括计数寄存器(CountRegister)、链接寄存器(LinkRegister)和整型异常寄存器(IntegerExceptionRegister)。
需要系统服务的支持才可以由应用程序读写的SPR包括时基(TimeBase)和其他各种可能支持的计时器。
∙指令地址寄存器(InstructionAddressRegister,IAR)
这个寄存器就是程序员们所熟知的程序计数器或者指令指针。
它是当前指令的地址。
这实际上是一个伪寄存器,用户只能通过“branchandlink”指令才能直接使用这个寄存器。
IAR主要是由调试器使用,显示将要被执行的下一条指令。
∙链接寄存器(LinkRegister,LR)
这个寄存器存放的是函数调用结束处的返回地址。
某些转移指令可以自动加载LR到转移之后的指令。
每个转移指令编码中都有一个LK位。
如果LK为1,转移指令就会将程序计数器移为LR中的地址。
而且,条件转移指令bclr转移到LR中的值。
∙定点异常寄存器(Fixed-PointExceptionRegister,XER)
这个寄存器存放整数运算操作的进位以及溢出信息。
它还存放某些整数运算操作的进位输入以及加载和存储指令(lswx和stswx)中传输的字节数。
∙计数寄存器(CountRegister,CTR)
这个寄存器中存放了一个循环计数器,会随特定转移操作而递减。
条件转移指令bcctr转移到CTR中的值。
∙条件寄存器(ConditionRegister,CR)
这个寄存器分为八个字段,每个字段4位。
很多PowerPC指令将指令的第31位编码为Rc位,有一些指令要求Rc值等于1。
当Rc等于1且进行整数操作时,CR字段0被设置来表示指令操作的结果:
相等(Equal,EQ),大于(GreaterThan,GT),小于(LessThan,LT),以及和溢出(SummaryOverflow,SO)。
当Rc等于1且进行浮点操作时,CR字段1被设置用来表示FPSCR中异常状态位的状态:
FX、FEX、VX和OX。
任何一个CR字段都可以是整数或者浮点比较指令的目标。
CR字段0还被设置用来表示条件存储指令(stwcx或者stdcx)的结果。
还有一组指令可以操纵特定的CR位、特定的CR字段或者整个CR,通常为了测试而将几个条件组合到同一个位中。
∙处理器版本寄存器(ProcessorVersionRegister,PVR)
PVR是一个32位只读寄存器,标识处理器的版本和修订级别。
处理器版本由PowerPC体系结构过程分配。
修订级别由实现定义。
需要有特权才能访问PVR,所以应用程序只能在操作系统函数的帮助下才可以确定处理器版本。
3:
中断和异常
4:
MMU
Thefollowingtypesofaddresstranslationaresupported:
1)Pageaddresstranslation—translatesthepageframeaddressfora4-Kbytepagesize
2)Blockaddresstranslation—translatestheblocknumberforblocksthatrangefrom128Kbytesto256Mbytes
3)Realaddressingmodeaddresstranslation—whenaddresstranslationisdisabled,thephysicaladdressisidenticaltotheeffectiveaddress.
5:
Arch修改注意
1:
当用到不只一种类型的PowerPC处理器时,开发人员应时刻谨记处理器处理内存的方式存在一些差异。
2:
PowerPC存储模型
PowerPC体系结构本身支持字节(8位)、半字(16位)、字(32位)和双字(64位)数据类型。
PowerPC实现还可以处理最长128字节的多字节字符串操作。
32位PowerPC实现支持4-gigabyte的有效地址空间,而64位PowerPC实现支持16-exabyte的有效地址空间。
所有存储都可以字节寻址。
对于错位数据访问来说,不同的产品家族提供了不同的校准支持,有一些是以处理异常的方式,其他的是通过硬件中的一步或者多步操作来处理访问。
3:
最高位字节在最前(Big-endian)还是最低位字节在最前(little-endian)?
PowerPC、PowerPCAS以及早期的IBMPowerPC4xx家族大部分是字节排列顺序最高位在最前的机器,这就意味着对半字、字以及双字访问来说,最重要的字节(most-significantbyte,MSB)位于最低的地址。
各实现对最低位在最前的字节排列顺序方式的支持不同。
PowerPC和PowerPCAS提供了最小限度的支持,而4xx家族为最低位字节在最前的存储提供了更为健壮的支持。
BookE是字节排列顺序无关的,因为BookE体系结构完全支持这两种访问方法。
4:
当将高速缓存处理代码移植到不同的PowerPC实现时要当心。
虽然高速缓存指令可能是跨不同实现而通用的,高速缓存的组织和大小可能会有变化。
例如,假定高速缓存大小以对其进行刷新的代码,在用于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PowerPC 学习