600 likes | 750 Views
2G1502 Datorteknik allmän kurs. Föreläsning 2 Vi bygger en processor. >1. &. =1. DRIVER. ALU. MUX. Nu bygger vi en dator. WR. REGISTER. +n. COUNTER. preset. D. Q. EN. cl. Q’. clear. Viktiga delar i en dator. CPU. BUS. I/O. MEM. FETCH (update PC). (decode) EXECUTE.
E N D
2G1502 Datorteknik allmän kurs Föreläsning 2 Vi bygger en processor 2G1502, föreläsning 2 för E, vt2003
>1 & =1 DRIVER ALU MUX Nu bygger vi en dator WR REGISTER +n COUNTER preset D Q EN cl Q’ clear 2G1502, föreläsning 2 för E, vt2003
Viktiga delar i en dator CPU BUS I/O MEM 2G1502, föreläsning 2 för E, vt2003
FETCH (update PC) (decode) EXECUTE Programexekveringi två steg 2G1502, föreläsning 2 för E, vt2003
Programexekveringi fyra steg • FI - Fetch Instruction • FO - Fetch Operand • EX - Execute • WB - Write Back 2G1502, föreläsning 2 för E, vt2003
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 2G1502, föreläsning 2 för E, vt2003
ADD INSTRUKTIONSFORMAT med tre operander i register ADD Rdst, RsrcA, RsrcB Hur många bitar behövs ? Hur stor blir varje instruktion ? INSTRUKTIONSFORMAT 2G1502, föreläsning 2 för E, vt2003
INSTRUKTIONSFORMAT med två operander i register ADD Rdst, RsrcA ADD Hur många bitar behövs ? Hur stor blir varje instruktion ? INSTRUKTIONSFORMAT 2G1502, föreläsning 2 för E, vt2003
Execute ALU EX - EXecute operander ~6 bitars kod t.ex. ADD resultat 2G1502, föreläsning 2 för E, vt2003
Fetch Operand Register File 32 x 32 Register File 32 x 32 Execute FO - Fetch Operand 5 bitars adress 5 bitars adress ALU 2G1502, föreläsning 2 för E, vt2003
Fetch Operand Write Back Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Execute WB - Write Back ALU 5 bitars adress 2G1502, föreläsning 2 för E, vt2003
Fetch Operand Write Back Fetch Instruction Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Execute Program Memory n x 16 FI - Fetch Instruction IR PC +2 ALU 2G1502, föreläsning 2 för E, vt2003
EXE EXE FI FI WB WB FO FO Utan PIPE-LINEHur många klockcykler ? ADD ADD 2G1502, föreläsning 2 för E, vt2003
Fetch Operand Write Back Fetch Instruction IR0 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 IR1 Execute IR2 Program Memory n x 16 PIPE - LINE införs nu !Flera register IR PC +2 ALU NYTT 2G1502, föreläsning 2 för E, vt2003
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 ... 2G1502, föreläsning 2 för E, vt2003
Fenomen pga PIPE-LINEData Dependencies • Programexempel44: ADD R4 <- R5 + R6 46: ADD R1 <- R2 + R3 48: ADD R7 <- R1 + R4 • ”nya” R1 och R4 finns inte i REG-FILE 2G1502, föreläsning 2 för E, vt2003
Fetch Operand Write Back Fetch Instruction IR0 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 IR1 Execute IR2 Program Memory n x 16 Data Dependencies 44: R4 <- R5+R6 PC 46 +2 ALU 2G1502, föreläsning 2 för E, vt2003
Fetch Operand Write Back Fetch Instruction IR0 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 IR1 Execute IR2 Program Memory n x 16 Data Dependencies 46: R1 <- R2+R3 PC 48 44: R4 <- R5+R6 +2 ALU 2G1502, föreläsning 2 för E, vt2003
Fetch Operand Write Back Fetch Instruction IR0 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 IR1 Execute IR2 Program Memory n x 16 Data Dependencies 48: R7 <- R1+R4 PC 50 46: R1 <- R2+R3 +2 ALU nya r1 44: R4 <- R5+R6 nya r4 2G1502, föreläsning 2 för E, vt2003
EXE EXE EXE FI FI FI WB WB WB FO FO FO Data Dependenciesmed 4 stegs PIPE-LINE 44: ADD R4 <- R5 + R6 46: ADD R1 <- R2 + R3 48: ADD R7 <- R1 + R4 R1 skrivs till RegFile R4 skrivs till RegFile 44: ADD ... 46: ADD ... 48: ADD ... R1 och R4 läses från RegFile 2G1502, föreläsning 2 för E, vt2003
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 46: ADD R1 <- R2 + R3 NOP NOP48: ADD R7 <- R1 + R4 R1 skrivs till RegFile R4 skrivs till RegFile 44: ADD ... 46: ADD ... NOP NOP 48: ADD ... R1 och R4 läses från RegFile 2G1502, föreläsning 2 för E, vt2003
Fetch Operand Write Back Fetch Instruction IR0 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 IR1 Execute IR2 Program Memory n x 16 Data Dependenciesinför nya data-vägar 48: R7 <- R1+R4 PC 50 46: R1 <- R2+R3 +2 ALU 44: R4 <- R5+R6 2G1502, föreläsning 2 för E, vt2003
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 E, vt2003
INSTRUKTIONSFORMAT med immediate data ADD Rdst, Rsrc, datan ADD Hur många bitar behövs ? Hur stor blir varje instruktion ? INSTRUKTIONSFORMAT 2G1502, föreläsning 2 för E, vt2003
INSTRUKTIONSFORMAT med immediate data ADD Rdst, datan ADD Hur många bitar behövs ? Hur stor blir varje instruktion ? INSTRUKTIONSFORMAT 2G1502, föreläsning 2 för E, vt2003
Fetch Operand Write Back Fetch Instruction IR0 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 IR1 Execute IR2 Program Memory n x 16 Immediate datainför nya datavägar Ny dataväg PC +2 ALU 2G1502, föreläsning 2 för E, vt2003
HoppinstruktionerJUMP och BRA • JUMP brukar ha direkt adress • BRA brukar ha PC-relativ adress 08: JMP 18 ;PC := 18 ”hopp till 18” . . 18: 46: BRA 18 ;PC := pc + 18 ”hopp till ~”66” 66: 2G1502, föreläsning 2 för E, vt2003
Vanlig 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 E, vt2003
Fetch Operand Write Back Fetch Instruction IR0 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 IR1 Execute IR2 Program Memory n x 16 JUMP (Raddr)inför nya datavägar Ny dataväg PC +2 ALU 2G1502, föreläsning 2 för E, vt2003
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 E, vt2003
Vanlig hopp-instruktionBR Immn • PC sätts till PC + Immn • Hur stor är Immn 2G1502, föreläsning 2 för E, vt2003
Fetch Operand Write Back Fetch Instruction IR0 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 IR1 Execute IR2 Program Memory n x 16 BRA Immninför ADDitionsenhet och datavägar ADD PC +2 ALU 2G1502, föreläsning 2 för E, vt2003
Fenomen pga PIPE-LINEBranch Delay Slot Instruktionen i minnespositionen närmast efter en hoppinstruktion kommer utföras innan hoppet verkställs Programexempel 18: BRA 74 20: ADD … 22: … … 94: SUB ... 2G1502, föreläsning 2 för E, vt2003
Fetch Operand Write Back Fetch Instruction IR0 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 IR1 Execute IR2 Efter FI av 18: BRA 74 18: BRA 74 20: ADD BRA 74 20 74 ADD PC 20 +2 ALU 18: BRA 74 20: ADD … 22: … … 94: SUB … 96: ... 2G1502, föreläsning 2 för E, vt2003
Fetch Operand Write Back Fetch Instruction IR0 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 IR1 Execute IR2 Efter FI av 20: ADD 18: BRA 74 20: ADD ADD ADD PC 94 BRA 74 +2 ALU 18: BRA 74 20: ADD … 22: … … 94: SUB … 96: ... 2G1502, föreläsning 2 för E, vt2003
Fetch Operand Write Back Fetch Instruction IR0 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 IR1 Execute IR2 Efter FO av 20: ADD 18: BRA 74 20: ADD SUB ADD PC ADD 96 +2 ALU 18: BRA 74 20: ADD … 22: … … 94: SUB … 96: ... BRA 74 2G1502, föreläsning 2 för E, vt2003
Hur undviks Delay Slot Hur utnyttjas Delay Slot • Ordna så att hårdvaran väntar • Fyll med en NOP • Flytta in en instruktion i hoppluckan • Kompilator/Programmerare väljer ? 2G1502, föreläsning 2 för E, vt2003
Villkorlig hopp-instruktionBcond Immn • PC sätts till PC + Immn om cond är sant • PC sätts till PC + 2om cond är falskt • om 2 är antal bytes per instruktion 2G1502, föreläsning 2 för E, vt2003
Vanlig instruktionSUB Rdst <-- RsrcA, RsrcB • Kombinera innehåll i RsrcA och RsrcBoch skriv till Rdst • Förutom resultatet / skillnadenså lagras yterligare informationi STATUS-flaggor 2G1502, föreläsning 2 för E, vt2003
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 • Påverkas av ADD, SUB, CMP ... 2G1502, föreläsning 2 för E, vt2003
Gäller detta för Nios-Processorn ? Minne Generella register Programräknare R0 PC R1 Status R31 NVZC 2G1502, föreläsning 2 för E, vt2003
Ladda ett register med ettkonstant värde, Nios • MOVEI Rdst, Imm5 MOVI Rdst, Imm5 MOVI 6 5 5 2G1502, föreläsning 2 för E, vt2003
Ladda ett register med ettkonstant värde, Nios • Önskvärd instruktion • MOVI Rdst, Imm32 • Kopiera 32 bitar från minnet till ett register • Destination anges av Rdst 2G1502, föreläsning 2 för E, vt2003
Ladda ett register med ettkonstant värde, Nios • Instruktionsformatet har bara 5 bitar lediga • Inför ett extra register, K-reg, med 11 bitar • Inför en instruktion för att ladda K-reg • PFX Imm11 laddar K med 11 bitar 2G1502, föreläsning 2 för E, vt2003
Processorn (Nios) Minne Generella register Programräknare R0 PC R1 K Status R31 NVZC 2G1502, föreläsning 2 för E, vt2003
Fetch Operand Write Back Fetch Instruction IR0 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 Register File 32 x 32 IR1 Execute IR2 Program Memory n x 16 Inför ny hårdvaraK - register ADD PC +2 ALU 2G1502, föreläsning 2 för E, vt2003
Hur används register K ? • Instruktionen PFX Imm11skriver ett 11 bitars värde till register K • Värdet finns kvar i en klockcykelsen nollställs register K • Instruktionen direkt efter PFX Imm11kan använda innehåll i K • Imm5 ökar till (Imm11 cat Imm5 ) 2G1502, föreläsning 2 för E, vt2003
FI PFX - EXE FI - WB FO PFX Imm11 PFX IMM11 MOVI Rdst, Imm5 2G1502, föreläsning 2 för E, vt2003
Ladda ett register med 16 bitars värde, Nios • Två instruktioner laddar ett reg med 16 bitar • MOVEP Rdst, Imm16 ;Syntetisk instr.ersätts av två verkliga instruktioner • PFX Imm11 ;11 bitar till K-reg • MOVI Rdst, Imm5 ;16 bitar i Rdstfyller ut med nollor i bit 31-16 2G1502, föreläsning 2 för E, vt2003
Ladda ett register med 32 bitars värde, Nios • Fyra instruktioner laddar ett reg med 32 bitar • MOVEA Rdst, Imm32 ;Syntetisk instr.ersätts av fyra verkliga instruktioner • PFX Imm11 ;11 bitar till K-reg • MOVI Rdst, Imm5 ;16 bitar i Rdst • PFX Imm11 ;11 bitar till K-reg • MOVHI Rdst, Imm5 ;32 bitar i Rdst bitarna 15-0 påverkas ej av MOVHI 2G1502, föreläsning 2 för E, vt2003