命令あたりのサイクル数

コンピュータアーキテクチャにおいて、命令あたりのサイクル数(別名:命令あたりのクロックサイクル数命令あたりのクロック数、またはCPI)は、プロセッサのパフォーマンスの1つの側面であり、プログラムまたはプログラムフラグメントの命令あたりのクロックサイクル数の平均です。 [ 1 ] これは、サイクルあたりの命令数逆数です。

意味

特定のプロセスにおける命令あたりのサイクル数 ( CPI )の平均は、次の加重平均によって定義されます。

CP:=ΣCCCCΣCCCΣC{\displaystyle \mathrm {CPI} :={\frac {\Sigma _{i}(\mathrm {IC} _{i})(\mathrm {CC} _{i})}{\mathrm {IC} }}={\frac {\Sigma _{i}(\mathrm {IC} _{i}\cdot \mathrm {CC} _{i})}{\Sigma _{i}(\mathrm {IC} _{i})}}

ここで、 は特定の命令タイプの命令数、はその命令タイプのクロックサイクル、は総命令数です。合計は、特定のベンチマークプロセスにおけるすべての命令タイプを合計したものです。 C{\displaystyle \mathrm {IC} _{i}}{\displaystyle i}CC{\displaystyle \mathrm {CC} _{i}}CΣC{\displaystyle \mathrm {IC} =\Sigma _{i}(\mathrm {IC} _{i})}

説明

次の 5 つのステージを持つ 従来の RISC パイプラインを想定します。

  1. 命令フェッチ サイクル (IF)。
  2. 命令デコード/レジスタフェッチサイクル (ID)。
  3. 実行/有効アドレス サイクル (EX)。
  4. メモリアクセス (MEM)。
  5. ライトバックサイクル (WB)。

各ステージは 1 クロック サイクルを必要とし、命令はステージを順番に通過します。パイプライン処理を行わない場合、マルチサイクル プロセッサは、前の命令がステージ 5 で終了した後にのみステージ 1 で新しい命令がフェッチされるため、命令の実行にかかるクロック サイクル数は 5 になります (CPI = 5 > 1)。この場合、プロセッサはサブスカラーと呼ばれます。パイプライン処理を行う場合、命令レベルの並列処理を利用してクロック サイクルごとに新しい命令がフェッチされるため、理論的には 5 つのパイプライン ステージに同時に 5 つの命令を配置できるため (ステージごとに 1 つの命令)、クロック サイクルごとに異なる命令がステージ 5 を完了し、平均して命令の実行にかかるクロック サイクル数は 1 (CPI = 1) になります。この場合、プロセッサはスカラーと呼ばれます。

単一実行ユニットのプロセッサでは、達成可能な最高の CPI は 1 です。ただし、複数実行ユニットのプロセッサでは、さらに優れた CPI 値 (CPI < 1) を実現できます。この場合、プロセッサはスーパースカラーと呼ばれます。パイプラインを使用せずに CPI 値を向上させるには、実行ユニットの数がステージ数より多くなければなりません。たとえば、6 つの実行ユニットがある場合、前の 6 つの命令がステージ 5 で終了した後にのみ、ステージ 1 で 6 つの新しい命令がフェッチされるため、平均して命令の実行にかかるクロック サイクル数は 5/6 (CPI = 5/6 < 1) になります。パイプラインを使用して CPI 値を向上させるには、少なくとも 2 つの実行ユニットが必要です。たとえば、実行ユニットが 2 つある場合、命令レベルの並列性を利用して 2 つの新しい命令がクロック サイクルごとにフェッチされるため、2 つの異なる命令がクロック サイクルごとにステージ 5 を完了し、平均して命令の実行にかかるクロック サイクル数は 1/2 (CPI = 1/2 < 1) になります。

例1

マルチサイクルMIPSには、次の 5 種類の命令があります。

プログラムに次の内容が含まれている場合:

  • 50% ロード命令
  • 25% 店舗指示
  • 15% R型指示
  • 8% 分岐命令
  • 2%ジャンプ指示

すると、CPIは次のようになります。

消費者物価指数5×50+4×25+4×15+3×8+3×21004.4{\displaystyle {\text{CPI}}={\frac {5\times 50+4\times 25+4\times 15+3\times 8+3\times 2}{100}}=4.4}

例2 [ 2 ]

400 MHzプロセッサを使用して、次の命令ミックスクロック サイクル数 でベンチマーク プログラムを実行しました。

命令タイプ 命令数 クロックサイクル数
整数演算 45000 1
データ転送 32000 2
浮動小数点 15000 2
制御権の移転 8000 2

このプログラムの有効な CPI、MIPS (1 秒あたりの命令数) レート、および実行時間を決定します。

消費者物価指数45000×1+32000×2+15000×2+8000×21000001550001000001.55{\displaystyle {\text{CPI}}={\frac {45000\times 1+32000\times 2+15000\times 2+8000\times 2}{100000}}={\frac {155000}{100000}}=1.55}

400MHz400000000Hz{\displaystyle 400\,{\text{MHz}}=400,000,000\,{\text{Hz}}}

以来:そしてミップス1/消費者物価指数{\displaystyle {\text{MIPS}}\propto 1/{\text{CPI}}}ミップスクロック周波数{\displaystyle {\text{MIPS}}\propto {\text{クロック周波数}}}

効果的なプロセッサパフォーマンスミップスクロック周波数消費者物価指数×1100万{\displaystyle {\text{実効プロセッサ性能}}={\text{MIPS}}={\frac {\text{クロック周波数}}{\text{CPI}}}\times {\frac {1}{\text{100万}}}}4000000001.55×100万4001.55258ミップス{\displaystyle ={\frac {400,000,000}{1.55\times 1000000}}={\frac {400}{1.55}}=258\,{\text{MIPS}}}

したがって:

Execution time(T)=CPI×Instruction count×clock time=CPI×Instruction Countfrequency{\displaystyle {\text{Execution time}}(T)={\text{CPI}}\times {\text{Instruction count}}\times {\text{clock time}}={\frac {{\text{CPI}}\times {\text{Instruction Count}}}{\text{frequency}}}}=1.55×100000400×1000000=1.554000=0.0003875sec=0.3875ms{\displaystyle ={\frac {1.55\times 100000}{400\times 1000000}}={\frac {1.55}{4000}}=0.0003875\,{\text{sec}}=0.3875\,{\text{ms}}}

参照

参考文献

  1. ^パターソン、デイビッド・A.、ヘネシー、ジョン・L. (1994). 『コンピュータの構成と設計:ハードウェア/ソフトウェア・インターフェース』 モーガン・カウフマン. ISBN 9781558602816
  2. ^ Kai Hwang著『Advanced Computer Architecture』第1章、演習問題1.1