Кіріспе
Контент-адрестік жад (CAM) – белгілі бір өте жоғары жылдамдықпен іздеу қолданбаларында қолданылатын компьютерлік жадтың ерекше түрі. Ол ассоциативтік жад немесе ассоциативтік сақтағыш деп те аталады және кіріс іздеу деректерін сақталған деректер тізімімен салыстырып, сәйкес деректердің мекенжайын қайтарады. CAM жиі желілік құрылғыларда қолданылады, онда ол ақпаратты жіберу базасы мен маршруттау кестесі операцияларын жылдамдатады. Осы типтегі ассоциативтік жад кэш жадында да қолданылады. Ассоциативтік кэш жадында мекенжай және мазмұн бірге сақталады. Егер мекенжай сәйкес келсе, тиісті мазмұн кэш жадынан алынады.
Content addressable memory (CAM) is a special type of computer memory used in certain very high speed searching applications. It is also known as associative memory or associative storage and compares input search data against a table of stored data, and returns the address of matching data. CAM is frequently used in networking devices where it speeds up forwarding information base and routing table operations. This kind of associative memory is also used in cache memory. In associative cache memory, both address and content is stored side by side. When the address matches, the corresponding content is fetched from cache memory.
Тарих
Дадли Аллен Бак 1955 жылы мазмұндық адрестік жад тұжырымдамасын ойлап тапты. Бак танып-білу құрылымының авторы ретінде танылады.
Жабдықтық ассоциативтік массив
Стандартты компьютерлік жадтан өзгеше, кездейсоқ сүйемелдеу жадында (RAM) пайдаланушы жад адресін ұсынады және RAM сол мекенжайда сақталған дерек сөзін қайтарады, ал CAM дерек сөзін ұсыну арқылы жасалған, және CAM оның барлық жадысын сол дерек сөзінің қайда сақталғанын табу үшін қарастырады. Егер дерек сөзі табылса, CAM сол сөз табылған бір немесе бірнеше сақтау мекенжайларының тізімін қайтарады. Осылайша, CAM – бағдарламалық жасақтамада ассоциативтік массив деп аталатын нәрсенің аппараттық іске асырылуы. Дудли Аллен Бак 1955 жылы ұсынған дерек сөзін тану блогында осыған ұқсас ұғымды кездестіруге болады.
Стандарттар
CAM және басқа желілік іздеу жүйелері үшін маңызды интерфейс анықтамасы, Желілік өңдеу форумы әзірлеген Look Aside Interface (LA 1 және LA 1B) деп аталатын өзара үйлесімділік келісімінде белгіленген. Integrated Device Technology, Cypress Semiconductor, IBM, Broadcom және тағы да басқалар тарапынан осы өзара үйлесімділік келісіміне сәйкес келетін көптеген құрылғылар жасалған. 2007 жылдың 11 желтоқсанында OIF сериялық қарау интерфейсі (SLA) келісімін жариялады.
Жартылай өткізгішпен іске асыру
CAM деректерді іздеу қолданбаларында RAM-нан әлдеқайда жылдам. Дегенмен, CAM-ның бағасы жоғары. RAM чипінен айырмашылығы, қарапайым жад жасушаларына ие болса, толық параллельді CAM-дегі әрбір жеке жад биті сақталған бит пен кіріс битінің сәйкес келіп-келмейтінін анықтау үшін жеке салыстыру тізбегімен жабдырылуы керек. Сонымен қатар, дерек сөзіндегі әрбір жасушадан алынған сәйкестік нәтижелері толық дерек сөзінің сәйкестік сигналын шығару үшін біріктірілуі тиіс. Қосымша тізбектер CAM чипінің физикалық көлемін және өндіріс құнын арттырады. Әрбір салыстыру тізбегі әрбір сағат циклында жұмыс істегендіктен, қосымша тізбектер қуат тұтынуды да арттырады. Осы себепті CAM тек қана арнайы қолданыстарда қолданылады, онда іздеу жылдамдығын арзан әдіспен қамтамасыз ету мүмкін емес. Сәтті жүзеге асырылған алғашқы мысал – жалпы мақсаттағы ассоциативтік процессорлық интегралдық схемасы және жүйе. 2000-шы жылдардың басында Cypress, IDT, Netlogic, Sibercore және MOSAID сияқты бірнеше жартылай өткізгіш компаниялары желілік қолданыстарға бағытталған CAM өнімдерін ұсынды. Бұл өнімдер Желілік Іздеу Қозғалтқыштары (NSE), Желілік Іздеу Үдеткіштері (NSA) және Білімге Негізделген Процессорлар (KBP) деп аталды, бірақ негізінен желіге оңтайландырылған арнайы интерфейстері мен мүмкіндіктері бар CAM болды. Қазіргі уақытта Broadcom бірнеше KBP отбасыларын ұсынады.
Баламалы іске асырулар
Жылдамдық, жад көлемі және құн арасындағы басқаша тепе-теңдікке қол жеткізу үшін кейбір жүзеге асырулар стандартты ағаш іздеу немесе аппараттық құрылымдағы хэшлеуді пайдалану арқылы CAM функциясын имитациялайды, тиімді өнімділікті арттыру үшін көшірмелеу немесе конвейерлендіру сияқты аппараттық тәсілдерді қолданады. Мұндай құрылымдар көбінесе маршрутизаторларда қолданылады. Lulea алгоритмі – интернет маршруттау кестелерінде қажет болатын ең ұзын префикске сәйкес іздеудің тиімді іске асырылуы.
Тернарлы КАМ-тар
Бинарлық CAM – CAM-нің ең қарапайым түрі болып табылады және деректерді іздеу сөздерін 1-дер мен 0-дерден ғана құрастырады. Тернарлық CAM (TCAM) сақталған сөздің бір немесе бірнеше биті үшін үшінші сәйкес келу күйін – X немесе «маңызды емес» күйін қосады, осылайша іздеуге икемділік қосады. Мысалы, тернарлық CAM-дегі 10XX0 сақталған сөзі 10000, 10010, 10100 немесе 10110 іздеу сөздерінің кез келгенімен сәйкес келеді. Қосымша іздеу икемділігі бинарлық CAM-ге қарағанда қосымша шығындарға әкеледі, себебі ішкі жад жасушасы енді бинарлық CAM үшін екі емес, үш мүмкін күйді кодтауы керек. Бұл қосымша күй әдетте әрбір жад жасушасына маска битін (күтімді немесе күтімсіз битін) қосу арқылы іске асырылады. 2013 жылы IBM 2 транзистор/2 кедергілік сақтау (2T 2R) жасушаларын пайдаланып, ұшпайтын TCAM жасады. Халықаралық ғалымдар тобы жақында гибридтік ферроэлектрлік FeFET қолданып TCAM-нің жобасын жариялады.