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
IS1500 Datorteknik o k 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 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6
IS1500 Datorteknik o k 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 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6
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
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
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F66 Programexekvering i två steg EXECUTE FETCH (update PC) (decode)
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F67 Viktiga delar i en dator CPU MEM BUS I/O program data
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F68 Bus Data Transfer viktiga aspekter MASTER SLAVE BUS MEMORY CPU
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)
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
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)
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
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”
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”
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)
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F616 Flera SLAVE fungerar bra på olika adresser ! MASTER BUS SLAVE ?? Adress-avkodare
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
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
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
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 IS1500 Datorteknik o k, föreläsning CE - F6...
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
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
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
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F624 Bus Data Transfer Bus Error MASTER SLAVE BUS Time-Out BusErrror
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
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
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
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
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)
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 March 2015IS1200 Datorteknik, föreläsning 431 serieport parallellportar MEM ”CPU” DE2-board: komponenter USB Blaster Port 31 March IS1500 Datorteknik o k, föreläsning CE - F6
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F632 de2_pio_redled18 Memory Mapped Addresses 0x810 0x814 0x818 0x81C LEDR3 LEDR2 LEDR1 LEDR0 Delar av Lab-kortet LEDR4 LEDR5 LEDR6 LEDR7 LEDR8 LEDR17 UtPort: 18 röda lysdioder
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F633 de2_pio_keys4 Memory Mapped Addresses 0x840 0x844 0x848 0x84C KEY3 KEY2 KEY1 KEY0 InPort: 4 återfjädrande tryckomkopplare Delar av Lab-kortet
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F634 de2_pio_toggles18 Memory Mapped Addresses 0x850 0x854 0x858 0x85C SW3 SW2 SW1 SW0 SW14 SW15 SW16 SW17 InPort: 18 skjutomkopplare Delar av Lab-kortet
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F635 de2_pio_greenled9 Memory Mapped Addresses 0xA10 0xA14 0xA18 0xA1C LEDG3 LEDG2 LEDG1 LEDG0 LEDG4 LEDG5 LEDG6 LEDG7 LEDG8 Delar av Lab-kortet UtPort: 9 gröna lysdioder
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F636
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
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)
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)
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)
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
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 !
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
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
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)
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
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)
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
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
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...)
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)
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
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
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
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 STATUS RxRdy (IBF) TxRdy (OBE) RxDATA (RD) TxDATA (WR) Både InPort och UtPort: 8 bitars tecken
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 = 0b in_char: MOVIAr8, datain in_baa: LDWIOr9, 8(r8)# status=datain+8 ANDIr9, r9, ibfmask BEQ r9, r0, in_baa LDWIOr2, 0(r8) RET
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=0b 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)
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
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F659 Flödesschema för EKO-program START in_char out_char init
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
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
31 March 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 = 0b 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 IS1500 Datorteknik o k, föreläsning CE - F6
31 March #void out_char(parameter).equdatain, 0x860# 0x880.equdataut, 0x864# 0x884.equstatus, 0x868# 0x888.equobemask, 0x40# 0x40=0b 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 IS1500 Datorteknik o k, föreläsning CE - F6
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?)
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
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
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
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
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 nollställas av program tillgänglig som elektrisk signal
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 ?
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
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 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
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 !
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)
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
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,...) March 2015 IS1500 Datorteknik o k, föreläsning CE - F677
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 !!!
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
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F680 Kartbild av minnet AdressMEM / IO 0 - 7FFboot_monitor_rom Fde2_pio_redled18 Fde2_pio_keys4 Fde2_pio_toggles18 Fuart_0 (”hyperterminal) 9F0-9FFde2_pio_hex_low28 Ftimer_1 Ftimer_2 A00-A0Fde2_pio_hex_high28 A10-A1Fde2_pio_greenled9 FF FFFFext_ram, 8 Mbyte ?
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)
Disk Storage zNonvolatile (information finns kvar) zConcentric tracks, st zSectors – 512 byte per sector (4096?) sector number-gap-information-ecc 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F682
Disk Storage Access time 1.Seek time – move heads to desired track 2.Rotational latency/delay (halfway) 3.Transfer time ( MByte/sec) 4.Controller time 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F683
Rotational latency ½ varv tar tid 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 instruktioner per sekund instruktioner per millisekund 2 millisekunder 2 miljoner instruktioner 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F684
Transfer Time Transfer time of 512 byte ? 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
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
Control time Ett antal exekverade instruktioner på en processor med hög CPU-frekvens Med 100 MHz blir det instruktioner per sekund instruktioner per millisekund Troligen kortare tid än söktid och rotation 31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F687
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
Flash Storage 1.Nonvolatile (as disk storage) 2.Smaller than disk storage 3.More power efficient than disk faster read than disk storage 5.Wear out ( ) times higher price than disk 7.Hybrid hard disk – 1Gbyte Flash March 2015 IS1500 Datorteknik o k, föreläsning CE - F689
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
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”
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!
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F693 BDT: minne till minne CPU MEM BUS I/O
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
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F695 BDT: I/O till I/O CPU BUS I/O
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)
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)
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F Program-styrd BDT source to destination Programstruktur initiera pekare och räknare loop:kopiera en enhet (byte/word) br loop om ej klart avsluta
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F Programstyrd BDT source to destination # Initiera inför programmerad BDT # pekare och räknare i ”vanliga” CPU-register moviar8, SrcAddr moviar9, DstAddr moviar10, NrOfTransfers
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F 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
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F 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
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
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F6103 BDT: I/O till minne CPU MEM I/O SrcAddr DstAddr NrOfTransfers
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
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F 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
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
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
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F 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
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”
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F 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
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
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F 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?)
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F 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
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F 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.
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F 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
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F BDT: I/O till minne med avbrott (IBF ger IRQ) CPU MEM I/O SrcAddr DstAddr NrOfTransfers IBF=IRQ
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F BDT: I/O till minne med DMA (IBF ger DMARQ) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers DMARQ
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
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
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
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F BDT: I/O till minne med DMA (IBF ger DMARQ) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers DMARQ
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F DMA-styrd BDT I/O to Memory zProgramstruktur initiera... DMA:kopiera en enhet avsluta: Meddela att det är klart ? Hur? Vart?
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
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”
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)
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F BDT: I/O till minne med program (pollning av IBF) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F BDT: I/O till minne med avbrott (IBF ger IRQ) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers IRQ
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F BDT: I/O till minne med DMA (IBF ger DMARQ) CPU MEM DMA Bus Arbiter BR BG MEM I/O SrcAddr DstAddr NrOfTransfers DMARQ