730 likes | 959 Vues
IS1200 Datorteknik. Föreläsning 1 Introduktion. Välkommen till IS1200 Datorteknik. ”Hur datorer fungerar” Kursens hemsida finns utpekad från: http://www.ict.kth.se/courses/IS1200 emailadress till lärare: is1200_teachers@ict.kth.se Kursansvarig: Johan Wennlund. IS1200 Datorteknik.
E N D
IS1200 Datorteknik Föreläsning 1 Introduktion IS1200 Datorteknik, föreläsning 1
Välkommen tillIS1200 Datorteknik ”Hur datorer fungerar” Kursens hemsida finns utpekad från: http://www.ict.kth.se/courses/IS1200 emailadress till lärare: is1200_teachers@ict.kth.se Kursansvarig: Johan Wennlund IS1200 Datorteknik, föreläsning 1
IS1200 Datorteknik • Föreläsningar, 10 st (2x45min) • Övningar, 10 st (2x45min) • Laborationer, 6 st 3 st a’ 4 tim i lablokal, 2 elever per grupp 3 st redovisas muntligt ~50 min/2 elever • Tentamen, (5 tim) 6 uppgifter a’ 10p, 30p ger G • Kurs-anmälan vid Föreläsning 1 (dvs nu!) IS1200 Datorteknik, föreläsning 1
Ö10 F10 Hemlab-3 Hemlab-2 Hemlab-1 Ö2 Ö1 Ö3 Ö5 Ö7 Ö8 Ö9 Ö6 Ö4 F1 F5 F7 F8 F4 F6 F9 F3 F2 Tentamen LAB-2 LAB-3 LAB-1 IS1200 Datorteknikhttp://www.ict.kth.se/courses/IS1200 Assemblerkod 4 stegs pipeline Nios2time C-kod Nios2io Nios2int Cache-minnen CPU-scheduling IS1200 Datorteknik, föreläsning 1
Kurslitteratur • Mats Brorsson: Datorsystem Program- och maskinvara • OH-bilder från föreläsningar 1-10, på hemsida • Exempelsamling del 1-10, på hemsida • Lab-PM del 1-6, från hemsidan • Nios2 – manual , på hemsida • Enstaka blad från hemsidan IS1200 Datorteknik, föreläsning 1
Laborationer Assemblerprogrammering av Nios-processorn • Assembler-programmering på Nios-processorn • I/O på Nios-processorn • Avbrottshantering på Nios-processorn Hemlaborationer • Maskinnära programmering med C • Minnessystem med cache-minnenPrestanda påverkas av parametervärden • Operativsystem, Fördelning av CPU-tidSamverkan mellan processer med semaforer IS1200 Datorteknik, föreläsning 1
IS1200 DatorteknikLärare: • Johan Wennlund, kursledare, föreläsare, Övn och lab • Fredrik Lundevall, biträdande kursledare, Övn och lab • Jan Andersson, Övn och lab • Olle Bowallius, Övn och lab • William Sandqvist, Övn och lab • Gunnar Johansson, la IS1200 Datorteknik, föreläsning 1
Kursen i förhållande till andra kurser Förkunskaper • Elektronik/Digitalteknik - NAND-grindar etc • Datalogi - programmering C/Java Innehåll i efterföljande kurser inom områden • Datorkomm. och Datornät • Operativsystem • Datorteknik fk, Datorarkitektur • Embedded Systems, SystemOnChip Architecture • Parallella Datorsystem • Concurrent Programming IS1200 Datorteknik, föreläsning 1
IS1200 Datorteknik Datorns funktion på olika nivåer från JAVA/C-kod till NAND-grind • Programexempel: sum = 0 ; for (i=1; i<=17; i=i+1) sum = sum + i; • Exempel på digitala komponenter: IS1200 Datorteknik, föreläsning 1
IS1200 Datorteknik • Föreläsning 1, innehåll • CPU - BUS – MEM – I/O • Fetch - Execute • Instruktioner och Data • Instruktionsformat • Adressering - operandutpekning • Hoppinstruktioner IS1200 Datorteknik, föreläsning 1
Litteraturhänvisningar • Kursboken, valda delar av kapitel 1,2 och 4 • 1.1 -- 1.3 läses kursivt • 1.4 -- 1.6 läses • Kap 2: principer, ej MIPS-kod • 4.1 -- 4.3 principer, ej MIPS-kod • 4.4 Kopplingen till C, ej MIPS-kod IS1200 Datorteknik, föreläsning 1
Programexempel 1 • Java-/C-kod int A, B, C; /* variabler, data */ ... C = A + B; /* program, code/text */ ... IS1200 Datorteknik, föreläsning 1
Program i Java/C-kodkompileras/översätts tillASSEMBLER-kod int A, B, C; /* variabler, data */ • översätts (kompileras) till assembler-kod .data # nu kommer data .align 2 # på adress delbar med 4 A: .word 0 # plats för en integer /32 bitar B: .word 0 # plats för en integer /32 bitar C : .word 0 # plats för en integer /32 bitar IS1200 Datorteknik, föreläsning 1
Program i Java/C-kodkompileras/översätts tillASSEMBLER-kod C = A + B; /* program, code/text */ • översätts (kompileras) till assembler-kod .text # nu kommer programkod .align 2 # på adress delbar med 4 LOAD R1 <-- A LOAD R2 <-- B ADD R3 <-- R1 + R2 STORE C <-- R3 IS1200 Datorteknik, föreläsning 1
Program i ASSEMBLER-kod assembleras/översätts tillMaskinkod / binärkod # maskinkod/binärkod #kommentarer 0010 1101 1111 …. 1101 #LOAD R1 <-- A 0010 1101 1110 …. 1101 #LOAD R2 <-- B 1001 1101 0101 …. 1111 #ADD R3 <-- R1+R2 0011 1111 1101 …. 0010 #STORE C <-- R3 # hur många bitar? IS1200 Datorteknik, föreläsning 1
Viktiga delar i en dator CPU BUS I/O MEM Jämför med kursbokens Figur 1.5 En maskinvaruorienterad vy av ett datorsystem. IS1200 Datorteknik, föreläsning 1
Viktiga delar i en dator • MEM - Memory/Minne innehåller program och data (Minne = Lagringsplats) • CPU - Central Processing Unit; den enhet som ”kör program” dvs hämtar och utför instruktioner • IO - Input/Output; enheter för kommunikation med omvärlden • BUS; kommunikation mellan CPU/MEM/IO IS1200 Datorteknik, föreläsning 1
(decode) EXECUTE Programexekvering FETCH (update PC) IS1200 Datorteknik, föreläsning 1
Programexekvering • FETCH • PC - Program Counter innehåller en minnesadress som pekar ut aktuell instruktion. • Kopiera en instruktion från minne till processorns IR - Instruction Register • Uppdatera PC för att peka ut nästa instruktion (öka med 1/2/4 ...) IS1200 Datorteknik, föreläsning 1
Programexekvering • EXECUTE • Decode - Avkoda innehållet i IR – Instruction Register dvs lista ut vilken intruktion som bitkoden i IR motsvarar • Execute - Utför denna instruktion IS1200 Datorteknik, föreläsning 1
Minne Generella register Programräknare R0 PC R1 R31 Processorn(t.ex Nios eller MIPS eller …) Jämför med kursbokens Figur 2.3 En enkel modell av MIPS-arkitekturen med minne. IS1200 Datorteknik, föreläsning 1
Programexempel 1 PROGRAMRÄKNAREE PROGRAM COUNTER MINNE uppdatera öka med vad? 4 eller 2 eller LOAD LOAD ADD STORE PROGRAM (.text) LOAD LOAD A:B:C: DATA (.data) ADD STORE IS1200 Datorteknik, föreläsning 1
Assembler-InstruktionenLOAD Rdst <-- A • LOAD: Läs/Kopiera från minne till register • Destinationsplats är Rdst • Källoperanden finns i minnet på adress A • Effektivadressen till källoperanden är A • En läsning från minnet i Fetch • En läsning från minnet i Execute IS1200 Datorteknik, föreläsning 1
Assembler-InstruktionenSTORE C <-- Rsrc • STORE: Skriv/Kopiera från register till minne • Källoperand finns i Rsrc • Destinationsplats i minnet på adress C • Effektivadressen till destinationen är C • En läsning från minnet i Fetch • En skrivning till minnet i Execute IS1200 Datorteknik, föreläsning 1
Assembler-InstruktionenADDITION, variant 1 • ADD Rdst, Rsrc1 , Rsrc2 Utför addition av två värden, som vardera upptar 32 bitar, hämtade från register Rsrc1 och Rsrc2 och skriver summan till register Rdst • En läsning från minnet (Fetch) • Rdst <-- Rsrc1 + Rsrc2 IS1200 Datorteknik, föreläsning 1
INSTRUKTIONSFORMAT binärkodsformat ADD Rdst, RsrcA, RsrcB ADD 6 5 5 5 bitar per fält Hur många bitar behövs ? 3 regadr + opcode ! Hur stor blir varje instruktion ? 21 bitar ! INSTRUKTIONSFORMAT enligt ovan IS1200 Datorteknik, föreläsning 1
INSTRUKTIONSFORMAT Binärkod i Nios II, 32 bitar ADD Rdst, RsrcA, RsrcB 0x31 0x00 0x3a 5 5 5 6 5 6 bitar per fält Hur många bitar behövs ? 15 + op-code Hur stor är varje instruktion ? 32 bitar ! INSTRUKTIONSFORMAT enligt ovan IS1200 Datorteknik, föreläsning 1
Assembler-InstruktionenSUBTRAKTION, variant 1 • SUB Rdst, Rsrc1 , Rsrc2 Utför subtraktion mellan två värden som vardera upptar 32 bitar hämtade från register Rsrc1 och Rsrc2 och skriver skillnaden till register Rdst • En läsning från minnet (Fetch) • Rdst <-- Rsrc1 - Rsrc2 IS1200 Datorteknik, föreläsning 1
Programexempel 2 C = A + 17 ; • ”kan översättas” till LOAD R1 <-- A ADDI R3 <-- R1 + 17 #ny instruktion STORE C <-- R3 IS1200 Datorteknik, föreläsning 1
Assembler-InstruktionenADDITION, variant 2 • ADDI Rdst, Rsrc1 , datan Utför addition av två värden, som vardera upptar 32 resp. n bitar, hämtade från register Rsrc1 samt ??? och skriver summan till register Rdst • En läsning från minnet (Fetch) ??? • Rdst <-- Rsrc1 + datan IS1200 Datorteknik, föreläsning 1
Assembler-InstruktionenSUBTRAKTION, variant 2 • SUBI Rdst, Rsrc1 , datan Utför subtraktion mellan två värden som vardera upptar 32 resp. n bitar hämtade från register Rsrc1 samt ??? och skriver skillnaden till register Rdst • En läsning från minnet (Fetch) ??? • Rdst <-- Rsrc1 - datan IS1200 Datorteknik, föreläsning 1
INSTRUKTIONSFORMAT binärkodsformat ADDI Rdst, Rsrc, datan SUBI Rdst, Rsrc, datan ADDI/SUBI 6 5 5 n bitar per fält Hur många bitar behövs? 16 + n ! Hur stor blir varje instruktion? 16+n! INSTRUKTIONSFORMAT enligt ovan Vilket värde bör man välja för n? 16! IS1200 Datorteknik, föreläsning 1
INSTRUKTIONSFORMAT Binärkod i Nios II, 32 bitar ADDI Rdst, RsrcA, Data 0x04 5 5 16 6 bitar per fält SUBI rB, rA, IMM16 ADDI rB, rA, -IMM16 IMM16 innehåller ett 2-komplement-tal ... IS1200 Datorteknik, föreläsning 1
OperandutpekningAdressering Exempel på varianter ”Var finns operanden” • I register, till exempel i R4 Vilka register finns? t.ex. R0--R31 (”snabbt”) • I minnet, på en viss adress t.ex. 0x046C (”långsamt”) IS1200 Datorteknik, föreläsning 1
Effektivadressvid operand i minnet • Vid operandutpekning i minnet gäller den Effektiva Adressen är adressen till den plats i minnet där operanden lagras IS1200 Datorteknik, föreläsning 1
Operandutpekning medoperand i minnet • Effektivadress i instruktionens ”adressfält” • Effektivadress i ett register • Operand i instruktionens ”datafält” • Indexerad adressering • Självrelativ adressering, PC-relativ • … det finns fler varianter ... IS1200 Datorteknik, föreläsning 1
Direkt adressAbsolut adress • Instruktionens adressfält innehållereffektivadressen (EA) • effektivadressen är adressen till den plats i minnet där operanden lagras till exempel: LOAD reg <- Addr # reg := mem(Addr) IS1200 Datorteknik, föreläsning 1
Direkt operand(Immediate addressing) • Instruktionens ”adressfält” innehålleroperandvärdet • effektivadress är inte relevant exempel: MOVI reg <- Data #reg := Data IS1200 Datorteknik, föreläsning 1
Register operand(Register addressing) • Ett register innehålleroperandvärdet • effektivadress är inte relevant • Kan kallas direkt via register exempel: MOVE reg1 <- reg2 #reg1 := reg2 IS1200 Datorteknik, föreläsning 1
Register indirect addressing(Indirekt adress via register) • Ett register innehåller effektivadressen • Effektivadressen är adressen till den plats i minnet där operanden lagras exempel: LOAD reg1 <- (reg2) #reg1 := mem(reg2) IS1200 Datorteknik, föreläsning 1
Indexerad adressering(Displacement addressing) • Effektivadressen är adressen till den plats i minnet där operanden lagras • Effektivadressen är summan avinnehåll i instruktionens adressfält ochinnehåll i angivet indexregister exempel: LOAD reg <- offset(indexreg) #reg := mem (offset+indexreg) IS1200 Datorteknik, föreläsning 1
Indexerad adressering Exempel på specialfall LOAD Offset(Indexregister) • Offset = 0 ger ”adress i register” • Indexregister innehåller 0 ger direkt (absolut) adress • Indexregister = PC ger själv-relativ adressering PC-relativ adressering IS1200 Datorteknik, föreläsning 1
Självrelativ adresseringPC-relativ adressering(specialfall av Indexerad adressering) • Effektivadressen är adressen till den plats i minnet där operanden lagras • Effektivadressen är summan avinnehåll i instruktionens adressfält och(aktuellt) innehåll i Program Counter (PC) IS1200 Datorteknik, föreläsning 1
init start Next Body update Cond ? Java/C-kod: for-loop ger behov av hopp init; for (start; cond; update) body; leder till flödes-schema enligt figur till höger Vi får behov av HOPP OVILLKORLIGT HOPP VILLKORLIGT HOPP Test: False True IS1200 Datorteknik, föreläsning 1
Effektiv adressvid hoppinstruktioner • Vid hoppinstruktioner gäller: Den Effektiva Adressen är det värde som skrivs till PC dvs adressen till den plats i minnet där programmet ska fortsätta IS1200 Datorteknik, föreläsning 1
Ovillkorliga hoppJUMP och BRA • JUMP brukar ha direkt adress • BRA brukar ha PC-relativ adress 32: JMP 104 # PC := 104 ”hopp till 104” . . 104: 224: BRA 40 # PC := pc + 40 ”hopp till 268” 268: IS1200 Datorteknik, föreläsning 1
BRA Label # symbolisk adressöversätts tillBRA disp # numerisk displacementav översättaren/assemblern RUT: ADD … t.ex.500 520: BRA RUT 500: ADD … 520: BRA -24 IS1200 Datorteknik, föreläsning 1
JMP Label # symbolisk adressöversätts tillJMP addr # numerisk absolutadressav översättaren/assemblern RUT: ADD … t.ex.500 520: JMP RUT 500: ADD … 520: JMP 500 IS1200 Datorteknik, föreläsning 1
JMP ger icke relokerbar kodpå grund av absolut adressering RUT: ADD … t.ex. 500 520 JMP 500 hopp tillfel plats relokering RUT: ADD … ny plats JMP 500 Efter relokering Före relokering IS1200 Datorteknik, föreläsning 1
BRA ger relokerbar kodtack vare PC-relativ adressering RUT: ADD … t.ex. 500 520 BRA -24 hopp tillrätt plats relokering RUT: ADD … ny plats BRA -24 Efter relokering Före relokering IS1200 Datorteknik, föreläsning 1