Rechnerbussysteme

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

12. Mai 2009, 13:11 Uhr | Von Matthias Söhnlein
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Leistung erhöhen durch Änderung der Cache-Strategie

Der Durchsatz des PCI-Busses wäre wesentlich höher, wenn mehr als 4 byte pro Transfer übertragen werden könnten. Auch wenn CPU und Hauptspeicher ganze Cache-Lines von 64 byte untereinander austauschen, werden nur 4 byte zu oder von PCI-Targets übertragen. Das liegt am Design, denn der Datenaustausch mit PCI-Targets dient meist der externen Kommunikation und muss in einer bestimmten Zeit und in einer bestimmten Reihenfolge erfolgen.

Liest man beispielsweise den Status eines Schnittstellencontrollers auf einem PCI-Target, so ist es wichtig, den aktuellen Status zu erhalten und nicht einen älteren. Und das Schreiben in ein Befehlsregister sollte sofort geschehen und nicht erst zu einem späteren Zeitpunkt. Auch die Reihenfolge ist entscheidend, da z.B. manche Controller-Register vor anderen gesetzt werden müssen. Aus diesem Grund können PCI-Übertragungen normalerweise weder verzögert noch umgeordnet werden.

Manchmal jedoch sind Verzögerungen oder eine unterschiedliche Zugriffsfolge kein Problem. In diesen Fällen ist es möglich, die Art der Speicher-Zugriffe von PCI-Targets anzupassen, indem man die Cache-Strategie über Einträge in die „Memory Type Range“-Register (MTRR) ändert. Jede Cache-Strategie hat ihre Vor- und Nachteile:

Uncacheable (nicht cache-fähig)

Standardmäßig wird jeder Speicher, der nicht Teil des Hauptspeichers ist, als nicht cache-fähig betrachtet, um sicherzustellen, dass Zugriffe darauf weder verzögert noch in der Reihenfolge verändert werden. Jeder Zugriff wird sofort und in der Reihenfolge der CPU-Befehle ausgeführt.

Write-combined (zusammengefasstes Schreiben)

Schreibzugriffe auf Speicherbereiche mit der „Write-combined“-Cache-Strategie werden nicht sofort ausgeführt, sondern in einem gesonderten Puffer gesammelt. Sobald dieser Puffer voll ist – und das ist nicht vorhersagbar – werden gültige Daten mittels Blockoperationen in den eigentlichen Speicher übertragen. Die Reihenfolge der Schreibzugriffe entspricht dabei nicht unbedingt der Reihenfolge der CPU-Befehle. Lesezugriffe auf den Speicher werden weder zusammengefasst noch anderweitig gesondert behandelt.

Write-back (Zurückschreiben)

Liest man Daten aus einem Speicherbereich mit „Write-back“-Cache-Strategie, so werden ganze Prozessor-Cache-Lines übertragen. Solange eine Line nicht aus dem Cache entfernt wird, werden die darin enthaltenen Daten nicht mehr vom PCI-Target in den Hauptspeicher übertragen. Schreibzugriffe auf den PCI-Target-Speicher werden manchmal zusammengefasst.

Write-through (Durchschreiben)

Ähnlich zur „Write-back“ Strategie, allerdings werden auch Schreibzugriffe auf den Speicher gepuffert. Das heißt, das Verändern des Speicherinhalts führt erst dann zu einer Übertragung der Daten in den PCI-Target-Speicher, wenn die entsprechende Cache-Line ungültig wird.

Write-protected (schreibgeschützt)

Bei Zugriffen auf einen Speicherbereich mit „Write-protected“-Strategie werden ebenfalls ganze Cache-Lines übertragen. Bei Schreibzugriffen wird aber die entsprechende Cache-Line in den PCI-Target-Speicher übertragen und sofort als ungültig markiert.

Es ist zwar möglich, die PCI-Leistung durch MTRR-Einträge zu erhöhen, jedoch sollte dies mit größter Sorgfalt durchgeführt werden. Da der Zeitpunkt des Speicherzugriffs nicht mehr eindeutig bestimmbar ist, könnte es passieren, dass der Rechner ausgeschaltet wird, bevor die Daten zum PCI-Target übertragen wurden (bei Verwendung der „Write-back“-Methode), oder dass Statusregister nicht den tatsächlichen Zustand widerspiegeln, da ein Zugriff auf dieses Register vom Cache abgearbeitet und nicht an das PCI-Target weitergeleitet wird.

passend zum Thema


  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!