-
Technisches Gebiet
-
Diese
Erfindung betrifft das Gebiet der Verbindung elektrischer Systeme,
etwa von Computersystemen.
-
Hintergrund
-
Elektronische
Komponenten in Systemen (etwa integrierte Schaltungen und andere
elektrische Bauelemente) treten miteinander in Verbindung über definierte
Schnittstellen, etwa Verbindungen zwischen den einzelnen Komponenten.
Die Daten werden über
die Verbindungen üblicherweise
in Bezug auf ein Signal übertragen.
D. h., es werden Daten in Reaktion auf ein Taktsignal auf die Verbindung
gelegt und abgegriffen. In der jüngeren
Vergangenheit wurden Verbindungen mit doppelter Datenrate definiert, in
denen Daten gemäß der ansteigenden
Flanke und der abfallenden Flanke des Taktsignals auf die Leitung
gelegt/und davon abgegriffen werden.
-
Die
Frequenz des mit einer Verbindung verknüpften Taktsignals zusammen
mit einer Breite (in Bits der übertragenen
Daten) definiert die Bandbreite der Verbindung (die Datenmenge,
die pro Einheitszeit übertragen
wird). Eine Möglichkeit
zur Vergrößerung der
Bandbreite (und auch zur Verringerung der Verarbeitungszeit für größere Übertragungen)
besteht darin, die Taktfrequenz zu erhöhen. Mit einer Vergrößerung der
Frequenz steigt aber auch die Fehlerrate an, da Faktoren, etwa das
Rauschen, die Taktunsicherheit, die Verzögerung, die Anstiegs- und Abfallzeiten,
etc. ebenfalls zu wichtigen Faktoren in dem kürzeren Taktsignalzyklus werden.
Anders ausgedrückt,
die Daten sind auf der Verbindung für eine kürzere Zeitdauer vorhanden,
und der Toleranzbereich für
die Fehler wird daher geringer. Gleichzeitig steigt die Fehlerrate
auf ein Niveau an, das die Zuverlässigkeit beeinflusst.
-
Um
die erhöhte
Fehlerrate zu vermeiden, kann eine Fehlererkennung (und möglicherweise Korrektur)
auf der Verbindung eingerichtet werden. Beispielsweise wird häufig eine
zyklische Redundanzprüfung
(CRC) auf Verbindungen eingerichtet. Bei einer CRC ist jede Datenübertragung
auf der Verbindung von einer CRC-Codierung begleitet, die aus den
Daten erzeugt wird. Der Empfänger
kann die gleiche CRC-Codierung erzeugen und kann die er zeugte CRC-Codierung
mit der empfangenen Codierung zur Erkennung eines Fehlers vergleichen.
Der Empfänger
kann den Fehler an den Sender übertragen,
der die Daten erneut übertragen
kann oder andere Korrekturaktionen ergreifen kann.
-
Für relativ
große
Datenübertragungen
beeinflusst das Hinzufügen
der CRC-Codierung am Ende der Übertragung
die Bandbreite nicht wesentlich (da die hinzugefügte Codierung klein ist im
Vergleich zu den übertragenen
Daten). Jedoch beeinflusst die CRC-Codierung die Verarbeitungszeit,
da der Empfänger
im Allgemeinen die gesamten Daten speichern muss, die durch die
CRC abgedeckt sind, bis die CRC empfangen wird. Wenn die CRC angibt, dass
die Daten korrekt sind, können
die Daten weitergeleitet werden. In vielen Fällen sind die ersten Daten bei
der Übertragung
die kritischsten Daten (beispielsweise in Speichersystemen, in denen
die Daten, die aktuell angefordert werden, zuerst übertragen
werden, woran sich der Rest des Speicherblocks für die Speicherung anschließt). In
derartigen Fällen
ist eine Erhöhung
der Verarbeitungszeit einer Reduzierung des Leistungsverhaltens
gleichbedeutend.
-
Ferner
sind in kohärenten
Systemen viele der Übertragungen
zwischen den einzelnen Komponenten relativ kurze Nachrichten (beispielsweise Sondierungsabfragen
für die
jüngsten
Kopien der Daten, Sondierungsantworten, Angaben für die erfolgte
Abarbeitung für
die Quelle und das Ziel, etc.). Der Einfluss der CRC auf diese kleinen
Nachrichten ist wesentlich, wodurch die Größe der Nachrichten um bis zu
100% (für
eine Nachricht, die die gleiche Größe wie die CRC-Codierung besitzt)
erhöht
wird. Eine Zunahme der Größe von 50%
oder 33% sind ebenfalls üblich.
In kohärenten
Systemen erfolgt eine große
Zahl der Übertragungen über diese
Verbindungen als derartige kleine Nachrichten, so dass die größere beanspruchte
Bandbreite durch das Hinzufügen von
CRC wesentlich ist.
-
Überblick über die Erfindung
-
In
einer Ausführungsform
ist ein Verarbeitungsknoten ausgebildet, sich an eine Verbindung anzukoppeln.
Der Knoten umfasst eine Sendeschaltung, die ausgebildet ist, Pakete über die
Verbindung zu übertragen,
wobei jedes Paket eine oder mehrere Zellen umfasst. Der Knoten umfasst
ferner eine Zellendisponiereinheit, die mit der Sendeschaltung verbunden
und ausgebildet ist, Zellen für
das Senden mittels der Sendeschaltung zu disponieren. Die Zellendisponiereinheit
ist ausgebildet, mindestens eine Fehlererkennungszelle für das Sen den
zu disponieren, wobei die Fehlererkennungszelle ein vorhergehendes
Paket betrifft, und wenn ein zweites Paket für das Disponieren verfügbar ist,
ist die Zellendisponiereinheit ausgebildet, Zellen des zweiten Pakets
anstelle der Fehlererkennungszelle zu disponieren. Wenn die Fehlerkennungszelle
nachfolgend disponiert bzw. für
das Übertragen
ausgewählt
wird, ist sie für
das vorhergehende Paket und das zweite Paket zuständig.
-
In
einer weiteren Ausführungsform
ist ein Knoten ausgebildet, um sich an eine Verbindung anzukoppeln
und umfasst eine Paketdisponiereinheit, die ausgebildet ist, Pakete,
die über
die Leitung zu senden sind, zu disponieren; ferner ist eine Schnittstellenschaltung
mit der Paketdisponiereinheit verbunden. Die Schnittstellenschaltung
ist ausgebildet, die Pakete auf der Leitung zu übertragen und Fehlererkennungsdaten,
die die Pakete abdecken, zu erzeugen. Die Fehlererkennungsdaten
werden zwischen Paketen auf der Leitung übertragen, und die Schnittstellenschaltung
ist ausgebildet, bis zu N Pakete mit einer einzelenen Übertragung
an Fehlererkennungsdaten abzudecken (wobei N eine Ganzzahl größer oder
gleich 2 ist). Die Anzahl der mit einer einzelnen Übertragung
an Fehlererkennungsdaten abgedeckten Paketen wird durch die Schnittstellenschaltung
in Abhängigkeit
von der Verfügbarkeit
von zu sendenden Paketen bestimmt.
-
In
einer weiteren Ausführungsform
ist ein Knoten ausgebildet, sich an eine Verbindung anzukoppeln
und umfasst eine Paketdisponiereinheit, die ausgebildet ist, auf
der Verbindung zu übertragende Pakete
zu disponieren. Mit der Paketdisponiereinheit verbunden und zum Übertragen
der Pakete auf der Leitung ausgebildet ist eine Schnittstellenschaltung, die
ferner ausgebildet ist, Fehlererkennungsdaten, die die Pakete abdecken,
zu erzeugen. Die Schnittstellenschaltung ist ausgebildet, den Betrag
einer Bandbreite, die auf der Leitung benötigt wird, zu überwachen
und eine Frequenz bzw. Häufigkeit
des Sendens von Fehlererkennungsdaten auf der Verbindung auf der
Grundlage der Größe der Bandbreite dynamisch
zu variieren.
-
Kurze Beschreibung der Zeichnungen
-
Die
folgende detaillierte Beschreibung nimmt Bezug auf die begleitenden
Zeichnungen, die nunmehr kurz beschrieben werden.
-
1 ist
eine Blockansicht einer Ausführungsform
eines Computersystems.
-
2 ist
eine Blockansicht einer Ausführungsform
zweier in 1 gezeigter Knoten, die detaillierter
dargestellt sind.
-
3 ist
eine Blockansicht zur Darstellung einer Ausführungsform von Steuerfeldern
für ein Steuerregister.
-
4 ist
ein Flussdiagramm, das die Funktionsweise einer Ausführungsform
einer Zellendisponiereinheit, die in 2 gezeigt
ist, darstellt, um eine Befehlszelle zu disponieren.
-
5 ist
ein Flussdiagramm, das die Funktionsweise einer Ausführungsform
einer in 2 gezeigten Zellendisponiereinheit
darstellt, um eine Datenzelle zu disponieren.
-
6 ist
ein Flussdiagramm, das die Funktionsweise einer Ausführungsform
einer in 2 gezeigten Zellendisponiereinheit
zeigt, um den CRC-Ablauf dynamisch zu variieren.
-
7 ist
ein Flussdiagramm, das die Funktionsweise einer Ausführungsform
eines Empfängers zeigt.
-
8 ist
eine Tabelle, die eine Ausführungsform
der Steuercodierungen auf der Verbindungsleitung darstellt.
-
9 ist
eine Blockansicht, die Beispiele der in 8 gezeigten
Codierungen darstellt.
-
10 ist
eine Tabelle, die eine weitere Ausführungsform von Steuercodierungen
auf der Verbindungsleitung zeigt.
-
Obwohl
die Erfindung diversen Modifizierungen und alternativen Formen unterliegen
kann, sind dennoch spezielle Ausführungsformen beispielhaft in den
Zeichnungen gezeigt und werden hierin detailliert beschrieben. Es
sollte jedoch beachtet werden, dass die Zeichnungen und die detaillierte
Beschreibung nicht beabsichtigen, die Erfindung auf die speziell
offenbarte Form einzuschränken,
sondern die Erfindung soll vielmehr alle Modifizierungen, Äquivalente
und Alternativen abdecken, die innerhalb des Grundgedankens und
des Schutzbereichs der vorliegenden Erfindung liegen, wie sie durch
die angefügten
Patentansprüche
definiert ist.
-
Art bzw. Arten zum Ausführen der
Erfindung
-
Die
nachfolgende Beschreibung betrifft ein Computersystem, in welchem
Fehlererkennungsdaten auf seinen Verbindungsleitungen eingerichtet sind.
Jedoch kann ein beliebiges elektronisches System, das Daten auf
Verbindungen zwischen Komponenten austauscht, für das Einrichten der hierin
beschriebenen Funktionen verwendet werden. Im Allgemeinen umfasst
eine Verbindung bzw. ein Verbindungskanal einen Kommunikationsweg
von einer Komponente zu einer anderen. Die Verbindung kann bidirektional
oder unidirektional in den diversen Ausführungsformen sein. Die Verbindung
besitzt eine bestimmte Breite und es sind ein oder mehrere Taktzyklen
mit der Verbindung verknüpft,
so dass Daten auf die Verbindung gemäß den Taktsignalen gelegt werden.
Ferner wird die CRC als ein Beispiel von Fehlererkennungsdaten verwendet.
Im Allgemeinen wird die CRC als eine Kombination der Datenbits,
die durch die CRC abgedeckt sind, gemäß einer vordefinierten Formel
erzeugt, die sowohl von dem Sender als auch dem Empfänger angewendet
wird. Es können
jedoch beliebige Fehlererkennungsdaten verwendet werden. Im Allgemeinen
umfassen die Fehlererkennungsdaten redundante Daten, die eine Erkennung
(und optional eine Korrektur) von Fehlern in den gesendeten Daten
ermöglichen.
Beispielsweise können
die Fehlererkennungsdaten auf der Grundlage der Parität erzeugt
werden, oder können ähnlich sein
zu diversen Fehlererkennungs-/Korrekturcodierungen (ECC), die in
Speichersystemen verwendet werden, etwa solche, die Einzelbitfehler
negieren und Doppelbitfehler erkennen. Es können auch ECC-Codierungen,
die größere Anzahlen
an Fehlern korrigieren und erkennen, verwendet werden. Fehlererkennungsdaten
können
basieren auf Hamming-Codierungen
oder Reed-Solomon-Codierungen, um ein Beispiel zu nennen, oder auf
anderen Codierungen, die zum Erkennen und/oder zum Korrigieren von
Fehlern definiert werden. Eine Instanz an Fehlererkennungsdaten
wird auch als eine „Abdeckung” eines
Datensatzes bezeichnet. Die Fehlererkennungsdaten decken die Daten
ab, wenn ein Fehler in den Daten unter Anwendung der Fehlererkennungsdaten
erkennbar ist (obwohl die Fehlererkennungsdaten Grenzen besitzen,
und somit ein eventuell ausreichend großer Fehler in den Daten nicht
erkannt werden kann, selbst wenn die Fehlererkennungsdaten die fehlerhaften
Daten abdecken).
-
In 1 ist
eine Ausführungsform
eines Computersystems 300 gezeigt. In der Ausführungsform
aus 1 umfasst das Computersystem 300 mehrere
Verarbeitungsknoten 312A, 312B, 312C und 312G.
Jeder Verarbeitungsknoten ist an einen jeweiligen Speicher 314A–314D über eine
Speichersteuerung 316A–316D gekoppelt,
die in dem jeweiligen Verarbeitungsknoten 312A–312D enthalten
ist. Des weiteren umfassen die Verarbeitungsknoten 312A–312D eine
Schnittstellenschaltung, um eine Kommunikation zwischen dem Verarbeitungsknoten 312A–312D zu
ermöglichen.
Beispielsweise enthält der
Verarbeitungsknoten 312A eine Schnittstellenschaltung 318A zur
Kommunikation mit dem Verarbeitungsknoten 312B, eine Schnittstellenschaltung 318B zur
Kommunikation mit dem Verarbeitungsknoten 312C und eine
Schnittstellenschaltung 318C zur Kommunikation mit einem
noch weiteren Verarbeitungsknoten (nicht gezeigt). In ähnlicher
Weise umfasst der Verarbeitungsknoten 312B Schnittstellenschaltungen 318D, 318E und 318F;
der Verarbeitungsknoten 312C umfasst Schnittstellenschaltungen 318B, 318H und 318I;
und der Verarbeitungsknoten 312D umfasst Schnittstellenschaltungen 318J, 318H und 318L.
Der Verarbeitungsknoten 312D ist so angeschlossen, dass
er mit mehreren Eingabe/Ausgabe-Einheiten (beispielsweise die Einheiten 320A–320B in
einer Prioritätskettenkonfiguration) über die
Schnittstellenschaltung 318L kommunizieren kann. Andere
Verarbeitungsknoten können
mit anderen I/O-Einheitenin in ähnlicher
Weise in Verbindung treten.
-
Die
Verarbeitungsknoten 312A–312D verwenden eine
paketbasierte Schnittstelle für
die Kommunikation zwischen den Verarbeitungsknoten. In der vorliegenden
Ausführungsform
ist die Schnittstelle als Gruppe aus unidirektionalen Leitungen
bzw. Verbindungen eingerichtet (beispielsweise Verbindungen 324A werden
verwendet, um Pakete von dem Verarbeitungsknoten 312A zu
dem Verarbeitungsknoten 312B zu übertragen, und Verbindungen 324B werden
verwendet, um Pakete von dem Verarbeitungsknoten 321B zu
dem Verarbeitungsknoten 312A zu übertragen). Andere Gruppen
aus Verbindungen 324C bis 324H werden verwendet,
um Pakete zwischen anderen Verarbeitungsknoten auszutauschen, wie
dies in 1 gezeigt ist. Im Allgemeinen kann
jede Gruppe aus Verbindungen 324 eine oder mehrere Datenleitungen,
eine oder mehrere Taktsignalleitungen entsprechend den Datenleitungen
und eine oder mehrere Steuerleitungen aufweisen, die die Art des
zu übertragenden
Pakets angeben. Die Verbindung kann in einer mit dem Cache-Speicher kohärenten Weise
zur Kommunikation zwischen Verarbeitungsknoten betrieben werden
und kann in einer nicht kohärenten
Weise zur Kommunikation zwischen einem Verarbeitungsknoten und einer
I/O-Einheit betrieben werden (oder zwischen einer Busbrücke und
einem I/O-Bus mit konventionellem Aufbau, etwa den peripheren Komponentenverbindung-(PCI)Bus
oder den Bus mit industrieller Standardarchitektur (ISA)). Ferner
kann die Verbindung in einer nicht-kohärenten Weise unter Anwendung
einer Prioritätskettenstruktur
zwischen I/O-Einheiten betrieben werden, wie dies gezeigt ist. Zu
beachten ist, dass ein von einem Verarbeitungsknoten zu einem weiteren
Verarbeitungsknoten zu übertragendes
Paket durch einen oder mehrere dazwischen liegende Knoten geleitet
werden kann. Beispielsweise kann ein Paket, das von dem Verarbeitungsknoten 312A zu
dem Verarbeitungsknoten 312B übertragen wird, durch den Verarbeitungsknoten 312B oder
den Verarbeitungsknoten 321C laufen, wie dies in 1 gezeigt
ist. Es kann ein beliebiger Signalführungsalgorithmus verwendet
werden. In anderen Ausführungsformen
des Computersystems 300 können mehr oder weniger Verarbeitungsknoten
als in der in 1 gezeigten Ausführungsform
enthalten sein.
-
Im
Allgemeinen werden die Pakete als eine oder mehrere Bitzeiten auf
den Verbindungen 324 zwischen den Knoten ausgetauscht.
Eine gegebene Bitzeit kann auf die ansteigende Flanke oder die abfallende
Flanke des Taktsignals auf den jeweiligen Taktsignalleitungen bezogen
werden. D. h., sowohl die ansteigende Flanke als auch die abfallende
Flanke können
für den
Datenaustausch verwendet werden, so dass die Datenrate das Doppelte
der Taktfrequenz ist (doppelte Datenrate oder DDR). Die Pakete können Anforderungspakete
zum Initiieren von Transaktionen, Sondierungspakete bzw. Abfragepakete
zur Beibehaltung der Cache-Kohärenz
und Antwortpakete zum Reagieren auf Abfragen oder Sondierungen und
Anforderungen (und zum Angeben des Abschlusses durch die Quelle/das
Ziel einer Transaktion) enthalten. Einige Pakete können eine Datenbewegung
angeben, und die bewegten Daten sind in den Datenbewegungspaketen
enthalten. Beispielsweise enthalten Schreibanforderungen Daten. Sondierungsantworten
mit „schmutzigen
oder dirty” Daten
und Leseantworten enthalten beide Daten. Somit kann im Allgemeinen
ein Paket einen Befehlsbereich, der das Paket definiert, dessen
Quelle und Bestimmung, etc. enthalten. Ein Paket kann optional einen
Datenbereich aufweisen, der sich an den Befehlsbereich anschließt. Die
Daten können
die Größe eines
Cache-Blockes besitzen, für
kohärente
Operationen, die zwischenspeicherbar sind, oder die Daten können kleiner
sein (beispielsweise für
Lese/Schreiboperationen, die nicht im Cache speicherbar sind).
-
Die
Verarbeitungsknoten 312A–312D enthalten zusätzlich zu
einer Speichersteuerung und zur Schnittstellenlogik einen oder mehrere
Prozessoren. Allgemein gesagt, kann ein Verar beitungsknoten zumindest
einen Prozessor und optional eine Speichersteuerung zur Kommunikation
mit einem Speicher und anderen Logikschaltungen nach Bedarf umfassen.
Ein oder mehrere Prozessoren können
eine integrierte Schaltung mit Chip-Multiprozessierung (CMP) oder
Chip-Multistrangverarbeitung bzw. „Threading” (CMT) in dem Verarbeitungsknoten
enthalten oder diese können
den Verarbeitungsknoten bilden, oder der Verarbeitungsknoten kann
eine beliebige gewünschte
innere Struktur besitzen. Es kann ein beliebiger Grad an Integration
oder es kann eine beliebige Anzahl diskreter Komponenten in einem Knoten
verwendet sein. Andere Arten von Knoten enthalten eine beliebige
gewünschte
Schaltung und die Schaltung für
die Kommunikation über
die Verbindungen. Beispielsweise sind in einer Ausführungsform
die I/O-Einheiten 320A–320B I/O-Knoten.
-
Die
Speicher 314A bis 314D umfassen beliebige geeignete
Speichereinheiten. Beispielsweise umfasst ein Speicher 314A bis 314D einen
oder mehrere RAMBUS DRAM's
(RDRAM's), synchrone DRAM's (SDRAM's), DDR SDRAM's, statische RAM's, etc. Der Adressenraum
des Computersystems 300 ist auf die Speicher 314A bis 314D aufgeteilt.
Jeder Verarbeitungsknoten 312A–312D enthält eine
Speicherzuordnung, die verwendet wird, um zu bestimmen, welche Adressen
welchen Speichern 314A–314D zugeordnet
sind, und somit welchem Verarbeitungsknoten 312A–312D eine
Speicheranforderung für
eine spezielle Adresse zuzuleiten ist. In einer Ausführungsform
ist der Kohärenzpunkt
für eine
Adresse innerhalb eines Computersystems 310 die Speichersteuerung 316A bis 316D,
die mit dem Speicher verbunden ist, der Bytes entsprechend der Adresse
enthält.
Anders ausgedrückt,
die Speichersteuerung 316A–316D ist dafür verantwortlich
sicherzustellen, dass jeder Speicherzugriff auf den jeweiligen Speicher 314A–314D in
einer mit dem Speicher kohärenten
Weise erfolgt. Die Speichersteuerungen 316A–316D umfassen
Steuerschaltungen zur Verbindung mit den Speichern 314A–314D.
Des weiteren enthalten die Speichersteuerungen 316A–316D Anforderungswarteschlangen
bzw. Puffer, um Speicheranforderungen in einer Reihenfolge zu speichern.
-
Im
Allgemeinen umfassen Schnittstellenschaltungen 318A–318L eine
Vielzahl von Puffern für das
Empfangen von Paketen aus der Verbindung und für das Speichern von Paketen,
die über
die Verbindung zu senden sind. Das Computersystem 300 kann
einen beliebigen geeigneten Flusssteuermechanismus zum Senden von
Paketen anwenden. Beispielsweise speichert in einer Ausführungsform jede
Schnittstellenschaltung 318 die Zahl jeder Art an Puffern
innerhalb des Empfängers
am anderen Ende der Verbindung, mit der die Schnitt stellenlogik
verbunden ist. Die Schnittstellenlogik sendet kein Paket, sofern
die empfangende Schnittstellenlogik nicht einen freien Puffer zur
Speicherung des Pakets aufweist. Wenn ein empfangender Puffer nach
Weiterleiten eines Pakets frei wird, sendet die empfangende Schnittstellenlogik
eine Nachricht zu der sendenden Schnittstellenlogik, um anzuzeigen,
dass der Puffer wieder verfügbar
ist. Ein derartiger Mechanismus wird als „couponbasiertes” System
bezeichnet.
-
Die
I/O-Einheiten 320A–320B sind
beliebige geeignete I/O-Einheiten bzw. Geräte. Beispielsweise umfassen
die I/O-Einheiten 320A–320B Einheiten zur
Kommunikation mit einem weiteren Computersystem, mit welchem die
Einheiten verbunden sind (beispielsweise Netzwerkschnittstellenkarten
oder Modems). Ferner können
die I/O-Einheiten 320A, 320B Videobeschleuniger,
Audio-Karten, Festplatten oder Diskettenlaufwerke oder Laufwerkssteuerungen,
SCSI (Kleincomputersystemschnittstellen-)Adapter und Telefonkarten,
Klangkarten und eine Vielzahl von Datennahmekarten, etwa GPIB- oder
Feldbusschnittstellenkarten umfassen. Des weiteren kann eine beliebige
I/O-Einheit, die als eine Karte eingebettet ist, auch in Form einer
Schaltung auf der Hauptplatine des Systems 300 ausgebildet
sein und/oder kann als Software vorgesehen sein, die in einem Verarbeitungsknoten
ausgeführt
wird. Zu beachten ist, das der Begriff „I/O-Einheit” und der
Begriff „peripheres
Gerät” hierin
als Synonym zu betrachten sind.
-
Ferner
sind ein oder mehrere Prozessoren in einer mehr traditionellen Struktur
eines Personalcomputers (PC) eingerichtet, der eine oder mehrere Schnittstellen
der Prozessoren einer Brücke
zu einer oder mehreren I/O-Zwischenverbindungen und/oder Speicher
enthält.
-
In
einer Ausführungsform
sind die Verbindungen 324A–324H mit der Hyper-Transport
(HT) Spezifikation kompatibel, die von dem HT-Konsortium erstellt
wurde, wobei speziell die Version 3 hier genannt sei. Das Protokoll
auf den Verbindungen wird von der HT-Spezifikation modifiziert, um die Kohärenz auf
den Verbindungen zu unterstützen,
wie dies zuvor beschrieben ist. Jedoch können in anderen Ausführungsformen
andere Verbindungen und ein entsprechendes beliebiges Protokoll
dazu eingerichtet sein. Des weiteren können die hierin beschriebenen
CRC-Techniken für
nicht-kohärente
Verbindungen ebenfalls verwendet werden.
-
In 2 ist
eine Blockansicht einer Ausführungsform
der Verarbeitungsknoten 312A–312B gezeigt, wobei
zusätzliche
Details einer Ausführungsform
der Knoten gezeigt sind. In der dargestellten Ausführungsform
umfasst der Verarbeitungsknoten 312A die Schnittstellenschaltung 318,
wie sie in 1 gezeigt ist, sowie eine Paketdisponiereinheit bzw.
eine Paketauswahleinheit 24, einen Historienpuffer 26 und
einen Prozessorkern 28. Insbesondere enthält die Schnittstellenschaltung 318A eine
Empfängerschaltung 10,
eine Sendeschaltung 12, eine Zellendisponiereinheit 14 (mit
einem CRC-Generator 16), eine Zellenwarteschlange bzw.
einen Zellenspeicher 18, einen Auslastungszähler 20 und
ein oder mehrere Steuerregister 22. Der Empfänger 10 ist
mit der Verbindung 324B verbunden, um Pakete von dem Verarbeitungsknoten 321B zu
empfangen und ferner ist der Empfänger mit der Paketdisponiereinheit 24 verbunden.
Das Steuerregister 22 und der Auslastungszähler 20 sind
mit der Zellendisponiereinheit 14 verbunden, die ihrerseits
mit der Sendeschaltung 12 und der Zellenwartenschlange 18 verbunden
ist. Die Zellenwarteschlange 18 ist mit der Sendeschaltung 12 und
der Paketdisponiereinheit 24 verbunden. Die Sendeschaltung 12 ist
mit der Verbindung 324A verbunden, um Pakete zu dem Verarbeitungsknoten 312B zu übertragen.
Die Paketdisponiereinheit 24 ist ferner mit dem Historienpuffer 24, dem
Prozessorkern 24 und diversen anderen Paketquellen verbunden.
-
Der
Verarbeitungsknoten 321B umfasst die Schnittstellenschaltung 318D,
die in 1 gezeigt ist, sowie eine Paketdisponiereinheit 40,
einen Datenpuffer 42 und einen Befehlspuffer 44.
Die Schnittstellenschaltung 318D umfasst einen Bestätigungs-(Ack)Zähler 30,
eine CRC-Prüfschaltung 32, einen
Zellenwarteschlange- bzw. einen Zellenpuffer 34, eine Empfangsschaltung 36 und
eine Sendeschaltung 38. Die Empfangschaltung 36 ist
mit der Verbindung 324A, der Zellenwarteschlange 34 und der
CRC-Prüfschaltung 32 verbunden.
Die CRC-Prüfschaltung 32 ist
mit dem Ack-Zähler 30 verbunden
(der ferner mit dem Sender 38 verbunden ist) und ist mit
der Zellenwartschlange 34 verbunden (die ferner mit der
Paketdisponiereinheit 40, dem Datenpuffer 42 und
dem Befehlspuffer 44 verbunden ist). Die Sendeschaltung 38 ist
mit der Verbindung 324B verbunden.
-
Die
Verbindung 324A ist detaillierter in 2 gezeigt
und umfasst CAD[n:0], CTL[m:0] und CLK[m:0]. Die CAD-Leitungen übertragen
Paketbitzeiten und die CLK-Leitungen enthalten eine oder mehrere
Taktsignalleitungen, auf die die Bitzeiten überzogen sind. Die CTL-Leitungen geben die
Art der in einer gegebenen Bitzeit übertragenen Daten an, wie dies
nachfolgend detaillierter beschrieben ist. Es gibt n CAD-Leitungen,
wobei n eine ganzzahli ge Potenz von zwei als Vielfaches von 8 – 1 ist.
D. h. n kann 7, 15, 31, etc. sein. Somit werden Bytes mit einer
Anzahl von der Größe einer
Zweierpotenz von 2 über die
CAD-Leitungen pro
Bitzeit übertragen.
Es gibt m CLK- und CTL-Leitungen, wobei m gleich n + 1 geteilt durch
8 ist. D. h., es gibt eine CLK-Leitung und eine CTL-Leitung pro
Byte CAD. Die CLK-Leitung ist die Taktsignalreferenz für die entsprechenden
8 CAD-Leitungen.
-
Obwohl
diverse Ausführungsformen
unterschiedliche Breiten besitzen, wird die minimale Einheit des
Datenaustausches auf der Leitung als eine Zelle definiert. D. h.,
es ist kein Paket auf der Leitung kleiner als eine einzelne Zelle
und Pakete besitzen eine Länge
von ganzzahligen Vielfachen von Zellen. Eine Zelle kann in den diversen
Ausführungsformen eine
beliebige Größe besitzen,
aber diese beträgt
32 Bits (4 Bytes) in einer Ausführungsform.
Wenn die Verbindung schmäler
ist als eine Zelle wird beim Beginn des Übertragens einer Zelle der
Rest dieser Zelle nacheinander übertragen.
Beispielsweise sind eine 32 Bit-Zelle
und eine 16 Bit-Verbindung eingerichtet und somit wird jede Zelle
als zwei aufeinander folgende Bitzeiten auf den CAD-Leitungen übertragen.
Die Paketdisponiereinheit 24 disponiert ein Paket für das Senden
auf der Leitung 324A und kann die Zellen des Pakets zur
Zellenwarteschlange 18 übertragen
(oder kann veranlassen, dass die Zellen stets zu der Zellenwarteschlange 18 übertragen
werden, wenn diese nicht in der Paketdisponiereinheit 24 gespeichert
sind). Die Zellendisponiereinheit 14 kann Zellen aus der
Zellenwarteschlange 18 für das Senden mittels der Sendeschaltung 12 disponieren
bzw. auswählen.
Im Allgemeinen werden Zellen eines Pakets während aufeinanderfolgender
Bitzeiten ausgewählt
bzw. disponiert, obwohl einige nicht-Datenbewegungspakete innerhalb
der Daten eines vorhergehenden Datenbewegungspakets gemäß einer
Ausführungsform
disponiert werden können.
Wenn eine Zelle disponiert wird, veranlasst die Zellendisponiereinheit 14 die
Zellenwarteschlange 18, die Zelle an die Sendeschaltung 12 auszugeben,
die die Zelle auf der Leitung 324A überträgt (mit geeigneten CTL-Leitungscodierungen).
Wenn eine Zelle nicht disponiert ist, erzeugt die Zellendisponiereinheit 14 einen
keine-Operation-(Noop)Befehl für
das Senden. Der Noop-Befehl kann Pufferfreigabefelder gemäß einer Ausführungsform
enthalten, um anzugeben, dass Puffer in dem Knoten 312A verfügbar sind,
um Pakete von dem Knoten 312B zu empfangen. Die Pufferfreigabezahlen
werden von der Schnittstellenschaltung 318A bewahrt, oder
werden durch die Paketdisponiereinheit 24 in diversen Ausführungsformen
bereitgestellt.
-
Die
Zellendisponiereinheit ist ausgebildet, eine CRC für jedes
Paket (unter Anwendung des CRC-Generators 14) zu erzeugen.
Als Voreinstellung kann die Zellendisponiereinheit 14 die
CRC für
ein Paket am Ende dieses Paketes anhängen, so dass eine Fehlererkennung
auf der Verbindung pro Paket ermöglicht
wird. In einer Ausführungsform
umfasst die CRC eine einzelne Zelle aus Daten, obwohl in anderen
Ausführungsformen
mehrere Zellen an CRC eingerichtet sein können. Nach dem Disponieren
der letzten Zelle des Pakets kann die Zellendisponiereinheit 14 die
CRC-Zelle bzw. Zellen disponieren.
-
In
einer Ausführungsform
ist die Schnittstellenschaltung 318A (und insbesondere
die Zellendisponiereinheit 14) ausgebildet, zwei oder mehr
Pakete zusammenzupacken bzw. zusammenzustellen und diese mit einer
einzelnen CRC zu schützen.
D. h., anstatt ein erstes Paket und dessen CRC und danach ein zweites
Paket mit dessen separater CRC zu senden, kann die Zellendisponiereinheit 14 das
erste Paket senden, woran sich das zweite Paket anschließt, woran
sich ein einzelner Übertragungsvorgang
für die
CRC anschließt,
die beide Pakete abdeckt. In einigen Ausführungsformen werden mehr als
zwei Pakete zusammengestellt (beispielsweise bis zu N Paketen, wobei
N eine Ganzzahl größer oder
gleich zwei ist). Durch Zusammenstellen von Paketen für eine einzelne
CRC-Übertragung
kann der zusätzliche
Aufwand für
CRC-Übertragungen
auf der Verbindung verringert werden, im Vergleich zu einer CRC die
pro Paket stattfindet. Insbesondere für kleine Pakete kann die Verringerung
des CRC-Aufwandes deutlich den Bandbreitenverbrauch auf der Leitung verringern.
In einer Ausführungsform
werden Pakete zusammengestellt, wenn ein Paket für das Senden verfügbar ist
(beispielsweise in der Zellenwarteschlange 18) am oder
in der Nähe
des Endes der Übertragung
der letzten Zelle des vorhergehenden Pakets. Insbesondere disponiert
in einer Ausführungsform
die Zellendisponiereinheit 14 die letzte Zelle eines Pakets
und bestimmt, ob die CRC oder ein weiteres Paket zu disponieren
bzw. zum Senden vorzusehen ist auf der Grundlage, ob eine Zelle
oder Zellen des anderen Pakets in der Zellenwarteschlange 18 sind
oder nicht.
-
In
einer speziellen Ausführungsform
ist die Zellendisponiereinheit 14 ausgebildet, Pakete zusammenzustellen,
die jeweils einen Befehl enthalten, aber keine Daten enthalten (beispielsweise
datenlose Pakete oder Pakete mit nur Befehlen). Da häufig Kommunikationsereignisse
auf einer kohärenten
Verbindung zur Bewahrung der Kohärenz
auftreten, wobei dabei keine Daten enthalten sind, ist das Auftreten
derartiger Pakete auf einer kohärenten
Leitung sehr ausgeprägt
(obwohl das Zusammenstellen auch auf einer nicht-kohärenten Verbindung
eingerichtet werden kann). Auf einer kohärenten Verbindung enthalten
z. B. nur-Befehl-Pakete
Sondierungsanfragen, gewisse Sondierungsantworten, Leseanforderungen und
Antworten über
den Abschluss von Aktionen. In einer Ausführungsform umfassen nur-Befehl-Pakete 1 bis
3 Zellen, wobei dies von der Befehlsgröße und Adressengröße in dem
System abhängt.
Mit einer einzelligen CRT und zwei einzelligen Befehlen führt das
Zusammenstellen lediglich zweier Pakete zusammen mit einer CRC-Übertragung
zu einer 25% Verringerung des Bandbreitenbedarfs (von 4 Zellen auf
3 Zellen).
-
In
einer Ausführungsform
ist die Zellendisponiereinheit 14 ausgebildet, eine oder
mehrere CRC-Teilübertragungen
innerhalb eines Pakets einzufügen.
Jede Teil-CRC deckt den Bereich des Pakets ab, der dem Einschub
vorangeht (kumulativ in Bezug auf den Beginn des Pakets, selbst
wenn andere Teil-CRC-Einschübe
gemacht wurden). Beispielsweise können ein Befehlspaket und ein
Datenpaket eine relativ große
Länge besitzen
und das Weiterleiten der ersten übertragenen
Daten kann für
das gesamte Leistungsverhalten wichtig sein. Durch Einfügen einer
Teil-CRC nach den ersten Daten, die dann weitergeleitet werden,
können
die ersten Daten mit der Teil-CRC beim Empfänger geprüft und dann weitergeleitet
werden. Wenn ein Fehler in einer späteren CRC erkannt wird, ist
weiterhin bekannt, dass die weitergeleiteten Daten korrekt sind
und diese können verwendet
werden. Dieses Leistungsverhalten kann verbessert werden, wenn ein
frühes
Weiterleiten von Daten in einigen Ausführungsformen erlaubt ist.
-
In
diversen Ausführungsformen
werden sowohl die CRC-Zusammenstellung als auch die Teil-CRC-Einfügung oder
nur ein Aspekt davon nach Bedarf realisiert.
-
Die
CRC-Zusammenstellung bzw. das CRC-Packen und der CRC-Teileinschub
sind in dem Steuerregister 22 programmierbar. Insbesondere kann
das Zusammenstellen bzw. Packen und/oder das Einfügen freigegeben
werden. Wenn mehr als ein Paket zusammengestellt wird, kann auch
die maximale Zahl der zu zusammenstellenden Pakete einstellbar sein.
Wenn mehrere Teil-CRC-Einfügepunkte innerhalb
eines Pakets unterstützt
werden, kann auch programmiert sein, welche Einfügepunkte zu verwenden sind.
-
In
einer Ausführungsform
wird das Paketzusammenstellen und die CRC-Teileinfügung dynamisch
gesteuert. Im Allgemeinen kann die Disponiereinheit 14 die
Größe der Bandbreite,
die auf der Leitung 324A erforderlich ist, überwachen
und kann die CRC-Übertragungen gemäß der Bandbreite
einstellen. In einer Ausführungsform
werden Zellen bei jeder Bitzeit auf der Leitung übertragen. Wenn es keine Zellen
zu senden gibt, werden Noop-Befehle übertragen. Somit kann die Zellendisponiereinheit 14 Noop-Befehle
als unverbrauchte Bandbreite und andere Zellen als benötigte Bandbreite
(Paketzellen, CRC-Zellen, etc.) werten. Wenn der Bandbreitenverbrauch
hoch ist (beispielsweise einen Schwellwert übersteigt), kann die CRC-Paketzusammenstellung (falls
diese aktiviert ist) ausgeführt
werden, um den CRC-Bandbreitenverbrauch zu verringern. Des weiteren
kann die Teil-CRC-Einfügung temporär gestoppt
werden (oder verringert, wenn mehrere CRC-Einfügungen ausgeführt werden).
Die Bandbreite kann separat für
die Steuerung der CRC-Paketzusammenstellung
und für
die Steuerung der Teil-CRC-Einfügung
bei Bedarf gemessen werden.
-
In
der gezeigten Ausführungsform
wird der Auslastungszähler 20 verwendet,
um die Bandbreite zu ermitteln. Der Zähler kann beispielsweise ein
Sättigungszähler sein,
der für
jede nicht-Noop-Zelle erhöht
wird und für
jede Noop-Zelle herabgesetzt wird. Somit ist der Auslastungszähler eine
Annäherung
an den jüngsten
Bandbreitenverbrauch. Auf Grundlage des Auslastungszählerwertes
können
die CRC-Paketzusammenstellung und Detail-CRC-Einfügung
dynamisch variiert werden.
-
Die
Empfangsschaltung 36 kann die Zellen von der Verbindung 324A empfangen.
Auf der Grundlage von Codierungen der CTL-Leitungen und möglicherweise
auf der Grundlage der Decodierung innerhalb der Zelle kann die Empfangsschaltung 36 bestimmen,
dass die Zelle ein Befehl oder Daten in dem Paket repräsentieren
(oder einen eingefügten Befehl,
einen gepackten Befehl oder eine Teil-CRC). Die Empfangsschaltung 36 kann
die empfangenen Zellen (und Decodier/Steuer-Daten) in der Zellenwarteschlange 34 speichern
und kann die Zelle auch zu der CRC-Prüfschaltung 32 weitergeben.
Schließlich wird
eine CRC-Zelle empfangen und mit der durch die CRC-Prüfschaltung 32 erzeugten
CRC verglichen, um einen Fehler zu erkennen, oder um die empfangenen
Zellen als zulässig
zu erklären.
Wenn kein Fehler auftritt, kann die CRC-Prüfschaltung 32 der
Zellenwarteschlange 34 mitteilen, die validierten Zellen
weiterzuleiten. Des weiteren erhöht
die CRC-Prüfschaltung 32 den
Ack-Zähler 30,
wenn ein vollständiges
Paket ohne Fehler empfangen wurde. Der Wert des Ack-Zählers 30 kann
den Verarbeitungsknoten 312A mittels der Sendeschaltung 38 als ein
Ack-Paket auf der Leitung 324B zugeleitet werden, um erfolgreich
empfangene Pakete zu bestätigen.
Der Verarbeitungsknoten 312A kann gesendete Pakete behalten
(beispielswei se über
den Historienpuffer 26), bis bekannt ist, dass diese in
korrekter Weise in dem Verarbeitungsknoten 312B empfangen wurden.
Wenn das Ack-Paket empfangen wird (und mittels dem Empfänger 10 der
Paketdisponiereinheit 24 zugeleitet ist), können die
entsprechenden Pakete gelöscht
werden.
-
Im
Allgemeinen leitet die Schnittstellenschaltung 318D validierte
Paketdaten zu einem Ziel weiter. Das Ziel kann ein internes Ziel
sein (beispielsweise ein Prozessor oder eine andere Schaltung innerhalb des
Knotens 312B) oder kann ein externes Ziel sein. Der erste
Schritt beim Weiterleiten zu dem Ziel besteht darin, die Zellen
in einen Befehlspuffer 44 oder einen Datenpuffer 42 zu
schreiben (abhängig
davon, ob die Zellen Befehlszellen oder Datenzellen sind). Die Schnittstellenschaltung 138D stellt
ferner Information im Hinblick auf das Paket für die Paketdisponiereinheit 40 bereit,
die nachfolgend das Paket zur Weiterleitung zu dem internen Ziel
oder zur Weiterleitung über
eine weitere Schnittstellenschaltung (in 2 nicht
gezeigt) disponiert.
-
Wenn
die CRC-Prüfschaltung 32 keinen Fehler
erkennt, wird ein Ack-Paket, das den Fehler angibt und die Ack-Zählerzahl
bereitstellt, die das letzte bekannte gültige Paket bezeichnet, mittels
der Sendeschaltung 38 übermittelt.
Die Paketdisponiereinheit 24 kann korrekt empfangene Pakete
aus dem Historienpuffer 26 löschen und die verbleibenden
Pakete zurück
in die Paketdisponiereinheit 24 laden, so dass diese erneut
gesendet werden. Insbesondere kann die Paketdisponiereinheit 24 entleert
werden, die Schnittstellenschaltung 318A kann die Verbindung
zurücksetzen
und die Paketdisponiereinheit 24 kann damit beginnen, die
in dem Historienpuffer 28 markierten Pakete erneut zu senden.
In anderen Ausführungsformen
wird eine Fehlerbehandlung in anderer Weise als durch automatisches
erneutes Senden der mit Fehler empfangenen Pakete ausgeführt.
-
Des
weiteren ist die Sendeschaltung 38 ausgebildet, Pufferfreigabebefehle
zu senden, die die Empfangschaltung 10 an die Paketdisponiereinheit 24 weitergibt.
Die Sendeschaltung 38 kann ferner Pakete senden, die von
der Paketdisponiereinheit 40 ausgewählt bzw. disponiert sind (und
die von unterschiedlichen Quellen, etwa einer der internen Quellen
oder einer weiteren Schnittstellenschaltung des Knotens 312B empfangen
wird), ähnlich
zur Funktionsweise, die für
die Paketdisponiereinheit 24 und die Schnittstellenschaltung 318A beschrieben
ist. So können
die Knoten 312A–312B dahingehend
symmetrisch sein, dass die Funktionen und die Schaltungen, die für jeden
Knoten beschrieben sind, auch in den anderen Knoten vorgesehen sind.
Der Einfachheit halber werden die Details nicht in beiden Knoten dargestellt.
Auch andere Schnittstellenschaltungen 318B bis 318C und 318E bis 318L können zu
den Schnittstellenleitungen 318A und 318D symmetrisch aufgebaut
sein.
-
Im
Allgemeinen empfängt
die Paketdisponiereinheit 24 Pakete von diversen internen
Quellen (beispielsweise dem Prozessorkern 28, der in 2 gezeigt
ist, der Speichersteuerung 316A aus 1a, etc.),
sowie von externen Quellen über
diversen Schnittstellenschaltungen 318A bis 318C.
Die Paketdisponiereinheit 24 speichert die Pakete direkt
oder kann Indikatoren der Pakete speichern. Die eigentlichen Pakete
können
in verteilten Befehls- und Datenpuffern in den Knoten 312A gespeichert
werden (beispielsweise ähnlich
zu den Befehls- und Datenpuffern 42 und 44 in
dem Verarbeitungsknoten 312B), und wenn ein Paket disponiert
bzw. ausgewählt
wird, werden die Paketdaten von den Befehls- und Datenpuffern, in
denen diese gespeichert sind, bereitgestellt.
-
3 ist
eine Blockansicht einer Ausführungsform
des Feldes in dem Steuerregister bzw. den Steuerregistern 22.
In anderen Ausführungsformen können zusätzlich und/oder
alternativ Daten im Vergleich zu den in 3 gezeigten
Daten vorhanden sein. Einige Felder sind als Bits beschrieben, wobei diese
jedoch Mehr-Bit-Felder in anderen Ausführungsformen repräsentieren
können.
-
Die
Felder in 3 enthalten ein Fähigkeitsbit 50,
ein Packen-Freigabe-Bit 52, ein Einfüge-Freigabe-Bit 54, ein Einfüge-Steuerbit 56,
ein dynamisches Packen-Freigabe-Bit 58 und ein dynamisches Packen-Freigabe-Bit 60.
Optional können
ein oder mehrere Schwellwertfelder vorgesehen sein (beispielsweise
Schwellwertfelder 62 und 64).
-
Das
Fähigkeitsbit 50 ist
ein nur-Lese-Bit, das angibt, ob der Knoten in der Lage ist, eine
CRC-Paketzusammenstellung oder eine Teil-CRC-Einfügung vorzunehmen.
Die Software kann das Fähigkeitsbit 50 prüfen, um
sicherzustellen, dass der Knoten in der Lage ist, die Operationen
vor dem Freigeben der Funktionen auszuführen (unter Anwendung des Packen-Freigabe-Bits 52 und
des Einfüge-Freigabe-Bits 54).
In anderen Ausführungsformen
werden separate Fähigkeitsbits
für jede
Art an Operationen bereitgestellt.
-
Das
Einfüge-Steuerfeld 56 wird
codiert, um zu steuern, welche Einfügepunkte in einem Paket Teil-CRC-Einfügungen erhalten
sollen. In einer Ausführungsform
wird der Datenbereich des Pakets in N gleich große Abschnitte (oder „Schläge”) unterteilt, wobei
N eine ganze Zahl größer oder
gleich zwei ist. Beispielsweise ist N in einer Ausführungsform
gleich 4. Die Teil-CRC-Einfügung
ist zwischen jedem Satz an Schlägen
oder Abschnitten verfügbar,
sowie zwischen dem Befehlsbereich und dem ersten Schlag bzw. Abschnitt.
Insbesondere werden in einer Ausführungsform Codierungen unterstützt, die
das Einfügen
hervorrufen zwischen: (1) dem ersten und dem zweiten Schlag; (2)
zwischen dem ersten und dem zweiten Schlag und dem Befehl und dem
ersten Schlag; (3) zwischen dem ersten und dem zweiten Schlag, zwischen
dem Befehl und dem ersten Schlag und zwischen dem zweiten und dem
dritten Schlag; oder (4) zwischen dem ersten und dem zweiten Schlag,
zwischen dem Befehl und dem ersten Schlag, zwischen dem zweiten
und dem dritten Schlag; und zwischen dem dritten und vierten Schlag.
Es kann eine weitere Kodierung des Einfüge-Steuerfeldes 56 bereitgestellt
werden, um keine Einfügung
anzugeben, und das Einfüge-Freigabebit 54 ist
nicht notwendig. In einer weiteren Ausführungsform kann eine einzelne
Kodierung für
jeden möglichen
Einfügepunkt
verwendet werden, um eine Kombination von Einfügungen zuzulassen, oder es werden
andere Kombinationen von Einfügungen
unterstützt.
In einer noch weiteren Ausführungsform wird
lediglich eine Einfügung
zwischen dem ersten und dem zweiten Schlag unterstützt, und
es wird ein Einfüge-Freigabebit 54 ohne
ein zusätzliches
Steuerfeld bereitgestellt.
-
Wenn
mehr als zwei Pakete für
eine einzelne CRC-Übertragung
gepackt werden, kann ein Packen-Steuerfeld vorgesehen sein, um die
maximale Anwahl an zu zusammenstellenden Paketen zu steuern.
-
Das
dynamische Packen-Freigabebit 58 und das dynamische Einfüge-Freigabebit 60 ermöglichen eine
dynamische Änderung
der CRC-Paketzusammenstellung und der Teil-CRC-Einfügungen gemäß dem Bandbreitenverbrauch.
In einigen Ausführungsformen
ist der Schwellwert, bei dem eine Änderung erfolgt, programmierbar,
wobei ein oder mehrere Schwellwertfelder 62 und 64 verwendet
werden. Beispielsweise werden unterschiedliche Schwellwerte für die CRC-Paketzusammenstellung
und die Teil-CRC-Einfügung
unterstützt.
Unterschiedliche Schwellwerte können
verwendet werden, um unterschiedliche Größen für die CRC-Paketzusammenstellung
und/oder die Teil-CRC-Einfügungen
zu steuern. Wenn beispielsweise Schwellwerte überschritten werden, werden
immer weniger Teil-CRC-Einfügungen in
einem Paket vorgenommen, wobei mit den Einfügungen immer später in dem
Paket begonnen wird und dies nach vorne fortgeführt wird, wobei die Einfügung zwi schen
dem ersten und dem zweiten Schlag als letztes entfernt wird (nach
dem Entfernen der Einfügung
zwischen dem Befehlsbereich und dem ersten Schlag). In anderen Ausführungsformen sind
die Schwellwerte festgelegt.
-
4 ist
ein Flussdiagramm, das die Funktionsweise einer Ausführungsform
der Zellendisponiereinheit 14 in Reaktion auf das Disponieren
einer Befehlszelle zeigt (d. h. einer Zelle, die ein Teil des Befehlsbereichs
eines Pakets ist). Insbesondere ist in dieser Ausführungsform
die Befehlszelle ein Teil eines datenlosen Pakets, obwohl in anderen
Ausführungsformen
die CRC-Paketzusammenstellung für Pakete
unterstützt
wird, die Daten sowie Befehlsbereiche enthalten. Die Blöcke sind
in einer speziellen Reihenfolge zum besseren Verständnis dargestellt. Jedoch
können
auch andere Reihenfolgen verwendet werden.
-
Ferner
können
Blöcke
teilweise mittels kombinatorischer Logikschaltungen in der Zellendisponiereinheit 14 ausgeführt werden.
Blöcke,
Kombinationen aus Blöcken
oder der Ablauf als Ganzes können
in Pipeline-Manier über
mehrere Taktzyklen hinweg ausgeführt
werden.
-
Wenn
die disponierte Befehlszelle nicht die letzte Disponierzelle in
dem Paket ist (Entscheidungsblock 70, Verzweigung „nein”), disponiert
die Zellendisponiereinheit 14 die nächste Zelle in dem Befehl (Block 72).
Wenn die disponierte Befehlszelle die letzte Befehlszelle in dem
Paket ist (Entscheidungsblock 70, Verzweigung „ja”), und
die CRC-Paketzusammenstellung
mittels des Freigabebits 50 nicht aktiviert ist (Entscheidungsblock 74,
Verzweigung „nein”), ist
die maximale Anzahl an Paketen zusammengestellt (Entscheidungsblock 76,
Verzweigung „ja”), oder
die dynamische Steuerung ist aktiviert und gibt an, dass ein weiterer
Befehl nicht gepackt werden soll (Entscheidungsblock 78,
Verzweigung „nein”), und
die Zellendisponiereinheit 14 disponiert die CRC-Zelle
(Block 80). Wenn ferner kein weiterer Befehl (Cmd2) für das Disponieren
verfügbar
ist (Entscheidungsblock 83, Verzweigung „nein”), disponiert
die Zellendisponiereinheit 14 die CRC-Zelle (80).
Wenn die CRC-Zelle disponiert ist und gesendet wird, wird die akkumulierte
CRC, die von dem CRC-Generator 16 bewahrt
wird, erneut initialisiert, um das Akkumulieren der CRC für das nächste Paket zu
beginnen.
-
Wenn
ein weiterer Befehl verfügbar
ist (Entscheidungsblock 82, Verzweigung „ja”) wird
die erste Zelle des nächsten
Befehls (Cmd2) disponiert (Block 84). D. h., die Entscheidung,
ob ein Befehl zu packen ist, wird zu dem Zeitpunkt getroffen, in
welchem die letzte Zelle des aktuellen Befehls in dieser Ausführungsform
disponiert wird. Die Zellendisponiereinheit 14 wartet nicht
auf einen weiteren Befehl, und fügt stattdessen
die CRC an, ohne dass diese gepackt ist, wenn ein zweiter Befehl
für das
Zusammenstellen nicht verfügbar
ist. In anderen Ausführungsformen wird
bestimmt, ob zum Zeitpunkt des Disponieren der letzten Zelle des
aktuellen Pakets oder in zeitlicher Nähe dazu oder zu einer anderen
Zeit nach Bedarf ein Paket zusammen zu stellen ist.
-
In
einer Ausführungsform
stellt die Zellendisponiereinheit 14 den Befehl mit einem
Noop-Befehl zusammen,
selbst wenn das Paketzusammenstellen nicht aktiviert ist (oder dieses
dynamisch aktuell deaktiviert ist), wenn der Noop-Befehl gerade
gesendet wird (nicht gepackt mit einem vorhergehenden Befehl) und
ein Befehl durch die Paketdisponiereinheit 24 disponiert
ist. In diesem Falle kann die Verringerung der Verarbeitungszeit
für einen
Befehl realisiert werden, indem ein Befehl mit dem Noop-Befehl zusammengestellt
wird, anstatt dass eine separate CRC für den Noop-Befehl vor dem neu
disponierten Befehl gesendet wird.
-
Obwohl
die vorangegangene Beschreibung den Betrieb der Zellendisponiereinheit 14 betrifft, kann
die Funktionsweise der Schnittstellenschaltung 318A als
Ganzes ähnlich
sein, selbst wenn der innere Aufbau der Schnittstellenschaltung 318A sich
von der Ausführungsform
aus 2 unterscheidet. Beispielsweise werden Pakete
für das
Senden empfangen, wobei das Zusammenstellen auf der Grundlage der
Verfügbarkeit
eines weiteren zu sendenden Paketes bestimmt wird, und wobei die
Steuerung auf der Grundlage des Bandbreitenverbrauchs, etc. dynamisch
erfolgen kann.
-
5 ist
ein Flussdiagramm, in welchem die Funktionsweise einer Ausführungsform
der Zellendisponiereinheit 14 in Reaktion auf das Disponieren einer
Datenzelle gezeigt ist (d. h. einer Zelle, die ein Teil des Datenbereichs
eines Pakets ist). Die Blöcke sind
in einer speziellen Reihenfolge zum besseren Verständnis dargestellt.
Es kann jedoch auch eine andere Reihenfolge verwendet werden. Des
weiteren können
Blöcke
parallel durch kombinatorische Logikschaltungen in der Zellendisponiereinheit 14 ausgeführt werden.
Blöcke,
Kombinationen aus Blöcken oder
der Ablauf als Ganzes können
in Pipeline-Technik über
mehrere Taktzyklen hinweg ausgeführt
werden.
-
Wenn
die disponierte Datenzelle die letzte Datenzelle in dem Paket ist
(Entscheidungsblock 9, Verzweigung „ja”), disponiert die Disponiereinheit 14 die
CRC-Zelle für
das Übertragen
(Block 92). In diesem Falle ist die CRC-Zelle die Zelle,
die das gesamte Paket abdeckt, wie es über die Zellen des Pakets hinweg
in vorhergehenden Zyklen angesammelt wurde. Die CRC kann ebenfalls
in diesem Falle erneut initialisiert werden, um Vorbereitungen für das nächste Paket
zu treffen. Wenn die disponierte Datenzelle nicht die letzte Datenzelle
in dem Paket ist (Entscheidungsblock 90, Verzweigung „nein”), und
die Teil-CRC-Einfügung
mittels des Freigabebits 54 nicht aktiviert ist (Entscheidungsblock 94,
Verzweigung „nein”), oder
das Paket nicht an einem Einfügepunkt ist
(Entscheidungsblock 96, Verzweigung „nein”), oder die dynamische Steuerung
aktiviert ist und angibt, dass die Teil-CRC-Einfügung
an diesem Punkt nicht ausgeführt
werden soll (Entscheidungsblock 98, Verzweigung „nein”), disponiert
die Disponiereinheit 14 die nächste Datenzelle (Block 100).
Ansonsten disponiert die Zellendisponiereinheit 14 eine CRC-Zelle
(Block 92). In diesem Falle ist die CRC-Zelle eine Teil-CRC-Einfügung, die
das Paket bis zu dem aktuellen Punkt hin abdeckt. Die CRC wird in
diesem Falle nicht erneut initialisiert. Das Datenpaket ist ggf.
nicht an einem Einfügepunkt,
wie dies durch den Entscheidungsblock 96 angegeben ist,
wenn jeder Schlag mehr als eine Zelle enthält und die aktuelle Zelle nicht
das Ende eines Schlags ist, oder wenn der aktuelle Einfügepunkt
nicht über
das Einfüge-Steuerfeld 56 aktiviert
ist.
-
Obwohl
die vorhergehende Beschreibung die Funktionsweise der Disponiereinheit 14 betrifft, kann
die Funktionsweise der Schnittstellenschaltung 318a als
Ganzes ähnlich
sein, selbst wenn der innere Aufbau der Schnittstellenschaltung 318A sich
von der Ausführungsform
der 2 unterscheidet. Beispielsweise können Pakete
für das
Senden empfangen werden, die Teil-CRC-Einfügung kann ausgeführt werden,
wenn diese aktiviert ist, die Steuerung kann dynamisch auf der Grundlage
eines Bandbreitenverbrauchs erfolgen, etc..
-
6 zeigt
ein Flussdiagramm, das die Funktionsweise einer Ausführungsform
der Zellendisponiereinheit 14 darstellt, um die Bandbreite
zu überwachen
und die CRC-Paketzusammenstellung und/oder
die Teil-CRC-Einfügung
dynamisch zu variieren. Die Blöcke
sind in einer speziellen Reihenfolge zum besseren Verständnis dargestellt.
Es kann jedoch auch eine andere Reihenfolge verwendet werden. Ferner
können
Blöcke
parallel durch kombinatorische Logikschaltungen in der Zellendisponiereinheit 14 ausgeführt wer den.
Blöcke,
Kombinationen aus Blöcken
oder der Ablauf als Ganzes können
als Pipeline-Verfahren über mehrere
Taktzyklen hinweg ausgeführt
werden.
-
Wenn
die Zellendisponiereinheit 14 ein neues Paket für das Senden
disponiert (Entscheidungsblock 110, Verzweigung „ja”), erhöht die Zellendisponiereinheit 14 den
Auslastungszähler 20 (Block 112). Wenn
die Zellendisponiereinheit 14 ein Noop-Paket (Nop-Paket – Entscheidungsblock 114,
Verzweigung „ja”), disponiert,
verringert die Zellendisponiereinheit 14 den Auslastungszähler 20 (Block 116).
Wie zuvor erläutert
ist, kann der Auslastungszähler 20 ein
sättigender
Zähler
sein. D. h., das Erhöhen
des Zählers kann
enden, wenn alle binären
Einsen in dem Zähler 20 gesetzt
sind (und ein nachfolgendes Inkrementieren ändert den Wert nicht, bis eine
Dekrementierung auftritt und den Wert verringert), und ein Dekrementieren
des Zählers
erfolgt solange, bis alle binären Nullwerte
in dem Zähler 20 gesetzt
sind (und ein nachfolgendes Dekrementieren ändert den Wert nicht, bis ein
Inkrementieren erfolgt und den Wert erhöht). Der Wert kann als eine
Ganzzahl ohne ein Vorzeichen behandelt werden. Ein Noop-Paket kann
als ein Noop-Paket definiert werden, das keine Pufferfreigabezahlen
in einer Ausführungsform
enthält,
da derartige Noop-Pakete den einzigen Mechanismus zum Senden der
Zahlen repräsentieren
können.
Zu beachten ist, dass die Blöcke 110 bis 116 unabhängig vom
Rest des Flussdiagramms sind und die Überwachung des Bandbreitenverbrauchs
für diese
Ausführungsform
repräsentieren.
-
Wenn
der Auslastungszähler
einen Schwellwert übersteigt
(Entscheidungsblock 118, Verzweigung „ja”), wird der Bandbreitenverbrauch
als hoch betrachtet. Folglich wird die Teil-CRC-Einfügung deaktiviert und die CRC-Paketzusammenstellung wird
aktiviert, um Bandbreite einzusparen (Block 120). Wenn
andererseits der Auslastungszähler
den Schwellwert nicht übersteigt
(Entscheidungsblock 118, Verzweigung „nein”), wird der Bandbreitenverbrauch
als gering erachtet. Die Teil-CRC-Einfügung wird aktiviert, um ein
früheres
Weiterleiten an Daten zu ermöglichen,
und die CRC-Paketzusammenstellung wird deaktiviert, um die Paketweiterleitungsverarbeitungszeit
in diesem Falle zu verbessern, da die Bandbreite verfügbar ist
und somit für
zusätzliche CRC-Übertragung
verwendet werden kann, ohne dass das Leistungsverhalten beeinflusst
wird (Block 122).
-
Die
Blöcke 118–122 repräsentieren
eine Teil der Entscheidungsblöcke 78 und 90 in
den 4 bzw. 5. D. h., wenn die dynamische
Steuerung aktiviert ist, bestimmen die Blöcke 118 bis 122,
ob die dynamische Steuerung angibt, dass die CRC-Paketzusammenstellung
oder die Teil-CRC-Einfügung
zulässig
ist. Der Block 120 entspricht dem Entscheidungsblock 78 mit
der Verzweigung „ja” und dem
Entscheidungsblock 90 in der Verzweigung „nein”). Der Block 122 entspricht
dem Entscheidungsblock 78 mit der Verzweigung „nein” und dem
Entscheidungsblock 90 mit der Verzweigung „ja”.
-
Wie
zuvor erläutert
ist, wird in einigen Ausführungsformen
mehr als ein Schwellwert angewendet. Beispielsweise gibt es Schwellwerte,
die der möglichen
Kombination aus Teil-CRC-Einfügungen entsprechen.
Wenn der Bandbreitenverbrauch ansteigt, wird die Anzahl der Teil-CRC-Einfügungen verringert,
wobei mit jenen begonnen wird, die den kleinsten Gesamtwert hinzufügen (beispielsweise jene
Einfügungen,
die näher
am Ende des Datenpaktes sind, woran sich die Einfügung anschließt zwischen
dem Befehlsbereich und dem Datenbereich, und schließlich die
Einfügung
zwischen dem ersten und dem zweiten Datenschlag). Wenn in ähnlicher Weise
mehr als zwei Pakete für
die CRC zusammengestellt werden, können diverse Schwellwerte verwendet
werden, um (bei Überschreiten
der Schwellwerte) die Anzahl der Pakete zu erhöhen, die für die CRC zusammengestellt
werden.
-
Obwohl
die vorhergehende Beschreibung sich auf die Funktionsweise der Zellendisponiereinheit 14 bezieht,
kann die Funktionsweise der Schnittstellenschaltung 218A als
Ganzes ähnlich
sein, selbst wenn der innere Aufbau der Schnittstellenschaltung 218A sich
von der Ausführungsform
der 2 unterscheidet. Beispielsweise kann der Bandbreitenverbrauch überwacht
und dynamisch gesteuert werden auf der Grundlage des erfassten Bandbreitenverbrauchs.
-
Die
Ausführungsform
der 6 zeigt einen allgemeinen Mechanismus zum Variieren
der Häufigkeit
von CRC-Übertragungen
in Abhängigkeit
von der Größe der verbrauchten
Bandbreite. Wenn der Bandbreitenverbrauch anwächst, wird die Frequenz bzw. Häufigkeit
der CRC-Übertragungen
verringert (beispielsweise durch Erhöhen der CRC-Paketzusammenstellung und/oder durch
Verringern der Teil-CRC-Einfügungen).
Wenn der Bandbreitenverlauf zurückgeht,
wird die Häufigkeit
der CRC-Übertragungen
erhöht
(etwa durch Unterbinden der CRC-Paketzusammenstellung und/oder durch
Erhöhen
der Teil-CRC-Einfügungen).
-
7 ist
ein Flussdiagramm, das die Funktionsweise einer Ausführungsform
der Schnittstellenschaltung 318D (und insbesondere der
Empfängerschaltung 36 und
der CRC-Prüfschaltung 32 für die dargestellte
Ausführungsform,
obwohl andere Ausführungsformen
mit unterschiedlichen Strukturen verwendbar sind) zum Handhaben
der gepackten CRC und der Teil-CRC-Einfügungen zeigt. Die Blöcke sind
in einer speziellen Reihenfolge zum besseren Verständnis gezeigt.
Jedoch kann eine andere Reihenfolge verwendet werden. Des weiteren
können
Blöcke
parallel mittels Kombination durch Logikschaltungen in der Schnittstellenschaltung 318D und/oder
der Empfängerschaltung 36/CRC-Prüfschaltung 32 ausgeführt werden.
Blöcke
oder Kombinationen aus Blöcken
oder der Ablauf als Ganzes können
in Pipeline-Manier über
mehrere Taktzyklen hinweg ausgeführt
werden.
-
Die
Empfängerschaltung 36 decodiert
die Steuerdaten aus den Steuerleitungen CTL[n:0] (möglicherweise über mehrere
Bitzeiten hinweg, wenn eine Zelle für mehrere Bitzeiten hinweg
empfangen wird), um zu bestimmen, welche Art an Zelle empfangen
wird (Block 130). Wenn die Zelle eine Befehlszelle oder
eine Datenzelle eines Pakets ist (Entscheidungsblock 132,
Verzweigung „ja”), wird
die Zelle in der Zellenwartschlange bzw. in dem Zellenpuffer 34 für die CRC-Validierung
angeordnet (Block 134). Befehlszellen können teilweise decodiert werden,
beispielsweise um den virtuellen Kanal zu ermitteln, der mit dem
Paket verknüpft
ist. Die CRC-Prüfschaltung 32 akkumuliert
die CRC von der empfangenen bzw. den empfangenen Zellen (Block 136).
Alternativ werden die Zellen in der Zellenwarteschlange 34 angeordnet
und die CTL-Daten werden nach der Einordnung in der Warteschlange
decodiert.
-
Wenn
die Zelle keine Befehlszelle oder Datenzelle ist, ist die Zelle
eine CRC-Zelle (Entscheidungsblock 132, Verzweigung „nein”). Die
CRC-Prüfschaltung 32 vergleicht
die CRC-Zelle mit
der akkumulierten CRC, um zu bestimmen, ob ein Fehler erkannt wurde
(Block 138). Die CRC kann eine Teil-CRC oder eine vollständige CRC
sein. Wenn ein Fehler nicht erkannt wird (Entscheidungsblock 140, Verzweigung „nein”), werden
die durch die CRC abgedeckten Befehls/Datenzellen von der Zellenwarteschlange 34 weitergeleitet
(Block 142). Wenn die Weiterleitung eine Teilweiterleitung
ist, da kein Fehler in einer Teil-CRC erkannt wird, zeichnet die
Schnittstellenschaltung 318D auf, welche Daten weitergeleitet
wurden (Block 144). Diese Information kann verwendet werden,
wenn später
in einem Paket ein Fehler erkannt wird, so dass bereits zuvor weitergeleitete Daten
nicht erneut weitergeleitet werden müssen, wenn das Paket erneut
gesendet wird. Wenn die Weiterleitung das Ende des Pakets ist, wird
der Ack-Zähler 30 aktualisiert
(Block 146), und die von der CRC-Prüfschaltung 32 akkumulierte
CRT wird für das
nächste
Paket erneut initialisiert.
-
Wenn
ein Fehler erkannt wird (Entscheidungsblock 140, Verzweigung „ja”), aktualisiert
die CRC-Prüfschaltung 32 den
Ack-Zähler 30,
um das letzte erfolgreich empfangene Paket (Block 148)
zu kennzeichnen, und die Sendeschaltung 38 gibt einen Fehler
zusammen mit der Ack-Zählerzahl
an den Knoten 312A zur Fehlerbearbeitung weiter (Block 150).
-
In
diversen Ausführungsformen
werden die CTL-Leitungen für
eine Zelle in diversen Arten codiert. Beispielsweise zeigt 8 eine
Ausführungsform
des Codierens der CTL-Leitungen
für eine 32-Bit-Zelle
(so dass in dieser Ausführungsform
vier CTL-Leitungen pro Zelle vorhanden sind). Des weiteren werden
in dieser Ausführungsform
bis zu 2 datenlose Pakete für
die CRC-Abdeckung zusammengestellt.
-
Die
CTL-Leitungen sind codiert als b”1111” für eine Befehlszelle und als
b”0000” für eine Datenzelle,
sofern dies in der Tabelle nicht anders gekennzeichnet ist. Die
CRC für
ein datenloses Paket (nur-Befehl-Paket) ist b”0011”. Die CTL-Leitungscodierung
b”1100” besitzt
zwei Bedeutungen. Diese kann entweder angeben, dass die Daten-CRC
bereitgestellt wird (keine Teil-CRC-Einfügung, sondern die endgültige CRC,
die an das Ende des Pakets angehängt
ist), oder diese kann die letzte Zelle des ersten Befehls für gepackte
Befehle anzeigen. Wenn somit die CTL-Codierung auf eine Befehlszelle
folgt, ist die Zelle die letzte Zelle des ersten Befehls und wenn diese
CTL-Codierung auf eine Datenzelle folgt, ist die Zelle die Daten-CRC.
Ferner unterscheiden sich die Codierungen für Daten-CRC und die Befehls-CRC.
-
Die
CTL-Leitungscodierung b”0111” besitzt ebenfalls
zwei Bedeutungen. Diese ist entweder die erste Zelle eines Befehlspakets,
d. h. sie ist in den Datenbereich eines weiteren Pakets eingefügt, oder dies
ist die erste Zelle des zweiten Befehls eines Paares aus gepackten
Befehlen. Daher kann die Bedeutung dieser Codierung auf der Grundlage
davon unterschieden werden, ob die vorhergehende Codierung b”1100” war oder
nicht. Des weiteren unterscheidet sich die Codierung für die erste
Zelle eines gepackten Befehls von anderen Befehlszellen, was das
Erkennen der ersten Zelle begünstigt.
Ferner unterscheidet sich die Codierung für die letzte Zelle des ersten
Befehls von anderen Befehlscodierungen.
-
Die
CTL-Codierung b”1001” kann für eine Befehlszelle
verwendet werden, die einer Teil-CRC-Einfügung vorausgeht
nach dem Befehlsbereich des Pakets. Alternativ kann die Codierung b”1010” für eine Teil-CRC-Einfügung zwischen
den Datenschlägen
eines Pakets verwendet werden. Somit unterscheidet sich die Codierung,
die angibt, dass die nächste
Zelle eine CRC ist, von der Einfügung zwischen
dem Befehlsbereich und dem Datenbereich im Vergleich zu Einfügungen zwischen
den Datenschlägen
bzw. Datenabschnitten. Schließlich
gibt die CTL-Codierung b”1010” eine Teil-CRC-Zelle
an. Somit unterscheidet sich die Codierung für eine Teil-CRC-Zelle von den
Codierungen für
eine Befehls-CRC und für
eine Daten CRC sowie von anderen Datenzellen.
-
Die
CTL-Codierungen, die in der Tabelle der 8 angegeben
sind, sind so gewählt,
dass das Auftreten von Fehlern auf den CTL-Leitungen reduziert wird,
die Fehler beim Empfang von Paketen hervorrufen können. D.
h., wenn ein Fehler auf einer CTL-Leitung auftritt, hat die Empfangsschaltung 26 eine
höhere
Wahrscheinlichkeit des Erkennens einer unzulässigen Sequenz aus CTL-Codierungen
und kann somit einen Fehler für
die Paketübertragung
erkennen.
-
9 ist
eine Gruppe aus Beispielpaketen und der entsprechenden CTL-Codierungen
für jede Zelle
entsprechend den in 8 gezeigten Codierungen. Jede
Zelle ist bezeichnet, und die CTL-Codierung geht in diesem Beispiel
der Zelle voraus. Im Allgemeinen sind die Zellen eines Befehls mit „Cmd” bezeichnet,
woran sich eine Zahl anschließt
(die gleich ist für
alle Zellen des Befehls), gefolgt von einem kleinen Buchstaben,
um unterschiedliche Zellen des gleichen Befehls zu unterscheiden.
Die Zellen von Daten sind als „Daten” bezeichnet,
woran sich eine Zahl anschließt
(die gleich ist für
alle Zellen der gleichen Daten und die gleich ist für den entsprechenden
Befehl), gefolgt von einem kleinen Buchstaben, um unterschiedliche
Zellen der gleichen Daten zu unterscheiden.
-
Ein
einzelnes (ungepacktes) datenloses Befehlspaket mit zwei Zellen
(Cmd0a und Cmd0b) und die entsprechende CRC (CRC0) sind mit dem
Bezugszeichen 160 dargestellt. Das Bezugszeichen 162 ist
ein Beispiel eines Pakets mit zwei Befehlszellen (Cmd0a und Cmd9b)
und zwei Datenzellen (Data0a und Data0b). Die entsprechende CRC
folgt den Datenzellen (CRC0).
-
Mit
dem Bezugszeichen 164 ist ein Paar aus gepackten Befehlspaketen
dargestellt, wobei jedes Befehlspaket zwei Zellen besitzt. Die Befehlszellen für das erste
Paket (Cmd0a und Cmd0b) gehen den Befehlszellen für das zweite
Paket voraus (Cmd1a und Cmd1b) und gehen auch der CRC voraus, die beide
Pakete (CRC0 + 1) abdeckt. Die CTL-Codierung für Cmd0b ist somit b”1100”, um die
letzte Zelle des ersten Befehls anzugeben, und die CTL-Codierung für Cmd1a
ist b”0111”, um die
erste Zelle des zweiten Befehls anzugeben. Andere Befehlszellen besitzen
die reguläre
Befehlszellencodierung b”1111”. Die CRC-Zelle
ist ebenfalls als b”0011” codiert,
um die Befehls-CRC anzugeben. Das Bezugszeichen 166 ist
ein Beispiel eines Paares aus gepackten Einzelzellenbefehlen, und
daher besitzen keine Zellen die reguläre Befehlszellencodierung.
-
Bezugszeichen 168 bezeichnet
ein Befehlspaket und ein Datenpaket (Cmd0 und Data0) mit zwei nur-Befehlpaketen,
die in den Datenbereich des Pakets (Cmd1 und dessen CRC-Zelle CRC1,
und Cmd2 und dessen CRC-Zelle CRC2) eingefügt sind. Wie gezeigt, ist die
CTL-Codierung b”0111” und wird
für die
erste Zelle jedes Befehls Cmd1 und Cmd2 verwendet, um die Einfügung in
den Daten anzuzeigen. In jedem Falle geht der Codierung b”0111” nicht
die Codierung b”1100” voraus,
und somit können
die Befehle als Einfügungen
in den Datenbereich des Pakets und nicht als gepackte Befehle erkannt
werden.
-
Schließlich ist
das Bezugszeichen 170 ein Beispiel eines Pakets mit Teil-CRC-Einfügungen (CRC01,
CRC0b und CRC0c), die das Kennzeichen der nächsten Zelle als Teil-CRC mit
Ausnahme der letzten CRC (CRC0) angeben.
-
10 ist
eine weitere Ausführungsform
der Codierung der CTL-Leitungen für eine 32-Bit-Zelle und für vier CTL-Leitungen
pro Zelle. In dieser Ausführungsform
besitzt jede Bit-Position
der CTL-Leitungen entsprechend der Zelle (Bits 0 bis 3) eine unterschiedliche
Bedeutung. Die LCTL- und HCTL-Codierungen für die Bitpositionen 0 und 2
können
die gleiche Bedeutung besitzen, wie sie in der HT-Spezifizierung
festgelegt ist. Diese Bits bestimmen, ob eine Zelle eine Befehlszelle
oder eine Datenzelle ist. Die Bitposition 1 wird für Befehlszellen
codiert, so dass diese ein Paketbit ist. D. h., wenn das Bit 0 ist,
ist die nächste
verwendete Zelle eine weitere Befehlszelle. Wenn das Bit 1 ist,
ist die nächste
gesendete Zelle eine CRC für
den Befehl. Die Bitposition 1 kann für Datenzellen so definiert
sein, dass diese ein Einfügebit
repräsentiert.
Wenn das Bit 0 ist, ist die nächste eine
weitere Datenzel le (oder eine eingefügte Befehlszelle). Wenn das
Bit 1 ist, ist die nächste
Zelle eine Teil-CRC-Einfügungszelle.
Die Bitposition 3 ist reserviert.
-
Es
werden diverse Variationen und Modifizierungen für den Fachmann bei einem vollständigen Studium
der obigen Offenbarung ersichtlich. Es ist beabsichtigt, dass die
folgenden Patentansprüche
so interpretiert werden, dass alle derartigen Variationen und Modifizierungen
mit eingeschlossen sind.
-
Industrielle Anwendbarkeit
-
Diese
Erfindung kann generell auf Mikroprozessoren angewendet werden.
-
Zusammenfassung
-
In
einer Ausführungsform
umfasst ein Knoten eine Paketdisponiereinheit, die ausgebildet ist, auf
einer Verbindung zu übertragende
Pakete zu disponieren, und eine Schnittstellenschaltung, die mit der
Paketdisponiereinheit verbunden und ausgebildet ist, die Pakete
auf der Verbindung zu übertragen. Die
Schnittstellenschaltung ist ausgebildet, Fehlererkennungsdaten,
die die Pakete abdecken, zu erzeugen, wobei die Fehlererkennungsdaten
zwischen Paketen auf der Verbindung übertragen werden. Die Schnittstellenschaltung
ist ausgebildet, bis zu N Pakete mit einer einzelnen Übertragung
von Fehlererkennungsdaten abzudecken, wobei N eine Ganzzahl größer gleich
zwei ist. Die Anzahl an Paketen, die mit einer einzelnen Übertragung
der Fehlererkennungsdaten abgedeckt werden kann, wird durch die Schnittstellenschaltung
in Abhängigkeit
von einer Verfügbarkeit
von zu sendenden Paketen bestimmt, während in einer weiteren Ausführungsform
die Schnittstellenschaltung ausgebildet ist, eine Häufigkeit
der Übertragung
der Fehlererkennungsdaten auf der Verbindung auf der Grundlage eines
Betrages an Bandbreite, der verbraucht wird, dynamisch zu variieren.