1 / 90

2G1518 Datorteknik

2G1518 Datorteknik. Föreläsning 3 Metoder och subrutiner Kursboken, valda delar av kapitel 4 version vt 2005 för E och I m.fl. Föreläsning 3 Innehåll. 4-stegs PIPE-LINE, repetition MACRO, syntetisk instruktion MACRO-exempel Load och Store med indexerad adress

amaya-diaz
Download Presentation

2G1518 Datorteknik

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2G1518 Datorteknik Föreläsning 3 Metoder och subrutiner Kursboken, valda delar av kapitel 4 version vt 2005 för E och I m.fl. 2G1518, föreläsning 3, vt2005

  2. Föreläsning 3Innehåll • 4-stegs PIPE-LINE, repetition • MACRO, syntetisk instruktion • MACRO-exempel • Load och Store med indexerad adress • Stack med SP samt PUSH och POP • Subrutiner, anrop, retur, parametrar, • Register Window 2G1518, föreläsning 3, vt2005

  3. Viktiga delar i en dator CPU BUS program I/O MEM data 2G1518, föreläsning 3, vt2005

  4. FETCH (update PC) (decode) EXECUTE Programexekveringi två steg 2G1518, föreläsning 3, vt2005

  5. Fetch Operand Write Back Fetch Instruction Register File 32 x 32 EXecute/ MEMory PC+k/PC+Imm Program Memory m x 8 Register File 32 x 32 Programexekveringi fyra steg ADD PC RWM true/false ALU op-code NVZC Logik för villkorligt hopp CCR 2G1518, föreläsning 3, vt2005

  6. Instruktioner Nios-Instruktioner • MOV Rdst, Rsrc • MOVI Rdst, Imm5 ;ADDI/SUBI • ADD Rdst, Rsrc ;SUB/AND/OR/XOR • CMP Rdst, Rsrc ;CMPI • BR / JMP / BEQ / BNE • LD Rdst, [Rsrc] • ST [Rdst], Rsrc 2G1518, föreläsning 3, vt2005

  7. Mall för makro– en syntetisk instruktion .macro CLR reg MOVI \reg, 0x0 .endm Effekt: man kan använda en ny instruktion clr %ri för att nollställa register %ri 2G1518, föreläsning 3, vt2005

  8. ADD Rdest, regA, regB Skriv makro för add-instruktion med 3 register .macro ADD3 reg1, reg2, reg3 MOV \reg1, \reg2ADD \reg1, \reg3 .endm Effekt: man kan använda en ny instruktion ADD3 %rk, %rj, %ri för att skriva summan av %ri och %rj till %rk 2G1518, föreläsning 3, vt2005

  9. SWAPR regA, regB Skriv makro för swap-instruktion med 2 register .macro SWAPR reg1, reg2ADD \reg1, \reg2... ;här saknas en del... ;icketrivial kod .endm Effekt: man kan använda en ny instruktion SWAPR %ri, %rj för att byta plats på innehåll i %ri och %rj 2G1518, föreläsning 3, vt2005

  10. Nios INSTRUKTIONSFORMAT med immediate data MOVI RA, datan MOVI Exempelvis: 6 5 5 Hur många bitar behövs? ~6+5+5! Hur stor blir varje instruktion? 16! 2G1518, föreläsning 3, vt2005

  11. Fetch Operand Write Back Fetch Instruction Register File 32 x 32 EXecute/ MEMory PC+k/PC+Imm Program Memory m x 8 Register File 32 x 32 Programexekveringi fyra steg ADD PC RWM true/false ALU op-code NVZC Logik för villkorligt hopp CCR 2G1518, föreläsning 3, vt2005

  12. Immediate dataär bara 5 bitar • En PreFiX-instruktion PFX införs • PFX modifierar efterföljande instruktion och ger den ett längre immediate-värde • PFX använder ett specialregister K • Principen med prefixinstruktioner finns även i Pentium-serien 2G1518, föreläsning 3, vt2005

  13. Fetch Operand Write Back Fetch Instruction Register File 32 x 32 EXecute/ MEMory PC+k/PC+Imm Program Memory m x 8 Register File 32 x 32 Inför ny hårdvaraK - register ADD PC RWM true/false ALU op-code NVZC Logik för villkorligt hopp CCR 2G1518, föreläsning 3, vt2005

  14. Hur används register K ? • PreFiX-instruktionen PFX Imm11skriver ett 11 bitars värde till register K • Värdet finns kvar i en klockcykelsen nollställs register K • Instruktionen direkt efter PFX Imm11kan använda innehåll i K • Imm5 ökar till (Imm11 cat Imm5 ) 2G1518, föreläsning 3, vt2005

  15. Nios: MOVIP Rdst, Imm16(MACRO) 32 bitar till Rdst alla bitar 31-00 påverkas • PFX Imm111;11 bitar till K-reg • MOVI Rdst, Imm15;16 bitar i Rdstfyller ut med nollor i bit 31-16 Resultat: 0………… …0 0……0 Imm111Imm15 2G1518, föreläsning 3, vt2005

  16. FI PFX - EXE FI - WB FO PFX Imm11 PFX Imm11 MOVI Rdst, Imm5 2G1518, föreläsning 3, vt2005

  17. Nios: MOVIA Rdst, Imm32(MACRO) 32 bitar till Rdst alla bitar 31-00 påverkas • PFX Imm111;11 bitar till K-reg • MOVI Rdst, Imm15;16 bitar i Rdstfyller ut med nollor i bit 31-16 • PFX Imm211;11 bitar till K-reg • MOVHI Rdst, Imm25;32 bitar i Rdstbit 15-0 påverkas ej av MOVHI Resultat: Imm211Imm25 Imm111Imm15 2G1518, föreläsning 3, vt2005

  18. Hjälp från översättaren %xhi (value) %xlo (value) %hi (value) %lo (value) = value Imm211Imm25 Imm111Imm15 value@h = 31 MSBits 2G1518, föreläsning 3, vt2005

  19. MakrotMOVIA reg, Addr ; Ladda ett 32 bitars värde till ett register ; Värdet kan vara negativt .macro MOVIA reg, value PFX %hi(\value)MOVI \reg, %lo(\value)PFX %xhi(\value)MOVHI \reg, %xlo(\value) .endm 2G1518, föreläsning 3, vt2005

  20. LOAD och STORE • Vi kan utföra instruktionerna LD Rdst, [ Raddr ] ST [ Raddr ], Rsrc 2G1518, föreläsning 3, vt2005

  21. Fetch Operand Write Back Fetch Instruction Register File 32 x 32 EXecute/ MEMory PC+k/PC+Imm Program Memory m x 8 Register File 32 x 32 Programexekveringi fyra steg ADD PC RWM true/false ALU op-code NVZC Logik för villkorligt hopp CCR 2G1518, föreläsning 3, vt2005

  22. LOADA Rdest, Addr Skriv makro för load med direkt adressering .macro LOADA reg, addr MOVIA \reg, \addrLD \reg, [\reg] .endm OBS att inga registerinnehåll “förstörs” 2G1518, föreläsning 3, vt2005

  23. STOREA Addr, Rdest, Skriv makro för store med direkt adressering .macro STOREA addr, reg MOVIA %g7, \addrST [%g7], \reg .endm OBS att innehåll i reg %g7 “förstörs” 2G1518, föreläsning 3, vt2005

  24. Behov av indexerad adress • Programvariabler ligger samlade • Ett register pekar ut variabelarean • Varje LOAD/STORE behöver först en adressberäkning med ADD • Indexerad adress LOAD R2 ← 8(R28) ; R2 ← hm(r28 + 8) • Sparar en klockcykel vid varje LOAD 2G1518, föreläsning 3, vt2005

  25. Programvariabler samlade i minnet • Variabler • int i; • int j; • int k; • läggs efter varanni minnet av kompilatorn minne i j k 2G1518, föreläsning 3, vt2005

  26. minne Ett register pekar ut variabelarean • Vid programstart tilldelas registret adressen till variabelarean i minnet i j register k r28 2G1518, föreläsning 3, vt2005

  27. minne Varje LOAD/STORE behöver adressberäkning med ADD • k ska hämtas till R2 • R17 är ledigt • ADDI R17 <- R28 + 8 • LOAD R2 <- (R17) • En extra instruktion • En extra klockcykel • Extra krångel i programkoden i j register k r28 2G1518, föreläsning 3, vt2005

  28. minne Indexerad adress • Addition i LOAD-instruktionen • LOAD R2 ← 8(R28) • innebärR2 ← hm(r28+8) • Innehåll i R28, plus talet 8, blir minnesadress i j register k r28 2G1518, föreläsning 3, vt2005

  29. LOAD och STORE • Vi vill alltså kunna utföra instruktionerna LOAD Rdst, Offset[ Raddr ] STORE Offset[ Raddr ], Rsrc 2G1518, föreläsning 3, vt2005

  30. LOAD Rdst <- Offset[Raddr] • Vi kan utföra operationen LOAD Rdst, Offset[ Raddr ] • med koden (tar 2 klockcykler eller hur) ADDI Raddr, Offset LD Rdst, [ Raddr ] • OBS! Innehåll i Raddr ändras 2G1518, föreläsning 3, vt2005

  31. STORE Offset[Raddr] <- Rsrc • Vi kan utföra operationen STORE Offset[ Raddr ], Rsrc • med koden (tar 2 klockcykler eller hur) ADDI Raddr, Offset ST [ Raddr ], Rsrc • OBS! Innehåll i Raddr ändras 2G1518, föreläsning 3, vt2005

  32. LOAD Rdst <- Offset[Raddr]Nios-kod • Vi kan utföra operationen LOAD Rdst, Offset[ Raddr ] • med koden (tar ~6 klockcykler eller hur) MOVIA Raddr, addr32 ADDI Raddr, offset5 LD Rdst, [Raddr] • OBS! Innehåll i Raddr ändras 2G1518, föreläsning 3, vt2005

  33. STORE Offset[Raddr] <- Rsrc Nios-kod • Vi kan utföra operationen STORE Offset[ Raddr] , Rsrc • med koden (tar ~6 klockcykler eller hur) MOVIA Raddr, addr32 ADDI Raddr, offset5 ST [Raddr], Rsrc • OBS! Innehåll i Raddr ändras 2G1518, föreläsning 3, vt2005

  34. Programmering med hopp • Hopp = ett värde skrivs till PC • Effektivadress skrivs till PC • Olika adresseringsmetoder finns • JUMP Label brukar använda absolut adress • BRA Label brukar använda PC-relativ adress 2G1518, föreläsning 3, vt2005

  35. Fetch Operand Write Back Fetch Instruction Register File 32 x 32 EXecute/ MEMory PC+k/PC+Imm Program Memory m x 8 Register File 32 x 32 JUMP (Raddr)inför ny dataväg Ny dataväg ADD PC RWM true/false ALU op-code NVZC Logik för villkorligt hopp CCR 2G1518, föreläsning 3, vt2005

  36. Fetch Operand Write Back Fetch Instruction Register File 32 x 32 EXecute/ MEMory PC+k/PC+Imm Program Memory m x 8 Register File 32 x 32 BRA ImmnADDitionsenhet och datavägar finns ADD PC RWM true/false ALU op-code NVZC Logik för villkorligt hopp CCR 2G1518, föreläsning 3, vt2005

  37. Ovillkorligt hoppVillkorligt hopp • Ovillkorligt hopp utförs alltidExempel: JMP och BRA • Villkorligt hopp utförs endast om ett angivet villkor är santExempel Bcc där cc är villkoret • Exempel på villkorEQZ = EQual to ZeroNEZ = Not Equal to Zero 2G1518, föreläsning 3, vt2005

  38. JUMP och BRAOvillkorliga hopp • JUMP brukar ha direkt adress • BRA brukar ha PC-relativ adress 32: JMP 104 ;PC := 104 ”hopp till 104” . . 104: 224: BRA 40 ;PC := pc + 40 ”hopp till 268” 268: 2G1518, föreläsning 3, vt2005

  39. Typisk hopp-instruktionJUMP Label • Absolut adressering • Läget Label motsvarar en binär adress • Kopiera Label till PC • Om PC har 32 bitar bör Label vara 32 bitar • Adressen Label lagras i instruktionen 2G1518, föreläsning 3, vt2005

  40. Typisk hopp-instruktionBRA Label • PC-relativ adressering • Läget Label motsvarar en binär adress • Före körning beräknar assemblern hur långt från instruktionen Label finns • Avståndet lagras i instruktionen som displacement eller offset • Vid körning adderas offset till PC • offset kan vara positivt eller negativt 2G1518, föreläsning 3, vt2005

  41. Typisk hopp-instruktionJUMP (Raddr) • Kopiera registerinnehåll till PC • Register med 32 bitar betyder att32 bits adress kan användas • Hur får man 32 bits adress till registret ? • MOVIA Raddr , Imm32 eller motsvarande 2G1518, föreläsning 3, vt2005

  42. Nios hopp-instruktionJMP %rA • Skifta innehåll i register %rA ett steg åt vänster och kopiera till PC 2G1518, föreläsning 3, vt2005

  43. Nios-MakrotJUMPA addr ; Ladda ett 32 bitars värde till PC ; Hopp med absolutadressering .macro JUMPA addrMOVIA %g7, \addr@hJMP %g7 .endm OBS att innehåll i reg %g7 “förstörs” 2G1518, föreläsning 3, vt2005

  44. Hjälp från översättaren %xhi (value) %xlo (value) %hi (value) %lo (value) = value Imm211Imm25 Imm111Imm15 value@h = 31 MSBits 2G1518, föreläsning 3, vt2005

  45. Typisk hopp-instruktionBR Immn • PC sätts till PC + Immn • Hur stor är Immn ? • Hur stor vill vi att Immn ska vara helst ? 2G1518, föreläsning 3, vt2005

  46. Nios hopp-instruktionBR IMM11 • Skifta IMM11 ett steg vänster • gör Sign Extension • addera till aktuellt värde i PC • PC <- PC + 2 + (sext (IMM11) <<1) 2G1518, föreläsning 3, vt2005

  47. Typisk instruktionSUB RsrcA, RsrcB • Subtrahera innehåll i RsrcB från RsrcA • och skriv till RsrcA • Förutom resultatet / skillnaden • så lagras ytterligare information • i STATUS-flaggor 2G1518, föreläsning 3, vt2005

  48. Typisk instruktionCMP RsrcA, RsrcB • Jämför innehåll i RsrcA och RsrcB genom att • Subtrahera innehåll i RsrcB från RsrcA • men skriv ej resultat till något register • Information om resultatet / skillnadenlagras som informationi STATUS-flaggor 2G1518, föreläsning 3, vt2005

  49. STATUS-flaggor • Z - Zero; ”utfall lika med noll” • N - Negativ; ”utfall med negativt tecken” • V - oVerflow; ”utfall med overflow” • C - Carry; Carry-ut från ALU • Påverkas av ADD, SUB, CMP ... 2G1518, föreläsning 3, vt2005

  50. Fetch Operand Write Back Fetch Instruction Register File 32 x 32 EXecute/ MEMory PC+k/PC+Imm Program Memory m x 8 Register File 32 x 32 STATUS-flaggor ADD PC RWM true/false ALU op-code NVZC Logik för villkorligt hopp CCR 2G1518, föreläsning 3, vt2005

More Related