RISC ( engelsk reduceret instruktionssæt computer [1] - en computer med et sæt af forenklede/formindskede instruktioner ) er en arkitektonisk tilgang til design af processorer , hvor ydeevnen øges ved at indkode instruktioner på en sådan måde, at deres afkodning er lettere og udførelsestiden er kortere. Instruktionssættene for tidlige RISC-processorer havde ikke engang multiplikations- og divisionsinstruktioner. Det gør det også nemmere at overclocke og gør superskalar (parallellerende instruktioner på tværs af flere udførelsesenheder) mere effektiv.
Instruktionssæt i tidligere arkitekturer, for at gøre det nemmere at manuelt skrive programmer på assemblersprog eller direkte ind i maskinkode , og for at gøre compilere nemmere at implementere , gjorde så meget arbejde som muligt. Det var ikke ualmindeligt, at kits inkluderede instruktioner til direkte understøttelse af sprogkonstruktioner på højt niveau . Et andet træk ved disse sæt er, at de fleste instruktioner som regel tillod alle mulige adresseringsmetoder (den såkaldte " ortogonalitet af instruktionssættet "). For eksempel: både operander og resultatet i aritmetiske operationer er ikke kun tilgængelige i registre , men også gennem direkte adressering og direkte i RAM . Senere blev sådanne arkitekturer kaldt CISC ( Complex instruction set computer ) .
Imidlertid har mange compilere ikke udnyttet det fulde potentiale af sådanne instruktionssæt, og komplekse adresseringsmetoder tager lang tid på grund af yderligere adgang til den relativt langsomme hovedhukommelse. Det viste sig, at sådanne funktioner udføres hurtigere af en sekvens af enklere maskininstruktioner, hvis processoren er forenklet, og der er plads i den til et større antal registre, på grund af hvilke antallet af adgange til RAM kan reduceres. I de første arkitekturer, der er klassificeret som RISC, har de fleste instruktioner til at forenkle afkodning samme længde og lignende struktur, aritmetiske operationer fungerer kun med registre, og arbejde med hukommelse går gennem separate instruktioner til indlæsning (indlæs) og lagring (lagre) instruktioner. Disse egenskaber har gjort det muligt bedre at balancere stadierne i pipelining , hvilket gør rørledningerne i RISC meget mere effektive og gør det muligt at øge clock-frekvensen.
I midten af 1970'erne fandt forskellige forskere (især hos IBM ) ud af, at de fleste kombinationer af instruktioner og ortogonale adresseringsmetoder ikke blev brugt i de fleste programmer genereret af datidens compilere. Det blev også fundet, at i nogle mikrokodearkitekturer var komplekse operationer udført af en enkelt maskininstruktion langsommere end algoritmisk ækvivalente sekvenser af enklere operationer. Dette skyldtes til dels, at mange arkitekturer blev udviklet i en fart, og mikrokoden for kun de maskininstruktioner, der blev brugt oftere, var veloptimeret. [2]
Da mange rigtige programmer bruger det meste af deres tid på at udføre simple operationer, har mange forskere besluttet at fokusere på at gøre disse operationer så hurtige som muligt. Processorens ydeevne er begrænset af den tid, processoren bruger på at udføre de langsomste operationer i processen med at behandle en instruktion. Reduktion af varigheden af disse trin giver en generel præstationsforbedring og fremskynder ofte udførelsen af instruktioner på grund af mere effektiv pipelining. [3] Fokus på simple instruktioner fører til RISC-arkitekturen, som har til formål at gøre instruktioner så enkle, at de nemt kan pipelineres og ikke tage mere end én maskincyklus pr. pipelinetrin ved høje frekvenser.
Senere blev det bemærket, at det mest betydningsfulde kendetegn ved RISC er adskillelsen af instruktioner til databehandling og hukommelsesadgang - hukommelse tilgås kun gennem indlæsnings- og lagerinstruktionerne, og alle andre instruktioner er begrænset til at arbejde med processorhardwareregistre. Dette forenklede processorarkitekturen:
Som et resultat blev RISC-arkitekturer uformelt også kaldet load/store-arkitekturer . [fire]
Ofte forstås ordene "reduceret instruktionssæt " som at minimere antallet af instruktioner i instruktionssættet. Faktisk har mange RISC-processorer flere maskininstruktioner end CISC-processorer . [5] [6] nogle RISC-processorer, såsom INMOS- transputere har mindst lige så mange maskininstruktioner som for eksempel instruktionssystemerne for IBM System / 370 CISC-processorer , og omvendt DEC CISC-processoren PDP-8 har kun 8 grundlæggende instruktioner og nogle få udvidede instruktioner.
Faktisk beskriver udtrykket "reduceret" i navnet det faktum, at mængden (og tiden) af arbejde, der udføres af hver enkelt maskininstruktion, reduceres - som maksimalt én hukommelsesadgangscyklus - mens de komplekse instruktioner fra CISC-processorer kan kræve hundredvis af adgangscyklusser til hukommelsen for dens udførelse. [7]
Nogle arkitekturer, der er specielt designet til at minimere antallet af instruktioner, er meget forskellige fra klassiske RISC-arkitekturer og har fået andre navne: Minimal instruction set computer ( MISC ), Zero instruction set computer ( ZISC ), Ultimate RISC (også kaldet OISC), Transport triggered architecture (TTA) osv.
I løbet af årene efter fremkomsten af RISC-arkitekturen er andre alternativer blevet implementeret - for eksempel VLIW , MISC , OISC , massivt parallel behandling , systolisk array ( engelsk systolisk array ), rekonfigurerbar computing ( engelsk Reconfigurable computing ), streaming-arkitektur .
Det første system, der kan kaldes et "RISC"-system, er " CDC 6600 " supercomputeren , som blev skabt i 1964, ti år før begrebet blev opfundet. CDC 6600 havde en "RISC"-arkitektur med kun to adresseringstilstande ("Register+Register" og "Register+Immediate") og 74 instruktionskoder (hvorimod 8086 havde 400 instruktionskoder). CDC 6600 havde 11 aritmetiske og logiske behandlingspipelines samt fem læssere og to lagerenheder. Hukommelsen var multi-blok, så alle load-storage-enheder kunne arbejde samtidigt. Basisuret/instruktionshastigheden var 10 gange hurtigere end hukommelsesadgangstiden. Jim Thornton og Seymour Cray , designerne af CDC 6600, skabte en kraftfuld processor til den, som gjorde det muligt for den hurtigt at behandle store mængder digitale data. Hovedprocessoren blev understøttet af ti simple perifere processorer, der udførte I/O-operationer og andre OS-funktioner. [8] Det blev senere spøgt med, at udtrykket "RISC" faktisk står for "Really invented by Seymour Cray " .
En anden tidlig "RISC"-arkitekturmaskine er minicomputeren " Data General Nova ", udviklet i 1968.
Det første forsøg på at skabe en "RISC"-processor på en chip blev lavet af " IBM " i 1975. Dette arbejde førte til skabelsen af " IBM 801 "-familien af processorer, som blev meget brugt i forskellige IBM-enheder. 801 blev til sidst udgivet i chipform under navnet " ROMP " i 1981. "ROMP" står for "Research OPD (Office Product Division) Micro Processor", det vil sige "research microprocessor", udviklet i kontorudviklingsdivisionen. Som navnet antyder, var processoren designet til "mini"-opgaver, og da IBM udgav IBM RT-PC'en baseret på den i 1986 , fungerede den ikke særlig godt. Udgivelsen af 801 blev dog efterfulgt af adskillige forskningsprojekter, hvoraf det ene resulterede i " POWER "-systemet.
Imidlertid blev de mest kendte RISC-systemer udviklet som en del af universitetsforskningsprogrammer finansieret af DARPA VLSI-programmet.[ afklare ]
RISC-projektet på UC Berkeley blev startet i 1980 af David Patterson og Carlo Sequina. Forskningen byggede på brugen af pipelining og den aggressive brug af registervindueteknikken . En typisk processor har et lille antal registre , og et program kan bruge ethvert register til enhver tid. En processor, der anvender registervindueteknologier, har et meget stort antal registre (f.eks. 128), men programmer kan kun bruge et begrænset antal (f.eks. kun 8 ad gangen).
Et program begrænset til kun otte registre for hver procedure kan foretage meget hurtige procedurekald: "vinduet" skifter simpelthen til 8-registerblokken for den ønskede procedure, og når det vender tilbage fra proceduren, skifter det tilbage til registrene for det kaldende procedure (i en konventionel processor, de fleste procedurer, når de kaldes tvunget til at gemme værdierne af nogle registre på stakken for at bruge disse registre under udførelsen af proceduren (når proceduren vender tilbage, er værdierne af registrene gendannet fra stakken).
RISC-projektet producerede RISC-I-processoren i 1982. Den havde 44.420 transistorer (til sammenligning: der var omkring 100.000 af dem i den tids CISC- processorer). "RISC-I" havde kun 32 instruktioner, men var hurtigere end nogen single-chip processor på den tid. Et år senere, i 1983, udkom "RISC-II", som bestod af 40.760 transistorer, brugte 39 instruktioner og virkede tre gange hurtigere end "RISC-I". Berkeley RISC-projektet påvirkede SPARC- og DEC Alpha- familien af RISC-processorer .
Næsten på samme tid, i 1981, startede John Hennessy et lignende projekt kaldet "MIPS-arkitekturen" ved Stanford University . Skaberen af "MIPS" fokuserede næsten fuldstændigt på pipelinebehandling - han forsøgte at "presse alt" ud af denne teknologi. Pipelining blev også brugt i andre processorer, nogle af ideerne, der dukkede op i MIPS, gjorde det muligt for den udviklede processor at arbejde meget hurtigere end lignende. Det vigtigste krav var dette: enhver instruktion fra processoren tager en clock-cyklus. Så rørledningen kunne overføre data meget hurtigere, og processoren begyndte at arbejde meget hurtigere. Desværre, af hensyn til dette krav, blev nyttige operationer såsom multiplikation eller division fjernet fra instruktionssættet.
I de første år var forsøgene på at udvikle RISC-arkitekturen velkendte, men forblev inden for rammerne af de universitetsforskningslaboratorier, der gav anledning til dem. Mange i computerindustrien troede, at fordelene ved "RISC"-processorer ikke ville blive til virkelighed, når de blev brugt i rigtige produkter på grund af sammensatte instruktioners lave hukommelseseffektivitet. Siden 1986 er RISC-forskningsprojekter dog begyndt at producere de første fungerende produkter. RISC-processoren fra Stanford blev implementeret i MIPS Technologies ' Rxxxx-familie af processorer .
Som det viste sig i begyndelsen af 1990'erne, tillader RISC-arkitekturer større ydeevne end CISC, på grund af brugen af en superskalar- og VLIW- tilgang, samt muligheden for seriøst at øge clock-frekvensen og forenkle krystallen, hvilket frigør område til cache , og når enorme kapaciteter. . RISC-arkitekturer gjorde det også muligt i høj grad at reducere processorens strømforbrug ved at reducere antallet af transistorer.
Til at begynde med blev RISC-arkitekturer næppe accepteret af markedet på grund af manglen på software til dem. Dette problem blev løst ved at portere UNIX-lignende operativsystemer ( SunOS ) til RISC-arkitekturer.
I øjeblikket er mange processorarkitekturer RISC-lignende, såsom ARM , DEC Alpha , SPARC , AVR , MIPS , POWER og PowerPC . De mest udbredte x86 -processorer i stationære computere plejede at være CISC-processorer, men nyere processorer, startende med Intel Pentium Pro (1995), er CISC -processorer med en RISC-kerne [9] . De konverterer CISC-instruktionerne fra x86-processorer til et enklere sæt interne RISC-instruktioner lige før udførelse.
Efter at x86-arkitektur-processorerne blev konverteret til superskalær RISC-arkitektur, kan det siges, at de fleste processorer, der findes i dag, er baseret på RISC-arkitekturen.
Processorarkitekturer baseret på RISC- teknologier | |
---|---|
processorteknologier | Digitale|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionssæt arkitektur | |||||||||
maskinord | |||||||||
Parallelisme |
| ||||||||
Implementeringer | |||||||||
Komponenter | |||||||||
Strømstyring |