FAQ


 
FAQ - Gut zu wissen
 
Windows-Installationen und Hardware
Installationen unter Windows
Plug & Play mit PCI
PCI und Messkarten
Ist PCI schneller ?
 
Zurück
 



Installationen unter Windows®

Direkt zur Install - Hauptseite  > > >  FAQ 002

Schnellinstallation: Quick Install
Inbetriebnahme & Treiber-Installation: Windows 2000 & Windows-XP
Infos zu Device-Treiber, DLLs, VXD, SYS: Device-Treiber

  Installationsanleitung
  Einführung in den PCI-Bus

Die Plug-and-Play (PnP) Funktion
PCI-Karten werden nicht manuell, sondern automatisch mit Hilfe des Rechner-BIOS konfiguriert. Der Anwender hat hat hier zunächst keinen Einfluss darauf, welcher Speicherbereich oder I/O-Port-Bereich jeweils verwendet wird. Das Rechner-Bios findet nach dem Einschalten des Computers alle PCI-Devices und frägt jedes einzelne Device automatisch nach den benötigten Ressourcen ab. Die zuverteilenden Ressourcen bestehen meistens aus I/O Adressen, IRQ-Nummer, DMA Kanälen und verwendeter Speicherbereiche. Überschneiden sich bei unterschiedliche Karten die jeweils benötigten Ressourcen, so versucht das Bios durch umkonfigurieren einer PCI-Karte (bzw. dessen controller) die Funktion beider in einem System zu ermöglichen. Ist dies einmal nicht der Fall, so schaltet das BIOS eine der beiden Karten einfach aus. Dies kommt aber sehr selten vor. Die verwendeten Ressourcen jeder PCI-Karte werden in der ESCD-Datenbank des BIOS dem verwendetem Betriebssystem zur Verfügung gestellt. Desweiteren werden diese Informationen auch in einem bis zu 256 Bytes großem Speicherbereich auf der PCI-Karte abgelegt, dem "configuration space". Aus diesem Speicherbereich hat sich auch das BIOS die Informationen über die benötigten Ressourcen bedient und stellt es anderen Anwendungen, beispielsweise über spezielle Software-Interrupt-Aufrufe, zur Verfügung.

Da diese spezifischen Parametrierungsregister in jedem System dynamisch geführt werden und kein einheitlicher, fester Speicherplatz (bsp. MEM-Adresse) vergeben wird, kann das Lesen dieser Information auch nur durch einen für alle Motherboard-Hersteller vorgegebenen Interrupt-Aufruf erfolgen, der die Registerabfrage auf einheitlicher Ebene ermöglicht indem die Inhalte in die CPU-Register BH, BL, AH übertragen werden. Per Software-Interrupt-Aufruf (bsp. INT 0x1A) werden somit bestimmte PCI-Funktion-Register abgefragt und dem Benutzer zur Verfügung gestellt. Über Status- und Command-Register können Informationen über jede verwendete PCI-Karte ausgelesen und gegebenenfalls auch gesetzt werden. Die Vendor-ID ist die Nummer des Herstellers der verwendeten Karte, die Device-ID gibt immer nur die Gerätenummer des verwendeten Produkts an. Die Vendor-ID Nummer (kurz VID) wird vom PCI-SIG (PCI Special Interest Group) vergeben, die Device-ID Nummern werden vom jeweiligen Hersteller initiiert. Die PCISIG ist ein Konsortium, welches alle Spezifikationen des PCI-Busses kontrolliert. Über diese Institution können auch die genauen Spezifikationen zum PCI-Bus bezogen werden, in der auch die genaue Erläuterung der Register und Interrupt-Aufrufe stehen.

Die PCI - Spezifikation
Die PCI-Spezifikation erlaubt insgesamt 10 Devices (=Geräte) an einem PCI-Bus. Da die Host-Bridge aus Sicht des PCI-Bus als ein PCI-Device erkannt wird, stehen somit grundsätzlich nur noch 9 Devices zur Verfügung. Diese können z.B. für On-Board-Komponenten (SCSI, EIDE, USB, LAN, ...) bzw. für PCI-Slots zum Anbinden von PCI-Karten verwendet werden. Dabei muss jedoch beachtet werden, dass ein Slot zwei Devices benötigt und daher nur 4 Slots über einen PCI-Bus angesteuert werden können. Daraus resultierend wurde der PCI-Bus auch nur mit 4 Interrupt-Hauptleitungen INTR-A...D ausgestattet, die sich bei erhöhter Steckplatzanzahl diesen teilen müssen (shared-Interrupt). Die Anzahl der Slots kann jedoch durch Anbinden eines zweiten PCI-Bussystems (PCI-Bridge) an das Expansion Bus Interface erhöht werden. Insgesamt können bis zu 256 Busse zusammengeschaltet werden, wobei die ersten 255 Busse PCI-Busse sind und der letzte Bus ein ISA-, EISA-, VL- oder sogar ein MCA-Bus sein kann. Auf diese Weise können u.a. auch große Rechner-Systeme realisiert werden.

PCI & Windows 9x
Unsere Sourcen und Treiber-Software unterstützen in erster Linie die Ansteuerung und Abfrage der Karteninternen I/O-Register zu jeder Kolter-I/O-Karte. Die Beispiele (meistens in Delphi 5, C oder CPP) sind extra kurz gehalten, um auch nur die kartenspezifischen Eigenschaften der jeweiligen PC-Karte und deren Programmierung näher zu bringen. Frei nach dem Motto: In der Kürze liegt die Würze.

Oft sind es nur ein paar I/O-Adressen die man kennen muss um die ganze Sache schnell, bequem und erfolgreich in Betrieb zu nehmen. Die Beispiele sind so konzipiert, dass die jeweilige Messkarte initialisiert, ausgelesen und deren Ergebnisse in einer Tabelle/Liste auf der Konsole als Zahlenwert dargestellt wird. Neben kartenspezifischen Ausgaben wie Volt, mA, Pegel oder Frequenz, bleiben weitergehende Datenauswertungen und Umrechnungen der Kreativität des Programmierers überlassen. Die Sourcen sind frei verfügbar und können in eigene Softwareentwicklungen direkt übernommen werden.

Wenn Sie keine KOLTER-CD besitzen, werden bei Windows-9x zu unseren PCI-Karten immer zwei Disketten ausgeliefert. Erstens: Die Windows-9x Treiber, die auch unsere ISA-bus-Karten unterstützen, zweitens: die PCI-Diskette, die unter Windows-9x weitere Treiber (wie VXD, INF) und diverse PCI-Diagnose-Tools bereitstellt. Mit den PCI-Tools können beispielsweise I/O-Adressen zur jeweiligen PCI-Karte aus dem Rechner-BIOS ausgelesen werden. Wurde die PCI-Karte richtig unter Windows-9x installiert (mit dem Hardwareassistenten), muss sie im Gerätemanager als Multifunkionskarte mit ihrer dazugehörigen I/O-Adress-Base eingetragen werden. Die Adress-Base (meistens im Bereich xx00 bis xxFF) zeigt dem Benutzer den I/O-Adressbereich, unter der die jeweilige Karte direkt angesprochen wird. Werden mehrere, gleiche Karten in einem System verwendet, ordnet der Gerätemanger (über das PCI-BIOS zuvor eingelesen) die Karten in ihrer Adresslage hintereinander an, sodass kein Adressierungskonflikt entstehen kann. Im PCI-BIOS werden zwei gleiche Karten nur durch die Device-Nummer und Adresslage unterschieden. Vendor-ID und Produkt-ID bleiben weiterhin identisch und können/sollen nicht verändert werden, da sonst eine klare Zuweisung im System nicht mehr gewärleistet ist.

PCI & Windows NT
Bei Windows-NT sieht die ganze Sache etwas anders aus. Zur Inbetriebnahme unter Windows-NT werden die I/O-Befehle direkt über spezielle Device-Driver angesprochen. Leider verfügt Windows-NT nicht über den gleichen Gerätemanager wie Windows-98, sodaß man die I/O-Adresslage der PCI-Karte nicht unmittelbar mit windowseigenen Mitteln feststellen kann. Zunächst sollte aber die Einbindung des Device-Driver nach dem Setup auch nochmal mit dem in der Systemsteuerung vorhandenen ICON: "Geräte" überprüft werden, ob dieser auch entsprechend aktiviert wurde, denn nur so lassen sich später I/O-Ports überhaupt unter Windows-NT ansteuern. Die Ausgabe sollte sein: "Portiodriver...  Gestartet...  Automatisch". Drückt man nun auf den Button HW-Profile, sollte die Anzeige:"Aktiviert...  Originalkonfiguration" lauten.

Kartenerkennung
Installieren (entpacken) Sie unser PSETUP.ZIP in ein Verzeichnis Ihrer Wahl. Starten Sie Setup, um den Device-Driver zu laden. Starten Sie anschliessend unser Installationsprogramm PSETUP.EXE um den Treiber in die Windows-NT Registry einzutragen. Danach muss der Rechner neu gestartet werden, damit Windows-NT den Treiber beim Booten automatisch aktiviert. Anschliessend können Sie das Programm PCIINF4.EXE starten, um die I/O-Adresse der eingestecken PCI-Karte (nur von KOLTER ELECTRONIC) auszulesen. Setup und Programm finden Sie hier inkl. Source. Ein weiteres Tool ist PCIINFO. Installieren Sie unser PCIINFO samt dem dazugehörigen SYS-NT-Treiber in ein Verzeichnis Ihrer Wahl. Starten Sie PCIINFO.EXE als Anwendung in einer NT-DOS-Box und Sie erhalten die jeweiligen I/O-Adressen unserer PCI-Karten. Unsere PCI-Karten erkennen Sie sofort an der kartenspezifischen Vendor-ID 1001h und der zugehörigen Produkt-ID, die Sie dem Handbuch (PDF) entnehmen können.

Eine weitere Möglichkeit: Richten Sie sich auf der Festplatte eine zweite, kleine DOS-Patition ein und installieren Sie MS-DOS 6.x zusätzlich zu Ihrem Windows-NT. Wenn Sie anschließend mit DOS anstatt Windows-NT booten, können Sie ein 16-bit Tool von der PCI-Diskette (bzw. CD) verwenden, um die Adresslage der PCI-Karte aus dem PCI-BIOS zu lesen. Das kleine 16-bit-Tool heisst PCIVIEW.EXE und kann direkt unter DOS gestartet werden (nicht aber unter Windows-NT in einer DOS-Box!!!). Die Ausgaben zeigen dem Anwender alle relevanten PCI-Einstellungen und Adressbelegungen der eingesteckten PCI-Hardware an. Unsere PCI-Karten erkennen Sie sofort an der kartenspezifischen Vendor-ID 1001h und der entsprechenden Produkt-ID. Ähnlich wie bei der separaten DOS-Partition, können Sie auch Windows-9x/ME direkt neben Windows-NT installieren. Mit dem Gerätemanager und den PCI-Tools können Sie nun ebenfalls die Adesslage ermitteln und diese ebenfalls unter NT anwenden. Da beide Betriebssysteme auf das gleiche PCI-BIOS zugreifen (ESCD) und die Adressvergabe beim Bootvorgang bereits fest zugeteilt wird, ist folglich die Eintragung zu jeder Hardware für beide Windows-Systeme gleichbedeutend.

Falls Sie DOS oder Win9x nicht installieren möchten, nutzen Sie von Bluewatersystems das Windows-NT-Programm: PCIVIEW.EXE. Hiermit können Sie zur jeder Vendor-ID und Produkt-ID (damit wird die Karte im PCI-BIOS während des bootens dem System zugewiesen) die Adresslage ermitteln. Leider ist in diesem Viewer-Programm noch ein kleiner Schönheitsfehler. Sie muessen bei der Basis-Startadresse 1 abziehen, um auf die tatsächliche Adresse zugreifen zu können. Der Grund für diesen "Fehler" liegt in der PCI-Spezifikation festgelegtem Config-Command-Register, wo demnach das Bit 0 bei der Adresserkennung für I/O-Karten auf 1 gesetzt werden muss. Folglich wird auch die Adress-Base (in diesem Fall) mit 0x00006501h und nicht mit 0x00006500h angezeigt. Die Startadresse ist aber nach wie vor bei 6500h. Da unser PCI-Controller immer einen festgelegten Adressblock von 256 Bytes benötigt, ist demnach die Endadresse 65FFh. Auf die korrektur des Schönheitfehlers bei Bluewatersystems haben wir jedoch keinen Einfluss. PCIVIEW für NT kann im Internet unter http://www.bluewatersystems.com kostenlos heruntergeladen werden und gehört zum Lieferumfang des WIN-DK Treiber-Tool-Kit.

Ein weiteres Kernel-Treiber-Kit gibt es auch von NUMEGA:

Ähnlich wie PCIVIEW von Bluewatersystems, gibt es eine sehr gute Shareware mit Namen PCITree. Diese Anwendung funktioniert unter  allen 32-bit Windows-Versionen: 95/98/ME/NT4/2000/XP und beinhaltet alle notwendigen Treiber. Neben der I/O-Adresse werden auch alle anderen hardwarerelevanten Informationen ausgegeben. Ich kann Ihnen das Tool, das nur ca. 20.- $US kostet, wirklich weiterempfehlen. Der Autor stellt das jeweilige UpDate zu PCITree selbst ins Netz. Klicken Sie einfach auf das Bild, um zur Webseite von PCITree zu gelangen.

Screenshot von PCITree:

Kostenlos dagegnen, bieten wir mit HWT.EXE ein Anwendungs-Tool an, um die Adresslage der Hardware zu erkennen und um eine Zugriffsanalyse auf Portebene durchzuführen. Man kann mit HWT = HardWareTest (Bild) prüfen, wie schnell der Rechner auf I/O-Ports zugreifen kann. Dazu wird in einer Zeitschleife 1 Mio Portoperationen durchgeführt und die dabei verstrichene Zeit gemessen. Gute Mainboards werden ca. 2 Mio. Portzugriffe pro Sekunde auf Windows-Plattformen aufweisen. Programmierer, die eine automatische Erkennung einer PCI- Karte unter Visual-BASIC programmieren möchten, können für einen geringen Betrag den VB6 Projekt-Source von HWT1 käuflich erwerben. Jeder weitere VB6-Source zu unseren Anwendungen kann ebenfalls erworben werden.

Nun, da jetzt die Adresslage zu jeder PCI-I/O-Karte ermittelt werden kann, muss auch der Source auf diese I/O-Adressen naturgemäß angepasst werden. Nach Aufrufen des NTP-Device-Driver über den OPEN-Befehl, wird die Adresse in das NT-System erstmals wirklich übertragen. Wurde ein I/O-Zugriff einmal ausgeführt (PCI-Karte über input oder output angesprochen), ist die Adresslage nun auch in der Windows-NT-Diagnose plötzlich eingetragen. Warum Windows-NT das nicht schon beim booten erledigt, bleibt wohl ein Geheimnis. Bei Windows 9x/ME geht es, bei NT4 geht es nicht, bei 2000 und XP geht es dann wieder.

Nach aufrufen der Windows-NT-Diagnose >> Ressourcen >> I/O-Port, ist die nun folgende Liste um den Eintrag der Karte erweitert worden: Es werden die I/O-Adresse (Start...Ende), der Portiodriver und das Bussystem angezeigt. Da wir bei der Port-Programmierung keinen Unterschied zwischen PCI- und ISA-Adressen machen, kann es vorkommen, dass der Bus-Typ bei PCI auch als ISA anzeigt wird, was jedoch nicht weiter von Bedeutung ist, da der Teribr für beide Bus-Arten ausgelegt ist. Clickt man nun auf diesen Eintrag (Doppelklick) werden die Eigenschaften angezeigt. Hier werden jetzt u.a. die Adresslage (Startadresse) und Byte-Länge des Adressbereichs angezeigt. Offenbar kann aber die Windows-NT-Diagnose auch nicht richtig addieren, da die Länge von FFh bytes auf 6500h im Ergebnis auf 65FEh kommt. Dieser Fehler war jedenfalls bei den NT-Service-Packs SP3 und SP4 zu beobachten.

PCI & Windows 2000 / XP
Bei Windows 2000 sieht das Ganze wiedermal etwas anders aus. Das neue 32-bit-Betriebssystem verfügt u.a. auch über einen Gerätemanager (ähnl. wie in Win9x), der jedoch noch über weitere, umfangreiche Diagnosefunktionen verfügt. Klickt man auf die PCI-Karte, können Treiber und I/O-Adresslage direkt ermittelt werden, ohne das zuvor (wie bei NT) auf die Einheit zugegriffen werden muss. Ebenfalls wie bei Windows 9x verfügt Windows-2000 auch über einen Hardwareassistenten, der jedoch nur Treiber im Windows-2000/XP-Format installiert. Die "alten"  INF- und VXD-Treiber von Windows-9x können leider nicht verwendet werden, da die Syntax der Script-Files anders lautet und VXD-Treiber nicht Systemkonform zum 2000er/XP Kernel sind. Ebenfalls, wie bei dem neuen Gerätemanager, lässt sich die aktuelle I/O-Adressvergabe von Windows-2000/XP mit der "Systeminformation" in der Rubrik: Programme - Zubehör - Systemprogramme - Systeminformationen, abrufen. Will man nicht auf die Resorcenhilfe von Windows-2000/XP zugreifen, sind unsere Programme HWT1 und PCIINFO wertvolle Tools, die sich ihre Informationen direkt aus der ESCD-Tabelle holen. HWT1 ist eine reine 32Bit Windows-Anwendung, PCIINFO ein 16Bit-Tool, daß die PCI-BIOS-Daten abscannt und alle PCI-Geräte in einer kleinen DOS-Box anzeigt. Unser alter NTP-PortIO Treiber s.o. kann unter Windows-2000/XP ebenfalls technisch uneingeschränkt angewendet werden. Tools, wie PCIView und PCITree können, trotzdem sie nicht digital signiert sind, unter diesem Betriebssystem ebenfalls uneingeschränkt betrieben werden.

Neuer Treiber für Windows 2000 und XP
Neben dem NTP-Treiber und der PCIINFO.EXE bzw. SYS werden wir für zukünftige Entwicklungen den neuen klibdrv Kernel-Treiber nutzen, wie er auch bereits bei HWT1 Verwendung findet. Mit diesem 32Bit Kernel-Driver ist jeder Anwender bzw. Programmierer in der Lage, aus allen Programmiersprachen heraus, auf entsprechende PCI-Systemeintragungen und I/O-Ports der jeweiligen PCI-Karte direkt zuzugreifen.

