820 likes | 993 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: Fredrik Lundevall
IS1200 Datorteknik föreläsning CE – F2 IS1200 Datorteknik våren 2014http://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 Cacheminnen CE F7 CE Ö7 hemlab cache Avbrott och "trap" CE F8 CE Ö8 lab nios2 Trådar, synkronisering CE F9 CE Ö9 hemlab trådar CE F10 CE Ö10 tentamen
IS1200 Datorteknik föreläsning CE – F2 Uppdelning i övningsgrupperrekommendatioDela upp er ”fifty-fifty”
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 Dependency och Data Forward • Branch Delay, 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 med bara två register-operander ADD Rdst<- Rdst + Rsrc ADD Exempelvis: 6 5 5 Hur många bitar behövs? 6+5+5 Hur stor blir varje instruktion? Välj 16 (t.ex. Tidigare variant av Nios)
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 till exempel: 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 Random Access Memory ”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 Register FileRead from R0 Datain Bus Register Read Address 31 . . . . . . 0…0 WR WR busdrivkrets 0 clock clock OE OE OE Adress- Avkodare Bus Kiselplats: Cirka 17+32*350 grindar Dataut
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 Tid per intruktionHur 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 Hastighet 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. Branch Delay 3. Structural Hazard 4. Load Delay
IS1200 Datorteknik föreläsning CE – F2 1 .Data Dependency(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 Dependencymed 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 Dependencylä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 NYTT: 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 (och 2 register) 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 med immediate data (och bara 1 register) ADDI Rdst Rdst + data5 ADDI Exempelvis: 6 5 5 Hur många bitar behövs? ~6+5+5 Hur stor blir varje instruktion? Precis16
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 INSTRUKTIONSFORMAT Binärkod i Nios II ADDI Rdst, R0, Data 0x04 5 5 16 6 bitar per fält ADDI Rdst, R0, Imm16 blir MOVI Rdst, Imm16 Skriv en 16-bitars konstant till ett register
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 000000000000000000xxxxxxxxxxxxxxx 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 FETCH (update PC) (decode) EXECUTE Hopp-instruktioner Skriver effektiv adress till PC PC := pc + 4 PC := Effektiv Adress JUMP, BR CALL, CALLR, RET TRAP, ERET …
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” !dvs vara 32 bitars adress
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 ? 32 bitar vore bra men ..Immn ska kunna adressera ”hela minnet” !