実行ユニット(CPUコンポーネント)
CPUの実行ユニットは、算術演算、論理演算、メモリアドレス計算などを実行するマイクロアーキテクチャ上の構成要素です。その構成、動作、発展を解説します。
概要
コンピュータ工学において、実行ユニットとは、命令で指定された操作を実行するCPUの一部である。命令を発行し、その順序を制御する中央制御ロジック(制御ユニット)とは区別される。実行ユニットは、算術演算、論理比較、浮動小数点演算、アドレス計算、その他の低水準の計算といった、プロセッサの実作業を担う。
構造と一般的な種類
実行ユニットは、比較的単純な整数演算論理ユニットの場合もあれば、複雑な機能ブロックの場合もある。一般的な種類には、次のものが含まれる。
- 整数ALU — 整数の加算、減算、ビット単位の演算、シフト演算を処理する(ALU)。
- 浮動小数点ユニット — 浮動小数点演算および超越関数演算を実装する(FPU)。
- ロード/ストアまたはアドレス生成ユニット — メモリアドレスを計算し、キャッシュおよびバスと接続する。
- 分岐ユニット — 分岐条件を評価し、分岐予測からの回復を支援する。
- ベクトル/SIMDユニット — 命令ごとに複数のデータ要素を処理し、並列的な数値演算を行う。
実行ユニットの動作
実行ユニットは通常、デコード済みのマイクロオペレーションを受け取り、制御信号に従って処理する。現代的な設計では、操作を複数の段階に分割するパイプライン化を用い、複数の命令を同時に異なる段階に置くことを可能にしている(パイプライン)。プロセッサには複数の並列ユニットが搭載されることが多く、複数の操作を同時に進行させられる。このような設計はスーパースカラと呼ばれる。さらに、リザベーションステーション、レジスタリネーミング、アウト・オブ・オーダー発行といったマイクロアーキテクチャ上の機能により、データ依存関係を守りつつ、ハードウェアは空いているユニットへ作業を振り分けることができる。
性能上の考慮事項
実行ユニットの寄与を表す代表的な指標は、レイテンシ(単一の操作が完了するまでの時間)とスループット(単位時間当たりに生成できる結果の数)である。パイプライン化は、操作列における見かけ上のレイテンシを低減し、スループットを高める。一方、より幅広いユニットや多数のユニットは、プロセッサが命令レベル並列性を活用する能力を向上させる。設計上のトレードオフには、面積、消費電力、そしてチップが対象とするワークロードの種類が含まれる。
歴史、変種と重要性
初期のCPUには実行ユニットが1基しかなかったが、時代とともに設計者は並列性を高めるため、パイプライン化、複数の機能ユニット、より複雑なスケジューリングを導入した。設計思想にも違いがある。スーパースカラ・コアはハードウェア内で動的にスケジューリングを行うのに対し、VLIWコアは並列操作をまとめる役割をコンパイラに依存する。現代のチップは専用アクセラレータやヘテロジニアスなユニットも統合しており、GPUやAIアクセラレータと並んで実行ユニットを配置し、特定分野のワークロードを処理する。
重要な区別
実行ユニットは命令セットの水準では大部分が見えないが、実際の性能を左右する。ユニットの構成と能力はプロセッサの得意分野を形作る。たとえば、多数の整数ユニットはサーバーのワークロードに適し、充実した浮動小数点およびベクトル資源は科学技術計算やマルチメディア処理に有利である。詳しくは、プロセッサのマイクロアーキテクチャに関する文献、またはベンダーのマニュアルを参照されたい。コンピュータ工学の資料、CPUアーキテクチャの概要、CPUドキュメントの個別実装に関する注記がある。
関連する話題には、命令パイプライン、分岐予測、アウト・オブ・オーダー実行、ハードウェアの複雑さとコンパイラの責務との均衡がある。技術的な背景については、制御とマイクロアーキテクチャの参考資料、およびALUの解説、FPUに関する説明、スーパースカラの概要、パイプライン化の入門にある実用的なガイドも参照できる。
関連項目
著者
AlegsaOnline.com 実行ユニット(CPUコンポーネント) Leandro Alegsa
URL: https://ja.alegsaonline.com/art/32901