DE102013209625A1 - Erzeugen von monoton ansteigenden TOD-Werten in einem Multiprozessorsystem - Google Patents

Erzeugen von monoton ansteigenden TOD-Werten in einem Multiprozessorsystem Download PDF

Info

Publication number
DE102013209625A1
DE102013209625A1 DE102013209625A DE102013209625A DE102013209625A1 DE 102013209625 A1 DE102013209625 A1 DE 102013209625A1 DE 102013209625 A DE102013209625 A DE 102013209625A DE 102013209625 A DE102013209625 A DE 102013209625A DE 102013209625 A1 DE102013209625 A1 DE 102013209625A1
Authority
DE
Germany
Prior art keywords
tod
processor
time
value
synchronization
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.)
Ceased
Application number
DE102013209625A
Other languages
English (en)
Inventor
Christian Jacobi
Timothy J. Slegel
Günter Gerwig
Chung-Lung Kevin Shum
Frank Lehnert
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 DE102013209625A1 publication Critical patent/DE102013209625A1/de
Ceased legal-status Critical Current

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/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/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05FSYSTEMS FOR REGULATING ELECTRIC OR MAGNETIC VARIABLES
    • G05F1/00Automatic systems in which deviations of an electric quantity from one or more predetermined values are detected at the output of the system and fed back to a device within the system to restore the detected quantity to its predetermined value or values, i.e. retroactive systems
    • G05F1/10Regulating voltage or current
    • G05F1/46Regulating voltage or current wherein the variable actually regulated by the final control device is dc
    • G05F1/56Regulating voltage or current wherein the variable actually regulated by the final control device is dc using semiconductor devices in series with the load as final control devices
    • G05F1/565Regulating voltage or current wherein the variable actually regulated by the final control device is dc using semiconductor devices in series with the load as final control devices sensing a condition of the system or its load in addition to means responsive to deviations in the output of the system, e.g. current, voltage, power factor
    • G05F1/569Regulating voltage or current wherein the variable actually regulated by the final control device is dc using semiconductor devices in series with the load as final control devices sensing a condition of the system or its load in addition to means responsive to deviations in the output of the system, e.g. current, voltage, power factor for protection
    • G05F1/573Regulating voltage or current wherein the variable actually regulated by the final control device is dc using semiconductor devices in series with the load as final control devices sensing a condition of the system or its load in addition to means responsive to deviations in the output of the system, e.g. current, voltage, power factor for protection with overcurrent detector

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

Ein Verfahren zum Erzeugen von monoton ansteigenden Zeitwerten in einem Multiprozessorsystem kann bereitgestellt werden. Das Verfahren kann das Empfangen von Synchronisationsimpulsen durch einen Prozessor des Multiprozessorsystems und das Verweigern einer Ausführung eines Lesebefehls eines TOD-Wertes in einem Prozessor der Prozessoren aufweisen, wenn die Ausführung des Lesebefehls des TOD-Wertes nach einem vorher festgelegten Zeitraum im Anschluss an einen Synchronisationsimpuls der Synchronisationsimpulse angefordert wird und wenn nach dem vorher festgelegten Zeitraum ein Triggersignal empfangen wurde, das anzeigt, dass von einem zugehörigen Speichersystem neue Daten empfangen worden sind, wobei sich das Speichersystem außerhalb des Prozessors befindet.

