DMA
Transcrição
DMA
9. 9.1 Direct Memory Access Programmierte Ein/Ausgabe • PIO = Programmed IO ≠ DMA. • Erhebliche Belastung der CPU: - CPU IP AL Instruktionen aus dem Speicher holen, Speicherwort in ein CPU-Register lesen, CPU-Register in Geräteregister speichern, Leseposition im Speicher inkrementieren, Umschalten auf die Interruptroutine, Abfragen des Gerätes aus Schleife ? DI Buf z.B. UART Hauptspeicher • PIO-Modi für Festplatten: PIO Mode Mode 0 Mode 2 Mode 3 Mode 4 Systemprogrammierung I, Sommer 2000, P. Schulthess Cycle Time 600 ns 240 ns 180 ns 120 ns Mbytes/sec 3.3 8.3 11.1 16.7 Standard Dokument ATA ATA ATA-2 ATA-2 1 9.2 Wozu DMA und nicht PIO-X ? • Die CPU kann nebenläufig andere Tasks erledigen. • Besseres Echtzeitverhalten bei Medienströmen (Sound, ISDN ...). • DMA-Steuerung liefert anstelle der CPU die Speicheradresse. • Typische DMA-Devices (möglichst mit PCI-DMA): - Diskettenansteuerung, Netzwerkadapter, Framegrabber, Grafikkarte, Sound, Disk ... • Direkter Datentransport: DMAKontroller z.B. Floppy - ohne Umweg über Prozessorregister, - zwischen Peripherie & Hauptspeicher, - auch Speicher-zu-Speicher Übertragung möglich. Systemprogrammierung I, Sommer 2000, P. Schulthess CPU Hauptspeicher 2 9.2.1 8237A - DMA Schaltkreise im PC • 2 kaskadierte DMA-Kontroller (8237): - Kanäle 0..3 für byteweise Übertragung, - Kanäle 5..7 für wortweise Übertragung, - Kanal #4 zur Kaskadierung => Hold- Req. Kanal 7 Kanal 6 Kanal 5 Kanal 4 • Datenrate mit 8237 DMA-Kontroller: - 8 MBps: 8 Bit Bytes mit 8 MHz, - 16 MBps: 16 Bit Bytes mit 8 MHz. • Legacy DMA für Geräte: - IDE Festplatte (#7), DMA-Slave (#4), Diskette (#2), Soundkarte, DRAM-Refresh (#0). Systemprogrammierung I, Sommer 2000, P. Schulthess DMA-2 Hold- Req. Kanal 3 Kanal 2 DMA-1 Kanal 1 Kanal 0 3 9.2.2 DMA Prinzip für den Baustein 8237A • Device fordert DMA Zyklen beim 8237a. • DMA Kontroller steuert Übertragung: - Bus anfordern über Hold-Request, CPU zieht sich vom Bus zurück. Speicheradresse auf den Bus legen, Read/Write Strobe zum Hauptspeicher. Device schickt oder übernimmt Daten. • CPU programmiert Peripherieregister: - Maskierungs- und Requestregister, Adressregister und Zählregister, externes Pageregister, Status & Modus. • Addresslatch wird vom 8239A bedient. Systemprogrammierung I, Sommer 2000, P. Schulthess CPU HRQ DMA-cntl 8237 DREQ HLDA DACK, EOP Buf Adresse z.B. UART Hauptspeicher 4 9.3 DMA Programmierung im PC • ISA-Busleitungen speziell für DMA: - DMA-Requests [0..7], DMA-Acknowledge[0..7], EOP (end-of-process), - HRQ (Hold Request), HLDA (Hold Acknowledge). • Ablauf eines DMA-Transfers auf dem ISA-Bus: - DREQ: HRQ: HLDA: A[..]: DACK: MEMW: D[..]: Device => 8237, 8237 => CPU, CPU => 8237, 8237 legt Adresse auf den Bus, 8237 => Device, 8237 => Hauptspeicher (write), Device => Hauptspeicher, ... Übertragen des Speicherblockes ... - EOP: - not HRQ: Systemprogrammierung I, Sommer 2000, P. Schulthess 8237 => Device (End-of-Process), 8237 => CPU ... 5 9.4 DMA-Registersatz • Steuer- & Statusregister im 8237 jeweils für DMA-1 und DMA-2: $08 $09 $0A $0B $0D $0F $D0 $D2 $D4 $D6 $DA $DE Statusregister (lesen), Befehlsregister (schreiben), Requestregister (1 Kanal/Befehl), Kanalmaskierung (1 K./Befehl), Modus ( Betriebsart: Burst ...), DMA-1 Zwischenregister ( Sp.-Sp.). Maskierung ( 4 Bit Maske), • Adress- und Zählregister (16 Bit): $00 $01 $02 $03 $04 $05 $06 $07 $C0 $C1 $C2 $C3 $C4 $C5 $C6 $C7 Basisadresse Kanal 0/4 Zählregister Kanal 0/4 Basisadresse Kanal 1/5 Zählregister Kanal 1/5 Basisadresse Kanal 2/6 Zählregister Kanal 2/6 Basisadresse Kanal 3/7 Zählregister Kanal 3/7 verschiedene Steuer- & Statusregister Basisadresse verschiedene Steuer- & Statusregister Basisadresse Zähler Basisadresse Zähler Basisadresse Zähler Basisadresse Zähler Basisadresse Zähler Basisadresse Zähler Basisadresse Zähler $C0 DMA-2 • Zusätzlich eine aktuelle Kopie von AdresseZähler und Zähler $00 für jeden Kanal. Systemprogrammierung I, Sommer 2000, P. Schulthess 6 • Statusregister: - REQ[ 0..3]: - TC[ 0..3]: Laufender Request ? Terminal Count für welchen Kanal ? • Auslösung einer DMA-Sequenz: - Software: Request-Register setzen - Hardware: DREQ[0..3, 5..7] vom Device, - Autoinit.: falls Wiederholung gewünscht und Zählwert=$FFFF. • Externe Register: - DMA Page Register explizit mit den Treiber setzen, - DMA Adress Latch wird durch 8237 gesetzt, - je nachdem Wort- oder Byteadresse. • Detaillierte Chip-Dokumentation erforderlich: - ftp://download.intel.com/support/controllers/peripheral/231466.pdf, - Tobias Bindhammer @ plurix.de , - Messmer, PC-Hardware ... Systemprogrammierung I, Sommer 2000, P. Schulthess 7 9.5 DMA Befehle • OUT <Befehl> , AL : - Portadresse als Befehl interpretiert, Datenbyte in AL wird ignoriert. • Befehl: Internes Flip-Flop zurücksetzen: - FF bestimmt welche Hälfte der 16 Bit Register als nächstes geschrieben weden soll, - niederwertiges Byte zuerst geschrieben - an Portadresse $0C/$D8 für DMA-1/2. • Befehl: Master Clear: - praktisch alle Register (+FF) zurücksetzen, entspricht DMA Hardware Reset, - an Portadresse $0D/$DA für DMA-1/DMA-2, • Befehl: Maskierungsregister löschen: - alle DMA Kanäle werden freigegeben, - an Portadresse $0E/$DC für DMA-1/DMA-2. • Kanal erst freigegeben, nachdem Adress- & Zählregister gesetzt wurde, sonst wildes Schreiben irgendwo möglich ! Systemprogrammierung I, Sommer 2000, P. Schulthess 8 9.6 • Datenformat: - 8 Bit (DMA-0 .. DMA-3), - 16 Bit (DMA-5 .. DMA-7). • Übertragungsrichtung: DMA Betriebsarten t DREQ Einzeltransfer - Lesen vom Hauptspeicher, - Schreiben zum Hauptspeicher, - int. DMA-Funktion verifizieren, - Speicher zu Speicher (paarweise mit #0 & #1). Demand-Tr. Blocktransfer • Burstorganisation: - Einzeltransfer (1 mal DREQ pro Byte/Wort), Demand-Transfer ( ~DREQ suspendiert nur), Block-Transfer (DREQ ohne Bedeutung), Kaskadierung (Durchreichen der Steuerung). Systemprogrammierung I, Sommer 2000, P. Schulthess 9 • Zyklusverlängerung durch das Peripheriegerät über den READY-Pin. Systemprogrammierung I, Sommer 2000, P. Schulthess 10 9.7 Bewertung • Höhere Geschwindigkeit erforderlich: - für neuere Soundkarten, Grafikkarten, Netzwerkadapter, SCSI-Kontroller ... - Devices mit integrierter Bus-Masterfunktion am PCI-Bus, - 8 MHz ISA-Taktrate reicht nicht mehr aus. • Adressierung: - Nur maximal 24 Bit Adresse, nur physikalische Adressierung. - Pageregister durch CPU setzen (64K Grenze). - 8237 setzt das Adress-Latch automatisch. • Umständliche Erzeugung der Adresse aus: - Low Page Register für A[ 16 .. 23 ], - Adress-Latch für A[ 8 .. 15 ], - A[ 0 .. 7 ] vom 8237. • Moderne Chipsets integrieren auch eine kompatible DMA-Funktion, dabei wird das Management der Adressregister vereinfacht. Systemprogrammierung I, Sommer 2000, P. Schulthess 11 9.8 Bus-Mastering am PCI-Bus (PCI-DMA) 9.8.1 Bus-Mastering • Die Fähigkeit eines Gerätes Kontrolle über den Bus zu erlangen, bzw. Adressen auf den Bus legen zu dürfen. • Am PCI-Bus Datenraten bis 266 MBytes/sec möglich. • Die Geräte haben DMA-Funktion integriert. • Kein Third-Party DMA am PCI-Bus. Bus-Arbitrierung • Bus-Arbitrierung: - Bus-Mastering auch am ISA-Bus möglich - Verteilte oder zentrale Implementierung. Gerät 1 Systemprogrammierung I, Sommer 2000, P. Schulthess Bus-Master ! Grant, Acknowledge Request Gerät N 12 9.8.2 PCI-ISA Bridge • Anschluss an den primären PCI Bus. • Kommuniziert mit Host-PCI Bridge. CPU • Integriert die "alten" PC-Funktionen: - ISA Bus Steuerung, Real-Time Clock, IDE Festplatten-Kontroller, Ultra DMA/33 Kontroller, DMA Kontroller, Timer, Interrupt Kontroller. • Neue Funktionen: - UDMA, IDE USB Stromspar-Funktionen, 3,3 Volt Betrieb möglich, Adv. Prog. Int. Contr. (APIC), System Management Bus (SMBus), Universal Serial Bus Kontroller (USB). Systemprogrammierung I, Sommer 2000, P. Schulthess AGP Speicher Host-PCI PCI PCI-ISA ISA 13 9.8.3 Ultra DMA/33 ... 100 • ATA/IDE-Kabel, Stecker und Busformate beibehalten. • Koexistenz mit alten IDE-Platten möglich. • Übertragungsrate auf 33 Mbyte/sec erhöhen: - Taktung durch positive & negative Flanke: - scheinbare Taktverdoppelung, - 16 Bit Übertragung, Takt 120µs t DMA-Transfer • Ultra DMA Funktion benötigt: - DMA Kontroller in PCI-ISA-IDE Brücke, - oder Ultra DMA Kontroller in PCI-Slot, - moderne IDE-Festplatte. 60µs Ultra DMA/33 Transfer • Ultra DMA/66 und Ultra DMA/100: - 80 poliges Verbindungskabel mit zusätzlichen Erdleitungen, - gleiche Steckerabmessungen, - höhere Taktrate. Systemprogrammierung I, Sommer 2000, P. Schulthess 14 9.8.4 Ultra DMA Übertragungsverfahren • Normierung durch ATA/ATAPI: Ultra DMA Cycle Time Mbytes/sec Standard Dokument Mode 0 240 16.7 ATA/ATAPI-4 Mode 1 160 25.0 ATA/ATAPI-4 Mode 2 120 33.3 ATA/ATAPI-4 Mode 3 90 44.4 ATA/ATAPI-5 Mode 4 60 66.7 ATA/ATAPI-5 Mode 5 40 100.0 ATA/ATAPI-6? • Paritätsprüfung auf dem ATAPI-Link mit evtl. Wiederholung. • Ansteuerung von Festplatten siehe später. Systemprogrammierung I, Sommer 2000, P. Schulthess 15