DE60217132T2 - Vorrichtung zur erhaltung der producer-consumer anordnung entlang einer ungeordneten schnittstelle - Google Patents

Vorrichtung zur erhaltung der producer-consumer anordnung entlang einer ungeordneten schnittstelle Download PDF

Info

Publication number
DE60217132T2
DE60217132T2 DE60217132T DE60217132T DE60217132T2 DE 60217132 T2 DE60217132 T2 DE 60217132T2 DE 60217132 T DE60217132 T DE 60217132T DE 60217132 T DE60217132 T DE 60217132T DE 60217132 T2 DE60217132 T2 DE 60217132T2
Authority
DE
Germany
Prior art keywords
transactions
write
read
input
ioq
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60217132T
Other languages
English (en)
Other versions
DE60217132D1 (de
Inventor
Kenneth Gig Harbor CRETA
Bradford Olympia CONGDON
Deepak Portland RAMACHANDRAN
Tony Tacoma RAND
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE60217132D1 publication Critical patent/DE60217132D1/de
Publication of DE60217132T2 publication Critical patent/DE60217132T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4013Coupling between buses with data restructuring with data re-ordering, e.g. Endian conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Display Devices Of Pinball Game Machines (AREA)

Description

  • ALLGEMEINER STAND DER TECHNIK
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft im Allgemeinen einen Eingabe-/Ausgabe-(I/O)-Knotenpunkt. Insbesondere betrifft die vorliegende Erfindung einen I/O-Knotenpunkt, der gestaltet ist, um Producer/Consumer (P/C)-Anordnungsregeln entlang einer Schnittstelle umzusetzen, die in einer Mehrfachprozessor-Computersystemarchitektur inhärent ungeordnet ist.
  • 2. Beschreibung der verwandten Technik
  • Mehrfachprozessor-Computersysteme sind gestaltet, um eine Anzahl zentraler Verarbeitungseinheiten (CPUs) aufzunehmen, die durch einen gemeinsamen Systembus oder Schalter mit einem Speicher und einer Anzahl externer Eingabe-/Ausgabe-Vorrichtungen verbunden sind. Der Zweck des Bereitstellens einer Vielzahl zentraler Verarbeitungseinheiten besteht darin, die Leistung der Vorgänge zu erhöhen, indem Aufgaben zwischen den Prozessoren aufgeteilt werden. Solch eine Anordnung ermöglicht, daß die Computer gleichzeitig eine Anzahl unterschiedlicher Anwendungen unterstützen und I/O-Komponenten unterstützen, die zum Beispiel über ein Netzwerk kommunizieren und Bilder auf angeschlossenen Anzeigevorrichtungen anzeigen. Mehrfachprozessor-Computersysteme werden in der Regel für Unternehmens- und Netzwerkserversysteme benutzt.
  • Ein Eingabe-/Ausgabe-Knotenpunkt kann als ein Verbindungspunkt zwischen verschiedenen Eingabe-/Ausgabe-Brückenkomponenten, an welche Eingabe-/Ausgabe-Komponenten angeschlossen sind, und schließlich zu den zentralen Verarbeitungseinheiten bereitgestellt werden. Viele Eingabe-/Ausgabe-Komponenten sind periphere Komponentenverbindungs-(Peripheral Component Interconnect = PCI) („PCI Local Bus Specification", Revision 2.1, 1. Juni 1995, von der PCI Special Interest Group (PCI-SIG))-Vorrichtungen und Softwaretreiber, welche sich an das PCI-Producer-Consumer (P/C)-Modell und seine Anordnungsregeln und Anforderungen halten. ("PCI Local Bus Specification", Revision 2.1, Anhang E, „System Transaction Ordering"). Zum Beispiel ermöglichen diese Anordnungsregeln, daß Schreibvorgänge für eine höhere Leistungsfähigkeit nachgeschrieben werden, wobei gleichzeitig eine „Richtigkeit" gewährleistet wird. Nachschreiben bedeutet, daß die Transaktion von einem Zwischenmittel, zum Beispiel einer Brücke von einem Bus zu dem anderen erfaßt wird, so daß die Transaktion bei der Quelle vollendet wird, bevor sie bei dem beabsichtigten Zielort tatsächlich vollendet wird. Das Nachschreiben ermöglicht, daß die Quelle den nächsten Vorgang ausführen kann, noch während die Transaktion auf dem Weg durch das System zu seinem Endziel ist. Mit anderen Worten bedeutet das Nachschreiben in einer PCI-Vorrichtung, daß die ausgegebenen Schreibvorgänge keine „komplette" Antwort zurücksenden sollen. Das heißt, wenn Nachschreibvorgänge ausgegeben werden, wird keine Bestätigung zurückgesendet, die anzeigt, daß der Schreivorgang vollendet ist. Der Ausdruck „Richtigkeit" impliziert, daß eine Flagge oder ein Semaphor benutzt werden kann, um einen Datenpuffer zwischen einem Producer-Consumer-Paar zu schützen.
  • Kohärente Schnittstellen, welche den I/O-Knotenpunkt und sich schließlich mit den Prozessoren verbinden, sind inhärent ungeordnet. Aus diesem Grund sind die Anordnungsregeln unter dem P/C-Modell strenger als diejenigen für eine kohärente Schnittstelle, die möglicherweise gar keine Anordnungsregeln aufweist. Kohärente Schnittstellen wie ein Vorderseitenbus oder Intel-Skalierbarkeitsanschluß sind inhärent geordnet, da die Prozessoren, für welche die kohärente Schnittstelle gestaltet wurde, komplexe Vorrichtungen sind. Diese Prozessoren haben die Intelligenz, zu unterscheiden, wann eine Anordnung erforderlich ist und wann nicht. Aus diesem Grund können kohärente Schnittstellen im Allgemeinen Vollendungen unabhängig von Anforderungen (in beide Richtungen) behandeln. PCI-Vorrichtungen sind im Allgemeinen jedoch nicht so komplex und relativ kostenintensiv und verlassen sich deshalb auf Systemanordnungsregeln, um Blockierungen zu vermeiden. PCI-Anordnungsregeln sind jedoch beim Lockern der Anordnungsanforderungen spezifischer Transaktionen relativ flexibel.
  • Der Erhalt der Verwendung von PCI-Vorrichtungen und Vorrichtungen, welche dem P/C-Anordnungsmodell folgen, ist besonders vorteilhaft, da sie im Allgemeinen im Hinblick auf die Kostenempfindlichkeit konzipiert werden. Dementsprechend wird eine kosteneffektive optimierte Chipsatzumsetzung benötigt, welche zwischen einer geordneten Domäne (welche eine PCI-Anordnung erfordert und dem P/C-Anordnungsmodell folgt) und einer ungeordneten Domäne wie einer kohärente Schnittstelle in Verbindung mit mehreren Prozessoreinheiten ohne das Einschreiten zusätzlicher Software oder Hardware eine Brücke bildet. Da eine PCI-Vorrichtung im Allgemeinen im Hinblick auf die Kostenempfindlichkeit konzipiert wird und sich die Lockerungen der PCI-Anordnungsregeln nicht zu Nutze machen kann, besteht ein Bedarf an einem System, das sich die Leistungsoptimierungen zu Nutze machen kann, die mit den PCI-Anordnungsregeln möglich sind, indem alle Anordnungslockerungsfähigkeiten zugunsten dieser Vorrichtungen eingesetzt werden, während gleichzeitig sämtliche Blockierungsanfälligkeiten und Leistungsnachteile vermieden werden.
  • EP 0 747 831 A2 offenbart ein Datenverarbeitungssystem, das einen Hostprozessor, eine Anzahl peripherer Vorrichtungen und eine oder mehrere Brücken aufweist, durch die der Host, die peripheren Vorrichtungen und andere Hosts oder periphere Vorrichtungen wie in einem Netzwerk verbunden werden können. Jede Bus-zu-Bus-Brücke ist zwischen einem primären Bus und einem sekundären Bus verbunden und weist einen ausgehenden Datenpfad, einen eingehenden Datenpfad und einen Steuermechanismus auf. Der ausgehende Datenpfad weist einen Warteschlangenpuffer zum Speichern von Transaktionen in der Reihenfolge des Empfangs aus dem primären Bus auf. Der eingehende Pfad ist ein Spiegelbild des ausgehenden Pfads mit Leseanforderungen und Schreibanforderungen, die in einem sequentiellen Puffer gespeichert sind, und mit Leseantworten, die in einer Anzahl paralleler Puffer gespeichert sind.
  • Gemäß der Erfindung wird ein verbesserter Eingabe-/Ausgabe-Knotenpunkt wie in Anspruch 1 definiert bereitgestellt.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 stellt einen Eingabe-/Ausgabe-Knotenpunkt nach einer Ausführungsform der vorliegenden Erfindung dar;
  • 2A stellt eine eingehende Transaktion durch eine eingehende Anordnungswarteschlange (IOQ) gemäß einer Ausführungsform der vorliegenden Erfindung dar;
  • 2B stellt eine ausgehende Transaktion durch eine ausgehende Anordnungswarteschlange (OOQ) gemäß einer Ausführungsform der vorliegenden Erfindung dar; und
  • 3 stellt eine Eingabe-/Ausgabe-Systemarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung dar.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 stellt einen Eingabe-/Ausgabe-Knotenpunkt gemäß einer Ausführungsform der vorliegenden Erfindung dar. Der I/O-Knotenpunkt 100 weist eine geordnete Domäne und eine ungeordnete Domäne auf. Innerhalb der geordneten Domäne ermöglichen ein oder mehrere funktionelle Blöcke 102, 104 die eingehenden und ausgehenden Transaktionen zwischen der I/O-Komponente oder den I/O-Komponenten 160, 170 und dem ungeordneten Protokoll 110. Jeder funktionelle Block 102, 104 weist eine eingehende Anordnungswarteschlange (IOQ) 120, einen IOQ-Leseumleitungspuffer (RBB) 125 und eine ausgehende Anordnungswarteschlange (OOQ) 130 und einen OOQ-Leseumleitungspuffer (RBB) 135 auf.
  • Innerhalb der ungeordneten Domäne empfängt ein eingehender Multiplexer 180 Daten und Signale aus dem funktionellen Block oder den funktionellen Blöcken 102, 104 der geordneten Domäne (und genauer aus der IOQ 120 und dem IOQ-RBB 125). Ein ausgehender Demultiplexer 190 innerhalb der ungeordneten Domäne empfängt Daten und Signale aus dem ungeordneten Protokoll 110, zum Beispiel eine kohärente Schnittstelle wie den Skalierbarkeitsanschluß zur Übertragung zu der geordneten Domäne (und genauer zu der OOQ 130 des funktionellen Blocks oder der funktionellen Blöcke 102, 104).
  • Mindestens eine geordnete P/C-Eingabe-/Ausgabe-Schnittstelle 140, 150 wird bereitgestellt, um mit den Eingabe-/Ausgabe-Vorrichtungen oder -Komponenten 160, 170 wie den PCI-Vorrichtungen verbunden zu werden. Die geordnete P/C-Schnittstelle 140, 150 ist in der Regel jedoch nicht direkt mit den I/O-Vorrichtungen oder -Komponenten 160, 170 verbunden. Eine Zwischenvorrichtung wie eine Knotenpunktverknüpfung oder Eingabe/Ausgabe-Brücke wie eine Intel P64H2 Hub Interface-to-PCI-Bridge oder eine VXB InfiniBand („InfiniBand Architecture Specification", Version 1.0, 19. Juni 2001, von der InfiniBand Trade Association) Bridge ist im Allgemeinen mit der geordneten P/C-Schnittstelle 140, 150 verbunden, mit welcher sich die I/O-Vorrichtungen oder -Komponenten 160, 170 verbinden. Jede P64H2-Brücke weist zum Beispiel zwei PCI-X („PCI-X Specification", Revision 1.0a, 29. August 2000, von der PCI-SIG)-Segmente auf, mit denen sich die I/O-Vorrichtungen oder -Komponenten 160, 170 verbinden können. PCI-X ist eine Hochleistungserweiterung zu dem lokalen PCI-Bus mit einer erhöhten Bandbreite und Busleistung.
  • Der I/O-Knotenpunkt 100 gemäß einer Ausführungsform der vorliegenden Erfindung wird in zwei Domänen „geschnitten": eine geordnete Domäne und eine ungeordnete Domäne. Die geordnete Domäne hält sich an die Producer-Consumer-Anordnungsregeln, die in der PCI-Spezifikation beschrieben sind, und kann auf viele verschiedene Arten und Weisen ausgeführt werden. Die ungeordnete Domäne weist keine Anordnungsregeln auf. Durch das Umsetzen des I/O-Knotenpunkts 100 gemäß dem Schichtansatz der vorliegenden Erfindung kann die Producer-Consumer-Anordnung entlang einer ungeordneten Schnittstelle erhalten werden.
  • Eingehende Anordnungswarteschlangen (IOQs) 120 sind für das Anordnen in einer Warteschlange der eingehenden Lese- und Schreibtransaktionen/-anforderungen verantwortlich, welche auf den Hauptspeicher oder eine I/O-Partnerkomponente abzielen. Die IOQ 120 ist vorzugsweise in einer first-in-first-out (FIFO)-Weise konfiguriert, welche durchsetzt, daß eingehende Lese- und Schreibtransaktionen/-anforderungen eingehende Schreibvorgänge (das heißt, Schreibdaten) nicht umleiten können. Darüber hinaus werden ausgehende Lese- und Schreibvollendungen (Daten, die für Lesevorgänge zurückkehren, die auf eine I/O-Komponente abzielen) zusammen mit sämtlichen anderen ausgehenden speziellen Zyklen auch in der IOQ 120 angeordnet. Unter Verwendung dieser Konfiguration kann eine Producer-Consumer-„Richtigkeit" gewährleistet werden.
  • Unter den PCI-Anordnungsregeln sind Nachschreibvorgänge gestattet. Jedoch sind in der ungeordneten Domäne Nachschreibtransaktionen nicht erlaubt. Dementsprechend erfordern sowohl Lese- als auch Schreibtransaktionen eine Transaktionsvollendung. Aus diesem Grund werden Schreibvorgänge in der IOQ 120 an die ungeordnete Domäne abgegeben und werden nicht freigegeben, bis die ungeordnete Schnittstelle zu einer Vollendung (zu der OOQ 130) zurückkehrt.
  • Wenn eine direkte Transaktion abgegeben wird, wird sie für die Zielschnittstelle (entweder auf dem gleichen I/O-Knotenpunkt oder einem anderen I/O-Knotenpunkt) nicht ermöglicht, bis alle vorherigen Schreibvorgänge in der IOQ 120 vollendet worden sind. Diese Einschränkung gewährleistet eine angemessene Anordnung, wenn die Daten und der Semaphor in unterschiedlichen Zielorten angeordnet sind, zum Beispiel besteht der erste Schreibvorgang aus Daten für den Hauptspeicher und der direkte Schreibvorgang ist für einen Semaphor auf der I/O-Partnerkomponente.
  • Im Hinblick auf direkte Schreibtransaktionen, die zwischen zwei I/O-Knotenpunkten strömen, gibt es eine gewisse Zeit, in welcher der Nachschreibvorgang durch die ungeordnete Struktur strömt, bevor er die geordnete Domäne in dem I/O-Zielknotenpunkt erreicht. Deshalb darf der Schreibvorgang (selbst wenn er direkt ist und auf die geordnete Domäne abzielt) keine aufeinanderfolgenden Zugriffe erlauben, bis garantiert ist, daß sich der Partnerschreibvorgang in der geordneten Domäne des Zielorts befindet. Diese Anforderung gewährleistet die „Vollendung" für den Nachschreibvorgang.
  • Die Anzahl von eingesetzten IOQs 120 hängt von der Anzahl unabhängiger Datenströme ab, für welche der I/O-Knotenpunkt optimiert ist. Mindestens eine Warteschlange pro Anschluß stellt ein korrektes Verhalten bereit, jedoch würde eine Warteschlange pro unabhängigen Strom die Anordnungseinschränkungen zwischen unabhängigen Datenströmen auf diesem Anschluß lockern.
  • Die ausgehenden Anordnungswarteschlangen (OOQs) 130 bewahren zusammen mit dem OOQ-Leseumleitungspuffer (RBB) 135 die Producer-Consumer-Anordnung, indem sie sowohl ausgehende Transaktionen (zum Beispiel Lese- und Schreibanforderungen) als auch Vollendungen für eingehende Transaktionen aufweisen. Wie oben erwähnt, erfordert die ungeordnete Domäne gemäß einer Ausführungsform der vorliegenden Erfindung Vollendungen sogar für Schreibtransaktionen. Der I/O-Knotenpunkt 100 ist für das Nachschreiben dieser ausgehenden Schreibvorgänge für eine optimale Leistung in der geordneten Domäne verantwortlich und tut dies, indem eine Vollendungsantwort (aus der OOQ 130) für den Schreibvorgang erst abgegeben wird, nachdem er die OOQ 130 erreicht hat. Die Vollendung wird bei Eintritt in die OOQ 130 ausgegeben, weshalb die Latenz schneller ist, da die Vollendung im Vergleich zu ihrer Rückgabe nach Erreichen der geordneten P/C-Schnittstelle 140, 150 früher zurückgegeben wird. Auf ähnliche Weise könnten theoretisch Lesevorgänge die OOQ 130 auffüllen. Um zu verhindern, daß dieser „Gegendruck" in die ungeordnete Domäne strömt (was das Stattfinden des Schreibvorgangs verhindern könnte), werden Lesetransaktionen in den RBB 135 geschoben und dann, falls erlaubt, bei der Grenzlinie der geordneten Domäne wiederholt.
  • Die IOQ 120 und die OOQ 130 weisen jeweils mindestens einen entsprechenden Leseumleitungspuffer (RBB) 125, 135 auf. Der Leseumleitungspuffer 125, 135 ermöglicht, daß Nachschreibvorgänge und Lese-/Schreibvollendungen nach verzögerten Leseanforderungen fortschreiten, welche darauf warten, daß ihre Vollendungen zurückkehren. Sie gelten sowohl für eingehenden als auch für ausgehenden Verkehr. Das heißt, wenn ein Nachschreibvorgang oder eine Lese-/Schreibvollendung durch die IOQ 120 oder OOQ 130 fortschreiten muß, werden die (verzögerten) Lesetransaktionen/-anforderungen innerhalb der IOQ 120 oder OOQ 130 in die jeweiligen RBBs 125, 135 beiseite „geschoben", um zu ermöglichen, daß der Nachschreibvorgang oder die Lese-/Schreibvollendung durch die IOQ 120 oder OOQ 130 fortschreitet. Danach wird die erste „beiseite geschobene" Aufgabe in der Warteschlange des RBBs 125, 135 erprobt, wenn der Blockierungszustand aufgehoben ist, der die Verzögerung verursacht. Zwischen den Lesetransaktionen innerhalb der RBBs 125, 135 und den nachfolgenden Transaktionen innerhalb der IOQ 120 und OOQ 130 wird dann vermittelt, um vollendet zu werden. Der Leseumleitungspuffer 125, 135 gewährleistet einen blockierungsfreien Betrieb in der geordneten Domäne.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung wird ein funktioneller Block 102, 104 (der eine IOQ 120 und eine OOQ 130 aufweist) mit jeder geordneten P/C-Schnittstelle 140, 150 bereitgestellt. Obwohl die Ausführungsform in 1 zwei funktionelle Blöcke 102, 104 und eine entsprechende geordnete P/C-Schnittstelle 140, 150 für jeden funktionellen Block 102, 140 darstellt, kann jede beliebige geeignete Konfiguration und Anzahl von funktionellen Blöcken und geordneten P/C-Schnittstellen benutzt werden.
  • 2A stelle eine eingehende Transaktion durch eine eingehende Anordnungswarteschlange (IOQ) gemäß einer Ausführungsform der vorliegenden Erfindung dar. Die geordnete P/C-Schnittstelle 140, 150 (durch die Leitung der I/O-Komponente 160, 170) gibt eine Lese- oder Schreibtransaktion/-anforderung oder -vollendung an die IOQ 120 des I/O-Knotenpunktes 100 ab 202. Die Lese-/Schreibtransaktion oder -vollendung wird in der IOQ 120 angeordnet 204. Wenn die IOQ 120 voll ist, werden Lesetransaktionen in der IOQ 120 beiseite in den IOQ-Leseumleitungspuffer 125 geschoben 206, um zu ermöglichen, daß eingehende Schreibtransaktion(en) oder Lese-/Schreibvollendung(en) durch die IOQ 120 und zu dem ungeordneten Protokoll 110 fortschreiten. Wenn die Lesevorgänge beiseite geschoben werden, werden nachfolgende Lesetransaktionen auf der geordneten Schnittstelle 140, 150 wiederholt. Anderenfalls werden die Lese- oder Schreibtransaktionen oder -vollendungen, die in der IOQ 120 angeordnet sind, zu dem ungeordneten Protokoll 110 vorzugsweise in einer first-in-first-out (FIFO)-Weise weitergeleitet 208. Schreibtransaktionen müssen auf eine Vollendung aus dem ungeordneten Protokoll 110 warten 210, bevor nachfolgende Transaktionen stattfinden dürfen. Dieses Schema wird benutzt, um innerhalb des Systems eine Ordnung zu bewahren.
  • 2B stellt eine ausgehende Transaktion durch eine ausgehende Anordnungswarteschlange (OOQ) gemäß einer Ausführungsform der vorliegenden Erfindung dar. Mindestens eine Lese- oder Schreibtransaktion/-anforderung und eine Lesevollendung werden aus dem ungeordneten Protokoll 110, zum Beispiel einer kohärenten Schnittstelle wie einem Skalierbarkeitsanschluß an die OOQ 130 des I/O-Knotenpunkts 100 abgegeben. Die mindestens eine Lese- oder Schreibtransaktion und die Lesevollendung werden in der OOQ 130 angeordnet 222. Eine Vollendung wird an die ungeordnete Schnittstelle 110 für einen ausgehenden Schreibvorgang bei Eintritt in die OOQ 130 abgegeben. Wenn die OOQ 130 voll ist, werden Lesetransaktionen in der OOQ 130 in den OOQ-Leseumleitungspuffer 135 beiseite geschoben 226, um zu ermöglichen, daß eingehende Schreibtransaktion(en) oder Lese-/Schreibvollendung(en) durch die OOQ 130 und zu der geordneten P/C-Schnittstelle 140, 150 fortschreiten. Wenn die Lesungen beiseite geschoben worden sind, werden auf der ungeordneten Schnittstelle 110 nachfolgende Lesetransaktionen wiederholt. Anderenfalls werden die Lese- oder Schreibtransaktionen oder -vollendungen, die in der OOQ 130 angeordnet sind, zu der geordneten P/C-Schnittstelle 140, 150 und schließlich zu der I/O-Komponente 160, 170 weitergeleitet 228.
  • 3 stellt eine Eingabe-/Ausgabe-Systemarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung dar. Wie oben beschrieben, kann der I/O-Knotenpunkt 100 geordnete P/C-Schnittstellen aufweisen, die mit einer Zwischenvorrichtung wie einer Knotenpunktverknüpfung oder Eingabe-/Ausgabe-Brücke wie einer PCI-X-Brücke 360 oder eine Infini-Band-Brücke 370 verbunden sind. Die I/O-Komponenten oder -Vorrichtungen 160, 170 (aus 1) werden dann mit den Zwischenvorrichtungen 360, 370 verbunden. Der I/O-Knotenpunkt 100 kann auch eine I/O-Schnittstelle aufweisen, die sich mit einer älteren Eingabe-/Ausgabe-Brücke 350 verbindet, um mit Verbindungen zu älteren I/O-Komponenten oder -Vorrichtungen umzugehen.
  • Der I/O-Knotenpunkt 100 ist gestaltet, um sich mit einer kohärenten Schnittstelle wie einem Skalierbarkeitsanschluß 340 zu verbinden, der eine cache-kohärente Schnittstelle ist, die für skalierbare Mehrfachknotensysteme optimiert ist, welche zwischen allen Prozessoren und deren Cache-Speichern eine Kohärenz bewahren. Der Skalierbarkeitsanschluß 340 kann sich wiederum mit mindestens einer Skalierbarkeitsknotensteuerung 320 verbinden, welche die Schnittstelle zwischen den Prozessoren 310, dem Hauptspeicher 330, zum Beispiel einem dynamischen wahlfreien Zugriffsspeicher (DRAM) und dem Skalierbarkeitsanschluß 340 steuert.
  • Zusammengefaßt ermöglicht der I/O-Knotenpunkt 100 gemäß der vorliegenden Erfindung den Erhalt der Verwendung von PCI-Vorrichtungen und Vorrichtungen, die dem P/C-Anordnungsmodell folgen, die im Allgemeinen im Hinblick auf die Kostenempfindlichkeit gestaltet sind. Der I/O-Knotenpunkt 100 stellt eine kosteneffektive optimierte Chipsatzumsetzung wie in dem Intel-870-Chipsatz bereit, der zwischen einer geordneten Domäne (die eine PCI-Anordnung erfordert und dem P/C-Anordnungsmodell folgt) und einer ungeordneten Domäne wie einer kohärenten Schnittstelle ohne die Hilfe zusätzlicher Software oder Hardware eine Brücke bildet. Da eine PCI-Vorrichtung im Allgemeinen im Hinblick auf die Kostenempfindlichkeit konzipiert wird und sich die Lockerungen der PCI-Anordnungsregeln nicht zu Nutze machen kann, macht sich der I/O-Knotenpunkt 100 der vorliegenden Erfindung die Leistungsoptimierungen zu Nutze, die mit den PCI-Anordnungsregeln möglich sind, indem alle Anordnungslockerungsfähigkeiten zugunsten dieser Vorrichtungen eingesetzt werden, während gleichzeitig sämtliche Blockierungsanfälligkeiten und Leistungsnachteile vermieden werden.
  • Wenngleich sich die obige Beschreibung auf bestimmte Ausführungsformen der vorliegenden Erfindung bezieht, versteht es sich, daß viele Modifikationen vorgenommen werden können, ohne von der Wesensart davon abzuweichen. Die beiliegenden Ansprüche sollen solche Modifikationen abdecken, die innerhalb des wahren Schutzbereichs der vorliegenden Erfindung fallen. Die hier offenbarten Ausführungsformen sind deshalb in jeder Hinsicht als erläuternd und nicht als einschränkend anzusehen, wobei der Schutzbereich der Erfindung durch die angehängten Ansprüche und nicht durch die vorstehende Beschreibung definiert ist und folglich alle Veränderungen, die der Bedeutung und dem Bereich der Ansprüche entsprechen, darin umfasst sein sollen.

Claims (10)

  1. Eingabe-/Ausgabe-Knotenpunkt, umfassend: eine eingehende Anordnungswarteschlange IOQ (120), um eingehende Transaktionen zu empfangen, die auf den Hauptspeicher oder eine I/O-Peerkomponente abzielen, wobei empfangene Lese- und Schreibtransaktionen eine Transaktionsvollendung aus einer ungeordneten Domäne empfangen, eine Peer to Peer-Transaktion einen Zielort nicht erreichen darf, bis alle vorherigen Schreibvorgänge in der IOQ (120) vollendet worden sind, und wobei eine Peer to Peer-Schreibtransaktion kein Stattfinden nachfölgender Zugriffe ermöglicht, bis gewährleistet ist, daß sich der Schreibvorgang in einer geordneten Domäne des Zielorts befindet; einen IOQ-Leseumleitungspuffer (125), um Lesetransaktionen zu empfangen, die aus der IOQ (120) geschoben worden sind, um zu ermöglichen, daß Nachschreibvorgänge (posted write) und Lese-/Schreibvollendungen durch die IOQ (120) fortschreiten, wobei die Lesetransaktionen darauf warten, daß ihre Vollendungen zurückkehren, eine ausgehende Anordnungswarteschlange OOQ (130), um ausgehende Transaktionen aus einem ungeordneten Protokoll (110) zu speichern, das eine geordnete I/O-Komponente bestimmt, um Vollendungen der eingehenden Transaktionen zu speichern und eine Schreibvollendung für einen ausgehenden Schreibvorgang an die ungeordnete Domäne abzugeben; und einen OOQ-Leseumleitungspuffer (135), um Lesetransaktionen zu empfangen, die aus der OOQ (130) geschoben worden sind, um zu ermöglichen, daß Nachschreibvorgänge und die Lese-/Schreibvollendungen durch die OOQ (130) fortschreiten, wobei die ungeordnete Domäne (180, 190) die eingehenden Transaktionen empfängt, die aus der IOQ (120) übertragen werden, und die ausgehenden Transaktionen aus dem ungeordneten Protokoll empfängt, bevor die ausgehenden Transaktionen an die OOQ gesendet werden.
  2. Eingabe-/Ausgabe-Knotenpunkt nach Anspruch 1, wobei die IOQ (120) nicht ermöglicht, daß die eingehenden Lese- und Schreibtransaktionen eingehende Schreibdaten umleiten.
  3. Eingabe-/Ausgabe-Knotenpunkt nach Anspruch 1, wobei das ungeordnete Protokoll eine kohärente Schnittstelle aufweist.
  4. Eingabe-/Ausgabe-Knotenpunkt nach Anspruch 1, wobei die kohärente Schnittstelle ein Skalierbarkeitsanschluß ist.
  5. Eingabe-/Ausgabe-Knotenpunkt nach einem der vorhergehenden Ansprüche, wobei die ungeordnete Domäne (180, 190) Folgendes aufweist: einen eingehenden Multiplexer (180), um die eingehenden Transaktionen aus der geordneten Domäne zu dem ungeordneten Protokoll (110) zu empfangen, und einen ausgehenden Demultiplexer (190), um die ausgehenden Transaktionen aus dem ungeordneten Protokoll (110) zu der geordneten Domäne zu empfangen.
  6. Eingabe-/Ausgabe-Knotenpunkt nach Anspruch 5, der ferner mindestens eine geordnete Producer-Consumer-Schnittstelle (140, 150) aufweist, die mit der geordneten Domäne in Verbindung steht.
  7. Eingabe-/Ausgabe-Knotenpunkt nach Anspruch 6, der ferner eine Eingabe-/Ausgabe-Vorrichtung (160, 170) aufweist, die mit der geordneten Producer-Consumer-Schnittstelle (140, 150) verbunden ist.
  8. Eingabe-/Ausgabe-Knotenpunkt nach Anspruch 7, der ferner eine Zwischenvorrichtung aufweist, welche die geordnete Producer-Consumer-Schnittstelle (140, 150) und eine Eingabe-/Ausgabe-Vorrichtung (160, 170) miteinander verbindet.
  9. Eingabe-/Ausgabe-Knotenpunkt nach Anspruch 7, wobei die Eingabe-/Ausgabe-Vorrichtung (160, 170) eine periphere Komponentenverbindungsvorrichtung ist.
  10. Computersystem, umfassend: mehrere Prozessoreinheiten mit Zugang zu Cache-Speichern; einen Hauptspeicher; eine kohärente Schnittstelle, um die Kohärenz zwischen den Prozessoreinheiten und ihren Cache-Speichern zu bewahren; eine Skalierbarkeitsknotensteuerung, welche die Prozessoreinheiten, den Hauptspeicher und die kohärente Schnittstelle miteinander verbindet, um die Schnittstelle dazwischen zu steuern; und einen Eingabe-/Ausgabe-Knotenpunkt nach einem der vorhergehenden Ansprüche, der mit der kohärenten Schnittstelle in Verbindung steht.
DE60217132T 2001-08-27 2002-08-01 Vorrichtung zur erhaltung der producer-consumer anordnung entlang einer ungeordneten schnittstelle Expired - Lifetime DE60217132T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/940,292 US6801976B2 (en) 2001-08-27 2001-08-27 Mechanism for preserving producer-consumer ordering across an unordered interface
US940292 2001-08-27
PCT/US2002/024651 WO2003019398A1 (en) 2001-08-27 2002-08-01 Mechanism for preserving producer-consumer ordering across an unordered interface

Publications (2)

Publication Number Publication Date
DE60217132D1 DE60217132D1 (de) 2007-02-08
DE60217132T2 true DE60217132T2 (de) 2007-10-25

Family

ID=25474578

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60217132T Expired - Lifetime DE60217132T2 (de) 2001-08-27 2002-08-01 Vorrichtung zur erhaltung der producer-consumer anordnung entlang einer ungeordneten schnittstelle

Country Status (8)

Country Link
US (1) US6801976B2 (de)
EP (1) EP1421503B1 (de)
KR (1) KR100545952B1 (de)
CN (1) CN100432972C (de)
AT (1) ATE349735T1 (de)
DE (1) DE60217132T2 (de)
TW (1) TW571223B (de)
WO (1) WO2003019398A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754734B2 (en) * 2001-12-18 2004-06-22 International Business Machines Corporation Systems, methods, and computer program products to improve performance of ported applications, such as a database
US6912612B2 (en) * 2002-02-25 2005-06-28 Intel Corporation Shared bypass bus structure
DE10234933A1 (de) * 2002-07-31 2004-03-18 Advanced Micro Devices, Inc., Sunnyvale Pufferung von Non-Posted-Lesebefehlen und Antworten
US6941407B2 (en) * 2002-09-27 2005-09-06 Hewlett-Packard Development Company, L.P. Method and apparatus for ordering interconnect transactions in a computer system
US7000060B2 (en) * 2002-09-27 2006-02-14 Hewlett-Packard Development Company, L.P. Method and apparatus for ordering interconnect transactions in a computer system
US6976142B1 (en) * 2003-05-07 2005-12-13 Agilent Technologies, Inc. Method and system to provide simultaneous access by multiple pipelines to a table
US7117287B2 (en) * 2003-05-30 2006-10-03 Sun Microsystems, Inc. History FIFO with bypass wherein an order through queue is maintained irrespective of retrieval of data
US7165131B2 (en) * 2004-04-27 2007-01-16 Intel Corporation Separating transactions into different virtual channels
US7346713B2 (en) * 2004-11-12 2008-03-18 International Business Machines Corporation Methods and apparatus for servicing commands through a memory controller port
GB0622408D0 (en) * 2006-11-10 2006-12-20 Ibm Device and method for detection and processing of stalled data request
US8689237B2 (en) 2011-09-22 2014-04-01 Oracle International Corporation Multi-lane concurrent bag for facilitating inter-thread communication
US8607249B2 (en) * 2011-09-22 2013-12-10 Oracle International Corporation System and method for efficient concurrent queue implementation
US8782356B2 (en) * 2011-12-09 2014-07-15 Qualcomm Incorporated Auto-ordering of strongly ordered, device, and exclusive transactions across multiple memory regions
WO2013105967A1 (en) 2012-01-13 2013-07-18 Intel Corporation Efficient peer-to-peer communication support in soc fabrics
US9477622B2 (en) * 2012-02-07 2016-10-25 Intel Corporation Deterministic method to support multiple producers with multiple consumers in peer or hierarchical systems
CN103532875B (zh) * 2013-10-12 2017-11-03 丁贤根 一种用于pcie应用层接口的重排序方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546546A (en) * 1994-05-20 1996-08-13 Intel Corporation Method and apparatus for maintaining transaction ordering and arbitrating in a bus bridge
US5694556A (en) 1995-06-07 1997-12-02 International Business Machines Corporation Data processing system including buffering mechanism for inbound and outbound reads and posted writes
US5925099A (en) 1995-06-15 1999-07-20 Intel Corporation Method and apparatus for transporting messages between processors in a multiple processor system
US5828865A (en) 1995-12-27 1998-10-27 Intel Corporation Dual mode bus bridge for interfacing a host bus and a personal computer interface bus
US6243781B1 (en) 1998-12-03 2001-06-05 Intel Corporation Avoiding deadlock by storing non-posted transactions in an auxiliary buffer when performing posted and non-posted bus transactions from an outbound pipe
US6219737B1 (en) 1998-12-10 2001-04-17 International Business Machines Corporation Read request performance of a multiple set buffer pool bus bridge

Also Published As

Publication number Publication date
EP1421503A1 (de) 2004-05-26
EP1421503B1 (de) 2006-12-27
WO2003019398A1 (en) 2003-03-06
US20030041185A1 (en) 2003-02-27
KR20040029448A (ko) 2004-04-06
DE60217132D1 (de) 2007-02-08
TW571223B (en) 2004-01-11
KR100545952B1 (ko) 2006-01-26
CN100432972C (zh) 2008-11-12
US6801976B2 (en) 2004-10-05
CN1575459A (zh) 2005-02-02
ATE349735T1 (de) 2007-01-15

Similar Documents

Publication Publication Date Title
DE60217132T2 (de) Vorrichtung zur erhaltung der producer-consumer anordnung entlang einer ungeordneten schnittstelle
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE69725687T2 (de) Transaktionsübertragung zwischen Datenbussen in einem Rechnersystem
DE69610157T2 (de) Ein Ein-/Ausgabeprozessor der gemeinsame Betriebsmittel einem Ein-/Ausgabebus in einem Rechner zur Verfügung stellt
DE69423056T2 (de) Arbitrierungslogik für Mehrfachbus-Rechnersystem
DE3789104T2 (de) Netzwerkübertragungsadapter.
DE68928316T2 (de) Vorrichtung zur anteiligen nutzung von betriebsmitteln eines hauptrechners zwischen einer vielzahl von entfernten rechnern
DE68925763T2 (de) Verbindungs- und Zugriffsarbitrierungsanordnung für Multiprozessorsystem
DE60217221T2 (de) Ein-Chip System zur Paketverarbeitung
DE69132652T2 (de) Rechnerdatenleitweglenkungssystem
DE68924313T2 (de) Mehrprozessoranordnungen mit kreuzweise abgefragten Schreib-in-Cachespeichern.
DE69736872T2 (de) Datenverarbeitungssystem
DE112008001957B4 (de) Systeme und Verfahren zum Verbessern der Leistungsfähigkeit eines routfähigen Netzwerks
DE102008055892A1 (de) Abspeichern von Abschnitten eines Datenübertragungsdeskriptors in einem gecachten und einem nicht gecachten Adressbereich
DE602005004508T2 (de) Speichersystem und Speichersteuerverfahren
DE112005002364T5 (de) Heterogene Prozessoren mit gemeinsamem Cache
DE112012004551T5 (de) Mehrkernverknüpfung in einem Netzprozessor
DE102015102692A1 (de) Verfahren zum Optimieren von Netzdatenströmen in einem eingeschränkten System
DE112004002043B4 (de) Verfahren, System und Programm zum Aufbau eines Pakets
DE112007001135T5 (de) Gemeinschaftliche Nutzung von Daten durch Partitionen in einem partitionierbaren System
DE112021001408T5 (de) Verwendung kohärent verbundener schnittstellen in einem netzwerkstapelrahmen
DE69230483T2 (de) Quadraturbusprotokoll zum Ausführen von Transaktionen in einer Rechneranordnung
DE102018005759A1 (de) Verbinden von beschleunigerressourcen unter verwendung einesswitches
DE10214067B4 (de) Integrierter Schaltkreischip mit Hochgeschwindigkeitsdatenschnittstelle sowie zugehöriges Southbridgebauelement und Verfahren
DE69326705T2 (de) Verfahren und Anordnung zur Feststellung der Befehlsablauffolge in einem Datenverarbeitungssystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition