750 likes | 923 Views
IS1200 Datorteknik. Föreläsning CE F2 Vi bygger en processor Kursboken, delar av kapitel 7. 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
E N D
IS1200 Datorteknik föreläsning CE – F2 IS1200 Datorteknik Föreläsning CE F2 Vi bygger en processor Kursboken, delar av kapitel 7
IS1200 Datorteknik föreläsning CE – F2 Välkommen tillIS1200 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
IS1200 Datorteknik föreläsning CE – F2 IS1200 Datorteknikhttp://www.ict.kth.se/courses/IS1200 CE F1 CE F2 CE Ö1 CE F3 CE Ö2 Assemblerprogram CE F4 CE Ö3 lab nios2time C CE F5 CE Ö4 hemlab C In- och utmatning CE F6 CE Ö5 CE Ö6 lab nios2io Avbrott och "trap" CE F7 CE Ö7 lab nios2int Cacheminnen CE F8 CE Ö8 hemlab cache Trådar, synkronisering CE F9 CE Ö9 hemlab trådar CE F10 CE Ö10 tentamen
IS1200 Datorteknik föreläsning CE – F2 Uppdelning i grupper IDAG
IS1200 Datorteknik föreläsning CE – F2 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 • Delayed Branch, Delay Slot - hopplucka • LOAD och STORE • Nios-II: MOVI och MOVIA 5
IS1200 Datorteknik föreläsning CE – F2 & >1 =1 DRIVER Nu bygger vi en dator av ... & 1 >1 WR REGISTER +n COUNTER preset D Q EN cl Q’ clear ALU MUX
IS1200 Datorteknik föreläsning CE – F2 Viktiga delar i en dator CPU BUS program I/O MEM data
IS1200 Datorteknik föreläsning CE – F2 FETCH (update PC) (decode) EXECUTE Programexekveringi två steg
IS1200 Datorteknik föreläsning CE – F2 Typisk instruktionADD Rdst RsrcA + RsrcB • Kombinera innehåll i RsrcA och RsrcBoch skriv till Rdst • ADD, SUB, MUL, DIV, AND, OR, XOR, … • Hur många bitar krävs i Instruktionen ? • Man kan minska behovet av bitarmed kortare instruktionADD Rdst, Rsrc ;Rdst Rdst + Rsrc
IS1200 Datorteknik föreläsning CE – F2 ADD INSTRUKTIONSFORMAT med tre register-operander ADD Rdst<- RsrcA + RsrcB Exempelvis: 6 5 5 5 Hur många bitar behövs? ~6+5+5+5 Hur stor blir varje instruktion? Mer än 16 (t.ex. MIPS/Nios-II …)
IS1200 Datorteknik föreläsning CE – F2 INSTRUKTIONSFORMAT binärkod i Nios II ADD Rdst, RsrcA, RsrcB 0x31 0x00 0x3a 5 5 5 6 5 6 bitar per fält Hur många bitar behövs ? 15 + op-code Hur stor är varje instruktion ? 32 bitar ! INSTRUKTIONSFORMAT enligt ovan
IS1200 Datorteknik föreläsning CE – F2 Programexekveringi fyra steg FI - Fetch Instruction FO - Fetch Operand EX - Execute WB - Write Back
IS1200 Datorteknik föreläsning CE – F2 EX - EXecute ALU-register ALU-A och ALU-B operander A B ~6 bitars kod Execute operation ALU t.ex. ADD resultat av operationen 6 bitars kod möjliggör 64 olika operationer: A+B, A-B, A, -A, A+1, A-1, Ainv, A and B, A or B, ...
IS1200 Datorteknik föreläsning CE – F2 Register File 32 x 32 Fetch Operand Execute FO - Fetch Operand RWM - Read Write Memory ”SRAM” Dual-Ported 5 bitars registernummer, RsrcA Read 5 bitars registernummer, RsrcB ALU SRAM – Static RAM ”snabbt minne”
IS1200 Datorteknik föreläsning CE – F2 Register File 32 x 32 Fetch Operand Execute Write Back Register File 32 x 32 WB - Write Back RWM - Read Write Memory ”SRAM” Tripple-Ported Read SAMMA en Register File (inte två olika) ALU 5 bitars registernummer, Rdst Write
IS1200 Datorteknik föreläsning CE – F2 Program Memory m x 8 Fetch Instruction Register File 32 x 32 Fetch Operand Execute Write Back Register File 32 x 32 FI - Fetch Instruction 32 IR 5 5 PC +n 6 ALU PC - Program Counter n = 4 beror på att en instruktion är 32 bitar, 4 bytes 5
IS1200 Datorteknik föreläsning CE – F2 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 ... (NOP) • ...
IS1200 Datorteknik föreläsning CE – F2 FI FO EXE WB 4 stegs CPUKonsekvent synkronism Skrivning utförs vid positiv flank på clock, samtidigt till varje vippa/register/minne 2. Leta fram instruktion ur Program Memory 4. Avkoda instruktion samt leta fram operander 6. ALU arbetar (ADD/SUB/ …) 8. Förbered skrivning till Register File clock 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
IS1200 Datorteknik föreläsning CE – F2 FI FO EXE WB FI FO EXE WB Utan PIPE-LINEHur många klockcykler ? ADD ADD 4 klockcykler per instruktion! 1 instruktion klar var 4:e klockcykel!
IS1200 Datorteknik föreläsning CE – F2 Program Memory m x 8 Fetch Instruction Register File 32 x 32 Fetch Operand Execute Write Back Register File 32 x 32 PIPE - LINE införs nu !Flera register IR IR0 IR1 PC +n 6 ALU IR2 NYTT 5 IR1: 11 vippor IR2: 5 vippor
IS1200 Datorteknik föreläsning CE – F2 FI FO EXE WB FI FO EXE WB FI FO EXE WB FI FO EXE WB Med PIPE-LINEHur många klockcykler ? ADD ADD ADD ADD ... 4 klockcykler per instruktion! 1 instruktion klar per klockcykel!
IS1200 Datorteknik föreläsning CE – F2 IS1200 Datorteknik PAUS-BILD (andas djupt och ta nya tag)
IS1200 Datorteknik föreläsning CE – F2 Fenomen pga PIPE-LINE 1. Data Dependency 2. Delayed Branch 3. Delayed Load 4. Structural Hazard
IS1200 Datorteknik föreläsning CE – F2 1 .Data Dependencies(Fenomen pga PIPE-LINE) • Programexempel44: 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
IS1200 Datorteknik föreläsning CE – F2 Program Memory m x 8 Fetch Instruction Register File 32 x 32 IR0 Fetch Operand IR1 Execute IR2 Write Back Register File 32 x 32 Data Dependencies 44: R4 <- R5+R6 ALU
IS1200 Datorteknik föreläsning CE – F2 Program Memory m x 8 Fetch Instruction Register File 32 x 32 IR0 Fetch Operand IR1 Execute IR2 Write Back Register File 32 x 32 Data Dependencies 48: R1 <- R2+R3 44: R4 <- R5+R6 ALU
IS1200 Datorteknik föreläsning CE – F2 Program Memory m x 8 Fetch Instruction Register File 32 x 32 IR0 Fetch Operand IR1 Execute IR2 Write Back Register File 32 x 32 Data Dependencies 52: R7 <- R1+R4 48: R1 <- R2+R3 ALU nya r1 44: R4 <- R5+R6 nya r4 gamla r1 gamla r4
IS1200 Datorteknik föreläsning CE – F2 FI FO EXE WB FI FO EXE WB FI FO EXE WB Data Dependenciesmed 4 stegs PIPE-LINE 44: ADD R4 <- R5 + R6 48: ADD R1 <- R2 + R3 52: ADD R7 <- R1 + R4 # gamla värden i R1 och R4 Nya R1 skrivs till RegFile Nya R4 skrivs till RegFile 44: ADD ... 48: ADD ... 52: ADD ... Gamla R1 och R4 läses från RegFile Gamla R1 och R4 skrivs till ALU-reg
IS1200 Datorteknik föreläsning CE – F2 FI FO EXE WB FI FO EXE WB FI FO EXE WB Data Dependenciesläsning måste ske efter skrivning 44: ADD R4 <- R5 + R6 48: ADD R1 <- R2 + R3 52: ADD R7 <- R1 + R4 # gamla värden i R1 och R4 Nya R1 skrivs till RegFile Nya R4 skrivs till RegFile 44: ADD ... 48: ADD ... Fördröj till xx: ADD ... Nya R1 och R4 läses från RegFile Nya R1 och R4 skrivs till ALU-reg
IS1200 Datorteknik föreläsning CE – F2 FI FO EXE WB FI FO EXE WB FI FO EXE WB FI FO EXE WB FI FO EXE WB 44: ADD R4 <- R5 + R6 48: ADD R1 <- R2 + R3 52: NOP # fördröjer 1 cykel 56: NOP # fördröjer 1 cykel60: ADD R7 <- R1 + R4 # nya värden i r1 och r4 R1 skrivs till RegFile R4 skrivs till RegFile 44: ADD ... 48: ADD ... NOP NOP 60: ADD ... R1 och R4 läses från RegFile
IS1200 Datorteknik föreläsning CE – F2 Program Memory m x 8 Fetch Instruction Register File 32 x 32 IR0 Fetch Operand IR1 Execute IR2 Write Back Register File 32 x 32 Data Forwardinför nya data-vägar 52: R7 <- R1+R4 NYTT 48: R1 <- R2+R3 ALU 44: R4 <- R5+R6
IS1200 Datorteknik föreläsning CE – F2 Program Memory m x 8 Fetch Instruction Register File 32 x 32 IR0 Fetch Operand IR1 Execute IR2 Write Back Register File 32 x 32 Data Forwardinför nya data-vägar 52: R7 <- R1+R4 NYTT 48: R1 <- R2+R3 nya r1 ALU 44: R4 <- R5+R6 nya r4
IS1200 Datorteknik föreläsning CE – F2 Program Memory m x 8 Fetch Instruction Register File 32 x 32 IR0 Komb. nät Fetch Operand IR1 Execute IR2 Write Back Register File 32 x 32 Enable-signaler tillnya data-vägar NYTT 52: R7 <- R1+R4 ENA0 ENB0 ENA2 ENB2 ENA1 ENB1 ENA0 ENB0 ENA2 ENB2 ENA1 ENB1 NYTT 48: R1 <- R2+R3 ALU 44: R4 <- R5+R6
IS1200 Datorteknik föreläsning CE – F2 FI FO EXE WB FI FO EXE WB FI FO EXE WB Data Forwardgenvägar ger snabbhet 44: ADD R4 <- R5 + R6 48: ADD R1 <- R2 + R3 52: ADD R7 <- R1 + R4 Nya R7 skrivs till RegFile Nya R1 skrivs till RegFile Nya R4 skrivs till RegFile 44: ADD ... 48: ADD ... 52: ADD ... Nya R1 och R4 läses via DataForward Nya R1 och R4 skrivs till ALU-reg
IS1200 Datorteknik föreläsning CE – F2 Ny Typisk instruktionADD Rdst <-- RsrcA + Immn Kombinera innehåll i RsrcA och Immoch skriv till Rdst ADD, SUB, MUL, DIV, AND, OR, XOR, … Hur många bitar krävs i Instruktionen ? Man kan minska behovet av bitarmed kortare instruktionADD Rdst, Imm
IS1200 Datorteknik föreläsning CE – F2 INSTRUKTIONSFORMAT med immediate data ADDI Rdst, Rsrc, datan ADDI Exempelvis: 6 5 5 n Hur många bitar behövs? ~6+5+5+n Hur stor blir varje instruktion? Mer än 16
IS1200 Datorteknik föreläsning CE – F2 INSTRUKTIONSFORMAT Binärkod i Nios II ADDI Rdst, RsrcA, Data 0x04 5 5 16 6 bitar per fält SUBI rB, rA, IMM16 ADDI rB, rA, -IMM16 IMM16 innehåller ett 2-komplement-tal ...
IS1200 Datorteknik föreläsning CE – F2 Program Memory m x 8 Fetch Instruction Register File 32 x 32 IR0 Fetch Operand IR1 Execute IR2 Write Back Register File 32 x 32 Immediate datainför ny dataväg Ny dataväg hur många bitar ? 16! PC +n ALU
IS1200 Datorteknik föreläsning CE – F2 31 16 15 0 xxxxxxxxxxxxxxxx 31 16 15 0 0xxxxxxxxxxxxxxx 31 16 15 0 Extension 16 -> 32 bitsNollor eller Sign Extension Fyll ut med nollor Fungerar för unsignedint 00000000000000000 xxxxxxxxxxxxxxxx Sign extension Vid positivt tal 00000000000000000 0xxxxxxxxxxxxxxx Sign Extension Fungerar för signedint 1xxxxxxxxxxxxxxx Sign extension Vid negativt tal 1111 1111 1111 1111 1xxxxxxxxxxxxxxx
IS1200 Datorteknik föreläsning CE – F2 JUMP och BRAOvillkorliga hopp • JUMP brukar ha direkt adress • BRA brukar ha PC-relativ adress 32: JMP 104 #PC := 104 ”hopp till 104” . . 104: 224: BRA 40 #PC := pc + 40 ”hopp till 268” 268:
IS1200 Datorteknik föreläsning CE – F2 Ny hopp-instruktionJUMP (Raddr) Registerindirekt adressering Effektiv adress i ett register Kopiera registerinnehåll till PC Register med 32 bitar betyder att 32 bits adress kan användas Hur får man 32 bits adress till registret ?Det måste ordnas på något sätt !
IS1200 Datorteknik föreläsning CE – F2 Program Memory m x 8 Fetch Instruction Register File 32 x 32 IR0 Fetch Operand IR1 Execute IR2 Write Back Register File 32 x 32 JUMP (Raddr)inför ny dataväg Ny dataväg hur många bitar ? 32! PC +n ALU
IS1200 Datorteknik föreläsning CE – F2 Vanlig hopp-instruktionJUMP Immn • Immn skrivs till PC • Hur stor är Immn ?”lediga” bitar t.ex. 32-6=26 ! • Hur stor vill vi att Immn ska vara helst ?Immn ska kunna adressera ”hela minnet” !
IS1200 Datorteknik föreläsning CE – F2 INSTRUKTIONSFORMAT JUMP brukar ha direkt adress JUMP Label JUMP 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!
IS1200 Datorteknik föreläsning CE – F2 Vanlig hopp-instruktionBR Immn • PC sätts till PC + Immn • Hur stor är Immn ?”lediga” bitar t.ex. 32-6=26 ! • Hur stor vill vi att Immn ska vara helst ?Immn ska kunna adressera ”hela minnet” !
IS1200 Datorteknik föreläsning CE – F2 INSTRUKTIONSFORMAT BRA brukar ha PC-relativ adress BRA Displacement BRA 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!
IS1200 Datorteknik föreläsning CE – F2 Program Memory m x 8 Fetch Instruction Register File 32 x 32 IR0 Fetch Operand PC+ Imm PC+ 4 IR1 PC Execute IR2 Write Back Register File 32 x 32 BRA Immninför ADDitionsenhet och datavägar pc Imm ADD pc ALU Nytt
IS1200 Datorteknik föreläsning CE – F2 2 .Branch Delay Slot (Fenomen pga PIPE-LINE) 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 ...
IS1200 Datorteknik föreläsning CE – F2 Fetch Instruction Register File 32 x 32 IR0 Fetch Operand PC+ Imm PC+ 4 IR1 PC Execute IR2 Write Back Register File 32 x 32 Efter FI av 16: BRA 64 16: BRA 64 20: ADD … 20 BRA 64 20 64 ADD 84 20 ALU 16: BRA 64 20: ADD … 24: … … 84: SUB … 88: ...
IS1200 Datorteknik föreläsning CE – F2 Fetch Instruction Register File 32 x 32 IR0 Fetch Operand IR1 Execute IR2 Write Back Register File 32 x 32 Efter FI av 20: ADD 80: … 84: SUB … 84 ADD 84 4 PC+ Imm PC+ 4 ADD 88 PC 84 BRA 64 ALU 16: BRA 64 20: ADD … 24: … … 84: SUB … 88: ...