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