Dagens tema. Dagens tema er hentet fra kapittel 4.3 og 4.4. Mer om pipelining Ytelse Hasarder. Pipelining i Pentium-arkitekturen

Like dokumenter
tema er hentet fra kapittel 4.3 og 4.4 om pipelining Mikroprogrammert Dagens temaer Hard-wired Mikrokode Hasarder Ytelse

Dagens temaer. tema er hentet fra kapittel 4.3 og 4.4 om pipelining. til neste ukes forelesning (hvis tid) INF ! Mikrokode. !

! Repetisjon: ! Forutsetinger: ! Ideelt sett gir en k-trinns pipeline en faktor k i hastighetsøkning. ! Benyttes derimot ekte pipelining, behøves

ulike stegene utføres på egne hardware-enheter som ikke er instruksjon kan deles opp i sekvensielle steg som løses etterhverandre

Dagens temaer. Dagens emner er hentet fra Englander kapittel 10 (side ) Mer om adresseringsmodi. RISC og CISC-prosessorer.

Dagens temaer. Mer om adresseringsmodi. Indeksert adressering med offset og auto-inkrement eller dekrement. Register-indirekte adressering

Dagens temaer. Dagens temaer er hentet fra Englander kapittel 12 side (2. utgave), side (3. utgave)

Intel Core i7. Omid Mirmotahari 4

Oppsummering av digitalteknikkdelen

Dagens temaer. Virtuell hukommelse (kapittel 9.9 i læreboken) Pentium-arkitekturen i mer detalj INF 1070

Dagens temaer. Fra kapittel 4 i Computer Organisation and Architecture. Kort om hurtigminne (RAM) Organisering av CPU: von Neuman-modellen

IN1020. Datamaskinarkitektur

Dagens temaer. Virtuell hukommelse. Sidetabell. Virtuell hukommelse (forts.)

Dagems temaer. kapittel 4 i Computer Organisation and Architecture. av CPU: von Neuman-modellen. Transfer Language (RTL) om hurtigminne (RAM)

hvor mye hurtigminne (RAM) CPU en kan nyttiggjøre seg av. mens bit ene betraktet under ett kalles vanligvis et ord.

Dagems temaer INF ! Fra kapittel 4 i Computer Organisation and Architecture. ! Kort om hurtigminne (RAM)

Pentium-prosessoren. Dagens temaer. Historisk oversikt over Intels prosessorfamilier. Noen fremtidige prosessorer fra Intel

Intel Core i7. Omid Mirmotahari 4

! Sentrale begreper er adresserbarhet og adresserom. ! Adresserbarhet: Antall bit som prosessoren kan tak samtidig i én operasjon

Kapittel 6. Høynivå møter lavnivå Fra C til assembly Fra assembly til maskinkode Linking og lasting

Oppsummering digital-teknikk, teknikk, INF2270

Dagens temaer. Architecture INF ! Dagens temaer hentes fra kapittel 3 i Computer Organisation and

Institiutt for informatikk og e-læring, NTNU Kontrollenheten Geir Ove Rosvold 4. januar 2016 Opphavsrett: Forfatter og Stiftelsen TISIP

Forelesning Forgreningspredikering Kap 4.5 Superskalaritet Kap 4.5 Spekulativ utføring Kap 4.5

INF2270. Datamaskin Arkitektur

SIE 4005, 9/10 (4. Forelesn.)

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Forelesning Optimalisering av μark Kap 4.4

Datamaskinens oppbygning

Forelesning 5. Diverse komponenter/større system

Dagens temaer. Dagens emner er hentet fra Englander kapittel 11 (side ) Repetisjon av viktige emner i CPU-design.

Løsningsforslag til øving 5 TFE4105 Digitalteknikk og Datamaskiner Høsten 2006

INF1400 Kap4rest Kombinatorisk Logikk

INF2270. Datamaskin Arkitektur

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Fortsetelse Microarchitecture level

EKSAMENSOPPGAVE I FAG TDT4160 DATAMASKINER GRUNNKURS. D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

UNIVERSITETET I OSLO

Fakultet for informasjonsteknologi, Oppgave 1 Flervalgsspørsmål ( multiple choice ) 15 %

UNIVERSITETET I OSLO

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Oppgave 1 Flervalgsspørsmål ( multiple choice ) 15 %

