Вытеснение данных 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

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