-
Computersysteme enthalten eine Anzahl von Komponenten und Elementen, die typischerweise über einen Bus oder Interconnect gekoppelt sind. Bisher wurden Eingabe/Ausgabe (Input/Output (IO)-Geräte durch eine herkömmliche Mehrpunkt (multidrop)-Parallelbusarchitektur, als Peripheral Component Interconnect (PCI) bezeichnet, miteinander gekoppelt. In jüngster Zeit wurde eine neue Generation eines IO-Busses, als PCI-Express (PCIe) bezeichnet, verwendet, um schnellere Verbindung zwischen Geräten zu erleichtern, die ein serielles Bitübertragungsebene-Kommunikationsprotokoll (serial physical layer communication protocol) aufweisen.
-
Eine PCIe-Architektur enthält ein Schichtenprotokoll für Kommunikation zwischen den Geräten. Beispielsweise bilden eine physische Schicht, Sicherungsschicht und Transaktionsschicht einen PCIe-Protokollstapel. Die PCIe-Verbindung wird um dedizierte unidirektionale Paare von seriellen Punk-zu-Punkt-Verbindungen, als eine Lane bezeichnet wird, aufgebaut. Eine Verbindung zwischen Geräten enthält eine gewisse Anzahl von Lanes, wie zum Beispiel, eine, zwei, sechzehn, zweiunddreißig u.s.w. Die aktuelle PCIe-Spezifikation, PCI Express™ Specification Base Version 2.0 (am 17. Januar 2007 veröffentlicht) ist erhältlich unter http://www.pcisig.com/specifications/pciexpress/.
-
Eine physische Schicht kann drei Arten von Verbindungsverkehr übertragen: geordnete Mengen, Datensicherungsschichtpakete (Data Link Layer Packets (DLLPs)) und Transaktionsschichtpakete (Transaction Layer Packets (TLPs)). Lokaler Verbindungsverkehr, der geordnete Mengen und DLLPs enthält, wird nicht weitergeleitet und überträgt keine Routing-Information. Im Gegensatz dazu können TLPs von Verbindung zu Verbindung unter Verwendung von Routing-Information, die in einem Paketkopf enthalten ist, gehen. Genauer gesagt enthält jedes TLP einen Drei- oder Vier-Doppelwort (Double Word (DW)) (12 oder 16 Byte)-Kopf. In dem 3DW- oder 4DW-Kopf befinden sich unter anderem zwei Felder: Typ und Format (Fmt), die das Format des Restes des Kopfes und das Routing-Verfahren definieren, das auf das gesamte TLP anzuwenden ist, wenn es sich zwischen Geräten in einem PCIe-System bewegt. Während der Kopf benötigte Information bereitstellt, ist sein Format fest und verhindert es Flexibilität hinsichtlich der Bereitstellung von zusätzlicher Information mittels des Kopfes.
-
GLASER, Steve: Multi-Root IOV. PCI-SIG Developers Conference, Mai 20017, S. 1-80: Offenbart ein Verfahren, umfassend Generieren eines Präfix-Kopfes als ein Ende-zu-Ende-Kopf-Präfix oder ein lokales Kopf-Präfix, wobei der Präfix-Kopf zum Senden des ersten Pakets von einem Sender dient, und Senden des ersten Pakets von dem Sender an einen Empfänger entlang eines Interconnect, wobei das erste Paket den Präfix-Kopf, dem ein Kopf folgt, enthält.
-
BUDRUK, R. [u.a.]: PCI Express System Architecture. Mindshare Inc., ISBN 0-321-15630-7, Kap. 3, August 2003, S 105-152: Offenbart einen TLP-Header mit einem 2-Bit-Formatfeld FMT, welches zusätzlich zum 6-Bit-Befehlsfeld TYPE existiert und die Headerlänge variabel definiert und damit empfangsseitig auswertet.
-
Die vorliegende Erfindung liefert eine Vorrichtung gemäß Anspruch 1, ein System gemäß Anspruch 7 und ein Verfahren gemäß Anspruch 9.
-
Die Unteransprüche betreffen jeweilige besondere Ausführungsformen der vorliegenden Erfindung.
-
Figurenliste
-
- 1 zeigt ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
- 2 zeigt einen Basis-TLP-Präfix-Kopf gemäß einer Ausführungsform der vorliegenden Erfindung.
- 3 zeigt ein Blockdiagramm eines TLP-Präfixes, der an ein TLP angehängt ist, gemäß einer Ausführungsform der vorliegenden Erfindung.
- 4 zeigt ein Blockdiagramm eines TLP-Präfix-Kopfes, der gemäß einer Ausführungsform der vorliegenden Erfindung erweitert ist.
- 5 - 5B zeigen Stapeln von TLP-Präfixen und Kopf gemäß einer Ausführungsform der vorliegenden Erfindung.
- 6A - 6C zeigen unterschiedliche Kopf-Kredit-Zuteilungen gemäß einer Ausführungsform der vorliegenden Erfindung.
- 7 zeigt ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
-
Ausführliche Beschreibung
-
Ausführungsformen können das PCIe-Architektur-Kopfformat zur Unterstützung von aufkommenden Anwendungsanforderungen erweitern. Genauer gesagt kann in zahlreichen Ausführungsformen ein TLP-Präfix, das eine architektierte Definition von zusätzlicher Kopfinformation ist, die an einen TLP-Kopf angehängt werden kann, verwendet werden, um Flexibilität von Information zu ermöglichen, die in einem TLP oder einem anderen derartigen Paketkopf bereitgestellt wird. Das heißt, während zum Beispiel hierin die Anwendung auf TLPs eines PCIe-Systems beschrieben wird, ist der Schutzbereich diesbezüglich nicht beschränkt und können Ausführungsformen verwendet werden, um Senden von zusätzlicher Kopfinformation für Pakete von zahlreichen Kommunikationsprotokollen zu ermöglichen.
-
In unterschiedlichen Implementierungen kann dieser TLP-Präfix-Kopf als eine Kapselungsschicht für PCIe-Transaktionsschichtköpfe verwendet werden, zusätzliche Routing-Information bereitstellen, um Zwischen-Routing-Elementen beim Routen von TLPs zu helfen, Transakationsverarbeitungshinweise für einen Completer bereitstellen und/oder lieferantenspezifische Debug-Information bereitstellen. Ferner kann ein Präfix gemäß einer Ausführungsform der vorliegenden Erfindung verwendet werden, um Sicherheitsinformation bereitzustellen und für zukünftigen Gebrauch Modelle bereitzustellen, die erweiterte Köpfe benötigen können, um zusätzliche Information bereitzustellen, die in einem gegenwärtig spezifizierten Kopfformat fehlt.
-
In 1 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt, das Geräte bzw. Einrichtungen enthält, die über eine serielle Verbindung mit einem Controller Hub gekoppelt sind. System 100 enthält einen Prozessor 105 und einen Systemspeicher 110, der mit einem Controller Hub 115 gekoppelt ist. Der Prozessor 105 enthält irgendein Verarbeitungselement, wie zum Beispiel einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Co-Prozessor oder einen anderen Prozessor. Der Prozessor 105 ist mit dem Controller Hub 115 über einen Frontseitenbus (Front-Side bus (FSB)) 106 gekoppelt. In einer Ausführungsform ist der FSB 106 ein serieller Punkt-zu-Punkt (Point-to-Point (PtP))-Interconnet, wie oben beschrieben.
-
Der Systemspeicher 110 enthält irgendeinen Speicherbaustein, wie zum Beispiel einen Direktzugriffsspeicher (Random Access Memory (RAM)), nichtflüchtigen Speicher (Non-Volatile (NV))-Speicher oder einen anderen Speicher, der durch Einrichtungen in dem System 100 zugänglich ist. Der Systemspeicher 110 ist mit dem Controller Hub 115 über eine Speicherschnittstelle 116 gekoppelt.
-
In einer Ausführungsform ist der Controller Hub 115 ein Root-Hub oder Root-Controller in einer PCIe-Verbindungshierarchie. Beispiele für den Controller Hub 115 schließen einen Chipsatz, einen Memory Controller Hub (MCH), eine Northbridge, einen Input/Output-Controller Hub (ICH), eine Southbridge und einen Root-Controller Hub ein. Hier ist der Controller Hub 115 über eine serielle Verbindung 119 mit einem Switch/einer Brücke 120 gekoppelt. Eingabe/Ausgabe-Module 117 und 121, die auch als Schnittstellen/Ports 117 und 121 bezeichnet werden können, schließen einen Schichtenprotokollstapel ein bzw. implementieren diesen, um Kommunikation zwischen dem Controller Hub 115 und dem Switch 120 zu liefern. In einer Ausführungsform sind mehrere Einrichtungen mit dem Switch 120 koppelbar. Es sind auch Ausführungsformen denkbar, bei denen ein Prozessor und Chipsatz in demselben Gehäuse integriert sind. Ferner erfordert diese Technik keine Überarbeitung eines PCIe-Protokolls und kann sie unter anderem durch PCIe 2.0, 1.1-kompatible Einrichtungen bzw. Geräte implementiert werden. Somit können Ausführungsformen überall dort verwendet werden, wo ein PCIe-Interconnect zur Kommunikation verwendet wird.
-
Der Switch 120 lenkt Pakete/Nachrichten von einer Einrichtung 125 stromaufwärts, d.h. eine Hierarchie zum Controller Hub 115 hinauf, und stromabwärts, d.h. eine Hierarchie hinab weg vom Controller Hub 115 zur Einrichtung 125. Eingabe/Ausgabe-Module 122 und 126 implementieren einen Schichtenprotokollstapel zur Kommunikation zwischen Switch 120 und Einrichtung 125. Die Einrichtung 125 enthält irgendeine interne oder externe Einrichtung oder Komponente, die mit einem elektronischen System, wie zum Beispiel einer E/A-Einrichtung, einem Network Interface Controller (NIC), einer Add-in-Karte, einem Audioprozessor, einem Netzwerkprozessor, einer Festplatte, einer Speichereinrichtung, einem Monitor, einem Drucker, einer Maus, einer Tastatur, einem Router, einer tragbaren Speichereinrichtung, einer Firewire-Einrichtung, einer USB (Universal Serial Bus)-Einrichtung, einem Scanner und anderen Eingabe/Ausgabe-Einrichtungen koppelbar ist.
-
Ein Graphikbeschleuniger 130 ist auch mit dem Controller Hub 115 über eine serielle Verbindung 132 gekoppelt. In einer Ausführungsform ist der Graphikbeschleuniger 130 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Switch 120 und dementsprechend E/A-Einrichtung 125 ist dann mit dem ICH gekoppelt. E/A-Module 131 und 118 dienen auch zur Implementierung eines Schichtenprotokollstapels zur Kommunikation zwischen Graphikbeschleuniger 130 und Controller Hub 115.
-
In einer Ausführungsform kann ein PCIe-Protokollstapel eine Transaktionsschicht, eine Sicherungsschicht und eine physische Schicht enthalten. In einer Ausführungsform dient die Transaktionsschicht zum Bereitstellen einer Schnittstelle zwischen dem Verarbeitungskern einer Einrichtung und der Interconnect-Architektur, wie zum Beispiel einer Datensicherungsschicht und einer physischen Schicht. Diesbezüglich ist die Transaktionsschicht hauptsächlich für das Zusammenfügen und Zerlegen von Paketen (d.h. Transaktionsschichtpakete oder TLPs) verantwortlich. Man beachte, dass zur sanften Implementierung von Zuverlässigkeit-Verfügbarkeit-Funktionstüchtigkeit (Reliability-Availibilty-Serviceability (RAS)) PCIe zuverlässige Protokollfehlerdetektions-, -korrektur- und -berichtsleistung auf drei kooperativen Funktionsschichten einer Gerätearchitektur liefert: physische, Sicherungs- und Transaktionsschichten. In einem PCIe-basierten Design vereinigen sich ein oder mehrere TLPs zur Bildung einer Transaktion, die über eine Verbindung von einem Gerät auf dem Bus zu einem anderen gesendet wird. Für ein bestimmtes TLP liefert ein Gerät Fehlerdetektion und -korrektur auf Geräteebene durch Analyse von Zuverlässigkeitsmechanismen, die in jedem TLP vorhanden sind. Diese Fehlerdetektions/korrekturverantwortlichkeiten erstrecken sich über die drei funktionalen Geräteebenen. PCIe implementiert auch geteilte Transaktionen, d.h. Transaktionen mit zeitlich getrennter Anfrage und Antwort, was einer Verbindung ermöglicht, anderen Verkehr zu übertragen, während das Zielgerät Daten für die Antwort erfasst.
-
Zusätzlich verwendet PCIe Kredit-basierte Flusskontrolle. In diesem Schema zeigt ein Gerät eine anfängliche Kreditmenge für jeden der Empfangspuffer in der Transaktionsschicht an. Ein externes Gerät an dem gegenüberliegenden Ende der Verbindung, wie zum Beispiel Controller Hub 115 in 1, zählt die Anzahl von Krediten, die von jedem TLP verbraucht werden. Eine Transaktion kann erfolgen, wenn die Transaktion keine Kreditgrenze überschreitet. Bei Empfang einer Antwort wird eine Kreditmenge wiederhergestellt. Ein Vorteil eines Kreditschemas besteht darin, dass die Latenz von Kreditrückkehr nicht die Leistung beeinträchtigt, vorausgesetzt dass die Kreditgrenze nicht erreicht wird.
-
Die Sicherungsschicht wirkt als eine Zwischenstufe zwischen der Transaktionsschicht und der physischen Schicht. In einer Ausführungsform besteht eine Verantwortlichkeit der Datensicherungsschicht darin, einen zuverlässigen Mechanismus zum Austauschen von TLPs zwischen zwei Komponenten durch eine Verbindung zu liefern. Eine Seite der Sicherungsschicht akzeptiert TLPs, die von der Transaktionsschicht zusammengefügt sind, wendet Identifizierer an, berechnet und wendet einen Fehlerdetektionscode, d.h. zyklische Wiederherstellungscodes (Cyclic Recovery Codes (CRC)), an und sendet die modifizierten TLPs zur physischen Schicht zum Senden über eine physikalische Verbindung an ein externes Gerät.
-
In einer Ausführungsform sendet die physische Schicht ein Paket physikalisch an ein externes Gerät. Die physische Schicht enthält einen Sendeabschnitt zum Vorbereiten von abgehender Information zum Senden und einen Empfangsabschnitt zum Identifizieren und Vorbereiten von empfangener Information vor Leiten zur Sicherungsschicht. Die physische Schicht enthält einen Sender und einen Empfänger. Der Sender ist mit Symbolen ausgestattet, die der Sender serialisiert und an ein externes Gerät sendet. Der Empfänger wird mit serialisierten Symbolen von einem externen Gerät versorgt und wandelt die empfangenen Signale in einen Bit-Strom um. Der Bit-Strom wird deserialisiert und an einen logischen Unterblock geliefert. In einer Ausführungsform wird ein 8b/10b-Sendecode verwendet, wobei Zehn-Bit-Symbole gesendet/empfangen werden. Zusätzlich liefert in einem Beispiel der Empfänger auch einen Symboltakt, der aus dem eintreffenden seriellen Strom zurückgewonnen ist. Obwohl die Transaktionsschicht, Sicherungsschicht und physische Schicht unter Bezugnahme auf eine spezielle Ausführungsform eines PCIe-Protokollstapels erörtert worden sind, ist ein Schichtenprotokollstapel, wie oben angegeben, nicht derart beschränkt. In der Tat kann jedes Schichtenprotokoll enthalten/implementiert sein.
-
Somit erfolgt eine Kommunikation unter Geräten in einem PCIe-System über das Senden von einem oder mehreren TLPs, die in Kombination eine Transaktion bilden, die über eine zwischen zwei Geräten angeschlossene Verbindung gesendet wird. Unter Verwendung der oben beschriebenen drei Schichten kann somit ein TLP gesendet werden, das zahlreiche Informationen enthält. Genauer gesagt kann die physische Schicht Frame-Information an einem Anfang und Ende eines TLP liefern. Die Sicherungsschicht kann wiederum eine Sequenzzahl an das Paket sowie einen Verbindungs-CRC liefern. Die Transaktionsschicht kann wiederum einen Kopf, der an Daten (falls vorhanden) angehängt ist, und einen optionalen Ende-zu-Ende-CRC (ECRC) generieren. Auf diese Weise kann ein gesendetes TLP die folgenden Teile in Folge enthalten: ein Simple Transmission Protocol (STP)-Framing-Feld, ein Sequenzfeld, ein Kopffeld, ein Datenfeld, ein ECRC-Feld und Link-CRC (LCRC)-Feld und ein Framing End-Feld. Wie oben beschrieben, ist dieses Format des TLP-Kopfes fest und liefert es keine Flexibilität hinsichtlich der Bereitstellung von zusätzlichen Informationen, die mit einem derartigen Kopf verbunden sind.
-
Zur Erhöhung von Flexibilität können TLP-Präfixe gemäß einer Ausführungsform der vorliegenden Erfindung an TLPs gehängt werden, die durch die PCI-Spezifikation definiert sind. In einer solchen Ausführungsform kann die Basis-TLP-Präfix-Größe ein Doppelwort (Double Word (DW)) betragen und kann sie an TLP-Köpfe, sowohl gegenwärtig definierte als auch zukünftige TLP-Köpfe, angehängt werden. Wie in 2 gezeigt ist, die einen Basis-TLP-Präfix-Kopf gemäß einer Ausführungsform der vorliegenden Erfindung zeigt, kann das Präfix ein Opcode-Feld und Präfix-spezifisches Feld enthalten. Wie in 2 gezeigt ist, enthalten genauer gesagt die Daten 10 einen Basis-TLP-Präfix-Kopf, der aus einem Präfix DW 20 mit einem ersten Feld 25 gebildet ist, das mit einem Opcode-Feld und einem Präfixspezifischen Feld 28 übereinstimmen kann, das zahlreiche Informationen liefern kann, die auf dem Opcode-Feld basieren, mit dem es verbunden ist. Wie in der Ausführungsform von 2 gezeigt ist, kann das Opcode-Feld 25 fest, d.h. vorab festgelegte höchstwertige Bits (Most Significant Bits (MSBs)) aufweisen. Genauer gesagt können die drei MSBs einen Wert von „100“ aufweisen, um das Vorhandensein eines Präfixes anzuzeigen. Die niedrigstwertigen Bits (Least Significant Bits (LSBs)), die in der Ausführungsform von 2 als die 5 LSBs gezeigt sind, können einen variierenden Wert aufweisen, um einer bestimmten Opcode-Zuordnung zu entsprechen.
-
In einer Ausführungsform kann das Opcode-Feld mit den folgenden Zuweisungen verbunden sein
Tabelle 1
◯ | 100 - ttttt, wobei ttttt der TLP-Präfix-Opcode ist (d.h. bis zu 32 Präfixe können definiert werden); |
◯ | 100-00000 - lieferantenspezifisch; |
◯ | 100-00001 - erweitertes Opcode-Präfix; |
◯ | 100-11111 - TLP-Präfix-Erweiterung; und |
◯ | 100-andere - für zukünftige Verwendung reserviert. |
-
In 3 ist ein Blockdiagramm eines TLP-Präfixes gezeigt, das gemäß einer Ausführungsform der vorliegenden Erfindung an ein TLP gehängt ist. Wie in 3 gezeigt ist, enthalten Daten 10'ein TLP-Präfix 20, das dem oben in Verbindung mit 2 beschriebenen entsprechen kann, und einen TLP-Kopf 30. Wie in 3 gezeigt ist, ist nur ein erstes DW des TLP-Kopfes gezeigt. Es versteht sich jedoch, dass in zahlreichen Implementierungen ein TLP-Kopf aus drei oder vier DWs gebildet werden kann. Der TLP-Kopf 30 kann zahlreiche Felder enthalten. In 3 gezeigte spezielle Felder enthalten ein Formatfeld 32, ein Typenfeld 34 und ein Längenfeld 36. Formatfeld 32 und Typenfeld 34 können zum Definieren des Formats des Rests des Kopfes 30 und des auf dem gesamten TLP zu verwendenden Routing-Verfahren verwendet werden, wenn es unterschiedliche Geräte durchläuft. Außerdem kann ein Längenfeld 36 eine Länge eines Datenabschnitts des TLP, der dem Kopf 30 folgt, anzeigen. Man beachte, dass die Struktur des Kopfes 30 durch das PCIe-Protokoll fest ist und somit einen Mangel an Flexibilität aufweist. Somit können Ausführungsformen der vorliegenden Erfindung die Flexibilität liefern, um zusätzliche Informationen, die mit einem TLP-Kopf verbunden sind, durch Aufnahme von einem oder mehreren TLP-Präfixen vor dem TLP-Kopf bereitzustellen.
-
Zur Herbeiführung von Funktionalität kann TLP-Präfix-Unterstützung (durch die Hierarchie) End-End ermöglicht werden. Der Bereich kann jedoch in einigen Fällen auf Link-Link für lokale Verbindungs-TLP-Präfixe (link local TLP prefixes) beschränkt werden, während andere zu Endpunkt- und Zwischen-Switches gelenkt werden können. Für Routing-Elemente (z. B. Switches, Peer-Peer usw.) können TLP-Präfixe standardmäßig übergehbar sein, sofern nicht ein bestimmtes Nutzungsmodell von ihnen verlangt, dass sie verstanden und verarbeitet werden. Zum Beispiel kann ein Per-hop-Append-Remove-TLP, das an dem fernen Ende der Verbindung angeschlossen und regeneriert (Link-Local-TLPs) ist, verwendet werden.
-
In zahlreichen Systemen kann es zwei TLP-Präfix-Typen geben. Erstens kann ein lokales TLP-Präfix einer Verbindung vorgesehen sein, für das Routing-Elemente das TLP zum Routen oder für andere Zwecke verarbeiten müssen. Ein derartiges Präfix kann verwendet werden, wenn beide Enden das TLP-Präfix verstehen. Das heißt, dass der Typ von Präfix kein Blind pass für Routing-Elemente ist. Man beachte, dass ein ECRC auf lokale TLP-Präfix-Köpfe einer Verbindung nicht anwendbar sind.
-
Ein zweites Präfix kann ein globales TLP-Präfix sein, das dort verwendet werden kann, wo das TLP durch Routing-Elemente geht, als solche können Routing-Elemente nicht TLP-Präfix-Inhalte kennen. Wenn ein Basis-TLP durch ECRC geschützt wird, dann wird auch ein korrespondierendes globales TLP-Präfix durch ECRC geschützt.
-
Das in 2 gezeigte Basis-TLP-Präfix liefert 24 Bits für TLP-Opcode-spezifische Felder. In gewissen Nutzungsfällen kann diese Anzahl von Bits nicht ausreichen und kann bzw. können ein oder mehrere zusätzliche DWs verwendet werden, um für TLP-Präfix-Erweiterung zu sorgen, zum Beispiel wenn zusätzliche Opcode-spezifische Bits erforderlich sind. In solchen Fällen können die TLP-Präfix-Opcode-Kodierung von 100-11111 verwendet werden, um für eine Erweiterung des TLP-Opcode-spezifischen Feldes zu sorgen. Die Vorteile von TLP-Erweiterungs-Opcode sind wie folgt: Liefern einer TLP-Präfix-Architektur mit fester DW-Größe, die, falls erforderlich, erweitert werden kann; Ermöglichen einer Definition von TLP-Präfixen, die Felder mit mehr als 24 Bits erfordern; und Bereitstellen der Fähigkeit, die TLP-Präfix-Opcode-spezifischen Felder in der Zukunft zu vergrößern, ohne das Ökosystem zu beeinflussen.
-
In 4 ist ein Blockdiagramm eines erweiterten TLP-Präfix-Kopfes gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. In 4 zeigt ein Blockdiagramm von Daten 10", die einen erweiterten TLP-Präfix-Kopf gemäß einer Ausführungsform der vorliegenden Erfindung enthalten. Das heißt, dass zusätzlich zu einem ersten Präfix-DW 20 zwei zusätzliche erweiterte Präfix-DWs 40 und 45 vorhanden sind. Auf diese Weise können zusätzliche Informationen bereitgestellt werden. Man beachte, dass beide erweiterten Präfixe 40 und 45 dieselbe Opcode-Zuordnung, nämlich „10011111“, aufweisen, was, wie oben in Tabelle 1 zu sehen ist, mit dem TLP-Präfix-Expanisionscode übereinstimmt. Somit kann das mit diesen beiden erweiterten Präfixen verbundene Präfix-spezifische Feld 48 zusätzliche Informationen liefern, zum Beispiel zusätzliche Daten zu denjenigen, die in dem Präfix-Doppelwort 20 vorhanden sind.
-
In gewissen Fällen kann TLP-Präfix-Stapeln verwendet werden, bei dem mehrere TLP-Präfixe an andere TLP-Präfixe oder TLP-Köpfe angehängt werden können (und die als ein Stapel betrachtet werden können). Die folgenden Regeln gelten für Stapeln von TLP-Präfixen in einer Ausführungsform. TLP-Präfixe können übereinander gestapelt werden, wobei die gestapelten TLP-Präfixe Basis-TLP-Präfixe oder Erweiterungs-TLP-Präfixe sein können. Es ist zulässig, dass mehrere TLP-Präfixe gestapelt werden. Globale TLP-Präfixe können auf anderen globalen TLP-Präfixen oder einem Standardkopf-TLP gestapelt werden, aber nicht auf einem lokalen TLP-Präfix einer Verbindung. Im Gegensatz dazu können jedoch lokale TLP-Präfixe einer Verbindung auf irgendeinem anderen TLP-Präfix oder Kopf-TLP gestapelt werden.
-
5A zeigt zulässiges Stapeln von TLP-Präfixen und einem Kopf gemäß einer Ausführungsform der vorliegenden Erfindung. Wie in 5A gezeigt ist, ist eine Stapel 100 bereitgestellt, der einen TLP-Kopf 105, 1-N globale TLP-Präfixe 110 und 1-N lokale TLP-Präfixe einer Verbindung 115 enthält. In einer Ausführungsform kann ein derartiger Stapel 100 zulässig sein, da lokale TLP-Präfixe 115 einer Verbindung auf globalen Präfixen 110 gestapelt sind (die wiederum auf TLP-Kopf 105 gestapelt sind). Wie in 5B gezeigt ist, kann im Gegensatz dazu Stapel 120 in gewissen Ausführungsformen nicht zulässig sein, da globale TLP-Präfixe 135 nicht auf lokalen TLP-Präfixen 130 einer Verbindung gestapelt werden dürfen.
-
Wie oben beschrieben, können TLP-Präfixe erweitert und gestapelt werden. Somit kann ein Empfänger das Basis-TLP detektieren, um den Typ von TLP zu Routing- und Flusskontrollezwecken zu ermitteln. Die Regeln zum Detektieren des Basis-TLP gemäß einer Ausführungsform sind wie folgt: Wenn ein TLP-Präfix detektiert wird (z.B. durch Vorhandensein eines vorab festgelegten Präfix-Codes von 100 in den drei MSBs des ersten Bytes des Präfix) werden alle nachfolgenden DWs gescannt, bis ein nicht-100-Kodieren für diese Bits detektiert wird. Die Anzahl von zwischenzeitlich gezählten DWs ist TLP-Präfixe, entweder gestapelt oder erweitert. Man beachte, dass kein separates Abschlussbit zum Detektieren des Endes von TLP-Präfixen notwendig ist.
-
Gemäß dem PCIe-Protokoll ist eine Kopf-Flusskontrolle-Granularität eine Einheit von Kopfkredit, wobei eine Einheit 16 Bytes (B) gleicht (in Anbetracht dessen, dass 16 B einem TLP-Kopf entsprechen). Ein TLP-Präfix-DW (d.h. ein Basis- TLP-Präfix oder erweitertes TLP-Präfix), das an ein Kopf-TLP gehängt ist, braucht einen zusätzlichen Kopfkredit (zusätzlich zum Basiskopfkredit).
-
Ein architektierter konfigurierbarer maximaler TLP-Präfix-Größenparameter kann für zahlreiche Komponenten festgelegt werden. Genauer gesagt muss ein Empfänger die TLP-Präfixe in einem Speicherelement aufbewahren, bis das Standard-TLP detektiert ist, wonach er das TLP in die geeignete Pufferresource bewegen kann (für die die Flusskontrolle ausgewiesen ist). Somit sollte die Fähigkeit von Zwischen/Stufenpuffern eines Empfängers betrachtet werden, d. h. eine Grenze der Anzahl von TLP-Präfix-DWs, die in einem Paket ausgegeben werden kann. Diese Granularität kann als eine unterstützte maximale TLP-Präfix-Größe definiert sein, z.B. in Mehrfachem von Kopfgranularität - 1, 2, 4, etc. Dieser architektierte Konfigurationsparameter kann als eine maximale TLP-Präfix-Größe bezeichnet werden und kann durch Bereitstellen eines Feldes in einem PCIe-Fähigkeitsregister aufgefunden und über ein PCIe-Steuerregister programmiert werden.
-
Wie in 6A gezeigt ist, sind somit, wenn zwei TLP-Präfixe 210 auf einem TLP 200 gestapelt werden, zwei Kopfkredite notwendig, da zusätzlich zum einzigen Kopfkredit, der für einen 16 B-Kopf notwendig ist, ein zusätzlicher Kredit zum Unterstützen der beiden TLP-Präfixe notwendig ist. Wie in 6A gezeigt ist, können in ähnlicher Weise dieselben zwei Kopfkredite zum Unterstützen eines Stapels von TLP-Präfixen 215 verwendet werden, der vier DWs (d.h. 16 Bytes) aufweist. Wie in 6C gezeigt ist, sind im Gegensatz dazu drei Kopfkredite notwendig, um einen Präfix-Stapel 220 zu unterstützen, der vier Doppelwörter enthält, da 20 Bytes, die einen Kredit wert sind, zum Unterstützen dieses Stapels 220 notwendig sind. Während dies mit dieser speziellen Implementierung in den 6A-6C gezeigt ist, können andere Kopfkreditregeln in anderen Ausführungsformen gelten.
-
In 7 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 7 gezeigt ist, kann ein Verfahren 300 durch eine Transaktionsschicht einer Sendeeinrichtung implementiert werden, um ein TLP-Präfix gemäß einer Ausführungsform der vorliegenden Erfindung zu erzeugen. Das Verfahren 300 kann damit beginnen, dass bestimmt wird, ob zusätzliche Information in einem TLP-Kopf (Raute 310) gesendet werden soll. Während diesbezüglich keine Beschränkung besteht, kann genannte zusätzliche Information zum Kapseln weiterer Daten in dem TLP-Kopf, Bereitstellen von zusätzlichen Routing-Informationen für Zwischen-Routingelemente, Bereitstellen von Transkationsverarbeitung usw. verwendet werden. Wenn solche zusätzliche Information bereitgestellt werden soll, geht die Steuerung zu Block 320.
-
Bei Block 320 kann ein TLP-Präfix-Kopf mit einem Opcode-Feld un einem Präfixspezifischen Feld generiert werden. In einer Ausführungsform kann der TLP-Präfix-Kopf beispielsweise wie der in 2 gezeigte Basiskopf generiert werden. Als nächstes kann ermittelt werden, ob zusätzlich zur in diesem Basis-Präfix-Kopf bereitgestellten Information zusätzliche Information in dem TLP-Präfix (Raute 33) enthalten sein soll. Falls ja, geht die Steuerung in einer Schleife zu Block 320 zurück. Andernfalls kann bzw. können die eine oder mehreren Präfix-Kopfeinheiten gesendet werden (Block 340). Das heißt, dass genannte TLP-Präfix-Einheiten von der Transaktionsschicht zu einer Datensicherungsschicht und auf einer physischen Schicht und dann über eine Verbindung zu einer Empfangseinrichtung bzw. zu einem Empfangsgerät gesendet werden können, die bzw. das diese Information durch eine physische Schicht, eine Datensicherungsschicht und eine Transaktionsschicht der Empfangseinrichtung bzw. des Empfangsgerätes zum Dekodieren und Handling entsprechend gehen lassen kann.
-
Nach Senden des TLP-Präfix-Kopfes kann ein TLP-Kopf, der ein herkömmlicher TLP-Kopf sein kann, der zahlreiche Felder, wie zum Beispiel ein Formatfeld, ein Typfeld u.s.w. enthält, gesendet werden. Genanntes Senden kann in derselben Weise wie für den TLP-Präfix-Kopf erfolgen. Nach genanntem TLP-Kopf-Senden kann irgendeine Nutzlast, die auch mit dem TLP gesendet werden soll, gesendet werden (Block 360). Empfang und Handling des Präfixes, des TLP-Kopfes und zusätzlicher Paketinformation kann in dem Empfänger unter Verwendung der zahlreichen Schichten erfolgen. Während dies mit dieser speziellen Implementierung in der Ausführungsform von 7 gezeigt ist, ist der Schutzbereich der vorliegenden Erfindung diesbezüglich nicht beschränkt.
-
Somit können Ausführungsformen Flexibilität hinsichtlich der in einem Paket-Kopf bereitgestellten Information liefern, ohne dass ad-hoc-Lösungen oder die Verwendung von reservierten Kopffeldern zum Liefern/Einführen von neuen Merkmalen oder Punktlösungen notwendig sind. In einigen Ausführungsformen ermöglicht ein TLP-Präfix eine leichte Definition und Implementierung, so dass ein minimaler Einfluss auf das Ökosystem und eine skalierbare Lösung vorliegt. TLP-Präfixe können gestapelt/erweitert werden, wie oben beschrieben, was dazu verwendet werden kann, um für zukünftige Unterstützung zu sorgen, wie zum Beispiel Kodieren, das für zahlreiche Lieferanten definiert ist, oder Kodieren, das für Verwaltung definiert ist. Ferner sind keine neuen Flusskontrolltypen notwendig.
-
Ausführungsformen können als Code implementiert und auf einem Speichermedium gespeichert werden, auf dem Anweisungen gespeichert sind, die verwendet werden können, um ein System zur Durchführung der Anweisungen zu programmieren. Das Speichermedium kann, ohne aber darauf beschränkt zu sein, jede Art von Platte, einschließlich Floppy Disk, optische Platte, CD-ROMs (Compact Disk Read-Only Memories), CD-RWs (Compact Disk Rewritables) und magnetooptische Platten, Halbleitereinrichtungen, wie zum Beispiel Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs), wie zum Beispiel dynamische Direktzugriffsspeicher (DRAMs), statische Direktzugriffsspeicher (SRAMs), löschbare programmierbare Nur-Lese-Speicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs), magnetische oder optische Karten oder irgendeine andere Art von Medien, die zum Speichern von elektronischen Anweisungen geeignet sind, sein.
-
Während die vorliegende Erfindung unter Bezugnahme auf eine begrenzte Anzahl von Ausführungsformen beschrieben worden ist, werden Fachleute auf dem Gebiet zahlreiche Modifikationen und Variationen derselben erkennen. Es ist beabsichtigt, dass die beigefügten Ansprüche all diese Modifikationen und Variationen abdecken, die unter den wahren Geist und Schutzbereich der vorliegenden Erfindung fallen.