Hukommelsesadressering

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 6. februar 2018; checks kræver 6 redigeringer .

Adressering  er implementeringen af ​​et link (reference) til en enhed eller et dataelement på dens adresse [1] ; etablering af en korrespondance mellem et sæt af objekter af samme type og et sæt af deres adresser; metode til at identificere placeringen af ​​et objekt [2] .

Adresseringsmetoder [2]

Adresseområde

Programudførelse

Adressekodning

Adresseberegning

Adresseringsmetoder

Implicit operand

Instruktionen må ikke indeholde eksplicitte instruktioner om operanden ; i dette tilfælde er operanden underforstået og faktisk specificeret af instruktionens opkode.

Påtænkt adresse

Instruktionen må ikke indeholde eksplicitte indikationer om adressen på den operand, der deltager i operationen, eller den adresse, hvor resultatet af operationen skal placeres, men denne adresse er underforstået.

Direkte adressering

Instruktionen indeholder ikke operandens adresse, men selve operanden. Med direkte adressering kræves der ingen hukommelsesadgang for at hente en operand og en hukommelsesplacering for at gemme den. Dette hjælper med at reducere programmets udførelsestid og mængden af ​​hukommelse, det optager. Direkte adressering er praktisk til lagring af forskellige slags konstanter.

Direkte adressering

Adressen er angivet direkte som en eller anden værdi, alle celler er placeret på én side. Fordelen ved denne metode er, at den er den enkleste, og ulempen er, at bredden af ​​processorens generelle registre skal være mindst lige så bred som bredden af ​​processorens adressebus .

Relativ (grundlæggende) adressering

Med denne adresseringsmetode defineres udførelsesadressen som summen af ​​instruktionens adressekode og basisadressen, normalt gemt i et særligt register - basisregistret.

Relativ adressering gør det muligt at give adgang til enhver hukommelsescelle med en mindre længde af instruktionens adressekode. For at gøre dette vælges antallet af bits i basisregisteret, således at enhver celle i hovedhukommelsen kan adresseres, og instruktionens adressekode bruges til kun at repræsentere en relativt kort "offset". Forskydningen bestemmer positionen af ​​operanden i forhold til begyndelsen af ​​arrayet givet af basisadressen.

Genvejsadressering

Adressefeltet for styreordet indeholder kun de mindst signifikante bits af den adresserede celle. Yderligere indeksregister .

Registrer adressering

Registeradressering er et særligt tilfælde af forkortet adressering. Det bruges, når mellemresultater er lagret i et af arbejdsregistrene i den centrale processor. Da der er meget færre registre end hukommelsesceller, kan et lille adressefelt være nok til adressering.

Indirekte adressering

For første gang blev indirekte adressering af 2. rang ( pointers ) brugt ved programmering på MESM [3] . Ved at tilføje til kommandoen med operandadresseværdien "0" værdien af ​​hukommelsescellen, hvor adressen på den påkrævede operand er placeret, gjorde det muligt at bruge disse hukommelsesceller som adresseværdier, dvs. henvisninger til operandadresser.

Indirekte adressering af højere rang blev først introduceret i adresseprogrammeringssproget (1955) [4] [5] og implementeret i hardware i computeren "Kiev" [6] . I kommandosystemet på computeren "Kiev" er der en F-operation, som giver dig mulighed for at reducere adressen på adressen, dvs. udføre en "bindestreg-operation" eller dereference en pointer , og gruppeadressemodifikationsoperationer [5] [6] gjorde det muligt at udføre flere indirektioner af pointere i hardware.

Kommandoens adressekode angiver i dette tilfælde ikke adressen med data, men adressen på hukommelsescellen, hvor adressen på operanden eller kommandoen er placeret. Dette er rang 2 adressering eller pointere . Indirekte adressering er meget brugt i små og mikrocomputere med et kort maskinord for at overvinde begrænsningerne ved det korte instruktionsformat (registreret og indirekte adressering bruges sammen).

Ordadressering med variabel længde

