Prosessorirekisteri on tietyn pituinen kenttä suorittimen sisäisessä ultranopeassa hajasaantimuistissa (SRAM). Sitä käyttää prosessori itse, se voi olla joko saatavilla tai ei saavutettavissa ohjelmistolla. Kun esimerkiksi haetaan seuraavaa käskyä muistista, se sijoitetaan käskyrekisteriin , johon ohjelmoija ei pääse käsiksi.
Ohjelmallisesti saavuttamattomissa olevat rekisterit ovat prosessorirekistereitä, joihin ei voida päästä tavalla tai toisella suorittavasta ohjelmasta. Esimerkki tällaisista rekistereistä on jo mainittu käskyrekisteri .
Ohjelmallisesti käytettävissä olevat rekisterit ovat rekistereitä, joihin voidaan päästä tavalla tai toisella suorittavasta ohjelmasta. Lähes jokainen tällainen rekisteri on nimetty sen nimitunnisteella kokoonpanokielen tasolla ja vastaavalla numeerisella tunnistekoodilla konekielitasolla. Saavutettavuuden kannalta ohjelmallisesti käytettävissä olevat rekisterit eivät ole samoja ja ne on käytännössä jaettu kahteen suureen alaryhmään:
Erikoisrekisterit [3] sisältävät prosessorin toimintaan tarvittavat tiedot - perustaulukon offsetit, pääsytasot jne.
Osa erikoisrekistereistä kuuluu ohjauslaitteeseen , joka ohjaa prosessoria generoimalla sarjan mikrokäskyjä .
Pääsy rekistereihin tallennettuihin arvoihin tapahtuu suoraan prosessorin kellotaajuudella ja pääsääntöisesti useita kertoja nopeammin kuin RAM-kenttien käyttö (vaikka välimuisti sisältää tarvittavat tiedot), mutta RAM-muistin määrä on paljon ylittää prosessorirekisterien kokonaismäärän , yleiskäyttöisten / tietorekisterien kokonais"kapasiteetti" x86-prosessoreille (esim. Intel 80386 ja uudemmat) 8 4 tavun rekisteriä = 32 tavua ( x86-64 prosessoreissa - 16/8 tavua = 128 tavua ja joitain vektorirekisterejä).
Taulukko näyttää yleiskäyttöisten rekisterien lukumäärän useissa yleisissä mikroprosessoriarkkitehtuureissa. On syytä huomata, että joissakin arkkitehtuureissa yksittäisten rekisterien käyttö voi olla monimutkaista. Joten SPARC:ssa ja MIPS:ssä rekisterinumero 0 ei tallenna tietoa ja se luetaan aina 0:na, ja x86-prosessoreissa, joissa on rekisteri ESP(osoitin pinoon), vain jotkut komennot voivat toimia.
Arkkitehtuuri | kokonaislukurekisterit _ |
FP - rekisterit |
Huomautuksia |
---|---|---|---|
x86-32 | kahdeksan | kahdeksan | |
x86-64 | 16 | 16 | |
IBM System/360 | 16 | neljä | |
z/Arkkitehtuuri | 16 | 16 | |
Itanium | 128 | 128 | |
SPARC | 31 | 32 | Rekisteri 0 (globaali) on aina käynnissä |
IBM solu | 4-16 | 1~4 | |
IBM POWER | 32 | 32 | |
tehoarkkitehtuuri | 32 | 32 | |
Alpha | 32 | 32 | |
6502 | 3 | 0 | |
W65C816S | 5 | 0 | |
KUVA | yksi | 0 | |
AVR | 32 | 0 | |
ARM 32-bittinen [4] | 16 | eri | |
ARM 64-bittinen [5] | 31 | 32 | |
MIPS | 31 | 32 | Rekisteri 0 on aina nolla |
RISC-V | 31 | 32 | Lisäksi on rekisteri 0, joka palauttaa aina nollan |
Elbrus 2000 | 256 | linjassa kanssa
kokonaisluku |
32 kaksinumeroista rekisteriä,
256 = 32 globaalia rekisteriä + 224 prosessipinorekisteriä [6] |
IP ( englanniksi Instruction Pointer ) - rekisteri, joka osoittaa ohjeiden siirtymän (osoitteen) koodisegmentissä (1234: 0100h segmentti / offset).
IP - 16-bittinen (EIP:n alaosa)
EIP - 32-bittinen analoginen (RIP:n alaosa)
RIP - 64-bittinen analoginen
Segmenttirekisterit ovat rekistereitä, jotka osoittavat segmentteihin.
Kaikki segmenttirekisterit ovat 16-bittisiä.
CS ( koodisegmentti ) , DS ( tietosegmentti ) , SS ( pinosegmentti ) , ES ( lisäsegmentti ) , FS, GS
Prosessorin reaalitilassa segmenttirekisterit sisältävät 64 kb:n segmentin alun osoitteen siirrettynä oikealle 4 bittiä .
Prosessorin suojatussa tilassa segmenttirekisterit sisältävät käyttöjärjestelmän allokoiman muistisegmentin valitsimen .
CS on osoitin koodisegmentille. CS:IP-sidonta (CS:EIP/CS:RIP - suojatussa/64-bittisessä tilassa) osoittaa seuraavan käskyn muistiosoitteeseen.
64-bittisessä tilassa segmenttirekisterit CS, DS, ES ja SS eivät osallistu lineaarisen (jatkuvan) osoitteen muodostukseen, koska segmentointia ei tueta tässä tilassa.
Tietorekistereitä käytetään välilaskentojen tallentamiseen.
RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, R8 - R15 - 64-bittinen (rekisteri-AX)
EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI, R8D - R15D - 32-bittinen (laajennettu AX)
AX ( akku ) , CX ( laskentarekisteri ) , DX ( tietorekisteri ) , BX ( perusrekisteri ) , SP ( pinoosoitin ) , BP ( perusosoitin ) SI (, lähdeindeksi ), DI ( kohdeindeksi ), R8W - R15W - 16-bittinen
AH, AL, CH, CL, DH, DL, BH, BL, SPL, BPL, SIL, DIL, R8B - R15B - 8-bittinen (puolet 16-bittisistä rekistereistä)
esimerkiksi AH - korkea AX - korkea puolikas 8 bittiä
AL - alhainen AX - alhainen puolikas 8 bittiä
RAX | RCX | RDX | RBX | ||||||||||||||||||||||||||||
EAX | ECX | EDX | EBX | ||||||||||||||||||||||||||||
KIRVES | CX | DX | BX | ||||||||||||||||||||||||||||
AH | AL | CH | CL | D.H. | DL | BH | BL |
RSP | RBP | RSI | RDI | Rx | |||||||||||||||||||||||||||||||||||
ESP | EBP | ESI | EDI | RxD | |||||||||||||||||||||||||||||||||||
SP | BP | SI | DI | RxW | |||||||||||||||||||||||||||||||||||
SPL | BPL | SIL | DIL | RxB |
missä x on 8...15.
Rekisterit RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, Rx, RxD, RxW, RxB, SPL, BPL, SIL, DIL ovat käytettävissä vain 64-bittisessä prosessoritilassa.
Lippurekisteri FLAGS (16 bittiä) / EFLAGS (32 bittiä) / RFLAGS (64 bittiä) - sisältää prosessorin nykyisen tilan.
Järjestelmärekisterit GDTR, LDTR ja IDTR otettiin käyttöön prosessoreissa Intel286:sta alkaen ja ne on suunniteltu tallentamaan kuvaustaulukoiden perusosoitteet - järjestelmäarkkitehtuurin tärkeimmät komponentit suojatussa tilassa työskennellessä.
GDTR-rekisteri sisältää 32-bittisen (24-bitin Intel286:lle) perusosoitteen ja 16-bittisen globaalin kuvaajataulukon ( GDT ) rajan.
LDTR- rekisterin näkyvä osa sisältää vain paikallisen descriptor table (LDT) -kuvausvalitsimen. Itse LDT-kuvaaja ladataan automaattisesti LDTR:n piilotettuun osaan globaalista kuvaajataulukosta.
IDTR-rekisteri sisältää 32-bittisen (24-bitin Intel286:lle) perusosoitteen ja 16-bittisen keskeytyskuvaustaulukon ( IDT ) rajan. Reaalitilassa sillä voidaan muuttaa keskeytysvektoritaulukon sijaintia.
TR-rekisterin näkyvä osa sisältää Task State Segment Descriptor ( TSS ) -valitsimen. Itse TSS-kuvaaja ladataan automaattisesti TR:n piilotettuun osaan globaalista kuvaajataulukosta.
Rekisteri on toiminnallinen yksikkö, joka vastaanottaa, tallentaa ja välittää tietoa. Rekisterit koostuvat joukosta laukaisimia , yleensä D. Tiedon vastaanottamisen ja antamisen tyypin mukaan erotetaan 2 tyyppiä rekistereitä:
Siirtorekisterit ovat sarjaan kytketty varkkujen ketju . Pääasiallinen toimintatapa on koodin bittien siirto yhdestä liipaisimesta toiseen kullekin kellosignaalin pulssille.
Tarkoituksen mukaan rekisterit eroavat toisistaan:
IP ( englanninkielinen ohjeosoitin ) - rekisteri, joka sisältää seuraavan suoritettavan käskyn osoitepoikkeaman suhteessa CS -koodisegmenttiin x86 -perheen prosessoreissa .
IP-rekisteri liittyy CS:ään muodossa CS:IP, jossa CS on nykyinen koodisegmentti ja IP on nykyinen siirtymä kyseisestä segmentistä.
IP-rekisteri on 16-bittinen osoitinrekisteri. Sen lisäksi tämäntyyppisiin rekistereihin kuuluvat SP ( englanniksi Stack Pointer - pinoosoitin) ja BP ( englanniksi Base Pointer - perusosoitin).
ToimintaperiaateEsimerkiksi CS sisältää arvon , IP-rekisteri tallentaa offsetin . 2CB5[0]H123H
Seuraavan suoritettavan käskyn osoite lasketaan lisäämällä CS:n (koodisegmentin) osoite IP-rekisterin siirtymään:
2CB50H + 123H = 2CC73HSiten seuraavan suoritettavan käskyn osoite on 2CC73H.
Kun nykyinen käsky suoritetaan, prosessori muuttaa automaattisesti arvoa IP-rekisterissä niin, että CS:IP-rekisteripari osoittaa aina seuraavaan suoritettavaan käskyyn.
EIP80386-prosessorista alkaen osoitinrekisteristä otettiin käyttöön 32-bittinen versio - EIP ( Extended Instruction Pointer ) . Tässä tapauksessa IP on tämän rekisterin alin pää (ensimmäiset 16 bittiä). EIP:n toimintaperiaate on yleensä samanlainen kuin IP-rekisterin toiminta. Suurin ero on, että suojatussa tilassa, toisin kuin reaalitilassa, CS-rekisteri on valitsin (valitsin ei osoita itse segmenttiä muistissa, vaan segmentin kuvaajaa deskriptoritaulukossa).
RIP64-bittiset prosessorit käyttävät omaa käskyosoitinrekisteriään - RIP .
Tämän rekisterin alaosa on EIP-rekisteri.
RIP:iin perustuva uusi RIP-suhteellinen osoitusmenetelmä on otettu käyttöön 64-bittisissä prosessoreissa. Muu RIP:n työ on samanlaista kuin EIP-rekisterin työ.
prosessoritekniikat | Digitaaliset|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkkitehtuuri | |||||||||
Ohjesarjan arkkitehtuuri | |||||||||
koneen sana |
| ||||||||
Rinnakkaisuus |
| ||||||||
Toteutukset | |||||||||
Komponentit | |||||||||
Virranhallinta |
Mikro-ohjaimet | ||||||||
---|---|---|---|---|---|---|---|---|
Arkkitehtuuri |
| |||||||
Valmistajat |
| |||||||
Komponentit | ||||||||
Periferia | ||||||||
Liitännät | ||||||||
OS | ||||||||
Ohjelmointi |
|