Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avKarolina Dahlberg
1
15 August 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion
2
15 August 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
15 August 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 G Kurs-anmälan vid Föreläsning 1
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 15 August 20154 IS1200 Datorteknik föreläsning CE - F1
5
15 August 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 Podoba, Övn och lab William Sandqvist, Övn och lab Jan Andersson, Övn och lab Ananya Muddukrishna, lab Gunnar Johansson, lab
6
15 August 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
15 August 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
15 August 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
15 August 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
15 August 2015 IS1200 Datorteknik föreläsning CE - F110 Kurslitteratur Kårbokhandeln plan 5 OH-bilder från föreläsningar 1-10, via kurshemsida http://www.ict.kth.se/courses/IS1200/kurslitt.html Exempelsamling del 1-10, via kurshemsida Lab-PM del 1-6, via kurshemsidan Nios2 – manual Chap 3 och 8, (tillgänglig via kurshemsidan) Enstaka blad från kurshemsidan Mats Brorsson: Datorsystem Program- och maskinvara (cirka 350:-)
11
Skaffa er Nios2-Manual redan före övning 1 Nios II Processor Reference Handbook Chap 3 & 8 Finns att köpa på kårbokhandeln 40:- t.ex. i pausen idag 12 – 13 och i morgon fm Finns att läsa/skriva ut via kurshemsidan 15 August 2015 IS1200 Datorteknik föreläsning CE - F111
12
15 August 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
15 August 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
15 August 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
15 August 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
15 August 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
15 August 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
15 August 2015 IS1200 Datorteknik föreläsning CE - F118 4 Viktiga delar i en dator CPU MEM BUS I/O program data
19
15 August 2015 IS1200 Datorteknik föreläsning CE - F119 4 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
20
15 August 2015 IS1200 Datorteknik föreläsning CE - F120 Programexekvering (i två steg / två faser) FETCH (update PC) (decode) EXECUTE HÄMTAUTFÖR
21
15 August 2015 IS1200 Datorteknik föreläsning CE - F121 Program Counter - PC PC - Program Counter Är ett register (ett antal vippor) Innehåller 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)
22
15 August 2015 IS1200 Datorteknik föreläsning CE - F122 Programexekvering FETCH - HÄMTA 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 PC med 1/2/4...)
23
15 August 2015 IS1200 Datorteknik föreläsning CE - F123 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
24
15 August 2015 IS1200 Datorteknik föreläsning CE - F124 Processorn (t.ex Nios eller MIPS eller …) R0 R31 R1 PC Minne Generella registerProgramräknare En förenklad bild av NiosII-arkitekturen med minne.
25
15 August 2015 IS1200 Datorteknik föreläsning CE - F125 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
26
Assembler-instruktioner vilka behövs ? exempel ! zLOADkopiera från minne till CPU zADDutför aritmetisk operation zSTOREkopiera från CPU till minne z... zSUButför aritmetisk operation zADDIAdd Immediate zSUBISubtract Immediate z...flera ”införs” vid behov... 15 August 2015 IS1200 Datorteknik föreläsning CE - F126
27
15 August 2015 IS1200 Datorteknik föreläsning CE - F127 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
28
15 August 2015 IS1200 Datorteknik föreläsning CE - F128 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
29
15 August 2015 IS1200 Datorteknik föreläsning CE - F129 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
30
15 August 2015 IS1200 Datorteknik föreläsning CE - F130 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 6 5 5 5 bitar per fält
31
15 August 2015 IS1200 Datorteknik föreläsning CE - F131 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
32
15 August 2015 IS1200 Datorteknik föreläsning CE - F132 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
33
15 August 2015 IS1200 Datorteknik föreläsning CE - F133 Nytt Programexempel C = A + 17 ; z”kan översättas” till LOADR1 <-- A ADDIR3 <-- R1 + 17 #ny instruktion STOREC <-- R3
34
15 August 2015 IS1200 Datorteknik föreläsning CE - F134 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
35
15 August 2015 IS1200 Datorteknik föreläsning CE - F135 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
36
15 August 2015 IS1200 Datorteknik föreläsning CE - F136 ? 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
37
15 August 2015 IS1200 Datorteknik föreläsning CE - F137 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
38
15 August 2015 IS1200 Datorteknik föreläsning CE - F138 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
39
15 August 2015 IS1200 Datorteknik föreläsning CE - F139 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)
40
15 August 2015 IS1200 Datorteknik föreläsning CE - F140 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
41
15 August 2015 IS1200 Datorteknik föreläsning CE - F141 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...
42
15 August 2015 IS1200 Datorteknik föreläsning CE - F142 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
43
15 August 2015 IS1200 Datorteknik föreläsning CE - F143 Direkt operand (Immediate addressing) zInstruktionens ”adressfält” innehåller operandvärdet zeffektivadress är inte relevant exempel: MOVI reg <- Data#reg := Data MOVI regData
44
15 August 2015 IS1200 Datorteknik föreläsning CE - F144 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 MOVE reg ???
45
15 August 2015 IS1200 Datorteknik föreläsning CE - F145 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 ???
46
15 August 2015 IS1200 Datorteknik föreläsning CE - F1 46 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) LOAD reg indexreg offset
47
15 August 2015 IS1200 Datorteknik föreläsning CE - F147 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)
48
15 August 2015 IS1200 Datorteknik föreläsning CE - F148 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)
49
15 August 2015 IS1200 Datorteknik föreläsning CE - F149 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
50
15 August 2015 IS1200 Datorteknik föreläsning CE - F150 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
51
15 August 2015 IS1200 Datorteknik föreläsning CE - F151 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
52
15 August 2015 IS1200 Datorteknik föreläsning CE - F152 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:
53
15 August 2015 IS1200 Datorteknik föreläsning CE - F153 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
54
15 August 2015 IS1200 Datorteknik föreläsning CE - F154 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
55
15 August 2015 IS1200 Datorteknik föreläsning CE - F155 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
56
15 August 2015 IS1200 Datorteknik föreläsning CE - F156 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
57
15 August 2015 IS1200 Datorteknik föreläsning CE - F157 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
58
15 August 2015 IS1200 Datorteknik föreläsning CE - F158 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 ?
59
15 August 2015 IS1200 Datorteknik föreläsning CE - F159 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...
60
15 August 2015 IS1200 Datorteknik föreläsning CE - F160 Processorn (t.ex Nios eller MIPS eller …) R0 R31 R1 PC Minne Generella registerProgramräknare En förenklad bild av NiosII-arkitekturen med minne.
61
15 August 2015 IS1200 Datorteknik föreläsning CE - F161 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.
62
15 August 2015 IS1200 Datorteknik föreläsning CE - F162 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
63
15 August 2015 IS1200 Datorteknik föreläsning CE - F163 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
64
15 August 2015 IS1200 Datorteknik föreläsning CE - F164 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 )
65
15 August 2015 IS1200 Datorteknik föreläsning CE - F165 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.)
66
15 August 2015 IS1200 Datorteknik föreläsning CE - F166 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
67
15 August 2015 IS1200 Datorteknik föreläsning CE - F167 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
68
15 August 2015 IS1200 Datorteknik föreläsning CE - F168 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 är en jämförelse mellan R op1 och R op2, t.ex. EQ, GT,...
69
15 August 2015 IS1200 Datorteknik föreläsning CE - F169 Nios II – dialekt: CMPcond R dst,R op1,R op2 CMPEQ Rd, Rx, Ry;Rd:=1 if True BNERd, R0, Label 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
70
15 August 2015 IS1200 Datorteknik föreläsning CE - F170 MIPS– dialekt Scond R dst,R op1,R op2 slt Rd, Rx, Ry;Rd:=1 if True bne Rd, R0, Label Hoppa till Label om Rx är ”less than” Ry ”Set on condition” MIPS-alternativ: slt, sltu, slti, sltiu u=unsigned, i=immediate
71
15 August 2015 IS1200 Datorteknik föreläsning CE - F171 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...
72
15 August 2015 IS1200 Datorteknik föreläsning CE - F172 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,...)
73
15 August 2015 IS1200 Datorteknik föreläsning CE - F173 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,...)
74
15 August 2015 IS1200 Datorteknik föreläsning CE - F174 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
75
15 August 2015 IS1200 Datorteknik föreläsning CE - F175 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 !
76
15 August 2015 IS1200 Datorteknik föreläsning CE - F176 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!
77
15 August 2015 IS1200 Datorteknik föreläsning CE - F177 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)
78
15 August 2015 IS1200 Datorteknik föreläsning CE - F178 Bcond med PC-relativ adressering Displacement lagras i IMM16 BCond RA, RB, Label INSTRUKTIONSFORMAT Nios II 5 5 16 6 bitar per fält cond BA IMM16 True: PC PC + 4 + signext(IMM16) False: PC PC + 4
79
15 August 2015 IS1200 Datorteknik föreläsning CE - F179 IS1200 Datorteknik Föreläsning 1, innehåll CPU - BUS - MEM Fetch - Execute Instruktioner och Data Instruktionsformat Adressering - operandutpekning Hoppinstruktioner
80
15 August 2015 IS1200 Datorteknik föreläsning CE - F180 Viktiga delar i en dator CPU MEM BUS I/O program data
81
15 August 2015 IS1200 Datorteknik föreläsning CE - F181 Programexekvering FETCH (update PC) (decode) EXECUTE
82
15 August 2015 IS1200 Datorteknik föreläsning CE - F182 Dual-core / Multi-core CPU MEM BUS I/O CPU...
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.