RISC

Wikipediasta
Siirry navigaatioon Siirry hakuun

RISC (engl. Reduced Instruction Set Computer) on tietokoneiden suoritinarkkitehtuurien suunnittelufilosofia, jossa konekielen käskyt on pyritty pitämään yksinkertaisina ja nopeasti vakioajassa suoritettavina. Aiemmin suosittu lähestymistapa oli CISC, jossa pyritään tekemään käskykannasta mahdollisimman laaja ja monipuolinen ja sitä kautta tehokas.

RISC:stä tuli vallitseva suoritinarkkitehtuurien suunnittelufilosofia 1980-luvun puolivälistä alkaen. Valtaosa tämän jälkeen kehitetyistä uusista arkkitehtuureista on RISC-tyyppisiä, esimerkkeinä Alpha, ARM, MIPS, PA-RISC, PowerPC ja Power-arkkitehtuuri, SPARC sekä RISC-V. Nykyisin käskykannan luonne ei enää ole niin vahvasti sidoksissa suorittimen sisäiseen toimintaan kuin aiemmin, minkä johdosta tiukka jaottelu RISC- ja CISC-arkkitehtuureihin ei ole mahdollista tai mielekästä.

Moderneissa CISC-suorittimissa käskyt pilkotaan RISC-tyylisiin mikro-operaatioihin suuremman suorituskyvyn ja hyötysuhteen vuoksi.[1] Laajasti käytetty ARM-arkkitehtuuri perustuu RISC-ajatteluun.[2]

RISC ja CISC arkkitehtuurien lisäksi on VLIW-lähestymistapa.

RISC-ajatteluun siirtyminen[muokkaa | muokkaa wikitekstiä]

Tietokoneiden alkuaikoina kääntäjät eivät pystyneet tuottamaan kovin tehokasta konekoodia, joten ohjelmoijat käyttivät tehokkuussyistä paljon symbolista konekieltä. Lisäksi keskusmuistit olivat hyvin pieniä, joten muistin säästämiseksi yhdellä käskyllä piti saada aikaan mahdollisimman paljon asioita.

Aina 1970-luvulle asti tietokoneiden käskykantojen suunnittelussa otettiinkin erityisesti huomioon konekielitason ohjelmoijat ja ohjelmakoodin tiiviys. Valmiita käskyjä kehitettiin mitä erikoisimpiin tarkoituksiin, ja käskykanta toimikin esimerkiksi IBM S/360:ssa eräänlaisena standardikirjastona. Lisäksi assembly-ohjelmoijille tarjottiin runsas valikoima monipuolisia muistinkäsittelyn osoitusmuotoja. Tästä lähestymistavasta alettiin myöhemmin käyttää nimitystä CISC vastakohtana RISC-lähestymistavalle.

RISC-filosofian mukaisia koneita olivat periaatteessa jo eräät Seymour Crayn kehittämät supertietokoneet kuten 1960-luvun puolivälissä suunniteltu CDC-6600. Nykyisin tunnettu RISC-ajattelu sai kuitenkin alkunsa IBM:n tutkimuksista 1970-luvun loppupuolella, jolloin havaittiin, että monien tietokoneiden käskykannat olivat tarpeettoman laajoja eikä ohjelmissa käytetty hyväksi kuin pientä osaa nopeuttaviksi tarkoitetuista ominaisuuksista. Joitain konekäskyjä kääntäjät eivät pystyneet käyttämään lainkaan, jolloin niiden käyttö jäi erittäin vähäiseksi. IBM kehitti IBM 801 minitietokoneen, joka vaikutti IBM ROMP -suorittimen kehitykseen.

Samaan aikaan IBM:n projektin kanssa oli kaksi muuta projektia: Berkeleyssä ja Stanfordissa.[2] Berkeley RISC -projekti johti SPARC-suorittimeen ja Stanford MIPS -projekti MIPS-suorittimeen.[3][4][5]

