マイクロアーキテクチャにおける実行ユニット(じっこうゆにっと、: Execution unit)は micro ops を実行するユニットである[1]。すなわちプロセッサ内部において各サイクルごとの実演算を担うユニットである。

概要 編集

プロセッサの役割はプログラムから与えられた命令を実行し正しい結果を得ることである。一方で処理の実装方法は命令で規定されておらず、それぞれのプロセッサに実装方法が委ねられている。多くのプロセッサでは各プロセッサ命令に1:1対応する回路を持つのではなく、1つのプロセッサ命令をよりシンプルな micro ops の集まりへと分解する。この micro ops を実行する主体が実行ユニットである。

micro ops には加算・乗算・論理演算・浮動小数点計算など様々な種類があるため、それに対応して実行ユニットにも様々なタイプがある。大きな括りとしてはALU(int演算・論理演算担当)[2]FPU(浮動小数点演算担当)、Address Generation Unit; AGU[3] などがある。

各マイクロアーキテクチャによって実行ユニットの数や能力は大きく異なる。例えば AMD EPYC™ 7003 Processors は整数演算に関してALU1~4と区別される4つの実行ユニットをもち、ALU1は更に Parallel Bits Extract; PEXT 命令の処理能力を持っている[4]

独立して動く実行ユニットが複数ある様式をスーパースカラーという。複数の実行ユニットが並行して動作するため micro ops の並行処理が可能になる。

古く[いつ?]は、プロセッサの構成は、単に制御装置と演算装置に分けられていた。しかし、機能と性能の向上のため、パイプライン化され、また複数のパイプラインを並行動作させるようになった。このため、制御装置を「命令をディスパッチするもの」とし、それに対し「命令をディスパッチされるもの」である「実行ユニット」という分類が使われるようになった[5]

編集

  1. ^ "micro ops (the primitive operations executed in the processor's execution units)." AMD. (2020). Software Optimization Guide for AMD EPYC™ 7003 Processors. rev. 3.00.
  2. ^ "an ALU capable of general purpose integer operations." AMD. (2020). Software Optimization Guide for AMD EPYC™ 7003 Processors. rev. 3.00.
  3. ^ "There are three Address Generation Units (AGUs) for all load and store address generation." AMD. (2020). Software Optimization Guide for AMD EPYC™ 7003 Processors. rev. 3.00.
  4. ^ "The processor contains 4 general purpose integer execution pipes. ... ALU1 additionally has multiply/CRC/PDEP/PEXT capability" AMD. (2020). Software Optimization Guide for AMD EPYC™ 7003 Processors. rev. 3.00.
  5. ^ ここで使っている用語の「ディスパッチ」は「発行」という意味であるが、OSなどでコンテキストをスイッチするという意味で使われるそれとは無関係。en:Superscalar processorを見ればわかるがプロセッサ設計の用語として一般に使われるもの。