基本情報技術者(FE)対策

性能の計算

性能の計算は単位をそろえるだけ

性能の問題は、公式を覚えるというより、時間と回数の単位をそろえる作業です。ギガ、ミリ、ナノが混ざった状態で計算しようとすると桁を落とします。最初にすべて秒と個に直してから式を立てるのが型です。

出題は CPU の速度、記憶装置の実効アクセス時間、データの転送時間の 3 つに集まります。

クロックと CPI から命令の速度を出す

クロック周波数は 1 秒間に何回の拍を刻むかを表します。2 GHz なら 1 秒に 20 億回です。1 拍にかかる時間はその逆数で、1 / 2000000000 秒、つまり 0.5 ナノ秒です。

CPI は 1 命令の実行に必要な平均クロック数です。CPI が 4 なら、1 命令に 0.5 ナノ秒 × 4 で 2 ナノ秒かかります。1 秒は 10 億ナノ秒なので、1 秒間に実行できる命令数は 10 億 / 2 で 5 億命令です。

MIPS は 1 秒間に実行できる命令数を 100 万単位で表した指標なので、5 億命令は 500 MIPS になります。

命令ミックスは重み付き平均

実際の出題では、命令の種類ごとにクロック数と出現割合が表で与えられます。求めるのは平均 CPI で、割合を重みにした平均を取ります。

命令の種類必要クロック数出現割合
演算命令260 パーセント
分岐命令540 パーセント

平均 CPI は 2 × 0.6 + 5 × 0.4 で、1.2 + 2.0 = 3.2 クロックです。クロック周波数が 1.6 GHz なら 1 拍は 0.625 ナノ秒なので、1 命令は 3.2 × 0.625 で 2 ナノ秒、やはり 500 MIPS になります。

割合の合計が 1 になっているかを必ず確かめてください。表に 3 種類以上並んでいて合計が 1 にならない問題は、読み落としがあります。

実効アクセス時間もまた重み付き平均

キャッシュメモリは、よく使うデータを高速な記憶装置に置いておくしくみです。目的のデータがキャッシュにあることをヒット、なければミスヒットと呼びます。

平均してどれくらいの時間がかかるかは、ヒット率を重みにした平均で求めます。

実効アクセス時間 = ヒット率 x キャッシュのアクセス時間 + (1 - ヒット率) x 主記憶のアクセス時間

キャッシュが 10 ナノ秒、主記憶が 100 ナノ秒、ヒット率が 0.9 のときを計算します。0.9 × 10 = 9、0.1 × 100 = 10 で、合計 19 ナノ秒です。9 割がキャッシュで済んでいても、残り 1 割が全体の半分以上の時間を占めている点が読みどころです。ヒット率がわずかに下がるだけで実効アクセス時間が跳ね上がる、という出題につながります。

転送時間はデータ量を速度で割る

転送時間はデータ量を転送速度で割るだけですが、バイトとビットの取り違えが起きます。100 M バイトのデータを 200 M バイト毎秒で送るなら 0.5 秒です。同じデータを 200 M ビット毎秒の回線で送るなら、100 M バイトは 800 M ビットなので 4 秒かかり、8 倍違います。

問題文の速度が bps と書かれていたら、それはビット毎秒です。データ量がバイトで与えられていたら 8 倍してからそろえます。

応答時間の言葉の区別

ターンアラウンドタイムは、依頼を出してから結果がすべて返るまでの時間です。レスポンスタイムは、依頼を出してから最初の反応が返るまでの時間です。バッチ処理の評価にはターンアラウンドタイム、対話処理の評価にはレスポンスタイムを使う、という対応で問われます。

生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア
編集 LuaGate編集部