Minnesadressering

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 6 februari 2018; kontroller kräver 6 redigeringar .

Adressering  är implementeringen av en länk (referens) till en enhet eller dataelement på dess adress [1] ; upprätta en överensstämmelse mellan en uppsättning objekt av samma typ och en uppsättning av deras adresser; metod för att identifiera platsen för ett objekt [2] .

Adresseringsmetoder [2]

Adressutrymme

Programexekvering

Adresskodning

Adressberäkning

Adresseringsmetoder

Implicit operand

Instruktionen får inte innehålla explicita instruktioner om operanden ; i detta fall är operanden underförstådd och faktiskt specificerad av instruktionens opkod.

Avsedd adress

Instruktionen får inte innehålla explicita indikationer om adressen till operanden som deltar i operationen eller adressen till vilken resultatet av operationen ska placeras, men denna adress är underförstådd.

Direktadressering

Instruktionen innehåller inte adressen till operanden, utan själva operanden. Med direktadressering krävs ingen minnesåtkomst för att hämta en operand och en minnesplats för att lagra den. Detta hjälper till att minska exekveringstiden för programmet och mängden minne som det upptar. Direktadressering är praktiskt för att lagra olika typer av konstanter.

Direktadressering

Adressen anges direkt som något värde, alla celler finns på en sida. Fördelen med denna metod är att den är den enklaste, och nackdelen är att bredden på processorns allmänna register måste vara minst lika bred som bredden på processorns adressbuss .

Relativ (grundläggande) adressering

Med denna metod för adressering definieras exekveringsadressen som summan av adresskoden för instruktionen och basadressen, vanligtvis lagrade i ett speciellt register - basregistret.

Relativ adressering gör det möjligt att tillhandahålla åtkomst till vilken minnescell som helst med en mindre längd av adresskoden för instruktionen. För att göra detta väljs antalet bitar i basregistret så att vilken cell som helst i huvudminnet kan adresseras, och adresskoden för instruktionen används för att representera endast en relativt kort "offset". Offseten bestämmer positionen för operanden i förhållande till början av arrayen som ges av basadressen.

Genvägsadressering

Adressfältet för kontrollordet innehåller endast de minst signifikanta bitarna av den adresserade cellen. Ytterligare indexregister .

Registrera adressering

Registeradressering är ett specialfall av förkortad adressering. Den används när mellanresultat lagras i ett av den centrala processorns arbetsregister. Eftersom det finns mycket färre register än minnesceller kan ett litet adressfält räcka för adressering.

Indirekt adressering

För första gången användes indirekt adressering av 2:a rangen ( pekare ) vid programmering på MESM [3] . Genom att lägga till kommandot med operandens adressvärde "0" värdet på minnescellen i vilken adressen för den önskade operanden finns, gjorde det möjligt att använda dessa minnesceller som adressvärden, d.v.s. pekare till operandadresser.

Indirekt adressering av högre rang introducerades först i programmeringsspråket Adress (1955) [4] [5] och implementerades i hårdvara i datorn "Kiev" [6] . I kommandosystemet för datorn "Kiev" finns en F-operation, som gör att du kan minska adressen på adressen, d.v.s. utför en "streck-operation" eller hänvisa till en pekare , och gruppadressändringsoperationer [5] [6] gjorde det möjligt att utföra flera inriktningar av pekare i hårdvara.

Adresskoden för kommandot i det här fallet anger inte adressen med data, utan adressen till minnescellen där adressen till operanden eller kommandot finns. Detta är rank 2-adressering eller pekare . Indirekt adressering används i stor utsträckning i små och mikrodatorer som har ett kort maskinord för att övervinna begränsningarna hos det korta instruktionsformatet (registrerad och indirekt adressering används tillsammans).

Ordadressering med variabel längd

Effektiviteten hos datorsystem utformade för databehandling ökar om det är möjligt att utföra operationer på ord av variabel längd. I detta fall kan maskinen tillhandahålla adressering av ord med variabel längd, vilket vanligtvis implementeras genom att i instruktionen specificera platsen i minnet för ordets början och dess längd.

