-
Diese
Erfindung betrifft das Simulieren mehrerer virtueller Kanäle in Switching-Fabric-Netzwerken.
-
PCI
(Peripheral Component Interconnect – Anschluß von peripheren Komponenten)
Express ist ein serieller Eingabe/Ausgabe (I/O – Input/Output)-Anschlußstandard,
der entwickelt wor den ist, um die Erfordernisse erhöhter Bandbreite
der nächsten Generation
von Computersystemen zu erfüllen.
Die PCI Special Interest Group (PCI-SIG) verwaltet eine Anzahl
von PCI-Spezifikationen,
einschließlich
der PCI Express Basisspezifikation, Auflage 1.0a, 15. April 2003 (erhältlich von
der PCI-SIG unter www.pcisig.com) als Standards,
die für
die Industrie offen sind, und liefert die Spezifikationen an seine
Mitglieder.
-
Ein
PCI Express („PCIe")-Fabric umfaßt eine einzelne
PCIe Hauptvorrichtung (auch als ein „Host-Prozessor" bezeichnet), die
einen globalen Speicheradreßraum
eines Systems steuert, das mehrere PCIe I/O-Vorrichtungen aufweist.
Diese PCIe I/O-Vorrichtungen umfassen z.B. Graphikkarten, Netzwerkschnittstellenkarten
und TV-Abstimmkarten, um nur einige zu nennen. Nach dem Anlauf- und
Aufzählprozeß befragt
die PCIe Hauptvorrichtung das gesamte System, indem es durch die
hierarchische Baumtopologie läuft,
und ortet alle PCIe I/O-Vorrichtungen
in dem System. Ein Adreßraum wird
jeder PCIe I/O-Vorrichtung in dem globalen Speicheradreßraum von
der PCIe Hauptvorrichtung zugewiesen, damit die PCIe Hauptvorrichtung
mit ihr kommunizieren kann.
-
Zwei
PCIe I/O-Vorrichtungen kommunizieren, indem zunächst Daten von einer ursprünglichen PCIe
I/O-Vorrichtung hinauf zu der PCIe Hauptvorrichtung durch den Adreßraum geleitet
werden, der der ursprünglichen
PCIe I/O-Vorrichtung zugewiesen ist. Die Daten werden dann von der
PCIe Hauptvorrichtung zu dem Adreßraum einer Ziel-PCIe I/O-Vorrichtung
bewegt und wandern anschließend
herunter zu der Ziel-PCIe I/O-Vorrichtung. Eine solche Kommunikation
wird nicht als eine direkte Beziehung gleichrangiger Beteiligter
zwischen den beiden PCIe I/O-Vorrichtungen betrachtet, sondern als
eine indirekte, die von der PCIe Hauptvorrichtung verwaltet wird.
-
PCIe
wurde so gestaltet, daß es
voll kompatibel mit dem weithin verwendeten lokalen Busstandard
PCI ist. PCI beginnt, an die Grenzen seiner Möglichkeiten zu stoßen, und
obwohl Erweiterungen für
den PCI-Standard entwickelt worden sind, um höhere Bandbreiten und schnellere
Taktgeschwindigkeiten zu unterstützen,
können
diese Erweiterungen unzulänglich sein,
um die schnell anwachsenden Anforderungen an Bandbreite der PCs
in der nahen Zukunft zu erfüllen.
Mit ihrer mit Hochgeschwindigkeit arbeitenden und skalierbaren seriellen
Architektur kann PCIe einen attraktive Option zur Verwendung mit
oder als möglicher
Ersatz für
PCI in Computersystemen sein. PCIe ist geeignet, für die Skalierbarkeit
in Systemen bei einer einzigen PCIe Hauptvorrichtung mit einer Anzahl
von PCIe I/O-Vorrichtungen zu sorgen. Da die gesamte Kommunikation
unter der Steuerung einer einzigen PCIe Hauptvorrichtung steht,
ist die PCIe Architektur im allgemeinen nicht gut für einen
großen
Anwendungsraum geeignet, der Multi-Host-Kommunikation und Kommunikation
mit gleichrangigen Beteiligten umfaßt. Advanced Switching Interconnect
(ASI) ist eine Technologie, die auf der PCIe Architektur basiert
und die die Standardisierung verschiedener Rückwandplatinen ermöglicht. ASI
benutzt ein auf Paketen basierendes Transaktionsschichtprotokoll,
das über
die physikalische Schicht und die Datenverbindungsschichten arbeitet. Die
ASI-Architektur liefert eine Anzahl von Merkmalen, die Multi-Host-Kommunikationsgeräten, Kommunikationsgeräten für gleichrangige
Beteiligte, so wie Bladeservern, Cluster, Speicheranordnungen, Telekommunikationsroutern
und Schaltern gemeinsam sind. Diese Merkmale umfassen die Unterstützung flexibler
Topologien, des Paket-Routing, der Überlast-Verwaltung (z.B. kreditbasierter
Ablaufsteuerung), der Redundanz des Fabric und Ausfallmechanismen.
Die Advanced Switching Interconnect Special Interest Group (ASI-SIG)
ist eine gemeinschaftliche Handelsorganisation, die damit betraut
ist, einen Switching Fabric-Anschlußstandard zur Verfügung zu
stellen, dessen Spezifikationen, einschließlich der Advanced
Switching Core Architecture Specification, Auflage 1.0, Dezember
2003 (erhältlich
bei der ASI-SIG unter www.asi-sig.com) sie an ihre
Mitglieder gibt.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist
ein Blockschaubild eines Switching-Fabric-Netzwerks.
-
2 ist
ein Ablaufdiagramm eines Erzeugungsprozesses für eine verknüpfte Liste
aus Beschreibungselementen in einer Vorrichtung eines Switching-Fabric-Netzwerkes.
-
3 ist
ein Schaubild eines Beschreibungselementes.
-
4a zeigt
ein Beispiel einer vorliegenden verknüpften Liste.
-
4b zeigt
ein Beschreibungselement, das zu der verknüpften Liste hinzugefügt werden
soll.
-
4c zeigt
ein Beispiel einer neuen verknüpften
Liste, die das Beschreibungselement der 4b enthält.
-
GENAUE BESCHREIBUNG
-
Mit
Bezug auf 1 ist ein PCI Express (PCIe)
Fabric 102 ein System, das eine PCIe Hauptvorrichtung 104 und
mehrere PCIe I/O-Vorrichtungen 106, 108, 110 umfaßt, die
alle über
PCIe Verbindungen 112, 114, 116 miteinander
verbunden sind. Jede Vorrichtung 104, 106, 108, 110 des
PCIe Fabric 102 hat eine PCIe Schnittstelle, die ein Teil
der PCIe Architektur ist, welche durch die PCI Express Basisspezfikation
definiert ist. Jede Vorrichtung 104, 106, 108, 110 ist
in einem einzelnen ebenen Adreßraum abgebildet
und kann durch PCI-ähnliche
Ladespeicherzugriffe adressiert werden.
-
Damit
die PCIe Hauptvorrichtung 104 mit der PCI Express Basisspezifikation
verträglich
ist, muß die
PCIe Hauptvorrichtung 104 wenigstens einen virtuellen Kanal
(d.h. VC0) an jedem seiner PCIe Ports implementieren (wobei jeder
in 1 durch ein Quadrat mit Kreuzschraffierung veranschaulicht
ist) und kann bis zu acht VCs (d.h. VC0 bis VC7) pro PCIe Port unterstützen. Die
PCIe Architektur umfaßt
einen PCIe VC Mechanismus, der Unterstützung zum Transport von Verkehr
durch das PCIe Fabric 102 liefert, der unterschieden wird,
indem Verkehrsklassen (TC – Traffic
Class)-Bezeichnungen verwendet werden, von denen es im allgemeinen
acht gibt (d.h. TC0 bis TC7), ungeachtet der Anzahl von VCs, die
von der Vorrichtung unterstützt
werden. TC-Bezeichnungen werden verwendet, um an Dienstpunkten (z.B. einem
PCIe Schalter (nicht gezeigt)) innerhalb des PCIe Fabric 102 geeignete
Dienststrategi en anzuwenden. In der PCIe Architektur liegen Prioritätswerte
für Verkehr
im Bereich von der höchsten
(d.h. Verkehr mit einer TC7-Bezeichnung) zur niedrigsten (d.h. Verkehr
mit einer TC0-Bezeichnung).
-
Der
Verkehr im PCIe Fabric ist mit den VCs verknüpft, indem Pakete mit bestimmten
TC-Bezeichnungen
auf ihre entsprechenden VCs abgebildet werden. Der PCIe VC Mechanismus
ermöglicht das
flexible Abbilden von TCs auf die VCs. In der einfachsten Form können TCs
auf VCs auf einer Basis 1:1 abgebildet werden. Um Leistungs-Kosten-Kompromisse
zu ermöglichen,
können
mehrere TCs auf einen einzigen VC abgebildet werden. Jedoch ist
ein Problem, das auftreten kann, wenn mehre TCs auf einen einzigen
VC abgebildet werden, daß Pakete,
die auf den einzigen VC gebracht werden, Blockierbedingungen unterworfen
werden, da Pakete mit unterschiedlich zugewiesenen TC-Bezeichnungen
keine Anforderungen bezüglich
der Reihenfolge untereinander haben. In einem solchen Szenario gibt
es keine Differenzierung der Verkehrsströme zwischen den zwei PCIe Vorrichtungen 104, 106, 108, 110.
-
Die
beispielhaften Techniken, die hiernach beschrieben sind, ermöglichen
es, daß eine
PCIe Hauptvorrichtung 104, die mit einem Chipsatz implementiert
ist, der nur einen VC pro PCIe Port unterstützt (d.h. mit einem Chipsatz,
der nur einen VC unterstützt),
mehrere virtuelle Kanäle
zwischen der PCIe Hauptvorrichtung 104 und jeder PCIe I/O-Vorrichtung 106, 108, 110 simuliert.
Obwohl die beispielhaften Techniken in einem auf PCIe basierenden Speichersystemkontext
beschrieben sind, sind die Techniken auch auf andere PCIe-basierte
Systeme (z.B. einem auf PCIe basierenden Netzwerkkommunikationssystem)
und anderen Switching-Fabric-Netzwerksystemen
(z.B. einem auf ASI basierenden Bladecomputersystem und einem auf
ASI basierenden Speichersystem) anwendbar.
-
In
dem Kontext des Speichersystems ist jede PCIe I/O-Vorrichtung 106, 108, 110 eine
Speichervorrichtung, welche Speicherraum umfaßt, aus dem durch eine oder
mehrere Anwendungen (z.B. Videoeditieranwendungen, Anwendungen für computerunterstütztes Entwerfen (CAD – Computer
Aided Drafting)) an der PCIe Hauptvorrichtung 104 gelesen oder
in ihn geschrieben werden kann (wobei Lese- bzw. Schreibanfragen
verwendet werden).
-
In
dem beispielhaften Szenario, das hiernach mit Bezug auf die 2 und 3 beschrieben ist,
erzeugt eine Anwendung (z.B. Anw. 1 118a) Schreibanfragen,
die an die PCIe I/O-Vorrichtung 106 gerichtet
werden, und eine weitere Anwendung (z.B. Anw. 2 118b) erzeugt
Schreibanfragen, die auch an dieselbe PCIe I/O-Vorrichtung 106 gerichtet
werden. Die Schreibanfragen werden von einem Gerätetreiberprogramm empfangen
(202), das auf einer zentralen Verarbeitungseinheit (CPU – Central
Processing Unit) 120 der PCIe Hauptvorrichtung 104 läuft, in
der Reihenfolge, in der die Anfragen von den Anwendungen erzeugt
werden.
-
Die
CPU 120 kann ein Mikroprozessor, ein Mikrocontroller, eine
programmierbare Logik oder dergleichen sein, die in der Lage ist,
Befehle (z.B. ein Gerätetreiberprogramm)
auszuführen,
um einen oder mehrere Arbeitsgänge
auszuführen.
Solche Befehle können
in einem Systemspeicher 122 (d.h. einem lokalen Speicher)
oder in einer anderen Speichervorrichtung abgelegt sein, die eine
oder mehrere Festplattenlaufwerke oder andere interne oder externe Speichervorrichtungen
sein können,
die mit der CPU 120 über
ein oder mehrere Kommunikationsmedien, so wie einen Bus 126,
verbunden sind.
-
Die
CPU 120 führt
Befehle des Gerätetreiberprogramms
aus, um für
jede Schreibanfrage, die von einer Anwendung 118a–118n empfangen
worden ist, ein Beschreibungselement 300 (d.h. Beschreibungselement 1,
Beschreibungselement 2, ... Beschreibungselement n) zu
erzeugen (204), das eine Quellenadresse 302, eine
Zieladresse 304, einen Adresse 306 für das nächste Beschreibungselement,
eine Bytezählung 308 und
einen Satz Merker 310 enthält. Jedes Beschreibungselement
beschreibt einen Block Daten (dessen Größe durch die Beizählung definiert
ist), der von dem Ort in einem Speicherraum der PCIe Hauptvorrichtung 104,
der mit der Quellenadresse verknüpft
ist, zu einem Speicherraum der PCIe I/O-Vorrichtung 106,
der mit der Zieladresse verknüpft
ist, bewegt werden soll. Der Satz Merker 310 umfaßt ein TC-Feld 312 mit
drei Bit.
-
Bei
manchen Implementierungen setzt das Gerätetreiberprogramm auf Anfrage
automatisch das TC-Feld 312 mit drei Bit. Das heißt, die
Anwendung 118a–118n legt
die TC-Bezeichnung
fest, die mit der Anfrage verknüpft
ist, und das Gerätetreiberprogramm
setzt die Bits entsprechend. Jede Anwendung 118a–118n kann
eine einzige TC-Bezeichnung festlegen, die mit allen Anfragen, die
sie erzeugt, verknüpft
ist, mehrere unterschiedliche TC-Bezeichnungen
festlegen, die mit den Anfragen, die sie erzeugt, verknüpft sind,
oder als Alternative, in dem Fall einer Multi-Threaded-Anwendung,
kann die Anwendung unterschiedliche TC-Bezeichnungen für jeden Thread
festlegen. Bei anderen Implementierungen setzt das Gerätetreiberprogramm
automatisch das TC-Feld 312 mit drei Bit über die
Anwendung 118a–118n.
Das heißt,
das Gerätetreiberprogramm identifiziert
die Anwendung 118a–118n,
die die Anfrage erzeugt hat, und setzt die Bits entsprechend.
-
Nach
dem Erzeugen eines Beschreibungselementes („erzeugtes Beschreibungselement") für eine Schreibanfrage,
die von einer Anwendung erhalten worden ist, bestimmt (206)
das Gerätetreiberprogramm
zunächst,
ob eine Maschine 130 für
den direkten Speicherzugriff („DMA” – Direct
Memory Access) der PCIe Hauptvorrichtung 104 leerläuft oder belegt
ist.
-
Wenn
die DMA-Maschine 130 leerläuft, baut (208) das
Gerätetreiberprogramm
eine geordnete Liste auf (z.B. die verknüpfte Liste 128 in
dem Systemspeicher 122), wobei das erzeugte Beschreibungselement
verwendet wird, und setzt ein Bit in einem Register 132 der
DMA-Maschine 130,
um die DMA-Maschine 130 zu starten (210). Wenn
sie einmal gestartet ist, ist die DMA-Maschine 130 so konfiguriert,
daß sie
die Beschreibungselemente in der verknüpften Liste 128 in
sequentieller Reihenfolge verarbeitet, beginnend mit dem Beschreibungselement
an dem Kopf der verknüpften
Liste 128. In dem beispielhaften Szenario verarbeitet die
DMA-Maschine 130 das Beschreibungselement, indem ein PCIe Transaktionsschichtpaket
(TLP – Transaction
Layer Packet) basierend auf dem Beschreibungselement erzeugt und
ein PCIe Port ausgewählt
wird, zu dem das PCIe TLP über
einen internen Bus 134 überführt wird.
Bei der standardmäßigen PCIe
Hauptvorrichtung 104 der 1 würde das
PCIe TLP zu einem physikalisch eindeutigen beispielhaften Port stromabwärts überführt werden,
der minimal aus einer physikalischen PCIe-Schicht, einer PCIe Datenverbindungsschicht
und einer PCIe Transaktionsschichtschnittstelle besteht.
-
Wenn
die DMA-Maschine 130 damit beschäftigt ist, ein Beschreibungselement
zu verarbeiten („gegenwärtig verarbeitetes
Beschreibungselement"),
setzt das Gerätetreiberprogramm
ein Bit in einem Register 132 der DMA-Maschine 130,
um die DMA-Maschine 130 anzuhalten (212), und
vergleicht (214) die TC des erzeugten Beschreibungselementes
mit dem TC jedes Beschreibungselementes in der verknüpften Liste 128,
beginnend mit dem Beschreibungselement, auf das das gegenwärtig verarbeitete Beschreibungselement
zeigt, bis das Gerätetreiberprogramm
ein Beschreibungselement identifiziert, das eine niedrigere TC-Bezeichnung
hat als die des erzeugten Beschreibungselementes.
-
Wenn
das Gerätetreiberprogramm
das untere Ende der verknüpften
Liste 128 erreicht, bevor eine solche Identifikation geschehen
ist, fügt
(216) das Gerätetreiberprogramm
das erzeugte Beschreibungselement an das untere Ende der verknüpften Liste 128 an
und setzt ein Bit in einem Register der DMA-Maschine 130,
um die DMA-Maschine 130 zu starten (218).
-
Wenn
jedoch das Gerätetreiberprogramm ein
Beschreibungselement lokalisiert („identifiziertes Beschreibungselement"), das eine niedrigere
TC-Bezeichnung hat als die des erzeugten Beschreibungselementes,
bricht das Gerätetreiberprogramm
die Kette der Beschreibungselemente, die die verknüpfte Liste 128 bilden,
auf und fügt
(220) das erzeugte Beschreibungselement zwischen dem identifizierten Beschreibungselement
und seinem voranstehenden Beschreibungselement ein, wobei herkömmliche Techniken
verwendet werden. Wenn einmal das erzeugte Beschreibungselement
in die verknüpfte
Liste eingefügt
worden ist, setzt das Gerätetreiberprogramm
ein Bit in einem Register der DMA-Maschine 130, um die
DMA-Maschine 130 zu
starten (222).
-
Das
Gerätetreiberprogramm
ermöglicht
es, daß die
DMA-Maschine 130 bei ihrer Verarbeitung der Beschreibungselemente
der verknüpften
Liste 128 angehalen, befragt und gestartet (oder neu gestartet)
wird. 4a zeigt ein Beispiel der verknüpften Liste 128 in
dem Systemspeicher 122, wenn ein erzeugtes Beschreibungselement
(4b) mit einer TC-Bezeichnung TC4 („letztes erzeugtes Beschreibungselement") zu der verknüpften Liste 128 hinzugefügt werden
soll. Indem ermöglicht
wird, daß das zuletzt
erzeugte Beschreibungselement in die verknüpfte Liste 128 basierend
auf seiner TC-Bezeichnung eingefügt
wird, anstatt daß es
automatisch an das Ende der verknüpften Liste 128 angehängt wird, kann
die Reihenfolge, in der die Beschreibungselemente von der DMA-Maschine
verarbeitet werden, relativ zu der Reihenfolge, in der die Beschreibungselemente
erzeugt werden, modifiziert werden, wie es in 4c gezeigt
wird. Wenn so vorgegangen wird, können PCIe TLPs mit höheren Prioritätswerten
(wie sie durch die TC-Bezeichnungen angegeben werden) von der PCIe
Hauptvorrichtung 104 vor den PCIe TLPs mit niedrigeren
Prioritätswerten
(wie sie durch die TC-Bezeichnungen angegeben werden) zu der PCIe
I/O-Vorrichtung 106 geschickt werden. Dies simuliert mehrere
virtuelle Kanäle
und die Priorisierung von Paketverkehr zwischen der PCIe Hauptvorrichtung 104 und
der PCIe I/O-Vorrichtung 106, selbst wenn die PCIe Hauptvorrichtung 104 mit
einem Chipsatz implementiert ist, der nur einen VC pro PCIe Port
ohne die Simulation unterstützt.
-
Bei
einer Ausführungsform
können
die Erfindung und alle funktionalen Arbeitsgänge, die in dieser Beschreibung
beschrieben worden sind, in digitaler elektronischer Schaltung oder
in Computerhardware, Firmware, Software oder in Kombinationen aus diesen
implementiert werden. Bei einer Ausführungsform kann die Erfindung
als ein Computerprogrammprodukt implementiert werden, d.h. ein Computerprogramm,
das greifbar in einem Informationsträger verkörpert ist, z.B. in einer maschinenlesbaren
Speichervorrichtung oder in einem sich fortpflanzenden Signal, für die Ausführung durch
oder die Steuerung des Betriebes von datenverarbeitenden Vorrichtungen,
z.B. einem programmierbaren Prozessor, einem Computer oder mehreren
Computer. Ein Computerprogramm kann in irgendeiner Form einer Programmiersprache
geschrieben werden, einschließlich kompilierter
oder interpretierter Sprachen, und es kann in irgendeiner Form zum
Einsatz kommen, einschließlich
als ein eigenständiges
Programm oder als ein Modul, eine Komponente, eine Unterroutine
oder eine andere Einheit, die zur Verwendung in einer Computerumgebung
geeignet ist. Ein Computerprogramm kann so eingesetzt werden, daß es auf
einem Computer oder auf mehreren Computer an einer Stelle oder verteilt über mehrere
Stellen und verbunden mit einem Kommunikationsnetzwerk ausgeführt wird.
-
Die
Techniken einer Ausführungsform
der Erfindung können
von einem oder mehreren programmierbaren Prozessoren durchgeführt werden, welche
ein Computerprogramm ausführen,
um die Funktionen der Ausführungsform
durch Arbeiten auf Eingangsdaten und Erzeugen einer Ausgabe durchführen. Die
Techniken können
auch ausgeführt
werden durch, und eine Vorrichtung einer Ausführungsform der Erfindung kann
implementiert werden als spezielle logische Schaltung, z.B. eine
FPGA (Field Programmable Gate Array – Feldprogrammierbare Gatteranordnung)
oder eine ASIC (Application Specific Integrated Circuit – Anwendungsspezifische
integrierte Schaltung).
-
Prozessoren,
die für
das Ausführen
eines Computerprogramms geeignet sind, umfassen beispielhaft sowohl
universelle als auch spezielle Mikroprozessoren und irgendeinen
oder mehrere Prozessoren irgendeiner Art eines digitalen Computers.
Im allgemeinen wird ein Prozessor Befehle und Daten von einem Nur-Lese-Speicher
oder einem Speicher mit wahlfreiem Zugriff oder beiden empfangen.
Im allgemeinen wird ein Computer auch eine oder mehrere Massenspeichervorrichtungen
umfassen oder betrieblich so gekoppelt sein, daß er Daten von einer oder mehreren
Massenspeichervorrichtungen empfängt
oder an diese überträgt oder
beides, zum Speichern von Daten, z.B. von magnetischen Disks, magnetooptischen
Disks oder optischen Disks. Informationsträger, die zum Verkörpern von
Computerprogrammbefehlen und Daten geeignet sind, umfassen alle
Formen nicht flüchtiger
Speicher, einschließlich beispielhaft
Halbleiterspeichervorrichtungen, z.B. EPROM, EEPROM und Flash-Speichervorrichtungen;
magnetische Disks, z.B. interne Festplatten oder auswechselbare Disks,
magnetooptische Disks und CD-ROM und DVD-ROM-Disks. Der Prozessor und
der Speicher können
mit spezieller logischer Schaltung ergänzt oder in diese eingebaut
sein.
-
Eine
Ausführungsform
der Erfindung kann in einem Computersystem implementiert sein, das
eine Backend-Komponente umfaßt,
z.B. als einen Datenserver, oder das eine Middleware-Komponente umfaßt, z.B.
einen Anwendungsserver, oder das eine Frontend-Komponente umfaßt, z.B.
einen Client-Computer mit einer graphischen Benutzerschnittstelle
oder einem Web Browser, durch den ein Benutzer mit einer Implementierung
der Erfindung Wechselwirken kann, oder irgendeine Kombination solcher Backend-,
Middleware- oder Frontend-Komponenten.
Die Komponenten des Systems können
durch irgendeine Form oder ein Medium für die digitale Datenkommunikation,
z.B. ein Kommunikationsnetzwerk, miteinander verbunden sein. Beispiele
von Kommunikationsnetzwerken umfassen ein Nahbereichsnetzwerk („LAN” – Local
Area Network), ein Fernbereichsnetzwerk („WAN” – Wide Area Network), z.B.
das Internet, und ein drahtloses Netzwerk.
-
Das
Computersystem kann Clients und Server umfassen. Ein Client und
ein Server sind im allgemeinen entfernt voneinander und Wechselwirken
typischerweise durch ein Kommunikationsnetzwerk. Die Beziehung zwischen
Client und Server entsteht mittels Computerprogrammen, die auf den
jeweiligen Computern laufen und eine Client-Server-Beziehung zueinander
haben.
-
Die
Erfindung ist durch bestimmte Ausführungsformen beschrieben worden.
Bei manchen Ausführungsformen
der Erfindung umfassen die Techniken das Empfangen von Anfragen
von Anwendungen für
Dienste, die zur Verfügung
gestellt werden wollen, und das Bringen der Anfragen in eine Reihenfolge
zum Zuführen
von einer ersten Vorrichtung eines Switching-Fabric-Netzwerk durch
einen virtuellen Kanal zu einer zweiten Vorrichtung des Netzwerkes,
bei der die Dienste zur Verfügung
gestellt wurden, wobei die Reihenfolge auf Verkehrsklassenbezeichnungen
basiert, die mit den Anfragen verknüpft sind. Bei manchen Ausführungsformen
der Erfindung umfassen die Techniken das Steuern einer Reihenfolge,
in der Anfragen von Anwendungen für Dienste von einer ersten
Vorrichtung eines Switching-Fabric-Netzwerk
durch einen virtuellen Kanal zu einer zweiten Vorrichtung des Netzwerkes
geliefert werden, um mehrere virtuelle Kanäle mit Anfragen, die durch
den virtuellen Kanal laufen, zu simulieren.
-
Weitere
Ausführungsformen
liegen im Umfang der folgenden Ansprüche. Zum Beispiel kann die
Technik einer Ausführungsform
der Erfindung in einer unterschiedlichen Reihenfolge ausgeführt werden
und trotzdem wünschenswerte
Ergebnisse erreichen. Diese Techniken sind in dem ASI-Fabric-Kontext
anwendbar, in dem ein erster ASI-Endpunkt und ein zweiter ASI-Endpunkt mittels
eines einzigen VC verbunden sind. Bei einem Beispiel hat der erste ASI-Endpunkt eine oder
mehrere Anwendungen, die Leseanfragen erzeugen, welche für den zweiten ASI-Endpunkt
bestimmt sind. Der erste ASI-Endpunkt kann so implementiert werden,
daß er
ein Gerätetreiberprogramm
umfaßt,
welches ermöglicht, daß eine DMA-Maschine
in ihrer Verarbeitung von Beschreibungselementen in einer verknüpften Liste angehalten,
angefragt und gestartet (oder neu gestartet) wird, in einer Weise,
die ähnlich
der ist, wie sie oben mit Bezug auf die 1 und 2 beschrieben
ist. Der zweite ASI-Endpunkt kann in ähnlicher Weise mit einem Gerätetreiber
und einer DMA-Maschine implementiert werden, die erlaubt, daß Antworten
auf die Leseanfragen priorisiert werden.
-
Beansprucht
wird:
-
Zusammenfassung
-
Verfahren
und Systeme, die Computerprogrammprodukte umfassen, implementieren
Techniken zum Empfangen, an einer ersten Vorrichtung eines Switching-Fabric-Netzwerkes,
von Anfragen von einer oder mehreren Anwendungen, wobei jede Anfrage
für eine
zweite Vorrichtung des Netzwerkes bestimmt ist, wobei die erste
Vorrichtung mit der zweiten Vorrichtung durch einen virtuellen Kanal
verbunden ist; zum Erzeugen eines Beschreibungselementes, das eine
Verkehrsklassenbezeichnung aufweist; und zum Hinzufügen des
Beschreibungselementes zu einer geordneten Liste von Beschreibungselementen,
wobei das Beschreibungselement einen Ort in der geordneten Liste
hat, der auf der Verkehrsklassenbezeichnung des Beschreibungselementes
basiert.