31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel 7 ht 2009 – vt 2010 (period 2-3) För D-2
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)2 Välkommen till IS1200 Datorteknik ”Hur datorer fungerar” Kursens hemsida finns utpekad från: adress till lärare: Kursansvarig: Johan Wennlund
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)3 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 Hösten 2009 Våren 2010 F6Ö5Ö6LAB-2
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)4 IS1200 Datorteknik Föreläsning 2, innehåll +Vi bygger en processor +4 stegs Pipe-line för ADD, SUB,... +Data Dependencies och Data Forward +Branch Delay Slot - hopplucka +LOAD och STORE +Nios-II: MOVI och MOVIA
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)5 Nu bygger vi en dator av... &=1>1 DRIVER COUNTER REGISTER Q Q’ D preset cl clear ALU MUX +n WR EN 1 & >1
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)6 Viktiga delar i en dator CPU MEM BUS I/O program data
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)7 Programexekvering i två steg (decode) EXECUTE FETCH (update PC)
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)8 Typisk instruktion ADDR dst R srcA + R srcB Kombinera innehåll i R srcA och R srcB och skriv till R dst ADD, SUB, MUL, DIV, AND, OR, XOR, … Hur många bitar krävs i Instruktionen ? Man kan minska behovet av bitar med kortare instruktion ADD R dst, R src ;R dst R dst + R src
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)9 ADD R dst <- R srcA + R srcB ADD Hur många bitar behövs? ~ Hur stor blir varje instruktion? Mer än 16 (t.ex. MIPS/Nios-II …) INSTRUKTIONSFORMAT med tre register-operander Exempelvis:
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)10 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 bitar per fält 0x3a0x00
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)11 Programexekvering i fyra steg 1.FI - Fetch Instruction 2.FO - Fetch Operand 3.EX - Execute 4.WB - Write Back
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)12 EX - EXecute Execute ALU t.ex. ADD operander resultat av operationen ~6 bitars kod ALU-register ALU-A och ALU-B 6 bitars kod möjliggör 64 olika operationer: A, -A, A+1, A-1, A+B, A-B, Ainv, A and B, A or B,... AB operation
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)13 FO - Fetch Operand ExecuteFetch Operand Register File 32 x 32 ALU 5 bitars adress, R srcA 5 bitars adress, R srcB RWM - Read Write Memory ”SRAM” Read SRAM – Static RAM ”snabbt minne”
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)14 WB - Write Back ExecuteFetch OperandWrite Back ALU Register File 32 x 32 Register File 32 x 32 SAMMA en Register File (inte två olika) 5 bitars adress, R dst Write Read
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)15 FI - Fetch Instruction Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR PC +n Register File 32 x 32 Register File 32 x 32 16/ PC - Program Counter n = 2 eller 4 beror på om instruktion är 16 eller 32 bitar, 2 eller 4 bytes
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)16 Innehåll i register r0 om det alltid är 0 Det medför att ADD r0, r0, r0 utför NOP, No OPeration ADD rA, r0, r0 utför CLR rA, CLeaR reg ADD rA, rB, r0 utför COPY rA rB, MOV BEQ r0, r0, Label utför BR Label BNE r0, r0, Label utför... ...
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)17 4 stegs CPU Konsekvent synkronism 8 Förbered skrivning till Register File FIFOEXEWB 6 ALU arbetar (ADD/SUB/ …) 4 Avkoda instruktion samt leta fram operander 2 Leta fram instruktion ur Program Memory 9 Skriv resultat till Register File 7 Skriv resultat till tmp-reg 5 Skriv operander till ALU-register 3 Skriv instruktion till Instruction Register 1 Skriv nytt värde till Program Counter clock Skrivning utförs vid positiv flank på clock, samtidigt till varje vippa/register/minne
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)18 Utan PIPE-LINE Hur många klockcykler ? FIFOEXEWB ADD FIFOEXEWB 4 klockcykler per instruktion! 1 instruktion klar var 4:e klockcykel!
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)19 PIPE - LINE införs nu ! Flera register IR Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR0 IR1 IR2 NYTT PC +n Register File 32 x 32 Register File 32 x 32 IR1: 11 vippor IR2: 5 vippor
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)20 Med PIPE-LINE Hur många klockcykler ?... ADD FIFOEXEWBFIFOEXEWBFIFOEXEWBFIFOEXEWB 4 klockcykler per instruktion! 1 instruktion klar per klockcykel!
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)21 IS1200 Datorteknik PAUS-BILD (andas djupt och ta nya tag)
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)22 Fenomen pga PIPE-LINE 1. Data Dependency 2. Branch Delay 3. Load Dealy 4. Structural Hazard
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)23 1.Data Dependencies (Fenomen pga PIPE-LINE) ¯Programexempel 44:ADD R4 <- R5 + R6 48:ADD R1 <- R2 + R3 52:ADD R7 <- R1 + R4 ¯Innehåll i R1 och R4 på rad 52 ¯Avser resultat av rad 44 och 48 Men ¯”nya” R1 och R4 finns inte i REG-FILE än
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)24 Data Dependencies Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR0 IR1 IR2 44: R4 <- R5+R6 Register File 32 x 32 Register File 32 x 32
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)25 Data Dependencies Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR0 IR1 IR2 Register File 32 x 32 Register File 32 x 32 44: R4 <- R5+R6 48: R1 <- R2+R3
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)26 Data Dependencies Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR0 IR1 IR2 52: R7 <- R1+R4 nya r4 nya r1 Register File 32 x 32 Register File 32 x 32 44: R4 <- R5+R6 48: R1 <- R2+R3 gamla r1 gamla r4
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)27 Data Dependencies med 4 stegs PIPE-LINE 44: ADD... 48: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB 52: ADD... Nya R1 skrivs till RegFile Gamla R1 och R4 läses från RegFile Nya R4 skrivs till RegFile Gamla R1 och R4 skrivs till ALU-reg 44:ADD R4 <- R5 + R6 48:ADD R1 <- R2 + R3 52:ADD R7 <- R1 + R4 # gamla värden i R1 och R4
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)28 Data Dependencies läsning måste ske efter skrivning 44: ADD... 48: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB Fördröj till xx: ADD... Nya R1 skrivs till RegFile Nya R4 skrivs till RegFile Nya R1 och R4 läses från RegFile Nya R1 och R4 skrivs till ALU-reg 44:ADD R4 <- R5 + R6 48:ADD R1 <- R2 + R3 52:ADD R7 <- R1 + R4 # gamla värden i R1 och R4
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)29 44: ADD... 48: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB 44:ADD R4 <- R5 + R6 48:ADD R1 <- R2 + R3 52:NOP # fördröjer 1 cykel 56:NOP # fördröjer 1 cykel 60:ADD R7 <- R1 + R4 # nya värden i r1 och r4 60: ADD... R1 skrivs till RegFile R1 och R4 läses från RegFile R4 skrivs till RegFile FIFOEXEWBFIFOEXEWB NOP
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)30 Data Forward inför nya data-vägar Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR0 IR1 IR2 Register File 32 x 32 Register File 32 x 32 52: R7 <- R1+R4 44: R4 <- R5+R6 48: R1 <- R2+R3 NYTT
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)31 Data Forward inför nya data-vägar Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR0 IR1 IR2 Register File 32 x 32 Register File 32 x 32 NYTT 52: R7 <- R1+R4 44: R4 <- R5+R6 48: R1 <- R2+R3 nya r4 nya r1
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)32 Enable-signaler till nya data-vägar Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR0 IR1 IR2 Register File 32 x 32 Register File 32 x 32 NYTT 52: R7 <- R1+R4 44: R4 <- R5+R6 48: R1 <- R2+R3 ENA0 ENB0 ENA2 ENB2 ENA1 ENB1 Komb. nät ENA0 ENB0 ENA2 ENB2 ENA1 ENB1 NYTT
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)33 44: ADD... 48: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB 44:ADD R4 <- R5 + R6 48:ADD R1 <- R2 + R3 52:ADD R7 <- R1 + R4 52: ADD... Nya R1 skrivs till RegFile Nya R1 och R4 läses via DataForward Nya R4 skrivs till RegFile Nya R1 och R4 skrivs till ALU-reg Data Forward genvägar ger snabbhet
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)34 Ny Typisk instruktion ADDR dst <-- R srcA + Imm n 1.Kombinera innehåll i R srcA och Imm och skriv till R dst 2.ADD, SUB, MUL, DIV, AND, OR, XOR, … 3.Hur många bitar krävs i Instruktionen ? 4.Man kan minska behovet av bitar med kortare instruktion ADD R dst, Imm
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)35 ADDI R dst, R src, data n ADDI Hur många bitar behövs? ~6+5+5+n Hur stor blir varje instruktion? Mer än 16 INSTRUKTIONSFORMAT med immediate data Exempelvis: n
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)36 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
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)37 Immediate data inför ny dataväg Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU PC IR0 IR1 IR2 +n Ny dataväg hur många bitar ? Register File 32 x 32 Register File 32 x 32
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)38 Extension 16 -> 32 bits Nollor eller Sign Extension xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx Fyll ut med nollor Fungerar för unsignedint Sign extension Vid positivt tal Sign extension Vid negativt tal xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx Sign Extension Fungerar för signedint
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)39 JUMP och BRA Ovillkorliga hopp 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:
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)40 Ny hopp-instruktion JUMP (R addr ) 1.Registerindirekt adressering 2.Effektiv adress i ett register 3.Kopiera registerinnehåll till PC 4.Register med 32 bitar betyder att 5.32 bits adress kan användas 6.Hur får man 32 bits adress till registret ? Det måste ordnas på något sätt !
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)41 JUMP (R addr ) inför ny dataväg Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU PC IR0 IR1 IR2 +n Register File 32 x 32 Register File 32 x 32 Ny dataväg hur många bitar ?
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)42 Vanlig hopp-instruktion JUMP Imm n Imm n skrivs till PC Hur stor är Imm n ? ”lediga” bitar t.ex. 32-6=26 ! Hur stor vill vi att Imm n ska vara helst ? Imm n ska kunna adressera ”hela minnet” !
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)43 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
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)44 Vanlig hopp-instruktion BR Imm n PC sätts till PC + Imm n Hur stor är Imm n ? ”lediga” bitar t.ex. 32-6=26 ! Hur stor vill vi att Imm n ska vara helst ? Imm n ska kunna adressera ”hela minnet” !
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)45 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!
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)46 BRA Imm n inför ADDitionsenhet och datavägar Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU ADD IR0 IR1 IR2 Register File 32 x 32 Register File 32 x 32 PC PC+n PC+Imm Nytt
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)47 Fenomen pga PIPE-LINE 2.Branch Delay Slot Instruktionen i minnespositionen närmast efter en hoppinstruktion kommer hämtas och utföras innan hoppet verkställs Programexempel 16: BRA 64 20: ADD …# hämtas och utförs 24: … … 84: SUB...
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)48 Efter FI av 16: BRA 64 Execute Fetch Operand Write Back Fetch Instruction 16: BRA 64 20: ADD ALU ADD IR0 IR1 IR2 20 BRA : BRA 64 20: ADD … 24: … … 84: SUB … 88:... Register File 32 x 32 Register File 32 x 32 PC PC+4 PC+Imm 20
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)49 Efter FI av 20: ADD Execute Fetch Operand Write Back Fetch Instruction ALU ADD IR0 IR1 IR2 ADD BRA 64 16: BRA 64 20: ADD 84 Register File 32 x 32 Register File 32 x 32 PC+4 PC+Imm PC 16: BRA 64 20: ADD … 24: … … 84: SUB … 88:... 84
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)50 Efter FO av 20: ADD Execute Fetch Operand Write Back Fetch Instruction ALU ADD IR0 IR1 IR2 SUB BRA 64 16: BRA 64 20: ADD 88 ADD Register File 32 x 32 Register File 32 x 32 PC+4 PC+Imm PC 16: BRA 64 20: ADD … 24: … … 84: SUB … 88:... 88
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)51 FIFO EXEWB 4 Avkoda instruktion samt leta fram operander 2 Leta fram instruktion ur Program Memory 5 Skriv nytt värde till Program Counter = hoppa 3 Skriv instruktion till Instruction Register 1 Skriv nytt värde till Program Counter clock Skrivning utförs vid positiv flank på clock, samtidigt till varje vippa/register/minne Ovillkorliga hopp (BRA/JUMP) när kan hoppet tidigast utföras ? (Ledig tid: ”Kislet kallnar” eller... ) (Skriv till R0 eller inte alls) (Skriv till tmp-reg eller inte alls)
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)52 Hur undviks Branch Delay Slot Hur utnyttjas Branch Delay Slot Olika metoder: 1.Fyll ut med en (onyttig) NOP 2.Skriv en (nyttig) instruktion i hoppluckan 3.Kompilator/Programmerare väljer 4.Låt hårdvaran specialbehandla hopp (hoppgissning / invalidate /...)
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)53 STATUS-flaggor Z - Zero; ”utfall lika med noll” N - Negativ; ”utfall med negativt tecken” V - oVerflow; ”utfall med overflow” C - Carry; Carry-ut från ALU kan finnas fler... Påverkas av ADD, SUB, CMP...
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)54 Gäller för MIPS-Processorn (ej Nios-II) R0 R31 R1 PC Minne Generella registerProgramräknare NVZC Status
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)55 STATUS-flaggor Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU ADD IR0 IR1 IR2 Register File 32 x 32 Register File 32 x 32 PC PC+n PC+Imm Nytt NVZC ADD
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)56 STATUS-flaggor Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU ADD IR0 IR1 IR2 Register File 32 x 32 Register File 32 x 32 PC Nytt NVZC Logik för villkorligt hopp op-code CCR true/false PC+n / PC+Imm BCond ADD
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)57 Branch on Condition Common examples Label = PC BEQ Imm Imm = Label - PC BEQ - 4 BEQ Label if EQUAL then PC:=PC+Imm else PC:=PC+4 BNE Label if Not Equal then PC:=PC+Imm else PC:=PC+4 BLE Label if Less or Equal then PC:=PC+Imm else PC:=PC+4 ...
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)58 FIFO 4 Avkoda instruktion samt läs STATUS 2 Leta fram instruktion ur Program Memory 5 Skriv nytt värde till Program Counter = hoppa 3 Skriv instruktion till Instruction Register 1 Skriv nytt värde till Program Counter clock Villkorliga hopp (B”cond”) när kan hoppet tidigast utföras ? (När sker skrivning till STATUS?) (Finns rätt info i STATUS?) Skrivning utförs vid positiv flank på clock, samtidigt till varje vippa/register/minne
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)59 IS1200 Datorteknik PAUS-BILD (andas djupt och ta nya tag)
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)60 LOAD och STORE memory register Vi ska kunna utföra operationer av typen LOAD och STORE Vilka operandutpekningsmetoder ska vi ha ? Gärna med direkt adressering dvs zLOAD reg <- mem(adr) zSTORE mem(adr) <- reg men: En ”hel adress” ryms ej i adressfältet vilket leder till...
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)61 LOAD och STORE memory register Vi inför hårdvara för instruktionerna LOADR dst, [ R addr ] STORE [ R addr ], R src med registerindirekt adressering dvs effektivadress i register
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)62 Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU ADD IR0 IR1 IR2 RWM LOAD och STORE med 4 stegs PIPE-LINE Register File 32 x 32 Register File 32 x 32 PC+n PC+Imm PC Nytt
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)63 LOAD och STORE med 4 stegs PIPE-LINE LOAD to Rd USE Rd FIFO MEM WBFIFOEXEWB Data från MEM finns tillgängligt Data från MEM finns tillgängligt för FO via Data Forward Leta fram data ur MEM
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)64 Program Memory m x 8 ALU ADD IR0 IR1 IR2 RWM LOAD och STORE med data forward Register File 32 x 32 Register File 32 x 32 PC+n PC+Imm PC (Man kan spara vissa register !)
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)65... LOAD STORE ADD FIFO MEM WBFIFO MEM WBFIFOEXEWBFIFOEXEWB Samtidig referens till minnet i FI- och MEM-stegen 4. Structural Hazard strukturell konflikt
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)66 4. Structural Hazard strukturell konflikt Samtidig referens till Instruktionsminne och Dataminne Problemet undviks lämpligen med Separata (cache-) minnen för Program och Data (Harward-arkitektur) (separata I-cache och D-cache)
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)67 Minnesbehov Viktiga frågor, svar senare 1.Separata minnen för Instruktion och Data 2.Samtidig referens av I och D 3.Cykeltid för I-mem 4.Cykeltid för D-mem 5.I balans med CPU-klocka 6.Är detta möjligt? Nej! Tja ? (cache-minnen)
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)68 LOAD och STORE memory register Vi (kompilatorn) vill kunna utföra instruktioner av typen LOAD och STORE med indexerad adressering dvs LOADR dst, Offset[ R addr ] STOREOffset[ R addr ], R src Hårdvara för detta tas upp senare i kursen
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)69 Ladda ett register med ett konstant värde, Nios-II Operationen MOVI rB, IMMED 16 med 16 bitars värde känt ”at compile- time” kan utföras av (t.ex.) MOVI r6, -30# sign extension på negativa tal ? (ja !) # ”MOVI is implemented as ADDI rB, r0, IMMED 16 ” Operationen MOVIA rB, Const 32 med 32 bitars Const känd ”at compile- time” kan utföras av instruktionerna (t.ex.) MOVHI rB, r0, %hi(Const)#16 MSBits till MSBits i rB ORI rB, rB, %lo(Const)#16 LSBits till LSBits i rB # ”MOVHI is implemented as ORHI rB, r0, IMMED 16 ”
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)70 IS1200 Datorteknik Föreläsning 2, innehåll +Vi bygger en processor +4 stegs Pipe-line för ADD, SUB,... +Data Dependencies och Data Forward +Branch Delay Slot - hopplucka +LOAD och STORE +Nios-II: MOVI och MOVIA