Assoziativspeicher
Ein Assoziativspeicher oder auch inhaltsadressierbarer Speicher (engl. Content Addressable Memory, CAM) ist eine Speicherform, bei der mit der Assoziation von Inhalten gearbeitet wird, um auf einzelne Speicherinhalte zuzugreifen.
Eine weitere Umschreibung wäre, dass der Zugriff auf einen Speicherinhalt über die Eingabe eines Speicherwertes und nicht über eine Speicheradresse erfolg. Das besondere Wesen eines Assoziativspeichers rührt jedoch nicht in der Eingabe einer wie auch immer interpretierbaren (Wert/Adresse) Zeichenfolge, sondern in der zunächst vom jeweiligen Zugriff unabhängigen Strukturorganisation - am besten nachvollziehbar mit der Frage: 'Was steht an noch nicht beschriebenen Speicherstellen?' Während die Adressierung mit expliziten Adressen regelmäßig eine Listen- oder Tabellen-Struktur wieder gibt, bei welcher die daraus definierten Speicherstellen zunächst mit einem 'leeren' Wert besetzt sind, entstehen im idealisierten Assoziativspeicher überhaupt nur dort Speicherstellen, für die zuvor ein Schreibvorgang stattgefunden hat.
Bereits 1943 schlug Konrad Zuse diese Speicherform vor, realisiert werden konnte sie jedoch erst mit der Entwicklung der Halbleitertechnik. Ein typischer Einsatzbereich für diesen Speichertyp sind schnelle Cache-Speicher. Auch Speichertabellen, auf die häufig zugegriffen wird, können als Assoziativspeicher realisiert sein. Beispielsweise wird in hochwertigen Netzwerkswitches die Tabelle der MAC-Adressen als CAM ausgelegt. Ein weiteres Einsatzgebiet sind Datenstrukturen in der Künstlichen Intelligenz. So arbeitet auch das menschliche Gedächtnis mit Assoziationen. Der Mensch verbindet zum Beispiel mit bestimmten Gegenständen Erinnerungen an bestimmte Erlebnisse. Ein Ternary Content Addressable Memory (TCAM) arbeitet mit einem dritten logischen Wert, Don’t-Care, um auf die Speicherinhalte zuzugreifen.[1]
Heute ist diese Speicherform jedoch weitgehend durch Hashing-Techniken ersetzt, die mit konventionellem Speicher arbeiten und daher wesentlich preiswerter implementierbar sind.
Für Computersysteme ist die Realisierung von großen Assoziativspeichern schwierig, da auch „unscharfe“ Eingaben zu einem gewünschten Ergebnis führen sollen (Fuzzy-Suche). Man kann dieses Problem allgemein so betrachten, dass ein Eingabevektor $ E_{i} $ einen Ausgabevektor $ A_{i} $ liefern soll, wenn er genügend Ähnlichkeit mit einem Mustervektor $ M_{i} $ aufweist. Um derartige Funktionen zu realisieren, wird auf neuronale Netze zurückgegriffen.
Eine sehr einfache Realisierung der beschriebenen Zuordnung gelingt beispielsweise durch eines der simpelsten neuronalen Netze, das einlagige Perzeptron.
Fügt man mehrere Assoziativspeicher so zusammen, dass in ihnen außer Daten auch Programme abgelegt und ausgeführt werden können, entsteht eine Assoziativmaschine.