【基本情報技術者試験対策】テクノロジ系の計算問題対策(2)「CPI とクロック周波数」

スポンサーリンク
IT系

はじめに

今回はコンピュータ構成要素の分野から、「CPI(Cycles Per Instruction)」と「クロック周波数」を用いた実行時間の計算問題を取り上げる。CPUの処理性能を数値で表す基本的な考え方であり、基本情報技術者試験では頻出のテーマである。

クロック周波数とは

クロック周波数とは、CPUが1秒間に何回の同期信号(クロック)を発生させるかを表す値であり、単位はHz(ヘルツ)で表される。例えば、クロック周波数が2GHzのCPUは、1秒間に20億回のクロックを刻むことになる。

クロック周期(1回のクロックにかかる時間)は、クロック周波数の逆数で求められる。

クロック周期 = 1 ÷ クロック周波数

例えば、クロック周波数が2GHzの場合、クロック周期は次のようになる。

$$ \begin{aligned} \text{クロック周波数} &= 2 \text{ GHz} = 2 \times 10^9 \text{ Hz} \\ \text{クロック周期} &= \frac{1}{\text{クロック周波数}} \\ &= \frac{1}{2 \times 10^9} \\ &= 0.5 \times 10^{-9} \text{ 秒} = 0.5 \text{ ナノ秒} \end{aligned} $$

CPIとは

CPI(Cycles Per Instruction)とは、1つの命令を実行するのに平均して何クロック必要かを表す値である。CPIが小さいほど、少ないクロック数で命令を実行できる、すなわち効率の良いCPUであるといえる。

実行時間の公式

CPUがプログラムを実行するのにかかる時間は、次の式で求められる。

実行時間 = 命令数 × CPI ÷ クロック周波数

この式は、次の3つの要素の掛け算・割り算として理解しておくとよい。

  • 命令数:プログラムが実行する命令の総数
  • CPI:1命令あたりの平均クロック数
  • クロック周波数:1秒あたりのクロック数

命令数とCPIを掛けると「総クロック数」が求まり、それをクロック周波数(1秒あたりのクロック数)で割ることで、実行にかかる時間(秒)が求まるという流れである。

総クロック数 = 命令数 × CPI
実行時間 = 総クロック数 ÷ クロック周波数

例題1

例題 
クロック周波数が800MHzのCPUがある。あるプログラムが1,000,000命令から構成されており、平均CPIが4であるとき、このプログラムの実行時間はいくらか。

解法

まず総クロック数を求める。

総クロック数 = 1,000,000 × 4 = 4,000,000 クロック

次に、クロック周波数で割って実行時間を求める。

$$ \begin{aligned} \text{実行時間} &= 4,000,000 \div (800 \times 10^6) \\ &= 4,000,000 \div 800,000,000 \\ &= 0.005 \text{ 秒} \\ &= 5 \text{ ミリ秒} \end{aligned} $$

したがって、実行時間は5ミリ秒となる。

例題2(複数命令の混在パターン)

実際の試験では、CPIが命令の種類によって異なる問題もよく出題される。

例題 
あるCPUのクロック周波数は1GHzである。あるプログラムは次の2種類の命令から構成されている。
命令A:600,000命令、CPIは2
命令B:400,000命令、CPIは5
このプログラムの実行時間を求めよ。

解法

命令の種類ごとに総クロック数を求め、合計する。

命令Aの総クロック数 = 600,000 × 2 = 1,200,000
命令Bの総クロック数 = 400,000 × 5 = 2,000,000
合計クロック数 = 1,200,000 + 2,000,000 = 3,200,000

クロック周波数($1\text{ GHz} = 10^9\text{ Hz}$)で割る。

$$ \begin{aligned} \text{実行時間} &= 3,200,000 \div (1 \times 10^9) \\ &= 3.2 \times 10^{-3} \text{ 秒} \\ &= 3.2 \text{ ミリ秒} \end{aligned} $$

したがって、実行時間は3.2ミリ秒となる。

単位換算で注意すべき点

CPIとクロック周波数の問題では、単位の換算ミスが失点の大きな原因になる。
特に以下の点に注意しよう。

  • HzとMHz、GHzの関係
    $$1\text{ MHz} = 10^6\text{ Hz}, \ \ 1\text{ GHz} = 10^9\text{ Hz}$$
  • 秒とミリ秒、ナノ秒の関係
    $$1\text{ミリ秒} = 10^{-3}\text{秒}, \ \ 1\text{ナノ秒} = 10^{-9}\text{秒}$$
  • 命令数の桁数
    問題文で「万命令」「百万命令」など日本語表記になっている場合は、桁を数値に正しく変換してから計算しよう

計算自体はシンプルな掛け算・割り算であるため、単位換算さえ丁寧に行えば、確実に得点できる分野である。

おわりに

CPIとクロック周波数の計算問題は、「命令数 × CPI ÷ クロック周波数」という基本式を押さえておけば、応用問題にも対応しやすい。次回は確率の分野から「乗法定理と加法定理」を取り上げる。

コメント

タイトルとURLをコピーしました