連想メモリ(CAM: Content Addressable Memory)は、従来のメモリとは異なり、データの内容に基づいてアドレスを検索する特殊な
記憶装置です。通常のメモリがアドレスを指定してデータを読み書きするのに対し、連想メモリはデータの一部を入力として、そのデータが格納されているアドレスやデータ全体を高速に検索します。この機能は、ソフトウェアで実装される連想配列に似ていますが、ハードウェアによる並列処理によって、より高速な検索を可能にします。
連想メモリの仕組み
従来のメモリでは、アドレスを指定することで、そのアドレスに格納されたデータが返されます。一方、連想メモリでは、データの一部または全部を入力すると、メモリ全体を並列的に検索し、一致するデータがあれば、そのデータが格納されているアドレスやデータ全体を返します。この検索プロセスは非常に高速で、特定のデータを探す場合に効果的です。
連想メモリの種類
連想メモリには主に二つのタイプがあります。
二値連想メモリ (Binary CAM): 検索キーが1と0の二値で構成される最もシンプルなタイプです。
三値連想メモリ (Ternary CAM): 検索キーに「X(ドントケア)」の三番目の値を使用できるタイプです。これにより、より柔軟な検索が可能になります。例えば、"10XX0"というキーは、"10000", "10010", "10100", "10110"のいずれにも一致します。
連想メモリのコストと課題
連想メモリは、その構造上、従来のメモリよりもコストが高く、消費電力も大きくなります。これは、データとの比較回路をメモリ内のすべての
ビットに用意する必要があるためです。また、検索時にはすべての比較回路が同時に動作するため、消費電力が増大します。これらの理由から、連想メモリは、非常に高速な検索が求められる特定の用途でのみ使用されています。
連想メモリの応用例
連想メモリは、その高速検索能力から、様々な分野で活用されています。
ネットワーク機器: スイッチングハブやルーターなどのネットワーク機器では、MACアドレスやIPアドレスの検索に連想メモリが使用されています。これにより、パケットの高速な転送が可能になります。例えば、スイッチングハブは、受信したパケットの送信先MACアドレスを連想メモリで検索し、対応するポートにパケットを送信します。また、ルーターでは、IPアドレスとサブネットマスクの組み合わせを三値連想メモリで検索し、最適な経路を選択します。
CPUのキャッシュ制御:
CPUの
キャッシュメモリでは、セットアソシアティブ方式で連想メモリが使用されます。これにより、
キャッシュメモリ内のデータが高速に検索され、
CPUの処理速度が向上します。TLB(Translation Lookaside Buffer)も同様に、仮想アドレスから物理アドレスへの高速な変換に連想メモリが使用されます。
*
その他:
データベースエンジン、
データ圧縮ハードウェア、人工
ニューラルネットワークなど、様々な分野で連想メモリが使用されています。
連想メモリの代替技術
連想メモリのコストや消費電力の問題を解決するために、木構造検索や
ハッシュテーブルなどのソフトウェアによるエミュレーションも行われています。これらの技術は、ハードウェアによる並列処理に比べて速度は劣りますが、コストを抑えつつ連想メモリに近い機能を提供することができます。
連想メモリは、その高速な検索能力から、特定の分野で重要な役割を果たしています。今後も、より効率的で高性能な連想メモリの開発が進められることが期待されます。
関連情報
Network Processing Forumが標準化したルックアサイドインターフェイス(LA-1 および LA-1B)は、連想メモリや他のネットワーク検索技術との主要なインターフェースを定義しており、ネットワーク機器の相互運用性を高めるのに貢献しています。
CAM Primer(英語)
Content-addressable memory (CAM) circuits and architectures: A tutorial and survey(英語)