Модуль керування пам'яттю (МКП), іноді званий модулем керування сторінковою пам'яттю (МКСП), — комп'ютерний апаратний модуль, що має всі посилання на пам'ять, які проходять через нього, насамперед транслюючи віртуальні адреси пам'яті у фізичні. Він зазвичай реалізований як частина центрального процесора (ЦП), але також може бути у вигляді окремої мікросхеми.

МКП ефективно виконує керування віртуальною пам'яттю, одночасно оброблюючи захист пам'яті, контроль кешу, шин і, у простіших комп'ютерних архітектурах (особливо 8-бітних системах), перемикання банків.

Огляд

Сучасні MMU зазвичай ділять віртуальний адресний простір (діапазон адрес, використовуваних процесором) на сторінки, розмір кожної з яких є степенем 2, зазвичай кілька кілобайтів, але вони можуть бути значно більшими. Нижні біти адреси (зміщення всередині сторінки) залишаються незміненими. Верхні біти адреси є номерами віртуальних сторінок.

Записи таблиці сторінок Більшість МКП використовують таблиці елементів у пам'яті, звані «таблицями сторінок», що містить один «запис таблиці сторінок» (ЗТС) на сторінку, для відображення віртуальних номерів сторінок у фізичні в основній пам'яті. Асоціативний кеш ЗТС називається буфером асоціативної трансляції (БАТ) та використовується для уникнення необхідності доступу до основної пам'яті при кожному відображенні віртуальної адреси. Інші МКП можуть мати приватний масив пам'яті чи регістри, що містять набір записів таблиці сторінок. Фізичні номери сторінок об'єднуються зі зміщеннями сторінок і дають повну фізичну адресу.

ЗТС також може включати інформацію про те, чи була сторінка записана («»), коли її було востаннє використано («біт доступу», для за (LRU) задачі заміщення сторінок), який вид процесів ( чи режиму супервізора) можуть читати та писати її, і чи повинна вона кешуватися.

Іноді ЗТС забороняє доступ до віртуальної сторінки, можливо, через відсутність фізичної пам'яті з довільним доступом, виділеної цій сторінці. У цьому випадку МКП сигналізує ЦП про відмову сторінки. Потім операційна система (ОС) обробляє ситуацію, можливо, намаганням знайти вільну сторінку RAM і встановити новий ЗТС для відображення цієї сторінки на запитувану віртуальну адресу. За відсутності вільної RAM може бути необхідним обрати деяку сторінку (відому як «жертва») з використанням деякого алгоритму заміни та зберегти її на диск (цей процес називається «підкачуванням»). З деякими МКП також можлива нестача ЗТС, у цьому випадку ОС матиме звільнити його для нового відображення.

МКП також можуть генерувати стани помилки незаконного доступу чи відмови недійсної сторінки за незаконного доступу чи доступу до неіснуючої пам'яті відповідно, що призводить до помилки сегментації чи під час обробки операційною системою.

Переваги

У деяких випадках відмова сторінки може позначати баг, якому можна запобігти шляхом використання захисту пам'яті як однієї з ключових переваг МКП: операційна система може його використати для захисту від помилкових програм шляхом заборони доступу до пам'яті, до якої конкретна програма не повинна мати доступ. Зазвичай операційна система призначає кожній програмі власний віртуальний адресний простір.

МКП також пом'якшує проблему пам'яті. Після виділення та звільнення блоків пам'яті вільна пам'ять може стати фрагментованою (розривною) так, що найбільший послідовний блок вільної пам'яті може бути набагато меншим за загальний обсяг. Із віртуальною пам'яттю сусідній діапазон віртуальних адрес може відображатися на декілька непослідовних блоків фізичної пам'яті; це непослідовне виділення є однією з переваг підкачки.

У деяких ранніх конструкціях мікропроцесорів керування пам'яттю здійснювалося окремою мікросхемою, як-от схеми надвеликого рівня інтеґрації VI475 (1986), (1984, для використання разом з процесором ), або Z8015 (1985), що використовується в родині процесорів Zilog Z8000. Пізніші мікропроцесори (як-от , і Intel 80386) розміщували MMU на одному кристалі з процесором.

