PowerPC

PowerPC（パワーピーシー、英: Performance optimization with enhanced RISC - Performance Computing）は1991年にApple Computer、IBM、モトローラの提携（AIM連合）によって開発された、RISCタイプのマイクロプロセッサーである。 PowerPCはIBMのPOWERアーキテクチャーをベースに開発され、AppleのMacintoshやIBMのRS/6000などで採用された。ゲーム機をはじめとした組み込みシステム、スーパーコンピューターで広く使われている。POWER3以降は、POWERファミリー自体がPowerPCアーキテクチャーに準拠している。 アーキテクチャーとして、動作のベースとなる命令セットや基本的なレジスタセット、メモリーアドレッシング、キャッシュモデルなどを規定しているが、それらをどのように実装すべきかまでは規定していない。 そのため実際に製造されるモデルは高速化のためにアーキテクチャレベルでは規定されていない機構（L2、L3キャッシュや関連レジスタなど）を備えているのが普通である。 性能の割に低消費電力でダイサイズも小さいという特性から、ゲーム機やハイエンドのルーターなどのネットワーク機器、レーザープリンターなどの分野で広く使われており、高性能な組み込みシステム向けプロセッサーとしてよく使われる。FPGA用のIPコアとして提供されているものもある。もともとはAIMプラットフォームのCPUという意味で開発されたものだが、CPU以外は開発されなかったため、今日まで残る同プロジェクト唯一の成果物でもある。 デスクトップコンピューター用としては、AppleのPower MacintoshおよびPower Macに採用されていたほか、IBMの一部のワークステーション、サーバーやBlueGene/Lをはじめとするスーパーコンピューターにも採用されている。その他、2005年 - 2006年に発売された主要据え置き型ゲーム機三機種（Wii、PLAYSTATION 3、Xbox 360）は、いずれもPowerPCアーキテクチャーを採用している。 現在、PowerPCプロセッサーはモトローラから半導体部門を分離して設立されたフリースケール・セミコンダクター（現在はNXP）とIBMが開発・製造を行っており、PowerPC派生品種のCellプロセッサーはIBMと東芝セミコンダクターが設計・製造している。また、4xxのシリーズ（組込み系CPUコア）はAMCCに売却されている。しかし実際は4xxシリーズでもハイエンドクラスの製造はIBMしか行えないため、開発の中心はIBMのままである。 PowerPCはRISCの思想で作られており、スーパースカラー方式で命令を実行する。 ベースにしたPOWERの特徴に、さらにいくつかの変更を加えた。 POWERアーキテクチャーのうち、複雑なものを省いた命令セット。RISCプロセッサーとしては、比較的複雑な命令も含む。 バイエンディアン（ビッグエンディアンおよびリトルエンディアンのサポート。G5を除く） 単精度浮動小数点演算に倍精度浮動小数点演算の追加 32ビット命令と完全下位互換の64ビット命令セット 32個のGPR（汎用レジスタ）と32個のFPR（浮動小数点レジスタ） サブルーチンの呼出規約は一般的なRISCチップとは異なりスタック渡しである。実際は10個の引数までレジスタ渡しが行われるが、データのビット数によっては使用可能なレジスタ数が減少したり、非揮発性レジスタ(r13 - r31)の退避などを行う必要がある。 1本のカウントレジスタ。専用の分岐命令などと組み合わせてループのカウントなどに利用する。 複雑な命令など一部を除き、命令は基本的にハードワイヤード (Hard-Wired) ロジックで実装（一部マイクロコードで実装） G4（第4世代）シリーズでは128ビット単位でベクトル演算を行う『AltiVec（IBMはVMX、AppleではVelocity Engineと表現している）』を採用。付随する専用のレジスタは32本。 8本の4ビット条件レジスタ(いわゆるステータスレジスタやフラグレジスタと呼ばれるもの)。詳細はステータスレジスタの項を参照。 原則として、現在のスタックのメモリーアドレスを指すベースポインターを持たない。代りに汎用レジスタの一つを用いる。この規則はABIに依存するが、大抵の場合そのレジスタは1番の汎用レジスタである。また、0番の汎用レジスタは、命令によってはゼロレジスタの代用として用いられることがある。 静的な分岐予測を命令単位で設定できる。 条件分岐命令は8×32×17=4352通り（分岐予測を含む）の条件を組み合わせることが可能である。 1998年のPOWER3以降は、POWERも64ビットPowerPC仕様に準拠したアーキテクチャーを採用している。 PowerPC の歴史は70年代後半のジョン・コックのRISCアイデアを使用した米 IBMの801プロトタイプ・チップで始まった。801を基にしたコアは数々のIBM製組み込み用製品に採用され、最終的には16本のレジスタを持つROMPプロセッサー、IBM RTにまで発展した。しかし、RTプロセッサーの性能は十分とは言えなかったため、IBMは「アメリカ・プロジェクト」と呼ばれる、市場で最も高速なプロセッサーを開発する計画を始動させた。その結果開発されたのがPOWERアーキテクチャーであり、1990年初頭にRISC System/6000と共に発表された。 本来のPOWERマイクロプロセッサーは、スーパースケーラーを実現した最初のプロセッサーの一つであり、高性能でマルチプロセッサーに対応していた。IBMがRS/6000の製品群をローエンド向けからハイエンド向け製品にまで拡大するにあたって、POWERプロセッサーからいくつかの機構を取り除き、シングルチップ・プロセッサーにする必要が生じたため、IBMはRISC Single Chip（RSC）の開発に着手した。RSCは開発の初期段階から、工業向けに幅広く使える可能性を秘めた高機能なプロセッサーになるであろうと考えられていた。 1991年、IBMはAppleに接近し、共同でPOWERアーキテクチャーをベースとしたシングルチップ・マイクロプロセッサーの開発を行なう事で合意した。その直後、当時据え置き型コンピュータ用プロセッサーに関してモトローラ社最大の顧客であったApple Computerは、長年の協力関係を考慮して、モトローラにマイクロプロセッサー開発に加わるよう打診した。モトローラには、マイクロプロセッサー開発における豊富な経験の活用と、セカンドソースとしての役割が期待された。こうしてIBM、Apple、モトローラはAIM連合と呼ばれる協力関係を組織するに至った。 1991年、PowerPCはAIM連合における最大要素の一つとなった。当時のパーソナルコンピューター市場ではマイクロソフトがWindowsを開発中であり、インテル製プロセッサーはその支配を強めつつあった。また、CISCアーキテクチャーのインテル80386及び80486が大半のコンピューターに採用されており、後継のPentiumプロセッサーの開発も順調に進んでいた。PowerPCプロセッサーは冒険的な要素を含んでいたものの、拡大するマイクロソフトとインテルによる支配に対抗するため、開発が進められた。 モトローラにとって、POWER系プロセッサーの開発に加わる事は、またとないチャンスであった。この時点でモトローラは既に自社製のRISCプロセッサーMC88000を市場に投入していた。しかし、このプロセッサーは貧弱な設計手法と製造上の問題により市場での評価は低く、販売は低迷していた。このためモトローラは、MIPSやSPARCといった競合製品に市場で並ぶ機会を失いつつあった。しかし、新型POWER系プロセッサーの開発に参加すれば、キャッシュ部分を設計するだけで、広くテストされた高性能RISCプロセッサーを販売する事が可能になるため、RISCプロセッサー市場での巻き返しが期待された。また、68000系以来の重要な顧客であるAppleとの関係の改善や、IBMに簡略化バージョンを供給できる可能性もあった。 その低評価の一方で、MC88000プロセッサーは既に生産されており、Appleは既にこのプロセッサーを利用したプロトタイプのコンピューターを動作させていた。このため、開発中のPOWERアーキテクチャー・シングルチップのバスにハードウェアの段階でMC88000のバスとの互換性を持たせれば、ロジックボードを再設計する事なく、より迅速に新型プロセッサーを市場に投入する事が可能であった。最終的に、新型プロセッサーPowerPCはこういった要求を含んだ設計となった。 PowerPCが市場に投入される直前、大きな動きがあった。Apple Computerに加えてIBMとモトローラの両社は、PowerPCプロセッサーに対応したシステムを提案した。マイクロソフトはモトローラのPowerPCサーバー向けのWindows NT 3.51を発表、サン・マイクロシステムズもSolarisのPowerPC版を発表した。またIBMは、自社のAIXを移植し、OS/2の移植も計画していた。1994年には組込み用途向けに PowerPC 403 を発表、後継のPowerPC 401、440などは機器制御用途やネットワーク機器を中心に広く普及した。また同年にPowerPCの64ビット版であるPowerPC 620が完成、同チップは出荷されず普及はしなかったが、その設計はPOWER3以降のPOWERファミリーの礎となった。 1994年にはPowerPCをベースとしたコンピューターの仕様であるPReP、1995年には後継のCHRPが発表された。また1994年にはPowerPC搭載のMacintosh (Power Macintosh) が登場した。 しかしこれらの動きはわずかな期間で終わり、結局PowerPCという新型アーキテクチャーに期待されていた理想が実現する事はなかった。Windows、OS/2、そしてサンの顧客はPowerPC用ソフトウェアの不足を理由に、PowerPCプロセッサーはほとんど顧みなかった。これらのOSの後継が市場に投入される事はなく、PowerPCから完全に離れていった。またBeOSも最初のバージョンはPowerPC向けに開発されたが、その後x86系プロセッサーに移行していった。最終的にはPowerPC向けの商用のデスクトップOSは、AppleのClassic Mac OSとMac OS Xのほかは、AmigaOSなどのみが残った。 1990年代中頃、PowerPCプロセッサーはベンチマークにおいて、最速のx86系プロセッサーと同等または凌駕する性能を発揮した。90年代末に登場したG4ではAltiVecを搭載し、当時の他のCPUに比較して大幅に高速なSIMD処理を実現した。PowerPCは高性能でありながら低コスト・低消費電力といった特徴をもち、AppleはPowerPC603およびG3・G4を採用することによって、同時期のPC/AT互換ノートパソコンの性能を凌駕するPowerBookや、ファンレスのiMac、Power Mac G4 Cubeといった独創的な製品を作ることが可能になった。しかしPowerPCの性能あたりの消費電力の低さは、組み込み向けとしては高く評価されたものの、デスクトップで勢力を拡大するための決め手にはならなかった。 2002年にはPOWER4をベースとした64ビットのPowerPC 970 (G5)が登場、高性能化に伴いG4から大幅に消費電力が増大したものの、同時期のPentium 4と比較するとほぼ同等の性能でありながら低消費電力であり、IBM・Appleのサーバー製品のほか、Power Mac G5・iMac G5で採用された。 2004年はPowerPC系CPUにとって激動の年になった。まず、モトローラが、半導体部門をスピンオフし、『フリースケール・セミコンダクター』を設立。次に、2005年度のE3において発表された各社の次世代(第7世代)ゲーム機であるレボリューション（コードネーム、現在のWii）、PLAYSTATION 3、Xbox 360のCPUがすべてPowerPC系アーキテクチャーのものになった。一方で、これまでPowerPCを採用していたAppleのMacintoshが、2006年からインテルのCPUに全面的に切り替えていく事が発表された。2006年中にAppleのハードウェアは完全にインテルアーキテクチャーへの切り替えが完了し、Apple社内でPowerPC向けチップセットの開発を行っていた設計チームはApple A4の開発に転じた。2009年にはセキュリティアップデートを除いてPowerPC向けソフトウェアの開発も終了した。 ゲーム機においてはWiiの後継機種である2012年発売のWii Uが引き続きPowerPC系のアーキテクチャーを採用したものの、2013年発売のPlayStation 4、XBOX Oneの両陣営はx86系のプロセッサーを採用し、Wii Uの実質的な後継機種である2017年発売のNintendo SwitchはArm系のプロセッサーを採用したため2019年現在は使われていない。 現在ではサーバーやスーパーコンピューターに採用されている。プリンター・ルータ・ネットワークスイッチ等の組み込み用途にも積極的に採用されていたが、より省電力かつ低コストなARM系プロセッサーの台頭により2019年現在は新規採用されるケースは減っている。 PowerPCファミリーを立ち上げる為に、IBMの既存のPOWERプロセッサーをベースに設計された。その為、正式にはPowerPCのジェネレーション・ナンバーを持っていない。1994年代より流通。 PowerPC 601 - 50,66,80,90MHz、POWER命令も実装 PowerPC 601+ - 外部バスの3倍クロックで動作、低電源電圧化 (+2.5V) 100, 110, 120MHz PowerPC 602（英語版） - 低価格版　3DOの後継機『M2』に採用される予定だった。『M2』をベースとしたコナミの業務用ゲーム基板に使用された。 アルミ配線の603、604がG2第1世代。第2世代については、IBMによる銅配線の603eと604e全てが該当するとする文献と、同シリーズで250MHz以上のものとする文献が散見され、はっきりしない。どちらも完全バス互換であったため、区別が重要でなかったこともその理由である。PowerPC 603は大変消費電力が少なく、デスクトップと同様の仕様のチップがノートパソコンに搭載されたほか、組み込み向けに広く使われた。PowerPC 604は4つの演算ユニットを並列動作させることができ、パーソナルコンピューター向けとしては当時最高レベルの演算性能を持っていた。浮動小数点演算は特に強力であった。 PowerPC 603 - 低消費電力 PowerPC 603e - 低消費電力、高速版 PowerPC 603ev - PowerPC 603eの高速版 PowerPC 604 - SMP対応、インラインL2キャッシュ、高速な浮動小数点演算 PowerPC 604e - 604の低消費電力、小型高速版 PowerPC 604ev - 604eの低消費電力、小型高速版 PowerPC 615（英語版） - x86とPowerPC命令の両立を目指したプロセッサー。Pentium互換ソケットに装着可能。x86プロセッサーとしては当時のPentiumなどに対抗できる性能を有すと見込まれたが、命令の切り替えの際の性能の低下が激しい、ダイサイズが330mm2とPowerPC系にしては大きい、MinixとOS/2が移植されていたもののマイクロソフトなどが(WindowsのPowerPCモードを)サポートしない公算が大きかったなどの理由により開発中止になった。 PowerPC 620 - 64ビット版。その設計はPOWER3に引き継がれる Appleが出資していたExponential Technologyによるバイポーラトランジスター型の論理回路を使う消費電力の大きなハイパフォーマンスなCPUとして発表された、1996年当時の他のCPUに比べ大幅な高速クロック動作を実現するとしていたPowerPCアーキテクチャーの予定製品であった。試作品が搭載された次期Power Macintoshプロトタイプが展示会でAppleによって公開された。しかし、1997年5月のWWDC時、安価なPowerPC 750やPowerPC 604evとの性能差がないとして、Power Macintoshへの採用が中止された為にX704は量産化されずに終った。 G3（第3世代）以降は、PowerPC採用の代表的製品であるPower MacintoshシリーズでAppleがジェネレーション・ナンバーを前面に押し出したため、PowerPCの世代区分が一般に明確となった。性能比での消費電力が低いことが特徴で、現在では主に組み込み用途に用いられる。なお、パイプラインは浅く、603と変わらない4段にすぎない。 PowerPC 75x,74x - PowerPC G3シリーズと呼ばれる。603eの発展系。 PowerPC 75xにはバックサイドキャッシュを採用 整数演算ユニットを2基に PowerPC 750L -750の銅配線版 PowerPC 750CX/CXe -256KB L2キャッシュを内蔵 PowerPC 750FX/FL -130nm SOIで製造、L2キャッシュ512KB PowerPC 750GX -90nm SOIで製造、〜1.1GHz、200MHz FSB対応、L2キャッシュ1MB PowerPC 750CL -L2キャッシュ256KB、400MHz〜1GHz、PowerPC 750GXの約半分まで省電力化されている Gekko - ニンテンドーゲームキューブ用に開発されたもの。PowerPC 750CXeをベースに、浮動小数点演算が強化され、SIMD命令が追加されている Broadway - 90nm SOIで製造、任天堂のWii用に開発されたもの。Gekko互換であり、PowerPC 750CLがベースと思われるが詳細は非公開。 Espresso - 45nm SOIで製造、任天堂のWii U用に開発されたもの。専用GPUとのMCMに対応したマルチコアCPUで、Broadwayがベースと思われるが詳細は非公開。 G3をベースに浮動小数点演算機能を強化、SIMDと対称型マルチプロセッサー機能を追加したもの。CPUバスは従来の60xバスに加え、より高度な制御機能をもったMPXバスにも対応している。MPC 7450 でマイクロアーキテクチャーを刷新したため、MPC 745x・MPC 744x は、G4+とも呼ばれる。 MPC 74xx - G4シリーズと呼ばれる。モトローラおよびフリースケール・セミコンダクターが開発。 AltiVec (Velocity Engine) 搭載 CPUバスにMPXバス (MaxBus) 採用 SMP対応 浮動小数点演算を強化 MPC 7400 MPC 7410 - 省電力版。180nmプロセスで製造。 MPC 7450 - L2キャッシュ256KB内蔵、L3キャッシュ対応、整数演算ユニットを4基に、パイプラインを7段に多段化し、高クロック化 MPC 7451 - 省電力版 MPC 7445 - 7455のL3キャッシュインターフェイス省略タイプ。 MPC 7455 - 180 nmプロセス、SOIを採用。クロックは1GHzに到達。 MPC 7457 - 130nm プロセス、L2キャッシュを512KBに MPC 7447 - 7457のL3キャッシュインターフェイス省略タイプ。省電力。 MPC 7448 - 90nmプロセスで製造、1MBのL2キャッシュ、e600コアを採用。 MPC 8641 - e600コアを採用。メモリコントローラー、PCI Expressコントローラーを内蔵。 MPC 8641D - MPC 8641のデュアルコア版。 64ビットPowerPCアーキテクチャーに準拠し、設計を全面的に刷新している。 IBMがAppleと共同開発し、POWER4ベースに設計。G5と呼ばれる。 64ビット化 パイプラインを大幅に多段化し高クロック動作(最高2GHz以上、パイプライン段数16〜25段) CPUバスを大幅に高速化（1GHz超） 2基のFPU（G4までは1基）を搭載し、高速な浮動小数点演算（スカラー4GFLOPS+単精度ベクタ8GFLOPS[1GHz動作時]） AltiVec互換のVMXを搭載 2基のロード／ストアユニット（G4までは1基） 複雑な命令をマイクロコードとして実装 フル精度の平方根をハードウェア命令として実装（G4はソフトウェア関数）。 リトルエンディアン非対応 90nmプロセス、高速化。省電力機能「PowerTune」を搭載。 デュアルコア、各コアにL2キャッシュ1MB内蔵。最高2.5GHz。 PowerPC 970FXの後継モデルで、970MP同等の性能でシングルコア・省電力を実現した。最高2.5GHz。 P.A. Semi（2008年にAppleに買収された）が設計した、64ビット対応のG5互換製品。 徹底的なクロックゲーティング（チップ全体を2万5340の要素に分けてクロックの供給を行う）により、省電力（2GHz、2コアで平均消費電力13W）を実現 マルチコア接続用のCONEXIUMバスを搭載 AltiVec互換のVMXを搭載 バイエンディアンに対応 PowerPC Processor Elementの略称、SCE・ソニー・IBM・東芝の4社連合によって開発。PowerPC互換ではあるが、どのベースにも属さないフロムスクラッチ。Cell/B.E.およびPowerXCell 8iに使用されている。 VMX拡張付き64ビットのPOWERアーキテクチャーを継承した2命令同時発行のRISCプロセッサー 深いパイプラインとインオーダー実行など回路を簡略化することにより高クロック動作（最高4GHz以上、パイプライン段数19段以上） PowerPC ISA v.2.02に準拠 2スレッドの同時マルチスレッディング 仮想化機構のサポート リアルタイム性を保障するL2キャッシュ リトルエンディアンにはハードウェア変換で対応 Xbox 360用にIBMがマイクロソフトと共同開発した64ビットのPowerPC互換プロセッサー。XCPUと呼ばれる。後にGPU「Xenos」を統合したXCGPU、更にeDRAMを統合したObanに発展した。 3つの対称型マルチコアプロセッサー ゲームやグラフィックス用に拡張されたVMX128 1MBの共有L2キャッシュ 21.6GB/sのFSB 最初から組込み向けとしてIBMが開発。現在はAMCCが権利を持つ。単体のマイクロプロセッサーとしてではなく、ASICのCPUコアとして組み込まれることが多い。2005年頃より流通。 405 シリーズ PowerPC NPe405H PowerPC 405EP PowerPC 405EX PowerPC 405EXr PowerPC 405GP PowerPC 405GPr 440 シリーズ PowerPC 440EP PowerPC 440EPx PowerPC 440GR PowerPC 440GRx PowerPC 440GX PowerPC 440SP PowerPC 440SPe 460 シリーズ PowerPC 460EX PowerPC 460GT PowerPC 460SX PowerPC 460GTx 2009年9月24日に発表された470シリーズは、それまでの400シリーズと比較して性能を２倍以上に引上げた。ソフトウェアは400シリーズと共通であるが、464FPと比較してパイプラインが7段から9段へ増えており、out-of-order、倍精度浮動小数点数演算対応SIMDと、PowerPC G3 (PowerPC750) シリーズの後継シリーズとしての位置づけとなっている。 PowerPC 476FP 12S -45nm SOIで製造。1.6GHz時に1.6Wで動作する。倍精度浮動小数点数演算対応SIMD命令、単精度2並列SIMD命令に対応。最高2GHz。 2010年2月9日にISSCC2010で発表されたプロセッサ。1コアあたり4スレッドで16コア1チップで構成されている。L1キャッシュ16KB+16KB。L2キャッシュ2MB。1.6GHz時55W、204.8Gflops。最高2.3GHz、65Wで稼動する。スーパーコンピューターBlue Gene/Q（ブルージーンQ）のコアCPUに採用されている。 IBM POWER - IBMの主にUNIXサーバおよびワークステーション用のCPU。 組み込み向け派生品 MPC5xx PowerQUICC Macintosh - Appleのパーソナルコンピュータ。Power MacintoshおよびPower Mac、iBook、1995年以降のPowerBook、2005年までのiMac。 使用ゲーム機 ピピンアットマーク（バンダイ・デジタル・エンタテイメント）。PowerPC 603 66MHzを使用。 セガ MODEL3 アーケードゲーム基板。基板リビジョンによって使用CPUは異なり、PowerPC 603 66MHz、100MHz、PowerPC 603ev 166 MHzを使用。 PlayStation 3（ソニー・コンピュータエンタテインメント）。東芝と共同開発したPowerPC系プロセッサ「Cell」を使用。 Xbox 360（マイクロソフト）。PowerPC系トリプルコアプロセッサを使用。 ニンテンドーゲームキューブ、Wii、Wii U（任天堂）。PowerPC系プロセッサ「Gekko」「Broadway」「Espresso」を使用。 玄箱 - NAS自作キット一部機種にPowerPCを使用。 戦闘機 スウェーデンの多目的戦闘機グリペンの中央情報処理装置。 ステルス戦闘機F-35のICP（Integrated Core Processor：統合型コアプロセッサー）。 [脚注の使い方] ^ Kacmarcik, Cary (1995). Optimizing PowerPC Code. Addison-Wesley Publishing Company. p. 252. ISBN 0-201-40839-2  ^ a b “Microsoft killed the PowerPC 615” (英語). theregister.com. 2021年6月26日閲覧。 ^ X704 with Exponential processor Power PC - Computer History Museum ^ “後藤弘茂のCOMDEXリアルタイムレポート(その4)”. PC Watch. (1996年11月21日). https://pc.watch.impress.co.jp/docs/article/961122/gotocom4.htm  ^ “山田久美夫の「MACWORLD Expo/San Francisco 1997」会場レポート”. PC Watch. (1997年1月9日). https://pc.watch.impress.co.jp/docs/article/970109/macworld.htm  ^ “ExponentialのX704チップ 500MHz超は第3四半期以降”. MacWEEK. (1997年3月31日). オリジナルの1999年4月23日時点におけるアーカイブ。. https://web.archive.org/web/19990423191240/http://www.zdnet.co.jp/macweek/9703/n0331_exponential.html  ^ “Apple，X704チップ採用計画を中止 Arthur，Mach 5と「性能の差なし」”. MacWEEK. (1997年5月16日). オリジナルの1998年12月1日時点におけるアーカイブ。. https://web.archive.org/web/19981201210217/http://www.zdnet.co.jp/macweek/9705/n0516_x704.html  ^ [1] RISC Power.org POWER PReP CHRP PAPR Power Architecture IBM::PowerPC features [リンク切れ] freescale::PowerPC Processors 32ビットPowerPCアーキテクチャプログラミング環境(PDF) Powerアーキテクチャーオファリング - 日本IBM [リンク切れ]