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 产品策略,将其划分成3个主要市场:网络设备、汽车电子(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.1七个版本,目前最新的 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最先在MPC8360上实现,此外支持 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.1架构涉及到的指令子集有:
-
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 目前支持的处理器模型列表: