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

Delovanje CPE

Najpomembnejša posledica in istočasno tudi osnovna značilnost vsakega von Neumannovega računalnika je v tem, da je njegovo delovanje popolnoma pod nadzorom ukazov, ki jih CPE jemlje iz glavnega pomnilnika enega za drugim. Delovanje je strogo zaporedno in pri vsakem ukazu razlikujemo naslednja dva koraka:

jemanje ukaza iz pomnilnika (fetch).
Temu pravimo tudi prevzem ukaza. Te ukaze označujemo z izrazom strojni ukaz iali tudi ukazi strojnega jezika, da jih razlikujemo od ostalih vrst ukazov, ki se pojavljajo pri računalniku. Strojni ukaz se vedno vzame iz tiste lokacije glavnega pomnilnika, na katero kaže vsebina programskega števca PC (angl. program counter). Drugače povedano, PC vsebuje naslov pomnilniške lokacije, iz katere se prebere naslednji ukaz. Zato mu včasih pravimo tudi ukazni števec.
izvrševanje (execution)
Sestavni del vsakega ukaza je poleg operacije tudi informacija o tem, kje se nahajajo operandi, nad katerimi se naj izvrši. Ta informacija je lahko podana implicitno (v sami operaciji) ali eksplicitno. Po končanem izvrševanju se v PC nahaja naslov naslednjega ukaza. To je običajno naslov naslednje višje pomnilniške lokacije. Izjeme so le skočni ukazi, ki povzročijo, da se v PC lahko vpiše poljuben naslov (npr. ukaz JUMP).

Po zaključku koraka 2 CPE vedno prične spet s korakom 1 in to se ponavlja, dokler npr. računalnika ne ustavimo. To zaporedje se spremeni samo izjemoma pri pojavu takoimenovanih prekinitev, ki jih običajno zahtevajo V/I naprave. Pri veliki večini računalnikov prihaja do prekinitev razmeroma redko, npr. enkrat na 1000 ali več ukazov. Opisano zaporedje je zato v resnici prevladujoči način delovanja.

