Presentation laddar. Vänta.

Presentation laddar. Vänta.

2G1510 Datorteknik fk Föreläsning 1, hösten 2003.

Liknande presentationer


En presentation över ämnet: "2G1510 Datorteknik fk Föreläsning 1, hösten 2003."— Presentationens avskrift:

1 2G1510 Datorteknik fk Föreläsning 1, hösten 2003

2 Kursens upplägg ● Föreläsningar (9 stycken) ● Övningar (6 stycken) ● Laboration (1 labb i labbsal) ● Litteraturuppgift (1 forskningsartikel) ● Tentamen (4 timmar)

3 Laboration ● Implementationsteknik: mikroprogrammering ● Skriv mikroprogram för en enkel CPU ● Skriv enkla assemblerprogram och översätt till binär maskinkod ● Koppla ihop CPUns delar med sladdar ● Knappa in mikroprogram ● Knappa in binärt maskinkodsprogram och provkör

4 Litteraturuppgift ● Kursmål: läsa och förstå aktuell forskning ● Välj aktuell forksningsartikel (alla har olika) ● Läs, förstå, följ upp bakgrund med mera ● Gör en redig och intressant presentation av allt väsentligt i artikeln på 15–20 minuter

5 F/Ö/T ● Föreläsningar – hjälp vid studiet av kursbok – läsanvisningar kommer ● Övning 1 och 2 – hjälp inför laborationen ● Övning 3–6 – hjälp med typiska tentatal ● Tentamen – 4 timmar, miniräknare

6 Administration ● Boka labbtid – på papper – i samband med föreläsningarna ● Boka presentationstid och artikel – bokas alltid samtidigt – på papper hos mig, eller – med e-mail till mig ● Anmälan till tentamen 20 december 2003 – senast 7 december 2003 – mer information senare

7 En vanlig femstegspipeline FDEMW FDEMW FDEMW FDEMW tid

8 En superskalär femstegspipeline av grad 2 tid FDEMW FDEMW FDEMW FDEMW FDEMW FDEMW FDEMW FDEMW

9 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

10 Extra hårdvara ● Ökad bandbredd från instruktionscache ● Dubbla instruktionsavkodare ● Fler läsportar på registerfilen ● Bypassing ökar kvadratiskt (4n 2 ) ● Flera funktionsenheter - dubbel ALU ● Flera portar till datacacheminnet

11 Heltal parallellt med flyttal ● Instruktionsuppsättningen har ofta separata register för heltal och flyttal ● Funktionsenheterna är alltid separata ● Sällsynt med beroenden mellan heltals- och flyttalsinstruktioner ● Separata bypassvägar

12 Mer att göra för avkodaren ● Ska upptäcka beroenden ● Ska skicka instruktioner till rätt enhet ● Mer att göra tar längre tid - superskalära datorer har ofta 2-3 avkodningssteg ● PPro/II/iii har 3-7 steg, beror på hur man räknar

13 Ny pipeline ● Två avkodningssteg, Decode och Register read ● Hoppinstruktioner:  Efter D-steget vet vi vart vi ska hoppa  Efter R-steget vet vi om vi ska hoppa FDREMW

14 Hopp blir dyrt tid FDREM FD--- F---- FDREM FDR-- FD--- F---- FDREM W - - W - - - W

15 Branch penalties ● Misfetch penalty (1 cykel, D-steget) – förlorad tid när man hämtat ett hopp och gissar rätt att man ska hoppa ● Mispredict penalty (2 cykler, D + R) – förlorad tid vid felgissning – först i R-steget vet man att gissningen var fel FDREMW Samtidigt hämtas alltid nästa instruktion i ordningsföljd

16 Superpipelining ● startar en instruktion per klockcykel ● har extra kort cykeltid – E1 och E2 behövs för ALU, en beroende instruktion kan inte starta i cykeln efter F1F2D1D2E1E2M1M2W1W2 FDEMW vanlig femstegspipeline superpipelinad av grad 2

17 Exempel ● Pentium Pro/II/iii, Pentium 4 är superpipelinade ● Exec tar 1 steg, decode tar många - ojämnt! Pentium: 5 steg PPro/II/iii: 10 steg P4: 20 steg

18 Latens (latency) ● Latens - cykler tills resultat kan användas ● ALU-instruktioner har ofta latens 1 – beroende instruktion kan köras i nästa cykel - men inte i samma! ● LOAD i femstegpipeline har latens 2 ● Hopp har ofta lång latens – särskilt när hoppgissningen misslyckas

19 Genomsnittlig grad av superpipelining ● Anta: – Om Load och hopp har latens 3, ALU 1 – Load och hopp är vardera 25% av de utförda instruktionerna ● Genomsnittlig grad av superpipelining: – 0,25 x 3 + 0,25 x 3 + 0,50 x 1 = 2,0

20 Tolkning ● Värdet 2 betyder att: – det program som körs bör vara sådant att det för det mesta finns 2 saker att göra samtidigt – i genomsnitt ska varje instruktion följas av en oberoende instruktion ● Det finns gränser för hur mycket som finns att göra samtidigt i typiska program – värden på 2-4 är rimliga, knappast mer

21 Nivåer i datorsystem ● kompilering – avancerad översättning ● assemblering – rak översättning ● interpretering – hämtfas, utförandefas fast med program ● exekvering – samma som körning C-kod assemblerkod maskinkod mikroprogram hårdvara kompilering assemblering interpretering exekvering

22 Antalet operander/instruktion ● 0 - stackmaskin – ADD - adderar värdena överst på stacken, tar bort dem och lägger dit summan ● 1 - ackumulatormaskin – ADD X - adderar innehåll i ackumulatorn och innehåll i minnescell X, summan i ackumulatorn ● 2 - tvåadressmaskin - ADD R1,R2 ● 3 - treadressmaskin - ADD R1 <- R2 + R3

23 Antalet minnesadresser/instruktion ● 0 – registermaskin (som MIPS, Nios, Sparc) särskilda Load- och Store-instruktioner finns ● 1 – register-minne (x86) ● 2 – minne-minne (ovanligt numera) ● 3 – minne-minne (också ovanligt)

24 Exempel: stackmaskin ● Kod för C = A + B – push A; innehåll i minnescell ; med adress A läggs på stacken – push B – add – pop C; översta värdet på stacken tas ; bort och skrivs till minnescell ; med adress C

25 Exempel: ackumulatormaskin ● 1 operand/instruktion, 1 minnesadress/instruktion ● Kod för C = A + B – Load A; innehåll i minnescell med ; adress A kopieras till ackumulator – Add B – Store C; innehåll i ackumulator kopieras ; till minnescell med adress C

26 Exempel: registermaskin av register-register-typ ● 3 operand/instruktion, 0 minnesadresser/instruktion ● Kod för C = A + B – Load R1,A – Load R2,B – Add R3 <- R1 + R2 – Store R3,C

27 De första datorerna var ackumulatormaskiner ● Varje bit som skulle lagras i processorn krävde flera elektronrör ● Instruktioner kan kodas enkelt och ändå kompakt ● x86-arkitekturen är en utbyggd ackumulatormaskin

28 Stackmaskiner – eleganta men opraktiska ● Endast två värden är enkelt tillgängliga ● Ett värde som återanvänds i ett uttryck kan behöva läsas från minnet flera gånger ● Aritmetiska uttryck lätta att kompilera till program för stackmaskin ● aktuell stackmaskin: Java Virtual Machine

29 Register-register-maskin, Risc ● Risc: enkelt instruktionsformat, lätt att avkoda ● Många register – lätt att kompilera för ● Lätt att konstruera pipelinade processorer ● Programmen större än för andra typer – instruktionerna är inte kompakt kodade – programmen innehåller fler instruktioner än för datorer med operander i minnet

30 Operandutpekning ● Operand: värde som används i beräkningen ● Immediate: operanden finns i instruktionen ● Register: operanden finns i ett register ● Om operanden finns i minnet så existerar effektivadressen: adressen till den minnescell där operanden finns

31 Varför immediate behövs ● För konstanter ● Konstanterna finns i koden, bra eftersom – värdet är snabbt tillgängligt – värdet tar inte upp plats i ett register – koden ändras inte under körning, "konstanter" som ändras kan ge svårfunna fel

32 Goda tumregler för processorkonstruktörer ● Ortogonalitet: operationer, datatyper, adresseringssätt ska kunna väljas oberoende av varandra – underlättar kodgenereringen ● Erbjud byggblock, inte specialinstruktioner ● Gör det lätt att se hur snabb koden blir

33 Multimediainstruktioner ● Grafik använder små heltal (8 bitar) ● 8 små heltal ryms i ett 64-bits register ● Operationer utförs på 8 tal samtidigt ● Bryt carry-kedjan, använd vanliga ALU:n ● Idéer lånade från vektordatorer, men de var mer flexibla

34 Multimediainstruktionernas brister ● Vektorelement som ska laddas till register är ofta utspridda i stället för intilliggande ● Vektordatorer: load/store för utspridda data – strided addressing: t ex vart 3:e element – gather/scatter: en vektor med pekare anger vilka vektorelement som ska laddas/lagras ● Multimediatillägg saknar denna adressering

35 En dålig idé: delayed branch ● Definition: instruktionen efter ett villkorligt hopp utförs alltid, även om hoppet tas ● Idealiskt i femstegspipeline ● Problematiskt i alla andra pipelines

36 En dålig idé: registerfönster ● En Sparc-processor har 48-528 register, men bara 32 i taget är tillgängliga ● R0-R7 är globala (och R0 innehåller alltid 0) ● R8-R31 ingår i registerfönstret ● Fönstret ändras i steg om 16 med instruktionerna save/restore

37 save (funktionsanrop) restore (retur från funktion)

38 Varför registerfönster är en dålig idé ● Registerfönster optimerar anrop till och retur från funktioner/procedurer/metoder ● Vid processbyte har man 47-527 register som ska sparas (R0 är borträknat) ● Processbyte inträffar oftare än funktionsanrop

39 Dåliga idéer kan vara bra ● Ett par dåliga idéer räcker inte för att slå ihjäl en instruktionsuppsättning ● Delayed branching bidrog till att höja prestanda när Risc var nytt och okänt ● Registerfönster skapade intresse för Sparc ● Med tiden får man tillräckligt med kisel för bra prestanda trots gamla dåliga idéer


Ladda ner ppt "2G1510 Datorteknik fk Föreläsning 1, hösten 2003."

Liknande presentationer


Google-annonser