IS1200 Datorteknik Föreläsning CE F2 Vi bygger en processor Kursboken, delar av kapitel 7 31 March 20151 IS1200 Datorteknik föreläsning CE – F2.

Slides:



Advertisements
Liknande presentationer
Vilmaseminarium November 2012
Advertisements

Programmeringsteknik I: F1 1 Föreläsning 1: Intro till kursen och programmering  Kursens hemsida  Studentportalen.
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.
IE1204 Digital Design F1 F2 Ö1 Booles algebra, Grindar F3 F4
IS1500 Datorteknik och komponenter
IS1500 Datorteknik och komponenter
IE1206 Inbyggd Elektronik F1 F2
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.
1 2G1518 Datorteknik Föreläsning 5, våren 2007 Bussar In- och utmatning – I/O Pollning Handskakning.
En vanlig femstegspipeline FDEMW FDEMW FDEMW FDEMW tid.
Välkommna! till kursen HI1024 Programmering, grundkurs 8,0 hp
IE1206 Inbyggd Elektronik F1 F2
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.
Perspektivplan 2025 DISPOSITION Energi- och klimatpolitiken
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
IE1206 Inbyggd Elektronik F1 F2
Assisterad befruktning 2012–2013 Anna Heino & Mika Gissler.
Följande presentation finns i Facebookgruppen BA1B och på bloggen Svenska hos Söderström sodks.moobis.se.
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1 De bifogade OH-bilderna är bara utkast till vad som kan vara.
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
2G1510 Datorteknik fk Föreläsning 1, hösten 2003.
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
IE1204 Digital Design F1 F2 Ö1 Booles algebra, Grindar F3 F4
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.
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
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
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.
1 386 Från s bits adressbuss –=>4GB minne kan adresseras 32 bits databuss max klockfrekvens: 40MHz Protected mode –virtuellt minne –segmentering.
Perinatalstatistik − föderskor, förlossningar och nyfödda 2011 Eija Vuori Mika Gissler.
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 —
Specialiserad psykiatrisk sjukvård 2013 Juha Rainio och Tarja Räty Specialiserad psykiatrisk sjukvård Statistik rapport 2/2015.
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.
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.
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
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.
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.
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.
1 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Föreläsning 9 zDel 1. CPU-scheduling zDel 2. Semaforer zInför föreläsning 10 zSammanfatting.
4 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Övning 10.
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.
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.
Grundläggande datavetenskap, 4p
Presentationens avskrift:

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

Välkommen till IS1200 Datorteknik ”Hur datorer fungerar” Kursens hemsida finns utpekad från: adress till lärare: Kursansvarig: Fredrik Lundevall 31 March IS1200 Datorteknik föreläsning CE – F2

IS1200 Datorteknik våren Assemblerprogram C In- och utmatning Cacheminnen Avbrott och "trap" Trådar, synkronisering CE F1 CE F3 CE F4 CE F5 CE F6 CE F7 CE F8 CE F9 CE F2 CE Ö4 CE Ö1 CE Ö2 CE Ö3 CE Ö7 CE Ö8 CE Ö9 CE Ö5CE Ö6 lab nios2time hemlab C lab nios2io hemlab cache lab nios2 hemlab trådar CE F10CE Ö10 tentamen 31 March IS1200 Datorteknik föreläsning CE – F2

Uppdelning i övningsgrupper rekommendatio Dela upp er ”fifty-fifty” Övning 1: tisdag 21 januari kl HÄLFTEN Övning 1: onsdag 22 januari kl HÄLFTEN Salar: 531, 532, March 2015 IS1200 Datorteknik föreläsning CE – F2 4

5 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 31 March IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

Viktiga delar i en dator CPU MEM BUS I/O program data 31 March IS1200 Datorteknik föreläsning CE – F2

Programexekvering i två steg (decode) EXECUTE FETCH (update PC) 31 March IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

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: March IS1200 Datorteknik föreläsning CE – F2

ADD R dst <- R dst + R src ADD Hur många bitar behövs? Hur stor blir varje instruktion? Välj 16 (t.ex. Tidigare variant av Nios) INSTRUKTIONSFORMAT med bara två register-operander Exempelvis: March IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

Programexekvering i fyra steg 1.FI - Fetch Instruction 2.FO - Fetch Operand 3.EX - Execute 4.WB - Write Back 31 March IS1200 Datorteknik föreläsning CE – F2

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 till exempel: A+B, A-B, A, -A, A+1, A-1, Ainv, A and B, A or B,... AB operation 31 March IS1200 Datorteknik föreläsning CE – F2

FO - Fetch Operand ExecuteFetch Operand Register File 32 x 32 ALU 5 bitars registernummer, R srcA 5 bitars registernummer, R srcB RWM - Read Write Memory ”SRAM” Dual-Ported Read SRAM – Static Random Access Memory ”snabbt minne” 31 March IS1200 Datorteknik föreläsning CE – F2

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 registernummer, R dst Write Read 31 March IS1200 Datorteknik föreläsning CE – F2 RWM - Read Write Memory ”SRAM” Tripple-Ported

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 PC - Program Counter n = 4 beror på att en instruktion är 32 bitar, 4 bytes 31 March IS1200 Datorteknik föreläsning CE – F2

Register File Read from R0 OE Adress- Avkodare Data in Data ut Register Read Address OE WR clock OE WR clock... Bus Kiselplats: Cirka 17+32*350 grindar 0… busdrivkrets 31 March 2015 IS1200 Datorteknik föreläsning CE – F2 18

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)  March IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

Tid per intruktion Hur många klockcykler ? FIFOEXEWB ADD FIFOEXEWB 4 klockcykler per instruktion! 1 instruktion klar var 4:e klockcykel! 31 March IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2 5 6

Hastighet med PIPE-LINE Hur många klockcykler ?... ADD FIFOEXEWBFIFOEXEWBFIFOEXEWBFIFOEXEWB 4 klockcykler per instruktion! 1 instruktion klar per klockcykel! 31 March IS1200 Datorteknik föreläsning CE – F2

IS1200 Datorteknik PAUS-BILD (andas djupt och ta nya tag) 31 March IS1200 Datorteknik föreläsning CE – F2

Fenomen pga PIPE-LINE 1. Data Dependency 2. Branch Delay 3. Structural Hazard 4. Load Delay 31 March IS1200 Datorteknik föreläsning CE – F2

1.Data Dependency (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 IS1200 Datorteknik föreläsning CE – F2

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 March IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

Data Dependency 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 IS1200 Datorteknik föreläsning CE – F2

Data Dependency 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 IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2 Nya R7 skrivs till RegFile

NYTT: 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 IS1200 Datorteknik föreläsning CE – F2

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 (och 2 register) Exempelvis: n 31 March IS1200 Datorteknik föreläsning CE – F2

ADDI R dst  R dst + data 5 ADDI Hur många bitar behövs? ~6+5+5 Hur stor blir varje instruktion? Precis16 INSTRUKTIONSFORMAT med immediate data (och bara 1 register) Exempelvis: March IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

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 ? 16! Register File 32 x 32 Register File 32 x March IS1200 Datorteknik föreläsning CE – F2

ADDI R dst, R0, Data ADDI R dst, R0, Imm 16 blir MOVI R dst, Imm 16 Skriv en 16-bitars konstant till ett register bitar per fält 0x04 INSTRUKTIONSFORMAT Binärkod i Nios II 31 March IS1200 Datorteknik föreläsning CE – F2

Extension 16 -> 32 bits Nollor eller Sign Extension xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx Fyll ut med nollor Fungerar för UnsignedInt Sign extension Vid positivt tal Sign extension Vid negativt tal xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx Sign Extension Fungerar för SignedInt 31 March IS1200 Datorteknik föreläsning CE – F2 1xxxxxxxxxxxxxxx

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 IS1200 Datorteknik föreläsning CE – F2

Hopp-instruktioner Skriver effektiv adress till PC (decode) EXECUTE FETCH (update PC) 31 March IS1200 Datorteknik föreläsning CE – F2 PC := pc + 4PC := Effektiv Adress JUMP, BR CALL, CALLR, RET TRAP, ERET …

Ny hopp-instruktion JUMP (R addr ) o Registerindirekt adressering o Effektiv adress i ett register o Kopiera registerinnehåll till PC o Register med 32 bitar betyder att o 32 bits adress kan användas o Hur får man 32 bits adress till registret ? Det måste ordnas på något sätt ! 31 March IS1200 Datorteknik föreläsning CE – F2

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 ? 32! 31 March IS1200 Datorteknik föreläsning CE – F2

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” ! dvs vara 32 bitars adress 31 March IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

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 ? 32 bitar vore bra men.. Imm n ska kunna adressera ”hela minnet” ! 31 March IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

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+ Imm PC+ 4 Nytt 31 March IS1200 Datorteknik föreläsning CE – F2 Imm pc

2.Branch Delay (Fenomen pga PIPE-LINE) 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 March IS1200 Datorteknik föreläsning CE – F2

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+ Imm PC March IS1200 Datorteknik föreläsning CE – F2 84

Efter FI av 20: ADD Execute Fetch Operand Write Back Fetch Instruction ALU ADD IR0 IR1 IR2 ADD BRA 64 80: … 84: SUB … 84 Register File 32 x 32 Register File 32 x 32 PC 16: BRA 64 20: ADD … 24: … … 84: SUB … 88: March IS1200 Datorteknik föreläsning CE – F PC+ Imm PC+ 4

Efter FO av 20: ADD Execute Fetch Operand Write Back Fetch Instruction ALU ADD IR0 IR1 IR2 SUB BRA ADD Register File 32 x 32 Register File 32 x 32 PC 16: BRA 64 20: ADD … 24: … … 84: SUB … 88: March IS1200 Datorteknik föreläsning CE – F2 4 84: SUB … 88: … PC+ Imm PC+ 4

FIFO EXEWB 4 Avkoda instruktion beräkna effektivadress, EA 2 Leta fram instruktion ur Program Memory 5 Skriv EA till Program Counter = UTFÖR HOPPET 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 IS1200 Datorteknik föreläsning CE – F2

Hur hanteras Branch Delay Olika metoder, mjukvara och/eller hårdvara Kompilator/Programmerare väljer 1.Fyll ut med en (onyttig) NOP 2.Skriv en (nyttig) instruktion i hoppluckan Låt hårdvaran specialbehandla hopp (hoppgissning / invalidate /...) 31 March IS1200 Datorteknik föreläsning CE – F2

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 ADD 31 March IS1200 Datorteknik föreläsning CE – F2 PC+ Imm PC+ 4

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 March IS1200 Datorteknik föreläsning CE – F2

Gäller för Intel-Processorn (ej Nios-II) R0 R31 R1 PC Minne Generella registerProgramräknare NVZC Status 31 March IS1200 Datorteknik föreläsning CE – F2

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+ Imm PC+ 4 BCond ADD 31 March IS1200 Datorteknik föreläsning CE – F

Branch on Condition Några exempel Label:NOP … BLE rA, rB, Label if rA is Less or Equal than rB then PC:=Label else PC:=PC+4 if rA is Less or Equal than rB then PC:=PC+4+Imm else PC:=PC+4 Beräkning av Imm-fältets värde (görs av översättarprogrammet): Label = PC BLE Imm Imm = Label - PC BLE – 4  BCond rA, rB, Label if rA is Cond than rB then PC:=PC+4+Imm else PC:=PC+4 31 March IS1200 Datorteknik föreläsning CE – F2

FIFO 4 Avkoda instruktion samt läs STATUS 2 Leta fram instruktion ur Program Memory 5 Skriv EA 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 hopp 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 IS1200 Datorteknik föreläsning CE – F2 (När finns EA breäknad ?) (När är hopp upptäckt ?

Innan ett hopp kan utföras krävs 1.Instruktionen är avkodad (görs i FO !) 2.Villkorsvärdet är känt (ska hoppet tas?) 3.Effektivadressen är känd (nytt PC-värde) 31 March 2015 IS1200 Datorteknik föreläsning CE – F2 65 Villkorliga hopp (B”cond”) när kan hopp tidigast utföras ?

IS1200 Datorteknik PAUS-BILD (andas djupt och ta nya tag) 31 March IS1200 Datorteknik föreläsning CE – F2

LOAD och STORE memory  register Vår processor ska kunna utföra operationer 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ältet vilket leder till March IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

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+ Imm PC+ 4 PC Nytt 31 March IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

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+ Imm PC+ 4 PC (Vissa register är “dubletter” !) 31 March IS1200 Datorteknik föreläsning CE – F2

... LOAD STORE ADD FIFO MEM WBFIFO MEM WBFIFOEXEWBFIFOEXEWB Samtidig referens till minnet i FI- och MEM-stegen 3. Structural Hazard strukturell konflikt 31 March IS1200 Datorteknik föreläsning CE – F2

3. Structural Hazard strukturell konflikt Samtidig referens till Instruktionsminne och Dataminne Problemet undviks lämpligen med Separata (cache-) minnen för Program och Data (Harvard-arkitektur) (separata I-cache och D-cache) 31 March IS1200 Datorteknik föreläsning CE – F2

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 IS1200 Datorteknik föreläsning CE – F2

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 5 stegs PIPE-LINE 31 March IS1200 Datorteknik föreläsning CE – F2

76 CPU med 5 stegs PIPE-LINE Register File 32 x 32 Program Memory n x 16 ALU PC ADD IR0 IR1 IR2 IR3 +2 Register File 32 x 32 RWM PC+n PC+Imm ALU/EXE FO MEM FI WB NYTT 7631 March 2015 IS1200 Datorteknik föreläsning CE – F2

4.Load Delay (Fenomen pga PIPE-LINE) I en 5 stegs PIPE-LINE enligt förra sidan krävs Minst en NOP eller oberoende instruktion mellan LOAD till ett register och READ/USE av detta register 31 March IS1200 Datorteknik föreläsning CE – F2

78 Load Delay i 5-stegs pipe även vid Data Forward LOAD reg FIFOALUWB MEM ADD reg FIFOALUWB MEM Skriv till ALU-reg Data Forward fungerar FIFOALUWB MEM Oberoende instr. Tillgängligt från minne 7831 March 2015 IS1200 Datorteknik föreläsning CE – F2

Ladda ett register med ett 16 bitars konstant värde, Nios-II Operationen MOVI rB, IMM 16 med 16 bitars värde IMM känt ”at compile-time” kan t.ex. utföras av 1 instruktion MOVI r6, -30# sign extension på negativa tal ? (ja !) IMM 16 hamnar på de högra 16 bitarna (LSBits) # ”MOVI is implemented as ADDI rB, r0, IMM 16 ” Hur kan man “ladda” 32 bitar till ett register ? Med två “MOVI” som placerar 16 bitar på olika platser ! 31 March IS1200 Datorteknik föreläsning CE – F2

Ladda ett register med ett 16 bitars konstant värde, Nios-II Operationen MOVIH rB, IMM 16 med 16 bitars värde IMM känt ”at compile-time” kan t.ex. utföras av 1 instruktion MOVIH r6, -30# fyller ut med nollor till höger IMM 16 hamnar på de vänstra 16 bitarna (MSBits) # ”MOVI is implemented as ORHI rB, r0, IMM 16 ” Hur kan man “ladda” 32 bitar till ett register? Med MOVI och MOVIH som placerar 16 bitar på olika platser 31 March IS1200 Datorteknik föreläsning CE – F2

Ladda ett register med ett 32 bitars konstant värde, Nios-II Operationen MOVIA rB, Const 32 med 32 bitars värde Const känt ”at compile-time” kan t.ex. utföras av 2 instruktioner MOVHI rA, r0, %hi(Const)#16 MSBits till MSBits i rA ORI rA rA, %lo(Const)#16 LSBits till LSBits i rA Operationen MOVIA rA, Const 32 Finns tillgänglig som en pseudoinstruktion MOVIA Reg, Const 32 Används för att ladda ett register med godtycklig 32 bitars konstant 31 March 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 31 March IS1200 Datorteknik föreläsning CE – F2