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.

Slides:



Advertisements
Liknande presentationer
IT för personligt arbete F5
Advertisements

Simulering av MIPS32 4K med TLB och CACHE Andrei Krougliak Simon Olsson Luleå tekniska universitet 2005.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
EDA Digital och Datorteknik
EDA Digital och Datorteknik
William Sandqvist Datorteknik övning 2 Subrutinanrop William Sandqvist
Filhantering Grundprincipen för filhantering Öppna filen
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
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.
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.
Programmeringsteknik K och Media
Grundläggande programmering
Distribuerade filsystem
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.
Pekare och speciell programstruktur i inbyggda system
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Styrteknik: Programmering med MELSEC IL PLC2A:1
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.
Styrteknik: MELSEC FX och numeriska värden PLC2C:1
Prestanda ● Vad påverkar datorprestanda ● Hur mäter man datorprestanda ● Räkna klockcykler - ett sätt att analysera ● Amdahls lag - gräns för förbättringar.
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 IS1200 Datorteknik ht2009 föreläsning 2, (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
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 —
Cacheminnen: skrivning ● Träff ● Skrivbuffert ● Miss.
Minnesarkitektur Problem: Snabbare och snabbare processorer men minnena hänger inte med. Lösning: Minneshierarkier.
Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45 Adderare Addition av två tal innebär att samma förfarande upprepas för varje position i talet. För varje.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
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.
Föreläsning2 Operativsystem.
22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion.
Kronljusströmställaren 0, 1, 2, 3
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.
6/3/2015© Mats Brorsson1 Hur mycket snabbare blir det med PC133 SDRAM jämfört med PC100 SDRAM?... blir det med en 1,4 GHz Athlon- processor jämfört.
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.
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.
Grundläggande datavetenskap, 4p
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

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 7 ht 2007 – vt 2008 (period 2-3) För D-2

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)2 Välkommen till IS1200/2G1518 Datorteknik ”Hur datorer fungerar” Kursens hemsida finns utpekad från: Informationsforum: Kursansvarig: Johan Wennlund

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)3 F1F2F3F4F5F6F7F8F9F10Ö2Ö1Ö3Ö4Ö5LAB-1LAB-2Hemlab-1Ö6Ö7LAB-3Hemlab-2Ö8Hemlab-3Ö9TentamenÖ10 Assemblerkod 4 stegs pipeline Nios2time Nios2io C-kod Nios2int Cache-minnen CPU-scheduling IS1200 Datorteknik Hösten 2007 Våren 2008

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)5 Nu bygger vi en dator av... &=1>1 DRIVER COUNTER REGISTER Q Q’ D preset cl clear ALUMUX +n WR EN

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)6 Viktiga delar i en dator CPU MEM BUS I/O program data

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)7 Programexekvering i två steg (decode) EXECUTE FETCH (update PC)

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (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:

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (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

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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)12 EX - EXecute Execute ALU t.ex. ADD operander resultat ~6 bitars kod ALU-register ALU-A och ALU-B

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (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”

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (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/32? n = 2 eller 4 beror på om instruktion är 16 eller 32 bitar, 2 eller 4 bytes

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)16 4 stegs CPU Konsekvent synkronism Förbered skrivning till Register File FIFOEXEWB ALU arbetar (ADD/SUB/ …) Avkoda instruktion samt leta fram operander Leta fram instruktion ur Program Memory Skriv resultat till Register File Skriv resultat till tmp-reg Skriv operander till ALU-register Skriv instruktion till Instruction Register Skriv nytt värde till Program Counter clock Skrivning utförs vid positiv flank på clock, samtidigt till varje vippa/register/minne

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)17 Utan PIPE-LINE Hur många klockcykler ? FIFOEXEWB ADD FIFOEXEWB 4 klockcykler per instruktion! 1 instruktion klar var 4:e klockcykel!

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)18 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)19 Med PIPE-LINE Hur många klockcykler ?... ADD FIFOEXEWBFIFOEXEWBFIFOEXEWBFIFOEXEWB 4 klockcykler per instruktion! 1 instruktion klar varje klockcykel!

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)20 IS1200 Datorteknik PAUS-BILD (andas djupt och ta nya tag)

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)21 Fenomen pga PIPE-LINE 1.Data Dependencies ¯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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)22 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)23 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)24 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)25 Data Dependencies med 4 stegs PIPE-LINE 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 Gamla R1 och R4 läses från RegFile Nya R4 skrivs till RegFile Gamla R1 och R4 skrivs till ALU-reg

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)26 Data Dependencies läsning måste ske efter skrivning 44: ADD... 48: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)27 44: ADD... 48: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB 44:ADD R4 <- R5 + R6 48:ADD R1 <- R2 + R3 52:NOP 56:NOP 60:ADD R7 <- R1 + R4 xx: ADD... R1 skrivs till RegFile R1 och R4 läses från RegFile R4 skrivs till RegFile FIFOEXEWBFIFOEXEWB NOP

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)28 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)29 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)30 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)31 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 DataForw Nya R4 skrivs till RegFile Nya R1 och R4 skrivs till ALU-reg Data Forward genvägar ger snabbhet

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)32 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)33 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)34 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)35 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)36 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:

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)37 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 !

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)38 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 ?

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)39 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” !

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)40 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)41 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” !

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)42 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!

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)43 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)44 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...

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)45 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)46 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)47 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)48 FIFOEXEWB Avkoda instruktion samt leta fram operander Leta fram instruktion ur Program Memory Skriv nytt värde till Program Counter = hoppa Skriv instruktion till Instruction Register 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 ?

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)49 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 /...)

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)50 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...

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)51 Gäller för MIPS-Processorn (ej Nios-II) R0 R31 R1 PC Minne Generella registerProgramräknare NVZC Status

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)52 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)53 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)54 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 ...

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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)56 IS1200 Datorteknik PAUS-BILD (andas djupt och ta nya tag)

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)57 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...

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)58 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)59 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)60 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)61 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+k PC+Imm PC

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)62 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)

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)63 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)64 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, Label 32 med 32 bitars Label känd ”at compile- time” kan utföras av (t.ex.) movhi rB, r0, %hi(Label)#16 MSBits till MSBits i rB ori rB, rB, %lo(Label)#16 LSBits till LSBits i rB # ”movhi is implemented as orhi rB, r0, IMMED 16 ”

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)65 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

14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)66 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... ...