Блок управления памятью (Memory management unit ) — набор схем для доступа к физической памяти, запрашиваемой ЦП . Среди задач этих систем — функции трансляции виртуальной памяти в память, защита физической памяти , обслуживание рельсов управления кеш-памятью и, в простых (особенно 8-битных) системах, переключение банков памяти
Современные микросхемы MMU делят пространство логической (виртуальной) памяти на страницы размером 2N , обычно несколько килобайт. Младшие N битов адреса (смещение — называется. Offset ) остается неизменным, в то время как старшие биты адреса указать страницу (логическое) памяти номер. MMU преобразует логические адреса (виртуальные) физические адреса , используя ассоциативный кэш под названием TLB — называется. Перевод Lookaside буфера . Если TLB не имеет соответствующего отображения ( TLBограничено) для запускаются механизмы более медленного аппаратного процессора определяется сложением битов.поиск в структурах данных в памяти , что иногда требует помощи программного обеспечения ( операционной системы ). Позиции в этих структурах называются записями (элементами) памяти таблицы страниц ( PTE — именуемыми записями таблицы страниц ), а вся структура называется таблицей страниц ( именуемой таблицей страниц ). Полный адрес в физической памяти смещения номера переведенной страницы.
Записи в TLB или PTE могут также хранить информацию или иметь доступ к ручному режиму записи ( называемому. Dirty Bit ) или в режиме чтения ( называемому. Accessed bit — bit, полезные алгоритмы развертки памяти), биты разрешения страницы Операция память (права для режима супервизора или режима пользователя) или возможность перемещения страницы для подкачки памяти .
Если структуры TLB или PTE не содержат соответствующего описания текущей используемой страницы логической памяти или запись запрещает доступ в данном режиме, MMU сигнализирует ЦП об исключении, связанном с неправильным доступом к странице памяти , так называемой ошибка страницы. Затем операционная система может предпринять действия, связанные с исключением , например, заполнить записи в таблице страниц или TLB или завершить процесс , операция которого вызвала исключение.
Примеры
80×86
MMU выполняется только в защищенном режиме (начиная с 80286). По сути, существует два механизма, обеспечивающих защиту памяти: сегментация (начиная с 80286) и разбиение на страницы (начиная с 80386), из которых сегментация не используется в современных операционных системах, за исключением особых случаев (требуется постоянный контроль над регистрами сегментов, снижая производительность процессора) [ необходима сноска ]. Включенная подкачка не приводит к снижению скорости обработки инструкций (например, проверка возможности записи по заданному адресу выполняется во время обработки инструкций). Для разбиения на страницы требуется дополнительная память для хранения информации о страницах памяти размером 4 КБ. Вам требуется до 4 Кбайт каталога страниц ( англ. Таблица страниц ) и 4 Кбайт для массива каталогов ( англ. Директория страниц ). В случае нарушения прав защиты перед выполнением «незаконных» инструкций генерируется исключение. Операционная система следит за каталогом страниц и таблицей каталогов. MMU процессора Pentium был расширен с возможностью использования страниц размером 4 МБ.
PowerPC
MMU реализован с использованием регистров процессора: 16 сегментных регистров SR0-SR15, 16 регистров BAT (8 регистров для адресов инструкций IBATL0-IBATL3 и IBATU0-IBATU3, 8 регистров BAT для адресов данных DBATL0-DBATL3 и DBATU0-DBATU3) и один регистр SDR1 . Существует три механизма трансляции адресов: трансляция страниц размером 4 Кбайт (использует регистры сегментов SR0-SR15), трансляция переменного размера блока со 128 Кбайт до 256 Мбайт (использует регистры BAT) и адресация в реальном режиме (трансляция отключена). Перевод страницы и перевод блока начинаются одновременно, однако перевод блока имеет приоритет над переводом страницы. Если более старый 15-битный эффективный адрес (обозначение EA0-EA14, ang. Действующий адрес) соответствует одному из регистров IBATU или DBATU, дальнейшая трансляция страницы отменяется. Затем физический адрес начала блока берется из соответствующего регистра IBATL или DBATL. Размер блока кодируется 11 битами регистра IBATU или DBATU и может быть: 128 КБ, 256 КБ, …, 64 МБ, 128 МБ, 256 МБ. Защита данного блока определяется двумя битами PP: 00 без доступа, x1 только для чтения, 10 для чтения и записи разрешены. При нарушении прав выдается исключение в зависимости от типа запроса (доступ к инструкциям или данным). В случае перевода по страницам Старшие 4 бита эффективного адреса (EA0-EA3) выбирают один из 16 сегментных регистров (32 бита). Из выбранного сегментного регистра берутся 24 бита, из которых вычисляется 24 + 28 = 52-битный виртуальный адрес. Затем виртуальный адрес используется для поиска физического адреса двумя способами: либо через TLB (более быстрый доступ, кэшированный физический адрес), либо путем поиска в таблице страниц.
Поддержание содержимого TLB (TLB не является обязательным) и таблицы страниц — это задача операционной системы. Доступ к TLB возможен только тогда, когда процессор работает в режиме супервизора или MSR [PR] = 0 ( англ. Режим супервизора ). Операционная система должна обеспечивать согласованность между TLB и таблицей страниц. Если подходящая копия PTE отсутствует в TLB, процессор ищет PTE в таблице страниц, созданной операционной системой. Таблица состоит из 8-байтовых PTE (содержащих 20-битные физические адреса). Размер таблицы страниц хранится в регистре SDR1 и может составлять 64 КБ, 128 КБ, …, 16 МБ, 32 МБ. Поиск PTE в таблице страниц выполняется в два этапа: он использует два разных хеш-таблицы.и требует в общей сложности 16 PTE для просмотра из таблицы страниц. Первая хеш-функция — это операция XOR. Функции смешивания обеспечивают высокую вероятность обнаружения PTE, в случае возникновения исключения отсутствия совпадения (Ошибка страницы ). Этот механизм обеспечивает эффективный поиск PTE в таблице страниц (без просмотра всей таблицы страниц, которая может составлять до 2 ^ 22 = 4194304 PTE). Если правильный PTE найден уже во время первого поиска (поиск 8 PTE), второй этап не выполняется.