DE69833933T2 - Mehrprozessorsystem mit synchronisierter Systemzeit - Google Patents

Mehrprozessorsystem mit synchronisierter Systemzeit Download PDF

Info

Publication number
DE69833933T2
DE69833933T2 DE69833933T DE69833933T DE69833933T2 DE 69833933 T2 DE69833933 T2 DE 69833933T2 DE 69833933 T DE69833933 T DE 69833933T DE 69833933 T DE69833933 T DE 69833933T DE 69833933 T2 DE69833933 T2 DE 69833933T2
Authority
DE
Germany
Prior art keywords
node
value
tbi
time value
synchronization message
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
DE69833933T
Other languages
English (en)
Other versions
DE69833933D1 (de
Inventor
Tommaso Majo
Paolo Paluello
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.)
Bull SA
Original Assignee
Bull SA
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 Bull SA filed Critical Bull SA
Publication of DE69833933D1 publication Critical patent/DE69833933D1/de
Application granted granted Critical
Publication of DE69833933T2 publication Critical patent/DE69833933T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock

Description

  • Die vorliegende Erfindung bezieht sich auf ein Mehrprozessor-Verarbeitungssystem und insbesondere auf ein Verarbeitungssystem gemäß dem Oberbegriff des ersten Anspruchs.
  • Mehrprozessor-Verarbeitungssysteme, bei denen mehrere Prozessoren unterschiedliche Operationen simultan durchführen, werden häufig verwendet, um eine hohe Arbeitsleistungsfähigkeit zu erreichen. Bei einem speziellen Typ eines Mehrprozessor-Verarbeitungssystems, das als ein System mit einer verteilten Architektur oder mit lose gekoppelten Prozessoren bekannt ist, werden die Daten zwischen den verschiedenen Prozessoren mittels geeigneter Nachrichten ohne die Verwendung von direkt gemeinschaftlich verwendeten Ressourcen ausgetauscht. Typischerweise sind die Prozessoren in Knoten (oder Modulen) gruppiert, deren Operation unabhängig mittels eines entsprechenden Taktsignals synchronisiert ist. Diese Verarbeitungssysteme unterscheiden sich von diesen des Typs mit eng gekoppelten Prozessoren, bei denen die Daten zwischen den verschiedenen Prozessoren mittels eines gemeinschaftlich verwendeten Speichers ausgetauscht werden und deren Operation mittels eines einzigen Systemtaktsignals synchronisiert ist.
  • Bei Verarbeitungssystemen ist es allgemein notwendig, einen Zeitgeber aufzuweisen, der eine Systemzeit speichert; diese Systemzeit wird beispielsweise verwendet, um das Datum und die Zeit zu steuern, um den Moment zu identifizieren, in dem Daten verschiedener Typen (wie beispielsweise eine Datei oder eine Aufzeichnung einer Datenbank) modifiziert wurden, um in der Lage zu sein, die jüngste Version derselben auszuwählen, etc.
  • Bei eng gekoppelten Systemen ist ein Zähler, dessen Inhalt für jedes Systemtaktsignal erhöht wird, in jedem Prozessor eingegliedert. Da die Zähler in dem gleichen anfänglichen Moment aktiviert werden und es ein einziges Systemtaktsignal gibt, haben alle Zähler immer den gleichen Inhalt.
  • Bei lose gekoppelten Systemen jedoch ist es extrem schwierig, eine gemeinsame Systemzeit bei allen Knoten zu erreichen, da die verschiedenen Taktsignale nicht miteinander synchronisiert werden können. Eine mögliche Lösung bestünde darin, einen einzigen Zähler zu verwenden, der bei einem ausgewählten Knoten angeordnet ist (und für jedes entsprechende Taktsignal erhöht wird), wobei der Inhalt des Zählers durch einen jeglichen Prozessor gelesen wird, wenn nötig; doch dieses System liefert lediglich eine exakte Systemzeit bei dem Knoten, in dem der Zähler vorhanden ist, während bei den anderen Knoten der empfangene Wert auf Grund der Zeit, die erforderlich ist, um den Wert zu senden, sicherlich geringer als die tatsächliche Systemzeit ist. Dies führt zu Ungenauigkeiten, die bei vielen praktischen Anwendungen nicht toleriert werden können.
  • Das Dokument US-4746920 beschreibt ein Verfahren und eine Vorrichtung, die dieses Verfahren implementiert, zum Synchronisieren und Verwalten der „Systemtakte", die durch jeden von einer Anzahl von Prozessoreinheiten beibehalten werden, die ein Mehrprozessorsystem bilden. Das vorgeschlagene Verfahren basiert auf einer Mittelungstechnik.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, die zuvor erwähnten Nachteile zu überwinden. Um diese Aufgabe zu lösen, ist ein Mehrprozessor-Verarbeitungssystem vorgeschlagen, wie es in dem ersten Anspruch beschrieben ist.
  • Die vorliegende Erfindung schlägt ferner ein entsprechendes Verfahren zum Steuern einer Systemzeit in dem Verarbeitungssystem vor.
  • Weitere Charakteristika und die Vorteile des Mehrprozessor-Verarbeitungssystems gemäß der vorliegenden Erfindung werden aus der folgenden Beschreibung eines bevorzugten Ausführungsbeispiels derselben mittels eines nicht einschränkenden Beispiels mit Bezug auf die beigefügten Zeichnungen deutlich, in denen:
  • 1 ein grundlegendes Blockdiagramm eines Verarbeitungssystems ist, bei dem die vorliegende Erfindung verwendet werden kann,
  • 2 schematisch die Struktur der entfernten Brückeneinheit zeigt,
  • 3 ein Ausführungsbeispiel des Zeitgeberblocks zeigt.
  • Insbesondere mit Bezug auf 1 zeigt diese ein Verarbeitungssystem 100 vom Cache-kohärenten, nicht einheitlichen Speicherzugriffstyp (cc-NUMA-Typ; cc-NUMA = Cache-Coherent Non-Uniform Memory Access). Das Verarbeitungssystem 100 umfasst N Knoten (wobei N 2), von denen in der Zeichnung vier (als N1, N2, N3 und N4 angegeben) gezeigt sind; die Knoten N1–N4 sind miteinander mittels eines entfernten Kommunikationskanalrings (REM LINK) 105 verbunden. Der entfernte Ring 105 ist durch N unidirektionale Punkt-zu-Punkt-Kommunikationskanäle RL1, RL2, RL3 und RL4 gebildet, die jeweils zwei benachbarte Knoten verbinden; insbesondere ermöglicht der Kanal RLi (wobei i = 1..4), dass Nachrichten von dem Knoten Ni zu dem nächsten Knoten N(i + 1) gesendet werden (der Kanal RL4 ermöglicht, dass Nachrichten von dem Knoten N4 zu dem nächsten Knoten N1 gesendet werden). Alternativ sind zwei oder mehr Ringe, ein Netz (Mesh-Router bzw. Maschen-Router) oder eine andere äquivalente entfernte Kommunikationseinrichtung vorgesehen.
  • Der Knoten N1 (ähnliche Betrachtungen gelten für die anderen Knoten N2–N4) ist durch einen Systembus (SYS BUS) 110 gebildet, mit dem einer oder mehrere Prozessoren (μP) C1, C2, C3, C4 (bei dem dargestellten Ausführungsbeispiel vier) parallel geschaltet sind, die typischerweise interne Zwei pegel-Speicher vom Cachetyp (in der Zeichnung nicht gezeigt) aufweisen. Eine lokale Brücke (LOC BDG = Local Bridge) 115 ist ebenfalls mit dem Systembus 110 verbunden und steuert eine Verbindung mit einem lokalen Bus (in der Zeichnung nicht gezeigt), mit dem eine Gruppe (Cluster) von Eingabe/Ausgabe-Einheiten gekoppelt ist. Der Knoten N1 umfasst einen lokalen Speicher (LOC MEM = Local Memory) 120, typischerweise einen dynamischen Direktzugriffsspeicher (DRAM = Dynamic Random Access Memory), der mit dem Systembus 110 mittels einer geeigneten Steuereinheit (nicht in der Zeichnung gezeigt) verbunden ist. Eine entfernte Brücke (REM BDG = Remote Bridge) 125 verbindet den Systembus 110 mit dem entfernten Ring 105 und steuert die Verbindung des Knotens N1 mit den anderen Knoten N2–N4 des Verarbeitungssystems 100. Eine Entscheidungseinheit (ARB = Arbitration Unit) 130 steuert einen sich gegenseitig ausschließenden Zugriff auf den Systembus 110 durch die verbundenen Agenten C1–C4, 115, 120 und 125.
  • Eine Zeitgebereinheit (TEMP) 135, die typischerweise durch einen Quarzoszillator gebildet ist, erzeugt ein Taktsignal CLK1, das zu den Prozessoren C1–C4, zu der lokalen Brücke 115, zu dem lokalen Speicher 120, zu der entfernten Brücke 125 und zu der Entscheidungseinheit 130 geliefert wird, um die Operation des Knotens N1 zu synchronisieren. Jeder Knoten Ni umfasst eine entsprechende Zeitgebereinheit, die in unabhängiges Taktsignal CLKi erzeugt. Gemäß der Erfindung weisen die Taktsignale CLKi der verschiedenen Knoten unterschiedliche Frequenzen auf.
  • Bei dem oben beschriebenen Verarbeitungssystem 100 kann jeder Prozessor C1–C4 auf sowohl die Daten, die in dem lokalen Speicher 120 enthalten sind, als auch die Daten, die in den lokalen Speichern der anderen Knoten N2–N4 enthalten sind, die kollektiv als ein entfernter Speicher bezeichnet sind, zugreifen. Natürlich ist die Zugriffszeit nicht einheitlich (daher der Name NUMA), da die Zugriffszeit auf den entfernten Speicher viel länger als die Zugriffszeit auf den lokalen Speicher ist. Dieses System stellt ferner mittels geeigneter Protokolle die Kohärenz der Daten sicher, die in den verschiedenen Cache-Speichern repliziert sind, sowohl aus dem lokalen Speicher als auch aus dem entfernten Speicher (daher der Name cc).
  • Die vorliegende Erfindung kann jedoch ferner bei Verarbeitungssystemen implementiert sein, die eine unterschiedliche lose gekoppelte Architektur aufweisen, und allgemein bei irgendeinem Mehrprozessor-Verarbeitungssystem, das eine Mehrzahl von Knoten aufweist, die jeweils eine Einrichtung zum Erzeugen eines unabhängigen Taktsignals zum Synchronisieren der Operation des Knotens aufweisen.
  • Bei dem Verarbeitungssystem gemäß der vorliegenden Erfindung ist ein Zeitwert (die Zeitbasis oder TBi genannt), der eine Systemzeit angibt, in jedem Knoten Ni gespeichert.
  • Der TBi-Wert, der in jedem Knoten Ni gespeichert ist, wird auf jedes entsprechende Taktsignal CLKi hin um einen entsprechenden Wert (die Lokalperiode oder LOCPERIODi genannt) erhöht. Der LOCPERIODi-Wert jedes Knotens Ni ist auf eine derartige Weise gesetzt, um eine virtuelle Modifikationsfrequenz der Tbi-Werte zu simulieren, wobei diese Frequenz für jeden Knoten N1–N4 des Systems im Wesentlichen gleich ist. Falls beispielweise die Knoten N1, N2, N3 und N4 Taktfrequenzen von 100 MHz, 150 MHz, 200 MHz bzw. 75 MHz aufweisen, sind die LOCPERIODi-Werte auf 6, 4, 3 bzw. 8 gesetzt. Somit wird für jedes Taktsignal CLK1 (bei 100 MHz) der Wert TB1 des Knotens N1 um 6 Einheiten erhöht (das heißt, auf eine virtuelle Frequenz von 6·100 = 600 MHz), wird für jedes Taktsignal CLK2 (bei 150 MHz) der Wert TB2 um 4 Einheiten erhöht (das heißt, auf eine virtuelle Frequenz von 4·150 = 600 MHz), wird für jedes Taktsignal CLK3 (bei 200 MHz) der Wert TB3 um 3 Einheiten erhöht (das heißt auf eine virtuelle Frequenz von 3·200 = 600 MHz) und wird für jedes Taktsignal CLK4 (bei 75 MHz) der Wert TB4 um 8 Einheiten erhöht (das heißt auf eine virtuelle Frequenz von 8·75 = 600 MHz).
  • Ein ausgewählter Knoten, der Referenzknoten (oder Master-Knoten) genannt, wird zum Synchronisieren aller TBi-Werte verwendet; der Master-Knoten ist vorzugsweise durch den Knoten (beispielsweise den Knoten N1) gebildet, dessen lokaler Speicher einen ersten Datenblock enthält, der mittels einer Adresse des Werts Null zugreifbar ist (obwohl die Verwendung eines anderen Knoten nicht ausgeschlossen ist). Insbesondere führt jeder andere Knoten N2–N4 als der Master-Knoten N1 periodisch eine Synchronisationsoperation durch, bei der der TBi-Wert in Abhängigkeit von dem Wert TB1 des Master-Knotens N1 und von einem Wert modifiziert wird, der eine Zeit angibt, die erforderlich ist, um den Wert TB1 von dem Master-Knoten N1 zu dem fraglichen Knoten zu senden. Falls der Wert TB1 beispielsweise 3500200100 beträgt und die Zeit, die erforderlich ist, um den Wert TB1 von dem Knoten N1 zu dem Knoten N2 zu senden, 1500000 beträgt, wird der Wert TB2 auf 3500200100 + 1500000 = 3501700100 gesetzt, um die Zeit zu berücksichtigen, die nach der Erfassung des Werts TB1 verstrichen ist.
  • Die TBi-Werte, die in den verschiedenen Knoten des Systems gespeichert sind, werden somit anfänglich (mittels einer ersten Synchronisationsoperation) auf einen gemeinsamen Startwert gesetzt. Die periodischen Synchronisationsoperationen ermöglichen dann, dass die TBi-Werte im Wesentlichen einander gleich gehalten werden, ungeachtet der Drift derselben mit der Zeit. Diese Drift rührt von der Tatsache her, dass es, da die Werte TBi und LOCPERIODi allgemein als ganze Zahlen ausgedrückt sind, nicht immer möglich ist, eine genau gleiche Modifikationsfrequenz der TBi-Werte der verschiedenen Knoten sicherzustellen. Selbst bei einer idealen Situation unterliegen zudem die TBi-Werte in jedem Fall einer Drift mit der Zeit, die durch die Differenz zwischen der tatsächlichen Frequenz der Taktsignale und der Nennfrequenz derselben bewirkt wird.
  • Der TBi-Wert, der in jedem Knoten gespeichert ist, kann durch die Agenten des gleichen Knotens gelesen werden. Die Sendung des TBi-Werts zu einem anfordernden Agenten (mittels des Systembusses ausgeführt) ist sehr schnell (wenige Pulse des Taktsignals), so dass der TBi-Wert, der durch den anfordernden Agenten empfangen wird, extrem genau ist.
  • Die Lösung der vorliegenden Erfindung ist besonders einfach und ermöglicht, dass ein Systemzeitgeber sehr genau gesteuert werden kann, ohne das Verarbeitungssystem als ein Ganzes zu überlasten.
  • Die Synchronisationsoperation wird vorzugsweise mit der Verwendung einer Nachricht durchgeführt, die periodisch (mit einer Frequenz, die durch eine Synchronisationsperiode SYNCPERIOD definiert ist) von dem Master-Knoten N1 zu den anderen Knoten N2–N4 gesendet wird. Insbesondere wird die Synchronisationsnachricht von dem Master-Knoten N1 zu dem nächsten Knoten N2 gesendet, dann von dem Knoten N2 zu dem nächsten Knoten N3, und so weiter, bis die Synchronisationsnachricht zurück zu dem Master-Knoten N1 kommt; dies macht das System extrem einfach und reduziert einen Verkehr an dem entfernten Ring auf das Minimum. Alternativ wird die Synchronisationsoperation periodisch (selbst mit unterschiedlichen Frequenzen) durch jeden Knoten (mittels einer Anforderung, die zu dem Master-Knoten gesendet wird) aktiviert, etc.
  • Ein Verfahren gemäß der Erfindung besteht aus einem Setzen der globalen virtuellen Frequenz auf einen vordefinierten Wert; der ausgewählte Wert ist derart, um groß genug zu sein, um sicherzustellen, dass die TBi-Werte für eine jegliche Taktsignalfrequenz innerhalb eines vorbestimmten Bereichs genau sind, und zu gleichen Zeit derart, dass die Werte LOCPERIODi und SYNCPERIOD die maximal zulässige Größe derselben nicht überschreiten. Die ausgewählte globale virtuelle Frequenz ist vorzugsweise derart, um eine exakte ganze Zahl für den LOCPERIODi-Wert des Master-Knotens zu erreichen, so dass der Fehler, der durch die Einstellung der Modifikationsfrequenz des TBi-Werts auf die globale virtuelle Frequenz bewirkt wird, bei diesem Knoten Null beträgt. Dies ermöglicht, dass neue Knoten (die eine Taktfrequenz unter dem Maximum aufweisen) zu dem System ohne den Bedarf hinzugefügt werden, die globale virtuelle Frequenz (und somit die Werte SYNCPERIOD und LOCPERIODi der anderen Knoten) zu modifizieren, was das System extrem flexibel macht.
  • Der SYNCPERIOD-Wert ist auf einen Wert gesetzt, der klein genug ist, um sicherzustellen, dass die Differenz zwischen den TBi-Werten der verschiedenen Knoten (durch die Drift der tatsächlichen Taktsignale, durch den Fehler, der durch die LOCPERIODi-Werte eingebracht wird, und durch die Ungenauigkeit des Synchronisationsprozesses bewirkt) unter einem maximal zulässigen Wert liegt. Zur gleichen Zeit sollte der SYNCPERIOD-Wert nicht zu niedrig sein, um den entfernten Ring nicht mit übermäßig häufigen Synchronisationsnachrichten zu überlasten.
  • Beispielsweise wird ein System mit Knoten betrachtet, die irgendeine Taktfrequenz aufweisen, die nicht größer als 150 MHz ist, wobei der Master-Knoten eine Taktfrequenz von 90 MHz aufweist. Die globale virtuelle Frequenz ist auf 399960 MHz (um so einen LOCPERIODi-Wert zu erreichen, der eine exakte ganze Zahl ist, das heißt 399960/90 = 4444 für den Master-Knoten) gesetzt, bei einem Zeitbasiseinheitwert, der jedem unitären Anstieg der TBi-Werte entspricht, von 1/399,960·106 = 2,500250025003·10–12 = 2,500250025003 ps.
  • Der minimale LOCPERIODi-Wert ist dieser, der der maximalen Taktfrequenz (150 MHz) entspricht, das heißt 399960/150 = 2666,4 gerundet auf die nächste ganze Zahl 2667. Der maximale Prozentsatzfehler, der durch das Aufrunden bewirkt wird, ist gleich einer Einheit relativ zu dem minimalen LOCPERIODi-Wert, das heißt 1/2667 = 0,03749531308586%. Es wird angenommen, dass die Oszillatoren, die verwendet werden, um die Taktsignale zu erzeugen, eine Genauigkeit von 50 PPM (Parts Per Million) aufweisen, das heißt 0,005%; in diesem Fall ist der Fehler, der bei dem Master-Knoten eingebracht wird, gleich 0,005% (da der Fehler, der durch den LOCPERIODi-Wert bewirkt wird, Null beträgt) und der maximale Prozentsatzfehler beträgt 0,03749531308586 + 0,005 = 0,04249531308586. Falls somit der schlimmste Fall betrachtet wird, bei dem diese Fehler ein entgegengesetztes Vorzeichen aufweisen (ein Knoten fortgeschritten und ein Knoten verlangsamt), werden die Fehler addiert, so dass der maximale gesamte Prozentsatzfehler 0,04249531308586 + 0,005 = 0,04749531308586% beträgt.
  • Es wird dann angenommen, dass die Differenz zwischen den TBi-Werten unter einem vorbestimmten Wert gehalten wird, beispielsweise 5 μs. Falls die Ungenauigkeit des Synchronisationsprozesses als 1 μs geschätzt wird, ist es, um die Differenz unter dem erwünschten Wert zu halten, notwendig, dass die Drift der TBi-Werte nicht größer als 5 – 1 = 4 μs beträgt. Der maximale gesamte Prozentsatzfehler, der oben berechnet ist, erzeugt diese Drift nach einer Zeitperiode P, die durch die Gleichung P·0,04749531308586% = 4 10–6 definiert ist, was P = 4·10–6·102/0,04749531308586 = 8,421883634642·10–3 = 8,421883634642ms ergibt. Um die Differenz unter dem erwünschten Wert zu halten, ist es deshalb notwendig, dass der Synchronisationsprozess eine Periode aufweist, die zumindest gleich dieser Zeitperiode ist, so dass der SYNCPERIOD-Wert (in den Basiseinheiten ausgedrückt) 8,421883634642·10–3/2,500250025003·10–12 = 3,368416578511·109 = 3368416578,511 beträgt; aufgerundet auf die nächste ganze Zahl SYNCPERIOD = 3368416579.
  • Unter jetziger Bezugnahme auf 2 (die bereits in 1 gezeigten Elemente sind durch die gleichen Bezugszeichen identifiziert) umfasst die entfernte Brücke 125 eines generischen Knotens Ni eine physische Schnittstelle (PITF = Physical Interface) 205 mit dem entfernten Ring 105. Die Nachrichten, die an dem entfernten Ring 105 gesendet wer den, sind in Paketen organisiert. Jedes Paket umfasst verschiedene Dienstfelder, die den Bestimmungsknoten, den Knoten, der das Paket emittierte, die Länge des Pakets, den Pakettyp, die Priorität desselben für eine Übertragung an dem entfernten Ring, etc. identifizieren, und eine Datenstruktur, die beispielsweise durch 8 Blöcke (Schläge) von 64 Bits gebildet ist; die Pakete sind gemäß dem Standard definiert, der als der SCI-Standard (SCI = Scalable Coherent Interface = skalierbare kohärente Schnittstelle) bekannt ist, der in der IEEE-Spezifikation P1596.3/051 definiert ist (obwohl die Verwendung von Nachrichten unterschiedlicher Typen nicht ausgeschlossen ist).
  • Die physische Schnittstelle 205 empfängt die Pakete, die an dem Kanal RL(i – 1) von dem vorhergehenden Knoten N(i – 1) gesendet werden, und bestimmt den entsprechenden Bestimmungsknoten. Falls der Bestimmungsknoten ein anderer als der Knoten Ni ist, sendet die physische Schnittstelle das empfangene Paket zu dem nächsten Knoten N(i + 1) an dem Kanal RL(i + 1). Andernfalls werden die Datenstruktur und die Daten, die den Pakettyp identifizieren, zu einer logischen Schnittstelle (LITF = Logic Interface) 210 geliefert, die den Pakettyp bestimmt und die zugeordneten Operationen durchführt. Umgekehrt baut die logische Schnittstelle 210 ein Paket für eine Übertragung an dem entfernten Ring 105 auf und liefert dasselbe zu der physischen Schnittstelle 205, die dasselbe zu dem nächsten Knoten N(i + 1) an dem Kanal RL(i + 1) sendet.
  • Die logische Schnittstelle 210 umfasst einen entfernten Schnittstellenblock (REM ITF = Remote Interface) 215, der mit der physischen Schnittstelle 205 verbunden ist, und einen lokalen Schnittstellenblock (LOC ITF = Local Interface) 220, der mit dem Systembus 110 verbunden ist. Zwischen den entfernten Schnittstellenblock 215 und den lokalen Schnittstellenblock 210 sind ein Logikblock 225, der die Operation der entfernten Brückeneinheit 125 steuert (zum Beispiel die Kohärenzprotokolle der Cache-Speicher), und ein Zeigeberblock 230 eingefügt, der die Aktualisierung und die Synchronisation des TBi-Werts steuert. Die Tatsache, dass der Zeitgeberblock im Inneren der entfernten Brückeneinheit angeordnet ist, ist besonders vorteilhaft, da dasselbe ermöglicht, dass die TBi-Werte der verschiedenen Knoten miteinander extrem schnell synchronisiert werden können, ohne den Transfer von Daten innerhalb des Knotens selbst (das heißt an dem Systembus) zu erfordern; die vorliegende Erfindung kann jedoch auch implementiert sein, wobei der Zeitgeberblock bei einer unterschiedlichen Position angeordnet ist, beispielsweise in der Verhandlungseinheit, in einem Prozessor des Knotens oder dergleichen.
  • Der entfernte Schnittstellenblock 215 decodiert den Typ eines Pakets, das von dem entfernten Ring 105 (mittels der physischen Schnittstelle 205) empfangen wird; falls dasselbe ein Synchronisationspaket ist, wird die entsprechende Datenstruktur zu dem Zeitgeberblock 230 geliefert, wohingegen die Datenstruktur zu dem logischen Block 225 geliefert wird, falls nicht. Umgekehrt empfängt die entfernte Schnittstelle 215 ein Synchronisationspaket von dem Zeitgeberblock 230 oder ein Paket irgendeines anderen Typs von dem logischen Block 225 und diese werden dann zu der physischen Schnittstelle 205 gesendet; eine hohe Priorität für eine Übertragung an dem entfernten Ring ist vorzugsweise den Synchronisationspaketen zugeordnet, um so die Genauigkeit des Synchronisationsprozesses zu erhöhen.
  • Der lokale Schnittstellenblock 220 steuert ein Protokoll für einen Zugriff auf den Systembus 110. Insbesondere empfängt die lokale Schnittstelle 220 von dem Systembus 110 alle der Daten, die an demselben gesendet werden; in dem Fall einer Anweisung, die eine Initialisierung des TBi-Werts (der beispielsweise durch einen Prozessor des Knotens emittiert wird) erfordert, werden die entsprechenden Daten zu dem Zeitgeberblock 230 geliefert, wohingegen andernfalls die Daten, die von dem Systembus empfangen werden, zu dem logischen Block 225 geliefert werden. Umgekehrt steuert die lokale Schnittstelle 220 Anforderungen nach einem Zugriff auf den Systembus 110, um an demselben Daten zu senden, die von dem logischen Block 225 empfangen werden, oder den Systemzeitwert, der von dem Zeitgeberblock 230 empfangen wird, ansprechend auf eine entsprechende Leseanweisung (die durch irgendeinen Agenten des Knotens emittiert wird).
  • Unter jetziger Bezugnahme auf 3 umfasst der Zeitgeberblock 230 einen entfernten Eingangszwischenspeicherblock (REM IN) 303 und einen entfernten Ausgangszwischenspeicherblock (REM OUT) 306, die die Datenstruktur des Synchronisationspakets (SYNC DATA) von dem entfernten Schnittstellenblock empfangen bzw. dieselbe zu dem entfernten Schnittstellenblock senden.
  • Bei einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung umfasst die Datenstruktur des Synchronisationspakets ein Anfangsfeld (START) von beispielsweise 64 Bits, ein Endfeld (END) von beispielsweise 64 Bits und ein Inkrementfeld (INC) von beispielsweise 32 Bits. Bei dem fraglichen Ausführungsbeispiel, bei dem das Synchronisationspaket durch 8 Schläge von 64 Bits gebildet ist, wird der erste Schlag für das START-Feld verwendet, der zweite Schlag für das END-Feld und ein Teil des dritten Schlags für das INC-Feld, wobei der vierte bis achte Schlag nicht verwendet werden.
  • Der Zwischenspeicherblock 303 empfängt die Datenstruktur eines Synchronisationspakets als einen Eingang und erzeugt die Werte der Felder START, END und INC an den Ausgängen 303a, 303b bzw. 303c desselben; umgekehrt empfängt der Zwischenspeicherblock 306 die Werte der Felder START, END und INC an den Eingängen 306a, 306b und 306c desselben und erzeugt die entsprechende Datenstruktur eines Synchronisationspakets an dem Ausgang desselben. Bei dem Zwischenspeicherblock 306 gibt es ferner ein Register 307 (beispielsweise von 16 Bits), das einen NEXTNODE-Wert (NÄCHSTER-KNOTEN-Wert) speichert, der den Knoten angibt, zu dem das Synchronisationspaket gesendet werden sollte; dieser Knoten ist vorzugsweise gesetzt, um der unmittelbar folgende Knoten zu sein (das heißt der Knoten, der physisch am nächsten an dem fraglichen Knoten ist).
  • Ein lokaler Zwischenspeicherblock (LOC IN) 309 empfängt (von dem lokalen Schnittstellenblock) einen Initialisierungswert (INI) für den TBi-Wert (als eine Folge einer entsprechenden Anweisung) und gibt den gleichen Wert aus. Ein lokaler Ausgangszwischenspeicherblock (LOC OUT) 312 gibt eine Systemzeit gleich dem Zeitwert TBi ansprechend auf eine entsprechende Leseanforderung aus.
  • Der Zeitsteuerungsblock 230 umfasst ferner ein Register 315 (beispielsweise mit 64 Bits), das den TBi-Wert speichert, und ein Register 318 (beispielsweise mit 16 Bits), das den LOCPERIODi-Wert speichert. Der Ausgang des Registers 315 und der Ausgang des Registers 318 sind mit dem Eingang einer Addiererschaltung (ADD) 321 verbunden. Der Ausgang des Registers 315 und der Ausgang des Addierers 321 sind mit getrennten Eingängen eines Multiplexers 324 verbunden, der den Wert, der an lediglich einem dieser Eingänge anliegt, abhängig von einem geeigneten Auswahlsignal zu dem eigenen Ausgang desselben überträgt. Ein Addierer 325 weist einen Eingang auf, der mit dem Ausgang des Registers 315 verbunden ist, und einen anderen Eingang, der bei einem vorbestimmten Wert gehalten wird, vorzugsweise +1. Ein weiterer Multiplexer 327 weist getrennte Eingänge auf, die mit dem Ausgang des Multiplexers 324, mit dem Ausgang 303a, mit dem Ausgang des Addierers 325 und mit dem Ausgang des Zwischenspeicherblocks 309 verbunden sind. Der Ausgang des Multiplexers 327 ist mit dem Eingang des Registers 315 verbunden. Der Ausgang des Registers 315 ist ferner mit dem Eingang des Zwischenspeicherblocks 312 verbunden.
  • Ein Register 336 (beispielsweise mit 32 Bits) wird verwendet, um einen Inkrementwert (INC) zu speichern, der eine Zeit angibt, die erforderlich ist, um das Synchronisations paket von einem generischen Knoten Ni zu einem nachfolgenden Knoten N(i + 1) zu senden. Eine Komparatorschaltung 339 weist getrennte Eingänge auf, die mit dem Ausgang des Registers 315 und mit dem Ausgang 303a verbunden sind. Der Ausgang des Komparators 339 und der Ausgang des Registers 336 sind mit dem Eingang eines Addierers 342 verbunden, dessen Ausgang mit dem Eingang des Registers 336 verbunden ist.
  • Der Ausgang des Registers 315 und der Ausgang des Registers 336 sind mit dem Eingang eines Addierers 345 verbunden. Ein weiterer Addierer 348 weist einen Eingang, der mit dem Ausgang 303a verbunden ist, und einen anderen Eingang auf, der mit dem Ausgang 303c verbunden ist. Der Ausgang des Addierers 345 und der Ausgang des Addierers 348 sind mit getrennten Eingängen eines Multiplexers 351 verbunden, dessen Ausgang mit dem Eingang 306a verbunden ist.
  • Ein Register 354 (zum Beispiel mit 32 Bits) wird verwendet, um den SYNCPERIOD-Wert zu speichern. Der Ausgang des Registers 315 und der Ausgang des Registers 354 sind mit dem Eingang eines Addierers 357 verbunden. Ein weiterer Addierer 360 weist einen Eingang, der mit dem Ausgang 303b verbunden ist, und einen anderen Eingang auf, der mit dem Ausgang 303c verbunden ist. Ein Multiplexer 363 weist getrennte Eingänge auf, die mit dem Ausgang des Addierers 357 und mit dem Ausgang des Addierers 360 verbunden sind; der Ausgang des Multiplexers 363 ist mit dem Eingang 306b verbunden.
  • Ein Multiplexer 364 weist getrennte Eingänge auf, die mit dem Ausgang 303c und mit dem Ausgang des Registers 336 verbunden sind; der Multiplexer 364 überträgt den Wert, der an lediglich einem dieser Eingänge anliegt, selektiv zu dem Ausgang desselben, der mit dem Eingang 306c verbunden ist.
  • Der Ausgang des Addierers 357 und der Ausgang 303b sind mit getrennten Eingängen eines Multiplexers 366 verbunden; der Ausgang des Multiplexers 366 ist mit dem Eingang eines Registers 369 (zum Beispiel mit 64 Bits) verbunden, das verwendet wird, um einen Endzählwert (END) zu speichern. Der Ausgang des Addierers 321 und der Ausgang des Registers 369 sind mit dem Eingang eines Komparators 372 verbunden.
  • Ein Flag 378 wird ferner verwendet, um anzugeben (zum Beispiel wenn dasselbe eingeschaltet ist), dass der Knoten ein Master-Knoten ist.
  • Der Betrieb des Zeitgeberblocks 230 ist mittels geeigneter Steuersignale (als ein Ganzes mit Sc angegeben) durch eine Steuerlogikeinheit (CTRL = Control Logic Unit) 381 gesteuert, die im Grunde durch eine Finit-Zustand-Maschine gebildet ist. Der Ausgang des Komparators 372 und der Ausgang des Flags 378 sind mit dem Eingang der Logiksteuereinheit 381 verbunden, die ferner als eine Eingabe ein Signal REM.STROBE, das (wenn dasselbe eingeschaltet ist) angibt, dass die Datenstruktur eines Synchronisationspakets an dem Eingang des Zwischenspeicherblocks 303 verfügbar ist, ein Signal LOC.STROBE, das (wenn dasselbe eingeschaltet ist) angibt, dass ein Initialisierungswert an dem Eingang des Zwischenspeicherblocks 309 verfügbar ist, und ein Signal READ (LESEN) empfängt, das (wenn dasselbe eingeschaltet ist) angibt, dass die Systemzeit durch eine Leseanweisung angefordert wurde.
  • Normalerweise befindet sich die Steuerlogikeinheit in einem Zustand, in dem auf jedes Taktsignal CLKi hin das Signal, das durch den Addierer 321 ausgegeben wird, mittels der Multiplexer 324 und 327 zu dem Eingang des Registers 315 übertragen wird; der TBi-Wert wird somit auf jedes Taktsignal CLKi hin um den LOCPERIODi-Wert erhöht.
  • Falls der Knoten kein Master-Knoten ist (Flag 378 aus), wird, wenn der TBi-Wert den Endzählwert erreicht (oder überschreitet), der in dem Register 369 gespeichert ist (Signal, das durch den Komparator 372 ausgegeben wird, ein), die Steuerlogikeinheit 381 in einen Zustand versetzt, in dem das Signal, das durch das Register 315 ausgegeben wird, auf jedes Taktsignal CLKi hin zu dem Eingang des gleichen Registers 315 mittels der Multiplexer 324 und 327 zurückgegeben wird, um den TBi-Wert fest zu halten.
  • Falls jedoch der Knoten ein Master-Knoten ist (Flag 378 ein), wird die Erhöhung des TBi-Werts niemals unterbrochen. Wenn der TBi-Wert den Endzählwert erreicht (oder überschreitet), der in dem Register 369 gespeichert ist (Ausgangssignal des Komparators 372 ein), steuert die Steuerlogikeinheit 382 die Struktur auf eine Weise, derart, dass das Signal, das durch den Addierer 345 ausgegeben wird (das heißt die Summe des TBi-Werts und des Inkrementwerts), mittels des Multiplexers 351 zu dem Eingang 306a übertragen wird (START-Feldwert), das Signal, das durch den Addierer 357 ausgegeben wird (das heißt die Summe des TBi-Werts und des SYNCPERIOD-Werts), mittels des Multiplexers 363 zu dem Eingang 306b übertragen wird (END-Feldwert) und der Inkrementwert, der in dem Register 363 gespeichert ist, mittels des Multiplexers 364 zu dem Eingang 306c übertragen wird (INC-Feldwert). Zu der gleichen Zeit wird das gleiche Signal, das durch den Addierer 357 ausgegeben wird (das heißt die Summe des TBi-Werts und des SYNCPERIOD-Werts) ebenfalls durch den Multiplexer 366 zu dem Register 369 übertragen (um den Endzählwert zu aktualisieren). Die Steuerlogikeinheit 381 aktiviert dann den Zwischenspeicherblock 306, um ein Synchronisationspaket aufzubauen, das diese Werte (und den NEXTNODE-Wert) enthält und das zu dem nächsten Knoten an dem entfernten Ring gesendet wird.
  • Wenn ein Nicht-Master-Knoten ein Synchronisationspaket empfängt (REM.STROBE-Signal ein), aktiviert die Steuerlogikeinheit 381 den Zwischenspeicherblock 303, um die Werte der entsprechenden Felder START, END und INC an den Ausgängen 303a, 303b bzw. 303c zu erhalten. Das empfangene Synchronisationspaket wird geeignet modifiziert, um zu dem nächsten Knoten gesendet zu werden. Insbesondere wird das Signal, das durch den Addierer 348 ausgegeben wird (das heißt die Summe des START-Feldwerts und des INC-Feldwerts), mittels des Multiplexers 351 zu dem Eingang 306a übertragen (neuer START-Feldwert), wird das Signal, das durch den Addierer 360 ausgegeben wird (das heißt die Summe des END-Feld- und des INC-Feldwerts), mittels des Multiplexers 363 zu dem Eingang 306b übertragen (neuer END-Feldwert) und wird das Signal an dem Ausgang 303c (INC-Feldwert) mittels des Multiplexers 364 direkt zu dem Eingang 306c übertragen (neuer INC-Feldwert). Die Steuerlogikeinheit 381 aktiviert dann den Zwischenspeicherblock 306, um ein neues Synchronisationspaket aufzubauen, das diese Werte (und den NEXTNODE-Wert) enthält und das zu dem nächsten Knoten an dem entfernten Ring gesendet wird.
  • Zu der gleichen Zeit wird das Signal an dem Ausgang 303a (der START-Feldwert) mittels des Multiplexers 327 zu dem Register 315 übertragen (um den TBi-Wert zu aktualisieren) und wird das Signal an dem Ausgang 303b (END-Feldwert) mittels des Multiplexers 366 zu dem Register 369 übertragen (um den Endzählwert zu aktualisieren). Die Steuerlogikeinheit 381 kehrt dann zu dem normalen Betriebszustand zurück, so dass der TBi-Wert auf jedes Taktsignal hin um den LOCPE-RIODi-Wert erhöht wird.
  • Es ist zu beachten, dass die Endzählwerte, die in dem Master-Knoten und in dem unmittelbar nachfolgenden Knoten gespeichert sind, gleich sind. Der START-Feldwert, der in das Register 315 des nächsten Knotens geladen ist (gleich dem Endzählwert TBi des Master-Knotens plus dem Inkrementwert), wird deshalb immer größer sein als der TBi-Wert des gleichen Knotens (der fest bei dem Endzählwert gehalten wird). Ähnliche Betrachtungen gelten für die anderen Knoten, bei denen der Endzählwert und der START-Feldwert beide um den INC-Feldwert erhöht werden.
  • Diese Lösung stellt sicher, dass die Zeit, die durch den TBi-Wert gemessen wird, sich immer (monoton) erhöht; dieses Ergebnis wird extrem einfach und wirksam erreicht. Es ist ferner zu beachten, dass der Fehler, der durch den oben beschriebenen Mechanismus eingebracht wird (wenn der TBi-Wert fest gehalten wird), lediglich während der Synchronisationsoperation und somit innerhalb einer Zeitperiode begrenzter Dauer auftritt. Alternativ sind äquivalente Strukturen zum Unterbrechen der Erhöhung des TBi-Werts im Wesentlichen vor jeder Synchronisationsoperation vorgesehen, um den TBi-Wert fest bei einem Wert zu halten, der nicht größer als der Wert ist, der durch die Synchronisationsoperation gesetzt ist; die vorliegende Erfindung kann jedoch auch ohne diese Charakteristik beispielsweise durch die Softwaresteuerung irgendeines Dekrements der Systemzeit oder dergleichen implementiert sein.
  • Wenn das Synchronisationspaket von dem Master-Knoten empfangen wird, nachdem sich dasselbe um den gesamten entfernten Ring herum bewegt hat (REM.STROBE-Signal ein), aktiviert die Steuerlogikeinheit 381 den Zwischenspeicherblock 303, um den START-Feldwert der entsprechenden Datenstruktur an dem Ausgang 303a zu erhalten. Dieser Wert, der anfänglich auf den TBi-Wert des Master-Knotens plus dem Inkrementwert (INC) gesetzt ist und durch die Addition des INC-Feldwerts von jedem anderen Knoten modifiziert ist, ist deshalb gleich dem anfänglichen TBi-Wert plus N·INC. Falls die tatsächliche Zeit, die benötigt wird, um das Synchronisationspaket an jedem Kanal RLi zu senden, genau gleich dem Inkrementwert ist, ist der empfangene START-Feldwert gleich dem aktuellen TBi-Wert; falls jedoch die tatsächliche Sendezeit geringer als der Inkrementwert ist, ist der empfangene START-Feldwert größer als der aktuelle TBi-Wert, wohingegen, falls die tatsächliche Sendezeit größer als der Inkrementwert ist, der empfangene START-Feldwert geringer als der aktuelle TBi-Wert ist.
  • Der empfangene START-Feldwert wird mittels des Komparators 339 mit dem TBi-Wert verglichen, der in dem Register 315 gespeichert ist. Der Komparator 339 gibt ein Signal, das einen positiven Wert (zum Beispiel +1) aufweist, aus, wenn der START-Feldwert geringer als der TBi-Wert ist, einen Wert von Null, wenn der START-Feldwert gleich dem TBi-Wert ist, und einen negativen Wert (zum Beispiel –1), wenn der START-Feldwert größer als der TBi-Wert ist. Der Inkrementwert, der in dem Register 336 gespeichert ist, wird dann folglich durch die Addiererschaltung 342 modifiziert.
  • Die oben beschriebene Lösung ermöglicht, dass der Inkrementwert extrem einfach und genau in Abhängigkeit von dem tatsächlichen Verkehr an dem entfernten Ring dynamisch aktualisiert wird; dieses Ergebnis wird mit der Verwendung des gleichen Synchronisationspakets erreicht, ohne den entfernten Ring durch die Sendung irgendeines zusätzlichen Pakets zu überlasten. Alternativ aktualisiert jeder Knoten den eigenen Inkrementwert desselben (der die Zeit angibt, die benötigt wird, um das Synchronisationspaket zu dem nächsten Knoten zu senden) oder geeignete Pakete werden verwendet, um die Sendezeit zu bestimmen, oder der Inkrementwert wird auf einen vorbestimmten Wert gesetzt, etc.
  • Auf eine Initialisierung des Systems hin wird der entsprechende LOCPERIODi-Wert in das Register 318 jedes Knotens geladen und das Register 315 (TBi-Wert) und das Register 369 (Endzählwert) werden auf den gleichen Startwert gesetzt, beispielsweise Null. Der Master-Knoten wird durch Einschalten des entsprechenden Flags 378 gesetzt; zu der gleichen Zeit wird der SYNCPERIOD-Wert in das Register 354 geladen und das Register 336 (Inkrementwert) wird auf einen Startwert gesetzt, beispielsweise Null (diese Werte sind in den anderen Knoten nicht von Bedeutung).
  • Sobald die Zeitgeberblöcke 230 freigegeben sind, sind somit die TBi-Werte aller der Knoten unmittelbar gleich den Endzählwerten, die in den Registern 369 gespeichert sind (Ausgangssignal von dem Komparator 372 ein). Der TBi-Wert jedes Nicht-Master-Knotens wird deshalb fest bei dem gleichen Anfangswert gehalten. Zu der gleichen Zeit sendet der Master-Knoten ein erstes Synchronisationspaket an dem enternten Ring. Wenn ein Nicht-Master-Knoten dieses Synchronisationspaket empfängt, aktualisiert derselbe den TBi-Wert und den Endzählwert und aktiviert dann das Inkrement des TBi-Werts (wie es oben detailliert beschrieben ist). Es ist zu beachten, dass auch in diesem Fall der START-Feldwert, der in das Register 315 geladen ist (gleich dem Start-TBi-Wert des Master-Knotens plus dem Inkrementwert), immer größer als oder zumindest gleich dem TBi-Wert des fraglichen Knotens ist (der fest bei dem Startwert gehalten ist).
  • Der TBi-Wert (der in dem Master-Knoten gespeichert ist) kann auch mittels einer entsprechenden Anweisung auf einen Initialisierungswert programmiert sein. Wenn der Initialisierungswert an dem Eingang des Zwischenspeicherblocks 309 verfügbar ist (LOC.STROBE-Signal ein), aktiviert die Steuerlogik 381 den Zwischenspeicherblock 309, so dass das Eingangssignal des Blocks 309 zu dem Ausgang desselben und dann mittels des Multiplexers 327 zu dem Register 315 übertragen wird; der somit aktualisierte TBi-Wert wird dann zu den anderen Knoten des Systems mit dem ersten Synchronisationspaket gesendet, wie es oben beschrieben ist.
  • Wenn ein Agent des Knotens mittels einer entsprechenden Anweisung (READ-Signal ein) anfordert, dass die Systemzeit gelesen wird, überträgt, falls der TBi-Wert nicht fest ist (Master-Knoten oder Nicht-Master-Knoten mit TBi-Wert unter Endzählwert), die Steuerlogikeinheit 381 die Inhalte des Registers 315 (TBi-Wert) zu dem Eingang des Zwischenspeicherblocks 312. Falls der TBi-Wert fest ist (Nicht-Master-Knoten mit TBi-Wert, der den Endzählwert erreicht oder überschritten hat), wird das Signal, das durch den Addierer 325 ausgegeben wird, mittels des Multiplexers 327 zu dem Eingang des Registers 315 übertragen, so dass der TBi-Wert um 1 erhöht wird; die Steuerlogikeinheit 381 überträgt dann die Inhalte des Registers 315 (erhöhter TBi-Wert) zu dem Eingang des Zwischenspeicherblocks 312. Das Signal, das zu dem Zwischenspeicherblock 312 eingegeben wird, wird dann zu dem Ausgang desselben übertragen, um zu dem anfordernden Agenten geliefert zu werden.
  • Die Systemzeit, die durch den Zwischenspeicherblock 312 ausgegeben wird, wenn der TBi-Wert fest ist, wird somit auf jede Leseanforderung hin um 1 erhöht. Dies ermöglicht, dass die Systemzeit niemals angehalten wird (streng monoton); zudem verhindert das unitäre Inkrement das Risiko, dass der TBi-Wert nachfolgend (nach einer Synchronisationsoperation) geringer als der Wert ist, der in einem vorhergehenden Moment ausgegeben wird. Alternativ wird der TBi-Wert um einen unterschiedlichen Wert (allgemein um wenige Einheiten, um das Risiko eines Aufweisens einer Systemzeit zu vermeiden, die sich nicht erhöht) erhöht oder ein Lesen der Systemzeit wird verhindert, wenn der TBi-Wert fest ist, etc.; die vorliegende Erfindung kann jedoch auch mit der Ausgabe einer Systemzeit implementiert sein, die immer gleich dem TBi-Wert ist.
  • Um möglichen und spezifischen Anforderungen zu genügen, kann ein Fachmann auf dem Gebiet natürlich auf das oben beschriebene Mehrprozessor-Verarbeitungssystem viele Modifikationen und Variationen anwenden, von denen jedoch alle innerhalb des Schutzbereichs der Erfindung eingeschlossen sind, wie es durch die folgenden Ansprüche definiert ist.

