Presentation laddar. Vänta.

Presentation laddar. Vänta.

30 July 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion.

Liknande presentationer


En presentation över ämnet: "30 July 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion."— Presentationens avskrift:

1 30 July 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion

2 30 July 2015 IS1200 Datorteknik föreläsning CE - F12 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@ict.kth.se Kursansvarig: Johan Wennlund

3 30 July 2015 IS1200 Datorteknik föreläsning CE - F13 IS1200 Datorteknik  Föreläsningar, 10 st (2x45min)  Övningar, 10 st (2x45min)  Laborationer, 6 st (4,5 hp) 3 st a’ 3-4 tim i lablokal, 2 elever per grupp 3 st redovisas muntligt ~50 min/2 elever  Tentamen, (5 tim)(3,0 hp) 6 uppgifter a’ 10p, 30p ger godkänt

4 IS1200 Datorteknik http://www.ict.kth.se/courses/IS1200 Assemblerprogram C In- och utmatning Avbrott och "trap" Cacheminnen Trådar, synkronisering CE F1 CE F3 CE F4 CE F5 CE F6 CE F7 CE F8 CE F9 CE F2 CE Ö4 CE Ö1 CE Ö2 CE Ö3 CE Ö7 CE Ö8 CE Ö9 CE Ö5CE Ö6 lab nios2time hemlab C lab nios2io lab nios2int hemlab cache hemlab trådar CE F10CE Ö10 tentamen 30 July 20154 IS1200 Datorteknik föreläsning CE - F1

5 30 July 2015 IS1200 Datorteknik föreläsning CE - F15 IS1200 Datorteknik Lärare:  Johan Wennlund, kursledare, föreläsare, Övn och lab  Fredrik Lundevall, biträdande kursledare, föreläsare, Övn och lab  Artur Podobas, Övn och lab  William Sandqvist, lab  Gunnar Johansson, lab

6 30 July 2015 IS1200 Datorteknik föreläsning CE - F16 Laborationer CE – Computer Engineering Assemblerprogrammering av Nios-processorn 1.Enkla program på Nios-processorn (nios2time) 2.I/O på Nios-processorn (nios2io) 3.Avbrottshantering på Nios-processorn (nios2int) (licens-sträng: @lic1.ict.kth.se) Hemlaborationer 1.Maskinnära programmering med C (”C-labben”) 2.Minnessystem med cache-minnen (”Cache-labben”) Prestanda påverkas av parametervärden 3.Operativsystem, (”OS-labben”) Fördelning av CPU-tid Samverkan mellan processer med semaforer

7 30 July 2015 IS1200 Datorteknik föreläsning CE - F17 Kursen i förhållande till andra kurser Förkunskaper  Datalogi - programmering C/Java  Digitalteknik/Elektronik - NAND-grindar etc

8 30 July 2015 IS1200 Datorteknik föreläsning CE - F18 IS1200 Datorteknik CE - Computer Engineering 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: NAND-grindD-vippa

9 30 July 2015 IS1200 Datorteknik föreläsning CE - F19 Kursen i förhållande till andra kurser Förkunskaper  Datalogi - programmering C/Java  Digitalteknik/Elektronik - NAND-grindar etc Efterföljande kurser inom många områden t.ex.  Datorkomm. och Datornät  Operativsystem  Datorteknik fk, Datorarkitektur, Datorsystemarkitektur  Embedded Systems, SystemOnChip Architecture  Parallella Datorsystem  Concurrent Programming

10 30 July 2015 IS1200 Datorteknik föreläsning CE - F110 Kurslitteratur  OH-bilder från föreläsningar 1-10, via kurshemsida http://www.ict.kth.se/courses/IS1200/kurslitt.html  Exempelsamling del 1-10, (tillgänglig via kurshemsidan)  Lab-PM del 1-6, via kurshemsidan  Nios – manual Chap 3 och 8, (tillgänglig via kurshemsidan)  Enstaka blad från kurshemsidan  Mats Brorsson: Datorsystem Program- och maskinvara (cirka 400:-)

11 Leta fram Nios-Manual innan övning 1 Nios II Processor Reference Handbook Chap 3 & 8 Finns att läsa/skriva ut via kurshemsidan http://www.ict.kth.se/courses/IS1200/kurslitt.html Lägg in denna adress i ”dina favoriter” 30 July 2015 IS1200 Datorteknik föreläsning CE - F111

12 30 July 2015 IS1200 Datorteknik föreläsning CE - F112 IS1200 Datorteknik  Föreläsning CE F1, innehåll  CPU - BUS – MEM – I/O  Fetch - Execute  Instruktioner och Data  Instruktionsformat  Operandutpekning - Adressering  Hoppinstruktioner

13 30 July 2015 IS1200 Datorteknik föreläsning CE - F113 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, (ej 2.6)  4.1 -- 4.3 principer, ej MIPS-kod  4.4 Kopplingen till C, ej MIPS-kod

14 30 July 2015 IS1200 Datorteknik föreläsning CE - F114 Nu börjar det ! Programexempel zJava- / C-kod / … … int A, B, C;/* data, variabler */... C = A + B;/* program, code/text */...

15 30 July 2015 IS1200 Datorteknik föreläsning CE - F115 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

16 30 July 2015 IS1200 Datorteknik föreläsning CE - F116 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

17 30 July 2015 IS1200 Datorteknik föreläsning CE - F117 Program i ASSEMBLER-kod assembleras / översätts till Maskinkod / 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?

18 Program-översättning kompilering - assemblering 30 July 2015 IS1200 Datorteknik föreläsning CE - F118 Källkod - textfil Assemblerkod - textfil Maskinkod - binärkodsfil Kompilering - översättning Assemblering- översättning

19 30 July 2015 IS1200 Datorteknik föreläsning CE - F119 Viktiga delar i en dator CPU MEM BUS I/O program data

20 30 July 2015 IS1200 Datorteknik föreläsning CE - F120 Viktiga delar i en dator 1.MEM - Memory/Minne lagrar program och data (Minne = Lagringsplats) 2.CPU - Central Processing Unit; den enhet som ”kör program” dvs hämtar och utför instruktioner 3.IO - Input/Output; enheter för kommunikation med omvärlden 4.BUS; överföring av information / bitar mellan CPU/MEM/IO

21 30 July 2015 IS1200 Datorteknik föreläsning CE - F121 Programexekvering (i två steg / två faser) FETCH (update PC) (decode) EXECUTE HÄMTAUTFÖR

22 30 July 2015 IS1200 Datorteknik föreläsning CE - F122 Program Counter - PC PC - Program Counter Är ett register (ett antal vippor) Innehållet i PC är en minnesadress (t.ex. 32 bitar) som pekar på en plats i minnet som innehåller information nämligen aktuell instruktion (t.ex. 32 bitar)

23 30 July 2015 IS1200 Datorteknik föreläsning CE - F123 Programexekvering  FETCH - HÄMTA  PC - Program Counter innehåller en minnesadress som pekar ut aktuell instruktion.  Kopiera utpekad instruktion från minne till processorns IR - Instruction Register  Uppdatera PC för att peka ut nästa instruktion (öka PC med 1/2/4...)

24 30 July 2015 IS1200 Datorteknik föreläsning CE - F124 Programexekvering  EXECUTE - UTFÖR  Decode - Avkoda innehållet i IR – Instruction Register dvs lista ut vilken intruktion som bitkoden i IR motsvarar  Execute - Utför denna instruktion

25 30 July 2015 IS1200 Datorteknik föreläsning CE - F125 32- och 64-bits processor En av fördelarna med 64-bits processor En 32-bits processor har en PC med 32 bitar 32 bitar kan adressera max 4 Gbyte minne (2 32 ) En 64-bits processor kan ha en PC med 64 bitar 64 bitar kan adressera max 2 64 byte minne

26 30 July 2015 IS1200 Datorteknik föreläsning CE - F126 Processorn (t.ex Nios eller MIPS eller …) R0 R31 R1 PC Minne Generella registerProgramräknare En förenklad bild av NiosII-arkitekturen med minne.

27 30 July 2015 IS1200 Datorteknik föreläsning CE - F127 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

28 30 July 2015 IS1200 Datorteknik föreläsning CE - F128 IS1200 Datorteknik  Föreläsning CE F1, innehåll  CPU - BUS – MEM – I/O  Fetch - Execute  Instruktioner och Data  Instruktionsformat  Operandutpekning - Adressering  Hoppinstruktioner

29 Assembler-instruktioner vilka behövs ? exempel ! zLOADkopiera från minne till register zSTOREkopiera från register till minne z... zADDutför aritmetisk operation zSUButför aritmetisk operation zADDIAdd Immediate zSUBISubtract Immediate z...flera ”införs” vid behov... 30 July 2015 IS1200 Datorteknik föreläsning CE - F129

30 30 July 2015 IS1200 Datorteknik föreläsning CE - F130 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

31 30 July 2015 IS1200 Datorteknik föreläsning CE - F131 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

32 30 July 2015 IS1200 Datorteknik föreläsning CE - F132 Assembler-Instruktionen ADDITION 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

33 30 July 2015 IS1200 Datorteknik föreläsning CE - F133 ADD R dst, R srcA, R srcB ADD Hur många bitar behövs ? 3 regnummer + opcode ! Hur stor blir varje instruktion ? 21 bitar ! INSTRUKTIONSFORMAT enligt ovan INSTRUKTIONSFORMAT binärkodsformat 6 5 5 5 bitar per fält

34 30 July 2015 IS1200 Datorteknik föreläsning CE - F134 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 5 5 5 6 5 6 bitar per fält 0x3a0x00

35 30 July 2015 IS1200 Datorteknik föreläsning CE - F135 Assembler-Instruktionen SUBTRAKTION 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

36 30 July 2015 IS1200 Datorteknik föreläsning CE - F136 Nytt Programexempel Addition av konstant C = A + 17 ; z”kan översättas” till LOADR1 <-- A ADDIR3 <-- R1 + 17 #ny instruktion STOREC <-- R3

37 30 July 2015 IS1200 Datorteknik föreläsning CE - F137 Assembler-Instruktionen ADDITION, Add Immediate 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

38 30 July 2015 IS1200 Datorteknik föreläsning CE - F138 Assembler-Instruktionen SUBTRAKTION, Sub Immediate 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

39 30 July 2015 IS1200 Datorteknik föreläsning CE - F139 IS1200 Datorteknik  Föreläsning CE F1, innehåll  CPU - BUS – MEM – I/O  Fetch - Execute  Instruktioner och Data  Instruktionsformat  Operandutpekning - Adressering  Hoppinstruktioner

40 30 July 2015 IS1200 Datorteknik föreläsning CE - F140 ? Hur lagras instruktioner i minnet ! Binärkodat – med nollor och ettor ? Hur många bitar behövs för en instruktion? ! Så att all information finns med ? Vilken information innehåller en instruktion ! Operationskod, operandutpekning INSTRUKTIONSFORMAT binärkodsformat

41 30 July 2015 IS1200 Datorteknik föreläsning CE - F141 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! 6 5 5 n bitar per fält INSTRUKTIONSFORMAT binärkodsformat

42 30 July 2015 IS1200 Datorteknik föreläsning CE - F142 ADDI R dst, R srcA, Data Intruktionen SUBI får man ”gratis” SUBI rB, rA, IMM16  ADDI rB, rA, -IMM16 IMM16 innehåller ett 2-komplement-tal... 5 5 16 6 bitar per fält 0x04 INSTRUKTIONSFORMAT Binärkod i Nios II, 32 bitar

