реклама на сайте
подробности

 
 
> what is MMU?, теория построения
Doka
сообщение Sep 24 2008, 06:48
Сообщение #1


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



Блок управления памятью (MMU — memory management unit) - В настоящее время, чаще всего, упоминается в связи с организацией т. н. виртуальной памяти и, следовательно, критически важен для многих современных многозадачных ОС


по запросу "MMU theory" гугль ничего внятного не сказал, в википедии только общие слова, а интересует именно сама теория:
что такое MMU физически?

т.е. общий принцип понятен - как в том же 80286 доступ к страницам памяти по 64Кб, а переключение страниц записью в соответствующий регистр процессора, но есть еще Translation lookaside buffer (TLB) назначение и обязательность которого в составе MMU не совсем ясна..

можно конечно взять исходники того же OpenSparc/Leon и расковырять то, как там реализован этот пресловутый MMU, но я подозреваю, что это не самый короткий путь к знанию.

--------------------------------------------------

вот у Cortex-M3 к примеру имеется пресловутый MPU (Memory Protection Unit) - это тоже самое что MMU или покрывает не весь функционал, необходимый операционным системам, использующим MMU ?


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AVR
сообщение Feb 19 2009, 21:04
Сообщение #2


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Очень интересная тема. Только сейчас я кажется понял как работает MMU. Но возникает вопрос: каков объем этого буфера TLB для разных моделей процессоров? Где это можно прочитать?


--------------------
Go to the top of the page
 
+Quote Post
yes
сообщение Feb 20 2009, 10:27
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(AVR @ Feb 20 2009, 00:04) *
Очень интересная тема. Только сейчас я кажется понял как работает MMU. Но возникает вопрос: каков объем этого буфера TLB для разных моделей процессоров? Где это можно прочитать?

для классических или открытых архитектур - можно смотреть у "производителя" - например, ARM.COM или тот SUN.COM
для всяких интелей/амд - можно доку на проц смотреть (хотя не уверен, что для последних моделей эта инфа публикуется)

"теорию" начать можно
http://en.wikipedia.org/wiki/Memory_management_unit
Go to the top of the page
 
+Quote Post
yuri_t
сообщение Feb 20 2009, 23:02
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



Предположим, что у Вас обычный CPU без MMU и Вам надо прочитать
содержимое внешней ячейки RAM. Для этого Вы (или компилятор) будете,
например, использовать команду LDR. При исполнении этой команды CPU (без MMU/MPU)
выставит на внешнюю шину адреса адрес из команды LDR, RAM будет выбрана и
дата из соотв. ячейки RAM поступит в CPU - здесь все делается, что называется, в лоб.

Если же у Вас CPU с MMU, то при исполнении той же команды LDR, адрес из нее поступает
не на внешнюю шину адреса, а в некоторый "черный ящик" - MMU.

И вот тут выясняется несколько интересных вещей.

Оказывается, что адреса на шине адреса внешней RAM никак не связаны с адресом из
команды LDR. Более того, адреса во внешней RAM идут, конечно, подряд, но используются
подряд только в пределах небольших блоков памяти (скажем, 4Kb размером) - страниц.

Каждая такая страница, помимо своего прямого содержимого, имеет и дополнительную
информацию о себе (эта информация хранится в специально зарезервированной области RAM и
используется MMU). В общем случае эта информация
содержит номер(ID) процесса, владеющего содержимым страницы и начальный реальный
(тот, что задается в командах типа LDR) адрес содержимого страницы.

Таким образом, здесь физический адрес RAM никак не связан с реальным адресом -
например, страница, соответствующая адресам из команды LDR 0x40000000..0x40000FFF,
находится по физическим адресам RAM 0x100000..0x100FFF или 0x200000..0x200FFF и т.д.,
причем этот физический адрес непостоянен - см.ниже)

Теперь для чтения внешней ячейки RAM, MMU ищет в RAM страницу, в которой находится
требуемый адрес. Если такая страница сейчас в RAM - O.K., если же нет - то генерится exception,
по которому нужная страница загружается в RAM (например, с жесткого диска, где она
временно хранится). В этом случае, если в RAM нет неиспользуемого места, то одна из страниц
из RAM выгружается на жесткий диск - выбор такой страницы производится по некоторому
принципу (например, выгружается страница, принадлежащая неактивному процессу и т.п.).
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 14:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01393 секунд с 7
ELECTRONIX ©2004-2016