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