В состав ЛЗУ всегда входит контроллер ЛЗУ, осуществляющий управление его работой. Обобщенная архитектура ЛЗУ с учетом наличия контроллера представлена на рис. 1.
Рис. 1.  
Рассмотрим работу ЛЗУ в двух случаях: запись (из МП в ОЗУ) и чтение (из ОЗУ в МП)
Управление ЛЗУ в процессе записи данных из МП в ОЗУ
  1. МП начинает цикл обмена по записи (устанавливает адрес на шине адреса, данные на шине данных, активизирует управляющие линии).
  2. Запрашиваемый адрес поступает в блок поиска и сравнения адресов ЛЗУ. Блок производит поиск указанного адреса в таблице тэгов. Далее возможны два варианта:
    • адрес найден (случай "кэш-попадания"), то есть данные из запрашиваемой ячейки ОЗУ уже содержатся в ЛЗУ. В этом случае контроллер ЛЗУ обновляет эти данные, записывая в найденную ячейку ЛЗУ новые данные, переданные МП.
    • адрес не найден (случай "кэш-промаха"). В данном случае необходимо выделить какую-то ячейку ЛЗУ под сохранение данных и сохранить их. Контроллер ЛЗУ производит выделение ячейки ЛЗУ в соответствии с алгоритмом замещения, который будет описан ниже.
Помимо записи данных в ЛЗУ, они должны быть сохранены также и в основном ЗУ. Это может быть сделано в соответствии с одним из следующих алгоритмов:
Управление ЛЗУ в процессе чтения данных из ОЗУ в МП
  1. МП начинает цикл обмена по чтению (устанавливает адрес на шине адреса, активизирует управляющие линии).
  2. Запрашиваемый адрес поступает в блок поиска и сравнения адресов ЛЗУ. Блок производит поиск указанного адреса в таблице тэгов. Далее возможны два варианта:
Загрузка данных из ОЗУ в ЛЗУ может быть организована в соответствии с двумя алгоритмами:
Очевидно, что второй алгоритм обеспечивает более быструю загрузку, так как цикл обмена начинается еще до фиксации состояния "кэш-промаха". Однако в данном случае каждый раз выполняется обращение к основному ЗУ, которое является весьма энергоемким. Данный факт можно рассматривать как недостаток для случая мобильных систем с автономным питанием, когда проблема энергопотребления весьма актуальна.
Алгоритм замещения данных в ЛЗУ
Представим себе, что необходимо загрузить в ЛЗУ данные из некоторой ячейки ОЗУ. В случае ЛЗУ прямого отображения загрузка может быть произведена только в одну ячейку, имеющую соответствующий индекс. В случае других архитектур, имеются несколько ячеек ЛЗУ, в которые потенциально могут быть загружены данные из ЗУ по требуемому адресу. Задача контроллера — выбрать из них одну. Эта задача решается согласно одному из следующих алгоритмов.
  1. "Случайное замещение". Ячейка выбирается среди возможных случайным образом. Контроллер ЛЗУ содержит в своем составе генератор случайных чисел. Этот алгоритм является наипростейшим с точки зрения аппаратной реализации, однако он неэффективен, так как может привести к "затиранию" часто используемых данных.
  2. "Метод простой очереди". Описывается принципом "первым вошел, первым вышел" (FIFO). Замещению подвергаются данные, загруженные наиболее давно. Такой алгоритм обеспечивает примерно одинаковое время хранения данных в ЛЗУ.
  3. Удаление редко используемой информации. Замещению подвергаются данные, к которым дольше всего не было обращений. Таким образом, наиболее часто используемые данные сохраняются в ЛЗУ максимально долго.
Использование методов 2 и 3 требует особой аппаратной реализации ЛЗУ, в частности необходимо введение служебного ЗУ, которое будет для каждой ячейки ЛЗУ содержать информацию о времени загрузки данных или о времени последнего обращения. С точки зрения эффективности, третий алгоритм представляется наиболее эффективным, если принимать во внимание, что основная задача ЛЗУ — как раз хранение наиболее часто используемых данных.