05/03/2015 18:38

05/03/2015 18:38
Praktiska kommenterar
●
Laboration 5
●
Om lab4 kvar att redovisa
–
–
TSEA28 Datorteknik Y (och U)
Föreläsning 14
●
●
Hårdvarulabb, svårt göra allt hemma
Redovisa EFTER lab 5
Lab 5 Cachelabb endast hårdvara i labbet
–
Ingen motsvarighet till tutor
–
Rotationsdelen (uppgift 3) kan delvis göras hemma
●
make rotate_sdl ; ./rotate-sdl
●
Kan testa att programmet roterar bild korrekt
Mikroprogrammeringstävlingen
–
Kent Palmkvist
Datorteknik, ISY
Deadline 8 Maj
2
Agenda
●
3
Enkel RISC-baserad struktur,
repetition
Agenda
RISC
●
–
Mer information om hur den fungerar
–
Begränsningar
●
Datakonflikter
●
Styrkonflikter
●
Branch prediction
2015-01-05
TSEA28 Datorteknik Y 2015
Enkelt exempel från kursboken (avsnitt 7.2)
Chapter 7 Handout från
http://alanclements.org/supplements.html
4
2015-01-05
–
RISC-arkitektur av LOAD-STORE typ
–
Alla register placerade i ”Register file” (klockad)
●
Två register kan läsas och 1 register skrivas samtidigt
TSEA28 Datorteknik Y 2015
05/03/2015 18:38
Pipelining, 1:a försöket
Exekveringstid i exemplet
●
Klockfrekvens begränsas av längsta väg från
register till nästa register
–
Instruktion LDR D,(S1,#L) ; opcode dest,src
–
tcycle = tpc + tImem + tRF + tALU + tDmem + tMPLX + tRF
●
Korta ned t cycle genom att läsa nästa
instruktion innan föregående är slut
–
Utan pipelining
t PC
Läs Imem
Läs RF
Kräver ett register mellan Imem och resten av
processor
ALU tMPLX
tMPLXSkriv RF
Läs Dmem
tid
Med pipelining
Läs RF
t PC
ALU t MPLX
tMPLXSkriv RF
Läs Dmem
Läs Imem
tPC
Läs RF
tPC
5
2015-01-05
TSEA28 Datorteknik Y 2015
6
2015-01-05
Pipelining: Fler steg
●
●
●
Läs operand
●
Beräkna (ALU-operation)
●
Minnesaccess
●
Skriv till registerfil
●
2015-01-05
Hoppaddress beräknas sent
●
Läsning från dataminne till register
●
Användning av registervärde innan värdet tillgängligt
TSEA28 Datorteknik Y 2015
tMPLXSkriv RF
Läs RF
TSEA28 Datorteknik Y 2015
–
AMD 64 (2004)
●
i7 Haswell pipeline (2013)
●
ARM11 (2002)
–
–
8
31 stegs pipeline
●
–
Ger andra problem
●
Läs Imem
Intel Pentium 4 (2004)
Borde ge upp till 5 gånger högre klockfrekvens
–
7
Hämta instruktion
Läs Dmem
Exempel på olika pipelinedjup
Kan dela upp instruktionen ytterligare (Ex 5 steg)
●
ALU tMPLX
2015-01-05
12 stegs pipeline
14 till 19 steg
8 steg
TSEA28 Datorteknik Y 2015
Läs Imem
ALU
05/03/2015 18:38
Hur pipelining adderas till
strukturen
●
9
Timing hos pipeline
Lägg in register i dataflödet
–
IR mellan instruktionsminne och registerfil
–
Register mellan registerfil och ALU
2015-01-05
TSEA28 Datorteknik Y 2015
●
10
11
2015-01-05
Måste få data i rätt klockcykel jämfört med
minnesadress
–
Styrsignaler måste hänga ihop med instruktionerna
TSEA28 Datorteknik Y 2015
Hela klockcykeln tillgänglig för beräkning/access
–
Fördröjer resultat 1 klockcykel per steg
–
Indikera vilken instruktion aktiv vid varje tidpunkt i
respektive register
TSEA28 Datorteknik Y 2015
Placera in register (flipflops)
S2data fördröjs 2 klockcykler innan minnet
–
–
2015-01-05
Flera klockcyklers fördröjning
●
Resultat från krets/minne passerar nästa
register efter stigande flank hos klockan
●
Även IR är klockad
–
12
2015-01-05
Olika delar i instruktion behövs vid olika tidpunkter
TSEA28 Datorteknik Y 2015
05/03/2015 18:38
Timingexempel Store
instruktion
●
Problem vid load
(minnesläsning)
Läs instruktion, hämta operander, beräkna
adress, skriv i minnet
–
●
Nästa Store instruktion kan starta direkt
–
●
13
2015-01-05
TSEA28 Datorteknik Y 2015
14
Ex: Add r0, r1,r2
Add R1,R0
Går inte läsa och skriva i RF
på samma adress samtidigt
–
Resultat från en instruktion skrivs tillbaks i register
efter 4 klockcykler, läsning från minne tar 5 cykler
–
Läsning av operander sker efter 2 cyckler
–
Kollision möjlig
TSEA28 Datorteknik Y 2015
Typer av data hazard
Möjligt problem om resultat från en instruktion
ska användas i nästa instruktion
;i
; i+1
Måste hålla destinationsadress en cykel längre
Lösning: Stall (stoppa aktivitet i alla andra
pipelinesteg)
2015-01-05
Data hazard exempel
●
Måste ge registerfil tid att spara värde från
minne
●
●
●
RAW
–
Läs efter skriv
–
Föregående instruktion har inte sparat resultat som
används i nuvarande instruktion
WAR
–
Skriv efter läsning
–
Vanligen inget problem (kommer i senare föreläsning)
WAW
–
Skriv efter skrivning
–
Vanligen inget problem (kommer i senare föreläsning)
Läs R0
Spara R0
15
2015-01-05
TSEA28 Datorteknik Y 2015
16
2015-01-05
TSEA28 Datorteknik Y 2015
05/03/2015 18:38
Hantering av RAW
Hantering av RAW
Det är inte en bugg, det är en feature...
●
Programmeraren/kompilatorn måste hålla reda på
databeroende och lägga till NOP (no operation)
–
Klockcykel
1
IF = Instruction Fetch
S = Stall
2015-01-05
2
3
4
5
TSEA28 Datorteknik Y 2015
18
2
3
4
Programmeraren behöver inte hålla reda på
databeroende
6
7
8
; destination R0
; destination R3
: källa R3, beror av instr. innan
; källa R3
9
OF = Operand Fetch OE = Operation Execution OS = Operand Store
2015-01-05
Hantering av RAW, alternativ
1
–
ADD R0,R1,R2 IF OF OE OS
ADD R3,R4,R5
IF OF OE OS
ADD R2,R3,R4
IF S S OF OE OS
ADD R6,R1,R3
IF OF OE OS
MOVE R0,#1
Op1: ADD R0,R1,R3
NOP
ADD R4,R0,#3 ; R0 = R1+R3
ADD R2,R0,#4 ; R0 = R1+R3
Klockcykel
Tvinga nästa instruktion vänta på data (Sänker
prestanda)
ADD R0,R1,R2
ADD R3,R4,R5
ADD R2,R3,R4
ADD R6,R1,R3
MOVE R0,#1
Op1: ADD R0,R1,R3
ADD R4,R0,#3 ; R0 = 1
ADD R2,R0,#4 ; R0 = R1+R3
5
●
–
Skicka data direkt från resultat till operand
–
Jämför destination för resultat med källregister
–
Kräver mer logik (jämförare mellan destination och
source samt multiplexer)
–
Förlorar ingen klockcykel
6
TSEA28 Datorteknik Y 2015
Forward, timing
Forward
●
–
Exempel
●
Om pipelinedjup ändras måste programmet
skriva om
●
17
Enkelt: STALL (ger ”bubblor” i pipeline)
●
Lös problemet genom att kräva minst en
instruktioner mellan varje databeroende
●
Exempel
ADD R1,R2,R3 ; Destination R1
ADD R4,R1,R5 ; Källa R1
7
ADD R0,R1,R2 IF OF OE OS
ADD R3,R4,R5
IF OF OE OS
ADD R2,R3,R4
IF OF OE OS
ADD R6,R1,R3
IF OF OE OS
IF = Instruction Fetch OF = Operand Fetch
OE = Operation Execution OS = Operand Store
19
2015-01-05
TSEA28 Datorteknik Y 2015
20
2015-01-05
TSEA28 Datorteknik Y 2015
05/03/2015 18:38
Problemet med hopp i pipeline
●
21
Styrkonflikt
Nästa instruktion hämtas innan hopp avkodats
–
Execute påverkar programräknare (PC)
–
Måste låta bli utföra två instruktioner
●
Gäller även subrutinanrop, avbrott etc.
●
Villkorliga hopp som inte tas kostar inget extra
2015-01-05
TSEA28 Datorteknik Y 2015
●
●
22
2015-01-05
–
Räkna med att alla hopp även utför en eller möjligen
två instruktioner efter hoppinstruktionen
–
Känt som ”Delayed branch”
–
Kan behöva lägga till NOP
TSEA28 Datorteknik Y 2015
Vid hopp uppstår bubblor i pipeline
–
23
Det är ingen bugg, det är en feature...
Alternativ beskrivning av
bubblor i pipeline pga hopp
Villkorliga hopp, kostnad
●
Alla förändringar av instruktionssekvensen
genererar styrkonflikter
2015-01-05
I exemplet nedan uppstår två tomma klockcykler
TSEA28 Datorteknik Y 2015
24
2015-01-05
TSEA28 Datorteknik Y 2015
05/03/2015 18:38
Förbättra hantering av hopp
●
Typer av hopp
Detektera hopp redan vid operandhämtning
●
Olika typer
–
Endast en klockcykel förloras
–
Ovillkorliga hopp
–
Ett hopp har ofta inga operander som behöver
hämtas
–
Villkorliga hopp tillbaks i loopar
–
Andra villkorliga hopp
●
●
BEQ label ; offset lagrad i IR som literal i instruktionen
●
●
●
25
2015-01-05
TSEA28 Datorteknik Y 2015
26
●
Vanliga instruktioner tar 1 klockcykel
–
Sannolikhet för en hoppinstruktion är pb
–
Sannolikhet för att hopp tas är pt
–
Hopp som tas kostar b klockcykler extra
–
Hopp som inte tas kostar inget extra (tar 1
klockcykel)
Lika sannolikt hopp inte tas som att det tas
TSEA28 Datorteknik Y 2015
Effektivitet beroende på antal
tagna hopp
Antaganden
–
Hopp tas ofta
Viktigt försöka minska påverkan av villkorliga
hopp som tas
2015-01-05
Kostnad för hopp
●
Hopp utförs alltid
●
Pe = PbPt, dvs sannolikt är det att
instruktionen är ett hopp som tas
–
Djup pipeline blir dyr när hopp tas
Medelvärde på antal klockcykler per
instruktion
T ave=(1− p b)⋅1+ p b⋅pt⋅(1+b)+ p b (1− p t )⋅1=1+ pb pt b
27
2015-01-05
TSEA28 Datorteknik Y 2015
28
2015-01-05
TSEA28 Datorteknik Y 2015
05/03/2015 18:38
Försök att minska antal hopp
●
Försök förutsäga hopp
Skapa instruktioner som tillåter villkorliga
operationer
–
●
ARM har t ex ADDEQ R1,R2,R3
●
Utför instruktionen endast om Z-flagga = 0
–
Möjliggör sekvensiell kod med villkor utan hopp
–
HP-PA har skip-next instruktion (villkorliga)
●
●
2015-01-05
●
Kan skapa if then else kod utan hopp
TSEA28 Datorteknik Y 2015
30
●
Kom ihåg om hoppet togs förra gången koden kördes
Sparas internt i processorn för varje villkorlig
hoppinstruktion som påträffas
●
●
31
●
Kan gissa, mer eller mindre rätt
Kan i vissa processorer ange i instruktionen om
hoppet oftast förväntas tas eller inte
–
Statisk hopp prediktering
–
Bestäms vid kompilering av koden
TSEA28 Datorteknik Y 2015
Olika hopp har olika gissning
–
Bättre lösning: Dynamisk hoppprediktering
–
Omöjligt att förutsäga villkorliga hopp
Om rätt gissning görs förhindras förlorade
klockcykler
Fler än 15% av alla hopp missas
–
–
Hopp prediktering,
implementering
Statisk hopp-prediktering missar många hopp
–
Fördröjning kan då undvikas då rätt instruktioner kan
hämtas och börja avkodas
2015-01-05
Att förutsäga hopp
●
–
●
Utför inte nästa instruktion om villkor sant
●
29
Om instruktionshämtaren i förväg vet att hopp
kommer göras kan den hämta instruktioner från
andra adresser
●
Spara gissning för varje enskilt villkorligt hopp
Dyrt minne (associativt cacheminne)
Begränsat antal adresser kan kommas ihåg. Samma
problem som med cache
Ännu bätte förutsägelse om inte bara det
senaste hoppet används som förutsägelse
2015-01-05
–
Majoritet av visst antal av senaste exekveringar kan
ange mest sannolika förutsägelse
–
Hysteres kan användas
TSEA28 Datorteknik Y 2015
32
2015-01-05
TSEA28 Datorteknik Y 2015
05/03/2015 18:38
Förbättrad Branch Target
Buffer
Hur branch prediction fungerar
●
Fortfarande dyrt att gissa fel
–
●
Tappar 2 klockcykler i exemplet
●
Problem med miss består i att instruktionen
inte kan börja avkodas
Lagra därför opcode från adress som inte
förväntas läsas
–
33
2015-01-05
TSEA28 Datorteknik Y 2015
34
2015-01-05
Två nivåers branch predictions
●
●
35
●
Vissa mönster kan finnas som kan säga mer om vilka
hopp som sannolikt kommer hända
Använd mönstret av senaste villkorliga hopp
för att välja en prediktor som användes senast
detta mönstret sågs
–
Branch pattern history
2015-01-05
TSEA28 Datorteknik Y 2015
TSEA28 Datorteknik Y 2015
Två nivåers branch prediction
Resultat från flera villkorliga hopp kan vara
korrelerade
–
Om fel förutsägelse så finns opcode redan tillgänglig
36
2015-01-05
Har troligen gått genom samma sekvens av villkorliga
hopp, och kommer då troligen göra samma val
framöver
TSEA28 Datorteknik Y 2015
05/03/2015 18:38
www.liu.se