Presentation laddar. Vänta.

Presentation laddar. Vänta.

31 July 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning 10 1. Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.

Liknande presentationer


En presentation över ämnet: "31 July 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning 10 1. Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA."— Presentationens avskrift:

1 31 July 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning 10 1. Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA

2 IS1200 Datorteknik http://www.ict.kth.se/courses/IS1200 Assemblerprogram C In- och utmatning Avbrott och "trap" Cacheminnen 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 lab nios2int hemlab cache hemlab trådar CE F10CE Ö10 tentamen 31 July 20152IS1200 Datorteknik, förel 10

3 31 July 2015IS1200 Datorteknik, förel 103 Viktiga delar i en dator CPU MEM BUS I/O program data

4 31 July 2015IS1200 Datorteknik, förel 104 Programexekvering FETCH (update PC) (decode) EXECUTE

5 31 July 2015IS1200 Datorteknik, förel 105 1. Processorkonstruktion Kursboken kap 7,  Jämför innehåll i föreläsningar och kursboken  4 stegs PIPE-LINE  5 stegs PIPE-LINE  Fenomen vid konstruktion med PIPE-LINE  Avsnitt 9.3, sid 322-326

6 31 July 2015IS1200 Datorteknik, förel 106 CPU med 4 steg Execute Fetch Operand Write Back Fetch Instruction Register File 32 x 32 Program Memory n x 16 ALU Register File 32 x 32 PC

7 31 July 2015IS1200 Datorteknik, förel 107 Pipeline med register och kombinatorik ALU PC ADD IR0 IR1 IR2 +2 REGISTER KOMBINATORIK REGISTER KOMBINATORIK REGISTER

8 31 July 2015IS1200 Datorteknik, förel 108 4 stegs CPU Konsekvent synkronism Förbered skrivning till Register File FIFOEXEWB ALU arbetar / D-Cache arbetar Avkoda samt Leta fram operander Leta fram instruktion ur I-cache Skriv resultat till Register File Skrivning till tmp-reg Skriv oprander till ALU-register Skrivning till Instruction Register Skrivning till Program Counter clock

9 31 July 2015IS1200 Datorteknik, förel 109 Execute Fetch Operand Write Back Fetch Instruction Register File 32 x 32 Program Memory n x 16 ALU Register File 32 x 32 PC NYTT IR0 IR1 IR2 PIPE - LINE införs ! 2 nya (del-) register IR

10 31 July 2015IS1200 Datorteknik, förel 1010 4 stegs CPU utan och med PIPE-LINE FIFOEXEWBFIFOEXEWBFIFOEXEWBFIFOEXEWBFIFOEXEWBFIFOEXEWB Utan PIPE-LINE Med PIPE-LINE

11 31 July 2015IS1200 Datorteknik, förel 1011 Processor med 4 stegs PIPE-LINE Hur lång tid tar varje instruktion, 4 cykler Antal Cykles Per Instruction, CPI, 1 cykel Antal instruktioner per cykel, 1 instruktion FIFOEXEWBFIFOEXEWBFIFOEXEWB

12 31 July 2015IS1200 Datorteknik, förel 1012 Fenomen pga PIPE-LINE 1. Branch Delay 2. Data Dependency 3. Load Delay

13 31 July 2015IS1200 Datorteknik, förel 1013 Fenomen pga PIPE-LINE 1.Branch Delay (slot) Instruktionen i minnespositionen närmast efter en hoppinstruktion hämtas och utföras innan hoppet verkställs Programexempel 16: BEQ R1, R2, 64# offset lagras i binärkod 20: ADD …# hämtas och utförs 24: … … 84: SUB...

14 31 July 2015IS1200 Datorteknik, förel 1014 Efter FI av 16: BEQ 64 Execute Fetch Operand Write Back Fetch Instruction 16: BEQ 64 20: ADD... ALU ADD IR0 IR1 IR2 20 BEQ... 6420 16: BEQ R1, R2, 64 20: ADD … 24: … … 84: SUB … 88:... Register File 32 x 32 Register File 32 x 32 PC PC+4 PC+Imm 20

15 31 July 2015IS1200 Datorteknik, förel 1015 Hur undviks Branch Delay Slot Hur utnyttjas Branch Delay Slot Olika metoder: zFyll ut med 1 NOP (onyttig) zSkriv en (nyttig) instruktion i hoppluckan zKompilator/Programmerare väljer zLåt hårdvaran specialbehandla hopp (hoppgissning / invalidate /...)

16 31 July 2015IS1200 Datorteknik, förel 1016 Fenomen pga PIPE-LINE 2. Data Dependency RAW - Read After Write Instruktioner som läser från ett register strax efter en instruktion som skriver till samma register kan få fel värde Programexempel 44:ADD R1 <- R2 + R3 48:ADD R4 <- R5 + R6 52:ADD R7 <- R1 + R4

17 31 July 2015IS1200 Datorteknik, förel 1017 Data Dependencies med 4 stegs PIPE-LINE 44: ADD... 48: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB 44:ADD R1 <- R2 + R3 48:ADD R4 <- R5 + R6 52:ADD R7 <- R1 + R4 52: ADD... R4 skrivs till RegFile Gamla värden R1 och R4 läses från RegFile R1 skrivs till RegFile

18 31 July 2015IS1200 Datorteknik, förel 1018 RAW Dependency med 4 stegs PIPE-LINE  Skrivning till register sker i WB-steget  Läsning från register sker i FO-steget  Skrivning måste ske innan läsning  WB-steg måste ligga före FO-steg  Genom att placera 2 NOP:ar eller 2 ”oberoende” instruktioner mellan WB och FO kan man lösa RAW-konflikten

19 31 July 2015IS1200 Datorteknik, förel 1019 44: ADD... 48: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB 44:ADD R1 <- R2 + R3 48:ADD R4 <- R5 + R6 NOP NOP 60:ADD R7 <- R1 + R4 60: ADD... R4 skrivs till RegFile Nya värden i R1 och R4 läses från RegFile R1 skrivs till RegFile FIFOEXEWBFIFOEXEWB NOP

20 31 July 2015IS1200 Datorteknik, förel 1020 Data Dependencies Execute Fetch Operand Write Back Fetch Instruction Register File 32 x 32 Program Memory n x 16 ALU Register File 32 x 32 IR0 IR1 IR2 44: R1 <- R2+R3 46: R4 <- R5+R6 48: R7 <- R1+R4 ADD PC+n PC+Imm

21 31 July 2015IS1200 Datorteknik, förel 1021 Data Dependencies inför nya data-vägar Execute Fetch Operand Write Back Fetch Instruction Register File 32 x 32 Program Memory n x 16 ALU Register File 32 x 32 IR0 IR1 IR2 44: R1 <- R2+R3 46: R4 <- R5+R6 48: R7 <- R1+R4 ADD PC+n PC+Imm NYTT

22 31 July 2015IS1200 Datorteknik, förel 1022 Data Dependencies med 4 stegs PIPE-LINE 44: ADD... 48: ADD... FIFOEXEWBFIFOEXEWBFIFOEXEWB 52: ADD... R4 skrivs till RegFile Ny värden R1 och R4 läses via nya datavägar R1 skrivs till RegFile 44:ADD R1 <- R2 + R3 48:ADD R4 <- R5 + R6 52:ADD R7 <- R1 + R4

23 31 July 2015IS1200 Datorteknik, förel 1023 LOAD och STORE  Vi vill kunna utföra instruktionerna LOADR dst, [ R addr ] STORE [ R addr ], R src  Indirekt adressering via register

24 31 July 2015IS1200 Datorteknik, förel 1024 ALU/EXEWB Register File 32 x 32 Program Memory n x 16 ALU Register File 32 x 32 ADD IR0 IR1 IR2 RWM 4 stegs PIPE-LINE dataminne (data cache) Instruction Decode Fetch Operand Instruction Fetch PC+n PC+Imm

25 31 July 2015IS1200 Datorteknik, förel 1025 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 ej tillgängligt för FO

26 31 July 2015IS1200 Datorteknik, förel 1026 Data Dependencies: rita in data forwarding igen Register File 32 x 32 Program Memory n x 16 ALU Register File 32 x 32 PC IR0 IR1 IR2 44: R1 <- R2+R3 46: R4 <- R5+R6 48: R7 <- R1+R4 50 +2 RWM ALU/EXEWBInstruction Decode Fetch Operand Instruction Fetch Rätta till NYTT

27 31 July 2015IS1200 Datorteknik, förel 1027 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 tack vare Data Forward

28 31 July 2015IS1200 Datorteknik, förel 1028 LOAD och STORE  Vi vill kunna utföra instruktionerna LOADR dst, Offset[ R addr ] STOREOffset[ R addr ], R src  Indexerad adressering

29 31 July 2015IS1200 Datorteknik, förel 1029 ALU/EXE/MEMWB Register File 32 x 32 Program Memory n x 16 ALU Register File 32 x 32 ADD IR0 IR1 IR2 RWM 4 stegs PIPE-LINE dataminne (data cache) Instruction Decode Fetch Operand Instruction Fetch PC+n PC+Imm

30 31 July 2015IS1200 Datorteknik, förel 1030 CPU med 5 stegs PIPE-LINE ALU/EXEInstruction Decode Fetch Operand MEMInstruction Fetch Register File 32 x 32 Program Memory n x 16 ALU PC ADD IR0 IR1 IR2 RWM IR3 Write Back Register File 32 x 32 PC+n PC+Imm NYTT

31 31 July 2015IS1200 Datorteknik, förel 1031 Processor med 5 stegs PIPE-LINE LOAD FIFOALUWB MEM FIFOALUWB MEM ADD Hur lång tid tar varje instruktion, 5 cycles Cykles Per Instruction, CPI, 1 cycle Antal instruktioner per cykel, 1 instruktion FIIDEXEWB MEM Jämför med Figur 7.12 i kursboken, sid 255

32 31 July 2015IS1200 Datorteknik, förel 1032 LOAD och STORE med 5 stegs PIPE-LINE LOAD to Rd FIFOALUWB MEM FIFOALUWB MEM USE Rd Data från MEM finns tillgängligt Data från MEM finns ej tillgängligt för FO

33 31 July 2015IS1200 Datorteknik, förel 1033 Fenomen pga PIPE-LINE 2. Data Dependency Instruktioner som läser från ett register strax efter en instruktion som skriver till samma register kan få fel värde Programexempel 44:ADD R1  R2 + R3 48:ADD R9  R5 + R6 52:ADD R7  R0 + R4 56:ADD R8  R1 + R7

34 31 July 2015IS1200 Datorteknik, förel 1034 med 5 stegs PIPE-LINE 44: ADD... 48: ADD... 44:ADD R1  R2 + R3 48:ADD R9  R5 + R6 52:ADD R7  R0 + R4 56:ADD R8  R1 + R7 52: ADD... R9 skrivs till RegFile R1 och R7 läses från RegFile R1 skrivs till RegFile FIFOEXEWB MEM FIFOEXEWB MEM FIFOEXEWB MEM FIFOEXEWB MEM R7 skrivs till RegFile 56: ADD...

35 31 July 2015IS1200 Datorteknik, förel 1035 Data Dependencies med 5 stegs PIPE-LINE  Skrivning till register sker i WB-steget  Läsning från register sker i FO-steget  Skrivning måste ske innan läsning  WB-steg måste ligga före FO-steg  Genom att placera 3 NOP:ar eller 3 ”oberoende” instruktioner mellan WB och FO kan man lösa RAW-konflikten

36 31 July 2015IS1200 Datorteknik, förel 1036 44: 48: 44:ADD R1  R2 + R3 48:ADD R9  R5 + R6 52:ADD R7  R0 + R4 NOP ADD R8  R1 + R7 52: R4 skrivs till RegFile R1 och R7 läses från RegFile R1 skrivs till RegFile FIFOEXEWB MEM FIFOEXEWB MEM FIFOEXEWB MEM FIFOEXEWB MEM R7 skrivs till RegFile 68: ADD... FIFOEXEWB MEM FIFOEXEWB MEM FIFOEXEWB MEM NOP

37 31 July 2015IS1200 Datorteknik, förel 1037 inför nya data-vägar Register File 32 x 32 Program Memory n x 16 ALU PC ADD IR0 IR1 IR2 IR3 +2 Register File 32 x 32 RWM NYTT

38 31 July 2015IS1200 Datorteknik, förel 1038 Fenomen pga PIPE-LINE 3. Load Delay LOAD reg FIFOALUWB MEM USE reg Tillgängligt från minne FIFOALUWB MEM Skriv till ALU-reg (Gammalt registervärde)

39 31 July 2015IS1200 Datorteknik, förel 1039 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

40 31 July 2015IS1200 Datorteknik, förel 1040 2. Block Data Transfer - BDT  Kopiera ett antal ord, ett Block (t.ex. 1024x8)  från minne till minne [memcpy(dst,src,num)]  från I/O till minne  från minne till I/O  från I/O till I/O Typexempel mellan MM och SS dvs Main Memory och Secondary Storage dvs mellan ”hårddisk och RAM-minne”

41 31 July 2015IS1200 Datorteknik, förel 1041 BDT: minne till minne MEM SrcAddr NrOfTransfers DstAddr Det behövs 2 adresspekare Käll-adress och Destinations-adress Det behövs en räknare, antal kopieringar Var lagras pekare och räknare ? I register eller i minne! beroende på metod!

42 31 July 2015IS1200 Datorteknik, förel 1042 BDT: minne till minne CPU MEM BUS I/O

43 31 July 2015IS1200 Datorteknik, förel 1043 memcpy i C-kod (~ Bilting sid 250) void* memcpy (void* dst, const void* src, size_t nr) { char * dp = (char*) dst; /* type cast from void */ char * sp = (char*) src; /* type cast from void */ register int i; for (i=0; i<nr, i=i+1) { *dp = *sp; /* copy */ dp=dp+1; sp += 1; /* update pointers */ } }

44 31 July 2015IS1200 Datorteknik, förel 1044 BDT: minne till I/O BDT: I/O till minne CPU MEM BUS I/O

45 31 July 2015IS1200 Datorteknik, förel 1045 BDT: I/O till I/O CPU BUS I/O

46 31 July 2015IS1200 Datorteknik, förel 1046 BDT - Block Data Transfers Block Data Transfer utförs i tre olika del-moment  Initiera: pekare och räknare, mm  Kopiera: en enhet i taget (byte/word)  Avsluta: bokföring (i OS) att block är kopierat (OS = Operativ Systemet)

47 31 July 2015IS1200 Datorteknik, förel 1047 BDT - Block Data Transfers Block Data Transfer kan utföras med tre olika metoder 1. Program-styrd Block Data Transfer 2. Avbrotts-styrd Block Data Transfer 3. DMA-styrd Block Data Transfer (DMA - Direct Memory Access)

48 31 July 2015IS1200 Datorteknik, förel 1048 1. Program-styrd BDT source to destination  Programstruktur initiera pekare och räknare loop:kopiera en enhet (byte/word) br loop om ej klart avsluta

49 31 July 2015IS1200 Datorteknik, förel 1049 1. Programstyrd BDT source to destination # Initiera inför programmerad BDT # pekare och räknare i ”vanliga” CPU-register moviar8, SrcAddr moviar9, DstAddr moviar10, NrOfTransfers

50 31 July 2015IS1200 Datorteknik, förel 1050 1. Program-styrd BDT Memory to Memory # Kopiera i programslinga.equwordsize, 4 bler10, r0, out# ”empty” loop:ldwr11, 0(r8)# läs data stwr11, 0(r9)# skriv data addir8, r8, wordsize# öka läsadress addir9, r9, wordsize# öka skrivadress subir10, r10, 1# minska räknare bgtr10, r0, loop# hoppa om ej klart out:bravsluta# hopp till OS

51 31 July 2015IS1200 Datorteknik, förel 1051 1. Program-styrd BDT I/O to Memory Antag att I/O-porten är en ”vanlig” inport med en signal av typen IBF - Input Buffer Full IBF ettställs varje gång det finns nya data att läsa från inporten

52 31 July 2015IS1200 Datorteknik, förel 1052 IN-port RD IN-PORT IBFWRIN-DATA RD IBF Adress Data Control CPU-BUSS IN 0 IN n............ DnDn D0D0 IN 1 D1D1 Q Q’ set clear IBF WR RD vippa grindar &&&......

53 31 July 2015IS1200 Datorteknik, förel 1053 BDT: I/O till minne CPU MEM I/O SrcAddr DstAddr NrOfTransfers

54 31 July 2015IS1200 Datorteknik, förel 1054 Block Data Transfer I/O to Memory # Kopiera i programslinga (nästan likadan).equwordsize, 4 loop:callgetdata# blocking on IBF stwr2, 0(r9)# skriv data #addir8, r8, wordsize# öka ej läsadress addir9, r9, wordsize# öka skrivadress subir10, r10, 1# minska räknare bgtr10, r0, loop# hoppa om ej klart bravsluta# hopp till OS

55 31 July 2015IS1200 Datorteknik, förel 1055 1. Program-styrd BDT Memory to I/O Antag att I/O-porten är en ”vanlig” utport med en signal av typen OBE - Output Buffer Empty OBE ettställs varje gång det går att skriva till utporten

56 31 July 2015IS1200 Datorteknik, förel 1056 Block Data Transfer Memory to I/O # Kopiera i programslinga (nästan likadan).equwordsize, 4 loop:ldwr4, 0(r8)# läs data callputdata# blocking on OBE addir8, r8, wordsize# öka läsadress #addir9, r9, wordsize# öka ej skrivadress subir10, r10, 1# minska räknare bgtr10, r0, loop# hoppa om ej klart bravsluta# hopp till OS

57 31 July 2015IS1200 Datorteknik, förel 1057 Block Data Transfer I/O to I/O # Kopiera i programslinga (nästan likadan).equwordsize, 4 loop:callgetdata# blocking on IBF movr4, r2# flytta parameter callputdata# blocking on OBE # addir8, r8, wordsize# öka ej läsadress #addir9,r9, wordsize# öka ej skrivadress subir10, r10, 1# minska räknare bgtr10, r0, loop# hoppa om ej klart bravsluta# hopp till OS

58 31 July 2015IS1200 Datorteknik, förel 1058 2. Avbrotts-styrd BDT I/O to Memory Typ-exempel: Kopiera från hårddisk till ram-minne Antag att hårddisken levererar data via en ”vanlig” inport med en signal IBF IBF ettställs varje gång det finns nya data IBF genererar avbrottsbegäran, IRQ

59 31 July 2015IS1200 Datorteknik, förel 1059 2. Avbrotts-styrd Block Data Transfer source to destination # Initiera inför avbrotts-styrd BDT # pekare och räknare kan inte lagras i ”vanliga” CPU-register utan måste lagras i minnet. moviar8, SrcAddr# måste ändras moviar9, DstAddr# måste ändras moviar10, NrOfTransfers# måste ändras

60 31 July 2015IS1200 Datorteknik, förel 1060 BDT: I/O till minne med avbrott (IBF ger IRQ) CPU MEM I/O SrcAddr DstAddr NrOfTransfers IBF=IRQ

61 31 July 2015IS1200 Datorteknik, förel 1061 2. Avbrotts-styrd BDT I/O to Memory Initiera inför avbrotts-styrd BDT # storei Addr, Imm är ett macro som skriver värdet Imm till minnet på adress Addr  storeiSrcAddrPoint, SrcAddrValue  storeiDstAddrPoint, DstAddrValue  storeiNrOfTransf, NrOfTransfValue Det behövs alltså 3 reserverade platser i minnet Det går ej att använda register !? (varför?)

62 31 July 2015IS1200 Datorteknik, förel 1062 2. Avbrotts-styrd BDT I/O to Memory zProgramstruktur initiera: programsnutt i OS kopiera: Exceptionhandler, inth, anropas vid avbrott dvs då IBF = 1 inth:subi ea, ea, 4 kopiera en enhet# se nästa sida eret# retur från int avsluta:brOS-avsluta# hopp till OS

63 31 July 2015IS1200 Datorteknik, förel 1063 2. Avbrotts-styrd BDT I/O to Memory #kopiera en enhet# se denna sida inth: loadiar8, SrcAddrPoint# hämta läsadress loadia r9, DstAddrPoint# hämta skrivadress ldwr11, 0(r8)# läs data från INPORT stwr11, 0(r9)# skriv data till minne loadiar10, NrOfTranf# hämta räknare subir10, r10, 1# uppdatera räknare beqr10, r0, avsluta# hopp till OS # forts.

64 31 July 2015IS1200 Datorteknik, förel 1064 2. Avbrotts-styrd BDT I/O to Memory  Avbrottsrutin forts. #addir8, r8, wordsize# öka läsadress, nej ! addir9, r9, wordsize# öka skrivadress, ja ! # storiar8, SrcAddrPoint# skriv EJ tillbak läsadress storiar9, DstAddrPoint# skriv tillbaks skrivadress storiar10, NrOfTrans# skriv tillbaks räknare subi ea, ea, 4# om det inte är gjort eret# from interrupt

65 31 July 2015IS1200 Datorteknik, förel 1065 2. BDT: I/O till minne med avbrott (IBF ger IRQ) CPU MEM I/O SrcAddr DstAddr NrOfTransfers IBF=IRQ

66 31 July 2015IS1200 Datorteknik, förel 1066 3. BDT: I/O till minne med DMA (IBF ger DMARQ) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers DMARQ

67 31 July 2015IS1200 Datorteknik, förel 1067 Bus Arbiter krävs Bus Request / Bus Grant CPU MEM BUS I/O DMA Bus Arbiter BR BG

68 31 July 2015IS1200 Datorteknik, förel 1068 Bus-ledningar Om det finns fler än en Master krävs Bus Arbiter (bus-fördelare)  Signal (er) av typ Bus Request  Signal (er) av typ Bus Grant

69 31 July 2015IS1200 Datorteknik, förel 1069 DMA - Direct Memory Address  DMARQ - DMA ReQuest (ny signal)  Source Address Register  Destination Address Register  Byte/Word Count Register  Control Register  Block Size: Byte Count or End Of Block

70 31 July 2015IS1200 Datorteknik, förel 1070 3. BDT: I/O till minne med DMA (IBF ger DMARQ) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers DMARQ

71 31 July 2015IS1200 Datorteknik, förel 1071 3. DMA-styrd BDT I/O to Memory zProgramstruktur initiera... DMA:kopiera en enhet avsluta: Meddela att det är klart ? Hur? Vart?

72 31 July 2015IS1200 Datorteknik, förel 1072 Block Data Transfer I/O to Memory # Initiera inför DMA-styrd BDT # DmaSrc, -Dst, -Nr och -Ctl är memory-mapped register i DMA storeiDmaSrc, SrcAddrVal storeiDmaDst, DstAddrVal storeiDmaNr, NrOfTransfers storeiDmaCtl, DirandSize

73 31 July 2015IS1200 Datorteknik, förel 1073 DMA - Direct Memory Address Operativsystemets åtgärder för att genomföra BDT med DMA Initiera: register i DMA och starta DMA Kopiera: sköts av DMA ”i bakgrunden” med ”cycle stealing på bussen” Avsluta: Avbrott från DMA leder till br avsluta# hopp till OS Bokför att BDT är fullföljd, ”stäng DMA”

74 31 July 2015IS1200 Datorteknik, förel 1074 BDT - Block Data Transfers Block Data Transfer kan utföras med tre olika metoder 1. Program-styrd Block Data Transfer upptar 100% av CPU-tid (sämst metod) 2. Avbrotts-styrd Block Data Transfer upptar < 100% av CPU-tid (bättre) 3. DMA-styrd Block Data Transfer upptar << 100% av CPU-tid (bäst)

75 31 July 2015IS1200 Datorteknik, förel 1075 1. BDT: I/O till minne med program (pollning av IBF) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers

76 31 July 2015IS1200 Datorteknik, förel 1076 2. BDT: I/O till minne med avbrott (IBF ger IRQ) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers IRQ

77 31 July 2015IS1200 Datorteknik, förel 1077 3. BDT: I/O till minne med DMA (IBF ger DMARQ) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers DMARQ

78 31 July 2015IS1200 Datorteknik, förel 1078 IS1200 Datorteknik allmän kurs Föreläsning 10 byte-code i JAVA metoden ”tick”

79 31 July 2015IS1200 Datorteknik, förel 1079 Något om Java  Editering av textfil, fil.java  Kompilering till Byte-code, fil.class  Interpretering av Byte-code med  JVM - Java Virtual Machine

80 31 July 2015IS1200 Datorteknik, förel 1080 Programutveckling Assembler-kod Ass-program Text-fil Object-modul ”Text-fil” Ass-program Text-fil Object-modul ”Text-fil” Ladd-modul ”Text-fil” Ass-program Text-fil Object-modul ”Text-fil” Ass-program Text-fil Object-modul ”Text-fil”

81 31 July 2015IS1200 Datorteknik, förel 1081 Assemblering; översätter Nios-kod till Assembler-kod Nios-program Text-fil Ladd-modul assemblering / översättning och länkning fil.asm, kan redigeras med en editor fil.objdump kan ej redigeras med en editor kan laddas ner till datorn minne

82 31 July 2015IS1200 Datorteknik, förel 1082 Programexekvering Nios-kod (Intel, …) FETCH (update PC) (decode) EXECUTE Hårdvara

83 31 July 2015IS1200 Datorteknik, förel 1083 C++ program Text-fil Ass-program Text-fil Object-modul ”Text-fil” C-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” Ladd-modul ”Text-fil” Ass-program Text-fil Object-modul ”Text-fil” Pascal-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” BLANDAD KOD

84 31 July 2015IS1200 Datorteknik, förel 1084 Ass-program Text-fil Object-modul ”Text-fil” C-program Text-fil Ass-program Text-fil Object-modul ”Text-fil” Ladd-modul ”Text-fil” Ass-program Text-fil Object-modul ”Text-fil” Ass-program Text-fil Object-modul ”Text-fil” BLANDAD KOD JAVA-program Text-fil C++ program Text-fil

85 31 July 2015IS1200 Datorteknik, förel 1085 Alt1: Kompilering; översätter java-kod till Assembler-kod java-program Text-fil Nios-code kompilering / översättning fil.java, kan redigeras med en editor fil.objdump, kan ej redigeras med en editor kan laddas ner till datorns minne

86 31 July 2015IS1200 Datorteknik, förel 1086 Alt2: Kompilering; översätter java-kod till byte-kod java-program Text-fil Byte-code kompilering / översättning fil.java, kan redigeras med en editor fil.class, kan ej redigeras med en editor kan laddas ner till datorn minne

87 31 July 2015IS1200 Datorteknik, förel 1087 Programexekvering byte-kod (Intel, …) FETCH (update PC) (decode) EXECUTE Mjukvara JVM - Java Virtual Machine

88 31 July 2015IS1200 Datorteknik, förel 1088 Java Virtual Machine interpreterar byte-code do { fetch an opcode; if (operands) fetch operands; execute the action for the opcode } while (there is more to do);

89 31 July 2015IS1200 Datorteknik, förel 1089 Fetch - Decode - Execute ADD ?LD ?AND ?BR ? Exec ADD Exec LD Exec AND Exec BR JA NEJ... ILLEGAL JA Fetch Update PC

90 31 July 2015IS1200 Datorteknik, förel 1090 Java Virtual Machine interpreterar byte-code Interpretering Plattforms-oberoende Byte-code flyttbar JVM Java Virtual Machine Plattforms-beroende

91 31 July 2015IS1200 Datorteknik, förel 1091 Interpretering  Fetch och Execute görs med programvara  Java har översatts till Byte-Code  Byte-Code är en ”följd av instruktioner”  Varje processor (Nios, MIPS, x86) har en egen JVM (som exekveras i maskinkod)  JVM kan skrivas i C (eller pascal eller java) och kompileras/assembleras till Nios/MIPS

92 31 July 2015IS1200 Datorteknik, förel 1092 Programexempel, ass-code C-koden zC = A + B ; översätts till hex-code (”nios-assembler”) zLOADR1 <-- A zLOADR2 <-- B zADDR3 <-- R1 + R2 zSTOREC <-- R3

93 31 July 2015IS1200 Datorteknik, förel 1093 Programexempel, byte-code Java-koden zC = A + B ; översätts till byte-code (”java-assembler”) zPUSHA;kopiera från minne till stack zPUSHB;kopiera från minne till stack zADD;”operera på stacken” zPOPC;kopiera från stack till minne

94 31 July 2015IS1200 Datorteknik, förel 1094 Operera på stack Addition av heltal ADDera de två översta int på stacken zPOP till ALU-A zPOP till ALU-B zaddera från ALU-A och ALU-B till tmp-reg zPUSH från tmp-reg

95 31 July 2015IS1200 Datorteknik, förel 1095 Java-program steg vid program-arbete  Skriv källkod i JAVA, plattforms-oberoende och flyttbart  kompilera till byte-code, plattforms- oberoende och flyttbart  Interpretera byte-code med JVM  JVM = Java Virtual Machine, plattforms-beroende

96 31 July 2015IS1200 Datorteknik, förel 1096 funktionen tick i java-kod (obs parameter ej pekare utan värde) Class Tick { public int tick (int time) {time = time + 1; if ((time & 0x000F) == 0x000A) time = time - 0x000A + 0x0010; if ((time & 0x00F0) == 0x0060) time = time - 0x0060 + 0x0100; if ((time & 0x0F00) == 0x0A00) time = time - 0x0A00 + 0x1000; if ((time & 0xF000) == 0x6000) time = 0x0000; return time; } }

97 31 July 2015IS1200 Datorteknik, förel 1097 funktionen tick i byte-kod ;Här kommer den metod som kan anropas utifrån. ;vid anrop finns in-parameter i indexerat fält av local variables och med index 1 Method int tick(int) ;time = time + 1; 00x15iload_1;push int from 1(ireg) - time 10x04iconst_1;push #1 20x60iadd;int add: pop-pop-add-push 30x3cistore_1;pop to 1(ireg) - time forts.

98 31 July 2015IS1200 Datorteknik, förel 1098 funktionen tick i byte-kod forts.;if ((time & 0x000F) == 0x000A) time = time - 0x000A + 0x0010; 4iload_1;push int from 1(ireg) - time 5bipush 15;push #15 (2-byte-instr) 7iand;int and: pop pop and push 8bipush 10;push #10 10if_cmpne 21;conditional branch 13iload_1;push int from 1(ireg) - time 14bipush 10;push #10 16isub;int sub: pop pop sub push 17bipush 16;push #16 19iadd;int add: pop pop add push 20istore_1;pop int to 1(reg) - time 21...

99 31 July 2015IS1200 Datorteknik, förel 1099 funktionen tick i byte-kod forts.;if ((time & 0x000F) == 0x000A) time = time - 0x000A + 0x0010; 40x15iload_1;push int from 1(ireg) 50x10bipush 15;push #15 (2-byte-instr) 60x0f;value 15=0x0f 70x7eiand;int and: pop pop and push 80x10bipush 10;push #10 90x0a;value 10=0x0a 100xa0if_cmpne 21;conditional branch 110xkl;10 + 0xklmn = 21 maybe 120xmn;address other byte ??? 130x15iload_1;push int from 1(ireg) 140x10bipush 10;push #10 160x64isub;int sub: pop pop sub push 170x10bipush 16;push #16 180x10;value 16=0x10 190x60iadd;int add: pop pop add push 200x3cistore_1;pop int to 1(reg)

100 31 July 2015IS1200 Datorteknik, förel 10100 funktionen tick i byte-kod forts.;if ((time & 0xF000) == 0x6000) time = 0x0000; 61iload_1;push int from 1(ireg) 62ldc #2 ;(2-byte-instr) 64iand;int and: pop pop and push 65sipush 24576;push #24576 (3-byte-instr) 68if_cmpne 73;conditional branch 71iconst_1;push #1 72istore_1;pop int to 1(reg) 73iload_1;returparameter till stack 74ireturn;retur med int på stack

101 31 July 2015IS1200 Datorteknik, förel 10101 Mer om java JVM och byte-code http://java.sun.com/docs/vmspec/2nd-edition/html

102 31 July 2015IS1200 Datorteknik, förel 10102 IS1200 Datorteknik allmän kurs Föreläsning 10 Repetition Sammanfattning Lite till

103 31 July 2015IS1200 Datorteknik, förel 10103 IS1200 Dator- teknik ak IS1200 Datorteknik Digitala kretsar Data- logi 2G1510 Dator- teknik fk 2G1511 Dator- arkitektur 2G1316 Datorkomm. och datornät 2G1520 Operativ- system 2G1533 Compilers... 2G1915 Concurrent Programming 2B1446 Embedded Systems 2B1463 Embedded Software 2B1448 System-on-Chip Architectures

104 31 July 2015IS1200 Datorteknik, förel 10104 IS1200 Datorteknik Datorns funktion på olika nivåer från JAVA/C-kod till NAND-grind zProgramexempel: sum = 0 ; for (i=1; i<1=7; i=i+1) sum = sum + i; zExempel på digitala komponenter:

105 31 July 2015IS1200 Datorteknik, förel 10105 Hur datorer fungerar Detta har ni lärt er !  Kopplingen mellan  Program i C-kod (pascal, java, …)  Program i Assembler (Nios, MIPS, …)  Maskinkod (binärkod, hexkod)  Exekvering av program i binärkod - i CPU med PIPE-LINE  CPU byggs av logiska kretsar och minnen

106 31 July 2015IS1200 Datorteknik, förel 10106 Hur datorer fungerar Dessutom har ni lärt er !  Cache-minne orsak till införsel funktion, parametrar prestandavinster med cache  Fördelning av processortid görs av OS  Samverkan mellan processer synkronisering, ömsesidig uteslutning

107 31 July 2015IS1200 Datorteknik, förel 10107 Hur datorer fungerar slutligen har ni lärt er ! För Block Data Transfer, BDT gäller att zDMA - Direct Memory Access är bättre än zAvbrottstyrd BDT som är bättre än zProgramstyrd BDT

108 31 July 2015IS1200 Datorteknik, förel 10108 Tentamen innehåller 1.Maskinaritmetik med mera 2.Assemblerprogrammering,subrutiner 3.Assemblerprogrammering pollning/avbrott 4.Cache-minnen 5.Processorkonstruktion 6.CPU scheduling och semaforer

109 31 July 2015IS1200 Datorteknik, förel 10109 IS1200 Datorteknik... nu vet ni... ”Hur datorer fungerar” http://www.ict.kth.se/courses/IS1200

110 31 July 2015IS1200 Datorteknik, förel 10110 Välkommen till andra kurser – några exempel yDatorsystemarkitektur yCompilers and Execution Environments yOperating Systems yConcurrent Programming yNetwork Programming with Java yEmbedded Systems ySystem-on-Chip Architectures yEmbedded Software

111 31 July 2015IS1200 Datorteknik, förel 10111 Embedded Systems Embedded systems are an integral part of daily life Embedded systems must meet versatile requirements high performance, low power, safety-critical and low cost Follow-Up Courses: System-on-Chip Architectures Embedded Software Hearing Aid Mobile Phone Airbag Control Course webpage: www.ict.kth.se/courses/IL2206 Contact: Ingo Sander (ingo@kth.se) Microcontroller and DSP processor as central components Design for performance and low power Introduction to Real-Time Operating Systems Laboratories supporting the theory

112 31 July 2015IS1200 Datorteknik, förel 10112 Datorsystemarkitektur ● Konsten att få CPUn snabb ● Hårdvara som kör flera instruktioner per klockcykel ● Flera CPUer på ett chipp ● Kompilatorteknik för att utnyttja hårdvaran väl

113 31 July 2015113 IS1200 Datorteknik Tentamen Ons 29 maj kl 08.00—13.00 KTH Kista: salar 438, 539 och 540. (anmälan via Daisy) LYCKA TILL ! IS1200 Datorteknik, förel 10

114 Viktiga delar i en dator CPU MEM BUS I/O program data 31 July 2015114 I$ D$D$ 31 July 2015114IS1200 Datorteknik, förel 10

115 Level 1 cache – L1$ CPU 31 July 2015115 I$ D$D$ MEM program data L1 – Level 1 Cache 31 July 2015115IS1200 Datorteknik, förel 10

116 CPU 31 July 2015116 IS1200 Datorteknik föreläsning CE – F2 I$ D$D$ MEM program data L1 – Level 1 Cache L2 cache L2 – Level 2 Cache Register File 4 Gbyte 2 Mbyte 2 * 32 Kbyte 32 x 4 byte 31 July 2015116IS1200 Datorteknik, förel 10

117 CPU 31 July 2015117 IS1200 Datorteknik föreläsning CE – F2 I$ D$D$ MEM program data L1 – Level 1 Cache L2 cache L2 – Level 2 Cache L3 cache L3 – Level 3 Cache Register File 4 Gbyte 256 Kbyte 2 * 32 Kbyte 32 x 4 byte 6 Mbyte 31 July 2015IS1200 Datorteknik, förel 10117

118 31 July 2015118 Dual-core / Multi-core / Many-core CPU MEM BUS I/O CPU... 31 July 2015IS1200 Datorteknik, förel 10118

119 31 July 2015119 Dual-core / Multi-core / Many-core Cache Coherence MEM BUS I/O CPU... L3$ L2$ L1-I$L1-D$ CPU L3$ L2$ L1-I$L1-D$ 31 July 2015119IS1200 Datorteknik, förel 10


Ladda ner ppt "31 July 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning 10 1. Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA."

Liknande presentationer


Google-annonser