記憶階層とは?メモリを速さ・容量・値段で段階的に積み上げた構造

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

記憶階層とは(全体像)

記憶階層は、速さ・容量・値段の違うメモリを、段階的に積み上げた構造のこと。全部を速くて大きいメモリにできれば理想だが、速いものは高くて小さいので、段階に分けて使い分ける

身近な例が自宅。手元(レジスタ)→デスクの上(キャッシュ)→引き出し(メインメモリ)→倉庫(SSD・HDD)→遠くの倉庫(クラウド)と、近いほど速く取り出せるが置ける量は少ない。よく使う物を手元に置くと作業が速くなる。

押さえたいのは、上位ほど「速い・小さい・高い」、下位ほど「遅い・大きい・安い」という関係。だからCPUは、なるべく上位の速い階層で処理を完結させたい。


詳しく:階層の順序と局所性だけ覚えれば戦える

ここが記事の心臓部。まず階層の順序を押さえよう。

記憶階層(上ほど速く・小さく・高い)

階層速さ容量自宅のたとえ
レジスタ最速最小手元
キャッシュ(L1〜L3)非常に速いデスクの上
メインメモリ速い引き出し
SSD遅い倉庫
HDD・クラウドさらに遅い最大遠くの倉庫

ここで効いてくるのが局所性(きょくしょせい)。プログラムのデータの使い方には「かたより」があり、それをキャッシュが利用して速くする。局所性には2種類ある。

2種類の局所性

種類意味
時間的局所性一度使ったデータは、すぐまた使われやすいループの中で何度も使う変数
空間的局所性使ったデータの「近く」も、すぐ使われやすい配列を先頭から順に読む

つまり、よく使う・近くにあるデータをキャッシュに置いておけば、遅い下位階層に行く回数が減って速くなる。この局所性こそが、キャッシュが効く理由(根拠)だ。局所性を意識してデータを並べると、プログラムの速さが大きく変わる、というわけだね。

わかりやすく言い換えると

要するに、記憶階層は「よく使う物ほど手元に、めったに使わない物ほど遠くに」置くしくみだ。

順序 … レジスタ→キャッシュ→メインメモリ→SSD→HDD→クラウド(上ほど速く小さく高い)

時間的局所性 … 一度使ったものはすぐまた使う(手元に置くと速い)

空間的局所性 … 使ったものの近くもすぐ使う(まとめて手元に置くと速い)

「各階層は並列ではなく、下位を上位がキャッシュする関係」だけは取り違えやすい。


試験のツボ

🔴 一番出る:階層の順序と関係

①レジスタ→キャッシュ→メインメモリ→SSD→HDD→クラウド

②上位ほど高速・小容量・高価、下位ほど低速・大容量・安価

🔴 次に出る:2種類の局所性

①時間的局所性=一度使ったものはすぐまた使う

②空間的局所性=使ったものの近くもすぐ使う

🟡 押さえると安定:局所性とキャッシュ

①局所性がキャッシュの効く根拠

②局所性を意識すると性能が大きく変わる


よくある間違い

「記憶階層は速さも容量も値段も同じものの並び」→ ✗  上位ほど速く小さく高い、下位ほど遅く大きく安い。

「各階層はそれぞれ独立して並列に動く」→ ✗  下位を上位がキャッシュする関係。独立並列ではない。

「局所性はプログラムの速さに関係ない」→ ✗  局所性こそキャッシュが効く根拠。意識すると性能が大きく変わる。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(階層の関係)

📝 オリジナル問題 1 記憶階層の関係

記憶階層に関する次の記述のうち、正しいものはどれか。

  1. 記憶階層はどの階層も速さ・容量・値段がまったく同じで、区別する意味はないものだ
  2. 記憶階層は下位ほど高速で小容量、上位ほど低速で大容量という関係になっている
  3. 記憶階層は上位ほど高速で小容量・高価、下位ほど低速で大容量・安価になっている
  4. 記憶階層はレジスタが最も遅く、クラウドが最も速いという順序になっているとされる
ネトスパ
ネトスパ 解答・解説

解答は 3 である。

記憶階層は上位ほど高速・小容量・高価、下位ほど低速・大容量・安価なのだ。手元ほど速く小さく、遠くほど遅く大きいなるぞ。

選択肢1の「同じ」、選択肢2の「下位ほど高速」、選択肢4の「レジスタが最も遅い」はどれも誤りである。

選択肢判定理由
1階層で差がある
2上位ほど高速
3上位=高速小容量・下位=低速大容量
4レジスタが最速

オリジナル問題2(2種類の局所性)

📝 オリジナル問題 2 局所性

局所性に関する次の記述のうち、正しいものはどれか。

  1. 時間的局所性は使ったものの近くを使うこと、空間的局所性はすぐまた使うことを指す
  2. 時間的局所性は一度使うとすぐまた使うこと、空間的局所性は近くも使うことを指す
  3. 局所性は1種類だけで、時間と空間に分けるという考え方は存在しないものとされる
  4. 局所性はメモリの値段の話で、データの使い方とはいっさい関係がないものとされる
ネトスパ
ネトスパ 解答・解説

解答は 2 である。

時間的局所性は一度使うとすぐまた使うこと、空間的局所性は使ったものの近くも使うことなのだ。ループ変数と配列の連続走査が典型例なるぞ。

選択肢1は時間的と空間的が逆。選択肢3の「1種類だけ」、選択肢4の「値段の話」も誤りである。

選択肢判定理由
1時間的と空間的が逆
2時間的=再利用・空間的=近隣
32種類ある
4データの使い方の話

オリジナル問題3(階層とキャッシュの関係)

📝 オリジナル問題 3 階層とキャッシュ

記憶階層とキャッシュの関係に関する次の記述のうち、正しいものはどれか。

  1. 各階層は独立せず、下位を上位がキャッシュする関係で、局所性が効く根拠になる
  2. 各階層はまったく独立して並列に動き、たがいにキャッシュし合うことはないものだ
  3. 局所性はキャッシュの速さとは無関係で、意識してもしなくても性能は変わらない
  4. 記憶階層では下位の遅い階層だけを使い、上位の速い階層はいっさい使わないものだ
ネトスパ
ネトスパ 解答・解説

解答は 1 である。

各階層は独立せず、下位を上位がキャッシュする関係なのだ。そして局所性がキャッシュの効く根拠になるなるぞ。

選択肢2の「独立並列」、選択肢3の「無関係」、選択肢4の「下位だけ使う」はどれも誤りである。

選択肢判定理由
1下位を上位がキャッシュ・局所性が根拠
2独立並列ではない
3局所性が性能に効く
4上位の速い階層を活用する

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る