repstosw 18 5 ноября, 2023 Опубликовано 5 ноября, 2023 · Жалоба Допустим MMU настроено так, что есть пара виртуальных адресов памяти: 0x40000000 0x40020000 Которые ссылаются на один и тот же физический адрес памяти: 0x40000000 Кеширование и буфер включены в MMU для этих регионов (биты C и B). Собственно вопрос: при чтении-записи в эти виртуальные адреса - как будет работать кеширование и буферизация? Будут ли заново читаться-записываться память второго региона, если ранее происходили чтение-запись первого региона? Проще говоря - кеширование работает по физическим или виртуальным адресам? Линии кеша обновляются при изменении содержимого по виртуальному или физическому адресу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 217 5 ноября, 2023 Опубликовано 5 ноября, 2023 · Жалоба Кешируются ячейки памяти по физическим адресам. MMU - это, в частности, транслятор виртуальных адресов в физические и поэтому находится на уровне выше. 1 час назад, repstosw сказал: Будут ли заново читаться-записываться память второго региона, если ранее происходили чтение-запись первого региона? Нет, если данные уже есть в кеше. Для более точного ответа нужно видеть последовательность операций чтения-записи к этим регионам памяти, которую вы рассматриваете. https://developer.arm.com/documentation/den0024/a/Caches/Cache-terminology/Cache-tags-and-Physical-Addresses Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 5 ноября, 2023 Опубликовано 5 ноября, 2023 · Жалоба 2 hours ago, makc said: Нет, если данные уже есть в кеше. И это хорошо. Читал, что в разных архитектурах по-разному: кеш либо до MMU, длибо после него. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 217 5 ноября, 2023 Опубликовано 5 ноября, 2023 · Жалоба 31 минуту назад, repstosw сказал: Читал, что в разных архитектурах по-разному: кеш либо до MMU, длибо после него. Что именно вы имеете в виду? Какие архитектуры? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 1 5 ноября, 2023 Опубликовано 5 ноября, 2023 (изменено) · Жалоба On 11/5/2023 at 12:11 PM, repstosw said: Линии кеша обновляются при изменении содержимого по виртуальному или физическому адресу? у cortex a7 судя по TRM L1 кэш данных PIPT https://developer.arm.com/documentation/ddi0464/f/L1-Memory-System/L1-data-memory-system?lang=en у него нет алиасов - в кеше только одна копия всегда, но могут быть промахи TLB потому что перед обращением к кэшу надо преобразовать виртуальный адрес в физический Изменено 5 ноября, 2023 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 15 ноября, 2023 Опубликовано 15 ноября, 2023 · Жалоба On 11/5/2023 at 11:26 PM, makc said: Что именно вы имеете в виду? Какие архитектуры? Автор статьи на Хабре утверждает, что в разных архитектурах кеш может быть перед MMU или за MMU. Из-за этого универсального ответа на мой вопрос не будет. Но мне был интересен вопрос в контексте ARM Cortex A7, ответ на него получен. https://habr.com/ru/articles/211150/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться