e-gradiva     Sistemi Motorola Omrežja      
  logotip  
SERŠ Maribor    

Kaj je register v računalniku

V računalniku z besedo register označujemo eno ali več povezanih pomnilniških celic, v katere je mogoče shraniti neko vrednost. Njihov pomen je predvsem shranjevanje operandov CPE. To velja predvsem za programsko nedostopne registre. Imamo pa še programsko dostopne registre, ki so nujno potrebni za realizacijo delovanja centralno procesne enote. Podvrsta teh dveh pa so podatkovno dostopni na primer akumulator pri Motoroli. Registre najdemo v centralno procesni enoti (CPE), saj so njen sestavni del.

Akumulator

Osnovna funkcija tega registra je shranjevanje operandov nad katerimi se izvajajo operacije. Pri von Neumannovem lAS je bil akumulator akumulator register na katerega so se nanašale skoraj vse operacije (preostale tri operacije so se nanašale na programski števec in na akumulatorjev podaljšek MO) in podobno je še danes. Ime akumulator se je uporabljalo že pri mehaničnih kalkulatorjih in je pomenilo napravo, ki je združevala funkcijo pomnenja in seštevanja. Vsaka v akumulator prenešena vrednost se je avtomatsko prištela k prejšnji vsebini.

Danes akumulator pomeni univerzalni register za operande, nad katerimi se izvajajo aritmetične in logične operacije. Nekateri računalniki imajo po več akumulatorjev, ki so lahko enakovredni ali pa ne. V drugem primeru so nekatere operacije dovoljene samo na nekaterih akumulatorjih. Posebna vrsta akumulatorjev so tudi posebni registri za operande v zapisu s plavajočo vejico, ki jih imajo nekateri računalniki.

Programski števec

Eden izmed najbolj znanih registrov je programski števec, ki se je prvič pojavil pri IAS. Njegova naloga je kaže na besedo glavnega pomnilnika, da se lahko strojni ukaz prebere. Programski števec na kratko PC (program counter) vsebuje pomnilniški naslov , na katerem je naslednji ukaz. Zato se mu včasih tudi reče ukazni števec (instruction counter)

Indeksni register

Osnovna funkcija tega registra je sodelovanje pri določanju naslova operanda. Indeksni register je potreben v ukazih, ki uporabljajo tako imenovano indeksno naslavljanje. Pri tej vrsti naslavljanja ukaz vsebuje pomnilniški naslov, ki mu pravimo odmik. Naslov A operanda v glavnem pomnilniku je določen z enačbo

A = (X) + d

kjer smo z (X) označili vsebino indeksnega registra, z d pa odmik.

Izračunani pomnilniški naslov oper an da, ki mu, pravimo dejanski naslov (effective address), torej dobimo tako, da se vsebini indeksnega registra prišteje odmik. Tak način določanja naslova operandov je posebej uporaben pri operandih, ki so organizirani v polja. Polje dolžine n elementov, ki se nahajajo v pomnilniku na naslovili AD, AD + 1 ... AD + (n-1), lahko dosežemo na preprost način tako, da uporabimo odmik AD in postavimo v začetku indeksni register na 0. S tem pridemo do prvega elementa polja, s povečevanjem vsebine indeksnega registra za 1 pa še do vseh naslednjih (to seveda ni edini možni način).

Pri nekaterih računalnikih se za računanje naslova lahko uporabita dva indeksna registra tako, da je dejanski naslov določen z

A = (X1) + (X2) + d

Možnih različic je seveda še več.

Prvi računalnik z indeksnim regitrom je bil Datatron podjetja ElectroData Corporation iz leta 1951 Kako pomembni so indeksni registri lahko vidimo, če poskusimo procesirati polje na računalniku, ki jih nima. Pri lAS je bilo za ta namen potrebno, da je program spreminjal svoje lastne ukaze.

Posebna oblika indeksnega registra je bazni register. Bazni register ni pravzaprav nič drugega kot indeksni register – razlika je le v velikosti odmika, ki se uporablja pri računanju dejanskega naslova. Medtem ko pri indeksnem nastavljanju odmik obsega celoten ponilniški naslov, je pri baznem naslavljanju odmik krajši in obsega samo del pomnilniškega prostora. Razlog za uporabo baznih registrov in baznega naslavljanja je v tem, da so ukazi v primerjavi s tistimi pri indeksnem naslavljanju krajši, ker ima odmik manj bitov.