Käskyjen yksinkertaistaminen teki niistä yhdessä kellojaksossa suoritettavia ja peräkkäisten käskyjen yhtäaikainen suorittaminen liukuhihnalla tuli mahdolliseksi.[2] Monissa CISC-suorittimissa oli jonkinlaisia osittaisia liukuhihnaratkaisuja, mutta ne olivat ongelmallisia, koska CISC-käskyt vaihtelivat huomattavasti monimutkaisuudeltaan ja suoritusajaltaan. Syntyi tarve käskykannoille, joissa jokaisella käskyllä olisi samat yksinkertaiset suoritusvaiheet. Lisäksi pyrittiin välttämään tiedonsiirtoa muistiin ja muistista, mikä loi tarpeen perinteistä suuremmalle määrälle rekistereitä.

Myös superskalaarinen rinnakkain suorittaminen yleistyi RISC-suorittimien myötä.[6]

RISC-filosofiassa ajatellaan myös kääntäjäkeskeisemmin kuin CISC:n tapauksessa. Puhtaan assemblyn käyttö on vähentynyt jatkuvasti, ja assembly-ohjelmointia helpottavat ratkaisut (kuten monimutkaiset osoitusmuodot) kävivät aina vain tarpeettomammiksi. RISC-lyhennettä on myös leikkimielisesti avattu muotoon "Relegate Important Stuff to the Compiler", eli "jätä tärkeät asiat kääntäjälle".

RISC-ratkaisulle on tyypillistä rajattu käskykanta jossa on yksinkertaisia käskyjä, suuri määrä rekistereitä, konekäskyt ovat tietyn mittaisia ja yhden muotoisia, sekä load-store-arkkitehtuuri.[7] Load-store käskykanta käyttää erillisiä käskyjä muistin käsittelyyn kun taas register-memory -arkkitehtuurissa se voi olla osana muuta käskyä.[8]

Teknisiä eroja[muokkaa | muokkaa wikitekstiä]

Eräissä RISC-suorittimissa kuten MIPS ei ole komentoja pinon käsittelyyn, vaan toiminto jätetään ohjelmallisesti toteutettavaksi.[9] Samoin useat muut CISC-suorittimien toiminnot voidaan jakaa pienemmiksi operaatioiksi, joiden käyttö jää ohjelman vastuulle.

Käyttökohteet[muokkaa | muokkaa wikitekstiä]

RISC-suorittimia käytetään lähes kaikissa muissa uusissa tietoteknisissä laitteissa paitsi tavallisissa IBM PC -arkkitehtuuriin pohjautuvissa tietokoneissa, joiden suorittimet perustuvat edelleenkin 1970-luvulla kehitettyyn CISC-tyyppiseen x86-arkkitehtuuriin.

Applen Macintosh-tietokoneet siirtyivät Motorola 68000 -sarjan suorittimista RISC-tyyppisiin PowerPC-suorittimiin vuonna 1994 ja myöhemmin x86-suorittimiin vuonna 2006. Vuonna 2020 Apple ilmoitti siirtyvänsä ARM-suorittimiin Macintosh-tietokoneissa.

Katso myös[muokkaa | muokkaa wikitekstiä]

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. Security Analysis of x86 Processor Microcode dcddcc.com. 11.12.2014. Viitattu 26.9.2020. (englanniksi) 
  2. a b c RISC Architecture ibm.com. Viitattu 18.7.2020. (englanniksi)
  3. RISC Refined: Berkeley RISC, Stanford MIPS . . cpushack.com. Viitattu 18.7.2020. (englanniksi) 
  4. Part II: SPARC, an extreme windowed RISC (1987) . . cpushack.com. Viitattu 18.7.2020. (englanniksi)
  5. Part V: MIPS R2000, the other approach. (June 1986) . . . . . . . . . . . cpushack.com. Viitattu 18.7.2020. (englanniksi) 
  6. Chapter 7 Superscalar Processors euler.mat.uson.mx. Viitattu 21.10.2019. (englanniksi)
  7. Lecture 2 RISC Architecture (PDF) philadelphia.edu.jo. Viitattu 13.10.2021. (englanniksi)
  8. Hennessy, John L. & Patterson, David A.: Computer Architecture: A Quantitative Approach, s. 11. Fifth Edition. Morgan Kaufmann, 2012. ISBN 978-0-12-383872-8.
  9. Understanding the Stack cs.umd.edu. Viitattu 29.9.2017. (englanniksi)

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]