Varför inte köra alla instruktioner samtidigt? zMåste vänta på: yresultat från andra instruktioner yatt resurser i processorn ska bli lediga yatt få veta.

Slides:



Advertisements
Liknande presentationer
Årtrening – 7er Syfte: • Få hela årgången att bli en stor träningsgrupp. Varför: • Bredare kompetens från ledare. • Från ”mitt lag” till ”min förening”.
Advertisements

Nya skolan till hösten Projektarbete En personlig dator Aktivt lärande
Sätt kryss vid ett av följande alternativ:
IT för personligt arbete F5
Visual Basic - Genomgång
PowerPoint laget av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
VI SKA GÖRA DET BÄSTA LUCIATÅGET NÅGONSIN!
Vår tids paradox Klicka för nästa sida .
God Jul ? Du behöver inte vänta till Jul….
PRUTA INTE MED DIG SJÄLV!
SSQ12-B Instruktioner Namn Datum Ålder
Vad är ett språk?. Språkstörning/dyslexi – likheter och skillnader, kartläggning och pedagogiska åtgärder/insatser.
Boo Fotbollsförening - en förening att vara stolt över Boo FF vill tacka er för året och önska er alla ett riktigt skönt avslut på 2013 Vinterträningen.
Macro DB Ett användarperspektiv!. Projektfilen börjar fyllas! Den ligger i mappen Macro DB och heter ”Projects.mdb”. Den kan bli full! Tips! Direkt.
Föreläsning1. • Boken?!?! • Vad är ett program? • Kompilerande-Interpreterande • Programmeringsmiljö • Hello World! • Att programmera och ett enkelt program.
God Jul Du behöver inte vänta till Jul…
HÖRA LÄSA MÅL KURS C SKRIVA PRATA.
Datorarkitekturer och operativsystem
Ålder Namn Datum SSQ12 SSQ12 Instruktioner Jag använder en hörapparat (vänster öra) Jag använder en hörapparat (höger öra) Jag använder två hörapparater.
Boo FF vill tacka er för året som gått och önska alla en God Jul och ett Gott Nytt År! Vinterträningen är igång, planerna var vita i måndags men är nu.
Persondatorer Datorns internminne (Kapitel 6)
Programmeringsteknik I: F1 1 Föreläsning 1: Intro till kursen och programmering Kursens hemsida Studentportalen.
Övning nationella prov svenska
23 August 2014 IS1200 Datorteknik vt09, föreläsning 10, (E och I mfl)1 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory.
Skrivning i cacheminnen zTräff zMiss zSkrivbuffert.
Run Coach Scenario: Du har har en fysisk skada. Med hjälp av sjukgymnastik och denna app ska du komma på benen och bli ditt vanliga jag igen. Din sjukgymnast.
Tunneln Av: lovisa ♥. Val av plats  Jag valde vägen mellan gallerian och synsam. Först tänkte jag välja utanför bibblan men jag visste jag inte vad jag.
Övergripande inriktning för samhällsskydd och beredskap
God Jul Du behöver inte vänta till Jul…
PROCESSPROGRAMMERING
EVA OCH CLAES – En berättelse om våld och brott i nära relationer.
HJÄRNGYMPA.
Debattera.
Tryck på F5 för att börja. ”Klicka” sedan för att fortsätta.
SIM TEAM.
Toe taps. Hook turn. U turn. Step on. Twist of outside. Inside fake
Gillar du att angla? Trött på att vänta på att isen ska lägga sig på sjön?
Föräldrasmart Föräldrasmarta ® Företag – vad, varför, hur? Tiina Bruno, Föräldrasmart Sverige AB.
Människan Vi människor har en överlägsen hjärna och en unik hand med tumme. Människans första steg mot att bli människa togs när hon började använda.
hf c vf hb vb Kållins frislagsvariant:
2G1510 Datorteknik fk Föreläsning 1, hösten 2003.
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
Instruktioner Hur man skriver.
INTERVJU - förarbetet Vad är du intresserad av?
Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —
Cacheminnen: skrivning ● Träff ● Skrivbuffert ● Miss.
Varför inte köra alla instruktioner samtidigt? zMåste vänta på: yresultat från andra instruktioner yatt resurser i processorn ska bli lediga yatt få veta.
God Jul Du behöver inte vänta till Jul…
Inledning och avslutning
William Sandqvist ReadModifyWrite-problemet PORTB = 0; PORTB.0 = 1; PORTB = PORTB; Vilket värde har portpinnen RB1 nu ? Förmodligen ”1”,
Matlab på klustret Lotka. Nya dataprogram som behövs Putty, terminalfönster därifrån startar man sina program. Vi börjar med ett enkelt exempel.
Antalet operander/instruktion z0 - stackmaskin yADD - adderar värdena överst på stacken, tar bort dem och lägger dit summan z1 - ackumulatormaskin yADD.
Leva tillsammans.
1 Föreläsning2 Operativsystem. 2 Talsystem Decimal (bas 10): 0,1,2,…,8,9 Binär talsystem (bas 2): endast 1 och 0 Hexadecimal talsystem (bas 16): 0,1,…9,A,…,E,F.
Styrteknik 7.5 hp distans: PLC-delprogram, tasks TASKS:1
FUNDERA PÅ: Vilken sida kommer att tippa neråt? Nu då? Varför? 10 kg20 kg 10 kg20 kg.
Föreläsning2 Operativsystem.
30 July 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion.
Att skriva en insändare
15 August 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion.
VARMT VÄLKOMMEN till utbildning i EPiServer 8
Tallriksmodellen. Vad åt du till frukost, lunch?
Ska Sverige ha dödsstraff eller inte?
Det var en gång Berätta Sagan om den lilla lilla gumman.
Python.
Instruerande text.
VISA DENNA BILD: INLEDNING
SPELARUTBILDNINGSPLAN ANFALLSSPEL – DRIVA 2
Optisk illusion Rör det på sig, eller inte? Går det upp, eller ned? Finns det där, eller inte? Man tappar verkligen begreppet om saker och ting.
Presentationens avskrift:

Varför inte köra alla instruktioner samtidigt? zMåste vänta på: yresultat från andra instruktioner yatt resurser i processorn ska bli lediga yatt få veta om instruktioner efter ett villkorligt hopp ska köras

Exempel zadd skriver ett värde i R1 zsub ska läsa värdet - måste vänta på add FIALUMEMWBFO FIALUMEMWBFO add r1 <- r2 + r3 sub r4 <- r1 + r5

Åtgärder zAnalys zStatisk optimering (i kompilatorn) zDynamisk optimering (i processorn)

Analys zDela in koden i kodblock (basic blocks) zSamband mellan kodblock y- hoppgissning zInom kodblock yberoenden, resurskonflikter y- schemaläggning

Kodblock (basic blocks) zLäge börjar nytt block (det förra slutar precis innan) zHopp avslutar block (och nästa börjar precis efter)... instr LÄGE:instr instr BEQ R1,PLATS instr...

Kodsnutt zi1 L1:LOADR1 <- 8(R2) ; R1 <- hm(r2 + 8) zi2 LOADR4 <- 4(R1) ; R4 <- hm(r1 + 4) zi3 LOADR5 <- 8(R4) ; R5 <- hm(r4 + 8) zi4 ADDR1 <- R6 + R7 ; R1 <- r6 + r7 zi5 SUBIR8 <- R1 - #4 ; R8 <- r1 + 4 zi6 ADDR9 <- R4 + R1 ; R9 <- r4 + r1 zi7 BNEZR9,LABEL ; hopp till LABEL om r9 != 0 zi8 ADDIR4 <- R0 + #17 ; R4 <- 17 ty r0 == 0 zi9 ADDIR2 <- R1 + #4 ; R2 <- r1 + 4 zi10 JUMPL1

