-
Die
vorliegende Offenbarung betrifft Informationssysteme.
-
Bestimmte
Anwendungen besitzen Anforderungen für eine hohe Bandbreite und
Anforderungen für
eine strenge Synchronisation, Wartezeit und Zuverlässigkeit
für Kommunikationen.
Die robotergestützte
Chirurgie erfordert beispielsweise eine hohe Bandbreite, um Steuer-
und Rückkopplungssignale in
Echtzeit zu übertragen.
Die Synchronisations- und Wartezeitanforderungen solcher Anwendungen
sind streng, da idealerweise so wenig Verzögerung wie möglich zwischen
den Bewegungen eines Chirurgen und den Bewegungen des Roboters bestehen
sollte. In diesen Anwendungen müssen
die Kommunikationen sehr zuverlässig
sein, da ein Datenübertragungsfehler
einen Patienten verletzten könnte.
-
Ein
herkömmliches
Kommunikationssystem, das in der robotergestützten Chirurgie verwendet wird,
verwendet mehrere hundert Wege (z.B. Drähte), um die Steuerkonsole
des Chirurgen mit Roboterarmen zu verbinden. Die Verwindung von
hunderten von Wegen macht jedoch die Einrichtung und Wartung des
Systems mühselig
und erfordert beträchtlichen
Raum, um alle Wege zu leiten.
-
Herkömmliche
Kommunikationsstandards stellen eine annehmbare Leistung auf einigen
Gebieten bereit, es mangelt ihnen jedoch auf anderen. Der IEEE-1394-Schnittstellenstandard
stellt beispielsweise eine synchrone, serielle Punkt-Punkt-Kommunikation bereit.
IEEE-1394-Kanäle
besitzen eine garantierte Bandbreite, können jedoch nur eine Synchronisation
innerhalb ungefähr
125 Mikrosekunden vorsehen. Eine solche Leistung kann für bestimmte
Anwendungen, die eine engere Synchronisation erfordern, nicht ausreichen.
-
In
einem Aspekt werden ein Verfahren und ein Computerprogrammprodukt
bereitgestellt, die die Übertragung
eines ersten Datenpakets von einem ersten Knoten zu einem zweiten
Knoten umfassen. Das erste Datenpaket umfasst ein Datenfeld, das Nicht-Füllfeld-Daten
vom ersten Knoten umfasst. Ein zweites Datenpaket wird vom ersten
Knoten zum zweiten Knoten nach der Übertragung des ersten Datenpakets übertragen.
Die Übertragung
des zweiten Datenpakets beginnt, bevor irgendwelche Bestätigungsinformationen,
die dem ersten Datenpaket entsprechen, vom zweiten Knoten empfangen
wurden. Ein drittes Datenpaket, das vom zweiten Knoten übertragen
wurde, wird am ersten Knoten empfangen. Das dritte Datenpaket umfasst
Bestätigungsinformationen,
die angeben, ob das erste Datenpaket vom zweiten Knoten korrekt
empfangen wurde. Die Übertragung
des ersten Datenpakets und der Empfang des dritten Datenpakets sind
verriegelt, so dass das dritte Datenpaket im Wesentlichen eine vorbestimmte
Menge an Zeit nach der Übertragung
des ersten Datenpakets empfangen wird.
-
Spezielle
Implementierungen können
eines oder mehrere der folgenden Merkmale umfassen. Das zweite Datenpaket
kann ungeachtet dessen übertragen
werden, ob der erste Knoten irgendwelche Nicht-Füllfeld-Daten zum Setzen in
ein Datenfeld des zweiten Datenpakets hat. Das erste, das zweite und
das dritte Datenpaket können
jeweils jeweilige Flusssteuerinformationen umfassen. Die Flusssteuerinformationen
im ersten und im zweiten Datenpaket betreffen den ersten Knoten
und die Flusssteuerinformationen im dritten Datenpaket betreffen
den zweiten Knoten. Die Flusssteuerinformationen können separate
Flusssteuerinformationen für
mehrere Kanäle
umfassen. Das erste Datenpaket kann Kopfinformationen umfassen,
die angeben, auf welchem einer Vielzahl von Kanälen die Nicht-Füllfeld-Daten übertragen
werden. Das erste und das zweite Datenpaket können jeweils eine Angabe eines
Fehlerzustandes des ersten Knotens umfassen. Das dritte Datenpaket
kann eine Angabe eines Fehlerzustandes des zweiten Knotens umfassen.
Das erste, das zweite und das dritte Datenpaket können eine
gleiche Länge
aufweisen.
-
Ein
viertes Datenpaket kann am ersten Knoten empfangen werden. Das vierte
Datenpaket wird vom zweiten Knoten übertragen und umfasst Bestätigungsinformationen,
die angeben, ob das zweite Datenpaket vom zweiten Knoten korrekt
empfangen wurde. Die Übertragung
des zweiten Datenpakets und der Empfang des vierten Datenpakets
können verriegelt
sein, so dass das vierte Datenpaket im Wesentlichen um eine vorbestimmte
Menge an Zeit nach der Übertragung
des zweiten Datenpakets empfangen wird. Ein fünftes Datenpaket kann am ersten Knoten
empfangen werden, bevor das dritte Datenpaket empfangen wird. Das
fünfte
Datenpaket wird vom zweiten Knoten vor dem dritten Datenpaket übertragen
und das fünfte
Datenpaket umfasst keine Bestätigungsinformationen,
die angeben, ob ein spezielles Datenpaket vom zweiten Knoten korrekt
empfangen wurde.
-
In
einem weiteren Aspekt werden ein Verfahren und ein Computerprogrammprodukt
bereitgestellt, die die synchrone Übertragung von Datenpaketen
zwischen einem ersten Knoten und einem zweiten Knoten umfassen.
Datenpakete werden vom ersten Knoten übertragen, ohne auf die Bestätigung des Empfangs
vom zweiten Knoten zu warten. Die Bestätigung des Empfangs eines gegebenen
Datenpakets vom zweiten Knoten wird anschließend am ersten Knoten empfangen.
Die Bestätigung
wird im Wesentlichen zu einer vorbestimmten Zeit empfangen, nachdem
die Übertragung
des gegebenen Datenpakets angibt, dass der zweite Knoten das gegebene
Datenpaket unverfälscht
empfangen hat. In einer speziellen Implementierung kann ein spezielles
Datenpaket erneut gesandt werden, wenn die Bestätigung des Empfangs des speziellen
Datenpakets nicht im Wesentlichen zur vorbestimmten Zeit nach der Übertragung
des speziellen Datenpakets empfangen wird.
-
In
noch einem weiteren Aspekt wird ein Verfahren bereitgestellt, das
die Übertragung
eines ersten Datenpakets von einem ersten Knoten zu einem zweiten
Knoten umfasst. Das erste Datenpaket umfasst ein erstes Datenfeld,
das Nicht-Füllfeld-Daten vom
ersten Knoten umfasst. Das erste Datenpaket wird am zweiten Knoten
empfangen und der Empfang des ersten Pakets dauert eine endliche
Menge an Zeit. Die Übertragung
eines zweiten Datenpakets vom zweiten Knoten zum ersten Knoten wird
begonnen, nachdem der Empfang des ersten Datenpakets begonnen hat,
jedoch bevor der Empfang des ersten Datenpakets geendet hat. Das
zweite Datenpaket wird am ersten Knoten empfangen und der Empfang des
zweiten Datenpakets dauert eine endliche Menge an Zeit. Die Übertragung
eines dritten Datenpakets vom ersten Knoten zum zweiten Knoten wird
begonnen, nachdem die Übertragung
des ersten Datenpakets geendet hat, nachdem der Empfang des zweiten
Datenpakets begonnen hat und bevor der Empfang des zweiten Datenpakets
geendet hat. Die Übertragung
des dritten Datenpakets beginnt, bevor irgendwelche Bestätigungsinformationen,
die dem ersten Datenpaket entsprechen, vom zweiten Knoten empfangen
wurden. Das dritte Datenpaket wird am zweiten Knoten empfangen und
der Empfang des dritten Datenpakets dauert eine endliche Menge an Zeit.
Die Übertragung
eines vierten Datenpakets vom zweiten Knoten zum ersten Knoten wird
begonnen, nachdem die Übertragung
des zweiten Datenpakets geendet hat, nachdem der Empfang des dritten
Datenpakets begonnen hat und bevor der Empfang des dritten Datenpakets
geendet hat. Die Übertragung des
vierten Datenpakets beginnt, bevor irgendwelche Bestätigungsinformationen,
die dem zweiten Datenpaket entsprechen, vom ersten Knoten empfangen wurden.
Das vierte Datenpaket umfasst Bestätigungsinformationen, die angeben,
ob das erste Datenpaket vom zweiten Knoten korrekt empfangen wurde.
Die Übertragung
des ersten Datenpakets und die Übertragung
des vierten Datenpakets sind verriegelt, so dass das vierte Datenpaket
im Wesentlichen um eine vorbestimmte Menge an Zeit nach der Übertragung
des ersten Datenpakets übertragen
wird. Das vierte Paket wird am ersten Knoten empfangen und die Bestätigungsinformationen,
die angeben, ob das erste Datenpaket korrekt empfangen wurde, wird am
ersten Knoten verarbeitet. Der erste Knoten überträgt das erste Datenpaket erneut,
wenn das erste Datenpaket am zweiten Knoten nicht korrekt empfangen
wurde.
-
Spezielle
Ausführungsbeispiele
können
implementiert werden, um einen oder mehrere der folgenden Vorteile
zu verwirklichen. Ein Sender und ein Empfänger können sehr genau (z.B. auf innerhalb
im Wesentlichen 10 Mikrosekunden oder weniger) synchronisiert werden.
Die Wartezeit kann begrenzt und niedrig gehalten werden (z.B. weniger
als im Wesentlichen 10 Mikrosekunden). Daten können mit niedriger Wartezeit über einen
einzigen physikalischen Wegverbindungsstecker übertragen werden. Ein gleiches
Kommunikationsprotokoll kann für
mehrere Kommunikationsverbindungen, die mit verschiedenen Geschwindigkeiten
arbeiten, in einem einzigen System verwendet werden. Das Kommunikationsprotokoll
kann kostengünstig
in Hardware implementiert werden.
-
Bandbreite
kann für
die Datenübertragung verwendet
werden, die ansonsten für
das Warten auf eine Bestätigung
verwendet werden würde.
Eine Fehlererkennung und –wiederherstellung
können
an Flusssteuerinformationen und Bestätigungsinformationen gleichzeitig
durchgeführt
werden. Fehlerinformationen können
durch ein ganzes System schnell übertragen
werden. Mehrere unabhängige
Ströme von
Daten mit verschiedenen Prioritätsniveaus
können
im ganzen System übertragen
werden.
-
Diese
allgemeinen und speziellen Aspekte können unter Verwendung eines
Verfahrens, einer Vorrichtung, eines Systems oder irgendeiner Kombination
von Verfahren, Vorrichtungen und Systemen implementiert werden.
-
Die
Details von einem oder mehreren Ausführungsbeispielen der Erfindung
sind in den zugehörigen
Zeichnungen und der nachstehenden Beschreibung dargelegt. Weitere
Merkmale, Aspekte und Vorteile der Erfindung werden aus der Beschreibung,
den Zeichnungen und den Ansprüchen
ersichtlich.
-
1 ist
ein Blockdiagramm eines Systems, das mehrere Kneten umfasst, die
durch Verbindungen verbunden sind.
-
2 ist
ein Diagramm der Struktur eines Datenpakets.
-
3 ist
ein Ablaufdiagramm einer Paketübertragung
zwischen Knoten.
-
4 ist
ein Ablaufdiagramm eines Fehlerwiederherstellungsszenarios.
-
5 ist
ein Ablaufdiagramm eines Fehlerwiederherstellungsszenarios.
-
6 ist
ein Ablaufplan eines an einem Knoten durchgeführten Prozesses.
-
Gleiche
Bezugsziffern und Bezeichnungen in den verschiedenen Zeichnungen
geben gleiche Elemente an.
-
Eine
Verbindungsebene wird beschrieben, die einen im Wesentlichen kontinuierlichen
Strom von seriellen Duplexdaten zwischen zwei Systemknoten verwendet.
Knoten können
beispielsweise Computer, programmierbare Prozessoren, anwenderprogrammierbare
Verknüpfungsfelder
(FPGAs) oder andere Datenverarbeitungsvorrichtungen umfassen. Die
Daten werden in Pakete mit fester Länge unterteilt. Jedes Paket
mit fester Länge
kann Daten, Fehlerprüfinformationen,
Flusssteuerinformationen, Diagnoseinformationen, Fehlerinformationen
und Neuübertragungs-Steuerinformationen
enthalten. Die Daten in jedem Paket können Hardwareebenendaten oder
Teile von Nachrichten (z.B. Softwarenachrichten) umfassen.
-
Die
Pakete mit fester Länge
werden kontinuierlich zwischen zwei Knoten ungeachtet dessen übertragen,
ob Daten zur Übertragung
zur Verfügung stehen.
Wenn keine Daten zur Übertragung
zur Verfügung
stehen, kann das Datenfeld eines Pakets mit "Füllfeld"-Daten gefüllt werden,
die am Empfangsknoten verworfen werden können. Die übertragenen Pakete umfassen
Bestätigungen
von vorher empfangenen Paketen und ein Sendeknoten überträgt ein erstes
Paket und beginnt die Übertragung
mindestens eines nachfolgenden Pakets vor dem Empfang einer Bestätigung des
ersten Pakets vom Empfangsknoten. Die Übertragung und der Empfang
von Paketen an einem Knoten sind verriegelt, wie nachstehend genauer
beschrieben wird.
-
Wie
in 1 gezeigt, können
Daten von einem ersten Knoten 110 zu mehreren Zielknoten – beispielsweise
einem zweiten Knoten 120, einem dritten Knoten 130 und
einem vierten Knoten 140 – durch Multiplexieren der
Daten auf einer Verbindung übertragen
werden. Knoten zwischen dem ersten Knoten 110 und einem
speziellen Zielknoten können die
Daten leiten. Der erste Knoten 110 kann Daten für den zweiten
Knoten 120 über
eine erste Verbindung 125 übertragen. Der erste Knoten 110 kann
auch Daten für
den dritten Knoten 130 über
die erste Verbindung 125 zum zweiten Knoten 120 übertragen
und der zweite Knoten 120 kann die Daten über eine zweite
Verbindung 135 zum dritten Knoten 130 leiten. Ebenso
kann der erste Knoten 110 Daten für den vierten Knoten 140 über die erste
Verbindung 125 übertragen
und der zweite Knoten 120 kann die Daten über eine
dritte Verbindung 145 zum vierten Knoten 140 leiten.
-
Die
Bezeichnung eines Zielknotens kann in einer Implementierung in einer
Nachricht gehandhabt werden, die in den übertragenen Daten enthalten
ist. In dieser Implementierung verarbeitet der zweite Knoten 120 typischerweise
zumindest einen Teil einer Nachricht, die vom ersten Knoten 110 gesandt wird,
bevor Pakete, die Teile der Nachricht enthalten, zum Zielknoten
gesandt werden. Wenn der zweite Knoten 120 selbst der Zielknoten
ist, muss die Nachricht nicht weiter übertragen werden.
-
In
einigen Systemen geschehen Kommunikationen häufiger zwischen dem ersten
Knoten 110 und dem dritten Knoten 130 und dem
vierten Knoten 140 als Kommunikationen zwischen dem dritten
Knoten 130 und dem vierten Knoten 140 geschehen.
In solchen Systemen kann die erste Verbindung 125 eine
Verbindung mit höherer
Geschwindigkeit als die zweite Verbindung 135 oder die
dritte Verbindung 145 sein, um eine ausreichende Kapazität für das größere Volumen
von Daten, das über
die erste Verbindung 125 läuft, bereitzustellen.
-
Die
Knoten 110, 120, 130 und 140 können einen
oder mehrere Hardware-Datenpuffer 152–164 umfassen,
die Nachrichten empfangen und die Nachrichten halten, bis die Software,
die auf dem jeweiligen Knoten oder auf einer Datenverarbeitungsvorrichtung
in Kombination mit dem jeweiligen Knoten ausgeführt wird, bereit ist, die Nachrichten
zu empfangen.
-
Wie
in 2 gezeigt, kann ein Paket 200 mit fester
Länge von
einer Implementierung mehrere Bytes 201–240 umfassen. Obwohl
ein 40-Byte-Paket gezeigt ist, kann das Paket mit fester Länge andere Längen aufweisen.
In der gezeigten Implementierung sind Steuerinformationen in 8 der
40 Bytes angeordnet und Daten sind in den restlichen 32 Bytes angeordnet.
Das erste Byte 201 ist ein Synchronisationsfeld, das verwendet
werden kann, um die Bytesynchronisation an einem Knoten, der die
Pakete empfängt,
aufrechtzuerhalten. Ein zusätzliches
Synchronisationsbyte kann periodisch zu einem Paket (z.B. einmal
all 128 Pakete) hinzugefügt werden, um die Taktdrift
zwischen Knoten zu kompensieren. Das zweite Byte 202 ist
ein Bestätigungsfeld,
das angibt, ob das letzte Paket, das vom Knoten empfangen wurde,
der das Paket 200 überträgt, korrekt
empfangen wurde (z.B. eine gültige
Fehlerprüfinformation
enthielt). Das zweite Byte 202 kann auf einen Eins-Wert (z.B.
0 × AC)
gesetzt werden, um eine Bestätigung (ACK)
anzugeben, dass das letzte Paket korrekt empfangen wurde, und auf
den inversen Wert (z.B. 0 × 53)
gesetzt werden, um anzugeben, dass das letzte Paket nicht korrekt
empfangen wurde (keine Bestätigung
oder NAK). In einer Implementierung kann irgendein anderer Wert
als der Bestätigungswert
als keine Bestätigung
interpretiert werden. In dieser Implementierung ist, wenn der NAK-Wert
das Inverse des ACK-Werts ist, ein 8-Bit-Fehler erforderlich, um eine übertragene
NAK in eine ACK zu transformieren.
-
Das
dritte Byte 203 ist ein Antwortfeld, das mehrere Steuerbits
enthält,
wie z.B. ein Testmodusbit, das angibt, dass sich das System in einem
Diagnosetestmodus befindet, und ein XOFF-Bit für jeden von mehreren Nachrichtenkanälen (z.B.
Kanäle
mit niedriger, mittlerer und hoher Priorität). Die Steuerbits können auch
ein Neuübertragungsbit
umfassen, das, wenn es gesetzt ist, angibt, dass das Paket 200 eine
Neuübertragung
eines früheren
Pakets ist. Eines oder mehrere der Steuerbits können auch Fehlerbits sein,
die angeben, dass im System ein Fehler aufgetreten ist.
-
Das
vierte Byte 204 ist ein Kopffeld. Das Kopffeld kann mehrere
Unterfelder wie z.B. ein Kanalauswahl-Unterfeld und ein Befehlsunterfeld,
umfassen. Das Kanalauswahl-Unterfeld wird verwendet, um anzugeben,
auf welchem Prioritätskanal
die Daten im Paket 200 übertragen
werden. Das Befehlsunterfeld kann Befehle umfassen, um Puffer zu
spülen und
einen Nachrichtenstrom erneut zu starten. Das Befehlsunterfeld kann
Befehle, die anfordern, dass spezielle Daten über den Hardwarekanal gesandt werden,
oder Codes, um solche Daten zu identifizieren, umfassen. Das Befehlsunterfeld
kann auch verwendet werden, um das System zu synchronisieren. Am
Beginn eines Synchronisationszyklus kann beispielsweise ein Paket,
das den Synchronisationsbefehl enthält, gesandt werden, was Untersysteme
innerhalb des Systems aktiviert, die die Synchronisation (z.B. auf
innerhalb 10 Mikrosekunden) aufrechterhalten. Das fünfte Byte 205 ist
ein Sequenznummerfeld, das eine Sequenznummer enthält, die
von einem Empfangsknoten verwendet werden kann, um Übertragungsfehler
zu erfassen. Das sechste Byte 206 bis 37. Byte 237 gehören zu einem
Datenfeld, das 32 Datenbytes hält,
wie z.B. eine Nachricht oder ein Teil einer Nachricht.
-
Das
38. Byte 238 ist ein Paketende-Feld, das festlegen kann,
wie viele der Bytes im Datenfeld einer Nachricht entsprechen und
wie viele Bytes Füllbytes sind.
Das Paketende-Feld kann auch ein Nachrichtenende-Indikatorbit umfassen,
das gesetzt wird, wenn die Bytes im Datenfeld eine Nachricht beenden.
Das Nachrichtenende-Indikatorbit kann eine Unterbrechung am Empfangsknoten
auslösen.
Das 39. Byte 239 und das 40. Byte 240 sind ein
Teil eines Fehlerprüffeldes,
das in einer Implementierung einen 16-Bit-CRC-Wert (z.B. unter Verwendung
des CCITT-16-Bit-Algorithmus berechnet) enthaften kann. Wenn ein
Knoten ein Paket empfängt,
kann der Knoten das Fehlerprüffeld
verwenden, um festzustellen, ob ein Fehler aufgetreten ist, während das
Paket gesandt oder empfangen wurde.
-
Die
Struktur des Pakets 200 ermöglicht Fehlerreaktions-Logik-
(FRL) Signale, die einen Fehler in einem Knoten angeben, der in
mehreren Weisen übertragen
werden soll. FRL-Signale können
beispielsweise in Paketsteuerinformationen (z.B. in Steuerbits des
Antwortfeldes des Pakets 200) und/oder in Nachrichten übertragen
werden. Die Übertragung
von FRL-Signalen direkt in Paketsteuerinformationen ermöglicht,
dass die Fehlerinformationen sehr schnell systemweit übertragen
werden und auf einer sehr niedrigen Ebene bearbeitet werden. Ein
systemweites Fehlersignal kann ohne Softwareeingriff ausgebreitet
werden und eine Fehlerreaktionshardware kann das System in einen
sicheren Zustand setzen, wenn ein Fehlersignal empfangen wird. Sobald
das Problem, das den Fehler verursacht hat, gelöst wurde (z.B. durch den Eingriff
einer menschlichen Bedienperson), kann das Fehlersignal gelöscht werden
und das System kann in einen Betriebszustand zurückkehren. Wenn das Fehlersignal gelöscht wird,
wird das FRL-Signal, das einen Fehler angibt, typischerweise nicht
in den Paketsteuerinformationen übertragen,
bis ein weiterer Fehler auftritt.
-
Ein
Beispiel eines Systems, in dem eine schnelle Ausbreitung eines Fehlersignals
vorteilhaft ist, ist ein chirurgisches Robotersystem. Ein solches System
kann mehrere Roboterarme umfassen, die chirurgische Instrumente
oder Vorrichtungen (z.B. Laparoskope, Endoskope, Lichter, Kameras
und Insufflatoren) halten, von denen sich einige innerhalb eines
Patienten befinden können.
Die Roboterarme werden typischerweise von einem Chirurgen ferngesteuert.
Kommunikationen zwischen Steuerungen, die der Chirurg bedient, und
den Knoten, die die Roboterarme steuern, können die Verfahren, Systeme und
Vorrichtungen, die in der vorliegenden Offenbarung beschrieben werden,
verwenden. Wenn ein Fehler in einem solchen System auftritt, können die Roboterarme
an der Stelle verriegelt werden, so dass der Patient durch unbeabsichtigte
Bewegungen der Roboterarme nicht verletzt wird. Wenn der Systemfehler
auftritt und ein Systemfehler zwischen Knoten ausgebreitet wird,
können
Bremsen auf die Gelenke der Roboterarme angewendet werden und die Übertragung
von Bewegungsbefehlen kann unterbrochen werden, bis der Fehler durch
eine menschliche Bedienperson oder automatisch durch eine Systemüberwachungseinheit
beseitigt ist.
-
Die
beschriebene Paketstruktur ermöglicht, dass
Daten wie z.B. Nachrichten auf einem einzelnen Kanal oder auf mehreren
Kanälen
gesandt werden, die auf einer seriellen Verbindung multiplexiert
werden. Der Kanal, auf dem eine spezielle Nachricht gesandt wird,
wird durch das Kanalauswahl-Unterfeld im Paket 200 angegeben.
Die Systemsoftware kann Nachrichten in verschiedene Hardwarepuffer
für jeden
Kanal (z.B. unter Verwendung von verschiedenen Adressen) setzen
und die Systemhardware weist automatisch eine Nachricht einem Kanal
auf der Basis dessen zu, in welchen Puffer die Nachricht gesetzt
wurde. Den mehreren Kanälen
können
verschiedene Prioritätsniveaus
zugewiesen werden. In einer Implementierung wird, wenn Nachrichten
mit unterschiedlichen Prioritäten
auf die Übertragung warten,
ein Paket oder eine Gruppe von Paketen, die Daten enthalten, die
auf einem Kanal mit hoher Priorität übertragen werden, vor einem
Paket oder einer Gruppe von Paketen, die Daten enthalten, die auf
einem Kanal mit niedriger Priorität übertragen werden, übertragen.
In einer weiteren Implementierung wird Paketen, die Daten enthalten,
die auf einem Kanal mit hoher Priorität übertragen werden, mehr Sendeschlitze
zugewiesen als Paketen, die Daten enthalten, die auf einem Kanal
mit niedriger Priorität übertragen
werden. Zeitkritische Nachrichten können auf dem Kanal mit hoher
Priorität übertragen
werden, während
relativ unbedeutenden Nachrichten auf dem Kanal mit niedriger Priorität übertragen
werden können.
Die Systemhardware kann einen Teil einer Nachricht automatisch übertragen,
sobald genügend Daten
in einen Puffer geschrieben sind, um ein Paket zu füllen. Das
heißt,
die Nachrichtenübertragung kann
durchgeführt
werden, wenn Daten verfügbar werden,
und muss nicht warten, bis eine ganze Nachricht in den Puffer geschrieben
ist.
-
Die
XOFF-Bits im dritten Byte 203 steuern den Fluss von Daten
in den Kanälen.
Jeder Knoten kann mehrere Hardwarepuffer umfassen, die Nachrichten
empfangen, die auf einem jeweiligen der mehreren Kanäle übertragen
werden. Nachrichten mit hoher Priorität werden beispielsweise in
einem Puffer mit hoher Priorität
gespeichert und Nachrichten mit niedriger Priorität werden
in einem Puffer mit niedriger Priorität gespeichert. Wenn ein erster
Knoten, der das Paket 200 überträgt, ein XOFF-Bit im Paket 200 setzt,
befiehlt der erste Knoten einem zweiten Knoten, der das Paket 200 empfängt, die Übertragung
von Daten zum ersten Knoten auf dem jeweiligen Datenkanal zu stoppen.
Die Hardware des ersten Knotens kann automatisch ein XOFF-Bit für einen Datenkanal
setzen, beispielsweise wenn ein Puffer, in den der erste Knoten
Nachrichten von diesem Datenkanal setzt, voll wird. In einer Implementierung wird
eine Schwelle dafür,
wenn ein Knoten das XOFF-Bit für
einen gegebenen Kanal setzt, gleich der Größe des Empfangspuffers des
jeweiligen Kanals im Knoten (z.B. 512 Worte) minus 32 Worte (4 Pakete)
gesetzt. Die 32-Wort-Toleranz gibt dem Empfangsknoten Zeit, um das
XOFF-Signal mit einer Toleranz für
Fehler zu empfangen und zu verarbeiten. Andere Schwellenpegel sind
möglich.
Die Hardware des ersten Knotens kann auch das XOFF-Bit für den Datenkanal
setzen, wenn sich eine große
Anzahl (z.B. 12) von Nachrichten im Empfangspuffer befindet. Die
Hardware kann das XOFF-Bit für
den Datenkanal automatisch löschen,
sobald Pakete oder Nachrichten aus dem Puffer entfernt werden. Jeder Prioritätskanal
kann einen jeweiligen Empfangspuffer in einem Knoten aufweisen.
Da die XOFF-Bits
in jedem Paket übertragen
werden, gilt das Fehlerprüffeld für die XOFF-Bits
und schützt
gegen eine Verfälschung
der XOFF-Bits.
-
Mehrere
Kommunikationskanäle
können
in der Verbindungsebene unter Verwendung des vorstehend beschriebenen
Kanalauswahl-Unterfeldes zur Verfügung gestellt werden. Ein Hardwarekanal und
Kanäle
mit hoher, mittlerer und niedriger Priorität können beispielsweise implementiert
werden. Nachrichten können
in der Länge
variieren (z.B. zwischen 3 und 128 Worten) und können in einem oder mehreren
Paketen in Abhängigkeit
von der Länge
der Nachricht übertragen
werden. Das erste Byte einer Nachricht kann die Adresse eines Zielknotens
für die Nachricht
enthalten. Die Systemhardware kann Nachrichten in mehrere Pakete
an einem Sendeknoten fragmentieren und die Nachrichten an einem Empfangsknoten
defragmentieren. Wenn eine Nachricht den Datenteil eines Pakets
nicht füllt,
können Fülldaten
in den Rest des Datenteils eingefügt werden. Sende- und Empfangspuffer
für die
Nachrichten können
in der Hardware implementiert werden. Ein Knoten kann beispielsweise
Hardware-Sende und – Empfangspuffer
für jeden
Kanal (z.B. Kanäle
mit hoher, mittlerer und niedriger Priorität) umfassen. In einer Implementierung
sind die Sende- und Empfangspuffer für die Kanäle 1,5 mal eine maximale Nachrichtengröße.
-
3 zeigt
ein konzeptionelles Ablaufdiagramm für die Kommunikation zwischen
zwei Knoten unter Verwendung von Paketen wie z.B. den im Zusammenhang
mit 2 erörterten.
Pakete 301–304 werden
nacheinander von einem primären
Knoten zu einem sekundären
Knoten übertragen.
Pakete 311–314 werden
am sekundären
Knoten empfangen und entsprechen den Paketen 301–304,
obwohl die Pakete 311–314 verfälschte Versionen
der jeweiligen Pakete 301–304 sein können, wenn Übertragungsfehler
aufgetreten sind. Der Empfang der Pakete 311–314 ist
aufgrund der endlichen Ausbreitungszeit der Pakete entlang einer
Verbindung relativ zur Übertragung
der Pakete 301–304 zeitlich
verzögert.
In dem in 3 gezeigten Beispiel ist die
Ausbreitungszeit des Pakets geringer als die Dauer des Pakets (die
Menge an Zeit, die für
den primären
Knoten erforderlich ist, um das Paket zu übertragen).
-
Der
sekundäre
Knoten überträgt Pakete 355–358 zum
primären
Knoten. Pakete 365–368 werden
am primären
Knoten nach einer Verzögerung empfangen
und entsprechen den Paketen 355–358. Das Paket 356 umfasst
ein Bestätigungsfeld,
das für das
Paket 301 gilt. Wenn das Paket 311 (das dem Paket 301 entspricht),
korrekt am sekundären
Knoten empfangen wurde, umfasst das Paket 356 eine ACK
für das
Paket 301. Wenn das Paket 311 nicht korrekt empfangen
wurde, umfasst das Paket 356 eine NAK. Das Paket 357 umfasst
ein Bestätigungsfeld,
das dem Paket 302 entspricht. Ebenso umfasst das Paket 303 ein
Bestätigungsfeld,
das angibt, ob das Paket 365 am primären Knoten korrekt empfangen
wurde oder nicht, und das Paket 304 umfasst ein Bestätigungsfeld
für das
Paket 366.
-
In
einer Implementierung beginnt der sekundäre Knoten die Übertragung
von Paketen nicht, bis ein erstes Bestätigungsfeld vom primären Knoten empfangen
wird. Der sekundäre
Knoten beginnt beispielsweise die Übertragung des Pakets 355 nicht, bis
der sekundäre
Knoten das Bestätigungsfeld
im Paket 311 empfängt.
Um die anfängliche
Synchronisation zwischen dem primären und dem sekundären Knoten
zu erleichtern, können
die zwei Knoten mehrere sequentielle Synchronisationsbytes zueinander übertragen,
bevor der primäre
Knoten das Paket 301 überträgt.
-
3 stellt
einen Fall dar, in dem sich eine Zwei-Paket-"Pipeline" zwischen dem primären und dem sekundären Knoten
befindet. Das Paket 356 enthält ein Bestätigungsfeld für das Paket 301.
Wenn das Bestätigungsfeld
eine ACK enthält, überträgt der primäre Knoten
das Paket 303. Wenn jedoch das Bestätigungsfeld des Pakets 356 eine
NAK enthält, kann
der primäre
Knoten die Pakete 301 und 302 neu synchronisieren
und neu übertragen.
In dieser Implementierung werden zwei Pakete erneut übertragen, wenn
eine NAK für
das erste der zwei Pakete empfangen wird, um das System erneut zu
synchronisieren. Wenn das erste der zwei Pakete nicht korrekt empfangen
wurde, kann das zweite Paket neu übertragen werden, ohne zu prüfen, ob
das zweite Paket zum ersten Mal, zu dem es übertragen wurde, korrekt empfangen
wurde. In einer Situation, in der der Fehler im ersten Paket durch
den Verlust der Synchronisation zwischen den zwei Knoten verursacht
wurde, würde
das zweite Paket wahrscheinlich Fehler enthalten, so dass das Paket
präventiv
neu übertragen wird.
Der Knoten, der die NAK übertragen
hat, überträgt die letzten
zwei Pakete, die er vor der Übertragung
der NAK übertragen
hat, auch erneut. 3 ist als mit einer Zwei-Paket-Pipeline
zwischen dem primären
und dem sekundären
Knoten beschrieben, da ein Bestätigungsfeld
für ein
gegebenes Paket erst dann empfangen wird, nachdem ein anderes Paket übertragen
wurde. Die Umlaufzeit zwischen dem primären und dem sekundären Knoten
ist gleich der oder geringfügig
geringer als die Zeit, die erforderlich ist, um ein Paket zu übertragen – das heißt, der
primäre
Knoten beginnt den Empfang des Pakets 365, bevor der primäre Knoten
die Übertragung
des Pakets 301 beendet hat. Die Umlaufzeit hängt typischerweise
von der Ausbreitungsverzögerung über eine
Verbindung und der Verarbeitungszeit an einem Knoten ab. Längere Umlaufzeiten
(länger
in der absoluten Zeit oder in der Zeit relativ zur Paketdauer) können auch
in einem System verwendet werden und können zu einer Pipeline führen, die
tiefer als zwei Pakete ist.
-
Pakete
werden im Wesentlichen kontinuierlich zwischen dem primären und
dem sekundären Knoten
ungeachtet dessen übertragen,
ob Nachrichten zum Anordnen in den Datenfeldern der Pakete vorhanden
sind. Die Pakete werden in einer verriegelten Weise übertragen,
wie in 3 gezeigt. Die verriegelte Übertragung von Paketen mit
fester Länge
verursacht einen festen Phasenversatz zwischen den an einem Knoten
empfangenen Paketen und den vom Knoten gesandten Paketen. Der Knoten
empfängt
ein Paket von einem entfernten Knoten, das eine Bestätigung eines
fehlerfreien Empfangs eines vorher übertragenen Pakets enthält, um eine
vorbestimmte Menge an Zeit nach der Übertragung des vorher übertragenen
Pakets. Die kontinuierliche Übertragung
von verriegelten Pakten ermöglicht Kommunikationen
mit hoher Bandbreite und niedriger Wartezeit mit einer genauen Synchronisation
zwischen Knoten. Außerdem
ermöglicht
die kontinuierliche Übertragung
von Paketen, dass das System die Bitfehlerrate (BER) einer Verbindung
zwischen Knoten genau und im Wesentlichen kontinuierlich berechnet.
-
Wenn
der sekundäre
Knoten ein Paket 411 vom primären Knoten empfängt und
feststellt, dass ein Übertragungsfehler
aufgetreten ist, der verursacht hat, dass die Daten im Paket 411 verfälscht werden,
beendet der sekundäre
Knoten, wie in 4 gezeigt, die Übertragung
eines Pakets und überträgt anstelle
der Übertragung
eines nächsten
Pakets eine NAK und eine Neusynchronisationssequenz 456 zum
primären
Knoten. Die Neusynchronisationssequenz 456 wird übertragen,
um die Synchronisation zwischen dem primären und dem sekundären Knoten
wiederherzustellen, da ein Grund dafür, dass das Paket 411 verfälscht worden
sein kann, darin besteht, dass die Synchronisation zwischen dem
primären und
sekundären
Knoten abgenommen haben kann oder verloren gegangen sein kann. Die
Neusynchronisationssequenz kann aus abwechselnden Synchronisationsfeldern
und Verbindungsfeldern bestehen, wobei das Verbindungsfeld ein vorbestimmter Code
wie z.B. 0 × A3
sein kann. In einer Implementierung müssen vier Verbindungsbytes
empfangen werden, bevor ein Knoten als neu synchronisiert betrachtet
wird. Der primäre
Knoten empfängt
eine NAK und eine Neusynchronisationssequenz 466 und überträgt eine
Neusynchronisationssequenz 403. Nachdem der primäre Knoten
die Neusynchronisationssequenz 403 übertragen hat, sendet der primäre Knoten
die letzten Pakete, die vor dem Empfang der NAK übertragen wurden, erneut. Im
Fall einer N-Paket-Pipeline werden die letzten N Pakete erneut gesandt.
Sobald der sekundäre
Knoten eine ACK in einem ersten neu übertragenen Paket 414 empfängt, beginnt
der sekundäre
Knoten auch die Neuübertragung
von Paketen.
-
Wenn
der primäre
Knoten ein Paket 565 vom sekundären Knoten empfängt und
feststellt, dass ein Übertragungsfehler
aufgetreten ist, der verursacht hat, dass die Daten im Paket 565 verfälscht werden, sendet
der primäre
Knoten, wie in 5 gezeigt, eine NAK und Neusynchronisationssequenz 503 zum
sekundären
Knoten. Der sekundäre
Knoten empfängt eine
NAK und Neusynchronisationssequenz 513 und sendet eine
Neusynchronisationssequenz 557. Nachdem der primäre Knoten die NAK und Neusynchronisationssequenz 503 übertragen
hat, sendet der primäre
Knoten die letzten Pakete, die vor dem Empfang des verfälschten
Pakets übertragen
wurden, erneut. Sobald der sekundäre Knoten eine ACK in einem
ersten erneut übertragenen
Paket 514 empfängt,
beginnt der sekundäre
Knoten auch die Neuübertragung
von Paketen.
-
Ein
Fehlerzähler
kann die Anzahl von Hardware-Übertragungsfehlern,
die in einem Knoten auftreten, verfolgen. Eine Unterbrechung kann
aktiviert werden, wenn der Zähler
eine Schwelle erreicht. In einer Implementierung kann der Fehlerzähler von
der Software im Knoten gelesen werden und die Software kann die
Unterbrechungsschwelle setzen. Eine Fehlererkennung und -korrektur
können
in diesem System auf einer sehr niedrigen Ebene bearbeitet werden
und eine Software-Ebene, die auf der beschriebenen Verbindungsebene
arbeitet, muss keine zusätzliche
Fehlererkennung und -korrektur implementieren.
-
6 stellt
einen Prozess 600 dar, der an einem Knoten in einer Implementierung
durchgeführt wird.
Der Knoten beginnt mit dem Empfang eines ersten Pakets (Schritt 610)
und empfängt
ein Bestätigungsfeld
im ersten Paket (Schritt 615). Der Knoten stellt fest,
ob das Bestätigungsfeld
eine ACK oder eine NAK ist (Schritt 620). Wenn das Bestätigungsfeld
eine NAK ist, überträgt der Knoten
eine Neusynchronisationssequenz (Schritt 625) und überträgt das Paket,
das der empfangenen NAK entspricht, zusammen mit irgendwelchen Paketen,
die nach diesem Paket übertragen
wurden, erneut (Schritt 630). Wenn das Bestätigungsfeld
eine ACK ist, beginnt der Knoten mit der Übertragung eines zweiten Pakets
(Schritt 635) und prüft
das erste Paket auf Fehler (Schritt 640), beispielsweise
durch Überprüfen eines CRC-Werts
im Paket. Wenn Fehler im ersten Paket erkannt wurden, beendet der
Knoten die Übertragung
des zweiten Pakets (Schritt 645) und überträgt eine NAK und Neusynchronisationssequenz
(Schritt 650).
-
Wenn
keine Fehler im ersten Paket erkannt wurden, stellt der Knoten fest,
ob ein Fehlerbit im ersten Paket gesetzt war (Schritt 655).
Wenn ein Fehlerbit gesetzt war, wird der Knoten in einen Fehlermodus
oder einen sicheren Zustand gesetzt (Schritt 660). Wenn
das Fehlerbit nicht gesetzt war oder sobald der Knoten in einen
Fehlermodus gesetzt wird, beendet der Knoten die Übertragung
des zweiten Pakets (Schritt 665) und beginnt mit der Übertragung
eines dritten Pakets (Schritt 670).
-
Ausführungsbeispiele
der Erfindung und alle der funktionalen Operationen, die in dieser
Patentbeschreibung beschrieben sind, können in einer digitalen elektronischen
Schaltung oder in der Computersoftware, -firmware oder – hardware,
einschließlich der
in dieser Patentbeschreibung offenbarten Strukturen und ihrer strukturellen Äquivalente,
oder in Kombinationen von einer oder mehreren von ihnen implementiert
werden. Ausführungsbeispiele
der Erfindung können
als ein oder mehrere Computerprogrammprodukte, d.h. ein oder mehrere
Module von Computerprogrammbefehlen, die auf einem maschinenlesbaren
Medium codiert sind, zur Ausführung durch
oder zum Steuern der Operation einer Datenverarbeitungsvorrichtung
implementiert werden. Das maschinenlesbare Medium kann eine maschinenlesbare
Speichervorrichtung, ein maschinenlesbares Speichersubstrat, eine
Speichervorrichtung, eine Zusammensetzung einer Sache, die ein maschinenlesbares
ausgebreitetes Signal bewirkt, oder eine Kombination von einem oder
mehreren von ihnen sein. Der Begriff "Datenverarbeitungsvorrichtung" umfasst alle Geräte, Vorrichtungen
und Maschinen zur Verarbeitung von Daten, einschließlich als
Beispiel eines programmierbaren Prozessors, eines Computers oder
mehrerer Prozessoren oder Computer. Die Vorrichtung kann zusätzlich zur
Hardware einen Code umfassen, der eine Ausführungsumgebung für das fragliche
Computerprogramm erzeugt, z.B. einen Code, der eine Prozessorfirmware,
ein Protokollprofil, ein Datenbankverwaltungssystem, ein Betriebssystem
oder eine Kombination von einem oder mehreren von ihnen bildet.
Ein ausgebreitetes Signal ist ein künstlich erzeugtes Signal, z.B.
ein von einer Maschine erzeugtes elektrisches, optisches oder elektromagnetisches
Signal, das erzeugt wird, um Informationen zur Übertragung zu einer geeigneten
Empfängervorrichtung
zu codieren.
-
Ein
Computerprogramm (auch als Programm, Software, Softwareanwendung,
Skript oder Code bekannt) kann in einer beliebigen Form von Programmiersprache
geschrieben werden, einschließlich
kompilierter oder interpretierter Sprachen, und es kann in einer
beliebigen Form entwickelt werden, einschließlich als eigenständiges Programm oder
als Modul, Komponente, Subroutine oder andere Einheit, die zur Verwendung
in einer Rechenumgebung geeignet ist. Ein Computerprogramm entspricht nicht
notwendigerweise einer Datei in einem Dateisystem. Ein Programm
kann in einem Teil einer Datei gespeichert werden, die andere Programme
oder Daten hält
(z.B. ein oder mehrere Skripts, die in einem Dokumentenauszeichnungssprachen-Dokument
gespeichert sind), in einer einzelnen Datei, die für das fragliche
Programm zweckgebunden ist, oder in mehreren koordinierten Dateien
(z.B. Dateien, die ein oder mehrere Module, Unterprogramme oder
Teile eines Codes speichern.). Ein Computerprogramm kann eingesetzt
werden, damit es auf einem Computer oder auf mehreren Computern
ausgeführt
wird, die sich an einem Ort befinden oder über mehrere Orte verteilt und
durch ein Kommunikationsnetzwerk miteinander verbunden sind.
-
Die
Prozesse und die Logikflüsse,
die in dieser Patentbeschreibung beschrieben sind, können von
einem oder mehreren programmierbaren Prozessoren durchgeführt werden,
die ein oder mehrere Computerprogramme ausführen, um Funktionen durch Verarbeiten
von Eingangsdaten und Erzeugen einer Ausgabe durchzuführen. Die
Prozesse und Logikflüsse
können
auch durch eine Speziallogikschaltung, z.B. ein FPGA (anwenderprogrammierbares Verknüpfungsfeld)
oder eine ASIC (anwendungsspezifische integrierte Schaltung), durchgeführt werden und
die Vorrichtung kann als diese implementiert werden.
-
Prozessoren,
die für
die Ausführung
eines Computerprogramms geeignet sind, umfassen beispielhaft sowohl
Universal- als auch Spezial-Mikroprozessoren und irgendeiner oder
mehrere Prozessoren irgendeiner Art eines digitalen Computers. Im Allgemeinen
empfängt
ein Prozessor Befehle und Daten von einem Festwertspeicher oder
einem Direktzugriffsspeicher oder beiden. Die wesentlichen Elemente
eines Computers sind ein Prozessor zum Durchführen von Befehlen und eine
oder mehrere Speichervorrichtungen zum Speichern von Befehlen und
Daten. Im Allgemeinen umfasst ein Computer auch eine oder mehrere Massenspeichervorrichtungen
zum Speichern von Daten, z.B. magnetische, magnetooptische Platten
oder optische Platten, oder ist wirksam gekoppelt zum Empfangen
von Daten von oder Übertragen
von Daten zu diesen oder beides. Ein Computer muss jedoch nicht
solche Vorrichtungen aufweisen. Überdies
kann ein Computer in eine andere Vorrichtung eingebettet sein, z.B.
ein Mobiltelefon, einen persönlichen
digitalen Assistenten (PDA), ein mobiles Audiowiedergabegerät, einen Empfänger eines
globalen Positionierungssystems (GPS), um nur einige zu nennen.
Maschinenlesbare Medien, die zum Speichern von Computerprogrammbefehlen
und Daten geeignet sind, umfassen alle Formen von nicht-flüchtigem
Speicher, Medien und Speichervorrichtungen, einschließlich als
Beispiel Halbleiterspeichervorrichtungen, z.B. EPROM, EEPROM und
Flash-Speichervorrichtungen;
Magnetplatten, z.B. interne Festplatten oder entnehmbare Festplatten;
magnetooptische Platten; und CD-ROM- und DVD-ROM-Platten. Der Prozessor
und der Speicher können
durch eine Speziallogikschaltung ergänzt oder in diese integriert
sein.
-
Um
einen Dialog mit dem Benutzer bereitzustellen, können Ausführungsbeispiele der Erfindung auf
einem Computer mit einer Anzeigevorrichtung, z.B. einem CRT(Kathodenstrahlröhre) oder
LCD- (Flüssigkristallanzeige)
Monitor, zum Anzeigen von Informationen für den Benutzer und einer Tastatur und
einer Zeigevorrichtung, z.B. einer Maus oder einer Rollkugel, durch
die der Benutzer eine Eingabe in den Computer liefern kann, implementiert
werden. Andere Arten von Vorrichtungen können verwendet werden, um ebenso
eine Wechselwirkung mit einem Benutzer vorzusehen; beispielsweise
kann eine Rückkopplung,
die zum Benutzer geliefert wird, eine beliebige Form von sensorischer
Rückkopplung
sein, z.B. eine visuelle Rückkopplung,
eine akustische Rückkopplung
oder eine taktile Rückkopplung;
und eine Eingabe vom Benutzer kann in einer beliebigen Form empfangen
werden, einschließlich
akustischer, Sprach- oder taktiler Eingabe.
-
Obwohl
diese Patentbeschreibung viele Besonderheiten enthält, sollten
diese nicht als Begrenzungen des Schutzbereichs der Erfindung oder
dessen, was beansprucht sein kann, sondern vielmehr als Beschreibungen
von Merkmalen, die für
spezielle Ausführungsbeispiele
der Erfindung spezifisch sind, aufgefasst werden. Bestimmte Merkmale,
die in dieser Patentbeschreibung im Zusammenhang mit separaten Ausführungsbeispielen
beschrieben sind, können
auch in Kombination in einem einzigen Ausführungsbeispiel implementiert
werden. Dagegen können
verschiedene Merkmale, die im Zusammenhang mit einem einzigen Ausführungsbeispiel
beschrieben sind, auch in mehreren Ausführungsbeispielen separat oder
in einer beliebigen geeigneten Unterkombination implementiert werden.
Obwohl Merkmale vorstehend beschrieben sein können, die in bestimmten Kombinationen
wirken und sogar anfänglich
als solche beansprucht sind, können überdies
ein oder mehrere Merkmale von einer beanspruchten Kombination in
einigen Fällen
von der Kombination entfernt werden und die beanspruchte Kombination
kann auf eine Unterkombination oder Variation einer Unterkombination
gerichtet sein.
-
Obwohl
Operationen in den Zeichnungen in einer speziellen Reihenfolge dargestellt
sind, sollte dies ebenso nicht als Erfordernis verstanden werden, dass
solche Operationen in der gezeigten speziellen Reihenfolge oder
in einer sequentiellen Reihenfolge durchgeführt werden oder dass alle dargestellten Operationen
durchgeführt
werden, um erwünschte Ergebnisse
zu erreichen. Unter bestimmten Umständen können Multitasking und parallele
Verarbeitung vorteilhaft sein. Überdies
sollte die Trennung von verschiedenen Systemkomponenten in den vorstehend beschriebenen
Ausführungsbeispielen
nicht als Erfordernis für
eine solche Trennung in allen Ausführungsbeispielen verstanden
werden, und es sollte selbstverständlich sein, dass die beschriebenen
Programmkomponenten und Systeme im Allgemeinen in einem einzigen
Softwareprodukt zusammen integriert oder in mehrere Softwareprodukte
gepackt werden können.
-
Folglich
wurden spezielle Ausführungsbeispiele
der Erfindung beschrieben. Andere Ausführungsbeispiele liegen innerhalb
des Schutzbereichs der folgenden Ansprüche. Die in den Ansprüchen angeführten Handlungen
können
beispielsweise in einer anderen Reihenfolge durchgeführt werden
und dennoch erwünschte
Ergebnisse erreichen. Die vorstehend beschriebenen Verfahren, Systeme
und Vorrichtungen können
mit verschiedenen physikalischen Transportmechanismen, einschließlich Faseroptik (die
z.B. mit 160 Mb/s arbeitet), spannungsarmer Differentialsignalisierung
(die z.B. mit 122 Mb/s arbeitet), quellensynchroner serieller und
asynchroner Rückwandplatinendrähten, verwendet
werden. In einer Implementierung müssen verfälschte Pakete nicht erneut übertragen
werden, wenn die Pakete Daten enthalten, die Fehler tolerieren können. Gelegentliche
Störspitzen
in einem Video- oder Audiostrom sind beispielsweise annehmbar. Die
Fehlererkennung und Neusynchronisation können dennoch in dieser Implementierung
verwendet werden, um eine schnelle, durch die Handware implementierte
Wiederherstellung von Synchronisationsfehlern zu ermöglichen.