Перейти к содержанию
    

Про виртуальные адреса вопрос (ARM)

Допустим  MMU настроено так, что есть пара виртуальных адресов памяти:

0x40000000
0x40020000

Которые ссылаются на один и тот же физический адрес памяти:

0x40000000

Кеширование и буфер включены в MMU для этих регионов (биты C и B).

 

Собственно вопрос:  при чтении-записи в эти виртуальные адреса - как будет работать кеширование и буферизация?  

Будут ли заново читаться-записываться память второго региона, если ранее происходили чтение-запись первого региона?

 

Проще говоря - кеширование работает по физическим или виртуальным адресам?  Линии кеша обновляются при изменении  содержимого  по виртуальному или физическому адресу?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кешируются ячейки памяти по физическим адресам. MMU - это, в частности, транслятор виртуальных адресов в физические и поэтому находится на уровне выше.

1 час назад, repstosw сказал:

Будут ли заново читаться-записываться память второго региона, если ранее происходили чтение-запись первого региона?

Нет, если данные уже есть в кеше.

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

 

https://developer.arm.com/documentation/den0024/a/Caches/Cache-terminology/Cache-tags-and-Physical-Addresses

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, makc said:

Нет, если данные уже есть в кеше.

И это хорошо.

Читал, что в разных архитектурах по-разному: кеш либо до MMU, длибо после него.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

31 минуту назад, repstosw сказал:

Читал, что в разных архитектурах по-разному: кеш либо до MMU, длибо после него.

Что именно вы имеете в виду? Какие архитектуры?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 потому что перед обращением к кэшу надо преобразовать виртуальный адрес в физический

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 11/5/2023 at 11:26 PM, makc said:

Что именно вы имеете в виду? Какие архитектуры?

Автор статьи на Хабре утверждает, что в разных архитектурах кеш может быть перед MMU или за MMU. Из-за этого универсального ответа на мой вопрос не будет.

Но мне был интересен вопрос в контексте ARM Cortex A7, ответ на него получен.

https://habr.com/ru/articles/211150/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...