Indelning i kodblock zi1 L1:LOADR1 <- 8(R2) ; R1 <- hm(r2 + 8) zi2 LOADR4 <- 4(R1) ; R4 <- hm(r1 + 4) zi3 LOADR5 <- 8(R4) ; R5 <- hm(r4 + 8) zi4 ADDR1 <- R6 + R7 ; R1 <- r6 + r7 zi5 SUBIR8 <- R1 - #4 ; R8 <- r1 + 4 zi6 ADDR9 <- R4 + R1 ; R9 <- r4 + r1 zi7 BNEZR9,LABEL ; hopp till LABEL om r9 != 0 zi8 ADDIR4 <- R0 + #17 ; R4 <- 17 ty r0 == 0 zi9 ADDIR2 <- R1 + #4 ; R2 <- r1 + 4 zi10 JUMPL1 A B Indelning i kodblock

Kodblockets egenskap zKörs en instruktion i blocket, så körs alla zUndantag: felavbrott (exceptions)

Kontrollflödesgraf (CFG) B JUMP L1... X JUMP L1 LABEL: Y... L1: A BNEZ R9,LABEL

Kontrollberoende zInstruktioner efter ett hopp (block B) är kontrollberoende av hoppet zHoppinstruktionen måste köras först så att man vet om B ska köras

Hoppgissning zFöre körning - statisk yprovkörning + omkompilering ytumregler - enklare, mindre exakt zUnder körning - dynamisk yöverblick saknas men statistiken helt aktuell

Terminologi Fall-through = branch not taken = hoppet togs ej Branch taken = hoppet togs zi7 BNEZR9,LABEL ; hopp till LABEL om r9 != 0 zi8 ADDIR4 <- R0 + #17 ; R4 <- 17 ty r0 == 0 … zLABEL:

Dynamisk hoppgissning Programräknare Adress till nästa instruktion De n minst signifikanta bitarna i adressen till nästa instruktion Giss- nings- tabell Instruktions- cacheminne

1-bits dynamisk hoppgissning z1 bit på varje plats i gissningstabellen zGissar att villkoret blir som förra gången for( i = 1; i < M; i++ ) for( j = 1; j < N; j++ ) loop_body(); zEfter N varv: felgissning + ändring zFörsta varvet därefter: felgissning igen

2-bits dynamisk hoppgissning zTvå felgissningar före ändring av gissning not taken taken not taken taken predict not taken (gissa att hopp inte tas) predict taken (gissa att hopp tas) z"Räknaralgoritmen" (saturating counter) 0123

Statisk hoppgissning zProvkörning med indata (profiling) yhoppinstr på adress $47110: 0,1% taken yhoppinstr på adress $47124:91,2% taken... yomkompilering där statistiken utnyttjas zTumregler (heuristics) yKontrollflödesgrafen analyseras yBall & Larus: Branch Prediction For Free

Efter hoppgissning: spekulation zSpekulativ exekvering = En instruktion körs innan man vet att den ska köras z - statisk z - dynamisk

Statisk spekulativ exekvering zKompilatorn flyttar instruktioner förbi hopp BNEZR9,LABEL ADDIR4 <- R0 + #17 zÄr detta tillåtet? Krav: ysafeness ylegality

Safeness zInstruktionen får inte ge felavbrott BEQZR7,L3; hopp om r7 == 0 LOADR2 <- 0(R7) zFlyttningen är unsafe och alltså otillåten yFöre flyttning: programmet kollar pekaren yEfter flyttning: felavbrott om pekaren är noll

Legality zInstruktionen får inte skriva över data som (kanske) behövs senare BEQZR1,L4 ADDR8 <- R5 + R6 L4:SUBIR9 <- R8 - #17 zFlyttningen illegal, fel värde i R8 vid hopp

En tillåten flyttning BNEZR9,LABEL ADDIR4 <- R0 + #17 zsafeness: OK, r ger ej overflow zlegality: OK, R4 skrivs ändå vid LABEL LABEL:ADDIR4 <- R0 + #43...

Dynamisk spekulativ exekvering zInstruktioner efter ett hopp utförs zWriteback stoppas om gissningen var fel zBehandling av felavbrott skjuts upp zÄven instruktioner där hoppet landar (branch target) kan hämtas och utföras

