サターンのCPU
なぜサターンには SH2 が採用されたのでしょう?
SH2 の開発については、ルネサスエレクトロニクス(当時は日立)に開発ストーリーがあります。このストーリーによれば、SH1 をセガに売り込みに行った際、すでに NEC の V810 に決まりかけていたようです。
それから何度かセールスに行きますが、最初は好感触だったのに徐々に感触が悪くなり、暖簾に腕押しの状態に。
一度は採用を諦め、最後にもう一度食い下がってみよう! と強い決意で商談に行ったら「あぁ、いいですよ。決めましたから」という拍子抜けする一言で採用が決まった、とあります。
一体この間に何があったのか? セガが決めたことですから、日立のストーリーからは読み取れません。
別の話題として、当時のセガはいくつかの雑誌で「各種 CPU の性能を比較した結果」SH1 を選び出し、これでも性能が足りないから「日立に改良を依頼した」となっています。また、この時の速度の指標が 25MIPS だったことも明らかにされています。
この 25MIPS という基準速度、一体何をもとに算出された速度なんでしょう?
ここからは、全くの想像ですが、各種資料をあたりながら SH2 が採用に至った理由を探りたいと思います。
目次
セガ・サターン(別ページ)
サターンの3D性能(別ページ)
太陽系の惑星たち(別ページ)
細かな話題(別ページ)
もう一つのライブラリ(別ページ)
次世代ゲーム機戦争(別ページ)
反論紹介(別ページ)
候補リスト
さて、当時のセガの担当者になったつもりで、候補の CPU をいくつか挙げてみましょう。
1992年夏ごろには選定が終わりかけていた、と日立のストーリーにあります。ですので、この時に発売されていた CPU が対象です。
日立のストーリーによれば、V810 に決まりかけていたというので、V810 は当然候補です。
MC68040 も検討された、ともあります。メガドライブの MC68000 の後継 CPU なので、これは当然ありそうな話です。1世代前の MC68030 も安くなって手頃かもしれません。
おそらく、セガが業務用で使用していた V60 なども候補に入っていたでしょう。後継機種の V70 も候補に入れておきましょう。
この時点では発表前の MODEL 2 に使用された i960 も候補とします。i860 も候補に入れておきましょう。(名前は似ているが全然別の CPU です。両方インテル製)
プレステが採用した R3000 は、当時注目されている CPU でした。当然これも候補でしょう。3DO で使用された ARM60 も候補に入れます。
パソコンで使用されていた i486 も候補とします。1世代前の 80386も入れましょう。ワークステーションで使用される SPARC や、PA-RISC も入れておきましょう。
現在のゲーム機では採用の多い PowerPC は発表が 1992 年の10月なので、残念ながら候補に入ることができません。一時期高速性で話題を呼んだ DEC の Alpha も 1992年11月です。
…というわけで、候補が出そろいました。13種類あります。
V810、V60、V70、MC68040、MC68030、i960、i860、R3000、ARM60、i486、80386、SPARC、PA-RISC
日立のストーリーにも「約10種類を検討した」とあるので十分でしょう。
しかし、当時の CPU を眺めると、大体妥当なのではないかな、ということで、以下の話を進めます。
動作速度
ところで、セガの最初のゲーム機、SG-1000 は、Z80 を 3.58MHz で動かしています。Z80 は 4MHz で動くことができますが、わざと速度を落としているのです。
これは、家庭用テレビの信号(NTSC)が 3.58MHz だからです。速度を落とせば、クロックを共有できるようになり、部品点数を減らせます。全体が同じクロックなので回路設計も簡単になり、製造コストを下げることができるのです。
メガドライブでは、7.67MHz でした。これは NTSC 信号のちょうど倍の速度です。
デジタル回路はクロックを基準に動作しますが、入力クロックのちょうど半分の速度のクロックを作り出す、という回路は簡単に作れます。NTSC の倍の速度であれば、やはり画面表示回路とクロックを共有できるのです。
そして、セガサターンは 28.64MHz で動作していました。これは、NTSC 信号の8倍の速度で、半分の半分の半分…で、NTSC 信号を作り出せますから、これもちょうどよい速度なのです。
以下、候補に上った CPU の速度を比較しますが、28.64MHz で動作させた場合の速度で統一します。
性能指標は MIPS です。詳細は後ほど改めて書きますが、性能を示す指標です。数字が大きいほど性能が良いことになります。
あくまでも指標であり、厳密なものではないので、有効数字は2ケタとしています。
なお、CPU には動作できる最大周波数が決められています。
28.64MHz で動作した際の性能で比較しますが、実際にこの周波数で動かすことができない CPU の場合は、実際の最大周波数を記します。
名称 速度 最大クロック i860 39 MC68040 32 PA-RISC 28 R3000 25 ARM60 24 12MHz i486 23 V810 21 25MHz SPARC 21 i960 19 80386 10 MC68030 10 V70 10 20MHz V60 6.2 16MHz
ここで、10MIPS 以下の4機種、80386、MC68030、V70、V60を選外とします。
その一つ上の i960 は 19MIPS で、およそ2倍の速度差があるためです。それ以上の速度の機種は差が詰まっているのに、ここで差が開きすぎているのは性能が低すぎる証拠。
実は、選外とする4機種は、1世代前の CPU です。使い慣れていたり、値段が安くなったりしているから候補に入れてみたけど、やっぱ旧世代は遅い、と判っただけでした。
命令長
さて、今探しているのはゲーム機の CPU です。ゲーム機の場合、パソコンと違ってメモリをそれほど多く搭載できません。同じプログラムを作った際に、小さなメモリで済む CPU を選ぶ必要があります。
ここで注目すべきは、「命令長」というものです。その CPU が、1つの命令をどの程度の長さで表現するか。これだけでプログラムの長さが決まるわけではありませんが、非常に大きな要因の一つではあります。
名称 速度 命令長 最大クロック i860 39 64bit MC68040 32 16/32/48bit PA-RISC 28 32bit R3000 25 32bit ARM60 24 32bit 12MHz i486 23 8/16/24/32/40/48bit V810 21 16/32bit 25MHz SPARC 21 32bit i960 19 32bit
命令長については、少し解説が必要ですね。
まず、i860 の 64bit は、この中に2命令を含めることができます。なので、実際の命令長は 32bit と言っても良いかもしれません。
ただ、i860 は同時に2つの命令を実行することが可能で、同時に実行する2命令を「必ず」64bit で指定する必要があります。もし、同時に実行できる命令がない場合は「何もしない」と言う指定をします。
i860 の速度は 39 としてありますが、実は i860 の開発者たちが、「ほぼ常に2命令を実行する」ように一生懸命作ったベンチマークソフトで測定したもの。高級言語からのコンパイルではこの性能を出すことができず、i860 用に作られたコンパイラでも、実際の速度は 21MIPS 程度だったとされています。
およそ半分の速度。つまり、「2命令を同時実行」はほとんど活かすことができず、片方の命令は「何もしない」ことが多かった、という意味になります。
実際は V810/SPARC と同じ 21MIPS で、ほぼ1命令で 64bit …これはゲーム機に使える CPU ではありません。ここで選外とします。
次に、MC68040、i486、V810 。命令長が複数あります。これは、命令によって命令長が違う、と言う意味です。プログラム中に混在しています。
MC68040 の元となっていて、メガドライブに使用される MC68000 も同じでした。というか、1980年代の CPU はそういうものが多かったのです。簡単な命令ならメモリを節約できる、と言う利点があります。
利点があるなら他の CPU はなぜそうしないのか? これには理由があり、CPU の設計が複雑になり、速度を上げづらいのです。実際、候補に残った中では V810 だけが、最大クロックが 28.64MHz に達していません。
MC68040 と i486 は速度が十分出ている? …いや、じつはこれは、かなり無理をしていました。無理をする、というのは、消費電力が大きく、CPU が熱を発生すると言うことです。
熱を逃がさなくては壊れてしまうため、CPU にヒートシンクと呼ばれる部品を取り付け、小さなファンで風をあてる必要がありました。可動部品は壊れやすいものですが、ファンが壊れると CPU が熱で壊れてしまうため、十分耐久性のあるファンを使う必要がありました。
CPUにファンが付き始めたのは、同じ486でも50MHzを超えたころから、のようです。発売年でいえば1992年なのですが、ここで検討しているのは 28.64MHzなので、ファン不要の製品で間に合います。
もっとも、ヒートシンクは必要でしたし、その場合筐体内のエアフローも考えなくてはならず、無理に変わりはありません。
…つまり、これらの CPU を使うと、製造コストが跳ね上がります。残念ながらゲーム機に使えるような CPU ではありません。MC68040 と i486 は、ここで選外とします。
この中では、V810 だけが組込み用に設計された CPU でした。組込みとは、いわゆる「コンピューター」ではない用途のこと。
メモリも小さく、OS もなく、ユーザーが自分でプログラムを開発することもない…家電品などもそうですが、実はゲーム機も「組込み」に相当します。
大抵、速度は求められず、省メモリで廉価であることが求められます。V810 の特徴は当然のことで、これが「ゲーム機」に適しているのも当然のことなのです。
もう一つ説明が必要ですね。ARM60 の命令長を 32bit としていることについて。CPU に詳しい方は不思議に思うかもしれません。
現在では、ARM は 16/32/64bit の混在として知られています。でも、これは後から追加された特徴。ARM60の時点では、まだ32bit 命令長でした。