DE102013222471B4 - Erzeugung und verteilung einer synchronisierten zeitquelle - Google Patents

Erzeugung und verteilung einer synchronisierten zeitquelle Download PDF

Info

Publication number
DE102013222471B4
DE102013222471B4 DE102013222471.0A DE102013222471A DE102013222471B4 DE 102013222471 B4 DE102013222471 B4 DE 102013222471B4 DE 102013222471 A DE102013222471 A DE 102013222471A DE 102013222471 B4 DE102013222471 B4 DE 102013222471B4
Authority
DE
Germany
Prior art keywords
time interval
value
time
oscillator
pulse
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.)
Active
Application number
DE102013222471.0A
Other languages
English (en)
Other versions
DE102013222471A1 (de
Inventor
Eberhard Engler
Guenter Gerwig
Willm Hinrichs
Barinjato Ramanandray
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102013222471A1 publication Critical patent/DE102013222471A1/de
Application granted granted Critical
Publication of DE102013222471B4 publication Critical patent/DE102013222471B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • 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/08Clock generators with changeable or programmable clock frequency
    • 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/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

Eine Vorrichtung, die einen ersten Oszillator, eine mit dem ersten Oszillator verbundene Zeitquellen-Steuereinheit und mit der Zeitquellen-Steuereinheit verbundene korrigierte Zeitintervallzähler aufweist. Der erste Oszillator ist eingerichtet, einen Roh-Zeitintervallimpuls in regelmäßigen oder nahezu regelmäßigen Intervallen zu übertragen. Die Zeitquellen-Steuereinheit ist eingerichtet, eine Zeitangabe zu empfangen, die mindestens eines von aktuellem Tag und aktueller Uhrzeit angibt, und festzustellen, dass der Roh-Zeitintervallimpuls auf der Grundlage der Zeitangabe angepasst werden sollte. Die Zeitquellen-Steuereinheit ist zudem eingerichtet, einen gelenkten Zeitintervallimpuls zumindest teilweise auf der Grundlage des Roh-Zeitintervallimpuls und der Zeitangabe zu erzeugen und den gelenkten Zeitintervallimpuls auf eine Vielzahl von Hardwarekomponenten zu verteilen. Die Zeitintervallzähler sind eingerichtet, einen Zeitwert auf der Grundlage der Ausgabe von der Zeitquellen-Steuereinheit zu beherbergen.

Description

  • HINTERGRUND
  • Ausführungsformen des Gegenstands der Erfindung betreffen allgemein das Gebiet von Computerarchitekturen und genauer die Erzeugung und Verteilung einer synchronisierten Zeitquelle.
  • Mit wachsendem Bedarf nach größerer Rechenleistung hat auch die Größe von Rechenzentren zugenommen. Der Wunsch von System- und Rechenzentrumsentwicklern nach Redundanz und Fehlertoleranz hat dazu geführt, dass Rechenzentren über ein großes geografisches Gebiet verteilt sind. Des Weiteren hat die Bedeutung verteilter Datenverarbeitung und ähnlicher Technologien zugenommen. Diese Anwendungstypen haben zur Entwicklung von Technologien zum Synchronisieren von Computersystemen über weit verstreute geografische Gebiete hinweg geführt.
  • Ähnliche Entwicklungen haben innerhalb von Computersystemen selbst stattgefunden. Systementwickler erhöhen die Anzahl von Prozessoren und anderen Komponenten in einem System, um zur Steigerung der Rechenleistung beizutragen. Die Arbeit kann auf die verschiedene Komponenten verteilt werden, und unterschiedliche Komponenten können die ihnen zugeteilte Arbeit zu unterschiedlichen Zeiten fertigstellen. Daher kann das System die durchgeführten Arbeiten von den einzelnen Komponenten neu ordnen, wobei es sich auf Zeitstempel verlässt, die zwischen den Komponenten synchronisiert werden, um sicherzustellen, dass die Arbeit wieder korrekt geordnet wird.
  • Die US 2007 / 0 260 906 A1 betrifft ein Vorrichtung, die aufweist: einen Haupttaktzähler; eine Servosteuerung; einen Nebentaktzähler; einen Fehlerdetektorblock, der dahin gehend wirksam ist, eine Zeitdifferenz zwischen dem Nebentaktzähler und dem Haupttaktzähler zu bestimmen, einschließlich einer relativen Phase des Haupttaktzählers und des Nebentaktzählers; einen Akkumulator, der einen Deltaverzögerungswert von der Servosteuerung auf der Basis einer vorhandenen Zeitdifferenz und vorheriger Zeitdifferenzen empfängt, wobei der Akkumulator dahin gehend angepasst ist, einen Inkrementwert und einen Partialwert auszugeben; und einen Variable-Verzögerung-Block, der den Inkrementwert und den Partialwert empfängt und dahin gehend wirksam ist, den Nebentaktzähler auf der Basis des Inkrementwerts und des Partialwerts anzupassen. Die US 2007 / 0 260 906 A1 betrifft ferner ein Netzwerk, das aufweist: eine Mehrzahl von Knoten, wobei einer der Mehrzahl von Knoten einen Haupttaktzähler umfasst und jeder der anderen Knoten einen Nebentaktzähler umfasst; eine Taktsynchronisierungsvorrichtung, die folgende Merkmale aufweist: einen Fehlerdetektorblock, der dahin gehend wirksam ist, eine Zeitdifferenz zwischen dem Nebentaktzähler und dem Haupttaktzähler zu bestimmen, einschließlich einer relativen Phase zwischen dem Haupttaktzähler und dem Nebentaktzähler; eine Servosteuerung; einen Akkumulator, der einen Deltaverzögerungswert von der Servosteuerung auf der Basis einer vorliegenden Zeitdifferenz und vorheriger Zeitdifferenzen empfängt, wobei der Akkumulator dahin gehend angepasst ist, einen Inkrementwert und einen Partialwert auszugeben; und einen Variable-Verzögerung-Block, der den Inkrementwert und den Partialwert empfängt und dahin gehend wirksam ist, jeden Nebentaktzähler auf der Basis des Inkrementwerts und den Partialwerts anzupassen.
  • Die US 2005 / 0 120 258 A1 betrifft ein System zur genauen Synchronisation, wobei ein Signal für die Zeitanzeige von einem externen Referenztakt ohne Verzögerung erfasst wird und die Zeit eines Systemtakts des Vergleichsobjekts zum gegenwärtigen Zeitpunkt ohne Verzögerung erfasst wird.
  • Die US 5 918 041 A betrifft ein Verfahren und Vorrichtung in einem Datenverarbeitungssystem zum automatischen Einstellen eines Taktsignals von einer Taktschaltung innerhalb des Datenverarbeitungssystems. Das Taktsignal von der Taktschaltung wird auf eine Referenzzeit von einer Quelle als Reaktion auf das Herstellen einer Kommunikationsverbindung der Quelle aufgebaut wird, wobei eine Korrekturmenge auftritt. Die Korrekturmenge wird aufgezeichnet, wobei eine aufgezeichnete Korrekturmenge als Reaktion auf den Schritt des Einstellens des Taktsignals vorhanden ist. Eine Korrekturgleichung wird unter Verwendung der aufgezeichneten Korrekturmenge ausgewählt, wobei das Taktsignal unter Verwendung der aufgezeichneten Korrekturmenge eingestellt werden kann.
  • Die WO 2012 / 141 711 A1 betrifft eine Taktsignalerzeugungsvorrichtung, die aufweist: ein Modul, um a) ein Signal auszugeben, um einen global synchronisierten Takt in einem aktiven Zustand einzustellen, wobei der global synchronisierte Takt ein globales Taktsignal im aktiven Zustand erfasst und einen periodischen Impuls erzeugt, b) den periodischen Impuls von dem global synchronisierten Takt zu empfangen, c) einen lokalen Takt mit dem periodischen Impuls zu synchronisieren, d) ein Signal ausgeben, um den global synchronisierten Takt in einen inaktiven Zustand zu versetzen, wobei der global synchronisierte Takt im inaktiven Zustand eine reduzierte Energiemenge verbraucht, e) den lokalen Takt unter Verwendung eines Zeitintervalls zwischen periodischen Impulsen zu korrigieren, f) ein Taktsignal basierend auf dem korrigierten lokalen Takt zu erzeugen und g) von a) bis f) zu wiederholen. Die Vorrichtung enthält auch einen Prozessor zum Implementieren des Moduls.
  • KURZDARSTELLUNG
  • Ausführungsformen des Gegenstandes der Erfindung beinhalten ein Verfahren, bei dem eine Zeitangabe empfangen wird, die mindestens eines von aktuellem Tag und Strom angibt. Es wird zudem festgestellt, dass ein durch einen ersten Oszillator eines Computersystems übermittelter Roh-Zeitintervallimpuls zumindest teilweise auf der Grundlage der Zeitangabe angepasst werden sollte. Als Reaktion auf dieses Feststellen wird ein zumindest teilweise auf dem Roh-Zeitintervallimpuls und der Zeitangabe beruhender gelenkter (steered) Zeitintervallimpuls erzeugt. Der gelenkte Zeitintervallimpuls wird auf eine Vielzahl von Hardwarekomponenten des Computersystems verteilt, welche die Ausgabe für Zeitstempel verwenden.
  • Figurenliste
  • Die vorliegenden Ausführungsformen können unter Bezugnahme auf die begleitenden Zeichnungen besser verstanden und dem Fachmann zahlreiche Aufgaben, Merkmale und Vorteile verdeutlicht werden.
    • 1 stellt ein schematisches Beispielschaubild dar, das ausgewählte Komponenten eines Computersystems veranschaulicht, die miteinander interagieren, um unter Verwendung einer zentralen Zeitquellen-Steuereinheit einen gelenkten Zeitintervallimpuls zu erzeugen.
    • 2 stellt ein schematisches Beispielschaubild der Steuerhardware und zugehörigen Funktionseinheiten dar, die einen gelenkten Zeitintervallimpuls erzeugen.
    • 3 stellt eine Beispielrealisierung der Steuerhardware für eine Zeitquellen-Steuereinheit dar.
    • 4 stellt einen Ablaufplan von Beispielvorgängen dar, der zeigt, wie eine Lenkungssteuereinheit die Verzögerung eines Roh-Zeitintervallimpulses erhöhen oder verringern kann, um einen gelenkten Zeitintervallimpuls zu erzeugen.
    • 5 stellt einen Ablaufplan von Beispielvorgängen dar, der zeigt, wie eine Verzögerungseinheit einen Roh-Zeitintervallimpuls verzögern kann, um einen gelenkten Zeitintervallimpuls zu erzeugen.
    • 6 stellt ein Beispielcomputersystem mit einer Zeitquellen-Steuereinheit dar.
  • BESCHREIBUNG EINER ODER MEHRERER AUSFÜHRUNGSFORMEN
  • Die folgende Beschreibung enthält beispielhafte Systeme, Verfahren, Techniken, Anweisungssequenzen und Computerprogrammprodukte, die Techniken des vorliegenden Gegenstands der Erfindung ausbilden. Es versteht sich jedoch, dass die beschriebenen Ausführungsformen ohne diese speziellen Einzelheiten ausgeführt werden können. Während sich Beispiele auf das „Network Time Protocol“ beziehen, gibt es zum Beispiel andere Protokolle zum Synchronisieren der Systemzeit, wie beispielsweise das Protokoll „DAYTIME“ oder das „Precision Time Protocol“. In anderen Fällen wurden allgemein bekannte Anweisungsbeispiele, Protokolle, Strukturen und Techniken nicht im Detail gezeigt, um die Beschreibung nicht zu verschleiern.
  • Die Zeitsynchronisierung ist für viele verteilte Anwendungen wichtig. Zum Beispiel kann ein Hochleistungs-Datenbanksystem aus mehreren Servern bestehen, die jeweils Datenbankeinfügungen erlauben. Um die Datenbankkonsistenz aufrechtzuerhalten, wird jede Datenbankeinfügung auf einem Server an die anderen Server gesendet. Jede Datenbankeinfügung enthält einen von einer Zeitquelle abgeleiteten Zeitstempel, der es den anderen Servern erlaubt, sie in der korrekten Reihenfolge zu bearbeiten. Wenn die Zeitquelle für einen Server nicht synchronisiert ist, verarbeiten die anderen Server Einfügungen, die von diesem Server stammen, unter Umständen in der falschen Reihenfolge, was zu Inkonsistenzen zwischen diesen Servern führt.
  • Manche Computersysteme synchronisieren ihre Zeitquelle mit einer genauen externen Quelle. Dadurch können die Systeme mit denjenigen an anderen geografischen Orten synchronisiert werden. Zum Beispiel können Datenbankserver in New York mit Datenbankservern in Los Angeles synchronisiert werden. Beim „Network Time Protocol“ (NTP) handelt es sich um ein für diesen Zweck entwickeltes Protokoll, und es erlaubt die Synchronisierung durch vielfältige Verfahren, wozu auch über das Internet zählt. NTP kann unter Verwendung eines Impuls-pro-Sekunde-Signals eine Genauigkeit auf 10 Mikrosekunden oder unter Verwendung eines anderen Mittels auf 100 Millisekunden bereitstellen.
  • Für ein Synchronisieren unter Verwendung des NTP erfragt und empfängt ein Computersystem zuerst Zeitinformationen vom NTP-Netzwerk, indem mit einem oder mehreren NTP-Servern (nachfolgend „NTP-Netzwerk“) Daten ausgetauscht werden. Die Zeitinformationen geben das aktuelle Datum und die aktuelle Uhrzeit an. Das System berechnet die Differenz zwischen der durch das NTP-Netzwerk bereitgestellten aktuellen Zeit und der Systemzeitquelle. Die Differenz zwischen der durch das NTP-Netzwerk bereitgestellten aktuellen Zeit und der Systemzeitquelle kann verwendet werden, um die Systemzeit durch Verwenden eines Versatzes direkt anzupassen. Zum Beispiel kann die Systemzeitquelle die Ausgabe von einem Oszillator verwenden, um einen Zähler zu erhöhen, der die Anzahl von Sekunden von einem bestimmten Zeitpunkt an wiedergibt. Das System kann feststellen, dass der Zähler fünf Sekunden hinter der durch das NTP-Netzwerk angegebenen Zeit zurückliegt. Das System kann dann die Zeit vom NTP-Netzwerk verwenden, um einen Versatz (in diesem Fall von fünf Sekunden) zu erzeugen, der bei Addieren zum Wert im Zähler die durch das NTP-Netzwerk angegebene Zeit erzeugt.
  • Ähnliche Synchronisierungsprobleme entstehen bei Computersystemen mit mehreren Prozessoren. Die Zeitstempel sollten nicht nur zwischen Computersystemen, sondern auch zwischen den Prozessoren und anderen Komponenten synchronisiert sein. Wenn manche Systeme Synchronisierungsziele von weniger als einer Millisekunde besitzen, kann jede einzelne Komponente Synchronisierungsprobleme korrigieren. Steuercode und zusätzliche Hardware in jeder Komponente erhöhen den Speicherplatzbedarf und den Energieverbrauch und je höher die Komplexität, desto größer ist die Wahrscheinlichkeit von Synchronisierungsproblemen. Darüber hinaus ist es bei einigen Komponenten unter Umständen nicht möglich, die zusätzliche Hardware unterzubringen, so dass sie unkorrigierte Zeitstempel besitzen.
  • Bei einem Computersystem kann jede zu synchronisierende Komponente ein Zeitintervallzähler-Register enthalten. Das Zeitintervallzähler-Register gibt die Anzahl von Zeitintervallen ausgehend von einem festgelegten Zeitpunkt in der Vergangenheit wieder, der eine „Epoche“ („epoch“) genannt wird. Zum Beispiel kann die Epoche als 1. Januar 1900, 12:00 Uhr mittags definiert sein. Würde es sich bei den verwendeten Zeitintervallen um Sekunden handeln, wäre der Wert im Zeitintervallzähler-Register zu einem beliebigen Zeitpunkt die Anzahl von Sekunden zwischen dem 1. Januar 1900, 12:00 Uhr mittags und der aktuellen Zeit. Bei den tatsächlich verwendeten Zeitintervallen könnte es sich um jedes Zeitintervall einschließlich Millisekunden und Mikrosekunden handeln. Der Zeitintervallzähler fungiert als die Zeitquelle für die entsprechende Komponente.
  • Das Computersystem kann zudem einen Zeitquellenoszillator enthalten, der mit jedem Zeitintervallzähler-Register verbunden ist. Der Zeitquellenoszillator ist eingerichtet, in einem festgelegten Intervall einen elektrischen Impuls auszusenden, der als Roh-Zeitintervallimpuls bezeichnet wird. Würde zum Beispiel das Zeitintervallzähler-Register die Anzahl von Mikrosekunden seit der Epoche wiedergeben, kann der Zeitquellenoszillator eingerichtet sein, jede Mikrosekunde einen Impuls auszusenden. Jedes Mal, wenn der Zeitquellenoszillator einen Impuls aussendet, wird das Zeitintervallzähler-Register um ein Bit erhöht. Jeder Roh-Zeitintervallimpuls steht für eine logische „1“.
  • Oszillatoren weisen allgemein eine gewisse Ungenauigkeit auf. Zum Beispiel können Umgebungstemperaturen, Feuchtigkeit und Vibrationen die Frequenz beeinflussen, mit der ein Oszillator schwingt, wodurch die Ausgabe schwankt. Daher neigen die Ausgabefrequenzen von Oszillatoren zur Drift. Diese Oszillatordrift stellt einen der Faktoren dar, die dazu führen, dass ein Versatz verwendet wird, um ein Zeitintervallzähler-Register auf der Grundlage einer externen Zeitquelle anzupassen. Darüber hinaus ist es unter Umständen nicht möglich, einen Oszillator herzustellen, der mit einer exakten Frequenz schwingt. Zum Beispiel können Herstellungsunregelmäßigkeiten dazu führen, dass ein Oszillator, der mit einem Megahertz schwingen soll, mit 1,01 Megahertz schwingt.
  • Komponenten, die Zeittaktungsschwankungen wie beispielsweise die Drift der Oszillatorfrequenz korrigieren, können Steuercode, ein Zeitintervallzähler-Register, ein Zeitintervallversatz-Register und ein korrigiertes Zeitquellenregister enthalten. Der Steuercode empfängt als Eingabe Zeitinformationen vom NTP-Netzwerk. Der Steuercode verwendet die Zeitinformationen, um die Differenz zwischen dem Zeitintervallzähler-Register und der durch das NTP-Netzwerk bereitgestellten aktuellen Zeit zu berechnen. Dieser Versatz wird als der „berechnete lokale Zeitintervallversatz“, und der Korrekturprozess als „Lenken“ („steering“) bezeichnet. Der Steuercode schreibt den berechneten lokalen Zeitintervallversatz in das Zeitintervallversatz-Register. Dann wird der Wert im Zeitintervallversatz-Register zum Zeitintervallzähler-Register hinzuaddiert und in das korrigierte Zeitquellenregister geschrieben. Wenn ein Zeitstempel angefordert wird, liest die Komponente den Wert aus dem korrigierten Zeitquellenregister. Andere Komponenten enthalten unter Umständen keinen Steuercode und enthalten somit nur ein Zeitintervallzähler-Register. Ohne die Fähigkeit, aus einer genauen Zeitquelle einen Zeitintervallversatz zu berechnen, entspricht der Wert im Zeitintervallzähler-Register bei diesen Komponenten möglicherweise nicht demjenigen anderer Komponenten.
  • Ein Computersystem kann so eingerichtet sein, dass es eine zentrale interne Zeitquelle aufweist, die als eine „Zeitquellen-Steuereinheit“ bezeichnet wird. Anstatt die Oszillatordrift durch jede einzelne Komponente zu korrigieren, stellt die Zeitquellen-Steuereinheit einen einzelnen, zentralen Punkt bereit, an dem die Oszillatorausgabe korrigiert werden kann, so dass an jede Komponente der korrekte Impuls ausgegeben wird. Somit können die einzelnen Komponenten vereinfacht werden, und die Synchronisierung zwischen Komponenten verbessert sich. Darüber hinaus können Komponenten, welche die Oszillatorausgabe nicht korrigieren konnten, nun einen korrekten Impuls empfangen, so dass sie mit anderen Komponenten synchronisiert sein können.
  • Die Ausgabe vom Zeitquellenoszillator und die Zeitinformationen vom NTP-Netzwerk dienen als Eingaben für die Zeitquellen-Steuereinheit. Mithilfe der Zeitinformationen vom NTP-Netzwerk kann eine „Lenkungsrate“ erzeugt werden. Bei der Lenkungsrate handelt es sich um eine Rate, die bei Verwenden zum Anpassen der Ausgabe des Zeitquellenoszillators Probleme wie beispielsweise die Oszillatordrift korrigiert. Die Lenkungsrate kann durch eine andere Hardwarekomponente berechnet und der Zeitquellen-Steuereinheit als eine Eingabe bereitgestellt werden. Die Zeitquellen-Steuereinheit ermittelt die Differenz zwischen der Lenkungsrate und der Zeitzählung des Zeitquellenoszillators und gibt einen korrigierten Impuls aus. Dieser korrigierte Impuls wird als der „gelenkte Zeitintervallimpuls“ bezeichnet.
  • 1 stellt ein schematisches Beispielschaubild dar, das ausgewählte Komponenten eines Mikroprozessorsystems veranschaulicht, die miteinander interagieren, um unter Verwendung einer zentralen Zeitquellen-Steuereinheit einen gelenkten Zeitintervallimpuls zu erzeugen. 1 stellt ein Computersystem 100 dar, das eine NTP-Schnittstelle 102, einen Zeitquellenoszillator 104, einen Gitteroszillator 106, eine Zeitquellen-Steuereinheit 110, einen Satz von Prozessoren 120 und einen Satz von Eingabe-Ausgabe-Hubs 130 enthält. Die Zeitquellen-Steuereinheit 110 enthält Zeitquellen-Steuercode (Steuercode) 112 und Zeitquellen-Steuerhardware (Steuerhardware) 114. Jeder Prozessor im Satz von Prozessoren 120 enthält einen korrigierten Zeitintervallzähler 122. Jeder Eingabe-Ausgabe-Hub im Satz von Eingabe-Ausgabe-Hubs 130 enthält einen korrigierten Zeitintervallzähler 132.
  • In einer Phase A wird die Lenkungsrate von der NTP-Schnittstelle 102 zur Zeitquellen-Steuereinheit 110 gesendet. Die NTP-Schnittstelle 102 tauscht mit Servern im NTP-Netzwerk Daten aus, um einen genauen Zeitwert zu erhalten. In manchen Ausführungsformen berechnet die Zeitquellen-Steuereinheit 110 selbst die Lenkungsrate auf der Grundlage der von der NTP-Schnittstelle 102 erhaltenen Zeitinformationen. Die Lenkungsrate kann berechnet werden, indem der Wert von einem korrigierten Zeitintervallzähler gelesen und unter Verwendung der durch die NTP-Schnittstelle 102 empfangenen Zeitinformationen ein Versatz berechnet wird. Dann kann die Zeitquellen-Steuereinheit 110 eine aktualisierte Lenkungsrate berechnen, indem die aktuelle Lenkungsrate mit dem neuen Versatz angepasst wird. Wie nachstehend erläutert, kann die Zeitquellen-Steuereinheit 110 die aktuelle Lenkungsrate mithilfe des korrigierten Zeitwertes über eine Zeitdauer hinweg anpassen, um die Wahrscheinlichkeit zu verringern, dass eine Anwendung durch die Anpassung beeinflusst wird.
  • In einer Phase B sendet der Zeitquellenoszillator 104 einen Roh-Zeitintervallimpuls an die Zeitquellen-Steuereinheit 110. Der Zeitquellenoszillator gibt einen Impuls mit einer Rate aus, die den seit der Epoche gezählten einzelnen Zeitdauern entspricht. Wenn zum Beispiel der korrigierte Zeitintervallzähler so eingestellt ist, dass die Anzahl von Mikrosekunden seit dem 1. Januar 1900 gespeichert wird, ist der Zeitquellenoszillator eingerichtet, jede Mikrosekunde einen Impuls auszusenden. In manchen Ausführungsformen handelt es sich bei dem Zeitquellenoszillator um einen hochpräzisen Oszillator, der eingerichtet ist, die Oszillatordrift zu minimieren. Auch wenn die Oszillatordrift minimiert wird, ist sie nicht beseitigt, und daher wird nach wie vor eine Lenkung verwendet. Darüber hinaus wird auch ein hochpräziser Oszillator nicht dieselbe Genauigkeit besitzen wie eine Atomuhr, die als Grundlage für das hochpräzise NTP-Netzwerk dient.
  • In einer Phase C sendet der Gitteroszillator 106 einen Gitterimpuls an die Zeitquellen-Steuereinheit 110. Der Gitteroszillator 106 schwingt mit einer Frequenz, die gleich oder größer ist als die des Zeitquellenoszillators 104. Zum Beispiel arbeitet ein Zeitquellenoszillator 104, der jede Mikrosekunde einen Impuls ausgibt, bei einer Frequenz von einem Megahertz, wohingegen der Gitteroszillator 106 im Gigahertzbereich arbeiten kann. In manchen Ausführungsformen kann es sich beim Gitteroszillator 106 um die Referenzuhr für die Hardware handeln. Eine Referenzuhr kann mehrere durch die Hardware verwendete Oszillatorausgaben mit unterschiedlichen Frequenzen erzeugen. Eine durch eine Referenzuhr erzeugte Oszillatorausgabe kann dieselbe Taktung aufweisen wie die Taktfrequenz eines einzelnen Prozessors. Die Ausgabe der Referenzuhr, die der Geschwindigkeit der Prozessortaktfrequenz entspricht, kann als der Gitteroszillator 106 verwendet werden. Der Gitteroszillator 106 wird verwendet, um die später erläuterten einzelnen Verzögerungsintervalle festzulegen, so dass die Lenkung des Roh-Zeitintervallimpulses umso präziser sein kann, je höher die Frequenz des Gitteroszillators 106 ist.
  • Wenn zum Beispiel der Gitteroszillator 106 jede Mikrosekunde einen Impuls übermittelt, kann der Roh-Zeitintervallimpuls in Schritten von einer Mikrosekunde verzögert werden. Je kürzer die Zeit zwischen Impulsen des Gitteroszillators 106 ist (oder anders ausgedrückt: je höher die Frequenz des Gitteroszillators 106 ist), desto feiner können die Anpassungen am Roh-Zeitintervallimpuls sein. Je feiner die Anpassungen sind, desto transparenter sind die Anpassungen für alle Elemente, welche die korrigierte Zeitintervallanpassung verwenden. Wenn zum Beispiel der Zeitquellenoszillator 104 jede Sekunde einen Impuls übermittelt, sollte eine Anwendung, die das korrigierte Zeitintervall zweimal liest, wobei der zweite Lesevorgang anderthalb Sekunden nach dem ersten liegt, zwei Werte erhalten, die sich um eine Sekunde unterscheiden. Wenn ein Gitteroszillator 106 nur einen Impuls jede Sekunde übermittelt und eine Anwendung einen Wert vor einer Anpassung liest, die den Impuls um eine zusätzliche Sekunde verzögert, und dann nach der Anpassung einen zweiten Wert liest, werden sich die Zeitintervallwerte nicht ändern. Wenn der Gitteroszillator 106 jede Mikrosekunde einen Impuls übermittelt, unterscheiden sich die gelesenen Zeitintervallwerte um eine Mikrosekunde weniger als die volle Differenz, wodurch die Anpassung für die Anwendung praktisch nicht erkennbar ist.
  • In einer Phase D verwendet die Zeitquellen-Steuereinheit 110 die Lenkungsrate von der NTP-Schnittstelle 102, um den Roh-Zeitintervallimpuls vom Zeitquellenoszillator 104 zu lenken. Der Steuercode 112 empfängt die Eingabe von der NTP-Schnittstelle 102 und verarbeitet sie in eine Form, die mit der Steuerhardware 114 kompatibel ist. Der Steuercode 112 richtet die Steuerhardware 114 so ein, dass der Roh-Zeitintervallimpuls vorwärts oder rückwärts angepasst wird. Der Roh-Zeitintervallimpuls kann in Schritten angepasst werden, die der Zeit zwischen Impulsen des Gitteroszillators 106 entsprechen. Der angepasste Roh-Zeitintervallimpuls, bzw. der gelenkte Zeitintervallimpuls, wird durch die Steuerhardware 114 ausgegeben.
  • In einer Phase E sendet die Zeitquellen-Steuereinheit 110 den gelenkten Zeitintervallimpuls an die korrigierten Zeitintervallzähler 122 und 132 in den einzelnen Komponenten des Systems. Bei den korrigierten Zeitintervallzählern 122 und 132 kann es sich um Register handeln, die jedes Mal erhöht werden, wenn sie einen Impuls von der Zeitquellen-Steuereinheit 110 empfangen. Komponenten wie beispielsweise ein Prozessor im Satz von Prozessoren 120 können den Wert des Zeitintervallzählers als Zeitstempel verwenden. Zeitstempel ermöglichen es dem Computersystem, verschiedene Prozesse zu synchronisieren, die auf unterschiedlichen Prozessoren im Prozessorsatz 120 erfolgen. Zum Beispiel kann eine Softwareanwendung die Fähigkeit nutzen, mehrere Aufgaben zur selben Zeit auf unterschiedlichen Prozessoren auszuführen und sich auf die Genauigkeit der Zeitstempel verlassen, um die Ergebnisse der Aufgaben wieder in die korrekte Reihenfolge zurückzuversetzen. Andere Komponenten, die nicht die Fähigkeit besitzen, den Zeitintervallwert zu korrigieren, wie beispielsweise der Satz von Eingabe-Ausgabe-Hubs 132, verfügen nun über einen korrigierten Zeitintervallzähler, der mit den anderen Komponenten synchronisiert ist.
  • 2 stellt ein schematisches Beispielschaubild der Steuerhardware und zugehörigen Funktionseinheiten dar, die einen gelenkten Zeitintervallimpuls erzeugen. 2 stellt ein Computersystem 200 dar, das einen Zeitquellenoszillator 202, einen Steuercode 204, einen Gitteroszillator 206, einen Satz von einem oder mehreren korrigierten Zeitintervallzählern 208, Steuerhardware 210 und eine NTP-Schnittstelle 220 enthält. Die Steuerhardware 210 enthält eine Lenkungssteuereinheit 212 und eine Verzögerungseinheit 214.
  • Der Zeitquellenoszillator 202, der Steuercode 204 und der Gitteroszillator 206 stellen der Steuerhardware 210 die Eingaben bereit. Der Zeitquellenoszillator 202 stellt den Roh-Zeitintervallimpuls und der Gitteroszillator 206 den Gitteroszillatorimpuls bereit. Der Steuercode 204 stellt die Lenkungsrate und den Lenkungsmodus bereit. Die Steuerhardware 210 weist einen Ausgang auf, der zu jedem aus dem Satz der korrigierten Zeitintervallzähler 208 führt.
  • Wie vorstehend erläutert, empfängt der Steuercode 204 Zeitinformationen von einer externen Zeitquelle wie beispielsweise der NTP-Schnittstelle 220. Der Steuercode 204 kann die Lenkungsrate von der NTP-Schnittstelle 220 erhalten oder auf der Grundlage anderer durch die NTP-Schnittstelle 220 bereitgestellter Informationen berechnen. Eine Lenkungsrate kann als „Teile pro Million“ (parts per million) ausgedrückt werden. Zum Beispiel gibt eine Lenkungsrate von zwei Teilen pro Million an, dass für jede Million Intervalle die zu lenkende Oszillatorausgabe um zwei Intervalle verschoben werden sollte. Dieses Format ist für eine Darstellung in Hardware nicht besonders geeignet, so dass der Steuercode 204 die Lenkungsrate in den Reziprokwert umwandelt. Im Falle einer Lenkungsrate von zwei Teilen pro Million lautet der Reziprokwert 500.000. Wenn somit der Gitteroszillator 206 die Intervalle festlegen würde, würde eine Lenkungsrate von zwei Teilen pro Million realisiert werden, indem der vom Zeitquellenoszillator 202 kommende Roh-Zeitintervallimpuls einmal alle 500.000 vom Gitteroszillator 206 kommenden Impulse verschoben wird. Für die Zwecke dieser Erläuterung wird „Lenkungsrate“ als Bezeichnung für die tatsächliche Lenkungsrate und den Reziprokwert der Lenkungsrate verwendet, und eine Unterscheidung zwischen den beiden wird vorgenommen, wenn dies notwendig ist.
  • Nach dem Umwandeln der Lenkungsrate in eine durch die Steuerhardware 210 verwendbare Form sendet der Steuercode 204 die Lenkungsrate an die Lenkungssteuereinheit 212. Oszillatoren können so driften, dass sich ihre Frequenz erhöht oder verringert. Somit sendet der Steuercode 202 auch einen Lenkungsratenmodus an die Lenkungssteuereinheit 212. Der Lenkungsratenmodus gibt der Lenkungssteuereinheit 212 an, den Verzögerungswert entweder zu erhöhen oder den Verzögerungswert zu verringern. Durch Verringern des Verzögerungswertes wird der Roh-Zeitintervallimpuls vorgerückt, wodurch eine Verringerung bei der Frequenz des Zeitquellenoszillators 202 oder eine Frequenz des Zeitquellenoszillators, die geringer als gewünscht ist, kompensiert wird. Durch Erhöhen des Verzögerungswertes wird der Roh-Zeitintervallimpuls verzögert, wodurch eine Erhöhung bei der Frequenz des Zeitquellenoszillators 202 oder eine Frequenz des Zeitquellenoszillators, die höher als gewünscht ist, kompensiert wird.
  • Wie vorstehend erläutert, stellt der Gitteroszillator 206 einen Impuls bereit, der als das Intervall dient, um das der Roh-Zeitintervallimpuls vorgerückt oder verzögert wird. Die Lenkungssteuereinheit 212 verwendet den Impuls des Gitteroszillators 206, um zu ermitteln, wann der Verzögerungswert zu erhöhen oder zu verringern ist. In anderen Worten: Wenn die Lenkungsrate zwei Teile pro Million beträgt, zählt die Lenkungssteuereinheit 212 eine Anzahl von 500.000 Impulsen des Gitteroszillators 206 ab und sendet dann einen Wert an die Verzögerungseinheit 214. Wenn der Lenkungsmodus eingestellt ist, den Verzögerungswert zu erhöhen, sendet die Lenkungssteuereinheit 212 einen Wert an die Verzögerungseinheit 214, die Verzögerung zu erhöhen. Wenn der Lenkungsmodus eingestellt ist, den Verzögerungswert zu verringern, sendet die Lenkungssteuereinheit 212 einen Wert an die Verzögerungseinheit 214, der angibt, den Verzögerungswert zu verringern. Die Verzögerungseinheit 214 verwendet den Impuls des Gitteroszillators 206, um die Anzahl von Verzögerungsintervallen zu zählen, bevor ein gelenkter Zeitintervallimpuls ausgegeben wird. In anderen Worten: Wenn die Verzögerungseinheit 214 einen Roh-Zeitintervallimpuls vom Zeitquellenoszillator 202 empfängt, beginnt sie, die Impulse des Gitteroszillators 206 zu zählen. Wenn der Verzögerungswert auf acht Einheiten eingestellt ist, gibt die Verzögerungseinheit 214 nach acht Impulsen des Gitteroszillators 206 einen gelenkten Zeitintervallimpuls aus.
  • Wie vorstehend beschrieben, wird jeder aus dem Satz der korrigierten Zeitintervall-Zähler 208 jedes Mal erhöht, wenn sie einen Impuls von der Verzögerungseinheit empfangen.
  • 3 stellt eine Beispielrealisierung der Steuerhardware für eine Zeitquellen-Steuereinheit dar. 3 stellt die Steuerhardware 300 dar, die eine Lenkungssteuereinheit 301 und eine Verzögerungseinheit 320 enthält. Die Lenkungssteuereinheit 301 enthält ein 64-Bit-Lenkungssteuerregister (Lenkungssteuerregister) 302, einen 31-Bit-Lenkungszähler (Lenkungszähler) 204, eine Vergleichsschaltung 306 und vier UND-Gatter 308, 310, 312 und 314. Die Verzögerungseinheit 320 enthält einen 8-Bit-Verzögerungsintervallzähler (Verzögerungszähler) 322, ein 8-Bit-Verzögerungswertregister 324 und eine Vergleichsschaltung 326.
  • In der in 3 dargestellten Beispielrealisierung gibt es fünf Steuereingänge: Lenkung aktivieren, Lenkungsratenmodus, Lenkungsrate, Lenkungsrateninitialisierung aktivieren und Lenkungsraten-Initialisierungswert. In den vorstehend erläuterten Ausführungsformen waren der Lenkungsratenmodus und die Lenkungsrate als zwei Eingaben für die Lenkungssteuereinheit 300 realisiert. In manchen Ausführungsformen können diese zwei Eingaben, und jegliche weiteren, in ein als das Lenkungssteuerregister 302 bezeichnetes Register geschrieben werden. Die Größe des Lenkungssteuerregisters 302 kann durch die Anzahl und die Größe der Eingaben, der Menge an verfügbarem physischem Speicherplatz usw. vorgegeben werden. In manchen Ausführungsformen kann es sich bei manchen Eingaben, wie beispielsweise der Eingabe „Lenkung aktivieren“ in 3, um einzelne Eingänge handeln. Ein Gitteroszillatoreingang ist mit dem Steuerzähler 304 verbunden.
  • Die Lenkungssteuereinheit 301 besitzt zwei Ausgänge. Ein mit „Zur Verzögerungserhöhung “ beschrifteter Ausgang sendet einen eine logische „1“ angebenden Wert, wenn die Lenkungssteuereinheit feststellt, dass die Verzögerung des Roh-Zeitintervallimpuls erhöht werden sollte. Der andere, mit „Zur Verzögerungsverringerung“ beschriftete Ausgang sendet einen eine logische „1“ angebenden Wert, wenn die Lenkungssteuereinheit feststellt, dass die Verzögerung des Roh-Zeitintervallimpulses verringert werden sollte.
  • Der Reziprokwert der Lenkungsrate ist in den Bits eins bis einunddreißig des Lenkungssteuerregisters 302 gespeichert. Die dem Lenkungsratenwert entsprechenden Ausgänge aus dem Lenkungssteuerregister 302 sind mit der Vergleichsschaltung 306 verbunden. Jeder Impuls des Gitteroszillators erhöht den Wert im Lenkungszähler 304. Der Ausgang des Lenkungszählers 304 ist mit der Vergleichsschaltung 306 verbunden, so dass der Vergleichsschaltung 306 der aktuelle Wert des Lenkungszählers 304 bereitgestellt wird. Die Vergleichsschaltung 306 vergleicht den Wert des Lenkungszählers 304 mit dem im Lenkungssteuerregister 302 gespeicherten Lenkungsratenwert. Wenn der Wert im Lenkungszähler 304 gleich oder größer als die Lenkungsrate ist, gibt die Vergleichsschaltung 306 eine logische „1“ aus. Der Ausgang der Vergleichsschaltung 306 ist mit dem Rücksetzeingang des Lenkungszählers 304 und den ersten UND-Gattern 308 und 310 verbunden. Wenn der Lenkungszähler 304 eine logische „1“ von der Vergleichsschaltung 306 empfängt, wird der Lenkungszähler 304 auf null zurückgesetzt, es sei denn das Bit für das Aktivieren der Lenkungsrateninitialisierung ist auf Eins gesetzt. Wenn das Bit für das Aktivieren der Lenkungsrateninitialisierung auf Eins gesetzt ist und auf das Lenkungssteuerregister 302 geschrieben wird, wird der Lenkungszähler 304 auf den in den Bits dreiunddreißig bis dreiundsechzig des Lenkungssteuerregisters 302 gespeicherten Lenkungsraten-Initialisierungswert zurückgesetzt.
  • Die als ein einzelner Bitwert im Lenkungssteuerregister 302 gespeicherte Eingabe des Lenkungsratenmodus gibt an, ob die Verzögerung erhöht oder verringert werden sollte. Der Ausgang des Lenkungssteuerregisters 302, der dem den Lenkungsratenmodus angebenden Bitwert entspricht, ist mit den ersten zwei UND-Gattern 308 und 310 verbunden. Das dem Ausgang zur Verzögerungserhöhung entsprechende UND-Gatter 308 besitzt einen Inverter am Eingang des Lenkungsratenmodus. Wenn der Lenkungsratenmodus somit auf 0 gesetzt ist, handelt es sich beim Eingang des Lenkungsratenmodus in das UND-Gatter 308, das dem Ausgang zur Verzögerungserhöhung entspricht, um eine logische „1“ und beim Eingang des Lenkungsratenmodus in das UND-Gatter 310, der dem Ausgang zur Verzögerungsverringerung entspricht, um eine logische „0“. Wenn der Lenkungsratenmodus auf eine logische „1“ gesetzt ist, sind die Werte für die Eingänge in die ersten UND-Gatter 308 und 310 umgekehrt.
  • Wenn die Vergleichsschaltung 306 eine logische „1“ ausgibt, sind bei einem der ersten UND-Gatter 308 und 310 beide Eingänge auf eine logische „1“ gesetzt. Wenn zum Beispiel der Lenkungsratenmodus auf eine logische „0“ gesetzt ist, ist der Eingang des Lenkungsratenmodus in das obere UND-Gatter 308 auf eine logische „1“ gesetzt, und der Eingang aus der Vergleichsschaltung 306 ist auf eine logische „1“ gesetzt. Somit gibt das obere UND-Gatter 308 eine logische „1“ aus. Der Eingang für den Lenkungsratenmodus in das untere UND-Gatter 310 ist auf eine logische „0“ gesetzt, und somit gibt das untere UND-Gatter 310 eine logische „0“ aus. Wenn der Lenkungsratenmodus auf eine logische „1“ gesetzt ist, geben die UND-Gatter 308 und 310 eine logische „0“ bzw. „1“ aus.
  • Der Eingang für das Aktivieren der Lenkung ermittelt, ob die Lenkung des Roh-Zeitintervallimpulses aktiviert ist. Der Eingang für das Aktivieren der Lenkung ist mit den letzten zwei UND-Gattern 312 und 314 verbunden. Wenn der Eingang für das Aktivieren der Lenkung auf eine logische „0“ gesetzt ist, stellt die Ausgabe der letzten zwei UND-Gatter 312 und 314 ungeachtet der Werte der anderen Eingänge immer eine logische „0“ dar. Während somit der Eingang für das Aktivieren der Lenkung auf eine logische „0“ gesetzt ist, stellen beide Ausgänge eine logische „0“ dar, so dass die Lenkung des Roh-Zeitintervallimpulses deaktiviert ist.
  • Zur Erhöhung der Verzögerung ist somit der Lenkungsratenmodus auf eine logische „0“ und der Eingang für das Aktivieren der Lenkung auf eine logische „1“ gesetzt. Wenn der Wert des Lenkungszählers 304 gleich der Lenkungsrate ist, gibt die Vergleichsschaltung 306 eine logische „1“ aus, wodurch beide dem Ausgang für das Erhöhen der Verzögerung entsprechenden Eingänge in das UND-Gatter 308 auf eine logische „1“ gesetzt werden. Der dem Ausgang zur Erhöhung der Verzögerung entsprechende Ausgang aus dem UND-Gatter 308 wird zu einer logischen „1“. Da der Eingang für das Aktivieren der Lenkung auf eine logische „1“ gesetzt ist, sind beide dem Ausgang zur Erhöhung der Verzögerung entsprechenden Eingänge in das zweite UND-Gatter 310 auf eine logische „1“ gesetzt, wodurch das UND-Gatter 312 veranlasst wird, eine logische „1“ auszugeben.
  • Wenn in manchen Szenarios die Lenkungsrate modifiziert wird, wird der Verzögerungswert erhöht oder verringert, bevor der vorherige Stand des Lenkungsratenzählers erreicht ist. Wenn zum Beispiel bei einem Wert des Lenkungsratenzählers 304 von 750.000 die aktuelle Lenkungsrate von 1.000.000 auf 500.000 aktualisiert wird, wird die Ausgabe der Vergleichsschaltung zu einer logischen „1“. Somit wird der Verzögerungswert 250.000 Verzögerungsintervalle zu früh erhöht oder verringert. Oder wenn bei einem Wert des Lenkungsratenzählers 304 von 250.000 die aktuelle Lenkungsrate von 500.000 auf 1.000.000 aktualisiert wird, wird die Ausgabe der Vergleichsschaltung nicht zu einer logischen „1“. Somit wird der Verzögerungswert 500.000 Verzögerungsintervalle zu spät erhöht oder verringert. Um die Auswirkungen des letzteren Szenarios zu minimieren, kann der Lenkungsraten-Initialisierungswert so eingestellt werden, dass der Zähler beim nächsten Zurücksetzen initialisiert wird. Der Lenkungszähler 304 wird bei einem Schreiben auf das Lenkungssteuerregister 302 unmittelbar zurückgesetzt, wenn das Bit für das Aktivieren der Lenkungsrateninitialisierung auf Eins gesetzt ist. Zum Beispiel kann im Szenario, in dem der Verzögerungswert 500.000 Verzögerungsintervalle zu spät erhöht oder verringert wird, der Lenkungsraten-Initialisierungswert auf 750.000 und das Bit für das Aktivieren der Lenkungsrateninitialisierung auf eine logische „1“ gesetzt werden, wenn der neue Lenkungsratenwert in das Lenkungssteuerregister 302 geschrieben wird. Dies setzt den Lenkungszähler 304 unmittelbar auf 750.000, wodurch das Erhöhen oder Verringern zum richtigen Zeitpunkt ermöglicht wird.
  • Die Verzögerungseinheit 320 besitzt vier Eingänge: den Roh-Zeitintervallimpuls, den Gitteroszillatorimpuls und die zwei Ausgänge aus der Lenkungssteuereinheit 301, die mit „Zur Verzögerungserhöhung“ und „Zur Verzögerungsverringerung“ beschriftet sind. Die Verzögerungseinheit 320 besitzt einen einzigen Ausgang, den gelenkten Zeitintervallimpuls.
  • Im Register 324 ist ein Wert gespeichert, der die Anzahl von Gitteroszillatorimpulsen zum Verzögern des Roh-Zeitintervallimpuls angibt, um den gelenkten Zeitintervallimpuls zu erzeugen. Wenn das Register 324 eine logische „1“ am Erhöhungseingang des Registers 324 empfängt, wird der Wert des Registers 324 um Eins erhöht. Wenn das Register 324 eine logische „1“ am Verringerungseingang des Registers 324 empfängt, wird der Wert des Registers 324 um Eins verringert. Da das Register 324 eine feste Größe besitzt, in diesem Beispiel acht Bit, ist der im Register 324 gespeicherte Wert ebenfalls begrenzt. Das Register 324 kann so eingerichtet sein, dass der im Register 324 gespeicherte Wert auf null zurückgesetzt wird, wenn der im Register 324 gespeicherte Wert ein Vielfaches des Verhältnisses von Gitteroszillatorimpulsen zu Roh-Zeitintervallimpulsen erreicht. Wenn zum Beispiel zehn Gitteroszillatorimpulse auf jeden Roh-Zeitintervallimpuls kommen, entspricht eine Verzögerung von zehn Gitteroszillatorimpulsen überhaupt keiner Verzögerung. Somit könnte das Register 324 so gestaltet sein, dass das Register 324 bei Empfangen einer logischen „1“ am Erhöhungseingang auf null zurückgesetzt wird, falls der aktuelle Wert des Registers 324 neun beträgt. Das Register wäre zudem so gestaltet, dass es auf ein Vielfaches des Verhältnisses von Gitteroszillatorimpulsen zu Roh-Zeitintervallimpulsen gesetzt würde, wenn es bei einem Wert des Registers 324 von null verringert würde. Im vorhergehenden Beispiel, bei dem zehn Gitteroszillatorimpulse auf einen Roh-Zeitintervallimpuls kommen, könnte das Register 324 auf neun gesetzt werden, wenn es bei einem Wert des Registers 324 von null verringert wird.
  • Der Wert des Verzögerungszählers 322 beträgt zu Beginn null. Wenn der Verzögerungszähler 322 einen Impuls vom Roh-Zeitintervallimpuls-Eingang empfängt, beginnt der Verzögerungszähler 322 jeden Gitteroszillatorimpuls zu zählen. In anderen Worten: Nach Empfangen eines Impulses vom Roh-Zeitintervallimpuls-Eingang wird der Verzögerungszähler 322 durch jeden Gitteroszillatorimpuls erhöht. Wenn der Wert im Verzögerungszähler 322 gleich dem Wert im Register 324 ist, gibt die Vergleichsschaltung 326 eine logische „1“ aus. Diese Ausgabe aus der Verzögerungsschaltung 326 stellt den gelenkten Zeitintervallimpuls dar. Wenn die Vergleichsschaltung 326 eine logische „1“ ausgibt, wird der Verzögerungszähler 322 auf null zurückgesetzt und hält das Zählen bis zum nächsten Roh-Zeitintervallimpuls an.
  • 4 stellt einen Ablaufplan von Beispielvorgängen dar, der zeigt, wie eine Lenkungssteuereinheit die Verzögerung eines Roh-Zeitintervallimpulses erhöhen oder verringern kann, um einen gelenkten Zeitintervallimpuls zu erzeugen.
  • In Block 400 ermittelt die Lenkungssteuereinheit, ob die Lenkung aktiviert ist. Dies kann durch Prüfen des Wertes eines Eingangs erfolgen. Der Wert des Eingangs kann als ein einzelnes Bit in einem Register gespeichert werden. Wenn die Lenkungssteuereinheit feststellt, dass die Lenkung aktiviert ist, geht die Steuerung zu Block 402 über. Wenn die Lenkungssteuereinheit feststellt, dass die Lenkung deaktiviert ist, endet der Prozess.
  • In Block 402 beginnt eine Schleife, in der die Lenkungssteuereinheit einen Lenkungszähler erhöht, bis der Lenkungszähler gleich oder größer als die Lenkungsrate ist. Der Vergleich des Lenkungszählerwertes und der Lenkungsrate kann durch Verwenden einer zum Vergleichen zweier Werte eingerichteten Hardware erfolgen, die eine logische „1“ ausgibt, wenn die Werte gleich sind oder der Lenkungszähler größer als die Lenkungsrate ist. Wenn der Lenkungszähler nicht gleich oder größer als die Lenkungsrate ist, geht die Steuerung zu Block 404 über. Wenn der Lenkungszähler gleich oder größer als die Lenkungsrate ist, geht die Steuerung zu Block 406 über.
  • In Block 404 wird der Lenkungszähler erhöht. In manchen Realisierungen kann der Lenkungszähler als Reaktion auf eine externe Quelle, wie beispielsweise einen Oszillatorimpuls, erhöht werden. Nach dem Erhöhen des Lenkungszählers kehrt die Steuerung zu Block 402 zurück.
  • Die Steuerung ging von Block 402 zu Block 406 über, wenn die Lenkungssteuereinheit festgestellt hat, dass der Lenkungszähler gleich oder größer als die Lenkungsrate ist. In Block 406 ermittelt die Lenkungssteuereinheit, ob der Lenkungsmodus so eingestellt ist, dass die Verzögerung erhöht wird. Das Ermitteln, ob der Lenkungsmodus so eingestellt ist, dass die Verzögerung erhöht wird, kann durch Betrachten des Wertes eines Eingangs erfolgen. Der Wert des Eingangs kann auch als einzelnes Bit in einem Register gespeichert werden. Die Lenkungssteuereinheit kann so gestaltet sein, dass eine logische „1“ angibt, dass der Lenkungsmodus so eingestellt ist, dass die Verzögerung erhöht wird, wobei in diesem Fall eine logische „0“ angibt, dass der Lenkungsmodus so eingestellt ist, dass die Verzögerung verringert wird. Die Lenkungssteuereinheit kann auch so gestaltet sein, dass eine logische „0“ angibt, dass der Lenkungsmodus so eingestellt ist, dass die Verzögerung erhöht wird, wobei in diesem Fall eine logische „1“ angibt, dass der Lenkungsmodus so eingestellt ist, dass die Verzögerung verringert wird. Wenn die Lenkungssteuereinheit feststellt, dass der Lenkungsmodus so eingestellt ist, dass die Verzögerung erhöht wird, geht die Steuerung zu Block 408 über. Wenn die Lenkungssteuereinheit feststellt, dass der Lenkungsmodus so eingestellt ist, dass die Verzögerung verringert wird, geht die Steuerung zu Block 410 über.
  • In Block 408 sendet die Lenkungssteuereinheit eine logische „1“ an den Ausgang, der dem Erhöhen des Verzögerungswertes entspricht. Die logische „1“ zeigt anderer Hardware an, dass der Verzögerungswert erhöht werden sollte. Dann geht die Steuerung zu Block 412 über.
  • Die Steuerung ging zu Block 410 über, wenn die Lenkungssteuereinheit in Block 406 festgestellt hat, dass der Lenkungsmodus nicht so eingestellt war, dass die Verzögerung verringert wird. In Block 410 sendet die Lenkungssteuereinheit eine logische „1“ an den Ausgang, der dem Verringern des Verzögerungswertes entspricht. Der Ausgabewert zeigt anderer Hardware an, dass der Verzögerungswert verringert werden sollte. Dann geht die Steuerung zu Block 412 über.
  • Die Steuerung ging zu Block 412 über, nachdem die Lenkungssteuereinheit in Block 408 bzw. 410 einen Wert ausgegeben hat, der angibt, dass der Verzögerungswert erhöht oder verringert werden sollte. In Block 412 setzt die Lenkungssteuereinheit den Lenkungssteuerwert auf den Lenkungsinitialisierungswert zurück. Bei normalem Betrieb beträgt der Lenkungsinitialisierungswert allgemein null, es sei denn die Lenkungsrate wurde kürzlich aktualisiert.
  • 5 stellt einen Ablaufplan von Beispielvorgängen dar, der zeigt, wie eine Verzögerungseinheit einen Roh-Zeitintervallimpuls verzögern kann, um einen gelenkten Zeitintervallimpuls zu erzeugen.
  • In Block 500 empfängt die Verzögerungseinheit einen Roh-Zeitintervallimpuls von einem Zeitquellenoszillator. Wie vorstehend erläutert, übermittelt der Zeitquellenoszillator einen Impuls, der gleich der für den Zeitwert verwendeten Mindestzeiteinheit ist. Wenn somit der Zeitwert die Anzahl von Mikrosekunden seit einer Epoche verfolgt, übermittelt der Zeitquellenoszillator jede Mikrosekunde einen Impuls. Dann geht die Steuerung zu Block 502 über.
  • Block 502 stellt den Beginn der Schleife der Verzögerungsintervallanzahl dar. Die Verzögerungsintervallanzahl beträgt zu Beginn null. Jede nachfolgende Schleife beginnt mit der Verzögerungsintervallanzahl, die um eins größer als die vorherige Schleife ist. Dann geht die Steuerung zu Block 504 über.
  • In Block 504 kann die Verzögerungseinheit einen Gitteroszillatorimpuls empfangen. Wie vorstehend erläutert, legt der Gitteroszillatorimpuls ein Mindestintervall fest, um das der Roh-Zeitintervallimpuls verzögert oder vorgerückt werden kann. Der Gitteroszillator besitzt eine gleich große oder höhere Frequenz als der Zeitquellenoszillator. Wenn die Verzögerungseinheit einen Gitteroszillatorimpuls empfängt, geht die Steuerung zu Block 506 über. Wenn die Verzögerungseinheit keinen Gitteroszillatorimpuls empfängt, geht die Steuerung zu Block 508 über.
  • In Block 508 erhöht die Verzögerungseinheit die Verzögerungsintervallanzahl. Die Verzögerungsintervallanzahl ist gleich der Anzahl der seit dem Empfangen des Roh-Zeitintervallimpulses empfangenen Gitteroszillatorimpulse. Dann geht die Steuerung zu Block 508 über.
  • Die Steuerung ging zu Block 508 über, wenn die Verzögerungseinheit in Block 504 keinen Gitteroszillatorimpuls empfangen hat. Die Steuerung ging ebenfalls zu Block 508 über, nachdem die Verzögerungseinheit die Verzögerungsintervallanzahl in Block 506 um Eins erhöht hat. In Block 508 ermittelt die Verzögerungseinheit, ob die Verzögerungsintervallanzahl gleich dem Verzögerungswert ist. Der Verzögerungswert stellt die Anzahl von Verzögerungsintervallen dar, um die jeder Roh-Zeitintervallimpuls verzögert werden sollte, um einen gelenkten Zeitintervallimpuls zu erzeugen. Wenn die Verzögerungsintervallanzahl gleich dem Verzögerungswert ist, geht die Steuerung zu Block 510 über. Wenn die Verzögerungsintervallanzahl nicht gleich dem Verzögerungswert ist, geht die Steuerung zurück zu Block 502, wo die Schleife des Verzögerungsintervallzählers erneut beginnt.
  • In Block 510 endet die Schleife der Verzögerungsintervallanzahl. Bei Beendigung ist die Verzögerungsintervallanzahl gleich dem Verzögerungswert. Dann geht die Steuerung zu Block 512 über.
  • In Block 512 erzeugt die Verzögerungseinheit den gesteuerten Zeitintervallimpuls. Wie vorstehend erläutert, kann es sich hierbei um eine Schaltung handeln, die eine logische „1“ erzeugt. Zum Beispiel kann die Verzögerungseinheit eine Schaltung besitzen, um in Block 508 die Verzögerungsintervallanzahl und den Verzögerungswert zu vergleichen. Die Schaltung kann so gestaltet sein, dass die Ausgabe äquivalent zu einer logischen „1“ ist, wenn die Verzögerungsintervallanzahl und der Verzögerungswert gleich sind. Dies kann dann Hardwarezählern oder Registern übermittelt werden, die um eins erhöht werden, wenn eine logische „1“ als eine Eingabe empfangen wird. Dann geht die Steuerung zu Block 514 über.
  • In Block 514 wird die Verzögerungsintervallanzahl auf null zurückgesetzt. Dadurch wird die Verzögerungseinheit initialisiert, so dass sie nach Empfangen eines weiteren Roh-Zeitintervallimpulses ordnungsgemäß funktioniert. In manchen Realisierungen weist das Zurücksetzen der Verzögerungsintervallanzahl ein Zurücksetzen eines Hardwarezählers auf null auf.
  • Als Beispielsablaufpläne stellen die abgebildeten Ablaufpläne Vorgänge in einer Beispielreihenfolge dar, von der Ausführungsformen abweichen können (z.B. können Vorgänge in einer anderen Reihenfolge als veranschaulicht und/oder parallel durchgeführt werden). Zum Beispiel handelt es sich bei Block 508 in 5 unter Umständen nicht um einen abgegrenzten Vorgang. In der in 3 dargestellten Ausführungsform können der Vergleichsschaltung 326 die Werte im Verzögerungszähler 322 und im Register 324 als konstante Eingaben vorliegen. Somit wird in der Ausführungsform der Vergleich zwischen der Verzögerungsintervallanzahl und dem Verzögerungswert im Gegensatz zu einem abgegrenzten Vorgang fortwährend durchgeführt.
  • An den hierin beschriebenen Ausführungsformen sind viele Variationen möglich. Obwohl NTP als ein Beispielprotokoll verwendet wird, sind andere Protokolle verfügbar, die demselben oder einem ähnlichen Zweck dienen, wie beispielsweise das Protokoll DAYTIME, das „Precision Time Protocol“ und das „Time Protocol“. In Zukunft können auch neue Protokolle entwickelt werden. Das Verwenden von NTP soll lediglich die Erläuterung erleichtern und schränkt weder den Gegenstand der Erfindung allein auf das NTP ein, noch wird der Gegenstand der Erfindung auf Protokolle beschränkt, die zu der Zeit vorhanden waren, als die Erfindung gemacht wurde. Zudem wird das NTP hauptsächlich hinsichtlich des Sendens eines Wertes an ein System und gelegentlich als Reaktion auf eine Anfrage seitens des Systems erläutert. NTP und andere Protokolle können unterschiedliche Realisierungen besitzen, die weder eine Anfrage noch ein Senden einer einzelnen Antwort mit sich bringen. Zum Beispiel unterstützt das NTP eine Impuls-pro-Sekunde-Realisierung, bei welcher der NTP-Server dem System jede Sekunde einen Impuls sendet.
  • Darüber hinaus wird der Zeitquellenoszillator so erläutert, dass er einen Impuls in einem durch den korrigierten Zeitintervallzähler unterstützten Mindestintervall übermittelt. Manche Realisierungen können Zähler verwenden, die in der Lage sind, kleinere Intervalle zu unterstützen als diejenigen, mit denen der Zeitquellenoszillator zu schwingen eingerichtet ist. Zum Beispiel kann ein korrigierter Zeitintervallzähler groß genug sein, um Mikrosekundenintervalle zu unterstützen, der Zeitquellenoszillator jedoch unter Umständen nur einen Impuls alle zehn Mikrosekunden senden.
  • Die Lenkungsrate kann durch verschiedene Komponenten in einem System ermittelt werden. Zum Beispiel kann die Steuerhardware oder der Steuercode eingerichtet sein, die Lenkungsrate zu ermitteln. Die Lenkungsrate kann zudem durch die NTP-Schnittstelle oder auf einem Prozessor ausgeführte Software ermittelt werden. Dies stellt keine abschließende Liste von Variationen dar, und viele weitere sind möglich, wie für den Fachmann ersichtlich ist.
  • Gleichermaßen kann der Steuercode an vielen unterschiedlichen Orten vorhanden sein, obwohl er in der Zeitquellen-Steuereinheit dargestellt ist. Zum Beispiel kann der Steuercode in der NTP-Schnittstelle, innerhalb einer anderen Komponente in einem System oder als eine bestimmte Komponente selbst vorhanden sein. Der Steuercode kann in Hardware, Software oder Firmware realisiert sein.
  • In 2 ist die Steuerhardware 210 so dargestellt, dass sie einen einzigen Ausgang aufweist, der zu jedem aus dem Satz der korrigierten Zeitintervallzähler 208 führt. Die Steuerhardware kann für jeden aus dem Satz der korrigierten Zeitintervallzähler 208 einen Ausgang aufweisen. Andere in den Figuren dargestellte Ausgänge, die zu mehreren Komponenten führen, können beim Aufteilen zu jeder Komponente an verschiedenen Stellen innerhalb oder außerhalb der die Funktionseinheiten darstellenden Kästchen realisiert werden. Anstelle des Aufteilens zu jeder Komponente können die Ausgänge zudem in Serie angeordnet werden, so dass der Ausgang zu einer Komponenten führt, die einen Ausgang besitzt, der zu einer weiteren Komponente führt, usw.
  • Bei der Erläuterung von 3 wird die Realisierung des Registers 324 beschrieben. Die tatsächliche Realisierung kann von derjenigen der Erläuterung abweichen, und somit ist der Gegenstand der Erfindung nicht auf die erläuterten Realisierungen beschränkt. Zum Beispiel könnte das Register 324 einen zusätzlichen Eingang besitzen, der den Wert des Registers 324 auf null setzt. Dies würde es einer externen Quelle ermöglichen, den Wert des Registers 324 bei Bedarf auf null zu setzen, um den Wert des Registers 324 vor dem Überlaufen zu bewahren. Dies würde zusätzliche Flexibilität bieten, indem die Hardwareabhängigkeit von einem bestimmten Verhältnis zwischen den Gitteroszillatorimpulses und den Roh-Zeitintervallimpulses beseitigt würde. Somit könnten unterschiedliche Impulszeiteinteilungen mit derselben Hardware der Verzögerungseinheit 320 verwendet werden. Ebenso könnte zusätzliche Hardware in die Verzögerungseinheit integriert werden, die einen geeigneten Zeitpunkt zum Zurücksetzen des Wertes des Registers 324 ermittelt.
  • Wie für den Fachmann ersichtlich ist, können Aspekte des Gegenstands der vorliegenden Erfindung als ein System, Verfahren, oder Computerprogrammprodukt ausgebildet werden. Dementsprechend können Aspekte des Gegenstands der vorliegenden Erfindung in Form einer vollständigen Hardwareausführungsform, einer vollständigen Softwareausführungsform (darunter Firmware, residente Software, Mikro-Code usw.) oder in einer Ausführungsform ausgebildet werden, die Software- und Hardwareaspekte kombiniert, was hierin sämtlich allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet sein kann. Weiterhin können Aspekte des vorliegenden Gegenstands der Erfindung in Form eines Computerprogrammprodukts ausgebildet werden, das in einem oder mehreren computerlesbaren Medien mit darauf enthaltenem computerlesbarem Programmcode enthalten sein kann.
  • Jede beliebige Kombination aus einem oder mehreren computerlesbaren Medien kann verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel, ohne auf diese beschränkt zu sein, um ein System, eine Vorrichtung oder eine Einheit elektronischer, magnetischer, optischer, elektromagnetischer, Infrarot oder Halbleiter verwendender Art sowie jede beliebige geeignete Kombination des Vorgenannten handeln. Zu spezielleren Beispielen für das computerlesbare Speichermedium kann Folgendes gehören (nicht abschließende Liste): eine elektrische Verbindung mit einer oder mehreren Leitungen, eine transportable Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (random access memory (RAM)), ein Nur-Lese-Speicher (read-only memory (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (erasable programmable read-only memory (EPROM) oder Flash-Speicher), ein Lichtwellenleiter, ein transportabler Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination des Vorgenannten. Im Kontext dieses Dokuments kann es sich bei einem computerlesbaren Speichermedium um jedes gegenständliche Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zum Ausführen von Anweisungen beinhalten oder speichern kann.
  • Zu einem computerlesbaren Signalmedium kann ein verbreitetes Datensignal mit darin zum Beispiel in einem Basisband oder als Teil einer Trägerwelle ausgebildetem computerlesbarem Programmcode zählen. Solch ein verbreitetes Signal kann in jeder beliebigen einer Vielfalt von Formen ausgebildet werden, darunter, ohne auf diese beschränkt zu sein, elektromagnetische, optische oder jede geeignete Kombination davon. Bei einem computerlesbaren Signalmedium kann es sich um jedes computerlesbare Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen übertragen, verbreiten oder transportieren kann.
  • Der in einem computerlesbaren Medium enthaltene Programmcode kann mittels eines beliebigen geeigneten Mediums übertragen werden, einschließlich, ohne auf diese beschränkt zu sein, kabellose, kabelgebundene, Lichtwellenleiterkabel, Hochfrequenz (HF) usw. oder eine beliebige geeignete Kombination des Vorgenannten.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte des Gegenstands der vorliegenden Erfindung kann in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder Ähnliches und herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jede beliebige Art von Netzwerk, darunter ein lokales Netzwerk (local area network (LAN)) oder ein Weitverkehrsnetzwerk (wide area network (WAN)) verbunden sein, oder es kann eine Verbindung zu einem externen Computer (zum Beispiel mittels eines Internetdienstanbieters über das Internet) hergestellt werden.
  • Aspekte des Gegenstands der vorliegenden Erfindung werden unter Bezugnahme auf Abbildungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen des Gegenstands der Erfindung beschrieben. Es versteht sich, dass jeder Block der Abbildungen von Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Abbildungen von Ablaufplänen und/oder den Blockschaubildern durch Computerprogrammanweisungen realisiert werden kann. Diese Computerprogrammanweisungen können einem Prozessor eines universellen Computers, eines zweckbestimmten Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine so zu erzeugen, dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Realisieren der im Block oder in den Blöcken des Ablaufplans und/oder Blockschaubildes angegebenen Funktionen/Handlungen erzeugen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anleiten kann, auf eine bestimmte Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel einschließlich Anweisungen erzeugen, welche die im Block oder in den Blöcken des Ablaufplans und/oder des Blockschaubildes angegebene Funktion/Handlung ausführen.
  • Die Computerprogrammanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von auf dem Computer, der anderen programmierbaren Vorrichtung oder den anderen Einheiten auszuführenden Operationsschritten hervorzurufen, um einen auf dem Computer realisierten Prozess so zu erzeugen, dass die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführten Anweisungen Prozesse zum Realisieren der im Block oder in den Blöcken des Ablaufplans und/oder Blockschaubildes angegebenen Funktionen/Handlungen bereitstellen.
  • 6 stellt ein Beispielcomputersystem mit einer Zeitquellen-Steuereinheit dar. Ein Computersystem enthält eine Prozessoreinheit 601 (die möglicherweise mehrere Prozessoren, mehrere Kerne, mehrere Knoten enthält und/oder Multithreading realisiert). Das Computersystem 601 enthält einen Speicher 603. Bei dem Speicher 603 kann es sich um einen Systemspeicher (z.B. eines oder mehrere von SRAM, DRAM, Zero-Capacitor-RAM, Twin-Transistor-RAM, eDRAM, EDO RAM, DDR RAM, EEPROM, NRAM, RRAM, SONOS, PRAM, usw.) oder jedes oder mehrere der vorstehend bereits beschriebenen möglichen Verwirklichungen maschinenlesbarer Medien handeln. Das Computersystem enthält zudem einen Bus 611 (z.B. PCI, ISA, PCI-Express, einen HyperTransport®-Bus, InfiniBand®-Bus, NuBus-Bus usw.), E/A-Einheiten 609 (z.B. eine Tastatur, Maus, einen Monitor, ein Mikrofon, einen Lautsprecher usw.), eine Netzwerkschnittstelle 607 (z.B. eine ATM-Schnittstelle, eine Ethernet-Schnittstelle, eine Frame-Relay-Schnittstelle, eine SONET-Schnittstelle, eine drahtlose Schnittstelle usw.), einen Cachespeicher 617 (einen direkt zugeordneten Cachespeicher, einen zweifach assoziierenden Cachespeichersatz, einen vollständig assoziierenden Cachespeicher usw.), einen Gitteroszillator 621, einen Zeitquellenoszillator 623, eine Zeitquellen-Steuereinheit 625 und eine oder mehrere Speichereinheit(en) 613 (z.B. einen optischen Speicher, magnetischen Speicher usw.). Bei dem Cachespeicher 617 kann es sich um Cachespeicher niederer Ebene (z.B. in einem Prozessor ausgebildeten L1-Cachespeicher) oder Cachespeicher höherer Ebene (z.B. L2-Cachespeicher, L3-Cachespeicher usw.) handeln. Die Zeitquellen-Steuereinheit 625 verkörpert Funktionalität zum Realisieren der vorstehend beschriebenen Ausführungsformen. Die Zeitquellen-Steuereinheit 625 funktioniert, wie vorstehend beschrieben, unter Verwendung einer Lenkungsrate, die durch Informationen bereitgestellt wird, die durch eine externe Zeitquelle bereitgestellt werden, oder von diesen abgeleitet wird, um einen Impuls vom Zeitquellenoszillator 623 anzupassen. Jede dieser Funktionalitäten kann teilweise (oder vollständig) in Hardware und/oder auf der Verarbeitungseinheit 601 realisiert werden. Zum Beispiel kann die Funktionalität mit einer anwendungsspezifischen integrierten Schaltung, in Logik, die in der Verarbeitungseinheit 601 realisiert ist, in einem Co-Prozessor auf einer Peripherieeinheit oder Karte usw. realisiert werden. Des Weiteren können Realisierungen weniger oder zusätzliche, in 6 nicht veranschaulichte Komponenten enthalten (z.B. Videokarten, Audiokarten, zusätzliche Netzwerkschnittstellen, Peripherieeinheiten usw.). Die Prozessoreinheit 601, die Speichereinheit(en) 613, die Netzwerkschnittstelle 607, der Cachespeicher 617 und die E/A-Einheiten 609 sind mit dem Bus 611 verbunden. Obwohl der Speicher 603 als mit dem Bus 611 verbunden veranschaulicht ist, kann er mit der Prozessoreinheit 601 verbunden sein.
  • Obwohl die Ausführungsformen unter Bezugnahme auf vielfältige Realisierungen und Verwendungen beschrieben sind, versteht es sich, dass diese Ausführungsformen veranschaulichend sind und dass der Umfang des Gegenstands der Erfindung nicht auf sie beschränkt ist. Im Allgemeinen können Techniken für die Gestaltung von Computerarchitekturen, wie sie hierin beschrieben sind, mit Einrichtungen realisiert werden, die mit einem oder mehreren beliebigen Hardwaresystemen konsistent sind. Viele Variationen, Modifikationen, Hinzufügungen und Verbesserungen sind möglich.
  • Eine Vielzahl von Instanzen kann für hierin als einzelne Instanz beschriebene Komponenten, Operationen oder Strukturen bereitgestellt werden. Schließlich sind Grenzen zwischen verschiedenen Komponenten, Operationen und Datenspeichern gewissermaßen beliebig und bestimmte Operationen sind im Kontext spezifischer veranschaulichender Konfigurationen veranschaulicht. Andere Zuordnungen von Funktionalität sind denkbar und können unter den Umfang des Gegenstands der Erfindung fallen. Im Allgemeinen können in den beispielhaften Konfigurationen als getrennte Komponenten dargestellte Strukturen und Funktionalitäten als eine kombinierte Struktur oder Komponente realisiert werden. Gleichermaßen können als eine einzelne Komponente dargestellte Strukturen und Funktionalitäten als getrennte Komponenten realisiert werden. Diese und weitere Variationen, Modifikationen, Hinzufügungen und Verbesserungen können unter den Umfang des Gegenstands der Erfindung fallen.

Claims (10)

  1. Verfahren zur Erzeugung und Verteilung einer synchronisierten Zeitquelle, aufweisend: Empfangen einer Zeitangabe, wobei die Angabe mindestens eines von aktuellem Datum und aktueller Uhrzeit angibt; Feststellen, dass ein durch einen ersten Oszillator (104; 202; 623) eines Computersystems (100; 600) übermittelter Roh-Zeitintervallimpuls zumindest teilweise auf der Grundlage der Zeitangabe angepasst werden sollte; als Reaktion auf das Feststellen, dass der durch den ersten Oszillator des Computersystems übermittelte Roh-Zeitintervallimpuls angepasst wird, Erzeugen eines gelenkten Zeitintervallimpulses zumindest teilweise auf der Grundlage des Roh-Zeitintervallimpulses und der Zeitangabe; Verteilen des gelenkten Zeitintervallimpulses auf eine Vielzahl von Hardwarekomponenten (120, 130; 208; 601) des Computersystems, welche die Ausgabe für Zeitstempel verwenden; Schreiben einer Angabe in ein Lenkungssteuerregister (122, 132; 208), wobei die Angabe mindestens eines angibt von ob das Anpassen des Roh-Zeitintervallimpulses aktiviert ist, ob das Anpassen des Roh-Zeitintervallimpulses ein Verzögern des Roh-Zeitintervallimpulses oder ein Vorrücken des Roh-Zeitintervallimpulses aufweist, einer Lenkungsrate, dem Reziprokwert der Lenkungsrate und einem Anfangswert für einen Zähler, wobei es sich beim Vorrücken des Roh-Zeitintervallimpulses um ein Verringern einer Verzögerung des Roh-Zeitintervallimpulses handeln kann; Empfangen einer Angabe eines Gitteroszillatorimpulses von einem zweiten Oszillator (106; 206; 621); als Reaktion auf das Empfangen der Angabe des Gitteroszillatorimpulses von dem zweiten Oszillator, Erhöhen eines Lenkungszählers (304), wobei es sich bei dem im Lenkungszähler beherbergten Wert um den Lenkungszählerwert handelt; Feststellen, dass der im Lenkungszähler beherbergte Lenkungszählerwert gleich oder größer als eines von der Lenkungsrate und dem Reziprokwert der Lenkungsrate ist; und als Reaktion auf das Feststellen, dass der im Lenkungszähler beherbergte Lenkungszählerwert gleich oder größer als eines von der Lenkungsrate und dem Reziprokwert der Lenkungsrate ist, Übermitteln einer Angabe, die eines von einem Erhöhen eines Verzögerungswertes und einem Verringern eines Verzögerungswertes angibt.
  2. Verfahren nach Anspruch 1, wobei die Zeitangabe von einer für das Computersystem externen Quelle (102; 202) empfangen wird.
  3. Verfahren nach Anspruch 1, wobei die Zeitangabe weiterhin mindestens eines von einem Wert für Impulse pro Sekunde und einer Lenkungsrate aufweist.
  4. Verfahren nach Anspruch 1, wobei das Erzeugen des gelenkten Zeitintervallimpulses zumindest teilweise auf der Grundlage des Roh-Zeitintervallimpulses und der Zeitangabe ein Erzeugen einer Ausgabe aufweist, wobei die Ausgabe äquivalent zum Roh-Zeitintervallimpuls nach dem Anpassen ist, so dass sie mit der Zeitangabe synchronisiert ist.
  5. Verfahren nach Anspruch 1, weiterhin aufweisend ein Ermitteln einer Lenkungsrate zumindest in Teilen auf der Grundlage der Zeitangabe.
  6. Verfahren nach Anspruch 1, weiterhin aufweisend: Empfangen einer Angabe, die eines von einem Erhöhen eines Verzögerungswertes und einem Verringern eines Verzögerungswertes angibt; als Reaktion auf das Empfangen der Angabe, die eines von einem Erhöhen des Verzögerungswertes und einem Verringern des Verzögerungswertes angibt, eines von einem Erhöhen eines Verzögerungswertregisters oder einem Verringern eines Verzögerungswertregisters; Empfangen einer Angabe des Roh-Zeitintervallimpulses; als Reaktion auf das Empfangen der Angabe des Roh-Zeitintervallimpulses, Erhöhen eines Verzögerungsintervallzählers als Reaktion auf ein Empfangen einer Angabe eines Gitteroszillatorimpulses von einem zweiten Oszillator; Feststellen, dass der Verzögerungswert gleich dem Wert des Verzögerungsintervallzählers ist; und als Reaktion auf das Feststellen, dass der Verzögerungswert gleich dem Wert des Verzögerungsintervallzählers ist, Übermitteln eines gelenkten Zeitintervallimpulses, der das Verstreichen eines Zeitintervalls angibt.
  7. Computerprogrammprodukt mit einem als Programmcode gespeicherten Datenverarbeitungsprogramm, das bei Verwendung in einem Computer das Verfahren nach einem der Ansprüche 1 bis 6 ausführt.
  8. Vorrichtung zum Erzeugung und Verteilung einer synchronisierten Zeitquelle, aufweisend: einen ersten Oszillator (104; 202; 623), der eingerichtet ist, in regelmäßigen oder nahezu regelmäßigen Intervallen einen Roh-Zeitintervallimpuls zu empfangen, wobei es sich bei dem Roh-Zeitintervallimpuls um eine zeitbezogene Ausgabe handelt; einen zweiten Oszillator (106; 206; 621) der eingerichtet ist, einen Gitteroszillatorimpuls in regelmäßigen oder nahezu regelmäßigen Intervallen zu übermitteln, wobei der zweite Oszillator eine Frequenz besitzt, die gleich oder größer als der erste Oszillator ist; eine mit dem ersten Oszillator verbundene Zeitquellen-Steuereinheit (212; 301), die eingerichtet ist: eine Zeitangabe zu empfangen, wobei die Zeitangabe mindestens eines von aktuellem Datum und aktueller Uhrzeit angibt; festzustellen, dass der Roh-Zeitintervallimpuls zumindest teilweise auf der Grundlage der Zeitangabe angepasst wird; als Reaktion auf ein Feststellen, dass der Roh-Zeitintervallimpuls angepasst wird, einen gelenkten Zeitintervallimpuls zumindest teilweise auf der Grundlage des Roh-Zeitintervallimpulses und der Zeitangabe zu erzeugen; und den gelenkten Zeitintervallimpuls auf eine Vielzahl von Hardwarekomponenten (120, 130; 208; 601) des Computersystems (122, 132; 208) zu verteilen, welche die Ausgabe für Zeitstempel verwenden; und einen oder mehrere mit der Zeitquellen-Steuereinheit verbundene korrigierte Zeitintervallzähler (208), die eingerichtet sind, einen Zeitwert zumindest in Teilen auf der Grundlage der Ausgabe von der Zeitquellen-Steuereinheit zu beherbergen, wobei die Zeitquellen-Steuereinheit weiterhin aufweist: einen Lenkungszähler (304), der eingerichtet ist, eine Anzahl von vom zweiten Oszillator empfangenen Gitteroszillatorimpulsen zu empfangen; ein Lenkungssteuerregister (302), das eingerichtet ist, Angaben von mindestens einem zu beherbergen von ob das Anpassen des Roh-Zeitintervallimpulses aktiviert ist, ob das Anpassen des Roh-Zeitintervallimpulses ein Verzögern des Roh-Zeitintervallimpulses oder ein Vorrücken des Roh-Intervallimpulses aufweist, einer Lenkungsrate, dem Reziprokwert der Lenkungsrate und einem Anfangswert für den Lenkungszähler, wobei es sich beim Vorrücken des Roh-Zeitintervallimpulses um ein Verringern einer Verzögerung des Roh-Zeitintervallimpulses handeln kann; und eine mit dem Register und dem Zähler verbundene Vergleichsschaltung (306), die eingerichtet ist, zu ermitteln, ob ein erster Wert größer oder gleich einem zweiten Wert ist, und einen Wert auszugeben, der angibt, dass der erste Wert größer oder gleich dem zweiten Wert ist.
  9. Vorrichtung nach Anspruch 8, wobei die Zeitquellen-Steuereinheit weiterhin aufweist: ein Verzögerungswertregister (324), das eingerichtet ist, einen Verzögerungswert zu beherbergen, den Verzögerungswert als Reaktion auf ein Empfangen einer Angabe zum Erhöhen des Verzögerungswertes zu erhöhen und den Verzögerungswert als Reaktion auf ein Empfangen einer Angabe zum Verringern des Verzögerungswertes zu verringern, wobei der Verzögerungswert eine Anzahl von Intervallen angibt, wobei die Intervalle der Übermittlung eines Gitteroszillatorimpulses vom zweiten Oszillator entsprechen; einen Verzögerungsintervallzähler (322), der eingerichtet ist, eine Anzahl von vom zweiten Oszillator empfangenen Gitteroszillatorimpulsen als Reaktion auf ein Empfangen eines Roh-Zeitintervallimpulses vom zweiten Oszillator zu beherbergen; und eine mit dem Verzögerungswertregister und dem Verzögerungsintervallzähler verbundene Vergleichsschaltung (326), die eingerichtet ist, zu ermitteln, ob ein erster Wert gleich einem zweiten Wert ist, und einen Wert auszugeben, der angibt, dass der erste Wert gleich dem zweiten Wert ist.
  10. Vorrichtung nach Anspruch 8, weiterhin aufweisend eine Schnittstelle zu einer externen Zeitquelle (102; 202), die eingerichtet ist, eine Zeitangabe zu empfangen.
DE102013222471.0A 2012-11-15 2013-11-06 Erzeugung und verteilung einer synchronisierten zeitquelle Active DE102013222471B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/677,495 2012-11-15
US13/677,495 US9104364B2 (en) 2012-11-15 2012-11-15 Generation and distribution of steered time interval pulse to a plurality of hardware components of the computing system

Publications (2)

Publication Number Publication Date
DE102013222471A1 DE102013222471A1 (de) 2014-05-15
DE102013222471B4 true DE102013222471B4 (de) 2018-08-02

Family

ID=49818314

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013222471.0A Active DE102013222471B4 (de) 2012-11-15 2013-11-06 Erzeugung und verteilung einer synchronisierten zeitquelle

Country Status (3)

Country Link
US (1) US9104364B2 (de)
DE (1) DE102013222471B4 (de)
GB (1) GB2509376B (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150123977A1 (en) * 2013-11-06 2015-05-07 Nvidia Corporation Low latency and high performance synchronization mechanism amongst pixel pipe units
DE102020202690B3 (de) 2020-03-03 2021-07-15 Zf Friedrichshafen Ag Synchronisieren eines Slave-Zeitgebers mit einem Master-Zeitgeber
TWI779921B (zh) * 2021-11-08 2022-10-01 優達科技股份有限公司 修正1秒脈衝信號的方法及授時接收器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918041A (en) 1997-11-26 1999-06-29 International Business Machines Corporation Method and apparatus for automatically adjusting a clock
US20050120258A1 (en) 2003-11-28 2005-06-02 Takeshi Sohda Synchronization method, computer system and program
US20070260906A1 (en) 2006-05-08 2007-11-08 Corredoura Paul L Clock synchronization method and apparatus
WO2012141711A1 (en) 2011-04-14 2012-10-18 Hewlett-Packard Development Company, L.P. A clock signal generating apparatus

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4903251A (en) 1989-09-05 1990-02-20 Ford Motor Company Accuracy adjustment for time-of-day clock using a microcontroller
US5041798A (en) * 1990-06-12 1991-08-20 International Business Machines Corporation Time reference with proportional steering
US6141296A (en) 1999-06-18 2000-10-31 Ford Motor Company Time-of-day clock assembly
US7356725B2 (en) 2005-09-09 2008-04-08 International Business Machines Corporation Method and apparatus for adjusting a time of day clock without adjusting the stepping rate of an oscillator
US7454648B2 (en) * 2005-09-09 2008-11-18 International Business Machines Corporation System and method for calibrating a time of day clock in a computing system node provided in a multi-node network
US7617410B2 (en) 2006-09-15 2009-11-10 International Business Machines Corporation Simultaneously updating logical time of day (TOD) clocks for multiple cpus in response to detecting a carry at a pre-determined bit position of a physical clock
US7451339B2 (en) 2006-09-15 2008-11-11 International Business Machines Corporation Pulse-per-second attachment for STP
KR101009420B1 (ko) 2008-10-08 2011-01-19 한국전자통신연구원 통합네트워크에서 단말 시각 동기화 방법 및 장치
US8121050B2 (en) 2010-04-08 2012-02-21 Exelis Inc. Maintaining time of day synchronization

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918041A (en) 1997-11-26 1999-06-29 International Business Machines Corporation Method and apparatus for automatically adjusting a clock
US20050120258A1 (en) 2003-11-28 2005-06-02 Takeshi Sohda Synchronization method, computer system and program
US20070260906A1 (en) 2006-05-08 2007-11-08 Corredoura Paul L Clock synchronization method and apparatus
WO2012141711A1 (en) 2011-04-14 2012-10-18 Hewlett-Packard Development Company, L.P. A clock signal generating apparatus

Also Published As

Publication number Publication date
US20140136877A1 (en) 2014-05-15
US9104364B2 (en) 2015-08-11
DE102013222471A1 (de) 2014-05-15
GB2509376A (en) 2014-07-02
GB201319721D0 (en) 2013-12-25
GB2509376B (en) 2014-12-31

Similar Documents

Publication Publication Date Title
DE69731749T2 (de) Verfahren und vorrichtung zur synchronisation von zeitmarkierungen
DE102015104441A1 (de) Hochauflösende Timing-Synchronisationsfunktion
DE112017004920T5 (de) Geschützte Echtzeituhr mit Hardwareverschaltungen
DE112019002984T5 (de) Durchführung von phy-level-hardware-zeitstempelung und zeitsynchronisierung in kostenoptimierten umgebungen
DE102007021619A1 (de) Taktsynchronisierungsverfahren und -vorrichtung
DE112013000758T5 (de) Erzeugen von Taktsignalen für einen zyklusgenauen, zyklusreproduzierbaren FPGA-gestützten Hardware-Beschleuniger
DE102013222471B4 (de) Erzeugung und verteilung einer synchronisierten zeitquelle
EP3382629A1 (de) Verfahren und zeitgeber zum bereitstellen von sicherheitsgeschützten zeitangaben
DE112012002223T5 (de) Vorrichtung zur Synchronisation eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne
DE102018105018A1 (de) Radarvorrichtung, Radarsystem und Verfahren zur Erzeugung eines Abtasttaktsignals
DE212017000244U1 (de) Systeme und Techniken zur Phasensynchronisation von lokalen Oszillatorpfaden in oszillatorbetriebenen Schaltungen
DE102021201747A1 (de) PHC Verkettung
DE112018002334T5 (de) Vorrichtungen und verfahren zur übertragung von ereignissen mit einer gleichförmigen latenz auf seriellen kommunikationsverbindungen
DE112011104682B4 (de) Kalibrieren der Strobesignal-Schreiblatenzzeit (CWL) an Spaltenadressen in einem Speichersystem
DE102019104384A1 (de) Erzeugen eines Zeitstempels
DE112017007691T5 (de) Kommunikationssystem, Master-Einrichtung und Slave-Einrichtung
DE112015003343B4 (de) Netzwerksystem, Zeit-Master-Station und Zeit-Slave-Station
CN109302255A (zh) 时间同步控制方法、装置、系统及计算机可读存储介质
DE102020102820A1 (de) Zeitstempel-Ausrichtung über mehrere Rechenknoten
DE102016108224B4 (de) Digitales DLL-Training
DE112021002267T5 (de) System und verfahren zum synchronisieren von knoten in einer netzwerkvorrichtung
EP1639758B1 (de) Verfahren und vorrichtung zum austausch von daten über ein bussystem
DE602005005002T2 (de) Vorrichtung zur Datenkommunikation
DE102016106942B4 (de) Störungsfreie Code-Aktualisierung für einen digital gesteuerten Oszillator
DE202013012476U1 (de) Systeme zur Steigerung der Datenbankzugriffsparallelität mit Hilfe granularer Zeitstempel

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final