Stackadressering

Stackminne , som implementerar adresslös tilldelning av operander, används särskilt ofta i mikroprocessorer och minidatorer .

Auto-inkrement och auto-decrement adressering

Eftersom registerindirekt adressering kräver att registret laddas i förväg med en indirekt adress från RAM, vilket är förknippat med tidsförlust, är denna typ av adressering särskilt effektiv vid bearbetning av en uppsättning data om det finns en mekanism för att automatiskt öka eller minska innehållet i registret varje gång det öppnas. Denna mekanism kallas auto-inkrement och auto-decrement adressering, respektive. I det här fallet räcker det med att ladda adressen för det första arrayelementet som bearbetas i registret en gång, och sedan varje gång registret nås kommer adressen till nästa arrayelement att bildas i det.

Med auto-inkrementeringsadressering används registrets innehåll först som adress för operanden, och inkrementeras sedan med antalet byte i arrayelementet. Med automatisk dekrementeringsadressering minskas innehållet i registret som anges i kommandot först med antalet byte i arrayelementet och används sedan som adress för operanden.

Auto-inkrement och auto-decrement adressering kan betraktas som en förenklad version av indexering, en mycket viktig mekanism för att konvertera adressdelarna av kommandon och organisera beräkningscykler, så de kallas ofta auto-indexering.

Indexadressering

För datorimplementerade metoder för att lösa matematiska problem och databehandling är den cykliska karaktären hos beräkningsprocesser karakteristisk, när samma procedurer utförs på olika operander ordnade i minnet. Eftersom operanderna som behandlas under loopupprepningar har olika adresser, utan att använda indexering, skulle det krävas för varje upprepning att komponera sin egen sekvens av instruktioner som skiljer sig i adressdelar.

Programmeringen av cykler förenklas avsevärt om, efter varje exekvering av cykeln, en automatisk ändring av motsvarande kommandon för deras adressdelar tillhandahålls i enlighet med platsen i minnet för de operander som behandlas. En sådan process kallas instruktionsmodifiering och bygger på förmågan att utföra aritmetiska och logiska operationer på instruktionskoder.

Se även

Anteckningar

  1. ST ISO 2382/7-77 // Datavetenskap. Terminologi: Referensmanual. Nummer 1 / Granskare Ph.D. tech. Vetenskaper Yu. P. Selivanov. - M . : Publishing house of standards, 1989. - 168 sid. - 55 000 exemplar.  — ISBN 5-7050-0155-X .
  2. 1 2 Pershikov V.I., Savinkov V.M. Explanatory Dictionary of Informatics / Granskare: Ph.D. Phys.-Matte. Sci. A. S. Markov och Dr. Phys.-Math. Vetenskaper I. V. Pottosin. - M. : Finans och statistik, 1991. - 543 sid. — 50 000 exemplar.  - ISBN 5-279-00367-0 .
  3. Lebedev, S.A. Liten elektronisk räknemaskin  : [ rus. ]  / S.A. Lebedev, L.N. Dashevsky, E.A. Shkabara. - Moskva: Sovjetunionens vetenskapsakademi, 1952. - S. 162. Arkiverad kopia av 23 juli 2021 på Wayback Machine
  4. Alvaro Videla. Kateryna L. Jusjtjenko - Uppfinnare  av pekare Medium (8 december 2018). Hämtad 23 juli 2021. Arkiverad från originalet 23 september 2020.
  5. ↑ 1 2 Jusjtjenko, E.L. Adressprogrammering: [ rus. ] . - Kiev: Stat. förlag för teknisk litteratur, URSR, 1963. - S. 288.
  6. 1 2 Glushkov, V. M. Computer "Kiev": matematisk beskrivning. : [ rus. ]  / V. M. Glushkov, E. L. Jusjtjenko. — Tekn. lit., 1962. - 183 sid.

Litteratur