-
Die
Erfindung betrifft ein Verfahren, mit dem man die Synchronisierung
einer Anordnung von Vorrichtungen erzielt, und eine Anordnung, die
sich in dieser Weise synchronisieren lässt.
-
Man
kennt elektronische Schaltungen, die eine Anordnung von Vorrichtungen
enthalten, beispielsweise eine Anordnung von Verarbeitungselementen,
die parallel arbeiten. Um sicherzustellen, dass diese Elemente korrekt
arbeiten, ist es erforderlich, einen gewissen Grad der Synchronisierung
zwischen ihnen zu erreichen. Müssen
beispielsweise die Verarbeitungselemente miteinander kommunizieren oder
Daten an andere Vorrichtungen senden, so muss sichergestellt sein,
dass der Grad der Synchronisierung so gestaltet ist, dass die Daten
zu den erwarteten Zeiten eintreffen.
-
Ein
Weg, dies zu versuchen und zu erreichen, besteht darin, Steuersignale
direkt an jede Vorrichtung in der Anordnung zu übertragen, wie etwa in WO 02/50700.
Damit besitzt jede Vorrichtung eine eigene Steuerleitung, die parallel
zu den Steuerleitungen verdrahtet ist, die von anderen Vorrichtungen verwendet
werden. Die Steuerleitungen können
beispielsweise Drähte
oder Platinen-Leiterbahnen sein. Um sicherzustellen, dass alle Steuersignale
an allen Vorrichtungen gleichzeitig ankommen, müssen die Verzögerungen
dieser Steuerleitungen mit relativen engen Toleranzen aneinander
angepasst sein. D. h., die Steuerleitungen müssen so entworfen werden, dass
ihre Längen
effektiv gleich sind, oder man muss Puffer in die Steuerleitungen
einfügen,
um die Längenunterschiede
auszugleichen.
-
Man
kennt insbesondere Anordnungen von semisynchronen Vorrichtungen
(M. R. Greenstreet: "Implementing
a START chip", ISBN
0-8186-7165-3) die nominal mit der gleichen Taktfrequenz laufen,
bei den die relativen Phasen aber nicht garantiert werden können und
nicht konstant sind. Eine Anordnung dieser Art kann man dort ausbilden,
wo die Vorrichtungen jeweils einen gemeinsamen Eingabetakt erhalten,
die Taktfrequenz jedoch intern mit Hilfe einer Phase Locked Loop
vervielfachen und den tatsächlichen
Takt erzeugen, der innerhalb der Vorrichtung verwendet wird. Die
Auswirkung dieser Vorgehensweise ist, dass man die relativen Phasen
der internen Takte bei zwei beliebigen Vorrichtungen nicht kennt, und
dass sie durch Störungen
schwanken.
-
Für den Fall
einer Anordnung mit semisynchronen Vorrichtungen können auch
gut angeglichene Steuerleitungen in den Vorrichtungen der Anordnung
nicht ausreichen, um sicherzustellen, dass die Anordnung korrekt
arbeitet. Eine Folge des beschriebenen Effekts kann sein, dass es
bei zwei Vorrichtungen, wenn sie Steuersignale empfangen, die sie
anweisen, einen Prozess zu starten und einen Prozess anzuhalten,
möglich
ist, dass die beiden Vorrichtungen den Prozess mit einer unterschiedlichen
Anzahl Taktzyklen betreiben.
-
Zudem
tritt bei semisynchronen Vorrichtungen die Schwierigkeit auf, dass
die Datenkommunikation von einer Vorrichtung zu einer anderen mit
einer Ungewissheit bezüglich
der relativen Zeitabläufe dieser
Prozesse empfangen wird, die auf den beiden Vorrichtungen laufen.
-
Gemäß einem
ersten Aspekt der Erfindung wird eine Prozessoranordnung bereitgestellt,
umfassend eine Anordnung semisynchroner Prozessorelemente, wobei
die semisynchronen Prozessorelemente jeweils einen Modulo-n-Zykluszähler aufweisen, und
mindestens eines der semisynchronen Prozessorelemente Steuerbefehlssignale
an die jeweils anderen semisynchronen Prozessorelemente zu senden
vermag, die semisynchronen Prozessorelemente jeweils derart sind,
dass bei Erhalt eines Steuerbefehlssignals sie auf dieses Signal
nur reagieren, wenn ihr Zykluszähler
einen vorgegebenen Wert erreicht, und das besagte eine semisynchrone
Prozessorelement derart ist, dass es Steuerbefehlssignale nur übermittelt,
wenn sein Zykluszähler
einen Wert einnimmt, der im vorgegebenen Bereich liegt. Die Prozessoranordnung
weist zudem eine Verbindung zwischen den jeweiligen semisynchronen
Prozessorelementen auf, wobei das besagte semisynchrone Prozessorelement
in der Lage ist, Synchronisations-Steuerbefehlssignale zur Verbindung
zu übersenden,
und die semisynchronen Prozessorelemente jeweils auf ein Synchronisations-Steuerbefehlssignal
reagieren, welches auf der Verbindung ankommt, indem sie ihren Zykluszähler neu
starten.
-
Dies
hat den Vorteil, dass man durch geeignetes Einstellen des vorbestimmten
Bereichs garantieren kann, dass, wenn einer der Prozessorelemente
ein Steuerbefehlssignal an jedes andere Prozessorelement überträgt, auf
diese Steuerbefehlssignale in den anderen Prozessorelementen zu
entsprechenden Zeiten reagiert wird.
-
Es
wird nun beispielhaft Bezug auf die beiliegenden Zeichnungen genommen.
Es zeigt:
-
1 einen
Blockdiagramm-Schaltplan eines Teils einer Anordnung der Erfindung;
-
2 die
zeitlichen Bezüge
innerhalb einer Vorrichtung in der Anordnung in 1;
-
3 die
relativen zeitlichen Bezüge
der Vorrichtungen im in 1 dargestellten Teil der Anordnung;
-
4 einen
Blockdiagramm-Schaltplan eines Teils einer der in 1 dargestellten
Vorrichtungen;
-
5 einen
Blockdiagramm-Schaltplan von Teilen zweier Vorrichtungen in einer
Anordnung der Erfindung; und
-
6 ein
Zeitverlaufsdiagramm, das die Arbeitsweise der Vorrichtungen in 5 darstellt.
-
Die
Erfindung betrifft Vorrichtungen, die eine Anordnung von Verarbeitungselementen
enthalten. Die Erfindung kann beispielsweise auf die Vorrichtung
angewendet werden, die in GB-A-2370380 offenbart ist, die eine Anordnung
von Verarbeitungselementen enthält,
die empfangene Daten parallel verarbeiten. In der Praxis kann die
Anordnung mehrere hundert derartige Verarbeitungselemente oder mehr enthalten.
-
1 zeigt
einen sehr kleinen Teil einer Anordnung, der nur vier Elemente 10, 12, 14 und 16 enthält, damit
die Erläuterung
einfach bleibt. Jedes dieser Elemente kann beispielsweise ein Prozessor sein,
der Daten von einem oder mehreren anderen Elementen in der Anordnung
empfängt
und Ausgabedaten an ein oder mehrere andere Elemente in der Anordnung überträgt. Um sicherzustellen,
dass die Anordnung wie beabsichtigt arbeitet, ist ein gewisser Grad
an Synchronisierung zwischen den Elementen erforderlich. Die Elemente
in der Anordnung sind in der Tat semisynchrone Vorrichtungen, die
nominell mit der gleichen Taktfrequenz laufen, deren relative Phasen
jedoch nicht garantiert werden können
und auch nicht konstant sind.
-
Eines
der Elemente 10, 12, 14 und 16 wird als
Mastersynchronisierungselement bezeichnet. Die anderen Elemente
arbeiten als Slavesynchronisierungselemente. Das Masterelement wird
mit Hilfe eines Signals an seinem Master/notSlave-Eingang ausgewählt. Im
dargestellten Beispiel ist das Element 10 als Masterelement
bezeichnet, und die Elemente 12, 14 und 16 sind
als Slaveelemente bezeichnet. Die Elemente sind bevorzugt so entworfen,
dass jedes beliebige Element auf Wunsch als Masterelement bezeichnet
werden kann. Nach dem Festlegen eines Elements als Masterelement
folgen weitere Merkmale des Entwurfs aus dieser Entscheidung, siehe
unten.
-
In
diesem Fall ist das Masterelement so dargestellt, dass es eines
der Verarbeitungselemente in der Anordnung ist und die gleiche Funktionalität aufweist
wie die anderen Elemente der Anordnung. Man kann jedoch ein Masterelement
bereitstellen, das nicht die gesamte Funktionalität der anderen
Elemente der Anordnung aufweist.
-
Zwischen
den Elementen 10, 12, 14 und 16 befindet
sich eine Vierdraht-Schnittstelle 18. Diese Drähte liefern
die verfügbare
Synchronisierungskommunikation zwischen den Elementen. Die Datenkommunikationen
zwischen den Anordnungselementen erfolgen über einen getrennten Satz von
Datenleitungen, der ausführlich
in GB-A-2370380 beschrieben ist. Dieser Aspekt der Arbeitsweise
der Anordnung wird im Weiteren nicht beschrieben. Die vier Drähte sind
eine Synchronisierungsleitung 20, eine Run-Leitung 22,
eine Step-Leitung 24 und eine Halt-Leitung 26.
Jedes der Elemente 10, 12, 14 und 16 ist
parallel an diese Drähte
angeschlossen. In einer großen
Anordnung können
die Drähte
Puffer beinhalten. Die Synchronisierungsleitung 20 liegt
am Eingang der Slaveelemente 12, 14 und 16 und
sowohl am Eingang als auch am Ausgang des Masterelements 10. Die
Run-Leitung 22 und die Step-Leitung 24 liegen jeweils
am Ausgang des Masterelements 10 und an den Eingängen der
Slaveelemente 12, 14 und 16. Die Halt-Leitung 26 besitzt
ein offenes Drain und wird auch als Eingang für das Masterelement 10 erfasst.
-
Jedes
der Elemente 10, 12, 14 und 16 hält einen
Modulo-n-Zykluszähler 30,
der im Folgenden beschrieben wird. Die Zahl "n" sollte
so groß gewählt werden,
dass sie für
die Kommunikationsverzögerungen
und Verzögerungsstreuungen
aufgrund der Größe und Eigenart
der Anordnung ausreicht, jedoch so klein wie möglich gehalten werden, damit
die Steuerungslatenz und Auflösung
so gering wie möglich wird.
Der Wert von "n" ist skalierbar und
erlaubt es, die Größe der Anordnung
zu skalieren.
-
Die
Modulo-n-Zykluszähler
steuern sowohl den Zeitpunkt, zu dem ein Steuerbefehl vom Masterelement 10 übertragen
werden kann, als auch den Zeitpunkt, zu dem im Masterelement 10 und
in den Slaveelementen 12, 14 und 16 darauf
reagiert werden soll. Allgemein formuliert wird das Steuerbefehlssignal
vorab gesendet, damit den gesamten Pfadlängen zu jeder Vorrichtung und
den unterschiedlichen Pfadlängen
zwischen Vorrichtungen Rechnung getragen wird. Der Modulo-n-Zähler in
jeder Vorrichtung läuft
zyklisch um (von 0 bis n-1, 0 bis n-1, 0 bis n-1, ...). Auf die
empfangenen Steuerbefehlssignale wird nur reagiert, wenn der Zykluszähler das
nächste
Mal die Null durchläuft.
-
Dadurch
erhält
man ein sicheres Fenster, in dem die Mastervorrichtung die Steuerbefehlssignale übertragen
kann. Das sichere Fenster, siehe 2, beginnt
zu einem gewissem Zeitpunkt T0 nach Null und endet zu einem bestimmten
Zeitpunkt T1 vor Null. Für
Steuerbefehlssignale, die innerhalb des sicheren Fensters W übertragen
werden, besteht keine Mehrdeutigkeit in irgendeiner der Empfangsvorrichtungen.
D. h., es besteht keine Ungewissheit, ob die Empfangsvorrichtung
das Steuerbefehlssignal vor oder nach dem beabsichtigten Nullpunkt
erfasst.
-
Alle
Parameter, die das sichere Fenster definieren, sind Soft-Parameter.
Die Anordnung kann beim Herstellen mit Voreinstellungswerten versehen werden.
Man kann die Parameterwerte jedoch anders als die Voreinstellungswerte
konfigurieren, wenn dies für
die besondere physikalische Implementierung erforderlich ist.
-
Die
Zykluszähler
in jeder Vorrichtung der Anordnung müssen auf weniger als +/– n Taktzyklen synchronisiert
sein, und Idealerweise auf +/– einen Taktzyklus.
Es können
auch schwächere
Grenzwerte unterstützt
werden, falls die Anwendung damit auskommt. Diese Synchronisierung
erfolgt über
die Synchronisierungsleitung 20 der Vierdraht-Schnittstelle 18,
wobei das herkömmliche
Verfahren eines parallelen Baums verwendet wird, dessen Verzögerung mit einer
guten Toleranz abgeglichen ist, damit er das benötigte "Sync-Signal" übertragen
kann. Der Verzögerungsausgleich
dieses parallelen Baums wird abhängig
davon ermittelt, welches der Anordnungselemente als Masterelement
bezeichnet ist.
-
Dieser
Synchronisierungsgrad ist nur für
das Synchronisierungssignal erforderlich. Die anderen Steuerbefehlssignale
sind sehr viel weniger eingeschränkt,
und man kann ihre entsprechenden Drähte der Vierdraht-Schnittstelle 18 leichter
und billiger in Hardware implementieren.
-
Das
Masterelement 10 überträgt einen
kurzen Impuls an seinem Ausgang auf die Synchronisierungsleitung 20.
Dieser Impuls wird von der Synchronisierungsleitung 20 in
die Eingänge
aller Slaveelemente 12, 14 und 16 eingespeist
sowie über
die Synchronisierungsleitung 20 zurück zu seinem Eingang. Das Zurückspeisen
des "Sync-Signals" zum Masterelement 10 als
Signal über
den gleichen Baum, der mit den Slaveelementen verbunden ist, bedeutet, dass
alle Vorrichtungen das "Sync-Signal" gemeinsam empfangen.
Dadurch bleibt das System skalierbar.
-
Nach
dem Empfang des "Sync-Signals" startet jede Vorrichtung
in der Anordnung seinen Zykluszähler
bei Null neu. Dieser Synchronisierungsvorgang sollte die erste Operation
sein, die das System nach dem Einschalten ausführt, wenn transiente Effekte
abgeklungen sind. Er sollte vor allen anderen globalen Steuervorgängen ausgeführt werden.
Der Synchronisierungsvorgang wird nur einmal ausgeführt. Damit
können
keine Fehler durch die relativen Phasen der Takte in den Vorrichtungen
eingeschleppt werden, die sich zeitweilig voneinander unterscheiden.
-
Nach
der Synchronisierung der Zykluszähler in
den Vorrichtungen der Anordnung kann das Masterelement 10 Start-
und Stop-Befehlssignale ausgeben, um die Prozesse in festen Schritten
zu steuern, die auf den Vorrichtungen in der Anordnung laufen.
-
3 zeigt
die Arbeitsweise der Anordnung in dieser Hinsicht. 3 zeigt
für jede
der Vorrichtungen 10, 12, 14 und 16 die
zeitlichen Abläufe
eines bestimmten Prozesses in der Vorrichtung. Damit gibt es innerhalb
einer jeden Vorrichtung einen Zyklus von Nullen mit gleichen Abständen, obwohl
diese Zyklen zwischen den Vorrichtungen nicht synchronisiert sind.
In jedem Zyklus gibt es ein sicheres Fenster, und die Mastervorrichtung 10 überträgt Steuerbefehlssignale
nur innerhalb dieser Zeitspanne. Wird in der Mastervorrichtung festgestellt,
dass ein Prozess in jeder Slavevorrichtung anlaufen sollte, so gibt
die Mastervorrichtung 10 im nächsten verfügbaren sicheren Fenster einen
Startbefehl aus, indem sie das Runsignal auf der Run-Leitung 22 hochzieht.
-
Jede
Slavevorrichtung 12, 14 und 16 sieht diese
Pegeländerung
einige Zeit später,
und sie beginnen, siehe 3, mit dem Lauf ihrer Prozesse, wenn
ihr Zykluszähler
das nächste
Mal über
Null läuft.
-
Ähnlich liegt
der Fall, wenn in der Mastervorrichtung festgestellt wird, dass
ein Prozess in jeder Slavevorrichtung anhalten sollte. Die Mastervorrichtung 10 zieht
das Runsignal auf der Run-Leitung 22 herunter, und die
Slavevorrichtungen 12, 14 und 16 antworten
durch das Anhalten ihrer Prozesse, wenn ihre jeweiligen Zykluszähler das
nächste
Mal über Null
laufen.
-
3 ist
zu entnehmen, dass alle Vorrichtungen exakt die gleiche Zeitdauer
laufen, in diesem Fall n Zyklen bzw. eine vollständige Umdrehung des Modulo-n-Zählers. Man
erreicht dies durch das Übertragen
des Steuerbefehlssignals innerhalb des sicheren Fensters der Mastervorrichtung 10.
Dabei ist sichergestellt, dass dieses sichere Fenster so definiert ist,
dass die Slavevorrichtungen zu entsprechenden Zeitpunkten in ihren
jeweiligen Zyklen auf übertragene
Steuerbefehlssignale ansprechen. Im bestmöglichen Fall sind die Modulo-n-Zähler in
den Vorrichtungen auf +/– einen
Zyklus der Modulo-n-Zähler in
den anderen Vorrichtungen synchronisiert. Man kann sich jedoch an
schwächere
Synchronisierungsgrenzen anpassen, indem man die Dauer des sicheren
Fensters so einstellt, dass keine Mehrdeutigkeit in den zeitlichen
Bezügen
der Steuersignale möglich
ist.
-
D.
h., die Zeitspanne zwischen dem Ende des sicheren Fensters der Mastervorrichtung 10 und dem
Nullpunkt in irgendeiner anderen Vorrichtung muss positiv sein und
größer als
die Ausbreitungsverzögerung
der Steuerbefehlssignale, wobei auch Unsicherheiten zulässig sein
müssen.
Eine engere Synchronisierung der Modulo-n-Zähler in den Vorrichtungen erlaubt
die größtmögliche Dauer
des sicheren Fensters.
-
Wie
bereits beschrieben erlaubt es das System, jede Vorrichtung so zu
steuern, dass sie die gleiche Anzahl von Prozesszyklen arbeitet.
Es ist jedoch evident, dass dies nur eine Auflösung von "n" bezogen
auf die Anzahl der Zyklen erlaubt, die das System ausführen kann.
Beispielsweise kann im Fall eines Systems, in dem jede Vorrichtung
einen Modulo-32-Zähler
aufweist, das System nur nach 32, 64, 96, 128 Zyklen usw. angehalten
werden. (Dabei ist vorausgesetzt, dass die Prozesszyklen die gleiche Dauer
wie die Zyklen der Modulo-n-Zähler
haben. Es wäre
jedoch auch möglich,
dass die Prozesszyklusrate ein ganzzahliges Vielfaches der Zyklusrate
der Modulo-n-Zähler
ist.) Damit man die Vorrichtungen für eine beliebige Anzahl von
Zyklen betreiben kann, kann der Rest der erforderlichen Zykluszahl
nach dem Starten und Anhalten wie beschrieben für (k × n) Prozesszyklen (wobei k
eine natürliche
Zahl ist, die so gewählt
wird, dass (k × n)
kleiner ist als die erforderliche Zyklusanzahl, jedoch so nahe wie
möglich bei
ihr liegt) durch Einzelschritte erfolgen. Um dieses Ziel zu erreichen
gibt die Mastervorrichtung 10 im nächsten verfügbaren sicheren Fenster einen
Schrittimpuls auf der Step-Leitung 24 aus. Alle Vorrichtungen
schreiten beim nächsten
Nulldurchgang ihrer Zykluszähler
um einen Prozessarbeitszyklus fort. Diesen Vorgang kann man mehrmals
wiederholen; bis die erforderliche Anzahl von Arbeitszyklen erreicht ist.
Alle Vorrichtungen sind dann exakt die gleiche Anzahl von Prozesszyklen
gelaufen. Ist im Fall des beschriebenen Systems mit Modulo-32-Zykluszählern beabsichtigt,
dass die Vorrichtungen 74 Zyklen laufen sollen, so kann man dies
mit zwei vollen Arbeitszyklen von je 32 Prozesszyklen und zehn Einzelschritten
erreichen, da 32 + 32 + 10 = 74 gilt.
-
Damit
erlaubt es diese Anordnung wie beschrieben, einen Prozess während des
Laufs anzuhalten. Beispielsweise ist es im Fall des genannten Prozesses
mit 74 Zyklen möglich,
diesen Prozess nach 32 Zyklen anzuhalten bzw. nach 64 Zyklen oder nach
65 Zyklen usw. Es kann eine Verzögerung
eintreten, bevor das Anhalten erfolgt, es sind jedoch alle Vorrichtungen
exakt die gleiche Anzahl von Zyklen gelaufen. Innerhalb der Mastervorrichtung
befindet sich eine Statusmaschine, die abhängig von den Anforderungen
des Benutzers berechnet, welche Befehle zu welchem Zeitpunkt auszugeben
sind. Um mit dieser Anordnung die größtmögliche Wirksamkeit zu erzielen,
könnte
man die Statusmaschine so entwerfen, dass sie gleichzeitig einen
Anhaltebefehl und einen Schritt befehl ausgibt.
-
In
manchen Situationen kann es für
jede beliebige Vorrichtung einschließlich einer der Slavevorrichtungen
erwünscht
sein, dass sie ein Anhalten verlangen kann. Dies könnte beispielsweise
aufgrund einer Fehlerbedingung oder eines erfassten Anhaltepunkts
der Fall sein, wegen einer gewissen Art von Interrupt oder aus irgendeinem
anderen Grund. Um die Anzahl der Arbeitszyklen zwischen allen Vorrichtungen
gleich zu halten, kann die den Anhaltevorgang anfordernde Vorrichtung
dies nicht direkt bewirken. Die Halt-Leitung 26 ist eine
Leitung mit offenem Drain, die normalerweise hochgezogen ist. Jede
der Vorrichtungen 10, 12, 14 und 16 an
der Leitung kann sie jedoch herunterziehen. Dies kann in der Mastervorrichtung 10 erfasst
werden. Bis zu einem gewissen Punkt lässt sich dies durch einfache
Verdrahtung erreichen; für
sehr große
Anordnungen kann man Puffer oder Logikgatter einsetzen. Erkennt
die Mastervorrichtung 10 ein Signal auf der Halt-Leitung 26, so
erzeugt sie wie beschrieben im nächsten
sicheren Fenster einen Anhaltevorgang. Dies erlaubt es, einen laufenden
Prozess anzuhalten. Nach dem Herunterziehen der Halt-Leitung 26 tritt
möglicherweise
eine Verzögerung
von bis zu (2.n) Prozessarbeitszyklen auf, bevor der Anhaltevorgang
in den Vorrichtungen erfolgt; es ist jedoch sichergestellt, dass
alle Vorrichtungen exakt die gleiche Anzahl Prozesszyklen durchlaufen
haben.
-
Der
zeitliche Bezug der Steuersignale, die an jeder Vorrichtung ankommen,
bezüglich
des Abtasttakts dieser Vorrichtung ist unbekannt und unsicher. Hat
das Signal einen Übergang,
der zu nahe am Übergang
des Abtasttakts liegt, so kann das entstehende abgetastete Signal
metastabil sein. Diese Metastabilität kann sich ausbreiten und
bewirken, dass Fehler erzeugt werden.
-
Ist
es erforderlich, dass das System besonders kompakt aufgebaut ist
oder ist der äußere Verzögerungsausgleich
des Sync-Signals aufgrund von physikalischen Beschränkungen
schwierig, so ist es sinnvoll, innerhalb der Vorrichtungen Vorsorge
für diesen
Umstand zu treffen.
-
4 zeigt
einen Teil einer der Vorrichtungen 10, 12, 14 und 16,
die in dieser Hinsicht alle gleich aufgebaut sind, und behandelt
die Fragen der Metastabilität
und des Verzögerungsausgleichs.
Ein Eingabe-Steuerbefehlssignal wird an einen Multiplexer 51 und
ein invertiertes Taktregister 50 geleitet. Das Ausgangssignal
des invertierten Taktregisters 50 bildet das zweite Eingangssignal
für den
Multiplexer 51. Das Ausgangssignal des Multiplexers 51 wird
in eine Kette von drei Anti-Metastabilitätsregistern 52 geführt und
anschließend
zu einer weiteren Kette von Registern, die eine kurze angezapfte
Verzöge rungsleitung 53 bilden.
Man kann das Ausgangssignal über einen
Ausgangsmultiplexer 54 von jedem beliebigen Register 53 entnehmen.
-
Damit
bilden die Anti-Metastabilitätsregister 52 einen
Teil einer angezapften Verzögerungsleitung 53,
die eine minimale Verzögerung
hat, die auf 3 Taktperioden eingestellt ist. Dadurch verringert
sich die Fehlerwahrscheinlichkeit (und damit der mittlere Zeitabstand
zwischen Fehlern) auf eine annehmbare Höhe.
-
Die
angezapfte Verzögerungsleitung
erlaubt es, die tatsächliche
Ankunftszeit der Steuersignale für
jede Vorrichtung einzeln zu verändern,
um die unterschiedlichen Verzögerungen
auf den äußeren Pfaden
auszugleichen.
-
Das
invertierte Taktregister 50 arbeitet effektiv als zusätzliches
1/2-Zyklus-Register am Eingang der Verzögerungsleitung. Es gleicht
den anderen Registern in der Verzögerungsleitung, verwendet jedoch einen
invertierten Takt. Dadurch erhält
man eine angezapfte Verzögerungsleitung
mit einer Genauigkeit von 1/2 Zyklus in jeder Vorrichtung, die über Software konfiguriert
werden kann, damit man das System auf besonders enge Anforderungen
feinabstimmen kann, oder man belässt
einfach die voreingestellte Konfiguration für den allgemeinen Fall.
-
Die
Verzögerungen
in den Vorrichtungen innerhalb der Anordnung kann man beim Entwurf
der Anordnung einstellen oder nach dem Messen der Verzögerungen,
die in Prototyp-Anordnungen auftreten.
-
Soweit
wie sie beschrieben ist liefert die Erfindung einen Weg, auf dem
man die Synchronisierung von zwei oder mehr Vorrichtungen erzielen kann,
und zwar innerhalb bekannter Grenzen, und einen Weg zum Übertragen
von Steuerbefehlssignalen zwischen Vorrichtungen in einer Weise,
dass diese die gewünschte
Anzahl von Prozessarbeitszyklen laufen. Ein weiterer Aspekt der
Erfindung liefert eine Datenkommunikation zwischen zwei oder mehr
Vorrichtungen, um sicherzustellen, dass die semisynchronen Vorrichtungen
ihre Prozesse mit den beabsichtigten Daten betreiben.
-
5 zeigt
einen Blockdiagramm-Schaltplan mit Teilen zweier Vorrichtungen 90, 95,
die beispielsweise zwei beliebige semisynchrone Vorrichtungen der
oben beschriebenen Art sein können.
Die erste Vorrichtung 90 besitzt ein Senderegister 101.
In das Senderegister 101 werden Daten mit einer ersten Taktfrequenz
getaktet, die durch den Takt clock_1 der ersten Vorrichtung 90 bestimmt
ist. Die erste Vorrichtung 90 enthält auch ei nen N-Takt-Codierblock 102, der
eine Statusmaschine enthält.
Die Statusmaschine wird ebenfalls durch den Takt clock_1 der ersten Vorrichtung 90 getaktet
und erzeugt einen von N Zuständen,
und zwar zyklisch während
aufeinander folgender Zyklen von clock_1. Die Folge der N Zustände bildet
bevorzugt einen Graycode. Die Statusmaschine wird zu einem Zeitpunkt
T1 auf einen bekannten Wert voreingestellt, und zwar mit einem Synchronisiersignal
sync_1, das in der ersten Vorrichtung 90 erzeugt wird.
-
Die
Daten werden über
die Verbindung 107 an die zweite Vorrichtung 95 kommuniziert,
und die Statusinformation vom N-Takt-Codierblock 102 wird über die
Verbindung 108 an die zweite Vorrichtung 95 kommuniziert.
-
Innerhalb
der zweiten Vorrichtung 95 befindet sich ein N-Takt-Decodierblock 103,
der die Statusinformation empfängt
und Folgen von N Signalen 109 erzeugt, die dazu verwendet
werden, die empfangenen Daten gesteuert durch die empfangene Statusinformation
zyklisch in die Register R1, R2, R3, ..., RN zu laden. Damit ist
jedes empfangene Datenwort für
N Taktzyklen in einem der Register R1 bis RN verfügbar.
-
Dieser
Prozess in der zweiten Vorrichtung 95 arbeitet daher gesteuert
durch das Taktsignal clock_1 der ersten Vorrichtung 90 und
befindet sich effektiv in einem ersten Taktbereich. Im Gegensatz dazu
arbeitet der Prozess zum Holen der Daten aus den Registern gesteuert
durch das Taktsignal clock_2 der zweiten Vorrichtung 95 und
befindet sich effektiv in einem zweiten Taktbereich.
-
Die
zweite Vorrichtung 95 enthält einen Multiplexer-Eingangswahlblock 104,
der Ausgangssignale 110 erzeugt, die einen der N Zustände zyklisch während aufeinander
folgender Zyklen von clock_2 beschreiben. Dieses wird auch von einem
Synchronisiersignal sync_2, das innerhalb der zweiten Vorrichtung 95 erzeugt
wird, zu einem Zeitpunkt T2 auf einen bekannten Wert voreingestellt.
-
Das
Signal 110 wird an einen N:1-Multiplexerblock 105 gesendet,
der die in den Registern R1 bis RN gespeicherten Datenwörter wählt, und
zwar in der gleichen Reihenfolge, in der diese Register aktualisiert
werden. Die gewählten
Datenwörter
werden dann an einem Multiplexerausgang 111 an ein Register 106 geliefert,
das mit dem Takt clock_2 der zweiten Vorrichtung 95 getaktet
wird.
-
Diese
Blöcke
arbeiten derart, dass die Daten im Signal 111 garantiert
stabil am Eingang des Registers 106 anliegen, wenn es mit
dem Takt clock_2 der zweiten Vorrich tung getaktet wird, jedoch vorausgesetzt
dass die zeitliche Abweichung zwischen den beiden Vorrichtungen 90, 95 weniger
als N Taktzyklen beträgt.
Wie erwähnt
kann man diesen Grad an Synchronisierung mit Hilfe des anhand von 1 bis 4 beschriebenen
Schemas erreichen.
-
Der
Modulo-n-Zähler 30 in
der ersten Vorrichtung 90 kann vorteilhaft mit dem Taktsignal clock_1
der ersten Vorrichtung getaktet werden. Dagegen kann man den Modulo-n-Zähler 30 in
der zweiten Vorrichtung 95 vorteilhaft mit dem Taktsignal clock_2
der zweiten Vorrichtung takten. Wie bereits erwähnt wäre es jedoch möglich, dass
clock_1 und/oder clock_2 ein ganzzahliges Vielfaches der Zyklusrate
ihrer jeweiligen Modulo-n-Zähler sind.
-
6 zeigt
ein Zeitverlaufsdiagramm, das den Fall N = 4 in 5 darstellt.
Damit erzeugt der Takt clock_1 der ersten Vorrichtung 90 eine
Folge von Taktimpulsen bei einer ersten Frequenz. Eine Folge von
Datenwörtern
A, B, C, D, E, ... wird in das Senderegister 101 der ersten
Vorrichtung 90 getaktet, und zwar mit der ersten Frequenz,
die durch den Takt clock_1 der ersten Vorrichtung 90 definiert
ist. Gleichzeitig erzeugt der N-Takt-Codierblock 102, der ebenfalls
mit dem Takt clock_1 der ersten Vorrichtung 90 getaktet
wird, die vier Zustände
S1, S2, S3, S4, S1 ... zyklisch während aufeinander folgender
Zyklen von clock_1.
-
Die
Datenwörter
A, B, C, D, E, ... werden über
die Verbindung 107 zur zweiten Vorrichtung 95 kommuniziert.
Die Statusinformation S1, S2, S3, S4, S1 ... wird über die
Verbindung 108 zur zweiten Vorrichtung 95 kommuniziert.
-
Innerhalb
der zweiten Vorrichtung 95 werden die N-Takt-Decodiersignale
dazu verwendet, die empfangenen Daten gesteuert durch die empfangene
Statusinformation zyklisch in die Register R1, R2, R3, ..., RN zu
laden. Damit wird das Datenwort A in das Register R1 geladen, das
Datenwort B wird in das Register R2 geladen, das Datenwort C wird
in das Register R3 geladen, und das Datenwort D wird in das Register
R4 geladen. Anschließend
wird das Datenwort E in das Register R1 geladen usw., so dass jedes
empfangene Datenwort für
4 Taktzyklen in einem der Register R1 bis R4 verfügbar ist.
-
Die
zweite Vorrichtung 95 enthält einen Taktsignalgenerator,
der Taktimpulse clock_2 erzeugt. Der Multiplexer-Eingangswahlblock 104 erzeugt
zyklisch während
aufeinander folgender Zyklen von clock_2 Ausgangssignale s1, s2,
s3, s4, s1, ... auf der Leitung 110.
-
Die
Signale auf der Leitung 110 werden an einen N:1-Multiplexerblock 105 gesendet,
der eines der in den Registern R1, R2, R3 und R4 gespeicherten Datenwörter wählt, und
zwar abhängig
davon, ob das Signal auf der Leitung 110 den Wert s1, s2,
s3 oder s4 annimmt. Die gewählten
Datenwörter
werden dann an einem Multiplexerausgang 111 einem Register 106 zugeführt, das
mit dem Takt clock_2 der zweiten Vorrichtung 95 getaktet
wird.
-
Da
jedes Datenwort für
vier Zyklen (für
den Fall N = 4) in dem entsprechenden Register der Register R1 bis
R4 bleibt, ist es nicht erforderlich, dass die beiden Taktsignale
clock_1 und clock_2 exakt synchronisiert sind. Es ist für sie nur
erforderlich, dass sie innerhalb von vier Taktzyklen synchronisiert sind,
da das Datenwort in dieser Zeitspanne für das Laden aus dem Register
verfügbar
ist.
-
Es
ist ein System beschrieben, das sicherstellt, dass man zwei Vorrichtungen
innerhalb einer geforderten Anzahl von Zyklen synchronisieren kann, und
ein System, das einen korrekten Datentransfer zwischen zwei Vorrichtungen
sicherstellt, die innerhalb einer bekannten Anzahl von Zyklen synchronisiert
sind.