IBM POWER微处理器

IBM POWER是RISC处理器的一种，由IBM设计，全称为“Performance Optimization With Enhanced RISC”，《IBM Connect电子报》2007年8月号译为“增强RISC性能优化”。POWER系列微处理器在不少IBM服务器、超级电脑、小型电脑及工作站中，广泛作为主CPU使用。而PowerPC架构也是源自POWER架构，并应用在苹果电脑的麦金塔电脑及部分IBM的工作站，以及各式各样的嵌入式系统上。此外，IBM透过 Power.org网站，向其他开发者及制造商推广POWER架构及其他衍生产品。

POWER同样也是一系列实施了同样架构指令集的微处理器的名字。POWER系列微处理器用于IBM的服务器、微电脑、工作站、超级电脑的主处理器。POWER3以及随后的POWER系列微处理器均全部实施了64-bit PowerPC架构。从POWER3开始及其之后的POWER处器都不再具备与支援更早之前的旧POWER的指令集架构，包括PowerPC指令集架构或任何POWER2所追加延伸的指令，如lfq或stfq等，都不再具备与支援。

## 历史

### IBM 801计划

公元1974年，IBM开始了一个计划，目标是创造一个至少可处理每秒300路通话的大型电话交换网络。预想中每路通话需要20000个指令来处理，以达到即时回应，因此需要一个速度为12 MIPS的处理器。这在当时是很有野心的需求，但他们认知到，并不需要如同时期处理器那样的复杂设计，因为这部机器只需要处理I/O，分歧、暂存器加法、在暂存器和内存间搬移资料，不需要用来处理大量数学运算的特殊指令。

复杂运算的每个步骤，都可以简单的指令来取代，而所有的简单指令，都在同样的时间内完成。这个精简设计的理念，后来成为人们所熟知的RISC。

公元1975年，这个电话交换计划在还没有原型之前，就被中止了。然而，由计划第一年中模拟所得到的估计来看，为这个计划所设计的处理器将会是个很有潜力的通用型处理器，因此后续工作在汤玛斯·华生研究中心的801号楼继续进行，也就是801计划。

### 1982 Research Project“Cheetah”

为了判断RISC机器是否能同时处理多个指令，或"801"的设计需要哪些修改，来制造拥有多个执行单元的"801"，在华生研究中心的两年中，探索了"801"设计的超纯量极限。例如使用多个运算单元实作"801"的设计来增进效能，这与先前在IBM System/360 Model 91和CDC 6600上的作法类似。

"Cheetah"拥有个别的分歧、整数及小数点执行单元。在"801"上作了许多改变以容许多重执行单元的设计。

"Cheetah"原本计划使用Bipolar ECL制程，但在1984年CMOS已经可提供积体电路整合，同时增进晶体管逻辑效能。

### The America Project

1985年，华生研究中心开始了第二世代RISC架构的研究，成果是"AMERICA架构"。1986年，IBM以这个架构为基础，在奥斯汀开始开发RS/6000系列。

### POWER and RS/6000

1990年2月，第一部采用POWER架构的IBM电脑被称作"RISC System/6000"或RS/6000。RS/6000分成工作站和服务器两个等级，分别称作POWERstation和POWERserver。RS/6000的中央处理器有两种组态，分别称作RIOS-1和RIOS.9（更常被称作"POWER" CPU）。RIOS-1有11个芯片 - 一个指令快取芯片、整数芯片、浮点数芯片、四个资料快取芯片、储存控制芯片、两个I/O芯片、和一个时钟芯片。较低成本的RIOS.9有8个芯片 - 一个指令快取芯片、整数芯片、浮点数芯片、两个资料快取芯片、储存控制芯片、一个I/O芯片、和一个时钟芯片。

单芯片的RIOS, RSC（RISC Single Chip的缩写），是为了较低阶的RS/6000开发出来的。第一部使用RSC的机器在1992年推出。

### Amazon

1990年亚马逊计划启动，目标是创造一个可以使用AIX和OS/400的共通架构。IBM的AS/400工程团队当时正在设计一个RISC指令集，用来取代既存AS/400电脑的CISC指令集。原始的设计是从既有的"IMPI"指令集衍生而来，扩展为六十四位元，增加一些RISC指令以加速那些原本在AS/400上执行，较需求计算能力的商业应用。IBM曾想让他们使用PowerPC，但他们抗命不从，争辩说现有的32/64位元PowerPC指令集无法执行OS/400，也需要扩充以执行AS/400上的商业应用。最后，开发出"Amazon"这个PowerPC的指令集延伸。

