Kapitel 7 · Bussysteme, Plug&Play und Onboard Devices 281 7.6.3 DMA-Kanäle In jedem PC ist ein spezieller Baustein für den Datentransfer zwischen Speicher und Peripherie vorhanden. Dieser Baustein versetzt den Compu - ter in die Lage, Daten mit relativ hohen Geschwindigkeiten zu übertra- gen. Diese Betriebsart wird als Direct Memory Access (direkter Speicher- zugriff) bezeichnet. Die Datenübertragung erfolgt daher (quasi) unabhängig von der CPU, und nicht mehr der Prozessor hat den Zugriff auf die Daten-, Adress- und Steuerleitungen (den Systembus), sondern der DMA-Controller. Ein Geschwindigkeitszuwachs durch die DMA- Übertragung ergibt sich allerdings nur bei den älteren PC-Modellen, denn bereits 486-CPUs können im Polling-Mode höhere Geschwindig - keiten bieten. Im Polling-Mode, wie er beispielsweise für IDE-Festplatten (PIO-Modes) durchgeführt wird, ist demgegenüber die CPU allein für die Datenübertragung zuständig. Aus diesem Grunde liegt der Vorteil der DMA-Betriebsart nicht im Zuwachs an Geschwindigkeit, sondern in der »ungestörten« Übertragung von definierten Datenblöcken (64 oder 128 kByte bei ISA), die nicht durch andere Aktionen unterbrochen werden kann. Die CPU kann sich außerdem während einer laufenden DMA- Übertragung anderen Aufgaben widmen. Bild 7.29: Die Darstellung der E/A-Adressen bei Windows XP Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. PC-Ressourcen 282 0 magnum Da der PCI-Bus keine DMA-Übertragung kennt, sondern stattdessen mit Burst-Übertragungen arbeitet, sind hierfür auch keine speziellen Kanäle zu reservieren, und die Vergabe der DMA-Kanäle ist lediglich für die vorhandenen ISA-Karten zu beachten. Eine Ausnahme bilden Sound- Karten für die Soundblaster-Emulation unter DOS, wo sich auch eine PCI-Karte aus Kompatibilitätsgründen als ISA-Karte ausgeben muss, sodass sie dann auch mindestens einen DMA-Kanal benötigt. Ab einem AT-Computer (286-CPU) sind zwei dieser DMA-Controller-Bausteine auf dem Mainboard enthalten und somit acht Kanäle verfügbar, was auch dem aktuellen Standard entspricht. Der erste DMA-Controller wird wie bei den Interrupt-Controllern (siehe Kapitel 7.6.4) als Master, der zweite als Slave bezeichnet, und beide sind entsprechend verschaltet. Das Prinzip ist hier das gleiche wie bei den Interrupt-Kanälen, und die DMA- Chips befinden sich ebenfalls in der Southbridge des Chipsatzes. Bild 7.30: Die verwendeten DMA-Kanäle bei einem PC mit Windows 9x. Aus Kompa- tibilitätsgründen werden hier auch von einer PCI-Sound-Karte (Soundbla- ster Live) ISA-Ressourcen belegt. DMA-Kanal Verwendung 0 frei 1 frei 2 Controller für Diskettenlaufwerke 3 Enhanced Parallel Port, Druckerport laut IEEE1284 4 Kaskadierung, nicht zu verwenden Tab. 7.7: Die Verwendung der DMA-Kanäle Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Kapitel 7 · Bussysteme, Plug&Play und Onboard Devices 283 Welcher DMA-Kanal für den Festplatten-Controller verwendet wird, ist nicht eindeutig definiert. In den meisten Fällen wird es jedoch der DMA- Kanal 7 und für den zweiten Kanal eines IDE-Controllers der Kanal 5 sein. Mittlerweile wird aber überhaupt kein DMA-Kanal vom Festplat - ten-Controller mehr belegt, wie es bei allen neueren PC-Designs der Fall ist, weil ein PIO-Mode ohnehin kein DMA nutzt und weil für UDMA (Ultra DMA oder Ultra ATA) die IDE-Interface-Elektronik verändert wurde, sodass IDE als Busmaster mit einem speziellen Treiber des Betriebssystems arbeitet. Falls im BIOS-Setup für die Druckerschnittstelle der EPP-Mode (IEEE1284) eingestellt ist, kommt üblicherweise auch hierfür ein DMA- Kanal – meist der Kanal 3 – zum Einsatz. Da den einzelnen DMA-Kanä - len wie bei der Interrupt-Verarbeitung eine bestimmte Priorität zugeord- net ist, wird zunächst die Anforderung mit der höchsten Priorität verar- beitet. DRQ0 hat die höchste, DRQ7 hat dabei die niedrigste Priorität. 7.6.4 Interrupt-Kanäle Ein Computer hat zahlreiche Aufgaben zu bewältigen, die er teilweise scheinbar gleichzeitig erledigt. Eine wichtige Rolle spielt dabei die Inter - rupt-Verarbeitung, und Hardware-Einheiten, die diese Funktionen ver- wenden können, benötigen entsprechende PC-Ressourcen – in diesem 5 IDE-Controller, zweiter Kanal 6 frei 7 IDE-Controller, erster Kanal DMA-Kanal Verwendung Tab. 7.7: Die Verwendung der DMA-Kanäle (Forts.) Bild 7.31: Der Diskettenlaufwerk-Controller kommt auch unter Windows XP als ISA- Device daher, und der Kanal 4 dient der Kaskadierung für den »zweiten« DMA-Controller. Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. PC-Ressourcen 284 0 magnum Fall einen oder auch mehrere Interrupt-Kanäle. Wenn es keine Interrupt- Verarbeitung gäbe, müsste der Prozessor stets in einer Programmschleife arbeiten. In diesem Fall stellt er beispielsweise entweder fest, ob eine Taste gedrückt ist, ob eine Schnittstelle etwas sendet oder ob der Moni - tor etwas anzeigen soll. Dieses Arbeiten ist sehr ineffektiv, da der Prozes- sor die meiste Zeit nur »nachschaut« und die eigentlichen Aktionen viel- leicht gerade dann ausführt, wenn bereits eine andere Aktion an der Reihe ist. Bei der Interrupt-Verarbeitung hingegen wird der Prozessor in seiner momentanen Arbeit unterbrochen (interrupted). Dies könnte gerade beim Darstellen einiger Zeichen auf dem Bildschirm geschehen, damit er stattdessen beispielsweise ein Zeichen von der Tastatur einliest. Beim Betätigen einer Taste wird ein Interrupt (Interrupt Request, IRQ) ausgelöst, der den Prozessor veranlasst, den Tastencode einzulesen und eine entsprechende Aktion auszuführen. Aus traditionellen Gründen gibt es im PC zwei Interrupt-Controller. Der »Urvater-PC« verfügt nur über 8 Interrupt-Kanäle, wofür ein einziger Interrupt-Controller verwendet wird. Mit dem AT (ab 286-CPU) ist ein zweiter Baustein für weitere 8 Kanäle eingeführt worden, wobei einer den Master-Controller und der andere (der neue) den Slave-Controller darstellt. Mithilfe des Interrupt-Kanals 2 spricht der erste Controller (Master) den zweiten Controller (Slave) an. Der ursprüngliche Interrupt 2 wird dabei auf den Interrupt 9 des Slave-Controllers umgeleitet. An der ursprünglichen Prioritätenreihenfolge hat sich dadurch nichts verändert, da die neuen Interrupts vor den »alten« Interrupt 3 platziert werden, wie es in Tabelle 7.8 gezeigt ist. Als einzelne Bausteine sind die beiden Inter- rupt-Controller schon seit langem nicht mehr in PCs zu finden. Ihre Auf- gabe wird von einem Schaltungsteil (z.B. Southbridge) des Chipsatzes ausgeführt, damit aber alles schön kompatibel bleibt, wird einfach die alte Konstruktion nachgebildet. Der Interrupt 13 diente damals der Kommunikation des mathematischen Coprozessors mit der CPU. Der Coprozessor ist ab einer 486-CPU im Chip mit integriert, sodass dieser IRQ eigentlich in dieser Form nicht mehr notwendig ist, er ist jedoch weiterhin aus Kompatibilitätsgründen nach dem klassischen Muster implementiert. IRQ Verwendung 0 Timer, reserviert für Mainboard-Elektronik 1 Tastatur, reserviert für Mainboard-Elektronik 2 Kaskadierung für zweiten Controller, reserviert 8 Echtzeituhr, reserviert für Mainboard-Elektronik 9 frei oder auch SCSI- oder USB-Controller, PCI-Mainboard 10 frei Tab. 7.8: Die Hardware-Interrupts Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Kapitel 7 · Bussysteme, Plug&Play und Onboard Devices 285 In einem PC gibt es also insgesamt 16 Interrupt-Kanäle, die (zunächst) auch immer nur einer Einheit zugewiesen werden dürfen. In der Praxis passiert es jedoch oftmals, dass beispielsweise der IRQ7, der standard - mäßig für die erste Druckerschnittstelle vorgesehen ist, auch als Vorein- stellung für eine Soundblaster-Karte verwendet wird. Probleme sind im Prinzip nur dann zu erwarten, wenn versucht wird, während der Sound- Ausgabe zu drucken. Sicherheitshalber sollte man bei älteren PCs von derartigen Interrupt-Konstellationen jedoch Abstand nehmen. Die meisten PC-Einheiten lassen ein Interrupt-Sharing zu, was bedeutet, dass mehrere PCI-Karten (aber keine ISA-Karten!) ein und denselben Interrupt-Kanal verwenden können. Dies ist recht hilfreich, weil es in Anbetracht der zahlreichen PC-Einheiten doch recht knapp mit 16 Kanä - len werden kann, zumal einige von vornherein für Mainboard-Einheiten festgelegt sind, was sich auch nicht verändern lässt. Die Software-Treiber für die Geräte müssen diese Funktion allerdings ebenfalls unterstützen und gewissermaßen selbst herausfinden, welches Gerät den Interrupt ausgelöst hat, was zusätzliche Verarbeitungszeit nach sich zieht und kei - neswegs mit jeder PC-Einheit funktioniert. Wie bei den E/A-Adressen kurz erläutert, existiert für die per Jumper konfigurierbaren ISA-Karten kein Mechanismus zur Ermittlung der von einer Karte verwendeten Parameter, und daher gilt auch für Interrupts und deren Anzeige vom Geräte-Manager, dass man sich auf die dort gezeigten Angaben nicht verlassen kann. Dies gilt sowohl für die Angabe Von unbekanntem Gerät verwendet als auch für eine nicht vorhandene Interrupt-Angabe. Eine Überprüfung dahingehend, ob nun ein Interrupt- Kanal verwendet wird oder nicht, ist nur durch eigenes Nachforschen und mithilfe der Tabelle 7.8 möglich. 11 frei 12 PS/2-Maus-Port 13 mathematischer Coprozessor, Fehlerübermittlung 14 erster IDE-Festplatten-Controller 15 zweiter IDE-Festplatten-Controller 3 COM2, zweite serielle Schnittstelle 4 COM1, erste serielle Schnittstelle 5 frei oder auch LPT2, zweite Druckerschnittstelle 6 Controller für die Diskettenlaufwerke 7 LPT1, erste Druckerschnittstelle IRQ Verwendung Tab. 7.8: Die Hardware-Interrupts (Forts.) Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. PC-Ressourcen 286 0 magnum Die höchste Priorität hat in der Regel der nicht maskierbare Interrupt (NMI). Er kann nicht wie die anderen Interrupts durch eine Maskierung per Software gesperrt werden und wird beispielsweise bei einem Paritäts - fehler ausgelöst. Die Stromsparfunktionen eines PC sind von der Priori- tät her noch über dem NMI angeordnet. Die zweithöchste Priorität (IRQ0) hat der Timer (Systemzeitgeber) auf dem Mainboard, während die erste parallele Schnittstelle (Drucker) die niedrigste (IRQ7) innehat. Wie Tabelle 7.8 zu entnehmen ist, sind bei einem PC die Interrupts – je nach Ausstattung – begrenzt (frei sind Nr. 10 und Nr. 11), was zu Pro - blemen bei der Integration von Einsteckkarten führen kann. 7.6.5 PCI-Interrupts Die klassische Verwendung der Interrupts (siehe Tabelle 7.8 und Bild 7.32), wie sie ursprünglich für ISA-PCs definiert worden war, gilt auch für PCI- und ISA-Plug&Play-Einheiten, wobei mit PCI aber keine Erwei - terung dieses Schemas stattgefunden hat. PCI selbst definiert zwar vier Interrupts (INTA#-INTD#), diese werden jedoch über die ISA-Interrupt- Kanäle abgebildet, wie es anhand des PnP/PCI Configuration Setups in Kapitel 7.5.2 erläutert ist. Dies reduziert letztendlich die Anzahl der prin - zipiell zur Verfügung stehenden IRQs. Bei älteren Mainboards sind für die Zuordnung der INTs zu den IRQs auf einem Mainboard Jumper zu stecken. Bei aktuellen PCs wird diese Zuordnung mithilfe der Southbridge, die sich im BIOS-Setup innerhalb bestimmter Kombinationen hierfür manuell konfigurieren lässt, durchge - führt. Bild 7.32: Auch wenn der PC überhaupt keine ISA-Slots mehr besitzt, die traditio- nellen PC-Einheiten werden auch unter Windows XP als ISA-Devices geführt und belegen Interrupt-Kanäle. Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Kapitel 7 · Bussysteme, Plug&Play und Onboard Devices 287 Wie die vier PCI-Interrupts mit den einzelnen Steckplätzen (AGP, PCI) und den Onboard Devices verbunden sein sollen, ist in der PCI-Spezifi - kation zwar vorgeschrieben, allerdings gehen die Mainboard-Hersteller hier durchaus eigene Wege, sodass es hier eine ganze Reihe verschiedener Möglichkeiten der elektrischen Verdrahtung gibt, die nicht veränderbar ist. Leider veröffentlichen aber die wenigsten Mainboard-Hersteller das auf dem Mainboard realisierte Routing der PCI-Interrupts. Dies stellt sich immer dann als Problem dar, wenn eine PCI-Karte nur bei Erhalt eines exklusiven PCI-Interrupts richtig funktioniert, sie das Interrupt- Sharing also nicht korrekt beherrscht, was aber durchaus im Gerätetrei - ber begründet sein kann und sich dann durch eine Treiberaktualisierung beheben lässt. Tabelle 7.9 zeigt, wie die Zuordnung laut PCI-Standard aussehen sollte. Daraus wird ersichtlich, dass alle vier PCI-Interrupts an alle PCI-Slots geführt werden, eine AGP-Grafikkarte lediglich den INTA# oder den INTB# verwenden kann und die Onboard-Einheiten den INTC# oder auch den INTD#. Beispielsweise kommt der INTA# sowohl für den AGP, den ersten PCI-Slot als auch den fünften zum Einsatz, was sich immer dann als problematisch erweisen kann, wenn die hierfür notwen - digen Gerätetreiber das Interrupt-Sharing nicht korrekt beherrschen. In diesem Fall ist einer »widerwilligen« PCI-Karte ein INT# exklusiv zuzuordnen, was aber nur durch das Umstecken der Karte in einen ande - ren Slot zu erreichen ist, da die INTs fest verdrahtet sind. Um bei der Bild 7.33: Die Organisation der PCI-Interrupts, wie sie in der PCI-Spezifikation defi- niert ist Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. PC-Ressourcen 288 0 magnum Zuordnung laut der Tabelle 7.9 zu bleiben, bedeutet dies beispielsweise: Der INTA# wird von der AGP-Karte verwendet, der INTC# vom Onboard Soundchip und der INTD# vom USB-Controller. Für die Karte bleibt lediglich der INTB# übrig, der exklusiv zum Einsatz kommen kann, wenn sich die Karte im PCI-Slot 2 befindet. 7.6.6 APIC-Modus Die Interrupt-Verarbeitung und die Anzahl der möglichen Interrupt- Kanäle hat sich seit dem 80286-Prozessor im Grunde genommen nicht verändert, und durch die PCI-Einheiten (Einsteckkarten, Onboard Devices) hat sich die hier vorhandene Ressouren-Knappheit in der Praxis sogar noch verschärft. Für Multiprozessor-Systeme wurde damals mit dem PentiumPro ein Advanced Programmable Interrupt Controller (APIC) mit in den Chip integriert. Über den hiermit realisierbaren APIC-Bus kommunizieren die CPUs untereinander und stellen sich gegenüber dem Interrupt-Controller im Chipset so dar, als wenn es sich um eine einzige CPU handeln würde. Im Chipset ist dementsprechend die Unterstützung für den APIC-Modus notwendig, die üblicherweise mit in der Southbridge (z.B. PIIX4) in Form der I/O APIC Logic untergebracht ist und sich auch von Single- Prozessorsystemen nutzen lässt. Slot/Device 1. Leitung 2. Leitung 3. Leitung 4. Leitung AGP-Slot INTA# INTB# - - PCI-Slot 1 INTA# INTB# INTC# INTD# PCI-Slot 2 INTB# INTC# INTD# INTA# PCI-Slot 3 INTC# INTD# INTA# INTB# PCI-Slot 4 INTD# INTA# INTB# INTC# PCI-Slot 5 INTA# INTB# INTC# INTD# PCI-Slot 6 INTB# INTC# INTD# INTA# Onboard USB INTD# - - - Onboard Sound INTC# - - - Tab. 7.9: Diese Zuordnung der vier PCI-Interrupts zu den Slots und den Onboard- Devices ist in der PCI-Spezifikation definiert. Der ursprünglich für Multiprozessor-Systeme entwickelte APIC- Modus erlaubt bei allen aktuellen PCs die Nutzung von 24 Interrupt- Kanälen, was die immer wieder problematische Interrupt-Zuordnung entschärfen kann. Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Kapitel 7 · Bussysteme, Plug&Play und Onboard Devices 289 Der APIC-Bus besteht aus drei Signalen (APICCLK, APICD0, APICD1), einem Takt- sowie zwei Datensignalen und dient der Verteilung der Interrupt-Ereignisse. Dabei handelt es sich aber nicht um die klassische Art der (zuvor geschilderten) Interrupt-Verarbeitung, sondern die Kom - munikation findet in einem hierfür reservierten Speicherbereich (4 kByte) des PC statt. Interrupts werden dabei über den APIC-Bus gesendet, ohne dass ein Interrupt-Achnowledge-Zyklus absolviert werden muss, wobei die Priorität der Anforderung unabhängig von der jeweiligen Interrupt- Nummer ist. Jedem Interrupt-Kanal wird per Software (Betriebssystem) ein eigener Vektor zugeordnet, und die Kommunikation findet mithilfe spezifizierter Nachrichten (Messages) statt. Der im Chipset integrierte I/O-APIC kann in zwei Modi arbeiten: entwe- der im kompatiblen Modus (Legacy Dual 8259) mit 15 Kanälen oder im APIC-Modus, wodurch 24 Interrupt-Kanäle nutzbar sind. Die aus Kom - patibilitätsgründen vorhandenen Legacy-Interrupts können dabei eben- falls (per Redirection Table) über den I/O-APIC abgewickelt werden, sodass sich bei der Nutzung des APIC-Modus für die Verwendung und die Darstellung (z.B. im Windows Geräte-Manager) der klassischen Interrupts keine Veränderungen gegenüber dem Legacy-Modus ergibt. Das BIOS und das Betriebssystem (z.B. Linux, Windows XP) müssen den APIC-Modus allerdings explizit unterstützen, und nicht bei allen BIOS- Versionen ist dieser Modus im Setup aktivierbar, obwohl die entspre - chende Funktionalität im Chipset bereits implementiert ist. Windows XP interpretiert ein APIC-fähiges System als »ACPI Uniprocessor PC«, was etwas missverständlich erscheint, weil dies nicht unmittelbar etwas mit dem Advanced Configuration and Power Management Interface (ACPI) zu tun hat. Gleichwohl kann hiermit das Problem beseitigt werden, dass alle PCI-Einheiten gemeinsam einen einzigen Interrupt-Kanal im ACPI- Modus nutzen müssen. Bild 7.34: Die Verwendung der Interrupt-Kanäle im APIC-Modus beim Aldi-PC (2,6 GHz) Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. PC-Ressourcen 290 0 magnum Der (alte) kompatible Modus ist immer verwendbar, unabhängig vom jeweiligen Chipset und der eingesetzten CPU, während der APIC-Modus sowohl vom BIOS als auch vom Betriebssystem unterstützt werden muss. Es mag verwunderlich sein, dass der APIC-Modus offenbar – trotz der bereits seit Jahren zur Verfügung stehenden, aber brachliegenden Unter - stützung – erst neuerdings zum allgemeinen Einsatz kommt. Während Linux (z.B. Red Hat 7.2) schon eine ganze Weile hierzu in der Lage ist, bietet erst Windows XP diese Möglichkeit. Bei Linux geht die automati - sche APIC-Modus-Unterstützung vielfach vom Anwender (fast) unbe- merkt vonstatten, wenn z.B. bei der Installation eines SCSI-Controllers der APIC-Modus einfach aktiviert wird, weil der Controller beispiels - weise mehrere Interrupt-Kanäle benötigt und/oder die üblichen IRQs bereits belegt sind. Das BIOS muss aber auf jeden Fall den APIC-Modus zur Verfügung stel- len, was eigentlich bei allen aktuellen Mainboards möglich sein sollte. Eine entsprechende Einstellungsoption ist nicht immer leicht zu finden, da sie wieder einmal an unterschiedlichen Stellen – meist aber unter Advanced BIOS Features – im BIOS-Setup abgelegt sein kann. Auch wenn keine APIC-Einstellung im BIOS-Setup zu entdecken sein sollte, kann sie dennoch implementiert sein und automatisch (bei Bedarf vom Betriebssystem her) aktiviert werden. Bild 7.35: Falls die APIC-Option im BIOS-Setup erscheint, sollte sie auch eingeschaltet werden. Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. . unter Advanced BIOS Features – im BIOS- Setup abgelegt sein kann. Auch wenn keine APIC-Einstellung im BIOS- Setup zu entdecken sein sollte, kann sie dennoch implementiert sein und automatisch. APIC-Modus Die Interrupt-Verarbeitung und die Anzahl der möglichen Interrupt- Kanäle hat sich seit dem 80286-Prozessor im Grunde genommen nicht verändert, und durch die PCI-Einheiten (Einsteckkarten,. APIC-Modus für die Verwendung und die Darstellung (z.B. im Windows Geräte-Manager) der klassischen Interrupts keine Veränderungen gegenüber dem Legacy-Modus ergibt. Das BIOS und das Betriebssystem