1 / 113

IS1200 Datorteknik Föreläsning 10

IS1200 Datorteknik Föreläsning 10. 1. Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA. 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.

golda
Download Presentation

IS1200 Datorteknik Föreläsning 10

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 10 1. Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA IS1200 Datorteknik, förel 10

  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, förel 10

  3. Viktiga delar i en dator CPU BUS program I/O MEM data IS1200 Datorteknik, förel 10

  4. (decode) EXECUTE Programexekvering FETCH (update PC) IS1200 Datorteknik, förel 10

  5. 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 IS1200 Datorteknik, förel 10

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

  7. IR0 IR1 IR2 Pipeline med register och kombinatorik REGISTER KOMBINATORIK ADD PC REGISTER +2 KOMBINATORIK ALU REGISTER IS1200 Datorteknik, förel 10

  8. EXE FI WB FO 4 stegs CPUKonsekvent synkronism Leta fram instruktion ur I-cache Avkoda samt Leta fram operander ALU arbetar / D-Cache arbetar Förbered skrivning till Register File clock Skriv resultat till Register File Skrivning till tmp-reg Skriv oprander till ALU-register Skrivning till Instruction Register Skrivning till Program Counter IS1200 Datorteknik, förel 10

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

  10. EXE EXE EXE EXE EXE EXE FI FI FI FI FI FI WB WB WB WB WB WB FO FO FO FO FO FO 4 stegs CPU utan och med PIPE-LINE Utan PIPE-LINE Med PIPE-LINE IS1200 Datorteknik, förel 10

  11. EXE EXE EXE FI FI FI WB WB WB FO FO FO 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 IS1200 Datorteknik, förel 10

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

  13. Fenomen pga PIPE-LINE1.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 ... IS1200 Datorteknik, förel 10

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

  15. Hur undviks Branch Delay SlotHur utnyttjas Branch Delay Slot Olika metoder: • Fyll ut med 1 NOP (onyttig) • Skriv en (nyttig) instruktion i hoppluckan • Kompilator/Programmerare väljer • Låt hårdvaran specialbehandla hopp(hoppgissning / invalidate / ...) IS1200 Datorteknik, förel 10

  16. Fenomen pga PIPE-LINE2. 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 IS1200 Datorteknik, förel 10

  17. EXE EXE EXE FI FI FI WB WB WB FO FO FO Data Dependenciesmed 4 stegs PIPE-LINE 44: ADD R1 <- R2 + R3 48: ADD R4 <- R5 + R6 52: ADD R7 <- R1 + R4 R4 skrivs till RegFile R1 skrivs till RegFile 44: ADD ... 48: ADD ... 52: ADD ... Gamla värden R1 och R4 läses från RegFile IS1200 Datorteknik, förel 10

  18. RAW Dependencymed 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 IS1200 Datorteknik, förel 10

  19. EXE EXE EXE EXE EXE FI FI FI FI FI WB WB WB WB WB FO FO FO FO FO 44: ADD R1 <- R2 + R348: ADD R4 <- R5 + R6 NOP NOP60: ADD R7 <- R1 + R4 R4 skrivs till RegFile R1 skrivs till RegFile 44: ADD ... 48: ADD ... NOP NOP 60: ADD ... Nya värden i R1 och R4 läses från RegFile IS1200 Datorteknik, förel 10

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

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

  22. EXE EXE EXE FI FI FI WB WB WB FO FO FO Data Dependenciesmed 4 stegs PIPE-LINE 44: ADD R1 <- R2 + R3 48: ADD R4 <- R5 + R6 52: ADD R7 <- R1 + R4 R4 skrivs till RegFile R1 skrivs till RegFile 44: ADD ... 48: ADD ... 52: ADD ... Ny värden R1 och R4 läses via nya datavägar IS1200 Datorteknik, förel 10

  23. LOAD och STORE • Vi vill kunna utföra instruktionerna LOAD Rdst, [ Raddr ] STORE [ Raddr ], Rsrc • Indirekt adressering via register IS1200 Datorteknik, förel 10

  24. WB Instruction Decode Fetch Operand Instruction Fetch IR0 IR1 ALU/EXE IR2 Program Memory n x 16 4 stegs PIPE-LINEdataminne (data cache) Register File 32 x 32 PC+n PC+Imm ADD RWM ALU Register File 32 x 32 IS1200 Datorteknik, förel 10

  25. EXE FI FI WB WB MEM FO FO LOAD och STOREmed 4 stegs PIPE-LINE Data från MEM finns tillgängligt LOAD to Rd USE Rd Data från MEM finns ej tillgängligt för FO IS1200 Datorteknik, förel 10

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

  27. EXE FI FI WB WB MEM FO FO LOAD och STOREmed 4 stegs PIPE-LINE Data från MEM finns tillgängligt LOAD to Rd USE Rd Data från MEM finns tillgängligt för FO tack vare Data Forward IS1200 Datorteknik, förel 10

  28. LOAD och STORE • Vi vill kunna utföra instruktionerna LOAD Rdst, Offset[ Raddr ] STORE Offset[ Raddr ], Rsrc • Indexerad adressering IS1200 Datorteknik, förel 10

  29. WB Instruction Decode Fetch Operand Instruction Fetch IR0 IR1 ALU/EXE/MEM IR2 Program Memory n x 16 4 stegs PIPE-LINEdataminne (data cache) Register File 32 x 32 PC+n PC+Imm ADD RWM ALU Register File 32 x 32 IS1200 Datorteknik, förel 10

  30. Instruction Decode Fetch Operand MEM Instruction Fetch Write Back ALU/EXE Program Memory n x 16 Register File 32 x 32 CPU med 5 stegs PIPE-LINE Register File 32 x 32 IR0 PC+n PC+Imm ADD IR1 PC ALU IR2 RWM NYTT IR3 IS1200 Datorteknik, förel 10

  31. ALU EXE ALU FI FI FI WB WB WB FO ID FO MEM MEM MEM Processor med 5 stegs PIPE-LINE LOAD ADD Hur lång tid tar varje instruktion, 5 cycles Cykles Per Instruction, CPI, 1 cycle Antal instruktioner per cykel, 1 instruktion Jämför med Figur 7.12 i kursboken, sid 255 IS1200 Datorteknik, förel 10

  32. ALU ALU FI FI WB WB FO FO MEM MEM LOAD och STOREmed 5 stegs PIPE-LINE Data från MEM finns tillgängligt LOAD to Rd USE Rd Data från MEM finns ej tillgängligt för FO IS1200 Datorteknik, förel 10

  33. Fenomen pga PIPE-LINE2. 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 IS1200 Datorteknik, förel 10

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

  35. Data Dependenciesmed 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 IS1200 Datorteknik, förel 10

  36. EXE EXE EXE EXE EXE EXE EXE FI FI FI FI FI FI FI WB WB WB WB WB WB WB MEM MEM MEM MEM MEM MEM MEM FO FO FO FO FO FO FO 44: ADD R1  R2 + R348: ADD R9  R5 + R652: ADD R7 R0 + R4 NOP NOP NOP ADD R8  R1 + R7 R7 skrivs till RegFile R4 skrivs till RegFile R1 skrivs till RegFile 44: 48: 52: NOP NOP NOP 68: ADD ... R1 och R7 läses från RegFile IS1200 Datorteknik, förel 10

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

  38. ALU ALU FI FI WB WB FO FO Skriv till ALU-reg (Gammalt registervärde) MEM MEM Fenomen pga PIPE-LINE3. Load Delay Tillgängligt från minne LOAD reg USE reg IS1200 Datorteknik, förel 10

  39. ALU ALU ALU FI FI FI WB WB WB FO FO FO MEM MEM MEM Skriv till ALU-reg Data Forward fungerar Load Delay i 5-stegs pipe även vid Data Forward Tillgängligt från minne LOAD reg Oberoende instr. ADD reg IS1200 Datorteknik, förel 10

  40. 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” IS1200 Datorteknik, förel 10

  41. BDT: minne till minne SrcAddr DstAddr MEM NrOfTransfers 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! IS1200 Datorteknik, förel 10

  42. BDT: minne till minne CPU BUS I/O MEM IS1200 Datorteknik, förel 10

  43. 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 */ }} IS1200 Datorteknik, förel 10

  44. BDT: minne till I/O BDT: I/O till minne CPU BUS I/O MEM IS1200 Datorteknik, förel 10

  45. BDT: I/O till I/O CPU BUS I/O I/O IS1200 Datorteknik, förel 10

  46. 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) IS1200 Datorteknik, förel 10

  47. 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) IS1200 Datorteknik, förel 10

  48. 1. Program-styrd BDTsource to destination • Programstruktur initiera pekare och räknare loop: kopiera en enhet (byte/word) br loop om ej klart avsluta IS1200 Datorteknik, förel 10

  49. 1. Programstyrd BDT source to destination # Initiera inför programmerad BDT # pekare och räknare i ”vanliga” CPU-register movia r8, SrcAddr movia r9, DstAddr movia r10, NrOfTransfers IS1200 Datorteknik, förel 10

  50. 1. Program-styrd BDT Memory to Memory # Kopiera i programslinga .equ wordsize, 4 ble r10, r0, out # ”empty” loop: ldw r11, 0(r8) # läs data stw r11, 0(r9) # skriv data addi r8, r8, wordsize # öka läsadress addi r9, r9, wordsize # öka skrivadress subi r10, r10, 1 # minska räknare bgt r10, r0, loop # hoppa om ej klart out: br avsluta # hopp till OS IS1200 Datorteknik, förel 10

More Related