Presentation laddar. Vänta.

Presentation laddar. Vänta.

22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion.

Liknande presentationer


En presentation över ämnet: "22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion."— Presentationens avskrift:

1 22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion

2 22 April 2015IS1200 Datorteknik, föreläsning 12 Välkommen till IS1200 Datorteknik ”Hur datorer fungerar” Kursens hemsida finns utpekad från: adress till lärare: Kursansvarig: Johan Wennlund

3 22 April 2015IS1200 Datorteknik, föreläsning 13 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!)

4 22 April 2015IS1200 Datorteknik, föreläsning 14 F1F2F3F4F5F7F8F9F10Ö2Ö1Ö3LAB-1Hemlab-1Ö4Ö7LAB-3Hemlab-2Ö8Hemlab-3Ö9TentamenÖ10 Assemblerkod 4 stegs pipeline Nios2time C-kod Nios2io Nios2int Cache-minnen CPU-scheduling IS1200 Datorteknik F6Ö5Ö6LAB-2

5 22 April 2015IS1200 Datorteknik, föreläsning 15 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

6 22 April 2015IS1200 Datorteknik, föreläsning 16 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-minnen Prestanda påverkas av parametervärden  Operativsystem, Fördelning av CPU-tid Samverkan mellan processer med semaforer

7 22 April 2015IS1200 Datorteknik, föreläsning 17 IS1200 Datorteknik Lä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

8 22 April 2015IS1200 Datorteknik, föreläsning 18 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

9 22 April 2015IS1200 Datorteknik, föreläsning 19 IS1200 Datorteknik Datorns funktion på olika nivåer från JAVA/C-kod till NAND-grind zProgramexempel: sum = 0 ; for (i=1; i<=17; i=i+1) sum = sum + i; zExempel på digitala komponenter:

10 22 April 2015IS1200 Datorteknik, föreläsning 110 IS1200 Datorteknik  Föreläsning 1, innehåll  CPU - BUS – MEM – I/O  Fetch - Execute  Instruktioner och Data  Instruktionsformat  Adressering - operandutpekning  Hoppinstruktioner

11 22 April 2015IS1200 Datorteknik, föreläsning 111 Litteraturhänvisningar  Kursboken, valda delar av kapitel 1,2 och 4  läses kursivt  läses  Kap 2: principer, ej MIPS-kod  principer, ej MIPS-kod  4.4 Kopplingen till C, ej MIPS-kod

12 22 April 2015IS1200 Datorteknik, föreläsning 112 Programexempel 1 zJava-/C-kod int A, B, C;/* variabler, data */... C = A + B;/* program, code/text */...

13 22 April 2015IS1200 Datorteknik, föreläsning 113 Program i Java/C-kod kompileras/översätts till ASSEMBLER-kod int A, B, C;/* variabler, data */ zö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

14 22 April 2015IS1200 Datorteknik, föreläsning 114 C = A + B;/* program, code/text */ zöversätts (kompileras) till assembler-kod.text# nu kommer programkod.align2# på adress delbar med 4 LOADR1 <-- A LOADR2 <-- B ADDR3 <-- R1 + R2 STOREC <-- R3 Program i Java/C-kod kompileras/översätts till ASSEMBLER-kod

15 22 April 2015IS1200 Datorteknik, föreläsning 115 Program i ASSEMBLER-kod assembleras/översätts till Maskinkod / binärkod # maskinkod/binärkod#kommentarer … #LOAD R1 <-- A … #LOAD R2 <-- B … #ADD R3 <-- R1+R … #STORE C <-- R3 # hur många bitar?

16 22 April 2015IS1200 Datorteknik, föreläsning 116 Viktiga delar i en dator CPU MEM BUS I/O Jämför med kursbokens Figur 1.5 En maskinvaruorienterad vy av ett datorsystem.

17 22 April 2015IS1200 Datorteknik, föreläsning 117 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

18 22 April 2015IS1200 Datorteknik, föreläsning 118 Programexekvering FETCH (update PC) (decode) EXECUTE

19 22 April 2015IS1200 Datorteknik, föreläsning 119 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...)

20 22 April 2015IS1200 Datorteknik, föreläsning 120 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

21 22 April 2015IS1200 Datorteknik, föreläsning 121 Processorn (t.ex Nios eller MIPS eller …) R0 R31 R1 PC Minne Generella registerProgramräknare Jämför med kursbokens Figur 2.3 En enkel modell av MIPS-arkitekturen med minne.

22 22 April 2015IS1200 Datorteknik, föreläsning 122 A: B: C: LOAD STORE ADD LOAD ADD STORE PROGRAM (.text) DATA (.data) Programexempel 1 PROGRAMRÄKNAREE PROGRAM COUNTER uppdatera öka med vad? 4 eller 2 eller MINNE

23 22 April 2015IS1200 Datorteknik, föreläsning 123 Assembler-Instruktionen LOADR dst <-- A  LOAD: Läs/Kopiera från minne till register  Destinationsplats är R dst  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

24 22 April 2015IS1200 Datorteknik, föreläsning 124 Assembler-Instruktionen STOREC <-- R src  STORE: Skriv/Kopiera från register till minne  Källoperand finns i R src  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

25 22 April 2015IS1200 Datorteknik, föreläsning 125 Assembler-Instruktionen ADDITION, variant 1 zADD R dst, R src1, R src2 Utför addition av två värden, som vardera upptar 32 bitar, hämtade från register R src1 och R src2 och skriver summan till register R dst zEn läsning från minnet (Fetch) zR dst <-- R src1 + R src2

26 22 April 2015IS1200 Datorteknik, föreläsning 126 ADD R dst, R srcA, R srcB ADD Hur många bitar behövs ? 3 regadr + opcode ! Hur stor blir varje instruktion ? 21 bitar ! INSTRUKTIONSFORMAT enligt ovan INSTRUKTIONSFORMAT binärkodsformat bitar per fält

27 22 April 2015IS1200 Datorteknik, föreläsning 127 ADD R dst, R srcA, R srcB 0x31 Hur många bitar behövs ? 15 + op-code Hur stor är varje instruktion ? 32 bitar ! INSTRUKTIONSFORMAT enligt ovan INSTRUKTIONSFORMAT Binärkod i Nios II, 32 bitar bitar per fält 0x3a0x00

28 22 April 2015IS1200 Datorteknik, föreläsning 128 Assembler-Instruktionen SUBTRAKTION, variant 1 zSUB R dst, R src1, R src2 Utför subtraktion mellan två värden som vardera upptar 32 bitar hämtade från register R src1 och R src2 och skriver skillnaden till register R dst zEn läsning från minnet (Fetch) zR dst <-- R src1 - R src2

29 22 April 2015IS1200 Datorteknik, föreläsning 129 Programexempel 2 C = A + 17 ; z”kan översättas” till LOADR1 <-- A ADDIR3 <-- R #ny instruktion STOREC <-- R3

30 22 April 2015IS1200 Datorteknik, föreläsning 130 Assembler-Instruktionen ADDITION, variant 2 zADDI R dst, R src1, data n Utför addition av två värden, som vardera upptar 32 resp. n bitar, hämtade från register R src1 samt ??? och skriver summan till register R dst zEn läsning från minnet (Fetch) ??? zR dst <-- R src1 + data n

31 22 April 2015IS1200 Datorteknik, föreläsning 131 Assembler-Instruktionen SUBTRAKTION, variant 2 zSUBI R dst, R src1, data n Utför subtraktion mellan två värden som vardera upptar 32 resp. n bitar hämtade från register R src1 samt ??? och skriver skillnaden till register R dst zEn läsning från minnet (Fetch) ??? zR dst <-- R src1 - data n

32 22 April 2015IS1200 Datorteknik, föreläsning 132 ADDI R dst, R src, data n SUBI R dst, R src, data n ADDI/SUBI 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! n bitar per fält INSTRUKTIONSFORMAT binärkodsformat

