Открыть сервис

MMU

MMU (от англ. Memory Management Unit — блок управления памятью) — это аппаратный компонент центрального процессора (ЦП) или специализированная микросхема, отвечающая за преобразование виртуальных адресов, используемых программами, в физические адреса оперативной памяти (ОЗУ). MMU обеспечивает изоляцию процессов, защиту памяти и реализацию механизмов виртуальной памяти, включая подкачку (paging) и сегментацию.

История

Ранние системы

До появления MMU программы работали непосредственно с физическими адресами памяти. В 1960-х годах в мэйнфреймах (например, IBM System/360) начали применяться простые схемы защиты памяти, но полноценная виртуализация адресов появилась позже.

Развитие в микропроцессорах

Первым массовым микропроцессором со встроенным MMU стал Intel 80286 (1982 год), который поддерживал защищённый режим с сегментацией. В 1985 году Intel 80386 представил 32-битную страничную организацию памяти, ставшую стандартом для x86-архитектуры. В 1990-х годах MMU стал обязательным компонентом всех процессоров, работающих под управлением многозадачных операционных систем (Unix, Windows, Linux).

Принцип работы

Виртуальная и физическая память

Каждому процессу выделяется непрерывное виртуальное адресное пространство (например, 4 ГБ для 32-битных систем), которое может быть больше доступной физической памяти. MMU транслирует виртуальные адреса в физические с помощью таблиц страниц (page tables), хранящихся в ОЗУ.

Трансляция адресов

  1. Страничная организация (paging): память делится на блоки фиксированного размера — страницы (обычно 4 КБ). Виртуальный адрес состоит из номера виртуальной страницы и смещения внутри неё. MMU находит соответствующую запись в таблице страниц, получает номер физической страницы (фрейма) и формирует физический адрес.
  2. Сегментация: память делится на сегменты переменного размера (например, код, данные, стек). Виртуальный адрес включает номер сегмента и смещение. MMU проверяет права доступа и границы сегмента.

Кэширование трансляций (TLB)

Для ускорения преобразований используется буфер ассоциативной трансляции (TLB — Translation Lookaside Buffer) — небольшой кэш, хранящий недавно использованные отображения виртуальных страниц на физические. Попадание в TLB (TLB hit) занимает 1–2 такта процессора, промах (TLB miss) требует обращения к таблицам страниц в ОЗУ, что может занять десятки тактов.

Функции

Защита памяти

MMU предотвращает доступ одного процесса к памяти другого, а также защищает системные области от записи. Каждой странице или сегменту присваиваются биты прав доступа (чтение, запись, исполнение). При нарушении (например, попытке записи в страницу, доступную только для чтения) MMU генерирует исключение (page fault), которое обрабатывается операционной системой.

Поддержка виртуальной памяти

Если физическая память переполнена, MMU позволяет выгружать неиспользуемые страницы на диск (в файл подкачки или раздел свопинга). При обращении к выгруженной странице возникает page fault, ОС загружает её с диска и обновляет таблицу страниц.

Изоляция процессов

Каждый процесс работает в своём виртуальном адресном пространстве, не зная о существовании других процессов. Это повышает стабильность системы: сбой в одном процессе не затрагивает другие.

Классификация

По архитектуре

  • Встроенные MMU: интегрированы в ядро процессора (например, в x86, ARM, RISC-V). Используются в большинстве современных ЦП.
  • Внешние MMU: реализованы в виде отдельной микросхемы (например, в ранних компьютерах Commodore Amiga или в некоторых системах на кристалле (SoC) для встраиваемых устройств).

По типу трансляции

  • Страничные (paged): наиболее распространены, работают с фиксированными блоками.
  • Сегментные (segmented): используются в устаревших архитектурах (x86 в реальном режиме) или в комбинации со страничной (x86 в защищённом режиме).
  • Гибридные: сочетают сегментацию и страничную организацию (например, x86-64).

Применение

Операционные системы

Все современные многозадачные ОС (Windows, Linux, macOS, Android, iOS) требуют MMU для работы. Без него невозможна:

Встраиваемые системы

В микроконтроллерах (например, ARM Cortex-M) MMU часто отсутствует, так как они работают в реальном времени без виртуализации. Однако в высокопроизводительных встраиваемых системах (на базе ARM Cortex-A или RISC-V) MMU используется для изоляции задач.

Безопасность

MMU применяется в механизмах TrustZone (ARM) и Intel SGX для изоляции доверенных приложений. В системах с аппаратной виртуализацией (AMD-V, Intel VT-x) MMU поддерживает вложенные таблицы страниц (nested page tables), ускоряющие работу гостевых ОС.

Примеры реализации

x86-64 (Intel, AMD)

В архитектуре x86-64 MMU поддерживает 4 уровня таблиц страниц (PML4, PDP, PD, PT) для 48-битных виртуальных адресов. Каждая запись таблицы содержит биты присутствия, прав доступа, флаги кэширования и номер физической страницы.

ARM

В процессорах ARM (Cortex-A) MMU реализует двухуровневую или трехуровневую трансляцию, поддерживает большие страницы (1 МБ, 2 МБ) и аппаратное ускорение TLB.

RISC-V

В открытой архитектуре RISC-V MMU описан в спецификации «Supervisor-level ISA» (S-mode). Поддерживаются страницы размером 4 КБ, 2 МБ и 1 ГБ, а также вложенные таблицы для виртуализации.

Критика и ограничения

Производительность

MMU вносит задержки из-за трансляции адресов и промахов TLB. В системах с большим объёмом памяти (сотни гигабайт) и случайным доступом к данным (например, в базах данных) это может снижать быстродействие. Для смягчения используются большие страницы (huge pages) и аппаратное предзагрузка TLB.

Сложность реализации

Ошибки в проектировании MMU (например, уязвимости Meltdown и Spectre, обнаруженные в 2018 году) могут приводить к утечкам данных между процессами. Для исправления требуются обновления микрокода процессора и операционных систем.

Энергопотребление

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

Интересные факты

  • В суперкомпьютерах (например, Fugaku) MMU поддерживает страницы размером до 64 КБ для снижения накладных расходов.
  • В некоторых процессорах (например, Intel Itanium) MMU реализован в виде программно-управляемого TLB (software-managed TLB), где ОС сама управляет кэшем трансляций.
  • В ранних версиях Windows (до Windows 95) MMU не использовался для приложений, работающих в реальном режиме DOS.

Источники

  • Intel 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A: System Programming Guide.
  • ARM Architecture Reference Manual, ARMv8-A.
  • RISC-V Instruction Set Manual, Volume II: Privileged Architecture.
  • Tanenbaum A. S. «Modern Operating Systems» (4th edition), 2014.
  • Hennessy J. L., Patterson D. A. «Computer Architecture: A Quantitative Approach» (6th edition), 2017.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →