En vanlig femstegspipeline FDEMW FDEMW FDEMW FDEMW tid
En superskalär femstegspipeline av grad 2 tid FDEMW FDEMW FDEMW FDEMW FDEMW FDEMW FDEMW FDEMW
Beroenden ger stopp i röret tid FDEMW FDEMW FDEMW FDEMW FDEMW FDEMW FDEMW FDEMW stall Instruktion 1 beräknar ett värde......som instruktion 2 använder
Extra hårdvara zÖkad bandbredd från instruktionscache zDubbla instruktionsavkodare zFler läsportar på registerfilen zBypassing ökar kvadratiskt (4n 2 ) zFlera funktionsenheter - dubbel ALU zFlera portar till datacacheminnet
Heltal parallellt med flyttal zInstruktionsuppsättningen har ofta separata register för heltal och flyttal zFunktionsenheterna är alltid separata zSällsynt med beroenden mellan heltals- och flyttalsinstruktioner zSeparata bypassvägar
Mer att göra för avkodaren zSka upptäcka beroenden zSka skicka instruktioner till rätt enhet zMer att göra tar längre tid - superskalära datorer har ofta 2-3 avkodningssteg zPPro/II/iii har 3-7 steg, beror på hur man räknar
Ny pipeline zTvå avkodningssteg, Decode och Register read zHoppinstruktioner: yEfter D-steget vet vi vart vi ska hoppa yEfter R-steget vet vi om vi ska hoppa FDREMW
Hopp blir dyrt tid FDREM FD--- F---- FDREM FDR-- FD--- F---- FDREM W - - W W
Branch penalties zMisfetch penalty (1 cykel, D-steget) yförlorad tid när man hämtat ett hopp och gissar rätt att man ska hoppa zMispredict penalty (2 cykler, D + R) yförlorad tid vid felgissning yförst i R-steget vet man att gissningen var fel FDREMW Samtidigt hämtas alltid nästa instruktion i ordningsföljd
Superpipelining zstartar en instruktion per klockcykel zhar extra kort cykeltid yE1 och E2 behövs för ALU, en beroende instruktion kan inte starta i cykeln efter F1F2D1D2E1E2M1M2W1W2 FDEMW vanlig femstegspipeline superpipelinad av grad 2
Exempel zPentium Pro/II/iii, Pentium 4 är superpipelinade zExec tar 1 steg, decode tar många - ojämnt! Pentium: 5 steg PPro/II/iii: 10 steg P4: 20 steg
Latens (latency) zLatens - cykler tills resultat kan användas zALU-instruktioner har ofta latens 1 yberoende instruktion kan köras i nästa cykel - men inte i samma! zLOAD i femstegpipeline har latens 2 zHopp har ofta lång latens ysärskilt när hoppgissningen misslyckas
Genomsnittlig grad av superpipelining zAnta: yOm Load och hopp har latens 3, ALU 1 yLoad och hopp är vardera 25% av de utförda instruktionerna zGenomsnittlig grad av superpipelining: y0,25 x 3 + 0,25 x 3 + 0,50 x 1 = 2,0
Tolkning zVärdet 2 betyder att: ydet program som körs bör vara sådant att det för det mesta finns 2 saker att göra samtidigt yi genomsnitt ska varje instruktion följas av en oberoende instruktion zDet finns gränser för hur mycket som finns att göra samtidigt i typiska program yvärden på 2-4 är rimliga, knappast mer