1 / 81

IS1500 Datorteknik och komponenter

IS1500 Datorteknik och komponenter. Föreläsning CE F3 Metoder / subrutiner Kursboken, delar av kapitel 2 och 4. IS1500 Datorteknik o k http://www.ict.kth.se/courses/IS1500. DC Ö1. DC F1. Digitala komponenter. DC F2. DC Ö2. lab dicom. CE F1. CE F2. CE Ö1. CE F3. CE Ö2.

lahela
Télécharger la présentation

IS1500 Datorteknik och komponenter

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. IS1500 Datorteknik och komponenter Föreläsning CE F3 Metoder / subrutiner Kursboken, delar av kapitel 2 och 4 IS1500 Datorteknik o k, föreläsning CE - F3

  2. IS1500 Datorteknik o khttp://www.ict.kth.se/courses/IS1500 DC Ö1 DC F1 Digitala komponenter DC F2 DC Ö2 lab dicom CE F1 CE F2 CE Ö1 CE F3 CE Ö2 Assemblerprogram CE F4 CE Ö3 lab nios2time C CE F5 CE Ö4 hemlab C Cacheminnen CE F6 CE Ö5 hemlab cache lab nios2io In- och utmatning CE F7 CE Ö7 CE Ö6 lab nios2int Avbrott och "trap" CE F8 CE Ö8 CE F9 CE Ö9 hemlab trådar CE F10 CE Ö10 tentamen Trådar, synkronisering 18 September 2014 IS1500 Datorteknik o k, föreläsning CE - F3 2

  3. Föreläsning 3Innehåll • 4- och 5-stegs PIPE-LINE, repetition • MACRO, pseudo-instruction,exempel • Nios-II, Instruktioner och -format • Load och Store med indexerad adress • Stack med SP samt PUSH och POP • Subrutiner, anrop, retur, parametrar • Activation Record, aktiveringsblock IS1500 Datorteknik o k, föreläsning CE - F3

  4. Litteraturhänvisningar • Kursboken • 2.5 Representing Instructions in the Computer (även 2.10) • 2.8 Supporting Procedures in Computer Hardware • B-6 Procedure Call Convention • Nios-manualen om instruktionsformat IS1500 Datorteknik o k, föreläsning CE - F3

  5. Viktiga delar i en dator CPU BUS program I/O MEM data IS1500 Datorteknik o k, föreläsning CE - F3

  6. FETCH (update PC) (decode) EXECUTE Programexekveringi två steg IS1500 Datorteknik o k, föreläsning CE - F3

  7. 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 Cond IS1500 Datorteknik o k, föreläsning CE - F3

  8. Villkorliga hoppKvar att fundera över • När och hur beräknas hoppadress • När ”beräknas” hoppvillkor • Var finns all kontroll-logik och avkodning av instruktioner Detta diskuteras i boken och tas eventuellt upp senare i kursen IS1500 Datorteknik o k, föreläsning CE - F3

  9. Instruktioner i ”vår” 4-stegs CPU • ADD Rdst, RsrcA , RsrcB # SUB/AND/OR/XOR • ADDI Rdst, RsrcA , Imm # SUBI/ANDI/ORI/XORI • JMP / BR # ovillkorliga hopp • LDW Rdst , (Rsrc) # LOAD • STW Rsrc , (Rdst) # STORE • CMP RsrcA , RsrcB • CMPI RsrcA , Imm • BCond # villkorliga hopp • R0 = 0 ger ytterligare funktioner, NOP, CLR, COPY IS1500 Datorteknik o k, föreläsning CE - F3

  10. 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 • ADDI rA, rB, 0 utför ”MOV rA, rB” • ADDI rA, r0, Imm utför ”MOVI rA, Imm” • ... IS1500 Datorteknik o k, föreläsning CE - F3

  11. Instruktioner Nios-II-Instruktioner • MOV Rdst, Rsrc • MOVI Rdst, Imm16 # ADDI/SUBI • ADD Rdst, RsrcA , RsrcB # SUB/AND/OR/XOR • ADDI Rdst, RsrcA , Imm # SUBI/ANDI/ORI/XORI • BR / JMP / BCond • LDW Rdst , offset(Rsrc) # indexerad adress • STW Rsrc , offset(Rdst) # indexerad adress • CMPCond Rdst, RsrcA , RsrcB # CMPICond/Set on Cond • Forts. IS1500 Datorteknik o k, föreläsning CE - F3

  12. CMP: ”Set on Condition”Nios-II-instructions • CMPEQ Rdst, rA, rB if rA==rB then Rdst := 1 else Rdst := 0 • CMPcond Rdst, rA, rB if ”true” then Rdst := 1 else Rdst := 0 cond = EQ, NE, GT, GE, ... 1 = ”True”, 0 = ”False” IS1500 Datorteknik o k, föreläsning CE - F3

  13. Branch on ConditionNios-II-instructions • BEQ rA, rB, Label if rA==rB then PC:=PC+Imm16else PC:=PC+4 • Bcond rA, rB, Label if ”true” then PC:=PC+Imm16else PC:=PC+4 cond = EQ, NE, GT, GE, ... Label = PCBEQ + 4 + Imm16 Imm16 = Label - PCBEQ - 4 IS1500 Datorteknik o k, föreläsning CE - F3

  14. Macro-instructionPseudo-instruktion TYPEXEMPEL – MALL .macro NOP ADD r0, r0, r0 .endm Effekt: man kan använda en ny (pseudo-) instruktion NOP – No Operation – som inte gör något mer än att förbruka tid (case sensitive !!!) IS1500 Datorteknik o k, föreläsning CE - F3

  15. Macro-instructionPseudo-instruktion TYPEXEMPEL – MALL .macro CLR reg MOVI \reg, 0x0 .endm Effekt: man kan använda en ny (pseudo-) instruktion CLR reg för att nollställa register reg MOVI görs med ADDI !!! (case sensitive !!!) IS1500 Datorteknik o k, föreläsning CE - F3

  16. NEG reg Skriv makro för NEG-instruktion .macro NEG reg SUB \reg, r0, \reg .endm Effekt: man kan använda en ny (pseudo-) instruktion NEG rA, för att ta fram 2-komplementet av innehållet i ett register, rA (case sensitive !!!) IS1500 Datorteknik o k, föreläsning CE - F3

  17. SWAPR regA, regB (utmaning) Skriv makro för swap-instruktion med 2 register .macro SWAPR reg1, reg2XOR \reg1, \reg1, \reg2... #här saknas en del... #icketrivial kod .endm Effekt: man kan använda en ny (pseudo-) instruktion SWAPR rA, rB för att byta plats på innehåll i rA och rB (begräsningar ?) IS1500 Datorteknik o k, föreläsning CE - F3

  18. Något om Nios-IIInstruktionsformat Nios-II-processorn Varje instruktion i Nios-II upptar 32 bitar ! Det finns endast 3 olika instruktionsformat • R-format (Register) • I-format (Immediate) • J-format (Jump) IS1500 Datorteknik o k, föreläsning CE - F3

  19. INSTRUKTIONSFORMAT Nios-II: R-type (Register) add rC, rA, rB #rC  rA + rB A B C OPX OP 5 5 5 11 6 Andra exempel: sub, and, or, xor, ... IS1500 Datorteknik o k, föreläsning CE - F3

  20. INSTRUKTIONSFORMAT Nios-II: I-type (Immediate) addi rB, rA, IMM16 #rB  rA + sext(IMM16) A B IMM16 OP 5 5 16 6 Andra exempel: subi, andi, ori, orhi, xori, ... IS1500 Datorteknik o k, föreläsning CE - F3

  21. INSTRUKTIONSFORMAT Nios-II: J-type (Jump) call label #PC  (PC31..28 :IMM26x4) IMM26 OP 26 6 Enda exempel: call !!! (och snart JMPI) IS1500 Datorteknik o k, föreläsning CE - F3

  22. ori rB, rA, IMM16 Instruktion i Nios-2, I-type ori rB, rA, IMM16 #rB  rA | (0x0000:IMM16) A B IMM16 OP 5 5 16 6 Komplettera IMM16 med nollor i de 16 mest signifikanta bitarna. Gör or-operation med innehåll i rA Skriv resultat till rB IS1500 Datorteknik o k, föreläsning CE - F3

  23. orhi rB, rA, IMM16 Instruktion i Nios-2, I-type orhi rB, rA, IMM16 #rB  rA | (IMM16:0x0000) A B IMM16 OP 5 5 16 6 Komplettera IMM16 med nollor i de 16 minst signifikanta bitarna. Gör or-operation med innehåll i rA Skriv resultat till rB IS1500 Datorteknik o k, föreläsning CE - F3

  24. Ladda ett register med ettkonstant värde, Nios-II • 16-bitars värde MOVI rB, IMMED movi r6, -30 #sign extension to 32 bits ”movi is implemented as addi rB, r0, IMMED” • 32-bitars värde MOVIA rB, Value #Value is any 32 bits might be implemented as (but it is not!?) orhi rB, r0, %hi(Value) #fyller ut med nollor ori rB, rB, %lo(Value) #fyller ut med nollor IS1500 Datorteknik o k, föreläsning CE - F3

  25. Hjälp från översättaren %hi (value) %lo (value) = Value32 Imm116 Imm216 orhi rB, r0, %hi(Value) #fyller ut med nollor ori rB, rB, %lo(Value) #fyller ut med nollor orhi rB, r0, Imm1 #fyller ut med nollor ori rB, rB, Imm2 #fyller ut med nollor IS1500 Datorteknik o k, föreläsning CE - F3

  26. MOVI32 Rdest, Value Nios-II macro Skriv makro för ladda register med 32 bitars värde .macro MOVI32 reg, value ORHI \reg, r0, %hi(\value)ORI \reg, \reg, %lo(\value) .endm OBS att inga registerinnehåll “förstörs” MOVIA är implementerad på annat (fel?) sätt! IS1500 Datorteknik o k, föreläsning CE - F3

  27. 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 LOAD och STOREi fyra stegs pipeline ADD PC RWM true/false ALU op-code NVZC Logik för villkorligt hopp CCR IS1500 Datorteknik o k, föreläsning CE - F3

  28. LOAD och STOREi 4 stegs pipeline Vi kan utföra instruktionerna LDW Rdst, (Raddr) STW Rsrc , (Raddr) IS1500 Datorteknik o k, föreläsning CE - F3

  29. 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/STORE IS1500 Datorteknik o k, föreläsning CE - F3

  30. Programvariabler placerassamlade i minnet • Variabler int i; int j; int k; • läggs efter varanni minnet av kompilatorn minne i j k IS1500 Datorteknik o k, föreläsning CE - F3

  31. minne Ett register pekar ut variabelarean • Vid programstart tilldelas registret adressen till variabelarean i minnet • Global pointer är r26 i Nios-II i j register k r26 IS1500 Datorteknik o k, föreläsning CE - F3

  32. minne Varje LOAD/STORE behöver adressberäkning med ADD • k ska hämtas till R2 • R17 är ledigt • ADDI R17 <- R26 + 8 • LOAD R2 <- (R17) • En extra instruktion • En extra klockcykel • Extra krångel i programkoden i j register k r26 IS1500 Datorteknik o k, föreläsning CE - F3

  33. minne Indexerad adress • Addition i LOAD-instruktionen • LOAD R2 ← 8(R26) • innebärR2 ← hm(r26+8) • Innehåll i R26, plus talet 8, blir minnesadress i j register k r26 IS1500 Datorteknik o k, föreläsning CE - F3

  34. LOAD och STORE I Nios-II finns instruktionerna LDW Rdst, Offset (Raddr ) STW Rsrc , Offset( Raddr ) (De kan utföras i en 5 stegs pipeline) IS1500 Datorteknik o k, föreläsning CE - F3

  35. Program Memory n x 16 FI FO ALU/EXE MEM NYTT WB Register File 32 x 32 CPU med 5 stegs PIPE-LINE Register File 32 x 32 IR0 PC+n PC+Imm ADD IR1 PC +2 ALU IR2 RWM IR3 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2 IS1500 Datorteknik o k, föreläsning CE - F3 35

  36. 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 IS1500 Datorteknik o k, föreläsning CE - F3

  37. Nios-II hopp-instruktionJMP rA • Kopiera innehållet i angivet register till PCEftersom ett register rymmer 32 bitargår det att ”hoppa vart som helst” IS1500 Datorteknik o k, föreläsning CE - F3

  38. Om man vill kan man införaeget makro: JUMPA addr # Ladda ett 32 bitars värde till PC # Hopp med absolutadressering .macro JUMPA addrMOVIA r1, \addrJMP r1 .endm OBS att innehåll i reg r1 “förstörs” r1 kallas även “at” – assembler temporary IS1500 Datorteknik o k, föreläsning CE - F3

  39. Metoder, funktioner, subrutiner • Hur sker anrop ? • Med “hopp”-instruktion ! • Hur sker återhopp ? • Med “hopp”-instruktion ! • Returadress måste lagras ! Var ? • I register eller minne ! IS1500 Datorteknik o k, föreläsning CE - F3

  40. Subrutinanrop RUT: ADD … RETURN CALL RUT RET1: ADD … CALL RUT RET2: SUB ... IS1500 Datorteknik o k, föreläsning CE - F3

  41. Subrutinanrop i flera nvåer(nested procedures) RUT: ADD … CALL FKN RETURN FKN: MUL … CALL NEW RETURN CALL RUT RET1: ADD … CALL RUT RET2: SUB ... IS1500 Datorteknik o k, föreläsning CE - F3

  42. Subrutinanrop, rekursion RUT: ADD … CALL RUT RETURN CALL RUT RET1: ADD … CALL RUT RET2: SUB ... IS1500 Datorteknik o k, föreläsning CE - F3

  43. metoder, funktioner, subrutiner, Hur sker parameteröverföringVar lagras parametrar (register/minne) • från anropare till rutinen, inparametrar • från rutinen till anroparen, returvärden Olika typ av parameter • värde ( java: om “primitiv typ”) • pekare ( annars referens till object) IS1500 Datorteknik o k, föreläsning CE - F3

  44. Nios-II hopp-instruktionCALLR rA Liknar JMP rA med tillägg att • Returadress sparas i register r31 Returadressen är adressen till instruktionen närmast efter CALLRdvs adress till CALLR ökat med 4 ! IS1500 Datorteknik o k, föreläsning CE - F3

  45. Om man vill kan man införaeget makro: CALLA addr # Subrutinanrop med absolutadressering .macro CALLA addrMOVIA r1, \addrCALLR r1 .endm # OBS att innehåll i reg r1 “förstörs” IS1500 Datorteknik o k, föreläsning CE - F3

  46. Nios-II hopp-instruktionCALL Label Liknar CALLA med begränsning att Label måste ligga inom det 256MB område som anges av de 4 mest signifikanta bitarna i PC (se manual vid behov!) IS1500 Datorteknik o k, föreläsning CE - F3

  47. Stackhantering • Stack är speciell reserverad plats i minnet • stack-pekare pekar på plats i stacken • PUSH-operation, lägg på stack • POP-operation, hämta från stack IS1500 Datorteknik o k, föreläsning CE - F3

  48. STACKoperationer PUSH och POP PUSH op: SP  sp - n mem(sp)  op POP dst: dst  mem(sp) SP  sp + n n = antal bytes - Stack Pointer SP + IS1500 Datorteknik o k, föreläsning CE - F3

  49. Nios-II: PUSH reg # Pusha ett register på stacken .macro PUSH regSUBI sp, sp, 4 #sp = r27STW \reg, 0(sp) .endm # PUSH sp är inte bra IS1500 Datorteknik o k, föreläsning CE - F3

  50. Nios-II: POP reg # Poppa ett register från stacken .macro POP regLDW \reg,0(SP) ADDI sp, sp, 4 #sp = r27 .endm # POP sp är förödande IS1500 Datorteknik o k, föreläsning CE - F3

More Related