Tu moramo omeniti, da se vsi proizvajalci ne držijo razlikovanja med indeksnimi in baznimi registri. Bazne registre in bazno naslavljanje pogosto označujejo kar kot indeksno.

Splošnonamenki registri

Akumulatorji in indeksni registri so po funkciji očitno zelo različni. Prve zato včasih imenujejo tudi podatkovni registri in druge naslovni registri. Gledano s stališča programerja je vsekakor privlačna ideja o registrih, ki lahko delujejo kot akumulator ali kot indeksni register; pač v skladu s tem, kaj programer potrebuje.

Ta ideja o splošnonamenskih registrih je bila prvič realizirana leta 1956 na računalniku Pegasus podjetja Ferranti. Pri današnjih računalnikih je pogosto uporabljena, čeprav obstajajo v zvezi z njo tudi določeni pomisleki. Nekateri namreč mislijo, da razlikovanje med akumulatorji in indeksnimi registri sili programerje k večji disciplini in s tem posredno vodi k boljšim programom.

Skladovni kazalec

Za delo s skaldom ima CPE običajno poseben register, imenovan skladovni kazalec (angl. stack pointer). Kazalec kaže vedno na vrsh sklada. Kaj je vrh sklada? Obstajata dve tolmačenji.

Med obema principoma ni večje razlike, vsak ima svoje zagovornike.

Statusni register

Centralna procesna enota shrani opis zadnjega izvedenega ukaza v statusni register. Bitom v tem registru pravimo zastavice. Različni procesorji imajo različne zastavice. Večinimo pa nastopajo naslednji štirje:

Nič (angl. zero)
Rezultat zadnje operacije je enak 0, vsi biti v rezultatu so enaki 0.
Negativno (angl. negative)
Rezultat zadnje operacije je manjši od 0, če se števila obravnava kot negativna. Preverja se bit z najvišjo utežjo. Negativno število predstavlja število z bitom z največjo utožjo z vrednostjo 1.
Prenos (angl. carry)
Rezultat zadnje operacije je prekoračil obseg števil brez predznaka. Dano število je lahko večje od največjega možnega ali pa manjše od 0. S pomočjo te zastavice lahko računamo tudi s števili, ki so večja od največje možne vrednosti, ki se lahko vpiše v akumulator.
Preliv (anl. overflow)
Rezultat zadnje operacije je prekoračil obseg predznačenih števil. Dano število je lahko večje od največjega možnega ali pa manjše od najmanjšega možnega. S pomočjo te zastavice lahko računamo tudi s števili, ki so večja od največje možne vrednosti, ki se lahko vpiše v akumulator.

Naslovni register

V naslovnem registru(angl. adress register)se nahaja naslov pomnilniške besede s katero želi CPE komunicirati. Z njim CPE sporoča glavnemu pomnilniku naslov besede do katere želi dostopiti. Njihovo delovanje je sledeče: naslov se vpiše v enega izmed registrov in s tem povzroči branje pomnilniške besede v istoležni akumulator. Tako vpis neke vrednosti povzroči branje besede na določenem pomnilniškem naslovu v določen register. S tem ko vpišemo naslov v nek drugi register se povzroči pisanje vsebine istoležnega akumulatorja v naslovljeno besedo glavnega pomnilnika.

Podatkovni register

V podatkovnem registru (angl. data register) se nahaja podatek, ki ga CPE piše v to besedo (pri pisalnem ciklu) ali podatek, ki ga je CPE prebrala iz te besede (pri bralnem ciklu).

Programski števec

Programski števec (angl. program counter), ki se mu včasih pravi tudi ukazni števec, vsebuje naslov lokacije naslednjega ukaza, ki ga bo prevzela CPE.

Ukazni register

V ukaznem registru (angl. instruction register) se shrani vsak ukaz, ki ga CPE vzame iz pomnilnika. Običajno se shrani samo tisti del ukaza, ki določa operacijo in ki mu pravimo operacijska koda. Kontrolna logika analizira operacijsko kodo in sproži zaporedje mikrooperacij, ki so potrebne za njegovo izvršitev.

To so tako imenovani programsko nedostopni registri, ki so za delovanje računalnika nujno pomembni, in jih ima vsak današnjih računalnik, zaradi hitrejše rabe ukazov in podatkov.

SERŠ Maribor, Strokovna gimnazija, leto: 2002, avtor: Leon Borko