Вытеснение данных L1 в L2C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Вытеснение данных L1 в L2

Сообщение Anonymous »

Я работаю над приложением, для которого важна производительность, и мне нужен детальный контроль над резидентностью кэша. В частности, я ищу способ явного исключения определенного блока памяти из Кэша данных L1 и обеспечения его «перемещения» или понижения в Кэше L2 (или следующего уровня в иерархии) без необходимости аннулирования его из всей иерархии кэша или принудительной обратной записи в основную память (DRAM).
Мне известны такие инструкции, как CLFLUSH или CLFLUSHOPT на x86, но я понимаю, что они часто делают строку недействительной на всех уровнях кэша.
  • Существует ли конкретная инструкция ISA (x86, ARM или RISC-V), специально предназначенная для понижения уровня L1 на L2?
  • Если прямой инструкции не существует, то какой наиболее эффективный способ «загрязнения кэша» или Стратегия «перебора» для принудительного вытеснения определенного диапазона адресов из L1?
  • Как инклюзивный/эксклюзивный характер иерархии кэша влияет на этот процесс?
Я ищу архитектурную документацию или встроенные решения на основе C/C++.

Подробнее здесь: https://stackoverflow.com/questions/798 ... tion-to-l2
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»