Obsahem adresovatelná paměť
Obsahem adresovatelná paměť (anglicky content-addressable memory, zkratka CAM) je v informatice označení speciálního typu elektronické paměti, která je používána pro velmi rychlé vyhledávání požadované informace. Proto je označována též jako asociativní paměť (anglicky associative memory), někdy též asociativní pole (anglicky associative array), avšak toto označení se spíše používá v programování pro datové struktury.[1] Obsahem adresovatelná paměť porovnává vstupní data (index, značka) s tabulkou uložených dat a vrací adresu uložených dat (v případě asociativní paměti však přímo požadovaná data).[2]
Použití CAM paměti
Příkladem použití asociativní paměti je dražší switch v počítačové síti, ve kterém je udržována tabulka MAC adres a portů (CAM paměť mají všechny switche Cisco Catalyst).[3] Po příchodu rámce je na základě cílové MAC adresy nutno v tabulce zjistit, kterým portem má být přijatý rámec odeslán do cíle. Při použití klasických datových struktur (pole, lineární seznam, binární strom) bude pro nalezení příslušné hodnoty potřeba mnoho strojových instrukcí (a tím i mnoho taktů). Avšak při použití asociativní paměti je příslušná hodnota vrácena po jednom cyklu (taktu). Výhodou použití CAM paměti je vysoká rychlost reakce, čímž se výrazně sníží latence v síťové komunikaci. Nevýhodou je vysoká pořizovací cena CAM pamětí a jejich vysoký příkon.
TCAM
Paměť CAM je možné použít i pro směrování IP datagramů v síti Internet. Pro vyhledání správného záznamu v tabulce je používána speciální varianta – TCAM paměť (anglicky Ternary Content Addressable Memory). Většina dražších switchů má několik TCAM pamětí, takže lze provádět všechna hledání v tabulkách současně (příchozí a odchozí pravidla firewallu, pravidla pro QoS a směrování na L2 nebo L3).[3] Paměť TCAM je rozšířením principu CAM paměti na ternární (třístavové) rozhodování (0, 1 a X), kde prvky 0 a 1 vyjadřují exaktní hodnotu a na stavu prvku X nezáleží.[3] Díky třístavovosti je možné aplikovat v prohledávání CAM tabulky funkci masky sítě.