Digitale Signierung
Wieder einmal eine weitere, besondere Aufgabenstellung an alle Hardwarehersteller die so immer mehr zu Softwarespezialisten mutieren. Die digitale Signierung wird von Microsoft vergeben und verursacht bei vielen Herstellern hohe Kosten. Sie ist eine spezielle, verschlüsselte Datei, die dem INF-Installationsscript später hinzugefügt wird, damit der Hardware-Installationsassistent vom Gerätemanager den jeweiligen Treiber in das Windows INF-Systemverzeichnis korrekt einfügt. Fehlt die digitale Signierung, kommt es bei der Installation zu einer unfeinen Unterbrechung: Dem Anwender wird jetzt mitgeteilt, dass die Signierung fehlt und der Treiber eventuell unbrauchbar sei. Das ist natürlich keinesfalls richtig, da Sie unseren NTP-PortIODriver und KlibDrv-Treiber sowie alle neuen INF-Dateien uneingeschränkt unter Windows-2000 und Windows-XP nutzen können. Wir haben für Sie unsere Treiber auf verschiedenen Installationen unter 2000 bzw. XP getestet und bisher keinen Fehler feststellen können.

Literaturquelle: PCI Hardware and Software von Edward Solari and George Willse.
Bezug über Annabook ISBN 0-929392-59-0 fourth edition.

Weitere Links zu PCI:
http://www.pci-card.com/pcialles.htm


PnP und PCI-Bus mit Tücken ?
Wer behauptet, dass es mit PCI keine Probleme mehr gibt, hat entweder keine Ahnung von der Technik oder verschweigt die Wahrheit. Die Windows- und Hardwarewelt ist voll von Inkompatibilitäten und wundersamen Konflikteigenschaften. Falsche oder veraltete Treiberversionen, Doppelvergaben von I/O-Adressen zwischen ISA und PCI oder auch untereinander, Interrupts, Memorybereiche und DMA-Kanäle mit anderen PC-Karten, oder die gerade nicht passende Kartenrevision zur "ach so guten Software vom Freund".... immer das Gleiche. Wie lange wollen Anwender eigentlich noch auf einen funktionierenden Computer warten ? Ein Jahr, ...2 Jahre, länger ?  Eine sehr abenteuerliche Vorstellung. Mit jede menge Tricks, Patches und Progrämmelchen versuchen User ihr System einigermaßen auf Trab zu bringen. Kurz um: Sehr leidensvoll und nie 100%ige Systeme die redundant arbeiten. Eine recht traurige Bilanz, die wohl kein Ende mehr nimmt. Die Installation einer neuen PnP-Karte beginnt in der Regel mit fatalen Fehlern: Gerade gekauft und zu Hause in den PC eingesteckt, will man erst einmal ausprobieren, ob es irgendwie hinhaut. Warum auch nicht ? Auf der Umverpackung steht ja schließlich "Plug and Play = stecken und spielen"... und Anleitungen lesen ?= ist ja langweilig. Außerdem hat es bei den alten 486 ISA-Systemen ja auch fast immer funktioniert.

In der Regel dauert es dann nur wenige Minuten, bis das System vollständig unbrauchbar ist. Durch ausführen des Setup wird irgend ein unbrauchbarer oder falscher Treiber mitinstalliert und die gesamte Installation von Windows haut es förmlich aus den Angeln. Nach einem erneuten Start fährt das System entweder gar nicht mehr hoch oder nur im ärmlichen "abgesicherten Mode". Also ohne jeglichen Treiber versteht sich ?!?. Anschließend wird herumexperimentiert um die ganze Sache irgendwie wieder in Bertieb zu nehmen. Eine völlige Neuinstallation ist hier oftmals die einzige Abhilfe. Gelungene Software/Hardwareinstallationen liegen weit unter 10%,  aber das ist ja mittlerweile Jedem bekannt. Ein häufiges Aufrufen des Hardwareassistenten bringt oftmals nur den Gerätemanager aus dem Gleichgewicht. Man findet dann plötzlich 6 CD-ROM Laufwerke mit netten, gelben Ausrufungszeichen oder blaue Bildschirme mit Schutzverletzungen mit VXD und IOS-Meldungen ...

