-
Allgemeiner Stand der Technik
-
Bei den heutigen Computerarchitekturen steigen die Anforderungen an die Bandbreite für die Anwendungen exponentiell. Dies gilt sowohl für Speicher- als auch für Eingabe/Ausgabe(E/A)-Teilsysteme. Auch ist zuletzt festgestellt worden, dass die Unterstützung dieses exponentiellen Anstiegs der Bandbreite mit den vorhandenen Verbindungen aufgrund der technischen Realisierung und aufgrund der Möglichkeiten der Industrie immer schwieriger geworden ist.
-
Ein Beispiel für diesen Trend ist in den verfügbaren Geschwindigkeiten kommender Generationen der wohlbekannten Peripheral-Component-Interconnect-Express-Verbindungstechnologie (PCIeTM) zu sehen. Speziell war gemäß der PCI ExpressTM Specification Base Specification 2.0 (veröffentlicht am 17. Januar 2007, hierin im Folgenden als PCIeTM Specification bezeichnet) für die Signalisierungsgeschwindigkeit der kommenden PCIeTM-Generation (Gen) 3.0 erwünscht, dass die Bandbreite gegenüber den Niveaus der aktuellen PCIeTM-Gen 2.0 (5,0 Gigatransfers je Sekunde (GT/s)) verdoppelt werden sollte. Aufgrund von Problemen bei der technischen Realisierung gab sich die Industrie damit zufrieden, geringere Geschwindigkeiten (8,0 GT/s statt 10,0 GT/s) einzuführen und keine 8b/10b-Codierung durchzuführen, um Bandbreiten nahe 10,0 GT/s zu erreichen. Es sind verschiedene Techniken erforderlich, um zu ermöglichen, dass die Technik mit den Bandbreiteanforderungen der Industrie Schritt hält.
-
Eine solche Technik ist die Komprimierung. Über die Jahre ist die Komprimierung in einer Vielfalt von Verbindungssystemen erfolgreich angewendet worden. Solche bekannten Komprimierungstechniken können jedoch komplex sein und Gemeinkosten verursachen, welche ihren Nutzen verringern.
-
US 2008/0 151 903 A1 offenbart ein Verfahren, das umfasst: Vergleichen eines Paketkopfes eines Pakets, das in einen Sender eingegeben wird mit einem gespeicherten Paketkopf, welcher einem vorigen Paket desselben Typs wie das von dem Sender gesendete Paket entspricht, Erzeugen eines Vergleichsvektors auf der Grundlage des Vergleichs und Senden des Pakets aus dem Sender ohne den Paketkopf, wenn der Paketkopf und der gespeicherte Paketkopf übereinstimmen.
-
Figurenliste
-
- 1 ist ein Blockdiagramm eines Pakets gemäß einer Ausführungsform der vorliegenden Erfindung.
- 2 zeigt beispielhafte Paketköpfe vor und nach der Komprimierung gemäß einer Ausführungsform der vorliegenden Erfindung.
- 3 ist ein Blockdiagramm eines Teils einer Halbleitereinheit gemäß einer Ausführungsform der vorliegenden Erfindung.
- 4 ist ein Blockdiagramm einer Paketkopf-Komprimierungsmaschine gemäß einer Ausführungsform der vorliegenden Erfindung.
- 5 ist ein Ablaufdiagramm zur Durchführung einer Paketkopfkomprimierung gemäß einer Ausführungsform der vorliegenden Erfindung.
- 6 ist ein Ablaufdiagramm eines Komprimierverfahrens für Datenpakete gemäß einer Ausführungsform der vorliegenden Erfindung.
- 7 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
-
Detaillierte Beschreibung
-
In verschiedenen Ausführungsformen kann die Datenübertragung über eine Verbindung wie z.B. eine PCIeTM-Verbindung gemäß PCIeTM Gen 2 oder Gen 3 oder ein anderes solches Protokoll durch das Bereitstellen von Komprimierungstechniken verbessert werden. In vielen Realisierungen können unterschiedliche Techniken angewendet werden, um Paketkopf- und Datenabschnitte eines Pakets zu komprimieren. Speziell können unterschiedliche Eigenschaften von Paketköpfen und Daten angegangen werden, um eine geeignete Komprimierungstechnik anzuwenden. Für eine typische Punkt-zu-Punkt(PtP)-Verbindung bleiben verschiedene Komponenten des Kopfabschnitts des Pakets unverändert. Zum Beispiel bleiben in einem PCIeTM-Paketkopf Zeitcode (Time Code, TC), Transaction-Layer-Packet(TLP)-Digest (TD), Attribute (Attr), AT, Länge, Kennung des Anfordernden, Etikettenkennzeichen, BE und obere Bits eines Adressabschnitts für eine Reihe von Anforderungen von einem Agenten an einem PCIeTM-Endpunkt unverändert. In einigen Ausführungsformen kann aus diesen unveränderten Bits Nutzen gezogen werden. Es versteht sich, dass, obwohl sie hierin im Hinblick auf eine PCIeTM-Verwirklichung beschrieben sind, die Ausführungsformen auf andere Verbindungstechniken anwendbar sein können.
-
In einer Transaktionsschicht kann ein Speicher zum Speichern von Paketköpfen bereitgestellt sein (sowohl auf der Empfangs- als auch auf der Sendeseite). In einer Ausführungsform kann sowohl die Sender- als auch die Empfängerseite der Transaktionsschicht einen Speicher (z.B. 4 Doppelworte (W), wobei ein DW 4 Bytes oder 32 Bits entspricht) für die üblichsten Anforderungstypen aufweisen, die empfangen werden können. Empirische Daten zeigen, dass die meisten Anforderungen (z.B. > 90%) einer kleinen Anzahl solcher Typen entsprechen können (z.B. nicht verzögerte (non-posted, NP) Leseanforderungen, Speicherleseanforderungen (Memory Reads, MRds), verzögerte Speicherschreibanforderungen (Memory Writes, MWr) oder Beendigungen mit Daten (CPLD)). Jeder dieser Speicher kann mehrere Speicherstellen (zum Beispiel je 4 DW) umfassen, um eine Kopie aller Kopfbits des letzten empfangenen Pakets eines Anforderungstyps zu bewahren.
-
Außerdem kann eine Paketübereinstimmungslogik bereitgestellt werden. Für die Sender-Transaktionsschicht kann eine solche Logik in jedem Byte eines zu sendenden Paketkopfs einen Vergleich durchführen (die in dem Speicher gespeicherten Bytes können alle auf Nullen initialisiert sein) und einen Bitvektor bereitstellen, welcher Informationen über die Bytes umfasst, die mit den Bytes des vorigen Pakets (dieses Typs) übereinstimmen. Somit kann auf der Grundlage dieses Vergleichs ein Bitvektor bereitgestellt werden. Der Vektor (z.B. 16 Bit) verfolgt, welche Bytes eine erfolgreiche Übereinstimmung mit einem Byte an derselben Stelle des vorigen gesendeten Pakets desselben Typs fanden. Man beachte, dass ein Vergleich bei verschiedenen Granularitäten durchgeführt werden kann, z.B. auf mehr als einer Byte-Ebene. Zum Beispiel kann man 8 Paare von Zwei-Byte(2B)-Kopfabschnitten vergleichen und stattdessen einen 8-Bit-Vektor senden, was einen besseren Vergleich bietet, jedoch auf Kosten einer niedrigeren Wahrscheinlichkeit des Findens einer Übereinstimmung.
-
Während der Paketübertragung wird dieser Bitvektor dann (z.B. als Präfix) an das Paket angehängt. In einer anderen Variante kann ein Bit in einem Bitübertragungsschichtfeld des Pakets anzeigen, ob der Paketkopf diesen Vergleichsvektor aufweist. Dies kann nützlich sein, um die Zusatzkapazität für den Vergleichsvektor für die Fälle zu minimieren, wo nur eine geringe Komprimierung erreicht wird, wie weiter unten noch beschrieben wird. Zum Beispiel ist die letztgenannte Variante geeignet, um die Zusatzkapazität in den Fällen zu minimieren, wo zwischen zwei aufeinander folgenden Anforderungen desselben Typs nur eine geringe Übereinstimmung zu sehen ist.
-
In 1 ist ein Blockdiagramm eines Pakets gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Obwohl hierin im Kontext eines PCIeTM-Gen-3-Pakets beschrieben, versteht es sich, dass die Ausführungsformen auf jedes Kommunikationsschema auf Paketbasis anwendbar sind. Wie in 1 zu sehen, umfasst das Paket 10 verschiedene Abschnitte, welche Kopf- und Datenabschnitte umfassen. Die Abschnitte 20 und 70 können Köpfen der Sicherungsschicht und der Bitübertragungsschicht entsprechen und können verschiedene Informationen umfassen, wie z.B. einen vorgegebenen Code, einen Längenwert, einen Prüfsummenwert und einen Sequenzwert, welche alle in einem ersten Abschnitt 20 enthalten sein können. Außerdem kann im Endabschnitt 70 ein Abschnitt für eine Zyklische-Redundanz-Prüfsumme (Cyclic Redundancy Checksum, CRC) vorliegen. Zwischen diesen beiden Kopfabschnitten kann ein Vergleichsvektor 30, wie hierin beschrieben (und bei welchem es sich in verschiedenen Ausführungsformen um einen Zwei-Byte-Abschnitt handeln kann), die Basis für die Komprimierung eines Paketkopfs liefern. Ein Typabschnitt 40 kann einen Pakettyp anzeigen und kann von einem Empfänger verwendet werden, um einen geeigneten Speicherpuffer zu bestimmen, von welchem ein gespeicherter Paketkopf zu erhalten ist. Hieran anschließend kann ein komprimierter Kopfabschnitt 50 bereitgestellt sein. In Abhängigkeit vom Maß der Übereinstimmung zwischen einem eingehenden Paketkopf und einem entsprechenden gespeicherten Paketkopf kann dieser Kopf in einer PCIeTM-Anwendung 0 bis 16 Bytes aufweisen. Hinter diesem Kopfabschnitt kann ein Nutzdatenabschnitt 60 bereitgestellt sein. Wie hierin beschrieben, kann dieser Nutzdatenabschnitt über eine andere Komprimierungstechnik komprimiert werden. Obwohl sie in der Ausführungsform der 1 in dieser speziellen Realisierung dargestellt ist, ist der Umfang der vorliegenden Erfindung nicht auf diese Weise beschränkt.
-
Die Kopf-Bytes, welche den Stellen im Vergleichsvektor entsprechen, die einen logischen Wert „1“ zeigen, werden nicht vom Sender zum Empfänger gesendet, wodurch die Größe des zu sendenden Kopfes verringert wird. Stattdessen wird angenommen, dass die Logik auf Empfängerseite eine Kopie der vorigen Anforderung desselben Typs bewahrt und die fehlenden Bytes unter Verwendung des Vergleichsvektors aus der gespeicherten Kopie ergänzt. Somit empfängt die Transaktionsschicht auf Empfängerseite für die Paketwiederherstellung den komprimierten Paketkopf und ergänzt den Paketkopf durch Untersuchen des Vergleichsvektors und Auslesen der „fehlenden/ungesendeten“ Bytes aus der in ihrem Speicher gespeicherten Kopie des zuletzt gesendeten Paketkopfes.
-
Unter Anwendung von Ausführungsformen der vorliegenden Erfindung können variierende Maße der Komprimierung des Kopfabschnitts von Paketen realisiert werden. In 2 sind beispielhafte Paketköpfe vor und nach der Komprimierung gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 2 dargestellt, kann der Paketkopf 100, wobei es sich um einen Speicherlese(MemRd)-Pakettyp handeln kann, einen TLP-Kopfabschnitt 104 aufweisen, der drei Doppelworte (also 12 Bytes) aufweist. Außerdem ist ein Kopf 102 der Sicherungs- und der Bitübertragungsschicht vorhanden, zusammen mit einem nachfolgenden Kopfabschnitt 106 der Sicherungs- und der Bitübertragungsschicht. Wie zu sehen ist, umfasst der Paketkopf 100 nach der Komprimierung des Kopfes einen Bitvektor 103, welcher die Übereinstimmung zwischen dem Kopfabschnitt des Pakets und einem gespeicherten Kopf für das letzte gesendete Paket desselben Typs (also das letzte MemRd-Paket) identifiziert. Hiernach folgt ein Kopfabschnitt 104, welcher die nicht übereinstimmenden Abschnitte dieser beiden Köpfe umfasst. Wie zu sehen ist, wird eine Reduzierung um vier Bytes realisiert.
-
In ähnlicher Weise können für andere Pakettypen Komprimierungseinsparungen realisiert werden. Wie in 2 zu sehen ist, umfasst ein Speicherschreib-Paketkopf (MemWr) einen TLP-Kopfabschnitt 124, der eine Breite von vier Doppelworten (also 16 Bytes) aufweist. Außerdem sind Köpfe 122 und 126 der Sicherungs- und der Bitübertragungsschicht und ein Datenabschnitt 128 vorhanden. Wie in dem komprimierten Kopfabschnitt 120 zu sehen ist, ist ein Bitvektor 123 vorhanden, welcher ermöglicht, dass ein reduzierter Kopfabschnitt 124 gesendet wird. In dem dargestellten Beispiel wird statt des 16-Byte-Kopfabschnitts des Pakets 120 ein Fünf-Byte-Kopfabschnitt gesendet, wodurch Bandbreiteeinsparungen ermöglicht werden. Ebenfalls zu sehen ist ein Füll-Byte 127 am Ende des Pakets. Obwohl sie in diesen speziellen Beispielen dargestellt ist, ist der Umfang der vorliegenden Erfindung nicht auf diese Weise beschränkt.
-
Die Ausführungsformen können in vielen verschiedenen Verbindungstypen realisiert werden. In 3 ist ein Blockdiagramm eines Teils einer Halbleitereinheit gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt, z.B. eines Prozessors, eines Chipsatzes, einer Peripherieeinheit o.Ä., wobei die Einheit über eine Verbindung wie z.B. eine PCIeTM-Verbindung kommuniziert. Wie in 3 dargestellt, können Transaktionen für eine Übertragung über eine Verbindung 275 (z.B. eine PtP-Verbindung) von der Logik der Einheit in einem Paketpufferspeicher 205 empfangen werden, bei welchem es sich in einigen Anwendungen um einen First-In-First-Out(FIFO)-Pufferspeicher handeln kann. Obwohl zur Vereinfachung der Darstellung als Einzelpufferspeicher dargestellt, versteht es sich, dass in verschiedenen Ausführungsformen mehrere solcher Pufferspeicher für verschiedene Kopftypen und verschiedenen Datentypen vorhanden sein können. Eingehende Transaktionen können einer Transaktionsschicht 210 und speziell einer Eingabelogik 212 bereitgestellt werden, welche verschiedene Funktionen durchführen kann, z.B. die Entscheidung zwischen mehreren solchen Transaktionen und die Erzeugung eines Pakets vor der Übertragung. Die Eingabelogik 212 kann einer oder mehreren Komprimierungsmaschinen, z.B. einer Kopfkomprimierlogik 214 und einer Datenkomprimierlogik 216, verschiedene Informationen bereitstellen. Dies liegt daran, dass aufgrund der verschiedenen Informationstypen, die in Kopf- und Datenabschnitten eines Pakets vorliegen, verschiedene Komprimierungs-techniken angewendet werden können. Wenn eine geeignete Komprimierungsmethodik angewendet worden ist (falls aktiviert), können die komprimierten Informationen einer Paketerzeugungslogik 218 bereitgestellt werden, welche daraus ein Paket erzeugen kann. Anschließend können die Pakete an die Sicherungs- und Bitübertragungsschicht 250 ausgegeben werden, welche eine Eingabelogik 252 und eine Komprimierlogik 254 umfassen können, bei welcher es sich in verschiedenen Ausführungsformen um eine optionale Maschine handeln kann, die eine Komprimierung an Sicherungs- und Bitübertragungsschicht-Kopfabschnitten eines Pakets durchführt. Schließlich kann das Paket entlang der Verbindung 275 übertragen werden, nachdem es in einem analogen Vorrechner (Analog Front End, AFE) 256 (welcher in einer Ausführungsform mit der Bitübertragungsschicht verbunden sein kann) konditioniert worden ist. Während die Maschine zu Zwecken der Veranschaulichung vereinfacht dargestellt ist, versteht es sich, dass in einer speziellen Anwendung zusätzliche Logiken und Strukturen vorhanden sein können. Ein ähnliches Schaltungssystem liegt in Empfangsrichtung von der Verbindung 275 vor, derart, dass eingehende Pakete in der Sicherungs- und Bitübertragungsschicht 250 verarbeitet und der Transaktionsschicht 210 zur weiteren Verarbeitung bereitgestellt werden, umfassend das Entpaketieren in der Entpaketierlogik 224 und die Dekomprimierung der Kopf- und Datenabschnitte unter Anwendung der Dekomprimierlogiken 226 und 228, welche so arbeiten, dass die Kopf- und Datenabschnitte dekomprimiert werden, wie oben beschrieben.
-
In 4 sind weitere Einzelheiten Paketkopf-Komprimierungsmaschine gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 4 dargestellt, kann eine Transaktionsschicht 300 verschiedene Komponenten umfassen, z.B. eine Komprimierungsmaschine 340. Eingehende Paketköpfe können in verschiedenen FIFOs gespeichert werden, welche jeweils zu den üblichsten zu übertragenden Pakettypen gehören. Namentlich können ein nicht verzögerter Kopfpufferspeicher 305, ein verzögerter Kopfpufferspeicher 310 und ein Beendigungs(CPL)-Kopfpufferspeicher 315 einen Paketkopf ausgeben, der einer Zuteileinheit 320 bereitgestellt wird, welche unter solchen verschiedenen Pakettypen entscheidet und ein Paket, auf das die Entscheidung gefallen ist, einer Paketkopf-Komprimierlogik 350 bereitstellt, wo der Paketkopf einer Vergleichs- und Komprimierlogik 355 bereitgestellt wird, bei welcher es sich um eine Byte-für-Byte-Vergleichseinheit handeln kann, um den eingehenden Paketkopf mit einem entsprechenden gespeicherten Paketkopf desselben Typs zu vergleichen. Insbesondere kann ein Paketkopfpufferspeicher 360 mehrere Speicherstellen umfassen, wobei in jeder der letzte Paketkopf eines gegebenen Pakettyps gespeichert wird. Wie in 4 zu sehen ist, können solche Speicherstellen die letzten Speicherlese- und Speicherschreib-Paketköpfe, die letzten Beendigungs-Paketköpfe, die letzten Konfigurationslese- und Konfigurationsschreib-Paketköpfe und die letzten E/A-Lese- und E/A-Schreib-Paketköpfe umfassen. Man beachte, dass der Paketkopfpufferspeicher 360 ständig mit dem Paketkopf aktualisiert wird, der gerade empfangen wurde (d.h., der gespeicherte Paketkopf wird ersetzt). Obwohl die Erfindung in der Ausführungsform der 4 mit diesen speziellen Beispielen dargestellt wurde, können in anderen Ausführungsformen zusätzliche oder andere Paketköpfe gespeichert werden.
-
Die Vergleichs- und Komprimierlogik 355 kann einen Vergleichsvektor erzeugen, welcher zwei Byte umfassen kann, um bis zu 16 Bytes an Paketkopfinformationen abzudecken, in welchen jedes Bit einem Byte des Vergleichs entspricht, wobei ein logischer Wert Eins eine Übereinstimmung anzeigt und ein logischer Wert Null eine Nichtübereinstimmung anzeigt. Auf der Basis dieses Vergleichsvektors und der Paketkopfinformationen kann eine Paketbildungslogik 350 aus diesen Informationen und Daten (falls vorhanden) ein Paket bilden. So werden nur jene Abschnitte des Paketkopfs gesendet, die sich unterscheiden (die also einem logischen Wert Null entsprechen). Außerdem kann die Komprimierungsmaschinenlogik 340 ferner einen Typindikator ausgeben, um einen Pakettyp anzuzeigen, der dem Paketkopf entspricht.
-
Ferner kann in einigen Fällen eine Steuereinheit (z.B. Steuerlogik 370) das Maß der Komprimierung begrenzen, um Paketanpassungsanforderungen zu erfüllen, z.B. weisen für PCIeTM alle Pakete ein Vielfaches von vier Bytes auf. In einer Ausführungsform, welche erfordert, dass Kopfpaket 4 DW umfasst, können bestimmte Bytes ausgewählt werden, die nicht komprimiert werden. Unter der Annahme, dass 13 Bytes eine Übereinstimmung aufwiesen (Byte 0 wird niemals komprimiert), dann wiese das resultierende Kopfpaket 1 B Pakettyp plus 2 B Kopf plus 2 B auf, welche keine Übereinstimmung fanden, was insgesamt 5 B ergibt. Stattdessen können drei Bytes mehr (drei beliebige) unkomprimiert gesendet werden, so dass das resultierende Paket 8 B (oder zwei DW) aufweist. Man beachte, dass in verschiedenen Anwendungen, entweder als Teil der Komprimierungsmaschine 340 über die Steuerlogik 370 oder getrennt davon, eine Steuerungseinheit bestimmen kann, ob eine Komprimierung aktiviert oder gesperrt sein sollte. Das heißt, wenn basierend auf einer Anzahl von Vergleichen bestimmt wird, dass eine Komprimierung die Leistungsfähigkeit nicht verbessert (aufgrund von relativ geringer Übereinstimmung zwischen den Paketen), kann die Komprimierung durch die Komprimierungsmaschine 340 gesperrt werden. Dies kann auf einer ständigen Überwachung der Anwendung und des Kompressionsverhältnisses der übertragenen Daten basieren.
-
Man beachte, dass einer Datenkomprimierlogik 335 über eine separate Datenstrecke Daten von den Datenpufferspeichern 330 und 325 bereitgestellt werden können, wobei, falls aktiviert, auf die Daten eine andere Komprimierungstechnik angewendet werden kann. Die (möglicherweise) komprimierten Daten werden dann an die Paketbildungslogik 350 gesendet, wo ein vollständiges Paket gesendet und z.B. an eine Sicherungsschicht ausgegeben wird. Obwohl die Erfindung in der Ausführungsform der 4 mit dieser speziellen Anwendung dargestellt wurde, können in anderen Ausführungsformen ein anderes Schaltungssystem und eine andere Logik angewendet werden, um eine Komprimierung durchzuführen.
-
In 5 ist ein Ablaufdiagramm zur Durchführung einer Paketkopfkomprimierung gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 5 dargestellt, kann das Verfahren 400 in einer Transaktionsschicht eines Senders durchgeführt werden. Das Verfahren 400 kann mit dem Empfang eines ersten Pakettyps beginnen (Block 410). Es kann dann bestimmt werden, ob die Paketkomprimierung aktiviert ist. Wenn nicht, kann der Paketkopf gesendet werden (Block 415), und das Verfahren ist abgeschlossen.
-
Anderenfalls leitet die Steuerung zum Block 430 weiter, wo der Paketkopf mit einem gespeicherten Paketkopf desselben Pakettyps verglichen wird. Wie oben beschrieben, kann dieser gespeicherte Paketkopf in einem Paketkopfpufferspeicher der Transaktionsschicht vorliegen. Anschließend kann auf der Grundlage des Vergleichs ein Vergleichsvektor erzeugt werden. Wie oben in einer Anwendung beschrieben, kann ein Bitvektor erzeugt werden, in welchem jedes Bit einen ersten Wert aufweist, um eine Übereinstimmung zwischen entsprechenden Bytes der beiden Paketköpfe anzuzeigen, und einen zweiten Wert aufweist, um eine Nichtübereinstimmung anzuzeigen. Als Nächstes kann bestimmt werden, ob der Vergleichsvektor eine vollständige Übereinstimmung anzeigt (Block 450). Wenn ja, kann der Vergleichsvektor allein gesendet werden, ohne irgendetwas aus dem Paketkopf (Block 460). Anderenfalls leitet die Steuerung zur Raute 470 weiter, wo bestimmt wird, ob zumindest eine Teilübereinstimmung vorliegt. Wenn ja, können der Vergleichsvektor und die nicht übereinstimmenden Abschnitte des Paketkopfs gesendet werden (Block 480). Wenn jedoch keiner der Abschnitte der Paketköpfe übereinstimmt, leitet die Steuerung stattdessen zum Block 490 weiter, wo der Vergleichsvektor und der vollständige Paketkopf gesendet werden. Obwohl sie in der Ausführungsform der 5 mit dieser speziellen Anwendung dargestellt ist, ist der Umfang der vorliegenden Erfindung nicht auf diese Weise beschränkt. Es versteht sich, dass die Dekomprimierung allgemein in umgekehrter Weise erfolgen kann, derart, dass der Vergleichsvektor verwendet wird, um einen gespeicherten Paketkopf eines gegebenen Typs zu erhalten, und für alle übereinstimmenden Abschnitte, für welche der Paketkopf nicht gesendet wurde, kann der gespeicherte Paketkopfpufferspeicher verwendet werden, um so den gewünschten Kopfabschnitt wiederherzustellen. Man beachte, dass sowohl im Sende- als auch im Empfangsfall das eingehende Paket für zukünftige Vergleiche im Paketkopfpufferspeicher gespeichert wird.
-
Bei den Daten ist die Veränderlichkeit viel größer als bei den Paketköpfen. Für diese scheinbar zufälligen Daten können höher entwickelte Komprimierungstechniken angewendet werden. Bei Komprimierungstechniken auf lexikalischer Basis wird die Häufigkeit von Symbolen (typischerweise Bytes) benutzt, um eine effektivere Codierung von Informationen (in diesem Fall Datenbits) zu erzielen. Eine solche Komprimierungstechnik ist der Huffinan-Algorithmus, welcher für verlustfreien Datenaustausch benutzt wird. Beim Huffman-Algorithmus wird angenommen, dass die Häufigkeit von Symbolen in einem Datensatz vorausberechnet worden ist. Bei einer Variante dieses Algorithmus, als adaptiver Huffman-Algorithmus bezeichnet, wird die Häufigkeitstabelle der übertragenen und gesendeten Symbole sowohl auf Sender- als auch auf Empfängerseite kontinuierlich aufgebaut.
-
Die Häufigkeitstabelle für die Pakete, die übertragen worden sind, wird mit der Häufigkeit jedes Symbols aktualisiert, das übertragen worden ist (ein Symbol kann zum Beispiel ein Byte sein). Es kann eine Matrix gespeichert werden, welche für jedes Symbol auf der Grundlage der Häufigkeit einen Code variabler Länge definiert (kürzere Codes für häufiger verwendete Symbole) und nach jeder Paketübertragung neu aufgebaut wird. Komprimierlogik auf der Basis des Huffman-Algorithmus kann in Hardware realisiert werden. Solche Realisierungen können den Aufbau der Codiermatrix auf der Basis der Symbolhäufigkeit umfassen, wie sie sich in der Häufigkeitstabelle widerspiegelt.
-
In verschiedenen Ausführungsformen kann zum Komprimieren des Datenabschnitts von Paketen eine Variante eines adaptiven Huffman-Algorithmus angewendet werden. Das heißt, der Huffman-Baum kann seltener erstellt werden (einmal alle „N“ Pakete, wobei N ein programmierbarer Wert ist, der durch Software eingestellt wird). Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann N in einigen Ausführungsformen 100 bis 1.000 betragen. Hierdurch ist es möglich, eine Pipeline hoher Latenz zu erstellen, um den Huffman-Baum zu berechnen.
-
Alternative Komprimierungstechniken können ebenso angewendet werden. In einer Ausführungsform könnten nur die 16 häufigsten Symbole codiert werden. Zum Beispiel werden 00, 01, 03, 04, ... 0F mit nur 5 Bits codiert, d.h. 0 gefolgt von der tatsächlichen Binärdarstellung. Die restlichen 240 Symbole können mit 9 Bits codiert sein, „1“ gefolgt von einer 8-Bit-Darstellung. Es sind noch weitere Realisierungen möglich.
-
Wie oben beschrieben, können für den Datenabschnitt andere Komprimierungstechniken angewendet werden als die obige Komprimierungstechnik auf Bitvektorbasis für den Paketkopf. In 6 ist ein Ablaufdiagramm eines Komprimierverfahrens für Datenabschnitte eines Pakets gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 6 dargestellt, kann das Verfahren 500 nach dem Empfang eines Datenabschnitts eines Pakets beginnen (Block 510). Basierend auf den Symbolen in dem Paket (z.B. Bytes) kann eine Häufigkeitstabelle einer Komprimierungsmaschine (z.B. der Datenkomprimierlogik der 3) aktualisiert werden (Block 520). In einigen Ausführungsformen könnten bei der Kopfkomprimierung und der Datenkomprimierung und der Sicherheitsschicht-Paketkomprimierung (z.B. Bestätigungs- und Quittierungspakete in PCIeTM) ähnliche Komprimierungstechniken auf lexikalischer Basis angewendet werden. In einer solchen Ausführungsform gibt es für jeden Pakettyp eine eigene Häufigkeitstabelle.
-
Anschließend kann bestimmt werden, ob die Anzahl der empfangenen Datenabschnitte seit einer letzten Aktualisierung einer Struktur der Komprimierungsmaschine erreicht ist (Raute 530). Wenn nicht, kann der Datenabschnitt unter Anwendung der Symbolcodierung auf Logikkomprimierungsbasis codiert werden, und der Datenabschnitt wird gesendet (Block 540).
-
Wenn an der Raute 530 stattdessen bestimmt wird, dass die Anzahl der Datenabschnitte den Schwellenwert erreicht, leitet die Steuereinheit zum Block 550 weiter, wo eine Codierung der Komprimierungsmaschine basierend auf der Symbolhäufigkeit in der Häufigkeitstabelle aktualisiert werden kann. Die Steuereinheit leitet dann zum oben beschriebenen Block 540 weiter, wo der Datenabschnitt unter Anwendung der aktualisierten Codierung komprimiert und entsprechend gesendet werden kann.
-
Somit stellen die Ausführungsformen eine „träge Aktualisierung“ einer Häufigkeitstabelle bereit, welche nur einen geringen Einfluss auf die Effizienz der Komprimierung hat. In einer beispielhaften Ausführungsform unter Anwendung von PCIeTM-Datenverkehr liegt als Ergebnis der Anwendung einer trägen Aktualisierungstechnik, wie sie hierin beschrieben ist, im Wesentlichen kein Verlust der Komprimierungseffizienz vor. In einer Ausführungsform ist es möglich, eine gute Bandbreitenreduktion zu erreichen, wenn man die Matrix einmal alle 100 Pakete o.ä. erstellt.
-
Obwohl sich die oben beschriebenen Ausführungsformen auf Huffman- und modifizierte adaptive Huffman-Algorithmen beziehen, kann in anderen Anwendungen ein anderer Algorithmus auf lexikalischer Basis und Häufigkeitsbasis verwendet werden. Somit ermöglicht in verschiedenen Ausführungsformen die apriorische Kenntnis der Struktur und der relativen Wiederholung der Paketköpfe die Anwendung einer hohen Komprimierung über Bitvektoren für den Paketkopf, und stattdessen können für Datenabschnitte der Pakete Algorithmen auf lexikalischer Basis und Häufigkeitsbasis angewendet werden. Der Auswahlalgorithmus für die Datenkomprimierung kann von dem jeweiligen Fall der Realisierung abhängen.
-
Für Prüfsummenabschnitte eines Pakets liegt aufgrund der nahezu zufälligen Natur der CRC-Bits möglicherweise kein Nutzen in der Komprimierung solcher Abschnitte. In der Tat kann die Leistungsfähigkeit eines adaptiven Huffman-Algorithmus leiden, da sie die Symbolverteilung für die Nutzdaten verzerrt, und eine komprimierte CRC kann nicht über eine fehleranfällige Verbindung gesendet werden. Dementsprechend sollte in verschiedenen Ausführungsformen die Häufigkeitsverteilung der Bits in der Prüfsumme nicht mit der Häufigkeitsverteilung von Nutzdaten vereinigt werden. In einigen Anwendungen kann gewählt werden, Prüfsummeninformationen nicht zu komprimieren, da ihre Zusatzkapazität gering ist, oder es kann eine separate Komprimierungsmaschine für diese Informationen bereitgestellt werden. In ähnlicher Weise können Bestätigungspakete eine separate Komprimierungsmaschine und Frequenztabelle aufweisen. In einigen Ausführungsformen können Bestätigungen auf der Basis der Bitvektortechnik komprimiert werden, die in Bezug auf die Paketkopfkomprimierung beschrieben ist.
-
Durch Kombinieren separater Schemen für Paketkopf- und Datenabschnitte von Paketen kann ein hoher Komprimierungsgrad erreicht werden. Dieses Schema reduziert die Bandbreite und bietet somit eine Möglichkeit, bei einer gegebenen Frequenz Bandbreite zu erhalten oder die schrittweise Veränderung der Frequenz von einer Verbindungserzeugung zur nächsten zu reduzieren. Bei einigen Realisierungen kann die Reduktion der TLP-Bandbreite in der Größenordnung von 50 % bis 60 % liegen. Einzelne Anwendungen können eine Reduktion der Bandbreite von bis zu 2X aufweisen, wenn für Client-Anwendungen der Paketkopfverkehr dominiert. Eine variable Codierung von Datenabschnitten sorgt jedoch ebenso für eine deutliche Verbesserung, welche in Server-Anwendungen möglicherweise deutlicher zum Vorschein tritt. In einigen Ausführungsformen kann auch die dynamische Leistung verringert werden, da weniger Daten durch die Verbindungskanäle gesendet werden. Somit können, während die Industriestandards bei Gen-2- oder Gen-3-Geschwindigkeiten (5,0 GT/s oder 8,0 GT/s) verbleiben, Plattformen, welche eine Ausführungsform der vorliegenden Erfindung nutzen, mit wenig zusätzlicher Logik eine höhere Bandbreite bereitstellen.
-
Die Ausführungsformen können in vielen verschiedenen Systemtypen realisiert werden. In 7 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 7 dargestellt, handelt es sich bei dem Mehrprozessorsystem 600 um ein Punkt-zu-Punkt-Verbindungssystem, und es umfasst einen ersten Prozessor 670 und einen zweiten Prozessor 680, die über eine Punkt-zu-Punkt-Verbindung 660 verbunden sind. Wie in 7 dargestellt, kann es sich bei jedem der Prozessoren 670 und 680 um einen Mehrkernprozessor handeln, der erste und zweite Prozessorkerne aufweist (also die Prozessorkerne 674a und 674b und die Prozessorkerne 684a und 684b).
-
Weiter unter Bezugnahme auf 7 umfasst der erste Prozessor 670 ferner einen Speichersteuerungsknoten (Memory Controller Hub, MCH) 672 und Punkt-zu-Punkt(P-P)-Schnittstellen 676 und 678. In ähnlicher Weise umfasst der zweite Prozessor 680 einen MCH 682 und P-P-Schnittstellen 686 und 688. Wie in 7 dargestellt, verbinden die MCHs 672 und 682 die Prozessoren mit entsprechenden Speichern, namentlich einem Speicher 632 und einem Speicher 634, bei welchen es sich um Teile eines Hauptspeichers (z.B. eines dynamischen Direktzugriffsspeichers (DRAM)) handeln kann, der lokal an die entsprechenden Prozessoren angeschlossen ist. Der erste Prozessor 670 und der zweite Prozessor 680 können über P-P-Verbindungen 662 bzw. 664 mit einem Chipsatz 690 verbunden sein. Wie in 7 dargestellt, umfasst der Chipsatz 690 P-P-Schnittstellen 694 und 698. Man beachte, dass eine oder mehrere der Komponenten Komprimierungsschaltungen gemäß einer Ausführungsform der vorliegenden Erfindung umfassen können, um Paketkopf- und Nutzdatenkomprimierungen durchzuführen, wie sie hierin beschrieben sind.
-
Ferner umfasst der Chipsatz 690 eine Schnittstelle 692, um den Chipsatz 690 mit einer Hochleistungs-Graphikmaschine 638 zu verbinden. Außerdem kann der Chipsatz 690 über eine Schnittstelle 696 mit einem ersten Bus 616 verbunden sein. Wie in 7 dargestellt, können verschiedene E/A-Einheiten 614 mit einem ersten Bus 616 verbunden sein, zusammen mit einer Busbrücke 618, welche den ersten Bus 616 mit einem zweiten Bus 620 verbindet. Mit dem zweiten Bus 620 können verschiedene Einheiten verbunden sein, zum Beispiel eine Tastatur/Maus 622, Kommunikationseinheiten 626 und eine Datenspeichereinheit 628, z.B. ein Plattenlaufwerk oder andere Massenspeichereinheiten, welche in einer Ausführungsform Code 630 umfassen können. Ferner kann mit dem zweiten Bus 620 eine Audio-E/A-Einheit 624 verbunden sein.
-
Die Ausführungsformen können in Code realisiert sein und können auf einem Speichermedium gespeichert sein, auf welchem Befehle gespeichert sind, die verwendet werden können, um ein System zur Ausführung der Befehle zu programmieren. Bei dem Speichermedium kann es sich, ohne darauf beschränkt zu sein, um irgendeine Art von Platte handeln, z.B. Disketten, Bildplatten, Halbleiterplatten (SSDs), CD-ROMs, CD-RWs und magneto-optische Platten, Halbleitereinheiten, z.B. Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs) wie z.B. dynamische Direktzugriffsspeicher (DRAMs) oder statische Direktzugriffsspeicher (SRAMs), löschbare programmierbare Nur-Lese-Speicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs), Magnetkarten oder optische Karten oder irgendeine andere Art eines Mediums, das zur Speicherung elektronischer Befehle geeignet ist.
-
Obwohl die Erfindung in Bezug auf eine begrenzte Anzahl an Ausführungsformen beschrieben worden ist, erkennt der Fachmann zahlreiche Modifikationen und Variationen derselben. Die folgenden Patentansprüche sollen all solche Modifikationen und Variationen abdecken, die unter die Idee und den Umfang der vorliegenden Erfindung fallen.