Reduced instruction set computer (RISC) er en typemikroprosessor som i motsetning tilCISC-prosessorer kan utføre relativt få instruksjoner. Til gjengjeld tar hver instruksjon kort tid å utføre.
Komplekse beregninger krever gjerne at flere instruksjoner kjøres etter hverandre på en RISC-prosessor, mens en CISC-prosessor kunne gjort en tilsvarende beregning i ett trinn.
Eksempler på RISC-prosessorfamilier erARM,AVR,PowerPC ogSPARC.
Da de tre første RISC-prosessorene ble lansert fra1980 til1983, var de konstruert etter andre prinsipper enn datidens CISC-prosessorer.
Senere CISC-arkitekturer adopterte deler av RISC-filosofien, ikke minst bruken avpipelining. Innenforx86-arkitekturen erNexGen Nx586,AMD K5,Pentium Pro, og også senere prosessorer, i realiteten RISC-prosessorer som emulerer CISC instruksjoner. Slike hybrider er noen ganger også blitt omtalt som «CRISC».
Av praktiske årsaker er det derfor enklest å forklare RISC-filosofien ved å sammenligne den med rene CISC-arkitekturer.
ForkortelsenRISC betyr «en datamaskin med et redusert instruksjons-sett»(Reduced Instruction Set Computing). Ironisk nok ble denne datamaskin-arkitekturen oppkalt etter noe som slett ikke var dens primære kjennetegn. Færre instruksjoner var bare en konsekvens av RISC-filosofien.
Grensen mellommaskinvare ogprogramvare er flytende, og mange oppgaver som utføres av fysiske gjenstander kan også utføres av programvare. Etmodem kan f.eks. både være en fysisk gjenstand og et dataprogram.
Enklere programvare | CISC | Kompleks maskinvare |
| Kompleks programvare | RISC | Enklere maskinvare |
I de førstehøynivåspråkene var det mye arbeid forbundet med å lage enkompilator som sørget for å oversette disse tilassembler og igjen tilmaskinkode.IBM benyttet f.eks. 18 år på å utvikle høynivåspråketFortran. Istedenfor å tilpasse høynivåspråkene etter datamaskinene, valgte derfor industrien å tilpasse datamaskinene etter høynivåspråkene.
Datamaskiner ble stadig mer komplekse (deriblant ved å tilføye stadig flere instruksjoner) for å forenkle realiseringen av høynivåspråk. Det vardenne utvidelsen av antall instruksjoner som skapte benevnelsene CISC og RISC.
| År | Arkitektur | Antall instruksjoner | Mikroprogrammet | Instruksjones lengde |
|---|
| 1973 | IBM 370/168 | 208 | 54 byte | 2–6 byte |
| 1978 | VAX 11/780 | 303 | 61 byte | 2–57 byte |
| 1978 | Xerox Dorado | 270 | 17 byte | 1–3 byte |
| 1980 | IBM 801 | 120 | 0 byte | 4 byte |
| 1981 | Berkeley RISC I | 31 | 0 byte | 4 byte |
| 1983 | Stanford MIPS | 55 | 0 byte | 4 byte |
De tre øverste datamaskinene i tabellen over er CISC-arkitekturer, mens de tre nederste er RISC-prosessorene. Tabellen viser hvordan RISC-prosessorene har færre instruksjoner.
Et kjennetegn ved RISC-arkitekturen er fraværet av «mikroprogrammet». Et mikroprogram er en kommandotolk som oversetter mikroprosessorens programmer (mikrokode) til kjørbar kode under kjøring. Dette er nødvendigvis tregere enn å utføre et program direkte, som på forhånd er oversatt til kjørbar kode.
Det første «mikroprogrammet» så dagens lys den7. april1964, daIBM lansertestormaskinenIBM System/360. Denne arkitekturen introduserte et komplekst sett med instruksjoner, som etterhvert fikk navnet «maskinkode». Tolken var lagret i datamaskinensROM (leseminne) og kunne ikke modifiseres.
I løpet av noen få år formelig eksploderte mikrokoden i kompleksitet. Endogminidatamaskiner som benyttet mikroprosessorenVAX, hadde mer enn 200 instruksjoner og 10-15 forskjellige adresseringsmodi som ble oversatt under kjøring.
Utviklingen ble påskyndet avhøynivåspråk, som gjorde det enklere å skrive programmer enn i tradisjonellassembler. Høynivåspråk innførte bl.a. en syntaks med ord somif,while ogcase. Slike ord manglet direkte paralleller i assembler, og ble oversatt avkompilatorer til komplekse sammensetninger av assembler-syntaks som JUMP, ADD og MOVE. For å forenkle skrivingen av kompilatorer, ble mikrokoden utvidet med stadig nye instruksjoner.
Stadig flere oppgaver ble påført kommandotolken: Nye adresseringsmodi for å håndtere tabeller, komplekse datastrukturer og håndteringen av prosedyre-kall, deriblant overføring av parametre, lagring av registrenes innhold og endringer avstakkens innhold, ble utført av tolken. Etterhvert var tolkens kompleksitet blitt en flaskehals for mikroprosessorenes ytelse.
Gjennombruddet som gjorde RISC-prosessorer mulige, var fremveksten avoptimaliserte kompilatorer. Istedenfor å oversette mikrokode under kjøring ved hjelp av en kommandotolk, ble den oversatt direkte av kompilatorene. Ved å eliminere behovet for den mellomliggende tolken, kunne også ytelsen kraftig forbedres.
RISC-arkitekturer kommuniserer svært enkelt med datamaskinenshovedminne. Det benyttes bare to metoder – «hent» og «lagre», for å flytte data mellom mikroprosessoren og hovedminnet.
Imikroprosessoren SPARC ble dette implementert med følgende assembler-instruksjoner:
| Instruksjon | Forklaring |
|---|
| LDSB | Hent byte (8 bit) med fortegn | | LDSH | Hent halvt ord (16 bit) med fortegn | | LDUB | Hent byte (8 bit) uten fortegn | | LDUH | Hent halvt ord (16 bit) uten fortegn | | LD | Hent ord (32 bit) | | LDD | Hent dobbelt ord (64 bit) |
| | | Instruksjon | Forklaring |
|---|
| STB | Lagre byte (8 bit) | | STH | Lagre halvt ord (16 bit) | | ST | Lagre ord (32 bit) | | STD | Lagre dobbelt ord (64 bit) |
|
I motsetning til dette hadde CISC-prosessorer – eksempelvisIntel 80386,Motorola 68000 ogNational Semiconductor 32000, svært komplekse metoder til å flytte data fra og til minnet. CISC-prosessorenes adresseringsmodi innbefattet direkte adressering, register-adressering, direkteoperand-adressering, indeksert adressering og indirekte adressering. I tillegg til indirekte adressering, hadde f.eks. Intel 80386 også indirekte registeradressering med avvik, indirekte adressering med base- og indeksregister, og indirekte adressering med base-, indeksregister og konstant.
Alle disse adresseringsmodiene var også blitt skapt for å gjøre det enklere å lage kompilatorer.
I CISC-prosesser utføres ulike instruksjoner med ulike antall klokkepulser. En filosofi bak RISC er å utføre én instruksjon per klokkepuls, slik at f.eks. måle-enhetenMIPS er identisk med prosessorens klokkehastighet iMHz.
For å oppnå målsetningen om én utført instruksjon per klokkepuls, må flere instruksjoner bearbeides samtidig. I en fire-trinnspipe blir én instruksjon hentet frahurtigminnet, mens en annen blir dekodet, en tredje utført, mens resultatet av en fjerde skrevet til minnet:
| Syklus | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|
| Instruksjon 1 | HENT | DEKOD | UTFØR | SKRIV | |
| Instruksjon 2 | | HENT | DEKOD | UTFØR | SKRIV | |
| Instruksjon 3 | | HENT | DEKOD | UTFØR | SKRIV | |
| Instruksjon 4 | | HENT | DEKOD | UTFØR | SKRIV |
Denne idéen ble etterhvert også tatt i bruk av CISC-prosessorer, og er derfor ikke lenger noe kjennetegn på RISC. I tillegg er det idag vanlig medpipelines der mer enn fire instruksjoner bearbeides samtidig. I denne sammenheng omtales prinsippet i sammenheng med RISC-filosofien.
For å gjennomførepipelining er det nødvendig at hver instruksjon har samme størrelse i bytes.Intel 80386 utførte f.eks. ogsåpipelining, men i et begrenset omfang, fordi instruksjoner kunne variere i størrelse fra mellom 1 og 17 bytes.
I CISC-arkitekturer er mikroprosessorens interne registrene reserverte til spesielle formål. RISC innførte prinsippet om generelle interne registre, for å redusere trafikken mellom mikroprosessoren og hovedminnet til et minimum.
Den første moderne RISC-maskinen var minidatamaskinenIBM 801. Den ble bygd i1975, men ingen offentlig informasjon om dens eksistens ble tilgjengelig før i1982.[1]
IBM 810 ble etterfulgt av RISC-prosessorenROMP, som dannet basis forIBM 6150 RT frem til mai1991. Da ble den erstattet avPowerPC.
Arbeidet med en annen RISC-prosessor startet i1980 hos en gruppe vedBerkeley,University of California, under navnet RISC I, som etter kort tid ble etterfulgt av RISC II.[2][3] RISC I og RISC II var inspirasjonskilden tilSPARC.
I1981 utviklet og fabrikkerte John Hennessy vedStanford University en tredje RISC-arkitektur, som han kalte MIPS. Brikken førte senere til dannelsen avMIPS Computer Systems, og mikroprosessorfamilienMIPS.[4]
- ^David A. Patterson og Carlo H. Sequin:A VLSI RISC, IEEE Computer Magazine, IEEE Computer Society Press, Los Alamitos, California, USA, side 8-21, september1982, ISSN:0018-9162
- ^David. A. Patterson, Carlo. H. Sequin:RISC I: A Reduced Instruction Set VLSI Computer, Proc. 8th International Symposium on Computer Architecture, Association for Computing Machinery, side 443-457,1981, 2. utgave, International Symposium on Computer Architecture archive, 25 years of the international symposia on Computer architecture, side 216–230,1998,ISBN 1-58113-058-9
- ^David A. Patterson:Reduced Instruction Set Computers, Communications of the ACM archive, volume 28, issue 1, side 8-21, januar1985, ISSN 0001-0782
- ^John L. Hennessy:VLSI Processor Architeture, IEEE Transactions on Computers archive, volume C-33, Issue 12, side 1221-1246, desember1984, ISSN 0018-9340