【れんそうめもり】
連想メモリ とは?
最終更新:
💡 番地ではなく、中身を手がかりに探すメモリ
番地ではなく検索キーの内容を指定し、一致する格納場所や照合結果を得るメモリ。ハードウェアのCAMを指し、照合方式や応答時間は実装によって異なります。
📌 このページのポイント
- CAM(Content-Addressable Memory)は検索キーを保存した内容と照合する
- 一致の有無や格納位置を返す。複数一致の扱いは実装の規則による
- 並列照合やパイプラインで検索を効率化するが、必ず1クロックとは限らない
- TCAMは0・1に加え、どちらでもよいビットをマスクで指定できる
- キー幅・件数・記憶回路・更新方法によって資源や性能の負担が変わる
普通のメモリと何が違うの?
普通のメモリは「3番地を読んで」と場所を指定する。CAMは「Owlと一致するものはある?」と内容を指定し、一致の有無や位置を受け取るんだ。データを探す手がかりが違うよ。
全部を1件ずつ探すの?
ハードウェアで並列に照合したり、パイプラインで検索を処理したりする。方式は実装次第で、すべてのCAMが全件を1クロックで検索するとは限らない。1クロックごとに新しい検索を受け付けることと、答えが1クロックで返ることも別だよ。
同じデータが2件あったら?
一致位置が複数になることがある。複数一致のフラグやビット列を返す実装、優先順位で1件を選ぶ実装があるよ。例えばXilinxのXAPP1151には、一致した番地の大小で選ぶ設定がある。
TCAMは何が増えるの?
便利なら大容量の記憶を全部CAMにできる?
もっと詳しく知りたい人へ
1クロックで検索できるという説明は間違い?
特定の実装では正しい説明です。例えばXAPP1151の参照設計は1クロックの検索を示しますが、出力レジスタを追加すると待ち時間が増えます。検索の受付間隔、結果までの待ち時間、書き込み時間を区別して仕様を読みましょう。
まとめ:ざっくりこれだけ覚えればOK!
「連想メモリ」って出てきたら「内容をキーにして一致を探すメモリ」と思えばだいたいOK!
📖 おまけ:英語の意味
「Associative Memory / Content-Addressable Memory」 = 連想記憶装置 / 内容参照メモリ
💬 このページでは回路としてのCAMを扱います。AIや認知の文脈で使う「連想記憶」と、そのまま同じ実装を意味するわけではありません。