同时，RS/6000的开发者正大幅扩充产品线，延伸到低阶工作站，大型对称式处理（SMP）系统，和丛集式的RS/6000-SP2系统。AIM联盟开发出来的PowerPC很适合低阶工作站和小型服务器。但大型主机和大型丛集式系统需要的效能和可靠性（RAS）特性，比专为Apple PowerMac设计的处理器更多。多处理器功能需要同时符合PowerMac注重的成本需求、RS/6000系统的效能和可靠性需求、以及AS/400到PowerPC的转换需求。

亚马逊再度扩充支援这些特性，以设计出可同时使用在RS/6000和AS/400的处理器。

第一个开发这种处理器的计划是“参宿五”（Bellatrix，猎户座的其中一颗星）。参宿五计划在广泛使用时脉电路、和EDA工具来支援设计工作上相当具有野心，最终被中止。为满足技术工作站、超级电脑、和工程、科学市场，IBM奥斯汀（RS/6000的诞生地）开始同时开发能及时上市的单芯片版本Power2 (P2SC)，和拥有POWER2延伸、两个复杂MAF浮点单元的精密64位元PowerPC处理器（POWER3/630）。为满足RS/6000的商业应用和AS/400系统，IBM Rochester（AS/400的诞生地）开始开发第一个有AS/400延伸的高阶64位元PowerPC处理器。IBM Endicott也开始开发拥有AS/400延伸的低阶PowerPC处理器。

AS/400所使用的高阶多芯片处理器A25/30 "Muskie"，和单芯片处理器A10 "Cobra"在1995年亮相。

1997年，在IBM Endicott研究中心开发的"Apache"处理器发表。使用在RS/6000上时它被称作RS64。后续型号也使用在AS/400上。

### POWER2

在AIM联盟1991年成立的两年之前，IBM已在德州奥斯汀开始Power1后继者POWER2的开发。尽管因AIM联盟而分散了资源，POWER2从开始到出货还是花了五年。POWER2在1993年11月公布时，因加入第二个整数、浮点运算单元和其他效能改进，在效能处于领先地位。

指令集也加入了新指令：

- 四字集储存指令，这个载入指令将两个相邻的倍精度数值载入两个相邻的浮点暂存器。
- 硬件开方根指令
- 浮点-整数转换指令

为支援RS/6000和RS/6000 SP2产品线，在AIM联盟外，IBM以自家的设计团队，和当时最先进的CMOS-6s制程，实作了单芯片的POWER2, P2SC (POWER2 Super Chip)。P2SC在一个巨大的芯片上，结合了所有个别的指令快取，整数、浮点、储存控制、和资料快取芯片。在推出的当时，P2SC是业界最大、晶体管数最多的处理器。它也领先在处理器上内建内存控制器。尽管芯片尺寸、复杂度和先进CMOS制程的挑战艰钜，它第一次tape-out即能上市，而且在公布的当时具有领先的浮点运算效能。P2SC是1997年打败棋王Gary Kasparov的IBM深蓝超级电脑所采用的处理器。因具有两个精密的MAF浮点运算单元和宽且低延迟的内存界面，P2SC主要瞄准工程和科学应用。P2SC后来被拥有64位元、对称式处理能力、第二阶快取，且能完整移植到PowerPC的Power3/630所取代。

### PowerPC

1991年，IBM了解到如果将芯片卖给其他系统制造商，也许能将POWER变成一个大量生产的架构。他们和苹果公司紧密合作，目标是开发一整个家族以POWER为基础的单芯片微处理器。当时苹果公司是摩托罗拉在桌上型微处理器等级的最大客户，因和摩托罗拉长久以来的关系，他们大量生产微处理器的经验，和保有第二来源的理由，不久苹果公司就征询摩托罗拉加入讨论。这个三方合作以德州奥斯汀为基地，后来成为知名的AIM联盟，也就是Apple, IBM，和Motorola。

两年的开发之后，在1993年，从POWER架构修改而来的PowerPC架构诞生了。PowerPC架构加入了单精度浮点运算指令，和通用暂存器间的乘法和除法指令，移除了一些POWER的特性，像是使用MQ暂存器的乘法和除法指令。它也在架构中加入了64位元的延伸和SMP的支援。

