De CPU genereert niet direct * logische adressen zoals een willekeurige nummergenerator nummers produceert. In plaats daarvan is het logische adres een gevolg van de instructies die de CPU heeft uitgevoerd en de manier waarop het besturingssysteem het geheugen beheert. Hier is een uitsplitsing:
1. Instructie Ophalen en decoderen: De CPU haalt instructies uit het geheugen op. Deze instructies bevatten vaak operanden - gegevens waarop de instructie werkt. De operanden kunnen worden gespecificeerd met behulp van:
* Registreren indirecte adressering: Het adres van de operand wordt opgeslagen in een CPU -register. De CPU gebruikt de inhoud van het register als het logische adres.
* Onmiddellijke adressering: De operand zelf maakt deel uit van de instructie. Er is geen adresberekening nodig.
* Directe adressering: De instructie geeft direct het logische adres van de operand aan.
* indirecte adressering: De instructie geeft een geheugenlocatie aan die * het adres van de operand bevat. De CPU haalt het adres van deze geheugenlocatie op om het logische adres te krijgen.
* Basis+offset -adressering: Een basisadres (vaak uit een register) wordt toegevoegd aan een offset (opgegeven in de instructie) om het logische adres te berekenen. Dit is heel gebruikelijk voor toegang tot array -elementen of structuren.
* Geïndexeerde adressering: Net als Base+Offset, maar de offset komt van een indexregister. Handig voor arraytoegang.
2. programmateller (pc): De pc bevat het adres van de volgende instructie die moet worden uitgevoerd. Dit is een logisch adres dat impliciet wordt gebruikt door het instructie van de CPU ophalen. De pc wordt na elke instructie verhoogd.
3. Betrokkenheid van het besturingssysteem (virtueel geheugen): Het beeld wordt complexer wanneer het virtueel geheugen betrokken is. In dit geval ziet het programma niet de fysieke adressen van het geheugen; Het ziet logische adressen (ook wel virtuele adressen genoemd). De CPU genereert een * logisch adres * op basis van de instructie zoals hierboven beschreven.
* Memory Management Unit (MMU): De MMU is een hardwarecomponent die het logische adres vertaalt dat door de CPU wordt gegenereerd in een fysiek adres in RAM. Deze vertaling omvat het opzoeken van het logische adres in paginatabellen, die worden onderhouden door het besturingssysteem. Deze tabellen brengen logische pagina's toe aan fysieke frames.
* Segmentatie: Sommige systemen gebruiken segmentatie naast paging. Segmentatie verdeelt geheugen in logische segmenten, elk met een eigen basisadres en limiet. De CPU produceert een logisch adres als segmentkiezer en een offset in het segment. De MMU gebruikt deze vervolgens om het fysieke adres te vinden.
In wezen "genereert" de CPU geen logisch adres in een op zichzelf staand proces. Het gebruikt de adresseringsmodus van de instructie om het logische adres te berekenen (vaak met de hulp van registers) die vervolgens door de MMU verder kunnen worden vertaald in een fysiek adres. Het proces wordt bepaald door de instructie die wordt uitgevoerd en het geheugenbeheerschema van het systeem. |