Rekisteröi (prosessori)

Rekisterit vuonna prosessorit ovat muistissa alueita tietojen prosessorit voivat käyttää erityisen nopeasti. Olet aritmeettisten yksiköiden välittömässä läheisyydessä . Kun prosessorin ydin , rekisterit ovat yläosassa muistihierarkia ja ovat näin ollen nopein tapa käsitellä tietoa, koska yhteys on riippumaton tietojen tai osoite väylän .

Monet arkkitehtuurit , erityisesti RISC-arkkitehtuurit , sallivat aritmeettisten yksiköiden käsitellä tietoja vain rekistereissä; muut arkkitehtuurit sallivat myös ainakin osittain muun kuin rekisterisisällön käytön  RAM-muistista tai laitteistorekistereistä.

Rekisterin sarjaa eri prosessorin arkkitehtuurit eroavat toisistaan koon, lukumäärän ja tyypin käytettävissä rekistereistä:

  • Nykyään yksittäiset rekisterit ovat yleensä kahden tehon kokoisia , ts. H. 8, 16, 32, 64, 128, 256 tai 512  bittiä .
  • Rekisterien määrä ydintä kohti vaihtelee viidestä useaan sataan.
  • Eri tyyppiset rekisterit kuvataan alla.

Rekisteröi tyypit suorittimen ytimessä

Ominaisuuksien mukaan

Vanhojen suorittimien ( Z80 , Intel 486 ) laitteisto- ja arkkitehtuurirekisterit ovat identtiset, nykyaikaisemmilla suorittimilla (IBM  System / 360 Model 91, Pentium Pro , AMD K5 , Intel Core ) se on erilainen asia.

Sisältyvien tietoarvojen lukumäärän mukaan

  • Skalaarirekisterit : sisältävät yhden data-arvon, enimmäkseen kokonaisluvut , joita voidaan käyttää myös osoitteina .
  • Vektorirekisterit: rekisterit, jotka sisältävät useita data-arvoja (yleensä 2-64) vektorina . Yksittäiset data-arvot voivat kumpikin olla koko on 8  bittiä ja 64 bittiä ja olla kokonaislukuja tai liukulukuja .

Sovellustoiminnon mukaan

Tietorekisteri, akku

Datarekistereitä käytetään tallentamaan operandeille varten  ALU ja sen tuloksia. Vanhemmissa prosessoriarkkitehtuureissa oli joskus vain yksi tällainen rekisteri, akku ; Uuden sukupolven prosessoriytimissä on usein useita datavarastoja, joissa on akkutoiminto.

Tietorekisterin koko yhdessä tietoväylän leveyden kanssa on pääsääntöisesti ratkaiseva prosessoriarkkitehtuurin luokittelussa 8, 16, 32 tai 64-bittiseksi arkkitehtuuriksi. 8-bittisellä tietoväylällä ja 8-bittisillä rekistereillä sitä kutsutaan 8-bittiseksi arkkitehtuuriksi, esim. B. MOS 6502 tai Zilog Z80 . Prosessoreihin, joilla on erikokoiset tietoväylät ja tietorekisterit, viitataan usein vastaavasti, esim. B. Motorola 68000 , jota kutsutaan 16/32-bittiseksi prosessoriksi, jossa on 16-bittinen tietoväylä ja 32-bittinen datasrekisteri. Tällä hetkellä ( 2013 ) uusimmat prosessorit ovat enimmäkseen 64-bittisiä prosessoreita, esim. B. AMD Opteron tai AMD Bulldozer tai Intelin prosessoreita EM64T ja (harvoin) Itanium ja Alpha AXP .

8-bittisillä prosessoreilla osoiteväylä ja rekisteri olivat enimmäkseen 16 bittiä kooltaan. Useimmissa prosessoreissa nykyään osoiterekisterit ovat samankokoisia kuin tietorekisterit, osoiteväylä on yleensä saman kokoinen tai pienempi.

Suurimman osan ajasta datarekisterit on kytketty vain ALU: han, ei  FPU: han . Toisin sanoen, useimmissa prosessoriytimissä datarekistereitä ei voida käyttää operanteina FPU-operaatioissa. Tässä tapauksessa FPU: n operandit on säilytettävä erityisesti suunnitelluissa rekistereissä, liukulaskurekistereissä .

Vapaasti käytettävissä olevat rekisterit

Nykyaikaisissa RISC- suorittimissa, kuten PowerPC tai Sun SPARC , tietorekistereitä kutsutaan yleisiksi tai vapaasti käytettävissä oleviksi rekistereiksi (englanninkielinen GPR for General Purpose Register ), koska niitä voidaan käyttää data- tai osoiterekistereinä . Samoin Motorola 68000: lla on kahdeksan vastaavaa tietorekisteriä.

