サターンのCPU

なぜサターンには SH2 が採用されたのでしょう?

SH2 の開発については、ルネサスエレクトロニクス(当時は日立)に開発ストーリーがあります。このストーリーによれば、SH1 をセガに売り込みに行った際、すでに NEC の V810 に決まりかけていたようです。


それから何度かセールスに行きますが、最初は好感触だったのに徐々に感触が悪くなり、暖簾に腕押しの状態に。

一度は採用を諦め、最後にもう一度食い下がってみよう! と強い決意で商談に行ったら「あぁ、いいですよ。決めましたから」という拍子抜けする一言で採用が決まった、とあります。


一体この間に何があったのか? セガが決めたことですから、日立のストーリーからは読み取れません。


別の話題として、当時のセガはいくつかの雑誌で「各種 CPU の性能を比較した結果」SH1 を選び出し、これでも性能が足りないから「日立に改良を依頼した」となっています。また、この時の速度の指標が 25MIPS だったことも明らかにされています。

この 25MIPS という基準速度、一体何をもとに算出された速度なんでしょう?

ここからは、全くの想像ですが、各種資料をあたりながら SH2 が採用に至った理由を探りたいと思います。

目次

セガ・サターン(別ページ)

サターンの3D性能(別ページ)

候補リスト

動作速度

命令長

さらに絞り込む

SH1

乗除算

まとめ

太陽系の惑星たち(別ページ)

細かな話題(別ページ)

もう一つのライブラリ(別ページ)

次世代ゲーム機戦争(別ページ)

反論紹介(別ページ)


候補リスト

さて、当時のセガの担当者になったつもりで、候補の 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種類を検討した」とあるので十分でしょう。


実際の候補がこの13種類だったのかは不明です。ここにあげたが実際には検討されなかったものや、挙がっていないけど検討されたものもあるかもしれません。
しかし、当時の CPU を眺めると、大体妥当なのではないかな、ということで、以下の話を進めます。

動作速度

ところで、セガの最初のゲーム機、SG-1000 は、Z80 を 3.58MHz で動かしています。Z80 は 4MHz で動くことができますが、わざと速度を落としているのです。

これは、家庭用テレビの信号(NTSC)が 3.58MHz だからです。速度を落とせば、クロックを共有できるようになり、部品点数を減らせます。全体が同じクロックなので回路設計も簡単になり、製造コストを下げることができるのです。


当時はこのやり方は多く、MSX やソードのM5も同じクロック数でした。

メガドライブでは、7.67MHz でした。これは NTSC 信号のちょうど倍の速度です。


2014.7.27 追記。
メガドライブ、全然倍じゃないよ…。簡単な計算なのに間違えていました。
この件、NTSC ではなく PAL 版はどうだったのか、という調査と含め、別記事を書きました

デジタル回路はクロックを基準に動作しますが、入力クロックのちょうど半分の速度のクロックを作り出す、という回路は簡単に作れます。NTSC の倍の速度であれば、やはり画面表示回路とクロックを共有できるのです。

そして、セガサターンは 28.64MHz で動作していました。これは、NTSC 信号の8倍の速度で、半分の半分の半分…で、NTSC 信号を作り出せますから、これもちょうどよい速度なのです。


以下、候補に上った CPU の速度を比較しますが、28.64MHz で動作させた場合の速度で統一します。

性能指標は MIPS です。詳細は後ほど改めて書きますが、性能を示す指標です。数字が大きいほど性能が良いことになります。

あくまでも指標であり、厳密なものではないので、有効数字は2ケタとしています。


なお、CPU には動作できる最大周波数が決められています。

28.64MHz で動作した際の性能で比較しますが、実際にこの周波数で動かすことができない CPU の場合は、実際の最大周波数を記します。

名称速度最大クロック
i86039
MC6804032
PA-RISC28
R300025
ARM602412MHz
i48623
V8102125MHz
SPARC21
i96019
8038610
MC6803010
V701020MHz
V606.216MHz

ここで、10MIPS 以下の4機種、80386、MC68030、V70、V60を選外とします。

その一つ上の i960 は 19MIPS で、およそ2倍の速度差があるためです。それ以上の速度の機種は差が詰まっているのに、ここで差が開きすぎているのは性能が低すぎる証拠。


実は、選外とする4機種は、1世代前の CPU です。使い慣れていたり、値段が安くなったりしているから候補に入れてみたけど、やっぱ旧世代は遅い、と判っただけでした。


命令長

さて、今探しているのはゲーム機の CPU です。ゲーム機の場合、パソコンと違ってメモリをそれほど多く搭載できません。同じプログラムを作った際に、小さなメモリで済む CPU を選ぶ必要があります。

ここで注目すべきは、「命令長」というものです。その CPU が、1つの命令をどの程度の長さで表現するか。これだけでプログラムの長さが決まるわけではありませんが、非常に大きな要因の一つではあります。

名称速度命令長最大クロック
i8603964bit
MC680403216/32/48bit
PA-RISC2832bit
R30002532bit
ARM602432bit12MHz
i486238/16/24/32/40/48bit
V8102116/32bit25MHz
SPARC2132bit
i9601932bit

命令長については、少し解説が必要ですね。


まず、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にファンは付いてなかった、と指摘をいただきました。その通りでした。ありがとうございます。
CPUにファンが付き始めたのは、同じ486でも50MHzを超えたころから、のようです。発売年でいえば1992年なのですが、ここで検討しているのは 28.64MHzなので、ファン不要の製品で間に合います。
もっとも、ヒートシンクは必要でしたし、その場合筐体内のエアフローも考えなくてはならず、無理に変わりはありません。

…つまり、これらの CPU を使うと、製造コストが跳ね上がります。残念ながらゲーム機に使えるような CPU ではありません。MC68040 と i486 は、ここで選外とします。


ここでひとつ説明しておきましょう。
この中では、V810 だけが組込み用に設計された CPU でした。組込みとは、いわゆる「コンピューター」ではない用途のこと。
メモリも小さく、OS もなく、ユーザーが自分でプログラムを開発することもない…家電品などもそうですが、実はゲーム機も「組込み」に相当します。
大抵、速度は求められず、省メモリで廉価であることが求められます。V810 の特徴は当然のことで、これが「ゲーム機」に適しているのも当然のことなのです。

もう一つ説明が必要ですね。ARM60 の命令長を 32bit としていることについて。CPU に詳しい方は不思議に思うかもしれません。

現在では、ARM は 16/32/64bit の混在として知られています。でも、これは後から追加された特徴。ARM60の時点では、まだ32bit 命令長でした。


次ページ: さらに絞り込む


1 2 3 次ページ

(ページ作成 2013-11-11)
(最終更新 2014-07-27)

前記事:サターンの3D性能     戻る     次記事:太陽系の惑星たち
トップページへ

-- share --

17700126

-- follow --




- Reverse Link -