Алгоритм псевдо LRU.


Когда в цикле считывания обнаруживается промах, в кэш необходимо передать информацию из ОП (строку), при этом приходится выбирать из 4-х строк множества. Если есть бит недостоверности, то нет проблем. А если все строки достоверны (1111), то выбирается строка с привлечением LRU.

3 бита LRU изменяются при каждом попадании и заполнении, следующим образом: если последнее обращение во множестве было к строке L0 и L1, то бит B0=1, а если к L2 и L3, то бит B0=0, и т.д. (см. рисунок).

 

Чтение из кэш осуществляется по физическому адресу, поступающему из устройства сегментации или страничного преобразования по ША. Он позволяет извлекать информацию с точностью до байта, используя дешифратор строки DCC, который сравнивает значение старших 21 бит физического адреса с кодами тегов соответствующего множества. При попадании, строка одного из направлений массива передается в буферный регистр, из которого, требуемый байт (слово, двойное слово) передается на внутреннюю ШД процессора. Часто строка из буферного регистра передаётся как 16-байтный код в устройство предвыборки команд, минуя ВШД. При промахе, если не срабатывает одна из схем сравнения D1 ¸ D4, МП включает режим чтения внешнего кэш или ОЗУ по данному ФА.

Блок LRU содержит память также из 128 строк, по 7 бит в строке. Три бита каждой строки LRU <B0, B1, B2> служат для определения правила замены. Четыре оставшиеся бита памяти строки LRU используются для определения достоверности данных, хранимых в кэш. При очистке кэш или сбросе МП все биты достоверности устанавливаются в ²0². При промахе и новой записи бит, соответствующий направлению и строке, устанавливается в ²1². При вычислениях МП может объявить часть строк недостоверными и соответствующие биты B3-B6 LRU установить в ²0². Эти недостоверные строки впоследствии используются в первую очередь для записи новых данных в кэш. Если все биты B3-B6 = 1, то замена данных в кэш определяется в соответствии с состоянием <B0, B1, B2>. Если данные в кэш становятся частично достоверными, то соответствующие биты достоверности не устанавливаются в ²1².