Von Neumannovi računalniki se zaradi te značilnosti včasih imenujejo tudi ukazno-pretokovni (ali tudi nadzorno-pretokovni) računalniki. S tem izrazom želimo povedati, da se ukazi izvajajo pod nadzorom programskega števca (oz. ukazov in s tem te računalnike razlikovati od t.i. podatkovno - pretokovnih (angl. data flow) računalnikov, ki predstavljajo eno od predlaganih rešitev za ne-von Neumannove računalnike.

Zaporedno izvajanje ukazov, ki je tako zelo značilno za von Neumannove računalnike, je po svoji naravi počasno. Z njim ne moremo izkoristiti paralelnosti, ki jo omogočajo nekateri algoritmi. Mogoče je tudi pri von Neumannovih računalnikih mogoče paralelno izvajati velik del funkcij (npr. jemanje naslednjega ukaza paralelno z izvrševanjem prejšnjega), vendar je v logičnem smislu izvajanje še vedno zaporedno. Ta pomanjkljivost von Neumannovih računalnikov je znana skoraj od njihovega pojava dalje in iskanje ne-von Neumannovih arhitektur ima dolgo zgodovimo. Kljub temu, da je bilo predlaganih precej rešitev za paraleine arhitekture, se do danes komercialno ni uveljavila nobena. Velika večina današnjih računalnikov je še vedno von Neumannovega tipa.

Pravilo PC ← PC + 1 iz koraka 2, ki izrecno določa vrstni red izvajanja ukazov in ki je bilo prvič uporabljeno pri računalniku IAS, je rezultat dogovora. Drugače povedano: nobenega naravnega zakona ni, ki bi prepovedoval drugačno pravilo, npr. PC ← PC - 1 ali kaj podobnega. K sreči takih drugačnih pravil ne uporablja noben proizvajalec. V množici različnih rešitev, ki jih uporabljajo različni proizvajalci v svojih računalnikih, je pravilo PC + 1 eno od redkih, na katerega se lahko zanesemo.

Delovanje CPE v izvršilnem ciklu lahko opišemo z zaporedjem tako imenovanih mikrooperacij, od katerih vsaka vsebuje prenos informacije med registri. Čas TCPE, ki je potreben za najkrajše mikrooperacije, je definiran kot cikel CPE in je osnovna enota za merjenje dogajanja v CPE. Obratno vrednost 1/TCPE imenujemo frekvenca CPE ali ura in jo običajno merimo v mahahertzih ali gigaHertzih (MHz, GHz). Frekvenca ure je neposredno odvisna od tehnologije, ki je uporabljena za izdelavo CPE. Ker so mikrooperacije različnih CPE po kompleksnosti lahko zelo različne, tudi ni mogoče ocenjevati hitrost CPE samo na osnovi frekvence ure. Take primerjave so smiselne samo pri enakih ali zelo podobnih CPE.

Nekoliko boljša enota za merjenje zmogljivosti CPE je število ukazov, ki jih lahko izvrši v časovni enoti. To število običajno merimo z enoto MIPS, ki je kratica za Million Instructions Per Second. CPE z zmogljivostjo 10 MIPS torej lahko izvrši 10 milijonov ukazov v eni sekundi. Ker pa je moč ukazov različnih računalnikov precej različna, tudi ta enota ni posebno natančna. Poleg tega imajo nekateri računalniki ukaze, ki izvršijo isto operacijo na več operandih na enkrat. Zato se uporabljata tudi enoti MOPS (Million operations Per Second - milion operacij na sekundo) in še posebej MFLOPS (Million Floating-point Operations Per Second - milijon operacij s plavajočo vejico na sekundo).

Na računalnikih z visoko stopnjo paralelizma je zmogljivost merjena v MOPS in MFLOP običajno večja od tiste v MIPS. Na večini ostalih pa je stanje ravno obratno. Prednost enote MOPS in še posebej MFLOPS je v tem, da predstavlja absolutno mero zaaritmetično (računsko) zmogljivost CPE, ki jo brez težav lahko uporabimo za primerjavo zelo različnih računalnikov. Slabost teh enot je v tem, da je primerjava omejena na aritmetično zmogljivost, ki je pri mnogih problemih sekundarnega pomena.

CPE je povezana s pomnilnikom in drugimi deli računalnika preko vodil. Zato mora vsebovati tudi logiko za vodenje prenosov in reagiranje na kontrolne signale. Posebno pomembni so v tem pogledu signali preko katerih CPE dobiva zahteve za tako imenovane prekinitve.

Tehnologija za izdelavo CPE je od prvih računalnikov, ki so uporabljali releje in elektronke, močno napredovala. Najbolj pogosta oblika CPE danes je mikroprocesor, ki ni nič drugega kot CPE na enem čipu silicija. Kljub takemu napredku pa so že od prvih računalnikov dalje praktično vse CPE zasnovane tako, da upoštevajo naslednji dve izhodišči:

Hitrost glavnega pomnilnika lahko merimo s pomnilniškim ciklom tM, ki je definiran kot najmanjši čas, ki mora preteči med dvema zaporednimabralnimaali pisalnima operacijama. Razmerje TM/TCPE se običajno giblje v področju od 1 do 10. ta razlika v hitrosti je eden od glavnih razlogov za to, da velika večina CPE vsebuje majhno število pomnilniških elementov, ki jim pravimo registri.

V naslovnem registru se nahaja naslov pomnilniškebesede s katero želi CPE komunicirati, v podatkovnem registru pa 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 PC, ki se mu včasih pravi tudi ukazni števec, vsebuje naslov naslednjega ukaza.

Pomembno vlogo ima tudi ukazni register IR (angl. instruction register). Vsak ukaz, ki ga CPE vzame iz pomnilnika, se shrani v IR. Običajno se v IR shrani samo tisti del ukaza, ki določa operacijo in ki mu pravimo operacijska koda. Nadzorna logika analizira operacijsko kodo in sproži zaporedje mikrooperacij, ki so potrebne za njegovo izvršitev.

Programski števec PC se samodejno poveča po prevzemu vsakega ukaza, ker se pač predpostavlja, da bodo ukazi normalno izvrševani v takem vrstnem redu, kot so shranjeni v pomnilniku. V primeru, da gre za skočni ukaz, se vsebina PC spremeni med izvršilnim ciklom.

Vse aritmetične in logične operacije se izvršujejo v aritmetično-logični enoti (ALE), ki je povezana z registri in deluje pod nadzorom krmilne enote. Običajno se v ALE ne opravljajo samo operacije, ki jih zahtevajo ukazi, temveč tudi tiste, ki so potrebne krmilni enoti za vodenje delovanja CPE (na primer povečevanje PC, računanje naslovov, itd.)

BLA - tukaj animacija.

V prvem koraku (fetch) pridobimo iz programa, pomnjenega v pomnilniku, naslednji ukaz. Ta je sestavljen iz številčne kode. Lokacijo ukaza v pomnilniku določa programski števec (PC, Program Counter).  Ta hrani številko, ki ustreza naslovu  tekoče pozicije v pomnilniku.  Z drugimi besedami: programski števec kaže sled v tekočem programu. Ko CPE pridobi ukaz, se programski števec poveča za dolžino ukaza (ta je lahko dolg tudi več bajtov) in tako kaže na naslednji ukaz.

Ukaz, ki ga je CPE poiskal v pomnilniku, uporabimo za to, da ugotovimo, kaj naj CPE vsploh naredi in kako naj to naredi. V koraku dekodiranja ukaz razstavimo na dele, ki imajo pomen za posamezne dele centralne procesne enote.  Tako del ukaza, ki mu pravimo operacijska koda, nakaže zahtevano operacijo (seštevanje, odštevanje, premik podatka ipd.). Preostali del ukaza pa pove, s katerimi podatki naj to naredimo oziroma kje se ti podatki nahajajo (lahko so v kakšnem registru, lahko pa jih še moramo „potegniti” iz pomnilnika, lahko pa so kar konstanta, ki je del samega ukaza.).

Ker so operandi lahko tudi v kakšnem registru ali v pomnilniku, moramo tako lokacijo primerno nasloviti.  To pa določa takoimenovani „način naslavljanja”, ki je prav tako zakodiran v ukazu.

Po koraku dekodiranja sledi korak izvedbe ukaza. Z aritmetično-logično enoto (ALE) se kot vhodi in izhodi povežejo tiste komponente (predvsem registri), ki so potrebne za izvedbo zahtevane operacije. Kot že samo ime pove, so to lahko različna seštevanja, odštevanja, množenja, deljenja, premiki med registri ali  logične operacije na posameznih bitih.  CPE si v posebnem registru zapomni tudi stanje nazadnje zahtevane operacije (ali je bil rezultat negativen ali nič, ali je prišlo do prekoračitve dolžine rezultata (overflow) ipd.  

Če je potrebno, sledi še en korak (writeback), ki  morebiti reztultat izvedene operacije prepiše nazaj na kakšno lokacijo v pomnilniku.

Po izvedbi ukaza se celotna zgodba ponovi z naslednjim ukazom. Pri tem programski števec (PC, program counter) „koraka” od ukaza do ukaza, pomnjenih kot program v pomnilniku.