Claims (11)

  1. Ein Mehrprozessor-Verarbeitungssystem (100), das eine Mehrzahl von Knoten (N1–N4) aufweist, die jeweils eine Einrichtung (135) zum Erzeugen eines unabhängigen Taktsignals (CLKi) zum Synchronisieren der Operation des Knotens (Ni) aufweisen, wobei jeder Knoten (Ni) eine Einrichtung (315), die einen Zeitwert (TBi) speichert, der eine Systemzeit angibt, und eine Einrichtung (318, 321, 324, 327) zum Erhöhen des Zeitwerts (TBi) um einen Lokalperiodenwert (LOCPERIODi) auf jedes Taktsignal (CLKi) hin, um eine im Wesentlichen gleiche Modifikationsfrequenz des Zeitwerts (TBi) für alle Knoten (N1–N4) zu simulieren, aufweist, wobei einer der Knoten ein Referenzknoten (N1) ist, wobei jeder andere Knoten (N2–N4) eine Einrichtung (303a, 327) zum periodischen Durchführen einer Synchronisationsoperation aufweist, bei der der Zeitwert (TBi) in Abhängigkeit von dem Zeitwert (TB1) des Referenzknotens (N1) und von einem Wert (INC), der eine Zeit angibt, die erforderlich ist, um den Zeitwert (TB1) des Referenzknotens (N1) von dem Referenzknoten (N1) zu dem anderen Knoten (N2–N4) zu senden, modifiziert wird, dadurch gekennzeichnet, dass die Taktsignale (CLKi) der Knoten unterschiedliche Frequenzen aufweisen und: die simulierte Modifikationsfrequenz auf einen vorbestimmten Wert gesetzt ist, der ein Vielfaches der Frequenz des Taktsignals (CLK1) des Referenzknotens (N1) ist, und der Lokalperiodenwert (LOCPERIODi) jedes Knotens (Ni) gleich der simulierten Modifikationsfrequenz geteilt durch die Frequenz des entsprechenden Taktsignals (CLKi) ist.
  2. Ein Verarbeitungssystem (100) gemäß Anspruch 1, bei dem der Referenzknoten (N1) eine Einrichtung (306, 369, 372) zum periodischen Senden einer Synchronisationsnachricht (SYNC DATA) zu den anderen Knoten umfasst, wobei jeder andere Knoten (N2–N4) die Synchronisationsnachricht (SYNC DATA) verwendet, um die Synchronisationsoperation durchzuführen.
  3. Ein Verarbeitungssystem (100) gemäß Anspruch 2, bei dem die Synchronisationsnachricht (SYNC DATA) ein Anfangsfeld (START) und ein Inkrementfeld (INC) umfasst, wobei der Referenzknoten (N1) eine Einrichtung (336), die einen Inkrementwert speichert, der eine Zeit angibt, die erforderlich ist, um die Synchronisationsnachricht (SYNC DATA) zwischen zwei aufeinanderfolgenden Knoten (Ni, Ni + 1) zu senden, eine Einrichtung (345, 351) zum Setzen des Anfangsfelds (START) der Synchronisationsnachricht gleich dem Zeitwert (TBi) plus dem Inkrementwert und eine Einrichtung (364) zum Setzen des Inkrementfelds (INC) der Synchronisationsnachricht gleich dem Inkrementwert aufweist.
  4. Ein Verarbeitungssystem (100) gemäß Anspruch 3, bei dem der Referenzknoten (N1) eine Einrichtung (306) zum Senden der Synchronisationsnachricht (SYNC DATA) zu einem nachfolgenden Knoten (N2) umfasst, wobei jeder andere Knoten (Ni) eine Einrichtung (303) zum Empfangen der Synchronisationsnachricht von einem vorhergehenden Knoten (Ni – 1), eine Einrichtung (303a, 327) zum Setzen des Zeitwerts (TBi) gleich dem Anfangsfeld (START) der empfangenen Synchronisationsnachricht, eine Einrichtung (303a, 348, 351) zum Modifizieren der empfangenen Synchronisationsnachricht (SYNC DATA) durch ein Hinzufügen des Inkrementfelds (INC) zu dem Anfangsfeld (START) und eine Einrichtung (306) zum Senden der modifizierten Synchronisationsnachricht (SYNC DATA) zu einem nachfolgenden Knoten (Ni + 1) aufweist.
  5. Ein Verarbeitungssystem (100) gemäß einem der Ansprüche 1 bis 4, bei dem jeder andere Knoten (N2–N4) eine Einrichtung (324, 327, 369, 372) zum Unterbrechen der Erhöhung des Zeitwerts (TBi) im Wesentlichen vor jeder Synchronisationsoperation aufweist, um den Zeitwert (TBi) bei einem Wert fest zu halten, der nicht größer ist als der durch die Synchronisationsoperation modifizierte Wert.
  6. Ein Verarbeitungssystem (100) gemäß Anspruch 5, bei dem die Synchronisationsnachricht ferner ein Endfeld (END) umfasst, wobei der Referenzknoten (N1) eine Einrichtung (354, 357, 363) zum Setzen des Endfelds (END) der Synchronisationsnachricht gleich dem Zeitwert (TBi) plus einem Wert (SYNCPERIOD) aufweist, der eine Periode der Synchronisationsoperation angibt, wobei jeder andere Knoten (Ni) eine Einrichtung (369), die einen Endzählwert speichert, eine Einrichtung (324, 327, 369, 372) zum Unterbrechen der Erhöhung des Zeitwerts (TBi), wenn der Zeitwert (TBi) den Endzählwert erreicht, eine Einrichtung (303b, 366) zum Setzen des Endzählwerts gleich dem Endfeld (START) der empfangenen Synchronisationsnachricht und eine Einrichtung (303b, 360, 363) zum Modifizieren der Synchronisationsnachricht (SYNC DATA) durch ein Hinzufügen des Inkrementfelds (INC) zu dem Endfeld (END) aufweist.
  7. Ein Verarbeitungssystem (100) gemäß Anspruch 5 oder Anspruch 6, bei dem jeder Knoten (N1–N4) eine Mehrzahl von Einheiten (C1–C4, 115, 120, 125, 130) aufweist, wobei eine der Einheiten geeignet ist, um Leseanforderungen des Zeitwerts zu liefern, und der ent sprechende Knoten eine Einrichtung (325, 327) zum Erhöhen des Zeitwerts (TBi) um einen vorbestimmten Wert (+1) auf jede entsprechende Leseanforderung hin, wenn der Zeitwert (TBi) fest ist, aufweist.
  8. Ein Verarbeitungssystem (100) gemäß einem der Ansprüche 3 bis 7, bei dem der Referenzknoten (N1) eine Einrichtung (303) zum Empfangen der Synchronisationsnachricht (SYNC DATA) von dem vorhergehenden Knoten (N4), eine Einrichtung (339) zum Vergleichen des Anfangsfelds (START) der empfangenen Synchronisationsnachricht mit dem Zeitwert (TBi) und eine Einrichtung (342) zum Modifizieren des Inkrementwerts in Abhängigkeit von einem Ergebnis des Vergleichs umfasst.
  9. Ein Verarbeitungssystem (100) gemäß einem der Ansprüche 1 bis 8, bei dem die Knoten (N1–N4) miteinander durch eine Fernkommunikationseinrichtung (105) verbunden sind, wobei eine der Einheiten (C1–C4, 115, 120, 125, 130) eine Brückeneinheit (125) zum Verbinden des Knotens (Ni) mit der Fernkommunikationseinrichtung (105) ist, wobei die Einrichtung (315), die den Zeitwert (TBi) speichert, und die Einrichtung (303a, 327) zum Durchführen der Synchronisationsoperation in der Brückeneinheit (125) angeordnet sind.
  10. Ein Verarbeitungssystem (100) gemäß einem der Ansprüche 1 bis 9, wobei das Verarbeitungssystem (100) ein System vom Cache-kohärenten, nichteinheitlichen Speicherzugriffstyp ist.
  11. Ein Verfahren zum Steuern einer Systemzeit in einem Mehrprozessor-Verarbeitungssystem (100), das eine Mehrzahl von Knoten (N1–N4) aufweist, die jeweils eine Einrichtung (135) zum Erzeugen eines unabhängigen Taktsignals (CLKi) zum Synchronisieren der Operation des Knotens (Ni) aufweisen, mit folgenden Schritten: a) Erhöhen eines Zeitwerts (TBi), der eine Systemzeit angibt, bei jedem Knoten (Ni) auf jedes Taktsignal (CLKi) hin um einen Lokalperiodenwert (LOCPERIODi), um eine im Wesentlichen gleiche Modifikationsfrequenz des Zeitwerts (TBi) für alle Knoten (N1–N4) zu simulieren, b) periodisches Durchführen einer Synchronisationsoperation in jedem anderen Knoten (N2–N4) als einem Referenzknoten (N1), bei der der Zeitwert (TBi) in Abhängigkeit von dem Zeitwert (TB1) des Referenzknotens (N1) und von einem Wert (INC) modifiziert wird, der eine Zeit angibt, die erforderlich ist, um den Zeitwert (TB1) des Referenzknotens (N1) von dem Referenzknoten (N1) zu dem anderen Knoten (N2–N4) zu senden, dadurch gekennzeichnet, dass die Taktsignale (CLKi) unterschiedliche Frequenzen aufweisen, und dadurch, dass dasselbe ferner folgende Schritte aufweist: c) Setzen der simulierten Modifikationsfrequenz auf einen vorbestimmten Wert, der ein Vielfaches der Frequenz des Taktsignals (CLK1) des Referenzknotens (N1) ist, d) Setzen des Lokalperiodenwerts (LOCPERIODi) jedes Knotens (Ni) gleich der simulierten Modifikationsfrequenz geteilt durch die Frequenz des entsprechenden Taktsignals (CLKi).
