1 / 72

IS1200 Datorteknik

IS1200 Datorteknik. Föreläsning CE F3 Metoder / subrutiner Kursboken, delar av kapitel 2 och 4. IS1200 Datorteknik http://www.ict.kth.se/courses/IS1200. CE F1. CE F2. CE Ö1. CE F3. CE Ö2. Assemblerprogram. CE F4. CE Ö3. lab nios2time. C. CE F5. CE Ö4. hemlab C.

lilith
Download Presentation

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

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

  3. ”Öppet hus”välkommen Öppet hus i labbsalen: torsdag 20 januari kl 8-12 har vi öppet hus i sal 430. Ingen bokning behövs för det här tillfället.- Du kan få hjälp att installera labprogramvara- Vi svarar på frågor om labbarna och kursen.- Du kan testa att din bärbara dator fungerar med vår hårdvara. IS1200 Datorteknik o k, föreläsning CE - F3

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

  5. Litteraturhänvisningar • Kursboken, valda delar av kapitel 4 • 4.1 -- 4.3 principer, ej MIPS-kod • 4.5 Subrutiner och Stack IS1200 Datorteknik o k, föreläsning CE - F3

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

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

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

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

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

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

  12. 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” • ... IS1200 Datorteknik o k, föreläsning CE - F3

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

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

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

  16. 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 !!!) IS1200 Datorteknik o k, föreläsning CE - F3

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

  18. 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 !!!) IS1200 Datorteknik o k, föreläsning CE - F3

  19. 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 ?) IS1200 Datorteknik o k, föreläsning CE - F3

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

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

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

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

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

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

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

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

  28. MOVIA Rdest, Addr 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! IS1200 Datorteknik o k, föreläsning CE - F3

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

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

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

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

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

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

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

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

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

  38. Nios-II hopp-instruktionJMP rA • Kopiera innehållet i angivet register till PC IS1200 Datorteknik o k, föreläsning CE - F3

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

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

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

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

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

  44. 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 • pekare IS1200 Datorteknik o k, föreläsning CE - F3

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

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

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

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

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

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

More Related