TDT4160 OG IT2201 DATAMASKINER GRUNNKURS EKSAMEN

Dagens tema. Flere teknikker for å øke hastigheten

ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

bruksområder og oppbygging om cache-hukommelse (kapittel 6.5 i Computer Organisation Dagens temaer and Architecture ) ROM RAM

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

! Ytelsen til I/O- systemer avhenger av flere faktorer: ! De to viktigste parametrene for ytelse til I/O er:

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Dagens temaer. Dagens temaer hentes fra kapittel 3 i Computer Organisation and Architecture. Sekvensiell logikk. Flip-flop er

Cache (repetisjon) Cache (repetisjon) Cache (repetisjon) Dagens temaer. CPU Cache RAM. om cache-hukommelse (kapittel 6.5 i Computer Organisation

Dagens temaer. Sekvensiell logikk: Kretser med minne. D-flipflop: Forbedring av RS-latch

SIE 4005, 8/10 (3. Forelesn.)

Forelesning ISA-nivået Kap 5.1

Løsningsforslag eksamen TDT4160 høsten 2005

Maskinvaredelen av INF 103: oversikt og innhold (1)

Prosessoren. Bakgrunnen Innhold LMC. Assemblerkode Oppsummering instruksjonene [Englander kap 6] Hva inneholder den? Hvordan utføres instruksjonene?

Seksjon 1. INF2270-V16 Forside. Eksamen INF2270. Dato 1. juni 2016 Tid Alle trykte og skrevne hjelpemidler, og en kalkulator, er tillatt.

Dagens temaer. temaer hentes fra kapittel 3 i Computer Organisation. av sekvensielle kretser. and Architecture. Tilstandsdiagram.

Forelesning Instruksjonstyper Kap 5.5

UNIVERSITETET I OSLO

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Fakultet for informasjonsteknologi, Oppgave 1 Flervalgsspørsmål ( multiple choice ) 15 %

Oppgave 2 Maskinkode (vekt 12%)

Overordnet maskinarkitektur. Maskinarkitektur zoomet inn. I CPU: Kontrollenheten (CU) IT1101 Informatikk basisfag, dobbeltime 11/9

Kapittel 4: Microarchitecture level

UNIVERSITETET I OSLO

En mengde andre typer som DVD, CD, FPGA, Flash, (E)PROM etc. (Kommer. Hukommelse finnes i mange varianter avhengig av hva de skal brukes til:

Dagens temaer. Kort repetisjon. Mer om cache (1) Mer om cache (2) Read hit. Read miss. Write hit. Hurtig minne. Cache

4/2 enkel pipelining in 147, våren 1997 pipelining 1. Pipelining. når tema læreboka. 11/3 problemer

NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

Dagens temaer. Mer om cache-hukommelse (kapittel 6.5 i Computer Organisation and Architecture ) RAM ROM. Hukommelsesbusser

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Dagens temaer. Cache (repetisjon) Cache (repetisjon) Cache (repetisjon)

TDT4160 AUGUST, 2008, 09:00 13:00

Dagens tema. Dagens tema hentes fra kapittel 3 i Computer Organisation and Architecture. Sekvensiell logikk. Flip-flop er. Tellere og registre

Innhold. Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer. Prinsipper for synkronisering av felles hukommelse

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

Innhold. Oppgave 1 Oversettelse (vekt 15%)

TDT ITGK - Hardware. Kapittel 9: Følge Instruksjoner - Prinsipper for Datamaskinens Virkemåte. Terje Rydland - IDI/NTNU

4/5 store parallelle maskiner /4 felles hukommelse in 147, våren 1999 parallelle datamaskiner 1. når tema pensum.

befinner seg. Deretter leses instruksjonen fra i registerfilen ved ny stigende klokkepuls.

Forelesning Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B

Oppgave 1 - Linux kommandolinje (%)

Oppgave 1 JK-flip-flop (Total vekt 20%)

Dagens tema: Enda mer MIPS maskinkode

AVSLUTTENDE EKSAMEN I. TDT4160 Datamaskiner Grunnkurs. Torsdag 29. November 2007 Kl

INF2270. Input / Output (I/O)

Dagens tema. Dagens temaer hentes fra kapittel 3 i læreboken. Repetisjon, design av digitale kretser. Kort om 2-komplements form

AVSLUTTENDE EKSAMEN I. TDT4160 Datamaskiner Grunnkurs Løsningsforslag. Torsdag 29. November 2007 Kl

ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

Løsningsforslag til eksamen i INF2270

UNIVERSITETET I OSLO

Kapittel 9: Følge Instruksjoner Prinsipper for Datamaskinens Virkemåte

UNIVERSITETET I OSLO

Oppgaver til kodegenerering etc. INF-5110, 16. mai, 2014

Eksamen INF2270 våren 2018

Tema for denne forelesningen: tilpassing til pipeline. forwarding. eliminere NOP. faktisk MIPS. in 147, våren 1999 pipelining 1 9

Avdelingfor ingeniørutdanning

Scheduling og prosesshåndtering

Transkript:

Dagens tema Dagens tema er hentet fra kapittel 4.3 og 4.4 Mer om pipelining Ytelse Hasarder Pipelining i Pentium-arkitekturen Mikrokode Hard-wired Mikroprogrammert RISC og CISC Fordeler og ulemper 1/41

Repetisjon - Pipelining Pipelining er en teknikk for å øke hastigheten til en CPU Utførelsen av de fleste instruksjoner er ganske komplekse og trenger mange klokkesykler for å bli eksekvert ferdig Idèen bak pipelining er å starte eksekvering av en ny instruksjon hver klokkesykel Kan sammenlignes med samlebåndsproduksjon: I stedet for å vente til forrige instruksjon er ferdig eksekvert, setter man i gang neste instruksjon så fort første steg av forrige instruksjon er ferdig. Med pipelining øker man antallet instruksjoner som blir ferdig eksekvert per tidsenhet, men: hver instruksjon tar fortsatt like lang tid Forutsetningen for å kunne gjøre pipelining er at hver enhet som utfører en del av en instruksjon arbeider uavhengig av de andre enhetene i pipelinen Gitt en prosessor hvor hver instruksjon består av fire steg: FETCH (Hent instruksjon) DECODE (Dekod instruksjonen) EXECUTE (Utfør instruksjonen) WRITE BACK (Skriv resultatet til minne) 2/41

Repetisjon - Pipelining Antar at det finnes 4 uavhengige hardware-enheter som kan utføre hver av disse stegene uten å benytte de andre delene: For eksempel skal FETCH ikke trenge å bruke EXECUTE-enheten for å hente en instruksjon eller variabel (men EXECUTE er avhengig av input fra DECODE-steget, og DECODE-steget er avhengig av input fra FETCH-steget osv.) Alle enhetene skal kunne jobbe i parallell, med hver sine steg fra ulike instruksjoner, uten å gå i beina på hverandre. Uten pipelining kan FETCH-steget til instruksjon 2 først starte etter at WRITEBACK steget til instruksjon 1 er ferdig Med pipelining vil FETCH-steget til instruksjon 2 starte rett etter at FETCH-steget til instruksjon 1 er ferdig 3/41

Repetisjon - Pipelining Uten pipelining er det kun ett steg fra én instruksjon som prosesseres av gangen i prosessoren. Med pipelining er det opptil 4 steg fra forskjellige instruksjoner som prosesseres i parallell. I klokkesykel 4 utføres WRITE-BACK fra instruksjon 2, EXECUTE fra instruksjon 3, DECODE fra instruksjon 4 og FETCH fra instruksjon nummer 5 Uten pipelining avsluttes en instruksjon hver fjerde klokkesykel. Med pipelining er instruksjon 1 ferdig etter 3. klokkesykel, instruksjon 2 ferdig etter 4. klokkesykel osv. Mao.: En instruksjon er ferdig hver klokkesykel. Merk: fire-stegs pipelinen her er brukt som et eksempel. Dagens prosessorer har pipeliner med adskillig fler steg 4/41

8-trinns pipeline (MIPS 5000) 5/41

Begrensninger ved pipelining Forutsetinger: At instruksjonene kan deles opp i sekvensielle steg som løses etter hverandre At de ulike stegene utføres på egne hardware-enheter som er uavhengige av hverandre Ideelt sett gir en k-trinns pipeline en faktor k i hastighetsøkning sammenlignet med en arkitektur uten pipelining I praksis er dette ikke mulig grunnet latency og hasarder 6/41

Generell ytelse CPUtid, tiden en prosessor bruker på å utføre n instruksjoner, er gitt ved: CPUtid = CPI I t, der CPI er gjennsomsnittlig antall klokkesykler per instruksjon, I er antall instruksjoner og t er klokkeperioden (lengden på en klokkesykel), t = 1/f hvor f er klokkefrekvensen Ytelsen, P, er definert som den inverse til CPUtid: P 1 CPUtid 1 CPI I t f CPI I 7/41

Latency Hvis en prosessor utfører n instruksjoner fullstendig sekvensielt på en k-trinns pipeline (uten å starte en ny instruksjon hver klokkesykel), trengs T S nkt Benyttes derimot ekte pipelining, behøves T p kt (n -1)t der kt er tiden det tar for pipelinen å fylles opp med den første instruksjonen, og (n-1)t tiden for å eksekvere de n-1 resterende Forbedringen blir da en faktor S gitt av T S T S p kt nkt (n -1)t k nk n -1 8/41

Latency vs. antall eksekverte instruksjoner 9/41

Eksempel på p pipelinet arkitektur (5-trinns): MIPS4000 Registerbank for lagring av mellomverdier (data og kontroll) 10/41

Utfordringer med pipelining (1) Pipelining krever at alle stegene hver tar maksimalt en klokkesykel Spesielt utfordrende for instruksjoner med minneaksess Løsning 1: Velger klokkesykel lik det som kreves for det lengste steget Enkle instruksjoner vil bruke mye lenger tid enn nødvendig Løsning 2: Klokkesykel med variable lengde For komplisert! Løsning 3: Raskere minne Cache bedrer ytelsen betraktelig Løsning 4: Bytte om rekkefølgen på instruksjoner Gjøres automatisk av kompilatoren 11/41

Utfordringer med pipelining (2) Det forekommer tilfeller hvor man ikke kan starte en ny instruksjon hver klokkesykel og pipelinen må stoppe opp i en eller flere klokkesykler Kalles også for stalling Hovedårsaken til stalling er hasarder av ulike typer: Ressurshasarder Datahasarder Kontrollhasarder 12/41

Konsekvenser på p hasarder på p ytelse 2-syklus stall 10-syklus stall 4-trinns pipeline 13/41

Ressurshasarder En datamaskin består av mange delte ressurser: RAM, ALU, Cache, registre Ressurshasard: Mer enn én instruksjon ønsker adgang til samme delte ressurs samtidig og pipelinen må stoppe inntil konflikten er opphørt. Vanligste løsning på problemet er å tilføre ekstra hardware: Egen ALU til adresseberegninger Separat cache for instruksjoner og data Flere instruksjonsregistre Mange generelle registre Bytte om rekkefølgen på instruksjoner 14/41

Datahasarder Problem: Benytter en operand/resultat som beregnes av foregående instruksjon 15/41

Løsning 1: Forwarding: Legge til ekstra hardware slik at resultatet blir tilgjengelig bakover i pipelinen, dvs. for instruksjoner som kommer etter Vil ikke alltid fungere 16/41

Løsning 2: Bytte om rekkefølgen på instruksjoner ADD R1, R2, R6 ADD R1, R2, R6 AND R5, R6, R1 LD R4, R7 LD R4, R7 SUB R8, R2, R3 SUB R8, R2, R3 AND R5, R6, R1 Gjøres av kompilatoren, men Er komplisert og én flytting kan skape nye avhengigheter Vil ikke alltid fungere 17/41

Løsning 3: Sette inn tomme instruksjoner: NOP Alternativt kan man stoppe prosessoren hvis problemet er Load Vil alltid fungere, men sløser bort prosessortid Benyttes i kombinasjon med forwarding, og ombytte av instruksjoner 18/41

Kontrollhasarder Problem: Må kjenne resultatet fra foregående instruksjon ved betingede hopp 19/41

Betingede hopp kan redusere eksekveringshastigheten betydelig hvis man regner med at det aldri skal hoppes (dvs. ikke gjør noe) Gjennomsnittlig antall klokkesykler per instruksjon er gitt av CPI av = 1 + b p b p t p b er sannsynligheten for at en instruksjon er et betinget hopp p t er sannsynligheten for at man hopper ved betingede hopp b er straffen for å starte unødvendig eksekvering av instruksjoner (branch penalty) Absolutte hopp er ikke problem Men må detekteres når man kompilerer programmet og behandles deretter 20/41

Løsning 1: Hopp-prediksjon Prøver å forutsi om en betinget-hopp-instruksjon faktisk vil hoppe Benytter denne kunnskapen til å starte eksekvering av korrekt instruksjonssekvens slik at flushing unngås Statisk prediksjon: Regner med at en bestemt type betingede hopp alltid/aldri fører til hopp, mao. statisk oppførsel Enkel algoritme, men tar ikke hensyn til at programmer er dynamiske Vil kunne konsekvent forutsi feil ved f.eks while/for-løkker Dynamisk prediskjon: Baserer seg på oppførelsen ved tidligere eksekvering av kodesekvensen Krever noe mer hardware (må bla. lagre tilstandsinfo) Bedre treff-prosent enn statisk prediksjon 21/41

Tilstandsdiagram for dynamisk hopp-prediksjon For å få bedre prediksjon benyttes 2-bits tilstand, dvs. oppførselen må være lik for de 2 foregående gjennomløpene 22/41

Løsning 2: Parallelleksekvering av hoppinstruksjoner I stedet for å forutsi, starter prosessoren eksekvering av begge kodesekvenser i parallell til riktig hopp kan bestemmes 23/41

Superskalare prosessorer En vanlig pipelinet prosessor er begrenset til å eksekvere ferdig en instruksjon per klokkesykel. Hastigheten kan økes ved å eksekvere flere instruksjoner i parallell: Flere instruksjoner kan kjøres samtidig, Enkelte steg kjøres samtidig, men har f.eks sekvensielle FETCH-steg. Superskalare prosessorer har flere hardware-enheter som gjør heltalls og flyttallsaritmetikk, load/store osv. i parallell Operasjoner som tar mye lenger tid enn andre sperrer ikke for andre instruksjoner. Superskalare prosessorer er mer kompliserte og krever ekstra kontroll-logikk, flere registre, etc. F.eks. Pentium og G4 er superskalare prosessorer 24/41

25/41

Parallelliteten gjør superskalare prosessorer mye vanskeligere å designe 26/41

Blokkdiagram for Pentium III/4 27/41

Fetch/Decode, Dispatch/Execute og Retire utgjør tilsammen en 3 trinns høynivå pipeline. ROB inneholder informasjon om delvis eksekverte instruksjoner som av en eller annen grunn venter på å blir ferdige. 28/41

Fetch/Decode henter instruksjoner og splitter dem opp i mikro-instruksjoner som lagres i ROB (klare til å legges i Execute). Dispatch/Execute eksekverer mikro-instruksjoner som er lagret i ROB. Retire-enheten fullfører eksekveringen av hver mikro-instruksjon og oppdaterer registre i henhold til hvilken instruksjon det er snakk om. Instruksjoner plasseres i ROB i riktig rekkefølge, men kan stokkes om før eksekvering, og sendes til Retire-enheten i riktig rekkefølge. Fetch/Decode-enheten er internt organsiert som en 7-trinns skalar pipeline Dispatch/Execute og Retire-enheten inneholder en 5-trinns pipeline til sammen Dispatch/Execute-enheten består av to enheter (kalt U og V, eller MMX og Heltall) som kan eksekvere instruksjoner i parallell. En tredje pipelinet eksekveringsenhet brukes til flyttall Totalt gir dette Pentium III en 12-trinns pipeline (siste P4 (2006) hadde 31-trinns pipeline) 29/41

Fetch/Decode- enheten 30/41

IFU0: Instruksjoner hentes fra instruksjons-cachen IFU1: Analyserer byte-strømmen for å finne starten på neste instruksjon. IFU2: Sorterer instruksjonen (av variabel lengde) slik at den lett kan dekodes. ID0: Start på dekoding: Oversettelse til mikro-instruksjoner (3 i parallel) Hver mikroinstruksjon inneholder opcode, to kilderegistre og ett destinasjonsregister ID1: Mikro-instruksjonene legges i en kø Betingede hopp detekteres. Dynamisk prediksjon bruker 4 bit RAT: Tilording til registre (nødvendig fordi gammel x86 kode kan kreve spesielle registre) 31/41

Dispatch/Execute -enheten 32/41

Reservasjonsstasjonen kan innholde inntil 20 mikroinstruksjoner som venter på å bli utført. Inntil 5 mikroinstruksjoner kan eksekveres samtidig Mikroinstruksjonene kan eksekveres i en annen rekkefølge enn den som er gitt av hovedinstruksjonen. En kompleks algoritme holder styr på hvilke mikroinstruksjoner som skal eksekveres til hvilken tid og på hvilken port. Hasarder og registeravhengigheter løses i reservasjonsstasjonen. Når en mikroinstruksjon er ferdig eksekvert, sendes den tilbake til reservasjonsstasjonen og så tilbake til ROB, for til slutt å sendes til Retireenheten 33/41

Retire-enheten sender reultatet av mikroinstruksjonen til riktig register, eller til andre eksekveringsenheter i Dispatch/Execute blokken. Retire-enheten holder styr på instruksjoner som er satt i gang ved spekulativ - eksekvering. Instruksjoner kommer ferdig utført fra Retire-enheten i samme rekkefølge som de ble sendt inn i Fetch/Decode-enheten 34/41

Design av kontrollenhet Under instruksjonseksekvering må riktige kontrollsignaler settes avhengig av instruksjonen Variant 1: Hardwired kontroll 35/41

Egenskaper ved hardwired kontroll Siden enheten er kombinatorisk (bortsett fra sekvenstelleren), er den meget rask. Tar liten plass Ikke mulig å endre etter implementasjon Kan bli for stor og komplisert ved sammensatte og komplekse instruksjoner 36/41

Mikroprogrammert kontroll Inneholder en liten CPU som tolker et styreprogram som styrer selve CPU en Egenskaper ved mikroprogrammert kontroll Mer fleksibel fordi mikroprogrammet kan byttes underveis Lettere å rette opp feil ved designet Krever flere klokkesykler for å eksekvere en instruksjon Krever stort CPU-areal 37/41

RISC og CISC (1) RISC Reduced Instruction Set Computer CISC Complex Instruction Set Computer To forskjellige filosofier for design og organisering av en CPU CISC-arkitektur har mange maskinspråk-instruksjoner som kompilatorer kan bruke ved oversettelse fra høynivå-språk til maskinspråk Assemblerprogramering blir enklere i en CISC-arkitektur fordi det finnes mange spesialiserte instruksjoner. En CISC-instruksjon kan bestå av et variabelt antall mindre steg eller subinstruksjoner, og hvert steg trenger en klokkesykel på å fullføres. I en moderne CISC-arkitektur (f.eks Pentium) varierer antall steg i instruksjonene fra et titalls til flere hundre 38/41

RISC og CISC (2) RISC-arkitektur har langt færre maskinspråk-instruksjoner tilgjengelige for assemblerprogram og kompilatorer. Hver instruksjon i en RISC-maskin er optimalisert slik at den kun krever én klokkesykel på å eksekvere ferdig. Filosofien bak RISC er å optimalisere og tilby de mest brukte instruksjonene som høynivåprogrammer anvender (tester har vist at Load/Store og hoppinstruksjoner står for mellom 70-80% av alle instruksjonene i et program) Operasjoner som brukes sjelden implementeres som en sekvens av instruksjoner og blir ikke nødvendigvis implementert mest mulig effektivt. Kompilatorer og assemblerprogrammer blir større og mer kompliserte fordi hver høynivåinstruksjon splittes opp i mange flere maskinspråk-instruksjoner sammenlignet med CISC. 39/41

RISC og CISC (3) I en RISC-arkitektur tar alle instruksjoner like lang tid. I en CISC-arkitektur kan to instruksjoner bruke ulik tid på å bli ferdig utført. Det er vanlig også i RISC arkitektur å dele opp instruksjoner i mindre steg. Ikke alle instruksjoner trenger alle stegene, men de blir allikevel tvunget til å bruke dem (ikke gjøre noe) for at hver instruksjon skal ta like lang tid. 40/41

Hva er best? Noen typer optimalsering lar seg lettere designe sammen med RISC-arkitektur, som f.eks pipelining. Visse anvendelser som f.eks mobiltelefoner ser ut til å egne seg bedre for RISC enn CISC pga. statisk kode med lite behov for spesial-instruksjoner 41/41