Articles

Mikä on akku?


Paras vastaus

Akku on esine, joka seuraa vähitellen summia, laskelmia, joita tarvitaan keskiarvojen, keskihajonnan, minuuttien tehokkaaseen laskemiseen , max jne. sen sijaan, että joudut laskemaan uudelleen joka kerta.

Vastaus

Haluan tarkentaa kysymystäsi hieman: Mitä eroa on akkujen komentojoukkoarkkitehtuurilla ja yleiskäyttöisellä rekisterikäskyjoukkoarkkitehtuurilla?

Nämä edustavat kahta pistettä komentosarjojen suunnittelutilassa. Mieti, mitä CPU-käskyn on tehtävä. Harkitse toistaiseksi Laske -ohjeita. Ainakin sen on annettava seuraavat tiedot:

  • Mitä laskelmia suoritetaan (lisätään, vähennetään, siirretään, verrataan)
  • Mitä arvoja laskenta suoritetaan ( laskennan syötteet)
  • Mihin tulos (laskennan lähtö) laitetaan

Esimerkiksi, jos kirjoitin korkean tason ohjelmalauseen X = Y + Z, sinun on kerrottava prosessorille noutamaan Y: ssä ja Z: ssä olevat arvot, lisäämällä ne ja kirjoittamalla tulos X: ään.

Varaajaarkkitehtuurissa useimmat laskentaohjeet toimivat erityisellä rekisterillä nimeltä akku. Suurimmalla osalla operaatioista akku on siis implisiittinen argumentti käskylle. Akku joko antaa syötteen käskyyn, vastaanottaa komennon lähdön tai molemmat. X = Y + Z -sovelluksen suorittaminen akkupohjaisella koneella käskysarja näyttäisi suunnilleen tältä:

  • Lataa Y akkuun
  • Lisää Z akkuun
  • Tallenna akku X: ään

Jos minulla oli monimutkaisempi lauseke, kuten ”I = J + K + L + M + N + O ”, sekvenssi saattaa näyttää tältä:

  • Lataa J akkuun
  • Lisää K akkuun
  • Lisää L akku
  • Lisää M akkuun
  • Lisää N akkuun
  • Lisää O akkuun
  • Säilytä akku I

Koska useimmissa toiminnoissa käytetään akkua, sinun ei tarvitse omistaa mitään opcode-bittejä sen määrittelemiseksi. Kuten aiemmin mainitsin, akku on implisiittinen . Myös itse koneessa akku voitaisiin rakentaa suoraan itse aritmeettiseen yksikköön, mikä yksinkertaistaa laitteistoa.

Yleiskäyttöisessä rekisteriarkkitehtuurissa lasketaan ohjeet s ottaa useita argumentteja määrittääkseen rekisterit, joista arvot luetaan. Tämä tekee niistä joustavampia. Mutta joustavuus maksaa: Tarvitset enemmän opcode-bittejä määritelläksesi, mitkä rekisterit toimivat, ja sinun on annettava polut kaikille näille rekistereille aritmeettiseen yksikköön.

Yllä oleviin esimerkkilausekkeisiin , koodi ei päädy näyttämään paljon erilaiselta:

  • Lataa Y rekisteriin R0
  • Lataa Z rekisteriin R1
  • Lisää R0 ryhmään R1 asettamalla tulos R2: ssa
  • Tallenna R2 X: ään

Yleiskäyttöiset rekisterikoneet alkavat näyttää etua, kun voit pitää arvoja rekistereissä monien toimintojen välillä. Oletetaan esimerkiksi, että halusin suorittaa tämän hieman monimutkaisemman ohjelman:

X = A + B

Y = A - B

Akkukoneessa minun on ladattava A ja B uudelleen molempia toimintoja varten. Yleiskäyttöisessä koneessa ladaisin A ja B vain kerran.

Yleiskäyttöisissä rekisterikoneissa on myös useita lajikkeita: (Tämä luettelo ei ole tyhjentävä; myös jotkut arkkitehtuurit sekoittavat nämä käsitteet. )

  • Rekisterimuisti: Yksi operandi tulee rekisteristä ja yksi operandi tulee muistista.
  • Register-Register, 2-address: Molemmat operandit tulevat rekistereistä, mutta tuloksen on korvattava yksi syötteistä.
  • Register-Register, 3-address: Molemmat operandit tulevat rekisterit, ja tulos voi siirtyä omaan rekisteriin.

Esimerkiksi x86-prosessori on rekisterimuistikone, joka tarjoaa myös kahden osoitteen rekisteri-rekisteröinti-ohjeita. Suurin osa RISC-koneista on 3-osoitteisia Register-Register-koneita, joissa on erilliset lataus- / säilytysohjeet. Molemmat ovat yleiskäyttöisiä rekisterikoneita.

Vertaa niitä 6502 , joka on akkukone. Suurin osa aritmeettisesta toiminnasta (summaaminen, vähennyslasku, pyöriminen ja siirtyminen) toimii A-rekisterissä. Kaksi muuta rekisteriä, X ja Y, tukevat vain lisäystä, vähennystä ja vertailua; niitä käytetään pääasiassa muistin ja silmukkalaskurien indeksointiin.

Kolmas arkkitehtuurityyppi, jota et maininnut, on pinoarkkitehtuuri . Pinoarkkitehtuuri on samanlainen kuin akkuarkkitehtuuri siinä mielessä, että kaikki laskenta kohdistuu yhteen pisteeseen. Erona on, että pinoarkkitehtuuri lukee aina argumenttinsa pinosta ja laittaa tulokset aina pinoon.Sekä laskukomennon tulot että ovat implisiittisiä. Muiden ohjeiden on sitten hallittava arvojen siirtämistä pinoon ja arvojen nostamista pois pinoa.

Et löydä monia pinon arkkitehtuureita todellisissa siruissa. Mutta ne ovat suosittuja tulkeissa (esimerkiksi Java-tavukoodi) tai FORTH) ja tietyissä laskimissa, kuten HP: n RPN-pohjaisissa laskimissa.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *