Rechnerbussysteme

Wie Software die PCI-Leistung von Intel-Chipsätzen beeinflusst

12. Mai 2009, 13:11 Uhr | Von Matthias Söhnlein

Daten zwischen Hauptspeicher und Peripheriegeräten mit hohem Durchsatz zu übertragen, ist in fast allen Bereichen von Computeranwendungen ausschlaggebend. Eine optimale Leistung ist jedoch nur erreichbar, wenn man geeignete Übertragungsmethoden und -einstellungen anwendet.

Diesen Artikel anhören

Der PCI-Bus (Peripheral Component Interconnect), der mit einer Frequenz von 33 MHz arbeitet, hat eine theoretische Bandbreite von 33 MHz × 32 bit = 132 Mbyte pro Sekunde. Dies könnte man mit einem endlosen Block-Transfer erreichen. Da reelle Block-Transfers in ihrer Länge begrenzt sind, ist die tatsächliche Bandbreite jedoch wesentlich geringer. Wenn die Blocklänge beispielsweise auf neun Zyklen begrenzt ist, also nach jedem 9. Zyklus ein neuer PCI-Block-Transfer angestoßen werden muss, und das Anstoßen eines neuen Transfers einen Zyklus benötigt, reduziert sich die theoretische Leistung auf 90 % (119 Mbyte/s).

Unter optimalen Bedingungen lassen sich solche Übertragungsraten auch in der Praxis realisieren: Ein PCI-Target sendet ununterbrochen und ohne Störungen durch andere PCI-Targets einen großen Datenblock nach dem anderen an ein anderes PCI-Target. Derartige Bedingungen können jedoch nur für extrem kurze Zeit gewährleistet werden.

Typischerweise sind mehrere PCI-Targets mit dem Bus verbunden, und jedes möchte zu irgendeiner Zeit Daten übertragen. Deshalb muss die verfügbare Bandbreite zwischen den Targets aufgeteilt werden.

Motherboard-Aufbau: Von der Bridge zum Hub

passend zum Thema

Motherboard-Architektur auf Bridge-Basis
Bild 1. Motherboard-Architektur auf Bridge-Basis. Die Performance des PCI-Busses bestimmt wesentlich die Leistung des Gesamtsystems mit.
© MEN Mikro Elektronik

Es gibt jedoch noch weitere Faktoren, die sich auf den PCI-Durchsatz auswirken. Bei früheren Chip-Designs von Intel war der PCI-Bus das Bindeglied zwischen den Hauptbestandteilen des Chipsatzes, und die Leistungsfähigkeit dieses Busses war ausschlaggebend für die Leistung des Gesamtsystems (Bild 1). Um eine optimale Gesamt-Systemleistung zu erreichen, wurden die Schnittstellen der Chips für PCI-Übertragungen optimiert. Der CPU-Cache war ein eigener Speicher und wurde von der so genannten Northbridge verwaltet, dem gleichen Chip, durch den auch die CPU, der Hauptspeicher und der PCI-Bus angebunden wurden. Dieser Chip war in der Lage, einzelne PCI-Bus-Transfers zu einem einzelnen PCI-Block-Transfer zusammenzufassen.

Heutige Chip-Designs von Intel bringen viele Verbesserungen mit sich. Für eine höhere CPU-Leistung wurde der Cache-Speicher auf mehrere Ebenen erweitert und hängt nicht mehr an der Northbridge, sondern befindet sich nun im gleichen Chip-Gehäuse wie die CPU. Durch die direkte Verbindung mit der CPU wird der Cache nicht durch externe Schnittstellen ausgebremst und ist somit wesentlich schneller. Aktuelle CPUs sind außerdem wesentlich schneller, und ihr Out-of-Order-Design erlaubt es ihnen, sich mit zusätzlichen Aufgaben und Operationen zu beschäftigen, während sie auf die Übertragung von Daten warten.

Motherboard-Architektur auf Hub-Basis
Bild 2. Motherboard-Architektur auf Hub-Basis. Der PCI-Bus ist im wahrsten Sinne des Wortes zum Peripheriebus geworden. Die zentralen Schaltstellen sind Memory- und I/O-Controller-Hub, die über ein schnelles „Direct Media Interface“ verbunden sind.
© MEN Mikro Elektronik

Mittlerweile stellt auch nicht mehr der PCI-Bus die Verbindung zwischen den Bausteinen des Chipsatzes her. Stattdessen wird mit dem „Direct Media Interface“ (DMI) eine schnellere Verbindung genutzt, die ausreichend Bandbreite für Datenübertragungen zu Schnittstellen wie Serial-ATA, Gigabit-Ethernet usw. zur Verfügung stellt. Dies ist die größte Veränderung, die auch einen enormen Einfluss auf die Datenströme hat.

Jedes Direct Media Interface ist unabhängig von allen anderen Schnittstellen und wesentlich schneller als der PCI-Bus, der im wahrsten Sinne des Wortes ein Peripherie-Bus geworden ist. Jetzt stellt der so genannte „I/O Controller Hub“ (ICH) den 33-MHz-PCI-Bus zur Verfügung, und ein PCI64-Hub den 66-MHz-PCI-Bus (Bild 2).

Während sich die Leistungsfähigkeit des Gesamtsystems verbessert hat, ist die Datenübertragung von und zu den PCI-Targets nicht unbedingt schneller geworden. Insbesondere dann, wenn die Daten per programmierter Ein-/Ausgabe (Programmed Input/Output – PIO) übertragen werden, bei der die Daten von der CPU in Einheiten von 4 byte von der Quelle gelesen und zum Ziel gesendet werden, kann der Durchsatz geringer ausfallen.

Abgesehen von Sonderfällen, bei denen z.B. Daten direkt zwischen zwei PCI-Targets ausgetauscht werden, erfolgt die Kommunikation mit einem PCI-Target in der Regel durch einen Gerätetreiber, indem Daten zwischen einem Speicher auf dem PCI-Target und dem Hauptspeicher transferiert werden. Hierfür stehen vor allem die programmierte Ein-/Ausgabe (PIO) und die Datenübertragung per Direct Memory Access (DMA) zur Verfügung. Da bei der programmierten Ein-/Ausgabe reguläre Speicherzugriffe ausgeführt werden, kann außerdem durch Veränderung der Cache-Strategie für die beiden Speicher mittels Einträgen in den „Memory Type Range“-Registern (MTRR) Einfluss auf den Datendurchsatz genommen werden.


  1. Wie Software die PCI-Leistung von Intel-Chipsätzen beeinflusst
  2. Datenübertragung zum PCI-Target mittels programmierter Ein-/Ausgabe
  3. Leistung erhöhen durch Änderung der Cache-Strategie
  4. Datenübertragung per Direct Memory Access (DMA)

Jetzt kostenfreie Newsletter bestellen!