PCI und Messtechnik
PCI-Busmastering bedeutet grundsätzlich schnellere Busübertragungen. Dies ist jedoch stets Hersteller- & Mainboard-abhängig. Mit Busmastering lassen sich zur Zeit die höchsten Datenraten erreichen, die sicherlich für Video-Festplatten sehr wichtig scheinen. Um solche Geschwindigkeiten geht es jedoch in der Messtechnik ehr selten. Grundsätzlich gilt es stets die Verhältnismäßigkeit der Mittel zu bedenken, denn bei Messkarten reicht in den meisten Fällen (99,6%) eine Übertragungsrate von weniger als 300 ks/sec. völlig aus. Viel bedeutungsvoller ist, daß Software und Rechnerumgebung auf Dauer einwandfrei funktionieren und eine endlos, kontinuierliche Datenrate gewährleisstet werden kann. Dabei ist es völlig unwichtig, ob es sich um eine PCI oder ISA-Karte handelt, denn für Datenraten unter 1 Ms/s eignen sich oft die sicheren ISA-Steckplätze wesentlich besser als PCI.

Warum ? PCI-Steckplätze besitzen äußerst hohe Taktraten, die zum Teil bis in den hohen GHz-Bereich auf allen Leitungen messbar sind. Diese unerwünschten EM-Störungen hindern empfindliche A/D- und I/O-Messkarten an einer präzisen Messung, da direkte Einstreuungen bzw. Überkopplungen vom Daten/Adress-Bus auf analoge Leitungen, das Nutzsignal schwerwiegend beeinflussen können. Um kapazitive und induktive Störungen zu vermeiden, müsste man die Schaltung komplett abschirmen, alle Datenleitungen und Stromversorgungen extrem filtern und den Analog-Digitalwandler am besten 1 Meter entfernt über den PCI-Slot aufbauen (kleiner Witz am Rande). Eine weitaus sinnvollere Methode ist natürlich bei der Entwicklung ein besonders sorgfältiges Layoutdesign zu wählen, dass wie ein Tiefpass für schnelle Transienten wirkt, um dem GHz-Gau entgegenzuwirken.

Ist PCI wirklich schneller ?
Na ja, eigentlich nicht - oder gerade mal ein bisschen, wenn da nicht der 32-bit-Datenbus wäre. Traurig: Zum Leid der User und Entwickler hat jedoch das PCI-Komitee bei der Spezifikationsplanung des Bus-Timings in einigen Dingen versagt. Obgleich doch der PCI-bus mit der vorrangingen Begründung entworfen wurde, das angeblich soooooo schlechte und langsame Timing des ISA-Busses einmal grundlegend in Ordnung zu bringen, ist  von definierten Buszyklen mit genauer Zeiteinteilung nicht allzuviel in der Spezifikation zu lesen. Die Abfolge von Bus-Transfers und State-Machines werden zwar ausgiebig behandelt, jedoch ohne jeglichen Bezug auf das exakte Timing, mit der die jeweiligen Zyklen abgearbeitet werden sollen. Von allen (ca. 200) Transferdiagrammen wird nur ein einziges mal auf eine "Acquisition Latency" quasi als Fußnote lapidar hingewiesen, den Rest soll man sich dann wohl irgendwie selbst zusammen reimen (was zwar geht, aber unnötig viel Zeit benötigt). Bei Chip-Select-Signalen von nur 5-60ns und einem Data-valid jitter von ca. 5ns sollte man jedoch ein genaues Timing vorgeben, da sonst der gesamte PCI-Core zusammenbrechen kann oder aber nicht auf allen PCI-Systemen 100%tig funktioniert. Erst die PCI-Spezifikation 2.2 ordnet die wichtigsten Koordinierungen zu und stellt ein einigermaßen gutes PCI-Timing für den Entwickler zur Verfügung.