Analys inom ett kodblock zDataberoenden zRegisterberoenden zResurskonflikter

Databeroende FIALUMEMWBFO FIALUMEMWBFO add r1 <- r2 + r3 sub r4 <- r1 + r5 zadd producerar värde, sub konsumerar zavspeglar dataflödet genom programmet zflow dependence, true data dependence zRAW (Read After Write) zLäsningen måste vänta på skrivningen

Dataflödesgraf (DFG) i1i2i3i4i5i6i7 RAW R4RAW R1 RAW R9 zEndast RAW-beroenden zEndast inom ett kodblock RAW R1RAW R4

Varning, fälla! zi1 L1:LOADR1 <- 8(R2) ; R1 <- hm(r2 + 8) zi2 LOADR4 <- 4(R1) ; R4 <- hm(r1 + 4) zi3 LOADR5 <- 8(R4) ; R5 <- hm(r4 + 8) zi4 ADDR1 <- R6 + R7 ; R1 <- r6 + r7 zi5 SUBIR8 <- R1 - #4 ; R8 <- r1 + 4 Detta är inget databeroende (inget RAW-beroende) ! Det inte är samma data som läses! x

Registerberoenden: WAR zadd skriver över r1 zsub måste köras först för att få rätt värde zantidependence zWAR (Write After Read) zSkrivningen måste vänta på läsningen sub r4 <- r1 + r5 add r1 <- r2 + r3

Registerberoenden: WAW sub r1 <- r4 + r5 add r1 <- r2 + r3 zBåde sub och add skriver r1 zadd måste köras sist, så att det blir rätt värde i R1 efteråt zoutput dependence zWAW (Write After Write) zSkrivningarna ska göras i rätt ordning

Beroendegraf i1i2i3i4i5i6i7 RAW R1RAW R4 RAW R1 RAW R9 zRAW, WAR, WAW zEndast inom ett kodblock WAR R1 WAW R1 Beroendegraf

Kompilatorn gör zRegisterallokering (register allocation) -avgör när en variabel ska finnas i register zRegistertilldelning (register assignment) -avgör vilket register en variabel ska finnas i vid ett visst tillfälle

Registerallokering och registertilldelning kan göras: zLokalt = inom ett kodblock zGlobalt = inom en procedur (men över flera kodblock) zInterprocedurellt = över flera procedurer

Renaming i processorn zRegisteromdöpning (renaming) zEtt antal extraregister utan nummer zKan ej styras av programmeraren zLagrar gamla värden som skrivits över tills instruktionen som behöver värdet körs

Resurser i processorn zFetch bandwidth = hämtade instr./cykel zLäsportar på registeruppsättningen zALU-enheter zSkrivportar till cacheminnet z...

Instruktionsschemaläggning zInstruktioner kan flyttas om, så att processorns resurser utnyttjas bättre zKan göras statiskt (av kompilatorn) eller dynamiskt (av processorn) zKan göras lokalt (inom kodblock) eller globalt (inom procedur)

Precisa felavbrott zDynamisk instruktionsschemaläggning ger problem: var var man vid felavbrottet? zPrecisa avbrott: det går att peka ut en instruktion, så att den och alla tidigare instruktioner är helt utförda, och alla senare instruktioner inte är utförda alls.

Hårdvara för precisa avbrott zHoppgissning i alla nya processorer zFelgissade hopp händer ofta, måste klaras zHårdvara för att ångra felspekulation finns zSamma kretsar används vid felavbrott

Sammanfattning (1) zKontrollberoenden yvar 5:e instruktion ett hopp yhoppgissning, spekulation zDataberoenden (RAW) yomöjliga att gå runt ysnabbare hårdvara enda chansen

Sammanfattning (2) zRegisterberoenden (WAR, WAW) yflera register ybättre registerallokering zResurskonflikter ymera resurser yinstruktionsschemaläggning yWAR, WAW specialfall av resurskonflikter