CISC ja RISC arkkitehtuurit

Wikiopistosta

Johdanto[muokkaa]

RISC (Reduced Instruction Set Computer) ja CISC (Complex Instruction Set Computer) ovat erilaisia suoritinarkkitehtuurin ajattelumalleja. Nämä ajattelumallit sisältävät erilaiset lähestymistavat suoritinta ohjaavien käskyjen kokoamiseen. RISC:ssa käskyt pyritään pitämään yksinkertaisina, jotta ne olisivat nopeita suorittaa. CISC:ssa taas käskyt ovat rakenteeltaan monimutkaisempia ja ne voivat sisältää useampiakin alkeisoperaatioita per käsky.

Historia[muokkaa]

RISC -malli kehitettiin jo myöhään 60-luvulla IBM:n toimesta aikana, jolloin mikroprosessoreja ei vielä ollut. Ensimmäinen, jälkeenpäin RISC-prosessoriksi luokiteltu minitietokone – IBM 801, kehitettiin 70-luvun puolivälissä. Sen piti alun perin olla sisäinen osa CISC -mallia, mutta samalla se toi suuremman yleisön tietoisuuteen RISC:n. Tästä huolimatta RISC alkoi saada suurempaa kannatusta vasta myöhemmin 80-luvulla. Syynä oli CISC:n parempi soveltuvuus sen aikaisiin tarpeisiin.

1970 luvulla kehitetyt mikroprosessorit olivat käytössä yksinkertaisemmissa elektronisissa tuotteissa, kuten videopeleissä tai laskimissa. CISC soveltui paremmin näihin tehtäviin kattavan käskykantansa ansiosta. Lopulta myös PC:t omaksuivat CISC:iin pohjautuvat mikroprosessorit. Sen seurauksena valmistajat alkoivat kehittää mikroprosessoreita tehokkaan laskennan suuntaan jättäen yleiskäyttöisen suunnittelufilosofian taakseen.

RISC tuli takaisin kuvioihin 1980 luvulla, kun yliopistojen tutkimusohjelmia alettiin rahoittaa Yhdysvalloissa valtion toimesta (VLSI Project). 80-luvun puoliväliin mennessä RISC oli jo niin tunnettu, että valmistajat kuten HP alkoivat käyttää RISC:n variaatiota tietokoneissa.

Vuonna 1991 kehitettiin RISC-suoritinarkkitehtuuri PowerPC. PowerPC on viimeisiä RISC-arkkitehtuureja ja eroaa jossain määrin ensimmäisistä. Sitä kehittämässä olivat Apple, IBM ja Motorola. PowerPC:n arkkitehtuurin erikoisuuksia ovat käänteiset virtuaalimuistin sivutaulut, jotka perustuvat hajautustauluihin sekä mahdollisuus suorittimen tavujärjestyksen vaihtamiseen ohjelmallisesti. PowerPC on läheistä sukua IBM:n Unix-koneissa käytössä olevalle Power-arkkitehtuurille, jonka karsittu versio PowerPC alun perin oli.

Kehitys[muokkaa]

Vaikka RISC arkkitehtuurin ominaisuuksia oli jo vuoden 1946 Alan Turingin ACE tietokoneessa, itse RISC-termi keksittiin vasta 1980 luvulla David Patterssonin toimesta. Samalla RISC-konsepti muodostui ja sen kehitys ampaisi eteenpäin: nykyisen DARPA:n alla Berkeleyn ja Stanfordin yliopistot aloittivat RISC- ja MIPS-mallin mikroprosessorin tutkinnan. Berkeleyn projekti onnistui niin vakuuttavasti, että myöhemmin vastaavanlaiset mallit mukaan lukien MIPS tippuivat termin RISC alle. Suunnittelufilosofiana oli jättää vain käskyt, joita käytettiin usein ja käyttää vapautunutta tilaa hyödyksi nopeuttamaan piirin toimintaa. Ajan kuluessa RISC-prosessoreissa käskyjen määrä saavutti – ja jopa joissain tapauksissa ylitti – käskyjen määrän CISC-prosessoreissa. Kuitenkin itse käskyt RISC-prosessoreissa vaativat vähemmän muistisyklejä CISC:iin verrattuna.

Termi CISC keksittiin jälkikäteen vastakaikuna RISC:lle. Käytännössä RISC-arkkitehtuuri irtosi yleisestä mikroprosessoriarkkitehtuurista, jonka jälkeen muille malleille asetettiin yleisnimitys: CISC. Tästä johtuen CISC-termi pitää sisällään isomman kirjon prosessorimalleja verrattuna RISC-arkkitehtuuriin eikä joidenkin mallien luokitteluista edes olla yleisesti yhtä mieltä. CISC-arkkitehtuurin takana oli ajatus semanttisen kuilun sulkemisesta – konseptien tuominen korkeamman tason ohjelmointikielistä lähemmäs käskyjen tasoa. Kuitenkin yleinen ongelma suunnittelufilosofiassa oli arkkitehtuurin tehokkuus muissa kuin lippulaivaversiossa; monimutkaiset käskyt olivatkin hitaampia kuin vastaavat sarjat yksinkertaisia käskyjä.

