[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

DE69828980T2 - System und verfahren zur flusskontrolle für ein hochgeschwindigkeitsbus - Google Patents

System und verfahren zur flusskontrolle für ein hochgeschwindigkeitsbus Download PDF

Info

Publication number
DE69828980T2
DE69828980T2 DE69828980T DE69828980T DE69828980T2 DE 69828980 T2 DE69828980 T2 DE 69828980T2 DE 69828980 T DE69828980 T DE 69828980T DE 69828980 T DE69828980 T DE 69828980T DE 69828980 T2 DE69828980 T2 DE 69828980T2
Authority
DE
Germany
Prior art keywords
buffer
request
data
count
building block
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
DE69828980T
Other languages
English (en)
Other versions
DE69828980D1 (de
Inventor
Michael D. Bell
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 DE69828980D1 publication Critical patent/DE69828980D1/de
Publication of DE69828980T2 publication Critical patent/DE69828980T2/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/14Handling requests for interconnection or transfer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Small-Scale Networks (AREA)
  • Information Transfer Systems (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft ein synchrones Bussystem und ein entsprechendes Verfahren.
  • STAND DER TECHNIK
  • 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.
  • EP-A-0378401 offenbart ein Datenkommunikationssystem zur Verwendung bei der Datenübertragung zwischen Computersystemen über ein Übertragungsglied. Einer der Computer fungiert als Sender und der andere als Empfänger. Der Empfänger weist mindestens zwei Puffer auf und übermittelt eine Bestätigungsnachricht, wenn empfangene Daten aus einem Puffer gelöscht werden und der Puffer für den Datenempfang bereit ist. Der sendende Computer übermittelt einen Datenblock nur dann an den empfangenden Computer, wenn der Sender durch Zählen der empfangenen Bestätigungsnachrichten bestimmt, dass der Empfänger mindestens einen Puffer aufweist, der für den Datenempfang bereit ist. Die vorliegende Erfindung betrifft Kommunikationen zwischen zwei mit einem Bus in einem Datenverarbeitungssystem gekoppelten Bausteinen und versucht effizienter zu arbeiten als in EP-A-0378401.
  • 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 Bussystem gemäß dem gegenständlichen Anspruch 5.
  • Das erfindungsgemäße System und Verfahren sorgen für die Flusssteuerung zwischen Bausteinen bzw. Vorrichtungen unter Verwendung der Pakete zur Übertragung der Flusssteuerungsinformationen. In einem Ausführungsbeispiel wird ein Zähler bzw. Zählwert in Bezug auf die durch einen ersten Baustein ausgegebenen Pakete verwaltet. Der Zähler wird zu diesem Zweck für jedes durch den ersten Baustein auszugebende Paket erhöht und für jedes von dem ersten Baustein empfangene Antwortpaket herabgesetzt. Ein maximaler Pufferzählwert, der der Kapazität des Puffers entspricht, wird zur Ausführung der Flusssteuerung verwendet, indem bestimmt wird, wenn der maximale Pufferzählwert durch Ausgabe eines Pakets durch den ersten Baustein überschritten wird. Wenn der Zählwert überschritten wird, wird die Ausgabe von Paketen durch den ersten Baustein verhindert, bis der maximale Pufferzählwert nicht durch die Ausgabe des Pakets überschritten wird. In einem Ausführungsbeispiel handelt es sich bei dem ausgegebenen Paket um ein Anforderungspaket, das Befehls- und Dateninformationen aufweist, die in dem Puffer gespeichert werden. Die Befehlsinformationen und die Dateninformationen können in dem gleichen Speicher gespeichert werden, wobei es aber auch möglich ist, dass die Daten in einem Speicher gespeichert und nachgeführt bzw. verfolgt werden können, der von dem Puffer getrennt ist, der die Befehlsinformationen des Anforderungspakets speichert.
  • 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 Halbzyklus "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 ausreichend 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, 828 und 826, 830 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 und 9b 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 822 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 822 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. 824, 852 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 (an 828) empfangen wird, setzt die Anforderungs-Nachführeinrichtung 822 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 824 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 935 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 930.
  • 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 ausgehenden 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 dem Schritt 970 in einem LEN entsprechenden Ausmaß inkrementiert. Wenn in dem Schritt 975 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 empfangen 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 Flusssteuerungsprozessses 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)
    Figure 00280001
  • Figure 00290001
  • 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-Leseanforderung 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 Data1 entzogen.
  • Jeder 32-Bit-PCI-Port kann zwei ausstehende PCI-Leseanforderungen aufweisen. Eine eingehende PCI-Leseanforderung an dem PCI-Port a wird in InQa geschoben, 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 beschrieben. 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.

Claims (8)

  1. Verfahren zur Verwaltung des Datenflusses über einen Bus zwischen einem ersten Baustein (805) und einem zweiten Baustein (810), wobei das Verfahren folgendes umfasst: das Überwachen abgehender Anforderungen (822), die durch den ersten Baustein an den zweiten Baustein ausgegeben werden und eingehender Ausführungen, die durch den ersten Baustein von dem zweiten Baustein empfangen werden; das Inkrementieren (920) eines Zählwerts eines ersten Anforderungspuffers (824) für jede durch den ersten Baustein ausgegebene abgehende Anforderung, und das Dekrementieren (910) des Zählwerts des ersten Anforderungspuffers (828) für jede von dem ersten Baustein empfangene eingehende Ausführung; das Bestimmen, ob der Zählwert des ersten Anforderungspuffers ein Maximum des ersten Anforderungspuffers überschreitet; und wobei die Ausgabe von abgehenden Anforderungen durch den ersten Baustein verhindert wird, wenn eine abgehende Anforderung bewirkt, dass der Zählwert des ersten Anforderungspuffers das Maximum des ersten Anforderungspuffers überschreitet, bis der Zählwert des ersten Anforderungspuffers das Maximum des ersten Anforderungspuffers nicht überschreitet; wobei das Verfahren dadurch gekennzeichnet ist, dass es ferner separat folgendes vornimmt: das Überwachen einer Datengröße für abgehende Schreibanforderungen (826), die von dem ersten Baustein (805) an den zweiten Baustein (810) ausgegeben werden, sowie einer Datengröße für eingehende Schreibausführungen, die durch den ersten Baustein von dem zweiten Baustein empfangen werden; das Inkrementieren eines Zählwerts eines Datenpuffers (832) um die Datengröße für jede abgehende Schreibanforderung, die durch den ersten Baustein ausgegeben wird, und das Dekrementieren des Datenpufferzählwerts um die Datengröße der entsprechenden Schreibanforderung für jede von dem ersten Baustein empfangene eingehende Schreibausführung; und das Bestimmen, ob der Datenpufferzählwert einen Datenpuffer-Maximalwert überschreitet.
  2. Verfahren nach Anspruch 1, wobei der Zählwert des ersten Anforderungspuffers (824) für jede durch den ersten Baustein ausgegebene abgehende Anforderung um 1 erhöht wird, und wobei der Zählwert des ersten Anforderungspuffers für jede von dem ersten Baustein empfangene eingehende Ausführung um 1 herabgesetzt wird.
  3. Verfahren nach Anspruch 1, wobei das Verfahren ferner folgendes umfasst: das Verhindern der Ausgabe folgender abgehender Schreibanforderungen, wenn der Datenpufferzählwert den Datenpuffer-Maximalwert überschreitet, bis der Datenpufferzählwert den Datenpuffer-Maximalwert nicht überschreitet und der Zählwert des ersten Anforderungspuffers das Maximum des ersten Anforderungspuffers nicht überschreitet.
  4. Verfahren nach Anspruch 1, wobei von dem ersten Baustein an den zweiten Baustein abgegebene Anforderungen durch einen ersten Datenpuffer verarbeitet werden, der einen Zählwert des ersten Datenpuffers aufweist, der sich in dem ersten Baustein befindet, und einen zweiten Datenpuffer, der einen Zählwert des zweiten Datenpuffers aufweist, der sich in dem zweiten Baustein befindet, wobei der Zählwert des ersten Datenpuffers einer kleineren Kapazität zwischen einer Kapazität des ersten Datenpuffers und einer Kapazität des zweiten Datenpuffers entspricht.
  5. Bussystem, das folgendes umfasst: einen Bus (815); einen mit dem Bus gekoppelten ersten Baustein (805); einen mit dem Bus gekoppelten zweiten Baustein (810), mit einem ersten Puffer (854) für eingehende Anforderungen mit einer bestimmten Größe; und eine in dem ersten Baustein angeordnete erste Nachführeinrichtung (822), wobei die erste Nachführeinrichtung so konfiguriert ist, um folgendes auszuführen: das Überwachen abgehender Anforderungen (824), die durch den ersten Baustein ausgegeben und von dem ersten Puffer (854) für eingehende Anforderungen empfangen werden, sowie eingehender Ausführungen, die durch den ersten Baustein von dem zweiten Baustein empfangen werden; das Inkrementieren (920) eines Zählwerts eines ersten Anforderungspuffers in Verbindung mit einem ersten Anforderungspuffer (824) für jede durch den ersten Baustein ausgegebene abgehende Anforderung, und das Dekrementieren (910) des Zählwerts des ersten Anforderungspuffers für jede von dem ersten Baustein empfangene eingehende Ausführung; das Bestimmen, ob der Zählwert des ersten Anforderungspuffers ein Maximum des ersten Anforderungspuffers überschreitet; und das Verhindern der Ausgabe von abgehenden Anforderungen durch den ersten Baustein, wenn eine abgehende Anforderung bewirkt, dass der Zählwert des ersten Anforderungspuffers das Maximum des ersten Anforderungspuffers überschreitet, bis der Zählwert des ersten Anforderungspuffers das Maximum des ersten Anforderungspuffers nicht überschreitet; wobei das System dadurch gekennzeichnet ist, dass es ferner folgendes umfasst: einen Puffer für eingehende Daten (858), der in dem zweiten Baustein angeordnet ist; und eine zweite Nachführeinrichtung (832), die in dem ersten Baustein angeordnet ist, wobei die zweite Nachführeinrichtung getrennt von der ersten Nachführeinrichtung konfiguriert ist, um folgendes vorzunehmen: das Überwachen einer Datengröße für abgehende Schreibanforderungen, die von dem ersten Baustein ausgegeben und von dem Puffer für eingehende Daten des zweiten Bausteins empfangen werden, sowie einer Datengröße eingehender Schreibanforderungen, die durch den ersten Baustein von dem zweiten Baustein empfangen werden; das Inkrementieren eines Zählwerts eines Datenpuffers um die Datengröße für jede abgehende Schreibanforderung, die durch den ersten Baustein ausgegeben wird; das Dekrementieren des Datenpufferzählwerts um die Datengröße der entsprechenden Schreibanforderung für jede von dem ersten Baustein empfangene eingehende Schreibausführung; und das Bestimmen, ob der Datenpufferzählwert einen Datenpuffer-Maximalwert überschreitet.
  6. Bussystem nach Anspruch 5, das System ferner folgendes umfasst: einen zweiten Puffer für eingehende Anforderungen (828), der sich in dem ersten Baustein befindet; und eine zweite Nachführeinrichtung (850), die in dem zweiten Baustein angeordnet ist, wobei die zweite Nachführeinrichtung so konfiguriert ist, dass sie folgendes ausführt: das Überwachen abgehender Anforderungen, die von dem zweiten Baustein ausgegeben und von dem zweiten Puffer für eingehende Anforderungen empfangen werden, sowie eingehender Ausführungen, die durch den zweiten Baustein von dem ersten Baustein empfangen werden; das Inkrementieren eines Zählwerts des zweiten Anforderungspuffers (850) für jede abgehende Anforderung, die durch den zweiten Baustein ausgegeben wird, und das Dekrementieren des Zählwerts des zweiten Anforderungspuffers (850) für jede von dem zweiten Baustein empfangene eingehende Ausführung; und das Bestimmen, ob der Zählwert des zweiten Anforderungspuffers einen Maximalwert des zweiten Anforderungspuffers überschreitet oder überschreiten wird.
  7. Bussystem nach Anspruch 5, wobei die zweite Nachführeinrichtung ferner so konfiguriert ist, dass: sie die Ausgabe von abgehenden Anforderungen durch den zweiten Baustein verhindert, bis der Zählwert des zweiten Anforderungspuffers unterhalb des Maximalwerts des zweiten Puffers liegt.
  8. Bussystem nach Anspruch 5, wobei das System ferner folgendes umfasst: einen mit dem ersten Baustein gekoppelten Prozessor (803), wobei der Prozessor so konfiguriert ist, dass folgendes ausgeführt wird: das Lesen eines Puffergrößenwertes aus einem in dem zweiten Baustein angeordneten Konfigurationsregister; das Bestimmen einer Größe des eingehenden Puffers in dem zweiten Baustein, der abgehende Anforderungen empfängt, die durch den ersten Baustein an den zweiten Baustein abgegeben werden; und das Speichern eines der Puffergröße entsprechenden Wertes als Puffermaximalwert in dem ersten Baustein.
DE69828980T 1997-09-22 1998-09-17 System und verfahren zur flusskontrolle für ein hochgeschwindigkeitsbus Expired - Lifetime DE69828980T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/934,996 US6108736A (en) 1997-09-22 1997-09-22 System and method of flow control for a high speed bus
US934996 1997-09-22
PCT/US1998/019452 WO1999015972A1 (en) 1997-09-22 1998-09-17 System and method of flow control for a high speed bus

Publications (2)

Publication Number Publication Date
DE69828980D1 DE69828980D1 (de) 2005-03-17
DE69828980T2 true DE69828980T2 (de) 2006-05-04

Family

ID=25466414

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69828980T Expired - Lifetime DE69828980T2 (de) 1997-09-22 1998-09-17 System und verfahren zur flusskontrolle für ein hochgeschwindigkeitsbus

Country Status (7)

Country Link
US (1) US6108736A (de)
EP (1) EP1010085B1 (de)
CN (1) CN1118029C (de)
AU (1) AU9396598A (de)
DE (1) DE69828980T2 (de)
HK (1) HK1026959A1 (de)
WO (1) WO1999015972A1 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6336159B1 (en) 1997-06-25 2002-01-01 Intel Corporation Method and apparatus for transferring data in source-synchronous protocol and transferring signals in common clock protocol in multiple agent processing system
US6813251B1 (en) * 1999-07-27 2004-11-02 Intel Corporation Split Transaction protocol for a bus system
US6718282B1 (en) * 1999-10-20 2004-04-06 Cisco Technology, Inc. Fault tolerant client-server environment
US6609171B1 (en) * 1999-12-29 2003-08-19 Intel Corporation Quad pumped bus architecture and protocol
JP4554016B2 (ja) * 2000-01-20 2010-09-29 富士通株式会社 バス使用効率を高めた集積回路装置のバス制御方式
US7107383B1 (en) * 2000-05-03 2006-09-12 Broadcom Corporation Method and system for multi-channel transfer of data and control information
US6622194B1 (en) 2000-08-28 2003-09-16 Intel Corporation Efficient use of multiple buses for a scalable and reliable high-bandwidth connection
US6742160B2 (en) 2001-02-14 2004-05-25 Intel Corporation Checkerboard parity techniques for a multi-pumped bus
US20020133652A1 (en) * 2001-03-19 2002-09-19 Tai Quan Apparatus for avoiding starvation in hierarchical computer systems that prioritize transactions
US6735654B2 (en) * 2001-03-19 2004-05-11 Sun Microsystems, Inc. Method and apparatus for efficiently broadcasting transactions between an address repeater and a client
US6877055B2 (en) 2001-03-19 2005-04-05 Sun Microsystems, Inc. Method and apparatus for efficiently broadcasting transactions between a first address repeater and a second address repeater
US6889343B2 (en) 2001-03-19 2005-05-03 Sun Microsystems, Inc. Method and apparatus for verifying consistency between a first address repeater and a second address repeater
US6826643B2 (en) 2001-03-19 2004-11-30 Sun Microsystems, Inc. Method of synchronizing arbiters within a hierarchical computer system
US7102997B2 (en) * 2002-03-04 2006-09-05 Fujitsu Limited Aggregate rate transparent LAN service for closed user groups over optical rings
US7085889B2 (en) * 2002-03-22 2006-08-01 Intel Corporation Use of a context identifier in a cache memory
US7535836B2 (en) * 2003-02-12 2009-05-19 Broadcom Corporation Method and system to provide word-level flow control using spare link bandwidth
JP4507249B2 (ja) * 2004-10-19 2010-07-21 株式会社日立製作所 記憶デバイスの更新を制御するシステム及び方法
US8004988B2 (en) * 2007-11-21 2011-08-23 Microchip Technology Incorporated Ethernet controller
US8103824B2 (en) * 2008-04-17 2012-01-24 International Business Machines Corporation Method for self optimizing value based data allocation across a multi-tier storage system
US8006013B2 (en) * 2008-08-07 2011-08-23 International Business Machines Corporation Method and apparatus for preventing bus livelock due to excessive MMIO
US9531647B1 (en) * 2013-03-15 2016-12-27 Cavium, Inc. Multi-host processing

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4503499A (en) * 1982-09-14 1985-03-05 Eaton Corporation Controlled work flow system
US4719621A (en) * 1985-07-15 1988-01-12 Raytheon Company Packet fastbus
US4941089A (en) * 1986-12-12 1990-07-10 Datapoint Corporation Input/output network for computer system
US4922486A (en) * 1988-03-31 1990-05-01 American Telephone And Telegraph Company User to network interface protocol for packet communications networks
US5193090A (en) * 1988-07-15 1993-03-09 Janusz Filipiak Access protection and priority control in distributed queueing
US5101347A (en) * 1988-11-16 1992-03-31 National Semiconductor Corporation System for reducing skew in the parallel transmission of multi-bit data slices
US4995056A (en) * 1989-01-13 1991-02-19 International Business Machines Corporation System and method for data communications
GB9012970D0 (en) * 1989-09-22 1990-08-01 Ibm Apparatus and method for asynchronously delivering control elements with pipe interface
GB2251099B (en) * 1990-12-19 1994-08-03 Motorola Inc Bus system
US5367643A (en) * 1991-02-06 1994-11-22 International Business Machines Corporation Generic high bandwidth adapter having data packet memory configured in three level hierarchy for temporary storage of variable length data packets
US5257258A (en) * 1991-02-15 1993-10-26 International Business Machines Corporation "Least time to reach bound" service policy for buffer systems
US5491799A (en) * 1992-01-02 1996-02-13 Amdahl Corporation Communication interface for uniform communication among hardware and software units of a computer system
SE470002B (sv) * 1992-03-13 1993-10-18 Ellemtel Utvecklings Ab Förfarande för att förhindra att det på någon av ett antal kanaler på en gemensam överföringsledning sänds datapaket med högre intensitet än ett för kanalen förutbestämt värde samt anordning för utövande av sättet
US5404171A (en) * 1992-06-19 1995-04-04 Intel Corporation Method and apparatus for synchronizing digital packets of information to an arbitrary rate
US5448708A (en) * 1992-10-30 1995-09-05 Ward; James P. System for asynchronously delivering enqueue and dequeue information in a pipe interface having distributed, shared memory
US5668971A (en) * 1992-12-01 1997-09-16 Compaq Computer Corporation Posted disk read operations performed by signalling a disk read complete to the system prior to completion of data transfer
US5467464A (en) * 1993-03-09 1995-11-14 Apple Computer, Inc. Adaptive clock skew and duty cycle compensation for a serial data bus
US5574862A (en) * 1993-04-14 1996-11-12 Radius Inc. Multiprocessing system with distributed input/output management
US5657457A (en) * 1994-01-31 1997-08-12 Dell Usa, L.P. Method and apparatus for eliminating bus contention among multiple drivers without performance degradation
US5548733A (en) * 1994-03-01 1996-08-20 Intel Corporation Method and apparatus for dynamically controlling the current maximum depth of a pipe lined computer bus system
US5784579A (en) * 1994-03-01 1998-07-21 Intel Corporation Method and apparatus for dynamically controlling bus access from a bus agent based on bus pipeline depth
US5659718A (en) * 1994-08-19 1997-08-19 Xlnt Designs, Inc. Synchronous bus and bus interface device
US5671441A (en) * 1994-11-29 1997-09-23 International Business Machines Corporation Method and apparatus for automatic generation of I/O configuration descriptions
US5541919A (en) * 1994-12-19 1996-07-30 Motorola, Inc. Multimedia multiplexing device and method using dynamic packet segmentation
US5625779A (en) * 1994-12-30 1997-04-29 Intel Corporation Arbitration signaling mechanism to prevent deadlock guarantee access latency, and guarantee acquisition latency for an expansion bridge
US5771356A (en) * 1995-01-04 1998-06-23 Cirrus Logic, Inc. Apparatus for controlling FIFO buffer data transfer by monitoring bus status and FIFO buffer thresholds
US5802278A (en) * 1995-05-10 1998-09-01 3Com Corporation Bridge/router architecture for high performance scalable networking
US5751969A (en) * 1995-12-04 1998-05-12 Motorola, Inc. Apparatus and methods for predicting and managing congestion in a network
KR0157924B1 (ko) * 1995-12-23 1998-12-15 문정환 데이타 전송 시스템 및 그 방법
US5764961A (en) * 1996-04-03 1998-06-09 Ncr Corporation Predictable diverse data delivery enablement method and apparatus for ATM based computer system
US5758166A (en) * 1996-05-20 1998-05-26 Intel Corporation Method and apparatus for selectively receiving write data within a write buffer of a host bridge
US5768545A (en) * 1996-06-11 1998-06-16 Intel Corporation Collect all transfers buffering mechanism utilizing passive release for a multiple bus environment
US5729760A (en) * 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
US5862338A (en) * 1996-12-30 1999-01-19 Compaq Computer Corporation Polling system that determines the status of network ports and that stores values indicative thereof

Also Published As

Publication number Publication date
CN1279786A (zh) 2001-01-10
EP1010085A4 (de) 2002-04-10
WO1999015972A1 (en) 1999-04-01
HK1026959A1 (en) 2000-12-29
CN1118029C (zh) 2003-08-13
US6108736A (en) 2000-08-22
DE69828980D1 (de) 2005-03-17
EP1010085A1 (de) 2000-06-21
EP1010085B1 (de) 2005-02-09
AU9396598A (en) 1999-04-12

Similar Documents

Publication Publication Date Title
DE69829987T2 (de) E/a bus mit schnellen 16-bit zerteilten transaktionen
DE69828980T2 (de) System und verfahren zur flusskontrolle für ein hochgeschwindigkeitsbus
DE69413740T2 (de) Arbitrierungsverfahren zur Datenflusssteuerung durch ein E/A-Steuergerät
DE69519926T2 (de) Verfahren und vorrichtung zum einhalten der transaktionssteuerung und zur unterstützung von verzögerten antworten in einer busbrücke
DE69108434T2 (de) Mehrgruppen-Signalprozessor.
DE68925763T2 (de) Verbindungs- und Zugriffsarbitrierungsanordnung für Multiprozessorsystem
DE3280451T2 (de) Verfahren zur Initialisierung eines Datenverarbeitungssystems.
DE60207177T2 (de) System, welches zwei oder mehr Paketschnittstellen, einen Schalter, einen gemeinsamen Paket-DMA (Direct Memory Access)-Schaltkreis sowie einen L2 (Level 2) Cache aufweist
DE19900245B4 (de) Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host
DE69936060T2 (de) Verfahren und Vorrichtung für eine verbesserte Schnittstelle zwischen Computerkomponenten
DE2854485C2 (de) Datenverarbeitungsanlage
DE3750680T2 (de) Multiprozessor-Busprotokoll.
DE3751091T2 (de) Übertragungsprotokoll zwischen Prozessoren.
EP0772830B1 (de) Datenreduktion für buskoppler
DE3878908T2 (de) Hochgeschwindigkeitsbusschnittstelle mit einer niedrigen pinanzahl.
DE60036777T2 (de) Gerät zur Signalsynchronisierung zwischen zwei Taktbereichen
DE69936225T2 (de) Gleichzeitige serielle verbindung zur integrierung von funktionellen blöcken in eine integrierte schaltungsvorrichtung
EP0579389B1 (de) Zum Sender synchronisierter Bus ohne metastabilen Zustand
DE69935065T2 (de) Datenübertragungssteuerinrichtung und elektronisches gerät
DE3883532T2 (de) Knoten für die bedienung von unterbrechungsanforderungsnachrichten auf einem anstehenden bus.
DE69825915T2 (de) Verfahren und vorrichtung zur umschaltung zwischen quellen-synchron-takt/- und gemeinsam-takt-datenübertragungs-modi in einem mehragent-übertragungs-system
DE3882991T2 (de) Anordnung und methode zur erzielung von unterbrechungen mit einem "pended bus".
EP2030116A1 (de) Kommunikationsbaustein
DE10212642A1 (de) Speichersteuerung mit 1X/MX-Lesefähigkeit
DE3850387T2 (de) Vorrichtung und verfahren zum zugriff eines knotens auf einen bus.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806