Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avJohannes Bergqvist
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
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.