RISC-arkkitehtuurista[muokkaa]

RICS-arkkitehtuurissa käytetään lyhyitä, yksinkertaisia ja määrämittaisia käskyjä, jotka voidaan toteuttaa yhden kellosyklin aikana. Lisäksi käytettävissä olevien käskyjen määrä on minimoitu. Tämä mahdollistaa sen, että prosessorissa toteutetut piirit ovat rakenteeltaan yksinkertaisempia ja transistoreja on vähemmän, jolloin fyysistä tilaa kuluu vähemmän. Vapautuva tila mahdollistaa rekisterien määrän kasvattamisen, minkä seurauksena RISC-prosessorissa niitä onkin huomattavasti enemmän kuin CISC-prosessorissa. Prosessorin yksikertaisempi rakenne myös tekee siitä nopeamman, vähentää sen energiankulutusta ja laskee valmistuskustannuksia.

RISC-arkkitehtuurissa tiedon käsittely tapahtuu pääosin näissä rekistereissä, jotka ovat hyvin nopeaa muistia. Kommunikaatio prosessorin ja keskusmuistin välillä on rekisterien suuren määrän takia vähäisempää eli tietoa ei tarvitse ladata/varastoida niin usein. Enemmistö näistä rekistereistä on niin sanottuja yleisrekistereitä, mikä mahdollistaa niiden monipuolisen käytön. Koska käskyt ovat lyhyitä ja kestoltaan määrimittaisia sekä koska käytössä on paljon yleisrekistereitä, suoritettavien tehtävien liukuhihnoittaminen on tehokasta. Ideana on rekistereiden käyttön optimointi: kun tieto on käytetty, rekisteri vapautuu seuraavan tiedon käyttöön. Rekisterien lukumäärä antaa mahdollisuuden tuoda paljon tietoa valmiiksi keskusmuistista, lähelle aritmeettis-loogista yksikköä, mikä nopeuttaa tietokoneen toimintaa. Toisaalta RISC- arkkitehtuurilla toteutettujen ohjelmien varastointi keskusmuistiin vaati enemmän tilaa, koska konekielisiä käskyjä tarvitaan huomattavasti enemmän kuin CISC-arkkitehtuurissa. RISC on sekä haaste että mahdollisuus kääntäjälle ja ohjelman tekijälle, koska rekisterien käytön optimointi mahdollistaa mahdollisimman nopeiden ohjelmakoodien suunnittelun. Ohjelman teho on siis paljolti kiinni myös ohjelmoijasta.

Molemmissa arkkitehtuureissa on omat hyvät sekä huonot puolensa. Niiden paremmuusjärjestykseen laittaminen ei ole tarkoituksenmukaista; toisenlainen arkkitehtuuri on sopivampi toisenlaiseen tehtävään. Ominaisuuksiensa puolesta RISC-arkkitehtuuria käytetään paljon siirrettävissä laitteissa[1][2][3][4][5][6].

RISC-arkkitehtuurin ominaisuuksia[muokkaa]

RISC-arkkitehtuuri perustuu ajatukseen suorittimen tehokkuuden saavuttamisesta yksinkertaisilla ja näin nopeasti vakioajassa suoritettavilla konekielen käskyillä. Tyypillisesti näitä käskyjä on alle 100, mutta nykyään RISC-arkkitehtuureissakin on jo satoja konekielen käskyjä. RISC-mallissa konekielen käskyn pituus on sama kaikissa käskyissä (tyypillisesti 4 tavua)[7].

Jotkin prosessorit tukevat monia erityyppisiä osoitusmuotoja. RISC:n käyttämät osoitusmuodot ovat kuitenkin yksinkertaisia eivätkä käytä muistiviittauksia. RISC käyttää suurta määrää rekistereitä käskyjen suorittamiseen, mikä vapauttaa muistin muihin tarkoituksiin[8]. RISC-arkkitehtuurissa vain erityiset load- ja store-käskyt siirtävät tietoa keskusmuistin ja suorittimen rekistereiden välillä. Lukuun ottamatta load- ja store-käskyjä käskyillä on tyypillisesti vain kaksi osoitusmuotoa: rekisteriosoitus ja välitön osoitusmuoto.

Joissakin RISC-suorittimissa ei ole komentoja pinon käsittelyyn, vaan toiminto jätetään toteutettavaksi ohjelmallisesti. Monet muutkin CISC-suorittimien toiminnot voidaan jakaa pienemmiksi operaatioiksi, joiden käyttö jää ohjelman vastuulle[9].