Тоді як дана стаття зосереджується на сучасних МКП, зазвичай на основі сторінок, ранні системи використовували аналогічну концепцію для адресації з базовою межею, що в подальшому було розвинуто до сегментації. Вони іноді також присутні в сучасних архітектурах. Архітектура x86 забезпечує сегментацію, але не підкачку, в 80286, і забезпечує підкачку та сегментацію в 80386 і пізніших процесорах (хоча використання сегментації недоступне в 64-бітних операціях).

Приклади Більшість сучасних систем ділять пам'ять на сторінки розміром 4-64 кБ, часто зі здатністю використовувати величезні сторінки розміром від 2 МБ до 1 ГБ. Трансляції сторінок кешуються у буфері асоціативної трансляції (БАТ). Деякі системи, переважно старіших RISC конструкцій, викликають спеціальне переривання у ОС, якщо трансляцію сторінки не знайдено в БАТ. Більшість систем використовують апаратний обхідник дерев. Більшість систем дозволяють МКП вимикатися, але деякі вимикають МКП, потрапляючи до коду ОС.

VAX VAX сторінки сягають 512 байтів, що дуже мало. ОС може розглядати їх так, якби вони були єдиною більшою сторінкою. Наприклад, Linux на VAX групує разом вісім сторінок. Таким чином, система розглядається такою, що має 4 кБ сторінки. VAX ділить пам'ять на чотири ділянки з фіксованим призначенням розміром 1 ГБ кожна. Це: Простір P0 Використовується для пам'яті загального призначення для кожного процесу, як-от купи. Простір P1 (контрольний простір) також для кожного процесу та зазвичай використовується для супервізора, виконавчих, ядра та користувацьких стеків, а також інших контрольних структур для кожного процесу, керованих операційною системою. Простір S0 (системний простір) глобальний для всіх процесів і зберігає код і дані операційної системи, підкачені чи ні, включно з таблицями сторінок. Простір S1 Не використовується та «зарезервований для Digital».

Таблиці сторінок є великими лінійними масивами. Як правило, це дуже марнотратно, коли адреси використовуються на обох кінцях можливого діапазону, але сама таблиця сторінок для застосунків зберігається в підкаченій пам'яті ядра. Таким чином, ефективне дворівневе дерево дозволяє застосункам мати запасний розподіл пам'яті, не витрачаючи багато місця на невикористані записи таблиць сторінок. МКП VAX відрізняються відсутністю біту «доступний». Для ефективної роботи ОС, які реалізують підкачування сторінок, повинні знайти деякий спосіб емуляції такого біту. Зазвичай ОС періодично скасовує відображення сторінок так, що відмови неіснуючої сторінки можуть використовуватися, аби дати ОС встановити доступний біт.

ARM Прикладні процесори на основі архітектури ARM реалізують МКП, визначені системною архітектурою віртуальної пам'яті ARM. Поточна архітектура визначає ЗТС для опису 4 кБ і 64 кБ сторінок, 1 МБ розділів і 16 МБ надрозділів; успадковані версії також визначають 1 кБ крихітні сторінки. ARM використовує дворівневу таблицю сторінок при використанні 4 кБ і 64 кБ сторінок, або просто однорівневими таблицями сторінок для 1 МБ розділів і 16 МБ розділів.

Оновлення БАТ виконуються автоматично апаратним забезпеченням обходу таблиці сторінок. ЗТС включають дозвіл доступу на читання та запис на основі привілеїв, кешування інформації, NX bitу та незахищеного біту.

IBM System/360 Model 67, IBM System/370 і наступники Мейнфрейм IBM System/360 Model 67, представлений серпні 1965 року, мав окрему схему керування сторніками пам'яті, що називалася (Dynamic Address Translation). DAT box мав досить незвичайну можливість зберігання бітів сторінки «було звернення» () та «брудна» () поза таблицею сторінок. Вони посилаються на фізичну пам'ять, а не на віртуальну, і доступ до них надається інструкціями спеціального призначення. Це зменшує накладні витрати для ОС, яка інакше мала б поширювати біти accessed і dirty з таблиць сторінок до більш фізично-орієнтованої структури даних. Це спрощує віртуалізацію на рівні ОС.

Починаючи з серпня 1972 року IBM System/370 має схожий МКП, хоча він спочатку підтримував лише 24-бітний віртуальний адресний простір, а не 32-бітний із System/360 Model 67. Він також зберігав біти «було звернення» та «брудна» поза таблицею сторінок. На початку 1983 року архітектура System/370-XA розширила віртуальний адресний простір до 31 біту, а 2000 року було представлено 64-бітну з розширеним адресним простором до 64 бітів; вона продовжила зберігати біти статусу сторінки (accessed і dirty) поза таблицею сторінок.

DEC Alpha Процесор DEC Alpha ділить пам'ять на 8 кБ сторінки. Після промаху БАТ низькорівневий вбудований машинний код (тут названий ) обходить трирівневу деревоподібну таблицю сторінок. Адресація розбита наступним чином: 21 біт не використовується, по 10 бітів індексують кореневий, середній і рівень листя дерева, а 13 бітів проходять до фізичної адреси без модифікацій. Підтримуються повні біти дозволу на читання, запис і виконання.

MIPS Архітектура MIPS підтримує до 64 записів у БАТ. Кількість записів БАТ налаштовується у конфігурації ЦП до синтезу. Записи БАТ подвійні. Кожен запис БАТ відображає номер віртуальної сторінки (НВС2) на один із двох номерів кадру сторінок (НКС0 чи НКС1) залежно від останнього значущого біту віртуальної адреси, що не є частиною маски сторінки. Цей біт і біти маски сторінки не зберігаються у НВС2. кожен запис БАТ має власний розмір сторінки, який може бути будь-яким значенням від 1 кБ до 256 МБ, кратним чотирьом. Кожен НКС у записі БАТ має атрибут кешування, брудний і дійсний біт стану. НВС2 має глобальний біт стану й ID, який призначається ОС і бере участь у зіставленні запису БАТ віртуальних адрес, якщо глобальний біт стану встановлений у нуль. НКС зберігає фізичну адресу без бітів маски сторінки.

Виняток перенаповнення БАТ генерується, коли жоден запис у БАТ не збігається з відображеною віртуальною адресою. Виняток недійсного БАТ генерується, коли є збіг, але запис позначено недійсним. Виняток модифікованого БАТ генерується, коли є збіг, але брудний стан не встановлено. Якщо виняток БАТ стається під час обробки винятку БАТ, тобто виняток подвійної помилки БАТ відправляється до власного обробника винятків.

MIPS32 і MIPS32r2 підтримують 32 біти віртуального та до 36 бітів фізичного адресного простору. MIPS64 підтримує до 64 бітів віртуального та до 59 бітів фізичного адресного простору.

Sun 1 Оригінальний , представлений 1982 року, є одноплатним комп'ютером, побудованим навколо мікропроцесора Motorola 68000. Він містить оригінальний модуль керування пам'яттю Sun-1, що забезпечує трансляцію адрес, захист, спільне використання та виділення пам'яті для багатьох процесів, які працюють у ЦП. Весь доступ ЦП до приватної вбудованої RAM, зовнішньої пам'яті Multibus, вбудованого та Multibus введення-виведення відбувається через МКП, де він транслюється та захищається єдиним способом. МКП реалізовано в апаратному забезпеченні на платі ЦП.

МКП складається з контекстного регістра та карт сегментів і сторінок. Віртуальні адреси з ЦП транслюються у проміжні картою сегментів, які, у свою чергу, транслюються у фізичні адреси картою сторінок. Розмір сторінки дорівнює 2 кБ, а сегмента — 32 кБ, що дає 16 сторінок у сегменті. До 16 контекстів можуть відображатися одночасно. Максимум простору логічних адрес для контексту дорівнює 1024 сторінкам або 2 МБ. Максимум фізичних адрес, які можуть одночасно відображатися, також дорівнює 2 МБ.