Die Low-Power-Schottky-Zeiten sind beim PCI-bus endgültig abgemeldet. Diese "langsamen" 74LSxxx ICs können bei der hohen Busgeschwindigkeit einfach nicht mehr mithalten, da sie Daten, Adressen und Steuersignale auf den internen Bussen verschleifen und somit keine einwandfreie Zuordnung der Daten zum Zeitpunkt eines reads oder writes erfolgen kann. Theoretisch ist ein PCI-Adressbus-Zyklus 60ns lang (bei 33 MHz Bus-CLK), jedoch konnten bei drei verschiedenen Motherboards auch drei unterschiedliche Zeiten ( 42, 56 und 70ns) gemessen werden. Somit ist der PCI-bus wie auch sein Vorgänger (VL-Bus) ein "hochdynamischer Frequenzbreigenerator", aus dem es die Daten zu fischen gilt. Der Unterschied zum ISA-Bus besteht darin, dass bei der Dekodierung von I/O-Adressen, genügend Zeit zu Verfügung stand und somit das Restrisiko einer Datenüberschneidung (Wechsel von Adressbus auf Datanbus durch ALE) sehr gering war. Beim PCI-bus ist jedoch gerade dieser "Vorteil" äußerst kritisch zu sehen, da die Chips bis an ihre Leistungsgrenzen ausgereitzt werden.

Einer der größten Irrtümer ist, das der PCI-bus ein schneller I/O-bus sei. Ein ausdekodierter I/O-read- oder I/O-write ist zwar nur ca. 60ns lang, jedoch erlauben die PCI-frames keine höhere bzw. redundante Datenrate von weniger als 0,5...2 us. Selbst bei einer so einfachen Normierung konnten sich die Motherboard- und Chiphersteller nicht einigen. Im Klartext: Eine Endlosschleife, die nur aus I/O-Schreibzyklen besteht, vermag gerade mal eine Frequenz von max. 2..3 MHz (bei den schnellsten Motherboards) zu erzeugen. Die I/O-Frequenz (worst-case) ist dabei noch nicht einmal von der CPU oder der CPU-Geschwindigkeit abhängig. Interne System-Timer, PCI-matches und -bridges, Parametrierungs-Frames und BIOS-Operationen verlangsamen den I/O-Prozess derart, dass höhere Datenraten nicht erzielt werden können. Einziger Vorteil gegenüber ISA ist der nun vorherrschende 32-bit-Bus, mit dem jetzt quasi 4x 8-bit mit 2 MHz übertragen werden können. Die so oft propagierte, aber falsche Annahme, macht Schule in den Medien und stellt den PCI-Bus in ein Licht, das er nicht verdient. Ein Datendurchsatz von 132 Mb/sek. ist theoretisch nur auf den internen PCI-Bus-Leitungen (direkt auf dem Motherboard selbst) oder als DMA-Block bzw. Memory-Pages möglich (umständlich i.d. Programmierung). Eine Ausnahme bildet zur Zeit der AGP-Bus, der jedoch bislang nur für Graphikkarten entwickelt wurde und einen Datentransfer von angeblich > 100 MHz zulässt. Alle anderen Daten, Adressen und I/O-Signale müssen sich durch eine oder mehrere PCI-bridges schlängeln und werden somit immer abgebremst am Slot mit einer Latenzzeit von ca. 0,5...2 us zur Verfügung stehen.


KOLTER ELECTRONIC ist nicht für die Inhalte fremder Seiten verantwortlich.
Es gelten ausschließlich die AGB der Firma KOLTER ELECTRONIC.
Für die Richtigkeit der Angaben wird keine Gewähr übernommen.
Alle Preisangaben sind gewerblich. Das Zahlungsmittel ist EURO.
Alle Rechte vorbehalten. (c) copyright H.Kolter

[ Zur KOLTER ELECTRONIC® Hauptseite ]