DE102004042068B4 - Verfahren, computerlesbares Medium und System zum Handhaben eines fehlgeschlagenen Verbindungstrainings - Google Patents

Verfahren, computerlesbares Medium und System zum Handhaben eines fehlgeschlagenen Verbindungstrainings Download PDF

Info

Publication number
DE102004042068B4
DE102004042068B4 DE102004042068A DE102004042068A DE102004042068B4 DE 102004042068 B4 DE102004042068 B4 DE 102004042068B4 DE 102004042068 A DE102004042068 A DE 102004042068A DE 102004042068 A DE102004042068 A DE 102004042068A DE 102004042068 B4 DE102004042068 B4 DE 102004042068B4
Authority
DE
Germany
Prior art keywords
data
connection
training
block
communication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE102004042068A
Other languages
English (en)
Other versions
DE102004042068A1 (de
Inventor
Greg Bernard Ft. Collins Lesartre
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE102004042068A1 publication Critical patent/DE102004042068A1/de
Application granted granted Critical
Publication of DE102004042068B4 publication Critical patent/DE102004042068B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

Verfahren zum Handhaben eines fehlgeschlagenen Verbindungstrainings in einem Rechensystem (100), das eine Datenkommunikationsarchitektur (200) aufweist, die einen Serialisierer (1 – n) und einen Deserialisierer (1 – n) verwendet, wobei das Verfahren folgende Schritte umfasst:
Einleiten eines Trainings von Verbindungen zwischen dem Serialisierer und dem Deserialisierer der Datenkommunikationsarchitektur (200);
Erzeugen von Verbindungsverwaltungsdaten zum Codieren durch den Serialisierer;
Kommunizieren der codierten Verbindungsverwaltungsdaten an den Deserialisierer durch den Serialisierer; und
Verarbeiten der codierten Verbindungsverwaltungsdaten durch den Deserialisierer nach einem Beobachten eines Fehlschlagens des Verbindungstrainings, um eine Verbindungstrainingskorrekturmaßnahme zu identifizieren.

Description

  • Die vorliegende Erfindung bezieht sich auf Verfahren, ein computerlesbares Medium und ein System zum Handhaben eines fehlgeschlagenen Verbindungstrainings in einer Datenkommunikationsarchitektur, die einen Serialisierer und einen Deserialisierer verwendet.
  • Rechenarchitekturen, die effizient arbeiten und die Daten rasch verarbeiten können, wird im allgemeinen der Vorrang vor ihren Gegenstücken gegeben. Die Geschwindigkeit, mit der diese Rechenarchitekturen Daten verarbeiten, kann durch eine Anzahl von Faktoren begrenzt sein, einschließlich des Entwurfs der Architektur, der Betriebsbedingungen, der Qualität verwendeter Komponenten sowie der Protokolle, Logik und Methodologien, die durch die Rechnerarchitektur beim Verarbeiten von Daten verwendet werden. Verzögerungszeiten bei der Kommunikation von Daten über Komponenten hinweg, die sich aus Datenkommunikationsarchitekturen und Protokollen einer Rechenarchitektur ergeben, können die Geschwindigkeit, mit der Daten verarbeitet werden können, ebenfalls beeinflussen.
  • Derzeit werden eine Anzahl von Datenkommunikationsarchitekturen eingesetzt, um Daten zwischen kooperierenden bzw. zusammenwirkenden Komponenten einer Rechnerarchitektur zu kommunizieren (z. B. Computerprozessoren in der Verarbeitungseinheit einer Rechenumgebung oder zwischen einem Computerprozessor und einer peripheren Komponente, wie z. B. einem Datenspeicherlaufwerk). Beispielsweise sind sowohl IDE/ATA (Integrated Drive Electronics/Advanced Technology Attachment) als auch SCSI (Small Computer Systems Interface – Kleincomputer-Schnittstelle) übliche Schnittstellen für Festplattenlaufwerke (sowie manche andere Vorrichtungen, z. B. CD-ROM und DVD-Laufwerke), und von jeder bzw. jedem gibt es mehrere Ausführungen. Andere Datenkommunikationsarchitekturen umfassen PCI (Peripheral Components Interconnect), AGP (Accelerated Graphics Port – AGP-Steckplatz), USB (Universal Serial Bus – Universalserienbus), serielle Datenkommunikationstore und parallele Datenkommunikationstore.
  • Obwohl jede der oben erwähnten Datenkommunikationsarchitekturen beim Übertragen von Daten zwischen kooperierenden Komponenten effektiv ist, weist jede dieser Architekturen Nachteile und Einschränkungen der Leistungsfähigkeit auf. Im Einzelnen sind derartige Datenkommunikationsarchitekturen nicht entworfen, um große Mengen an Datenkommunikationen, die bei hohen Taktfrequenzen (z. B. mehreren Gigahertz) kommuniziert werden, zu handhaben. Ferner erfordern die PCI-, IDE- und SCSI-Datenkommunikationsarchitekturen allgemein Mehraufwand-Bearbeitungsberechnungen, wenn sie Daten kommunizieren, die die Gesamtgeschwindigkeit der Datenkommunikationen beeinflussen. Anders gesagt müssen zusätzlich zu den gewünschten Daten, die kommuniziert werden, zusätzliche Mehraufwand-Verarbeitungsdaten kommuniziert werden. Folglich werden während jedes Taktzyklus weniger Gesamtdaten verarbeitet.
  • Als Antwort auf das Erfordernis von Datenkommunikationsarchitekturen einer höheren Bandbreite wurde die SERDES- Datenkommunikationsarchitektur entwickelt (SERDES = serializer/deserializer, Parallel-Serien-Umsetzer/Serien-Parallel-Umsetzer). SERDES fungiert dahingehend, Daten gemäß einem vordefinierten Schema (z. B. Acht-Bit/Zehn-Bit-Codierung – 8b10b-Codierung) zu codieren und decodieren. Die codierten Daten werden zum Decodieren von dem Parallel-Serien-Umsetzer über einen oder mehr Kommunikationskanäle an einen entsprechenden Serien-Parallel-Umsetzer kommuniziert. Die SERDES-Datenkommunikationsarchitektur erhöht erwiesenermaßen die Datenkommunikationsbandbreite zwischen kooperierenden Komponenten. In diesem Kontext werden SERDES-Datenkommunikationsarchitekturen als Datenbusse eingesetzt, die arbeiten, um Daten zwischen kooperierenden Komponenten zu transportieren.
  • Die US 2003/0158992 A1 lehrt eine allgemeine Eingabe/Ausgabe-Architektur, ein Eingabe/Ausgabe-Protokoll und darauf bezogene Verfahren, um eine Flusssteuerung in einer Kommunikationsarchitektur zu implementieren, die geeignet sind, um isochrone Datenströme zu handhaben, beispielsweise Multimedia-Datenströme mit synchronisierten Audio- und Video-Abschnitten. Diese Schrift offenbart eine Prozedur, um Kommunikationsverbindungen neu zu trainieren, enthält jedoch keinen Hinweis darauf, die Trainingsprozedur in dem Fall einzustellen, dass ein erster Trainingsversuch fehlschlägt.
  • Die US 2003/0145134 A1 lehrt eine ähnliche allgemeine Eingabe/Ausgabe-Architektur, ein entsprechendes Protokoll sowie darauf bezogene Verfahren, um eine Flusssteuerung in einer Kommunikationsarchitektur zu implementieren. Auch diese Schrift offenbart eine Prozedur zum Neutrainieren von Kommunikationsverbindungen, enthält jedoch wiederum keine Lehre hinsichtlich des Einstellens der Trainingsprozedur für den Fall, dass ein erster Trainingsversuch fehlschlägt.
  • Die US 2003/0120852 A1 offenbart einen Port-Konfigurationsmechanismus für eine Port-Konfiguration und -Zuordnung und eine Nutzung gemeinsam verwendeter Betriebsmittel, um Datenübertragungen in einem Datennetzwerk zu handhaben. Der Mechanismus ermöglicht, dass ein einzelner Port mehrere Port-Breitenkonfigurationen unterstützt, um eine größere Verbindungsfreiheit zu erreichen, und beinhaltet ein Port-Konfigurationstraining. Diese Schrift erwähnt ferner ein Training vom InfiniBand-Typ von Kommunikationsverbindungen.
  • Die US 2002/0133762 A1 lehrt Verfahren und Vorrichtungen für eine Erfassung physikalischer Gleitfenster-Verbindungsfehler, zum Verfolgen des Auftretens geringerer physikalischer Verbindungsfehler und zum Messen der momentanen Netzwerkqualität. Wenn zu viele Verbindungsfehler auftreten, werden die Verbindungen neu trainiert.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, Verfahren, ein computerlesbares Medium und ein System zum Handhaben eines fehlgeschlagenen Verbindungstrainings mit verbesserten Charakteristika zu schaffen.
  • Diese Aufgabe wird durch Verfahren gemäß Anspruch 1 oder 17, ein computerlesbares Medium gemäß Anspruch 8 und ein System gemäß Anspruch 9 gelöst.
  • Es wird eine Datenkommunikationsarchitektur bereitgestellt, die Parallel-Serien-Umsetzer und Serien-Parallel-Umsetzer zur Verwendung beim Kommunizieren von Daten zwischen Computerverarbeitungskomponenten einer Rechenumgebung verwendet, um die Verzögerungszeit zu verringern. Bei einer veranschaulichenden Implementierung umfasst eine Datenkommunikationsarchitektur eine Datenschnittstelle, einen Parallel-Serien-Umsetzer und einen Serien-Parallel-Umsetzer. Im Betrieb werden Daten von Computerverarbeitungskomponenten durch den Parallel-Serien-Umsetzer empfangen. Der Parallel-Serien-Umsetzer, der mit der Datenschnittstelle zusammenar beitet, codiert die Daten für eine Kommunikation an den Serien-Parallel-Umsetzer gemäß einem ausgewählten Codie rungsprotokoll. Betriebsmäßig arbeiten der Parallel-Serien-Umsetzer und der Serien-Parallel-Umsetzer (SERDES) zusammen, um eine Kommunikationsverbindung oder einen Kommunikationskanal zu bilden. Die Datenschnittstelle ermöglicht unter anderem die Sammlung von Daten, die von jedem Ende der Verbindung über die Verbindung transferiert werden sollen, liefert eine Verbindungsverwaltung und Steuerinformationen, codiert einen Fehlerschutz und liefert eine Logik zum Verarbeiten der Daten über den Kommunikationskanal hinweg.
  • Bezug nehmend auf die beispielhafte Implementierung umfasst die veranschaulichende Datenkommunikationsarchitektur ferner eine Verbindungstrainingsstatusüberwachungseinrichtung, ein Verbindungstrainingsmodul, ein Überwachungsmodul, einen Datenpuffer, ein Verbindungstrainingsmodul, ein Paritätsbitmodul, ein Datenübertragungsquittungsmodul und einen Datenpuffer. Diese Module umfassen einen Abschnitt des Parallel-Serien-Umsetzers und des Serien-Parallel-Umsetzers. Im Betrieb arbeiten diese Module mit der Datenschnittstelle und Anweisungssätzen, die in dem Parallel-Serien-Umsetzer und Serien-Parallel-Umsetzer enthalten sind, zusammen, um Funktionen zu verwirklichen, die folgende umfassen, aber nicht auf diese beschränkt sind: Handhaben ungewisser Datenankunftszeiten, Erfassung von Einbit- und Mehrbitfehlern, Handhaben von Kommunikationsverbindungsausfällen, Adressieren eines Trainings ausgefallener Verbindungen, Identifizieren und Markieren von Daten als verfälscht sowie Identifizieren und Verarbeiten erfolgreicher Datentransaktionen über die Kommunikationsverbindung.
  • Andere Merkmale der Erfindung werden nachfolgend beschrieben.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 ein Blockdiagramm einer exemplarischen Rechenumgebung gemäß einer Implementierung der hierin beschriebenen Systeme und Verfahren;
  • 2 ein Blockdiagramm, das die Zusammenwirkung exemplarischer Komponenten einer exemplarischen Datenkommunikationsarchitektur zeigt;
  • 3 ein Blockdiagramm eines Sendekerns gemäß einer exemplarischen Implementierung einer Datenkommunikationsarchitektur;
  • 4 ein Blockdiagramm eines Empfangskerns gemäß einer exemplarischen Implementierung einer Datenkommunikationsarchitektur;
  • 5 ein Flussdiagramm, das die Verarbeitung zeigt, die durch eine exemplarische Datenkommunikationsarchitektur beim Kommunizieren von Daten durchgeführt wird;
  • 6 ein Flussdiagramm, das die Verarbeitung zeigt, die durch eine exemplarische Datenkommunikationsarchitektur beim Handhaben einer ungewissen Datenankunft durchgeführt wird;
  • 7 ein Flussdiagramm, das die Verarbeitung zeigt, die durch eine exemplarische Datenkommunikationsarchitektur beim Erfassen von Bitfehlern in Datenkommunikationen durchgeführt wird;
  • 8 ein Flussdiagramm, das die Verarbeitung zeigt, die durch eine exemplarische Datenkommunikationsarchitektur beim Adressieren eines Verbindungsausfalls durchgeführt wird;
  • 9 ein Flussdiagramm, das die Verarbeitung zeigt, die durch eine exemplarische Datenkommunikations architektur beim Adressieren eines Verbindungsausfalltrainings durchgeführt wird;
  • 10 ein Flussdiagramm, das die Verarbeitung zeigt, die durch eine exemplarische Datenkommunikationsarchitektur beim Adressieren verfälschter Daten durchgeführt wird;
  • 11 ein Flussdiagramm, das die Verarbeitung zeigt, die durch eine exemplarische Datenkommunikationsarchitektur beim Handhaben einer Fehlererfassung durchgeführt wird; und
  • 12 ein Flussdiagramm, das die Verarbeitung zeigt, die durch eine exemplarische Datenkommunikationsarchitektur durchgeführt wird, um erfolgreiche Datenkommunikationen zu quittieren.
  • Übersicht:
  • Um die bei Rechenumgebungen erforderliche Infrastrukturbandbreite bereitzustellen, wandten sich Implementierungen einer Verwendung von bei hohen Frequenzen arbeitenden SERDES-Punkt-zu-Punkt-Datenkommunikationsarchitekturen zu. Beim Anwenden der SERDES-Datenkommunikationsarchitektur auf die interne Datenkommunikationsinfrastruktur einer Rechenumgebung kommen eine Anzahl von Einschränkungen ans Licht. Allgemein ausgedrückt ergibt sich eine Verzögerungszeit bei Datenkommunikationen aus einer ineffizienten Verwaltung der Datenkommunikationsarchitektur. Die Verwaltung der SERDES-Datenkommunikationsarchitektur kann durch eine Datenschnittstelle erfolgen, die unter anderem Daten zum Kommunizieren entlang der SERDES-Kommunikationsverbindungen zusammenträgt und Fehlererfassungs- und Handhabungsanweisungen für Fehlerdaten liefert.
  • Die vorliegende Erfindung liefert eine Datenschnittstelle zur Verwendung durch SERDES-Verbindungskanäle, die Operationen unterstützen, die auf bidirektionale Weise zwischen Datenkommunikationsarchitekturkomponenten erfolgen. Bei einer veranschaulichenden Implementierung ist ein Mechanismus vorgesehen, um Daten für einen Transfer über eine SERDES-Verbindung von jedem Ende der Verbindung zusammenzutragen. Zusätzlich kann der Mechanismus arbeiten, um Überlagerungsverbindungsverwaltungsinformationen zu liefern, einen Fehlerschutz zu codieren und Daten zu dem richtigen Format zu codieren. Die Datenschnittstelle der hierin beschriebenen veranschaulichenden Implementierung unterhält ferner eine Logik, die annimmt/akzeptiert, SERDES-Komponenten anzuleiten, Daten zusammenzutragen und zwischen SERDES-Verbindungskomponenten zu kommunizieren sowie zu prüfen, dass diese Daten korrekt zusammengetragen und kommuniziert werden.
  • Die veranschaulichende SERDES-Datenkommunikationsarchitektur kann auch einen Datenpuffer verwenden, um Daten zu speichern. Im Betrieb kann der Datenpuffer verwendet werden, um Daten zu speichern, bis ein korrekter Empfang durch eine Antwort von dem Empfangsende einer SERDES-Kommunikationsverbindung bestätigt wird. In einem derartigen Fall kann eine Quittung als Bestandteil von Daten eingebettet sein, die zwischen zusammenwirkenden Komponenten der SERDES-Datenkommunikationsarchitektur kommuniziert werden. Wenn durch die SERDES-Komponenten ein Fehler erfasst wird, kann der Datenpuffer verwendet werden, um die Daten erneut zu senden, um den Fehler zu korrigieren.
  • Ferner kann die veranschaulichende Implementierung die Verwendung mehrerer paralleler SERDES-Kommunikationskanäle aufeinander abstimmen. Ein SERDES-Kommunikationskanal kann eine logische Kommunikationsverbindung umfassen, die auf einer physischen Verbindung (z. B. Drähten) zwischen SERDES-Komponenten (z. B. Parallel-Serien-Umsetzern und Serien-Parallel-Umsetzern) arbeitet. Beim Durchführen einer Fehlererfassung, eines Trainings und anderer Operationen kann die veranschaulichende SERDES-Datenkommunikationsarchitektur einen Ersatzkanal verwenden. Zusätzlich kann ein derartiger Ersatzkanal verwendet werden, um auch im Fall eines maschinenbedingten Fehlers einer der Kanäle eine Kommunikationsverfügbarkeit aufrechtzuerhalten.
  • Die veranschaulichende Implementierung liefert die Flexibilität, verschiedene Medien – Kabel, PC-Bahn oder durch eine entsprechende Pufferfaser anzutreiben, und unterstützt eine Vielzahl von Verbindungsfrequenzen, um am besten mit den gewählten Medien zu arbeiten.
  • Veranschaulichende Rechenumgebung:
  • 1 zeigt ein exemplarisches Rechensystem 100 gemäß hierin beschriebenen Systemen und Verfahren. Das Rechensystem 100 ist in der Lage, eine Vielzahl von Rechenanwendungen 180 auszuführen. Das beispielhafte Rechensystem 100 wird vorwiegend durch computerlesbare Anweisungen gesteuert, die in Form von Software vorliegen können, wo und wie eine derartige Software gespeichert oder auf dieselbe zugegriffen wird. Eine derartige Software kann in einer Zentralverarbeitungseinheit (CPU) 110 ausgeführt werden, um das Datenverarbeitungssystem 100 zu veranlassen, zu arbeiten. Bei vielen bekannten Computerservern, Arbeitsstationen und Personalcomputern ist die Zentralverarbeitungseinheit 110 durch CPUs in Form mikroelektronischer Chips implementiert, die als Mikroprozessoren bezeichnet werden. Der Koprozessor 115 ist ein optionaler Prozessor, der von der CPU 110 getrennt ist und der zusätzliche Funktionen erfüllt oder die CPU 110 unterstützt. Ein üblicher Typ von Koprozessor ist der Gleitkomma-Koprozessor, der auch als numerischer oder mathematischer Koprozessor bezeichnet wird und der entworfen ist, um numerische Berechnungen schneller und besser durchzuführen als eine Mehrzweck-CPU 110.
  • Man wird erkennen, dass, obwohl eine veranschaulichende Rechenumgebung in der Darstellung eine einzige CPU 110 umfasst, diese Beschreibung lediglich veranschaulichend ist, da die Rechenumgebung 100 eine Anzahl von CPUs 110 umfassen kann. Ferner kann die Rechenumgebung 100 die Ressourcen entfernter CPUs (nicht gezeigt) durch ein Kommunikationsnetzwerk 160 oder eine andere (nicht gezeigte) Datenkommunikationseinrichtung nutzen.
  • Im Betrieb ruft die CPU 110 Anweisungen ab, decodiert sie und führt sie aus und überträgt Informationen an und von anderen Ressourcen über den Hauptdatentransferpfad des Computers, einen Systembus 105. Ein derartiger Systembus verbindet die Komponenten in dem Rechensystem 100 und definiert das Medium für einen Datenaustausch. Der Systembus 105 umfasst üblicherweise Datenleitungen zum Senden von Daten, Adressleitungen zum Senden von Adressen und Steuerleitungen zum Senden von Unterbrechungen und zum Betreiben des Systembusses. Ein Beispiel eines derartigen Systembusses ist der PCI-Bus (PCI = Peripheral Component Interconnect). Manche der heutigen höherentwickelten Busse liefern eine Funktion, die als Busentscheidung bezeichnet wird und die einen Zugriff auf den Bus durch Erweiterungskarten, Steuerungen und die CPU 110 regelt. Vorrichtungen, die an diese Busse angeschlossen werden und entscheiden, den Bus zu übernehmen, werden als Busmaster bezeichnet. Eine Busmasterunterstützung ermöglicht ferner, dass Multiprozessorkonfigurationen der Busse durch die Hinzufügung von Busmasteradaptern, die einen Prozessor und seine Unterstützungschips enthalten, erzeugt werden.
  • Speichervorrichtungen, die mit dem Systembus 105 gekoppelt sind, umfassen einen Direktzugriffsspeicher (RAM) 125 und einen Nur-Lese-Speicher (ROM) 130. Derartige Speicher umfassen eine Schaltungsanordnung, die ermöglicht, dass Informationen gespeichert und wiedergewonnen werden. Die ROMs 130 enthalten allgemein gespeicherte Daten und können nicht modifiziert werden. Daten, die in einem RAM 125 gespeichert sind, können durch die CPU 110 oder andere Hardwarevorrichtungen gelesen oder geändert werden. Ein Zugriff auf einen RAM 125 und/oder ROM 130 kann durch eine Speichersteuerung 120 gesteuert werden. Die Speichersteuerung 120 kann ferner eine Adressübersetzungsfunktion bereitstellen, die virtuelle Adressen in physische Adressen übersetzt, während Anweisungen ausgeführt werden. Die Speichersteuerung 120 kann auch eine Speicherschutzfunktion bereitstellen, die Prozesse innerhalb des Systems isoliert und Systemprozesse von Benutzerprozessen isoliert. Somit kann ein Programm, das in einem Benutzermodus läuft, normalerweise lediglich auf einen Speicher zugreifen, der durch den virtuellen Adressraum seines eigenen Prozesses abgebildet ist; es kann nicht auf einen Speicher in einem virtuellen Adressraum eines anderen Prozesses zugreifen, es sei denn, es wurde eine gemeinsame Verwendung des Speichers zwischen den Prozessen eingerichtet.
  • Ferner kann das Rechensystem 100 eine Peripheriegeräte-Steuerung 135 enthalten, die für ein Kommunizieren von Anweisungen von der CPU 110 an Peripheriegeräte, z. B. einen Drucker 140, eine Tastatur 145, eine Maus 150 und ein Datenspeicherlaufwerk 155, verantwortlich ist.
  • Eine Anzeige 165, die durch die Anzeigesteuerung 163 gesteuert wird, wird verwendet, um eine durch das Rechensystem 100 erzeugte visuelle Ausgabe anzuzeigen. Eine derartige visuelle Ausgabe kann Text, Graphiken, animierte Graphiken und Video umfassen. Die Anzeige 165 kann mit einer CRT-basierten Videoanzeige, einer LCD-basierten Flachbildschirmanzeige, einer gasplasmabasierten Flachbildschirmanzeige oder einem Berührungsbildschirm oder anderen Anzeigeformen implementiert sein. Die Anzeigesteuerung 163 umfasst elektronische Komponenten, die erforderlich sind, um ein Videosignal zu erzeugen, das an die Anzeige 165 gesendet wird.
  • Ferner kann das Rechensystem 100 einen Netzwerkadapter 170 enthalten, der verwendet werden kann, um das Rechensystem 100 mit einem externen Kommunikationsnetzwerk 160 zu verbinden. Das Kommunikationsnetzwerk 160 kann Computerbenutzern Einrichtungen zum elektronischen Kommunizieren und Übertragen von Software und Informationen bereitstellen. Ferner kann das Kommunikationsnetzwerk 185 eine verteilte Verarbeitung bereitstellen, die mehrere Computer und das Teilen von Arbeitslasten oder kooperativen Bemühungen beim Ausführen einer Aufgabe beinhaltet. Man wird erkennen, dass die gezeigten Netzwerkverbindungen exemplarisch sind und dass andere Mittel zum Einrichten einer Kommunikationsverbindung zwischen den Computern verwendet werden können.
  • Man wird erkennen, dass das exemplarische Computersystem 100 lediglich veranschaulichend für eine Rechenumgebung ist, in der die hierin beschriebenen Systeme und Verfahren arbeiten können, und dass es die Implementierung der hierin beschriebenen Systeme und Verfahren in Rechenumgebungen nicht einschränkt, die unterschiedliche Komponenten und Konfigurationen aufweisen, da die hierin beschriebenen erfindungsgemäßen Konzepte in verschiedenen Rechenumgebungen, die verschiedene Komponenten und Konfigurationen aufweisen, implementiert sein können.
  • Datenkommunikationsarchitektur:
  • 24 zeigen Blockdiagramme einer veranschaulichenden Datenkommunikationsarchitektur zur Verwendung bei einer exemplarischen Rechenumgebung. Die veranschaulichende Datenkommunikationsarchitektur kann als Komponenten der Rechenumgebung implementiert sein und kann SERDES-Komponenten verwenden. Im einzelnen zeigt 2 ein Blockdiagramm einer veranschaulichenden Datenkommunikationsarchitektur 200. Wie in 2 gezeigt ist, umfasst die Datenkommunikationsarchitektur 200 Datenkommunikationsschnittstellenkarten 205 und 210, die zusammenwirken, um Daten 230 über physische Verbindungen 220 zu kommunizieren. Die Datenkommunikationsschnittstellenkarten 205 und 210 umfassen zumindest einen Sendekern und zumindest einen Empfangskern. Physische Verbindungen 220 werden durch physische Verbinder 225 an die Datenkommunikationsschnittstellenkarten 205 und 210 angeschlossen.
  • Im Betrieb arbeitet die (nicht gezeigte) exemplarische Rechenumgebung mit den Datenkommunikationsschnittstellenkarten 205 und 210 zusammen, um Daten zwischen den Datenkommunikationsschnittstellenkarten 205 und 210 zu kommunizieren. Bei der veranschaulichenden Implementierung können Datenkommunikationsschnittstellenkarten in getrennten geographischen Positionen in der (nicht gezeigten) exemplarischen Rechenumgebung vorliegen oder können als Bestandteil einer der gedruckten Schaltungsplatinen (PCB – printed circuit boards) der (nicht gezeigten) exemplarischen Rechenumgebung vorliegen. Wie gezeigt ist, können Daten in einer ausgewählten Richtung oder bidirektional, wie durch die Pfeile auf den physischen Verbindungen 220 und Daten 230 angegeben ist, zwischen Sendekernen und Empfangskernen der Datenkommunikationsschnittstellen 205 und 210 kommuniziert werden. Ferner wird man erkennen, dass die physischen Verbindungen 220 mit verschiedenen Leitungsdicken gezeigt sind, um unterschiedliche Medien der physischen Verbindung 220 anzugeben.
  • Wie gezeigt ist, zeigt das gestrichelte Kästchen 215 ferner die Komponenten einer exemplarischen Datenkommunikationsrückwandplatine. Bei der bereitgestellten Implementierung weist die Rückwandplatine 215 in der Darstellung ein Paar von Sende-/Empfangskernen auf, die arbeiten, um Daten zu kommunizieren. Im einzelnen werden Daten durch den Sendekern 235 der Datenkommunikationsschnittstelle 205 für eine Kommunikation durch den physischen Verbinder 225 und die physischen Verbindungen 220 an den Empfangskern 245 der Datenkommunikationsschnittstelle 210 verarbeitet. Desgleichen können Daten für eine Kommunikation durch den Sende kern 250 der Datenkommunikationsschnittstelle 210 an den Empfangskern 240 der Datenkommunikationsschnittstelle 205 verarbeitet werden. Überdies können Sende-/Empfangskernpaare 235, 240 und 245, 250 zusammenwirken, um einen Kommunikationskanal zu bilden. Als Kommunikationskanal können die Sende-/Empfangskernpaare ausgerichtet und trainiert werden, um Daten gemäß einem ausgewählten Codierungsprotokoll, z. B. einer Acht-Bit-Zehn-Bit-Codierung (8b10b-Codierung), zu verarbeiten.
  • Wie in 2 gezeigt ist, können die Daten 230 ferner eine Anzahl von Paketen umfassen. Im einzelnen können die Daten 230 einen Anfangsblockabschnitt und einen Datenpaketabschnitt enthalten. Der Datenpaketabschnitt kann ferner kleine Datenpakete enthalten. Man wird erkennen, dass bei der bereitgestellten veranschaulichenden Implementierung als ein kleines Paket ein Datenpaket angesehen werden kann, das eine geringere Größe aufweist als ein normales Datenpaket einer vollen Größe. Im Betrieb können diverse Daten-, Steuer-, Trainings- und Kanalverwaltungsinformationen als Daten 230 über die exemplarische Datenkommunikationsarchitektur 200 kommuniziert werden.
  • 3 zeigt ein Blockdiagramm einer exemplarischen Sendekernumgebung 300, das ihre Komponenten und deren Zusammenwirkung zeigt. Wie in 3 gezeigt ist, umfasst die exemplarische Sendekernumgebung 300 eine Mehrzahl von Sendekernen, die von dem Sendekern 300-1 zu dem Sendekern 300-n reichen. Der Sendekern 300-1 weist in der Darstellung einen Logikblock einer Mehrzahl von Parallel-Serien-Umsetzern und Treibern von dem Parallel-Serien-Umsetzer 1 zu dem Parallel-Serien-Umsetzer n bzw. von dem Treiber 1 zu dem Treiber n auf. Ferner wirkt der Sendekern 300-1 mit einer (nicht gezeigten) externen Datenkommunikationskomponente zusammen, um ein Taktsignal CLK zu erhalten. Ferner umfasst der Sendekern 300-1, wie gezeigt, eine Logik, die Anweisungssätze unterhält, um die Komponenten des Sendekerns 300-1 (z. B. Parallel-Serien-Umsetzer 1) anzuweisen, Funktionen gemäß Datenkommunikationsoperationen auszuführen. Die Logik des Sendekerns 300-1 kann ferner agieren, um ein(en) oder mehr Module und Mechanismen zur Verwendung während Datenkommunikationsoperationen zu unterhalten, einschließlich, aber nicht ausschließlich, einer Verbindungstrainingsstatusüberwachungseinrichtung, eines Verbindungstrainingsmoduls, eines Überwachungsmoduls, eines Datenpuffers, eines Verbindungstrainingsmoduls, eines Paritätsbitmoduls und eines Datenübertragungsquittungsmoduls.
  • Im Betrieb werden Daten als Eingabe einem der Parallel-Serien-Umsetzer des Sendekerns 300-1 bereitgestellt. Die Daten werden gemäß einem ausgewählten Codierungsprotokoll codiert und auf eine Kommunikation durch einen der Treiber des Sendekerns an eine kooperierende Datenkommunikationskomponente an einem der Ausgangskanäle des Sendekerns vorbereitet. Das Codierungsprotokoll kann ein CLK-Signal verwenden, um eine Anzahl von Bits in einem ausgewählten Zyklus bzw. in ausgewählten Zyklen des CLK-Signals zu codieren. Beispielsweise können Daten A durch den Parallel-Serien-Umsetzer 1 des Sendekerns 300-1 gemäß einem ausgewählten Codierungsprotokoll codiert und auf eine Kommunikation durch den Treiber 1 vorbereitet werden, um gemäß Anweisungen, die durch die Logik des Sendekerns 300-1 bereitgestellt werden, an dem Ausgang des Kanals A Codierte Daten zu erzeugen. Desgleichen können Daten B durch den Parallel-Serien-Umsetzer 2 des Sendekerns 300-1 gemäß einem ausgewählten Codierungsprotokoll codiert und auf eine Kommunikation durch einen Treiber 2 vorbereitet werden, um an dem Kanal B Codierte Daten zu erzeugen. Ein derartiger Codierungsprozess und eine derartige Datenkommunikationsvorbereitung wird über die verbleibenden Parallel-Serien-Umsetzer und Treiber des Sendekerns 300-1 und der anderen Sendekerne der Sendekernumgebung 300 durchgeführt.
  • 4 zeigt ein Blockdiagramm einer exemplarischen Empfangskernumgebung 400, das ihre Komponenten und deren Zusammenwirkung zeigt. Wie in 4 gezeigt ist, umfasst der exemplarische Empfangskern 400 eine Mehrzahl von Empfangskernen, die von dem Empfangskern 400-1 zu dem Empfangskern 400-n reichen. Der Empfangskern 400-1 weist in der Darstellung einen Logikblock einer Mehrzahl von Serien-Parallel-Umsetzern und Treibern von dem Serien-Parallel-Umsetzer 1 zu dem Serien-Parallel-Umsetzer n bzw. von dem Treiber 1 zu dem Treiber n auf. Ferner wirkt der Empfangskern 400-1 mit einer (nicht gezeigten) externen Datenkommunikationskomponente zusammen, um ein Taktsignal CLK zu erhalten. Ferner umfasst der Empfangskern 400-1, wie gezeigt, eine Logik, die Anweisungssätze unterhält, um die Komponenten des Empfangskerns 400-1 (z. B. Serien-Parallel-Umsetzer 1) anzuweisen, Funktionen gemäß Datenkommunikationsoperationen auszuführen. Die Logik des Empfangskerns 400-1 kann ferner agieren, um ein(en) oder mehr Module und Mechanismen zur Verwendung während Datenkommunikationsoperationen zu unterhalten, einschließlich, aber nicht ausschließlich, einer Verbindungstrainingsstatusüberwachungseinrichtung, eines Verbindungstrainingsmoduls, eines Überwachungsmoduls, eines Datenpuffers, eines Verbindungstrainingsmoduls, eines Paritätsbitmoduls und eines Datenübertragungsquittungsmoduls.
  • Im Betrieb werden codierte Daten als Eingabe einem der Serien-Parallel-Umsetzer des Empfangskerns 400-1 bereitgestellt. Die Daten werden gemäß einem ausgewählten Decodierungsprotokoll decodiert und auf eine Kommunikation durch einen der Treiber des Empfangskerns an eine kooperierende Datenkommunikationskomponente an einem der Ausgänge des Serien-Parallel-Umsetzers des Empfangskerns vorbereitet. Das Decodierungsprotokoll kann ein CLK-Signal verwenden, um eine Anzahl von Bits in einem ausgewählten Zyklus bzw. in ausgewählten Zyklen des CLK-Signals zu decodieren. Beispielsweise können Codierte Daten A durch den Serien-Parallel-Umsetzer 1 des Empfangskerns 400-1 gemäß einem ausgewählten Decodierungsprotokoll decodiert und auf eine Kommunikation durch den Treiber 1 vorbereitet werden, um gemäß Anweisungen, die durch die Logik des Empfangskerns 400-1 bereitgestellt werden, Daten A zu erzeugen. Desgleichen können Daten B durch den Serien-Parallel-Umsetzer 2 des Empfangskerns 400-1 gemäß einem ausgewählten Decodierungsprotokoll decodiert und auf eine Kommunikation durch den Treiber 2 vorbereitet werden, um Daten B zu erzeugen. Ein derartiger Decodierungsprozess und eine derartige Datenkommunikationsvorbereitung wird über die verbleibenden Serien-Parallel-Umsetzer und Treiber des Empfangskerns 400-1 und der anderen Empfangskerne der Sendekernumgebung 400 durchgeführt.
  • Zusammengenommen beschreiben 3 und 4 eine exemplarische Kommunikationskanalumgebung, derart, dass Daten für eine Kommunikation durch einen oder mehr Sendekerne zum Decodieren und anschließenden Verarbeiten durch einen oder mehr Empfangskerne codiert werden. Obwohl die Sendekerne und Empfangskerne als separate Komponenten beschrieben wurden, wird man erkennen, dass sich dieselben auf einer einzigen Kommunikationskomponente befinden können (siehe Datenkommunikationsschnittstelle 205 der 2). Überdies können Sendekerne und Empfangskerne als Paare arbeiten, um einen oder mehr bidirektionale Datenkommunikationskanäle zu bilden.
  • Kommunizieren von Daten über Kommunikationsverbindungen:
  • 5 zeigt die Verarbeitung, die durch die exemplarische Datenkommunikationsarchitektur 200 beim Einrichten eines Kommunikationskanals durchgeführt wird. Wie gezeigt ist, beginnt die Verarbeitung bei Block 500 und geht zu Block 505 über, wo die Kommunikationskomponenten für den Betrieb eingeschaltet werden. Von dort geht die Verarbeitung zu Block 510 über, wo zwischen den Datenkommunikationsarchitekturkomponenten Kommunikationsverbindungen eingerichtet werden. Bei Block 515 werden die Kommunikationsverbindungen anschließend trainiert, einen Kommunikationskanal zu bil den. Bei Block 520 werden dann Trainingsdaten über den Kommunikationskanal gesendet, um den Kommunikationskanal zu testen. Bei Block 525 wird dann eine Prüfung durchgeführt, um zu bestimmen, ob der Kommunikationskanaltest erfolgreich war. Wenn er erfolgreich war, geht die Verarbeitung zu Block 540 über, wo eine Prüfung durchgeführt wird, um zu bestimmen, ob Daten über den erfolgreich getesteten Kommunikationskanal kommuniziert werden sollen. Falls bei Block 540 bestimmt wird, dass keine Daten kommuniziert werden sollen, kehrt die Verarbeitung zu Block 525 zurück. Falls jedoch Daten über den erfolgreich getesteten und trainierten Kommunikationskanal kommuniziert werden sollen, geht die Verarbeitung zu Block 545 über, wo die Daten durch Parallel-Serien-Umsetzer codiert werden. Bei Block 550 werden die codierten Daten dann über den Kommunikationskanal an kooperierende Serien-Parallel-Umsetzer kommuniziert. Bei Block 555 werden die Daten dann durch die Serien-Parallel-Umsetzer decodiert. Bei Block 560 wird dann eine Prüfung durchgeführt, um zu bestimmen, ob die Daten erfolgreich kommuniziert wurden. Falls die Daten erfolgreich gesendet wurden, kehrt die Verarbeitung zu Block 540 zurück und fährt von dort aus fort. Wenn die Daten jedoch nicht erfolgreich kommuniziert wurden, geht die Verarbeitung zu Block 565 über, wo die Serien-Parallel-Umsetzer anfordern, dass die Daten durch die Parallel-Serien-Umsetzer erneut gesendet werden. Von dort kehrt die Verarbeitung zu Block 550 zurück und fährt von dort aus fort.
  • Falls jedoch bei Block 525 bestimmt wird, dass der Kommunikationskanaltest nicht erfolgreich war, geht die Verarbeitung zu Block 530 über, wo die Kommunikationsverbindungen erneut trainiert werden. Von dort geht die Verarbeitung zu Block 535 über, wo Steuerinformationen zwischen den Kommunikationsverbindungskomponenten kommuniziert werden. Von dort kehrt die Verarbeitung zu Block 520 zurück und fährt von dort aus fort.
  • Im Betrieb sieht die veranschaulichende Implementierung vor, dass die Trainingssequenz durch die Serien-Parallel-Umsetzer eine Kommunikationsverbindung gelenkt wird. Im Einzelnen wird ein anfängliches Training auf ein Erkennen einer Angabe der Aufschrift eines ausgewählten Registers vom Softwaretyp auf dem Serien-Parallel-Umsetzer hin als abgeschlossen erachtet. Zu einem solchen Zeitpunkt werden Daten durch die Parallel-Serien-Umsetzer des Kommunikationskanals auf die Verbindung getrieben. Im Kontext von Serien-Parallel-Umsetzer-Operationen unterhalten die Serien-Parallel-Umsetzer einen oder mehr Anweisungssätze, die die Serien-Parallel-Umsetzer anweisen, eine Aktivität auf der Verbindung zu erfassen, um kooperierenden Parallel-Serien-Umsetzern zu signalisieren, die Initialisierung zu beginnen. Die Serien-Parallel-Umsetzer und Parallel-Serien-Umsetzer der Kommunikationskanäle unterhalten zumindest einen Anweisungssatz, um die Kanäle anzuweisen, eine Einschaltung vorzunehmen. Nach einer erfolgreichen Einschaltung wird ein Pro-Kanal-Selbsttest durchgeführt, dessen Ergebnisse zusammengetragen und verglichen werden. Der Anweisungssatz weist die Parallel-Serien-Umsetzer und Serien-Parallel-Umsetzer anschließend an, ein ausgewähltes Datenmuster zu kommunizieren, das durch die Serien-Parallel-Umsetzer erwartet wird und das es den Serien-Parallel-Umsetzern ermöglicht, eine Biteinheiten-Gruppierung zur Verwendung durch die Codierungs- und Decodierungsprotokolle, die durch die Parallel-Serien-Umsetzer und die Serien-Parallel-Umsetzer verwendet werden, zu bestimmen.
  • Zusätzlich wird ein zweites erkennbares Datenmuster an die Serien-Parallel-Umsetzer kommuniziert, das die Serien-Parallel-Umsetzer als die Kleinpaketdatenkommunikationen zuweisen. Durch Einstellen der Kleinpaketdatenkommunikationen können die Serien-Parallel-Umsetzer arbeiten, um kleine Pakete in Gruppierungen übereinstimmend damit, wie sie ursprünglich kommuniziert wurden, passend zusammenzustellen. Nachdem das zweite Datenmuster erfolgreich kommuni ziert und verarbeitet wurde, wird ein Steuersignal von den Serien-Parallel-Umsetzern an die Parallel-Serien-Umsetzer der Kommunikationsverbindungen gesendet, das angibt, dass das Training abgeschlossen ist. An diesem Punkt können Datenpakete über die trainierten Kanäle kommuniziert werden.
  • Ferner sieht die veranschaulichende Implementierung vor, dass, falls ein Fehler über die Kommunikationsverbindung auftreten sollte, die Verbindung einen Neutrainingsprozess durchführen kann. Ein Verbindungsneutraining ist ähnlich dem oben beschriebenen Verbindungstraining, mit Ausnahme eines Verzichts des Einschaltens der Kommunikationskanalkomponenten. Ein Neutraining kann durch eine Anzahl von Ereignissen ausgelöst werden, einschließlich, aber nicht ausschließlich, des Erkennens eines Fehlers über die Kommunikationsverbindung oder durch den Empfang eines Fehlersignals auf der Verbindung, das durch das Empfangsende der Kommunikationsverbindung erzeugt wird.
  • Handhaben von Datenkommunikationslücken (Datenankunftszeitgebung):
  • Die veranschaulichende Datenkommunikationsarchitektur ist in der Lage, unsichere Datenankunftszeiten zwischen zusammenwirkenden Komponenten zu handhaben. Im Kontext einer SERDES-Datenkommunikationsarchitektur sind Daten, die von dem Empfangsende einer SERDES-Verbindung extrahiert werden, eventuell nicht eng auf einen lokalen Takt synchronisiert. Anders ausgedrückt kann die Verbindung bei einem beliebigen gegebenen Zyklus des lokalen Taktes zu präsentierende neue gültige Daten aufweisen oder auch nicht.
  • Bei der veranschaulichenden Implementierung und gemäß der obigen Beschreibung werden Datentransaktionen über die Verbindungen in einem „Paket”-Format weitergeleitet. Jedes Paket ist aus einem oder mehreren kleinen Paketen gebildet, je nach der Informationsmenge und den Daten, die die Transaktion umfasst. Als ein kleines Paket kann eine Nutzlasteinheit betrachtet werden, die die Verbindung während eines gegebenen Zeitraums transferiert. Ein Paket kann ein Anfangsblockpaket aufweisen, auf das eine bestimmte Anzahl von kleinen Datenpaketen folgt, um die Transaktion auszufüllen. Der Anfangsblock kann Informationen, die den Pakettyp beschreiben, und andere Informationen bezüglich der Handhabung des Pakets, z. B. seine Zieladresse, umfassen.
  • Um die Datenkommunikationsinfrastruktur einer exemplarischen Rechenumgebung zu durchlaufen, kann es der Fall sein, dass eine über eine SERDES-Verbindung geleitete Transaktion auf dem Weg zu ihrem endgültigen Ziel an eine andere SERDES-Verbindung weitergeleitet wird. In einem derartigen Kontext kann eine Datentransaktion mehrere Zyklen auf der SERDES-Verbindung benötigen, um einen Transfer all ihrer kleinen Pakete abzuschließen. Es kann sich eine unerwünschte Verzögerungszeit ergeben, wenn eine vollständige Transaktion hochgepuffert wird, bevor sie an die nächste Kommunikationsverbindung weitergeleitet wird. Ferner kann es der Fall sein, dass eine Verbindung in ihrem anfänglichen Versuch, einen Teil eines Pakets zu senden, ausfällt bzw. fehlschlägt, was eine lange Pause zwischen dem Beginn und dem Ende des Pakets erzeugt. Ferner kann der Frequenzbetrieb verschiedener Verbindungen unterschiedlich sein, was Lücken im Fluss kleiner Pakete auf eine schnellere Verbindung bewirken kann, wenn die Daten von einer langsameren Verbindung kommen.
  • Die veranschaulichende Datenkommunikationsarchitektur handhabt derartige Fälle, indem sie einen Mechanismus vorsieht, um einen korrekten Betrieb der SERDES-Verbindung für diese Anwendung in der Gegenwart von Lücken im Fluss der kleinen Pakete und der Pakete einer normalen Größe zu ermöglichen. Im Betrieb verwendet die SERDES-Verbindungsschnittstelle an dem Sendeende der Verbindung (siehe Sendekern 235 der 2) einen ausgewählten codier ten oder Steuerwert, der über die Verbindung gesendet werden soll, falls sie nicht das nächste gültige kleine Paket zum Senden aufweist. Ferner erzeugt das Empfangsende der Verbindung (siehe Empfangskern 245 der 2) ein ausgehendes kleines Steuerpaket, wenn sie zu Beginn ihres Taktzyklus keine neu empfangenen Daten an ihrer Verbindungsschnittstelle findet oder wenn sie ein codiertes kleines Paket findet. Während der Datenverarbeitung werden kleine Steuerpakete ignoriert.
  • 6 zeigt die Verarbeitung, die beim Handhaben von Datenkommunikationslücken für Daten durchgeführt wird, die über die exemplarische Datenkommunikationsarchitektur 200 der 2 kommuniziert werden. Wie gezeigt ist, beginnt die Verarbeitung bei Block 600 und geht zu Block 605 über, wo eine Prüfung durchgeführt wird, um zu bestimmen, ob Daten über die Kommunikationskanäle der exemplarischen Datenkommunikationsarchitektur kommuniziert werden sollen. Wenn keine Daten kommuniziert werden sollen, kehrt die Verarbeitung zu Block 600 zurück und fährt von dort aus fort. Falls jedoch Daten kommuniziert werden sollen, geht die Verarbeitung zu Block 610 über, wo die zu kommunizierenden Daten in Bezug auf Kommunikationslücken überwacht werden. Im Betrieb können Daten in einem Datenpuffer gepuffert werden, bevor sie durch einen Parallel-Serien-Umsetzer der Datenkommunikationsarchitektur codiert werden. Eine Datenverarbeitung in Bezug auf Lücken findet in dem Datenpuffer statt. Dann wird bei Block 615 eine Prüfung durchgeführt, um zu bestimmen, ob eine Datenkommunikationslücke vorlag. Falls keine Datenkommunikationslücke vorliegt, geht die Verarbeitung zu Block 620 über, wo die Daten durch den Parallel-Serien-Umsetzer an einen kooperierenden Serien-Parallel-Umsetzer kommuniziert werden. Von dort aus geht die Verarbeitung zu Block 605 über und fährt von dort aus fort.
  • Falls jedoch bei Block 615 bestimmt wird, dass eine Datenlücke vorliegt, geht die Verarbeitung zu Block 625 über, wo ein kleines Steuerpaket erzeugt wird. Das kleine Steuerpaket wird anschließend bei Block 630 an den kooperierenden Serien-Parallel-Umsetzer kommuniziert, um den kooperierenden Serien-Parallel-Umsetzer von der Kommunikationslücke zu benachrichtigen. Der Serien-Parallel-Umsetzer verarbeitet das kleine Steuerpaket bei Block 635 und breitet das kleine Steuerpaket bei Block 640 durch die gesamte Datenkommunikationsarchitektur aus. Die Verarbeitung endet dann bei Block 645.
  • Fehlererfassung:
  • Die exemplarische Datenkommunikationsarchitektur 200 der 2 ist ferner in der Lage, an den Daten, die zwischen ihren Komponenten kommuniziert werden, eine Fehlererfassung durchzuführen. Im Kontext einer SERDES-Datenkommunikationsarchitektur kann das erneute Versuchen von Datentransfers notwendig sein, um Daten zu kommunizieren, die darin fehlschlagen, exakt über die Verbindung zu gelangen. Um eine Übertragung erneut zu versuchen, wird zuerst ein Fehler erfasst. Der Fehler ist erfassbar, um das erste kleine Paket, das erneut versucht wird, ordnungsgemäß zu identifizieren, um mit Datenkommunikationsoperationen fortzufahren.
  • Bei der vorgesehenen Implementierung kann der Codierungsstandard, der verwendet werden kann, um Daten für eine SERDES-Verbindung zu formatieren, entworfen sein, um elektrische Charakteristika zu befolgen, die erforderlich sind, damit die SERDES-Verbindung in der Lage ist, Daten bei hohen Frequenzen, die sie verwendet, zu übertragen. Ferner können auf dem Kanal genügend Übergänge durchgeführt werden, so dass ein Takt an dem Empfangsende der Verbindung aus dem Bitstrom extrahiert werden kann. Ferner kann das Bitmuster eine neutrale Disparität aufweisen. Anders ausgedrückt kann die Anzahl von übertragenen Nullen und Einsen zu jeglichem Zeitpunkt gleich sein oder höchstens um eins differieren. Das exemplarische Codierungsprotokoll arbeitet derart, dass einzelne Bitfehler zu einer illegalen Codierung führen. Es kann jedoch der Fall sein, dass die illegale Codierung in manchen Fällen legal aussehen mag, jedoch die falsche erwartete Disparität erzeugt. Wenn diese Art von Fehler vorliegt, wird der Fehler erst dann erfasst, wenn die nachfolgenden Datenmuster die Disparität an dem Empfangsende der Verbindung auf +/–2 schieben.
  • Bei einer SERDES-Datenkommunikationsarchitektur kann eine einzelne Verbindung fungieren, um große Mengen an Informationen rasch über ihren Kanal zu leiten. Als solches können Fehler durch Senden von speziellen „Endpaket”-Steuerschriftzeichen auf der Verbindung begrenzt werden. Diese würden gewährleisten, dass ein Fehler erkannt wird, bevor der Datenblock freigegeben wird. Dieser Lösungsansatz bedeutet den Mehraufwand, dass es erforderlich ist, das spezielle Steuerschriftzeichen zu senden, und kann Ineffizienzen in dem Datenkommunikationsprozess liefern, wobei eine zusätzliche Verzögerungszeit auftritt. In der Praxis kann es einen Codierungszyklus lang dauern, ein Steuerschriftzeichen zu senden. Man erkennt, dass für eine Datenkommunikationsarchitektur, die eine Mehrzahl von SERDES-Verbindungen aufweist, eine beträchtliche Zeitdauer erforderlich wäre, um Steuerschriftzeichen zu verarbeiten, was zu beträchtlichen Ineffizienzen bei Datenkommunikationen führen würde.
  • Die veranschaulichende Implementierung liefert einen alternativen Lösungsansatz, bei dem die Datenkommunikationsarchitektur erkennt, dass das erste Fehlersymptom des Codierungsstandards durch einen Vergleich der Disparität der kommunizierten Daten an dem Empfangsende (siehe Empfangskern 245 der Datenkommunikationsschnittstelle 210 der 2) und dem Sendeende (siehe Sendekern 235 der Datenkommunikationsschnittstelle 205 der 2) bestimmt werden kann. Falls die Disparität, die zum Senden der Daten verwendet wird, an dem Empfänger bekannt ist, könnte ein Fehler sofort erfasst werden. Um dies zu erzielen, wird die Disparität der Verbindungen, die zum Senden eines kleinen Pakets verwendet werden, zusammengestellt und verwendet, um einen Fünf-Bit-Fehlercode zu erzeugen. Dieser Fünf-Bit-Wert wird dann an das Empfangsende der Verbindung weitergeleitet. Bei der veranschaulichenden Implementierung kann ein derartiger Fehlercode unter Verwendung eines zusätzlichen SERDES-Verbindungskanals an das Empfangsende der Verbindung kommuniziert werden. Dieser Wert kann dann an dem Empfangsende der Verbindung verwendet werden, um die Disparitäten an dem Empfangsende der Verbindung zu prüfen und sofort ein erneutes Senden von Daten von dem Sendeende des Kommunikationskanals anzufordern, falls die Disparitäten nicht die erwarteten Werte aufweisen.
  • Im Betrieb verwendet die veranschaulichende Implementierung eine Fünf-Bit- bis Zehn-Bit-Codierung beim Kommunizieren des Fehlercodes. Die fünf Bits werden zweimal gesendet, einmal als positiv wahr und einmal als negativ wahr. Auf diese Weise umfasst das Zehn-Bit-Muster fünf Einsen und fünf Nullen, wobei eine neutrale Disparität erzielt wird. Eine derartige Verarbeitung ist außerdem effizient, so dass beim Verwenden eines Zehn-Bit-Codierungsschemas eine Systemzeitgebung aufrechterhalten werden kann.
  • Ferner sieht die veranschaulichende Implementierung vor, dass auf den Abschluss eines Verbindungstrainings hin Daten über die Verbindung kommunizierbar sind. Die Daten können einen Anfangsblock, kleine Datenpakete, falls sie für eine Kommunikation zur Verfügung stehen sollten, oder Steuerinformationen, wie z. B. kleine Verbindungsverwaltungsdatenpakete, umfassen. Unabhängig vom Typ erzeugen diese Daten, wenn sie codiert werden, ein Muster von 1en und 0en, die eine zugeordnete Disparität aufweisen.
  • 7 zeigt die Verarbeitung, die durch eine exemplarische Datenkommunikationsarchitektur 200 beim Durchführen einer Fehlererfassung durchgeführt wird. Wie gezeigt ist, beginnt die Verarbeitung bei Block 700 und geht zu Block 705 über, wo eine Prüfung durchgeführt wird, um zu bestimmen, ob Daten über die Komponenten der exemplarischen Datenkommunikationsarchitektur 200 der 2 kommuniziert werden sollen. Falls die Prüfung bei Block 705 die Bestimmung ergibt, dass keine Daten kommuniziert werden sollen, kehrt die Verarbeitung zu Block 700 zurück und fährt von dort aus fort. Falls jedoch bei Block 705 bestimmt wird, dass Daten kommuniziert werden sollen, geht die Verarbeitung zu Block 710 über, wo die Disparität für die zu kommunizierenden Daten berechnet wird. Von dort wird unter Verwendung der berechneten Disparitäten durch den Parallel-Serien-Umsetzer bei Block 715 ein Fehlercode für die zu kommunizierenden Daten berechnet. Bei Block 720 werden dann die Daten zusammen mit dem berechneten Fehlercode durch den Parallel-Serien-Umsetzer an einen kooperierenden Serien-Parallel-Umsetzer kommuniziert. Der Serien-Parallel-Umsetzer empfängt bei Block 725 die Daten und berechnet den Fehlercode auf der Basis der kommunizierten Daten. Von dort aus wird bei Block 730 eine Prüfung durchgeführt, um zu bestimmen, ob die Fehlercodes einander entsprechen. Wenn die Fehlercodes bei Block 730 einander nicht entsprechen, geht die Verarbeitung zu Block 735 über, wo eine Anforderung, die Daten erzeugt zu kommunizieren, durch den Serien-Parallel-Umsetzer an den Parallel-Serien-Umsetzer gesendet wird. Der Parallel-Serien-Umsetzer erhält die Daten für eine erneute Kommunikation bei Block 740, und die Verarbeitung kehrt zu Block 710 zurück und fährt von dort aus fort.
  • Falls jedoch bei Block 730 bestimmt wird, dass die Fehlercodes, die durch eine Berechnung durch den Parallel-Serien-Umsetzer und den Serien-Parallel-Umsetzer erzeugt wurden, einander nicht entsprechen, geht die Verarbeitung zu Block 745 über, wo Datentransaktionen fortgesetzt werden. Von dort aus kehrt die Verarbeitung zu Block 700 zurück und fährt von dort aus fort.
  • Verbindungsausfälle:
  • Die exemplarische Datenkommunikationsarchitektur 200 ist ferner in der Lage, Verbindungsausfälle zu handhaben, wenn die Verbindungen während des Betriebs ausfallen. Die veranschaulichende Implementierung arbeitet, um eine Verbindung mit der Infrastruktur der exemplarischen Rechenumgebung zu ermöglichen, um aktiv zu bleiben, wenn eine Verbindung ausfällt, und um die Rechenumgebung nicht zu zwingen, instabil zu werden (z. B. Absturz).
  • Im Kontext einer SERDES-Datenkommunikationsarchitektur können die Punkt-zu-Punkt-Verbindungen in der Infrastruktur des Computers aus mehreren SERDES-Verbindungen bestehen, die zusammenwirken, um eine vergrößerte Datenkommunikationsbandbreite bereitzustellen. Die veranschaulichende Implementierung sieht die Verwendung einer zusätzlichen SERDES-Verbindung vor, die in dem Fall, dass eine der anderen Kommunikationsverbindungen ausgefallen ist, über einem „Ersatz”-Verbindungskanal eingesetzt werden soll. Überdies kann die veranschaulichende Implementierung erfassen, dass ein Verbindungskanal nicht zuverlässig ist, und ihn nicht benutzen. Die Implementierung sieht ferner ein Protokoll vor, anhand dessen das Empfangsende (siehe Empfangskern 245 der Datenkommunikationsschnittstelle 210 der 2) der Verbindung mit dem Sendeende (siehe Sendekern 235 der Datenkommunikationsschnittstelle 205 der 2) der Verbindung kommunizieren kann, wobei der Verbindungskanal nicht verwendet werden sollte. Im Betrieb bestimmt die veranschaulichende Implementierung, dass eine Verbindung während der Verbindungstrainingssequenz ausgefallen ist. Ein Verbindungstraining erfolgt ansprechend auf einen erfassten Fehler bei der normalen Datenübertragung oder beim anfänglichen Einrichten einer Verbindung. Das Erkennen, dass eine Verbindung ausgefallen ist, umfasst neben anderen Ereignissen den Verlust des Vorhandenseinerfassungssignals für diese Verbindung; Fehlschlagen dieser Verbindung, einen Verbindungsselbsttest zu bestehen; Fehl schlagen dieser Verbindung, eine ordnungsgemäße Ausrichtung zu signalisieren.
  • Ansprechend auf einen Verbindungsausfall verschiebt die Logik an dem Empfangsende der Verbindung logische Verbindungskanäle von der ausgefallenen Verbindung zu der letzten nummerierten Verbindung weg von der ausgefallenen physischen Verbindung. Zusätzlich wird eine neue Abbildung in einem 5-Bit-Feld codiert und an das Sendeende der Verbindung zurückgegeben. Dort wird die Neuabbildung verwendet, um die Sendelogik zu programmieren, die Verbindungen bei dem nächsten Trainingsversuch auf die ordnungsgemäßen physischen Kanäle zu treiben.
  • 8 zeigt die Verarbeitung, die durch die exemplarische Datenkommunikationsarchitektur 200 zum Handhaben eines Verbindungsausfalls durchgeführt wird. Wie gezeigt ist, beginnt die Verarbeitung bei Block 800 und geht zu Block 805 über, wo die Datenkommunikationsarchitektur ein Training der Kommunikationsverbindung einleitet. Von dort werden ein Parallel-Serien-Umsetzer und ein Serien-Parallel-Umsetzer der Datenkommunikationsarchitektur 200 dazu abgeordnet, eine logische Kommunikationsverbindung bei Block 810 zu erzeugen. Die erzeugte logische Kommunikationsverbindung wird dann bei Block 815 über eine physische Kommunikationsverbindung betrieben. Von dort geht die Verarbeitung zu Block 820 über, wo die Schulung der Kommunikationsverbindung überwacht wird, um etwaige Verbindungsausfälle zu identifizieren. Dann wird bei Block 825 eine Prüfung durchgeführt, um zu bestimmen, ob auf der Verbindung Ausfälle vorliegen. Falls gemäß der Bestimmung durch die Prüfung bei Block 825 keine Ausfälle vorliegen, geht die Verarbeitung zu Block 845 über, wo das Training der Verbindung abgeschlossen wird. Bei Block 850 werden anschließend Datenkommunikationstransaktionen auf der trainierten bzw. geschulten Verbindung durchgeführt. Die Verarbeitung endet dann bei Block 855.
  • Wenn jedoch bei Block 825 bestimmt wird, dass ein Verbindungsausfall aufgetreten ist, geht die Verarbeitung zu Block 830 über, wo die logische Kommunikationsverbindung von der ausgefallenen physischen Kommunikationsverbindung weg verschoben wird. Bei Block 835 wird eine neue Abbildung erzeugt, die neue logische und physische Kommunikationsverbindungsanordnungen bereitstellt, und bei Block 840 werden die logischen und physischen Kommunikationsverbindungen gemäß der neuen Abbildung ausgerichtet. Von dort kehrt die Verarbeitung zu Block 815 zurück, um die neu abgebildeten Kanäle bezüglich eines ordnungsgemäßen Betriebs erneut zu testen. Von dort fährt die Verarbeitung wie gezeigt fort.
  • Man wird erkennen, dass nach einer ausgewählten Anzahl von fehlgeschlagenen Versuchen ein Signal über die kooperierenden Komponenten der Datenkommunikationsarchitektur 200 gesendet wird, um anzugeben, dass die Verbindung ausgefallen ist. In einem derartigen Kontext wird die Verbindung nicht für Datenkommunikationstransaktionen verwendet.
  • Training und fehlgeschlagenes Training:
  • Die exemplarische Datenkommunikationsarchitektur 200 ist ferner in der Lage, ein erneutes Training fehlgeschlagener bzw. ausgefallener Verbindungen zu handhaben. Im Kontext von SERDES-Datenkommunikationsarchitekturen verwendet die veranschaulichende Implementierung eine Mehrzahl vieler SERDES-Verbindungen, die miteinander verwendet werden, um eine hohe Bandbreite und eine geringe Verzögerungszeit bereitzustellen. In der Praxis werden die SERDES-Verbindungen, bevor sie zum Übertragen von Daten verwendet werden können, zuerst „trainiert”, indem entsprechende bekannte Datensequenzen gesendet werden, die das Empfangsende der Verbindung verwenden kann, um die Verbindungen ordnungsgemäß auszurichten. Ferner liefert ein Training auch eine Möglichkeit, zu testen, dass die Verbindungen andere bekannte Datensequenzen genau übertragen. Unter manchen Umständen kann das Verbindungstraining während eines ersten Versuchs fehlschlagen und während eines zweiten Versuchs erfolgreich sein. In diesem Zusammenhang arbeitet die veranschaulichende Implementierung, um von dem Sendeende des Kommunikationskanals (siehe Sendekern 235 der Datenkommunikationsschnittstelle 205 der 2) an das Empfangsende (siehe Empfangskern 245 der Datenkommunikationsschnittstelle 210 der 2) des Kommunikationskanals Informationen zu kommunizieren, die ermöglichen können, dass das Training während eines zweiten Versuchs erfolgreich ist.
  • Die veranschaulichende Implementierung liefert ferner einen Mechanismus, um Informationen über die Verbindung weiterzuleiten, wenn ein Verbindungstraining fehlgeschlagen ist. Im Betrieb werden Datensequenzen zum Testen der Verbindungen formatiert, bevor sie auf dem Codierer präsentiert werden, derart, dass dieselbe Bitcodierung unabhängig von der vorherigen Disparität des Codierungsschemas, d. h. neutrale Disparität, erzeugt wird.
  • An dem Empfangsende der Verbindung sind die Daten von der SERDES-Schnittstelle ein Statisches-Bit-Empfangen-Muster, da die Daten formatiert sind, um eine neutrale Disparität aufrechtzuerhalten. Als solches können die bereitgestellten Daten als statischer Wert behandelt werden, obwohl die Ausrichtung zwischen den Verbindungen und zwischen den Empfangslogiktakten untereinander nicht garantiert ist. Ferner sieht die veranschaulichende Implementierung im Betrieb vor, dass Kopien der Datensequenzen an dem Empfangsende der Kommunikationsverbindung miteinander verglichen werden, um jegliche Verbindung, die eventuell fehlerhaft ist, zu disqualifizieren. Überdies können die Informationen anschließend verwendet werden, um jedes Ende der Verbindung neu zu programmieren, um zu verändern, wie erwartet wird, dass die Daten ankommen, um um jeglichen Defekt herum ein erneutes Training durchzuführen.
  • 9 zeigt die Verarbeitung, die durch die exemplarische Datenkommunikationsarchitektur 200 beim Handhaben von Verbindungstrainingsfehlschlägen durchgeführt wird. Wie gezeigt ist, beginnt die Verarbeitung bei Block 900 und geht zu Block 905 über, wo die exemplarische Datenkommunikationsarchitektur ein Training der Kommunikationsverbindung einleitet. Von dort geht die Verarbeitung zu Block 910 über, wo Verbindungsverwaltungsdaten erzeugt werden. Die Verbindungsverwaltungsdaten werden anschließend bei Block 915 von den Parallel-Serien-Umsetzern und Serien-Parallel-Umsetzern über die Verbindungsverwaltung hinweg kommuniziert. Das Training wird bei Block 920 überwacht, um Verbindungstrainingsfehlschläge zu identifizieren. Bei Block 925 wird dann eine Prüfung durchgeführt, um zu bestimmen, ob etwaige Verbindungstrainingsfehlschläge vorlagen. Falls keine Verbindungstrainingsfehlschläge vorliegen, geht die Verarbeitung zu Block 950 über, wo Datenkommunikationstransaktionen durchgeführt werden. Von dort aus endet die Verarbeitung bei Block 955.
  • Falls jedoch bei Block 925 bestimmt wird, dass Verbindungstrainingsfehlschläge vorliegen, geht die Verarbeitung zu Block 930 über, wo die Verbindungsverwaltungsdaten durch die Serien-Parallel-Umsetzer verarbeitet werden. Die Verbindungsverwaltungsdaten werden anschließend bei Block 935 über die zusammenwirkenden Serien-Parallel-Umsetzer hinweg verglichen, um Trainingsfehlschläge zu identifizieren. Die Parallel-Serien-Umsetzer und Serien-Parallel-Umsetzer werden dann bei Block 940 erneut programmiert, um um den Verbindungstrainingsfehlschlag herum erneut zu trainieren. Von dort aus kehrt die Verarbeitung zu Block 905 zurück und fährt wie gezeigt fort.
  • Man wird erkennen, dass nach einer ausgewählten Anzahl von Ausfällen, wie sie bei Block 925 bestimmt werden, eine Bestimmung durchgeführt wird, dass die Verbindung ausgefallen ist und nicht für Datenkommunikationstransaktionen verwendet wird. In diesem Zusammenhang kann eine zusätzli che Verarbeitung, wie sie durch 8 beschrieben ist, durchgeführt werden, um die logischen und physischen Kanäle erneut abzubilden.
  • Handhaben verfälschter Daten:
  • Die exemplarische Datenkommunikationsarchitektur 200 ist ferner in der Lage, Daten als verfälscht zu identifizieren und zu markieren, um die Robustheit der Datenkommunikationsarchitektur zu erhöhen. Im Kontext von SERDES-Datenkommunikationsarchitekturen liefert die veranschaulichende Implementierung einen Mechanismus zum Erkennen, wann Daten nicht erfolgreich über die Verbindung hinweg übertragen werden, und markiert derartige Daten als verfälscht. Dies kann auftreten, wenn das kleine Datenpaket verfälscht wird, bevor es gesendet wird. Die veranschaulichende Implementierung arbeitet, um zu ermöglichen, dass die ausgefallenen Daten akzeptiert werden, so dass die Verbindung dazu übergehen kann, Daten hinter dem ausgefallenen kleinen Datenpaket zu senden. Ferner wird das ausgefallene kleine Datenpaket als verfälscht markiert und an seinen Zielort gesandt.
  • Ferner ermöglicht die veranschaulichende Implementierung, dass eine Verbindung ein als verfälscht markiertes kleines Datenpaket annimmt und jegliche Transaktion, die im Gange ist, wenn die Verbindung, die es derzeit durchläuft, ausfällt, abschließt. Dies wird bewerkstelligt, indem hergestellte Daten gesendet werden, um die Transaktion auszufüllen, und indem die gesamten Daten, Teildaten und Fülldaten, als verfälscht markiert werden. Dadurch wird verhindert, dass teilweise übertragene Transaktionen andere Verbindungsschnittstellen verstopfen, was die Infrastruktur befähigt, den Ausfall auf Prozesse zu beschränken, die die ausgefallene Verbindung aktiv nutzten.
  • 10 zeigt die Verarbeitung, die durchgeführt wird, wenn Daten während Datenkommunikationstransaktionen identifiziert und als verfälscht markiert werden. Wie gezeigt ist, beginnt die Verarbeitung bei Block 1000 und geht zu Block 1005 über, wo eine Kommunikationsverbindung zwischen zusammenwirkenden Komponenten der exemplarischen Datenkommunikationsarchitektur 200 eingerichtet wird. Von dort aus geht die Verarbeitung zu Block 1010 über, wo eine Datenübertragung über die eingerichtete Kommunikationsverbindung überwacht wird. Daten, die nicht erfolgreich über die Kommunikationsverbindung übertragen werden, werden bei Block 1015 identifiziert. Die identifizierten, nicht erfolgreich übertragenen Daten werden bei Block 1020 als verfälscht markiert. Von dort aus wird bei Block 1025 eine Prüfung durchgeführt, um zu bestimmen, ob die verfälschten Daten Teildaten enthalten. Falls die Prüfung bei Block 1025 ergibt, dass keine Teildaten vorliegen, geht die Verarbeitung zu Block 1040 über, wo die als verfälscht markierten Daten durch die Komponenten der Datenkommunikationsarchitektur verarbeitet werden. Von dort aus werden die als verfälscht markierten Daten bei Block 1045 über die Datenkommunikationsarchitektur hinweg weiterverbreitet. Bei Block 1050 werden dann Datenkommunikationstransaktionen durchgeführt. Die Verarbeitung endet dann bei Block 1055.
  • Falls jedoch bei Block 1025 bestimmt wird, dass Teildaten vorliegen, geht die Verarbeitung zu Block 1030 über, wo Fülldaten erzeugt werden, die an die verfälschten Teildaten anzuhängen sind. Die Fülldaten und die verfälschten Teildaten werden dann bei Block 1035 kollektiv als eine Einheit verfälschter Daten markiert. Von dort aus geht die Verarbeitung zu Block 1040 über und fährt von dort aus fort.
  • Ferner sieht die veranschaulichende Implementierung vor, dass die Daten infolge einer oder mehrerer Iterationen erfolgreicher Versuche eines Kommunikationsverbindungstrainings als verfälscht identifiziert werden. Anders ausgedrückt wird bestimmt, dass das Problem ein mit den Daten zusammenhängendes Problem ist, wenn die Kommunikationsverbindung letztlich erfolgreich trainiert werden kann, die Übertragung spezifischer kleiner Datenpakete jedoch wiederholt fehlschlägt.
  • Fehlercodes zur Verwendung bei der Fehlererfassung:
  • Die exemplarische Datenkommunikationsarchitektur 200 der 2 ist ferner in der Lage, Fehler über eine Mehrzahl ihrer Kommunikationskanäle auf effiziente Weise zu erfassen, ohne eine umfassende Verarbeitung durchzuführen. Im Kontext einer SERDES-Datenkommunikationsarchitektur sieht die veranschaulichende Implementierung eine Fehlercodierung vor, die unter Verwendung des Codierungsprotokolls der Datenkommunikationsarchitektur arbeitet.
  • Im Betrieb werden Transaktionen (oder Datenpakete) über eine Sammlung mehrerer Verbindungskanäle in Einheiten, die als kleine Datenpakete bezeichnet werden, weitergeleitet, wobei jede Transaktion gemäß ihrer Größe eine Anzahl von kleinen Datenpaketen erfordert. Jedes kleine Datenpaket umfasst eine Anzahl (z. B. 8) logischer Bits pro Kanal, die in einem nummerierten (z. B. 10) Bitcodierungsprotokoll übertragen werden. Dieses Fehlererfassungsschema arbeitet zu jeglichem Zeitpunkt mit jeweils einem kleinen Datenpaket. In der Praxis ist die standardmäßige 8b10b-Codierung, die pro Kanal verwendet wird, in der Lage, Einbitfehler in einem Kanal zu erfassen. Diese Erfassung ist mit einer Logik kombiniert, um acht Paritätsbits über die Kanäle, die das kleine Datenpaket tragen, zu berechnen. Das Paritätsbit beruht nicht auf dem 1., 2., 3., ... 8. Bit der 8 Bits von auf dem Kanal gesendeten Daten. Diese 8 Paritätsbits werden dann als die Daten verwendet, die über einen zusätzlichen Verbindungskanal hinweg übertragen werden sollen. Fehler können erfasst werden, indem die Paritätsbits für die über einen Kommunikationskanal übertragenen Daten an dem Empfangsende berechnet werden.
  • 11 zeigt die Verarbeitung, die durch die exemplarische Datenkommunikationsarchitektur 200 beim Erfassen von Fehlern über eine Mehrzahl von Datenkommunikationskanälen durchgeführt wird. Wie gezeigt ist, beginnt die Verarbeitung bei Block 1100 und geht zu Block 1105 über, wo eine Kommunikationsverbindung zwischen Komponenten der exemplarischen Datenkommunikationsarchitektur 200 eingerichtet wird. Von dort aus geht die Verarbeitung zu Block 1110 über, wo Paritätsbits für Daten, die kommuniziert werden, auf der Basis des Codierungsprotokolls, das n Bits aufweist, berechnet werden. Die Paritätsbits werden dann bei Block 1115 über die Kommunikationsverbindung hinweg von den Parallel-Serien-Umsetzern an die Serien-Parallel-Umsetzer kommuniziert. Die Paritätsbits werden dann bei Block 1120 durch die Serien-Parallel-Umsetzer verarbeitet. Bei Block 1125 wird dann eine Prüfung durchgeführt, um zu bestimmen, ob etwaige Fehler unter Verwendung der Paritätsbits identifiziert wurden. Falls bei Block 1125 keine Fehler identifiziert wurden, geht die Verarbeitung zu Block 1135 über, wo Datenkommunikationstransaktionen durchgeführt werden. Die Verarbeitung endet dann bei Block 1140.
  • Falls jedoch bei Block 1125 bestimmt wird, dass Fehler identifiziert wurden, geht die Verarbeitung zu Block 1130 über, wo die Daten erneut von dem Parallel-Serien-Umsetzer an den Serien-Parallel-Umsetzer kommuniziert werden. Von dort aus kehrt die Verarbeitung zu Block 1110 zurück und fährt wie gezeigt fort.
  • Man wird erkennen, dass nach einer Anzahl von Versuchen, die Daten erneut von dem Parallel-Serien-Umsetzer an den Serien-Parallel-Umsetzer zu kommunizieren, und nachdem die Fehler weiterhin identifiziert werden, dann derartige Daten gemäß der oben bei 10 beschriebenen Verarbeitung als verfälscht markiert werden können.
  • Erneuter Versuch auf Verbindungsebene:
  • Die exemplarische Datenkommunikationsarchitektur 200 der 2 ist ferner in der Lage, einen erfolgreichen Datentransfer zwischen ihren Komponenten zu quittieren. Im Kontext einer SERDES-Datenkommunikationsarchitektur können Transaktionen in einem „Paket”-Format über die Verbindungen weitergeleitet werden. Je nach der Menge an Informationen und Daten, die die Transaktion umfasst, kann aus einem oder mehreren kleinen Paketen ein Paket gebildet werden. Als ein kleines Datenpaket kann die Nutzlasteinheit betrachtet werden, zu deren Transfer, jeweils einzeln, die Verbindung entworfen ist. Das Paket kann ein kleines Anfangsblockpaket aufweisen, auf das eine Anzahl kleiner Datenpakete folgt, um die Transaktion auszufüllen. Unter anderem kann der Anfangsblock Informationen, die den Pakettyp beschreiben, und andere Informationen, das Paket zu handhaben, z. B. seine Zieladresse, umfassen.
  • Um die Fähigkeit eines erneuten Sendens oder eines erneuten Versuchs des Transfers kleiner Datenpakete über die Verbindung zu erzielen, hält die veranschaulichende Implementierung im Wesentlichen alle kleinen Anfangsblock- und Datenpakete, die über die Verbindung transferiert wurden, solange in einem Datenpuffer, bis von dem entgegengesetzten Ende der Verbindung ein Quittungssignal empfangen wird. Nachdem eine Quittung eines erfolgreichen Transfers empfangen wurde, kann der Datenpuffereintrag, der dieses kleine Anfangsblock- und Datenpaket enthält, freigegeben werden, um durch ein anderes kleines Datenpaket verwendet zu werden. Bei der vorgesehenen Implementierung können allgemein nicht mehr kleine Anfangsblock- und Datenpakete über die Verbindung gesendet werden, als es Verbindungsebene-Neuversuchspuffereinträge gibt, um sie zu halten. Falls es misslingt, ein kleines Datenpaket ordnungsgemäß über die Verbindung zu transferieren, ist das erste kleine Anfangsblock- und Datenpaket, das erneut über die Verbindung gesendet werden soll, das älteste kleine Datenpaket in dem Datenpuffer, das nicht quittiert wurde.
  • Die veranschaulichende Implementierung liefert einen Mechanismus und ein Protokoll, die die Quittung eines erfolgreichen Transfers eines kleinen Datenpakets erzielen. In der Praxis weist das über die Verbindung transferierte kleine Datenpaket eine demselben zugeordnete Markierung auf, die zu der Eintragsadresse des Datenpuffers passt, wo das kleine Datenpaket gespeichert ist. Das kleine Anfangsblockpaket enthält ein Feld, das für eine Quittung eines erfolgreichen Transfers reserviert ist. Wenn ein Anfangsblock über die Verbindung ausgesendet wird, wird dieses Feld mit der Adresse des letzten kleinen Datenpakets, das zu diesem Zeitpunkt erfolgreich empfangen wurde, gefüllt. Beim Senden der Adresse korrigiert, falls eine Quittung verloren geht, die nächste Quittung selbst den Mechanismus.
  • In dem Fall, dass kein gültiger Anfangsblock bereit ist, die Adressquittung über die Verbindung zu tragen, erzeugt die veranschaulichende Implementierung einen Leerlauf-Anfangsblock, um die Quittung über die Verbindung zurückzutragen.
  • Schließlich wird, nachdem ein Verbindungstransferausfall korrigiert wurde, jedoch bevor der Normalbetrieb erneut gestartet wird, die Adresse des zuletzt erfolgreich empfangenen kleinen Datenpakets als Teil der Verbindungsneustartsequenz gesendet, um sicherzustellen, dass erfolgreich empfangene kleine Datenpakete entsprechend quittiert werden.
  • 12 zeigt die Verarbeitung, die durch die exemplarische Datenkommunikationsarchitektur 200 der 2 beim Erzeugen und Abwickeln von Quittungen für erfolgreiche Datenkommunikationen durchgeführt wird. Wie gezeigt ist, beginnt die Verarbeitung bei Block 1200 und geht zu Block 1205 über, wo zwischen zusammenwirkenden Komponenten der Datenkommunika tionsarchitektur 200 der 2 eine Kommunikationsverbindung eingerichtet wird. Bei Block 1210 werden dann kleine Datenpakete in einem kooperierenden Datenpuffer gespeichert. Von dort aus geht die Verarbeitung zu Block 1215 über, wo eine Adresse für das kleine Datenpaket erzeugt wird. Die Daten mit der Adresse des kleinen Datenpakets werden dann bei Block 1220 von einem sendenden Parallel-Serien-Umsetzer kommuniziert. Bei Block 1225 wird dann eine Prüfung durchgeführt, um zu bestimmen, ob die Daten ordnungsgemäß an einen empfangenden Serien-Parallel-Umsetzer kommuniziert wurden. Falls die Prüfung bei Block 1225 angibt, dass die Daten nicht ordnungsgemäß kommuniziert wurden, geht die Verarbeitung zu Block 1230 über, wo angefordert wird, dass die Daten durch das Sendeende der Kommunikationsverbindung unter Verwendung der Adresse des jüngsten empfangenen kleinen Datenpakets erneut gesendet werden. Von dort aus kehrt die Verarbeitung zu Block 1220 zurück und fährt wie gezeigt fort.
  • Falls jedoch bei Block 1225 bestimmt wird, dass die Daten ordnungsgemäß kommuniziert wurden, geht die Verarbeitung zu Block 1235 über, wo eine Prüfung durchgeführt wird, um zu bestimmen, ob ein Anfangsblock verfügbar ist, um die Quittung von dem Empfangsende der Kommunikationsverbindung zu dem Sendeende der Kommunikationsverbindung zu tragen. Es kann zu einer Zeitverzögerung kommen, bis die Quittung erstellt wird, während die kleinen Datenpakete zuerst gesendet werden, um aktuelle ausgehende Pakete zu vervollständigen. Falls die Prüfung bei Block 1235 angibt, dass ein Anfangsblock zur Verfügung steht, geht die Verarbeitung zu Block 1255 über, wo die Adresse des kleinen Datenpakets unter Verwendung des verfügbaren Anfangsblocks als Quittung eines erfolgreichen Transfers von dem Empfangsende des Kommunikationskanals an das Sendeende des Kommunikationskanals kommuniziert wird. Die Verarbeitung geht zu Block 1260 über, wo die Adresse des kleinen Datenpakets aus dem kooperierenden Datenpuffer freigegeben wird. Die Verarbeitung endet dann bei Block 1250.
  • Falls jedoch bei Block 1235 bestimmt wird, dass kein Anfangsblock zur Verfügung steht, wird bei Block 1240 ein Leerlauf-Anfangsblock erzeugt, um die Quittung eines erfolgreichen Transfers zu tragen. Der Leerlauf-Anfangsblock wird bei Block 1245 von dem Empfangsende der Kommunikationsverbindung an das Sendeende der Kommunikationsverbindung kommuniziert. Die Verarbeitung geht wiederum zu Block 1260 über, wo die Adresse des kleinen Datenpakets aus dem kooperierenden Datenpuffer freigegeben wird. Die Verarbeitung endet dann bei Block 1250.
  • Zusammengenommen liefern die hierin beschriebenen Vorrichtungen und Verfahren eine Datenkommunikationsarchitektur, die zur Verwendung als Kommunikationsmittel einer Rechenumgebung eingesetzt wird, das eine Datenverzögerungszeit verringert. Es versteht sich jedoch, dass an der Erfindung verschiedene Modifikationen und alternative Konstruktionen vorgenommen werden können. Es besteht keine Absicht, die Erfindung auf die hierin beschriebenen spezifischen Konstruktionen zu beschränken. Im Gegenteil – die Erfindung soll alle Modifikationen, alternativen Konstruktionen und Äquivalente, die in den Schutzumfang und die Wesensart der Erfindung fallen, abdecken.
  • Man sollte beachten, dass die vorliegende Erfindung in einer Vielzahl von Rechnerumgebungen (einschließlich sowohl nicht drahtloser als auch drahtloser Computerumgebungen), Teilrechenumgebungen und realen Umgebungen implementiert sein kann. Die verschiedenen hierin beschriebenen Techniken können in Hardware oder Software oder einer Kombination aus beiden implementiert sein. Vorzugsweise sind die Techniken in Rechenumgebungen implementiert, die programmierbare Computer unterhalten, die einen Prozessor, ein durch den Prozessor lesbares Speichermedium (einschließlich eines flüchtigen und nicht-flüchtigen Speichers und/oder flüchtiger und nicht-flüchtiger Speicherelemente), zumindest eine Eingabevorrichtung und zumindest eine Ausgabevorrichtung umfassen. Eine Rechenhardwarelogik, die mit verschiedenen Anweisungssätzen kooperiert, wird auf Daten angewendet, um die oben beschriebenen Funktionen zu erfüllen und um Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen werden an eine oder mehrere Ausgabevorrichtungen angelegt. Programme, die durch die exemplarische Rechenhardware verwendet werden, können vorzugsweise in verschiedenen Programmiersprachen implementiert sein, einschließlich einer verfahrensorientierten Programmiersprache oder einer objektorientierten Programmiersprache auf hohem Niveau, um mit einem Computersystem zu kommunizieren. Veranschaulichenderweise können die hierin beschriebenen Vorrichtungen und Verfahren auf Wunsch in Assemblersprache oder Maschinensprache implementiert sein. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein. Jedes derartige Computerprogramm wird vorzugsweise auf einem Speichermedium oder einer Speichervorrichtung (z. B. ROM oder Magnetplatte) gespeichert, das bzw. die durch einen programmierbaren Mehrzweck- oder Spezialcomputer lesbar ist, um den Computer zu konfigurieren und zu betreiben, wenn das Speichermedium oder die Speichervorrichtung durch den Computer gelesen wird, um die oben beschriebenen Prozeduren durchzuführen. Die Vorrichtung kann auch so angesehen werden, dass sie als computerlesbares Speichermedium implementiert ist, das mit einem Computerprogramm konfiguriert ist, wobei das derart konfigurierte Speichermedium bewirkt, dass ein Computer auf eine spezifische und vordefinierte Weise arbeitet.
  • Obwohl eine exemplarische Implementierung der Erfindung oben ausführlich beschrieben wurde, werden Fachleute ohne weiteres erkennen, dass bei den exemplarischen Ausführungsbeispielen viele zusätzliche Modifikationen möglich sind, ohne wesentlich von den neuartigen Lehren und Vorteilen der Erfindung abzuweichen. Dementsprechend sollen diese und alle derartigen Modifikationen in dem Schutzumfang dieser Erfindung enthalten sein. Die Erfindung wird durch die vorliegenden exemplarischen Patentansprüche besser definiert.

Claims (21)

  1. Verfahren zum Handhaben eines fehlgeschlagenen Verbindungstrainings in einem Rechensystem (100), das eine Datenkommunikationsarchitektur (200) aufweist, die einen Serialisierer (1 – n) und einen Deserialisierer (1 – n) verwendet, wobei das Verfahren folgende Schritte umfasst: Einleiten eines Trainings von Verbindungen zwischen dem Serialisierer und dem Deserialisierer der Datenkommunikationsarchitektur (200); Erzeugen von Verbindungsverwaltungsdaten zum Codieren durch den Serialisierer; Kommunizieren der codierten Verbindungsverwaltungsdaten an den Deserialisierer durch den Serialisierer; und Verarbeiten der codierten Verbindungsverwaltungsdaten durch den Deserialisierer nach einem Beobachten eines Fehlschlagens des Verbindungstrainings, um eine Verbindungstrainingskorrekturmaßnahme zu identifizieren.
  2. Verfahren gemäß Anspruch 1, das ferner ein erneutes Programmieren des Serialisierers und des Deserialisierers, um die Verbindung um identifizierte Verbindungsausfälle herum erneut zu trainieren, umfasst.
  3. Verfahren gemäß Anspruch 2, das ferner ein Konfigurieren des Serialisierers und des Deserialisierers, um ausgewählte Datenpakete zu erwarten, umfasst.
  4. Verfahren gemäß einem der Ansprüche 1 bis 3, das ferner ein Formatieren der Verbindungsverwaltungsdaten, damit sie eine neutrale Disparität aufweisen, umfasst.
  5. Verfahren gemäß einem der Ansprüche 1 bis 4, das ferner ein Kommunizieren der Verbindungsverwaltungsdaten an eine Mehrzahl von ausgewählten Deserialisierern durch eine Mehrzahl von Serialisierern umfasst.
  6. Verfahren gemäß Anspruch 5, bei dem die Verbindungsverwaltungsdaten über die Mehrzahl von Deserialisierern hinweg verglichen werden.
  7. Verfahren gemäß einem der Ansprüche 1 bis 6, das ferner ein Kommunizieren der Verbindungsverwaltungsdaten zwischen dem Serialisierer und dem Deserialisierer auf ein Verbindungstrainingsfehlschlagsereignis hin umfasst.
  8. Computerlesbares Medium, das computerlesbare Anweisungen aufweist, um einen Computer anzuweisen, ein Verfahren nach einem der Ansprüche 1 bis 7 durchzuführen.
  9. System zum Handhaben fehlgeschlagener Verbindungen während eines Verbindungstrainings in einer Datenkommunikationsarchitektur (200), die einen (1 – n) Serialisierer und einen Deserialisierer (1 – n) verwendet, das folgende Merkmale aufweist: ein Verbindungstrainingsmodul, das mit dem Serialisierer und dem Deserialisierer zusammenarbeitet, um Kommunikationsverbindungen einzurichten und zu trainieren; wobei Verbindungsverwaltungsdaten als Teil eines Verbindungstrainingsprotokolls zwischen dem Serialisierer und dem Deserialisierer kommuniziert werden, um zu identifizieren, welche Verbindungen eventuell nicht ordnungsgemäß funktionieren; und einen Anweisungssatz, der dem Serialisierer und dem Deserialisierer Verbindungstrainingskorrekturanweisungen bereitstellt, um Verbindungen, deren Training fehlschlägt, zu handhaben.
  10. System gemäß Anspruch 9, bei dem die Verbindungsverwaltungsdaten eine neutrale Disparität aufweisen.
  11. System gemäß Anspruch 9 oder 10, bei dem das Verbindungstrainingsmodul einen Abschnitt des Serialisierers und des Deserialisierers umfasst.
  12. System gemäß einem der Ansprüche 9 bis 11, bei dem das Verbindungstrainingsmodul Verbindungsverwaltungsdaten so formatiert, dass sie eine neutrale Disparität aufweisen.
  13. System gemäß Anspruch 12, bei dem die Verbindungsverwaltungsdaten zum Verarbeiten durch eine ausgewählte Anzahl von Deserialisierern empfangen werden.
  14. System gemäß Anspruch 13, bei dem durch das Verbindungstrainingsmodul ein Vergleich durchgeführt wird, um zu identifizieren, welcher beziehungsweise welche der ausgewählten Anzahl von Deserialisierern die Verbindungsverwaltungsdaten ordnungsgemäß verarbeitete(n).
  15. System gemäß Anspruch 14, bei dem das Verbindungstrainingsmodul die Serialisierer und die Deserialisierer nach dem Identifizieren, welche Verbindungen nicht funktionieren, erneut programmiert.
  16. System gemäß Anspruch 15, bei dem das Verbindungstrainingsmodul die fehlgeschlagenen Verbindungen erneut trainiert.
  17. Verfahren zum Identifizieren einer fehlgeschlagenen Verbindung von einer Mehrzahl von Verbindungen während eines Verbindungstrainings in einer Datenkommunikationsarchitektur (200), die Daten zwischen Computerprozessoren kommuniziert, wobei das Verfahren folgende Schritte umfasst: Einrichtung von Kommunikationsverbindungen zwischen Serialisierern und Deserialisierern der Datenkommunikationsarchitektur (200); Überwachen der Kommunikationen zwischen den Serialisierern und den Deserialisierern als Bestandteil eines Verbindungstrainingsprotokolls; Ausführen des Verbindungstrainingsprotokolls an den Serialisierern und den Deserialisierern; Erzeugen von Verbindungsverwaltungsdaten für eine Kommunikation zwischen den Serialisierern und den Deserialisierern; und auf das Auftreten eines Verbindungstrainingsausfalls hin, Vergleichen, wie die Verbindungsverwaltungsdaten durch die Deserialisierer verarbeitet werden, um eine fehlgeschlagene Verbindung zu identifizieren.
  18. Verfahren gemäß Anspruch 17, das ferner ein Formatieren der Verbindungsverwaltungsdaten, um eine gleichmäßige Verarbeitung durch die Deserialisierer zu gewährleisten, umfasst.
  19. Verfahren gemäß Anspruch 18, das auf das Auftreten eines Verbindungsausfalls hin ferner ein erneutes Programmieren der Serialisierer und der Deserialisierer gemäß einem Verbindungstrainingsprotokoll umfasst.
  20. Verfahren gemäß Anspruch 19, das ferner ein Einstellen der Serialisierer und der Deserialisierer, so dass sie Daten erwarten, die ein ausgewähltes Format aufweisen, umfasst.
  21. Verfahren gemäß einem der Ansprüche 17 bis 20, das ferner ein erneutes Trainieren der fehlgeschlagenen Verbindungen umfasst.
DE102004042068A 2004-01-12 2004-08-31 Verfahren, computerlesbares Medium und System zum Handhaben eines fehlgeschlagenen Verbindungstrainings Expired - Fee Related DE102004042068B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/756,435 US7436777B2 (en) 2004-01-12 2004-01-12 Failed link training
US10/756,435 2004-01-12

Publications (2)

Publication Number Publication Date
DE102004042068A1 DE102004042068A1 (de) 2005-08-04
DE102004042068B4 true DE102004042068B4 (de) 2010-08-26

Family

ID=34739829

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102004042068A Expired - Fee Related DE102004042068B4 (de) 2004-01-12 2004-08-31 Verfahren, computerlesbares Medium und System zum Handhaben eines fehlgeschlagenen Verbindungstrainings

Country Status (2)

Country Link
US (1) US7436777B2 (de)
DE (1) DE102004042068B4 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7593457B2 (en) * 2004-01-30 2009-09-22 Broadcom Corporation Transceiver system and method having a transmit clock signal phase that is phase-locked with a receive clock signal phase
US7545899B2 (en) * 2004-01-30 2009-06-09 Broadcom Corporation System and method of phase-locking a transmit clock signal phase with a receive clock signal phase
US20050262184A1 (en) * 2004-05-21 2005-11-24 Naveen Cherukuri Method and apparatus for interactively training links in a lockstep fashion
US7711878B2 (en) * 2004-05-21 2010-05-04 Intel Corporation Method and apparatus for acknowledgement-based handshake mechanism for interactively training links
US9847891B2 (en) * 2011-08-24 2017-12-19 Nvidia Corporation System and method for detecting reuse of an existing known high-speed serial interconnect link
US8949497B2 (en) 2011-08-24 2015-02-03 Nvidia Corporation Method and apparatus for interleaving bursts of high-speed serial interconnect link training with bus data transactions
US9330031B2 (en) 2011-12-09 2016-05-03 Nvidia Corporation System and method for calibration of serial links using a serial-to-parallel loopback
CN103200599A (zh) * 2012-01-06 2013-07-10 华为技术有限公司 传输数据的方法及设备
JP2014022835A (ja) * 2012-07-13 2014-02-03 Fujitsu Ltd 電子装置および送信制御方法
US9146848B2 (en) * 2013-04-30 2015-09-29 Hewlett-Packard Development Company, L.P. Link training for a serdes link
US9921899B2 (en) 2014-12-18 2018-03-20 Oracle International Corporation Monitoring serial link errors
US10452872B2 (en) * 2016-05-26 2019-10-22 Raytheon Company Detection system for detecting changes to circuitry and method of using the same
US10445531B2 (en) * 2016-05-26 2019-10-15 Raytheon Company Authentication system and method
US10880137B2 (en) * 2017-05-12 2020-12-29 Intel Corporation Bypassing equalization at lower data rates

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020133762A1 (en) * 2001-03-15 2002-09-19 Susnow Dean S. Method and apparatus for sliding window link physical error detection
US20030102992A1 (en) * 2001-12-05 2003-06-05 Pitio Walter Michael Serializer
US20030120852A1 (en) * 2001-12-20 2003-06-26 Mcconnell James A. Multiple port allocation and configurations for different port operation modes on a host
US20030145134A1 (en) * 2001-08-24 2003-07-31 Wehage Eric R. General input/output architecture, protocol and related methods to manage data integrity

Family Cites Families (113)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3676859A (en) 1970-12-23 1972-07-11 Ibm Data communication system incorporating device selection control
GB1478363A (en) 1974-07-30 1977-06-29 Mullard Ltd Data transmission systems
SE421151B (sv) 1979-01-02 1981-11-30 Ibm Svenska Ab Kommunikationsstyrenhet i ett databehandlingssystem
US4281577A (en) * 1979-05-21 1981-08-04 Peter Middleton Electronic tuning device
US4490788A (en) 1982-09-29 1984-12-25 Schlumberger Technology Corporation Well-logging data processing system having segmented serial processor-to-peripheral data links
US4677614A (en) 1983-02-15 1987-06-30 Emc Controls, Inc. Data communication system and method and communication controller and method therefor, having a data/clock synchronizer and method
US4681366A (en) * 1984-07-02 1987-07-21 Irvin Industries, Inc. Vanity mirror or vehicle accessory assembly and mounting apparatus therefor
FR2575573B1 (fr) * 1984-12-28 1987-02-06 Radiotechnique Dispositif recepteur de telecommande utilisant une onde porteuse modulee
US4669694A (en) * 1985-12-23 1987-06-02 American Telephone And Telegraph Company, At&T Bell Laboratories Tilt adjusting mechanism
US4756528A (en) * 1986-07-24 1988-07-12 Ramon Umashankar Video system for passenger vehicles
US5218691A (en) 1988-07-26 1993-06-08 Disk Emulation Systems, Inc. Disk emulation system
FR2641692A1 (fr) * 1989-01-17 1990-07-20 Nippon Zeon Co Bouchon de fermeture d'une breche pour application medicale et dispositif pour bouchon de fermeture l'utilisant
DE3926153A1 (de) * 1989-08-08 1991-02-14 Ottmar Haberkern Bildtongeraet mit einklappbarem flachbildschirm
US5068854A (en) 1989-09-12 1991-11-26 Cupertino, California U.S.A. Error detection for fiber distributed interfaced optic link
US5268817A (en) * 1990-04-27 1993-12-07 Kabushiki Kaisha Toshiba Portable computer with keyboard and having display with coordinate input tablet rotatably mounted to face either toward or away from keyboard when closed over keyboard
JPH04141858A (ja) * 1990-10-01 1992-05-15 Sony Corp ディスク再生装置
FI921268A (fi) 1991-04-15 1992-10-16 Hochiki Co Detekteringssystem foer oeverfoerningsfel foer anvaendning i bevakningssystem foerebyggande av destruktioner
JPH0716130A (ja) * 1993-06-30 1995-01-20 Sony Corp 映像表示装置を備えた座席
US5397160A (en) * 1993-08-02 1995-03-14 Landry; Richard P. Vehicle console
JP3501305B2 (ja) 1993-08-04 2004-03-02 サン・マイクロシステムズ・インコーポレイテッド 相互接続制御装置及び方法
JP3069244B2 (ja) 1994-07-04 2000-07-24 古河電気工業株式会社 多芯光ファイバの検査装置
US5956370A (en) 1996-01-17 1999-09-21 Lsi Logic Corporation Wrap-back test system and method
US5790563A (en) 1996-02-05 1998-08-04 Lsi Logic Corp. Self test of core with unpredictable latency
JPH1174868A (ja) 1996-09-02 1999-03-16 Toshiba Corp 情報伝送方法およびその方法が適用される情報伝送システムにおける符号化装置/復号化装置、並びに符号化・多重化装置/復号化・逆多重化装置
KR19980025494A (ko) * 1996-10-01 1998-07-15 김광호 액정디스플레이 모니터 스탠드
US6404739B1 (en) 1997-04-30 2002-06-11 Sony Corporation Transmitter and transmitting method, receiver and receiving method, and transceiver and transmitting/receiving method
US5907566A (en) 1997-05-29 1999-05-25 3Com Corporation Continuous byte-stream encoder/decoder using frequency increase and cyclic redundancy check
US6154870A (en) 1997-06-04 2000-11-28 Seagate Technology Llc Signal error-correction system and method
US6266236B1 (en) * 1997-08-27 2001-07-24 Vadem Apparatus and method for connecting and articulating display in a portable computer having multiple display orientations
US6085257A (en) 1997-10-16 2000-07-04 Lsi Logic Corporation Enhanced receiving chip for a computer monitor
US6167077A (en) * 1997-12-23 2000-12-26 Lsi Logic Corporation Using multiple high speed serial lines to transmit high data rates while compensating for overall skew
US6052812A (en) 1998-01-07 2000-04-18 Pocketscience, Inc. Messaging communication protocol
GB2334641A (en) 1998-02-11 1999-08-25 Northern Telecom Ltd Multiplexed transmission of optical signals
US6102476A (en) * 1998-03-11 2000-08-15 May; Gordon G. Computer furniture with integrated computer
JPH11262427A (ja) * 1998-03-18 1999-09-28 Ikeda Bussan Co Ltd 可動式ヘッドレスト
US6092233A (en) 1998-03-20 2000-07-18 Adaptec, Inc. Pipelined Berlekamp-Massey error locator polynomial generating apparatus and method
US6311239B1 (en) 1998-10-29 2001-10-30 Cypress Semiconductor Corp. Architecture, circuitry and method for transmitting n-bit wide data over m-bit wide media
FI982854A (fi) 1998-12-31 2000-07-01 Nokia Networks Oy Datasiirto tietoliikennejärjestelmässä
US6690682B1 (en) * 1999-03-12 2004-02-10 Lucent Technologies Inc. Bit multiplexing of packet-based channels
US6771671B1 (en) * 1999-03-12 2004-08-03 Lucent Technologies Inc. Data flow synchronization and ordering
US6516952B1 (en) 1999-05-13 2003-02-11 3Com Corporation Dual mode serializer-deserializer for data networks
US6231371B1 (en) * 1999-06-25 2001-05-15 Hewlett-Packard Company Docking station for multiple devices
US6850559B1 (en) 1999-06-28 2005-02-01 At&T Corp. System and methods for transmitting data
US6587432B1 (en) 1999-08-31 2003-07-01 Intel Corporation Method and system for diagnosing network congestion using mobile agents
USD438853S1 (en) * 1999-12-27 2001-03-13 Kabushiki Kaisha Toshiba Digital videodisk player
US6628679B1 (en) 1999-12-29 2003-09-30 Intel Corporation SERDES (serializer/deserializer) time domain multiplexing/demultiplexing technique
US6654235B2 (en) * 2000-01-25 2003-11-25 Bruce Imsand Portable workstation computer
US6738935B1 (en) 2000-02-07 2004-05-18 3Com Corporation Coding sublayer for multi-channel media with error correction
WO2001072554A1 (fr) * 2000-03-29 2001-10-04 Mitsubishi Denki Kabushiki Kaisha Systeme de lecteur audiovisuel
US6647428B1 (en) 2000-05-05 2003-11-11 Luminous Networks, Inc. Architecture for transport of multiple services in connectionless packet-based communication networks
DE20008498U1 (de) * 2000-05-11 2000-09-21 Sarnatech Paulmann & Crone GmbH, 58511 Lüdenscheid Halterung
US6522368B1 (en) * 2000-05-19 2003-02-18 Timely Innovations, Lp Portable vehicle video system
US6392877B1 (en) * 2000-06-05 2002-05-21 Richard J. Iredale Laptop computer display mounting
US6690757B1 (en) * 2000-06-20 2004-02-10 Hewlett-Packard Development Company, L.P. High-speed interconnection adapter having automated lane de-skew
US6662332B1 (en) * 2000-07-05 2003-12-09 3Com Corporation Interleaver for burst error correction
US7054331B1 (en) * 2000-09-13 2006-05-30 Intel Corporation Multi-lane receiver de-skewing
USD457506S1 (en) * 2000-10-19 2002-05-21 Audiovox Specialized Applications, Llc Flip down monitor base
USD454121S1 (en) * 2000-10-27 2002-03-05 Audiovox Corporation Stowable display system in a rotatable console
US9317241B2 (en) * 2000-10-27 2016-04-19 Voxx International Corporation Vehicle console capable of wireless reception and transmission of audio and video data
US7839355B2 (en) * 2000-10-27 2010-11-23 Audiovox Corporation Vehicle display device having a wireless transmitter
US7667669B2 (en) * 2000-10-27 2010-02-23 Audiovox Corporation Vehicle display device having a wireless transmitter
US6894969B1 (en) * 2000-11-14 2005-05-17 Lucent Technologies Inc. Apparatus and method for redundancy of processing modules interfaced to a switching core
US6409242B1 (en) * 2000-11-14 2002-06-25 Chung L. Chang Flat thin screen T/V monitor automotive roof mount
US7180867B2 (en) * 2000-12-26 2007-02-20 Lucent Technologies Inc. Apparatus and method for flow path based fault detection and service restoration in a packet based switching system
US7046623B2 (en) * 2000-12-29 2006-05-16 Nokia Inc. Fault recovery system and method for inverse multiplexed digital subscriber lines
US6804800B2 (en) 2000-12-29 2004-10-12 Intel Corporation Method and apparatus for detecting and recovering from errors in a source synchronous bus
US6963533B2 (en) * 2000-12-29 2005-11-08 Nokia Inc. Method and system for establishing link bit rate for inverse multiplexed data streams
WO2002071713A2 (en) 2001-03-01 2002-09-12 Broadcom Corporation Compensation of distortion due to channel and to receiver, in a parallel transmission system
FR2822420B1 (fr) * 2001-03-21 2003-07-18 Security Vision Concept Appui-tete, notamment pour siege de vehicule automobile
US6719343B2 (en) * 2001-03-22 2004-04-13 Lear Corporation Vehicle console assembly
US6834362B2 (en) 2001-03-26 2004-12-21 Sun Microsystems, Inc. Apparatus and method for error detection on source-synchronous buses
US7058010B2 (en) * 2001-03-29 2006-06-06 Lucent Technologies Inc. Controlled switchover of unicast and multicast data flows in a packet based switching system
US8051212B2 (en) 2001-04-11 2011-11-01 Mellanox Technologies Ltd. Network interface adapter with shared data send resources
US7016304B2 (en) 2001-05-18 2006-03-21 Intel Corporation Link level retry scheme
USD456789S1 (en) * 2001-05-25 2002-05-07 Rosen Products Llc Pivotal display monitor
US7035294B2 (en) 2001-06-04 2006-04-25 Calix Networks, Inc. Backplane bus
US20030002505A1 (en) * 2001-06-30 2003-01-02 Hoch Thomas A. Apparatus and method for packet-based switching
US6556152B2 (en) * 2001-07-20 2003-04-29 Parama Networks, Inc. Deserializer
US6480373B1 (en) * 2001-07-24 2002-11-12 Compaq Information Technologies Group, L.P. Multifunctional foldable computer
WO2003013004A2 (en) 2001-07-27 2003-02-13 Koninklijke Philips Electronics N.V. Signal coding
US7512380B2 (en) * 2001-08-17 2009-03-31 Intel Corporation Apparatus and methods for finding and using available transmission frequencies
CA2357932A1 (en) 2001-09-27 2003-03-27 Alcatel Canada Inc. Method of synchronizing parallel optical links between communications components
US7019794B2 (en) * 2001-10-29 2006-03-28 Epsilon Electronics, Inc. Detachable vehicle monitor
US7079528B2 (en) 2001-12-13 2006-07-18 International Business Machines Corporation Data communication method
US6671833B2 (en) * 2002-01-08 2003-12-30 Parama Networks, Inc. Forward error correction and framing protocol
US7062568B1 (en) 2002-01-31 2006-06-13 Forcelo Networks, Inc. Point-to-point protocol flow control extension
US7343535B2 (en) 2002-02-06 2008-03-11 Avago Technologies General Ip Dte Ltd Embedded testing capability for integrated serializer/deserializers
US7073001B1 (en) * 2002-04-03 2006-07-04 Applied Micro Circuits Corporation Fault-tolerant digital communications channel having synchronized unidirectional links
US7191371B2 (en) 2002-04-09 2007-03-13 Internatioanl Business Machines Corporation System and method for sequential testing of high speed serial link core
US7243291B1 (en) 2002-04-30 2007-07-10 Silicon Graphics, Inc. System and method for communicating image data using error correction coding
AU2003243221A1 (en) 2002-05-13 2003-11-11 Fairchild Semiconductor Corporation Cross point switch with serializer and deserializer functions
US6898752B2 (en) 2002-05-31 2005-05-24 Agilent Technologies, Inc. Apparatus and methods for combinational error detection in an InfiniBand switch
US6669285B1 (en) * 2002-07-02 2003-12-30 Eric Park Headrest mounted video display
US7044546B2 (en) * 2002-08-14 2006-05-16 Johnson Safety, Inc. Headrest-mounted monitor
US7036879B2 (en) * 2002-08-14 2006-05-02 Johnson Safety, Inc. Headrest-mounted monitor
USD470828S1 (en) * 2002-08-19 2003-02-25 Harman International Industries, Inc. Video display
US6871356B2 (en) * 2002-10-28 2005-03-22 Johnson Safety, Inc. Mobile video system
US20040080213A1 (en) * 2002-10-28 2004-04-29 Chang Chung L. Mobile video system
US8243215B2 (en) * 2002-11-04 2012-08-14 Audiovox Corporation Hood for vehicle seat headrest including a video system
US7050124B2 (en) * 2002-11-05 2006-05-23 Samsung Electronics Co., Ltd. Mobile video system
US20040130616A1 (en) * 2003-01-03 2004-07-08 Thomas Tseng Flip-open screen with audio/video player
US7040697B1 (en) * 2003-03-20 2006-05-09 Timely Innovations, Lp Headrest having an integrated video screen
US6739654B1 (en) * 2003-04-24 2004-05-25 Hexa-Chain Co., Ltd. Headrest-mount display mounting structure
US6992987B2 (en) * 2003-05-01 2006-01-31 Genesis Microchip Inc. Enumeration method for the link clock rate and the pixel/audio clock rate
US6899365B2 (en) * 2003-05-15 2005-05-31 Audiovox Corporation Seat mountable entertainment system
US7200790B2 (en) 2003-07-08 2007-04-03 Sun Microsystems, Inc. Switch level reliable transmission
US7159137B2 (en) 2003-08-05 2007-01-02 Newisys, Inc. Synchronized communication between multi-processor clusters of multi-cluster computer systems
USD485812S1 (en) * 2003-09-23 2004-01-27 Eiger Vision Monitor device
US7275195B2 (en) 2003-10-03 2007-09-25 Avago Technologies General Ip (Singapore) Pte. Ltd. Programmable built-in self-test circuit for serializer/deserializer circuits and method
US20050073586A1 (en) 2003-10-06 2005-04-07 Songnian Li Digital camera interface
USD521524S1 (en) * 2004-01-08 2006-05-23 Johnson Safety, Inc. Multi-media player enclosure
USD515522S1 (en) * 2004-04-19 2006-02-21 Vitito Christopher J Entertainment system for an automobile headrest
US7066544B2 (en) * 2004-09-23 2006-06-27 Baton Digital Electronic Tech. Co., Ltd. Headrest mounting structure

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020133762A1 (en) * 2001-03-15 2002-09-19 Susnow Dean S. Method and apparatus for sliding window link physical error detection
US20030145134A1 (en) * 2001-08-24 2003-07-31 Wehage Eric R. General input/output architecture, protocol and related methods to manage data integrity
US20030158992A1 (en) * 2001-08-24 2003-08-21 Jasmin Ajanovic General input/output architecture, protocol and related methods to implement flow control
US20030102992A1 (en) * 2001-12-05 2003-06-05 Pitio Walter Michael Serializer
US20030120852A1 (en) * 2001-12-20 2003-06-26 Mcconnell James A. Multiple port allocation and configurations for different port operation modes on a host

Also Published As

Publication number Publication date
US20050251595A1 (en) 2005-11-10
US7436777B2 (en) 2008-10-14
DE102004042068A1 (de) 2005-08-04

Similar Documents

Publication Publication Date Title
DE102004042068B4 (de) Verfahren, computerlesbares Medium und System zum Handhaben eines fehlgeschlagenen Verbindungstrainings
DE102009021865B4 (de) Bereitstellung eines Präfixes für einen Datenkopf
DE60213616T2 (de) Eine allgemeine eingabe-/ausgabearchitektur, protokoll und entsprechende verfahren zur umsetzung der flusssteuerung
DE69928603T2 (de) Medienzugriffssteuerung
DE60222191T2 (de) Übermittlung von Transaktionstypen zwischen Agenten eines Computersystems unter Verwendung von Paketköpfen mit erweitertem Typen-/erweitertem Längenfeld
DE69801669T2 (de) System und verfahren zur stromoptimierung von isochronen daten und taktrateninformation
DE69829840T2 (de) Medienzugriffskontroller und Medienunabhängige Schnittstelle(MII) zum Verbinden an eine physikalische Schicht Vorrichtung
DE69228904T2 (de) Verfahren zur Erfassung des Identifizierers eines Knotens in einem Ein-/Ausgabesystem
DE3043894C2 (de)
DE3736550C2 (de)
DE19900331A1 (de) Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung
DE102006059376A1 (de) Synchrone Datenübertragung
DE102017120447A1 (de) Halbleitervorrichtung, Verfahren zum Betreiben der Halbleitervorrichtung und ein System, das diese beinhaltet
DE19900245A1 (de) Vorrichtung und Verfahren zum Senden und Empfangen von USB-Isochrondaten
DE19900369A1 (de) Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial Bus
DE60210312T2 (de) I/o-vermittlungsknoten für verbindungen in einem multiprozessorrechnersystem
DE112008001727T5 (de) Endpunkt-zu-Endpunkt-Flusskontrolle in einem Netzwerk
DE3851676T2 (de) Datenpaketierungsverfahren.
DE112010004006T5 (de) Zuverlässige kommunikationen in chipintegrierten netzwerken
EP2145430B1 (de) Verfahren sowie system zur sicheren übertragung von zyklischen zu übertragenden prozessdaten
DE102005053103A1 (de) Verfahren sowie System zur Übertragung von zyklischen und azyklischen Daten
DE102009027201A1 (de) Sensorübertragungsvorrichtung und Verfahren zur Übertragung von Nutzdaten eines Sensors an eine Bussteuervorrichtung
EP0974901B1 (de) Verfahren zur Ermittlung einer einheitlichen globalen Sicht vom Systemzustand eines verteilten Rechnernetzwerkes
JP3996928B2 (ja) 破損データを処理する方法
DE102005062575B4 (de) Verfahren und Vorrichtung zum Übertragen von Daten über eine Datenverbindung von einem Sender zu einem Empfänger mittels Pakete

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20130301