820 likes | 977 Vues
IS1500 Datorteknik. Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel 4. September 15, 2010. IS1500 Datorteknik o k, föreläsning CE - F2. 1. Välkommen till fortsättning av IS1500 Datorteknik och komponenter. ”Hur datorer fungerar” Kursens hemsida finns utpekad från:
E N D
IS1500 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel 4 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 1
Välkommen till fortsättning avIS1500 Datorteknik och komponenter ”Hur datorer fungerar” Kursens hemsida finns utpekad från: http://www.ict.kth.se/courses/IS1500 emailadress till lärare: is1500@ict.kth.se Kursansvarig: Fredrik Lundevall September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 2
CE F10 CE Ö10 tentamen IS1500 Datorteknik o khttp://www.ict.kth.se/courses/IS1500 DC Ö1 DC F1 Digitala komponenter DC F2 DC Ö2 lab dicom 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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 3
IS1500 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 • 5 stegs Pipe-line, Load Delay September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 4
Litteraturhänvisningar • Kursboken, valda delar av kapitel 4,Speciellt sidorna • 300-315 • 328-384 September 15, 2011 IS1500 Datorteknik o k, föreläsning CE - F2 5
& >1 =1 DRIVER Nu bygger vi en dator av ... & 1 >1 WR REGISTER +n COUNTER preset D Q EN cl Q’ clear ALU MUX September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 6
Viktiga delar i en dator CPU BUS program I/O MEM data September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 7
FETCH (update PC) (decode) EXECUTE Programexekveringi två steg September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 8
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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 9
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 …) September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 10
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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 11
Programexekveringi fyra steg FI - Fetch Instruction FO - Fetch Operand EX - Execute WB - Write Back September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 12
3. EX - EXecute ALU-register ALU-A och ALU-B operander A B ~6 bitars kod Execute operation ALU t.ex. ADD resultat av operationen resultat-register 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, ... September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 13
Register File 32 x 32 Fetch Operand Execute 2. FO - Fetch Operand RWM - Read Write Memory ”SRAM” 5 bitars adress, RsrcA Read 5 bitars adress, RsrcB ALU SRAM – Static RAM ”snabbt minne” September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 14
Register File 32 x 32 Fetch Operand Execute Write Back Register File 32 x 32 4. WB - Write Back Read SAMMA en Register File (inte två olika) ALU 5 bitars adress, Rdst Write September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 15
Program Memory m x 8 Fetch Instruction Register File 32 x 32 Fetch Operand Execute Write Back Register File 32 x 32 1. FI - Fetch Instruction 16/32 IR 5 5 PC +n 6 ALU PC - Program Counter n = 2 eller 4 beror på om instruktion är 16 eller 32 bitar, 2 eller 4 bytes 5 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 16
IS1500 Datorteknik och komponeneter, föreläsning DC-F2 Register FileRead from R0 Datain Bus Register Read Address 31 . . . . . . 0…0 WR WR 0 clock clock OE OE OE Adress- Avkodare Bus Kiselplats: Cirka 17+32*350 grindar Dataut
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 ... • ... September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 18
FI FO EXE WB 4 stegs CPUKonsekvent synkronism 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 resultat-reg 5 Skriv operander till ALU-register 3 Skriv instruktion till Instruction Register 1 Skriv nytt värde till Program Counter Skrivning utförs vid positiv flank på clock, samtidigt till varje vippa/register/minne September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 19
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! September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 20
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 ALU IR2 NYTT IR1: 11 vippor IR2: 5 vippor September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 21
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 varje klockcykel! September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 22
IS1500 Datorteknik PAUS-BILD (andas djupt och ta nya tag) September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 23
Fenomen pga PIPE-LINE 1. Data Dependency 2. Delayed Branch 3. Load Delay 4. Structural Hazard September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 24
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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 25
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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 26
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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 27
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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 28
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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 29
FI FO EXE WB FI FO EXE WB FI FO EXE WB Data Dependency, RAWlä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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 30
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 Nya R1 skrivs till RegFile Nya R4 skrivs till RegFile 44: ADD ... 48: ADD ... NOP NOP 60: ADD ... Nya R1 och R4 läses från RegFile September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 31
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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 32
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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 33
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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 34
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 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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 35
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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 36
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 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 37
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 ... September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 38
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 ? PC +n ALU September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 39
31 16 15 0 xxxxxxxxxxxxxxxx 31 16 15 0 0xxxxxxxxxxxxxxx 31 16 15 0 1xxxxxxxxxxxxxxx Extension 16 -> 32 bitsNollor eller Sign Extension Fyll ut med nollor Fungerar för unsignedint 00000000000000000xxxxxxxxxxxxxxxx Sign extension Vid positivt tal 000000000000000000xxxxxxxxxxxxxxx Sign Extension Fungerar för signedint Sign extension Vid negativt tal 111111111111111111xxxxxxxxxxxxxxx September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 40
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: September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 41
NYTT: 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 ! September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 42
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 ? PC +n ALU September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 43
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” ! September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 44
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! September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 45
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” ! September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 46
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! September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 47
Program Memory m x 8 Fetch Instruction Register File 32 x 32 IR0 Fetch Operand PC+n PC+Imm IR1 PC Execute IR2 Write Back Register File 32 x 32 BRA Immninför ADDitionsenhet och datavägar ADD ALU Nytt September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 48
Fenomen pga PIPE-LINE2 .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 ... September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 49
Fetch Instruction Register File 32 x 32 IR0 Fetch Operand PC+4 PC+Imm 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 20 ALU 16: BRA 64 20: ADD … 24: … … 84: SUB … 88: ... September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 50