Наименее часто используемая трассировка кэша (LFU)

#algorithm #policy

Вопрос:

Мне интересно, правильно ли я ответил на этот вопрос:

Ссылки на страницы расположены в следующей последовательности: *ABCBADACEBEFBEFBA При замене страницы LFU, сколько ошибок на страницах возникнет?

слот A B C B A D A C E B E F B E F B A
1 A x x x
2 B x x x x
3 C D C E x F E F

Судя по отслеживанию, которое я сделал. Я пришел к выводу, что существует 9 ошибок на страницах. Я подсчитываю частоту каждого использования страницы и сбрасываю ее до 0 всякий раз, когда они удаляются из своего слота (заменяются). Это правильный способ сделать это?

слот A B C B A D A C E B E F B E F B A
1 A x x x
2 B x C B F B F B
3 C D E x x

Решение, которое мне дали, похоже на то, что дает нам 11 ошибок на страницах. Однако я не могу понять, почему второй C будет заменен на слоте 2, когда частота B равна 2, а частота D в слоте 3 равна только 1.

Ответ №1:

Вам следует вернуться к определению LFU, которое вам дали в классе. Похоже, что вы интерпретируете это как

удалите запись с наименьшим количеством обращений с момента ее заполнения.

в этом случае ваш ответ (первая таблица) действительно правильный.

Однако, похоже, что политика LFU, используемая в ожидаемом ответе (вторая таблица), является

выселите запись с наименьшим коэффициентом freq(X) = number of hits / its age .

В таком случае на 2-м С у вас есть

 freq(A) = 3/7 = 0.429 freq(B) = 2/6 = 0.333 freq(D) = 1/2 = 0.500  

и запись с наименьшей частотой действительно является B.

Я бы ожидал, что LFU реализует 2-ю стратегию, потому что, как только у вас в кэше появятся записи разного возраста, вам придется учитывать, что у них меньше или больше времени для накопления статистики. Ваш подход даст правильные частоты только в пределе, если записи никогда не будут удалены, что практически не представляет интереса.

Комментарии:

1. В этом есть большой смысл. В моем классе они только что упомянули: политика заменяет наименее часто используемую страницу, когда должно произойти выселение. Поэтому я поискал на YouTube, и большинство видео используют первый метод. Хотя большое спасибо!

2. теперь, когда я снова смотрю на это, беря следующую букву » Б «после буквы «В», о которой я спрашивал. freq(A) = 3/9 = 0.33, freq(C)=1/2 = 0.5, freq(E)=1/1=1 Однако для выселения было выбрано С, а не А. Частота А становится все меньше и меньше, но ее никогда не выселяют.

3. @aujau: это действительно выглядит странно. Вам следует спросить об этом своего инструктора.