Description

  • Bereich der Erfindung
  • Die Erfindung betrifft allgemein ein Verfahren zum Erzeugen von TOD-Werten (Time-of-day-(TOD-)Werten). Die Erfindung betrifft des Weiteren ein TOD-Synchronisationssystem, ein Datenverarbeitungssystem, ein Datenverarbeitungsprogramm und ein Computer-Programmprodukt.
  • Hintergrund der Erfindung
  • Heute können Computer oder Datenverarbeitungssysteme eine Vielzahl von Prozessoren enthalten, von denen jeder ein oder mehrere Programme ausführen kann, um einen Satz von Befehlen als Teil eines Computerprogramms digital zu verarbeiten. Bestimmte Programme erfordern genaue Zeitinformationen für eine ordnungsgemäße Ausführung. Diese Zeitinformationen werden genauer als ”Uhrzeit” (time-of-day (”TOD”)) bezeichnet. Insbesondere ist eine Synchronisierung von monoton ansteigenden Zeitstempeln wichtig. Es muss vermieden werden, dass verschiedene Prozessoren gegebenenfalls nicht monotone TOD-Werte erzeugen. Zuweilen benötigen Software-Anwendungen, zum Beispiel das vollständige Aufzeichnen von Finanztransaktionen, aufgezeichnete TOD-Werte. Beispielsweise werden Datensätze eines Tageszeitgebers gewöhnlich verwendet, um zu verhindern, dass Finanztransaktionen mehrmals gleichzeitig unter Verwendung derselben Gelder ausgeführt werden.
  • Folglich ist die Software darauf angewiesen, dass die Uhrzeit (TOD) eindeutig und strikt monoton ansteigend ist. Bei der S/390-Architektur zum Beispiel kann ein Befehl mit der Bezeichnung ”STORE CLOCK” oder ”STCK” verwendet werden, um eine TOD in einem 64-Bit-(Acht-Byte-)Feld aufzuzeichnen. Damit der TOD-Wert überall in einem Multiprozessorsystem eindeutig ist, können die niederwertigen n Bits durch eine gleichbleibende eindeutige CPU-Nummer ersetzt werden. Ein Impuls kann synchron durch das ganze Multiprozessorsystem verteilt werden, so dass das Bit 64 – n eines Zählers erhöht werden kann. In einem 128-Wege-Multiprozessorsystem sind sieben Bits erforderlich, um ihre 128 CPUs des Multiprozessorsystems zu unterscheiden. Folglich bleiben 64 – 7 Bits für den Zähler übrig, was ein Bit 0:56, sprich null bis 56, zum Ergebnis hat. Wenn eine CPU die TOD liest, ”sieht” sie den aktuellen Wert der TOD an den Bits 0:56 und die eindeutige CPU-Nummer an den Bits 57:63, wobei das höchstwertige Bit das Bit null ist. Eine nachfolgende Leseoperation kann blockiert werden, bis der Zeitimpuls das Bit 56 des TOD-Zählers erhöht hat. Dadurch wird (a) die Eindeutigkeit von Prozessor-Kennungen im gesamten Verarbeitungssystem sichergestellt (jede CPU verwendet eine andere Bitkombination der Bits 57:63) und (b) ein monotoner Anstieg der TOD-Werte in jeder CPU kann gegebenenfalls sichergestellt werden.
  • Die zunehmende Anzahl von Prozessoren in Multiprozessorsystemen erfordert jedoch eine zunehmende Anzahl von Bits, um eine bestimmte CPU kenntlich zu machen. Folglich nehmen die verbleibenden Bits, die für den TOD-Zähler zur Verfügung stehen, ab, wenn die Gesamtzahl der 64 Bit unverändert bleibt. Das bedeutet, dass die Genauigkeit des TOD-Zählers – aufgrund der verringerten Anzahl von verfügbaren Bits für den TOD-Zähler – abnimmt. Darüber hinaus kann die Taktgeschwindigkeit der einzelnen Prozessoren erhöht werden. Diese Situation kann zu einem Konflikt bei den TOD-Werten führen, die von verschiedenen Prozessoren des Multiprozessorsystems erzeugt werden – die TOD kann nicht mehr monoton erhöht werden.
  • Die folgende Situation weist gegebenenfalls auf das größer werdende Problem hin: Sowohl die CPU A als auch die CPU B empfangen regelmäßige TOD-Impulse. Die CPU B führt zum Zeitpunkt T1 einen STCK aus und schreibt einen TOD-Wert in einen Speicher, der sich außerhalb der beiden CPUs befindet, z. B. in einen gemeinsam benutzten Cachespeicher. Wenn die CPU A kurz nach T1 ebenfalls einen STCK-Befehl ausführt, ist ihr TOD-Wert aufgrund der eindeutigen CPU-Nummer, die in den Bits 57:63 des TOD-Werts gespeichert ist, möglicherweise geringer als der Wert, der von der CPU B in den gemeinsam benutzten Speicher geschrieben wurde. Die Kennung der CPU B kann eine niedrigere Nummer als die Kennung der CPU A haben, so dass der TOD-Wert der CPU B selbst dann geringer sein kann, wenn das Bit 56 (siehe oben) bei beiden CPUs genau gleich ist. Dies würde zu einer nicht monoton ansteigenden TOD des Multiprozessorsystems führen, was vermieden werden muss. Jedoch kann dies nur passieren, wenn der Zeitraum, der erforderlich ist, um einen TOD-Wert von einer CPU an eine andere CPU zu übertragen, kürzer ist als die Genauigkeit des TOD-Zählers in einer CPU. Nun nimmt bei diesem Zähler die Anzahl der zur Verfügung stehenden Bits ab, wie vorstehend erklärt wurde. Folglich kann es zu Konflikten bei TOD-Werten kommen.
  • Es gibt einige Offenbarungen in Bezug auf Verfahren zum Erzeugen von TOD-Werten.
  • Das Schriftstück US7681064B2 legt ein System, ein Verfahren und ein Computer-Programmprodukt zur Steuerung eines Tageszeitgebers für ein Computersystem offen, das über einen physischen Taktgeber verfügt, der eine Zeitbasis zur Ausführung von Operationen bereitstellt, die sich im Schritt mit einem gemeinsamen Oszillator bewegt. Das Verfahren beinhaltet das Berechnen eines Offset-Werts eines Tageszeitgebers, wobei der Offset-Wert zu einem Wert eines physischen Taktgebers addiert werden soll, um einen logischen Tageszeitgeberwert zu erhalten, wobei der logische Tageszeitgeberwert angepasst wird, ohne dass eine Schrittgeschwindigkeit des Oszillators angepasst wird.
  • Daher ist es gegebenenfalls notwendig, TOD-Konflikte zwischen einer zunehmenden Anzahl von CPUs in einem Multiprozessorsystem mit einer höheren CPU-Taktgeschwindigkeit und einer verbesserten Cachespeicher-Latenzzeit zu überwinden.
  • Kurzdarstellung der Erfindung
  • Diese Notwendigkeit kann durch ein Verfahren zum Erzeugen von TOD-Werten, einem TOD-Synchronisationssystem, einem Datenverarbeitungssystem, einem Datenverarbeitungsprogramm sowie einem Computer-Programmprodukt gemäß den unabhängigen Ansprüchen angegangen werden.
  • Gemäß einer Ausführungsform kann ein Verfahren zum Erzeugen von TOD-Werten bereitgestellt werden. Das Verfahren kann den Empfang von Synchronisationsimpulsen aufweisen – insbesondere periodischen Synchronisationsimpulsen von einer funktionsspezifischen PLL, speziell für TOD-Impulse, die für alle Prozessoren des Multiprozessorsystems erzeugt werden – sowie das Verweigern einer Ausführung eines Lesebefehls eines TOD-Wertes in einem Prozessor des Multiprozessorsystems, wenn die Ausführung des Lesebefehls des TOD-Wertes nach einem vorher festgelegten Zeitraum im Anschluss an einen Synchronisationsimpuls der Synchronisationsimpulse angefordert wird und wenn nach dem vorher festgelegten Zeitraum ein Triggersignal empfangen wurde, das anzeigt, dass von einem zugehörigen Speichersystem neue Daten empfangen worden sind, wobei sich das Speichersystem außerhalb des Prozessors befindet.
  • Gemäß einer weiteren Ausführungsform kann ein TOD-Synchronisationssystem bereitgestellt werden, insbesondere ein Uhrzeit-Synchronisationssystem zum Erzeugen von monoton ansteigenden TOD-Werten in einem Multiprozessorsystem. Das System kann eine Eingabeeinheit aufweisen, die so ausgelegt ist, dass sie Synchronisationsimpulse, insbesondere diejenigen TOD-Synchronisationsimpulse, die für alle Prozessoren des Multiprozessorsystems erzeugt werden, empfängt, sowie eine Verweigerungseinheit, die so ausgelegt ist, dass sie eine Ausführung eines Lesebefehls eines TOD-Wertes in einem Prozessor der Prozessoren verweigert, wenn die Ausführung des Lesebefehls des TOD-Wertes nach einem vorher festgelegten Zeitraum im Anschluss an einen Synchronisationsimpuls der Synchronisationsimpulse angefordert wird, und wenn nach dem vorher festgelegten Zeitraum ein Triggersignal empfangen wurde, das anzeigt, dass von einem zugehörigen Speichersystem neue Daten empfangen worden sind, wobei sich das Speichersystem außerhalb des Prozessors befindet.
  • Es sei darauf hingewiesen, dass das Triggersignal einen TOD-Wert anzeigen kann, der möglicherweise von einem anderen Prozessor in ein Speichersystem oder in einen gemeinsamen Cachespeicher geschrieben worden ist.
  • Es sei auch darauf hingewiesen, dass sich typische TOD-Impulse heute in einem Bereich von 62,5 ns bewegen – im Vergleich zu einer Taktgeschwindigkeit der Prozessoren von ca. 200 ps (Pikosekunden). Es sei ferner darauf hingewiesen, dass der erwähnte ”STCK”-Befehl den TOD-Wert aus einer TOD-Einheit in jedem Prozessor lesen kann und diesen Wert in einen außerhalb des Prozessors befindlichen Speicher schreiben kann, z. B. einen Cachespeicher, welcher von mehreren Prozessoren gemeinsam benutzt werden kann, z. B. einen gemeinsam benutzten L2- oder L3- oder einen höheren Cachespeicher. Drittens kann eine Leseoperation eines TOD-Werts nicht mehr verweigert werden, wenn gegebenenfalls ein neuer TOD-Impuls empfangen wurde.
  • Ausführliche Beschreibung
  • Die zwischen den Prozessoren erfolgende Synchronisierung zu TOD-Zwecken kann von periodischen Synchronisationsimpulsen von einem funktionsspezifischen PLL-Generator (PLL = Phasenregelkreis), speziell für TOD-Impulse, durchgeführt werden. Es kann auch nützlich sein, zu erkennen, dass das Triggersignal, das anzeigt, dass in einem gemeinsam benutzten Speicher oder in einem Cachespeicher, der sich außerhalb des Prozessors befindet, neue Daten empfangen wurden, signalisieren kann, dass eine andere CPU einen TOD-Wert in einen gemeinsam benutzten Speicher geschrieben haben kann. Es kann jedoch auch ein anderer Wert von etwas anderem sein.
  • Im Kontext dieser Anwendung können die folgenden Konventionen befolgt werden:
    Multiprozessor – Der Begriff ”Multiprozessor” kann einen Prozessor angeben, der mehrere CPUs, Betriebssystemkerne (Kernels) oder Verarbeitungseinheiten aufweist. Alle CPUs können unabhängig voneinander betrieben werden und verschiedene Programmcodes unabhängig voneinander ausführen. Sie müssen jedoch auch synchronisiert werden, insbesondere im Hinblick auf ihre TOD-Signale. Üblicherweise können alle CPUs dieselben System-Taktsignale empfangen, d. h., sie können alle mit demselben Basistakt arbeiten. TOD-Synchronisationsimpulse und Taktimpulse können jedoch völlig unterschiedlich sein. Normalerweise ist die Taktgeschwindigkeit deutlich höher als die Geschwindigkeit der TOD-Impulse.
  • Zeit-(TOD-)Werte – Ein TOD-Wert besteht üblicherweise aus einem TOD-Zähler mit einer bestimmten Granularität, d. h. mit einer fest zugeordneten Anzahl von Bits und einer eindeutigen CPU-Nummer. Dieser Begriff kann eindeutige Zeitsignale bezeichnen. Die TOD-Werte sollten monoton ansteigend sein. Dies kann bedeuten, dass ein TOD-Wert, der zu einem Zeitpunkt T1 geschrieben wurde, niedriger sein sollte als ein TOD-Wert eines Zeitpunkts T2, wenn T1 < T2.
  • Synchronisationsimpuls – Der Begriff ”Synchronisationsimpuls” kann einen regelmäßigen Impuls bezeichnen, der von einer funktionsspezifischen Taktschaltung erzeugt und allen TOD-Zählern in jedem Prozessor des Multiprozessorsystems zugeführt wird. Üblicherweise kann eine bestimmte PLL-Schaltung für die Erzeugung dieser regelmäßigen Synchronisations- oder TOD-Impulse zuständig sein.
  • Triggersignal – Der Begriff ”Triggersignal” kann ein Signal bezeichnen, das bei einer bestimmten Bedingung gesendet wird. Zum Beispiel kann ein Cachespeichersystem ein Triggersignal ausgeben, wenn in dem Cachespeicher gespeicherte Daten möglicherweise geändert wurden. In einem anderen Beispiel hat der Cachespeicher vielleicht neue Daten empfangen. Diese Daten können jedoch mit den zuvor gespeicherten Daten identisch sein. Diese Daten können auch einen TOD-Wert enthalten, der möglicherweise von einem anderen Prozessor in den gemeinsam benutzten Cachespeicher geschrieben wurde.
  • Gemeinsam benutzter Cachespeicher – Der Begriff” gemeinsam benutzter Cachespeicher” kann ein Speichersystem bezeichnen, in das und aus dem mehrere Prozessoren, Kerne oder Verarbeitungseinheiten Datenwerte schreiben oder lesen können. Auf einen gemeinsam benutzten Cachespeicher können die Prozessoren, insbesondere in einem Multiprozessorsystem, folglich gemeinsam zugreifen.
  • TOD-Zähler – Der Begriff ”TOD-Zähler” kann einen Zähler bezeichnen, der in einer jeden CPU des Multiprozessorsystems realisiert werden kann. Er kann seinen Wert – nämlich seinen Zählstand – bei jedem Signal der Synchronisationsimpulse erhöhen. Der TOD-Zähler kann gegebenenfalls bei jedem Impuls, den der TOD-Zähler empfängt, Zeitmarken erzeugen. Zwei aufeinander folgende TOD-Werte können die kleinste Zeitspanne angeben, die von einem Anwendungsprogramm, das die Prozessoren des Multiprozessorsystems verwendet, gegebenenfalls wahrgenommen werden kann.
  • Zähler – Der Begriff ”Zähler” kann eine Zähleinheit bezeichnen, die ihren Wert erhöhen kann, welcher durch einen Impuls, z. B. einen Taktimpuls, in ihr gespeichert wird. Er kann von dem TOD-Zähler unterschieden werden.
  • Zurückweisungsmarkierung – Der Begriff ”Zurückweisungsmarkierung” kann eine Markierung bezeichnen, die gesetzt wird, um zu vermeiden, dass ein Wert des TOD-Zählers oder einfach ein TOD-Wert gelesen wird.
  • Das vorgeschlagene Verfahren zum Erzeugen von TOD-Werten bietet gegebenenfalls mehrere Vorteile:
    Das vorgeschlagene Verfahren und das zugehörige System können gegebenenfalls gewährleisten, dass keine zwei Prozessoren in einem Multiprozessorsystem zu unterschiedlichen Zeitpunkten identische TOD-Werte erzeugen können. Ein Zählwert eines Synchronisationsimpulses kann auf immer längere Zeiträume beschränkt werden, da in einem TOD-Wert, der auf ein 64-Bit-Wort beschränkt ist, immer mehr Bits zum Identifizieren einer zunehmenden Anzahl von Prozessoren reserviert werden können. Ein neuer hinzugefügter Sperrmechanismus zwischen der TOD-Logik und der Cachespeicher-Logik kann überwachen, wenn ein Prozessor Datenänderungen oder neu empfangene Daten in einem gemeinsam benutzten Cachespeicher beobachtet. Eine solche Datenänderung oder der Empfang von neuen Daten kann möglicherweise die Folge eines STCK-Befehls von einem anderen Prozessor sein, wobei der STCK-Befehl sowohl eine Lese- als auch eine Schreiboperation und insbesondere eine Leseoperation aus der TOD-Einheit und eine Schreiboperation in den Speicher ist. Durch den vorgeschlagenen Mechanismus wird das Lesen der TOD – und folglich das Schreiben eines TOD-Werts in den gemeinsam benutzten Cachespeicher – so lange verzögert, bis ein neuer TOD-Impuls empfangen worden ist.
  • Daher verhindert das vorgeschlagene Verfahren, dass eine CPU, die Daten aus dem Cachespeicher liest, eine TOD beobachtet, sie speichert, einen Hinweis auf die Beobachtung der TOD an eine andere CPU sendet, dann die TOD der anderen CPU beobachtet, und dies alles, während es zu keiner Erhöhung des TOD-Zeigers kommt.
  • Gemäß einer Ausführungsform des Verfahrens wird der vorher festgelegte Zeitraum auf der Grundlage einer kleinsten Latenzzeit bestimmt, ein Datenwert – z. B. ein möglicher TOD-Wert – kann von einem Prozessor an einen anderen Prozessor in dem Multiprozessorsystem übertragen werden. Eine solche Übertragung kann unter Verwendung eines gemeinsam benutzten L2-, L3- oder eines höheren Cachespeichers (L = Stufe x), auf den beide beteiligten Prozessoren Schreibzugriff haben können, durchgeführt werden.
  • Gemäß einer erweiterten Ausführungsform des Verfahrens kann das Verfahren des Weiteren das Erhöhen eines Zählers, z. B. in dem Prozessor, – bei jeder Prozessorzykluszeit und das Zurücksetzen des Zählers, z. B. auf null, nach dem Empfang eines Synchronisationsimpulses aufweisen. Der Fachmann versteht, dass die Dauer der Prozessorzykluszeit unterschiedlich ist, insbesondere kürzer im Vergleich zur Dauer der Synchronisationsimpulse. Folglich arbeitet der Prozessor mit einer Frequenz, die höher als die Frequenz ist, mit der die Synchronisationsimpulse erzeugt werden können. In dem vorstehend erwähnten Beispiel kann der Synchronisationsimpuls zum Beispiel 62,5 ns betragen, während die Prozessorzykluszeit zum Beispiel 200 ps oder weniger betragen kann. Die Rücksetzung kann auf einen Wert von null erfolgen, so dass der Zähler nach jeder Rücksetzung mit seiner Zählung bei null beginnen und seinen Zählwert bei jedem Impuls des Prozessortakts erhöhen kann.
  • Gemäß einer noch anderen Ausführungsform des Verfahrens kann eine Zeitmarkierung gesetzt werden, wenn nach den Synchronisationsimpulsen ein Zeitpunkt erreicht werden kann, der gleich oder größer als der vorher festgelegte Zeitpunkt ist. Der vorher festgelegte Zeitpunkt ist systemabhängig, z. B. abhängig von Parametern wie dem Typ der CPU, der verwendeten Technologie, dem Prozessortakt, der Latenzzeit des Cachespeichers, dem Synchronisationstakt, der Anzahl der Prozessoren usw. Anders ausgedrückt, diese Zeitmarkierung kann entsprechend dem ersten ”wenn” des Hauptanspruchs gesetzt werden. Er stellt einen Teil der definierten Bedingung fest.
  • Gemäß einer alternativen Ausführungsform des Verfahrens kann die Markierung nach dem Empfang eines Synchronisationsimpulses zurückgesetzt werden, zum Beispiel auf null. Eine solche Rücksetzung kann das Öffnen eines neuen Zeitfensters für das Verfahren symbolisieren. Sie kann auch symbolisieren, dass der erste Teil der vorstehend erwähnten ”wenn Bedingung zurückgesetzt wurde.
  • Gemäß einer Ausführungsform des Verfahrens können der Prozessor und ein anderer Prozessor in dem Multiprozessorsystem gemeinsam auf das Speichersystem oder den gemeinsam benutzten Cachespeicher zugreifen. Eine Datenänderung in dem Speichersystem, d. h. der Empfang von neuen oder identischen Daten, kann insbesondere ein TOD-Wert von einer anderen CPU sein. Das Speichersystem kann im Einzelnen ein L2-, L3 oder ein höherer gemeinsam benutzter Cachespeicher sein, auf den zwei beteiligte Prozessoren des Multiprozessorsystems zugreifen können. Eine Änderung eines einzelnen Datenwerts, d. h., auch ein erneuter Empfang eines vorhandenen Datenelements im Cachespeicher, kann das Triggersignal auslösen.
  • In einer weiteren erweiterten Ausführungsform des Verfahrens kann eine Zurückweisungsmarkierung gesetzt werden, sofern gegebenenfalls die Zeitmarkierung gesetzt und das Triggersignal empfangen wurde. Durch dieses an Bedingungen geknüpfte Setzen einer Zurückweisungsmarkierung kann das kombinierte Setzen der Bedingungen gegebenenfalls leichter kontrolliert werden, wie in dem allgemeinen Konzept des Verfahrens dargelegt ist. Es kann gewährleisten, dass ein Empfang des Triggersignals nicht vergessen werden kann, nachdem das Triggersignal empfangen wurde und bevor ein neuer Synchronisationsimpuls empfangen wird. Eine tatsächliche Leseoperation des TOD-Wertes kann verweigert werden, wenn die Zurückweisungsmarkierung gesetzt ist. Folglich kann auch die Ausführung einer Schreiboperation eines TOD-Werts unterdrückt werden, wenn der Lese- und der Schreibteil eines ”STCK”-Befehls eng miteinander verknüpft werden kann.
  • Gemäß einer weiteren erweiterten Ausführungsform des Verfahrens kann die Ausführung des Lesebefehls eines TOD-Wertes zurückgewiesen werden, wenn die Zurückweisungsmarkierung gesetzt ist. Dieses Merkmal ermöglicht eine vergleichsweise elegant realisierbare Auslegung von zugehörigen Hardware-Schaltungen. Es muss lediglich eine gesetzte Markierung geprüft werden, um eine Leseoperation eines TOD-Wertes anzuhalten, damit interne Systemkonflikte vermieden werden.
  • In einer weiteren Ausführungsform des Verfahrens kann die Zurückweisungsmarkierung nach dem Empfang des Synchronisationsimpulses zurückgesetzt werden. Folglich wird das vollständige Verfahren zum Erzeugen von monoton ansteigenden Zeitwerten in einem Multiprozessorsystem oder einem zugehörigen Uhrzeit-Synchronisationssystem durch den Empfang eines Synchronisationsimpulses zurückgesetzt. Alles befindet sich wieder im Normalzustand und die Zyklen können wieder starten.
  • In einer Ausführungsform des Verfahrens kann der Lesebefehl eines TOD-Wertes auch einen Schreibbefehl eines TOD-Wertes enthalten. Wenn ein TOD-Lese- und ein TOD-Schreibbefehl – z. B. in einen zugehörigen Cachespeicher – zu einem Befehl zusammengefasst werden können, kann die Gesamtzeit für eine Ausführung des ganzen Befehls verringert werden. Auch kann es von einem Programmierungsstandpunkt aus betrachtet Vorteile geben. Das Schreiben des TOD-Werts kann auf einen zugehörigen Cachespeicher übertragen werden, der zu den Prozessoren des Multiprozessorsystems gehören kann. Der kombinierte Befehl kann ein ”STCK”-Befehl sein, wie vorstehend erörtert wurde.
  • Überdies können Ausführungsformen die Form eines Computer-Programmprodukts annehmen, auf das von einem Datenträger zugegriffen werden kann, der von einem Computer genutzt oder gelesen werden kann und der Programmcode zur Verwendung durch einen Computer oder ein beliebiges Befehlsausführungssystem oder in Verbindung mit einem Computer oder einem beliebigen Befehlsausführungssystem oder Mikrocode bereitstellt. Zum Zweck dieser Beschreibung kann ein von einem Computer nutzbarer oder lesbarer Datenträger jede Vorrichtung sein, die ein Mittel enthalten kann, um das Programm zur Verwendung durch das Befehlsausführungssystem, die Befehlsausführungsvorrichtung oder -einheit oder zur Verwendung in einer Verbindung mit dem Befehlsausführungssystem, der Befehlsausführungsvorrichtung oder -einheit zu speichern, zu übertragen, weiterzuleiten oder zu transportieren.
  • Bei dem Datenträger kann es sich um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem für ein Weiterleitungsmedium handeln. Zu Beispielen für einen computerlesbaren Datenträger können ein Halbleiterspeicher, ein Magnetband, eine auswechselbare Computerdiskette, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), eine magnetische Festplatte und eine optische Platte gehören. Zu aktuellen Beispielen von optischen Platten gehören ein Compact-Disk-Nur-Lese-Speicher (CD-ROM), ein Compact-Disk-Schreib-/Lese-Speicher (CD-R/W), DVD und eine Blu-Ray-Disk.
  • Es sei auch erwähnt, dass Ausführungsformen der Erfindung mit Bezug auf verschiedene Gegenstände beschrieben wurden. Insbesondere wurden bestimmte Ausführungsformen mit Bezug auf Ansprüche vom Typ Verfahren beschrieben, wohingegen andere Ausführungsformen mit Bezug auf Ansprüche vom Typ Vorrichtung beschrieben wurden. Der Fachmann entnimmt jedoch der vorstehenden und der nachfolgenden Beschreibung, dass, vorbehaltlich anderer Angaben, neben jeder Kombination aus Merkmalen, die zu einem Typ von Gegenstand gehören, auch jede Kombination zwischen Merkmalen, die sich auf verschiedene Gegenstände beziehen, insbesondere zwischen Merkmalen der Ansprüche vom Typ Verfahren und Merkmalen der Ansprüche vom Typ Vorrichtung, als in diesem Schriftstück offenbart gelten.
  • Die vorstehend angegebenen Aspekte und weitere Aspekte der vorliegenden Erfindung gehen aus den Beispielen von Ausführungsformen, die nachstehend zu beschreiben sind, hervor und werden mit Bezug auf die Beispiele von Ausführungsformen erklärt, auf welche die Erfindung jedoch nicht beschränkt ist.
  • Kurze Beschreibung der Zeichnungen
  • Bevorzugte Ausführungsformen der Erfindung werden nun lediglich anhand eines Beispiels und mit Bezug auf die folgenden Zeichnungen beschrieben:
  • 1 zeigt ein Blockschaubild einer Ausführungsform des erfindungsgemäßen Verfahrens zum Erzeugen von monoton ansteigenden TOD-Werten.
  • 2 zeigt Elemente eines Multiprozessorsystems.
  • 3 zeigt ein Schaubild, welches das zu lösende Problem im Detail zeigt.
  • Die 4(a), (b), (c) zeigen eine Konfliktsituation bei TOD-Werten und ihre Auflösung.
  • 5 zeigt ein Blockschaubild eines TOD-Synchronisationssystems.
  • 6 zeigt ein Beispiel eines Computersystems, welches das TOD-Synchronisationssystem in Prozessoren eines zentralen Multiprozessorsystems aufweist.
  • Ausführliche Beschreibung von beispielhaften Ausführungsformen
  • Im Folgenden werden die Figuren ausführlich beschrieben. Alle Befehle in den Figuren sind schematisch. Zunächst ist ein Blockschaubild einer Ausführungsform des erfindungsgemäßen Verfahrens zum Erzeugen von TOD-Werten gezeigt. Dann werden weitere Ausführungsformen des Verfahrens und das TOD-Synchronisationssystem beschrieben.
  • 1 zeigt ein Blockschaubild einer Ausführungsform des Verfahrens 100 zum Erzeugen von monoton ansteigenden Zeitwerten in einem Multiprozessorsystem. Das Verfahren 100 weist das Erzeugen, 102, von Synchronisationsimpulsen für alle Prozessoren des Multiprozessorsystems und das Verweigern, 104, einer Ausführung eines Lesebefehls eines TOD-Wertes in einem Prozessor der Prozessoren auf, wenn die Ausführung des Lesebefehls des TOD-Wertes nach einem vorher festgelegten Zeitraum im Anschluss an einen Synchronisationsimpuls der Synchronisationsimpulse angefordert wird und wenn nach dem vorher festgelegten Zeitraum ein Triggersignal empfangen wurde, das anzeigt, dass von einem zugehörigen Speichersystem neue Daten empfangen worden sind, wobei sich das Speichersystem außerhalb des Prozessors befindet.
  • 2 zeigt eine Ausführungsform eines Multiprozessors 200 oder eines Multiprozessorsystems. Daher sind sechs Verarbeitungsknoten im Multiprozessor 200 gezeigt. Jeder Knoten weist einen L3-Cachespeicher 202, 212, 222, 232, 242, 252 und vier Kerne 204, 206, 208, 210 und 214, 216, 218, 220 und 224, 226, 228, 230 und 234, 236, 238, 240 und 244, 246, 248, 250 sowie 254, 256, 258, 260 auf. Alle Knoten können optional Zugriff auf einen gemeinsamen L4-Cachespeicher 262 haben.
  • 3 zeigt ein Schaubild, welches das zu lösende Problem im Detail zeigt. CPU2 oder der Kern2 oder die Verarbeitungseinheit 2 206 können einen STCK-Befehl ausgeben, was bedeutet, dass ein TOD-Wert A aus einem CPU-internen Register gelesen und in einen gemeinsam benutzten Cachespeicher 202 geschrieben werden kann. Zu einem späteren Zeitpunkt – der zeitliche Ablauf wird von dem abwärts gerichteten Pfeil angezeigt – kann die CPU1 oder der Kern 1 204 den TOD-Wert A aus dem gemeinsam benutzten Cachespeicher 202 in ein Register der CPU1 204 laden. Zu einem noch späteren Zeitpunkt kann die CPU1 204 auch einen STCK-Befehl ausführen. Dieses Mal muss ein späterer oder höherer Wert einer TOD aus dem TOD-Register, das sich in der CPU1 befindet, gelesen werden.
  • Im Falle von 80 CPUs in einem Multiprozessorsystem, einer TOD-Wortlänge von 64 Bit und einer Zykluszeit der CPU von 240 ps dürfte dies kein Problem sein. 80 CPUs benötigen 7 Bits zu deren Unterscheidung und Identifizierung. Somit stehen 64 Bits – 7 Bits = 57 Bits, die Bits 0:56, für einen TOD-Zähler zur Verfügung. Eine TOD-Bit-Erhöhung am Bit 56 kann 32 ns darstellen. Wenn ein TOD-Schritt oder ein Synchronisationsimpuls alle 133 CPU-Zyklen auftreten kann, kann ein schnellster Speichervorgang von einer CPU oder einem Kern, der über einen Ladebefehl auf einer anderen CPU weitergegeben wird, mehr als 133 Prozessorzyklen in Anspruch nehmen. Die CPU1 hat gegebenenfalls genug Zeit, um ihren eigenen TOD-Zähler zu erhöhen, bevor sie den TOD-Wert A der CPU2 beobachtet. Folglich ist TOD B > TOD A und ein Problem kann nicht auftreten.
  • Wenn andererseits möglicherweise andere Bedingungen gegeben sind und TOD B > TOD A nicht gewährleistet werden kann, kann das auf einen internen Konflikt in dem Multiprozessorsystem schließen lassen, weil die Voraussetzung für monoton ansteigende TOD-Werte verletzt ist. Es werden nun 144 CPUs in dem Multiprozessorsystem und eine Taktgeschwindigkeit der CPU von 175 ps angenommen. Bei dieser Konfiguration stehen nur 64 Bits – 8 Bits = 56 Bits bzw. die Bits 0:55 für den TOD-Zähler zur Verfügung, da 8 Bit zur Unterscheidung zwischen 144 CPUs (bis zu 256 CPUs) benötigt werden. Ein Impuls eines TOD-Schrittes kann nun 357 CPU-Zyklen in Anspruch nehmen. Ein schnellster Speichervorgang von einer CPU in einen gemeinsam benutzten Cachespeicher, der über einen Ladebefehl an eine andere CPU weitergegeben wird, kann weniger als 357 CPU-Zyklen (ungefähr 120 Zyklen) in Anspruch nehmen. Dies kann folglich dazu führen, dass TOD B < TOD A, was auf einen systematischen Konflikt in dem System hindeutet.
  • Die 4(a), (b), (c) zeigen die Konfliktsituation und ihre Auflösung durch das vorgeschlagene Verfahren aus einer anderen Perspektive. Zugrunde gelegte Annahmen: Der TOD-Wert kann eine Länge von 64 Bit haben. Mehr als 128 Prozessoren, z. B. 144 Prozessoren, werden verwendet. Folglich sind 8 Bits zur Unterscheidung zwischen den Prozessoren erforderlich. Während die Bits 56:63 zur Identifizierung der Prozessoren verwendet werden, sind die Bits 0:55 für den TOD-Zähler reserviert. Somit findet beispielsweise ungefähr alle 1/16 μs eine Erhöhung des TOD-Zählers am Bit 55 des TOD-Wortes statt. Dies kann das kürzeste Zeitintervall von Werten des TOD-Zählers zwischen Synchronisationsimpulsen darstellen. Bei einer Taktgeschwindigkeit des Prozessors von 5,7 GHz stellt dies 356,25 Prozessorzyklen dar.
  • Andererseits kann eine Übertragung eines Werts – bei dem es sich zufälligerweise um einen TOD-Wert handeln kann – von einem Prozessor an einen anderen Prozessor aufgrund von Weiterentwicklungen bei der Ausgestaltung des Cachespeichers, die zu einer geringeren Latenzzeit des Cachespeichers und zu anderen Verbesserungen führen, innerhalb von ca. 120 Prozessorzyklen durchgeführt werden (4(a)). Dies führt zu der Situation, dass nach einem ersten Synchronisationsimpuls (vergleiche auch 4, (c)) ein ”STCK A” auftreten und ein anderer Prozessor diesen Wert durch einen Befehl ”Lade A” laden kann. Wenn nun innerhalb desselben Synchronisationsfensters – was bedeutet, dass kein zweiter Synchronisationsimpuls empfangen wurde – ein ”STCK B” durch nochmals einen anderen Prozessor ausgeführt werden kann, was einen TOD-Wert im Cachespeicher zur Folge hat, wurde möglicherweise ein niedrigerer TOD-Wert eines ”STCK B” in den Cachespeicher geschrieben. Dies muss aufgrund des Erfordernisses von monoton ansteigenden TOD-Werten vermieden werden. Daher muss der erste ”STCK B” unterdrückt werden, was durch den durchgestrichenen ”STCK B” im Teil (b) von 4 angegeben ist. Erst nach einem neuen Synchronisationsimpuls – der nach ungefähr 357 Prozessorzyklen auftritt (vgl. 4(c)) – darf ein neuer ”STCK B” gestattet werden. Dieser ”STCK B” erzeugt einen höheren TOD-Wert und steht folglich in Einklang mit der vorstehend erwähnten Erfordernis eines monoton ansteigenden TOD-Werts. Die Ausführung des ”STCK B” kann verzögert werden, indem die Leseoperation des TOD-Werts, der für den Befehl ”STCK B” erforderlich ist, verweigert wird. Da ein ”STCK”-Befehl einen Lesebefehl an den TOD-Zähler sowie einen Schreibbefehl an den gemeinsam benutzten Cachespeicher in sich vereint, kann auch die Schreiboperation des möglicherweise falschen, d. h. nicht monoton ansteigenden, TOD-Werts unterdrückt werden.
  • 5 zeigt ein Blockschaubild einer Ausführungsform eines TOD-Synchronisationssystems, das in einen Kern oder eine Verarbeitungseinheit 504 eines Multiprozessorsystems integriert ist. Es wird davon ausgegangen, dass die Ausführungseinheit 506 gerade dabei ist, einen STCK-Befehl auszuführen, wobei sie einen TOD-Wert über die Leitung 508 in einen gemeinsamen Cachespeicher 202 schreibt, auf den auch andere Verarbeitungseinheiten Schreibzugriff haben können. Üblicherweise besteht der STCK-Befehl aus zwei Teilen. Der erste Teil fordert den TOD-Wert über die Leitungen 512, 514 von der TOD-Einheit 510 an. Es wird dabei davon ausgegangen, dass die Verweigerungseinheit 516 nicht vorhanden ist. Die Ausführungseinheit würde den TOD-Wert über die Leitungen 512 und 518 von der TOD-Einheit anfordern und empfangen, wobei wieder davon ausgegangen wird, dass keine Verweigerungseinheit vorhanden ist. Die TOD-Einheit wird von einem externen Oszillator, üblicherweise einer funktionsspezifischen PLL-Schaltung 530, mit TOD-Synchronisationsimpulsen 532 getriggert. Dieses Signal 532 gelangt an alle Verarbeitungseinheiten des Multiprozessorsystems.
  • Unter den vorstehend beschriebenen Umständen verweigert die Verweigerungseinheit 516 eine Leseoperation des TOD-Werts, so dass eine Leseoperation des TOD-Werts erst möglich ist, wenn die Gegebenheiten, die vorstehend erklärt wurden, wieder erfüllt sind. Die Verweigerungseinheit 516 empfängt von dem Cachespeicher 202 ein Eingangssignal 502a, das anzeigt, dass von einer anderen Verarbeitungseinheit ein Wert in den Cachespeicher 202 geschrieben worden ist. Dieser Wert kann ein TOD-Wert von einer anderen Verarbeitungseinheit sein; er könnte jedoch auch ein beliebiger anderer Wert sein. Aufgrund des Risikos jedoch, dass es ein TOD-Wert von einer anderen Verarbeitungseinheit oder einem anderen Kern sein kann, wird ein STCK der Verarbeitungseinheit 506 in die Warteschleife gestellt, wenn die Bedingungen, die vorstehend erklärt wurden, erfüllt sind. Zu diesem Zweck wird ein Zähler 520 realisiert. Er empfängt Taktimpulse 522 oder Impulse für angegebene Prozessorzyklen von dem normalen Taktgeber der Verarbeitungseinheit. Der Zähler wird bei jedem Synchronisationsimpuls 532 vornehmlich auf null zurückgesetzt. Wenn der vorher festgelegte Zeitraum, der zur Übertragung eines Datenwerts von einer Verarbeitungseinheit an eine andere Verarbeitungseinheit über den Cachespeicher 202 erforderlich ist, verstrichen ist, steuert der Zähler 520 einen Signalspeicher 524 an, um über die Leitung 526 eine Zeitmarkierung zu setzen. Der Status des Signalspeichers wird auch in die Verweigerungseinheit 516 eingegeben. Hier können die Informationen der Zeitmarkierung mit einem Triggersignal verknüpft werden. Eine Zurückweisungsmarkierung kann auf der Grundlage der gesetzten Zeitmarkierung und des über die Leitung 502a eingehenden Triggersignals gesetzt werden, welches eine Änderung von Daten in dem gemeinsam benutzten Cachespeicher 202 anzeigt.
  • Der Signalspeicher 524 wird auch bei jedem Synchronisationsimpuls 532 sowie einer möglicherweise gesetzten Zurückweisungsmarkierung über die Leitung 528 zurückgesetzt. Wenn die Bedingungen, die vorstehend erklärt wurden, erfüllt sind, gestattet die Verweigerungseinheit keine Leseoperation eines TOD-Werts aus der TOD-Einheit 510 über die Leitung 514 beziehungsweise die Leitung 515. Folglich ist eine Schreiboperation eines TOD-Werts in einen zugehörigen Cachespeicher nicht möglich, wenn der Leseteil des Befehls direkt mit einem Schreibteil desselben Befehls, z. B. eines STCK-Befehls, verbunden ist. Somit können monoton ansteigende TOD-Werte, die in den Cachespeicher 202 geschrieben werden, sichergestellt werden.
  • Ausführungsformen der Erfindung können zusammen mit praktisch jeder Art von Computer realisiert werden, ungeachtet der Plattform, die zur Speicherung und/oder Ausführung von Programmcode geeignet ist. Wie in 6 gezeigt ist, kann ein Datenverarbeitungssystem 600 beispielsweise einen Multiprozessor 602 mit einem oder mehreren Knoten, von denen jeder über einen oder mehrere Kerne 504 verfügt, enthalten. Ein solcher Multiprozessor kann auch in der Form realisiert werden, die im Zusammenhang mit 2 beschrieben wurde. Jeder Kern kann auch das TOD-Synchronisationssystem sowie zugehörige Cachespeicherstrukturen umfassen, wie von 5 angegeben ist. Ferner kann das Datenverarbeitungssystem 600 über zugehörige Speicherelemente 604, eine interne Speichereinheit 606 (z. B. eine Festplatte, ein optisches Laufwerk wie zum Beispiel ein CD-Laufwerk oder ein Digital-Video-Disk-(DVD-)Laufwerk, einen Flash-Speicherstick usw.) und zahlreiche andere Elemente und Funktionalitäten verfügen, die typisch für die heutigen Computer (nicht gezeigt) sind. Zu den Speicherelementen 604 können ein Hauptspeicher, z. B. ein Direktzugriffspeicher (RAM), der während der tatsächlichen Ausführung des Programmcodes verwendet wird, und ein Cachespeicher gehören, der die vorübergehende Speicherung von mindestens einem Teil des Programmcodes und/oder von Daten ermöglicht, um die Häufigkeit zu verringern, mit der Code und/oder Daten aus einem Langzeitspeichermedium oder einem externen Massenspeicher 616 für eine Ausführung abgerufen werden müssen. Elemente in dem Computer 600 können über ein Bussystem 618 mit entsprechenden Adaptern miteinander verbunden werden.
  • Das Datenverarbeitungssystem 600 kann auch ein – direkt oder indirekt angeschlossenes – Eingabemittel beinhalten, wie zum Beispiel eine Tastatur 608, ein Zeigegerät, wie zum Beispiel eine Maus 610, oder ein Mikrofon (nicht gezeigt). Alternativ kann das Datenverarbeitungssystem mit einem berührungsempfindlichen Bildschirm als Eingabeeinheit verbunden sein. Darüber hinaus kann der Computer 600 ein Ausgabemittel wie zum Beispiel ein Monitorsystem oder einen Bildschirm 612 [z. B. einen Flüssigkristallbildschirm (LCD), einen Plasmabildschirm, einen Bildschirm aus Licht emittierenden Dioden (LED-Bildschirm) oder einen Bildschirm mit Katodenstrahlröhre (CRT-Bildschirm)] beinhalten. Das Computersystem 600 kann mit einem Netzwerk (z. B. einem lokalen Netzwerk (LAN), einem Weitverkehrsnetz (WAN) wie zum Beispiel dem Internet oder einer beliebigen anderen ähnlichen Art von Netzwerk einschließlich drahtloser Netzwerke) über eine Netzwerkschnittstellenverbindung 614 verbunden sein. Dadurch kann möglicherweise eine Verbindung mit anderen Computersystemen oder einem Speichernetzwerk oder einem Bandlaufwerk hergestellt werden. Der Fachmann versteht, dass es viele verschiedene Arten von Computersystemen gibt und die vorstehend erwähnten Eingabe- und Ausgabemittel auch andere Formen annehmen können. Allgemein gesagt, das Computersystem 600 kann mindestens die geringstmöglichen Verarbeitungs-, Eingabe- und Ausgabemittel beinhalten, die notwendig sind, um Ausführungsformen der Erfindung in die Praxis umzusetzen.
  • Zwar wurde die Erfindung mit Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben, doch versteht der Fachmann, der von dieser Offenbarung profitiert, dass auch andere Ausführungsformen entwickelt werden können, die nicht vom Umfang der hier offengelegten Erfindung abweichen. Folglich sollte der Umfang der Erfindung nur von den beigefügten Ansprüchen begrenzt werden. Auch können Elemente, die in Verbindung mit verschiedenen Ausführungsformen beschrieben wurden, kombiniert werden. Es sei ferner angemerkt, dass Bezugszeichen in den Ansprüchen nicht als einschränkende Elemente ausgelegt werden sollten.
  • Für den Fachmann versteht es sich, dass Aspekte der vorliegenden Offenbarung als ein System, ein Verfahren oder ein Computer-Programmprodukt realisiert werden können. Folglich können Aspekte der vorliegenden Offenbarung die Form einer ganz in Hardware realisierten Ausführung, einer ganz in Software realisierten Ausführung (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführung annehmen, die Software- und Hardware-Aspekte kombiniert, die hier alle allgemein als eine ”Schaltung”, ein ”Modul” oder ein ”System” bezeichnet werden können. Überdies können Aspekte der vorliegenden Offenbarung die Form eines Computer-Programmprodukts annehmen, das sich auf einem oder mehreren computerlesbaren Datenträgern) befindet, auf dem beziehungsweise denen sich computerlesbarer Programmcode befindet.
  • Jede beliebige Kombination aus einem oder mehreren computerlesbaren Datenträgern kann verwendet werden. Der computerlesbare Datenträger kann ein computerlesbarer Signaldatenträger oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel, ohne darauf beschränkt zu sein, ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder jede beliebige geeignete Kombination des Vorstehenden sein. Zu konkreteren Beispielen (wobei die Liste keinen Anspruch auf Vollständigkeit erhebt) für das computerlesbare Speichermedium würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine Diskette eines tragbaren Computers, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede beliebige geeignete Kombination des Vorstehenden. In Zusammenhang mit diesem Schriftstück kann ein computerlesbares Speichermedium jedes physisch greifbare Medium sein, das ein Programm zur Verwendung durch ein Befehlsausführungssystem, eine Befehlsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Befehlsausführungssystem, einer Befehlsausführungsvorrichtung oder -einheit enthalten oder speichern kann.
  • Ein computerlesbarer Signaldatenträger kann ein übertragenes Datensignal mit einem darin enthaltenen computerlesbaren Programmcode, beispielsweise in einem Basisband oder als Teil einer Trägerwelle, enthalten. Solch ein übertragenes Signal kann eine beliebige einer Vielzahl von Formen einschließlich elektromagnetischer, optischer Formen oder jede beliebige geeignete Kombination dieser Formen, ohne darauf beschränkt zu sein, annehmen. Bei einem computerlesbaren Signaldatenträger kann es sich um jeden beliebigen computerlesbaren Datenträger handeln, der kein computerlesbares Speichermedium ist und der ein Programm zur Verwendung durch ein Befehlsausführungssystem, eine Befehlsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Befehlsausführungssystem, einer Befehlsausführungsvorrichtung oder -einheit übertragen, weiterleiten oder transportieren kann.
  • Auf einem computerlesbaren Datenträger enthaltener Programmcode kann mittels eines geeigneten Mediums einschließlich eines drahtlosen Mediums, eines drahtgebundenen Mediums, eines Lichtwellenleiterkabels, mittels Hochfrequenz (HF) usw. oder mittels jeder beliebigen geeigneten Kombination des Vorstehenden, ohne darauf beschränkt zu sein, übertragen werden.
  • Computer-Programmcode zur Durchführung von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen einschließlich einer objektorientierten Programmiersprache, wie beispielsweise Java, Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache ”C” oder in ähnlichen Programmiersprachen geschrieben sein. Die Ausführung des Programmcodes kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server erfolgen. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks einschließlich eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzes (WAN) verbunden werden oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet mittels eines Internet-Diensteanbieters) hergestellt werden.
  • Aspekte der vorliegenden Offenbarung sind mit Bezug auf Darstellungen in Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computer-Programmprodukten gemäß Ausführungsformen der vorliegenden Offenbarung beschrieben. Es versteht sich, dass jeder Block der Darstellungen in den Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen aus Blöcken in den Darstellungen der Ablaufpläne und/oder den Blockschaubildern mittels Befehlen eines Computerprogramms realisiert werden können. Diese Befehle eines Computerprogramms können einem Prozessor eines Mehrzweckcomputers, eines Computers für spezielle Anwendungen oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine so zu erzeugen, dass die Befehle, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Diese Befehle eines Computerprogramms können auch auf einem computerlesbaren Datenträger gespeichert werden, der einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem computerlesbaren Datenträger gespeicherten Befehle einen Herstellungsgegenstand erzeugen, der Befehle enthält, die die Funktion/den Vorgang ausführen, welche beziehungsweise welcher in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
  • Die Befehle eines Computerprogramms können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder auf andere Einheiten geladen werden, um die Durchführung einer Reihe von Betriebsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder auf anderen Einheiten zu bewirken, um einen von einem Computer ausgeführten Prozess so zu erzeugen, dass die Befehle, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ermöglichen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Die Blockschaubilder in den Figuren zeigen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computer-Programmprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. In dieser Hinsicht kann jeder Block in den Blockschaubildern ein Modul, ein Segment oder einen Teil von Code darstellen, das beziehungsweise der einen oder mehrere ausführbare Befehle zur Ausführung der angegebenen logischen Funktion(en) aufweist. Es sei auch angemerkt, dass die Funktionen, die vorstehend in diesem Schriftstück erläutert wurden, in manchen alternativen Ausführungsarten nicht in der offengelegten Reihenfolge auftreten können. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Funktionen, die aufeinanderfolgend gelehrt wurden, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Funktionen können mitunter in der umgekehrten Reihenfolge ausgeführt werden. Man wird auch feststellen, dass jeder Block der Blockschaubilder sowie Kombinationen aus Blöcken in den Blockschaubildern von Systemen, die auf Hardware für spezielle Anwendungen beruhen und die angegebenen Funktionen oder Vorgänge durchführen, oder von Kombinationen aus Hardware für spezielle Anwendungen und Computerbefehlen ausgeführt werden können.
  • Die hier verwendete Terminologie dient lediglich dazu, bestimmte Ausführungsformen zu beschreiben und ist nicht als Einschränkung der Erfindung zu verstehen. Die Singular-Formen ”ein”, ”eine” und ”der”, ”die”, ”das” sollen in der hier verwendeten Weise auch die Plural-Formen einschließen, sofern der Kontext nicht eindeutig etwas anderes angibt. Des Weiteren versteht es sich, dass die Begriffe ”aufweist” und/oder ”aufweisend”, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten bezeichnen, das Vorhandensein oder das Hinzufügen von einem oder mehreren anderen/weiteren Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen der Vorgenannten jedoch nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Vorgänge und Gleichwertiges von allen Mitteln oder Schritten sowie Funktionselementen in den nachstehenden Ansprüchen sollen jedwede Struktur, jedwedes Material oder jedweden Vorgang zur Ausführung der Funktion in Kombination mit anderen beanspruchten Elementen, die im Einzelnen beansprucht werden, beinhalten. Die Beschreibung der vorliegenden Erfindung erfolgte zum Zweck der Veranschaulichung und Erläuterung, erhebt jedoch keinen Anspruch auf Vollständigkeit und ist auch nicht als auf die Erfindung in der offengelegten Form beschränkt zu verstehen. Viele Ab- und Veränderungen sind für den Fachmann erkennbar, ohne vom Umfang und Wesen der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung bestmöglich zu erklären und um anderen Fachleuten das Verständnis der Erfindung hinsichtlich verschiedener Ausführungsformen mit verschiedenen Änderungen, wie sie für die entsprechende vorgesehene Verwendung geeignet sind, zu ermöglichen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 7681064 B2 [0007]