43 30 July 2015 IS1200 Datorteknik föreläsning CE - F143 IS1200 Datorteknik  Föreläsning CE F1, innehåll  CPU - BUS – MEM – I/O  Fetch - Execute  Instruktioner och Data  Instruktionsformat  Operandutpekning - Adressering  Hoppinstruktioner

44 30 July 2015 IS1200 Datorteknik föreläsning CE - F144 Operandutpekning (Adressering) Exempel på varianter ”Var finns operanden” 1.I register, till exempel i R4 Vilka register finns? t.ex. R0--R31 (”snabbt” register finns inne i CPU-chipet) 2.I minnet, på en viss adress t.ex. 0x046C (”långsamt” minnet finns utanför CPU-chipet)

45 30 July 2015 IS1200 Datorteknik föreläsning CE - F145 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

46 30 July 2015 IS1200 Datorteknik föreläsning CE - F146 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...

47 30 July 2015 IS1200 Datorteknik föreläsning CE - F147 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) LOAD regAddr

48 30 July 2015 IS1200 Datorteknik föreläsning CE - F148 Direkt operand (Nios: Immediate addressing) zInstruktionens ”adressfält” innehåller operandvärdet zeffektivadress är inte relevant exempel: MOVI reg <- Data#reg := Data MOVI regData

49 30 July 2015 IS1200 Datorteknik föreläsning CE - F149 Register operand (Nios: Register addressing) zEtt register innehåller operandvärdet zeffektivadress är inte relevant zKan kallas direkt via register exempel: MOVE reg1 <- reg2#reg1 := reg2 MOVE reg ???

50 30 July 2015 IS1200 Datorteknik föreläsning CE - F150 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) LOAD reg1reg2 ???

51 30 July 2015 IS1200 Datorteknik föreläsning CE - F1 51 Indexerad adressering (Nios: 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) LOAD reg indexreg offset

52 30 July 2015 IS1200 Datorteknik föreläsning CE - F152 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)

53 30 July 2015 IS1200 Datorteknik föreläsning CE - F153 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)

54 30 July 2015 IS1200 Datorteknik föreläsning CE - F154 IS1200 Datorteknik  Föreläsning CE F1, innehåll  CPU - BUS – MEM – I/O  Fetch - Execute  Instruktioner och Data  Instruktionsformat  Operandutpekning - Adressering  Hoppinstruktioner

55 30 July 2015 IS1200 Datorteknik föreläsning CE - F155 Java/C-kod: if-sats exempel på flödes-schema Cond ? Next False True If: Body1Body2 if (cond) then Body1 else Body2

56 30 July 2015 IS1200 Datorteknik föreläsning CE - F156 Java/C-kod: if-sats exempel på flödes-schema Cond ? Next False True If: Body1Body2 if (cond) then Body1 else Body2

57 30 July 2015 IS1200 Datorteknik föreläsning CE - F157 Java/C-kod: if-sats ger behov av hopp Cond ? Next False True if (cond) then body1 else body2; leder till flödes-schema enligt figur till höger Vi får behov av HOPP VILLKORLIGT HOPP OVILLKORLIGT HOPP If: Body1Body2

58 30 July 2015 IS1200 Datorteknik föreläsning CE - F158 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

59 30 July 2015 IS1200 Datorteknik föreläsning CE - F159 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

60 30 July 2015 IS1200 Datorteknik föreläsning CE - F160 Programexekvering (i två steg / två faser) FETCH (update PC) (decode) EXECUTE HÄMTAUTFÖR

61 30 July 2015 IS1200 Datorteknik föreläsning CE - F161 Programexekvering (i två steg / två faser) HÄMTA PC:=PC+4 (avkoda) UTFÖR Instruktion utan hopp HÄMTA PC:=PC+4 HOPP PC:= eff-addr Instruktion med hopp

