連想記憶を効果的に理解する方法

📅
🕑 1 分で読む

メモリの保存方法は退屈に聞こえるかもしれませんが、実際に何が処理速度を速めたり遅くしたりするのかとなると、なかなか興味深い話になります。ほとんどのコンピューターやデバイスは、いわゆる「通常の」メモリ、つまり特定のアドレスに保存され、必要な時に取り出すメモリに依存しています。特定のデータを検索したいけれど、その保存場所が正確に分からなければ、かなりうまく機能します。確かに、膨大なデータセットをすべてのアドレスで検索するのは、決して高速とは言えません。そこで連想メモリ、つまりCAM(Content Addressable Memory)の出番です。CAMは主に、高速性が最優先で、コンテンツによる検索が求められる、高性能なネットワーク機器などの用途で使用されます。しかし、実のところ、これをハードウェアに実装するのは安価ではありません。主にエンタープライズグレードのルーターやスイッチで使用されています。そのため、ほとんどの一般的なハードウェアは、比較回路を内蔵した大容量のSRAMビットを必要とするCAMのコストや複雑さに対応できません。CAMの利点は、アドレスではなくコンテンツによる超高速検索です。では、欠点は何でしょうか?コストが高く、特定の高速検索に最適化されているため、一般消費者向けの機器ではあまり見かけません。それでも、ネットワークスイッチやルーターに採用されれば、特定のアドレスやルールのマッチング速度に違いが見られ、レイテンシを大幅に削減できます。ハードウェアの比較回路の精度が低いため、環境によっては初回は失敗する可能性がありますが、再起動すれば通常は問題なく動作します。ただし、巨大なルーティングテーブルを扱う場合やリアルタイム性能が必要な場合は、連想メモリがネットワークのスムーズな動作を維持する鍵となる場合があることを覚えておいてください。

細胞構造とその重要性

これらのメモリ チップの内部を覗いたことがある人なら、DRAM (ダイナミック RAM) ではなく SRAM (スタティック RAM) がベースになっていることに気付くでしょう。なぜでしょう? SRAM は比較演算を直接実行できるため、格納されている各ビットの検索機能が組み込まれていると考えることができます。各メモリ セルにはトランジスタが詰め込まれており、データ保持用に 6 個、比較回路用にさらに 4 個あります。これは、小さなメモリ ビットそれぞれに「これは探しているものと一致しているか?」と自問する脳を与えているようなものです。コスト面では、これによりチップが大きくなり、高価になります。さらに、連想メモリが価値あるものになるためには、超高速である必要があります。これは SRAM が得意とするところです。一方、DRAM は安価で密度が高いだけで、この用途には低速です。

連想記憶が見つかる場所

では、現実世界では、このようなメモリはどこで使われているのでしょうか。ほとんどの場合、本格的なネットワーク処理を行っているハイエンドのスイッチやルーターで使用されています。これらのデバイスでは、MAC アドレスやルーティング テーブルの検索に数ミリ秒を費やす余裕はありません。そのため、CAM または TCAM (Ternary CAM) を使用して、コンテンツの検索を瞬時に実行しています。たとえば、MAC アドレス テーブルを管理する場合、スイッチはすべてポートをスキャンすることなく、宛先アドレスを超高速で検索できます。そのため、大量のトラフィックを処理する機器には CAM チップが搭載されています。また、ルーティング ルール、特に複雑なサブネット マスクを使用するルーティング ルールを実行する場合、3 値メモリによって、アドレスの照合が即座に簡素化されます。つまり、余分な計算を行わずに、ワイルドカードや「don’t care」ビットを含むアドレスを照合できます。必要なハードウェアが高額なため、エンタープライズ グレードの機器以外でこの機能が搭載されることは稀で、搭載されていたとしても、最も要求の厳しい環境でのみ搭載されている可能性があります。

二進法 vs.三進法:三進法がゲームチェンジャーである理由

ほとんどの連想メモリはバイナリであり、つまり0と1のみを保存します。しかし、より高度でハイステークスなネットワークでは、3値CAMが使用されます。これはさらに高価ですが、はるかに柔軟性があります。0または1だけでなく、これらのセルは「don’t care」を意味する「X」を保持できます。可変長サブネットマスクまたは複雑なアクセスルールを扱う場合に便利で、アドレスをワイルドカードで直接一致させることができます。たとえば、192.168.20.19の検索では、1回の操作で、異なるマスクを持つ複数のルールを一致させることができます。これは、大量のルーティングやアクセス制御を行っている場合に、本当に時間を節約できます。ただし、この場合も、2倍のSRAMセル(比較ごとに2つ)と追加のトランジスタが必要になるため、コストが高くなります。通常、この種のセットアップを備えているのは最高級のルーターだけで、一般的なデバイスはバイナリCAMまたは単純な旧式のコンテンツ検索に固執する傾向があります。

連想記憶のまとめ

簡単に言えば、連想メモリとは、ハードウェアに超能力を与え、各アドレスを一つずつ調べるのではなく、すべてのデータを同時に検索できるようにするようなものです。比較ロジックが組み込まれた大容量SRAMに依存するため高価ですが、適切なシステムであれば、特に膨大な量のデータに対応しなければならないネットワーク機器では、超高速な検索が可能になります。あらゆる場所で通常のメモリに取って代わるわけではありませんが、超高速なルーティングとトラフィック管理を必要とする人にとっては、非常に重要なコンポーネントです。もちろん、WindowsなどのOSはCAMチップを搭載していませんが、ルーター、スイッチ、または特殊なハードウェアを扱う場合、CAMチップがすべてを裏でスムーズに動作させています。