マイクロプロセサは,CISC(complex instruction set computer)からRISC(reduced instruction set computer),マルチコアへとアーキテクチャを変えてきました。ここでは世界初のマイコンを設計した嶋正利氏をはじめ,国内の第一線で活躍する設計者が,アーキテクチャをどのように決めたのかを自ら語ります。さらに今後普及してくるマルチコア時代になると,ソフトウエア開発が重要になってくることを示します。(連載の目次はこちら

横田(司会) マイコンやマイクロプロセサのアーキテクチャを,どのように決めていったのか,今後どうなっていくのか,実際に設計された方々とこれから議論していきます。

 まず,1969年に世界初のマイクロプロセサ「4004」を開発した嶋正利さんにはCISC(complex instruction set computer)プロセサについて,次に私がRISC(reduced instruction set computer)プロセサについて概観します。

 さらに,NECエレクトロニクスの金子博昭さんに「Vシリーズ」,ルネサス テクノロジの長谷川淳さんに「SuperH RISC engine ファミリ(SH)」,東芝の増渕美生さんに「Cell」について,開発の方針をお話しいただきます。

討論に参加したパネラー
電子情報通信学会と情報処理学会が開催した「第5回情報科学技術フォーラム」で,嶋正利氏の船井業績賞受賞を記念したパネル討論「マイクロプロセッサのアーキテクチャはどのように決定されたか?」が,2006年9月6日に開かれました。本記事はその抄録です。

メモリが高価で遅くCISCは必然だった

 1970年代まで半導体メモリは,高価でありながら,容量が小さく低速でした。従って,コンピュータの処理能力を高めるにはメモリへのアクセスをできる限り削減して,なるべくプロセサの内部で,少ないクロック数で処理を実行できるようにする必要がありました。このため,1命令で複数の処理を実行できるように設計したのがCISCプロセサです。もっともCISCという名前は,RISCが出来た後で付けられたものですが。

【図1  8080のチップ写真】1974年1月に作製。右下に開発者の嶋氏の家紋が入っている。
図1 8080のチップ写真
1974年1月に作製。右下に開発者の嶋氏の家紋が入っている。
[画像のクリックで拡大表示]

 1974年に米Intel Corp.で開発した8ビットの「8080」では,使用できるトランジスタの数が約5000個と少ない中で,処理能力の向上とプログラム・サイズの削減を実現するために,三つの基本方針を立てました(図1)。メモリ・アクセスと演算の複合化命令セット,バイト可変長の命令形式,シングル・アキュムレータ&マルチプル・レジスタの採用です。いろいろ工夫したかったのですが,トランジスタ数が少なく,制約が大きかった。

 その後Intelが開発した「x86」は互換性を重視したので,アーキテクチャが美しくない,汚い,命令によってはアドレッシングに制約があり直交性がない,といわれました。一方,互換性を考えずに16ビットから新しく出発したマイクロプロセサが,米Zilog, Inc.製「Z8000」や米Motorola, Inc.製「68000」です。そのときは約2万個のトランジスタが使えました。私がZ8000を設計したときは,いろいろなアプリケーション・プログラムでどんな命令がどんな頻度で出現するかという動的動作解析や静的動作解析をしました。その結果も考慮しながら,なるべく直交性があるように設計しました。

 トランジスタ数が増えたといっても,命令のアーキテクチャを決めるに当たっては,決断しなければならないことも多かった。重要度の低いアドレス指定はロード・ストア命令に限定し,回路規模を抑えました。バイト可変長ではなくワード可変長(ここで1ワードは16ビット)にしました。こうすれば命令長が8,16,24,32ビットに分かれるのではなく,16,32ビットに限られます。このためデコーダがあまり複雑にならずに済み,回路はかなり楽になりました。つまり,RISC以前にRISCのような方針も取り入れていたわけです。

 また,16ビット・プロセサであってもアドレスは32ビットにしようか,汎用レジスタを何本にしようか,などと悩みました。メモリからメモリへの転送命令,浮動小数点演算命令,メモリ管理機能を入れるかどうかも,ずいぶん考えました。