コンピュータアーキテクチャにおいて、命令あたりのサイクル数(別名:命令あたりのクロックサイクル数、命令あたりのクロック数、またはCPI)は、プロセッサのパフォーマンスの一側面であり、プログラムまたはプログラムフラグメントの命令あたりの平均クロックサイクル数です。 [ 1 ] これは、サイクルあたりの命令数の乗法逆数です。
特定のプロセスにおける命令あたりのサイクル数(CPI)の平均値は、以下の加重平均によって定義されます。
どこ特定の命令タイプに対応する命令数、その命令タイプのクロックサイクル数とこれは命令の総数です。この合計値は、特定のベンチマークプロセスにおけるすべての命令タイプについて合計したものです。
典型的なRISCパイプラインを想定すると、以下の5つのステージがあります。
各ステージは 1 クロック サイクルを要し、命令はステージを順次通過します。パイプライン処理がない場合、マルチ サイクル プロセッサでは、ステージ 5 で前の命令が完了した後にのみステージ 1 で新しい命令がフェッチされるため、命令の実行に必要なクロック サイクル数は 5 です (CPI = 5 > 1)。この場合、プロセッサはサブスカラであると言われます。パイプライン処理がある場合、命令レベルの並列性を利用して、クロック サイクルごとに新しい命令がフェッチされるため、理論的には 5 つのパイプライン ステージに同時に 5 つの命令 (ステージごとに 1 つの命令) が存在する可能性があるため、異なる命令がクロック サイクルごとにステージ 5 を完了し、平均して命令の実行に必要なクロック サイクル数は 1 (CPI = 1) になります。この場合、プロセッサはスカラであると言われます。
単一実行ユニットのプロセッサでは、達成可能な最高の CPI は 1 です。しかし、複数実行ユニットのプロセッサでは、さらに優れた CPI 値 (CPI < 1) を達成できます。この場合、プロセッサはスーパースカラであると言われます。パイプライン処理なしでより良い CPI 値を得るには、実行ユニットの数がステージ数より多くなければなりません。たとえば、6 つの実行ユニットがある場合、ステージ 5 で 6 つの前の命令が完了した後にのみ、ステージ 1 で 6 つの新しい命令がフェッチされるため、命令を実行するのにかかるクロック サイクル数は平均 5/6 です (CPI = 5/6 < 1)。パイプライン処理でより良い CPI 値を得るには、少なくとも 2 つの実行ユニットが必要です。たとえば、2 つの実行ユニットがある場合、命令レベルの並列性を利用してクロック サイクルごとに 2 つの新しい命令がフェッチされるため、クロック サイクルごとに 2 つの異なる命令がステージ 5 を完了し、命令を実行するのにかかるクロック サイクル数は平均 1/2 です (CPI = 1/2 < 1)。
マルチサイクルMIPSには、5種類の命令があります。
プログラムに以下が含まれている場合:
すると、CPIは次のようになります。
出典:[ 2 ]
400MHzプロセッサを使用して、以下の命令構成とクロックサイクル数でベンチマークプログラムを実行しました。
このプログラムの実効CPI、MIPS(1秒あたりの命令実行数)、および実行時間を算出してください。
以来:そして
したがって: