мини|Ова 68451 MMU може да се користи са Моторола 68010 процесором
Јединица за управљање меморијом (ММУ), понекад се назива Јединица за управљање страницама меморије (ПММУ), је јединица рачунарског хардвера кроз коју пролазе све меморијске референце, пре свега она обавља превод виртуалне меморијске адресе у физичке адресе. Обично је имплементирана као део процесора (CPU), али такође може бити у форми посебног интегрисаног кола.
ММУ ефикасно обавља управљање виртуелном меморијом, истовремено рукује заштитом меморије, контролом кеша , арбитражом магистрале и, у једноставнијим рачунарским архитектурама (посебно 8-битни системи), .
Преглед мини|325п|Шематски прикаѕ MMU операције
Савремене MMUs обично деле виртуелни адресни простор (опсег адреса које користи процесор) у странице, свака је величине неког степена двојке, обично неколико килобајта, али могу бити и много веће. Доњи битови адресе (офсет унутар странице) остају непромењени. Горњи битови адресе су бројеви виртуалне странице.
Унос табеле страница Већина MMU користи табелу уноса ставки која се зове табела страница, садржи један унос табеле страница (PTE) по страници, да мапира бројеве виртуелних страница на физичке бројеве страница у главној меморији. Асоцијативни кеш PTE-а се зове Бафер асоцијативног превођења (TLB) и користи се да би се избегла неопходност приступа главној меморији сваки пут када је виртуелна адреса мапирана. Друге MMU могу имати приватне низове меморије или регистре који поседују скуп ставки табеле страница. Број физичке странице се комбинује са офсетом стране дајући потпуну физичку адресу.
PTE може да садржи информације о томе да ли је страница написана на ( "модификованом биту"), када је последњи пут коришћена ("бит приступа", за последњи скоро коришћен (LRU) алгоритам за пресликавање страница), какве типове процеса (кориснички режим или супервизор режим) може читати и уписивати, и да ли то треба да буде кеширано.
Понекад, PTE забрањује приступ виртуелној страници, можда зато што тој виртуелној страници није додељен физички RAM. У овом случају, MMU сигнализира грешку странице процесору. Оперативни систем (ОС) онда управља ситуацијом, можда покушавајући да пронађе резервни оквир РАМ-а и да постави нову PTE да мапира тражену виртуелну адресу. Ако нема слободног РАМ-а, може бити потребно да се изабере нека постојећа страница (познато као "жртве"), користећи неки алгоритам замене, и сачувати га на диск (процес се зове "страничење"). Са неким јединицама за управљање меморијом, може бити мањак уноса табела страница, у том случају ће оперативни систем морати да ослободи једну за ново мапирање.
Предности мини|VLSI VI475 MMU "Apple HMMU"одMacintosh IIкоришћен са Motorola 68020 процесором
У неким случајевима грешка стране може да указује на софтверску грешку. Кључна корист од ММУ је заштита меморије: Оперативни систем може да га користи за заштиту од програма луталица онемогућавањем приступа меморији, да одређени програм не треба да има приступ. Типично, оперативни систем додељује сваки програм свом сопственом виртуелном адресном простору.
ММУ такође ублажава проблем фрагментације меморије. Након што су блокови меморије издвојени је и ослобођени, слободна меморија може постати фрагментирана (испрекидана), тако да највећи непрекидни блок слободне меморије може бити много мањи од укупног износа. Са виртуелним меморијом, непрекидни распон виртуелних адреса може да се мапира на неколико не-суседних блокова физичке меморије.
У неким почетним дизајнима микропроцесора, управљање меморијом је изведено преко посебних интегрисаних кола, као што је VLSI VI475 (1986), Моторола 68851 (1984) се користи са Моторола 68020 процесором у Мекинтошу II, или за Z8015 (1985)ic-on-line.cn - Z8015 Z8000&right; PMMU Paged Memory Management Unit, Product Specification , April 1985 који се користи са Zilog Z8000 фамилијом процесора. Касније су микропроцесори (као што су Motorola 68030 и Zilog Z280) ставили ММУ заједно са процесором на истом интегрисаном колу, као што је урадио Intel 80286, а касније x86 микропроцесори.
Иако се овај текст концентрише на савремене ММУ, обично базираним на страницама, ранији системи су користили сличан концепт за адресирање ограничене базе(основе), који се даље развија у сегментацију. Они су повремено присутни на савременим архитектурама.X86 архихектура обезбеђује сегментацију, пре него страничење, у 80286, а у 80386. и у каснијим процесорима (мада употреба сегментације није доступна у 64-битним операцијама) обезбеђује и страничење и сегментацију.
Примери Многи савремени системи деле меморију на странице које су величине , често са могућношћу да користе огромне странице величине од до . Превођење страница је кеширно у TLB-у. Неки системи, углавном старији, који су RISC дизајна, имају грешку у ОС-у када превођење странице није нађено у TLB-у. Већина система користи хардверски базирано стабло. Већина система омогућавају ММУ да буде онемогућена, али неки онемогуће ММУ када у коду ОС-а дође до грешке.
VAX Величина VAX страница је 512 бајтова, што је веома мало. Оперативни систем може третирати више страница као да су једна већа страница. На пример, Линукс на VAX-у групише осам страница заједно. Дакле, систем се посматра као да има странице од . VAX дели меморију у четири региона фиксне намене, сваки величине. То су: P0 простор: се користи за опште намене по процесу меморије, као што је хип (), P1 простор: (или контролни простор) који је такође по процесу и обично се користи за контролу, извршавање, кернел, коришћење стека и других контолних структура по-процесу којима управља оперативни систем, S0 простор: (или системски простор) који је глобални за све процесе и меморише код оперативног система и податке, било страничења или не, укључујући табеле страница, и S1 простор: који је неискоришћен и "Резервисан за дигитално".
Табеле страница су велики линеарни низови. Нормално, ово ће бити веома расипнички када се адресе користе на оба краја могућег опсега, али табеле страница за апликације се саме чувају у кернеловој меморији странице. Дакле, ефикасно постоје два нивоа стабла, омогућавајући апликацијама да имају редак распоред меморије без великог губитка простора на неискоришћеним улазима табеле страница. VAX MMU је значајна за недостатак приступљеног бита. Оперативни системи који имплементирају страничење морају да пронађу неки начин да емулирају приступни бит, ако желе да раде ефикасно. Типично, оперативни систем ће периодично демапирати странице тако да страна-није-присутна грешке могу да се користе да допусте ОС-у да сетује приступни бит.
ARM Процесори базирани наARM архитектури имплементирају јединицу за управљање меморијом(MMU) која је дефинисана у ARM архихектури система виртуелне меморије. Тренутна архихектура дефинише PTE за опис страна од и , секције од у супер-секције од ; наслеђене верзије такође дефинишу мале стране од . ARM користи два-нивоа табеле страница ако користи стране од и , или само један-ниво табеле страница за секције од и .
TLB ажурирања аутоматски се обављају хардверски преко табеле страница. PTE укључује дозволу, базирану на привилегијама, за приступ читању/уписивању, могућност кеширања информација, NX бит, и несигурни () бит. http://infocenter.arm.com/help/topic/com.arm.doc.ddi0344i/DDI0344I_cortex_a8_r3p1_trm.pdf
IBM System/370 и наследници IBM System/370 је имао MMU још одд почетка 70-их. Првобитно је био познат као DAT кутија. Он има необичну функцију чувања примљених и оштећених битова ван табеле страница. Они се односе на физичку меморију, пре него на виртуелну, и приступа им се преко инструкција специјалне сврхе или намене. Ово смањује додатне трошкове за ОС, који би иначе требало да пропагирају примљене и прљаве битове из табела страница са више физички оријентисаних структура података. Ово чини ниво виртуелизације ОС-а лакшим. Ове карактеристике су наслеђене успехом мејнфрејм архихектуре, до тренутне z/Архихектуре.
DEC Alpha DEC Alpha процесор дели меморију на странице. После промашаја TLB -а, машина ниског нивоа Фирмвер (овде се зове PALcode) уводи три нивоа структуисаног стабла табеле страница. Адресе су подељене на следећи начин: 21 неискоришћи бит, 10 битова да индексира ниво корена стабла, 10 битова да индексира средњи ниво стабла, 10 битова да индексира ниво листа дрвета, као и 13 бита који пролазе кроз физичку адресу без модификација. Подржани су сви битови дозволе за читање/уписивање /извршавање.
MIPS MIPS архихектура подржава један од 64 уноса у TLB. Број TLB уноса је конфигурисан на CPU конфигурацију пре спајања. TLB уноси су двоструки. Сваки TLB унос мапира виртуелни број стране (VPN2) било којем од два броја оквира стране (PFN0 или PFN1), у зависности од најмање тежине бита виртуелне адресе која није део маске() странице. Овај бит и битови маск стране нису складиштени у VPN2. Сваки TLB унос има своју величину стране, која може бити било која вредност од до у мултипликатору четворке. Сваки PFN у TLB уносу има кеширане атрибуте, лош и валидан статус бита. VPN2 има глобални статус бита и ОС додељује ID који учествује у виртуелној адреси поклапања TLB уноса, ако је глобални статус бита постављен на нулу. PFN складишти физичку адресу без битова маск стране.
Допуњен TLB изузетак се генерише када нема уноса у TLB који се подударају са мапираном виртуелном адресом. TLB неважећи изузетак се генерише када постоји подударање али је унос означен као неважећи. TLB модификовани изузетак се генерише када има подударања али dirty статус није постављен. Ако се TLB изузетак јави приликом обраде TLB изузетка, двострука грешка TLB изузетка, он се шаље свом руковаоцу изузецима.
MIPS32 и MIPS32r2 подржавају 32 бита виртуелног адресног простора и до 36 бита физичког адресног простора. MIPS64 подржава до 64 бита виртуелног адресног простора и до 59 бита физичког адресног простора.
Sun 1 Оригинални Sun 1 био је SBC изграђен око Motorola 68000 микропроцесора и уведен је 1982. Он укључује оригиналну Sun 1 јединицу за управљање меморијом која обезбеђује превођење адреса, меморијску заштиту, дељење меморије и меморијску алокацију за вишеструке процесе који су покренути на CPU-у. Сви приступи CPU-а приватној RAM плочи, спољној меморијској мулти-магистрали, У/И плочи и У/И мулти-магистрали која пролази кроз MMU, где су преведени и заштићени у uniform fashion. MMU је била имплементирана у хардверу на CPU плочи.
MMU се састојала од контекстног регистра, мап сегмента и мап страница. Виртуелна адреса из процесора је преведена на средњу адресу од стане мап сегмента, које су у повратку преведене на физичке адресе помоћу мап странице. Величина страница је и величина сегмента је што даје 16 страница по сегменту. До 16 контекста могу бити мапирани истовремено. Максимални логички адресни простор за контекст је или максимална физичка адреса која може бити мапирана истовремено је
Контексни регистар је био важан у мулти таскингу ОС-а зато што је он дозвољавао процесору да замени процесе без потребе да се информације стања превођења поново пуне. 4-битни контексни регистар је могао да под контролом супервизора замени 16 секција мап сегмента, што је омогућило да се 16 контекста истовремено мапира. Сваки контекст је имао свој виртуелни адресни простор. Дељење виртуелног адресног простора и међу-контексне комуникације може бити обезбеђено уписивањем истих вредности у сегмент или мап странице различитих контекста. Управљање додатним контекстима уз помоћ обраде мап сегмента као кеш контекста и заменом истеклог контекста на последњој скоро коришћеној магистрали.
Контексни регистар не прави никакву разлику између корисника и контроле стања. Прекиди и изузеци (грешке, замке) не замењују контексте који захтевају да сви валидни прекиди вектора увек буду мапирани на страни 0 неког контекста, као и валидни стек контолор.Sun 68000 Board User's Manual, Sun Microsystems, Inc, February 1983, Revision B
PowerPC