IT用語

ダイレクトマップ、フルアソシアティブ、セットアソシアティブとは?キャッシュメモリの割り当て方式について初心者向けに画像多めで解説!

クマノくらげ

この記事でわかること

この記事では、キャッシュメモリの割り当て方式である

・ダイレクトマッピング方式
・フルアソシアティブ方式
・セットアソシアティブ方式

の違いを、指定席・自由席・班の中の自由席に例えて説明します。

結論からいうと、3つの違いは
「キャッシュのどこにデータを置けるか」
です。

キャッシュメモリとは?

「キャッシュメモリの割り当て方式」って言葉を見かけたんだけど何かわかる?まずキャッシュメモリから怪しいんだけど。

キャッシュメモリは、CPUがよく使うデータを一時的に置いておく、高速なメモリのことだよ。

メインメモリ(主記憶)とは違うの?これも一時的に置く場所だよね

CPUはすごく速いけど、メインメモリから毎回データを取ってくると少し待たされる。
だから、よく使うデータをCPUの近くにある速い場所、つまりキャッシュメモリに置いておくんだ。

机の上のどこかにおいておくのがメインメモリでものすごく手元に置いておくのがキャッシュって感じ?

まぁそうだね。SSDやHDDといった補助記憶装置→メインメモリ→キャッシュの順で読み込みが早くなるということだね。

キャッシュはメインメモリより速い反面、容量が小さいです。

そのため、
「どのデータを、キャッシュのどこに置くか」
を決めておかないと、管理が難しくなります。

この置き場所の決め方が、キャッシュメモリの割り当て方式です。

割り当て方式とは?

キャッシュはわかったよ、じゃあ割り当て方式は?

メインメモリ上のデータを、キャッシュメモリのどこに置くかを決めるルールのことだよ。

どこに置くか?

そう。
キャッシュメモリは容量が小さいから、何でも自由に置けるわけじゃない。
だから、データをどの場所に入れるかのルールが必要になるんだ。

3つの割り当て方式

代表的な方式はこの3つ。

方式一言でいうと
ダイレクトマッピング方式置き場所が1か所に決まっている
フルアソシアティブ方式どこにでも置ける
セットアソシアティブ方式決められたグループ内なら置ける

名前だけ見ると難しいけど、置き場所の自由度が違うってこと?

いいね。そういうことだよ。

ダイレクトマッピング方式とは

ダイレクトマッピング方式は、
メインメモリのデータを置けるキャッシュの場所が、あらかじめ1か所に決まっている方式だよ。

1か所だけ?

そう。
たとえば、あるデータはキャッシュの3番にしか置けない、別のデータは5番にしか置けない、みたいな感じ。

わかりやすいけど、ちょっと不便そう。

その通り。
場所を探すのは速いけど、同じ場所に置きたいデータが重なると、すぐ入れ替えが起きる。
つまり、まだ使うかもしれないデータでも、
別のデータが同じ場所に来ると追い出されてしまうことがあるんだ。

ダイレクトマッピング方式の例え

学校の下駄箱で例えるとわかりやすいよ。

出席番号ごとに下駄箱の場所が決まっているイメージだね。

1番の人 → 1番の下駄箱
2番の人 → 2番の下駄箱
3番の人 → 3番の下駄箱

決まった場所に入れるだけだから迷わないね。

そう。
でも、もし何かの都合で同じ場所を使いたいものが重なると、片方をどかすしかない。

ダイレクトマッピング方式の特徴

項目内容
探しやすさとても速い
仕組み簡単
欠点同じ場所に集中すると入れ替えが多い
イメージ指定席

ダイレクトマッピングは「指定席」って覚えればいい?

いいね。誰が使用するか決まっているよ。

フルアソシアティブ方式とは?

フルアソシアティブ方式は、
メインメモリのデータをキャッシュ内のどこにでも置ける方式だよ。

自由席みたいな感じ?

そうだよ。
空いている場所ならどこでも置ける。

それなら便利そう。

便利ではある。
同じ場所に集中して追い出し合うことは起きにくい。
でも問題もあるよ。
データを探すときに、キャッシュ全体を探す必要があるんだ。

どこにでも置ける分、探すのが大変なのか。

そう。
自由度は高いけど、検索の仕組みが複雑になりやすい。

フルアソシアティブ方式の例え

図書館の空いている席で例えてみようか。

空いている席ならどこでも座れて便利だけど、
友達を探すときは全部の席を見ないといけないね。

そう。
それがフルアソシアティブ方式の感覚に近い。

フルアソシアティブ方式の特徴

項目内容
置き場所どこでもよい
自由度高い
欠点探す仕組みが複雑
イメージ完全自由席

フルアソシアティブは「完全自由席」だね。

うん。
「フル」だから全部の場所が候補、って覚えるといいよ。

セットアソシアティブ方式とは?

セットアソシアティブ方式は、
キャッシュをいくつかのグループに分けて、そのグループ内ならどこにでも置ける方式だよ。

ダイレクトとフルの中間?

そう。
ダイレクトマッピングほど場所が固定されすぎず、
フルアソシアティブほど自由すぎない。

ちょうどいい感じなんだ。

実際のキャッシュでは、このセットアソシアティブ方式がよく使われるよ。
完全自由にすると探す仕組みが複雑になりすぎる。
でも、完全指定席にすると入れ替えが多くなりやすい。
だから、その中間であるセットアソシアティブ方式が使われやすいんだ。

セットアソシアティブ方式の例え

教室の座席で例えるなら、
「班は決まっているけど、班の中ならどこに座ってもいい」感じ。

A班の人 → A班の席の中なら自由
B班の人 → B班の席の中なら自由
C班の人 → C班の席の中なら自由
ってことだね。

なるほど。
完全自由じゃないけど、指定席よりは柔軟だね。

セットアソシアティブ方式の特徴

項目内容
置き場所決められたセット内なら自由
自由度中くらい
探しやすさフルアソシアティブより楽
入れ替えの少なさダイレクトマッピングより有利
イメージ班の中で自由席

3つの違いを表で整理

3つの違いをまとめるとこんな感じ。

方式置き場所メリットデメリット例え
ダイレクトマッピング方式1か所に決まる速くて簡単入れ替えが起きやすい指定席
フルアソシアティブ方式どこでもよい柔軟に置ける探す仕組みが複雑完全自由席
セットアソシアティブ方式グループ内なら自由速さと柔軟性のバランスが良い仕組みは少し複雑班の中で自由席

名前でかまえちゃっていたけど、案外簡単だね。

まとめ

まとめるとこんな感じだね。
キャッシュメモリの割り当て方式とは、
メインメモリのデータをキャッシュのどこに置くかを決める方法。

方式自由度覚え方
ダイレクトマッピング方式低い指定席
セットアソシアティブ方式中くらい班の中で自由席
フルアソシアティブ方式高い完全自由席

つまり、置き場所の自由度が違うんだね。

ABOUT ME
クマノくらげ
クマノくらげ
難しいIT用語やビジネス用語を、できるだけ身近な例えで解説するブログです。 「専門用語を見ると眠くなる人」でも読めるように、画像や会話形式を多めにしています。 AWS12冠達成済み。
記事URLをコピーしました