基本情報技術者試験過去問 令和6年度(2024年)科目A問3
図に示す構成で,表に示すようにキャッシュメモリと主記憶のアクセス時間だけが異なり,他の条件は同じ2種類のCPU XとYがある。
あるプログラムをCPU XとYとでそれぞれ実行したところ,両者の処理時間が等しかった。このとき,キャッシュメモリのヒット率は幾らか。ここで,CPU以外の処理による影響はないものとする。
選択肢
- ア:0.75
- イ:0.90
- ウ:0.95
- エ:0.96
- ア
- イ
- ウ
- エ
正解と解き方・学習ポイント(AI解説)
CPU XとCPU Yはキャッシュメモリと主記憶のアクセス時間だけが異なり、他の条件は同じです。処理時間が等しいので、両CPUの実効アクセス時間が等しいと考えます。実効アクセス時間 = ヒット率×キャッシュアクセス時間 + (1-ヒット率)×主記憶アクセス時間 を用いて等式を立てて解くと、ヒット率は0.90になります。
Point
キャッシュメモリのヒット率と実効アクセス時間の関係を理解し、条件(処理時間が等しい)から実効アクセス時間の等式を作ってヒット率を計算できるようになることを目的としています。
解くために必要な知識
この問題を解くには、ヒット率と実効アクセス時間の関係を理解しておく必要があります。
用語の整理
| 用語 | 意味 |
|---|---|
| キャッシュメモリ | CPUが主記憶へアクセスする回数を減らすために使う、CPUに近い高速な記憶装置です。 |
| 主記憶 | プログラムやデータを保持するメインの記憶装置です。キャッシュメモリより低速です。 |
| ヒット率 | 必要なデータがキャッシュメモリに存在し、キャッシュメモリだけで読める割合です。0から1で表します。 |
| 実効アクセス時間 | キャッシュメモリと主記憶を併用したときの平均的なアクセス時間です。 |
| アクセス時間 | 記憶装置に読み書きを要求してから完了するまでの時間です。 |
実効アクセス時間の基本
考え方
アクセスは次の2通りに分かれます。
-
ヒットする場合はキャッシュメモリの時間がかかります。
-
ミスする場合は主記憶の時間がかかります。
公式
実効アクセス時間 = ヒット率×キャッシュアクセス時間 + (1-ヒット率)×主記憶アクセス時間
この問題での使い方
-
CPU XとCPU Yで処理時間が等しいので、実効アクセス時間も等しいと考えます。
-
それぞれに同じヒット率 h を置き、2つの実効アクセス時間を等式にして h を求めます。
問題の解法手順
解く手順
1. 表からアクセス時間を整理する
| キャッシュメモリ(ナノ秒) | 主記憶(ナノ秒) | |
|---|---|---|
| CPU X | 40 | 400 |
| CPU Y | 20 | 580 |
2. 実効アクセス時間の式を立てる
ヒット率を h とします。
実効アクセス時間 = h×キャッシュアクセス時間 + (1-h)×主記憶アクセス時間
CPU X:
実効アクセス時間 = h×40 + (1-h)×400
= 40h + 400 - 400h
= 400 - 360h
CPU Y:
実効アクセス時間 = h×20 + (1-h)×580
= 20h + 580 - 580h
= 580 - 560h
3. 処理時間が等しい条件で等式を作る
CPU以外の影響がないため、処理時間が等しいことは実効アクセス時間が等しいこととして扱います。
400 - 360h = 580 - 560h
4. 方程式を解く
560h - 360h = 580 - 400
200h = 180
h = 180 / 200
h = 0.90
よって、ヒット率は0.90です。
選択肢ごとの解説
- ア:不正解
ヒット率が0.75だと、CPU Xは 400 - 360×0.75 = 130(ナノ秒)、CPU Yは 580 - 560×0.75 = 160(ナノ秒)で等しくなりません。よって誤りです。
- イ:正解
ヒット率が0.90だと、CPU Xは 400 - 360×0.90 = 76(ナノ秒)、CPU Yは 580 - 560×0.90 = 76(ナノ秒)となり等しくなるため正解です。
- ウ:不正解
ヒット率が0.95だと、CPU Xは 400 - 360×0.95 = 58(ナノ秒)、CPU Yは 580 - 560×0.95 = 48(ナノ秒)で等しくなりません。よって誤りです。
- エ:不正解
ヒット率が0.96だと、CPU Xは 400 - 360×0.96 = 54.4(ナノ秒)、CPU Yは 580 - 560×0.96 = 42.4(ナノ秒)で等しくなりません。よって誤りです。
まとめ
CPU XとCPU Yはキャッシュメモリと主記憶のアクセス時間だけが異なり、他の条件は同じです。処理時間が等しいので、両CPUの実効アクセス時間が等しいと考えます。実効アクセス時間 = ヒット率×キャッシュアクセス時間 + (1-ヒット率)×主記憶アクセス時間 を用いて等式を立てて解くと、ヒット率は0.90になります。
ヒット率が0.75だと、CPU Xは 400 - 360×0.75 = 130(ナノ秒)、CPU Yは 580 - 560×0.75 = 160(ナノ秒)で等しくなりません。よって誤りです。
ヒット率が0.90だと、CPU Xは 400 - 360×0.90 = 76(ナノ秒)、CPU Yは 580 - 560×0.90 = 76(ナノ秒)となり等しくなるため正解です。
ヒット率が0.95だと、CPU Xは 400 - 360×0.95 = 58(ナノ秒)、CPU Yは 580 - 560×0.95 = 48(ナノ秒)で等しくなりません。よって誤りです。
ヒット率が0.96だと、CPU Xは 400 - 360×0.96 = 54.4(ナノ秒)、CPU Yは 580 - 560×0.96 = 42.4(ナノ秒)で等しくなりません。よって誤りです。