Сбрасывает ли инструкция clflush только кэш 1-го уровня? - PullRequest
0 голосов
/ 30 января 2019

У меня есть многоядерная система с 4 ядрами, каждое из которых имеет частные кэши L1 и L2 и общий LLC.Кэши имеют инклюзивное свойство, означающее, что кэши более высокого уровня - это супер-набор кэшей более низкого уровня.Могу ли я напрямую сбросить блок в LLC, или он должен сначала пройти через нижний уровень?

Я пытаюсь понять, flush + reload и flush + flush Cache side Channel Channel.

1 Ответ

0 голосов
/ 30 января 2019

clflush архитектурно требуется / гарантировано для удаления строки из всех уровней кэша, что делает его полезным для передачи данных в энергонезависимые модули DIMM.(например, DRAM с батарейным питанием или 3D XPoint).

Формулировка в руководстве кажется довольно ясной:

Делает недействительными все уровни иерархии кэша вобласть когерентности кэша ... Если эта строка кэша содержит измененные данные на любом уровне иерархии кэша, эти данные записываются обратно в память

Я думаю, если несколько ядер имеют строку в состоянии общего доступа,clflush / clflushopt на одном ядре должен изгнать его из закрытых кешей всех ядер.(Это могло бы произойти в любом случае как часть исключения из включенного кэша L3, но Skylake-X изменился на NINE (не включительно не эксклюзивный) кэш L3.)

Могу ли я напрямую сбросить блок наLLC или он должен сначала пройти через нижний уровень?

Непонятно, о чем вы спрашиваете.Вы спрашиваете, можете ли вы попросить процессор сбросить блок только с L3, не нарушая L1 / L2?Вы уже знаете, что L3 включается в большинство процессоров Intel, поэтому суммарный эффект будет таким же, как clflush.Чтобы ядра могли общаться с L3, им нужно пройти через свои собственные L1d и L2.

clflush все еще работает, если данные присутствуют только в L3, но не в частном L1d или L2 ядра, выполняющего их.Это не «подсказка», как предварительная выборка, или только локальная вещь.

В будущих процессорах семейства Silvermont будет инструкция cldemote, которая позволяет очистить блок до LLC, но не до DRAM.(И это только подсказка, поэтому он не заставляет процессор подчиняться ему, если путь обратной записи занят выселениями, чтобы освободить место для нагрузок по требованию.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...