
コンテンツアドレス指定可能メモリ(CAM )は、特定の超高速検索アプリケーションで使用される特殊なタイプのコンピュータメモリです。連想メモリまたは連想ストレージとも呼ばれ、入力された検索データを格納されたデータのテーブルと比較し、一致するデータのアドレスを返します。[ 1 ]
CAMは、ネットワーク機器において転送情報ベースやルーティングテーブルの処理速度を向上させるために頻繁に使用されます。この種の連想メモリはキャッシュメモリにも用いられます。連想キャッシュメモリでは、アドレスとコンテンツが並べて格納されます。アドレスが一致すると、対応するコンテンツがキャッシュメモリからフェッチされます。
ダドリー・アレン・バックは1955年に内容アドレス指定可能なメモリの概念を発明した。バックは認識ユニットのアイデアの考案者として知られている。[ 2 ]
標準的なコンピュータメモリであるランダムアクセスメモリ(RAM)では、ユーザーがメモリアドレスを指定すると、そのアドレスに格納されているデータワードが返されますが、CAMは、ユーザーがデータワードを指定すると、CAMがそのメモリ全体を検索して、そのデータワードがどこかに格納されているかどうかを確認するように設計されています。データワードが見つかった場合、CAMはそのデータワードが見つかった1つ以上のストレージアドレスのリストを返します。したがって、CAMは、ソフトウェア用語で連想配列と呼ばれるもののハードウェア実装と言えます。
同様の概念は、 1955年にダドリー・アレン・バックによって提案されたデータ単語認識ユニットにも見られる。 [ 3 ]
CAMやその他のネットワーク検索エンジンの主要なインターフェース定義は、ネットワーク処理フォーラムによって開発されたルックアサイドインターフェース(LA-1およびLA-1B)と呼ばれる相互運用性協定で規定されました。[ 4 ]この相互運用性協定に準拠した多数のデバイスが、 Integrated Device Technology、Cypress Semiconductor、IBM、Broadcomなど によって製造されています。2007年12月11日、OIFはシリアルルックアサイド(SLA)インターフェース協定を公開しました。

CAMはデータ検索アプリケーションにおいてRAMよりもはるかに高速です。しかし、CAMにはコスト面での欠点があります。単純な記憶セルを持つRAMチップとは異なり、完全並列CAMでは、個々のメモリビットごとに、格納されたビットと入力ビットの一致を検出するための独自の比較回路が必要です。さらに、データワード内の各セルからの一致出力を結合して、完全なデータワード一致信号を生成する必要があります。追加の回路により、CAMチップの物理的なサイズと製造コストが増加します。また、すべての比較回路がすべてのクロックサイクルでアクティブになるため、追加の回路により消費電力も増加します。したがって、CAMは、より低コストの方法では検索速度を実現できない特殊なアプリケーションでのみ使用されます。初期の成功例の1つは、汎用連想プロセッサICおよびシステムでした。[ 5 ]
2000年代初頭、 Cypress、IDT、Netlogic、Sibercore [ 6 ]、MOSAIDなどの半導体企業がネットワークアプリケーションを対象としたCAM製品を発表しました。これらの製品は、ネットワーク検索エンジン(NSE)、ネットワーク検索アクセラレータ(NSA)、知識ベースプロセッサ(KBP)と名付けられましたが、基本的にはネットワーク向けに最適化された特殊なインターフェースと機能を備えたCAMでした。現在、BroadcomはKBPの複数のファミリーを提供しています。[ 7 ]
速度、メモリサイズ、コストのバランスを異なるものにするために、一部の実装では、ハードウェアで標準的なツリー検索やハッシュ設計を使用し、レプリケーションやパイプライン処理などのハードウェアの工夫を用いて実効パフォーマンスを向上させることで、CAMの機能をエミュレートしています。これらの設計は、ルーターでよく使用されます。Luleåアルゴリズムは、インターネットルーティングテーブルで必要とされる最長プレフィックス一致検索を効率的に実装したものです。

バイナリ CAMは最も単純なタイプの CAM であり、1 と 0 のみで構成されるデータ検索ワードを使用します。 3 進 CAM ( TCAM ) [ 8 ]では、格納されたワードの1 つ以上のビットに対してXまたはドントケアという 3 番目のマッチング状態が許容されるため、検索の柔軟性が向上します。たとえば、3 進 CAM に格納されたワード10XX0は、 4 つの検索ワード10000、10010、10100、または10110のいずれかに一致します。検索の柔軟性の向上は、バイナリ CAM に比べてコストが高くなります。内部メモリセルは、バイナリ CAM の 2 つの状態ではなく、3 つの可能な状態をエンコードする必要があるためです。この追加の状態は通常、各メモリセルにマスク ビット (ケア ビットまたはドント ケアビット) を追加することによって実装されます。 2013 年に、IBM は 2 トランジスタ/2 抵抗ストレージ (2T-2R) セルを使用した不揮発性 TCAM を製造しました。[ 9 ]ハイブリッド強誘電体FeFETを用いたTCAMの設計が、国際的な科学者グループによって最近発表された。[ 10 ]
コンテンツアドレス指定可能メモリ(CAM)は、コンピュータネットワーク機器でよく使用されます。例えば、ネットワークスイッチがポートからデータフレームを受信すると、フレームの送信元MACアドレスと受信ポートを内部テーブルに更新します。次に、テーブルから宛先MACアドレスを検索して、フレームを転送する必要のあるポートを特定し、そのポートから送信します。MACアドレステーブルは通常、バイナリCAMで実装されているため、宛先ポートを非常に高速に検索でき、スイッチの遅延を低減できます。
3値CAMは、ネットワークルータでよく使用されます。ルータでは、各アドレスは2つの部分から構成されます。1つはネットワークプレフィックスで、サブネット構成によってサイズが変化する場合があります。もう1つはホストアドレスで、残りのビットを占めます。各サブネットには、アドレスのどのビットがネットワークプレフィックスで、どのビットがホストアドレスであるかを指定するネットワークマスクがあります。ルーティングは、ルータが管理するルーティングテーブルを参照することによって行われます。ルーティングテーブルには、既知の各宛先ネットワークプレフィックス、関連付けられたネットワークマスク、およびその宛先にパケットをルーティングするために必要な情報が含まれています。単純なソフトウェア実装では、ルータはルーティングするパケットの宛先アドレスをルーティングテーブルの各エントリと比較し、ネットワークマスクとのビットごとのAND演算を実行して、それをネットワークプレフィックスと比較します。両者が等しい場合、対応するルーティング情報を使用してパケットを転送します。ルーティングテーブルに3値CAMを使用すると、検索プロセスが非常に効率的になります。アドレスは、アドレスのホスト部分を考慮せずに格納されるため、CAMで宛先アドレスを検索すると、正しいルーティングエントリがすぐに取得されます。マスキングと比較は両方ともCAMハードウェアによって行われます。これは、(a)エントリがネットワークマスクの長さの降順で格納され、(b)ハードウェアが最初の一致するエントリのみを返す場合に機能します。したがって、最長のネットワークマスクを持つ一致(最長プレフィックス一致)が使用されます。[ 11 ]
その他のCAMアプリケーションには以下が含まれます。
TLB は、仮想アドレスを実アドレスにマッピングする小さな連想メモリです。