マナビング基本情報技術者

キャッシュメモリのヒット率を処理時間が等しい条件から求める

基本情報技術者試験 令和6年度 問3 / コンピュータ構成要素 › メモリ

過去問にチャレンジ

令和6年度 問3

図に示す構成で,表に示すようにキャッシュメモリと主記憶のアクセス時間だけが異なり,他の条件は同じ2種類のCPU XとYがある。あるプログラムをCPU XとYとでそれぞれ実行したところ,両者の処理時間が等しかった。このとき,キャッシュメモリのヒット率は幾らか。ここで,CPU以外の処理による影響はないものとする。

令和6年度 問3の図
  1. ア

    0.75

  2. イ

    0.90

  3. ウ

    0.95

  4. エ

    0.96

会話形式の解説

講師講師
今回は、キャッシュメモリのヒット率を逆算する計算問題です。注目するのは表のアクセス時間と、2つのCPUの処理時間が等しいという条件です。この条件をどう式にするかが鍵になります。
受験者受験者
図にキャッシュが256kバイト、主記憶が256Mバイトと書いてあるので、まずこの容量を使うのかと思って手が止まりました。
講師講師
数値が出てくると使いたくなりますが、この計算に容量は使いません。必要なのはアクセス時間だけです。まず、CPUがデータを読むときの流れを確認しましょう。CPUはまずキャッシュメモリを探し、そこになければ主記憶にアクセスします。キャッシュで見つかる割合がヒット率です。
受験者受験者
見つからない割合は1からヒット率を引いたもの、つまりミス率ですね。
講師講師
そのとおりです。ヒット率をhとすると、平均アクセス時間は「キャッシュの時間×h+主記憶の時間×(1−h)」という加重平均、つまり割合で重みを付けた平均で表せます。CPU Xで式を作ってみてください。
受験者受験者
キャッシュが40ナノ秒、主記憶が400ナノ秒なので、40h+400(1−h)です。展開すると400−360hになります。
講師講師
正しいです。CPU Yはキャッシュが20ナノ秒、主記憶が580ナノ秒なので、20h+580(1−h)=580−560hです。ここで、両方のCPUで同じhを使ってよい理由は分かりますか。
受験者受験者
同じプログラムを動かしているからでしょうか。
講師講師
それに加えて、キャッシュ容量など他の条件が同じで、違うのはアクセス時間だけだと問題文にあります。だから同じプログラムを実行すればヒット率も同じとみなせます。あとは処理時間が等しいので、2つの式を等号で結びます。
受験者受験者
400−360h=580−560hなので、200h=180で、h=0.90です。
講師講師
検算もしておきましょう。h=0.90を代入すると、Xは400−324=76ナノ秒、Yは580−504=76ナノ秒で一致します。ほかの選択肢も代入すると違いが分かります。0.75ではXが130ナノ秒、Yが160ナノ秒で、Yのほうが遅くなります。
受験者受験者
0.95だとXが58ナノ秒、Yが48ナノ秒、0.96だとXが54.4ナノ秒、Yが42.4ナノ秒で、どちらもYのほうが速くなりますね。ヒット率が高いとキャッシュの速いYが有利になり、低いと主記憶の速いXが有利になる、その境目が0.90ということですか。
講師講師
よい捉え方です。式を立てるのが苦手なときは、今のように各選択肢のヒット率を両方の式に代入して、値が一致するものを探す方法でも解けます。計算に時間がかかりやすいなら、式を解いたあとに一度代入して確かめる習慣をつけると、計算ミスを防げます。
受験者受験者
「処理時間が等しい」は2つの式を等号で結ぶ合図で、容量の数値は使わない、と覚えておきます。

まとめ

この問題は、アクセス時間だけが異なる2種類のCPUで処理時間が等しいという条件から、キャッシュメモリのヒット率を求める計算問題です。ヒット率をhとすると、平均アクセス時間は「キャッシュの時間×h+主記憶の時間×(1−h)」で表せ、CPU Xは400−360h、CPU Yは580−560hになります。キャッシュ容量など他の条件が同じで同じプログラムを実行するので、ヒット率は共通とみなし、両式を等しいとおくとh=0.90が求まり、正解はイです。代入するとどちらも76ナノ秒で一致します。図の容量の数値は計算に使いません。

解答・解説

正解はイです

この問題のテーマ

キャッシュメモリのヒット率と平均アクセス時間の関係を問う計算問題です。アクセス時間が異なる2種類のCPUで処理時間が等しくなるという条件から、ヒット率を逆算します。

解き方の考え方

CPUは、まずキャッシュメモリを探し、データがなければ主記憶にアクセスします。ヒット率をhとすると、平均アクセス時間は「キャッシュの時間×h+主記憶の時間×(1−h)」という加重平均で表せます。表の値を使ってCPU XとCPU Yの平均アクセス時間をそれぞれhの式にし、両者が等しいとおいた方程式を解きます。同じプログラムを実行し、CPU以外の影響はないとされているので、両CPUで同じヒット率を使えます。

選択肢ごとの解説

  1. ×ア  0.75
    ヒット率0.75の場合、CPU Xは400−360×0.75=130ナノ秒、CPU Yは580−560×0.75=160ナノ秒です。値が一致しないので、処理時間が等しいという条件を満たしません。
  2. ○イ  0.90
    CPU Xの平均アクセス時間は40h+400(1−h)=400−360h、CPU Yは20h+580(1−h)=580−560hです。両者を等しいとおくと400−360h=580−560hとなり、200h=180からh=0.90が求まります。検算すると、Xは400−324=76ナノ秒、Yは580−504=76ナノ秒で一致します。
  3. ×ウ  0.95
    ヒット率0.95の場合、CPU Xは400−360×0.95=58ナノ秒、CPU Yは580−560×0.95=48ナノ秒です。CPU Yのほうが速くなるので、処理時間は等しくなりません。
  4. ×エ  0.96
    ヒット率0.96の場合、CPU Xは400−360×0.96=54.4ナノ秒、CPU Yは580−560×0.96=42.4ナノ秒です。こちらも値が一致しないため、条件に合いません。

補足

図にあるキャッシュ256kバイトや主記憶256Mバイトといった容量は、この計算には使いません。数値が出てくると使いたくなりますが、必要なのはアクセス時間だけです。式を立てるのが苦手な場合は、各選択肢のヒット率を両方の式に代入して一致するものを探す方法でも解けます。

POINT

  • 平均アクセス時間は「キャッシュの時間×ヒット率+主記憶の時間×(1−ヒット率)」で求めます。
  • ミス率は1−ヒット率で表します。
  • 「処理時間が等しい」という条件は、2つの平均アクセス時間の式を等号で結ぶ合図です。
  • 解を求めたら元の両方の式に代入し、同じ値(この問題では76ナノ秒)になるかを確かめると、計算ミスを防げます。

※出典:令和6年度 基本情報技術者試験 科目A 問3(一部改変)