CPU設計とは、
コンピュータのプロセッサをどのように設計するかを解説するものです。プロセッサは、
コンピュータの頭脳として、プログラムの実行を担う重要な部品です。その設計には、命令セットアーキテクチャ(ISA)の策定から、データパスや
制御装置の設計、メモリ構成、
クロック回路、そして最終的な実装まで、様々な要素が関わってきます。
プロセッサ設計の要素
プロセッサの設計には、以下のような要素が含まれます。
命令セットアーキテクチャ(ISA): プロセッサが理解し実行できる命令の体系を定義します。
データパス設計: 演算装置やパイプラインなど、データが流れる経路を設計します。
実行ユニットを、データの流れという観点から見たものがデータパスです。
制御装置の設計: データパスを制御する
論理回路を設計します。
レジスタ構成: データを一時的に保存する場所であるレジスタの構成を設計します。
メモリ構成: キャッシュなど、メモリの構造やインタフェースを設計します。
クロック回路: プロセッサの動作タイミングを決める
クロック信号を生成する回路を設計します。
パッドトランシーバ回路: チップと外部回路の接続を担う回路を設計します。
論理ゲートセルライブラリ: 論理回路を実装するための部品集であるライブラリを設計します。
高性能プロセッサでは、これらの要素をすべて独自に設計する必要がある場合もありますが、低価格プロセッサでは、既存の設計をIPとして購入したり、制御用
論理回路の実装技術を他の部分にも応用するなどして、実装負担を減らす場合があります。
プロセッサの制御方式
プロセッサの制御方式には、大きく分けて
マイクロプログラム方式と
ワイヤードロジック方式があります。
マイクロプログラム方式: 複雑な命令をマイクロ命令の組み合わせで実現します。
ワイヤードロジック方式: 論理回路で直接命令を実行します。
論理回路をハードウェアとして実装するには、以下のような技術が用いられます。
ディスクリート、回路モジュール: 初期には独立した部品や小さな基板に集積したもので構成されていました。
汎用ロジックIC: TTLやECLなどの規格に基づく汎用的な
集積回路です。
LSI (Large Scale Integration): 専用設計の
集積回路です。
マイクロプロセッサ以降では一般的です。
CMOS (Complementary Metal-Oxide-Semiconductor): 最近では最も一般的な
集積回路技術です。
ASIC (Application Specific Integrated Circuit): 特定の用途に特化した専用設計のLSIです。
プログラマブルロジックデバイス(PLD): ユーザが任意に
論理回路をプログラムできるLSIです。
プロセッサ設計のプロセス
プロセッサの設計プロセスは、以下のようになります。
1.
コンピュータ・アーキテクチャの設計: どのような
コンピュータを設計するかを決定します。
2.
命令セットアーキテクチャの設計: プログラマから見える命令セットを設計または選択します。
3.
マイクロアーキテクチャの設計: プログラマには見えない内部実装を設計または選択します。
4.
アーキテクチャ研究と性能モデリング: プロセッサの性能を評価するためのモデルを作成します。
5.
RTL設計と検証: レジスタ転送レベルでプロセッサの動作を記述し、検証します。
6.
性能上重要な部分の回路設計: キャッシュ、レジスタ、ALUなど、性能に影響を与える回路を設計します。
7.
論理合成または論理ゲートレベルの設計: 論理回路をゲートレベルで設計します。
8.
タイミング分析: 各回路が指定した周波数で動作することを確認します。
9.
論理ゲートの配置と配線などの物理設計: 論理ゲートをチップ上に配置し、配線します。
10.
RTL、ゲートレベル、トランジスタレベル、物理レベル、それぞれの等価性を検証: 設計の各段階で、設計が正しく行われていることを検証します。
11.
デザインルールチェックとシグナルインテグリティのチェック: 製造上のルールを満たしているか、信号の品質に問題がないかを確認します。
設計には、複雑な
論理回路の検証が重要な位置を占めます。
プロセッサ設計における重要な概念
プロセッサ設計における重要な概念には、以下のようなものがあります。
キャッシュメモリ: 高速なアクセスを可能にする小容量のメモリです。
仮想記憶: 物理メモリよりも大きなメモリ空間を扱うための技術です。
パイプライン: 命令の実行を複数の段階に分割し、並行処理を行うことで高速化する技術です。
スーパースケーラ: 複数の命令を同時に実行できるプロセッサです。
CISC (Complex Instruction Set Computer): 複雑な命令を持つプロセッサです。
RISC (Reduced Instruction Set Computer): 単純な命令を持つプロセッサです。
仮想機械: 異なるアーキテクチャの
コンピュータ上でプログラムを実行できるようにする技術です。
エミュレータ: ある
コンピュータを別の
コンピュータ上でシミュレートするプログラムです。
マイクロプログラム方式: 複雑な命令をマイクロ命令の組み合わせで実現する制御方式です。
スタック: データを一時的に保存するメモリ領域です。
プロセッサ設計の目標
プロセッサの設計において目標となるものには、以下のようなものがあります。
単一プログラム/スレッドの性能向上: プログラムを高速に実行できるようにします。
複数プログラム/スレッドのスループット向上: 複数のプログラムを効率的に実行できるようにします。
低消費電力: 消費電力を抑えます。
低価格: コストを抑えます。
接続性の強化: より大規模な並列システムを構築できるようにします。
特定市場向けの特化: 特定の用途に特化したプロセッサを設計します。
これらの目標は、製造プロセスの微細化によって、ある程度達成できる場合があります。微細化によって、トランジスタのスイッチング速度が向上し、
消費電力が減少し、コストが削減されます。また、同じダイサイズでプロセッサコアを縮小すると、空いた面積にキャッシュや複数のプロセッサコアを集積できるようになり、性能が向上し、システム全体のコストを削減できます。
プロセッサの性能評価
初期の
コンピュータでは、命令の実行時間で性能を評価していましたが、現在では、
ベンチマークプログラムを用いた計測が一般的です。
ベンチマークプログラムは、様々な処理を実行し、その性能を評価します。主な
ベンチマークには、以下のようなものがあります。
Whetstone: 浮動小数点演算の性能を評価します。
Dhrystone: 整数演算や文字列処理の性能を評価します。
SPECシリーズ: 様々な用途の性能を評価します。
HPL: 大規模な連立一次方程式を解くコードによる、科学技術計算向けの性能を評価します。
HPCG: 共役勾配法の計算による、科学技術計算向けの性能を評価します。
EEMBC ConsumerMark: 組込み機器向けの性能を評価します。
また、性能だけでなく、価格、
消費電力、1ワット当たりの性能、リアルタイム性、命令セット、大きさ、質量、環境への影響なども評価の対象になります。
プロセッサの市場
プロセッサの市場は、大きく分けて汎用コンピューティング、科学技術計算、組込み向けの3つがあります。
汎用コンピューティング: パーソナル
コンピュータや
サーバ向けの市場で、
インテルの
IA-32アーキテクチャが大きなシェアを占めています。
科学技術計算: 研究機関や大学向けの市場で、大規模な計算処理を必要とする分野です。
*
組込み向け設計: 携帯電話、時計、航空機、自動車など、様々な機器に組み込まれるプロセッサの市場です。低価格、低
消費電力が求められます。
これらの市場では、それぞれプロセッサに求められるものが異なるため、特定の市場向けに設計されたプロセッサは、他の市場には適さない場合があります。
ハイエンドプロセッサの開発コスト
ハイエンドプロセッサの開発には、多大なコストがかかります。論理設計や論理検証に多数の人員が必要で、シミュレーションにも多くの
コンピュータを利用します。また、高い動作周波数を実現するためには、大規模な
回路設計チームと最新の製造プロセスが必要です。ハイエンド
CPUの設計コストは1億ドルのオーダーになることもあります。開発には5年程度かかるため、競争力を維持するためには複数の開発チームを並行して運営する必要もあります。
ソフトプロセッサとは、FPGAなどの
プログラマブルロジックデバイス上に実装されるプロセッサのことです。柔軟な設計が可能で、特定用途に特化したプロセッサを容易に作成できます。
まとめ
CPU設計は、
コンピュータの性能を左右する非常に重要な分野です。高性能なプロセッサを設計するためには、アーキテクチャ、
回路設計、実装技術、そして性能評価に関する深い知識が必要です。また、市場のニーズを理解し、適切な目標を設定することが不可欠です。