您的位置 首页 新品

处理器系列之PowerPC指令集

对PowerPC体系结构家族树的所有分支来说,PowerPC体系结构和应用级编程模型是通用的。PowerPC体系结构是一种精减指令集计算机(ReducedInstructionSetCompu

  对 PowerPC 体系结构宗族树的一切分支来说,PowerPC 体系结构和运用级编程模型是通用的。

  PowerPC 体系结构是一种精减指令集核算机(Reduced Instruction Set Computer,RISC)体系结构,界说了 200 多条指令。PowerPC 之所所以 RISC,原因在于大部分指令在一个单一的周期内履行,并且一般只履行一个单一的操作(比方将内存加载到寄存器,或许将寄存器数据存储到内存)。

  PowerPC 体系结构分为三个等级(或许说是“book”)。经过对体系结构以这种办法进行区分,为完成能够挑选价格/性能比平衡的复杂性等级留出了空间,一起还坚持了完成间的代码兼容性。

  Book I. 用户指令集体系结构

  界说了通用于一切 PowerPC 完成的用户指令和寄存器的底子调集。这些对错特权指令,为大多数程序所用。

  Book II. 虚拟环境体系结构

  界说了惯例运用软件要求之外的附加的用户级功用,比方高速缓存办理、原子操作和用户级计时器支撑。尽管这些操作也对错特权的,可是程序一般仍是经过操作体系调用来拜访这些函数。

  Book III. 操作环境体系结构

  界说了操作体系级需求和运用的操作。其间包含用于内存办理、反常向量处理、特权寄存器拜访、特权计时器拜访的函数。Book III 中详细说明晰对各种体系服务和功用的直接硬件支撑。

  从开端的 PowerPC 体系结构的开发开端,就依据特定的商场需求而产生分支。当时,PowerPC 体系结构宗族树有两个活泼的分支,别离是PowerPC AS体系结构和 PowerPC Book E体系结构。PowerPC AS 体系结构是 IBM 为了满意它的 eServer pSeries UNIX 和 Linux 服务器产品宗族及它的 eServer iSeries 企业服务器产品宗族的详细需求而界说的(参看 参考材料中的链接以取得更多材料)。PowerPC Book E 体系结构,也被称为 Book E,是 IBM 和 Motorola 为满意嵌入式商场的特定需求而协作推出的。PowerPC AS 所选用的原始 PowerPC 体系结构与 Book E 所选用的扩展之间的首要差异大部分集中于 Book III 区域中。

  在这些衍生的体系结构中还有一些恰当的运用级扩展,这些扩展大部分与详细运用的场合相关,可是 PowerPC AS 和 PowerPC Book E 同享在 PowerPC 体系结构的 Book I 中界说的底子指令集。尽管三种体系结构首要在操作体系等级上体现出不同,但它们在很大程度上具有运用级的兼容性。

  PowerPC 开端界说了一起对 32 位和 64 位完成的支撑,能够让 32 位的运用程序运转于 64 位体系之上。在 IBM pSeries 和 iSeries 服务器上运用的 PowerPC AS 体系现在只供给体系结构的 64 位完成,新的 64 位运用程序和留传的 32 位的运用程序能够运转于同一个体系之上。PowerPC Book E 体系结构一起有 32 位完成和 64 位完成,64 位完成也彻底兼容 32 位 PowerPC 运用程序。这两种体系结构都具有与 PowerPC Book I 指令和寄存器的彻底兼容性,一起供给了对内存办理、反常和中止、计时器支撑和调试支撑等各方面的体系级扩展。

  POWER 的天然前史

  POWER 和 PowerPC 微处理器有着绵长而传奇的前史,开端是 IBM 801,这以后是 POWER、RS64 和 PowerPC 芯片系列(这些并不是线性开展的)。每个芯片宗族都对核算国际有自己强有力的影响,从游戏操控台到主机,从数字手表到高端工作站,处处都得到了运用。欲了解悉数前史,请阅览“ 人类的 POWER:IBM 的芯片制作前史”。

  开端的 PowerPC 体系结构仍是 PowerPC AS 和 PowerPC Book E 的首要组成部分,并仍坚持了其完整性,体现出了令人信服的运用级兼容性。

  PowerPC 运用程序编程模型

  当用到不只一种类型的 PowerPC 处理器时,开发人员应时间谨记处理器处理内存的办法存在一些差异。

  PowerPC 存储模型

  PowerPC 体系结构自身支撑字节(8 位)、半字(16 位)、字(32 位) 和双字(64 位) 数据类型。

  PowerPC 完成还能够处理最长 128 字节的多字节字符串操作。32 位 PowerPC 完成支撑 4-gigabyte 的有用地址空间,而 64 位 PowerPC 完成支撑 16-exabyte 的有用地址空间。一切存储都能够字节寻址。

  关于错位数据拜访来说,不同的产品宗族供给了不同的校准支撑,有一些是以处理反常的办法,其他的是经过硬件中的一步或许多步操作来处理拜访。

  最高位字节在最前(Big-endian)仍是最低位字节在最前(little-endian)?

  PowerPC、PowerPC AS 以及前期的 IBM PowerPC 4xx 宗族大部分是字节摆放次序最高位在最前的机器,这就意味着对半字、字以及双字拜访来说,最重要的字节(most-significant byte,MSB)坐落最低的地址。各完成对最低位在最前的字节摆放次序办法的支撑不同。PowerPC 和 PowerPC AS 供给了最小限度的支撑,而 4xx 宗族为最低位字节在最前的存储供给了更为强健的支撑。Book E 是字节摆放次序无关的,由于 Book E 体系结构彻底支撑这两种拜访办法。

  PowerPC 运用级寄存器

  PowerPC 的运用级寄存器分为三类:通用寄存器(general-purpose register,GPR)、浮点寄存器(floating-point register [FPR] 和浮点状况和操控寄存器 [Floating-Point Status and Control Register,FPSCR])和专用寄存器(special-purpose register,SPR)。让我们来别离看一下这三类寄存器。

  通用寄存器(GPR)

  用户指令集体系结构(Book I)规则,一切完成都有 32 个 GPR(从GPR0 到 GPR31)。GPR 是一切整数操作的源和意图,也是一切加载/存储操作的地址操作数的源。GPR 还供给对 SPR 的拜访。一切 GRP 都是可用的,只要一种状况破例:在某些指令中,GPR0 仅仅代表数值 0,而不会去查找 GPR0 的内容。

  浮点寄存器(FPR)

  Book I 规则,一切完成都有 32 个 FPR(从 FPR0 到 FPR31)。FPR 是一切浮点操作的源和意图操作数,能够寄存 32 位和 64 位的有符号和无符号整数,以及单精度和双精度浮点数。FPR 还供给对 FPSCR 的拜访。

  留意,嵌入式微处理器完成时常常不供给对浮点指令集的直接硬件支撑,或许仅仅供给一个附加浮点硬件的接口。许多嵌入式运用程序很少或许底子不需求浮点算法,而当需求的时分,对 PowerPC 浮点指令履行进行软件仿真就足够了。在嵌入式微处理器中,硬件中省去浮点(支撑)而为完成带来的芯片面积和功率的削减是至关重要的。

  浮点状况和操控寄存器(FPSCR)捕获浮点操作的状况和反常成果,FPSCR 还具有操控位,以支撑特定的反常类型和对四种舍入形式之一的挑选。对 FPSCR 的拜访要经过 FPR。

  专用寄存器(SPR)

  SPR 给出处理器中心内部资源的状况并对其进行操控。不需求体系服务的支撑就能够由运用程序读写的 SPR 包含计数寄存器(Count Register)、链接寄存器(Link Register)和整型反常寄存器(Integer Exception Register)。需求体系服务的支撑才干够由运用程序读写的 SPR 包含时基(Time Base)和其他各种或许支撑的计时器。

  指令地址寄存器(Instruction Address Register,IAR)

  这个寄存器便是程序员们所熟知的 程序计数器或许 指令指针。它是当时指令的地址。这实际上是一个伪寄存器,用户只能经过“branch and link”指令才干直接运用这个寄存器。IAR 首要是由调试器运用,显现即将被履行的下一条指令。

  链接寄存器(Link Register,LR)

  这个寄存器寄存的是函数调用完毕处的回来地址。某些搬运指令能够主动加载 LR 到搬运之后的指令。每个搬运指令编码中都有一个 LK 位。假如 LK 为 1,搬运指令就会将程序计数器移为 LR 中的地址。并且,条件搬运指令 bclr 搬运到 LR 中的值。

  定点反常寄存器(Fixed-Point Exception Register,XER)

  这个寄存器寄存整数运算操作的进位以及溢出信息。它还寄存某些整数运算操作的进位输入以及加载和存储指令( lswx 和 stswx )中传输的字节数。

  计数寄存器(Count Register,CTR)

  这个寄存器中寄存了一个循环计数器,会随特定搬运操作而递减。条件搬运指令 bcctr 搬运到 CTR 中的值。

  条件寄存器(Condition Register,CR)

  这个寄存器分为八个字段,每个字段 4 位。许多 PowerPC 指令将指令的第 31 位编码为 Rc 位,有一些指令要求 Rc 值等于 1。当 Rc 等于 1 且进行整数操作时,CR 字段 0 被设置来表明指令操作的成果:持平(Equal, EQ),大于(Greater Than, GT),小于(Less Than, LT),以及和溢出(Summary Overflow, SO)。当 Rc 等于 1 且进行浮点操作时,CR 字段 1 被设置用来表明 FPSCR 中反常状况位的状况:FX、FEX、VX 和 OX。任何一个 CR 字段都能够是整数或许浮点比较指令的方针。CR 字段 0 还被设置用来表明条件存储指令( stwcx 或许stdcx ) 的成果。还有一组指令能够操作特定的 CR 位、特定的 CR 字段或许整个 CR,一般为了测验而将几个条件组合到同一个位中。

  处理器版别寄存器(Processor Version Register,PVR)

  PVR 是一个 32 位只读寄存器,标识处理器的版别和修订等级。处理器版别由 PowerPC 体系结构进程分配。修订等级由完成界说。需求有特权才干拜访 PVR,所以运用程序只能在操作体系函数的协助下才干够确认处理器版别。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/159857.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部