Claims (14)

  1. Verfahren (100) zum Erzeugen von monoton ansteigenden TOD-Werten in einem Multiprozessorsystem (200), wobei das Verfahren (100) aufweist: – Empfangen von Synchronisationsimpulsen (532) durch einen Prozessor (204, 206, 208, 210, 504) des Multiprozessorsystems (200), – Verweigern einer Ausführung eines Lesebefehls eines TOD-Wertes in dem Prozessor (204, 206, 208, 210, 504) des Multiprozessorsystems (200) wenn die Ausführung des Lesebefehls des TOD-Wertes nach einem vorher festgelegten Zeitraum im Anschluss an einen Synchronisationsimpuls (532) der Synchronisationsimpulse angefordert wird, und wenn nach dem vorher festgelegten Zeitraum ein Triggersignal (502a) empfangen wurde, das anzeigt, dass von einem zugehörigen Speichersystem (202) neue Daten empfangen worden sind, wobei sich das Speichersystem (202) außerhalb des Prozessors (204, 206, 208, 210, 504) befindet.
  2. Verfahren (100) nach Anspruch 1, wobei der vorher festgelegte Zeitraum auf der Grundlage einer kleinsten Latenzzeit bestimmt wird, in der ein Datenwert von einem Prozessor (204, 206, 208, 210, 504) an einen anderen Prozessor (204, 206, 208, 210, 504) in dem Multiprozessorsystem (200) übertragen werden kann.
  3. Verfahren (100) nach Anspruch 1 oder Anspruch 2, das des Weiteren das Erhöhen eines Zählers (520) bei jedem Prozessorzeitzyklus und das Zurücksetzen des Zählers (520) nach dem Empfang des Synchronisationsimpulses (532) aufweist.
  4. Verfahren (100) nach einem der vorhergehenden Ansprüche, wobei eine Zeitmarkierung gesetzt wird, wenn ein Zeitpunkt nach den Synchronisationsimpulsen (532) erreicht ist, der größer oder gleich dem vorher festgelegten Zeitraum ist
  5. Verfahren (100) nach einem der vorhergehenden Ansprüche, wobei die Zeitmarkierung nach dem Empfang des Synchronisationsimpulses (532) zurückgesetzt wird.
  6. Verfahren (100) nach einem der vorhergehenden Ansprüche, wobei das Triggersignal (502a) anzeigt, dass neue Daten in einem Speichersystem (202) empfangen wurden, auf die der Prozessor (204, 206, 208, 210, 504) und ein anderer Prozessor (204, 206, 208, 210, 504) in dem Multiprozessorsystem (200) gemeinsam zugreifen können.
  7. Verfahren (100) nach einem der Ansprüche 4 bis 6, wobei eine Zurückweisungsmarkierung gesetzt wird, wenn die Zeitmarkierung gesetzt worden ist und das Triggersignal (502a) empfangen wird.
  8. Verfahren (100) nach Anspruch 7, wobei die Ausführung des Lesebefehls eines TOD-Wertes zurückgewiesen wird, wenn die Zurückweisungsmarkierung gesetzt ist.
  9. Verfahren (100) nach Anspruch 7 oder 8, wobei die Zurückweisungsmarkierung nach dem Empfang des Synchronisationsimpulses (532) zurückgesetzt wird.
  10. Verfahren (100) nach einem der vorhergehenden Ansprüche, wobei der Lesebefehl des TOD-Werteseinen Schreibbefehl eines TOD-Wertesenthält.
  11. TOD-Wert-Synchronisationssystem zum Erzeugen von monoton ansteigenden Zeitwerten in einem Multiprozessorsystem (200), wobei das System aufweist: – eine Eingabeeinheit, die so ausgelegt ist, um erzeugte Synchronisationsimpulse (532) zu empfangen, – eine Verweigerungseinheit (516), die so ausgelegt ist, um eine Ausführung eines Lesebefehls eines TOD-Wertes in einem Prozessor (204, 206, 208, 210, 504) des Multiprozessorsystems (200) zu verweigern, wenn die Ausführung des Lesebefehls des TOD-Wertesnach einem vorher festgelegten Zeitraum im Anschluss an einen Synchronisationsimpuls (532) der Synchronisationsimpulse angefordert wird, und wenn nach dem vorher festgelegten Zeitraum ein Triggersignal (502a) empfangen wurde, das anzeigt, dass von einem zugehörigen Speichersystem (202) neue Daten empfangen worden sind, wobei sich das Speichersystem (202) außerhalb des Prozessors (204, 206, 208, 210, 504) befindet.
  12. Multiprozessorsystem (200), das eine Vielzahl von Prozessoren (204, 206, 208, 210, 504) und das TOD-Wertes-Synchronisationssystem gemäß Anspruch 11 aufweist.
  13. Datenverarbeitungsprogramm zur Ausführung in einem Datenverarbeitungssystem, das Teile von Software-Code zur Durchführung des Verfahrens (100) nach einem der vorhergehenden Ansprüche 1 bis 10 aufweist, wenn das Programm auf einem Datenverarbeitungssystem ausgeführt wird.
  14. Computer-Programmprodukt, das auf einem computerlesbaren Datenträger gespeichert ist und ein computerlesbares Programmmittel aufweist, um einen Computer zu veranlassen, das Verfahren (100) nach einem der Ansprüche 1 bis 10 durchzuführen, wenn das Programm auf dem Computer ausgeführt wird.
