Presentation laddar. Vänta.

Presentation laddar. Vänta.

31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F61 IS1500 Datorteknik och komponenter Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd.

Liknande presentationer


En presentation över ämnet: "31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F61 IS1500 Datorteknik och komponenter Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd."— Presentationens avskrift:

1 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F61 IS1500 Datorteknik och komponenter Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd pollning DMA – Direct Memory Access

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

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

4 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F64 Föreläsning 6 Innehåll, rubriker  Bus Data Transfer, read/write  I/O-enheter, adressering  Parallellport, funktion, pollning  Serieport, funktion, pollning  Timer, funktion, pollning  Eko-program, Kommunikations-program  Paritetskontroll  Disk Storage, Flash Storage  DMA – Direct Memory Access

5 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F65 Litteraturhänvisningar  Exempelsamlig del 5 och 6  Lab-PM för Nios2io  Kursboken Chap 61—6.6  6.1 Introduction  6.2 Dependability, Reliability, and Availability  6.3 Disk Storage  6.4 Flash Storage  6.5 Connecting...  6.6 Interfacing...  6.7 – 6.15 är läsvärt men överkurs än så länge

6 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F66 Programexekvering i två steg EXECUTE FETCH (update PC) (decode)

7 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F67 Viktiga delar i en dator CPU MEM BUS I/O program data

8 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F68 Bus Data Transfer viktiga aspekter MASTER SLAVE BUS MEMORY CPU

9 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F69 Bus Data Transfer Memory Read  Master - till exempel CPU  Slave - till exempel Memory  Master levererar Adress (t.ex. PC-value)  Master ger läsbegäran (Read Request)  Slave levererar Data (Instruction)  Slave levererar kvittens (Acknowledge) (exempel Fetch Instruction och LOAD)

10 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F610 Bus Data Transfer Memory Read Address Read Vad händer om (Rd) Ack uteblir ? 1 2 Data (Rd) Ack 3 4

11 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F611 Bus Data Transfer Memory Write  Master - till exempel CPU  Slave - till exempel Memory  Master levererar Adress  Master levererar Data  Master ger skrivbegäran (Write Request)  Slave levererar kvittens (Acknowledge) (exempel STORE)

12 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F612 Bus Data Transfer Memory Write Address Write Vad händer om (Wr) Ack uteblir ? 2 Data (Wr) Ack 35 6 1 1 4

13 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F613 Bus Data Transfer Asynchronous Memory Read Address Read Data (Rd) Ack Asynkront ”any time” ”ingen klocka”

14 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F614 Bus Data Transfer Synchronous Memory Read Address Read Data (Rd) Ack clock address memory data transfer read transfer Synkront ”exactly on time” ”klocka”

15 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F615 Asynkron / synkron buss ¸Asynkron ¸klarar enheter med olika hastigheter ¸bra för långsamma och olika enheter (I/O) ¸Synkron ¸kan ge högre hastighet ¸kan överföra adress och data separat, och utnyttja tiden mellan dem till annat (split- transaction bus) ¸bra för snabba, likadana enheter (minne)

16 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F616 Flera SLAVE fungerar bra på olika adresser ! MASTER BUS SLAVE ?? Adress-avkodare

17 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F617 Flera minnen på olika adresser ! CPU MEM BUS MEM Adress dittenAdress datten ?? Adress-avkodare

18 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F618 Flera Slave på olika adresser ! CPU MEM BUS I/O Adress dittenAdress datten ?? Adress-avkodare

19 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F619 Flera Master fungerar, en Arbiter behövs för att välja mellan dem Master MEM BUS I/O Adress dittenAdress datten ?? Adress-avkodare Master Arbiter

20 31 March 2015IS1200 Datorteknik, föreläsning 620 DUAL-CORE MULTI-CORE / MANY-CORE CPU MEM BUS I/O Adress dittenAdress datten ?? Adress-avkodare CPU 31 March 201520 IS1500 Datorteknik o k, föreläsning CE - F6...

21 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F621 Bussledningar  Adressledningar 8-64 stycken, för att kunna peka ut varje byte  Dataledningar minst 8 bitar, upp till 128 bitar eller mer  Kontrolledningar Read + Write, eller RD/WR och DS Ack, kan vara gemensam Bus Request, Bus Grant – vid flera Masters IRQi - Interrupt ReQuest, en eller många  Övrigt Gnd, Vcc, Clock, Reset, ev. flera

22 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F622 Bussledningar (forts.)  Långsam Slave kan bromsa läsning/skrivning  fördröj Acknowledge, eller  inför speciell Hold-signal  Tidövervakning, Time-Out  om Acknowledge aldrig kommer  Bus Error – ingen Acknowledge kom

23 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F623 Bussledningar (forts.)  Om det finns fler än en Master krävs Bus Arbiter (bus-fördelare)  Varje Slave måste ha adressavkodare så att högst en enhet svarar på request  Referens av oanvänd adress medför... ... Time-Out eftersom ingen enhet ger Acknowledge

24 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F624 Bus Data Transfer Bus Error MASTER SLAVE BUS Time-Out BusErrror

25 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F625 Två typer av adressering  Memory Mapped  Memory och I/O har olika adresser  Samma kontroll-signaler för minne och I/O  Vanliga Load och Store används för I/O  I/O Mapped  Memory och I/O kan ha samma adresser  Olika kontroll-signaler för minne och I/O  Speciella instruktioner används för I/O  IN R1,117  OUT R2,118

26 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F626 Parallell-port  Parallellport brukar ha en multipel av 8 signaler/anslutningar  Signalriktning kan vara programmerbar separat för varje signal/pinne  Inport består normalt av grindar  Utport består normalt av register  Handskakningssignaler kan finnas

27 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F627 IN-port utan handskakning...... EN IN-PORT IN-DATA EN/RD Adress Data Control CPU-BUSS IN 0 IN n............ DnDn D0D0 IN 1 D1D1 grindar Bus drivkrets

28 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F628 IN-port med handskakning IN-PORT IBFWRIN-DATA EN/RD IBF Adress Data Control CPU-BUSS Q Q’ set clear IBF WR RD vippa grindar...... EN IN 0 IN n............ DnDn D0D0 IN 1 D1D1 Bus drivkrets

29 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F629 UT-port utan handskakning UT-PORT UT-DATA WR Adress Data Control CPU-BUSS Q Q’ D cl Q Q’ D cl Q Q’ D cl............ DnDn D0D0 D1D1 UT 0 UT n...... UT 1 WR register (vippor)

30 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F630 UT-port med handskakning UT-PORT OBERDUT-DATA WR OBE Adress Data Control CPU-BUSS Q Q’ D cl Q Q’ D cl Q Q’ D cl............ DnDn D0D0 D1D1 UT 0 UT n...... UT 1 WR Q Q’ set clear OBE RD WR register (vippor) vippa

31 31 March 2015IS1200 Datorteknik, föreläsning 431 serieport parallellportar MEM ”CPU” DE2-board: komponenter USB Blaster Port 31 March 201531 IS1500 Datorteknik o k, föreläsning CE - F6

32 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F632 de2_pio_redled18 Memory Mapped Addresses 0x810 0x814 0x818 0x81C 31 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 LEDR3 LEDR2 LEDR1 LEDR0 Delar av Lab-kortet LEDR4 LEDR5 LEDR6 LEDR7 LEDR8 LEDR17 UtPort: 18 röda lysdioder

33 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F633 de2_pio_keys4 Memory Mapped Addresses 0x840 0x844 0x848 0x84C 31 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 KEY3 KEY2 KEY1 KEY0 InPort: 4 återfjädrande tryckomkopplare Delar av Lab-kortet

34 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F634 de2_pio_toggles18 Memory Mapped Addresses 0x850 0x854 0x858 0x85C 31 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 SW3 SW2 SW1 SW0 SW14 SW15 SW16 SW17 InPort: 18 skjutomkopplare Delar av Lab-kortet

35 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F635 de2_pio_greenled9 Memory Mapped Addresses 0xA10 0xA14 0xA18 0xA1C 31 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 LEDG3 LEDG2 LEDG1 LEDG0 LEDG4 LEDG5 LEDG6 LEDG7 LEDG8 Delar av Lab-kortet UtPort: 9 gröna lysdioder

36 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F636

37 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F637 Parallell-port Handskakningssignaler  IBF - Input Buffer Full  OBE - Outport Buffer Empty  IBF och OBE är tillgängliga för program  IBF och OBE är tillgängliga för hårdvara

38 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F638 Parallell-port (forts.) Handskakningssignaler  IBF - Input Buffer Full  OBE - Outport Buffer Empty  Aktiv signal IBF (full inport)  begäran om åtgärd, från omvärlden till CPU/program  betyder: “hallå där, nu finns nya indata”  Aktiv signal OBE (tom utport)  begäran om åtgärd, från omvärlden till CPU/program  betyder: “hallå där, leverera nya utdata”  (Klarsignal = Readysignal)

39 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F639 Parallell-port (forts.) Handskakningssignaler  IBF - Input Buffer Full  IBF ettställs normalt då omgivningen levererar nya data till inporten  IBF nollställs/kvitteras av program, t.ex. vid läsning av inport (implicit bieffekt) eller med egen instruktion (explicit)

40 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F640 Parallell-port (forts.) Handskakningssignaler  OBE, Output Buffer Empty  OBE ettställs normalt då omgivningen har tagit hand om utdata  OBE nollställs/kvitteras av program, t.ex. vid skrivning av utport (implicit bieffekt) eller med egen instruktion (explicit)

41 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F641 Minnesliknande beteende vid läsning och skrivning  Ett värde som skrivs till en viss adress kan sedan läsas från samma adress  Skrivning till en adress påverkar ej innehåll på andra adresser  Läsning från en adress påverkar ej innehåll på någon adress  Annat beteende vid minnesreferenser kallas för icke minnesliknade och bör undvikas

42 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F642 Handskakning med IBF/OBE Flödes-schema, invänta ready (blockerande I/O) PÅHOPP AVHOPP IBF=1? Nollställ IBF LÄS INDATA LÄS IBF JA NEJ INHOPP UTHOPP OBE=1? Nollställ OBE SKRIV UTDATA LÄS OBE JA NEJ Wait for READY Action & Acknowledge !

43 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F643 Handskakning med IBF/OBE Flödes-schema, direkt retur (icke blockerande I/O) PÅHOPP AVHOPP IBF=1? Nollställ IBF PAR:= DATAIN LÄS IBF JA NEJ PAR:= -1PÅHOPP AVHOPP OBE=1? Nollställ OBE och PAR SKRIV DATAUT LÄS OBE JA NEJ PAR:= -1

44 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F644 getdata från Inport rutin med pollning av statusbit (blockerande I/O) #int get_data(void) definedatain 0x... definestatus 0x... defineibfmask 0x... get_data:loadreg1 <-- status andireg1 <-- ibfmask beqget_data loadreg <-- datain return

45 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F645 #put_data(data in inreg) definedataut 0x... definestatus 0x... defineobemask 0x... put_data:loadreg1 <-- status andireg1 <-- obemask beqput_data storedataut <-- data return putdata till Utport rutin med pollning av statusbit (blockerande I/O)

46 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F646 Serie-port  Används för seriell kommunikation  Vanligt är asynkron kommunikation, ett tecken kan komma när som helst  Synkron kommunikation finns även, det kommer alltid en ström av bitar

47 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F647 Serieport Sändare Mottagare Parallella data ut Parallella data in skiftregister Seriell kabel Internet skiftregister error(s)

48 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F648 Serie-port Asynkron kommunikation  Varje tecken (bokstav) sänds för sig  Ett tecken kodas ofta med 7 bitars ASCII  Dessutom tillkommer 1 startbit 1 paritetsbit (opt) udda eller jämn paritet 1, 1,5 eller 2 stoppbitar

49 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F649 Serie-port Asynkron kommunikation 0x x xxxxxP1 1 7-bitars ASCII 1 startbit (0) 1 Paritetsbit (P) Stoppbit(ar) (1) Synkroniseringsflank Avkänningstidpunkter i mottagaren

50 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F650 Synkronisering  Bit-synkronisering mottagare måste polla mitt i prick  Byte-synkronisering När börjar nytt tecken (SYN)  Block-synkronisering När börjar ett nytt block/paket (SOH...)

51 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F651 Serie-port Asynkron kommunikation  Bithastighet (kallas felaktigt för baudrate)  Teckenlängd (5, 6, 7, 8, …)  Paritet On/Off, Even/Odd  Antal Stoppbitar (1, 1½, 2) (antal perioder mellan sända tecken) (baudrate = signaleringshastighet)

52 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F652 Serieport med buffertar Sändare Mottagare Parallella data ut Parallella data in skiftregister Seriell kabel Internet skiftregister error(s) En eller flera platser TxRdy RxRdy TxEmpty

53 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F653 läs från serieport rutin med pollning av statusbit (blockerande I/O) #int in_char(void) definedata... definestatus... defineibfmask... in_char:loadtmpreg <-- status anditmpreg <-- ibfmask beqin_char loadoutreg <-- data return

54 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F654 skriv till serieport rutin med pollning av statusbit (blockerande I/O) #out_char(data in inreg) definedataout... definestatus... defineobemask... out_char:loadtmpreg <-- status anditmpreg <-- obemask beqout_char storedataout <-- inreg return

55 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F655 Nios-II uart_0 Memory Mapped Addresses 0x860 0x864 0x868 uart_00x860-86F uart_1 0x880-88F 31 16 15 8 7 6 0 STATUS RxRdy (IBF) TxRdy (OBE) RxDATA (RD) TxDATA (WR) Både InPort och UtPort: 8 bitars tecken

56 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F656 Läs från Serieport syntetisk Nios-2-kod (blocking) #int in_char(void).equdatain, 0x860# 0x880.equdataut, 0x864# 0x884.equstatus, 0x868# 0x888.equibfmask, 0x80# 0x80 = 0b10000000 in_char: MOVIAr8, datain in_baa: LDWIOr9, 8(r8)# status=datain+8 ANDIr9, r9, ibfmask BEQ r9, r0, in_baa LDWIOr2, 0(r8) RET

57 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F657 #void out_char(parameter).equdatain, 0x860# 0x880.equdataut, 0x864# 0x884.equstatus, 0x868# 0x888.equobemask, 0x40# 0x40=0b01000000 out_char: MOVIAr8, datain out_baa: LDWIOr9, 8(r8)#status=datain+8 ANDIr9, r9, obemask BEQ r9, r0, out_baa STWIOr4, 4(r8)# dataut=datain+4 RET Skriv till Serieport syntetisk Nios-2-kod (blocking)

58 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F658 Laboration 2 EKO-program # Skriv ett progam som ekar tecken från tangentbord till terminalfönster main:callinitserial# VID BEHOV loop:callin_char movr4, r2# kopiera tecken callout_char brloop

59 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F659 Flödesschema för EKO-program START in_char out_char init

60 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F660 Flödesschema för korsvis kommunikation START in_charx? send_char NEJ JA rec_charx? out_char JA NEJ nytt tecken från tangentbord? om ja: sänd ut tecknet på länken nytt tecken från länken? om ja: skriv tecknet till skärmen

61 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F661 EKO-program med korsvis kommunikation start:callinitserie#initera serieportar vid behov gettst:callin_charx#tecken från tangentbord ? b”cond”r2, rectst#om ej: hopp till rectst send:movr4, r2 callsend_char# sänd ett tecken rectst:callrec_charx#tecken mottaget ? b”cond”r2, gettst#om ej: hopp till gettst out:movr4, r2 call out_char#och skriv ut mottaget tecken brgettst#loopa

62 31 March 201562 Läs från Serieport syntetisk Nios-2-kod (non-blocking) #int in_char(void).equdatain, 0x860# 0x880.equdataut, 0x864# 0x884.equstatus, 0x868# 0x888.equibfmask, 0x80# 0x80 = 0b10000000 in_char: MOVIr2, -1# ”no-char” MOVIAr8, datain LDWIOr9, 8(r8)# status=datain+8 ANDIr9, r9, ibfmask BEQ r9, r0, no_char LDWIOr2, 0(r8) no_char: RET 31 March 201562 IS1500 Datorteknik o k, föreläsning CE - F6

63 31 March 201563 #void out_char(parameter).equdatain, 0x860# 0x880.equdataut, 0x864# 0x884.equstatus, 0x868# 0x888.equobemask, 0x40# 0x40=0b01000000 out_char: MOVIr2, -1# error MOVIAr8, datain LDWIOr9, 8(r8)#status=datain+8 ANDIr9, r9, obemask BEQ r9, r0, not_obe STWIOr4, 4(r8)# dataut=datain+4 MOVIr2, 0# yes !!! not_obe: RET Skriv till Serieport syntetisk Nios-2-kod (non-blocking) 31 March 201563 IS1500 Datorteknik o k, föreläsning CE - F6

64 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F664 Hardware Timer  Används för exaktare tidmätning  alt1: Counter räknar upp från 0 till value  alt2: Counter räknar ner från value till 0  Counter ”framme” kallas Time-Out  Vid Time-Out ettställs en vippa vars värde finns tillgängligt för program och elektriskt  Vippan kan nollställas (hur?)

65 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F665 Counter som räknar Flödesschema för väntan arrive return TimeOut=1?Read TimeOut YES NO Clear TimeOut Wait for READY Action & Acknowledge ! Blocking

66 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F666 Flödesschema DELAY med PROGRAM-LOOP N := startN := N - 1N = 0 ? IN-hopp UT-hopp JA NEJ K := msekK := K - 1K = 0 ? IN-hopp UT-hopp JA NEJ Byt ut program-loop mot timer-loop Program-loop 1 millisekund Laboration 1 IN-parameter i r4

67 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F667 Flödesschema DELAY med TIMER K := K - 1K = 0 ? IN-hopp UT-hopp JA NEJ arrive return TimeOut=1? Clear TimeOut Read TimeOut YES NO Timer-loop 1 millisekund K := msek Laboration 2 IN-parameter i r4

68 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F668 Nios II Timer med Counter som räknar ner ]Counter laddas med period ]Counter minskas med ett vid klockflank ]Counter=0 medför ettställ Time-Out ]Counter laddas om vid Time-Out (det tar ett klockpulsintervall) ]period kan väljas med program

69 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F669 Nios II Timer Statusvippa Time-Out Statusvippa som kallas Time-Out 6ettställs vid Time-Out kan pollas av program @ska nollställas av program tillgänglig som elektrisk signal

70 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F670 Nios II Timer Statusvippa Run  Statusvippa som kallas Run ettställs av program nollställs av program kan pollas av program tillgänglig som elektrisk signal ?

71 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F671 Nios II Timer Hårdvaru-figur counter clock period copy write from program run start time-out Q Q’ D cl set clear stop zero snap-shot read from program copy load Q Q’ D cl from program read from program

72 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F672 Nios II Timer-1 Memory Mapped Addresses 0x920 0x924 0x928 0x92C 0x930 0x934 0x938 0x93C 31 16 15 0

73 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F673 0x920 status 0x924 control 0x928 periodl 0x92C periodh 0x930 snapl 0x934 snaph Nios II Timer-1 Status / Control etc run TO Time-Out ITO cont start stop 15 0

74 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F674 Nios II Timer-1 Hardware ”Hokus Pokus”  TO - Time Out, bit 0 på adress 0x920  run, bit 1 på adress 0x920, is 1 if Counting, else 0  Clear Time Out, Write anything to 0x920  Continous Counting, ”set” bit 1 at 0x924  Start Counting, ”set” bit 2 at 0x924  Stop Counting, ”set” bit 3 at 0x924  WR to any snapshot => copy Counter to SnapShot  (ej komplett information)  ”One-Shot” is possible !

75 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F675 Nios II Timer-1 More ”Hokus Pokus” (2010)  Writing 1 to both START and STOP bits simultaneously produces undefined result  The internal Counter is loaded from the Period registers on a write operation to any of the period registers  Writing to any of the Period registers stops the internal Counter  Restarting the timer with ”full value” requires 1.Write (correct) value to any of the Period registers 2.Set the START bit (possibly once again) 3.Reset the TO bit to 0 if needed (if it is a 1)

76 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F676 Serieport Sändare Mottagare Parallella data ut Parallella data in skiftregister Seriell kabel Internet skiftregister error(s) One or more bits are flipped

77 Serial communication Error control 1.Error Detection parity check, requires extra bits CRC-code, requires extra bits... 2.Error Correction ECC – Error Correction Code (extra bits) Retransmission protocol (TCP,...)... 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F677

78 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F678 Paritet i ett n-bitars ord jämn eller udda paritet  Jämn paritet = jämnt antal ettor i ordet  Udda paritet = udda antal ettor i ordet  Feldetektering Detekterar alla ”udda-bits-fel” dvs om ett udda antal bitar har växlat värde  Felkorrigering, hur då ???  Omsändning !!!

79 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F679 Paritetskontroll vid kommunikation  Sändaren kompletterar med en extra bit vars värde sätts så att man får rätt paritet i det ord som sänds  Mottagaren kontrollerar att det är rätt paritet i det mottagna ordet

80 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F680 Kartbild av minnet  AdressMEM / IO  0 - 7FFboot_monitor_rom  810-81Fde2_pio_redled18  840-84Fde2_pio_keys4  850-85Fde2_pio_toggles18  860-86Fuart_0 (”hyperterminal)  9F0-9FFde2_pio_hex_low28  920-93Ftimer_1  940-95Ftimer_2  A00-A0Fde2_pio_hex_high28  A10-A1Fde2_pio_greenled9  80 0000-FF FFFFext_ram, 8 Mbyte ?

81 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F681 Timerkretsen tidmätnig Exempel på hur man kan mäta tid för exekvering av t.ex. NextPrime Kopiera ett snapshot till time0 Kör NextPrime Kopiera ett snapshot till time1 Skriv ut (tids-) skillnad (time1-time0)

82 Disk Storage zNonvolatile (information finns kvar) zConcentric tracks, 10.000-50.000 st zSectors – 512 byte per sector (4096?) sector number-gap-information-ecc 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F682

83 Disk Storage Access time 1.Seek time – move heads to desired track 2.Rotational latency/delay (halfway) 3.Transfer time (70-125 MByte/sec) 4.Controller time 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F683

84 Rotational latency ½ varv tar tid 15000 rpm = 250 varv per sekund 1 varv tar då 4 millisekunder ½ varv tar 2 millisekunder 7500 rpm blir 4 millisekunder CPU-frekvens 1 GHz motsvarar 1 000 000 000 instruktioner per sekund 1 000 000 instruktioner per millisekund 2 millisekunder   2 miljoner instruktioner 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F684

85 Transfer Time Transfer time of 512 byte ? 70-125 MByte/sec ~500/100M =~ 5 mikrosekunder Mycket kortare tid än söktid och rotation 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F685

86 Seek Time Ungefär samma storleksordning som rotational latency dvs (några) millisekunder 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F686

87 Control time Ett antal exekverade instruktioner på en processor med hög CPU-frekvens Med 100 MHz blir det 100 000 000 instruktioner per sekund 100 000 instruktioner per millisekund Troligen kortare tid än söktid och rotation 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F687

88 Disk Storage (page 3 of x) Improvements going on... 1.Reduction in physical size 2.Increasing Disc density 3.More intelligent interface - ATA SCSI 4.Microprocessor control 5.Built-in caches 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F688

89 Flash Storage 1.Nonvolatile (as disk storage) 2.Smaller than disk storage 3.More power efficient than disk 4.100-1000 faster read than disk storage 5.Wear out (10.000-100.000) 6.2-40 times higher price than disk 7.Hybrid hard disk – 1Gbyte Flash... 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F689

90 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F690 IS1500 Datorteknik och komponenter DMA, Direct Memory Access Detta avsnitt har flyttats till F6 i IS1500 Kurboken Chap 6.6 sidorna 588-595

91 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F691 Block Data Transfer - BDT  Kopiera ett antal enheter (byte/word) ett Block (t.ex. 1024x8)  från minne till minne [memcpy(dst,src,num)]  från I/O till minne (paket från internet)  från minne till I/O (paket till internet)  från I/O till I/O (”routing”) Typexempel mellan MM och SS dvs mellan Main Memory och Secondary Storage dvs mellan ”hårddisk och RAM-minne”

92 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F692 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!

93 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F693 BDT: minne till minne CPU MEM BUS I/O

94 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F694 BDT: minne till I/O BDT: I/O till minne CPU MEM BUS I/O

95 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F695 BDT: I/O till I/O CPU BUS I/O

96 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F696 BDT - Block Data Transfers Block Data Transfer utförs i tre olika del-moment 1.Initiera: pekare och räknare, mm 2.Kopiera: en enhet i taget (byte/word) 3.Avsluta: bokföring (i OS) att block är kopierat (OS = Operativ Systemet)

97 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F697 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)

98 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F698 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

99 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F699 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

100 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6100 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

101 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6101 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

102 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6102 IN-port med handskakning IN-PORT IBFWRIN-DATA EN/RD IBF Adress Data Control CPU-BUSS Q Q’ set clear IBF WR RD vippa grindar...... EN IN 0 IN n............ DnDn D0D0 IN 1 D1D1 Bus drivkrets

103 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6103 BDT: I/O till minne CPU MEM I/O SrcAddr DstAddr NrOfTransfers

104 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6104 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

105 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6105 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

106 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6106 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

107 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6107 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

108 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6108 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

109 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6109 Avbrottshantering (förenklat) Huvudprogram eret retur-adress ”hopp vid interrupt” interrupt InterruptHandler Var placeras returadressen ? i r29 ! Hur utförs hopp till InterruptHandler ? HW (och SW) ! Hur utförs hopp till returadressen ? Med eret ! intruktion ”hopp vid retur”

110 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6110 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

111 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6111 BDT: I/O till minne med avbrott (IBF ger IRQ) CPU MEM I/O SrcAddr DstAddr NrOfTransfers IBF=IRQ

112 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6112 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?)

113 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6113 2. Avbrotts-styrd BDT I/O to Memory zProgramstruktur initiera: programsnutt i OS kopiera: interrupthandler, inth, anropas vid avbrott dvs då IBF = 1 inth: kopiera en enhet# se nästa sida eret# retur från int avsluta:brOS-avsluta# hopp till OS

114 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6114 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.

115 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6115 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 eret# from interrupt

116 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6116 2. BDT: I/O till minne med avbrott (IBF ger IRQ) CPU MEM I/O SrcAddr DstAddr NrOfTransfers IBF=IRQ

117 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6117 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

118 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6118 Bus Arbiter krävs Bus Request / Bus Grant CPU MEM BUS I/O DMA Bus Arbiter BR BG

119 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6119 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

120 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6120 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

121 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6121 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

122 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6122 3. DMA-styrd BDT I/O to Memory zProgramstruktur initiera... DMA:kopiera en enhet avsluta: Meddela att det är klart ? Hur? Vart?

123 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6123 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

124 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6124 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”

125 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6125 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)

126 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6126 1. BDT: I/O till minne med program (pollning av IBF) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers

127 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6127 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

128 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6128 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


Ladda ner ppt "31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F61 IS1500 Datorteknik och komponenter Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd."

Liknande presentationer


Google-annonser