Presentation laddar. Vänta.

Presentation laddar. Vänta.

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.

Liknande presentationer


En presentation över ämnet: "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."— Presentationens avskrift:

1 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

2 Välkommen till IS1200 Datorteknik ”Hur datorer fungerar” Kursens hemsida finns utpekad från: http://www.ict.kth.se/courses/IS1200 emailadress till lärare: is1200@ict.kth.se Kursansvarig: Fredrik Lundevall 31 March 20152 IS1200 Datorteknik föreläsning CE – F2

3 IS1200 Datorteknik våren 2014 http://www.ict.kth.se/courses/IS1200 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 20153 IS1200 Datorteknik föreläsning CE – F2

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

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

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

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

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

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

10 ADD R dst <- R srcA + R srcB ADD Hur många bitar behövs? ~6+5+5+5 Hur stor blir varje instruktion? Mer än 16 (t.ex. MIPS/Nios-II …) INSTRUKTIONSFORMAT med tre register-operander Exempelvis: 6 5 5 5 31 March 201510 IS1200 Datorteknik föreläsning CE – F2

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

12 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 5 5 5 6 5 6 bitar per fält 0x3a0x00 31 March 201512 IS1200 Datorteknik föreläsning CE – F2

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

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

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

16 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 201516 IS1200 Datorteknik föreläsning CE – F2 RWM - Read Write Memory ”SRAM” Tripple-Ported

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

18 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…0 0 31 busdrivkrets 31 March 2015 IS1200 Datorteknik föreläsning CE – F2 18

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

40 ADDI R dst, R srcA, Data SUBI rB, rA, IMM16  ADDI rB, rA, -IMM16 IMM16 innehåller ett 2-komplement-tal... 5 5 16 6 bitar per fält 0x04 INSTRUKTIONSFORMAT Binärkod i Nios II 31 March 201540 IS1200 Datorteknik föreläsning CE – F2

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

42 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 5 5 16 6 bitar per fält 0x04 INSTRUKTIONSFORMAT Binärkod i Nios II 31 March 201542 IS1200 Datorteknik föreläsning CE – F2

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

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

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

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

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

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

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

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

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

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

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

54 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 64 6420 16: BRA 64 20: ADD … 24: … … 84: SUB … 88:... Register File 32 x 32 Register File 32 x 32 PC PC+ Imm PC+ 4 20 31 March 201554 IS1200 Datorteknik föreläsning CE – F2 84

55 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:... 84 31 March 201555 IS1200 Datorteknik föreläsning CE – F2 4 88 PC+ Imm PC+ 4

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

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

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

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

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

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

62 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 201562 IS1200 Datorteknik föreläsning CE – F2 4 6 1

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

64 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 201564 IS1200 Datorteknik föreläsning CE – F2 (När finns EA breäknad ?) (När är hopp upptäckt ?

65 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 ?

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

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

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

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

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

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

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

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

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

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

76 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

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

78 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

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

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

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

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


Ladda ner ppt "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."

Liknande presentationer


Google-annonser