33 22 April 2015IS1200 Datorteknik, föreläsning 133 ADDI R dst, R srcA, Data SUBI rB, rA, IMM16  ADDI rB, rA, -IMM16 IMM16 innehåller ett 2-komplement-tal bitar per fält 0x04 INSTRUKTIONSFORMAT Binärkod i Nios II, 32 bitar

34 22 April 2015IS1200 Datorteknik, föreläsning 134 Operandutpekning Adressering 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”)

35 22 April 2015IS1200 Datorteknik, föreläsning 135 Effektivadress vid operand i minnet  Vid operandutpekning i minnet gäller den Effektiva Adressen är adressen till den plats i minnet där operanden lagras

36 22 April 2015IS1200 Datorteknik, föreläsning 136 Operandutpekning med operand i minnet zEffektivadress i instruktionens ”adressfält” zEffektivadress i ett register zOperand i instruktionens ”datafält” zIndexerad adressering zSjälvrelativ adressering, PC-relativ z… det finns fler varianter...

37 22 April 2015IS1200 Datorteknik, föreläsning 137 Direkt adress Absolut adress zInstruktionens adressfält innehåller effektivadressen (EA) zeffektivadressen är adressen till den plats i minnet där operanden lagras till exempel: LOAD reg <- Addr# reg := mem(Addr)

38 22 April 2015IS1200 Datorteknik, föreläsning 138 Direkt operand (Immediate addressing) zInstruktionens ”adressfält” innehåller operandvärdet zeffektivadress är inte relevant exempel: MOVI reg <- Data#reg := Data

39 22 April 2015IS1200 Datorteknik, föreläsning 139 Register operand (Register addressing) zEtt register innehåller operandvärdet zeffektivadress är inte relevant zKan kallas direkt via register exempel: MOVE reg1 <- reg2#reg1 := reg2

40 22 April 2015IS1200 Datorteknik, föreläsning 140 Register indirect addressing (Indirekt adress via register) zEtt register innehåller effektivadressen zEffektivadressen är adressen till den plats i minnet där operanden lagras exempel: LOAD reg1 <- (reg2) #reg1 := mem(reg2)

41 22 April 2015IS1200 Datorteknik, föreläsning 141 Indexerad adressering (Displacement addressing) zEffektivadressen är adressen till den plats i minnet där operanden lagras zEffektivadressen är summan av innehåll i instruktionens adressfält och innehåll i angivet indexregister exempel: LOAD reg <- offset(indexreg) #reg := mem (offset+indexreg)

42 22 April 2015IS1200 Datorteknik, föreläsning 142 Indexerad adressering Exempel på specialfall zOffset = 0 ger ”adress i register” zIndexregister innehåller 0 ger direkt (absolut) adress zIndexregister = PC ger själv-relativ adressering PC-relativ adressering LOAD Offset(Indexregister)

43 22 April 2015IS1200 Datorteknik, föreläsning 143 Självrelativ adressering PC-relativ adressering (specialfall av Indexerad adressering) zEffektivadressen är adressen till den plats i minnet där operanden lagras zEffektivadressen är summan av innehåll i instruktionens adressfält och (aktuellt) innehåll i Program Counter (PC)

44 22 April 2015IS1200 Datorteknik, föreläsning 144 init start Java/C-kod: for-loop ger behov av hopp Cond ? Next False True 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: Bodyupdate

45 22 April 2015IS1200 Datorteknik, föreläsning 145 Effektiv adress vid 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

46 22 April 2015IS1200 Datorteknik, föreläsning 146 Ovillkorliga hopp JUMP och BRA  JUMP brukar ha direkt adress  BRA brukar ha PC-relativ adress JMP 104 # PC := 104”hopp till 104”. BRA 40 # PC := pc + 40”hopp till 268” 32: 104: 224: 268:

47 22 April 2015IS1200 Datorteknik, föreläsning 147 BRA Label # symbolisk adress översätts till BRA disp# numerisk displacement av översättaren/assemblern RUT:ADD … t.ex :BRA RUT 500:ADD … 520:BRA -24

