Arhitekture CISC in RISC

Kaj se bomo v tem poglavju naučili?

 

Spoznali bomo dve osnovni arhitekturi, ki temeljita na preprostosti  ali kompleksnosti strojnih računalniških ukazov. Spoznali bomo njune prednosti in slabosti. Ugotovili bomo, katero od teh zasnov uporabljajo najbolj popularni sodobni računalniki.

Najprej nekaj pojmov

S stališča razvoja oziroma načrtovanja arhitektur procesorjev moramo upoštevati, da vsak procesor vsebuje krmilnik (Controller) in podatkovno pot (Datapath). Kot podatkovno pot razumemo množico pomnilnih elementov (registre, zbirke registrov, pomnilnike), množico funkcijskih enot (aritmetično logične enote, pomikanje, posebne funkcije) in množico vodil. Vodila povezujejo vse te komponente. Vsaka od teh komponent lahko za svoje izvajanje potrebuje enega ali več urinih ciklov. Vsaka komponente je lahko z drugo povezana v cevovod (pipeline). Krmilnik določa stanje procesorja in sproža krmilne signale v  to podatkovno pot.

Poznamo več modelov arhitekture procesorjev, ki jih delimo predvsem na kompleksnost ukazov (instrukcij).  V nadaljevanju bomo podali značilnosti teh modelov v skladu z njihovim zgodovinskim razvojem.

Računalnik z naborom kompleksnih ukazov (CISC)

 

Računalniki z arhitekturo CISC so bili popularni v letih 1970. Ker je bil programski pomnilnik (program memory, PM)  počasen, so skušali načrtovalci izboljšati hitrost z uvedbo kompleksnih ukazov. Vsaka kompleksna instrukcija je za svojo izvedbo terjala več urinih ciklov.  krmilne besede za nadzor podatkovne poti so bile shranjene v precej hitrejšem mikro programskem pomnilniku  (mPM). Koncept mikroprogramiranja je omogočal uvedbo in izvajanje kakršnegakoli nabora ukazov in tvorbo specializiranih ukazov za pospeševanje izvajanja.

Računalnik z arhitekturo CISC je zato računalnik, pri katerem se v vsakem od ukazov izvede več nizko nivojskih operacij, kot so na primer nalaganje s pomnilnika, neka aritmetična operacija in zapis rezultata nazaj v pomnilnik. Izraz CISC je nasprotje izrazu RISC (reduced instruction set computer).  

 

Pred pojavom procesorjev RISC so skušali zagotoviti podporo visokonivojskim programskim jezikom z uvedbo “visoko nivojskih” ukazov, ki bi omogočali dostop do podatkovnih struktur oziroma polj kar z eno samo instrukcijo. Posledično so bili programi za take računalnike krajši. Včasih, ko so bili pomnilniki precej manjši od današnjih, je bilo to pomembno.  Tudi klicev pomnilnika je bilo manj, kar naj bi omogočalo hitrejše izvajanje.  Pomnilniki nekdanjih računalnikov niso bili le manjši, tudi počasnejši so bili.

Slabost nekdanjih procesorjev je bilo tudi relativno majhno število registrov v CPE. To je pomenilo, da je bilo potrebno bolj pogosto shranjevanje njihovih vrednosti v pomnilnik. In to je spet počasna operacija. To je bil dodaten razlog, da so od posameznega ukaza zahtevali čimveč (mikro) operacij. Da bi bili ukazi bolj učinkoviti, so taki procesorji poznali tudi veliko različnih načinov naslavljanja pomnilnika.

Izkazalo pa se je, da procesorji s takimi, kompleksnimi ukazi niso nujno dosegali večjo hitrost računalnikov.  Bolj kompleksni ukazi so namreč terjali bolj kompleksno dekodiranje ukazov. Nasprotno, Izvajanje takih ukazov je bilo celo bolj počasno od ekvivalentnega izvajanja zaporedja bolj preprostih ukazov. Izvedba posameznega kompleksnega ukaza namreč  potrebuje več  taktov. Poleg tega so bili procesorji, ki so podpirali arhitekturo CISC, bolj kompleksni.

Primeri procesorjev, skladnih z arhitekturo CISC, so: System/360, VAX, PDP-11, Motorola 68000 in mikroprocesorji AMD ter Intel x86.

 

Računalnik z naborom omejenih ukazov (RISC)

 

Računalniki z arhitekturo RISC so postali popularni v poznih letih 1980  tako, da so odstranili kompleksne ukaze in  mikroprogramski pomnilnik. Cilj arhitekture RISC je, da bi bili vsi ukazi tako enostavni, da za vsakega potrebujemo le en takt. Tako se cevovod komponent v podatkovni poti (Datapath pipeline) izvede v 4-8 korakih.

Mikroprogramski pomnilnik so nadomestili s fazo dekodiranja, ki ji sledi branju ukaza iz  programskega pomnilnika (PM). Ker so ukazi bolj preprosti, potrebuje RISC približno dve instrukciji za eno kompleksno instrukcijo. Tako mora biti programski pomnilnik približno podvojen. Vendar pa se cevovod "Iskanje ukaza-dekodiranje-izvedba" (fetch-decode-execute) izvaja nekajkrat hitreje.

Procesorji iz te družine so: Alpha, ARM, AVR, MIPS, PA-RISC, Power Architecture in SPARC.

Ker so ukazi bolj preprosti, je bolj preprost tudi sam mikroprocesor, ki potrebuje manjšo množico tranzistorjev. Kar smo tako pridobili, lahko izkoristimo drugače in uvedemo daljše dolžine registrov z večjim številom bitov. 

Izraz RISC pogosto napačno razumemo in mislimo, da imamo za procesor na voljo manjšo – reducirano množico ukazov.  V resnici je ta množica še vedno obsežna. Resnična razlika v filozofiji RISC in CISC je v tem, da skušamo čimveč delati v registrih CPE. Poleg ukazov za spremembo vsebine v danem registru potrebujemo še  relativno preprosta ukaza za nalaganje vsebine registra (load) in njeno shranjevanje nazaj v pomnilnik (store) . Namesto posameznih kompleksnih ukazov uporabljamo zaporedja preprostih.  Seveda pa se v tem skriva tudi slabost arhitekture RISC: potrebno število dostopov do pomnilnika postane s tem večje.

 

Danes se oba pristopa, CISC in RISC zgledujeta med seboj in se približujeta. Tako imajo tudi popularni procesorji X86, ki so po svoji zasnovi tipa CISC, čedalje več enostavnih ukazov, kakor jih srečamo v arhitekturah RISC.