RISC

RISC ( engelska  reducerad instruktionsuppsättning dator [1]  - en dator med en uppsättning förenklade/förminskade instruktioner ) är ett arkitektoniskt tillvägagångssätt för design av processorer , där prestandan ökas genom att koda instruktioner på ett sådant sätt att deras avkodning är lättare och utförandetiden är kortare. Instruktionsuppsättningarna för tidiga RISC-processorer hade inte ens multiplikations- och divisionsinstruktioner. Det gör det också lättare att överklocka och gör superskalär (parallellerande instruktioner över flera exekveringsenheter) mer effektiv.

Skillnader från CISC

Instruktionsuppsättningar i tidigare arkitekturer, för att göra det enklare att manuellt skriva program på assemblerspråk eller rakt in i maskinkod , och för att göra kompilatorer lättare att implementera , gjorde så mycket arbete som möjligt. Det var inte ovanligt att kit inkluderade instruktioner för direkt stöd för språkkonstruktioner på hög nivå . En annan egenskap hos dessa uppsättningar är att de flesta instruktioner som regel tillät alla möjliga adresseringsmetoder (den så kallade " instruktionsuppsättningens ortogonalitet "). Till exempel: både operander och resultatet i aritmetiska operationer är tillgängliga inte bara i register utan också genom direkt adressering och direkt i RAM . Senare kallades sådana arkitekturer CISC ( Complex instruction set computer ) . 

Många kompilatorer har dock inte utnyttjat den fulla potentialen hos sådana instruktionsuppsättningar, och komplexa adresseringsmetoder tar lång tid på grund av ytterligare åtkomst till det relativt långsamma huvudminnet. Det visade sig att sådana funktioner exekveras snabbare av en sekvens av enklare maskininstruktioner om processorn är förenklad och det finns utrymme i den för ett större antal register, vilket gör att antalet åtkomster till RAM kan minskas. I de första arkitekturerna klassificerade som RISC har de flesta instruktioner för att förenkla avkodning samma längd och liknande struktur, aritmetiska operationer fungerar endast med register och arbete med minne går igenom separata instruktioner för att ladda (ladda) och spara (lagra) instruktioner. Dessa egenskaper har gjort det möjligt att bättre balansera stegen i pipelining , vilket gör pipelines i RISC mycket effektivare och gör det möjligt att öka klockfrekvensen.

Philosophy of RISC

I mitten av 1970-talet upptäckte olika forskare (särskilt på IBM ) att de flesta kombinationer av instruktioner och ortogonala adresseringsmetoder inte användes i de flesta program som genererades av den tidens kompilatorer. Man fann också att i vissa mikrokodarkitekturer var komplexa operationer utförda av en enda maskininstruktion långsammare än algoritmiskt ekvivalenta sekvenser av enklare operationer. Detta berodde delvis på det faktum att många arkitekturer utvecklades i en hast och mikrokoden för endast de maskininstruktioner som användes oftare var väl optimerad. [2]

Eftersom många riktiga program ägnar större delen av sin tid åt att utföra enkla operationer, har många forskare bestämt sig för att fokusera på att göra dessa operationer så snabba som möjligt. Processorns prestanda begränsas av den tid som processorn spenderar på att utföra de långsammaste operationerna i processen att bearbeta en instruktion. Att minska varaktigheten av dessa steg ger en övergripande prestandaförbättring och påskyndar ofta utförandet av instruktioner på grund av effektivare pipelining. [3] Fokus på enkla instruktioner leder till RISC-arkitekturen, som syftar till att göra instruktioner så enkla att de enkelt kan pipelineras och inte ta mer än en maskincykel per pipelinesteg vid höga frekvenser.

Senare noterades att den viktigaste egenskapen hos RISC är separationen av instruktioner för databehandling och minnesåtkomst - minne nås endast genom laddnings- och lagringsinstruktioner, och alla andra instruktioner är begränsade till att arbeta med processorhårdvaruregister. Detta förenklade processorarkitekturen:

Som ett resultat blev RISC-arkitekturer informellt även kallade last/butiksarkitekturer . [fyra]

Antal instruktioner

Ofta förstås orden "reducerad instruktionsuppsättning " som att minimera antalet instruktioner i instruktionsuppsättningen. Faktum är att många RISC-processorer har fler maskininstruktioner än CISC-processorer . [5] [6] vissa RISC-processorer, såsom INMOS -transputrar har minst lika många maskininstruktioner som till exempel instruktionssystemen för IBM System / 370 CISC-processorer , och omvänt DEC CISC-processorn PDP-8 har bara 8 grundläggande instruktioner och några utökade instruktioner.

Faktum är att termen "reducerad" i namnet beskriver det faktum att mängden (och tiden) arbete som utförs av varje enskild maskininstruktion reduceras - som maximalt en minnesåtkomstcykel - medan de komplexa instruktionerna från CISC-processorer kan kräva hundratals åtkomstcykler till minnet för dess exekvering. [7]