DE69833933T 1998-07-09 1998-07-09 Mehrprozessorsystem mit synchronisierter Systemzeit Expired - Lifetime DE69833933T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP19980830417 EP0971282B1 (de) 1998-07-09 1998-07-09 Mehrprozessorsystem mit synchronisierter Systemzeit

Publications (2)

Publication Number Publication Date
DE69833933D1 DE69833933D1 (de) 2006-05-11
DE69833933T2 true DE69833933T2 (de) 2006-09-28

Family

ID=8236711

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69833933T Expired - Lifetime DE69833933T2 (de) 1998-07-09 1998-07-09 Mehrprozessorsystem mit synchronisierter Systemzeit

Country Status (2)

Country Link
EP (1) EP0971282B1 (de)
DE (1) DE69833933T2 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6687756B1 (en) * 2000-05-25 2004-02-03 International Business Machines Corporation Switched-based time synchronization protocol for a NUMA system
WO2005031576A2 (en) * 2003-09-23 2005-04-07 Revivio, Inc. Systems and methods for time dependent data storage and recovery

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4746920A (en) * 1986-03-28 1988-05-24 Tandem Computers Incorporated Method and apparatus for clock management
US5327468A (en) * 1992-06-19 1994-07-05 Westinghouse Electric Corp. Synchronization of time-of-day clocks in a distributed processing network system
US5566180A (en) * 1994-12-21 1996-10-15 Hewlett-Packard Company Method for recognizing events and synchronizing clocks

