Het verleden en heden van MMU van ARMv8-A adresvertaaltechnologie - Programmeur gezocht

2022-05-29 09:20:03 By : Mr. Kevin Qian

Het belang van MMU ligt voor de hand en ondersteunt verschillende complexe applicaties bovenop het besturingssysteem.Maar voordat we officieel over MMU praten, laten we het hebben over de ontwikkelingsgeschiedenis van MMU, want de MMU van ARMv8-A is behoorlijk ingewikkeld en het zal saai zijn om direct op het onderwerp in te gaan.Zonder verder oponthoud, laten we meteen beginnen:"Hardwarevirtualisatie" in enge zin is het virtualiseren van hardware zoals geheugen en harde schijven (voornamelijk software), en samenwerken met het besturingssysteem om het effect van timesharing en multiplexing te bereiken.In 1964 introduceerde IBM het beroemde System/360.Het biedt niet alleen een nieuw besturingssysteem, maar implementeert ook een virtuele machine-oplossing op basis van volledige hardwarevirtualisatie.Afbeelding 1.2 IBM-personeel debugt de machineDeze omvatten wisselbaar virtueel geheugen (4k wisselbaar virtueel opslagsysteem), virtuele schijven en het TSS-timesharingsysteem.System/360 biedt tot 14 virtuele machines, elk met 256k vastgemaakt virtueel geheugen.Interessant is dat het ontwikkelingsproces van System/360 wordt beschouwd als de grootste gok in de geschiedenis van computerontwikkeling.Om System/360 te ontwikkelen, besloot IBM meer dan 60.000 nieuwe medewerkers te werven en vijf nieuwe fabrieken op te richten.Toch werd de verzendtijd op dat moment nog uitgesteld.De rol van de MMU is om virtuele adressen om te zetten in fysieke adressen.Kortom, de CPU zal een virtueel adres (virtueel adres) genereren om toegang te krijgen tot het hoofdgeheugen (dit adres wordt feitelijk gegenereerd door het besturingssysteem en uiteindelijk overgedragen aan de CPU voor uitvoering).Voor toegang moet het virtuele adres worden omgezet in een fysiek adres, dit proces wordt adresvertaling (address mapping/address translation) genoemd.Om deze bewerking uit te voeren, moeten de CPU-hardware en het besturingssysteem samenwerken, en de conversie van virtueel adres naar fysiek adres wordt voltooid via het hardware-vertaaladres op de geheugenbeheereenheid (geheugenbeheereenheid).De MMU vertaalt virtuele adressen met behulp van een vertaaltabel die is opgeslagen in het hoofdgeheugen, waarvan de inhoud wordt onderhouden en beheerd door het besturingssysteem.Afbeelding 1.4 Vereenvoudigde stroom van MMU-adresvertaling/vertalingOver het algemeen verdeelt het virtuele geheugensysteem virtueel geheugen in blokken van vaste grootte (ook wel minimale granulariteit genoemd, over het algemeen 4 KB, 16 KB, 64 KB, enz., waarvan 4 KB het populairst is), en dit blok wordt virtuele pagina genoemd (Virtual Page voor korte VP) Evenzo is het fysieke geheugen verdeeld in fysieke pagina's (Physical Page voor korte PP), ook wel paginaframe (Page Frame) genoemd.Het eerste adres van elke virtuele pagina wordt bijgehouden in een tabel die een opzoektabel of paginatabel (PT) wordt genoemd, en elk item in de paginatabel wordt een paginatabelitem (Page Table Entry) genoemd, ook wel PTE genoemd.Neem me op zoek naar een hotel op de kaart om in te checken als voorbeeld, de bestemming is "Sichuan Province - Chengdu City - Qingyang Industrial Zone - Chengfei Road - No. 5".Dus, via de mobiele telefoon software, vond ik een hotel naar het hotel, de locatie is "Sichuan Province-Chengdu-Qingyang Industrial Zone-Chengfei Road No. 10".Ik weet niet of het je is opgevallen, ik zei hierboven: "Alle paginatabellen vóór de paginatabel op het laatste niveau, de paginatabelitems worden niet noodzakelijkerwijs opgeslagen op fysieke pagina's, maar kunnen ook de "paginatabel" van het volgende niveau zijn paginatabel. De offset van de invoer "", aan de andere kant, elk niveau van paginatabelinvoer kan het adres van de fysieke pagina opslaan en het volgende niveau van paginatabel, hier noemen we de paginatabelinvoer die de fysieke pagina opslaat block (Block Entry, afgekort als BE) ); het paginatabelitem waarin het adres van de paginatabel op het volgende niveau wordt opgeslagen, heet TE (Table Entry, kortweg TE, ik weet niet hoe het wordt genoemd in Chinese).Het verschil is dat de grootte van het blok dat is opgeslagen in elk niveau van paginatabelinvoer anders is.Over het algemeen is het blok van de paginatabel op het eerste niveau het grootst en wordt het daarna geleidelijk kleiner.