-
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 10A–10D sind
anschauliche Beispiele von etwa einem x86-Mikroprozessor, etwa einem Athlon-Mikroprozessor.
Des weiteren ist ein Beispiel eines Paketbusses, etwa des I/O-Paketbusses 50A–50C,
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.