Home · Kontakt · Impressum
contents index previous up next
Next: 16.2.4 Plug-and-Pray Up: 16.2 PC-Busarchitekturen Previous: 16.2.2 lspci

Unterabschnitte



16.2.3 IRQs, I/O-Ports und DMA

Seine volle Einsatzbereitschaft entwickelt der PC nur, wenn alle Komponenten miteinander reden. Gerade die Kommunikation zwischen PC und Peripheriegeräten ist dabei ein wichtiger Faktor, der bis heute nicht gerade wenige Probleme bereitet hat. Die Kommunikation zwischen zwei Partner kann auf verschiedene Arten erfolgen. Wenn ein Peripheriegerät mit dem Prozessor reden will, sendet es ein Unterbrechungssignal, vergleichbar mit dem Klingeln des Telefons, an den Prozessor. Dieses Unterbrechungssignal bezeichnet man auch als Interrupt oder Interrupt-Anforderung. Abgekürzt wird dies durch die Buchstaben IRQ, die vom englischen Ausdruck Interrupt ReQuest sich ableiten. Mit diesem Signal signalisiert das Gerät an den Prozessor, daß Daten gesendet oder empfangen werden können.

Umgekehrt kann der Prozessor Geräte steuern, in dem er die sogenannten I/O-Ports (engl. Input/Output-Ports) verwendet. Daneben können Geräte auch Platz im Adressraums des Hauptspeichers fürs ROM und zur Steuerung belegen. Den für die Steuerung belegten Speicher bezeichnet man auch auch als I/O-memory. Normalerweise erfolgt der Datentransfer innerhalb der Rechner über die CPU und die I/O-Ports. Bei großen Datenmengen führt das dazu, daß der Prozessor nur mit dem Schaufeln von Daten beschäftig ist. Dies macht sich z. B. beim Abspielen von Videos negativ bemerkbar. Um das Nadelöhr Prozessor zu umgehen, wurde DMA (engl. Direct Memory Access) entwickelt. Bestimmte ISA-Geräte, die mit großem Datenaufkommen zu kämpfen haben, können durch dieses Verfahren die Daten direkt im Hauptspeicher lesen und schreiben. PCI-Geräte beherrschen dieses Verfahren nicht. Das klingt komisch, macht aber nichts, denn sie beherrschen ein besseres System. Durch das Konzept des bus mastering kann das PCI-Gerät temporär den Bus selbst übernehmen und so tun, als wäre es die CPU. Um die Details kümmert sich dabei der Chipsatz auf der Hauptplatine.

Im Laufe der Jahre haben sich feste IRQs und I/O-Ports für bestimmte Peripheriegeräte eingebürgert. So liegt z. B. die beiden IDE-Controller auf den IRQs 14 und 15. Auch die parallele Schnittstelle hält schon seit Jahren die I/O-Ports 0x378 bis 0x37a besetzt. Welcher Interrupt welchem Gerät zugeordnet ist, können Sie der virtuellen Datei /proc/interrupts entnehmen.

ole@enterprise:~> cat /proc/interrupts
           CPU0
  0:   14118492          XT-PIC  timer
  1:      36197          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
  5:          0          XT-PIC  usb-uhci, usb-uhci
  8:          2          XT-PIC  rtc
 10:      72616          XT-PIC  eth0, VIA686A
 12:     301546          XT-PIC  PS/2 Mouse
 14:      54053          XT-PIC  ide0
 15:     144890          XT-PIC  ide1
NMI:          0
LOC:          0
ERR:          0
MIS:          0

In jeder Zeile werden die Informationen zu einem IRQ angegeben. Die ersten Spalte enthält den IRQ. Die zweite Spalte zeigt an, wie oft der Interrupt aufgetreten ist. Diese Spalte wird für jeden Prozessor wiederholt. In der letzten Spalte steht dann, für welches Gerät der Prozessor zuständig ist.

Auch die Informationen zu den I/O-Ports finden Sie im Verzeichnis /proc wieder. Hierfür müssen Sie nur die virtuelle Datei /proc/ioports befragen.

ole@enterprise:~> cat /proc/ioports
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
02f8-02ff : serial(auto)
0376-0376 : ide1
0378-037a : parport0
...
d800-d80f : VIA Technologies, Inc. VT82C586B PIPC Bus Master IDE
  d800-d807 : ide0
  d808-d80f : ide1
e400-e4ff : VIA Technologies, Inc. VT82C686 [Apollo Super ACPI]
e800-e80f : VIA Technologies, Inc. VT82C686 [Apollo Super ACPI]

Letztendlich sollten Sie sich noch die virtuelle Datei /proc/dma anschauen. Hier finden Sie die Liste der verwendeten DMA-Kanäle. Bei den heutigen PCI-Systemen sind die Informationen aber eher spärlich. Die DMA-Einstellungen der IDE-Festplatten werden übrigens hier nicht miterfaßt.

ole@enterprise:~> cat /proc/dma
 4: cascade

16.2.3.1 Probleme

Da die Ressourcen für IRQs, I/O-Ports und DMA-Kanäle (bei ISA) begrenzt sind, kann es bei extensivem Einsatz von Peripheriegeräten zu Engpässen und Problemen kommen. Eine der guten Eigenschaften von PCI ist es, daß die Geräte mit dem Chipsatz selber aushandeln, welche Ressourcen Sie benutzen können. Dadurch ist es u.a. möglich, daß sich mehrere PCI-Geräte einen IRQ teilen. Obwohl Probleme selten sind, ist es doch eine etwas wackelige Angelegenheit. Sollte es zu Problemen kommen, so hilft es meistens die Karten in andere Steckplätze zu stecken. Dabei hat der erste Steckplatz von dem AGP-Port aus gesehen die höchste Priorität und der Steckplatz, der am weitesten Weg ist vom AGP-Port, die niedrigste. Oft wird die Empfehlung ausgesprochen, den Steckplatz neben der AGP-Grafikkarte nicht zu benutzen, da dieser sich meistens einen IRQ mit dem AGP-Port teilt, was manchmal zu Problemen führen kann.

Beim Einsatz von ISA-Geräten, wenn Sie noch welche haben, stehen meist die Ressourcen schon fest. Entweder sind sie durch Jumper und Schalter auf der Karte hardwaremäßig einzustellen oder sie benötigen dazu eine entsprechende Software. Das böse Wort in diesem Zusammenhang ist oft Jumperless. In den meisten Fällen liegt die Software auf einer Diskette bereit und läuft natürlich nur unter DOS. Daher ist es auch für Linux-Puristen ratsam eine DOS/Windows-Startdiskette zu besitzen.


contents index previous up next
Next: 16.2.4 Plug-and-Pray Up: 16.2 PC-Busarchitekturen Previous: 16.2.2 lspci
  © 2004 by IT-Dozent Ole Vanhoefer · Zum Seitenanfang