Also Published As

Publication number Publication date
DE69833933D1 (de) 2006-05-11
EP0971282A1 (de) 2000-01-12
EP0971282B1 (de) 2006-03-22

Similar Documents

Publication Publication Date Title
DE60002571T2 (de) Elastische schnittstelleanornung und verfahren dafür
DE69634358T2 (de) Verzögerungsverringerung in der übertragung von gepufferten daten zwischenzwei gegenseitig asynchronen bussen
DE60037065T2 (de) Übertragungsteuerung mit Naben- und Torachitektur
DE60314347T2 (de) Betriebsmittelverwaltungsgerät
DE3248215C2 (de)
DE19983443B4 (de) Außer-der-Reihe-Snooping für Multiprozessor-Computersysteme
DE69832410T2 (de) Pipeline-kommunikationssystem mit fester latenz-zeit unter verwendung von dynamischer echtzeit-bandbreitenzuweisung
DE3300261C2 (de)
DE19900245B4 (de) Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host
EP0179936B1 (de) Verfahren und Einrichtung zur Steuerung einer Sammelleitung
DE69931218T2 (de) Verfahren zur synchronisierung von netzwerkknoten
DE69531933T2 (de) Busarchitektur in hochgradiger pipeline-ausführung
DE19580707C2 (de) PCI-ZU-ISA-Interrupt-Protokoll-Konverter und -Auswahlmechanismus
DE69733407T2 (de) Schnittstelle zur datenübertragung zwischen zwei taktbereichen
DE102005051478B4 (de) Flashdatenspeichervorrichtung
DE60215007T2 (de) Multiprozessorsystem und verfahren zum betrieb eines multiprozessorsystems
DE69936060T2 (de) Verfahren und Vorrichtung für eine verbesserte Schnittstelle zwischen Computerkomponenten
DE69632634T2 (de) Arbitrierungseinheit zum Multiprozessorsystembuszugriff mit Wiederholungsfähigkeit
DE69628609T2 (de) Distribuiertes Pipeline-Busarbitrierungssystem
DE3110196A1 (de) Datenverarbeitungssystem
DE2755616C2 (de) Datenverarbeitungsanlage
DE102007037092A1 (de) Zeitsynchronisation für netzwerkbewusste Vorrichtungen
DE69822866T2 (de) System und verfahren zum beenden von lock-step-sequenzen in einem multiprozessorsystem
DE69819648T2 (de) Zweitorpuffer
DE3049774C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition