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
© Copyright 2025