Может ли внутренний уровень кэша быть записан обратно во включающий кэш внешнего уровня? - PullRequest
1 голос
/ 23 декабря 2019

Я задал похожий вопрос: Может ли кэш более низкого уровня иметь более высокую ассоциативность и при этом сохранять включение?

Предположим, у нас есть 2-уровневый кэш. (L1 ближайший к ЦП (внутренний / нижний уровень) и L2 вне этого, ближайший к основной памяти) может ли кэш L1 иметь обратную запись?

Моя попытка)
Я думаю, что мы должны иметь только записьчерез кеш и у нас не может быть кеша обратной записи в L1. Если блок заменяется в кеше L1, то он должен быть записан обратно в L2, а также в основную память, чтобы удерживать включение. Следовательно, оно должно быть записано, а не записано обратно.

Все эти сомнения возникают из приведенного ниже экзаменационного вопроса. : P

Вопрос) Для включения для поддержания между двумя уровнями кэша L1 и L2 в иерархии многоуровневого кэша, какие из следующих необходимы?

I) L1 должен быть сквозным кэшем
II) L2 должен быть сквозным кэшем
III) Ассоциативность L2 должна быть больше, чем у L1
IV)Кэш-память второго уровня должна быть по крайней мере такой же, как кэш-память первого уровня

A) Только IV
B) Только I и IV
C) Только I, II и IV
D) I, II, III и IV

Насколько я понимаю, ответ должен быть вариант (B)

Ответы [ 2 ]

3 голосов
/ 23 декабря 2019

Реальный контрпример: серия Intel i7 (начиная с Nehalem) имеет большой общий (между ядрами) L3, включающий в себя, и, конечно, использует политику выделения с обратной записью для снижения требований к пропускной способности DRAM.

Мое пониманиев том, что это что-то вроде «включающего тег»: да, данные недопустимы во внешних кешах, но тег должен быть для строки, выделенной внутренним кешем. Поэтому проверка тегов внешнего кэша может сказать вам, определенно ли во внутреннем кэше есть копия строки в каком-либо допустимом состоянии. т. е. он работает как snoop-фильтр для этих многоядерных процессоров.

Чтобы написать строку, внутренний кеш должен извлекать ее через внешний кеш, поэтому он может поддерживать включение таким образом, когда обрабатываетRFO (чтение для владения) из пропущенной записи (не в состоянии Exclusive или Modified).


Наличие строки в состоянии Modified во внутреннем кеше (L1) означает, что включающий внешний кеш будет иметь тегсоответствует этой строке, но состояние определенно является недействительным.

Когда данные в конечном итоге записываются обратно из L1, они могут быть в состоянии Modified только во внешнем кэше, исключенном из L1.

0 голосов
/ 03 января 2020

Ответ на ваш вопрос будет D) Только L2 должен быть больше

Только включительно означает, что линия в L1 должна присутствовать в L2. Линия может быть дополнительно изменена в L1, и состояние в L1 будет отражать то же самое. Когда какое-то другое ядро ​​ищет L2, оно может отследить состояние линии в L1 и вызвать WB в случае необходимости.

...