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

Documentos relacionados