-
QUERVERWEIS AUF ZUGRUNDE LIEGENDE
ANMELDUNGEN
-
Die
vorliegende Erfindung beansprucht den Nutzen aus der gleichzeitig
anhängigen
provisorischen
US-Patentanmeldung
desselben Inhabers mit der Seriennummer 60/271 124 , eingereicht
am 24. Februar 2001, mit dem Titel „Massively Parallel Supercomputer". Diese Patentanmeldung
betrifft außerdem
die am selben Tag eingereichten und gleichzeitig anhängigen US-Patentanmeldungen:
die US-Patentanmeldung mit der Seriennummer (YOR920020027US1, YOR920020044US1
(15270)) mit dem Titel „Class
Networking Routing";
die US-Patentanmeldung
mit der Seriennummer (YOR920020028US1 (15271)) mit dem Titel „A Global
Tree Network for Computing Structures"; die US-Patentanmeldung mit der Seriennummer (YOR920020029US1
(15272)) mit dem Titel „Global Interrupt
and Barrier Networks";
die US-Patentanmeldung mit der Seriennummer (YOR920020030US1 (15273))
mit dem Titel „Optimized
Scalable Network Switch";
die US-Patentanmeldung mit der Seriennummer (YOR920020031US1, YOR920020032US1 (15258))
mit dem Titel „Arithmetic
Functions in Torus and Tree Networks"; die US-Patentanmeldung mit der Seriennummer
(YOR920020033US1, YOR920020034US1 (15259)) mit dem Titel „Data Capture
Technique for High Speed Signaling"; die US-Patentanmeldung mit der Seriennummer (YOR920020035US1
(15260)) mit dem Titel „Managing
Coherence Via Put/Get Windows";
die US-Patentanmeldung mit der Seriennummer (YOR920020036US1, YOR920020037US1
(15261)) mit dem Titel „Low
Latency Memory Access and Synchronization"; die US-Patentanmeldung mit der Seriennummer
(YOR920020038US1 (15276)) mit dem Titel „Twin-Tailed Fail-Over for
Fileservers Maintaining Full Performance in the Presence of Failure"; die US-Patentanmeldung
mit der Seriennummer (YOR920020039US1 (15277)) mit dem Titel „Fault Isolation
Through No-Overhead Link Level Checksums"; die US-Patentanmeldung mit der Seriennummer
(YOR920020040US1 (15278)) mit dem Titel „Ethernet Addressing Via Physical
Location for Massively Parallel Systems"; die US-Patentanmeldung mit der Seriennummer
(YOR920020041US1 (15274)) mit dem Titel „Fault Tolerance in a Supercomputer
Through Dynamic Repartitioning";
die US-Patentanmeldung
mit der Seriennummer (YOR920020042US1 (15279)) mit dem Titel „Checkpointing
Filesystem"; die
US-Patentanmeldung
mit der Seriennummer (YOR920020043US1 (15262)) mit dem Titel „Efficient
Implementation of Multidimensional Fast Fourier Transform an a Distributed-Memory
Parallel Multi-Node
Computer"; die US-Patentanmeldung
mit der Seriennummer (YOR20010211US2 (15275)) mit dem Titel „A Novel Massively
Parallel Supercomputer";
und die US-Patentanmeldung mit der Seriennummer (YOR920020045US1
(15263)) mit dem Titel „Smart Fan
Modules and System".
-
HINTERGRUND DER ERFINDUNG
-
GEBIET DER ERFINDUNG
-
Die
vorliegende Erfindung stellt einen Hardwaremechanismus zur automatischen
Anpassung von Übertragungsverzögerungen
für die
optimale simultane bidirektionale (SiBiDi) Zweibit-Signalisierung bereit.
-
ERÖRTERUNG DES STANDES DER TECHNIK
-
Eine
große
Klasse bedeutender Berechnungsaufgaben kann durch Massivparallelrechnersysteme
bewältigt
werden. Solche Systeme bestehen aus vielen identischen Rechenknoten,
die üblicherweise
jeweils aus einer oder mehreren CPUs, Speichern und einer oder mehreren
Netzschnittstellen zur Verknüpfung
mit anderen Knoten enthalten.
-
Der
in der verwandten provisorischen
US-Patentanmeldung
mit der Seriennummer 60/271 124 , eingereicht am 24. Februar
2001, mit dem Titel „"A Massively Parallel
Suptercomputer" verleiht
der SOC-Technologie (system-on-a-chip, System auf einem Chip) neuen
Schwung, indem sie ein skalierbares kostengünstiges Rechensystem mit hoher
Rechenleistung hervorbringt. Mittels der SOC-Technologie ist es
gelungen, unter Verwendung von Bibliotheken von integrierten Komponenten,
die CPU-Kerne mit integrierten Cachespeichern der ersten Ebene beinhalten,
einen ganzen Multiprozessorknoten auf einem einzigen Chip unterzubringen.
Durch derartige Packungen wird die Anzahl der Komponenten eines Knotens
erheblich verringert und die Möglichkeit
des Aufbaus eines zuverlässig
arbeitenden Großcomputers
geschaffen.
-
Die
vorliegende Erfindung betrifft das Gebiet von Massivparallelcomputern,
die für
verschiedene Anwendungen wie zum Beispiel für die Biowissenschaften eingesetzt
werden. Insbesondere betrifft diese Erfindung das Gebiet der schnellen
Signalisierung (Zeichengabe), entweder die unidirektionale Signalisierung
oder die simultane bidirektionale Signalisierung (SiBiDi).
-
Manchmal
müssen
große
Datenmengen übertragen
werden, aber die Anzahl der zur Verfügung stehenden Leitungen ist
begrenzt. Die simultane bidirektionale Signalisierung ermöglicht das gleichzeitige
Senden und Empfangen von Signalen über dieselbe Leitung. Dadurch
wird die Anzahl der Leitungen um den Faktor zwei verringert. Ein
Beispiel, wo große
Datenmengen bei stark eingeschränkter
Anzahl der Kabel übertragen
werden müssen,
stellt ein großer
Parallelsuperrechner mit Tausenden von Prozessoren dar, die über Leitungen Daten
miteinander austauschen.
-
Bei
der SiBiDi-Signalisierung werden Daten über dieselbe Leitung gesendet,
während
gleichzeitig Daten empfangen werden. Deshalb werden während des
Empfangs nicht nur die vom anderen Ende der Leitung gesendeten erwünschten
Daten, sondern auch die gerade selbst gesendeten Daten empfangen.
Dadurch wird natürlich
das gewünschte
Signal beschädigt.
Da die gerade selbst gesendeten Daten jedoch bekannt sind, können diese „heraussubtrahiert" werden. Dies erfolgt
unter Verwendung einer SiBiDi-Standardschaltlogik.
-
Die
Aufgabe der Erfindung besteht darin, einen Hardwaremechanismus zum
automatischen Anpassen der Übertragungsverzögerungen
für die
optimale 2-Bit-SiBiDi-Signalisierung
bereitzustellen, um deren Signalqualität zu verbessern. Es wird ein
spezieller Hardwarealgorithmus eingesetzt und jedes der beiden Bits
in unidirektionalen Kanälen
dazu genutzt, dass die Hardwarealgorithmen der beiden Knoten während der
Einrichtphase Einstellparameter sicher austauschen können. Ein
unidirektionaler Kanal mit derselben Frequenz weist die halbe Bandbreite
des SiBiDi-Kanals auf, zeichnet sich jedoch durch eine wesentlich
bessere Signalqualität
aus.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die
obigen Aufgaben und Vorteile der vorliegenden Erfindung für die schnelle
Signalisierung werden dem Fachmann aus der folgenden detaillierten
Beschreibung mehrerer ihrer Ausführungsarten und
Beispiele in Verbindung mit den beiliegenden Zeichnungen klar, bei
denen in allen Ansichten gleiche Elemente durch identische Bezugsnummern
bezeichnet werden, wobei:
-
1 einen
Makroblock für
den Datenempfang veranschaulicht, der serielle Daten mit einer Datenrate
von 2 GBit/s erfassen und in die lokale Taktdomäne überführen kann.
-
2 ein
Makroblock für
das Datensenden ist, der Eingangsdaten mit einer Breite von 1 Byte
bei einer Datenrate von 500 MHz empfängt und 2 Datenströme von Ausgangsdaten
in Form serieller Daten mit einer Datenrate von je 2 GBit/s erzeugt,
die über eine
differenzielle SiBiDi-Datenleitung (simultan bidirektional) übertragen
werden und dann die Eingangsdaten für den Makroblock für die Datenerfassung
von 1 darstellen.
-
3 einen
2-Bit-Makroblock einer Stufe veranschaulicht.
-
4 eine
Ausführungsform
einer getakteten Verzögerungsleitung
veranschaulicht, bei der serielle Daten in Reihe geschaltete Inverter
passieren, die jeweils die Verzögerung
schrittweise erhöhen.
-
5 einen
Protokolllogikblock veranschaulicht, der als Erweiterung der Taktverzögerungsleitung
dargestellt ist und eine Taktphase zeigt.
-
Die 6A und 6B Daten-
und Protokollmultiplexer veranschaulichen, die jeweils dem in 3 unten
gezeigten Multiplexer entsprechen, wobei für die ansteigende und die abfallende
Flanke des Takts je ein Multiplexer vorgesehen ist, während der
Multiplexer von 6C die Ausgangssignale
von 5 unten empfängt.
-
7 eine
Logik zum Verknüpfen
serieller Bits und zur Byteausrichtung zeigt, die als Leitungspaar
genutzt werden, um 4 Datenbits pro Taktzyklus zu erfassen, wobei
die Logik zwei (in 3 gezeigte) 2-Bit-Makros in
sich vereinigt und die richtige Byteausrichtung zwischen den beiden
Eingangsdatenströmen
ermittelt.
-
8 in
einem Fenstererkennungs-Ablaufplan den Fenstererkennungsprozess
veranschaulicht.
-
9 ein
Statusdiagramm 1 von 2 für
ein Zweibit-Makro veranschaulicht, das den Statusverlauf der Phase
zeigt, während
der die Abtastpunkte für
die Fensterposition ermittelt werden.
-
10 ein
Statusdiagramm 2 von 2 für
ein Zweibit-Makro veranschaulicht, das wiederum den Statusverlauf
während
normaler Datenerfassungsoperationen zeigt.
-
11 eine
erste Ausführungsart
veranschaulicht, bei der zwei differenzielle Datenleitungen ein
Paar identischer Knoten 1 und 2 verbinden, jeder Knoten eine eindeutige
Kennung (ID) aufweist und jeder Knoten mit einer 2-Bit-Sende-CPU
und einer 2-Bit-Erfassungs-CPU arbeitet.
-
12 eine
zweite Ausführungsart
elektrischer SiBiDi-Datenübertragungen
zwischen zwei Knoten veranschaulicht, dem Knoten 1 und dem Knoten
2, bei der eine einzige differenzielle Datenübertragungsleitung die Knoten
miteinander verbindet.
-
Die
Ablaufsteuerungen der 13A und 13B veranschaulichen die vom Rechenchip des Knotens
ausgeführten
Schritte beim Einrichten einer synchronen SiBiDi-Verbindung.
-
DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
-
Übersicht
-
Die
Nutzung der vorliegenden Erfindung ist zur Einrichtung von Verbindungen
in einem Massivparallel-Supercomputer vorgesehen und löst zwei seit
langem bestehende Probleme in der Computerindustrie: (1) den zunehmenden,
in Taktzyklen gemessenen Abstand zwischen den Prozessoren und dem
Speicher und (2) die hohe Leistungsdichte von Parallelcomputern,
die aus normalen Einzelprozessoren oder symmetrischen Multiprozessoren
aufgebaut sind.
-
Ein
Beispiel betrifft im Allgemeinen ein Datenerfassungsverfahren zur
schnellen Signalisierung und im Besonderen ein Verfahren zum optimalen
Abtasten eines asynchronen Datenstroms. Dieses Verfahren lässt extrem
hohe Datenraten zu und ist nicht darauf angewiesen, dass wie bei
den quellensynchronen Systemen zusammen mit den Daten ein Takt gesendet
wird.
-
Untersuchungen zu seriellen
Leitungen
-
Die
Zielbandbreite für
serielle Leitungen zum Verbinden von Knoten des Massivparallel-Supercomputers
beträgt
1,4 GBit/s (in jeder Richtung). Diese Bandbreite muss bidirektional
sein. Die bidirektionale Anforderung kann auf unterschiedliche Art
erfüllt werden.
Auf jeden Fall lautet die Bedingung, dass dies mit geringem Energieverbrauch
und kostengünstig
erfolgen muss. Die gewählte
Ausführungsform
wird in einen ASIC (Application-Specific
Integrated Circuit, anwendungsspezifischer integrierter Schaltkreis)
in einem Verarbeitungsknoten integriert. Eine besondere Herausforderung
stellt bei diesem Ansatz die Forderung nach geringem Energieverbrauch
dar. Durch diese Forderung in Verbindung mit den fehlenden relativen
Phaseninformationen für
die Datenübertragung über die
Leitung sind Standardlösungen
für die
PLL-Takt- und Datenwiederherstellung von vornherein ausgeschlossen.
In diesem Fall muss die Phase ohne Verwendung einer PLL zuverlässig den
Daten selbst entnommen werden.
-
DIGITALE DATENERFASSUNG
-
Übersicht
-
Diese
Beschreibung legt ausführlich
ein digitales Datenerfassungsverfahren dar. 1 veranschaulicht
ein Datenempfangsmakro, das serielle Daten mit einer Datenrate von
2 GBit/s erfassen und in die lokale Taktdomäne überführen kann. Die Aufgabe besteht
darin, dies unter Verwendung einer kleinen Anzahl Zellen mit geringem
Energieverbrauch zuverlässig
abzuwickeln. 2 veranschaulicht einen Makroblock
für das
Datensenden, der wesentlich einfacher als der Makroblock für den Datenempfang ist.
Er wird im zweiten Abschnitt dieser Beschreibung beschrieben. Dieser
beschreibt eine DDR-Datenwiederherstellung (double data rate, doppelte
Datenrate), für
die ein halb so großer
interner Takt wie die Frequenz der Bitzeit zulässig ist. Dieses Verfahren lässt sich
bei Bedarf im SDR-Modus (single data rate, einfache Datenrate) nutzen
oder auf die vierfache Datenrate erweitern.
-
Der
Dateneingang des Datenempfangs-Makroblocks von 1 besteht
aus zwei Datenströmen von
seriellen Eingangsdaten mit einer Datenrate von 2 GBit/s, die einen
Datenstrom von insgesamt 4 GBit/s ausmachen, und der Datenausgang
besteht aus einem Datenstrom mit einer Breite von einem Byte (Breite
von 8 Bit) bei einer Datenrate von 500 MHz. Die anderen Eingangssignale
bestehen aus einem 1-GHz-Takt, einem Rücksetzsignal zum Zurücksetzen
des Datenerfassungsmakros in einen bekannten Zustand, einem Trainingssignal
für das
Makro, damit es optimale Fenster (Positionen oder Zustände entlang
der Verzögerungsstrecke
mit mehreren Abzweigungen (siehe die 3, 4 und 5),
an denen keine Datenübergänge erfolgen und
die daher wahrscheinlich die genauesten Datenerfassungspositionen
darstellen, an denen mit größter Wahrscheinlichkeit
keine Datenfehler zu erwarten sind) zur Wiederherstellung von Daten
findet, einem Leerlaufbyte-Signal, das aus einem vorgegebenen Leerlaufdatenmuster
besteht, das empfangen wird, wenn das Makro keine Daten empfängt, einem DDR-Modus,
der das Makro in einen Modus mit doppelter Datenrate versetzt, und
einem Mindestabstand, der als Abgrenzungsparameter zum Auffinden der
optimalen Daten oder des Leerlauffensters dient. Die anderen Ausgangssignale
beinhalten ein Signal Valid_Idle zum Anzeigen des gültigen Empfangs
eines Leerlaufmusters, ein Signal Eye_found zum Anzeigen, dass die
optimalen Fensterpositionen und Parameter gefunden wurden, ein Fixierungssignal zum
Anzeigen, dass die optimale Fensterposition fixiert ist, und ein
Warnsignal zum Anzeigen, dass die Gefahr besteht, dass die optimale
Fensterposition verloren geht, da sie sich zu nahe an einem Ende
einer digitalen Verzögerungsstrecke
mit mehreren Abzweigungen befindet.
-
Das
Makro von 1 wird unter Bezug auf die 3, 4, 5, 6 und 7 näher erläutert.
-
Die
Latenz im Empfangsmakro liegt je nach der Bytephase der Daten zwischen
7 und 12 Bitzeiten. Die Latenz kann durch Überspringen des Byteausgangs
auf 5 bis 7 Bitzeiten verringert werden. Dies ist beim erneuten
Ansteuern eines Signals sinnvoll, wenn auf den Dateninhalt verzichtet
werden kann.
-
2 zeigt
einen Datensende-Makroblock, der Eingangsdaten mit einer Breite
von 1 Byte bei einer Frequenz von 500 MHz empfängt und als Ausgangsdaten 2
serielle Datenströme
zu je 2 GBit/s erzeugt, die in der oben beschriebenen Weise über eine
unidirektionale oder differenzielle SiBiDi-Datenleitung übertragen
und dann als Eingangsdaten vom Datenempfangs-Makroblock von 1 empfangen werden.
Ferner wird am Eingang ein Signal Byte_valid empfangen, um anzuzeigen,
dass gerade ein gültiges
Datensignal empfangen und dann anstelle eines Leerlaufsignals gesendet
werden muss, sowie ein 1-GHz- Taktsignal
und ein Rücksetzsignal, welches
das Datensendemakro in einen bekannten Zustand zurücksetzt.
-
Die 3, 4 und 5 veranschaulichen
den Datenempfang und die Datenerfassung. Die Daten werden erfasst,
indem Datenbits über
eine schnelle Verzögerungsleitung
mit mehreren Abzweigungen (siehe die 3, 4 und 5)
gesendet werden und alle Abzweigungen mit dem lokalen Takt verglichen
werden. Jede Abzweigung wird mit ihren Nachbarn (3 und 5)
daraufhin verglichen, ob beide gleich sind. Die Gesamtheit dieser
Vergleiche bildet eine getaktete Zeichenkette, die zusammen mit
früheren
getakteten Zeichenketten ein Protokoll bildet, mit dessen Hilfe
die optimalen Abtastpunkte ermittelt werden können. Die optimalen Abtastpunkte
können
aus der Protokoll-Zeichenkette (siehe 5, Register
A, B, C und D) durch die Suche nach Bereichen ermittelt werden,
in denen es zwischen den Verzögerungsabzweigungen
keine Änderungen
gibt, die hier als „Fenster" (Augen) bezeichnet
werden. Das Protokoll wird periodisch, zum Beispiel während jedes
lokalen Takts, aktualisiert. Die periodische Aktualisierung gleicht
Parameteränderungen
aus, zum Beispiel Temperatur- oder Spannungsänderungen verschiedener Komponenten. Ferner
gibt es drei weitere verkettete „Fenster"-Register (siehe 5, Register
B, C und D), die nicht so oft aktualisiert werden. Dadurch kann
ein Erfassungssystem entwickelt werde, das nicht nur eine programmierbare
Persistenzzeit aufweist, sondern auch gegen vereinzelte Bitfehler
nicht anfällig
ist. Die änderungsfreie
Zeitspanne kann beliebig lang gewählt werden, muss jedoch kürzer als
die maximale Zeitspanne sein, die zum zuverlässigen Abtasten der Datensignalflanken
erforderlicht ist. Damit die Bitabtastzeiten kürzer sein können als die lokale Taktperiode,
werden zum Erfassen der DDR-Daten beide Flanken des Takts verwendet
(siehe die 3 und 4). Zu jeder
Flanke des Takts gehören
eigens zugewiesene Erfassungsregister und eine unabhängige Logik
zum Ermitteln des optimalen Fensters. Deshalb ist dieses Verfahren
weitgehend unanfällig
gegen Asymmetrien der Taktzyklen des lokalen und des Sendetakts.
-
Aufgrund
der Änderungen
der Protokollregister verschiebt sich auch der optimale Abtastpunkt. Diese
Aktualisierung sollte in Zeitabständen erfolgen, die kürzer als
die Persistenzzeit sind. Diese Funktion wird in der Histogramm-
und Abtastpunktermittlungseinheit ausgeführt.
-
Dieses
Datenerfassungsverfahren beinhaltet eine zweistufige Initialisierung,
die entweder nach einem Zurücksetzen
des Systems oder nach Bestätigung
eines separaten „Trainingssignals" durchgeführt wird.
- • Stufe
1: Nach einem Rücksetzsignal
oder nach einem „Trainingssignal" (siehe 1 und 2) werden
die Protokollregister gelöscht
und in alle 3 „Fenster"-Register ein neues Protokollmuster eingetragen.
Nach der Übernahme
eines gültigen Satzes
von „Fenster"-Registern wird durch
eine Sequenz der Ablaufsteuerung (siehe 9 und 10)
der beste Abtastpunkt ermittelt. Dies erfolgt unabhängig für jede Taktphase.
Diese Abtastpunkte werden dann verwendet, und die beiden Bits werden
während
jedes Systemtakts an die nächste
Stufe weitergeleitet.
- • Stufe
2: Die beiden Bits werden empfangen und in ein Schieberegister eingetragen,
das zusammen mit einer Schiebelogikschaltung (barrel shifter) geeignete
Halbbytegrenzen (1 nibble = 4 Bits) ermöglicht (siehe 7).
Die Grenzen werden während
der Initialisierungssequenz durch die Verwendung eindeutiger freier
Halbbytemuster ermittelt.
-
Der Block der getakteten Verzögerungsleitung
-
Die 4 und 5 veranschaulichen
eine Ausführungsform
einer getakteten Verzögerungsleitung,
bei der serielle Daten beginnend mit dem linken Inverter eine Reihe
von Invertern durchlaufen, welche die Verzögerung schrittweise erhöhen. An
jedem Inverterausgang befinden sich zwei Flipflop-Registersignalspeicher
FF (3 bis 5), von denen der eine durch
die ansteigende und der andere durch die abfallende Flanke des Takts
getaktet wird. Dadurch ist die Logik in der Lage, Daten mit der
doppelten Taktrate zu erfassen. Eine Bank der Signalspeicher erfasst
das Datenfenster für
die ansteigende Taktphase und die andere das Datenfenster für die abfallende
Taktphase. Beide Fenster werden unabhängig voneinander ermittelt
und abgetastet, sodass jede Taktphase eine extra Schaltung gemäß 5 erfordert.
Die unabhängig
voneinander durch die ansteigende und die abfallende Flanke getakteten
Logikschaltungen weisen nur eine sehr geringe Abhängigkeit
vom Tastverhältnis
des Taktsignals und insbesondere von den Asymmetrien der Taktzyklen
des lokalen und des Sendetakts auf.
-
Bei
diesem Modul liegt am Eingang das schnelle Signal vom Empfangsmodul
an. Am anderen Eingang dieses Moduls liegt der lokale Takt an, der
gleichzeitig allen Flipflop-Schaltungen zugeteilt wird. Die einzigen
Ausgänge
dieses Moduls sind N+1 getaktete Verzögerungsleitungen D[0:N]. Jeder
Abzweig entspricht etwa einer Verzögerung von 50 ps mit einer
relativ guten Übereinstimmung
zwischen ansteigenden und abfallenden Flanken. Die erforderliche Übereinstimmung
der Verzögerung
zwischen der abfallenden und der ansteigenden Flanke beträgt etwa
20 bis 30 %. In der vorliegenden Anmeldung wird gefordert, dass
der Takt zwischen allen benachbarten Signalspeichern bis auf ~10
ps übereinstimmt. Dies
lässt sich
mit einer verzweigten Verzögerungsleitung
besser erreichen als mit einem Taktbaum. Da viele dieser Datenerfassungsschaltungen
eingesetzt werden können,
ist der Stromverbrauch von entscheidender Bedeutung.
-
Das
Layout dieses Moduls ist von entscheidender Bedeutung und bedarf
deshalb besonderer Aufmerksamkeit.
-
Zu
Testzwecken wurde die Anzahl der Elemente des Chips auf 32 festgelegt.
Dies ergibt einen Nennverzögerungswert
von insgesamt ungefähr
1,6 ns, was für
die Erfassung von DDR-Daten bei Frequenzen oberhalb etwa 1 GBit/s
ausreicht.
-
Der
Ausgang jedes Flipflop-Registers FF in den 3 und 5 und
insbesondere in 5 geht zu einem XOR-Gatter,
das auch ein Eingangssignal vom nächsten FF-Register in der Verzögerungsleitung
empfängt.
Da in der ersten und zweiten Stufe der Verzögerungsleitung das Datenbit
vor dem Eintragen in das zweite FF-Register durch den zweiten Inverter
invertiert wird, wenn das Datenbit nicht von einem Übergang
zwischen den zwei aufeinanderfolgenden Stufen betroffen ist, enthalten
das erste und das zweite Register entgegengesetzte Werte, sodass das
XOR-Gatter der ersten Stufe eine 1 erzeugt und anzeigt, dass zwischen
den Stufen kein Übergang
erfolgt ist. Wenn das Datenbit hingegen von einem Übergang
zwischen den beiden aufeinanderfolgenden Stufen betroffen ist, ist
im ersten und zweiten Register derselbe Wert gespeichert, sodass
das XOR-Gatter der ersten Stufe eine 0 erzeugt und anzeigt, dass
zwischen den Stufen ein Übergang
erfolgt ist.
-
Das
System von 5 such nach einer stabilen Position
oder einem stabilen Fenster entlang der getakteten Verzögerungsleitung,
um Daten zu finden, bei denen gerade keine Übergänge stattfinden, was sich in
einer Reihe von Einsen einer Reihe aufeinanderfolgender XOR-Gatter äußert, wobei
das Fenster der Datenerkennung auf die Mitte der Reihe der Einsen
ausgerichtet sein sollte. Der Ausgang jedes XOR-Gatters führt zum Eingang eines UND-Gatters,
dessen Ausgang wieder zum Eingang eines Registers A geht, welches
das erste einer Reihe von Protokoll-Flipflopregistern FF A, B, C
und D darstellt. Das erste Register A wird mit der vollen Taktrate
von 1 GHz abgetastet und periodisch mit einer relativ kleinen Taktrate,
z.B. > 1 Millisekunde
(ms) durch ein Signal Set_to_high wieder auf HIGH zurückgesetzt, während die
Register B, C und D mit derselben Taktrate der Schaltlogik wie das
Signal Set_to_high abgetastet und aktualisiert werden.
-
Das
Register A wird durch den Takt mit einer Taktrate von > 1 ms auf einen Ausgangswert
HIGH 1 gesetzt oder zurückgesetzt,
und wenn nach einem Zurücksetzen
der Ausgang des XOR-Gatters gleich 1 ist, sind auch der Ausgang
des UND-Gatters
und der Ausgang des Registers A gleich 1, und dies wird im Takt
(eines Aktualisierungssignals für
den Ladeeingang (1d) der Register B, C und D) nacheinander mit den
Registern B, C und D durchgeführt.
Wenn hingegen der Ausgang des XOR-Gatters gleich 0 und der Ausgang des
Registers A auf 1 gesetzt oder zurückgesetzt wurde, ist der Ausgang
des UND-Gatters gleich 0 und der Ausgang des Registers A gleich
0, und dies wird im Takt nacheinander mit den Registern B, C und
D durchgeführt.
Die Anordnung so aufgebaut, dass der Ausgang des Registers A, wenn
er zuvor gleich 0 war, gleich 0 bleibt, bis das Register durch das
Signal Set_to_high zurückgesetzt
werden, sodass die Ausgänge
jedes der Register B, C und D nacheinander im Takt auf 0 gesetzt
werden und so lange auf 0 bleiben, bis das Register A durch das
Signal Set_to_high auf 1 zurückgesetzt
wird.
-
Die
Ausgänge
jedes der Protokollregister B, C und D führen zu einem 2-aus-3-Logikelement,
dass einen Ausgangswert von 1 oder HIGH (H) erzeugt, wenn 2 der
3 Eingänge
auf 1 stehen. Die Aufgabe der 2-aus-3-Logikschaltung besteht darin,
Störimpulse im
Datenstrom auf der digitalen Verzögerungsleitung auszugleichen,
die fälschlicherweise
einen der drei Eingänge
auf 0 setzen könnten,
damit anstelle der gestörten
Daten ein genaues Ergebnis erzeugt wird. Das Vorliegen einer 2-aus-3-Logikerkennung kann als
Hinweis auf die Unversehrtheit der empfangenen Daten gewertet und
angegeben werden. Die Ausgänge
H (0 bis N-1) führen
zu den Eingängen
des Multiplexers gemäß 6C. Im Allgemeinen zeigt eine Zeichenkette
von Einsen in den Ausgängen
H einen guten Kandidaten für
ein Fenster zur Datenabtastung an, das in der Mitte der Zeichenkette
von Einsen zentriert werden sollte.
-
3 zeigt
den 2-Bit-Makroblock der Eingangsstufe, der zum größten Teil
bereits in Verbindung mit 5 erläutert worden
ist. Die Histogramm- und Abtastpunktermittlungseinheit beinhaltet
die UND-Gatter, die Protokollregister und die 2-aus-3-Logikschaltungen von 5,
den Multiplexer von 6C und die Zustandsdiagramme
der 9 und 10. Der Makroblock beinhaltet
auch einen Multiplexer, der an seinen Eingängen alle Ausgangswerte der
FF-Register der digitalen Verzögerungsleitung
empfängt,
und leitet diese Eingangswerte, gesteuert durch die Signale H[0],
H[1], H[N-1] von 5 unten, als Datenausgangswerte
Data_out selektiv weiter.
-
Der Protokollblock
-
5 veranschaulicht
einen Protokolllogikblock in Form einer Erweiterung des Blocks der
getakteten Verzögerungsleitung
während
einer Taktphase. Für
die andere Taktphase wird eine identische Schaltung benötigt. Die
in 5 gezeigte Inverter-Zeichenkette trifft für beide
Taktphasen in gleicher Weise zu.
-
Abtastpunktblock
-
Der
Abtastpunktblock lässt
sich am einfachsten durch ein Zustandsdiagramm beschreiben, das die
beiden optimalen Abtastpunkte für
jeweils eine der beiden Taktphasen ermittelt. Da die Abtastpunkte nicht
oft aktualisiert werden (mindestens 50 Takte zwischen den Aktualisierungen),
kann zum Ermitteln der optimalen Abtastpunkte ein Mehrfachtaktprozess verwendet
werden.
-
Die 6A und 6B veranschaulichen
Daten- und Protokoll-Abtastmultiplexer,
wobei die geraden und die ungeraden Eingänge der Abtastmultiplexer gleich
D_even[N:0] bzw. D_odd[N:0] sind, die jeweils dem in 3 unten
gezeigten Multiplexer für
eine der Taktphasen mit ansteigender bzw. abfallender Signalflanke
entsprechen, während
der Multiplexer von 6C die oben erläuterten
Ausgangssignale in 5 unten empfängt.
-
Verknüpfung
von zwei 2-Bit-Makros
-
7 zeigt
eine Logik zum Verknüpfen
serieller Bits und zur Byteausrichtung, die als Leitungspaar genutzt
werden, um 4 Datenbits pro Taktzyklus zu erfassen, wobei die Logik
zwei (in 3 gezeigte) 2-Bit-Makros in
sich vereinigt und die richtige Byteausrichtung zwischen den beiden
Eingangsdatenströmen
mit einer Frequenz von je 2 GHz ermittelt, die in die beiden (in 3 dargestellten)
2-Bit-Makros 70 eingegeben
werden. Die beiden Eingangssignale können als die Eingangssignale
von 1 angesehen werden, die mit der richtigen Byteausrichtung
verknüpft
werden. Die Ausgänge
der beiden 2-Bit-Makros von 3 liefern
zwei Datenströme
mit einer Frequenz von jeweils 1 GHz, die in ein Register 71 eingegeben
werden, das die beiden Datenströme verzögert und
standardisiert und in ein 12-Bit-Schieberegister 72 eingibt,
das mit der halben Taktrate Clk/2 getaktet ist und die beiden Datenströme in einen
12 Bit breiten Datenstrom mit einer Frequenz von 500 MHz umwandelt.
Diese Datenströme
werden in eine Schaltlogik 73 und eine Schiebelogikschaltung 74 eingegeben,
deren Eingang für
die beiden 12 Bit breiten Datenströme 24 Bit breit ist und die
unter Steuerung der Logik 73 im Wesentlichen 8 ordnungsgemäß ausgerichtete
Bits der 24 Bits auswählt,
um die richtige Bitverschiebung für die Schiebelogikschaltung
zu ermitteln. Die Logik 73 verwendet ein bekanntes Trainingsmuster
zum Erzeugen von zwei 4 Bit breiten Ausgangswerten, welche die Schiebelogikschaltung
steuern. Die Logik 73 sendet im Wesentlichen softwaregesteuert
immer wieder dasselbe bekannte Datentrainingsmuster durch die getaktete Verzögerungsleitung,
bis sie die richtige Bitverschiebung für die Schiebelogikschaltung
kennt. Die Schiebelogikschaltung wählt durch die Logik gesteuert
aus dem 24 Bit breiten Eingangssignal selektiv die 8 am besten ausgerichteten
Bits aus, um diese als Byte auszugeben und weiterzuleiten.
-
Ablauf der Fensterermittlung
-
8 veranschaulicht
den allgemeinen Ablauf des Fensterermittlungsprozesses in einem
Ablaufplan zur Fensterermittlung und beginnt mit dem Zurücksetzen 80,
um das System mit bekannten Werten zu initialisieren und dann in
Kasten 81 auf eine ausreichende Anzahl von Datenübergängen zu warten,
um ein Fenster sicher ermitteln zu können. In Kasten 82 werden
die Einsen und Nullen in den geraden Fenster-Protokollregistern geprüft, um für die geraden
Flanken ein Fenster zu ermitteln, das den getakteten Daten der ansteigenden
Flanken entspricht, und ein erstes Fenster mit der geringsten Verzögerung in
der getakteten Verzögerungsleitung
auszuwählen.
In Kasten 83 werden genauso die Einsen und Nullen in den
ungeraden Fenster-Protokollregistern
geprüft,
um ein den getakteten Daten der abfallenden Flanken entsprechendes
Fenster zu ermitteln, und ein entsprechendes Fenster mit der geringsten
Verzögerung
in der getakteten Verzögerungsleitung
zu ermitteln.
-
Entsprechend
den verschiedenen Positionen entlang der Verzögerungsleitung kann es mehrere verschiedene
Fenster für
gerade und ungerade Phasen geben, sodass der Prozess nach der Erkennung des
Fensters mit der geringsten Verzögerung
von Kasten 84 zu Kasten 82 zurückspringt, um zyklisch das
nächste
Paar Fenster mit der nächstgrößeren Verzögerung zu
ermitteln, bis die Verzögerungsleitung
auf ihrer gesamten Länge
nach entsprechenden Fenstern für
gerade und ungerade Phasen geprüft wurde.
In Kasten 84 wird jedes nächste ermittelte Fensterpaar
mit dem zuvor ermittelten Fensterpaar verglichen und das jeweils
beste Paar reserviert, sodass auf diese Weise das beste aus allen
zur Auswahl stehenden Fensterpaaren ausgewählt wird; diese Funktion wird
durch die Logik 73 von 7 ausgeführt.
-
An
dieser Stelle wartet die Logik 73 dann in Kasten 85 auf
ein „Ausrichtungs"-Paket, das als Trainingsmuster
mit einer bekannten Bitfolge bekannt ist, um eine Bytegrenze festzulegen,
die bis dahin unbekannt ist. Nach der Festlegung der Bytegrenze
durch die Logik 73 in 7 mittels
des Ausrichtungs-Trainingsmusters werden in Kasten 86,
der auch der Logik 73 entspricht, die Ausrichtungswerte
in die Schiebelogikschaltung eingegeben, damit dieser die ordnungsgemäß ausgerichteten
8 Bits als Byte-Ausgangswert auswählt und bereitstellt, und die
Logik 73 erzeugt auch das fixierte Ausgangssignal. Dann
ist die Schiebelogikschaltung in der Lage, während eines normalen Datenempfangs
8 ordnungsgemäß ausgerichtete
Bits als Byte-Ausgangswert bereitzustellen. Kasten 87 zeigt
an, dass die Fenster zur Datenabtastung ständig aktualisiert werden. Eine
bevorzugte Neuausrichtung beginnt mit den vorhandenen Fenstern zur
Abtastung der geraden und ungeraden Daten und sucht dann links und
rechts der vorhandenen Fenster nach dem linken und rechten Rand
der Fenster und richtet dann die Mitte der Fenster der geraden und
ungeraden Phasen zwischen ihren linken und rechten Rändern neu
aus, wie dies in Verbindung mit 9 erläutert wird.
-
Zustandsdiagramm zur Ermittlung
des Trainingsfensters
-
9 veranschaulicht
ein Zustandsdiagramm 1 von 2 eines 2-Bit-Makros, das die Zustandsänderungen
der Phase zeigt, in deren Verlauf die Abtastpunkte der Fensterposition
ermittelt werden, und entspricht im Allgemeinen den Schritten in
Kasten 82 und 83 von 8.
-
In 9 werden
die H[N-1:0] Eingangswerte des Multiplexers von 6C,
die den Ausgangswerten in 5 unten
entsprechen, nacheinander abgetastet und gleichzeitig mit dem bereitgestellten
Ausgangswert Hsamp des Multiplexers von 6C geprüft. Das
erste Bit H[0], das entweder gleich 0 ist und einen Datenübergang
außerhalb
eines Fensters anzeigt oder gleich 1 ist und möglicherweise keinen Datenübergang
innerhalb eines Fensters anzeigt, wird in der Reihenfolge der Schritte
von 9 geprüft, wobei
eine 0 durch Samp(Abtastung)=0 und eine 1 durch Samp=1 dargestellt
wird. Nachdem das erste Bit H[0] nacheinander alle Prüfschritte
SO bis ZUSAMMENFASSUNG von 9 durchlaufen
hat, wird das zweite Bit H[1] in derselben Reihenfolge der Schritte
geprüft
usw., bis das letzte Bit H[N-1]
geprüft worden
ist.
-
Die
Zustande des Zustandsdiagramms 1 von 2 des 2-Bit-Makros in 9 werden
wie folgt beschrieben:
- • S0 ist der Rücksetzzustand.
Die Steuerung erfolgt hiermit, während
ein Zurücksetzen
erfolgt.
- • S1
ist ein Initialisierungszustand. Nachdem das Zurücksetzen erledigt ist, wartet
die Steuerung bis zur Zeitüberschreitung
eines Aktualisierungszählers
und geht dann weiter zu S2, wenn samp=0 ist (was anzeigt, dass die
geprüfte
Abzweigung von 5 eine 0 erzeugt und somit nicht
innerhalb des Fensters liegt), oder zu S3, wenn samp=1 ist (der
Ausgangswert der geprüften
Abzweigung ist gleich 1 und ist möglicherweise Teil eines Fensters).
-
Die
Zustände
S2 bis S3.5 suchen durch schrittweise Prüfung im Protokoll der Verzögerungsleitung
für gerade
Signalflanken nach einem Fenster für gerade Signalflanken, das
den getakteten Daten mit ansteigender Signalflanke entspricht.
- • S2
sucht nach einem Fenster für
gerade Signalflanken (samp=1), indem er schrittweise das Protokoll
der Verzögerungsleitung
für gerade
Signalflanken von links nach rechts durchsucht. Er findet das linke
Ende eines Fensters für
gerade Signalflanken. Wenn das rechte Ende der Verzögerungsleitung
gefunden wird, wechselt der Zustand nach S3, ansonsten bleibt der
Zustand S2 erhalten.
- • S3
sucht so lange nach dem rechten Ende eines Fensters für gerade
Signalflanken, bis er den Wert samp=0 findet. Die Steuerung bleibt
in Zustand S3, während
samp=1 ist, da sich dieser innerhalb des Fensters befindet. Wenn
der Wert samp=0 gefunden wird, geht die Steuerung weiter zu S3.5, einem
Verzögerungszustand,
der in bestimmten Fällen
zum ordnungsgemäßen Funktionieren
erforderlich ist.
- • S3.5
geht sofort weiter zu S4.
-
Die
Zustände
S4 bis S13 suchen nach einem Fenster für ungerade Signalflanken, das
den getakteten Daten mit abfallender Signalflanke entspricht. Die Suche
nach dem Fenster für
ungerade Signalflanken beginnt beim ermittelten Mittelpunkt des
Fensters für gerade
Signalflanken und ist komplexer als die Suche nach dem Fenster für gerade
Signalflanken.
- • S4 beginnt mit der Suche nach
dem Fenster für ungerade
Signalflanken. Im Normalmodus, wenn beim Fenster für ungerade
Signalflanken samp=0 ist, geht der Prozess weiter zu S7, wenn jedoch samp=1
ist, geht der Prozess weiter zu S5. samp=0 bedeutet, dass das Fenster
für ungerade Signalflanken
im Protokoll der Verzögerungsleitung
für ungerade
Signalflanken nicht auf das Fenster für gerade Signalflanken ausgerichtet
ist, sodass im Normalfall nach links und rechts gesucht und das
nächstgelegene
Fenster für
ungerade Signalflanken gewählt
wird. Es gibt zwei alternative Modi. Bei der Suche nach rechts geht der
Prozess weiter zu S13 und bei der Suche nach links nach S12.
- • S5
bedeutet, dass das Fenster für
ungerade Signalflanken auf das Fenster für gerade Signalflanken ausgerichtet
ist und sich der anfängliche
Abtastpunkt bereits im Fenster für
ungerade Signalflanken befindet. Somit sucht dieser Zustand vom anfänglichen
Abtastpunkt aus nach links, indem er einen Abtastzeiger (der zum
Auswählen
von Datenpunkten dient) so lange schrittweise verringert, bis er
das linke Ende des Fensters für
ungerade Signalflanken oder das linke Ende der Verzögerungsleitung
findet. Dann geht die Steuerung weiter zu S6.
- • S6
sucht auf der rechten Seite nach dem rechten Ende des Fensters für ungerade
Signalflanken. Wenn er dieses oder das rechte Ende der Verzögerungsleitung
findet, geht die Steuerung weiter zum Zustand ZUSAMMENFASSUNG, der
den Zustand am Ende der Suche nach dem Schritt S13 darstellt, wo
die Zeiger für
die Datenabtastung für
die normale Verarbeitung von Fenstern mit geraden und ungeraden
Signalflanken gesetzt werden.
- • S7
bedeutet, dass das Fenster für
ungerade Signalflanken nicht auf das Fenster für gerade Signalflanken ausgerichtet
ist und sich der anfängliche
Abtastpunkt in einem verrauschten Bereich außerhalb aller Fenster befindet.
Dieser Zustand sucht auf der linken Seite durch schrittweises Abwärtszählen des
Abtastzeigers nach einem passenden Fenster für ungerade Signalflanken. Wenn
samp=1 ist, ist der rechte Rand eines Fensters für ungerade Signalflanken gefunden
worden, der in MAX (einem Register für den rechten Rand) eingetragen
wird, und die Steuerung geht weiter zu S8. Ansonsten wird das linke
Ende der Verzögerungsleitung
erreicht, wo kein Fenster für
ungerade Signalflanken gefunden wird, woraufhin die Steuerung weitergeht
zu S11.
- • S8
dient der Suche nach einem nicht ausgerichteten rechten Fenster
für ungerade
Signalflanken. Bei einem Wert von samp=0 wird so lange gesucht,
bis der Wert samp=1 gefunden wird, was das Erreichen des linken
Endes eines rechten Fensters für
ungerade Signalflanken anzeigt und in MIN (ein Register für den linken
Rand) eingetragen wird, und die Steuerung geht weiter zu S9. Wenn
das rechte Ende der Verzögerungsleitung erreicht
wird, bevor der Wert samp=1 gefunden wird, liegt kein rechtes Fenster
vor, sodass die Steuerung direkt zur Verarbeitung des linken Fensters
in S10 weitergeht.
- • S9
vergleicht die Abstände
MIN und MAX vom Fenster für
gerade Signalflanken miteinander. Wenn MIN näher liegt, geht die Steuerung
weiter zu S6. Wenn MAX näher
liegt, geht die Steuerung weiter zu S10.
- • S10
sucht nach dem linken Ende des Fensters für ungerade Signalflanken. Die
Steuerung bleibt so lange in S10, wie samp=1 ist. Wenn samp=0 oder
das linke Ende der Verzögerungsleitung
erreicht ist, geht die Steuerung weiter zu ZUSAMMENFASSUNG.
- • S11
sucht nach einem nicht ausgerichteten rechten Fenster für ungerade
Signalflanken, wenn es kein linkes Fenster für ungerade Signalflanken gibt.
Die Steuerung bleibt so lange in S11, wie samp=0 ist. Wenn der Wert
samp=1 gefunden wird, geht die Steuerung weiter zu S6. Wenn das rechte
Ende der Verzögerungsleitung
erreicht wird, bevor ein Wert samp=1 gefunden wurde, gibt es keine
Fenster für
ungerade Signalflanken. Dies stellt eine Fehlerbedingung dar, die
durch Warnanzeigen erkannt und angezeigt wird.
- • S12
sucht nach einem nicht ausgerichteten Fenster für ungerade Signalflanken auf
der linken Seite des Fensters für
gerade Signalflanken in den Verzögerungsleitungen.
Die Steuerung bleibt so lange in S12, wie samp=0 ist und geht weiter zu
S10, wenn ein Wert samp=1 gefunden wird. Wenn das linke Ende der
Verzögerungsleitung gefunden
wird, bevor ein Wert samp=1 gefunden wurde, gibt es kein linkes
Fenster, und die Steuerung sucht in S13 auf der rechten Seite weiter,
sofern die Steuerung nicht von S13 nach S12 gekommen war. Dann nämlich liegt
der Fall vor, dass es keine Fenster für ungerade Signalflanken gibt. Dies
stellt eine Fehlerbedingung dar, die durch Warnanzeigen erkannt
und angezeigt wird, und die Steuerung geht weiter zu ZUSAMMENFASSUNG.
- • S13
sucht nach einem nicht ausgerichteten Fenster für ungerade Signalflanken auf
der rechten Seite des Fensters für
gerade Signalflanken in den Verzögerungsleitungen.
Die Steuerung bleibt so lange in S13, wie samp=0 ist und geht weiter zu
S6, wenn ein Wert samp=1 gefunden wird. Wenn das rechte Ende der
Verzögerungsleitung erreicht
ist, bevor ein Wert samp=1 gefunden wurde, gibt es kein Fenster
auf der rechten Seite, und die Steuerung sucht in S12 auf der linken
Seite weiter, sofern die Steuerung nicht von S12 nach S13 gekommen
war. Dann nämlich
liegt der Fall vor, dass es keine Fenster für ungerade Signalflanken gibt.
Dies stellt eine Fehlerbedingung dar, die durch Warnazeigen erkannt
und angezeigt wird, und die Steuerung geht weiter zu ZUSAMMENFASSUNG.
- • ZUSAMMENFASSUNG
ist der Zustand, in welchem die Abtastpunkte für die Fensterdaten für den Normbetrieb
festgelegt werden.
-
Zustandsdiagramm für den Normalbetrieb
mit Neuausrichtung der Abtastpunkte der Fenster
-
10 veranschaulicht
ein Zustandsdiagramm 1 von 2 für
ein 2-Bit-Makro, das den wiederholten Ablauf der Zustände während normaler
Datenerfassungsoperationen zeigt. In dieser Phase hat die Logik
die Aufgabe, serielle Daten zu erfassen und in ein byteparalleles
Format umzuwandeln.
-
10 zeigt
den Ablauf der Zustände
während
normaler Datenerfassungsoperationen. Die Steuerung ist normalerweise
im Zustand RUND (Ausführung
0) untergebracht. Das Signal done_update wird periodisch durch einen
Taktzähler ausgelöst und überführt die
Steuerung in den Zustand RUN1. Die Zustände RUN1 und RUN2 laufen schrittweise
abwärts
und aufwärts
bis zu den Rändern
des Fensters für
gerade Signalflanken, die sich geändert haben können. Die
neuen Grenzen werden gespeichert. Desgleichen laufen die Zustände RUN3 und
RUN4 schrittweise aufwärts
und abwärts
bis zu den Rändern
des Fensters für
ungerade Signalflanken, und die Grenzen werden gespeichert. Der
Zustand RUN5 berechnet unter Verwendung der in den Zuständen RUN1
bis RUN4 ermittelten Ergebnisse neue Datenabtastpunkte, die zur
Weiterverwendung zwischengespeichert werden. Dann geht die Steuerung
wieder zurück
zum Zustand RUND, um eine neue Aktualisierungsperiode zu durchlaufen.
-
SiBiDi
-
Die
vorliegende Erfindung stellt einen Hardwaremechanismus zur automatischen
Anpassung von Übertragungsverzögerungen
für die optimale
simultane bidirektionale Zwei-Bit-Signalisierung bereit.
-
Die
(simultane bidirektionale) SiBiDi-EA-Zellen-„Subtraktion” des übertragenen
Signals ist erfolgreicher, wenn sich das zu subtrahierende Signal
zu den Zeitpunkten ändert,
da sich das gewünschte empfangene
Signal nicht ändert.
Das lässt
sich dadurch erreichen, dass die Übertragung des Signals um eine
ausreichende Zeitspanne (einen Teil eines Taktzyklus) verzögert wird.
Eine Verzögerung
der Übertragung
auf einer Seite bedeutet jedoch, dass die Daten auf der anderen
Seite verzögert
ankommen. Daher muss die Schaltlogik auf der anderen Seite ihre
Verzögerung
der Übertragung
so anpassen, dass ihre eigene „Subtraktion" optimal ist. Deshalb
muss ein Paar Verzögerungseinstellungen
für jede
Schaltlogik an den beiden Enden der Leitung vorhanden sein, sodass
die „Subtraktion" für beide Seiten
Ergebnisse mit gleich hoher Qualität liefert.
-
Zu
diesem Zweck müssen
die beiden Seiten darüber
hinaus für
jede einzelne Übertragungsverzögerung auf
der jeweils anderen Seite Informationen über die Qualität der lokalen
Subtraktion austauschen. Diese Informationen können jedoch nicht unter Verwendung
desselben Übertragungsverfahrens für die Signalisierung
ausgetauscht werden, das gerade optimiert wird. Wenn ein Satz Verzögerungsdaten
fehlerhaft ist, können
dadurch die gesendeten Daten beschädigt werden, die den Grad der
Verschlechterung beschreiben. Die vorliegende Erfindung beschreibt
einen Hardwaremechanismus zum automatischen Anpassen der Übertragungsverzögerungen
für die
optimale 2-Bit-SiBiDi-Signalisierung.
-
11 veranschaulicht
eine erste Ausführungsart,
bei der zwei differenzielle Datenleitungen ein Paar identischer
Knoten 1 und 2 miteinander verbinden, wobei jeder Knoten eine eindeutige
Kennung aufweist und jeder Knoten mit einer 2-Bit-Sende-CPU und einer
2-Bit-Erfassungs-CPU arbeitet.
-
Das
Verfahren verwendet eine Einrichtphase zum „sicheren Datenaustausch", um die Ergebnisse jedes
Satzes Übertragungsverzögerungen
mitzuteilen. Die 2-Bit-Sende-/Erfassungseinheiten
dienen zum sicheren Datenaustausch unter Verwendung unidirektionaler
Einstelldaten für
die EA-Zellen (wobei die Übertragung
in einer Richtung nur zur Verringerung des Rauschens dient) und
lediglich eines der 1-Bit-Teile der Einheiten.
-
11 veranschaulicht
die elektrischen Verbindungen zwischen einem Knotenpaar und zeigt zwei
differenzielle Datenleitungen (die aus je 2 Drähten bestehen, um eine differenzielle
Signalisierung zu ermöglichen).
Die Pfeile zeigen die Richtung der unidirektionalen Signale während der
Einrichtphase zum sicheren Datenaustausch an. Ansonsten sind die
elektrischen Verbindungen während
normaler Datenübertragungen
bidirektional.
-
Die
Einheiten Sel A und B sind Multiplexer, wobei durch Sel = 0 der
obere Pfad von der 2-Bit-Sendeeinheit und zur 2-Bit-Erfassungseinheit und
durch Sel = 1 der untere Pfad gewählt wird.
-
Ein
(nicht gezeigtes) Register READY wird auf 0 gesetzt.
- 1) E/A-Zelle A = unidirektionaler Sendemodus.
E/A-Zelle
B = unidirektionaler Empfangsmodus.
Sel A = 1 (Auswahl des
oberen Pfades).
Sel B = 1 (Auswahl des untern Pfades).
- 1) Sende-Verzögerungsmodus
auf Nullverzögerung
setzen.
- 2) Das oben beschriebene Training zum Auffinden und Erkennen
von guten Datenerfassungsfenstern beginnen.
- 3) Fensterparameter für
den sicheren unidirektionalen Datenaustausch während der Einrichtphase in
der Mitte eines guten Datenerfassungsfensters speichern.
- 4) Erstes Bit der Kennung senden. Bei dieser Ausführungsart
wird durch die eindeutigen Kennungen der beiden Knoten 1 und 2 festgelegt,
welcher als Master bzw. als Slave dient, wobei die höhere Kennung
automatisch den Master-Knoten festlegt.
Warten bis zum Empfang
des ersten Bits der Kennung vom anderen Knoten. Die ersten Bits
der Kennungen miteinander vergleichen.
Bei Gleichheit wiederholen.
Wenn
lokales Bit kleiner als das Nachbarbit ist, PRIORITÄT = 0 setzen.
Wenn
lokales Bit größer als
das Nachbarbit ist, Priorität
= 1 setzen.
- 1) E/A-Zelle A = SiBiDi-Modus.
E/A-Zelle B = SiBiDi-Modus.
Sel
A = 0
Sel B = 0
- 1) Sender-Verzögerungsmodus
= 0
Mit dem Training beginnen.
Nach Fenstern suchen.
Lokale
Fensterparameter speichern.
- 1) Zum sicheren Modus wie in Schritt 1) übergehen.
- 2) Lokale Fensterparameter an den anderen Knoten senden. Fensterparameter
des anderen Knotens empfangen.
- 1) Parameter vergleichen und Minimalwert speichern.
- 2) Aktuelle minimalle Fensterparameter mit vorhergehenden minimalen
Fensterparameter vergleichen und den größeren der beiden zusammen mit
dem Verzögerungsmodus
des lokalen Senders des Maximalwerts speichern. Dieser Modus wird
als optimaler Modus angesehen und als OPT_SENDER_MODE bezeichnet.
-
Bei
dieser ersten Ausführungsart
wird von einer Verzögerungsleitung
mit 8 Abzweigungen ausgegangen, sodass jeder Knoten über eine
Auswahl von 8 verschiedenen Verzögerungen
verfügt,
die in 8 Schritten von einer Nullverzögerung bis zur Maximalverzögerung reicht,
sodass die Anzahl der möglichen Kombinationen
8 × 8
= 64 beträgt.
Mit anderen Worten, für
jeder der 8 Verzögerungen
bei einem Knoten gibt es am zweiten Knoten ebenfalls 8 mögliche Verzögerungen.
Daher müssen
64 mögliche
Kombinationen geprüft
werden, um die optimale Kombination auszuwählen. In Schritt 12 werden
nacheinander alle 64 Kombinationen zyklisch durchlaufen.
-
Zurückgehen
zu Schritt 6) und unter Verwendung der folgenden Sequenz des Sendeverzögerungsmodus
insgesamt 64 mal wiederholen:
Wenn PRIORITÄT = 0 ist, ändert der Nachbar zuerst den
Modus. Die lokale Sequenz lautet:
0 für 8 Schritte
1 für 8 Schritte
2
für 8 Schritte
3
für 8 Schritte
4
für 8 Schritte
5
für 8 Schritte
6
für 8 Schritte
7
für 8 Schritte
Wenn
PRIORITÄT
= 1 ist, lautet die lokale Sequenz:
0 für 1 Schritt
1 für 1 Schritt
2
für 1 Schritt
3
für 1 Schritt
4
für 1 Schritt
5
für 1 Schritt
6
für 1 Schritt
7
für 1 Schritt
8-mal
wiederholen
- 1) Zur SiBiDi-Operation wie in
Schritt 6) mit Senderverzögerungsmodus
= OPT_SENDER_MODE übergehen.
- 2) Register READY (FERTIG) auf 1 setzen, um anzuzeigen, dass
das System optimiert ist und für normale
SiBiDi-Datenübertragungen
bereitsteht.
-
Wenn
in einem der Schritte ein Fehler auftritt und Schritt 14 dadurch
nicht erreicht wird, ist der Knoten fehlerhaft. Der fehlerhafte
Knoten kann anhand des Inhalts des Registers READY erkannt werden.
-
12 veranschaulicht
eine zweite Ausführungsart
elektrischer SiBiDi-Datenübertragungen zwischen
einem Knoten 1 und einem Knoten 2, wobei der Unterschied zur ersten
Ausführungsart
darin besteht, dass die Verbindung zwischen den Knoten über eine
einzige differenzielle Datenübertragungsleitung
erfolgt. Ein zweiter Unterschied besteht darin, dass diese Ausführungsart
nicht mit 2-Bit-Daten wie bei der Ausführungsart von 11,
sondern mit 1-Bit-Daten
arbeitet. Ein weiterer Unterschied besteht darin, dass der Master-Knoten
und der Slave-Knoten bei dieser Ausführungsart nicht durch IDs, sondern
durch die Steuersoftware gekennzeichnet werden. Ferner geht diese
Ausführungsart
nicht von einer Verzögerungsleitung
mit 8 Abzweigungen wie in 11, sondern
von einer Verzögerungsleitung mit
16 Abzweigungen aus.
-
Übersicht:
-
Eine
anfängliche
Ausrichtungsprozedur (Initial Alignment Procedure, IAP) besteht
aus einer Folge von Schritten, wobei jedes synchrone Signal an jedem
Anschluss die optimalen Einstellwerte der Verzögerungsleitung zum Senden (für ihre Ausgangsstufe)
ermittelt. Der in der provisorischen
US-Patentanmeldung mit
der Seriennummer 60/271 124 beschriebene Massivparallel-Supercomputer
wird als Massivparallelcomputer mit 32 × 32 × 64 Knoten beschrieben, die
als dreidimensionaler Ring miteinander verbunden sind, wobei jeder
Knoten mit 6 benachbarten Knoten verbunden ist. Jeder Knoten weist
6 Anschlüsse
mit 20 synchronen Signalen pro Anschluss auf, sodass alle 120 synchronen
Signale (6 Anschlüsse × 20 synchrone
Signale/Anschluss) auf einem Knoten-Chip an einem Knoten des Supercomputers
dieses individuelle Training unabhängig durchführen können. Alles kann (softwaregesteuert) parallel
oder einzeln nacheinander abgewickelt werden. Das Training erfolgt
gleichzeitig in beiden Richtungen einer SiBiDi-Leitung; dadurch
können
die erforderliche Signalverbreiterung (Inter Symbol Interference,
ISI) und das Randrauschen (zusammen mit dem Umgebungsrauschen) berücksichtigt
werden.
12 zeigt den verallgemeinerten
Datenfluss der IAP-Sequenz:
- 1. Softwarefunktion:
Erkennen einer Seite einer synchronen Verbindung als „Master" und der anderen
Seite als „Slawe" durch Schreiben
in das IAP-Steuerregister jedes Knoten-Chips.
- 2. Hardwarefunktion: Datenaustausch zwischen der Master-Seite
(Seite A in 12) und der Slawe-Seite (Seite
B in 12), um mit dem Training zu beginnen. Dieser Vorgang
ist recht kompliziert, da die Daten über eine Leitung übertragen
werden müssen,
bevor diese richtig trainiert wurde. (Siehe unten: „Datenübertragung über eine
untrainierte Leitung")
- 3. Hardwarefunktion: Jede Seite einer einzelnen Leitung weist
eine (in den 13A und 13B gezeigte)
Ablaufsteuerung auf, die alle möglichen Einstelldaten
der Verzögerungsleitung
abarbeitet und die Ergebnisse zur Ermittlung der optimalen Einstelldaten
der Verzögerungsleitung
vergleicht. Eine Änderung
der Einstelldaten der Verzögerungsleitung
beeinflusst das Fenster auf beiden Seiten, sodass das System alle
16 × 16
Kombinationen abarbeiten muss. (Hinweis: die Verzögerungsleitung
der Ausgangs (datensende) stufe weist gemäß der obigen Erläuterung
16 Einstelldaten auf.) Für
jeden Trainingsdurchlauf der Verzögerungsleitung empfängt das
Makro der Eingangs(datenerfassungs)stufe einen Zufallsdatenstrom
von der anderen Seite, sucht nach dem Fenster und stellt die Größendaten
des Fensters zur Analyse bereit.
- 4. Softwarefunktion: Lesen der IAP-Zustandsregister, um den
Erfolg/das Fehlschlagen des Trainings festzustellen. Die erhaltenen
genauen Einstelldaten der Verzögerungsleitung
und Fensterabmessungen können über andere
leitungsspezifische Zustandsregister gelesen werden, auf welche
die Software zugreifen kann.
-
Trainingssequenz der Leitung:
-
Die
Ablaufsteuerung der 13A und 13B veranschaulicht
die vom Knoten-Chip ausgeführten
Schritte während
des Trainings einer synchronen SiBiDi-Verbindung. Jede Seite der
Leitung nutzt die folgenden Register:
-
DTR – Abzweigungsregister
der Verzögerungsleitung
(Delay Tap Register) – Steuert
die Verzögerungsleitung
in der Ausgangsstufe. (Die gültigen Einstelldaten
sind 0 bis 15). Während
einer IAP-Sequenz werden zwei zusätzliche „Arbeits" kopien benötigt: Mst-DTR und Slv-DTR:
-
LEDTR – Abzweigungsregister
für besten
lokalen Verzögerungswert
(Local Best Delay Tap Register) – Speichert den DTR-Wert, der
der besten während
des Trainings bis dahin angetroffenen Fenstergröße entspricht. Am Ende des
Trainings werden die Inhalte des LEDTR dauerhaft in das DTR geladen.
-
MBESR – Größenregister
der besten Fenstergröße für beide
Seiten (Mutual Best Eye Size Register) – Speichert die beste während des
Trainings bis dahin angetroffene Fenstergröße (ausgehend vom Minimalwert
der Fenstergrößen auf
Seite A und Seite B für
einen bestimmten Trainingsschritt).
-
Während des
Leitungstrainings können Rauschgeneratormakros
gestartet werden, um durch künstliche
Verstärkung
des Rauschens eine sehr verrauschte Umgebung zu simulieren und einen
größeren vertikalen
Spannungsabstand zu gewährleisten, was
sich auf die Größe des Fensters
auswirkt. Die Software beginnt die IAP-Sequenz, indem sie das „Start" bit in das IAP-Steuerregister schreibt,
und legt den Chip als Master (Seite A) oder als Slave (Seite B) fest.
-
Datenübertragung über eine untrainierte Leitung
-
Zwischen
den beiden Seiten einer Leitung müssen bereits Daten übertragen
werden, bevor diese richtig trainiert wurde. Um eine möglichst
sichere Datenübertragung
zu gewährleisten
wird die folgende Prozedur angewendet:
- 1) Die
Daten werden zu jedem Zeitpunkt nur in eine Richtung gesendet.
- 2) Die Daten werden mit einer niedrigeren Datenrate gesendet.
Es kann ein Verhältnis
von 1:8 gewählt
werden (d.h. eine „1" oder eine „0" wird für die Dauer
von acht Bit gehalten).
-
Vor
dem Training weisen die beiden Seiten einer Leitung keine vorhersagbare
Phasenbeziehung auf. Deshalb überträgt eine
Seite eine Zeichenkette „110011", und wenn ein Abtastpunkt mit den Vermittlungsdaten übereinstimmt,
können
die Daten in Form einer „111011" oder „100011" usw. empfangen werden.
Die Übertragungsrate
muss so langsam sein, dass stabile Daten über mehrere aufeinander folgende
Abtastpunkte hinweg richtig erkannt werden können und keine Verwirrung durch
Fehlabtastungen entsteht, die während Übergängen von
0ô1 oder
1ô0 innerhalb
des Bitstroms auftreten können.
-
Wenn
zwischen dem Master und dem Slave „Befehle" gesendet werden, wird diesen eine lange Zeichenkette
aus Einsen und acht nachfolgenden Nullen vorangeschickt. Ein Befehl äußert sich
durch: ... viele Einsen, 8 Nullen, das 8 Bit lange erste Bit des Befehls,
das 8 Bit lange zweite Bit des Befehls, ... das 8 Bit lange letzte
Bit des Befehls. Die Empfangsseite erkennt den 1ô0-Übergang und schätzt den
Mittelpunkt des 8 Bit langen Fensters. (In Wirklichkeit kann dies
das dritte, vierte oder fünfte
Bit des 8 Bit langen Fensters sein, die alle stabil und gültig sein
müssen.) Anschließend wird
jedes achte Bit abgetastet, um den Befehl/die Information zu entschlüsseln.
-
Alle
Befehle in den 13A und 13B sind
in Großbuchstaben
dargestellt und die Bezeichnung „identisch" in den Kästen von 13B zeigt an, dass der Inhalt des Kastens derselbe
wie in 13A ist.
-
13A zeigt die Master-Seite, wo in Stufe (0) auf
einen Software-Startbefehl gewartet wird und dann die Register DTR,
LBDTR und MBESR zurückgesetzt
werden. In Stufe (1) wartet der Master auf den Empfang eines Befehls
BEGIN vom Slave und sendet selbst einen Befehl BEGIN an den Slave, wenn
er keinen empfängt,
und wartet auf eine Antwort BEGIN vom Slave. Wenn der Master immer noch
keinen Befehl BEGIN empfängt,
sendet er wiederholt den Befehl BEGIN an den Slave. Wenn der Master
einen Befehl BEGIN von einem anderen Master empfängt, bricht er den Vorgang
ab.
-
Wenn
der Befehl BEGIN erfolgreich empfangen wurde (JA), Stufe (4), sendet
der Master einen Befehl TRAIN (Trainieren) und zeigt damit an, dass
er gerade die Synchronisierung startet und dann anhält.
-
In
Stufe (5) überträgt der Master
einen Zufallsdaten-Bitstrom, um die Erfassung der Fenster zu starten.
-
In
Stufe (6) wartet der Master auf das Erfassen der Fenster und wertet
die Daten über
jedes Fenster aus, zum Beispiel über
die Fenstergröße.
-
In
Stufe (7) wartet der Master auf den Empfang von Daten über die
Fenstergröße, und
wenn er keine Daten empfängt,
wartet er (z.B. 1 μs),
sendet Daten über
die Fenstergröße und wartet
weiter auf den Empfang von Daten über die Fenstergröße.
-
Wenn
der Master die Daten empfangen hat, aktualisiert er die Register
MBESR und LBDTR und erhöht
das Register Mst-DTR um eins, und wenn das Register Slv-DTR durch
einen Überlauf
(Zählerüberlauf)
um eins erhöht
wird, werden die Stufen (4) bis (9) für alle 256 Kombinationen wiederholt.
-
Wenn
das Ergebnis der Stufe (9) JA lautet, sendet der Master in Stufe
(10) einen Befehl ENDE, um das Fenstertraining zu beenden.
-
In
Stufe (11) wartet der Master auf den Empfang eines Befehls ENDE
vom Slave.
-
Wenn
dies der Fall ist, lädt
der Master in Stufe (12) das DTR mit den LBDTR-Registern und setzt die
Eingangsstufe zurück,
die ein Installationsknoten ist.
-
In
Stufe (13) werden die optimalen Fensterparameter zum Übertragen
von Zufallsdaten genutzt.
-
Die
Stufen (12) und (13) nutzen optimale Fensterparameter zum Übertragen
von Daten, woraufhin die optimalen Fensterparameter noch einmal geprüft und bei
positivem Ergebnis fest gespeichert werden.
-
In
Stufe (14) bestätigt
der Master ein Signal Störsignal_zurücksetzen,
um die Datenerfassung zurückzusetzen
und noch einmal zu prüfen,
vergleicht dann die Fenstergröße mit den
Daten der Mindestfenstergröße und aktualisiert
ein IAP-Zustandsregister.
-
Der
Ablauf auf der Slave-Seite von 13B ergibt
sich aus der obigen Beschreibung der Master-Seite.
-
Obwohl
hier verschiedene Ausführungsarten und
Varianten der vorliegenden Erfindung zur schnellen Signalisierung
ausführlich
beschrieben werden, sollte klar sein, dass die Beschreibung und
die Lehren der vorliegenden Erfindung dem Fachmann viele alternative
Ausgestaltungen nahe legen.