CISC-arkkitehtuurista[muokkaa]

CISC-arkkitehtuurin monimutkaisuuden vuoksi käskyt muutetaan mikrokielelle.

CISC-arkkitehtuuri on monella tavalla RISC:n vastakohta. Sen perimmäisenä ideana on saada suoritettua ohjelmat mahdollisimman pienellä määrällä käskyjä[10]. Siinä on todella kattava ja monipuolinen käskykanta, jonka ansiosta monimutkaisiakin asioita voidaan tehdä yhdellä tai pienellä määrällä käskyjä. Tämän suurimpana etuna ohjelman suoritusnopeuden kannalta on, että prosessorin ei tarvitse hakea tietoa muistista usein, toisin kuin RISC-prosessoreiden. Monipuolisen käskykannan ansiosta tarvitaan myös vähemmän konekielisiä käskyjä, jonka ansiosta ohjelmien koko pysyy pienenä. Pienimpien ohjelmien etuna on, että ne voidaan tallentaa pieneen määrään muistia, mikä oli ennen todella tärkeää muistikapasiteetin pienen koon takia. Dataa ei myöskään tarvitse välillä sijoittaa rekistereihin, vaan prosessori voi hakea ja tallentaa dataa suoraan muistiin. [11]

Koska CISC-arkkitehtuuria käyttävät prosessorien käskyt voivat olla pitkiä ja monimutkaisia, niiden suorittamista varten tarvitaan yleensä mikro-ohjelma. Mikro-ohjelman mikrokoodi ohjaa konekielen käskyjen suoritusta prosessorissa[12]. CISC-arkkitehtuurin käskyjen pituudesta kertoo se, että yhden käskyn suorittaminen kestää tyypillisesti 2-15 kellosykliä, kun taas RISC-arkkitehtuurin käskyt pyritään suorittamaan yhdessä syklissä. CISC-prosessoria voidaan kehittää helposti laajentamalla käskykantaa, jota mikro-ohjelma voi toteuttaa. Käskyistä suurin osa on kuitenkin erikoiskäskyjä, joita käytetään vain harvoin, ja käskykannan laajentaminen johtaa prosessorin rakenteelliseen monimutkaistumiseen.

CISC:n monimutkaisten käskyjen hyödyntäminen korkean tason ohjelmointikielessä tehokkaasti on mahdollista, jos ohjelmointikieli osaa hyödyntää niitä. Usein näin ei kuitenkaan ole ja ohjelmointikielen kääntäjien rajoittuneisuuden vuoksi käskyjä ei saada käytettyä tehokkaasti. Monimutkaisten käskyjen suorittaminen vie myös todellisuudessa enemmän aikaa kuin useiden yksinkertaisten yhdessä kellosyklissä suoritettavien RISC-prosessoreiden käskyjen suorittaminen.[13]

Nykytilanne ja tulevaisuus[muokkaa]

Nykyään RISC-arkkitehtuuria käytetään etenkin mobiililaitteissa, kuten tableteissa ja puhelimissa, mutta myös tehokkaissa supertietokoneissa. Esimerkiksi MIPS- prosessoreja käytetään nykyisin embedded-järjestelmissä ja reitittimissä.[14]

Viimeisinä vuosina on myös ilmaantunut haluja tuoda avoin standardi prosessorimarkkinoille[15][16]. Tämän toivotaan tapahtuvan RISC-V:n toimesta, joka on tehnyt käskykannastaan avointa lähdekoodia. Suljetussa prosessorivalmistusekosysteemissä yhden myyjän päätös rajoittaa saatavuutta tai korottaa hintoja on aina riski, jota ei avoimessa ympäristössä olisi[17]. Tätä on hidastamassa vähäinen tuki, koska RISC-V on verrannollisen uusi projekti. Projektilla on kuitenkin jonkin verran markkinallista yhteistyötä ja tukea, esimerkiksi Nvidian, Andes Technologyn ja SiFiven puolesta[18], mm. silikonien tarjonnalla ja käyttöönotosta kiinnostuneisuudella. Myös IBM yrittää rohkaista Power-arkkitehtuurin käyttöä datakeskuksissa. Power 9 toimii yhtenä kilpailijana RISC-V – arkkitehtuurin kanssa. RISC-V:stä tekee poikkeuksellisen sen malli olla modulaarinen ja ominaisuus käyttää muuttuvan pituista käskynkoodausjärjestelmää[19], joka tekee uusien ohjeiden lisäämisestä helpompaa.

