Мне нужен алгоритм LRU для 4-стороннего ассоциативного кеша с дополнительными 5 битами на набор, чтобы указать, какая строка должна быть исключена.
-------------------------------------
Set x: | line_0 | line_1 | line_2 | line_3 |
-------------------------------------
-----------------------------------------
| bit_4 | bit_3 | bit_2 | bit_1 | bit_0 |
-----------------------------------------
Сначала я попытался разделить свою проблему на более мелкие. Имея только две строки, я бы запустил бит, соответствующий текущей используемой строке, одновременно установив другую на 0.
Жертвой будет строка с битом, установленным на 0 (при условии, что набор заполнен).
Я думал, что могу использовать это в 4-стороннем кеш-памяти, имеющем биты bit_4
, bit_3
, bit_1
, bit_0
, соответствующие line_0
, line_1
, line_2
, line_3
и средний бит, указывающий, какая сторона использовалась последней. Я быстро понял, что это недостаточно точно. Т.е. после последовательности line_0
, line_2
, line_3
, line_1
биты будут: 10101, что будет означать, что левая сторона ссылалась совсем недавно (что верно), но это не обязательно означает, что эта сторона не упоминался в последнее время.
Буду очень признателен за любые подсказки.