Vissa arkitekturer speciellt utformade för att minimera antalet instruktioner skiljer sig mycket från klassiska RISC-arkitekturer och har fått andra namn: Minimal instruction set computer ( MISC ), Zero instruction set computer ( ZISC ), Ultimate RISC (även kallad OISC), Transport triggered architecture (TTA) osv.

Karakteristiska egenskaper hos RISC-processorer

Andra arkitekturer

Under åren efter tillkomsten av RISC-arkitekturen har andra alternativ implementerats - till exempel VLIW , MISC , OISC , massivt parallell bearbetning , systolisk array ( engelsk  systolisk array ), reconfigurable computing ( engelska  Reconfigurable computing ), streaming-arkitektur .

Andra arkitekturer som är typiska för RISC

Början av utvecklingen av "RISC"-arkitekturen

Det första systemet som kan kallas ett "RISC"-system är superdatorn " CDC 6600 " , som skapades 1964, tio år innan termen myntades. CDC 6600 hade en "RISC"-arkitektur med endast två adresseringslägen ("Register+Register" och "Register+Immediate") och 74 instruktionskoder (medan 8086 hade 400 instruktionskoder). CDC 6600 hade 11 aritmetiska och logiska bearbetningspipelines, samt fem laddare och två lagringsenheter. Minnet var multiblock, så alla lastlagringsenheter kunde arbeta samtidigt. Basklockan/instruktionshastigheten var 10 gånger snabbare än minnesåtkomsttiden. Jim Thornton och Seymour Cray , konstruktörerna av CDC 6600, skapade en kraftfull processor för den, som gjorde det möjligt för den att snabbt bearbeta stora mängder digital data. Huvudprocessorn stöddes av tio enkla perifera processorer som utförde I/O-operationer och andra OS-funktioner. [8] Det skämtades senare att termen "RISC" faktiskt står för "Really invented by Seymour Cray " .

En annan tidig "RISC"-arkitekturmaskin är minidatorn " Data General Nova ", utvecklad 1968.

Det första försöket att skapa en "RISC"-processor på ett chip gjordes av " IBM " 1975. Detta arbete ledde till skapandet av " IBM 801 "-familjen av processorer, som användes i stor utsträckning i olika IBM-enheter. 801:an släpptes så småningom i chipform under namnet " ROMP " 1981. "ROMP" står för "Research OPD (Office Product Division) Micro Processor", det vill säga "research microprocessor", utvecklad inom kontorsutvecklingsdivisionen. Som namnet antyder var processorn designad för "mini"-uppgifter, och när IBM släppte IBM RT-PC baserad på den 1986 , fungerade den inte särskilt bra. Men lanseringen av 801 följdes av flera forskningsprojekt, varav ett resulterade i " POWER "-systemet.

De mest välkända RISC-systemen utvecklades dock som en del av universitetsforskningsprogram finansierade av DARPA VLSI-programmet.[ förtydliga ]

RISC på Berkeley

RISC-projektet vid UC Berkeley startades 1980 av David Patterson och Carlo Sequina. Forskningen förlitade sig på användningen av pipelining och den aggressiva användningen av registerfönstertekniken . En typisk processor har ett litet antal register , och ett program kan använda vilket register som helst när som helst. En processor som använder registerfönsterteknologier har ett mycket stort antal register (t.ex. 128), men program kan bara använda ett begränsat antal (t.ex. endast 8 åt gången).

