今後,「私と4004」「私と8080」「私とZ80」などを執筆するに当たり,マイクロプロセッサの機能と性能の進化を決める要因,開発時の最適化などについて述べたい。
過去35年間でマイクロプロセッサの命令アーキテクチャは4ビットから64ビットへ,プロセッサの動作周波数は750KHzから3.73GHzへ,命令の平均実行クロック数(CPI:Clock Per Instruction)は12から0.25へ,システムバスの動作周波数は750KHzから1.333GHzへ,メモリー・アクセス時間は300ナノ秒から10ナノ秒以下へと進化した。半導体プロセス技術のプロセス・ルールは10マイクロメートルから65ナノメートルへと微細化し,使用トランジスタ数は2238個から5000万個以上へと増加した。平均すると3年から3年半で新世代の半導体プロセスが登場し,それに歩調を合わせて新世代マイクロプロセッサが開発された。
アーキテクチャ,OS,言語---多数の技術が進化に影響
マイクロプロセッサの機能と性能の進化を決める要因には,アーキテクチャ,OS,プログラミング言語,動作環境,性能向上技術,設計技術,CADツール,半導体プロセス,性能の評価方法などがある。
マイクロプロセッサの進化に伴い,次世代マイクロプロセッサの開発には,より総合的で高度な開発技術が要求され続けた。開発者は次世代マイクロプロセッサの開発に必要な技術を前もって進んで短期間に勉強しないと,開発の第一線からふるい落とされてしまう。
アーキテクチャには命令セット・アーキテクチャ,プロセッサ・アーキテクチャ,システム・アーキテクチャなどがある。動作環境には,動作周波数,動作電圧,動作温度,消費電力,パッケージなどがある。性能向上技術には,パイプライン,スーパーパイプライン,スーパースカラー,分岐予測,リオーダー,リザベーション・ステーション,レジスタ・リネーム,アウト・オブ・オーダーなどがある。設計技術には,制御方式を含む論理技術,回路技術,ハードウエアを記述する記述言語,レイアウト技術,テスト技術などがある。CADツールには,回路シミュレータ,論理シミュレータ,レイアウトのデザイン・ルールをチェックするDRC,回路図とレイアウトを照合するLVSなどがある。さらに近年,論理合成ツールやシステム記述言語などが重要となった。性能はMIPS値,整数命令用のDhrystone値,浮動少数点命令用のWhetstone値,サーバー用SPEC値などで評価される。
実際のチップ設計に当たっては,内部バス方式の策定も重要である。内部バスには,8ビット機の時代でも,内部システムバス,命令フェッチバス,主演算ユニット内バス,レジスタファイル内バス,アドレス更新回路バスなどがあった。さらに,内部クロックバス,タイミング信号バス,電源バスも重要であった。
命令セット・アーキテクチャには,レジスタ構成,命令,データ長,アドレス指定方式などがある。プロセッサ・アーキテクチャには,ページングやセグメンテーションなどの仮想メモリー,メモリー管理と保護,1次キャッシュ・メモリーなどがある。システム・アーキテクチャには,システムバス,2次キャッシュ・メモリー,主メモリーなどがある。
80386までは命令セットとアーキテクチャに重点が置かれた
4ビット・マイクロプロセッサ4004(1971年,トランジスタ数は2238)の誕生から32ビット・マイクロプロセッサ80386(1985年,トランジスタ数は27万5000)までの14年間は,命令セット・アーキテクチャとプロセッサ・アーキテクチャの進化に重点が置かれた。トランジスタ技術を性能向上に本格的に使い始めたのは1989年に登場した80486からであった。
32ビット・マイクロプロセッサまでは破壊的イノベーションであり,それ以降は持続的イノベーションであったと言える。持続的イノベーション時代に入ったマイクロプロセッサは,高機能化と共に,キャッシュ・メモリーを含む性能向上技術を採用して高性能化を図り,巨大化への道を邁進している。
4ビット,8ビット,16ビット,32ビットなどの新種のマイクロプロセッサは,当初必ずと言っていいほど,低機能で,かつ小さなサイズで登場した。また,それらが持つ寿命は短かった。開発が簡単であったため,次から次へと,多種多様な新種のマイクロプロセッサが登場した。ビジネスという厳しい環境下では,市場や顧客にとって新鮮で魅力ある創造的な高機能化や高性能化などの巨大化を図れなかったものは淘汰された。しかし,新しい環境に合わせて,新種のマイクロプロセッサは登場し続けている。一旦,巨大化に成功すると,環境変化に強くなり,さらに寿命も長くなっている。
マイクロプロセッサは,フォン・ノイマン型計算機の宿命である逐次制御方式を採用している。性能はある仕事の処理を実行した時の純然たるその仕事のための処理時間で比較される。
処理時間 = サイクル・タイム x CPI x 命令数
開発の基本は右辺の3つの要因をいかに減らすかである。サイクル・タイムの減少はパイプライン技術と回路技術などを使い動作周波数の向上によりなされる。命令の平均実行クロック数(CPI)の減少は,命令を淀みなく実行させることが重要であるので,1次キャッシュ・メモリー,ランダム論理方式やPLA方式,マイクロプログラム論理方式などの命令実行制御技術,パイプライン技術と複数の命令を並列処理するス-パ-スカラー技術,分岐予測技術,命令やデータのプリフェッチ,データのメモリーへの格納時のバッファリングなどの採用によって実現される。プログラムの命令ステップ数の減少は命令セット・アーキテクチャとコンパイラの改良や応用に特化した命令の追加によりなされる。拡張命令として,32ビット・プロセッサでは,最初に浮動小数点命令が,次にビジネス用命令が,さらにマルチメディア命令が追加され,現在は3D用マルチメディア命令が追加されている。
プロセッサとメモリー(メモリー・セル自体)の性能は限りなく高性能化されているが,フォン・ノイマン型プロセッサの逐次処理のために,システムの性能は,プロセッサの性能,メモリーの性能,プロセッサとメモリー間のシステムバスのバスバンド幅などに左右される。そのためシステムの性能は,システムバスの動作周波数,データバス幅,パイプラインバスやバーストデータ転送やDRAMインタフェースなどを含むシステムバス構成方式,システムバス上の2次キャッシュ・メモリーなどにより大きな影響を受ける。
困難な最適化作業
広い意味でのアーキテクチャとは,「最適化を図りつつ,より多様な,より大きな問題を,より高速に,より柔軟に,より使い易く,より高い信頼度で処理し,かつ安く製造することを可能にするコンピュータに関する構造・枠組みや考え方・仕様」であると言われている。
マイクロプロセッサの開発においては,命令セットやプロセッサ,システムのアーキテクチャと実現方法,動作周波数などは,半導体プロセスと総トランジスタ数とチップ面積により大きな影響を受ける。したがって,マイクロプロセッサの開発とは,応用分野の要求を満たしつつ,マイクロプロセッサの仕様,半導体プロセス,チップサイズ,論理技術,性能向上技術,回路技術,レイアウト技術,消費電力,パッケージ,CADツール,開発期間,開発人数,開発費用との間での最適化設計を行うことである。マイクロプロセッサの開発は未完成の開発の連続であり,極限的に困難な最適化作業を求められるものだった。
最適化作業の難しさは,仕様の策定やチップへの実装を実際にやってみないと分からない点が多い。執筆予定の「私と4004」「私と8080」「私とZ80」は,チップサイズや開発期間などのプレッシャーの下での,マイクロプロセッサ開発の悪戦苦闘の物語となる。