RISC-arkkitehtuuri hyötyi aiemmin sirunsisäisestä välimuistista, mutta nykyään kasvanut transistorien tiheys on mahdollistanut myös CISC-arkkitehtuurin käyttävän välimuistia, jota se on pystynyt hyödyntämään RISCiä tehokkaammin koodinsa tiheyden ansiosta[20]. CISC-arkkitehtuurin puolella kehitystä on tapahtunut Imsystechin toimesta ISA:n (Industry Standard Architecture) kehityksen puolella. Tämän avulla voidaan hyödyntää modernimpia kääntäjiä, joita ei ole rajoittamassa yhteensopivuus legacy-koodin kanssa, esimerkiksi pohjaamalla LLVM:ään C-koodissa, ja käyttämällä monipuolisempaa käskykantaa. Näiden avulla CISC-pohjaiset ratkaisut voivat tarjota ARM-pohjaisia ratkaisuja tehokkaampaa laskentatehoa pienemmällä energiankulutuksella.

Toisaalta, nykyään on hankalaa tehdä selvää rajanvetoa RISC ja CISC – arkkitehtuurien välillä[21]. Sekä RISC:in että CISC:in tekemät kehitykset ovat saaneet kummankin arkkitehtuurin itsensä muistuttamaan yhä enemmän toistaan[22]. Esimerkiksi CISC-prosessorit voivat nopeampien kellotaajuuksien ansiosta suorittaa useita komentoja kerralla ja hyödyntää kanavointia (pipelining), ja RISC-prosessorit voivat tiheämpään mahdutettujen transistorien ansiosta sisällyttää monimutkaisempia, CISC-tyylisiä komentoja. Tästä syystä arkkitehtuurien erot ovat nykyisin enemmänkin valmistuksessa huomioitavia rakentamisen ja tekniikan huolenaiheita.

Lähdeluettelo[muokkaa]

  1. Lovelace Oulu, Suoritinarkkitehtuureista: https://lovelace.oulu.fi/tietokonej%C3%A4rjestelm%C3%A4t/tietokonej%C3%A4rjestelm%C3%A4t-syksy-2017/cisc-vs-risc/
  2. Study, RISC vs. CISC: Characteristics, Pros & Cons, Instructor: Lyna Griffin: https://study.com/academy/lesson/risc-vs-cisc-characteristics-pros-cons.html
  3. Wikipedia, RISC: https://fi.wikipedia.org/wiki/RISC
  4. Wikipedia, MIPS architecture: https://en.wikipedia.org/wiki/MIPS_architecture
  5. Newelectronics, Back to the future for RISC: http://www.newelectronics.co.uk/electronics-technology/back-to-the-future-for-risc/146172/
  6. Hackernoon, Why we need RISC-V: https://hackernoon.com/why-we-need-risc-v-f94e3929891b
  7. InformIT, RISC vs CISC: http://www.informit.com/articles/article.aspx?p=663085&seqNum=3
  8. Wikipedia, CISC: https://en.wikipedia.org/wiki/Complex_instruction_set_computer
  9. Stanford University Computer Science, RISC architecture recent developments: https://cs.stanford.edu/people/eroberts/courses/soco/projects/risc/developments/index.html
  10. EETimes, New CISC Architecture Takes on RISC By Bernard Cole: https://www.eetimes.com/document.asp?doc_id=1327337&page_number=2
  11. Imsystech projektisivu: http://www.imsystech.com
  12. EETimes, RISC vs CISC: What's the Difference? By Bernard Cole: https://www.eetimes.com/author.asp?section_id=36&doc_id=1327016
  13. RISC-V projektisivu: https://riscv.org/
  14. Microcontrollertips: https://www.microcontrollertips.com/
  15. Medium, A Beginner’s Guide to RISC and CISC Architectures, by Soham Chatterjee: https://medium.com/@csoham358/a-beginners-guide-to-risc-and-cisc-architectures-fc9af424db3b
  16. Lovelace Oulu: https://lovelace.oulu.fi/
  17. Edgefxkits blog, What is RISC and CISC Architecture with Advantages and Disadvantages, by Tarun Agarwal: https://www.edgefxkits.com/blog/what-is-risc-and-cisc-architecture/
  18. Stanford University Computer Science, RISC vs CISC: https://cs.stanford.edu/people/eroberts/courses/soco/projects/risc/risccisc/
  19. Elprocus, What is The Difference Between RISC and CISC Architecture: https://www.elprocus.com/difference-between-risc-and-cisc-architecture/
  20. Technopedia, What is microcode?: https://www.techopedia.com/definition/8332/microcode
  21. Wikipedia, Microcode: https://en.wikipedia.org/wiki/Microcode
  22. Elprocus, Understanding about RISC and CISC Architectures: https://www.elprocus.com/what-is-risc-and-cisc-architecture-and-their-workings/
  23. Wikipedia, Reduced instruction set computer: http://en.wikipedia.org/wiki/Reduced_instruction_set_computer