31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.

Slides:



Advertisements
Liknande presentationer
IT för personligt arbete F5
Advertisements

Programmeringsteknik I: F1 1 Föreläsning 1: Intro till kursen och programmering  Kursens hemsida  Studentportalen.
En avancerad miniräknare
Datorarkitekturer och operativsystem
EDA Digital och Datorteknik
Programmeringsteknik I: F1 1 Föreläsning 1: Intro till kursen och programmering Kursens hemsida Studentportalen.
William Sandqvist Datorteknik övning 2 Subrutinanrop William Sandqvist
IE1204 Digital Design Aritmetik Låskretsar, vippor, FSM FSM, VHDL introduktion Asynkron FSM F1 F3 F5 Ö3 F8 F10 F12 Ö8 F2Ö1 Ö2 Ö6 F13 F9Ö5 tentamen William.
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
IS1500 Datorteknik och komponenter
IS1500 Datorteknik och komponenter
PC-Teknik © CAAK1 PC-teknik Anna-Karin Carstensen Plan 3 el/data tel:
IS1200 Datorteknik Föreläsning 9 1. CPU-scheduling 2. Semaforer
23 August 2014 IS1200 Datorteknik vt09, föreläsning 10, (E och I mfl)1 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory.
February 8, 2008 IS1200/2G1518 Datorteknik, föreläsning 4 vt2008 (E)1 IS1200 Datorteknik Föreläsning 4 Programutveckling, Intro till lab 1 Kursboken, kapitel.
2G1502 Datorteknik allmän kurs Föreläsning 4 Programutveckling Något om bussar.
1 2G1518 Datorteknik Föreläsning 5, våren 2007 Bussar In- och utmatning – I/O Pollning Handskakning.
Denna föreläsning zVad kursen handlar om zKursupplägg, litteratur, bra att veta zPrestanda - ämnet för dagen.
En vanlig femstegspipeline FDEMW FDEMW FDEMW FDEMW tid.
En vanlig femstegspipeline FDEMW FDEMW FDEMW FDEMW tid.
IE1206 Inbyggd Elektronik F1 F2
IS1500 Datorteknik och komponenter
9 September 2014IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
IE1206 Inbyggd Elektronik F1 F2
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1 De bifogade OH-bilderna är bara utkast till vad som kan vara.
Digital och Datorteknik – EDA / Mikroprogrammering EDA Digital och Datorteknik 2009/2010 Mikroprogrammering Arbetsboken, avsnitt 28.
2G1510 Datorteknik fk Föreläsning 1, hösten 2003.
William Sandqvist PIC PIC (Peripheral Interface Computer) är en datorkrets med ”allt i ett”. Prog Mem. Programminnet är 2048 instruktioner.
Lågnivåprogrammering Översikt av I/O-mekanismer i hårdvara Olika språkkrav och modeller för komponent- hantering(device driving) Modeller för komponent-hantering.
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F61 IS1500 Datorteknik och komponenter Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd.
William Sandqvist Övning 8 Minnessystem Lokalitet Cacheminnen William Sandqvist
IS1200 Datorteknik Föreläsning CE F2 Vi bygger en processor Kursboken, delar av kapitel 7 31 March IS1200 Datorteknik föreläsning CE – F2.
1 386 Från s bits adressbuss –=>4GB minne kan adresseras 32 bits databuss max klockfrekvens: 40MHz Protected mode –virtuellt minne –segmentering.
Anders Sjögren Går det att simulera vår värld med 1:or och 0:or ?
Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —
2 April 2015 IS1200 Datorteknik föreläsning CE - F71 IS1200 Datorteknik och komponenter Föreläsning 7 Exceptions Interrupts - Traps.
2 April 2015 IS1200 Datorteknik o k, föreläsning CE - F31 IS1200 Datorteknik Föreläsning CE F3 Metoder / subrutiner Kursboken, delar av kapitel 4.
William Sandqvist IS1500 Datorteknik William Sandqvist
2G1518 Datorteknik Föreläsning 5 Bussar In- och utmatning (Input/Output, I/O) Programstyrd pollning hösten 2005 för D3 och CLMDA m fl.
3 April 2015IS1200 Datorteknik, föreläsning 61 IS1200 Datorteknik Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd pollning.
3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F41 IS1500 Datorteknik och komponenter Föreläsning CE F4 Programutveckling & Intro till lab 1, nios2time.
Föreläsning2 Operativsystem.
22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion.
William Sandqvist Datorteknik övning 1 Introduktion till assemblerprogrammering av Nios II William Sandqvist
1 June 20152G1502, föreläsning 3, vt G1502 Datorteknik allmän kurs Föreläsning 3 Metoder och subrutiner Kursboken, valda delar av kapitel 4 version.
1 June G1518, Förel 10, ht2005 (D3/CLMDA)1 2G1518 Datorteknik, ht 2005 version för D3 och CLMDA Föreläsning Processorkonstruktion 2. DMA, Direct.
1 June G1502, Föreläsning 9, vt2004 för IT1 2G1502 Datorteknik allmän kurs Föreläsning 9 1. Processorkonstruktion 2. DMA, Direct Memory Access 3.
2 June G1518, Föreäsning 7, vt 2007 (D2)1 2G1518 Datorteknik Föreläsning 7 Exceptions ht vt 2006 (period 2-3) för D2.
2 June G1502, Föreläsning 8, vt2004 för E och I1 2G1502 Datorteknik allmän kurs Föreläsning 8 Processorkonstruktion DMA, Direct Memory Access.
Föreläsning 1 Introduktion till kursen. Algoritmer
10 June G1518, föreläsning 3, vt2007 (E/I/CLMDA)1 2G1518 Datorteknik Föreläsning 3 Metoder / subrutiner Kursboken, valda delar av kapitel 4 vt 2007.
12 June G1518, Föreäsningl 8, vt07 (E/I/CL)1 2G1518 Datorteknik Föreläsning 8 Cache Memory vt 2007 (period 3-4) för E, I och CLMDA.
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
1 2G1502 Datorteknik allmän kurs Föreläsning 3 Programmering med hopp Programmering av Nios.
14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
16 July 2015 IS1500 Datorteknik och komponeneter, föreläsning DC-F2 1 IS1500 Datorteknik och komponenter Föreläsning DC F2 Kretsar med återkoppling Minnen.
30 July 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion.
31 July 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
4 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Övning 10.
11 August 2015IS1200 Datorteknik, föreläsning 41 IS1200 Datorteknik Föreläsning 4 Programutveckling, Intro till lab 1 Kursboken, kapitel 1, 4, 5 och 8.
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
15 August 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion.
William Sandqvist KIA’s fabrik i Slovenien En bil i minuten lämnar bandet – tar det en minut att bygga en bil? Nej för KIA's fabrik utanför.
3 October 2015 IS1200 Datorteknik ht2009 föreläsning 3, (D2)1 IS1200 Datorteknik Föreläsning 3 Metoder / subrutiner Kursboken, valda delar av kapitel 4.
Bygga dator: CPU och minne
Grundläggande datavetenskap, 4p
Presentationens avskrift:

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel 7 ht 2009 – vt 2010 (period 2-3) För D-2

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)2 Välkommen till IS1200 Datorteknik ”Hur datorer fungerar” Kursens hemsida finns utpekad från: adress till lärare: Kursansvarig: Johan Wennlund

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)3 F1F2F3F4F5F7F8F9F10Ö2Ö1Ö3LAB-1Hemlab-1Ö4Ö7LAB-3Hemlab-2Ö8Hemlab-3Ö9TentamenÖ10 Assemblerkod 4 stegs pipeline Nios2time C-kod Nios2io Nios2int Cache-minnen CPU-scheduling IS1200 Datorteknik Hösten 2009 Våren 2010 F6Ö5Ö6LAB-2

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)4 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 +Branch Delay Slot - hopplucka +LOAD och STORE +Nios-II: MOVI och MOVIA

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)5 Nu bygger vi en dator av... &=1>1 DRIVER COUNTER REGISTER Q Q’ D preset cl clear ALU MUX +n WR EN 1 & >1

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)6 Viktiga delar i en dator CPU MEM BUS I/O program data

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)7 Programexekvering i två steg (decode) EXECUTE FETCH (update PC)

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)8 Typisk instruktion ADDR dst  R srcA + R srcB  Kombinera innehåll i R srcA och R srcB och skriv till R dst  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 R dst, R src ;R dst  R dst + R src

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)9 ADD R dst <- R srcA + R srcB ADD Hur många bitar behövs? ~ Hur stor blir varje instruktion? Mer än 16 (t.ex. MIPS/Nios-II …) INSTRUKTIONSFORMAT med tre register-operander Exempelvis:

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)10 ADD R dst, R srcA, R srcB 0x31 Hur många bitar behövs ? 15 + op-code Hur stor är varje instruktion ? 32 bitar ! INSTRUKTIONSFORMAT enligt ovan INSTRUKTIONSFORMAT binärkod i Nios II bitar per fält 0x3a0x00

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)11 Programexekvering i fyra steg 1.FI - Fetch Instruction 2.FO - Fetch Operand 3.EX - Execute 4.WB - Write Back

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)12 EX - EXecute Execute ALU t.ex. ADD operander resultat av operationen ~6 bitars kod ALU-register ALU-A och ALU-B 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,... AB operation

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)13 FO - Fetch Operand ExecuteFetch Operand Register File 32 x 32 ALU 5 bitars adress, R srcA 5 bitars adress, R srcB RWM - Read Write Memory ”SRAM” Read SRAM – Static RAM ”snabbt minne”

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)14 WB - Write Back ExecuteFetch OperandWrite Back ALU Register File 32 x 32 Register File 32 x 32 SAMMA en Register File (inte två olika) 5 bitars adress, R dst Write Read

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)15 FI - Fetch Instruction Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR PC +n Register File 32 x 32 Register File 32 x 32 16/ PC - Program Counter n = 2 eller 4 beror på om instruktion är 16 eller 32 bitar, 2 eller 4 bytes

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)16 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... ...

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)17 4 stegs CPU Konsekvent synkronism 8 Förbered skrivning till Register File FIFOEXEWB 6 ALU arbetar (ADD/SUB/ …) 4 Avkoda instruktion samt leta fram operander 2 Leta fram instruktion ur Program Memory 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 clock Skrivning utförs vid positiv flank på clock, samtidigt till varje vippa/register/minne

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)18 Utan PIPE-LINE Hur många klockcykler ? FIFOEXEWB ADD FIFOEXEWB 4 klockcykler per instruktion! 1 instruktion klar var 4:e klockcykel!

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)19 PIPE - LINE införs nu ! Flera register IR Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR0 IR1 IR2 NYTT PC +n Register File 32 x 32 Register File 32 x 32 IR1: 11 vippor IR2: 5 vippor

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)20 Med PIPE-LINE Hur många klockcykler ?... ADD FIFOEXEWBFIFOEXEWBFIFOEXEWBFIFOEXEWB 4 klockcykler per instruktion! 1 instruktion klar per klockcykel!

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)21 IS1200 Datorteknik PAUS-BILD (andas djupt och ta nya tag)

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)22 Fenomen pga PIPE-LINE 1. Data Dependency 2. Branch Delay 3. Load Dealy 4. Structural Hazard

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)23 1.Data Dependencies (Fenomen pga PIPE-LINE) ¯Programexempel 44: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

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)24 Data Dependencies Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR0 IR1 IR2 44: R4 <- R5+R6 Register File 32 x 32 Register File 32 x 32

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)25 Data Dependencies Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR0 IR1 IR2 Register File 32 x 32 Register File 32 x 32 44: R4 <- R5+R6 48: R1 <- R2+R3

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)26 Data Dependencies Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR0 IR1 IR2 52: R7 <- R1+R4 nya r4 nya r1 Register File 32 x 32 Register File 32 x 32 44: R4 <- R5+R6 48: R1 <- R2+R3 gamla r1 gamla r4

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)27 Data Dependencies med 4 stegs PIPE-LINE 44: ADD... 48: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB 52: ADD... Nya R1 skrivs till RegFile Gamla R1 och R4 läses från RegFile Nya R4 skrivs till RegFile Gamla R1 och R4 skrivs till ALU-reg 44:ADD R4 <- R5 + R6 48:ADD R1 <- R2 + R3 52:ADD R7 <- R1 + R4 # gamla värden i R1 och R4

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)28 Data Dependencies läsning måste ske efter skrivning 44: ADD... 48: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB Fördröj till xx: ADD... Nya R1 skrivs till RegFile Nya R4 skrivs till RegFile Nya R1 och R4 läses från RegFile Nya R1 och R4 skrivs till ALU-reg 44:ADD R4 <- R5 + R6 48:ADD R1 <- R2 + R3 52:ADD R7 <- R1 + R4 # gamla värden i R1 och R4

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)29 44: ADD... 48: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB 44:ADD R4 <- R5 + R6 48:ADD R1 <- R2 + R3 52:NOP # fördröjer 1 cykel 56:NOP # fördröjer 1 cykel 60:ADD R7 <- R1 + R4 # nya värden i r1 och r4 60: ADD... R1 skrivs till RegFile R1 och R4 läses från RegFile R4 skrivs till RegFile FIFOEXEWBFIFOEXEWB NOP

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)30 Data Forward inför nya data-vägar Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR0 IR1 IR2 Register File 32 x 32 Register File 32 x 32 52: R7 <- R1+R4 44: R4 <- R5+R6 48: R1 <- R2+R3 NYTT

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)31 Data Forward inför nya data-vägar Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR0 IR1 IR2 Register File 32 x 32 Register File 32 x 32 NYTT 52: R7 <- R1+R4 44: R4 <- R5+R6 48: R1 <- R2+R3 nya r4 nya r1

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)32 Enable-signaler till nya data-vägar Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU IR0 IR1 IR2 Register File 32 x 32 Register File 32 x 32 NYTT 52: R7 <- R1+R4 44: R4 <- R5+R6 48: R1 <- R2+R3 ENA0 ENB0 ENA2 ENB2 ENA1 ENB1 Komb. nät ENA0 ENB0 ENA2 ENB2 ENA1 ENB1 NYTT

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)33 44: ADD... 48: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB 44:ADD R4 <- R5 + R6 48:ADD R1 <- R2 + R3 52:ADD R7 <- R1 + R4 52: ADD... Nya R1 skrivs till RegFile Nya R1 och R4 läses via DataForward Nya R4 skrivs till RegFile Nya R1 och R4 skrivs till ALU-reg Data Forward genvägar ger snabbhet

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)34 Ny Typisk instruktion ADDR dst <-- R srcA + Imm n 1.Kombinera innehåll i R srcA och Imm och skriv till R dst 2.ADD, SUB, MUL, DIV, AND, OR, XOR, … 3.Hur många bitar krävs i Instruktionen ? 4.Man kan minska behovet av bitar med kortare instruktion ADD R dst, Imm

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)35 ADDI R dst, R src, data n ADDI Hur många bitar behövs? ~6+5+5+n Hur stor blir varje instruktion? Mer än 16 INSTRUKTIONSFORMAT med immediate data Exempelvis: n

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)36 ADDI R dst, R srcA, Data SUBI rB, rA, IMM16  ADDI rB, rA, -IMM16 IMM16 innehåller ett 2-komplement-tal bitar per fält 0x04 INSTRUKTIONSFORMAT Binärkod i Nios II

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)37 Immediate data inför ny dataväg Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU PC IR0 IR1 IR2 +n Ny dataväg hur många bitar ? Register File 32 x 32 Register File 32 x 32

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)38 Extension 16 -> 32 bits Nollor eller Sign Extension xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx Fyll ut med nollor Fungerar för unsignedint Sign extension Vid positivt tal Sign extension Vid negativt tal xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx Sign Extension Fungerar för signedint

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)39 JUMP och BRA Ovillkorliga hopp  JUMP brukar ha direkt adress  BRA brukar ha PC-relativ adress JMP 104 #PC := 104”hopp till 104”. BRA 40 #PC := pc + 40”hopp till 268” 32: 104: 224: 268:

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)40 Ny hopp-instruktion JUMP (R addr ) 1.Registerindirekt adressering 2.Effektiv adress i ett register 3.Kopiera registerinnehåll till PC 4.Register med 32 bitar betyder att 5.32 bits adress kan användas 6.Hur får man 32 bits adress till registret ? Det måste ordnas på något sätt !

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)41 JUMP (R addr ) inför ny dataväg Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU PC IR0 IR1 IR2 +n Register File 32 x 32 Register File 32 x 32 Ny dataväg hur många bitar ?

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)42 Vanlig hopp-instruktion JUMP Imm n  Imm n skrivs till PC  Hur stor är Imm n ? ”lediga” bitar t.ex. 32-6=26 !  Hur stor vill vi att Imm n ska vara helst ? Imm n ska kunna adressera ”hela minnet” !

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)43 JUMP brukar ha direkt adress JUMP Label JUMP 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! INSTRUKTIONSFORMAT 6 n bitar per fält

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)44 Vanlig hopp-instruktion BR Imm n  PC sätts till PC + Imm n  Hur stor är Imm n ? ”lediga” bitar t.ex. 32-6=26 !  Hur stor vill vi att Imm n ska vara helst ? Imm n ska kunna adressera ”hela minnet” !

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)45 BRA brukar ha PC-relativ adress BRA Displacement BRA INSTRUKTIONSFORMAT 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!

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)46 BRA Imm n inför ADDitionsenhet och datavägar Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU ADD IR0 IR1 IR2 Register File 32 x 32 Register File 32 x 32 PC PC+n PC+Imm Nytt

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)47 Fenomen pga PIPE-LINE 2.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...

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)48 Efter FI av 16: BRA 64 Execute Fetch Operand Write Back Fetch Instruction 16: BRA 64 20: ADD ALU ADD IR0 IR1 IR2 20 BRA : BRA 64 20: ADD … 24: … … 84: SUB … 88:... Register File 32 x 32 Register File 32 x 32 PC PC+4 PC+Imm 20

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)49 Efter FI av 20: ADD Execute Fetch Operand Write Back Fetch Instruction ALU ADD IR0 IR1 IR2 ADD BRA 64 16: BRA 64 20: ADD 84 Register File 32 x 32 Register File 32 x 32 PC+4 PC+Imm PC 16: BRA 64 20: ADD … 24: … … 84: SUB … 88:... 84

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)50 Efter FO av 20: ADD Execute Fetch Operand Write Back Fetch Instruction ALU ADD IR0 IR1 IR2 SUB BRA 64 16: BRA 64 20: ADD 88 ADD Register File 32 x 32 Register File 32 x 32 PC+4 PC+Imm PC 16: BRA 64 20: ADD … 24: … … 84: SUB … 88:... 88

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)51 FIFO EXEWB 4 Avkoda instruktion samt leta fram operander 2 Leta fram instruktion ur Program Memory 5 Skriv nytt värde till Program Counter = hoppa 3 Skriv instruktion till Instruction Register 1 Skriv nytt värde till Program Counter clock Skrivning utförs vid positiv flank på clock, samtidigt till varje vippa/register/minne Ovillkorliga hopp (BRA/JUMP) när kan hoppet tidigast utföras ? (Ledig tid: ”Kislet kallnar” eller... ) (Skriv till R0 eller inte alls) (Skriv till tmp-reg eller inte alls)

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)52 Hur undviks Branch Delay Slot Hur utnyttjas Branch Delay Slot Olika metoder: 1.Fyll ut med en (onyttig) NOP 2.Skriv en (nyttig) instruktion i hoppluckan 3.Kompilator/Programmerare väljer 4.Låt hårdvaran specialbehandla hopp (hoppgissning / invalidate /...)

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)53 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...

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)54 Gäller för MIPS-Processorn (ej Nios-II) R0 R31 R1 PC Minne Generella registerProgramräknare NVZC Status

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)55 STATUS-flaggor Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU ADD IR0 IR1 IR2 Register File 32 x 32 Register File 32 x 32 PC PC+n PC+Imm Nytt NVZC ADD

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)56 STATUS-flaggor Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU ADD IR0 IR1 IR2 Register File 32 x 32 Register File 32 x 32 PC Nytt NVZC Logik för villkorligt hopp op-code CCR true/false PC+n / PC+Imm BCond ADD

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)57 Branch on Condition Common examples Label = PC BEQ Imm Imm = Label - PC BEQ - 4  BEQ Label if EQUAL then PC:=PC+Imm else PC:=PC+4  BNE Label if Not Equal then PC:=PC+Imm else PC:=PC+4  BLE Label if Less or Equal then PC:=PC+Imm else PC:=PC+4 ...

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)58 FIFO 4 Avkoda instruktion samt läs STATUS 2 Leta fram instruktion ur Program Memory 5 Skriv nytt värde till Program Counter = hoppa 3 Skriv instruktion till Instruction Register 1 Skriv nytt värde till Program Counter clock Villkorliga hopp (B”cond”) när kan hoppet tidigast utföras ? (När sker skrivning till STATUS?) (Finns rätt info i STATUS?) Skrivning utförs vid positiv flank på clock, samtidigt till varje vippa/register/minne

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)59 IS1200 Datorteknik PAUS-BILD (andas djupt och ta nya tag)

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)60 LOAD och STORE memory  register Vi ska kunna utföra operationer av typen LOAD och STORE Vilka operandutpekningsmetoder ska vi ha ? Gärna med direkt adressering dvs zLOAD reg <- mem(adr) zSTORE mem(adr) <- reg men: En ”hel adress” ryms ej i adressfältet vilket leder till...

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)61 LOAD och STORE memory  register  Vi inför hårdvara för instruktionerna LOADR dst, [ R addr ] STORE [ R addr ], R src  med registerindirekt adressering dvs effektivadress i register

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)62 Execute Fetch Operand Write Back Fetch Instruction Program Memory m x 8 ALU ADD IR0 IR1 IR2 RWM LOAD och STORE med 4 stegs PIPE-LINE Register File 32 x 32 Register File 32 x 32 PC+n PC+Imm PC Nytt

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)63 LOAD och STORE med 4 stegs PIPE-LINE LOAD to Rd USE Rd FIFO MEM WBFIFOEXEWB Data från MEM finns tillgängligt Data från MEM finns tillgängligt för FO via Data Forward Leta fram data ur MEM

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)64 Program Memory m x 8 ALU ADD IR0 IR1 IR2 RWM LOAD och STORE med data forward Register File 32 x 32 Register File 32 x 32 PC+n PC+Imm PC (Man kan spara vissa register !)

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)65... LOAD STORE ADD FIFO MEM WBFIFO MEM WBFIFOEXEWBFIFOEXEWB Samtidig referens till minnet i FI- och MEM-stegen 4. Structural Hazard strukturell konflikt

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)66 4. Structural Hazard strukturell konflikt Samtidig referens till Instruktionsminne och Dataminne Problemet undviks lämpligen med Separata (cache-) minnen för Program och Data (Harward-arkitektur) (separata I-cache och D-cache)

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)67 Minnesbehov Viktiga frågor, svar senare 1.Separata minnen för Instruktion och Data 2.Samtidig referens av I och D 3.Cykeltid för I-mem 4.Cykeltid för D-mem 5.I balans med CPU-klocka 6.Är detta möjligt? Nej! Tja ? (cache-minnen)

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)68 LOAD och STORE memory  register Vi (kompilatorn) vill kunna utföra instruktioner av typen LOAD och STORE med indexerad adressering dvs  LOADR dst, Offset[ R addr ]  STOREOffset[ R addr ], R src Hårdvara för detta tas upp senare i kursen

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)69 Ladda ett register med ett konstant värde, Nios-II Operationen MOVI rB, IMMED 16 med 16 bitars värde känt ”at compile- time” kan utföras av (t.ex.) MOVI r6, -30# sign extension på negativa tal ? (ja !) # ”MOVI is implemented as ADDI rB, r0, IMMED 16 ” Operationen MOVIA rB, Const 32 med 32 bitars Const känd ”at compile- time” kan utföras av instruktionerna (t.ex.) MOVHI rB, r0, %hi(Const)#16 MSBits till MSBits i rB ORI rB, rB, %lo(Const)#16 LSBits till LSBits i rB # ”MOVHI is implemented as ORHI rB, r0, IMMED 16 ”

31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)70 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 +Branch Delay Slot - hopplucka +LOAD och STORE +Nios-II: MOVI och MOVIA