Intel x86 -tuoteperheen 32-bittiset prosessorit ovat peräisin CISC- arkkitehtuurista, ja siksi niillä on pääosin 8- ja 16-bittisten edeltäjäsukupolviensa ominaisuudet. Heillä on vain neljä yleistä rekisteriä, joihin viitataan myös tuon ajan nimillä (akku, perusrekisteri, laskentarekisteri, tietorekisteri). Suorittimen ydin ei myöskään voi vielä suorittaa tiettyjä toimintoja kaikissa rekistereissä (esim. Jakaminen voi tapahtua vain akussa).

Osoiterekisteri

Osoiterekisterit tärkeä rooli osoite aritmeettinen. Niitä käytetään operandien tai komentojen muistiosoitteiden laskemiseen ja ne on kytketty sisäiseen tietoväylään ja osoiteväylään.

Kanssa indeksoitu käsitellään esimerkiksi kanssa Intel 8086 , erotetaan kahdenlaisia osoiterekisterit:

  • emäs osoite rekistereihin (myös segmentti rekisterit ), joita tarkastellaan jäljempänä erityisiin rekistereihin
  • indeksi rekisterit , joka tallentaa offset alustaan osoite.

Lineaarisessa osoituksessa, esimerkiksi Motorola 68000: ssa , tällaista eroa ei ole. On osoitetyyppi, johon osoite ja tietorekisteri lisätään. Kun Motorola 68020 , tietorekisterialuetta voidaan myös kertoa kiinteä sanan pituus.

Muissa prosessoriarkkitehtuureissa ainoaa osoitukseen liittyvää rekisteriä kutsutaan hakemistorekisteriksi: Motorola 6800 ja Zilog Z80 lisätään vakio, MOS Technology 6502: lla 16-bittinen arvo ja 8-bittinen hakemistorekisteri. 6502: lla on myös osoitetyyppi, jossa yksi useista perusosarekistereistä voidaan valita RAM-muistiin tallennetusta taulukosta hakemistorekisterin avulla. Yksittäisten osoitetyyppien tarkka nimeäminen on epäjohdonmukaista ja prosessorikohtaista.

Erityinen rekisteri

Yleisten rekisterien lisäksi on olemassa myös erityisiä rekistereitä, jotka tallentavat suorittimen ytimen toimintatilan ja suorittavat sille aputoimintoja. Ne voidaan käyttää vain erityisiä toimintoja (esim. Jako) tai ne ovat hyvin erityisiä tehtäviä ( keskeytys avainsana taulukko  IDT, sivu taulukko ...)

Erityiset rekisterit ovat käyttäjän ohjelmoitavissa vain osittain.

Seuraavat erityisrekisterit löytyvät useimmista arkkitehtuureista:

  • Komento laskuri rekisteri , myös ohjelman laskuri tai komento laskuri , (Englanti Instruction Pointer  IP ( 16-bittinen ) tai laajennettu Instruction Pointer  EIP ( 32-bittinen ) tai ohjelma laskuri  PC): Riippuen järjestelmäarkkitehtuuri, sisältää muistin osoitteen nykyisestä tai seuraava suoritettava komento - hyppykomento asettaa tämän rekisterin uudelle arvolle
  • Käskyrekisteri (englanninkielinen rekisterirekisteri ): tallentaa nykyisen komennon - jotta ohjelmoija ei olisi käytettävissä
  • Perusrekisteri , esim. B. perusvektoritaulukolle: voidaan nollata käyttäjäohjelmalla
  • Segmenttirekisteri : x86- alustan erikoisuus, joka sisältää 20-bittisen osoitteen 16 ylempää bittiä; Niiden sisältö on siksi kerrottava 16: lla ja lisättävä sitten segmentin sisällä olevaan offsetiin lopullisen muistiosoitteen saavuttamiseksi (tällä tavoin 20 bittiä osoiteavaruutta voitaisiin peittää puhtailla 16-bittisillä rekisterikuormituskomennoilla , ts. 1  MiB )
  • Tilarekisteri (englanniksi: Condition Code Register CCR tai Processor Status Word PSW tai flag register ): ilmaisee tietyt tilat komennon suorittamisen jälkeen (esim. Nolla lippu , merkkilippu jne.) - käyttäjäohjelma alustaa yksittäiset liput esim. B. ennen laskutoimituksia
  • Keskeytys ohjaus rekisteri (Englanti: kesketysyohjausrekisteriin ): Kun monimutkaisempi suorittimia, jossa tätä toimintoa ei voida käsitellä (katso edellä), jossa yksi tai kaksi bittiä tilarekisterin, tässä edellä, voidaan antaa hyvin eriytetty, johon keskeytykset reagoivat ja prioriteetti, jolla on oltava. Lukemalla ohjelmisto voi selvittää, mikä keskeytyksistä on läsnä. Kirjoittamalla hän voi (väliaikaisesti) z. B. estää yksittäiset keskeytykset, jotka häiritsevät tiettyä toimintaa.

