Предположим, что иерархия памяти составляет 1 процессор с L1i, L1d, L2i, L2d, L3, DRAM.
Мне интересно, что происходит на более низких уровнях компьютера, когда я использую инструкцию MOV/store
(или любая другая инструкция, которая приведет к передаче данных ЦП в память)?Я знаю, что происходит, если есть только процессор и память, но с кешами я немного запутался. Я искал это, но он только дал информацию о передаче данных между:
- регистрами и памятью
- ЦП и кеш,
- кэш и память
Я пытаюсь понять больше об этом, например, когда кэш будет проходить через, когда будет писать обратно?Я просто знаю, что запись через это немедленно обновляет строку кэша и соответствующую строку памяти, а запись - это обновление до замены. Могут ли они сосуществовать?Это данные будут передаваться непосредственно в память при записи через?и при обратной записи данные будут проходить через иерархию кеша?
Что привело меня в замешательство, так это то, что Volatile в C / C ++. Как я знаю, переменные этого типа будут храниться в памяти напрямую, что означает, что нетчерез кеш. Я прав?Так что, если я определю переменную Volatile и нормальную переменную типа int.как процессор может различить, что записывать непосредственно в память или через иерархию кеша.
Есть ли какая-нибудь инструкция, которая может управлять кешем?Если нет, то как контролируется кеш?Некоторое другое оборудование?ОПЕРАЦИОННЫЕ СИСТЕМЫ?Контроллер кеша (если такая вещь существует)?