DE102013209625A 2012-05-30 2013-05-23 Erzeugen von monoton ansteigenden TOD-Werten in einem Multiprozessorsystem Ceased DE102013209625A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1209548.5 2012-05-30
GB1209548.5A GB2502540A (en) 2012-05-30 2012-05-30 Generating monotonically increasing time of day values in multiprocessors

Publications (1)

Publication Number Publication Date
DE102013209625A1 true DE102013209625A1 (de) 2013-12-05

Family

ID=46546139

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013209625A Ceased DE102013209625A1 (de) 2012-05-30 2013-05-23 Erzeugen von monoton ansteigenden TOD-Werten in einem Multiprozessorsystem

Country Status (3)

Country Link
US (1) US9207706B2 (de)
DE (1) DE102013209625A1 (de)
GB (1) GB2502540A (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9507646B2 (en) * 2015-02-11 2016-11-29 International Business Machines Corporation Cycle-level thread alignment on multi-threaded processors
US9720441B1 (en) 2016-09-30 2017-08-01 International Business Machines Corporation Generating time-of-day values without causing execution stalls
CN112162591B (zh) * 2020-10-30 2023-04-11 上海兆芯集成电路有限公司 具有多个处理器的电子装置及其同步方法
CN113204516B (zh) * 2021-04-26 2024-06-18 北京京东乾石科技有限公司 处理器时间同步的方法和装置
US20240248890A1 (en) * 2023-01-23 2024-07-25 Dell Products L.P. Data storage system ensuring consistency of data received by a producer from a collector via a shared memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7681064B2 (en) 2005-09-09 2010-03-16 International Business Machines Corporation Apparatus and computer program product for TOD-clock steering

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59114664A (ja) * 1982-12-21 1984-07-02 Fujitsu Ltd マルチプロセツサによる情報処理方式
JPS63123218A (ja) * 1986-11-12 1988-05-27 Nec Corp タイマ/カウンタ回路
US6775789B2 (en) * 1999-06-21 2004-08-10 International Business Machines Corporation Method, system and program products for generating sequence values that are unique across operating system images
US8230252B2 (en) * 2004-07-20 2012-07-24 Hewlett-Packard Development Company, L.P. Time of day response
US20080071502A1 (en) * 2006-09-15 2008-03-20 International Business Machines Corporation Method and system of recording time of day clock

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7681064B2 (en) 2005-09-09 2010-03-16 International Business Machines Corporation Apparatus and computer program product for TOD-clock steering

Also Published As

Publication number Publication date
US9207706B2 (en) 2015-12-08
GB201209548D0 (en) 2012-07-11
GB2502540A (en) 2013-12-04
US20130326256A1 (en) 2013-12-05

Similar Documents

Publication Publication Date Title
DE69410489T2 (de) Verfahren und gerät für die synchronisation und den ablauf von mehreren datenströmen und echtzeitaufgaben
DE69733407T2 (de) Schnittstelle zur datenübertragung zwischen zwei taktbereichen
DE102013209625A1 (de) Erzeugen von monoton ansteigenden TOD-Werten in einem Multiprozessorsystem
DE102017125180A1 (de) Synchrone Hardware-Ereignis-Sammlung
DE102012221037B4 (de) Einheit und Verfahren zum Realisieren einer Ressourcensperre
DE112013003312T5 (de) Überwachung des &#34;Row Hammer&#34;-Zustands
DE112018004138B4 (de) Asynchrone aktualisierung von metadatenspuren in reaktion auf einen mittels einer e/a-operation über eine busschnittstelle erzeugten cachetreffer
DE69829769T2 (de) Zeitmessschaltung
DE102008046831A1 (de) Ereignisgesteuerte Zeitintervallmessung
DE102014011021B4 (de) System und Verfahren für Speicherdirektzugriff-Transfers
DE102013201174A1 (de) Online-Überprüfung einer Standby-Datenbank in physischen Replikationsumgebungen mit Protokollversand
DE112011104682B4 (de) Kalibrieren der Strobesignal-Schreiblatenzzeit (CWL) an Spaltenadressen in einem Speichersystem
DE19914986A1 (de) Vorrichtung zum Verzögern eines Taktsignals
DE102016122763A1 (de) Zugreifen auf daten über verschiedene takte
DE112018002334T5 (de) Vorrichtungen und verfahren zur übertragung von ereignissen mit einer gleichförmigen latenz auf seriellen kommunikationsverbindungen
DE112021002267T5 (de) System und verfahren zum synchronisieren von knoten in einer netzwerkvorrichtung
DE112020000167T5 (de) Verschachtelte host-rücksetzungs- und nächste neuinitialisierungsoperationen
DE202015009300U1 (de) Uhrsynchronisierung über W-Lan-Beacons
DE102017209132A1 (de) Sensordaten-Verarbeitungseinrichtung
DE112018005359T5 (de) Verhindern eines Beibehaltens von Datensatzsperren durch Transaktionen mit langer Laufzeit
DE102012224362A1 (de) Anpassung einer Testhäufigkeit für die Ressourcenauslastung
DE60223964T2 (de) System mit Busvorladeschaltung
DE69522871T2 (de) Verbesserter Zeitgeber für Datenprozessoren
DE102013222471B4 (de) Erzeugung und verteilung einer synchronisierten zeitquelle
DE112020002465T5 (de) Zufallsabtasten aus einer suchmaschine

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final