-
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.
-
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.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
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.