基本情報技術者試験 平成31年度 春期 午前 問10
主記憶とキャッシュメモリの実効アクセス時間と、期待値についての問題。
--------------------------
平成31年度 春期 午前 問10
A〜Dを、主記憶の実効アクセス時間が短い順に並べたものはどれか。
ア A, B, C, D
イ A, D, B, C
ウ C, D, A, B
エ D, C, A, B
--------------------------
解説
表の手書きは大変。
そして時間をかけた割に汚い。
問題の "主記憶の実効アクセス時間" だと(個人的に)少し違和感がある。
キャッシュは主記憶とは別に存在する CPUの中にある装置なので、キャッシュにデータが無かった場合における、主記憶にアクセスが向かう際のみの時間を問われているとも読めてしまわないだろうか。
"CPU からの実効データアクセス時間" とかではどうだろうか。
いちゃもんつけるのはここまでにして。
CPU が主記憶にアクセスをする場合、主記憶よりも高速なキャッシュメモリに目的のデータがないかをまず確認する。
キャッシュメモリは高価なので容量は小さい。サーバマシンに使われるようなハイエンドの CPU でもキャッシュメモリは 20MB とか 30MB 程度の大きさしかない。
最近使われたデータや、頻繁に使われているデータであるほど、キャッシュに残っている可能性は高くなる。
キャッシュに目的のデータがなければ、主記憶にアクセスしにいく。
問題にはないが、主記憶にもデータがなければ HDD 等の外部記憶装置からデータをもってくることになる。
ここでの "実効アクセス時間" は平均のアクセス時間とか、アクセス時間の期待値、の意味になっている。
何百回、何千回とアクセスしたときに、平均して1回あたりのアクセス時間はどうなのか?と聞かれている。
何回も試された結果として、キャッシュに見つかる確率(ヒット率)が問題の表のとおりになっている。
A と B はキャッシュがないので、毎回主記憶にアクセスする。
主記憶のアクセス時間は表の通り毎回同じなので、一回あたりのアクセス時間は A が 15ナノ秒、B が 30ナノ秒となる。
C と D はキャッシュがある。ここは期待値の考え方で、
実効アクセス時間 =
(キャッシュにある確率)×(キャッシュのアクセス時間)
+(キャッシュにない確率)×(主記憶のアクセス時間)
となる。
Cは 60% × 20ナノ秒 + (100% - 60%) × 70ナノ秒 = 40ナノ秒。
Dは 90% × 10ナノ秒 + (100% - 90%) × 80ナノ秒 = 17ナノ秒。
短い順に並べるので、A(15ナノ秒),D(17ナノ秒),B(30ナノ秒),C(40ナノ秒) となり選択肢イが答えになる。
"期待値" の考え方は一回分のみを見るとわかりにくい。
C の実効アクセス時間は 40ナノ秒であるが、実際に 40ナノ秒でアクセスすることはあり得ない。
キャッシュにヒットしたときの 20ナノ秒か、主記憶にアクセスしたときの 70ナノ秒か、このどちらかのみが現実に起きることとなる。
C を 10 回試したと考える。
ヒット率が 60% だけど、少しぶれて 7 回ヒットしたとすると、7 回 × 20ナノ秒 + 3回 × 70ナノ秒で 350ナノ秒。つまり 1回あたり 35ナノ秒。
Cを 100 回試したと考える。
ヒット率が 60% だけど、少しぶれて 55 回ヒットしたとすると、55 回 × 20ナノ秒 + 45回 × 70ナノ秒で 4250ナノ秒。つまり 1回あたり 42.5ナノ秒。
C を 1000 回試したと考える。
ヒット率が 60% だけど、少しぶれて 580回ヒットしたとすると、580 回 × 20ナノ秒 + 420回 × 70ナノ秒で 41000ナノ秒。1 回あたり 41ナノ秒。
回数が増えるほど、多少ぶれてもヒットの回数が 60% という確率(ヒット率)に近づきやすくなり、この時の "1 回あたりの時間" は期待値に近づいていく(収束する)。
もちろん強運を発揮してヒット回数が確率で予想される回数を超えることもあり得るが、試行回数が数万、数百万となればいずれは確率に収束する。
期待値は十分な回数繰り返せるなら一回あたりの平均値として現実にでてくる数値。一度しかできないのであれば、判断の指標の一つとなるが、数値そのものは現実に出てこない。
前後の問題はこちら。