48 22 April 2015IS1200 Datorteknik, föreläsning 148 JMP Label # symbolisk adress översätts till JMP addr# numerisk absolutadress av översättaren/assemblern RUT:ADD … t.ex :JMP RUT 500:ADD … 520:JMP 500

49 22 April 2015IS1200 Datorteknik, föreläsning 149 JMP ger icke relokerbar kod på grund av absolut adressering RUT:ADD … t.ex JMP 500 relokering RUT:ADD … ny plats JMP 500 hopp till fel plats Före relokering Efter relokering

50 22 April 2015IS1200 Datorteknik, föreläsning 150 BRA ger relokerbar kod tack vare PC-relativ adressering RUT:ADD … t.ex BRA -24 RUT:ADD … ny plats BRA -24 relokering hopp till rätt plats Före relokering Efter relokering

51 22 April 2015IS1200 Datorteknik, föreläsning 151 Ovillkorligt hopp BRA, Branch Always  BRA Label  Hoppa (alltid) till Label dvs  Kopiera värdet Label till PC  Nästa instruktion som hämtas finns vid adressen Label  En läsning från minnet (Fetch) ?  Hur anges Label? Adressering ! Översättaren räknar fram koden

52 22 April 2015IS1200 Datorteknik, föreläsning 152 Villkorligt hopp Bcond, Branch on condition Bcond Label zOm villkoret är sant hoppa till Label zOm villkoret är falskt (= ej sant) fortsätt som vanligt utan hopp zVad menas med villkoret ?

53 22 April 2015IS1200 Datorteknik, föreläsning 153 CC - Condition Code zCondition Code - CC zRegister som innehåller information om utfall av tidigare operationer/instruktioner zZ - Zero zN - Negative zC - Carry zV - oVerflow z… det kan finnas fler typ Odd, Parity...

54 22 April 2015IS1200 Datorteknik, föreläsning 154 Processorn (t.ex Nios eller MIPS eller …) R0 R31 R1 PC Minne Generella registerProgramräknare Jämför med kursbokens Figur 2.3 En enkel modell av MIPS-arkitekturen med minne.

55 22 April 2015IS1200 Datorteknik, föreläsning 155 Gäller för MIPS-Processorn (ej Nios-II) R0 R31 R1 PC Minne Generella registerProgramräknare NVZC Status

56 22 April 2015IS1200 Datorteknik, föreläsning 156 Instruktionen (i repris) ADDITION, variant 1 zADD R dst, R src1, R src2 Utför addition av två värden, som vardera upptar 32 bitar, hämtade från register R src1 och R src2 skriver summan till register R dst zEn läsning från minnet (Fetch) zR dst <-- R src1 + R src2 samt att CC påverkas

57 22 April 2015IS1200 Datorteknik, föreläsning 157 Instruktionen (i repris) SUBTRAKTION, variant 1 zSUB R dst, R src1, R src2 Utför subtraktion mellan två värden som vardera upptar 32 bitar hämtade från register R src1 och R src2 skriver skillnaden till register R dst zEn läsning från minnet (Fetch) zR dst <-- R src1 - R src2 samt att CC påverkas

58 22 April 2015IS1200 Datorteknik, föreläsning 158 Nytt: Instruktion COMPARE, variant 1 zCMP R src1, R src2 utför jämförelse (subtraktion) mellan två värden som vardera upptar 32 bitar hämtade från register R src1 och R src2 skriver INTE skillnaden till register R dst men påverkar innehåll i Condition Code - CC zCC <-- f(R src1 - R src2 )

59 22 April 2015IS1200 Datorteknik, föreläsning 159 Programexempel zJava-/C-kod int op1, op2;/* variabler, data */... /* program, code/text */ if (op1 == op2) goto Label;... zöversätts (kompileras) till assembler-kod (forts.)

