CPU:erna genererar inte direkt * logiska adresser på det sätt som en slumpmässig nummergenerator producerar siffror. Istället är den logiska adressen en följd av instruktionerna som CPU kör och hur operativsystemet hanterar minnet. Här är en uppdelning:
1. Instruktion hämta och avkoda: CPU hämtar instruktioner från minnet. Dessa instruktioner innehåller ofta operander - data som instruktionen kommer att fungera. Operander kan specificeras med:
* Registrera indirekt adressering: Operandens adress lagras i ett CPU -register. CPU använder registerets innehåll som den logiska adressen.
* Omedelbar adressering: Operanden själv är en del av instruktionen. Ingen adressberäkning behövs.
* Direkt adressering: Instruktionen anger direkt operandens logiska adress.
* indirekt adressering: Instruktionen anger en minnesplats som * innehåller * operandens adress. CPU hämtar adressen från denna minnesplats för att få den logiska adressen.
* bas+offset Adressering: En basadress (ofta från ett register) läggs till en offset (specificerad i instruktionen) för att beräkna den logiska adressen. Detta är mycket vanligt för åtkomst till arrayelement eller strukturer.
* indexerad adressering: Liknar bas+offset, men offset kommer från ett indexregister. Användbart för matrisåtkomst.
2. Programräknare (PC): PC:n har adressen till nästa instruktion som ska köras. Detta är en logisk adress som implicit används av CPU:s instruktionshämtningsmekanism. PC:n ökas efter att varje instruktion hämtar.
3. Operativsystemets engagemang (virtuellt minne): Bilden blir mer komplex när virtuellt minne är involverat. I det här fallet ser programmet inte de fysiska adresserna till minnet; Den ser logiska adresser (även kallade virtuella adresser). CPU genererar en * logisk adress * baserad på instruktionen som beskrivits ovan.
* Memory Management Unit (MMU): MMU är en hårdvarukomponent som översätter den logiska adressen som genereras av CPU till en fysisk adress i RAM. Denna översättning innebär att man letar upp den logiska adressen i sidtabellerna, som underhålls av operativsystemet. Dessa tabeller kartlägger logiska sidor till fysiska ramar.
* Segmentering: Vissa system använder segmentering utöver sökning. Segmentering delar upp minnet i logiska segment, var och en med sin egen basadress och gräns. CPU producerar en logisk adress som en segmentväljare och en förskjutning inom segmentet. MMU använder sedan dessa för att hitta den fysiska adressen.
I huvudsak "genererar CPU inte" en logisk adress i en fristående process. Den använder instruktionens adresseringsläge för att beräkna den logiska adressen (ofta med hjälp av register) som sedan kan översättas ytterligare av MMU till en fysisk adress. Processen dikteras av instruktionen som genomförs och systemets minneshanteringsschema.