Effektiviteten af ​​computersystemer designet til databehandling øges, hvis det er muligt at udføre operationer på ord af variabel længde. I dette tilfælde kan maskinen levere adressering af ord med variabel længde, hvilket normalt implementeres ved at specificere i instruktionen placeringen i hukommelsen af ​​ordets begyndelse og dets længde.

Stakadressering

Stakhukommelse , som implementerer adresseløs tildeling af operander, er især udbredt i mikroprocessorer og minicomputere .

Auto-increment og auto-decrement adressering

Da registerindirekte adressering kræver, at registeret er forudindlæst med en indirekte adresse fra RAM, hvilket er forbundet med et tab af tid, er denne type adressering især effektiv ved behandling af en række data, hvis der er en mekanisme til automatisk at øge eller dekrementere indholdet af registret, hver gang det tilgås. Denne mekanisme kaldes henholdsvis auto-increment og auto-decrement-adressering. I dette tilfælde er det nok at indlæse adressen på det første array-element, der behandles i registret én gang, og hver gang registret tilgås, vil adressen på det næste array-element blive dannet i det.

Med auto-increment-adressering bruges indholdet af registret først som adressen på operanden, og derefter inkrementeres med antallet af bytes i array-elementet. Med automatisk dekrementeringsadressering bliver indholdet af registret specificeret i kommandoen først formindsket med antallet af bytes i array-elementet og derefter brugt som operandens adresse.

Auto-increment og auto-decrement-adressering kan betragtes som en forenklet version af indeksering, en meget vigtig mekanisme til at konvertere adressedelene af kommandoer og organisere beregningscyklusser, så de kaldes ofte auto-indeksering.

Indeksadressering

For computer-implementerede metoder til løsning af matematiske problemer og databehandling er den cykliske karakter af beregningsprocesser karakteristisk, når de samme procedurer udføres på forskellige operander ordnet i hukommelsen. Da operanderne behandlet under loop-gentagelser har forskellige adresser uden brug af indeksering, ville det være nødvendigt for hver gentagelse at komponere sin egen sekvens af instruktioner, der adskiller sig i adressedele.

Programmeringen af ​​cyklusser forenkles betydeligt, hvis der efter hver udførelse af cyklussen tilvejebringes en automatisk ændring i de tilsvarende kommandoer af deres adressedele i overensstemmelse med placeringen i hukommelsen af ​​operanderne, der behandles. En sådan proces kaldes instruktionsmodifikation og er baseret på evnen til at udføre aritmetiske og logiske operationer på instruktionskoder.

Se også

Noter

  1. ST ISO 2382/7-77 // Datalogi. Terminologi: Referencemanual. Nummer 1 / Anmelder Ph.D. tech. Videnskaber Yu. P. Selivanov. - M . : Forlag for standarder, 1989. - 168 s. - 55.000 eksemplarer.  — ISBN 5-7050-0155-X .
  2. 1 2 Pershikov V.I., Savinkov V.M. Explanatory Dictionary of Informatics / Reviewers: Ph.D. Fysisk.-Matematik. Sci. A. S. Markov og Dr. Phys.-Math. Videnskaber I. V. Pottosin. - M. : Finans og statistik, 1991. - 543 s. — 50.000 eksemplarer.  - ISBN 5-279-00367-0 .
  3. Lebedev, S.A. Lille elektronisk regnemaskine  : [ rus. ]  / S.A. Lebedev, L.N. Dashevsky, E.A. Shkabara. - Moskva: USSRs Videnskabsakademi, 1952. - S. 162. Arkiveret kopi af 23. juli 2021 på Wayback Machine
  4. Alvaro Videla. Kateryna L. Jusjtjenko - Opfinder  af pointere Medium (8. december 2018). Hentet 23. juli 2021. Arkiveret fra originalen 23. september 2020.
  5. ↑ 1 2 Jusjtjenko, E.L. Adresseprogrammering: [ rus. ] . - Kiev: Stat. forlag for teknisk litteratur, URSR, 1963. - S. 288.
  6. 1 2 Glushkov, V. M. Computer "Kiev": matematisk beskrivelse. : [ rus. ]  / V. M. Glushkov, E. L. Jusjtjenko. — Tekn. lit., 1962. - 183 s.

Litteratur