60 22 April 2015IS1200 Datorteknik, föreläsning 160 CMP op1, op2 BEQ Label CMP op1, op2 utförs som SUB op1, op2 resultat = op1 minus op2, resultat = 0 betyder att op1 - op2 = 0 dvs samma som att op1 = op2 CMP op1, op2 BEQLabel Hoppa till Label om op1 lika med op2

61 22 April 2015IS1200 Datorteknik, föreläsning 161 Nios II – dialekt: BEQ op1, op2, Label CMP op1, op2 BEQLabel Hoppa till Label om op1 lika med op2 Alternativ möjlighet (Nios II) BEQ op1, op2, Label Hoppa till Label om op1 lika med op2

62 22 April 2015IS1200 Datorteknik, föreläsning 162 CMP op1, op2 Exempel på ”utfall” zEQ: op1 Equal to op2 zNE: op1 Not Equal to op2 zGE: op1 Greater than or Equal to op2 zLT: op1 Less Than op2 zGT: op1 Greater Than op2 zLE: op1 Less than or Equal to op2 z... det finns fler...

63 22 April 2015IS1200 Datorteknik, föreläsning 163 Bcond Label Exempel på ”cond” och CC zEQ:# Z=1 zNE: # Z=0 zGE: # N=0 zLT:# N=1 zGT: # Z=0 and N=0 zLE: # Z=1 or N=1 z... det finns fler... (CS-Carry Set,...)

64 22 April 2015IS1200 Datorteknik, föreläsning 164 Bcond Label Bcond op1, op2, Label zMånga CPU:er Nios II m.fl. BNE LabelBNE reg1, reg2, Label BGE Label BGE reg1, reg2, Label BLT Label BLT reg1, reg2, Label BGT Label BGT reg1, reg2, Label BLE Label BLE reg1, reg2, Label z... det finns fler... (CS-Carry Set,...)

65 22 April 2015IS1200 Datorteknik, föreläsning 165 JUMP brukar ha direkt adress JUMP Label JUMP Hur många bitar behövs? 6+n! Hur stor blir varje instruktion? 6+n! INSTRUKTIONSFORMAT enligt ovan Vilket värde bör man välja för n? 10/26! INSTRUKTIONSFORMAT 6 n bitar per fält

66 22 April 2015IS1200 Datorteknik, föreläsning 166 JMP rA INSTRUKTIONSFORMAT Nios II 0x0d bitar per fält 0x3a0 00 JMP med register indirekt adress INSTRUKTIONSFORMAT enligt ovan Hur stort hopp har man ? PC := (rA)# 32 bitars adress !

67 22 April 2015IS1200 Datorteknik, föreläsning 167 BRA brukar ha PC-relativ adress BRA Displacement BRA INSTRUKTIONSFORMAT 6 n bitar per fält Hur många bitar behövs? 6+n! Hur stor blir varje instruktion? 6+n! INSTRUKTIONSFORMAT enligt ovan Vilket värde bör man välja för n? 10/26!

68 22 April 2015IS1200 Datorteknik, föreläsning 168 BR med PC-relativ adressering Displacement lagras i IMM16 BR Label INSTRUKTIONSFORMAT Nios II bitar per fält 0x06 00 IMM16 PC  PC signext(IMM16)

69 22 April 2015IS1200 Datorteknik, föreläsning 169 IS1200 Datorteknik  Föreläsning 1, innehåll  CPU - BUS - MEM  Fetch - Execute  Instruktioner och Data  Instruktionsformat  Adressering - operandutpekning  Hoppinstruktioner

70 22 April 2015IS1200 Datorteknik, föreläsning 170 Viktiga delar i en dator CPU MEM BUS I/O

71 22 April 2015IS1200 Datorteknik, föreläsning 171 Programexekvering FETCH (update PC) (decode) EXECUTE

72 22 April 2015IS1200 Datorteknik, föreläsning 172 Dual-core / Multi-core CPU MEM BUS I/O CPU...


Ladda ner ppt "22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion."

Liknande presentationer


Google-annonser