Ett program som är begränsat till endast åtta register för varje procedur kan göra mycket snabba proceduranrop: "fönstret" växlar helt enkelt till 8-registerblocket för den önskade proceduren, och när man återvänder från proceduren växlar det tillbaka till registren för anropet procedur (i en konventionell processor, de flesta procedurer när de anropas tvingade att spara värdena för vissa register i stacken för att använda dessa register under körningen av proceduren (när proceduren återvänder, är värdena för registren återställd från stacken).

RISC-projektet producerade RISC-I-processorn 1982. Den hade 44 420 transistorer (som jämförelse: det fanns cirka 100 000 av dem i den tidens CISC- processorer). "RISC-I" hade bara 32 instruktioner, men var snabbare än någon enkelchipsprocessor på den tiden. Ett år senare, 1983, släpptes "RISC-II", som bestod av 40 760 transistorer, använde 39 instruktioner och fungerade tre gånger snabbare än "RISC-I". Berkeley RISC-projektet påverkade SPARC- och DEC Alpha- familjen av RISC-processorer .

RISC på Stanford

Nästan samtidigt, 1981, startade John Hennessy ett liknande projekt kallat "MIPS-arkitekturen" vid Stanford University . Skaparen av "MIPS" fokuserade nästan helt på pipelinebearbetning - han försökte "pressa allt" ur denna teknik. Pipelining användes även i andra processorer, några av idéerna som dök upp i MIPS gjorde att den utvecklade processorn kunde arbeta mycket snabbare än liknande. Det viktigaste kravet var detta: varje instruktion från processorn tar en klockcykel. Så pipelinen kunde överföra data mycket snabbare, och processorn började arbeta mycket snabbare. Tyvärr, för detta kravs skull, togs användbara operationer såsom multiplikation eller division bort från instruktionsuppsättningen.

Under de första åren var försöken att utveckla RISC-arkitekturen välkända, men höll sig inom ramen för de universitetsforskningslaboratorier som gav upphov till dem. Många inom datorindustrin trodde att fördelarna med "RISC"-processorer inte skulle förverkligas när de används i riktiga produkter på grund av den låga minneseffektiviteten hos sammansatta instruktioner. Men sedan 1986 har RISC-forskningsprojekt börjat producera de första fungerande produkterna. RISC-processorn från Stanford implementerades i MIPS Technologies Rxxxx-familj av processorer .

Senaste åren

Som det visade sig i början av 1990-talet tillåter RISC-arkitekturer högre prestanda än CISC, på grund av användningen av en superskalär och VLIW- metod, såväl som möjligheten att på allvar öka klockfrekvensen och förenkla kristallen, vilket frigör område för cache och når enorma kapaciteter. . Dessutom gjorde RISC-arkitekturer det möjligt att kraftigt minska strömförbrukningen för processorn genom att minska antalet transistorer.

Till en början accepterades RISC-arkitekturer knappast av marknaden på grund av bristen på programvara för dem. Detta problem löstes genom att porta UNIX-liknande operativsystem ( SunOS ) till RISC-arkitekturer.

För närvarande är många processorarkitekturer RISC-liknande, såsom ARM , DEC Alpha , SPARC , AVR , MIPS , POWER och PowerPC . De mest använda x86 -processorerna i stationära datorer var tidigare CISC-processorer, men nyare processorer, som börjar med Intel Pentium Pro (1995), är CISC- processorer med en RISC-kärna [9] . De konverterar CISC-instruktionerna för x86-processorer till en enklare uppsättning interna RISC-instruktioner precis innan exekvering.

Efter att x86-arkitekturprocessorerna konverterats till superskalär RISC-arkitektur kan man säga att de flesta processorer som finns idag är baserade på RISC-arkitekturen.

Se även

Anteckningar

  1. Dictionary of Computing Systems = Dictionary of Computing / Ed. V. Illingworth m. fl.: Per. från engelska. A. K. Belotsky och andra; Ed. E. K. Maslovsky. - M . : Mashinostroenie, 1990. - 560 sid. - 70 000 (ytterligare) exemplar.  - ISBN 5-217-00617-X (USSR), ISBN 0-19-853913-4 (Storbritannien).
  2. Ett exempel är en instruktion i VAX-INDEX arkitekturen , som är långsammare än en motsvarande implementering med enklare operationer. Se: D.A. Patterson, D.R. Ditzel. Fallet för den reducerade instruktionsuppsättningen computing // SIGARCH Comput. archit. Nyheter. - Oktober 1980. - Utgåva. 8, 6 . - S. 25-33. - doi : 10.1145/641914.641917 .
  3. Andrew Schulman. Mikroprocessorer från programmerarens perspektiv  // Dr. Dobbs tidning . - 1 september 1990.
  4. Kevin Dowd. Högpresterande datoranvändning . — O'Reilly & Associates, 1993.
  5. Jon "Hannibal" Stokes. RISC och CISC, sida vid sida? . RISC vs. CISC: The Post-RISC Era . Ars Technica (augusti 1999). Hämtad 11 juli 2010. Arkiverad från originalet 29 juli 2010.
  6. Lloyd Borrett. RISC kontra CISC (inte tillgänglig länk) . Australian Personal Computer (juni 1991). Hämtad 11 juli 2010. Arkiverad från originalet 23 augusti 2011. 
  7. Sivarama P. Dandamudi. Kapitel 3: RISC-principer // Guide till RISC-processorer för programmerare och ingenjörer . - Springer New York, 2005. - S. 39-44. — ISBN 978-0-387-21017-9 (Skriv ut) ISBN 978-0-387-27446-1 (Online). - doi : 10.1007/0-387-27446-4_3 .  (ej tillgänglig länk) doi : 10.1007/0-387-27446-4_3  - "huvudmålet var inte att minska antalet instruktioner, utan komplexiteten"
  8. Grishman, Ralph. Assembly Language Programmering för Control Data 6000-serien. Algoritmer Tryck. 1974. S. 12
  9. Processorenhet - "Allt om Hi-Tech" . Hämtad 11 augusti 2015. Arkiverad från originalet 12 augusti 2015.

Länkar