第一个PowerPC芯片是PowerPC 601。更多资讯请参考PowerPC页面。

### POWER3

IBM在1998年引介了POWER3。它实作了64位元POWER指令集，包括所有（在当时是）选择性的指令集，也拥有两个浮点运算单元，三个整数运算单元，和两个存储单元。后续所有的POWER处理器都实作了完整的64位元PowerPC和POWER指令，因此IBM不再有只实作POWER或POWER2的处理器。

### POWER4

2001年IBM引介了第一个GIGA系列的处理器，POWER4。它是个完全64位元的处理器，实作了完整的64位元指令集，同时也拥有AS/400延伸，同时使用在RS/6000和AS/400系统上，取代POWER3和RS64处理器。当时有个叫作PowerPC 2.00的指令集发布。在这个指令集上加入了一些延伸，像是带一个参数的mfcr指令。

### POWER5

<image>

2004年IBM介绍了POWER5处理器。它是个拥有两个核心的多核心处理器，支援两个执行绪的并行多执行绪（SMT），因此它实作了四个逻辑处理器。多个POWER5处理器透过ViVA "虚拟向量架构"可结合在一起当成一个向量处理器。POWER5在指令集架构中加入了更多指令。

POWER5+ 在ISA 2.02版时又加入了更多指令。

### POWER6

POWER6在2007年5月21日公开。它为POWER系列加入了VMX。它也引入了从POWER3到POWER4的转移以来最大的改变，第二代的ViVA, ViVA-2。它是双核心设计，以65奈米制程达到了4.7 GHz。它拥有非常先进的芯片间通讯技术。它的功耗几乎和前一代的POWER5相等，而能提供两倍的效能。

### POWER7

POWER7是Peta系列的第一个处理器。在2010年发布，已被美国国防先进研究计划局选为他们Peta-FLOPS等级超级电脑的候选之一。200x年初期，IBM送交了他们的计划书，从DARPA得到五千三百万美元以继续参与这个挑战。2006年IBM收到两亿四千四百万用来为DARPA建造一台Peta-FLOPS电脑。

IBM在2008年完工的使用PowerXCell 8i 3.2 Ghz芯片的Roadrunner超级计算机已经达到了Peta-FLOPS级的计算能力。

### POWER9

相较于前一代的POWER8处理器，POWER9提升4倍的带宽，相较于Intel x86处理器，带来9.5倍的I/O带宽，内存支援容量为2.6倍，高效能核心数量提升2倍，内存带宽则是1.8倍。首款采用POWER9的服务器Power Systems AC922也同时亮相。

### POWER10

POWER10采用7纳米制程，支援NVLink 3。

## 衍生的处理器

第一个PowerPC处理器PowerPC 601，基本上是一个部分基本指令用微码模拟的RSC处理器，采用了Motorola 88000为基础的总线设计。这允许IBM在许多工作站机器上使用这个处理器，只需要更换主板。自此 PowerPC和POWER架构有些许分岐，但大部分在指令层级仍然保持相容。

使用在太空应用的抗辐射设计RAD6000处理器是一个POWER/RSC的衍生架构。

IBM RS64家族处理器根基于PowerPC（因此也包括POWER），使用在RS/6000和AS/400产品线。它对商用工作最佳化，没有POWER产品线应有的浮点运算。它被POWER4取代。

IBM Gekko处理器是修改过的PowerPC 750CXe，使用在任天堂Gamecube。任天堂的Wii使用更新的Gekko，Broadway。

Cell处理器也是从POWER架构衍生。它具有一个复杂的多线程超纯量核心，和称作SPE (Synergistic Processing Elements)的八个独立向量处理器核心。这个处理器支撑了Sony的Playstation 3、Toshiba的数字电视系统，和IBM的高效能电脑。

微软的游戏主机Xbox 360使用一个循序执行的三核Xenon处理器，它基于PowerPC，拥有修改过的向量单元，时脉3.2 GHz。

## 外部链接

- IBM Power Architecture - Official IBM website
- Linux on Power
- Linux on Power WIKI
- IBM Power Architecture weekly magazine
- Power.org
- POWER to the people - an IBM history of POWER and PowerPC
- When Is PowerPC Not PowerPC? - History of the POWER Architecture by Frank Soltis
- Migrating Source Programs
- Meet the experts: John McCalpin - interesting discussion on power5 and beyond
- 27 years of IBM RISC