DE60307513T2 - Synchronisation von semi-synchronen verarbeitungselementen - Google Patents

Synchronisation von semi-synchronen verarbeitungselementen Download PDF

Info

Publication number
DE60307513T2
DE60307513T2 DE60307513T DE60307513T DE60307513T2 DE 60307513 T2 DE60307513 T2 DE 60307513T2 DE 60307513 T DE60307513 T DE 60307513T DE 60307513 T DE60307513 T DE 60307513T DE 60307513 T2 DE60307513 T2 DE 60307513T2
Authority
DE
Germany
Prior art keywords
processor
control command
processor elements
connection
semisynchronous
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 - Lifetime
Application number
DE60307513T
Other languages
English (en)
Other versions
DE60307513D1 (de
Inventor
Matthew John NOLAN
Paul Roger DEALTRY
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.)
Picochip Designs Ltd
Original Assignee
Picochip Designs Ltd
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 Picochip Designs Ltd filed Critical Picochip Designs Ltd
Application granted granted Critical
Publication of DE60307513D1 publication Critical patent/DE60307513D1/de
Publication of DE60307513T2 publication Critical patent/DE60307513T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Hardware Redundancy (AREA)
  • Information Transfer Systems (AREA)
  • Multi Processors (AREA)
  • Led Device Packages (AREA)
  • Crystals, And After-Treatments Of Crystals (AREA)
  • Electrical Discharge Machining, Electrochemical Machining, And Combined Machining (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Time-Division Multiplex Systems (AREA)

Description

  • 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.

Claims (9)

  1. Prozessoranordnung, umfassend eine Anordnung semisynchroner Prozessorelemente (10, 12, 14, 16), dadurch gekennzeichnet, dass die semisynchronen Prozessorelemente (10, 12, 14, 16) jeweils einen Modulo-n-Zykluszähler (30) aufweisen, wobei mindestens eines der semisynchronen Prozessorelemente (10) Steuerbefehlsignale an die jeweils anderen semisynchronen Prozessorelemente (12, 14, 16) zu senden vermag, die semi-synchronen Prozessorelemente (12, 14, 16) jeweils derart sind, dass bei Erhalt eines Steuerbefehlsignals sie auf dieses Signal nur reagieren, wenn ihr Modulo-n-Zykluszähler (30) einen vorgegebenen Wert erreicht, und das besagte eine semisynchrone Prozessorelement (10) derart ist, dass es Steuerbefehlsignale nur übermittelt, wenn sein Modulo-n-Zykluszähler (30) einen Wert einnimmt, der im vorgegebenen Bereich liegt, wobei die Prozessoranordnung zudem eine erste Verbindung (20) zwischen den jeweiligen semisynchronen Prozessorelementen (10, 12, 14, 16) aufweist, das besagte semisynchrone Prozessorelemente (10) in der Lage ist, Synchronisations-Steuerbefehlsignale zur ersten Verbindung (20) zu übersenden und die semisynchronen Prozessorelemente (10, 12, 14, 16) jeweils auf ein Synchronisations-Steuerbefehlssignal reagieren, welches auf der ersten Verbindung (20) ankommt, durch Neustarten ihrer Modulo-n-Zykluszähler (30).
  2. Prozessoranordnung nach Anspruch 1, umfassend eine zweite Verbindung (22) zwischen den jeweiligen semisynchronen Prozessorelementen (10, 12, 14, 16), wobei das besagte eine semisynchrone Prozessorelemente (10) Start- und Stopp-Steuerbefehlsignale an die zweite Verbindung (22) senden kann und wobei die semisynchronen Prozessorelemente (10, 12, 14, 16) jeweils auf ein Start- und Stopp-Steuerbefehlsignal reagieren, das auf der zweiten Verbindung (22) ankommt.
  3. Prozessoranordnung nach Anspruch 2, wobei ein Start-Steuerbefehlsignal eine erste binäre Signalhöhe auf der zweiten Verbindung (22) hat und ein Stopp-Steuerbefehlsignal eine zweite binäre Signalhöhe auf der zweiten Verbindung (22) hat.
  4. Prozessoranordnung nach Anspruch 2 oder 3, umfassend eine dritte Verbindung (26) zwischen den jeweiligen semisynchronen Prozessorelementen (10, 12, 14, 16). wobei die semisynchronen Prozessorelemente (12, 14, 16) jeweils in der Lage sind, ein Anhaltesignal auf die dritte Verbindung (26) zu geben und das besagte eine semisynchrone Prozessorelement (10) ein Anhaltesignal, das auf der dritten Verbindung (26) anliegt, erfasst und auf ein erfasstes Anhaltesignal durch Senden eines Stopp-Steuerbefehlsignals auf die zweite Verbindung (22) reagiert.
  5. Prozessoranordnung nach Anspruch 1, umfassend eine vierte Verbindung (24) zwischen den jeweiligen semisynchronen Prozessorelementen (10, 12, 14, 16), wobei das besagte eine semisynchrone Prozessorelemente (10) in der Lage ist, Stufen-Steuerbefehlsignale auf die vierte Verbindung (24) zu senden, die semisynchronen Prozessorelemente (10, 12, 14, 16) jeweils auf ein Stufen-Steuerbefehlsignal, das auf der vierten Verbindung (24) ankommt, reagieren durch Ausführen eines Prozessschritts.
  6. Prozessoranordnung nach Anspruch 1, wobei die semisynchronen Prozessorelemente (10, 12, 14, 16) jeweils eine programmierbare Verzögerungszeile (53) umfassen für das Anwenden einer programmierten Verzögerung zum Empfang von Steuerbefehlsignalen.
  7. Prozessoranordnung nach Anspruch 6, wobei die programmierbare Verzögerungszeile (53) jeweils eine programmierbare Mindestverzögerung besitzt.
  8. Prozessoranordnung nach Anspruch 1, wobei die semisynchronen Prozessorelemente (10, 12, 14, 16) ein Übertragungselement und ein Empfangselement besitzen, wobei das Übertragungselement Einrichtungen aufweist zum Übertragen von Datenworten in Verbindung mit entsprechenden Codeworten, wobei die Codeworte verwendet werden in einer vorgegebenen Folge, und das Empfangselement Einrichtungen aufweist zum Abspeichern empfangener Datenworte in entsprechenden Registern (R1, R2, ..., RN), die entsprechenden Register (R1, R2, ..., RN) bestimmt werden auf Basis der Codeworte, die den Datenworten derart zugeordnet sind, dass jedes empfangene Datenwort abgespeichert wird in seinem Register (R1, R2, ..., RN) über die Dauer der vorgegebenen Folge von Codeworten; und Einrichtungen zum Heben von Datenworten aus den entsprechenden Registern (R1, R2, ..., RN).
  9. Prozessoranordnung nach Anspruch 8, wobei die Einrichtung zum Heben von Datenworten aus den jeweiligen Registern (R1, R2, ..., RN) umfasst einen Multiplexer (105), der mit allen Registern (R1, R2, ..., RN) verbunden ist, und eine Einrichtung zum Auswählen eines Ausgangs wiederum aus den jeweiligen Registern (R1, R2, ..., RN).
DE60307513T 2002-12-20 2003-12-12 Synchronisation von semi-synchronen verarbeitungselementen Expired - Lifetime DE60307513T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0229788 2002-12-20
GB0229788A GB2396446B (en) 2002-12-20 2002-12-20 Array synchronization
PCT/GB2003/005451 WO2004057487A2 (en) 2002-12-20 2003-12-12 Array synchronisation

Publications (2)

Publication Number Publication Date
DE60307513D1 DE60307513D1 (de) 2006-09-21
DE60307513T2 true DE60307513T2 (de) 2007-03-15

Family

ID=9950140

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60307513T Expired - Lifetime DE60307513T2 (de) 2002-12-20 2003-12-12 Synchronisation von semi-synchronen verarbeitungselementen

Country Status (7)

Country Link
US (1) US7603541B2 (de)
EP (1) EP1573574B1 (de)
AT (1) ATE336043T1 (de)
DE (1) DE60307513T2 (de)
ES (1) ES2268455T3 (de)
GB (1) GB2396446B (de)
WO (1) WO2004057487A2 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7639764B2 (en) * 2005-08-17 2009-12-29 Atmel Corporation Method and apparatus for synchronizing data between different clock domains in a memory controller
US11936393B1 (en) 2022-06-06 2024-03-19 Amazon Technologies, Inc. Cooperative timing alignment using synchronization pulses

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4589066A (en) * 1984-05-31 1986-05-13 General Electric Company Fault tolerant, frame synchronization for multiple processor systems
AU616213B2 (en) * 1987-11-09 1991-10-24 Tandem Computers Incorporated Method and apparatus for synchronizing a plurality of processors
US4937741A (en) * 1988-04-28 1990-06-26 The Charles Stark Draper Laboratory, Inc. Synchronization of fault-tolerant parallel processing systems
US4974146A (en) * 1988-05-06 1990-11-27 Science Applications International Corporation Array processor
US4965717A (en) * 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
EP0424618A3 (en) * 1989-10-24 1992-11-19 International Business Machines Corporation Input/output system
US5233615A (en) * 1991-06-06 1993-08-03 Honeywell Inc. Interrupt driven, separately clocked, fault tolerant processor synchronization
JP2601591B2 (ja) * 1991-11-26 1997-04-16 富士通株式会社 並列計算機およびその全対全通信方法
JPH06188850A (ja) * 1992-10-23 1994-07-08 Fujitsu Ltd データ転送方式及びデータ転送装置
JPH0773059A (ja) * 1993-03-02 1995-03-17 Tandem Comput Inc フォールトトレラント型コンピュータシステム
WO1995015529A1 (en) * 1993-12-01 1995-06-08 Marathon Technologies Corporation Fault resilient/fault tolerant computing
DE69430793T2 (de) * 1994-01-27 2003-02-20 Sun Microsystems, Inc. Asynchrone serielle kommunickationsschaltung
US6381293B1 (en) * 1996-04-03 2002-04-30 United Microelectronics Corp. Apparatus and method for serial data communication between plurality of chips in a chip set
US5963609A (en) * 1996-04-03 1999-10-05 United Microelectronics Corp. Apparatus and method for serial data communication between plurality of chips in a chip set
US6055285A (en) * 1997-11-17 2000-04-25 Qlogic Corporation Synchronization circuit for transferring pointer between two asynchronous circuits
US5923615A (en) * 1998-04-17 1999-07-13 Motorlola Synchronous pipelined burst memory and method for operating same
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
GB2370381B (en) 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
JP4178552B2 (ja) * 2003-07-24 2008-11-12 株式会社安川電機 マスター・スレーブ同期通信方式

Also Published As

Publication number Publication date
US7603541B2 (en) 2009-10-13
US20060168423A1 (en) 2006-07-27
EP1573574A2 (de) 2005-09-14
EP1573574B1 (de) 2006-08-09
WO2004057487A3 (en) 2005-02-10
WO2004057487A2 (en) 2004-07-08
ATE336043T1 (de) 2006-09-15
GB2396446B (en) 2005-11-16
GB0229788D0 (en) 2003-01-29
ES2268455T3 (es) 2007-03-16
DE60307513D1 (de) 2006-09-21
GB2396446A (en) 2004-06-23

Similar Documents

Publication Publication Date Title
DE69428687T2 (de) Ausrichtungsgeraet fuer einen seriellen datenbus
DE3618865C2 (de) Maximallängen-Schieberegisterschaltfolgen-Generator
DE102018002309B4 (de) Slave-gerät, system für serielle kommunikation und kommunikationsverfahren für system für serielle kommunikation
DE60002567T2 (de) Dynamische wellenpipelineschnittstellenanordnung und verfahren dafür
DE4017494C2 (de)
DE112015004473T5 (de) Bestätigen der datengenauigkeit in einem verteilten steuerungssystem
EP0021290B1 (de) Verfahren und Schaltungsanordnung zur Synchronisierung bei der Übertragung von digitalen Nachrichtensignalen
DE2537937A1 (de) Schaltung zur rueckgewinnung oder abtrennung einer folge von nutzimpulsen aus einem nutzimpulse und stoerimpulse enthaltenden eingangssignal
DE3887249T2 (de) Digitaler Multiplexer.
DE2449660C3 (de) Verfahren und Einrichtung zur Synchronisation von im Zeitmultiplex arbeitenden, untereinander gleichberechtigten autonomen Geberstationen
DE19549156B4 (de) Datensignalverteilungsschaltung für ein Synchronspeicherelement
DE69131147T2 (de) Verfahren zur Simulation des Zustands eines Schieberegisters mit linearer Rückkopplung
DE10038173B4 (de) Verfahren und Vorrichtung zum Erzeugen von Mehrfach-Scramblingcodes
DE3888549T2 (de) Digitaler Signalverteiler.
DE60307513T2 (de) Synchronisation von semi-synchronen verarbeitungselementen
EP0201634B1 (de) Digitaler Wortgenerator zur automatischen Erzeugung periodischer Dauerzeichen aus n-bit-Wörtern aller Wortgewichte und deren Permutationen
DE1537127B2 (de) Verfahren zur rastersynchronisierung bei der uebertragung digitaler signale und anordnung zur durchfuehrung des verfahrens
EP1721407A1 (de) Schnittstellenvorrichtung und verfahren zur synchronisation von daten
DE69110793T2 (de) Zeitvielfachmultiplexiereinrichtung.
DE69835874T2 (de) Chipströmedekodierung
DE68918676T2 (de) Sende-Empfangssynchronisationsvorrichtung einer Station eines Kommunikationsnetzes, insbesondere für ein Kraftfahrzeug.
EP1484679A2 (de) Sicherstellung von maximalen Reaktionszeiten in komplexen oder verteilten sicheren und/oder nicht sicheren Systemen
DE2410035A1 (de) Alarmanlage
DE68905630T2 (de) Verfahren und anordnung zur synchronisation von terminals, die ueber eine kette ohne zeittransparenz kommunizieren.
DE69623454T2 (de) Anordnung und einrichtung für eine integrierte schaltung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition