実行ユニットの役割と種類
実行ユニットとは、プロセッサ内で micro ops を実行するためのユニットです。これにより、プロセッサはプログラムが与えた命令を処理し、正しい結果を導き出します。プロセッサ自体は単体で機能するのではなく、その内部で様々な処理が行われることによって、命令の実行が可能になります。
プロセッサと命令実行の関係
プロセッサは、与えられたプログラムの命令を実行する役割を果たしますが、命令の実装方法はプロセッサによって異なるため、任意の実行方法が採用されます。一般的にプロセッサでは、一つの命令をより基本的な操作、すなわち micro ops の集まりに分解して処理します。この micro ops が実行ユニットによって実行されます。
micro ops の多様性
micro ops には、加算、乗算、論理演算、浮動小数点計算など多くの異なる種類があり、それぞれに対応した様々なタイプの実行ユニットが存在します。これらは大きく分けて、以下のようなカテゴリに分類されています:
- - ALU(Arithmetic Logic Unit): 整数演算や論理演算を担当。
- - FPU(Floating Point Unit): 浮動小数点演算専用。
- - AGU(Address Generation Unit): アドレス生成を行うユニット。
それぞれのマイクロアーキテクチャにおいては、実行ユニットの数や性能が大きく異なります。例えば、AMD EPYC™ 7003プロセッサは、整数演算を処理するために、ALUを4つ備えており、さらにALU1は特定の命令に対処する能力を有しています。
スーパースカラー方式の実行ユニット
実行ユニットが独立して動作する構造を持つ方式を「スーパースカラー」と呼びます。この構造では、複数の実行ユニットが同時に作業を行うことができ、その結果として micro ops の並行処理が可能になります。これにより、効率的に複数の命令を同時に実行することができ、全体の処理性能が向上します。
プロセッサの進化
従来のプロセッサは、主に制御装置と演算装置に分けられていましたが、時代が進むにつれて機能や性能の面での向上が求められるようになりました。その結果、プロセッサはパイプライン化され、複数のパイプラインを同時に動かす設計が採用されるようになりました。これにより、制御装置は「命令をディスパッチするもの」として位置づけられ、対して「実行ユニット」は「命令をディスパッチされるもの」として分類されるようになりました。
このように、実行ユニットはプロセッサ内部での命令実行に欠かせない重要な役割を持っており、マイクロアーキテクチャの進展に伴い、その構成や機能も高度に進化してきています。