-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft ein synchrones Bussystem und ein
entsprechendes Verfahren.
-
STAND DER
TECHNIK
-
Das
U.S. Patent US-A-5,101,347 offenbart ein System zur Übertragung
digitaler Datenzeichen in parallelen Datenschlitzen sowie eine Technik
zur Verbesserung der Busübertragungsraten,
indem ein einzelner Datenschlitz und dessen zugeordnetes Taktsignal
durch den gleichen Datenpfad fließen können.
-
Busse
werden häufig
zur Datenübertragung
zwischen Vorrichtungen bzw. Bausteinen eingesetzt. Im Allgemeinen
werden zwei Arten von Bussen verwendet, und zwar synchrone und asynchrone
Busse. In einem synchronen System arbeiten die mit dem Bus gekoppelten
Vorrichtungen bzw. Bausteine synchron zueinander. Ferner entspricht
das Zeitsteuerungsbudget für
die Datenübertragung,
das heißt
der Zeitraum von der Ausgabe der Daten von der übertragenden Vorrichtung bis
zu dem Zeitpunkt, an dem die empfangende Vorrichtung die Daten abtastet,
einem Taktzyklus. Im Zuge der zunehmenden Komplexität von Computersystemen ist
es zunehmend schwierig geworden, die Bausteine bzw. Vorrichtungen
ausreichend dicht aneinander zu verbinden, so dass die Übertragungs-
bzw. Flugzeit über
die Verbindung zuzüglich
der Einstell- und Speicherzeit des empfangenden Bausteins das Zeitsteuerungsbudget
nicht überschreitet.
-
In
einem asynchronen System ist es nicht erforderlich, dass die Takte
der empfangenden und sendenden Bausteine zueinander synchron sind.
Der empfangende Baustein muss jedoch eine Logik zum Warten über eine
Mehrzahl von Taktzyklen aufweisen, bevor die erfassten Daten ausgelesen
und abgetastet werden, um sicherzustellen, dass die Daten stabil
sind.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Vorgesehen
ist gemäß einem
ersten Aspekt der vorliegenden Erfindung ein Verfahren gemäß dem gegenständlichen
Anspruch 1.
-
Vorgesehen
ist gemäß einem
zweiten Aspekt der vorliegenden Erfindung ein Computersystem gemäß dem gegenständlichen
Anspruch 14.
-
Vorgesehen
ist gemäß einem
dritten Aspekt der vorliegenden Erfindung eine Busanordnung gemäß dem gegenständlichen
Anspruch 24.
-
Das
erfindungsgemäße System
und Verfahren stellen ein synchrones Bussystem bereit. Der sendende
Baustein sendet während
dem ersten Taktzyklus Daten und einen Strobe aus. Der empfangende
Baustein speichert die Daten auf der Basis des Strobe-Empfangs.
Der empfangende Baustein tastet die gespeicherten Daten über eine
vorbestimmte Mehrzahl von Taktzyklen nach dem ersten Taktzyklus
weiter ab. Im Gegensatz zu dem Stand der Technik entsprechenden
synchronen Bussystemen muss der Bus die Daten nicht innerhalb einem
Taktzyklus senden, abgeben und abtasten. Ein innovativer Rücksetzprozess
synchronisiert beide Bausteine derart, so dass eine einfache Logik
implementiert wird, welche die empfangenen Daten speichert und abtastet.
Im Gegensatz zu asynchronen Bussystemen kann somit auf den Overhead
verzichtet werden, der erforderlich ist, um zu gewährleisten,
dass die empfangenen ausgegebenen Daten vor dem Abtasten stabil sind.
Durch Erweiterung des zeitlichen Budgets auf mehrere Taktperioden wird
die Taktversatzempfindlichkeit verringert, da sich der Versatz über mehrere
Taktperioden verteilt.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden
für den
Fachmann auf dem Gebiet aus der folgenden genauen Beschreibung deutlich.
In den Zeichnungen zeigen:
-
1 ein
Beispiel für
ein System, das das Bussystem gemäß der vorliegenden Erfindung
verwendet;
-
die 2a, 2b, 2c, 2d und 2e die
Signalgebungstopologie eines Ausführungsbeispiels des Bussystems
gemäß der vorliegenden
Erfindung;
-
3 ein
Taktdiagramm der Strobe-Startup-Zeitsteuerungsdetails
für ein
Zeitsteuerungsbudget von zwei Taktzyklen;
-
4 die
Grundstruktur für
den Empfang von über
den Bus übertragenen
Paketen;
-
5 ein
Taktdiagramm der Details der Datenübertragung;
-
6 ein
Flussdiagramm eines Ausführungsbeispiels
des Rücksetzprozesses,
der zur Synchronisierung der Schaltkreisanordnungen des empfangenden
und des sendenden Bausteins verwendet wird;
-
7 ein
Flussdiagramm des Paketübertragungsprozesses
gemäß den Lehren
der vorliegenden Erfindung;
-
8 ein
vereinfachtes Blockdiagramm eines Ausführungsbeispiels des Flusssteuerungsmechanismus
gemäß der vorliegenden
Erfindung;
-
die 9a und 9b Flussdiagramme
eines Ausführungsbeispiels
des Prozesses zur Datenübertragung
gemäß den Lehren
der vorliegenden Erfindung;
-
die 10a, 10b und 10c Anforderungs- und Ausführungsformate, die in einem
Ausführungsbeispiel
des Systems gemäß der vorliegenden
Erfindung verwendet werden; und
-
11 ein
vereinfachtes Blockdiagramm eines Ausführungsbeispiels eines Prozesses
unter Verwendung eines durch einen Baustein konfigurierbaren Felds
gemäß den Lehren
der vorliegenden Erfindung.
-
GENAUE BESCHREIBUNG
DER ERFINDUNG
-
Die
Abbildung aus 1 zeigt ein beispielhaftes System,
das die Lehren der vorliegenden Erfindung aufweist. Es ist leicht
ersichtlich, dass die vorliegende Erfindung auf eine Vielzahl von
Systemen und Systemkonfigurationen anwendbar ist. Die Abbildung
aus 1 veranschaulicht die Bandbreite, die das erfindungsgemäße Bussystem
vorsehen kann. In Bezug auf die Abbildung aus 1 sieht
das abgebildete synchrone Bussystem 100 Verbindungen vor
zwischen einer Steuereinheit 115, die als eine Brücke zwischen
einem Mikroprozessorbus 110, mit dem ein oder mehrere Mikroprozessorbausteine
verbunden sind, oder einem Speicherbus (nicht abgebildet) fungiert,
mit dem ein oder mehrere Speicherbausteine verbunden sind, und Buserweiterungsbrücken 117, 120 und 125.
Gemäß der Abbildung
in einem Ausführungsbeispiel
erweitern und formatieren die Brücken 117 und 120 die über den
Bus 100 empfangenen Daten, um eine Ausgabe an einen 64-Bit-PCI-Bus 121 (PCI
als englische Abkürzung
von Peripheral Component Interface) oder zwei 32-Bit-PCI-Busse 122, 123 vorzusehen;
mit denen PCI-kompatible Bausteine bzw. Vorrichtungen (nicht abgebildet)
verbunden sind. Ferner ist dargestellt, dass der Bus 100 Daten
an eine Brücke
vorsehen kann, die eine Schnittstellenverbindung mit einem Grafikbus
und verbundenen Bausteinen bzw. Vorrichtungen (nicht abgebildet)
aufweist.
-
Die
Signalgebungstopologie des Bussystems gemäß der vorliegenden Erfindung
ist in den Abbildungen der 2a, 2b, 2c, 2d und 2e dargestellt.
In Bezug auf die Abbildung aus 2a verbindet
der synchrone Bus 200 eine Steuereinheit 215 mit
einer Erweiterungsbrücke 220,
wie etwa der PCI-Erweiterungsbrücke, welche
eine Überbrückung zu
einem PCI-Bus (nicht abgebildet) herstellt. In dem vorliegenden
Ausführungsbeispiel
ist eine Steuereinheit über
den Bus mit einer Buserweiterungsbrücke verbunden dargestellt.
Es ist jedoch leicht ersichtlich, dass der Bus eine Vielzahl verschiedenartiger
Bausteine und Teilsysteme verbinden kann. Die Abbildungen der 2b, 2c, 2d und 2e zeigen
Tabellen, welche die verschiedenen Signale beschreiben, die in dem
vorliegenden Ausführungsbeispiel
verwendet werden.
-
In
einem Ausführungsbeispiel
handelt es sich bei dem Bus um einen Datenbus mit einer Breite von
16 Bit, der Befehle, Adressen, Daten und Transaktions-ID-Informationen
führt.
Zusätzlich
führen
zwei zusätzliche Bits
Maskierungs- und sonstige Informationen für die Datenfelder. In einem
Ausführungsbeispiel
variiert die Funktion der beiden zusätzlichen Bits gemäß dem Taktzyklus.
Zum Beispiel sehen die Felder Bytefreigaben (Maskierungsinformationen)
vor, welche die Bytes identifizieren, die gültige Informationen aufweisen,
und wobei sie alternativ einen Befehlstyp oder eine Parität führen.
-
Der
Bus ist zwischen den sendenden und empfangenden Bausteinen bzw.
Vorrichtungen bidirektional. In dem vorliegenden Ausführungsbeispiel
handelt es sich bei den Bustransaktionen um ganze Split-Transaktionen,
und wobei sie aus einem Anforderungspaket und einem Ausführungspaket
bestehen. Das Anforderungspaket leitet eine Transaktion ein. Die
Ausführungspakete
werden zur Rückführung von
Daten verwendet sowie zur neuen Zuordnung von Pufferquellen zwischen
der Quellen- und Zielvorrichtung. Alle Transaktionen können als
eine Leseanforderung oder eine Schreibanforderung klassifiziert
werden. Leseanforderungen weisen Befehlsadressbitfreigaben für nicht
abrufbare Lesevorgänge,
Routinginformationen und eine Länge
für gewünschte Daten
auf.
-
Das
Leseausführungspaket
weist den Status der Anforderung, die als Reaktion auf die Leseanforderung
abgerufenen Daten und Routing- sowie Transaktionsinformationen zur
Identifikation der entsprechenden Anforderung auf. Eine Schreibanforderung
weist die Schreibdaten in ihrem Paket auf. Die Schreibausführung weist
keine Daten auf, zeigt jedoch an, ob der Schreibvorgang erfolgreich
ausgeführt
worden ist. Jeder Buszyklus (XCLK) ist mit dem System-Host-Taktzyklus äquivalent.
Jeder Buszyklus weist jedoch einen Halbzyklus "P" und
einen Halbzyklus "N" auf. Der Halbzyklus "P" tritt zum Beispiel auf, während der
Takt XCLK hoch ist. Der Habzyklus "N" tritt
auf, während
der Takt XCLK niedrig ist, wobei der Durchsatz somit durch die Übermittlung
von Paketen bei jedem Halbzyklus verdoppelt wird.
-
Ein
Informationspaket besteht aus einer Mehrzahl von 32-Bit-Wörtern. Einem Wort zugeordnete
Bytefreigaben werden bei jedem Zyklus XCLK über den Bus übermittelt.
Jedes Wort wird zwischen der positiven und der negativen Phase des
Bustaktzyklus vereilt, wobei die Bits [31:16] auf die positive Phase
eingestellt sind, während
die Bits [15:0] auf die negative Phase eingestellt sind. Es ist
leicht ersichtlich, dass der Bus nicht auf diese Paketstruktur beschränkt ist,
und dass eine Vielzahl von Implementierungen verwendet werden kann.
-
Ein
wichtiger Aspekt eines synchronen Hochgeschwindigkeitsbusses gemäß der vorliegenden
Erfindung ist es, dass das Rücksetzsignal
(XRST#) die Synchronisierung aller mit dem Bus verbundenen Bausteine bzw.
Vorrichtungen ermöglicht.
Nach der Synchronisierung arbeiten die sendenden und empfangenden
Bausteine synchron gemäß vorab
spezifizierten Takt- bzw. Zeitsteuerungsprotokollen, so dass sie
synchron Pakete zwischen Bausteinen bzw. Vorrichtungen über mehrere
Taktzyklen übertragen.
-
Wie
dies in der Abbildung aus 2 dargestellt
ist, erreichen das Rücksetzsignal
(XRST#) und das Taktsignal (XCLK) gleichzeitig an jeder verbundenen
Komponente, um den synchronen Betrieb aufrechtzuerhalten. In dem
vorliegenden Ausführungsbeispiel
werden die Signale XCLK und XRST# von einer Komponente 215 ausgegeben
und zu der zweiten Komponente 220 übertragen und über die
Leitungen 217, 219 zurück zu der ersten Komponente 215 übertragen,
wobei die Leitungen 217, 219 ungefähr die gleiche
Länge aufweisen wie
die Leitungen 221, 223, die zwischen die ersten
und zweiten Komponenten 215, 220 geschaltet sind.
Dies gewährleistet,
dass beide Komponenten 215, 220 die Signale gleichzeitig
empfangen und den synchronen Betrieb aufrechterhalten. Vorzugsweise
werden die Längen
der Leitungen 217, 223 so genau wie möglich angeglichen,
da die Taktzeitsteuerung kritisch ist. Die Angleichung der Leitungen 219, 221 kann
in Bezug auf die Länge
weniger genau vorgenommen werden.
-
Ein
veranschaulichendes Taktdiagramm für den Rücksetzprozess bzw. den Rückstellprozess
für ein Zeitbudget
von zwei Taktzyklen ist in der Abbildung aus 3 dargestellt.
Jede mit dem Bus verbundene Vorrichtung sieht die Deaktivierung
von XRST# bei der gleichen Erzeugung des Taktsignals XCLK. Jede
Komponente beginnt mit der Ausführung
ihres synchronen Strobe-Signals
nach einer vorbestimmten Anzahl von Taktzyklen (z.B. drei Taktzyklen)
nach der Beobachtung einer Deaktivierung bzw. Aufhebung von XRST#.
In dem vorliegenden Ausführungsbeispiel
sind zwar drei Taktzyklen angegeben, wobei die Anzahl der vorbestimmten Zyklen
jedoch veränderlich
ist, sofern alle Bausteine bzw. alle Vorrichtungen ihr synchrones
Strobe-Signal an dem gleichen Zyklus beginnen. In Bezug auf die
Abbildung aus 3 erfasst jeder Baustein die
Aufhebung von XRST# an der ansteigenden Flanke des Takts T3. Jede
Komponente leitet somit ihren Strobe-Signalgenerator nach der ansteigenden
Flanke von Takt T6 ein. Die quellensynchrone Signalerfassungsschaltung
kann somit ihre Abtasttakte synchronisieren, da sie das Zeitsteuerungsverhältnis zwischen
der Aufhebung von XRST# und dem ersten Daten-Strobe kennt.
-
Für die Definition
der System- und Zeitverhältnisse
gibt es eine Vielzahl von Möglichkeiten.
In dem vorliegenden Ausführungsbeispiel
wird allerdings die ansteigende Taktflanke, welche die Aufhebung
von XRST# abtastet, als der ungerade Zyklus bezeichnet, und wobei
der erste Daten-Strobe bei einer geraden Taktflanke beginnt. Die
früheste
gerade Taktflanke, welche die Strobe-Signale beginnt, ist die zweite
gerade Taktflanke nach dem Abtasten der Aufhebung von XRST#. In
dem vorliegenden Ausführungsbeispiel,
das ein Zeitbudget von zwei Taktzyklen implementiert, wählt die
Abtastung für
den Datenempfang immer das Erfassungselement (z.B. Flipflop) aus,
das Daten aufweist, die zwei Taktzyklen früher ausgegeben worden sind.
In einem Modus mit drei Taktzyklen würde die Auswahl das auswählen, was
drei Taktzyklen vorher eingeleitet bzw. ausgegeben worden ist. Der
Multiplexer identifiziert den ungeraden Takt, wenn XRST# aufgehoben
wird. Da definiert ist, dass der erste Strobe immer bei einem geraden
Takt gesendet wird, bleiben die Erfassungs-Flipflops und die Abtast-Multiplexer synchronisiert.
-
Wie
dies bereits vorstehend im Text beschrieben worden ist, ist der
Abstand zwischen Bausteinen länger
als typische synchrone Bussysteme, da das Zeitbudget erweitert worden
ist, so dass es mehrere Taktzyklen umspannt. Ferner wird ein höherer Datendurchsatz
unter Verwendung von weniger Pins bzw. Stiften erreicht, und zwar
teilweise durch die Ausgabe von Daten sowohl bei geraden als auch
bei ungeraden Taktzyklen. Der Erfassungsmechanismus an dem Empfänger, der
diese Fähigkeit
ebenso ermöglicht
wie die Erweiterung des Zeitbudgets, ist in der Abbildung aus 4 dargestellt.
Die Daten werden über
ein oder zwei Erfassungs-Flipflops 405 oder 410 empfangen.
Die Flipflop-Freigabe wird durch ein drittes Flipflop 415 gesteuert, das
bewirkt, dass das freigegebene Flipflop zwischen den Erfassungs-Flipflops
umschaltet, gesteuert durch das positive Daten-Strobe-Signal (P_STB#).
Somit werden Daten, die während
einem geraden Takt ausgegeben werden, immer durch das ungerade Erfassungs-Flipflop 405 erfasst.
Die in der Abbildung aus 4 veranschaulichte vorliegende
Schaltung veranschaulicht die Erfassungsschaltkreisanordnung für die positiven Datenphasen
des Signals. Somit wäre
auch eine negative Datenphasen-Erfassungsschaltung
vorhanden, die durch ein negatives Strobe-Signal (N_STB#) gesteuert wird. In einer
derartigen Schaltung wäre
das das Kern-Takt-Abtast-Flipflop ferner invertiert.
-
In
erneutem Bezug auf die Abbildung aus 4 tastet
der Abtast-Multiplexer 420 die Daten von den Erfassungs-Flipflops
zwei Taktzyklen nach der Einleitung der Datenübertragung ab (d.h. nach deren
Ausgabe bzw. Start). Der Multiplexer 420 wird durch das
Rücksetzsignal
XRST# und die durch das Rücksetzsignal
gesteuerte Schaltkreisanordnung 430 synchronisiert. Wenn
der Abtast-Multiplexer 420 somit so synchronisiert ist,
dass anfänglich
während
dem geraden Takt abgetastet wird und die Daten während dem ungeraden Takt ankommen,
wie dies in dem Strobe-Startup-Zeitsteuerungsdetails dargestellt
ist, tastet der Multiplexer 420 die ungeraden und geraden
Taktdaten zwei Zyklen nach der Ausgabe ab.
-
Nachdem
die Daten durch den Abtast-Multiplexer verarbeitet worden sind,
werden die Daten in eine kombinatorische Logik und in ein Abtast-Flipflop 440 eingegeben:
Dabei werden sie in der Folge in eine andere Schaltkreisanordnung
der Vorrichtung bzw. des Bausteins ausgegeben. Hiermit wird festgestellt,
dass die Schaltkreisanordnung 430 eine Anzahl von Flipflops
zeigt, die eine ausreichende Verzögerung bewirken, um eine zweckmäßige Initialisierung
für eine
gültige
Datenabtastung vorzusehen. Der Verzögerungspfad synchronisiert
den Abtast-Multiplexer 420 mit
den ausgegebenen Daten. Die Verzögerung
kann gemäß der implementierten
Konfiguration variiert werden. Vorzugsweise werden XCLKout (das
Taktsignal) und XRSTout# (das Rücksetzsignal)
durch eine gemeinsame Quelle erzeugt, wie dies in der Abbildung
aus 2 dargestellt ist. Beide Signale
werden in dem vorliegenden Ausführungsbeispiel
durch die Steuereinheit erzeugt und synchron gehalten, indem beide
durch eine externe Taktverstärkereinrichtung
geführt
werden, und indem ungefähr
die gleiche Wegführungssignallänge beibehalten
wird, wie dies in der Abbildung aus 2 dargestellt
ist. Es wird bevorzugt, dass die Länge des Busses durch die folgenden
Faktoren beschränkt
ist: XCLK, SCLK zu P_STB# + TOF (Laufzeit zwischen Bausteinen) +
P_STB# zur Erfassung gültiger
Daten + Einrichtzeit für
Datenabtastwert P ist kleiner oder gleich der Anzahl der zugewiesenen
Taktperioden (in dem vorliegenden Beispiel zwei Taktperioden). In
dem vorliegenden Ausführungsbeispiel
muss die Verzögerung
durch die kombinatorische Logik 435 zwischen dem Abtast-Flipflop
und dem Abtast-Multiplexer somit in der Einrichtzeit bzw. der Vorbereitungszeit
(Setup-Zeit) enthalten sein. Vorzugsweise muss die Durchlaufzeit
von dem Empfang bis zum Senden von einer Taktperiode auf zwei ansteigen,
wenn XCLK zu P_STB + TOF größer oder
gleich einem Taktzyklus ist. Dies ist erforderlich, um es zu verhindern,
dass gesendete Daten mit den hinteren Empfangsdaten der negativen
Datenphase kollidieren.
-
Die
Abbildung aus 5 zeigt eine Taktschaltung für die Taktung
bzw. die Zeitsteuerung beispielhafter Paketübertragungen. In Bezug auf
die Abbildung aus 5 wurde XRST# bereits zu einem
bestimmten Zeitpunkt vor T5 aufgehoben. Die Strobes (P_STB#, N_STB#)
werden bereits ausgeführt
und die Abtastschaltkreisanordnung ist synchronisiert. Die auf der
linken Seite in Klammern gesetzten Signale mit der Bezeichnung „Senden" zeigen die beobachtete
Signaltaktung an dem sendenden Ende an. "Empfangen" zeigt die gleichen beobachteten Signale
an dem empfangenden Ende an. Der Unterschied liegt in der Zeitverschiebung
durch die Übertragungszeit
der Signale zwischen der Sendevorrichtung und der Empfangsvorrichtung.
-
Zum
Zeitpunkt T37 behauptet die Sendervorrichtung HRTS#, um ihre Anforderung
zu senden anzuzeigen. Zum Zeitpunkt T37 wurde XRTS# (nicht abgebildet)
als behauptet beobachtet, so dass die sendende Vorrichtung bzw.
der sendende Baustein weiß,
dass er die Arbitrierung um den Bus gewonnen hat. Der Sender behauptet
XADS# zum Zeitpunkt T38, um die als 1P, 1N, 2P, 2N angezeigten Paketinformationen
zu begrenzen.
-
An
dem empfangenden Ende beobachtet (erfasst) die Empfängervorrichtung
HRTS# zum Zeitpunkt T38 als behauptet. Dabei handelt es sich um
das zum Zeitpunkt T37 behauptete zeitlich verschobene Signal HRTS#.
Der Empfänger
weiß,
dass XADS# während
dem nächsten
Takt (T39) zu erwarten ist. Das vorliegende Ausführungsbeispiel verwendet einen
verteilten Arbiter. Wenn der Sender in dem vorliegenden Beispiel
nicht die höchste
Priorität
aufwies, so wäre
XADS# zwei Takte nach HRTS# und nicht einen Takt nach HRTS# gesendet
worden. Jede Vorrichtung kennt ihre Priorität. Gemäß den Vorgaben übermittelt
die Vorrichtung mit hoher Priorität ihre Daten einen Takt früher als
die Vorrichtung mit niedriger Priorität (wobei angenommen wird, dass
die Vorrichtung mit niedriger Priorität nicht bereits eine Anforderung
vorgenommen hat). Somit muss die Vorrichtung mit niedriger Priorität einen
zusätzlichen
Takt lang warten, wenn sie ihre Anforderung geltend macht, um zu
garantieren, dass die Vorrichtung mit hoher Priorität die Anforderung
beachtet hat. Während
dem Takt T39 tastet der Empfänger
HRTS# von dem Erfassungs-Flipflop ab, das das Signal erfasst hat.
Danach werden die Daten während
T39 aus den entsprechenden Flipflops abgetastet.
-
Die
Abbildungen der 6 und 7 zeigen
vereinfachte Flussdiagramme, welche die Prozesse zum Zurücksetzen
des Systems in einen synchronen Betrieb sowie zur Datenübermittlung
veranschaulichen. Der Prozess für
ein Zurücksetzen
wird allgemein in Bezug auf die Abbildung aus 6 beschrieben.
In dem Schritt 605 wird das Rücksetzsignal übermittelt,
so dass es von allen Vorrichtungen bzw. Bausteinen gleichzeitig
empfangen wird. Ferner wird das Rücksetzsignal (XRST#) über Treiber
bzw. Steuereinrichtungen ausgegeben und in die ursprüngliche
Vorrichtung zurückgeführt, so
dass die Leitungslängen
kompatibel sind, und so dass das Rücksetzsignal von allen Bausteinen
bzw. Vorrichtungen gleichzeitig empfangen wird. Das Rücksetzsignal wird
durch einen PLL-Takt ausgetaktet, der für gewöhnlich nicht phasengleich ist
mit dem Kerntakt der Steuervorrichtung (z.B. Vorrichtung 215 aus 2). Die Rückkopplungsspur mit übereinstimmender
Länge gewährleistet
jedoch, dass der Takt (und das damit synchrone Rücksetzsignal) phasengleich
ist mit den Kerntakten, wenn das Signal an dem Ende der Drähte ankommt.
In dem Schritt 610 beobachten die Vorrichtungen bzw. die
Bausteine die Aufhebung des Rücksetzsignals.
In dem Schritt 616 wird die erste ansteigende Taktflanke,
welche das Rücksetzsignal
abtastet, als der ungerade Taktzyklus identifiziert, und die nächste Flanke wird
als gerade Taktflanke identifiziert. Der erste Daten-Strobe ist
somit als die zweite Taktflanke (gerade) nach der Aufhebung des
Rücksetzsignals
bezeichnet. In dem Schritt 620 identifiziert ein Flipflopauswahl-Multiplexer in
der Empfängerschaltkreisanordnung
jedes Bausteins den ungeraden Taktzyklus, wenn das Rücksetzsignal aufgehoben
wird, um die Abtastschaltkreisanordnung mit der Sendeschaltkreisanordnung
zu synchronisieren, welche den Daten-Strobe und die Daten ausgibt.
-
In
dem Schritt 630 wird die Datenübertragung an einer Taktflanke
eines geraden Taktzyklus eingeleitet, der mit der Ausgabe der Daten-Strobes
an dem geraden Taktzyklus übereinstimmt.
Vorzugsweise wartet das System eine vorbestimmte Anzahl von Taktzyklen,
wie etwa 64 Taktzyklen, bevor es die Datenübertragung einleitet, so dass
auseichend Zeit für
die Initialisierung der Schaltkreisanordnung gegeben ist.
-
Der Übertragungsprozess
wird nachstehend in Bezug auf die Abbildung aus 7 beschrieben.
In dem Schritt 700 gibt die sendende Vorrichtung gleichzeitig
einen Strobe und Daten an die empfangende Vorrichtung aus. In dem
Schritt 701 werden Strobe und Daten an der empfangenden
Vorrichtung empfangen. Wenn der Strobe während einem geraden Takt gesendet
worden ist, werden die Daten in dem Schritt 702 von den
geraden Flipflops erfasst; wobei die Daten durch die ungeraden Flipflops
erfasst werden, wenn der Strobe während einem ungeraden takt übermittelt
worden ist. In dem Schritt 703 werden die Daten an dem
Empfänger zwei
Takte nach der Ausgabe aus der sendenden Vorrichtung abgetastet.
Daten werden somit durch das gerade Flipflop abgetastet, wenn sie
während
dem geraden Taktzyklus ausgegeben worden sind, und sie werden durch
das ungerade Flipflop abgetastet, wenn sie während dem ungeraden Taktzyklus
ausgegeben worden sind. Sobald die Schaltkreisanordnungen in beiden
Vorrichtungen bzw. Bausteinen synchronisiert sind, schaltet die
Empfängerschaltkreisanordnung
einfach zwischen geraden Flipflops und ungeraden Flipflops um, wie dies
bereits vorstehend im Text beschrieben worden ist. Beschrieben wird
somit ein Prozess für
den Betrieb der synchronen Busübertragung übe mehrere
Taktzyklen, wobei die sendenden und empfangenden Vorrichtungen Taktsignale
mit der gleichen Frequenz empfangen.
-
Obwohl
dies für
den Betrieb des vorstehend beschriebenen synchronen Hochgeschwindigkeitssystems
nicht erforderlich ist, erhöht
sich die Wirksamkeit des Systems weiter unter Verwendung des integrierten Flusssteuerungsverfahrens
sowie der Vorrichtung gemäß nachstehenden
Beschreibung.
-
Im
Besonderen wird der Bus-Overhead durch die Verteilung der Flusssteuerung
auf mit dem Bus gekoppelte Bausteine bzw. Vorrichtungen und die
Integration von Flusssteuerdaten in die Pakete reduziert. Jede Vorrichtung
weist mindestens eine Nachführvorrichtung
oder -schaltung auf, welche den Datenfluss sowie eingehende und
abgehende Busanforderungen auf dem Bus verfolgt. Bei der Initialisierung
ist jede Nachführeinrichtung
mit Informationen zu den Pufferkapazitäten der anderen gekoppelten
Bausteine versehen. Während dem
Prozess der Übertragung
von Paketen greift die Nachführeinrichtung
auf vorbestimmte Bits jedes Pakets zu, um die Zustände der
Warteschlangen zu bestimmen (d.h. wie voll/leer), und wobei sie
den Paketfluss zwischen Vorrichtungen steuert. Somit ist die Flusssteuerung
in das Paketprotokoll integriert.
-
In
dem vorliegenden Ausführungsbeispiel
wird die Flusssteuerung zwischen zwei Bausteinen bzw. Vorrichtungen
beschrieben. Die Struktur kann jedoch auch erweitert werden, so
dass sie die Flusssteuerung zwischen mehreren Vorrichtungspaaren
durch Replikation der Nachführeinrichtungen
unterstützt.
Die Abbildung aus 8 veranschaulicht ein vereinfachtes
Blockdiagramm des Flussteuerungsabschnitts des Systems. In Bezug
auf die Abbildung aus 8 ist eine Speichersteuereinheit 805 mit
dem Speicher 802 und einem Prozessor 803 gekoppelt.
Alternativ ist die Speichersteuereinheit mit einem Prozessorbus
gekoppelt, mit dem ein oder mehrere Prozessoren 803 gekoppelt
sind. Die Speichersteuereinheit 805 ist ferner über einen Bus 815 mit
der Busbrücke 810 verbunden.
In einem Ausführungsbeispiel
ist die Busbrücke 810 mit
einem PCI-Bus 820 verbunden. Die abgebildete Busbrücke 810 sieht
eine Busverbindung (z.B. eine 64-Bit-Verbindung) mit dem PCI-Bus 820 vor.
Es ist aber auch möglich,
dass die Busbrücke
mehrere Busanschlüsse
unterstützt
(z.B. zwei 32-Bit-Anschlüsse).
In einer Anordnung mit mehreren Busanschlüssen verfolgt die Nachführschaltkreisanordnung
den Status von zwei Warteschlangen, und zwar einer je Verbindung.
Die hierin beschriebene Vorrichtung 805 weist ferner eine
Speichersteuereinheit auf. Es ist jedoch leicht ersichtlich, dass
die Vorrichtung 805 einer Vielzahl von verschiedenartigen
Vorrichtungen entsprechen kann, die mit dem Bus 815 gekoppelt
sind. In ähnlicher
Weise kann die Vorrichtung 810 als eine Vielzahl von Vorrichtungen
ausgeführt
werden, und wobei sie nicht auf eine Busbrücke beschränkt ist.
-
Die
Speichersteuereinheit 805 weist eine Anforderungswarteschlangen-Nachführlogik 822,
eine Datenwarteschlangen-Nachführlogik 832,
eine abgehende Anforderungswarteschlange 824, einen abgehenden Datenpuffer 826,
eine eingehende Anforderungswarteschlange 828 und eine eingehende
Datenwarteschlange 830 auf. Ferner abgebildet ist die Schnittstellen-/Steuerlogik 834,
die eine unterstützende
Logik für
eine Schnittstellenfunktion mit dem Speicher 802 und dem
Prozessor 803 vorsieht, wobei sie Speicheroperationen mit
dem Speicher 802 und dem Prozessor 803 ausführt sowie
die Anforderungspakete und Bestätigungspakete
vorsieht, die nachstehend im Text beschrieben sind.
-
Zum
Zwecke der Vereinfachung der Erläuterung
ist die Kommunikation der Daten zwischen dem Speicher 802,
dem Prozessor 803 und der Speichersteuereinheit 805 in
der Übertragung
durch die Schnittstellen-/Steuerlogik 834 dargestellt;
wobei die Daten jedoch auch direkt zwischen den Warteschlangen und
dem Speicher 802 sowie dem Prozessor 803 übertragen
werden können.
Die Anforderungswarteschlangen-Nachführlogik 822 und
die Datenwarteschlangen-Nachführlogik 832 verfolgen
entsprechend, wie voll die entsprechenden Warteschlangen 824, 852 und 826, 856 sind,
so dass, sobald eine Warteschlange voll ist, die Nachführeinrichtung
verhindert, dass ein Paket erzeugt und in den Warteschlangen 824, 826 platziert
wird. In dem vorliegenden Ausführungsbeispiel
arbeitet die Nachführeinrichtung 822, 832 als
ein Zähler
zur Verwaltung der Zählwerte
des verfügbaren
Warteschlangenraums. Die Schnittstellen-/Steuerlogik 834 arbeitet
in Verbindung mit der Nachführeinrichtung 822, 832,
um die entsprechenden Steuersignale/-daten an den Prozessor 803 und den
Speicher 802 auszugeben, um das Erzeugen und Platzieren
abgehender Pakete in den entsprechenden Warteschlangen zu ermöglichen/zu
verhindern. Die eingehende Anforderungswarteschlange 828 und
die eingehende Datenwarteschlange 830 empfangen entsprechend
eingehende Anforderungen und Bestätigungspakete (und zugeordnete
Daten) von der Busbrücke 810.
In einem Ausführungsbeispiel
werden Schreibdaten und Lesedaten separat in Warteschlangen verarbeitet
und verfolgt. In einem Ausführungsbeispiel verwaltet
die Anforderungswarteschlange sowohl Lese- als auch Schreibanforderungen,
wobei die Nachführeinrichtung
nur eine vorbestimmte maximale Anzahl von Leseanforderungen und
eine vorbestimmte Anzahl von Schreibanforderungen zulässt, und
zwar unabhängig
von der Anzahl der verfügbaren
Plätze
in der Warteschlange.
-
In
einem Ausführungsbeispiel
ist die Nachführlogik 822 so
konfiguriert, dass sie in einer Warteschlange mit einer Tiefe von
acht nur zwei Leseanforderungen und sechs Schreibanforderungen zulässt. Dies
ist wünschenswert,
so dass die eine Anforderungsart, wie z.B. die Schreibanforderung,
nicht die Warteschlangenverarbeitung von Leseanforderungen verhindert,
wenn die Anzahl der Anforderungen die Größe einer Warteschlange überschreitet.
Wenn in dem aktuellen Beispiel somit sechs Schreibanforderungen
gleichzeitig in der Warteschlange verarbeitet werden und die Vorrichtung
eine siebte Schreibanforderung in der Warteschlange verarbeiten
möchte,
so lässt
die Nachführeinrichtung
dies nicht zu, obwohl die Warteschlange die Kapazität für den Empfang
von zwei weiteren Anforderungen aufweist (die nach Leseanforderungen
vorab zugeordnet werden). Wenn die Warteschlange aktuell sechs Schreibanforderungen
aufweist und die Vorrichtung eine Leseanforderung ausgeben möchte, so
lässt die
Nachführeinrichtung
die Warteschlangenverarbeitung der Leseanforderung zu.
-
Die
Busbrücke 810 ist
in ähnlicher
Weise mit einer Anforderungswarteschlangen-Nachführeinrichtung 850,
einer Datenwarteschlangen-Nachführeinrichtung 860,
einer abgehenden Anforderungswarteschlange 852, einer eingehenden
Anforderungswarteschlange 854, einer abgehenden Datenwarteschlange 856,
einer eingehenden Datenwarteschlange 858 und einer Schnittstellen-/Steuerlogik 882 konfiguriert.
Die Warteschlangen-Nachführfunktionen
werden in ähnlicher Weise
ausgeführt,
wie dies vorstehend im Text beschrieben worden ist. Die Nachführeinrichtungen 850, 860 verwalten
Zählwerte über die
in den entsprechenden Warteschlangen 854, 828 und 858, 830 gespeicherten
Informationen, und sie verhindern die Erzeugung von Paketen, wenn
eine der Warteschlangen voll ist. Die hierin nicht im Detail beschriebene
Schnittstellen-/Steuerlogik 882 stellt die Logik dar, die
für die
Kommunikation mit dem Bus 820 verwendet wird sowie zur
Erzeugung der Anforderungs- und Bestätigungspakete, wie dies nachstehend
im Text näher
beschrieben ist.
-
Die
Abbildungen der 9a, 9b und 9c zeigen
vereinfachte Flussdiagramme, die entsprechend den Flusssteuerprozess
für Anforderungen
und Daten veranschaulichen. Obwohl die beiden Prozesse einzeln beschrieben
sind und die Flusssteuerung unter Verwendung eines Prozesses oder
beider Prozesse eingeleitet werden kann, wird es bevorzugt, dass
beide Prozesse gleichzeitig zur Regelung der Flusssteuerung verwendet
werden, wie dies in der Abbildung aus 9c dargestellt
ist. In dem vorliegenden Ausführungsbeispiel
verwaltet die Nachführeinrichtung
einen Zählwert,
der die Daten darstellt, die in dem empfangenden Puffer gespeichert
sind. Zum Beispiel verwaltet die Nachführeinrichtung 824 einen
Zählwert
der in der Warteschlange 852 gespeicherten Anforderungen.
Wenn der Zählwert
einen vorbestimmten Höchstwert überschreitet,
steuert die Nachführeinrichtung
die Vorrichtung, wie z.B. den Prozessor 803, so dass die
Erzeugung des Pakets verhindert wird, und wobei bewirkt wird, dass
die Vorrichtung weiter die Ausgabe der Anforderung versucht, bis
der Raum in der Warteschlange verfügbar wird. In dem vorliegenden
Ausführungsbeispiel
wird ein Paket nicht erzeugt, wenn die Nachführeinrichtung anzeigt, dass
die empfangende Warteschlange voll ist; wobei es in anderen Ausführungsbeispielen
durchaus möglich
ist, dass die Nachführeinrichtung
andere Mechanismen verwendet, um es zu verhindern, dass eine Anforderung
in eine volle Warteschlange eintritt.
-
Wenn
in erneutem Bezug auf das vorliegende Ausführungsbeispiel zum Beispiel
eine eingehende PCI-(Schreib)-Anforderungen von dem Bus 820 versucht
wird, wird die Anforderung wiederholt versucht, bis die eingehende
Nachführeinrichtung 850 anzeigt,
dass die eingehende Warteschlange in der Vorrichtung 805 Platz
für die
Schreibanforderung aufweist. Das gleiche erfolgt für abgehende
Transaktionen. Wenn eine eingehende Anforderungswarteschlange eine
Transaktion annehmen wollen würde,
für die
in der empfangenden eingehenden Warteschlange kein Platz ist, so
kann eine gegenseitige Blockierung auftreten, obwohl kein Paket übermittelt
wird, bis Platz in der empfangenden Warteschlange vorhanden ist.
-
In
Bezug auf die Abbildung aus 9a wird
in dem Schritt 900 der in der Nachführeinrichtung verwaltete Anforderungspufferzählwert initialisiert.
Der Zählwert
kann zum Beispiel auf Null initialisiert werden. Bei dem tatsächlichen
Wert kann es sich aber auch um einen anderen Wert handeln, so dass
für den
Fall, dass der Zählwert
den vorbestimmten Höchstwert
erreicht, der der Größe des entsprechenden
Puffers entspricht, tritt ein Registerüberlauf auf. Alternativ wird
der Zählwert
auf einen Wert initialisiert, der dem vorbestimmten Höchstwert
entspricht, und die Nachführeinrichtung
setzt den Zählwert
für jede
zu übermittelnde
Anforderung herab. Somit wird der Pufferhöchstwert erreicht, wenn der
Zählwert
die Null erreicht. Die maximale Größe des Puffers kann hart codiert
sein oder aus einem Konfigurationsregister gelesen oder gefüllt werden.
Vorzugsweise werden die Kapazitäten
der entsprechenden Pufferpaare, z.B. 724, 752 geprüft, um den
Puffer mit der geringeren Kapazität zu bestimmen; in diesem Fall
würde die
maximale Größe der Größe der Puffer
mit der kleineren Kapazität
entsprechen. Ferner ist das vorbestimmte Maximum nicht unbedingt
identisch mit der genauen Kapazität des Puffers und kann aus
einer Vielzahl von Gründen
einem Wert entsprechen, der niedriger ist als die tatsächliche
Puffergröße. In dem
vorliegenden Ausführungsbeispiel
entspricht das vorbestimmte Maximum für Schreibanforderungen zum
Beispiel sechs (6), während
die Pufferkapazität
acht (8) Schreibanforderungen entspricht. Andere Ausführungsbeispiele
sind ebenfalls möglich.
-
Wenn
in dem Schritt 905 ein Ausführungspaket empfangen wird,
setzt die Anforderungs-Nachführeinrichtung
in dem Schritt 910 den Zählwert des Anforderungspuffers
herab, da der Empfang eines Ausführungspakets
anzeigt, dass die Anforderung verarbeitet worden ist und sich nicht
länger
in dem Puffer befindet. Wenn in dem Schritt 915 ein Anforderungspaket
gesendet werden soll, wird in dem Schritt 920 der Zählwert des
Anforderungspuffers inkrementiert, und in dem Schritt 925 wird
bestimmt, ob der Zählwert
das vorbestimmte Maximum überschreitet.
Wenn der Zählwert
das vorbestimmte Maximum nicht überschreitet,
so weist der empfangende Puffer in der Vorrichtung die Kapazität auf, die
Anforderung zu empfangen, und das Anforderungspaket ist zur Übertragung
und zur folgenden Übermittlung über den
Bus in dem Schritt 940 bereit. Wenn der Zählwert das
vorbestimmte Maximum überschreitet,
so kann die verfügbare
Kapazität
des Puffers das Anforderungspaket nicht annehmen, und die Anforderungspaket-Nachführeinrichtung
verhindert die Erzeugung oder die Aufnahme in die Warteschlange
des Anforderungspakets und bewirkt die Wiederholung des Übertragungsprozesses
an dem einleitenden Busses, Schritt 935.
-
Hiermit
wird festgestellt, dass die Abbildung aus 9a in
Bezug auf die Übermittlung
von Anforderungspaketen von einer ersten Vorrichtung (z.B. der Vorrichtung 805 aus 8) beschrieben
wird. Der gleiche Prozess wird aber auch ausgeführt, wenn die gleiche Vorrichtung
ein Ausführungspaket
sendet, wenn die Pakete in dem gleichen Puffer (z.B. dem eingehenden
Anforderungspuffer 852 aus 8) gepuffert
werden. Wenn der Prozess mit einem Baustein mit zwei Ports wie etwa
der vorstehend beschriebenen Busbrücke ausgeführt wird, würde der erste Baustein weiter
senden (vorzugsweise würde
er an verschiedene Puffer senden), bis beide Puffer die volle Kapazität aufweisen.
-
Ein
sehr ähnlicher
Prozess wird ausgeführt,
um die Flusssteuerung in Bezug auf die Daten in dem Paket zu regeln.
Ein Anforderungspaket weist eine bestimmte Größe auf, die in einen vorbestimmten
Platz passt. Dabei ist die Datenmenge jedoch variabel. Bei Datenpuffern
wird somit auf ein Längenfeld
in dem Paket zugegriffen, um die erforderliche Menge des Pufferraums
zu bestimmen. Danach wird ein ähnlicher
Prozess ausgeführt,
um zu bestimmen, wann Daten in der Warteschlangenverarbeitung ein Überschreiten
der Kapazität der
Datenwarteschlange bewirken würden.
Die Nachführeinrichtung
lässt es
nicht zu, dass die Kapazität
des Datenpuffers überschritten
wird. Wenn eine Vorrichtung bzw. ein Baustein an dem Bus 820 zum
Beispiel versucht, 16 DWORDS (16 × 4 Bytes) zu schreiben, die
Nachführeinrichtung
jedoch nur Platz für
8 anzeigt, so akzeptiert die Steuerlogik 883 lediglich
acht DWORDS. Die Vorrichtung (nicht abgebildet) an dem Bus 820 muss
einen Schreibvorgang für
die verbleibenden DWORDS erneut versuchen, bis die Nachführeinrichtung den
Platz für
diese anzeigt. Alternativ ist die Steuerlogik 882 so konfiguriert,
dass die Logik die Erzeugung von Paketen nur zulässt, wenn alle Daten in der
Warteschlange platziert werden können.
-
In
Bezug auf die Abbildung aus 9b wird
der Zählwert
des Datenpuffers in dem Schritt 950 initialisiert. Wenn
ein Ausführungspaket
in dem Schritt 955 empfangen wird, wird der Zählwert des
Datenpuffers in dem Schritt 960 durch den Längenwert
(LEN) herabgesetzt, der in dem Ausführungspaket gespeichert ist.
Unter Verwendung des Wertes LEN kann eine präzise Puffernachführung ausgeführt werden,
die für
die Pufferkapazitäten
relevant ist. Hiermit wird festgestellt, dass der Wert LEN die gleiche
Länge aufweist,
wie sie in den abgehenden Informationen gegeben ist. Wenn in dem
Schritt 965 eine Anforderung übermittelt werden soll, wird
der Wert LEN bestimmt, und der Datenpufferzählwert wird in einem LEN entsprechenden
Ausmaß inkrementiert.
Wenn in dem Schritt 970 die Datenmenge des Pakets plus
der aktuellen Datenmenge in dem Puffer die Kapazität des Puffers überschreitet,
wird verhindert, dass die Vorrichtung das Paket erzeugt und das
Paket in dem Puffer platziert. Die Vorrichtung wiederholt den Versuch
in dem Schritt 990, bis die Kapazität des Puffers die Datenmenge
des Pakets akzeptieren kann. Vorzugsweise kann die anfordernde Vorrichtung
anzeigen, dass Teil der Daten übermittelt
werden soll, der in den verbleibenden Pufferraum passt (z.B. durch
Ausgabe eines Befehls an die Nachführeinrichtung). Die anfordernde
Vorrichtung gibt in der Folge Anforderungen aus und wiederholt diese
bei Bedarf, um die Daten auszugleichen. Wenn der Pufferzählwert nicht überschritten wird,
wird das Paket in dem Schritt 995 durch die anfordernde
Vorrichtung gebildet und in dem Puffer platziert.
-
Wie
dies bereits vorstehend im Text beschrieben worden ist, wird es
bevorzugt, dass der Flusssteuerungsprozess den verfügbaren Platz
bzw. Raum in dem Anforderungspuffer und den verfügbaren Platz in dem Datenpuffer
berücksichtigt.
Wenn einer der Puffer voll ist und keine Daten empfangen kann, kann
die Anforderung nicht verarbeitet werden. Dies ist durch das Flussdiagramm
aus 9c veranschaulicht. In dem Schritt 996 wird
bestimmt, ob ein Ausführungspaket
empfangne wird, und wenn ein Ausführungspaket empfangen wird,
wird der Zählwert des
Anforderungspuffers in dem Schritt 997 in einem Ausmaß herabgesetzt,
dass dem LEN-Wert entspricht. Wenn in dem Schritt 998 eine
Anforderung empfangen wird, wird bestimmt, ob sich in dem Anforderungspuffer
und in dem Datenpuffer ausreichend Pufferraum befindet. Da die Datenmenge
variieren kann, ist es möglich,
dass ein Puffer voll ist, während
der andere Puffer noch Kapazität
aufweist. Wenn keiner der Puffer für den Empfang einer Anforderung
zur Verfügung
steht, wird die Anforderung nicht verarbeitet, und in dem Schritt 1000 wird
ein Wiederholungssignal an die sendende Vorrichtung ausgegeben,
um eine spätere
Wiederholung der Anforderung anzuzeigen.
-
Ansonsten
wird die Anforderung in dem Schritt 1001 an den Anforderungspuffer
ausgegeben, während
die entsprechenden Daten an den Datenpuffer ausgegeben werden.
-
Die
Flusssteuerung ist somit in das Paketprotokoll integriert. Die Abbildungen
der 10a, 10b und 10c zeigen veranschaulichende Pakete. Der beschriebene
Flusssteuermechanismus betrifft Felder für die Typcodierung (TP[1:0]),
die Anforderungsbefehlscodierung (RCOM[4:0]), die Ausführungsbefehlscodierung
(CCOM[4:0]) und die Länge
(LEN[7:0]), die sich in den Anforderungspaketen (10a) und den Ausführungspaketen (10b) befinden. Vorzugsweise werden die Schreib-
und Lesevorgänge
separat durch die Nachführeinrichtung
gesteuert, so dass verschiedene maximale Zählwerte für Schreibanforderungen und
Leseanforderungen verwendet werden können.
-
Wenn
zum Beispiel eine Leseanforderung in die abgehende Transaktionswarteschlange
der Speichersteuereinheit gedrückt
wird, entspricht TP[1:0] 00, um eine Anforderung ohne Daten anzuzeigen,
und wobei RCOM[4:0] gleich 0 ist, um anzuzeigen, dass die Anforderung
einen Lesewarteschlangenplatz verwendet.
-
Das
Paket wird erzeugt und in der Warteschlange platziert, und die abgehende
Lesewarteschlangen-Nachführeinrichtung
wird somit um eins herabgesetzt. Wenn ein der Leseanforderung entsprechendes Ausführungspaket
durch PXB zurückgesendet
wird, entspricht TP[1:0] [1:x], wobei x gleich 1 ist, wenn die Daten
zurückgeführt werden,
und wobei x gleich 0 ist, wenn keine Daten zurückgeführt werden. CCOM[4:0] ist gleich
0, um anzuzeigen, dass es sich dabei um eine Ausführung für eine Leseanforderung
handelt. Die abgehende Lesewarteschlangen-Nachführeinrichtung inkrementiert
den Zählwert
somit um eins. Wenn eine Leseausführung aus der eingehenden Speichersteuereinheits-Transaktionswarteschlange
ausgegeben wird, so ergibt sich, dass die abgehende Lesewarteschlangen-Nachführeinrichtung
um eins erhöht
wird. Ähnliche
Operationen treten in Bezug auf die Busbrücke auf.
-
Wenn
ein Schreibvorgang ausgeführt
werden soll, wird die Anforderung in die abgehende Transaktionswarteschlange
der Vorrichtung bewegt. TP[1:0] entspricht 01, um eine Anforderung
mit Daten anzuzeigen, und RCOM[4:0] entspricht 1, um anzuzeigen,
dass die Anforderung einen Schreibwarteschlangenplatz verwendet.
Die abgehende Schreibanforderungs-Warteschlangen-Nachführeinrichtung
wird um 1 erhöht.
Wenn die Ausführung
für eine
Schreibanforderung zurückgesendete
wird, entspricht TP[1:0] 10, um eine Ausführung ohne Daten anzuzeigen.
CCOM[4:0] entspricht 1, um eine Ausführung für eine Schreibanforderung anzuzeigen.
Wenn eine Schreibausführung
aus der eingehenden Transaktionswarteschlange der Vorrichtung ausgegeben
wird, wird die abgehende Schreibwarteschlangen-Nachführeinrichtung
um 1 erhöht.
Wenn eine Transaktionswarteschlangen-Nachführeinrichtung auf 0 herabgesetzt
wird, so können
Transaktionen dieser Art nicht mehr in die Transaktionswarteschlange
geschoben werden, wie dies bereits vorstehend im Text beschrieben worden
ist. Vorzugsweise versucht die anfordernde Vorrichtung erneut alle
etwaigen zusätzlichen
Aktionen dieser Art.
-
In
dem vorliegenden Ausführungsbeispiel
wird die Datenpufferverwaltung etwas anders gehandhabt; dabei ist
es durchaus möglich,
dass die Datenpufferverwaltung ebenso wie Anforderungen gehandhabt
werden kann. Die Felder TP[1:0], RCOM[4:0] und LEN[7:0] in dem Header
des Anforderungspakets werden dazu verwendet, Datenpuffer durch
die Datenpuffer-Nachführeinrichtungen
zuzuweisen. Die Felder TP[1:0], CCOM[4:0] und LEN[7:0] in dem Header
des Ausführungspakets
werden zur Aufhebung von Datenpuffern durch die Datenpuffer-Nachführeinrichtungen
verwendet.
-
Wenn
zum Beispiel eine Leseanforderung in die abgehende Transaktionswarteschlange
der Speichersteuereinheit geschoben wird, wie z.B. durch den Prozessor,
entspricht TP[1:0] 00, um eine Anforderung ohne Daten anzuzeigen,
und RCOM[0] ist gleich 0, um anzuzeigen, dass die Anforderung einen
Lesewarteschlangenplatz verwendet. Die abgehende Lesedatenpuffer-Nachführeinrichtung
wird durch LEN herabgesetzt, wobei LEN die Datengröße anzeigt,
und zwar in dem vorliegenden Ausführungsbeispiel die Anzahl der
angeforderten DWORDS.
-
Wenn
das Ausführungspaket
für die
Leseanforderung durch die Busbrücke
zurückgesendet
wird, entspricht TP[1:0] [1:x], wobei x gleich 1 ist, wenn Daten
zurückgegeben
werden, und wobei x gleich 0 ist, wenn keine Daten zurückgegeben
worden sind. CCOM[4:0] entspricht 0, um anzuzeigen, dass das Paket
ein Ausführungspaket
für eine
Leseanforderung ist. Wenn eine Leseanforderung aus der eingehenden
Transaktionswarteschlange der Speichersteuereinheit ausgegeben wird,
wird der abgehende Lesedatenpuffer um LEN inkrementiert.
-
Wenn
ein Schreibpaket in die abgehende Transaktionswarteschlange der
Speichersteuereinheit gedrückt
wird, wie z.B. durch den gekoppelten Prozessor, so entspricht TP[1:0]
01, um eine Anforderung mit Daten anzuzeigen, und wobei RCOM[4:0]
gleich 1 ist, um anzuzeigen, dass die Anforderung einen Schreibwarteschlangenplatz
verwendet. Die abgehende Schreibdatenpuffer-Nachführeinrichtung
wird um LEN herabgesetzt, wobei LEN die Anzahl der geschriebenen
DWORDS anzeigt. Der Wert in dem Feld LEN des Schreibanforderungspakets
und dem zugeordneten Ausführungspaket
stimmen stets überein,
selbst wenn die Schreibanforderung an dem anderen Bus nicht erfolgreich
gewesen ist.
-
Wenn
das Ausführungspaket
für die
Schreibanforderung durch PXB zurückgesendet
wird, entspricht TP[1:0] 10, um eine Ausführung ohne Daten anzuzeigen.
CCOM[0] entspricht 1, um anzuzeigen, dass es sich bei dem Paket
um ein Ausführungspaket
für eine
Schreibanforderung handelt. Wenn die Schreibausführung von der abgehenden Schreibdatenpuffer-Nachführeinrichtung
empfangen wird, wird der Zählwert
um LEN inkrementiert. Normalerweise verlassen Anforderungen und
Ausführungen
eine Transaktionswarteschlange in der gleichen Reihenfolge, in der
sie in diese eingetreten sind. Dies ist erforderlich, um die ordnungsgemäße Anordnung
bzw. Reihenfolge der Transaktion zu erhalten, d.h. die Reihenfolge
des Auftretens an einem Bus entspricht der Reihenfolge an dem empfangenden
Bus. Eine Schreibausführung
weist jedoch keine Daten auf und somit auch keine Anordnungsanforderung.
Somit wird es bevorzugt, dass das Ausführungspaket direkt an die Nachführeinrichtung
gesendet wird.
-
Wenn
eine Datenpuffer-Nachführeinrichtung
auf Null herabsetzt oder nicht ausreichend Datenpuffer für eine bestimmte
Anforderung aufweist, kann diese Anforderung nicht in die Transaktionswarteschlange
verschoben werden. Die Busschnittstelle der Datenpuffer-Nachführeinrichtung
versucht somit, etwaige zusätzliche
Transaktionen dieser Art erneut zu versuchen. Eine ähnliche
Logik wird dazu verwendet, durch die Busbrücke ausgegebene Schreibpakete
zu unterstützen.
-
Weiter
unten ist ein vereinfachtes Beispiel des integrierten Flusssteuerungsprozesses
dargestellt. Das Beispiel ist zu Zwecken der Erläuterung vereinfacht dargestellt
und berücksichtigt
keine anderen Konfigurationsparameter als die mit dem Prefetching
(Vorerfassung) verbundenen Parameter. Darüber hinaus erörtert das
unten stehende Beispiel sowie die Beschreibung den Flusssteuermechanismus
in Verbindung mit einer Vorrichtung bzw. mit einem Baustein, wie
etwa einer Speichersteuereinheit, die über den Hochgeschwindigkeitsbus
der vorliegenden Erfindung mit einer PCI-Busbrückenerweiterung gekoppelt ist,
welche die Daten an 2 32-Bit-PCI-Busse oder 1 64-Bit-PCI-Bus überträgt.
-
Datenpuffer-Nachführeinrichtung
(Separate Nachführeinrichtung
für Transaktionen)
-
-
Bestimmte
Transaktionen erfordern eine feste Anzahl von DWORDs für die Übertragung.
Zum Beispiel muss ein Zeilenschreibbefehl (PCI MWI) eine ganze Zeile übertragen.
Wenn eine Zeile aus 8 DWORDs besteht und ein Puffer für weniger
als 8 DWORDs zur Verfügung
steht, so muss die Transaktion wiederholt werden. Ein normaler Schreibübertragungsblock
kann jedoch dazu führen,
dass ein Teil der Mehrzahl der DWORDs akzeptiert und der Rest erneut
versucht bzw. wiederholt wird. Zum Beispiel würde eine Transaktion Memory
Read Line (MRL) (Speicher Zeile lesen) wiederholt werden, wenn nicht
der Pufferraum zur Verfügung steht,
der eine ganzen Zeile von DWORDs entspricht.
-
Wie
dies bereits vorstehend im Text festgestellt worden ist, ist die
Busbrücke
vorzugsweise so konfiguriert, dass Pakete für duale 32-Bit-Betriebsmodi
und einfache 64-Bit-Betriebsmodi geleitet werden. In dem dualen
32-Bit-Modus arbeiten die Transaktionswarteschlangen 'a' und 'b' unabhängig an
ihren entsprechenden Bussen. Die einzige Interaktion erfolgt an
der Hochgeschwindigkeitsbus-Schnittstelle, an der eine der Warteschlangenanordnungen
an dem Hochgeschwindigkeitsbus zwischen der Busbrücke und
der Speichersteuereinheit sendet oder empfängt.
-
Im
einzelnen 64-Bit-Modus werden die abgehenden Transaktionswarteschlangen
paarweise zusammengefasst, so dass sie als eine abgehende Warteschlange
erscheinen, und die eingehenden Transaktionswarteschlangen werden
paarweise zusammengefasst, so dass sie als eine eingehende Transaktionswarteschlange
erscheinen. Die 64-Bit-PCI-Busschnittstelle
weist effektiv die doppelte Warteschlangentiefe jeder der dualen
32-Bit-PCI-Schnittstellen, auf. Die Warteschlangennachführung ist
somit so konfigurierbar, dass sie ein Paar von eingehenden/ausgehenden
Warteschlangen verfolgt sowie eine einzelne Anordnung von Warteschlangen.
-
Die
abgehenden Transaktionswarteschlangen werden ähnlich behandelt wie die eingehenden
Transaktionswarteschlangen. Wenn eine abgehende Transaktion der
Hochgeschwindigkeitsbusschnittstelle in eine abgehende Warteschlange 'a' (OutQa) eintritt, tritt die nächste abgehende
Transaktion in die abgehende Warteschlange 'b' (OutQb)
ein und so weiter. An der Busbrückenschnittstelle wechselt
die Logik (z.B. eine Zustandsmaschine) zwischen OutQa und OutQb.
Beginnend bei OutQa wird die erste abgehende Transaktion an dem
Bus versucht, der mit der Busbrücke
gekoppelt ist (z.B. ein PCI-Bus). Wenn die Transaktion abgeschlossen
ist, wird sie aus der OutQa ausgegeben und das Ausführungspaket
wird in die eingehende Warteschlange eingegeben, auf die der Warteschlangenzeiger
aktuell zeigt. Als nächstes
wird die Transaktion an der Spitze der OutQb versucht. Wenn jede
abgehende Transaktion beim ersten Versuch abgeschlossen ist, schaltet
der abgehende Warteschlangenzeiger weiter mit jeder ausgeführten Transaktion
um.
-
Wenn
eine Lesetransaktion an der Spitze der abgehenden Warteschlange
wiederholt wird, wird sie in die entsprechende Leseanforderungs-Warteschlange
RRQ (a oder b) bewegt, und der abgehende Warteschlangenzeiger schaltet
auf die andere Warteschlange um. Wenn eine Schreibtransaktion an
der Spitze der abgehenden Warteschlange erneut versucht wird, wird
bevorzugt, dass der Warteschlangenzeiger nicht umschaltet. Ein wiederholter
Schreibvorgang muss erfolgreich ausgeführt werden, bevor der abgehende
Warteschlangenzeiger auf die entgegengesetzte Warteschlange umschaltet.
Zwischen Versuchen zur Ausführung der
Schreibanforderung an der Spitze der aktuellen Warteschlange können jedoch
auch alle Leseanforderungen in jeder der RRQ versucht werden. Sobald
eine aktuelle abgehende Schreibanforderung erfolgreich ist, wird
sie aus der Warteschlange ausgegeben und ein Ausführungspaket
wird in die aktuelle eingehende Warteschlange eingegeben. Der abgehende
Warteschlangenzeiger schaltet danach auf die entgegengesetzte Warteschlange
um, selbst wenn eine nicht ausgeführte Leseanforderung in der
RRQ verbleibt.
-
Zusammengefasst
wechselt der abgehende Warteschlangenzähler zu der entgegengesetzten
Warteschlange, sobald eine Transaktion aus der aktuellen Warteschlange
ausgegeben wird. Eine wiederholte Schreibanforderung wird erst dann
ausgegeben, wenn sie erfolgreich ist. Eine wiederholte Leseanforderung wird
aus der abgehenden Warteschlange ausgegeben und in die RRQ verschoben.
Eine Leseanforderung in einer RRQ kann jederzeit versucht werden,
da ihre Anforderungen in Bezug auf die Anordnung zu dem Zeitpunkt
erfüllt
worden sind, als sie aus der abgehenden Warteschlange ausgegeben
worden ist. (Hiermit wird festgestellt, dass abgehende Leseanforderungen
in einer RRQ abgehende Leseanforderungen in der anderen RRQ in einem
64-Bit-PCI-Modus weiterleiten können.
-
In
dem 32-Bit-Modus wird eine abgehende Transaktion von dem Hochgeschwindigkeitsbus
entweder zu der abgehenden Warteschlange 'a' oder 'b' geleitet, abhängig von der Zielkennung des
Pakets (Ziel-ID). Multiplexer wählen
die nächste
abgehende Anforderung oder eine vorher zurückgezogene Leseanforderung aus,
wie dies in dem vorstehenden Abschnitt erörtert worden ist. Vorzugsweise
wird für
den 64-Bit-PCI-Modus ein
separater Multiplexer verwendet. Wenn die Busbrücke eine PCI-Transaktion in
dem 64-Bit-Modus einleitet, wählt
ein Multiplexer den Befehl und die Adressbits entweder aus der abgehenden
Warteschlange 'a' oder der abgehenden
Warteschlange 'b' aus.
-
Eingehende
Transaktionen können
mehr als 32 Bits adressieren, so dass eingehende Warteschlangen
eine duale Adresszyklus-Decodierung
(DAC-Decodierung) in dem 32-Bit-Modus und dem 64-Bit-Modus unterstützen. Die eingehenden Anforderungswarteschlangen
weisen getrennte Latch-Freigaben für die oberen und unteren 32
Bits der Adresse auf. In dem 32-Bit-Modus
wird die Adresse niedriger Ordnung in dem Adress-Latch 'a' oder
Adress-Latch 'b' für den PCI-Bus 'a' bzw. 'b' gespeichert.
Die eingehende Anforderungswarteschlange speichert die Adresse niedriger
Ordnung vor dem nächsten
PCI-Takt in Vorbereitung
auf die Ankunft der Adresse hohoer Ordnung eines dualen Adresszyklus
(DAC). Wenn es sich bei der eingehenden Transaktion um eine einzelne
Adresszyklustransaktion handelt, müssen Nullen in das Adressfeld
hoher Ordnung der eingehenden Anforderungswarteschlangen geladen.
-
In
dem 64-Bit-Modus kann die eingehende Transaktion durch einen 32-Bit-PCI-Master
oder einen 64-Bit-PCI-Master eingeleitet werden. Der DAC muss an
C/B[3:0] in Paketen durch 32-Bit- und 64-Bit-PCI-Master (z.B. Speichersteuereinheit)
behauptet werden, mit einer Adressierung oberhalb von 4 GB, da es
dem Master zu diesem Zeitpunkt nicht bekannt ist, ob das Ziel 64-Bit-fähig ist
oder nicht. Ein 64-Bit-PCI-Master muss die Adressbits hoher Ordnung
für Adressen
unterhalb von 4 GB nicht unbedingt auf Null steuern. Wenn REQ64#
mit FRAME# behauptet bzw. geltend gemacht wird, und wenn PXB DAC
bei C/B[3:0] während
dem ersten Adresszyklus decodiert, kann die vollständige Adresse
sofort decodiert werden. Wenn C/B[3:0] DAC nicht anzeigt, muss PXB
die Adresse hoher Ordnung auf ausschließlich Nullen bringen, bevor
die Adresse decodiert wird.
-
Wie
dies bereits vorstehend im Text beschrieben worden ist, wird es
bevorzugt, dass die Datenpuffer als getrennte Strukturen von den
Transaktions- oder Anforderungswarteschlangen bestehen. Die Daten
für die PCI-Transaktionen werden
in einer separaten Warteschlangenstruktur zu den Transaktionswarteschlangen gespeichert.
Diese Datenwarteschlangenstruktur wird als die Datenpuffer oder
die Datenwarteschlangen bezeichnet. Getrennte Warteschlangen sind
für die
Daten erforderlich, da die Transaktionen und Ausführungen in
den Transaktionswarteschlangen nicht immer in der gleichen Reihenfolge
zurückgezogen
werden in der sie in die Transaktionswarteschlangen eingetreten
sind. Zum Beispiel können
Schreibtransaktionen Lesetransaktionen in die gleiche Richtung weiterleiten.
Ferner werden PCI-verzögerte
Leseanforderungen in der Reihenfolge zurückgezogen, in der die PCI-Master
in Bezug auf ihr Daten zurückgeben,
wobei es sich dabei nicht unbedingt um die gleiche Reihenfolge handelt,
in der die Leseanforderungen oder die Lesedaten empfangen worden
sind.
-
Wenn
in dem dualen 32-Bit-PCI-Modus eine eingehende PCI-Schreibtransaktion
in InQa eintritt, treten die Daten, die der Adresse und dem Befehl
auf dem PCI-Bus folgen, in die eingehende Datenwarteschlange PW
Data 1 ein. Wenn das zugeordnete Schreibpaket über den Bus F16 übermittelt
wird, wird der Paket-Header, der den Schreibbefehl und die Adresse
aufweist, aus der Transaktionswarteschlange InQa gezogen, und die
Schreibdaten werden aus der eingehenden Datenwarteschlange PW Data
1/DRPLY Data 1 gezogen. In ähnlicher
Weise drückt
eine eingehende PCI-Schreibanforderung an dem PCI-Bus 'b' den Befehl und die Adresse in InQb,
und die zugeordneten Daten, die auf dem PCI-Bus folgen, werden in
die eingehende Datenwarteschlange PW Data 2 gedrückt.
-
In
dem dualen 32-Bit-PCI-Modus wird eine abgehende 32-Bit-PCI-Leseanforerung an
den PCI-Bus 'a' von OutQa oder RRQa
gezogen, wenn die Leseanforderung an dem PCI-Bus erfolgreich ist,
und wobei eine Leseausführung
in die eingehende Transaktionswarteschlange InQa geschoben wird.
Die zugeordneten Lesedaten treten in die eingehende Datenwarteschlange
PW Data 1/DRPLY Data 1 ein. Wenn das Ausführungspaket über den
Bus F16 übermittelt
wird, wird der Paket-Header, der den Leseausführungsbezeichner aufweist, von
der Spitze der Transaktionswarteschlange InQa gezogen und die Lesedaten
werden der eingehenden Datenwarteschlange PW Data 1/DRPLY Data 1
entzogen.
-
Jeder
32-Bit-PCI-Port kann zwei ausstehende PCI-Leseanforderungen aufweisen. Eine eingehende PCI-Leseanforderung an
dem PCI-Port a wird in InQa geshoben, wenn ein Platz in der eingehenden
PXB-Warteschlange für
eine Leseanforderung vorhanden ist, und es stehen eingehende Lesedatenpuffer
in PXB und MIOC zur Verfügung.
Zu diesem Zeitpunkt wird eingehende verzögerte Leseausführungs-Nachführeinrichtung mit
den Befehls- und Adressfeldern der eingehenden Leseanforderung geladen,
so dass sie den PCI-Master identifizieren
kann, der den Lesevorgang anfordert. Ein für diese eingehende Transaktion
einzigartiger Transaktionsbezeichner wird ebenfalls in die eingehende,
verzögerte
Leseausführungs-Nachführeinrichtung
geladen, so dass die Leseausführung
identifiziert werden kann, wenn sie in der OutQa ankommt. Wenn der
eingehende Lesevorgang an dem P6-Bus
ausgeführt
wird, erreicht ein verzögertes
Leseausführungspaket (DRC-Paket),
das die Lesedaten aufweist, die Busbrücke über den Hochgeschwindigkeitsbus.
Der DRC-Transaktions-Header,
der den eingehenden Lesebezeichner aufweist, wird in die OutQa verschoben.
Die in dem Paket folgenden Lesedaten werden in die Datenwarteschlange
DRC Data 1 oder die Datenwarteschlange DRC 2 verschoben, abhängig davon,
welcher DRC-Datenwarteschlange diesem eingehenden Lesevorgang zugeordnet
worden ist. Wenn der PCI-Master für diese Daten zurückkehrt
(er wird dauerhaft zurückgeführt, bis
die Daten ankommen), empfängt
er die Daten von der Datenwarteschlange DRC Data 1 oder DRC Data
2, wenn die zugeordnete eingehende Leseausführung von der Spitze der Transaktionswarteschlange OutQa
ausgegeben worden ist, und wobei der eingehende Lesevorgang in der
eingehenden, verzögerten
Leseausführungs-Nachführeinrichtung
markiert wird.
-
In
dem 64-Bit-PCI-Modus werden zwei Anordnungen von Datenpuffer-Warteschlangen
paarweise angeordnet, ähnlich
der Transaktionswarteschlange in dem 64-Bit-PCI-Modus. Ein eingehender
Schreibvorgang führt
dazu, dass die Daten wechselweise in die Datenwarteschlangen PW
Data 1 und PW Data 2 geschoben werden. Die Datenwarteschlangen sind
32 Bits breit (DWord). Wenn Daten zu einem Zeitpunkt als 64 Bits
von einem 64-Bit-PCI-Master empfangen werden und der Datenwarteschlangenzeiger
auf die Warteschlange PW Data 1 zeigt, wird das erste DWord in die
Datenwarteschlange PW Data 1 geschoben, und das nächste DWord wird
in die Datenwarteschlange PW Data 2 geschoben. Zusätzliche
DWORDs alternieren zwischen den beiden eingehenden Datenwarteschlangen.
-
Die
DRC-Datenwarteschlangen und die Schreib-Datenwarteschlangen werden paarweise
zusammengefasst und auf ähnliche
Art und Weise verschachtelt.
-
Das
vorstehend beschriebene innovative Paketformat sieht zusätzlich zu
den integrierten Flusssteuerungsinformationen mindestens ein Feld
vor, das hierin als Transaktionsidentifikationsfeld (TID) bezeichnet wird,
das auf verschiedene Art und Weise verwendet werden kann. Das Feld
ist vorzugsweise abhängig
von der Anwendung konfigurierbar. Der Vorteil ist der, dass die
sendende Vorrichtung, d.h. die Vorrichtung, die ein Anforderungspaket
ausgibt, vorbestimmte Daten in diesem Feld speichern kann, wie z.B.
einen Transaktionsbezeichner oder einen anderen Bezeichner. Nach
der Verarbeitung der Anforderung und der Vorbereitung des Ausführungspakets
kopiert die Steuerlogik der empfangenden Vorrichtung einfach den
Inhalt des Felds in das Ausführungspaket
für die Übertragung
zurück
an die ursprünglich
sendende Vorrichtung. Die Konfiguration kann somit derart beschaffen
sein, dass der Feldinhalt nur für
die sendende Vorrichtung einen Sinn macht, da die empfangende Vorrichtung
einfach den Inhalt kopiert und zurück sendet. Da das Paket nicht
auf die spezifischen Daten beschränkt ist, kann das Feld ferner
für eine
Vielzahl verschiedener Zwecke eingesetzt werden. Da die empfangende
Vorrichtung einfach den Inhalt in das Ausführungspaket kopiert, bleibt
der Inhalt ferner unbeeinträchtigt.
-
Dieser
Prozess wird in Bezug auf die Abbildung aus 11 näher beschriebne.
In dem Schritt 1105 bildet die sendende Vorrichtung ein
Anforderungspaket. Das Anforderungspaket weist das Transaktions-ID-Feld
auf, das zum Speichern der Daten der anfordernden Vorrichtung verwendet
wird. In dem Schritt 1110 wird das Anforderungspaket ausgegeben,
und in dem Schritt 1115 empfängt die empfangende Vorrichtung
das Paket und bildet in dem Schritt 1120 ein Antwortpaket.
Die empfangende Vorrichtung kopiert einfach das TID-Feld in das
Antwortpaket für
einen folgenden Zugriff durch die sendende Vorrichtung. Der Inhalt
des TID muss somit nicht durch die empfangende Vorrichtung interpretiert
werden, da lediglich eine Operation einer einfachen Kopie erforderlich
ist. In dem Schritt 1125 wird das Antwortpaket, das den
kopierten Inhalt des TID-Felds aufweist, zurück an die anfordernde Vorrichtung
gesendet.
-
In
dem vorliegenden Ausführungsbeispiel
wird das Feld für
eine zurückgestellte
abgehende Lesetransaktion (Prozessor an PCI) verwendet. Eine zurückgestellte
Transaktion ist eine Split-Transaktion,
wo der Lesevorgang in die anfängliche
Leseanforderung geteilt wird, gefolgt von einer zurückgestellten
Antwort zu einem späteren
Zeitpunkt. Die angeforderten Daten werden durch die zurückgestellte
Antwort zurückgegeben. Die
Vorrichtungs- und die Transaktions-ID der Leseanforderungseinrichtung
wird somit in das TID-Feld eingegeben. Wenn das Ausführungspaket
mit den Lesedaten gesendet wird, wird der TID aus dem Anforderungspaket
in das Ausführungspaket
kopiert. Wenn die Ausführung
die Spitze der eingehenden Anforderungswarteschlange erreicht, wird
eine zurückgestellte
Antwort zu dem anfordernden Prozessor gesendet. Die zurückgestellte
Antwort kopiert den Ausführungs-TID in die zurückgestellte
Antwort, wo er zur Adressierung des Prozessors verwendet wird; der
den ursprünglichen
Lesevorgang initiiert hat.
-
Die
Erfindung wurde vorstehend in Bezug auf das bevorzugte Ausführungsbeispiel
beschrieben. Es ist ersichtlich, dass die zahlreichen Alternativen,
Modifikationen, Variationen und Anwendungen für den Fachmann auf dem Gebiet
in Verbindung mit der vorstehenden Beschreibung erkennbar werden.