62 30 July 2015 IS1200 Datorteknik föreläsning CE - F162 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:

63 30 July 2015 IS1200 Datorteknik föreläsning CE - F163 BRA Label # symbolisk adress översätts till BRA disp# numerisk displacement av översättaren/assemblern RUT:ADD … t.ex.500 520:BRA RUT 500:ADD … 520:BRA -24

64 30 July 2015 IS1200 Datorteknik föreläsning CE - F164 JMP Label # symbolisk adress översätts till JMP addr# numerisk absolutadress av översättaren/assemblern RUT:ADD … t.ex.500 520:JMP RUT 500:ADD … 520:JMP 500

65 30 July 2015 IS1200 Datorteknik föreläsning CE - F165 JMP ger icke relokerbar kod på grund av absolut adressering RUT:ADD … t.ex. 500 520JMP 500 relokering RUT:ADD … ny plats JMP 500 hopp till fel plats Före relokering Efter relokering

66 30 July 2015 IS1200 Datorteknik föreläsning CE - F166 BRA ger relokerbar kod tack vare PC-relativ adressering RUT:ADD … t.ex. 500 520BRA -24 RUT:ADD … ny plats BRA -24 relokering hopp till rätt plats Före relokering Efter relokering

67 30 July 2015 IS1200 Datorteknik föreläsning CE - F167 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

68 30 July 2015 IS1200 Datorteknik föreläsning CE - F168 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 ?

69 30 July 2015 IS1200 Datorteknik föreläsning CE - F169 CC - Condition Code zCondition Code - CC zRegister som innehåller information om utfall av tidigare operationer/instruktioner zZ - Zero zN - Negative( S – Sign ) zC - Carry zV - oVerflow z… det kan finnas fler typ Odd, Parity...

70 30 July 2015 IS1200 Datorteknik föreläsning CE - F170 Processorn (t.ex Nios eller MIPS eller …) R0 R31 R1 PC Minne Generella registerProgramräknare En förenklad bild av NiosII-arkitekturen med minne.

71 30 July 2015 IS1200 Datorteknik föreläsning CE - F171 Gäller för MIPS-Processorn (ej Nios-II) R0 R31 R1 PC Minne Generella registerProgramräknare NVZC Status En förenklad bild av arkitektur med STATUS-register.

72 30 July 2015 IS1200 Datorteknik föreläsning CE - F172 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

73 30 July 2015 IS1200 Datorteknik föreläsning CE - F173 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

74 30 July 2015 IS1200 Datorteknik föreläsning CE - F174 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 )

75 30 July 2015 IS1200 Datorteknik föreläsning CE - F175 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.)

76 30 July 2015 IS1200 Datorteknik föreläsning CE - F176 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

77 30 July 2015 IS1200 Datorteknik föreläsning CE - F177 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

78 30 July 2015 IS1200 Datorteknik föreläsning CE - F178 Nios II – dialekt: CMPcond R dst,R op1,R op2 CMPcond R dst,R op1,R op2 R dst sätts till ”true” (=1) om villkoret är uppfyllt R dst sätts till ”false” (=0) om villkoret inte är uppfyllt Villkoret (cond) är en jämförelse mellan R op1 och R op2, t.ex. EQ, GT,...

79 30 July 2015 IS1200 Datorteknik föreläsning CE - F179 Nios II – dialekt: CMPcond R dst,R op1,R op2 CMPEQ Rd, Rx, Ry ;Rd:=1 if True BNERd, R0, Label ;hopp om True Hoppa till Label om Rx lika med Ry Alternativ möjlighet (Nios II) BEQ Rx, Ry, Label Hoppa till Label om op1 lika med op2

80 30 July 2015 IS1200 Datorteknik föreläsning CE - F180 CMP op1, op2 Exempel på ”utfall” zEQ: op1 Equal to op2 zNE: op1 Not Equal to op2 zGT: op1 Greater Than op2, Signed zGTU: op1 Greater Than op2, Unsigned zGE: op1 Greater than or Equal to op2 zLE: op1 Less than or Equal to op2 z... det finns fler...

81 30 July 2015 IS1200 Datorteknik föreläsning CE - F181 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,...)

82 30 July 2015 IS1200 Datorteknik föreläsning CE - F182 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,...)

83 30 July 2015 IS1200 Datorteknik föreläsning CE - F183 JUMP brukar ha absolut/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

84 30 July 2015 IS1200 Datorteknik föreläsning CE - F184 JMP rA INSTRUKTIONSFORMAT Nios II 0x0d 5 5 5 6 5 6 bitar per fält 0x3a0 00 JMP med register indirekt adress INSTRUKTIONSFORMAT enligt ovan Hur stort hopp har man ? PC := (rA)# 32 bitars adress !

85 30 July 2015 IS1200 Datorteknik föreläsning CE - F185 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!

86 30 July 2015 IS1200 Datorteknik föreläsning CE - F186 BR med PC-relativ adressering Displacement lagras i IMM16 BR Label INSTRUKTIONSFORMAT Nios II 5 5 16 6 bitar per fält 0x06 00 IMM16 PC  PC + 4 + signext(IMM16)

87 30 July 2015 IS1200 Datorteknik föreläsning CE - F187 Bcond med PC-relativ adressering Displacement lagras i IMM16 BCond RA, RB, Label INSTRUKTIONSFORMAT Nios II 5 5 16 6 bitar per fält Bcond BA IMM16 True: PC  PC + 4 + signext(IMM16) False: PC  PC + 4

88 30 July 2015 IS1200 Datorteknik föreläsning CE - F188 IS1200 Datorteknik  Föreläsning 1, innehåll  CPU - BUS - MEM  Fetch - Execute  Instruktioner och Data  Instruktionsformat  Adressering - operandutpekning  Hoppinstruktioner

89 30 July 2015 IS1200 Datorteknik föreläsning CE - F189 Viktiga delar i en dator CPU MEM BUS I/O program data

90 30 July 2015 IS1200 Datorteknik föreläsning CE - F190 Programexekvering FETCH (update PC) (decode) EXECUTE

91 30 July 2015 IS1200 Datorteknik föreläsning CE - F191 Dual-core / Multi-core CPU MEM BUS I/O CPU...

92 ”Öppet hus” välkommen Öppet hus i labbsalen: torsdag 17 januari kl 08—12 har vi öppet hus i sal 648. Ingen bokning behövs för det här tillfället. - Du kan få hjälp att provköra labprogramvara på de stationära datorer som finns i salen - Vi svarar på frågor om labbarna och kursen. - Du kan testa att din bärbara dator fungerar med vår hårdvara. License string i Quartus är: 27000@lic1.ict.kth.se 30 July 2015 IS1200 Datorteknik o k, föreläsning CE - F392

93 Vill du köra labprogram på egen dator? Installera VirtualBox System requirements - Minimum PC with Intel Core 2 Duo processor or better. 2 Gbytes RAM or more. 20 Gbytes of free hard-drive space. http://www.ict.kth.se/courses/IS1200/2013/swsetup/vbox.html Username och password på den virtuella maskinen man kan ladda ner är: student och time2work 30 July 2015 IS1200 Datorteknik föreläsning CE - F193

94 30 July 2015 IS1200 Datorteknik föreläsning CE - F194

95 Förslag till egna studier förslagsvis tillsammans med kurskamrater zRepetera föreläsningsbilderna (noga) zFörbered inför övning genom att titta på frågor och lösningar i exempelsamling 30 July 2015 IS1200 Datorteknik föreläsning CE - F195


Ladda ner ppt "30 July 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion."

Liknande presentationer


Google-annonser