PowerPC
1.1 PowerPC 简介
PowerPC,但原意不是「Power」,而是 Performance Optimized With Enhanced RISC,PC指的是 Performance Computing。
Power PC 处理器架构的亮点是开放,它打开了指令集,允许任何制造商设计 Power PC 兼容处理器,Power PC 可以从网络上下载一些软件的源代码,Power PC 的核心也很小,许多其他辅助电路,如缓存和协处理器,可以放置在同一芯片上,大大提高了芯片的灵活性。
目前,主流 PowerPC 处理器制造商有 IBM、Freescale (原摩托罗拉半导体部,现在和荷兰在一起NXP合并)、AMCC、LSI(已被Avago收购)等。其中以 IBM 和 Freescale 的 PowerPC 最受欢迎的处理器。
1.2 Power ISA
Power ISA 是 Power 结构对应的指令集最初是解散的 power.org 组织开发,现由 组织开发IBM 领导的 OpenPOWER 基金会继续发展。Power ISA 继承和发展 PowerPC ISA,其由核心 PowerPC ISA 与可选嵌入式应用程序指令合并。
这两部分在2006年由 组成power.org 创始者IBM 与飞思卡尔半导体领导合并。Power ISA 分为几个不同的子集,每个指令都定义为子集的一部分。不同类型的处理器只实现一组指令子集,如服务器处理器,包括子集 Base、Server、Floating-Point、64-Bit 等,所有处理器都实现了 Base 子集 。
1.3 Freescale PowerPC
IBM PowerPC 广泛应用于服务器等高性能应用场景, Freescale PowerPC 最重要的应用是嵌入式场景,如汽车电子。Freescale 公司提供了大量含集成外设的 PowerPC 处理器在网络设备市场取得了可观的成功。Freescale 公司已调整其 PowerPC 产品策略将其分为网络设备和汽车电子三个主要市场(MPC5xx系列)和工业控制。
Freescale PowerPC 基于 EIS Architecture,EIS 是the Freescale Embedded Implementation Standards 的缩写。EIS Architecture 对 Power 架构更像是一个分支。
指令集是架构的重要组成部分,Freescale PowerPC 指令集和 Power ISA 基本相同,但硬件组成与应用场景不同,导致依赖硬件实现的指令子集不同。
EIS Architecture 指令集是 Power ISA 子集。下表是两者的对应关系:
PowerISA 有v2.3-v2.7、v3.0、v3.17个版本,目前最新的 PowerISA 发布于2020年v3.1版本。
1.4 Freescale主要产品系列
Freescale PowerPC 通信领域的成功很可能归功于 PowerQUICC 处理器,这也是 IBM 的 PowerPC 和 Freescale 的 PowerPC 最重要的区别。QUICC(Quad Integrated Communications Controller) 和 PowerPC 内核结合 PowerPC 处理器称为 PowerQUICC 处理器。
自1995以后 PowerQUICC从 一路升级PowerQUICC I 到 PowerQUICC II ,再到 PowerQUICC III 和 PowerQUICC II pro 。目前,Freescale 将 CPM 升级为 QE(QUICC Engine)。
伴随 PowerQUICC 的升级,Freescale PowerPC 内核也在升级。
603内核系列:MPC850、MPC860、MPC875、MPC885 等,目前是最低端的 Freescale PowerPC 处理器。这种 PowerPC 处理器不包括 SDRAM用户必须使用 界面MPC860 提供的 UPM(USER Programmable Machines) 配置成 SDRAM 接口。603内核配合 PowerQUICC I。
603E内核系列:MPC8250、MPC8260、MPC8272等。从 PowerPC从内核的角度来看,从603到603E升级不大,主要是 MMU 上,包括 SDRAM 控制器。603E内核配合 PowerQUICC II。
E300内核系列:MPC8349、MPC8347、MPC8360等。E300系列与603E系列结构基本相同,处理器内核修改不多。QE最先在MPC除了支持 DDR SDRAM 接口。E300内核配合 PowerQUICC II pro。
E500内核系列包括 MPC8540、MPC8560、MPC8548 等。E500内核共有V1 、V2两个版本。V1版本和V2版最大的区别在于MMU。基于E500内核的 PowerPC 处理器是 Freescale 高端处理器的发展方向。E500 内核和603E只有指令系统是兼容的,其他核心组件是不同的。E500 内核支持 DDR SDRAM,RapidIO 与千兆以太网接口。E500 内核配合 PowerQUICC III。
E600内核系列又称:G4,包括 MPC7410,MPC7447,MPC7448,MPC8641 等。与 IBM 的Power 700 系列最大的区别在于G4系列支持 AltiVec结构。这种处理器也是 Apple 用于 MAC 机芯片。
E700系列: 支持64位PowerPC 结构,开发中(最新消息不明,怀疑被放弃)。
飞思卡尔 QorIQ 通信平台是飞思卡尔 PowerQUICC 通信处理器的下一代进化产品包括一个或多个核,共有5个不同的产品平台。根据功能和性能,分为 P1,P2,P3,P4 和P5,同老的 PowerPC 产品保持软件兼容,如 PowerQUICC 平台。
1.5 参考手册和学习资料
EIS Architecture 参考手册主要是 《EREF: A Programmer’s Reference Manual for Freescale Power Architecture Processors》,还有一些指令子集的说明书、飞思卡尔产品的处理器核结构手册等
Power Architecture参考手册有《PowerISA_V2.06B》、《PowerISA_V2.07》等。
EIS Architecture指令集分类
2.1 根据硬件和通用性进行分类
根据硬件和通用性EIS指令集分为 Base、SPE、AltiVec、VLE、Embedded 子集。根据硬件对指令进行分类,可根据特定需要定制嵌入式系统,既能节约资金,又能提高系统的可靠性和性能。
每个指令子集实际上都是基于特定的硬件。例如,许多嵌入式系统没有 mmu 硬件,处理器不支持类似 tlbilx、tlbwe、tlbivax 这种指令,也就是说,如果特定的嵌入式系统中没有相应的硬件,则该系统无法运行该指令子集。同时,不同处理器上的指令子集包含不同的指令数,这与处理器的实现有关。
2.2 根据执行权限分类
可以根据执行权限进行EIS指令集分为用户级指令子集和特权级指令子集。
用户级指令集包括:整数操作指令、存储/加载指令、浮点操作指令、跳转指令、处理器状态指令、Cache管理指令等。
特权级指令集包括:TLB操作指令、操作特权寄存器指令和中断处理指令。
飞思卡尔EIS Architecture v2.1详述
EIS2.涉及架构的指令子集包括:
-
Base:包括整数指令、存储/加载指令、跳转指令等
-
SPE:浮点指令集
-
AltiVec:矢量运算集
-
VLE:变长指令集
-
Embedded:嵌入式系统相关指令
基于EIS2.实现1架构的处理器核有 e500 core family(包含e500v1,e500v2, e500mc, e5500, e6500)、e200 core family。其对应的 Power ISA 是2.06B,同时还包含一些EIS的特有指令。
所有飞思卡尔处理器都支持的 Power ISA 2.06 中的指令子集有:
-
Base
-
Embedded
-
Cache Specification
要注意的是有一些 Power ISA 2.06 的指令在所有飞思卡尔处理器中都是不支持的,不支持的指令子集有:
-
Server (and any dependent categories)
-
Decimal Floating-Point
-
Embedded.Cache.Debug
-
Embedded.Cache.Initialization
-
Embedded.Hypervisor.LRAT
-
Embedded.Multi-Threading
-
Embedded.Page Table
-
Embedded.TLB Write Conditional
-
Legacy Integer Multiply-Accumulate
-
Legacy Move Assist
-
Load/Store Quadword
-
Move Assist
-
Processor Compatibility
-
Stream
-
Strong Access Order
-
Trace
-
Vector-Scalar Extension
-
Vector.Little Endian
SkyEye 支持多种处理器模型
SkyEye 目前支持主流的嵌入式硬件平台,可以运行主流的操作系统,此外还能适配国内自主研发的操作系统天脉,上文中介绍的 PowerPC 和飞思卡尔指令集架构可以在 SkyEye 中进行全数字仿真。通过利用基于LLVM的动态二进制翻译技术,使虚拟处理器在典型的桌面计算机上运行速度可以达到2000MIPS以上。
SkyEye 目前支持的处理器模型列表: