1 / 72

IS1200 Datorteknik

IS1200 Datorteknik. Föreläsning 1 Introduktion. 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_teachers@ict.kth.se Kursansvarig: Johan Wennlund. IS1200 Datorteknik.

emma-levine
Télécharger la présentation

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 1 Introduktion IS1200 Datorteknik, föreläsning 1

  2. Välkommen tillIS1200 Datorteknik ”Hur datorer fungerar” Kursens hemsida finns utpekad från: http://www.ict.kth.se/courses/IS1200 emailadress till lärare: is1200_teachers@ict.kth.se Kursansvarig: Johan Wennlund IS1200 Datorteknik, föreläsning 1

  3. IS1200 Datorteknik • Föreläsningar, 10 st (2x45min) • Övningar, 10 st (2x45min) • Laborationer, 6 st 3 st a’ 4 tim i lablokal, 2 elever per grupp 3 st redovisas muntligt ~50 min/2 elever • Tentamen, (5 tim) 6 uppgifter a’ 10p, 30p ger G • Kurs-anmälan vid Föreläsning 1 (dvs nu!) IS1200 Datorteknik, föreläsning 1

  4. Ö10 F10 Hemlab-3 Hemlab-2 Hemlab-1 Ö2 Ö1 Ö3 Ö5 Ö7 Ö8 Ö9 Ö6 Ö4 F1 F5 F7 F8 F4 F6 F9 F3 F2 Tentamen LAB-2 LAB-3 LAB-1 IS1200 Datorteknikhttp://www.ict.kth.se/courses/IS1200 Assemblerkod 4 stegs pipeline Nios2time C-kod Nios2io Nios2int Cache-minnen CPU-scheduling IS1200 Datorteknik, föreläsning 1

  5. Kurslitteratur • Mats Brorsson: Datorsystem Program- och maskinvara • OH-bilder från föreläsningar 1-10, på hemsida • Exempelsamling del 1-10, på hemsida • Lab-PM del 1-6, från hemsidan • Nios2 – manual , på hemsida • Enstaka blad från hemsidan IS1200 Datorteknik, föreläsning 1

  6. Laborationer Assemblerprogrammering av Nios-processorn • Assembler-programmering på Nios-processorn • I/O på Nios-processorn • Avbrottshantering på Nios-processorn Hemlaborationer • Maskinnära programmering med C • Minnessystem med cache-minnenPrestanda påverkas av parametervärden • Operativsystem, Fördelning av CPU-tidSamverkan mellan processer med semaforer IS1200 Datorteknik, föreläsning 1

  7. IS1200 DatorteknikLärare: • Johan Wennlund, kursledare, föreläsare, Övn och lab • Fredrik Lundevall, biträdande kursledare, Övn och lab • Jan Andersson, Övn och lab • Olle Bowallius, Övn och lab • William Sandqvist, Övn och lab • Gunnar Johansson, la IS1200 Datorteknik, föreläsning 1

  8. Kursen i förhållande till andra kurser Förkunskaper • Elektronik/Digitalteknik - NAND-grindar etc • Datalogi - programmering C/Java Innehåll i efterföljande kurser inom områden • Datorkomm. och Datornät • Operativsystem • Datorteknik fk, Datorarkitektur • Embedded Systems, SystemOnChip Architecture • Parallella Datorsystem • Concurrent Programming IS1200 Datorteknik, föreläsning 1

  9. IS1200 Datorteknik Datorns funktion på olika nivåer från JAVA/C-kod till NAND-grind • Programexempel: sum = 0 ; for (i=1; i<=17; i=i+1) sum = sum + i; • Exempel på digitala komponenter: IS1200 Datorteknik, föreläsning 1

  10. IS1200 Datorteknik • Föreläsning 1, innehåll • CPU - BUS – MEM – I/O • Fetch - Execute • Instruktioner och Data • Instruktionsformat • Adressering - operandutpekning • Hoppinstruktioner IS1200 Datorteknik, föreläsning 1

  11. Litteraturhänvisningar • Kursboken, valda delar av kapitel 1,2 och 4 • 1.1 -- 1.3 läses kursivt • 1.4 -- 1.6 läses • Kap 2: principer, ej MIPS-kod • 4.1 -- 4.3 principer, ej MIPS-kod • 4.4 Kopplingen till C, ej MIPS-kod IS1200 Datorteknik, föreläsning 1

  12. Programexempel 1 • Java-/C-kod int A, B, C; /* variabler, data */ ... C = A + B; /* program, code/text */ ... IS1200 Datorteknik, föreläsning 1

  13. Program i Java/C-kodkompileras/översätts tillASSEMBLER-kod int A, B, C; /* variabler, data */ • översätts (kompileras) till assembler-kod .data # nu kommer data .align 2 # på adress delbar med 4 A: .word 0 # plats för en integer /32 bitar B: .word 0 # plats för en integer /32 bitar C : .word 0 # plats för en integer /32 bitar IS1200 Datorteknik, föreläsning 1

  14. Program i Java/C-kodkompileras/översätts tillASSEMBLER-kod C = A + B; /* program, code/text */ • översätts (kompileras) till assembler-kod .text # nu kommer programkod .align 2 # på adress delbar med 4 LOAD R1 <-- A LOAD R2 <-- B ADD R3 <-- R1 + R2 STORE C <-- R3 IS1200 Datorteknik, föreläsning 1

  15. Program i ASSEMBLER-kod assembleras/översätts tillMaskinkod / binärkod # maskinkod/binärkod #kommentarer 0010 1101 1111 …. 1101 #LOAD R1 <-- A 0010 1101 1110 …. 1101 #LOAD R2 <-- B 1001 1101 0101 …. 1111 #ADD R3 <-- R1+R2 0011 1111 1101 …. 0010 #STORE C <-- R3 # hur många bitar? IS1200 Datorteknik, föreläsning 1

  16. Viktiga delar i en dator CPU BUS I/O MEM Jämför med kursbokens Figur 1.5 En maskinvaruorienterad vy av ett datorsystem. IS1200 Datorteknik, föreläsning 1

  17. Viktiga delar i en dator • MEM - Memory/Minne innehåller program och data (Minne = Lagringsplats) • CPU - Central Processing Unit; den enhet som ”kör program” dvs hämtar och utför instruktioner • IO - Input/Output; enheter för kommunikation med omvärlden • BUS; kommunikation mellan CPU/MEM/IO IS1200 Datorteknik, föreläsning 1

  18. (decode) EXECUTE Programexekvering FETCH (update PC) IS1200 Datorteknik, föreläsning 1

  19. Programexekvering • FETCH • PC - Program Counter innehåller en minnesadress som pekar ut aktuell instruktion. • Kopiera en instruktion från minne till processorns IR - Instruction Register • Uppdatera PC för att peka ut nästa instruktion (öka med 1/2/4 ...) IS1200 Datorteknik, föreläsning 1

  20. Programexekvering • EXECUTE • Decode - Avkoda innehållet i IR – Instruction Register dvs lista ut vilken intruktion som bitkoden i IR motsvarar • Execute - Utför denna instruktion IS1200 Datorteknik, föreläsning 1

  21. Minne Generella register Programräknare R0 PC R1 R31 Processorn(t.ex Nios eller MIPS eller …) Jämför med kursbokens Figur 2.3 En enkel modell av MIPS-arkitekturen med minne. IS1200 Datorteknik, föreläsning 1

  22. Programexempel 1 PROGRAMRÄKNAREE PROGRAM COUNTER MINNE uppdatera öka med vad? 4 eller 2 eller LOAD LOAD ADD STORE PROGRAM (.text) LOAD LOAD A:B:C: DATA (.data) ADD STORE IS1200 Datorteknik, föreläsning 1

  23. Assembler-InstruktionenLOAD Rdst <-- A • LOAD: Läs/Kopiera från minne till register • Destinationsplats är Rdst • Källoperanden finns i minnet på adress A • Effektivadressen till källoperanden är A • En läsning från minnet i Fetch • En läsning från minnet i Execute IS1200 Datorteknik, föreläsning 1

  24. Assembler-InstruktionenSTORE C <-- Rsrc • STORE: Skriv/Kopiera från register till minne • Källoperand finns i Rsrc • Destinationsplats i minnet på adress C • Effektivadressen till destinationen är C • En läsning från minnet i Fetch • En skrivning till minnet i Execute IS1200 Datorteknik, föreläsning 1

  25. Assembler-InstruktionenADDITION, variant 1 • ADD Rdst, Rsrc1 , Rsrc2 Utför addition av två värden, som vardera upptar 32 bitar, hämtade från register Rsrc1 och Rsrc2 och skriver summan till register Rdst • En läsning från minnet (Fetch) • Rdst <-- Rsrc1 + Rsrc2 IS1200 Datorteknik, föreläsning 1

  26. INSTRUKTIONSFORMAT binärkodsformat ADD Rdst, RsrcA, RsrcB ADD 6 5 5 5 bitar per fält Hur många bitar behövs ? 3 regadr + opcode ! Hur stor blir varje instruktion ? 21 bitar ! INSTRUKTIONSFORMAT enligt ovan IS1200 Datorteknik, föreläsning 1

  27. INSTRUKTIONSFORMAT Binärkod i Nios II, 32 bitar ADD Rdst, RsrcA, RsrcB 0x31 0x00 0x3a 5 5 5 6 5 6 bitar per fält Hur många bitar behövs ? 15 + op-code Hur stor är varje instruktion ? 32 bitar ! INSTRUKTIONSFORMAT enligt ovan IS1200 Datorteknik, föreläsning 1

  28. Assembler-InstruktionenSUBTRAKTION, variant 1 • SUB Rdst, Rsrc1 , Rsrc2 Utför subtraktion mellan två värden som vardera upptar 32 bitar hämtade från register Rsrc1 och Rsrc2 och skriver skillnaden till register Rdst • En läsning från minnet (Fetch) • Rdst <-- Rsrc1 - Rsrc2 IS1200 Datorteknik, föreläsning 1

  29. Programexempel 2 C = A + 17 ; • ”kan översättas” till LOAD R1 <-- A ADDI R3 <-- R1 + 17 #ny instruktion STORE C <-- R3 IS1200 Datorteknik, föreläsning 1

  30. Assembler-InstruktionenADDITION, variant 2 • ADDI Rdst, Rsrc1 , datan Utför addition av två värden, som vardera upptar 32 resp. n bitar, hämtade från register Rsrc1 samt ??? och skriver summan till register Rdst • En läsning från minnet (Fetch) ??? • Rdst <-- Rsrc1 + datan IS1200 Datorteknik, föreläsning 1

  31. Assembler-InstruktionenSUBTRAKTION, variant 2 • SUBI Rdst, Rsrc1 , datan Utför subtraktion mellan två värden som vardera upptar 32 resp. n bitar hämtade från register Rsrc1 samt ??? och skriver skillnaden till register Rdst • En läsning från minnet (Fetch) ??? • Rdst <-- Rsrc1 - datan IS1200 Datorteknik, föreläsning 1

  32. INSTRUKTIONSFORMAT binärkodsformat ADDI Rdst, Rsrc, datan SUBI Rdst, Rsrc, datan ADDI/SUBI 6 5 5 n bitar per fält Hur många bitar behövs? 16 + n ! Hur stor blir varje instruktion? 16+n! INSTRUKTIONSFORMAT enligt ovan Vilket värde bör man välja för n? 16! IS1200 Datorteknik, föreläsning 1

  33. INSTRUKTIONSFORMAT Binärkod i Nios II, 32 bitar ADDI Rdst, RsrcA, Data 0x04 5 5 16 6 bitar per fält SUBI rB, rA, IMM16  ADDI rB, rA, -IMM16 IMM16 innehåller ett 2-komplement-tal ... IS1200 Datorteknik, föreläsning 1

  34. OperandutpekningAdressering Exempel på varianter ”Var finns operanden” • I register, till exempel i R4 Vilka register finns? t.ex. R0--R31 (”snabbt”) • I minnet, på en viss adress t.ex. 0x046C (”långsamt”) IS1200 Datorteknik, föreläsning 1

  35. Effektivadressvid operand i minnet • Vid operandutpekning i minnet gäller den Effektiva Adressen är adressen till den plats i minnet där operanden lagras IS1200 Datorteknik, föreläsning 1

  36. Operandutpekning medoperand i minnet • Effektivadress i instruktionens ”adressfält” • Effektivadress i ett register • Operand i instruktionens ”datafält” • Indexerad adressering • Självrelativ adressering, PC-relativ • … det finns fler varianter ... IS1200 Datorteknik, föreläsning 1

  37. Direkt adressAbsolut adress • Instruktionens adressfält innehållereffektivadressen (EA) • effektivadressen är adressen till den plats i minnet där operanden lagras till exempel: LOAD reg <- Addr # reg := mem(Addr) IS1200 Datorteknik, föreläsning 1

  38. Direkt operand(Immediate addressing) • Instruktionens ”adressfält” innehålleroperandvärdet • effektivadress är inte relevant exempel: MOVI reg <- Data #reg := Data IS1200 Datorteknik, föreläsning 1

  39. Register operand(Register addressing) • Ett register innehålleroperandvärdet • effektivadress är inte relevant • Kan kallas direkt via register exempel: MOVE reg1 <- reg2 #reg1 := reg2 IS1200 Datorteknik, föreläsning 1

  40. Register indirect addressing(Indirekt adress via register) • Ett register innehåller effektivadressen • Effektivadressen är adressen till den plats i minnet där operanden lagras exempel: LOAD reg1 <- (reg2) #reg1 := mem(reg2) IS1200 Datorteknik, föreläsning 1

  41. Indexerad adressering(Displacement addressing) • Effektivadressen är adressen till den plats i minnet där operanden lagras • Effektivadressen är summan avinnehåll i instruktionens adressfält ochinnehåll i angivet indexregister exempel: LOAD reg <- offset(indexreg) #reg := mem (offset+indexreg) IS1200 Datorteknik, föreläsning 1

  42. Indexerad adressering Exempel på specialfall LOAD Offset(Indexregister) • Offset = 0 ger ”adress i register” • Indexregister innehåller 0 ger direkt (absolut) adress • Indexregister = PC ger själv-relativ adressering PC-relativ adressering IS1200 Datorteknik, föreläsning 1

  43. Självrelativ adresseringPC-relativ adressering(specialfall av Indexerad adressering) • Effektivadressen är adressen till den plats i minnet där operanden lagras • Effektivadressen är summan avinnehåll i instruktionens adressfält och(aktuellt) innehåll i Program Counter (PC) IS1200 Datorteknik, föreläsning 1

  44. init start Next Body update Cond ? Java/C-kod: for-loop ger behov av hopp init; for (start; cond; update) body; leder till flödes-schema enligt figur till höger Vi får behov av HOPP OVILLKORLIGT HOPP VILLKORLIGT HOPP Test: False True IS1200 Datorteknik, föreläsning 1

  45. Effektiv adressvid hoppinstruktioner • Vid hoppinstruktioner gäller: Den Effektiva Adressen är det värde som skrivs till PC dvs adressen till den plats i minnet där programmet ska fortsätta IS1200 Datorteknik, föreläsning 1

  46. Ovillkorliga hoppJUMP och BRA • 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: IS1200 Datorteknik, föreläsning 1

  47. BRA Label # symbolisk adressöversätts tillBRA disp # numerisk displacementav översättaren/assemblern RUT: ADD … t.ex.500 520: BRA RUT 500: ADD … 520: BRA -24 IS1200 Datorteknik, föreläsning 1

  48. JMP Label # symbolisk adressöversätts tillJMP addr # numerisk absolutadressav översättaren/assemblern RUT: ADD … t.ex.500 520: JMP RUT 500: ADD … 520: JMP 500 IS1200 Datorteknik, föreläsning 1

  49. JMP ger icke relokerbar kodpå grund av absolut adressering RUT: ADD … t.ex. 500 520 JMP 500 hopp tillfel plats relokering RUT: ADD … ny plats JMP 500 Efter relokering Före relokering IS1200 Datorteknik, föreläsning 1

  50. BRA ger relokerbar kodtack vare PC-relativ adressering RUT: ADD … t.ex. 500 520 BRA -24 hopp tillrätt plats relokering RUT: ADD … ny plats BRA -24 Efter relokering Före relokering IS1200 Datorteknik, föreläsning 1

More Related