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

Slides:



Advertisements
Liknande presentationer
IT för personligt arbete F5
Advertisements

Talföljder formler och summor
ClaroReadPro V5 B engt Österlind Solna Skoldatatek 18 november 2009.
X-mas algebra Är du redo? Klicka!!.
En genomgång av spelet: Dubbelkrig-Grön
MaB: Ekvationssystem Allmänt
Föreläsning 7, Kapitel 7 Designa klasser Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Access med Sebastian och Robert
Föreläsning1. • Boken?!?! • Vad är ett program? • Kompilerande-Interpreterande • Programmeringsmiljö • Hello World! • Att programmera och ett enkelt program.
FL4 732G70 Statistik A Detta är en generell mall för att göra PowerPoint presentationer enligt LiUs grafiska profil. Du skriver in din rubrik,
Publicera användbar information Erik Geijer tydligare.se Internetdagarna
Datorarkitekturer och operativsystem
Funktioner och programorganisation
En övning i att formulera sig matematiskt
Vill du lära dig kort division?
PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
Webbanmälan till högskolestudier vt 2015
Programmeringsteknik I: F1 1 Föreläsning 1: Intro till kursen och programmering Kursens hemsida Studentportalen.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
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.
Elektromagnetism och vågrörelselära 2B1350
Denna föreläsning zVad kursen handlar om zKursupplägg, litteratur, bra att veta zPrestanda - ämnet för dagen.
En vanlig femstegspipeline FDEMW FDEMW FDEMW FDEMW tid.
En vanlig femstegspipeline FDEMW FDEMW FDEMW FDEMW tid.
Välkommen Vahid Mosavat
Programmeringsteknik K och Media
Grundläggande programmering
9 September 2014IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
En PowerPoint om PowerPoint
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Programmering B PHP Lektion 2
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Programmering B PHP Lektion 3
Grundläggande programmering
Bildfabriken kan ställas in på olika sätt - se några exempel
Global uppvärmning Vad gör vi åt det?.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 11 J-uppgiften. Nästa period ägnas åt J-uppgiften. Den är individuell, dvs man jobbar på egen hand med uppgiften (inte tillsammans med labbkompisen).
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
INTRODUKTION TILL PROGRAMMERING
Att skriva dikter.
Välkommna! till kursen HI1024 Programmering, grundkurs 8,0 hp
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
IS1200 Datorteknik Föreläsning CE F2 Vi bygger en processor Kursboken, delar av kapitel 7 31 March IS1200 Datorteknik föreläsning CE – F2.
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.
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.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Antalet operander/instruktion z0 - stackmaskin yADD - adderar värdena överst på stacken, tar bort dem och lägger dit summan z1 - ackumulatormaskin yADD.
Per DelsingFig. 1 Per Delsing Sensorer och brus Föreläsning II Administration –Inlämningsuppgifter, returer –Labbar –Tentamen Störningar Lock-in Brus i.
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.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
Föreläsning2 Operativsystem.
22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion.
Föreläsning 1 Introduktion till kursen. Algoritmer
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
William Sandqvist KIA’s fabrik i Slovenien En bil i minuten lämnar bandet – tar det en minut att bygga en bil? Nej för KIA's fabrik utanför.
Lars Madej  Talmönster och talföljder  Funktioner.
Grundläggande datavetenskap, 4p
I vissa datorer behöver du trycka på F5 för att starta bildspelet
Kombinatoriska byggblock
Kombinatoriska byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

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

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

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

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

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

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

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 ● Ö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

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

En dålig idé: registerfönster ● En Sparc-processor har 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

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

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 register som ska sparas (R0 är borträknat) ● Processbyte inträffar oftare än funktionsanrop

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