Virkistää laskuri Z80, automaattinen laskuri, joka kehittää virkistää osoitteet muistiin ja käytetään joissakin ohjelmia, kuten pseudo-satunnaislukugeneraattori , myös kuuluu tähän ryhmään.

Jotkut mikro (Intel MCS 51 perheen sekä Siemens C167 perhe) järjestävät nämä erityiset rekisterit ja rekisterien säätelemään I / O-porttien muodossa rekisterin pankki , joka käyttää muistia yhdistetty I / O tavallista komentoja osoite päämuistin käyttö. Tämän rekisteripankin kätkemää päämuistia ei voida joko käsitellä lainkaan tai vain epäsuorasti.

Pino rekisteri

Pino (myös pino-osoittimen tai pino-osoittimen välille Englanti pino-osoittimen , lyhyt  SP ) ovat osoite rekistereitä hallintaan pinoja , ja pino tai vain pino kutsutaan.

Pino-muisti on järjestetty pinorekisterillä LIFO- periaatteen mukaisesti, ja se voidaan täyttää tai tyhjentää push- tai pop-toiminnoilla. Pinorekisteri osoittaa aina pinon lopussa olevaan muistiosoitteeseen viimeisen elementin arkkitehtuurin mukaan tai lähinnä sen takana.

Useimmissa nykypäivän arkkitehtuureissa on:

  • järjestelmän pino, jota käyttöjärjestelmä käyttää prosessorin tilan tallentamiseen ja palauttamiseen prosessia vaihdettaessa .
  • käyttäjän pino ( puhelupino ), jota sovellusohjelma voi käyttää vapaasti. Kun aliohjelma ( menettely , aliohjelma ) kutsutaan, paluuosoite, johon kutsuohjelmaa jatketaan, kun aliohjelma on päättynyt, merkitään pinoon ensimmäisen kerran. Lisäksi aliohjelman kutsulle, paluulle ja paikallisille muuttujille voidaan luoda dynaamisesti erillinen pinoalue , joka vapautetaan uudelleen valmistumisen jälkeen.

Sähköisen kirjoittamisen mukaan

8-bittinen rekisteri, joka koostuu D-kiikkuista
  • yksinkertaiset salvat, jotka voivat tallentaa yksittäisiä bittejä ja antaa ne lukemista varten; nämä ovat suurin osa rekistereistä (tila, rinnakkaiset I / O-tietorekisterit).
  • Monibittiset laskurirekisterit, jotka lisäksi lisäävät tai vähentävät niiden sisältöä yhdellä vasteena impulssiin; Esimerkkejä: ohjelmalaskuri, pinorekisteri ja ajastinrekisteri .
  • Siirtorekisterit löytyvät pääasiassa suorittimen tai numeerisen rinnakkaisprosessorin ALU: sta , jossa ne suorittavat alitoimintoja mm. Kertolaskuina ja jakoina .

Tulo- / lähtörekisteri

Lisäksi puskuri paikkoihin keskusyksikkö on tietokonejärjestelmä, rekisterit voivat myös näkyä elektroniikka kytketty oheislaitteisiin tai pelimerkkejä, mutta CPU itse voi myös olla integroitu tulo / lähtö rekistereihin. Yleensä ne voidaan jakaa samoihin alaluokkiin kuin edellä. puhdas CPU-rekisteri. Muutama edustava esimerkki:

  • Ulkoisen massamuistin ohjausyksiköiden tilarekisterit sisältävät tila- ja tietorekistereiden lisäksi yleensä rekisterit, jotka liittyvät massamuistin osoitetietoihin, nykyään enimmäkseen sektorinumerot .
  • Videopiireissä tilarekisterien bitit ohjaavat esim. B. eri videotilat; Tietorekisterit voivat esimerkiksi B. Sprite- tiedot sisältyvät.
  • Kanssa rinnakkaisliitäntä , tietorekisterin sisältää varsinaisen tulostustiedot ja tilarekisterin sisältää kättelyn bittiä. Usein on myös tila rekisterissä DDR (ja data suunta rekisteri ), jonka kautta data suunta (tulo tai lähtö) ja tiedot linjat voidaan ohjelmoida (esimerkiksi kaksisuuntaisen käyttöön).

