Ассоциативная память
Ассоциативная память (АП) или ассоциативное запоминающее устройство (АЗУ) — специальный вид машинной памяти, используемый в приложениях очень быстрого поиска. Известна также под терминами «память, адресуемая по содержимому», «ассоциативное запоминающее устройство», «контентно-адресуемая память» или «ассоциативный массив», хотя последний термин чаще используется в программировании для обозначения структуры данных (Hannum и др., 2004).
Аппаратный ассоциативный массивПравить
В отличие от обычной машинной памяти (памяти произвольного доступа, или RAM), в которой пользователь задает адрес памяти и ОЗУ возвращает слово данных, хранящееся по этому адресу, АП разработана таким образом, чтобы пользователь задавал слово данных, и АП осуществляла его поиск, чтобы выяснить, хранится ли оно где-либо в памяти. Если слово данных найдено, АП возвращает список одного или более адресов хранения, где слово было найдено (и в некоторых архитектурах также возвращает само слово данных или другие связанные части данных). Таким образом, АП — аппаратная реализация того, что в терминах программирования назвали бы ассоциативным массивом.
Промышленные стандарты адресуемой содержанием памятиПравить
Определение основного интерфейса для АП и других Сетевых элементов поиска (Network Search Elements, NSE) было специфицировано в Соглашении о возможности взаимодействий (Interoperability Agreement), названном Интерфейс предысторий (Look-Aside Interface) (LA-1 и LA-1B), который был разработан Форумом сетевой обработки, который позже был объединен с Оптическим межсетевым форумом (Optical Internetworking Forum, OIF). Многочисленные устройства были произведены компаниями Integrated Device Technology, Cypress Semiconductor, IBM, Netlogic Micro Systems и другими по этим соглашениям LA. 11 декабря 2007, OIF издал соглашение об интерфейсе Последовательной предыстории (Serial Lookaside, SLA).
Реализация на полупроводникахПравить
Из-за того, что АП разработана, чтобы искать во всей памяти одной операцией, это получается намного быстрее, чем поиск в RAM фактически во всех приложениях поиска. Однако, есть и минус в большей стоимости АП. В отличие от чипа RAM, у которого хранилища простые, у каждого отдельного бита памяти в полностью параллельной АП должна быть собственная присоединенная схема сравнения, чтобы обнаружить совпадение между сохраненным битом и входным битом. К тому же, выходы сравнений от каждой ячейки в слове данных должны быть объединены, чтобы привести к полному результату сравнения слова данных. Дополнительная схема увеличивает физический размер чипа АП, что увеличивает стоимость производства. Дополнительная схема также увеличивает рассеиваемую мощность, так как все схемы сравнений активны на каждом такте. Как следствие, АП используется только в специализированных приложениях, где скорость поиска не может быть достигнута, используя другие, менее дорогостоящие, методы.
Альтернативные реализацииПравить
Для того, чтобы достигнуть другого баланса между скоростью, размером памяти и стоимостью, некоторые реализации эмулируют функции АП путём использования стандартного поиска по дереву или алгоритмов хеширования, реализованных аппаратно, также используя для ускорения эффективной работы такие аппаратные трюки, как репликация и конвейерная обработка. Эти проекты часто используются в маршрутизаторах.
Троичная ассоциативная памятьПравить
Двоичная АП — простейший тип ассоциативной памяти, который использует слова поиска данных, состоявшие полностью из единиц и нулей. В троичной АП (ternary content-addressable memory, TCAM[1]) добавляется третье значение для сравнения «X», или «не важно», для одного или более битов в сохраненном слове данных, добавляя дополнительную гибкость поиску.
Например, в троичной АП могло бы быть сохранено слово «10XX0», которое выдаст совпадение на любое из четырёх слов поиска «10000», «10010», «10100» или «10110». Добавление гибкости к поиску приходит за счёт увеличения сложности памяти, поскольку внутренние ячейки теперь должны кодировать три возможных состояния вместо двух. Это дополнительное состояние обычно осуществляется добавлением бита маски «важности» («важно»/«не важно») к каждой ячейке памяти.
Примеры приложенийПравить
Адресуемая содержанием память часто используется в компьютерных сетевых устройствах. Например, когда сетевой коммутатор (switch) получает фрейм данных на один из своих портов, это обновляет внутреннюю таблицу с источником MAC-адреса фрейма и порта, на который он был получен. Потом он ищет MAC-адрес назначения в таблице, чтобы определить, на какой порт фрейм должен быть отправлен, и отсылает его на этот порт. Таблица MAC- адресов обычно реализована на двоичной АП, таким образом порт назначения может быть найден очень быстро, уменьшая время ожидания коммутатора.
Троичные АП часто используются в тех сетевых маршрутизаторах, в которых у каждого адреса есть две части: (1) адрес сети, который может измениться в размере в зависимости от конфигурации подсети, и (2) адрес хоста, который занимает оставшиеся биты. У каждой подсети есть маска сети, которая определяет, какие биты — адрес сети и какие биты — адрес хоста. Маршрутизация делается путём сверки с таблицей маршрутизации, которую поддерживает маршрутизатор (router). В ней содержатся все известные адреса сети назначения, связанная с ними маска сети и информация, необходимая пакетам, маршрутизируемым по этому назначению. Маршрутизатор, реализованный без АП, сравнивает адрес назначения пакета, который будет разбит, с каждым входом в таблице маршрутизации, выполняя при этом логическое И с маской сети и сравнивая результаты с адресом сети. Если они равны, соответствующая информация направления используется, чтобы отправить пакет. Использование троичной АП для таблицы маршрутизации делает процесс поиска очень эффективным. Адреса хранятся с использованием бита «не важно» в части адреса хоста, таким образом поиск адреса назначения в АП немедленно извлекает правильный вход в таблице маршрутизации; обе операции — применения маски и сравнения — выполняются аппаратно средствами АП.
Другие приложения АП включаютПравить
- Диспетчеры кэша центрального процессора и ассоциативные буфера трансляции (TLB)
- Базы данных
- Искусственные нейронные сети
- Системы обнаружения вторжений
- Аппаратура сжатия данных
См. такжеПравить
- Ассоциативная память на нейронных сетях
- Ассоциативный массив
- Буфер ассоциативной трансляции (TLB)
- Контентно-адресуемое хранилище данных
- Таблица поиска
- Контентно-адресуемая сеть[en]
- Процессор в памяти, Processor-in-memory (PIM), или Вычисляющее ОЗУ или Computational RAM, C-RAM, также, «Вычисления в памяти»
- Вычисления с памятью, концепция и реализация в виде разновидности ПЛИС
ПримечанияПравить
- ↑ CCNP BCMSN Exam Certification Guide: CCNP Self-study — David Hucaby — Google Книги (неопр.). Дата обращения: 7 апреля 2015. Архивировано 4 марта 2016 года.
ЛитератураПравить
- Кохонен Т. Ассоциативные запоминающие устройства. М.: Мир, 1982. — 384 с.
На английском языкеПравить
- Anargyros Krikelis, Charles C. Weems (editors) (1997) Associative Processing and Processors, IEEE Computer Science Press. ISBN 0-8186-7661-2
- Pagiamtis, K. & Sheikholeslami, A. (2006, March). Content-Addressable Memory (CAM) Circuits and Architectures: A Tutorial and Survey. IEEE J. of Solid-State Circuits, 41(3), 712—727.
- Hannum et al. (2004) System and method for resetting and initializing a fully associative array to a known state at power on or through machine specific state. U.S. Patent 6,823,434.
СсылкиПравить
- Ассоциативное запоминающее устройство — статья из Большой советской энциклопедии.
На английском: