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.

Slides:



Advertisements
Liknande presentationer
EDA 480 – Maskinorienterad Programmering
Advertisements

Flynns taxonomi ● Single Instruction, Single Data (SISD) – en instruktion i taget opererar på ett värde i taget ● Single Instruction, Multiple Data (SIMD)
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
EDA Digital och Datorteknik
Persondatorer Datorns internminne (Kapitel 6)
Minnesteknologier Teknologi Accesstid Kostnad $/GB SRAM 1 ns 1000 DRAM
William Sandqvist Datorteknik övning 2 Subrutinanrop William Sandqvist
EDA Digital och Datorteknik
William Sandqvist System Management functions S Burd, Systems Architecture ISBN Figure 11-2 CPU Management Memory Management.
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
IS1500 Datorteknik och komponenter
IS1500 Datorteknik och komponenter
PC-Teknik © CAAK1 PC-teknik Anna-Karin Carstensen Plan 3 el/data tel:
IE1206 Inbyggd Elektronik F1 F2
23 August 2014 IS1200 Datorteknik vt09, föreläsning 10, (E och I mfl)1 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory.
2G1502 Datorteknik allmän kurs Föreläsning 4 Programutveckling Något om bussar.
1 2G1518 Datorteknik Föreläsning 5, våren 2007 Bussar In- och utmatning – I/O Pollning Handskakning.
IE1206 Inbyggd Elektronik F1 F2
IE1206 Inbyggd Elektronik F1 F2
Stora additionstabellen
IS1500 Datorteknik och komponenter
9 September 2014IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Pekare och speciell programstruktur i inbyggda system
IE1206 Inbyggd Elektronik F1 F2
Styrteknik: Programmering med MELSEC IL PLC2A:1
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( ) Innehåll: -Programmerade rörledningar -Namngivna rörledningar.
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1 De bifogade OH-bilderna är bara utkast till vad som kan vara.
Digital och Datorteknik – EDA / Mikroprogrammering EDA Digital och Datorteknik 2009/2010 Mikroprogrammering Arbetsboken, avsnitt 28.
Styrteknik 7.5 hp distans: PLC-Program, kaffe-automat PLC7B:1
Datorsystem 1 & Datorarkitektur 1 – föreläsning 7 onsdag 7 november 2007.
Lågnivåprogrammering Översikt av I/O-mekanismer i hårdvara Olika språkkrav och modeller för komponent- hantering(device driving) Modeller för komponent-hantering.
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
William Sandqvist Övning 8 Minnessystem Lokalitet Cacheminnen William Sandqvist
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
IS1200 Datorteknik Föreläsning CE F2 Vi bygger en processor Kursboken, delar av kapitel 7 31 March IS1200 Datorteknik föreläsning CE – F2.
1 386 Från s bits adressbuss –=>4GB minne kan adresseras 32 bits databuss max klockfrekvens: 40MHz Protected mode –virtuellt minne –segmentering.
Anders Sjögren Går det att simulera vår värld med 1:or och 0:or ?
Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —
Minnesarkitektur Problem: Snabbare och snabbare processorer men minnena hänger inte med. Lösning: Minneshierarkier.
Emulatorkonstruktion Schema Inledning Andra metoder Mina metoder Demonstration av min C64-emulator Sammanfattning och frågor.
2 April 2015 IS1200 Datorteknik föreläsning CE - F71 IS1200 Datorteknik och komponenter Föreläsning 7 Exceptions Interrupts - Traps.
2 April 2015 IS1200 Datorteknik o k, föreläsning CE - F31 IS1200 Datorteknik Föreläsning CE F3 Metoder / subrutiner Kursboken, delar av kapitel 4.
2G1518 Datorteknik Föreläsning 5 Bussar In- och utmatning (Input/Output, I/O) Programstyrd pollning hösten 2005 för D3 och CLMDA m fl.
3 April 2015IS1200 Datorteknik, föreläsning 61 IS1200 Datorteknik Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd pollning.
William Sandqvist Övning 6 Seriekommunikation - serieport William Sandqvist
1 Föreläsning2 Operativsystem. 2 Talsystem Decimal (bas 10): 0,1,2,…,8,9 Binär talsystem (bas 2): endast 1 och 0 Hexadecimal talsystem (bas 16): 0,1,…9,A,…,E,F.
Föreläsning3 Operativsystem Datorkommunikation. Adressering av datorer: IP-nummer, MAC- adress (Media Access Control) Överföring av data.
22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion.
1 June G1518, Förel 10, ht2005 (D3/CLMDA)1 2G1518 Datorteknik, ht 2005 version för D3 och CLMDA Föreläsning Processorkonstruktion 2. DMA, Direct.
1 June G1502, Föreläsning 9, vt2004 för IT1 2G1502 Datorteknik allmän kurs Föreläsning 9 1. Processorkonstruktion 2. DMA, Direct Memory Access 3.
2 June G1518, Föreäsning 7, vt 2007 (D2)1 2G1518 Datorteknik Föreläsning 7 Exceptions ht vt 2006 (period 2-3) för D2.
2G1502 Datorteknik allmän kurs
2 June G1502, Föreläsning 8, vt2004 för E och I1 2G1502 Datorteknik allmän kurs Föreläsning 8 Processorkonstruktion DMA, Direct Memory Access.
6/3/2015© Mats Brorsson1 Hur mycket snabbare blir det med PC133 SDRAM jämfört med PC100 SDRAM?... blir det med en 1,4 GHz Athlon- processor jämfört.
12 June G1518, Föreäsningl 8, vt07 (E/I/CL)1 2G1518 Datorteknik Föreläsning 8 Cache Memory vt 2007 (period 3-4) för E, I och CLMDA.
13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)1 IS1200 Datorteknik Föreläsning 7 Exceptions vt 2008 (period 3) för IT/ME och Hing/Kand.
14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
16 July 2015 IS1500 Datorteknik och komponeneter, föreläsning DC-F2 1 IS1500 Datorteknik och komponenter Föreläsning DC F2 Kretsar med återkoppling Minnen.
31 July 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
4 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Övning 10.
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
13 October 2015 IS1200 Datorteknik ht2009, föreläsning 7, (D2)1 IS1200 Datorteknik Föreläsning 7 Exceptions ht 2009 – vt 2010 (period 2-3) för D-2.
Grundläggande datavetenskap, 4p
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

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