基本情報技術者 2011年 春期 午前(科目A) 問11
問題文
主記憶のアクセス時間60ナノ秒、キャッシュメモリのアクセス時間10ナノ秒のシステムがある。キャッシュメモリを介して主記憶にアクセスする場合の実効アクセス時間が15ナノ秒であるとき、キャッシュメモリのヒット率は幾らか。
選択肢
ア:0.1
イ:0.17
ウ:0.83
エ:0.9(正解)
🔒 解説は解答すると表示されます
キャッシュのヒット率計算【午前解説】
正解の理由
正解: エ
実効アクセス時間(EAT)は「ヒット時の時間 × ヒット率 + ミス時の時間 × ミス率」で表されます。ここでヒット率を とすると、
実効アクセス時間(EAT)は「ヒット時の時間 × ヒット率 + ミス時の時間 × ミス率」で表されます。ここでヒット率を とすると、
これを解くと
よって
したがって正解は エ(0.9)です。
解法ステップ
- ヒット率を と置く。ミス率は 。
- 実効アクセス時間の式を立てる: 。
- 与えられた を代入して方程式を解く: 。
- 代数的に整理して を算出する。
- 選択肢と照合して エ を選ぶ。
別表現(ミス率 を使う場合):
ここで 。すなわち より 、従って 。
選択肢別の誤答解説
- ア: 0.1
ミス率(1-h)をそのままヒット率と混同した場合の誤答です。実際はミス率が0.1でヒット率が0.9です。 - イ: 0.17
0.17は選択肢のうち誤差が大きく、式を誤って のように入れ替えてしまったり、別の割り算ミスから生じます。式の立て方を確認してください。 - ウ: 0.83
のように、ミスペナルティと主記憶時間を誤って比率化した結果、ヒット率と混同した誤答パターンです。ヒット率は加重平均から求める必要があります。 - エ: 0.9(正解)
正しい式 を解いて と導けます。
よくある誤解
- ミス率とヒット率を逆に扱う:式における係数(10 と 60)の掛け合わせる対象を逆にすると誤答になります。
- ミスペナルティだけで判断する:ミスペナルティは ns ですが、EAT式を正しく組み立てないと簡単な値の混同で間違えます。
- 単位の不一致を見落とす:ns の単位が混在すると計算が破綻します。常に同じ単位で扱ってください。
補足コラム
- 別の考え方:EAT を「キャッシュ時間 + ミス率 × ミスペナルティ」で表すと直感的に理解しやすく、今回では より 、 と同じ結論が得られます。
- マルチレベルキャッシュの場合は、各レベルのヒット率・アクセス時間を順に加味して総合の EAT を求めます。
- 参考の簡単な計算(Python例):
cache = 10.0
main = 60.0
EAT = 15.0
h = (main - EAT) / (main - cache)
print(h) # 0.9
FAQ
Q1: 式はいつも「ヒット時間×h + ミス時間×(1-h)」で良いですか?
A1: はい。キャッシュヒットとミスは排他的なので、実効時間はその加重平均で表せます。多段キャッシュや書き込み方式が異なる場合は式に追加項目が必要です。
A1: はい。キャッシュヒットとミスは排他的なので、実効時間はその加重平均で表せます。多段キャッシュや書き込み方式が異なる場合は式に追加項目が必要です。
Q2: 単位が違う場合どうしますか?
A2: 必ず同じ単位(ここではns)に揃えて計算してください。混在させると誤答になります。
A2: 必ず同じ単位(ここではns)に揃えて計算してください。混在させると誤答になります。
Q3: ミスペナルティとは何ですか?
A3: ミスペナルティは「主記憶のアクセス時間 − キャッシュのアクセス時間」で、ミス時に余分にかかる遅延のことです。
A3: ミスペナルティは「主記憶のアクセス時間 − キャッシュのアクセス時間」で、ミス時に余分にかかる遅延のことです。
関連キーワード: キャッシュメモリ、ヒット率、実効アクセス時間、ミスペナルティ、平均アクセス時間、キャッシュ設計

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

