【れんそうめもり】

連想メモリ とは?

💡 住所じゃなく名前で探せる、超高速な電話帳メモリ
📌 このページのポイント
連想メモリ(CAM) vs 通常メモリ 通常メモリ(RAM) アドレス: 3 0: Cat 1: Dog 2: Fox 3: Owl 4: Bee 結果: Owl アドレスで1件を直接読む 連想メモリ(CAM) 検索: "Owl" Cat ✗ Dog ✗ Fox ✗ Owl ✓ Bee ✗ 一致! Addr:3 全エントリを同時比較して検索 連想メモリの主な用途 TLB アドレス変換 キャッシュタグ タグ比較 ルーター(TCAM) ルーティング検索
連想メモリと通常メモリの検索方式の違い
ひよこ ひよこ

連想メモリって普通のメモリと何が違うの?

ペンギン先生 ペンギン先生

普通のメモリは「何番地のデータをちょうだい」とアドレスを指定して読むんだけど、連想メモリは「このデータと一致するものある?」と内容で検索できるんだ。電話帳で言うと、「3ページ目を開いて」がアドレス指定、「田中さんの番号を探して」が連想メモリ方式だよ

ひよこ ひよこ

内容で検索できるのは便利そうだけど、全部調べるから遅くならないの?

ペンギン先生 ペンギン先生

そこがすごいところで、全エントリを同時に並列で比較するから、たった1回の検索で結果が出るんだ。1件ずつ順番に調べるんじゃなくて、全員に同時に「この名前の人いる?」って聞くイメージだよ

ひよこ ひよこ

それってどこで使われてるの?

ペンギン先生 ペンギン先生

CPUの中のTLB(Translation Lookaside Buffer)が代表例だよ。仮想アドレスから物理アドレスへの変換テーブルを連想メモリで持っていて、メモリアクセスのたびに高速に変換できるんだ。キャッシュメモリのタグ比較にも使われてるよ

ひよこ ひよこ

そんなに便利なら、メインメモリも全部連想メモリにすればいいのに!

ペンギン先生 ペンギン先生

各エントリに比較回路が必要だから、普通のメモリの何倍もコストがかかるし消費電力も大きいんだ。だから数十〜数千エントリ程度の小さなテーブルにしか使われないよ。大容量にするとコストが爆発的に増えてしまうんだ

ひよこ ひよこ

ネットワーク機器でも使われてるって聞いたけど本当?

ペンギン先生 ペンギン先生

そうだよ。ルーターやスイッチでパケットの宛先アドレスを高速に検索するためにTCAM(Ternary CAM)という3値連想メモリが使われてるんだ。0と1に加えて「どちらでもいい(ドントケア)」を扱えるから、ネットワークルーティングテーブル検索にぴったりなんだよ

ひよこ ひよこ

3値ってまた特殊だね!面白い技術なんだなぁ

ペンギン先生 ペンギン先生

連想メモリはAIの世界でも注目されてるよ。Transformerのアテンション機構クエリとキーの類似度計算をしているけど、これは一種のソフトな連想メモリと言えるんだ。古典的なハードウェア技術がAIの基盤にもつながっているのが面白いところだね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「連想メモリ」って出てきたら「アドレスではなく内容で検索できる高速メモリ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Associative Memory / Content-Addressable Memory」 = 連想記憶装置 / 内容参照メモリ
💬 内容(Content)でアドレス指定(Addressable)できるメモリだからCAM(Content-Addressable Memory)とも呼ばれるんだよ
← 用語集にもどる