720 likes | 910 Views
2G1502 Datorteknik allmän kurs. Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel 7 version vt 2004 för IT. 2G1502 Datorteknik allmän kurs. Föreläsning 2, innehåll Vi bygger en processor 4 stegs Pipe-line för ADD, SUB, ... Data Dependencies och Data Forward
E N D
2G1502 Datorteknik allmän kurs Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel 7 version vt 2004 för IT 2G1502, föreläsning 2 för IT, vt2004
2G1502 Datorteknik allmän kurs 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 med indexering • 5 stegs Pipe-line • Load Delay • Nios, K-register och MOVIx 2G1502, föreläsning 2 för IT, vt2004
>1 & =1 DRIVER ALU MUX Nu bygger vi en dator av ... WR REGISTER +n COUNTER preset D Q EN cl Q’ clear 2G1502, föreläsning 2 för IT, vt2004
Viktiga delar i en dator CPU BUS I/O MEM 2G1502, föreläsning 2 för IT, vt2004
FETCH (update PC) (decode) EXECUTE Programexekveringi två steg 2G1502, föreläsning 2 för IT, vt2004
Typisk instruktionADD Rdst <-- RsrcA + RsrcB • Kombinera innehåll i RsrcA och RsrcB och skriv till Rdst • 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 Rdst, Rsrc ;Rdst <-- Rdst + Rsrc 2G1502, föreläsning 2 för IT, vt2004
ADD INSTRUKTIONSFORMAT med tre operander i register 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 2G1502, föreläsning 2 för IT, vt2004
INSTRUKTIONSFORMAT med två operander i register ADD Rdst<- Rdst+ RsrcA ADD Exempelvis: 6 5 5 Hur många bitar behövs? ~6+5+5! Hur stor blir varje instruktion? 16! 2G1502, föreläsning 2 för IT, vt2004
Programexekveringi fyra steg • FI - Fetch Instruction • FO - Fetch Operand • EX - Execute • WB - Write Back 2G1502, föreläsning 2 för IT, vt2004
Execute ALU EX - EXecute operander ~6 bitars kod t.ex. ADD resultat 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Register File 32 x 32 Execute FO - Fetch Operand 5 bitars adress 5 bitars adress ALU 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Register File 32 x 32 Execute Register File 32 x 32 WB - Write Back ALU 5 bitars adress 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 Execute Program Memory m x 8 Register File 32 x 32 FI - Fetch Instruction 32 IR PC +n ALU 2G1502, föreläsning 2 för IT, vt2004
EXE FI WB FO 4 stegs CPUKonsekvent synkronism Leta fram instruktion ur I-cache Avkoda samt Leta fram operander ALU arbetar Förbered skrivning till Register File clock Skriv resultat till Register File Skrivning till tmp-reg Skriv operander till ALU-register Skrivning till Instruction Register Skrivning till Program Counter 2G1502, föreläsning 2 för IT, vt2004
EXE EXE FI FI WB WB FO FO Utan PIPE-LINEHur många klockcykler ? ADD ADD 4 klockcykler per instruktion! 1 instruktion per 4 klockcykler! 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 IR0 IR1 Execute IR2 Program Memory m x 8 Register File 32 x 32 PIPE - LINE införs nu !Flera register IR PC +n ALU NYTT 2G1502, föreläsning 2 för IT, vt2004
EXE EXE EXE EXE FI FI FI FI WB WB WB WB FO FO FO FO Med PIPE-LINEHur många klockcykler ? ADD ADD ADD ADD ... 1 klockcykel per instruktion! 1 instruktion per klockcykel! 2G1502, föreläsning 2 för IT, vt2004
Fenomen pga PIPE-LINE1 .Data Dependencies • Programexempel44: ADD R4 <- R5 + R6 48: ADD R1 <- R2 + R3 52: ADD R7 <- R1 + R4 • ”nya” R1 och R4 finns inte i REG-FILE 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 IR0 IR1 Execute IR2 Program Memory m x 8 Register File 32 x 32 Data Dependencies 44: R4 <- R5+R6 ALU 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 IR0 IR1 Execute IR2 Program Memory m x 8 Register File 32 x 32 Data Dependencies 48: R1 <- R2+R3 44: R4 <- R5+R6 ALU 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 IR0 IR1 Execute IR2 Program Memory m x 8 Register File 32 x 32 Data Dependencies 52: R7 <- R1+R4 48: R1 <- R2+R3 ALU nya r1 44: R4 <- R5+R6 nya r4 2G1502, föreläsning 2 för IT, vt2004
EXE EXE EXE FI FI FI WB WB WB FO FO FO Data Dependenciesmed 4 stegs PIPE-LINE 44: ADD R4 <- R5 + R6 48: ADD R1 <- R2 + R3 52 ADD R7 <- R1 + R4 R1 skrivs till RegFile R4 skrivs till RegFile 44: ADD ... 48: ADD ... 52: ADD ... R1 och R4 läses från RegFile 2G1502, föreläsning 2 för IT, vt2004
EXE EXE EXE FI FI FI WB WB WB FO FO FO Data Dependenciesmed 4 stegs PIPE-LINE 44: ADD R4 <- R5 + R6 48: ADD R1 <- R2 + R3 52 ADD R7 <- R1 + R4 R1 skrivs till RegFile R4 skrivs till RegFile 44: ADD ... 48: ADD ... 52: ADD ... R1 och R4 läses från RegFile 2G1502, föreläsning 2 för IT, vt2004
EXE EXE EXE EXE EXE FI FI FI FI FI WB WB WB WB WB FO FO FO FO FO 44: ADD R4 <- R5 + R6 48: ADD R1 <- R2 + R3 NOP NOP52: ADD R7 <- R1 + R4 R1 skrivs till RegFile R4 skrivs till RegFile 44: ADD ... 48: ADD ... NOP NOP 52: ADD ... R1 och R4 läses från RegFile 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 IR0 IR1 Execute IR2 Program Memory m x 8 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 2G1502, föreläsning 2 för IT, vt2004
EXE EXE EXE FI FI FI WB WB WB FO FO FO Data Forwardgenvägar ger snabbhet 44: ADD R4 <- R5 + R6 48: ADD R1 <- R2 + R352: ADD R7 <- R1 + R4 R1 skrivs till RegFile R4 skrivs till RegFile 44: ADD ... 48: ADD ... 52: ADD ... R1 och R4 med Data Forward 2G1502, föreläsning 2 för IT, vt2004
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 2G1502, föreläsning 2 för IT, vt2004
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 2G1502, föreläsning 2 för IT, vt2004
INSTRUKTIONSFORMAT med immediate data ADDI Rdst<- Rdst+ data5 ADDI Exempelvis: 6 5 5 Hur många bitar behövs? ~6+5+5! Hur stor blir varje instruktion? 16! 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 IR0 IR1 Execute IR2 Program Memory m x 8 Register File 32 x 32 Immediate datainför nya datavägar Ny dataväg PC +n ALU 2G1502, föreläsning 2 för IT, vt2004
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: 2G1502, föreläsning 2 för IT, vt2004
Typisk hopp-instruktionJUMP (Raddr) • 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 ! 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 IR0 IR1 Execute IR2 Program Memory m x 8 Register File 32 x 32 JUMP (Raddr)inför nya datavägar Ny dataväg PC +n ALU 2G1502, föreläsning 2 för IT, vt2004
Vanlig hopp-instruktionJUMP Immn • Immn skrivs till PC • Hur stor är Imm ? • Hur stor vill vi att Imm ska vara helst ? 2G1502, föreläsning 2 för IT, vt2004
Vanlig hopp-instruktionJUMP Immn • Immn skrivs till PC • Hur stor är Imm ?”lediga” bitar t.ex. 32-6=26 ! • Hur stor vill vi att Imm ska vara helst ?Kunna adressera ”hela minnet” ! 2G1502, föreläsning 2 för IT, vt2004
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 Imm ska vara helst ?Kunna adressera ”hela minnet” 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 IR0 IR1 Execute PC+4 PC+Imm IR2 Program Memory m x 8 PC Register File 32 x 32 BRA Immninför ADDitionsenhet och datavägar ADD ALU Nytt 2G1502, föreläsning 2 för IT, vt2004
Fenomen pga PIPE-LINE2 .Branch Delay Slot Instruktionen i minnespositionen närmast efter en hoppinstruktion kommer utföras innan hoppet verkställs Programexempel 16: BRA 64 20: ADD … ;kommer att utföras 24: … … 84: SUB ... 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 IR0 IR1 Execute PC+4 PC+Imm IR2 PC Register File 32 x 32 Efter FI av 16: BRA 74 16: BRA 64 20: ADD 20 BRA 64 20 64 ADD 20 ALU 16: BRA 64 20: ADD … 24: … … 84: SUB … 88: ... 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 IR0 IR1 Execute PC+4 PC+Imm IR2 Register File 32 x 32 Efter FI av 20: ADD 16: BRA 64 20: ADD 84 ADD 84 ADD PC 84 BRA 64 ALU 16: BRA 64 20: ADD … 24: … … 84: SUB … 88: ... 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 IR0 IR1 Execute PC+4PC+Imm IR2 Register File 32 x 32 Efter FO av 20: ADD 16: BRA 64 20: ADD 88 SUB 88 ADD PC ADD 88 ALU 16: BRA 64 20: ADD … 24: … … 84: SUB … 88: ... BRA 64 2G1502, föreläsning 2 för IT, vt2004
Hur undviks Branch Delay SlotHur utnyttjas Branch Delay Slot Olika metoder: • Ordna så att hårdvaran väntar • Fyll med en (onyttig) NOP • Flytta en (nyttig) instruktion i hoppluckan • Kompilator/Programmerare väljer 2G1502, föreläsning 2 för IT, vt2004
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 ... 2G1502, föreläsning 2 för IT, vt2004
Gäller för MIPS/Nios-Processorn ... Minne Generella register Programräknare R0 PC R1 Status R31 NVZC 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 IR0 IR1 Execute PC+4 PC+Imm IR2 Program Memory m x 8 PC Register File 32 x 32 STATUS-flaggor ADD ALU NVZC Nytt 2G1502, föreläsning 2 för IT, vt2004
LOAD och STOREmemory <--> register Vi vill kunna utföra instruktioner av typen LOAD och STORE Vilka operandutpekningsmetoder ska vi ha ? Gärna med direkt adressering dvs • LOAD reg <- mem(adr) • STORE mem(adr) <- reg men: En ”hel adress” ryms ej i adressfältetvilket leder till ... 2G1502, föreläsning 2 för IT, vt2004
LOAD och STOREmemory <--> register • Vi inför hårdvara för instruktionerna LOAD Rdst, [ Raddr ] STORE [ Raddr ], Rsrc • med registerindirekt adressering dvs effektivadress i register 2G1502, föreläsning 2 för IT, vt2004
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 IR0 IR1 Execute PC+4 PC+Imm IR2 Program Memory m x 8 Register File 32 x 32 LOAD och STOREmed 4 stegs PIPE-LINE ADD PC RWM ALU 2G1502, föreläsning 2 för IT, vt2004
EXE FI FI WB WB MEM FO FO LOAD och STOREmed 4 stegs PIPE-LINE Data från MEM finns tillgängligt Leta fram data ur MEM LOAD to Rd USE Rd Data från MEM finns tillgängligt för FO 2G1502, föreläsning 2 för IT, vt2004
Register File 32 x 32 IR0 IR1 PC+4 PC+Imm IR2 Program Memory m x 8 Register File 32 x 32 LOAD och STOREmed data forward ADD PC RWM ALU 2G1502, föreläsning 2 för IT, vt2004