DE60226167T2 - Computersystem-e/a-knoten - Google Patents

Computersystem-e/a-knoten Download PDF

Info

Publication number
DE60226167T2
DE60226167T2 DE60226167T DE60226167T DE60226167T2 DE 60226167 T2 DE60226167 T2 DE 60226167T2 DE 60226167 T DE60226167 T DE 60226167T DE 60226167 T DE60226167 T DE 60226167T DE 60226167 T2 DE60226167 T2 DE 60226167T2
Authority
DE
Germany
Prior art keywords
communication path
unit
command
commands
node
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
DE60226167T
Other languages
English (en)
Other versions
DE60226167D1 (en
Inventor
Stephen C. Autin ENNIS
Larry D. Austin Hewitt
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Application granted granted Critical
Publication of DE60226167D1 publication Critical patent/DE60226167D1/de
Publication of DE60226167T2 publication Critical patent/DE60226167T2/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
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Bus Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Description

  • Hintergrund der Erfindung
  • 1. Technisches Gebiet
  • Diese Erfindung betrifft die Eingabe/Ausgabe (I/O) in einem Computersystem und betrifft insbesondere die Handhabung der Transaktionen in einem I/O-Knoten.
  • 2. Hintergrund
  • WO-A-99/16195 offenbart ein Glasfaserkanalkommunikationssystem mit NL-Port- bzw. Anschluss, der mit einer Glasfaserkanaldatenverbindung, dem Sendeblock-FIFO-Puffer, der zwischen dem NL-Anschluss und einer Sendeprotokollmaschine angeschlossen ist, und einem separaten Empfangsblock-FIFO-Puffer, der zwischen dem NL-Anschluss und einer separaten Empfangsprotokollmaschine angeschlossen ist, verbunden ist. Eine Host- bzw. Leitrechnerspeicherschnittstelle verbindet einen Host-Computer mit einem vollständig bidirektionalen Kommunikationsprozessor mit der Sendeprotokollmaschine und der Empfangsprotokollmaschine. Datenblöcke können mittels der Empfangsprotokollmaschine über die Host-Speicherschnittstelle zu dem Host-Speicher gesendet werden.
  • Technologielösungen 1997, Boulder Creek, CA, US, RW Kembel mit dem Titel „Tiefe Glasfaserkanalverteilungsschleife", Seite 270, § 5 bis Seite 275, § 2 beschreibt die Verwendung von Doppelschleifenkonfigurationen mit Port-Umgehungsschaltungen. Doppelschleifenkonfigurationen liefern redundante Pfade zu jeder Schleife, wodurch sichergestellt wird, dass, wenn eine der Schleifen versagt, Geräte dennoch angeschlossen werden können, indem die andere ansonsten redundante Schleife verwendet wird.
  • In einem typischen Computersystem kommunizieren ein oder mehrere Prozessoren mit Eingabe/Ausgabe-(I/O)Geräten über einen oder mehrere Busse. Die I/O-Geräte können mit den Prozessoren über eine I/O-Brücke verbunden sein, die den Informationstransfer zwischen einem peripheren Bus, der an die I/O-Geräte angeschlossen ist, und einem gemeinsamen benutzen Bus verwaltet, der an die Prozessoren angeschlossen ist. Des weiteren kann die I/O-Brücke den Informationstransfer zwischen einem Systemspeicher und den I/O-Geräten oder den Systemspeicher und den Prozessoren verwalten.
  • Ungünstigerweise besitzen viele Bussysteme diverse Nachteile. Beispielsweise erzeugen viele Geräte, die an einem Bus angeschlossen sind, eine relativ große elektrische Kapazität für die Gerätetreibersignale auf dem Bus. Des weiteren erzeugen die vielen Verbindungspunkte auf einem gemeinsamen Bus Signalreflektionen bei hohen Signalfrequenzen, die die Signalintegrität verringern. Als Folge davon werden Signalfrequenzen auf dem Bus im Allgemeinen relativ klein gehalten, um die Signalintegrität auf einem akzeptierbaren Niveau zu halten. Die relativ geringen Signalfrequenzen reduzieren jedoch die Signalbandbreite und begrenzen das Leistungsverhalten von Geräten, die an dem Bus angeschlossen sind.
  • Der Mangel an Anpassbarkeit an eine große Anzahl von Geräten ist ein weiterer Nachteil gemeinsam benutzter Bussysteme. Die verfügbare Bandbreite eines gemeinsam benutzten Busses ist im Wesentlichen festgelegt (und kann abnehmen, wenn das Hinzufügen weiterer Geräte eine Verringerung der Signalfrequenzen auf dem Bus erfordert). Sobald die Bandbreitenerfordernisse der mit dem Bus verbundenen Geräte (direkt oder indirekt) die verfügbare Bandbreite des Busses übersteigt, werden Geräte häufig angehalten, wenn diese auf den Bus zugreifen wollen, und das Gesamtleistungsverhalten des Computersystems mit dem gemeinsam benutzten Bus wird höchstwahrscheinlich beeinträchtigt. Ein Beispiel eines gemeinsam benutzten Busses, der von I/O-Geräten verwendet wird, ist ein peripherer Komponentenverbindungs- (PCI) Bus. Viele I/O-Brückengeräte verwenden einen Puffermechanismus, um eine Reihe von anhängigen Transaktionen von dem PCI-Bus zu einem letzten Zielbus zu speichern. Jedoch kann die Pufferung Unterbrechungen auf dem PCI-Bus hervorrufen. Unterbrechungen werden hervorgerufen, wenn eine Reihe aus Transaktionen in einer Warteschlange gepuffert werden und auf das Senden zu einem Zielbus warten und eine Unterbrechung auf dem Zielbus auftritt, wodurch die weitere Bearbeitung angehalten wird. Wenn dann eine Transaktion, die einen Abschluss dieser wartenden Transaktionen ermöglicht, an der Warteschlange eintrifft, wird diese hinter den anderen Transaktionen gespeichert. Um die Unterbrechung aufzuheben, müssen die Transaktionen in der Warteschlange irgendwie umgeordnet werden, um es möglich zu machen, dass die neu eingetroffene Transaktion vor den wartenden Transaktionen übertragen wird. Um Situationen wie diese zu vermeiden, schreibt die PCI-Busspezifikation einen Satz aus Umordnungsregeln vor, die die Handhabung und Reihenfolge von PCI-Bustransaktionen regeln. Um einige der Nachteile eines gemeinsam benutzten Busses zu überwinden, verwenden manche Computersysteme paketbasierte Kommunikationen zwischen Geräten oder Knoten. In derartigen Systemen können Knoten miteinander durch Austausch von Informationspaketen kommunizieren. Im Allgemeinen ist ein „Knoten" eine Einrichtung, die in der Lage ist, an Transaktionen auf einer Verbindungsstruktur teilzunehmen. Beispielsweise kann die Verbindungsstruktur auf Paketbasis erfolgen, und der Knoten kann ausgebildet sein, Pakete zu empfangen und zu senden. Im Allgemeinen ist ein „Paket" eine Kommunikation zwischen zwei Knoten: ein Start- oder „Quellen- bzw. Ursprungs"-Knoten, der das Paket sendet, und ein End- oder „Ziel"-Knoten, der das Paket empfängt. Wenn ein Paket den Zielknoten erreicht, nimmt der Zielknoten die in den Paketen übertragene Information auf und verarbeitet die Information intern. Ein Knoten, der auf einem Kommunikationsweg zwischen dem Ursprungsknoten und dem Zielknoten liegt, kann das Paket übertragen oder von dem Ursprungsknoten zu dem Zielknoten weiterleiten.
  • Des weiteren gibt es Systeme, in denen eine Kombination aus paketbasierter Kommunikation und busbasierter Kommunikation verwendet wird. Beispielsweise ist ein System mit einem PCI-Bus und einem Graphikbus, etwa AGP, verbunden. Der PCI-Bus ist mit einer Paketbusschnittstelle verbunden, die dann PCI-Bustransaktionen in Pakettransaktionen zur Sendung auf einem Paketbus übersetzen kann. In gleicher Weise ist der Graphikbus mit einer AGP-Schnittstelle verbunden, die AGP-Transaktionen in Pakettransaktionen übersetzen kann. Jede Schnittstelle kann mit einer übergeordneten Brücke bzw. Host-Brücke kommunizieren, die mit einem der Prozessoren verknüpft ist, oder kann in anderen Fällen mit einem weiteren peripheren Gerät in Verbindung treten.
  • Wenn PCI-Geräte die Transaktionen initiieren, werden die paketbasierten Transaktionen durch die gleichen Regeln im Hinblick auf die Reihenfolge beschränkt, wie sie in der PCI-Spezifikation für den lokalen Bus vorgegeben sind. Das gleiche kann für Pakettransaktionen gelten, die für den PCI-Bus vorgesehen sind. Diese Regeln im Hinblick auf die Reihenfolge werden auch in dem paketbasierten Transaktionen eingehalten, da Transaktionsunterbrechungen, die an einer Paketbusschnittstelle auftreten können, eine Blockierung dieser Paketbusschnittstelle bewirken können. Diese Blockierung kann weitere Unterbrechungen in den hinteren Paketbusnetzen hervorrufen. Des weiteren können die AGP-Transaktionen einem Satz aus Transaktionsreihenfolgenregeln gehorchen, um eine geeignete Auslieferung von Daten sicherzustellen.
  • Abhängig von der Konfiguration der I/O-Knoten können Transaktionen über einen Knoten zu einem weiteren Knoten in Richtung der Host-Brücke oder von der Host-Brücke weg weitergeleitet werden. Alternativ können Transaktionen in dem Paketverkehr an einem speziellen Knoten eingeschleust werden. In jedem Falle ist eine I/O-Knotenarchitektur erwünscht, die Transaktionen steuern kann, wenn diese entlang dem Kommunikationsweg übertragen werden.
  • Überblick über die Erfindung
  • Es sind diverse Ausführungsformen eines Eingabe/Ausgabe-Knotens eines Computersystems offenbart. In einer Ausführungsform enthält ein Eingabe/Ausgabe-Knoten für ein Computersystem eine erste Empfängereinheit, die ausgebildet ist, einen ersten Befehl über einen ersten Kommunikationspfad zu empfangen, und enthält ein erste Sendereinheit, die ausgebildet ist, einen ersten entsprechenden Befehl, der dem ersten Befehl entspricht, über einen zweiten Kommunikationspfad zu senden. Der Eingabe/Ausgabe-Knoten enthält ferner eine zweite Empfängereinheit, die ausgebildet ist, einen zweiten Befehl über einen dritten Kommunikationspfad zu empfangen, und enthält eine zweite Sendeeinheit, die angeschlossen ist, einen zweiten entsprechenden Befehl, der dem zweiten Befehl entspricht, über einen vierten Kommunikationspfad zu senden. In einer speziellen Ausführungsform sind die Kommunikationspfade Punkt-zu-Punkt-Kommuniktionsverbindungen, etwa HyperTransportverbindungen, um ein Beispiel zu nennen. Der Eingabe/Ausgabe-Knoten kann ferner eine Brückeneinheit aufweisen, die angeschlossen ist, ausgewählte Befehle von dem ersten Empfänger und dem zweiten Empfänger zu empfangen und die Einheit ist ausgebildet, Befehle, die den ausgewählten Befehlen entsprechen, über einen peripheren Bus zu senden.
  • In einer speziellen Ausführungsform enthält der Eingabe/Ausgabe-Knoten eine Steuereinheit, die ausgebildet ist, das Übertragen von Befehlen von dem ersten Kommunikationspfad zu dem zweiten Kommunikationspfad und zu dem peripheren Bus zu steuern. Des weiteren ist die Steuereinheit ausgebildet, das Übertragen von Befehlen von dem dritten Kommunikationspfad zu dem vierten Kommunikationspfad zu dem peripheren Bus zu steuern. Die Steuereinheit ist ferner ausgebildet, das Übermitteln von Befehlen von dem peripheren Bus zu dem zweiten Kommunikationspfad und zu dem vierten Kommunikationspfad zu steuern. Des weiteren ist die Steuereinheit ausgebildet, das Übermitteln der Befehle auf der Grundlage mehrerer Steuerbefehle, die von dem ersten Empfänger, dem zweiten Empfänger und der Brückeneinheit empfangen werden, selektiv zu steuern.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist eine Blockansicht einer Ausführungsform eines Computersystems.
  • 2 ist eine Blockansicht einer Ausführungsform eines I/O-Knotens.
  • 3 ist eine Blockansicht einer Ausführungsform einer Transaktionssteuereinheit.
  • 4 ist eine Blockansicht einer Ausführungsform einer Disponiereinheit.
  • 5 ist eine Blockansicht einer Ausführungsform einer Disponiereinheit mit einer Markierlogik.
  • 6 ist eine Blockansicht einer Ausführungsform einer Transaktionsdisponiereinheit mit einer Logik zur Verhinderung der Verarmung.
  • 7 ist eine Blockansicht einer Ausführungsform einer Fairnessschaltung.
  • Obwohl die Erfindung diversen Modifizierungen und alternativen Formen unterliegen kann, sind dennoch spezielle Ausführungsformen hierin beispielhaft in den Zeichnungen gezeigt und im Weiteren detailliert beschrieben.
  • Art bzw. Arten zum Ausführen der Erfindung
  • 1 ist eine Blockansicht einer Ausführungsform eines Computersystems. Das Computersystem umfasst Prozessoren 10A bis 10D, die jeweils mit einem kohärenten Paketbus 15 verbunden sind. Jeder Abschnitt des kohärenten Paketbusses 15 bildet eine Punkt-zu-Punkt-Verbindung zwischen jedem der Prozessoren 10A bis D. Obwohl vier Prozessoren unter Anwendung von Punkt-zu-Punkt-Verbindungen gezeigt sind, ist zu beachten, dass eine andere Anzahl an Prozessoren verwendet werden kann und dass andere Arten von Bussen eine Verbindung zwischen diesen herstellen kann. Das Computersystem umfasst ferner I/O-Knoten, die als 20, 30 oder 40 bezeichnet sind und die miteinander in einer Kette mittels I/O-Paketbus 50B bzw. 50C verbunden sind. Der I/O-Paketbus 50A ist zwischen einem Host-Knoten/Prozessor 10A und dem I/O-Knoten 20 angeschlossen. Der Prozessor 10A ist als ein Host-Knoten dargestellt, der eine Host-Brücke zur Kommunikation mit dem I/O-Paketbus 50A aufweist. Die Prozessoren 10B bis D können ebenfalls Host-Brücken für die Kommunikation mit anderen I/O-Paketbussen (nicht gezeigt) aufweisen. Die Kommunikationsverbindungen, die durch den I/O-Paketbus 50A bis C gebildet sind, können ebenfalls als Punkt-zu-Punkt-Verbindungen betrachtet werden. Der I/O-Knoten 20 ist mit zwei peripheren Bussen 25A–B verbunden. Der I/O-Knoten 30 ist mit einem Graphikbus 35 verbunden, während der I/O-Knoten 40 mit einem weiteren peripheren Bus 45 verbunden ist.
  • Die Prozessoren 10A10D sind anschauliche Beispiele von etwa einem x86-Mikroprozessor, etwa einem Athlon-Mikroprozessor. Des weiteren ist ein Beispiel eines Paketbusses, etwa des I/O-Paketbusses 50A50C, ein nicht-kohärenter HyperTransportbus. Die peripheren Busses 25A–B und der periphere Bus 45 sind Beispiele eines üblichen peripheren Busses, etwa in Form eines peripheren Komponentenverbindungs(PCI) Busses. Der Graphikbus 35 ist ein anschauliches Beispiel eines beschleunigten Graphikanschlusses (AGP). Es ist zu beachten, dass aber auch andere Arten von Mikroprozessoren und andere Arten peripherer Busse verwendet werden können.
  • Zu beachten ist, dass, obwohl drei I/O-Knoten gezeigt sind, die mit dem Host-Prozessor 10A verbunden sind, in anderen Ausführungsformen eine andere Anzahl an Knoten eingesetzt werden kann und diese Knoten können mit Hilfe anderer Topologien angeschlossen werden. Die Kettenstruktur, die in 1 gezeigt ist, dient dem besseren Verständnis.
  • In der dargestellten Ausführungsform empfängt die Host-Brücke des Prozessors 10A in Aufwärtsrichtung laufende Pakettransaktionen von den vorhergehenden Knoten, etwa dem I/O-Knoten 20, 30 oder 40. Alternativ sendet die Host-Brücke des Prozessors 10A Pakete wärtsgerichtet zu Geräten, etwa peripheren Geräten (nicht gezeigt), die beispielsweise mit dem peripheren Bus 25A verbunden sind.
  • Während des Betriebs übersetzt der I/O-Knoten 20 und 40 PCI-Bustransaktionen abwärts gerichtete Pakettransaktionen, die in I/O-Strömen übertragen werden, und die Knoten übersetzen zusätzlich abwärtsgerichtete Pakettransaktionen in PCI-Bustransaktionen. Alle Pakete, die von Knoten stammen, die nicht der Host-Brücke des Prozessors 10A entsprechen, wandern aufwärts zu der Host-Brücke des Prozessors 10A, bevor diese von einem anderen Knoten weitergeleitet werden. Alle Pakete, die von der Host-Brücke des Prozessors 10A stammen, wandern stromabwärts zu anderen Knoten, etwa den I/O-Knoten 20, 30 oder 40. Im hierin verwendeten Sinne bezeichnet „aufwärtsgerichtet" den Paketverkehrfluss in der Richtung der Host-Brücke des Prozessors 10A und „abwärtsgerichtet" bezeichnet die Paketverkehrsflussrichtung weg von der Host-Brücke des Prozessors 10A. Jeder I/O-Strom kann durch eine Kennung ermittelt werden, die als eine Einheitenkennung bzw. Einheiten-ID bezeichnet wird. Zu beachten ist, dass die Einheiten-ID ein Teil eines Paketkopfes sein kann oder eine beliebige andere zugeordnete Anzahl an Bits in einem Paket oder Paketen. Im hierin verwendeten Sinne bezeichnet ein „I/O-Strom" alle Pakettransaktionen, die die gleiche Einheiten-I/D enthalten und die daher von dem gleichen Knoten stammen.
  • Beispielsweise initiiert ein peripheres Gerät auf dem peripheren Bus 45 eine Transaktion, die zu einem peripheren Gerät auf dem peripheren Bus 25 gerichtet ist. Die Transaktion kann zunächst in ein oder mehrere Pakete mit einer einzigartigen Einheiten-ID umgewandelt und dann aufwärts gerichtet gesendet werden. Zu beachten ist, dass jedes Paket mit spezieller Information codiert werden kann, die das Paket kennzeichnet. Beispielsweise kann die Einheiten-ID in dem Paketkopf codiert vorliegen. Des weiteren kann auch die Art der Transaktion in dem Paketkopf eingefügt werden. Jedes Paket erhält eine zugeordnete Einheiten-ID, die den Ursprungsknoten kennzeichnet. Da der I/O-Knoten 20 keine Pakete zu einem peripheren Gerät auf dem peripheren Bus 25 von der Abwärtsrichtung her gesehen weiterleitet, werden die Pakete aufwärts gerichtet zu der Host-Brücke des Prozessors 10A gesendet. Die Host-Brücke des Prozessors 10A kann dann die Pakete zurück rückwärts gerichtet mit einer Einheiten-ID der Host-Brücke des Prozessors 10A senden, bis der I/O-Knoten 20 das Paket erkennt und dem peripheren Gerät auf dem peripheren Bus 25 zuweist. Der I/O-Knoten 20 kann dann die Pakete in periphere Bustransaktionen umwandeln und die Transaktionen an das periphere Gerät auf dem peripheren Bus 25 senden.
  • Wenn die Pakettransaktionen aufwärts gerichtet oder abwärts gerichtet übertragen werden, durchlaufen die Pakete möglicherweise einen oder mehrere I/O-Knoten. Der Durchgang wird manchmal auch als Tunnel bezeichnet und der I/O-Knoten wird manchmal auch als Tunneleinrichtung bezeichnet. Pakete, die von der Aufwärtsrichtung in die Abwärtsrichtung oder von der Abwärtsrichtung in die Aufwärtsrichtung gesendet werden, werden als „weitergeleiteter" Verkehr bezeichnet. Ferner wird ein Paketverkehr, der von einem speziellen I/O-Knoten stammt und in den stromaufwärtsgerichteten Verkehr eingefügt wird, als ein „eingeprägter" Verkehr bezeichnet.
  • Wie nachfolgend detaillierter beschrieben ist, kann der I/O-Knoten die Fähigkeit der Transaktionsumordnung sowie des Paketspeicherns enthalten, um damit die Regel im Hinblick auf die Reihenfolge der diversen Busse, die mit einem I/O-Knoten verbunden sind, zu bewahren. Der I/O-Knoten kann ferner eine Steuerlogik aufweisen, die den Fluss von Paketen in den Tunnel und aus dem Tunnel heraus auf Grund von weitergeleitetem Verkehr und eingeprägtem Verkehr steuert.
  • 2 ist eine Blockansicht einer Ausführungsform eines I/O-Knotens. Der I/O-Knoten ist repräsentativ für den I/O-Knoten 20, 30, 40 aus 1 und wird im Weiteren der Einfachheit halber als I/O-Knoten 20 bezeichnet. Der I/O-Knoten 20 aus 2 enthält einen Transaktionsempfänger 110, der mit einem Sender 140 über einem Befehlsbus 111 und mit einer peripheren Schnittstelle 150 über einem Befehlsbus 112 verbunden ist. Der I/O-Knoten 20 enthält ferner einen Transaktionsempfänger 120, der mit einem Sender 130 über einen Befehlsbus 121 und mit einer peripheren Schnittstelle 150 über einen Befehlsbus 122 verbunden ist. Die periphere Schnittstelle 150 ist ferner mit Sendern 130 und 140 über einen Befehlsbus 151 und mit einem peripheren Bus 152 verbunden. Des weiteren enthält der I/O-Knoten 20 eine Transaktionssteuereinheit 100, die mit jedem Empfänger, jedem Sender und einer peripheren Schnittstelle über einen Steuerbefehlbus 101 verbunden ist. Im hierin verwendeten Sinne soll ein Befehlsbus Signale für Befehle, Steueraktivitäten und Daten enthalten. Wenn daher gesagt wird, dass eine Transaktion oder ein Befehl über einen entsprechenden Befehlsbus gesendet wird, ist dies so zu verstehen, dass Befehlsbits und Datenbits mit eingeschlossen sind.
  • In der dargestellten Ausführungsform bilden der Empfänger 110 und der Sender 140 einen Kommunikationspfad des I/O-Tunnels und der Empfänger 120 und der Sender 130 bilden einen zweiten Kommunikationspfad des I/O-Tunnels. Da jeder Kommunikationspfad unidirektional ist, kann jeder Pfad als der aufwärts gerichtete oder abwärts gerichtete Pfad angeschlossen werden. Somit kann der von der peripheren Schnittstelle 150 eingeprägte Datenverkehr zu jedem der Sender 130 und 140 zugeführt werden.
  • Die Empfänger 110 und 120 empfangen jeweils Pakettransaktionen in einem Empfangspuffer (nicht gezeigt). Da jede Transaktion empfangen wird, wird ein Steuerbefehl erzeugt, der eine Teilmenge der in den empfangenen Befehl enthaltenen Information enthält. Der Steuerbefehl kann die Einheiten-ID des Startknotens, die Zielinformation, eine Datenzahl und Transaktionsart beinhalten, um ein Beispiel zu nennen. Zu beachten ist, dass der Steuerbefehl andere Information enthalten kann oder einige der hier aufgelisteten Informationen können nicht enthalten sein. Der Steuerbefehl wird der Transaktionssteuereinheit 100 zugeleitet.
  • In Reaktion darauf, dass die periphere Schnittstelle 150 Transaktionen von dem peripheren Bus 152 empfängt, kann auch die periphere Schnittstelle 150 Steuerbefehle erzeugen, die Informationen ähnlich zu jenen, die in dem zuvor beschriebenen Steuerbefehl enthalten sind, beinhalten. Die periphere Schnittstelle 150 kann auch die Transaktionen in einem oder mehreren Puffern speichern und die Steuerbefehle zu der Transaktionssteuereinheit 100 senden.
  • Die Transaktionssteuereinheit 100 speichert jeden Steuerbefehl, den diese empfängt, in einer oder mehreren Pufferstrukturen in der Reihenfolge, in der diese empfangen wurden. Auf der Grundlage der Steuerbefehle, die die Transaktionssteuereinheit 100 in ihrem Speicher speichert, kann die Transaktionssteuereinheit 100 die Reihenfolge festlegen, in welcher die entsprechenden Befehle, die in den Startpuffern oder Quellenpuffern warten (d. h. dem Empfänger und/oder der peripheren Schnittstelle), gesendet werden. Wie nachfolgend mit Bezug zu 3 bis 6 detaillierter erläutert ist, kann die Transaktionssteuereinheit 100 Transaktionen in ihren Puffern auf der Grundlage von Faktoren, etwa der Art der Transaktion, wo ist freier Speicherplatz am Sender und im Ziel, ob die Transaktion ein weitergeleiteter Datenverkehr oder ein eingeprägter Datenverkehr ist, und dergleichen verteilen. Somit kann die Transaktionssteuereinheit 100 verantwortlich sein für den gesamten Ablauf von Transaktionen durch den Tunnel eines I/O-Knotens.
  • Sobald die Transaktionssteuereinheit 100 festlegt, welche Transaktion verarbeitet wird, kann die Transaktionssteuereinheit 100 die entsprechende Quelleneinrichtung anweisen, eine anhängige Transaktion zu dem Zielgerät zu senden. Beispielsweise wählt die Transaktionssteuereinheit 100 einen Steuerbefehl aus ihrem Puffer aus, der repräsentativ ist für eine Transaktion, die von dem Empfänger 110 zu dem Sender 140 weitergeleitet wird. Die Transaktionssteuereinheit 100 verständigt den Empfänger 110, die Transaktion zu dem Sender 140 über dem Befehlsbus 111 zu senden. Der Sender 140 sendet dann die Transaktion zu den nächsten Knoten in der Kette. Der nächste Knoten kann ein weiterer I/O-Knoten sein, der entweder in der Aufwärtsrichtung oder in der Abwärtsrichtung vorliegt, oder dieser kann ein Host-Knoten sein, etwa der Host-Prozessor 10A aus 1. Des weiteren können die Transaktionssteuereinheit 100 und der Sender 140 eine Logik enthalten (nicht gezeigt), die für einen weiteren Knoten angibt, ob freier Speicherplatz in dem Empfangspuffer vorhanden ist oder nicht.
  • 3 zeigt eine Blockansicht einer Ausführungsform einer Transaktionssteuereinheit. Schaltungskomponenten, die den 2 gezeigten Komponenten entsprechen, sind der Einfachheit halber und der Klarheit halber identisch bezeichnet. Die Transaktionssteuereinheit 100 enthält drei Disponiereinheiten, die als 160, 170 und 180 bezeichnet sind. Jede der Disponiereinheiten 160, 170 und 180 enthält zwei virtuelle Kanalbefehlspuffer und eine Verteil- und Pufferverwaltungseinheit. Die virtuellen Kanalbefehlspuffer der Disponiereinheit 160 sind mit V. C. FIFO 166 und 167 und die Verteil- und Pufferverwaltungseinheit ist als 168 bezeichnet. In ähnlicher Weise sind virtuelle Kanalbefehlspuffer der Disponiereinheit 170 mit V. C. FIFO 176 und 177 und die Verteil- und Pufferverwaltungseinheit ist mit 178 bezeichnet, und die virtuellen Kanalbefehlspuffer der Disponiereinheit 180 sind mit V. C. FIFO 186 und 187 und die Verteil- und Pufferverwaltungseinheit ist mit 188 bezeichnet.
  • Allgemein gesprochen ist ein „virtueller Kanal" ein Kommunikationspfad zum Übertragen von Paketen zwischen diversen Verarbeitungsknoten. Jeder virtuelle Kanal ist ressourcenunabhängig von den anderen virtuellen Kanälen (d. h. Pakete, die in einem virtuellen Kanal übertragen werden, werden im Allgemeinen nicht im Hinblick auf die physikalische Übertragung durch das Vorhandensein oder das Fehlen von Paketen in einem weiteren virtuellen Kanal beeinflusst). Pakete werden einem virtuellen Kanal auf der Grundlage der Paketart zugeordnet. Pakete in dem gleichen virtuellen Kanal können physikalisch durch die gegenseitige Übertragung in Konflikt sein (d. h. Pakete in dem gleichen virtuellen Kanal können Ressourcenkonflikte erfahren), aber diese können nicht mit der Übertragung von Paketen in einem anderen virtuellen Kanal in Konflikt sein.
  • Gewisse Pakete können logisch mit anderen Paketen in Konflikt stehen (d. h. aus Protokollgründen, Kohärenzgründen oder anderen derartigen Gründen kann ein Paket logisch mit einem weiteren Paket in Konflikt sein). Wenn ein erstes Paket aus Gründen der Logik bzw. des Protokolls an seinem Zielknoten eintreffen muss, bevor ein zweites Paket an seinem Zielknoten eintrifft, ist es möglich, das ein Computersystem eine Blockade erleidet, wenn das zweite Paket physikalisch das Senden des ersten Pakets blockiert (indem in Konflikt stehende Ressourcen besetzt werden). Durch Zuordnen des ersten und des zweiten Pakets zu separaten virtuellen Kanälen und durch Einrichten des Übertragungsmediums innerhalb des Computersystems derart, das Pakete in separaten virtuellen Kanälen sich gegenseitig im Übertragen nicht beeinflussen können, wird ein blockierfreier Betrieb erreicht. Zu beachten ist, dass die Pakete aus unterschiedlichen virtuellen Kanälen über die gleichen physikalischen Verbindungen übertragen werden. Da jedoch ein Empfangspuffer vor dem Senden verfügbar ist, blockieren sich die virtuellen Kanäle nicht gegenseitig, selbst wenn diese gemeinsam genutzte Ressource verwendet wird.
  • In einer Sichtweise kann jede unterschiedliche Paketart (beispielsweise jede unterschiedliche Befehlscodierung) ihren eigenen virtuellen Kanal zugeordnet werden und somit werden in einer Ausführungsform separate Puffer jedem virtuellen Kanal zugewiesen. Da derartige Puffer für jeden virtuellen Kanal verwendet werden können, sind Pakete von einem virtuellen Kanal nicht physikalisch in Konflikt mit Paketen eines weiteren virtuellen Kanals (da derartige Pakete in den anderen Puffer angeordnet würden).
  • Jede Disponiereinheit entspricht einem speziellen Ziel und zwei Ausgangspunkten bzw. Quellen. In der darstellen Ausführungsform steuert die Disponiereinheit 160 Transaktionen, die den Sender 130 aus 2 als Ziel und den Empfänger 120 und die periphere Schnittstellen/Brücke 150 als Quellen besitzen. In ähnlicher Weise steuert die Disponiereinheit 170 der 3 Transaktionen, wie den Sender 140 aus 2 als Ziel und den Empfänger 110 und die Brücke 150 als Quellen besitzen. Schließlich steuert die Disponiereinheit 180 der 3 Transaktionen, die die Brücke 150 aus 2 als Ziel und den Empfänger 110 und den Empfänger 120 als Quellen besitzen. In 3 empfängt jeder virtuelle Kanal Befehlspuffersteuerbefehle von einem entsprechenden Empfänger oder einer Brücke, die Transaktionen entsprechen, die von der jeweiligen Brücke oder dem jeweiligen Empfänger empfangen werden. Ein Steuerbefehl kann ein Zielbit enthalten, das angibt, zu welcher Disponiereinheit der Steuerbefehl gesendet wird. Typischerweise besitzt ein Steuerbefehl lediglich einen einzelnen Zielbitsatz. In dem Falle jedoch, dass eine Transaktion eine allgemein adressierte Nachricht ist, können mehr als ein Zielbit besetzt werden, um es zu ermöglichen, dass mehr als eine Disponiereinheit den Steuerbefehl empfängt.
  • Um die Erläuterung zu vereinfachen, wird hier lediglich die Disponiereinheit 160 detailliert beschrieben. Wenn Steuerbefehle in V. C. FIFO 166 oder 167 empfangen werden, werden diese in einem entsprechenden FIFO-Abschnitt abhängig von der Art der Transaktion angeordnet. Da V. C. FIFO 166 und 167 identisch sind, wird hier lediglich V. C. FIFO 166 detailliert beschrieben. Der V. C. FIFO 166 enthält drei separate FIFO- Abschnitte, die den drei Arten von Transaktionen entsprechen: abgeschickt, nicht-abgeschickt und Antwort. Die Steuerbefehle werden in dem entsprechenden FIFO in der Reihenfolge angeordnet, in der sie empfangen wurden. Um jedoch die Regeln für die Reihenfolge, die den diversen Bussen oder Gerätearten zugeordnet sind, aufrecht zu erhalten, die die ursprünglichen Befehle erzeugt haben, müssen die Transaktionen ggf. außer der Reihenfolge zwischen den unterschiedlichen Arten von Transaktionen verarbeitet werden.
  • Wie nachfolgend detaillierter mit Bezug zu 4 bis 6 beschrieben ist, ist die Verteil- und Pufferverwaltungslogik 168 ausgebildet festzulegen, welche Transaktion als erstes, als zweites usw. zu verarbeiten ist, wobei dies für die Transaktionen in dem V. C. FIFO 166 oder V. C. FIFO 167 gilt. Beispielsweise muss ggf. ein abgesendeter Befehl, der in dem V. C. FIFO 166 vor einem Antwortbefehl eintrifft, nach dem Antwortbefehl auf Grund der Regel für die Reihenfolge verarbeitet werden. Des weiteren kann die Verteil- und Pufferverwaltungslogik 168 auch festlegen, von welchem V. C. FIFO eine Transaktion aus verarbeitet wird, auf der Grundlage einer Gruppe an Fairnessregeln, und ob in einem Empfangspuffer des nächsten I/O-Knotens oder der Host-Brücke Speicherplatz verfügbar ist oder nicht. Wenn das Ziel die Brücke 150 aus 2 ist, können die speziellen Verteilungsregeln unterschiedlich sein zu den Verteilungsregeln, wie sie zuvor beschrieben sind.
  • Zu beachten ist, dass die zuvor beschriebene anschauliche Ausführungsform eine spezielle Implementierung einer Transaktionssteuereinheit ist. Es ist zu beachten, dass in alternativen Ausführungsformen andere Implementierungen angewendet werden, die weitere Funktionen ausführen.
  • 4 ist eine Blockansicht einer Ausführungsform einer Disponiereinheit. Schaltungskomponenten, die in 3 gezeigten Komponenten entsprechen, sind der Einfachheit halber und der Klarheit halber identisch bezeichnet. Eine Transaktionsdisponiereinheit 400 enthält einen virtuellen Kanal-FIFO-Puffer 410, der mit einer Verteil- und Fairnesslogik 450 verbunden ist. Die Transaktionsdisponiereinheit 400 enthält ferner einen virtuellen Kanal-FIFO-Puffer 420, der ebenfalls mit der Verteil- und Fairnesslogik 450 verbunden ist. Die Verteil- und Fairnesslogik 450 ist mit einem FIFO-Puffer 460 verbunden, der mit einer Pufferverwaltungslogik 470 verbunden ist. Der Ausgang der Pufferverwaltungslogik wird über ein Ausgangsregister 480 zwischengespeichert.
  • Wie zuvor in Verbindung mit 3 beschrieben ist, empfängt jeder der virtuellen Kanal-FIFO-Puffer 410 und 420 Steuerbefehle von einer entsprechenden Quelle, etwa beispielsweise dem Empfänger 110 oder der Brücke 150 aus 2. Die Steuerbefehle werden in den virtuellen Kanal-FIFO-Puffern 410 und 420 durch die Art der Transaktion, die die Steuerbefehle repräsentieren, angeordnet. Insbesondere können die Steuerbefehle abgesandte, nicht-abgesandte oder Antwortbefehle damit eine entsprechende abgesendete, nicht-abgesendete oder Antwortwarteschlange repräsentieren. In der dargestellten Ausführungsform enthält die Verteil- und Fairnesslogik 450 Verteilungseinheiten 430 und 440 und eine Fairnesseinheit 445. Die Verteileinheit 430 ist ausgebildet, einen Steuerbefehl auszuwählen, der in dem virtuellen Kanal-FIFO-Puffer 410 enthalten ist. Wie nachfolgend detaillierter beschrieben ist, kann der Auswahlprozess das Auswählen eines einzelnen Gewinners mittels eines vorbestimmten Verteilungs- bzw. Auswahlalgorithmus beinhalten. In ähnlicher Weise ist die Verteileinheit 440 ausgebildet, einen einzelnen Steuerbefehl auszuwählen, der in dem virtuellen Kanal-FIFO-Puffer 420 abgelegt ist, indem ein ähnlicher Algorithmus wie der in der Verteileinheit 430 angewendet wird. Die Fairnesseinheit 445 kann dann eine der ausgewählten Transaktionen auswählen, die von den Verteilungseinheiten 430 und 440 ermittelt wurden. Die Fairnesseinheit 445 kann einen Fairnessalgorithmus auf der Grundlage darauf anwenden, ob die Transaktion weitergeleitet oder eingeprägt ist. Abhängig von dem Ziel der Disponiereinheit können die Verteileinheiten 430 und 440 auch eine Logik (nicht gezeigt) enthalten, die den Pufferspeicherplatz in dem Zielpuffer der entsprechenden Transaktion überwacht, etwa einem Empfangspuffer des nächsten I/O-Knotens oder der Host-Brücke des Prozessors 10A aus 1.
  • In der dargestellten Ausführungsform kann eine es eine Verzögerung von drei Taktzyklen geben, um einen Steuerbefehl durch die Disponiereinheit 400 weiterzuleiten. Ein Bypass bzw. Umgehung 415 und ein Bypass 425 sind dargestellt, um den virtuellen Kanal-FIFO-Puffer 410 bzw. 420 zu umgehen. Wenn die Disponiereinheit 400 einen Steuerbefehl von einer Quelle empfängt und jede Warteschlange innerhalb eines vorgegebenen virtuellen Kanal-FIFO-Puffers leer ist, gibt es eine Möglichkeit, einen Takt zyklus einzusparen, indem der virtuelle Kanal-FIFO-Puffer umgangen wird. Beispielsweise wird ein nicht-abgesendeter Steuerbefehl am virtuellen Kanal-FIFO-Puffer 410 empfangen, der aktuell leer ist. Die Logik innerhalb der Verteileinheit 430 ermöglicht es dann, dass der nicht abgesendete Steuerbefehl den virtuellen Kanal-FIFO-Puffer 410 umgeht und unmittelbar in den FIFO-Puffer 460 angeordnet wird, wenn die Verteileinheit 430 anzeigt, dass Pufferplatz in dem Zielpuffer der Transaktion verfügbar ist. Des weiteren kann die Fairnesseinheit 445 die Umgehung zulassen in Abhängigkeit von dem Fairnessalgorithmus, der zuvor beschrieben ist. Somit kann in dem obigen Beispiel eine Verringerung der Bearbeitungszeit um einen Taktzyklus realisiert werden. Zu beachten ist, dass obwohl die dargestellte Ausführungsform so gezeigt ist, dass sie eine Latenzzeit von drei Taktzyklen aufweist, in anderen Ausführungsformen mehr oder weniger Taktzyklen an Verarbeitungszeit auftreten können. Des weiteren kann die tatsächliche Verringerung der Latenzzeit, die durch den Bypass 415 und 425 erreicht wird, größer oder kleiner sein.
  • Der FIFO-Puffer 460 aus 4 empfängt die gewinnenden bzw. ausgewählten Steuerbefehle. In der dargestellten Ausführungsform ist der FIFO-Puffer 460 ein Puffer mit zweistufiger Tiefe, wobei jedoch in anderen Ausführungsformen der FIFO-Puffer 460 mehr oder weniger Pufferplätze aufweisen kann.
  • Die Pufferverwaltungslogik 470 ist ausgebildet, den Speicherplatz im Sender 130 oder 140 oder in der Brücke 150 aus 2 zu überwachen. Wenn Transaktionen in den FIFO-Puffer 460 gespeichert werden, überprüft die Pufferverwaltungslogik 470 die Verfügbarkeit des nächsten Puffers und hält den Steuerbefehl zurück, bis Pufferplatz verfügbar ist, oder ermöglicht es, dass dies zum Ausgangsregister 480 weitergeht. Sobald der Steuerbefehl durch das Ausgangsregister 480 gespeichert ist, wird die entsprechende Transaktionsquelle benachrichtigt, dass die dem Steuerbefehl entsprechende Transaktion zu dem Sender 130 oder 140 oder zu der Brücke 150 der 2 gesendet werden kann.
  • 5 ist eine Blockansicht einer Ausführungsform einer Disponiereinheit mit einer Markierlogik. Die Disponiereinheit 500 enthält eine Markierlogik 510, die mit einem virtuellen Kanal-FIFO-Puffer 505 verbunden ist. Der virtuelle Kanal-FIFO 505 enthält drei se parate Warteschlangen die den drei Transaktionsarten entsprechen: abgesendet, nicht-abgesendet und Antwort. Eine Markierungsvergleichs/Verteillogik 520 ist mit dem virtuellen Kanal-FIFO-Puffer 505 verbunden. Des weiteren ist eine Aufrissansicht des virtuellen kanal-FIFO-Puffers 404 gezeigt. Die Aufrissansicht zeigt, dass jeweils die nicht abgesendete und Antwortwarteschlange eine entsprechende Markierung besitzen. Die Warteschlange für die abgesendeten Befehle besitzt jedoch zwei Markierungen: je eine, die jeweils der nicht-abgesendeten Warteschlange und der Antwortwarteschlange entspricht.
  • Die Markierungslogik 510 kann eine Markierung jedem Steuerbefehl zuordnen, bevor der Steuerbefehl in dem virtuellen Kanal-FIFO-Puffer 505 gespeichert wird. Steuerbefehle können Markierungen in der Reihenfolge zugeordnet werden, in der diese von einer Quelleneinheit, etwa dem Empfänger 110 oder der Brücke 150 aus 2 empfangen werden. Die Markierungen können an den Steuerbefehl angehängt werden.
  • Wenn Steuerbefehle den obersten Platz in dem virtuellen Kanal-FIFO-Puffer 505 erreichen, ist die Vergleichs/Verteillogikeinheit 520 ausgebildet, zwischen den drei virtuellen Kanälen auszuwählen, und einen „gewinnenden" Steuerbefehl auszuwählen. Ein Gewinner oder ausgewählter Steuerbefehl wird durch einen Algorithmus auf der Grundlage eines Satzes an Regeln für die Reihenfolge ausgewählt, die den Regeln für die Reihenfolge entsprechen können, die von den peripheren Bussen eingehalten werden, die mit dem I/O-Knoten verbunden sind. In einer Ausführungsform entsprechen die Regeln für die Reihenfolge den PCI-Regeln für die Reihenfolge. In einer weiteren Ausführungsform entsprechen die Regeln für die Reihenfolge den AGP-Regeln für die Reihenfolge.
  • In der dargestellten Ausführungsform besteht die Markierung aus vier Bits, da vier virtuelle Kanal-FIFO-Puffer 505 bis zu 60 Speicherplätze tief sein kann. Es ist jedoch zu beachten, dass in anderen Ausführungsformen der virtuelle Kanal-FIFO-Puffer 505 eine andere Anzahl an Speicherplätzen aufweisen kann und dass somit die Markierung eine entsprechende Anzahl an Bits enthält. Die Markierungslogik 510 enthält eine Zählerlogik (nicht gezeigt), die die aktuellen Markierungen für die nicht abgesendeten und Antwortsteuerbefehle überwacht, die in den virtuellen Kanal-FIFO-Puffer 505 gespeichert sind. Die Markierungen können entsprechend einem Algorithmus zugeordnet werden, der die jeweiligen nicht abgesendeten oder Antwortzähler beim Empfang eines abge sendeten Steuerbefehls erhöht, wenn zumindest ein blockierbarer nicht abgesendeter oder Antwortsteuerbefehl vor dem aktuellen abgesendeten Steuerbefehl und nach einem früheren abgesendeten Steuerbefehl empfangen wurde. Im hierin verwendeten Sinne ist ein nicht abgesendeter Steuerbefehl oder ein Antwortsteuerbefehl blockierbar, wenn ein speziales Bit in dem jeweiligen Steuerbefehl gesetzt ist, das angibt, dass der nicht abgesendete oder der Antwortsteuerbefehl an einem abgesendeten Steuerbefehl in dem virtuellen Kanal-FIFO-Puffer 505 vorbeizieht. In einer Ausführungsform wird das spezielle Bit als ein Durchlass-PW-Bit bzw. PassPW-Bit bezeichnet.
  • Um die Anwendung des Markierungsalgorithmus darzustellen, zeigt die Tabelle 1 die Empfangsreihenfolge und die Markierung von Steuerbefehlen, die in die drei Warteschlangen „abgesendet", „nicht-abgesendet" und „Antwort" eintreten. Die erste Spalte zeigt die Reihenfolge des Empfangs der neuen Steuerbefehle. Die zweite Spalte zeigt die Art des empfangenen Befehls. Die dritte Spalte zeigt Markierungen, die den abgesendeten Befehlen und den Antwortbefehlen zugeordnet sind, und die vierte und die fünfte Spalte zeigen die Zählerwerte für den nicht-abgesendeten und Empfangsbefehle, nachdem die Zählerwerte durch einen abgesendeten Steuerbefehl erhöht sind. Da der abgesendete Steuerbefehl zwei Markierungen empfängt, erhält er beide Markierungen, die in den aktuellen Zählerwerten für die entsprechenden Zähler „nicht-abgesendet" und „Antwort" gezeigt sind. Die Aufrissansicht des virtuellen Kanal-FIFO-Puffers 505 zeigt, wie die Befehle der Tabelle 1 gespeichert werden können. Tabelle 1
    Empfangsreihenfolge Steuerbefehl Durchlass PW-Bit Markierungswert nicht-abgesendeter Zähler Antwortzähler
    1 abgesendet 1 0 0 0
    2 Antwort 1 0 0 0 0
    3 abgesendet 2 0 0 1
    4 nicht-abgesendet 1 0 0 0 1
    5 Antwort 2 0 1 0 1
    6 nicht-abgesendet 2 0 0 0 1
    7 abgesendet 3 0 1 2
    8 Antwort 3 0 2 1 2
    9 nicht-abgesenet 3 0 1 1 2
  • Tabelle 2 zeigt, wie das PassPW-Bit die Markierung der empfangenen Steuerbefehle, die in Tabelle 1 gezeigt sind, beeinflusst. Wenn das PassPW-Bit für einen nicht abgesendeten Steuerbefehl oder einen Antwortsteuerbefehl gesetzt ist, wird der nächste abgesendete Steuerbefehl den jeweiligen Zähler nicht erhöhen. Beispielsweise ist in Tabelle 2 das PassPW-Bit für Antwort 1 gesetzt, so dass wenn, der Steuerbefehl abgesendet 2 empfangen wird, der Antwortzähler nicht erhöht wird. Jedoch ist das PassPW-Bit für den Befehl nicht-abgesendet 2 gesetzt, und der Steuerbefehl abgesendet 3 bewirkt, dass die Zähler „nicht-abgesendet" und „Antwort" erhöht werden. Dies liegt daran, dass der Steuerbefehl „nicht-abgesendet 1" mit zurückgesetztem PassPW-Bit empfangen wurde, nachdem der letzte abgesendete Steuerbefehl und bevor der aktuelle abgesendete Steuerbefehl empfangen wurde, wodurch die Markierungsregeln für das Erhöhen des Zählers erfüllt sind. Es ist zu beachten, dass obwohl das PassPW als gesetzt beschrieben ist, um anzugeben, dass ein nicht abgesendeter Steuerbefehl oder ein Antwortsteuerbefehl einen abgesendeten Steuerbefehl überholen kann, in anderen Ausführungsformen auch die Logik umgekehrt sein kann. Tabelle 2
    Empfangsreihenfolge Steuerbefehl Durchlass PW-Bit Markierungswert nicht-abgesendeter Zähler Antwortzähler
    1 abgesendet 1 0 0 0
    2 Antwort 1 1 0 0 0
    3 abgesendet 2 0 0 0
    4 nicht-abgesendet 1 0 0 0 0
    5 Antwort 2 0 0 0 0
    6 nicht-abgesendet 2 1 0 0 0
    7 abgesendet 3 0 1 1
    8 Antwort 3 0 1 1 1
    9 nicht-abgesendet 3 0 1 1 1
  • Es sei wieder auf 5 verwiesen; während der Verteilung bzw. Auswahl ist die Markierungsvergleichs- und Verteillogikeinheit 520 ausgebildet, einen gewinnenden Steuerbefehl aus dem virtuellen Kanal-FIFO-Puffer 505 durch Vergleichen der an jeden Steuerbefehl angehängten Markierungen auszuwählen. Des weiteren kann vor dem Markierungsvergleich die Markierungsvergleich- und Verteillogikeinheit 520 ermitteln, ob Speicherplatz in dem nächsten I/O-Knoten für jeden virtuellen Kanal verfügbar ist.
  • Wenn ein virtueller Kanal blockiert ist, nimmt dieser Kanal nicht an der Verteilung für diesen Zyklus teil. Wenn alle drei Kanäle für das Auswahlverfahren verfügbar sind, dann findet die Verteilung zwischen den Kanälen für „nicht-abgesendet" und „Antwort" in der Art eines Karussells und der Kanal für „abgesendet" wird einzeln mit dem Kanal „nicht-abgesendet" und „Antwort" verglichen. Schließlich kann die Markierungsvergleichs- und Verteillogikeinheit 520 einen Fairness-Algorithmus beim Auswählen eines Gewinners anwenden. Der Fairness-Algorithmus wird nachfolgend detaillierter mit Bezug zur 6 beschrieben.
  • 6 zeigt eine Blockansicht einer Ausführungsform einer Transaktionsdisponiereinheit mit einer Logik zur Verhinderung der Befehlsverarmung. Eine Transaktionsdisponiereinheit 600 enthält einen virtuellen Kanal-FIFO-Puffer 610, der mit einer Verteil- bzw. Auswahlschaltung 650 verbunden ist. Die Transaktionsdisponiereinheit 600 umfasst ferner einen virtuellen Kanal-FIFO-Puffer 620, der mit einer Verteilschaltung 650 verbunden. Die Verteilschaltung 650 ist mit einem FIFO-Puffer 670 verbunden, der mit einer Pufferverwaltungslogik 680 gekoppelt ist. Der Ausgang der Pufferverwaltungslogik ist durch ein Ausgangsregister 690 zwischengespeichert.
  • Ähnlichen zu den Beschreibungen der 3 und 4 kann jeder der virtuellen Kanal-FIFO-Puffer 610 und 620 Steuerbefehle von einer entsprechenden Quelle, etwa beispielsweise dem Empfänger 110 oder der Brücke 150 aus 2 empfangen. Die Steuerbefehle können in den virtuellen Kanal-FIFO-Puffern 610 und 620 gemäß der Art der Transaktion, die die Steuerbefehle repräsentieren, gespeichert werden. Beispielsweise können die Steuerbefehle „abgesendete", „nicht-abgesendete" oder „Antwort" Befehle repräsentieren und können somit in der entsprechenden Warteschlange „abgesendet", „nicht-abgesendet" oder „Antwort" gespeichert werden.
  • In der dargestellten Ausführungsform enthält die Verteilschaltung 650 Verteileinheiten 630 und 640 und eine Fairnessschaltung 645. Während eines Verteil- bzw. Auswahlzyklus sind die Verteileinheiten 630 und 640 ausgebildet, eine in dem virtuellen Kanal-FIFO-Puffern 610 bzw. 620 gespeicherten Steuerbefehl auszuwählen. Des weiteren liefert die Fairnessschaltung 645 Auswahlbedingungen, die bestimmen, welche der Verteileinheiten 630 oder 640 die gewinnende Transaktion auswählen wird. Wie nachfolgend detaillierter in Verbindung mit der Beschreibung der 7 gezeigt ist, kann die Fairnessschaltung 645 einen Fairnessalgorithmus anwenden, um Verteilprioritäten zur Verteilung der Bandbreite einzurichten. Der Fairness-Algorithmus hängt von der Logik zur Vermeidung einer Befehlsverarmung ab, die bestimmt, wann eine Transaktion für eine vorbestimmte Anzahl an Verteilzyklen blockiert ist.
  • 7 ist eine Blockansicht einer Ausführungsform der Fairnessschaltung aus 6. Die Fairnessschaltung 645 enthält eine Fairnesseinheit 700 mit 32 3-Bit-Zählern 0 bis 31, die mit einem 8-Bit-Zähler 705 verbunden sind. Ein Zwischenspeicher 710 wird mit dem Zähler 705 verbunden. Eine Einfügeratenlogik 715 ist mit dem Zwischenspeicher 710 verbunden. Die Fairnessschaltung 645 umfasst ferner eine Verarmungseinheit 750, die drei virtuelle Kanalzähler 755 bis 757 enthält, die mit einem Verarmungsschwellwertregister 760 verbunden ist, und enthält eine Transaktionsauswahleinheit 775, die mit der Fairnesseinheit 700 und der Verarmungseinheit 750 verbunden ist.
  • In einer Ausführungsform wird der 3-Bit-Zähler 0 bis 31, der dem I/O-Knoten entspricht, der die Transaktion gesendet hat, erhöht, sobald eine Transaktion durch den Tunnel weitergeleitet wird. Des weiteren wird der Zähler 705 jedes mal erhöht, wenn einer der 3-Bit-Zähler 0 bis 31 erhöht wird. Wenn einer der 3-Bit-Zähler 0 bis 31 überläuft, wird der Wert im Zähler 705 durch den Zwischenspeicher 710 gespeichert. Der gespeicherte Wert repräsentiert die Transaktionsanforderungsrate für abwärtsgerichtete Knoten während dieses speziellen Zeitpunkts. Die Einfügeratenlogik 715 kann dann die zulässige Einfügerate für diesen Knoten unter Anwendung des gespeicherten Wertes berechnen.
  • Die Transaktionsauswahl 775 bewirkt, dass ein Zeiger in der Verteileinheit 630 oder 640 aus 6 auf den virtuellen Kanalpuffer zeigt, der wahrend eines Verteilzyklus betrachtet wird. Es kann Zeiten geben, in denen Transaktionen in einem virtuellen Kanal eines weitergeleiteten virtuellen Kanalpuffers sind und Transaktionen in dem gleichen virtuellen Kanal eines eingefügten Puffers sind. In 7 kann die Transaktionsauswahleinheit 775 alternativ die beiden virtuellen Kanalpuffer entsprechend der Priorität, die durch die Fairnesseinheit 700 ermittelt wird, auswählen. Im Falle, dass ein virtueller Kanal blockiert wird, etwa durch einen Mangel an Pufferplatz an dem Ziel der Transaktion, kann die Verteillogik den blockierten Kanal übergehen und zu dem nächsten virtuellen Kanal springen, während die Verteilung weitergeht. Wenn der blockierte Kanal verfügbar wird, kann möglicherweise nur Speicherplatz für den weitergeleiteten Kanal verfügbar sein, und da dieser eine höhere Priorität gegenüber dem eingefügten Kanal entsprechend dem Fairnessalgorithmus besitzt, wird die Transaktion von dem weitergeleiteten Kanal gesendet. Wenn der blockierte Kanal das nächste mal verfügbar ist, kann dieser wiederum nicht die Priorität in dem aktuellen Verteilzyklus besitzen und würde daher wiederum überspringen. Diese Bedingung kann bestehen bleiben und damit den eingefügten virtuellen Kanal „verarmen" bzw. „aushungern". Abhängig von der Konfiguration eines speziellen Knotens wird in anderen Ausführungsformen berücksichtigt, dass der weitergeleitete Kanal ebenfalls durch einen eingeprägten Kanal auf Grund ähnlicher Ereignisse verarmen kann.
  • Um die Verarmung eines gegebenen Kanals zu vermeiden, überwacht die Verarmungseinheit 750 die Anzahl der Häufigkeiten, mit der eine Transaktion blockiert wird. Jedes mal, wenn die Transaktionsauswahleinheit 775 erkennt, dass eine Transaktion für die Verteilung bereit ist aber blockiert ist, bewirkt die Transaktionsauswahl 775, dass der entsprechende virtuelle Kanalzähler 755 bis 757 erhöht wird. Das Verarmungsschwellwertregister 760 halt einen Wert, der der maximalen Anzahl entspricht, mit der ein Kanal während des Verteilvorgangs übersprungen werden kann. Der in dem Verarmungsschwellwertsregister 760 gespeicherte Wert kann dynamisch in Abhängigkeit von der berechneten Anforderungsrate zu einer beliebigen Zeit dynamisch geändert werden. Wenn einer der virtuellen Kanalzähler 755 bis 757 mit dem Wert in dem Verarmungsschwellwertregister übereinstimmt, wird die Priorität des entsprechenden virtuellen Kanals geändert, so dass die Transaktionsauswahleinheit 775 bewirkt, dass die blockierte Transaktion während eines nachfolgenden Verteilungszyklus ausgewählt wird. Somit kann durch das dynamische Ändern der Priorität das Verarmen eines speziellen Kanals vermieden werden. Zu beachten ist, dass die beschriebene Logikanordnung nur eine spezielle Ausführungsform ist. Zu beachten ist, dass in alternativen Ausführungsformen andere Logikanordnungen verwendet werden können, wozu eine unterschiedliche Anzahl an Zählern und mehr oder weniger Bits dieser Zähler gehören, um die zuvor beschriebene Funktion zu erreichen.
  • Es können diverse Variationen und Modifizierungen in für den Fachmann ersichtlicher Wiese vorgenommen werden, sobald er im Besitze der vorliegenden Offenbarung ist.
  • Industrielle Anwendbarkeit
  • Diese Erfindung ist im Allgemeinen auf die Eingabe/Ausgabe (I/O) von Computersystemen und insbesondere auf die Transaktionshandhabung in einem I/O-Knoten anwendbar.

Claims (10)

  1. Eingabe/Ausgabe-Knoten (20, 30, 40) für ein Computersystem mit: einer ersten Empfängereinheit (110), die ausgebildet ist, einen ersten Befehl von einem ersten Knoten über einen ersten Kommunikationsweg zu empfangen; einer ersten Sendereinheit (140), die ausgebildet ist, einen ersten entsprechenden Befehl, der dem ersten Befehl entspricht, zu einem zweiten Knoten über einen zweiten Kommunikationsweg zu senden; einer zweiten Empfängereinheit (120), die ausgebildet ist, einen zweiten Befehl von dem zweiten Knoten über einen dritten Kommunikationsweg zu empfangen; einer zweiten Sendereinheit (130), die ausgebildet ist, einen zweiten entsprechenden Befehl, der dem zweiten Befehl entspricht, zu dem ersten Knoten über einen vierten Kommunikationsweg zu senden; und einer Brückeneinheit (150), die ausgebildet ist, ausgewählte Befehle von der ersten Empfängereinheit (110) zu der zweiten Empfängereinheit (120) zu empfangen und Befehle entsprechend den ausgewählten Befehlen über einen peripheren Bus (152) zu senden.
  2. Eingabe/Ausgabe-Knoten nach Anspruch 1, der ferner eine Steuereinheit (100) umfasst, die ausgebildet ist, das Übertragen von Befehlen von dem ersten Kommunikationsweg zu dem zweiten Kommunikationsweg und zu dem peripheren Bus (152) und von dem dritten Kommunikationsweg zu dem vierten Kommunikationsweg und zu dem peripheren Bus (152) zu steuern.
  3. Eingabe/Ausgabe-Knoten nach Anspruch 2, wobei die Steuereinheit (100) ferner ausgebildet ist, das Übertragen von Befehlen von dem peripheren Bus (152) zu dem zweiten Kommunikationsweg und dem vierten Kommunikationsweg zu steuern.
  4. Eingabe/Ausgabe-Knoten nach Anspruch 1, 2 oder 3, wobei die Brückeneinheit (150) ferner ausgebildet ist, selektiv Befehle, die den von dem peripheren Bus (152) empfangenen Befehlen entsprechen, der ersten Sendereinheit (140) und der zweiten Sendereinheit (130) zuzuleiten.
  5. Eingabe/Ausgabe-Knoten nach Anspruch 4, wobei die Steuereinheit (100) ferner ausgebildet ist, das Übertragen der Befehle auf der Grundlage mehrerer Steuerbefehle, die von der ersten Sendereinheit (110), der zweiten Sendereinheit (120) und der Brückeneinheit (150) erhalten werden, zu steuern.
  6. Eingabe/Ausgabe-Knoten nach Anspruch 5, wobei jeder Steuerbefehl eine Teilmenge eines entsprechenden Befehls, der von der ersten Empfängereinheit (110) und der zweiten Empfängereinheit (120) und der Brückeneinheit (150) empfangen wird, enthält.
  7. Eingabe/Ausgabe-Knoten nach Anspruch 5 oder Anspruch 6, wobei die Steuereinheit (100) ferner ausgebildet ist, Steuerbefehle über einen Steuerbefehlsbus zu empfangen.
  8. Computersystem mit: einem oder mehreren Prozessoren (10A bis D); einem oder mehreren Eingabe/Ausgabe-Knoten (20, 30, 40), die miteinander und mit einem vorgegebenen Prozessor der einen oder mehreren Prozessoren in einer Kette verbunden sind, wobei jeder Eingabe/Ausgabe-Knoten umfasst: eine erste Empfängereinheit (110), die ausgebildet ist, einen ersten Befehl dem vorgegebenen einen der einen oder mehreren Prozessoren über einen ersten Kommunikationsweg zu empfangen; eine erste Sendereinheit (140), die ausgebildet ist, einen ersten entsprechenden Befehl, der dem ersten Befehl entspricht, zu einem nächsten des einen oder der mehreren Eingabe/Ausgabe-Knoten in der Kette über einen zweiten Kommunikationsweg zu senden; eine zweite Empfängereinheit (120), die ausgebildet ist, einen zweiten Befehl von dem nächsten des einen oder der mehreren Eingabe/Ausgabe-Knoten in der Kette über einen dritten Kommunikationsweg zu empfangen; eine zweite Sendereinheit (130), die ausgebildet ist, einen zweiten entsprechenden Befehl, der dem zweiten Befehl entspricht, dem vorgegebenen einen des einen oder der mehreren Prozessoren über einen vierten Kommunikationsweg zu senden; und eine Brückeneinheit (150), die ausgebildet ist, ausgewählte Befehle von der ersten Empfängereinheit (110) und der zweiten Empfängereinheit (120) zu empfangen und Befehle, die den ausgewählten Befehlen entsprechen, über einen peripheren Bus (152) zu übertragen.
  9. Computersystem nach Anspruch 8, wobei der Eingabe/Ausgabe-Knoten ferner eine Steuereinheit (100) aufweist, die ausgebildet ist, das Übertragen von Befehlen von dem ersten Kommunikationsweg zu dem zweiten Kommunikationsweg und zu dem peripheren Bus (152) und von dem dritten Kommunikationsweg zu dem vierten Kommunikationsweg und dem peripheren Bus (152) zu steuern.
  10. Computersystem nach Anspruch 9, wobei die Steuereinheit (110) ferner ausgebildet ist, das Übertragen von Befehlen von dem peripheren Bus (152) zu dem zweiten Kommunikationsweg und dem vierten Kommunikationsweg zu steuern.
DE60226167T 2001-10-15 2002-08-09 Computersystem-e/a-knoten Expired - Lifetime DE60226167T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US978349 2001-10-15
US09/978,349 US6807599B2 (en) 2001-10-15 2001-10-15 Computer system I/O node for connection serially in a chain to a host
PCT/US2002/025278 WO2003034239A1 (en) 2001-10-15 2002-08-09 Computer system i/o node

Publications (2)

Publication Number Publication Date
DE60226167D1 DE60226167D1 (en) 2008-05-29
DE60226167T2 true DE60226167T2 (de) 2009-05-14

Family

ID=25526005

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60226167T Expired - Lifetime DE60226167T2 (de) 2001-10-15 2002-08-09 Computersystem-e/a-knoten

Country Status (8)

Country Link
US (1) US6807599B2 (de)
EP (1) EP1444587B1 (de)
JP (1) JP4391819B2 (de)
KR (1) KR100968250B1 (de)
CN (1) CN1307568C (de)
DE (1) DE60226167T2 (de)
TW (1) TW588250B (de)
WO (1) WO2003034239A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6834319B1 (en) * 2002-03-21 2004-12-21 Advanced Micro Devices, Inc. Tunnel device for an input/output node of a computer system
US7315912B2 (en) * 2004-04-01 2008-01-01 Nvidia Corporation Deadlock avoidance in a bus fabric
US7430622B1 (en) * 2005-01-18 2008-09-30 Advanced Micro Devices, Inc. Extended fairness arbitration for chains of point-to -point devices having multiple virtual channels
US8223650B2 (en) * 2008-04-02 2012-07-17 Intel Corporation Express virtual channels in a packet switched on-chip interconnection network
US8392667B2 (en) * 2008-12-12 2013-03-05 Nvidia Corporation Deadlock avoidance by marking CPU traffic as special
US8225052B2 (en) 2009-06-03 2012-07-17 Micron Technology, Inc. Methods for controlling host memory access with memory devices and systems
US8495271B2 (en) * 2010-08-04 2013-07-23 International Business Machines Corporation Injection of I/O messages
US9336029B2 (en) 2010-08-04 2016-05-10 International Business Machines Corporation Determination via an indexed structure of one or more partitionable endpoints affected by an I/O message
US20120036302A1 (en) 2010-08-04 2012-02-09 International Business Machines Corporation Determination of one or more partitionable endpoints affected by an i/o message
US8549202B2 (en) 2010-08-04 2013-10-01 International Business Machines Corporation Interrupt source controller with scalable state structures
US9824058B2 (en) * 2014-11-14 2017-11-21 Cavium, Inc. Bypass FIFO for multiple virtual channels
US11734155B2 (en) * 2021-07-22 2023-08-22 Disney Enterprises, Inc. Fully traceable and intermediately deterministic rule configuration and assessment framework

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5751951A (en) 1995-10-30 1998-05-12 Mitsubishi Electric Information Technology Center America, Inc. Network interface
US5809328A (en) 1995-12-21 1998-09-15 Unisys Corp. Apparatus for fibre channel transmission having interface logic, buffer memory, multiplexor/control device, fibre channel controller, gigabit link module, microprocessor, and bus control device
US6278532B1 (en) 1996-12-20 2001-08-21 Link2It Apparatus and method for reception and transmission of information using different protocols
JP2970596B2 (ja) 1997-06-10 1999-11-02 日本電気株式会社 Atm通信装置
JPH1185345A (ja) 1997-09-02 1999-03-30 Toshiba Corp 入出力インターフェース回路及び半導体システム
US6005849A (en) * 1997-09-24 1999-12-21 Emulex Corporation Full-duplex communication processor which can be used for fibre channel frames
JPH11143847A (ja) * 1997-11-10 1999-05-28 Fujitsu Ltd データ処理装置
US6691185B2 (en) * 2001-07-13 2004-02-10 Sun Microsystems, Inc. Apparatus for merging a plurality of data streams into a single data stream
US6697890B1 (en) * 2001-12-27 2004-02-24 Advanced Micro Devices, Inc. I/O node for a computer system including an integrated I/O interface

Also Published As

Publication number Publication date
JP2005505855A (ja) 2005-02-24
TW588250B (en) 2004-05-21
WO2003034239A1 (en) 2003-04-24
KR100968250B1 (ko) 2010-07-06
KR20040054722A (ko) 2004-06-25
EP1444587A1 (de) 2004-08-11
DE60226167D1 (en) 2008-05-29
EP1444587B1 (de) 2008-04-16
CN1568462A (zh) 2005-01-19
CN1307568C (zh) 2007-03-28
US6807599B2 (en) 2004-10-19
JP4391819B2 (ja) 2009-12-24
US20030097514A1 (en) 2003-05-22

Similar Documents

Publication Publication Date Title
DE69027362T2 (de) Fairnessalgorithmus für Vollduplex-Puffereinfügungsring
DE69025713T2 (de) Dynamische Fensterbestimmung in einem Datennetzwerk
DE3587092T2 (de) Kommunikationssystem.
DE3705530C2 (de)
DE69031266T2 (de) Übertragungsarchitektur für Hochgeschwindigkeitsnetzwerk
DE69031368T2 (de) Weglenkung von Nachrichtenpaketen
DE2953444C2 (de) Anordnung und Verfahren für ein digitales Datenübertragungsnetzwerk
DE69432655T2 (de) Verbesserungen in ATM-Nachrichtensystemen
DE3787567T2 (de) Auf Sitzungsebene anpassbare Schrittgeschwindigkeit.
DE3780800T2 (de) Anordnung zur ueberlastregelung fuer paketvermittlungssystem.
DE60128413T2 (de) Gekennzeichneter Prioritätswarteschlangescheduler
DE68924235T2 (de) Hochgeschwindigkeitsvermittlungssystem mit flexibler Protokollmöglichkeit.
DE69029763T2 (de) Weglenkung von Nachrichtenpaketen
DE60200680T2 (de) Fast optimale Fairness-Backoff-Verfahren und -System
DE60226167T2 (de) Computersystem-e/a-knoten
DE69533680T2 (de) Verfahren und Vorrichtung zur dynamischen Bestimmung und Zuteilung von Zugriffsguoten für ein gemeinsames Betriebsmittel
DE3642324C2 (de) Multiprozessoranlage mit Prozessor-Zugriffssteuerung
DE3787600T2 (de) Koppelpunktschaltung für Datenpaketraumvermittlung.
DE19531749A1 (de) Verkehrsgestaltungseinrichtung und Paket-Kommunikationsgerät
DE60316719T2 (de) Flusssteuerungsverfahren einer man-übertragungseinrichtung
DE60204794T2 (de) Mechanismus zur kennzeichnung und arbitrierung in einem eingabe/ausgabe knoten eines rechnersystems
EP2847965B1 (de) Verfahren zur übertragung von daten in einem paketorientierten kommunikationsnetzwerk und entsprechend eingerichtetes teilnehmergerät an dem kommunikationsnetzwerk
DE69022942T2 (de) Schrittablauf innerhalb eines Knotens für ein schnelles Netzwerk.
EP2137893A1 (de) Paketvermittlungsvorrichtung und lokales kommunikationsnetz mit einer solchen paketvermittlungsvorrichtung
DE60114491T2 (de) Verfahren zum Senden von Daten zwischen einer Basisstation in einem Zugangsnetz und einer Zugangsnetzsteuerungseinheit eines Telekommunikationssystems

Legal Events

Date Code Title Description
8364 No opposition during term of opposition