процессор переключает данные из кода L1 в кэш данных L1? - PullRequest
3 голосов
/ 31 октября 2011

Я хотел бы знать, как микропроцессор (скажем, в архитектуре SandyBridge в длинном режиме) переключает данные из «кода L1» в кэш «данных L1» и наоборот? Допустим, страница использовалась для хранения данных, поэтому она кэшируется в кеше L1. Затем во время выполнения ОС указатель инструкций переходит (выпуская инструкцию JMP) в область памяти, которая в данный момент кэшируется в кеше данных L1. Переносит ли процессор данные из данных L1 в кэш кода L1? Тот же вопрос, когда команда управления данными выдается по адресу, который хранится в кеше кода L1 (т.е. это означает, что адрес стал пригодным для хранения данных, а не для выполнения кода) Как процессор справляется с этими проблемами?

Я спрашиваю об этом, потому что я изучаю самоизменяющийся код. Если у вас есть какая-либо дополнительная информация, где я мог бы прочитать подробности о кеше кода, пожалуйста, оставьте ссылку / ссылку.

1 Ответ

3 голосов
/ 31 октября 2011

См. Новейшее руководство для программиста Intel , том 3, системное программирование, в частности, следующие разделы:

  • 8.1.3 Обработка кода само- и кросс-модификации
  • 11.6 КОД САМОДИФИЦИРУЮЩЕГО

Я не думаю, что вы хотите знать и полагаться на поведение конкретных моделей ЦП, потому что это сделает ваш код нестабильным на разных или более новых ЦП.Просто следуйте официальным рекомендациям по проектированию и выполнению собственного кода и кросс-модификации кода.

И вы не хотите делать много изменений кода во время выполнения из-за связанных с этим проблем производительности из-за недействительности кэша.

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