CPU genererar inte adresser i den meningen att skapa dem från ingenting. Istället använder CPU * * adresser som genereras av andra delar av datorsystemet, främst:
* Instruktionspekare (IP) / programräknare (PC): Detta interna CPU -register har adressen till nästa instruktion som ska köras. CPU hämtar instruktioner från minnet med den här adressen. IP/PC är * ökat * efter varje instruktion hämtar, vilket effektivt genererar adressen för den efterföljande instruktionen (i följd).
* Beräknade adresser: CPU beräknar minnesadresser baserade på instruktioner. Detta innebär ofta:
* Direkt adressering: Instruktionen innehåller uttryckligen minnesadressen.
* indirekt adressering: Instruktionen innehåller adressen till en minnesplats * som innehåller * adressens adress.
* Registrera indirekt adressering: Adressen finns i ett CPU -register.
* bas + offset Adressering: En basadress (kanske från ett register) läggs till i ett offsetvärde som anges i instruktionen. Detta är vanligt för åtkomst till element i matriser.
Dessa beräkningar utförs av CPU:s aritmetiska logikenhet (ALU) men involverar inte * generering av * adresser på ett fritt sätt. Adresserna härstammar från värden som redan finns i register eller minne.
* DMA (Direct Memory Access) Controllers: Dessa specialiserade chips kan generera minnesadresser oberoende av CPU för att överföra data direkt mellan minne och kringutrustning (t.ex. en hårddisk eller nätverkskort). Medan detta genererar adresser är det utanför CPU:s direkta kontroll.
Kort sagt, CPU genererar inte * adresser på ett kreativt sätt. Den hämtar adresser från instruktioner, interna register eller tar emot dem från andra hårdvarukomponenter. Dess roll är att * använda * dessa adresser för att komma åt minnet.