DMA
Transcription
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 Cycle Time 600 ns 240 ns 180 ns 120 ns 1 PDF created with pdfFactory trial version www.pdffactory.com Mbytes/sec 3.3 8.3 11.1 16.7 Standard Dokument ATA ATA ATA-2 ATA-2 Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess 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. 2 PDF created with pdfFactory trial version www.pdffactory.com CPU Hauptspeicher Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess 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). 3 PDF created with pdfFactory trial version www.pdffactory.com DMA-2 Hold- Req. Kanal 3 Kanal 2 DMA-1 Kanal 1 Kanal 0 Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess 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. 4 PDF created with pdfFactory trial version www.pdffactory.com CPU HRQ DMA-cntl 8237 DREQ HLDA DACK, EOP Adresse Buf z.B. UART Hauptspeicher Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess 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: 8237 => Device (End-of-Process), 8237 => CPU ... 5 PDF created with pdfFactory trial version www.pdffactory.com Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess 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 PDF created with pdfFactory trial version www.pdffactory.com Basisadresse verschiedene Steuer- & Statusregister Basisadresse Zähler Basisadresse Zähler Basisadresse Zähler Basisadresse Zähler Basisadresse Zähler Basisadresse Zähler Zähler Basisadresse Zähler 6 verschiedene Steuer- & Statusregister $C0 DMA-2 $00 Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess • Zusätzlich eine aktuelle Kopie von Adresse und Zähler für jeden Kanal. • Statusregister: - REQ[ 0..3]: - TC[ 0..3]: Laufender Request ? Terminal Count für welchen Kanal ? • Auslösung einer DMA-Sequenz: - Software: - Hardware: - Autoinit.: Request-Register setzen DREQ[0..3, 5..7] vom Device, 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 ... 7 PDF created with pdfFactory trial version www.pdffactory.com Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess 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 unkontrolliertes Schreiben irgendwo möglich ! 8 PDF created with pdfFactory trial version www.pdffactory.com Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess 9.6 DMA Betriebsarten • Datenformat: - 8 Bit (DMA-0 .. DMA-3), - 16 Bit (DMA-5 .. DMA-7). • Übertragungsrichtung: - DREQ t Einzeltransfer Lesen vom Hauptspeicher, Schreiben zum Hauptspeicher, 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). • Zyklusverlängerung durch das Peripheriegerät über den READY-Pin. 9 PDF created with pdfFactory trial version www.pdffactory.com Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess 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 eine verbesserte, aber kompatible DMAFunktion, dabei wird das Management der Adressregister vereinfacht. 10 PDF created with pdfFactory trial version www.pdffactory.com Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess 9.8 Bus-Mastering am PCI-Bus (PCI-DMA) 9.8.1 Bus-Mastering allgemein • Ein Bus-Master besitzt die Kontrolle über den Bus, bzw. die Erlaubnis, Adressen auf den Bus zu legen. • Bus-Arbitrierungsinstanz: - Bestimmt, wer als nächster Bus-Master wird, - Bus-Mastering auch am ISA-Bus möglich, - Verteilte oder zentrale Implementierung. Bus-Arbitrierung • Rollenunterscheidung: - Arbiter bestimmt nur den nächsten Master, - Master treibt die Adressenleitungen Gerät 1 Bus-Master ! 11 PDF created with pdfFactory trial version www.pdffactory.com Grant, Acknowledge Request Gerät N Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess 9.8.2 Host-PCI Bridge (VT82C693) • Kommunikation zur CPU über Frontside-Bus. • Kommunikation nach unten zum PCI-Bus. • Hauptspeicher-Steuerfunktionen: - RAS/CAS Steuerung, - Speicherbänke... • Bis zu 5 nebenläufige Bus-Master: - FSB AGP Host-PCI Brücke PCI Speicher CPU Auf PCI-, AGP-, FSB-, Speicher-Bus, Rolle als Arbitrierungsinstanz, Nicht als DMA-Kontroller, 5. „DMA“ unklar. Am PCI-Bus Datenraten bis 266 MBytes/sec möglich. PCI-Geräte haben DMA-Funktion integriert. Kein Third-Party DMA am PCI-Bus. 12 PDF created with pdfFactory trial version www.pdffactory.com PCI-ISA Brücke ISA Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess 9.8.3 PCI-ISA Bridge • Anschluss an den primären PCI Bus. • Kommuniziert mit Host-PCI Bridge. • Integriert die "alten" PC-Funktionen: - ISA Bus Steuerung, Real-Time Clock, IDE Festplatten-Kontroller, DMA Kontroller, Timer, Ultra DMA Kontroller, Interrupt Kontroller. • Neue Funktionen: - Stromspar-Funktionen, UDMA AC97A 3,3 Volt Betrieb möglich, USB … Adv. Prog. Int. Ctr. (IO-APIC), System Management Bus (SMBus), Universal Serial Bus Kontroller (USB). 13 PDF created with pdfFactory trial version www.pdffactory.com FSB AGP Host-PCI Brücke Speicher CPU PCI PCI-ISA Brücke ISA Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess 9.8.4 Ultra DMA/33 ... 133 • 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 höher: - 80 poliges Verbindungskabel mit zusätzlichen Erdleitungen, - gleiche Steckerabmessungen, - höhere Taktrate. 14 PDF created with pdfFactory trial version www.pdffactory.com Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess 9.8.5 Ultra DMA Übertragungsverfahren • Normierung durch ATA/ATAPI: Ultra DMA Cycle Time Datenrate Standard Dokument [ns] [Mbytes/sec] 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 ATA/ATAPI-5 Mode 6 30 133 ATA/ATAPI-5 • Paritätsgesicherte Übertragung auf dem ATAPI-Link. • Ansteuerung von Festplatten siehe später. 15 PDF created with pdfFactory trial version www.pdffactory.com Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess 9.8.6 Serial ATA (SATA) • Bitserielle Übertragung => - anstelle von 16 Bit-Wörtern, - niedriger Spannungshub, - differentiell. • Derzeit 150 Mbytes/sec, mittelfristig 600 Mbytes/sec. • Kompatibilität mit dem ATAPI Paketformat nach passender Parallel/Seriewandlung. • 4-adriger Datenanschlusss => 16 PDF created with pdfFactory trial version www.pdffactory.com Systemprogrammierung I, Sommer 2005, © VS Informatik, Ulm, P. Schulthess