Näitä I / O-rekisterit voidaan usein käsiksi porttien numerot kuten I / O-portit ohjelmasta on keskusyksikkö tai esitetään osoiteavaruuden päämuisti ( muisti yhdistetty I / O ). Näkökulmasta riippuen on säilytetty käsitteellinen ero RAM- muistipankkien muistipaikkojen ja logiikkamoduulien rekisteripaikkojen välillä .

historia

Jo ensimmäisessä tietokoneessa Zuse Z3 vuodelta 1941 ja sen edeltäjä Zuse Z1 vuodelta 1938, kaksi muistipaikkaa "R1" ja "R2" koneen sanakoolla ovat käytettävissä operandeina aritmeettisissa operaatioissa " aritmeettinen yksikkö ". Näiden rekistereiden ja tallennusyksikön väliseen tiedonsiirtoon (lataamiseen ja tallentamiseen) on toteutettu erityisiä konekomentoja , jotka voidaan nähdä erillään aritmeettisesta yksiköstä .

Rekisterien kehitys on siis läheisessä yhteydessä varhaisimpien tietokoneiden työmuistin tekniseen kehitykseen: Ensimmäisillä tietokoneilla ei ollut nykyisessä mielessä lainkaan työmuistia . Kaikki tiedot ja itse ohjelma tallennettiin täysin erilaisiin tietovälineisiin, kuten mekaanisiin muistiin, perfokortteihin ja magneettisiin rumpumuistoihin . Jotta aritmeettinen yksikkö pystyisi suorittamaan operaation, sanat oli siirrettävä massamuistista aritmeettisen yksikön puskuripaikkoihin, mikä voisi sitten siirtää arvon kytkentälogiikkaan. Kytkentälogiikan ulostulossa muodostettu arvo oli puskuroitava uudelleen, kunnes se voitiin kirjoittaa massamuistilaitteelle. Näitä puskuritiloja kutsuttiin rekistereiksi (latinaksi: regesta ; regerereestä sisääntuloon).

Varhaisessa vaiheessa havaittiin, että ohjelmasarja voidaan optimoida, jos pystyt puskuroimaan väliarvoja muutamalle operaatiolle ja laskemaan ne yhteen operaatioon sen jälkeen. Yksittäiset rekisterit muutettiin rekistereiksi, jotka koostuivat aluksi myös putkista tai releistä , mutta korvattiin sitten ferriittisydämmuisteilla teknisen kehityksen edetessä . Ydinmuistin mahdollinen osoitteenlasku johti termien hajoamiseen - rekisterimerkinnät tarkoittavat silti puskuripaikkoja, joiden sijainti on koodattu kovasti aritmeettisen logiikkayksikön käskykoodissa, kun taas ydinmuisti osoitetaan epäsuorasti indeksin kautta rekisterit.

Ydinmuistin aikaan päämuistin data-arvot linkitettiin edelleen suoraan aritmeettiseen yksikköön. Aritmeettisten rekistereiden lisäksi, joiden arvo meni suoraan aritmeettiseen logiikkaan, käskykoodi sisälsi indeksirekistereiden koodatun erittelyn, jonka arvo sijoitettiin ydinmuistin osoiteriveille, ja ferriitin lähtevän arvon ytimet syötetään sitten aritmeettiseen logiikkaan. Ydinmuistissa voi olla muutama tuhat paikkaa. Yhä nopeammilla aritmeettisilla yksiköillä ja siirtymällä halvempaan, mutta hitaampaan, kondensaattoreihin (dynaamiseen RAM-muistiin) perustuvaan päämuistiin , tarvitaan jälleen puskuritiloja, joissa päämuistin arvot kopioidaan ensin aritmeettisen yksikön rekisteripaikkoihin, jotta voidaan käsitellä sieltä.

Käytä korkean tason kielillä

Jotkut korkean tason kielet, kuten  C, suunnittelivat rekisterien nimenomaista käyttöä muuttujille, joita ohjelmoijan mukaan käytetään erityisen usein. Nykyaikaiset kääntäjät (1990-luvun puolivälistä lähtien) jättävät nämä attribuutit huomiotta ja jättävät vakioiden, muuttujien tai osailmaisujen määrityksen optimoijalle . Ohjelmointikielellä C ++ C ++ 11: n jälkeen "register" -muuttujien ilmoittaminen samannimisellä avainsanalla on julistettu vanhentuneeksi ("vanhentunut"); C ++ 17: n jälkeen tuki on lakannut olemassa kokonaan.

nettilinkit

Commons : Suorittimen rekisteri  - kokoelma kuvia, videoita ja äänitiedostoja