今日は PowerPC の開発が発表された日。
古い Macintosh で使われていた CPU です。
少し前、Wii / PS3 / XBOX 360 が争っていた時代、この3つのゲーム機の CPU はいずれも PowerPC を元としたものでした。
というくらいには普及していたのですが、そのころを頂点にすっかり消えてしまった感があります。
PowerPC とは、POWER プロセッサの PC 版。
いや、正式名称は Performance optimization with enhanced RISC - Performance Computing で、この頭文字が PowerPC です。
でも、こんな正式名称がどう見たって後付け。
POWER は、世界最初の RISC プロセッサです。
1970年代、コンピューターをプログラムするのには、アセンブラを使うのがまだ普通でした。
C言語のような高級言語はすでに登場していますが、性能を出すにはアセンブラでないといけないと言われていた時代。
PDP-11 は、それまでのシリーズとの互換性を断ち切り、非常に使いやすい機械語命令を搭載して話題となります。
PDP-11 のアーキテクチャは、6800 6809 68000 V60 トロンチップなど、多くの CPU の手本とされました。
その特徴は、命令の直交性が非常に高いこと。
CPU の機械語命令では、足し算、引き算という「命令」と、結果を残すレジスタやメモリアドレス、計算に使用するレジスタやメモリアドレス、の3つの組み合わせで作られます。
たとえば、Z80 の ADD A,#5 という命令は、レジスタ A の現在の内容に、数字の 5 を加えて、その結果を A に残すことを意味します。
LD A,(1234) は、アドレス 1234 のメモリ内容を、レジスタ A に読み込みます。
じゃぁ、ADD A,(1234) だったら、アドレス 1234 のメモリ内容を A に足すか…というと、そうではありません。
そんな命令は存在しません。ADD では、アドレスを指定したメモリとの足し算は出来ない、という決まりがあるのです。
こうした決まりは、CPU 設計の技術上の問題で生じています。
しかし、極力技術上の問題をクリアし、人間が直感的に使えるようにすることを「直交性が高い」と呼びました。
#直交性は数学的な概念です。グラフを書くとき、X座標とY座標が「直交している」という、その直交。
X と Y がお互いを制限することなく、自由であることを意味しています。
さて、PDP-11 の頃から始まる、直交性が高くて使いやすい CPU は人気が出ます。
その一方で、これらの CPU は技術的な課題をクリアするために、非常に複雑な仕組みを使っていました。
そして、その複雑さは「遅さ」につながります。
もう一つ、先に Z80 の例を挙げましたが、Z80 は非常に命令が豊富です。
足し算や引き算は当然として、「裏レジスタ」というものを持ち、レジスタの表と裏を入れ替える命令とか、メモリ内のある領域から特定の 1byte を入れてあるアドレスを見つけ出すとか、1byte = 8bit を、4bit で表現できる 10進数2桁とみなして足し算・引き算するための命令とか…
これらの仕組みもまた、複雑で「遅さ」につながります。
1970年代、IBM は豊富な命令のどの程度が利用されているのか、既存のプログラムコードを調査しました。
調査対象は、主に IBM System/370 用のプログラム。
人間が直接アセンブラで書いたプログラムや、FORTRAN や COBOL を利用したプログラムなど、様々なものがありました。
さらに、IBM のコンピューターだけでなく、他社のコンピューターも調査したようです。
その結果、次のようなことがわかります。
・プログラム実行時間の8割で、10個程度の基本命令しか使われていない
・それらの基本命令でも直交性は十分利用されておらず不要である
・「便利な命令」よりも「単純な命令」を組み合わせたほうが高速に動作することが多い
これは、従来の「人間にとって使いやすいプロセッサが、良いプロセッサである」という価値観を覆すのに十分でした。
IBM は 801 というコンピューターを作成します。
これは実験プロジェクトで、上に書いた調査結果を元にしたものです。
よく使われる基本命令を高速に実行するように最適化されており、直交性も低いです。
しかし非常に高速に動作し、人間にとっての「使いやすさ」は、コンパイラを開発することで保証されます。
801 の作成中に、パソコン用の 1chip プロセッサーである、ROMP の作成が開始されます。
801 では、高速性を求めてすべての命令を同じ長さにしていたり、単純な命令の組み合わせで複雑な命令を実現したりするため、プログラム容量が大きくなることが予期されていました。
801 では、すべての命令が 32bit でした。
ROMP では、一部の命令を 16bit にして、混在命令長にすることで省メモリ化を図っています。
ROMP は 1981 年に開発が開始されたそうですが、実際に製品として発売されたのは 1986 年でした。
その後、1990 年に POWER 1 が作成されます。
大型汎用機に使用されるもので、CPU の機能を複数の LSI に分散しています。
そして、このときに、1970 年代の研究成果と共に「一部の命令を高速化すればよい CPU が作れる」というアイディアが宣伝されました。
この宣伝のために、RISC という概念が作られました。
同時に、従来の人間に使いやすいプロセッサは CISC と名付けられました。
ここには、IBM の宣伝のうまさがあります。
RISC の R は Reduce の意味。複雑化しすぎて遅くなっている CPU を「Reduce」(元に戻す、縮小する、減らす、などの意味)する、という意図があります。
それに対し、CISC の C は Complex 。「複雑な、込み入った、嫌悪する」などの意味のある単語です。
この用語の対比を見ただけで、RISC は素晴らしく、CISC はダメなものに思えてしまう。
POWER は頭文字…最初に挙げましたが、意味のある単語で、最後の R は RISC です。
でも、そんな意味よりも「POWER」=「力」という意味を強く感じる。ここでも、POWER が素晴らしいものに見える。
ここから、1990年代の RISC CPU ブームが起きます。
でも、RISC って結局、宣伝文句のバズワードに過ぎなかったのね。
「命令が少ないから高速化できる」と言った POWER は、どんどん命令を追加して強力なものになっていく。
一方で、CISC 代表のように言われた Intel の CPU …当時は i486 とかなんだけど、Pentium の時に互換性のあるまま「RISC になった」とされる。
RISC と CISC の共通部分 ISC は「Instruction Set Computer」を意味しています。
命令によって見分けるのだから、互換性があるなら CISC のままのはず。
でも、インテルも宣伝上手で、RISC の定義を「ワイヤードロジックである」ことに置き換えてしまうのね。
ワイヤードロジックとは、すべての命令を回路で作ってある、という意味です。
それ以前は、非常に多くの命令を効率的に作るために、複雑な命令は CPU 内部で別の命令に置き換える形で実行していた。
このやり方だと、回路は使いまわせるから効率的だけど、結局インタプリタみたいになっているので遅い。
1991 年 7 月 31日、IBM 、 Motorola 、Apple の3社は、共同で「PowerPC」の作成を行うと発表します。
前年に、大型コンピューター用に作られたばかりの POWER を、PC に乗せられるサイズに小さくしようというのです。
Motorola は、CICS の代表格の一つ、68000 を作っていたメーカーです。
Macintosh の CPU としても使われていましたが、複雑すぎて、後継機で速度を上げるのが難しくなっていました。
IBM は、PC 用の CPU としては ROMP に次ぐ製品になります。
ROMP は、開発開始から製品が出るまでに 5年もかかっているのですが、多くの時間を OS 開発に費やしたそうです。
パワフルな CPU であることを活かし、他の CPU をエミュレートすることで、複数の OS をエミュレートし、どんなアプリケーションでも動く究極の OS を作ろうというものでした。
ROMP の時は途中で断念したようなのですが、PowerPC でも夢の続きを見ます。
プロジェクト名「Pink」、WorkPlace OS と呼ばれました。
UNIX 、DOS 、Windows、Macintosh OS 、などなど、どんな OS でもその上で動かすことができる…予定でした。
最終的には失敗し、AIX (IBM の UNIX) と、OS/2 (マイクロソフトと共同で作成した OS )だけを動かす形に、規模を縮小して製品化されています。
PowerPC は 1993 年に完成し、Apple では 1994 年に Power Macintosh 6100 を発売します。
従来の 68040 を搭載した Mac のソフトも、ソフトウェアでエミュレートすることで動作しました。
…が、68040 を利用する実機よりも速度は遅い。エミュレートだから仕方がありません。
これはエミュレータ部分の設計がまだ未熟だったせいもあり、後に OS がバージョンアップされると、実機より速くなりました。
初期の PowerPC は、CPU ごとの互換性が良くありません。
最初の PowerPC 601 で搭載された命令が、後の CPU でなくなったりもしています。
その命令がなければもっと安く、もっと速くできる、というような判断で、もし該当命令が使われた際には、OS 内部でソフトウェアエミュレートします。
IBM / Motorola / Apple の3社で開発したものなので、チップ製造は IBM と Motorola が行いました。
といっても、PowerPC は PowerMac 以外にはほとんど使われません。
PowerPC を利用した PC を、多くの会社が作れるように CHRP という仕様が作られました。
IBM-PC における「互換機」をどこの会社でも作れるようなもので、CHRP が普及すれば CPU の市場が広がります。
しかし、PowerPC で動作する OS は、事実上 Apple の MacOS しかありません。
そこで、Apple も MacOS を CHRP で動作するように改良し、互換機市場を立ち上げようとするのですが…
この頃、低迷していた Apple に Jobs が復帰。
MacOS 互換機は許さない、と方針を転換し、CHRP 発売に向けて動いていたメーカーも、仕方がなく開発を中止します。
IBM / Motorola は PowerPC を作り続けるのですが、事実上顧客は Apple だけ。
当然のことですが、熾烈な値下げ競争となり、Apple だけが得をする状況になります。
CPU 製造には、製造量に関わらず、大規模な工場が必要です。
IBM も Motorola も PowerPC のために投資をしているのに、市場は広がらずに苦しい状態。
どうしても、値下げするとしても限界になります。
その結果、今度は Apple は PowerPC を捨て、Mac を Intel 系に移行するのです。
最初に書きましたが Wii / PS3 / XBOX360 の頃は、PowerPC はまだゲーム機に生き残りの道を見つけていました。
しかし、それもすでに過去の話。
元々の設計が良いので、今でも十分パワフルな CPU ですし、性能のわりに回路規模が小さいので、基板上の専有面積も小さく、無駄が少ないので省電力で発熱も少ない。
と言っても、これは PowerPC の特徴ではなく、真の RISC の特徴。
今、この特徴を活かして市場を席巻しているのは、PowerPC ではなく ARM です。
PowerPC の前途は多難なようです。
同じテーマの日記(最近の一覧)
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |