-
Rückverweisung auf verwandte
Anmeldung
-
Die
vorliegende Anmeldung beansprucht die Vorteile der provisorischen
US-Anmeldung 60/764,718, eingereicht am 1. Februar 2006 mit dem gleichen
Titel für
Rhodes et al., welche hier durch diese Bezugnahme einbezogen wird.
-
Gebiet der Erfindung
-
Die
Erfindung betrifft allgemein replizierte, hochgradig zuverlässige Verarbeitungssysteme
und insbesondere Systeme mit dupliziertem Speicher.
-
Hintergrund der Erfindung
-
Hochgradig
zuverlässige
Verarbeitungssysteme erfordern oft eine Duplikation des Prozessors (einschließlich des
Prozessorspeichers), sodass dieser keinen singulären Ausfallpunkt in dem System darstellt. Üblicherweise
ist der eine Prozessor aktiv und hält das System am Laufen, und
der andere Prozessor wird im "Reserve"-Modus gehalten,
in welchem er kontinuierlich mit Kopien von Speicher-Schreibtransaktionen,
die in dem aktiven Prozessor erfolgen, aktualisiert wird, wobei
dieser Aktualisierungsprozess als "Schattenverarbeitung" bezeichnet wird. Wenn in dem aktiven
Prozessor ein Fehler auftritt, schaltet das System auf den Reserveprozessor
um und fährt
mit den Verarbeitungsaufgaben des Systems praktisch störungsfrei
fort, da es den Zustand des aktiven Prozessors zum Zeitpunkt des
Ausfalls kennt.
-
Bei
einem üblicherweise
genutzten Schattenverarbeitungs verfahren werden alle Daten aus dem
aktiven Prozessor in den Speicher des Reserveprozessors kopiert,
selbst wenn nur ein Teil derselben tatsächlich benötigt wird, damit der Reserveprozessor
den Betrieb des Systems im Falle eines Fehlers in dem aktiven Prozessor
weiterführen
kann. Dieses Verfahren der Schattenverarbeitung ist für hochleistungsfähige Verarbeitungssysteme
zu einem ernsthaften Engpass geworden. Es reduziert die Gesamtleistungsfähigkeit
des Systems, da es üblicherweise
länger
dauert, Daten von dem aktiven Prozessor zu dem Reserveprozessor
zu transferieren, als es dauert, einen normalen Speicher-Schreibvorgang
in dem aktiven Prozessor auszuführen.
-
Ein
bekanntes Verfahren der Schattenverarbeitung wird als "hardwareunterstützte Duplikation" oder "Hardware-Duplikation" bezeichnet. Bei
der Hardware-Duplikation steuert Hardware die Duplikationsvorgänge, die
zwischen dem primären
Prozessor und dem Reserveprozessor erfolgen. Der Applikationsprozess
bemerkt seinerseits nur Zugriffe auf einen gemeinsam genutzten Speicher.
Ein Duplikationsmanager bildet den Speicher auf einem Eingabe-/Ausgaberaum
ab, und Hardware wickelt die Übertragung
der schattenverarbeiteten Informationen zu dem Reserveprozessor
ab. Obgleich es möglich
ist, dass die Hardware-Duplikation einen minimalen Einfluss auf
Softwareprozesse hat, ein Leistungsverhalten des Systems auf höherem Niveau
bietet und sich minimal auf die Kosten der Software-Entwicklung
auswirkt, sind dafür
oft anwendungsspezifische Hardware-Baugruppen, eine kostspielige
Hardware-Entwicklung
und Aufrechterhaltung der Kompatibilität der Hardware erforderlich
und es treten Einschränkungen
hinsichtlich der Abbildung des Speichers auf den Eingangs-/Ausgangsbus
auf.
-
Ein
weiteres bekanntes Verfahren der Schattenverarbeitung wird als "transaktionsbasierte
Duplikation" oder "Software-Duplikation" bezeichnet. Bei der
Software-Duplikation
sendet der aktive Prozossor Informationen dazu, welche Funktionen
er ausführt,
an den Reserveprozessor, und der Reserveprozessor dupliziert diese
Funktionen und aktualisiert bei dem Prozess seinen Speicherzustand
derart, dass er demjenigen des aktiven Prozessors entspricht.
-
Obgleich
das Verfahren sehr geringen Einfluss auf die Hardware hat und nicht
weiter von dem Server abhängig
ist, als dass ein Transaktionskanal von dem aktiven Prozessor zu
dem Reserveprozessor benötigt
wird, liegt die Komplexität
des Verfahrens in der Software. Der Grund für die Komplexität liegt
darin, dass der gesamte Applikationscode in der Lage sein muss,
die Duplikationsfunktion auszuführen
und diese aktiv verwalten muss. Die Software-Duplikation kann beträchtliche
Ressourcen der Zentraleinheit oder CPU erfordern, um alle Fassetten der
Duplikationsverarbeitung auszuführen.
-
Was
im Fachgebiet fehlt, ist ein Schattenverarbeitungsverfahren, das
eine dynamische Verfolgung im Hinblick darauf ermöglicht,
welche Teile des Speichers durch die "beschatteten", d. h. einer Schattenverarbeitung unterworfenen,
Anwendungs- oder Applikationsprozesse in dem aktiven Verarbeitungssystem
während
eines ausgewählten
Intervalls geändert
worden sind.
-
Zusammenfassung der Erfindung
-
Diesen
und anderen Erfordernissen wird durch die verschiedenen Ausführungsformen
und Konfigurationen der vorliegenden Erfindung entsprochen. Die
Erfindung ist allgemein auf ein Verfahren ausgerichtet, welches
den Zustand einer Mehrzahl von ausgewählten oder designierten Speicherbereichen
(z. B. Speicherstellen oder -blöcken
wie etwa Seiten) kontrolliert, um Schreibvorgänge, die durch einen Applikationsprozess
erfolgen, welcher einer Schatten verarbeitung unterworfen ist, zu
verfolgen. Wie verständlich
sein wird, bezeichnet eine "Seite" ein Speichersegment
mit ausgewählter
Größe, die
typischerweise gleich der elementaren Größe des Hostprozessors ist.
Die Größe einer
Seite beträgt üblicherweise
etwa 4.000 Bytes. Typischerweise verwaltet der Mikroprozessor die
Speichersegmente einzeln und simuliert größere Speichereinrichtungen durch
Umlagerung (Swapping) von Seiten mit Code und Daten in physische
Speicher, wenn dies erforderlich ist (bei Bedarf).
-
Bei
einer Konfiguration werden die Zustände aller Seiten, die dem Applikationsprozess
entsprechen (oder von diesem genutzt werden), anfänglich auf
einen "gesperrten" Zustand, beispielsweise
einen Nur-Lese-Zustand gesetzt. Wenn der Applikationsprozess versucht,
Daten auf eine der gesperrten Seiten zu schreiben, erkennt der Prozessor
einen Schreibfehler. Die Fehler werden genutzt, um diejenigen Speicherbereiche
zu identifizieren und zu verfolgen, die seit der letzten Synchronisation
zwischen dem primären
Verarbeitungssystem und dem Reserveverarbeitungssystem geändert worden
sind. In Reaktion auf den Fehler wird der Status der speziellen Speicherseite
auf einen Zustand "entsperrt", beispielsweise
einen Lese/Schreib-Zustand geändert. Dem
Applikationsprozess wird dann gestattet, die Daten auf die spezielle
Speicherseite zu schreiben. Der Prozess wird Speicherseite für Speicherseite wiederholt,
während
der Applikationsprozess Daten oder Informationen verarbeitet.
-
In
ausgewählten
Intervallen werden die Informationen oder Daten bezüglich der
beschriebenen oder geänderten
Speicherseiten gesammelt und an das Reserveverarbeitungssystem weitergeleitet,
welches dann die Änderungen
an entsprechenden Stellen in seinem Speicher repliziert. Wie zu
erkennen sein wird, enthält
jede Speicherstelle in dem Speicher des Reserveverarbeitungssystems
ein Spiegelbild der zuvor geänderter
Daten in dem entsprechenden Speicherbereich des primären Verarbeitungssystems.
Für jeden
Speicherbereich, der sich immer noch in dem "gesperrten" Zustand befindet, erfolgt normalerweise
keine Schattenverarbeitung in dem Reserveverarbeitungssystem, da
er sich seit der letzten Datensynchronisation zwischen den beiden
Verarbeitungssystemen nicht geändert
hat.
-
Bei
dieser Konfiguration werden gemäß der Erfindung
die Eigenschaften eines Prozessors genutzt, die normalerweise genutzt
werden, um Schutzbereiche für
einen Speicher festzulegen, um einen Bereich des Speichers auf einen
ersten Zustand (z. B. Nur-Lesen) zu setzen und zu veranlassen, dass der
Prozessor der Schattenverarbeitungslogik eine versuchte Modifikation
des Speicherbereichs meldet. Die Meldung des Prozessors stellt den
Auslöser
für die
Schattenverarbeitung oder Replizierung des Speicherbereichs auf
das Reserveverarbeitungssystem dar. Anders ausgedrückt nutzt
die Erfindung genau den Mechanismus, der zur Verhinderung von Änderungen
an ausgewählten
Speicherbereichen ausgelegt ist, um das Gegenteil zu tun, nämlich eine
Meldung bezüglich
von Änderungen
an Speicherbereichen zu erhalten und solche Änderungen zu gestatten. Der
Schattenverarbeitungsmechanismus nutzt somit nicht nur die integrierte
Speicherverwaltungsfähigkeit
des Prozessors, um die Unterstützung
zum Erkennen und Duplizieren von Schreibvorgängen durch das aktive Verarbeitungssystem
zu bieten, sondern ist auch im Hinblick auf Operationen der Applikation
transparent.
-
Die
Erfindung stellt eine Form der Software-Duplikation dar und vermag
ein neuartiges Verfahren zum Transferieren von Prozessordaten von
einem aktiven Prozessor zu einem oder mehreren Reserveprozessoren
in einer Umgebung mit duplizierten Prozessoren bereitzustellen,
welches eine Kontrolle darüber
ermöglicht,
welche Daten transferiert werden und welche nicht. Dadurch kann
die Gesamtanzahl von Schreibvorgängen
in dem System reduziert werden, die auf den Reserveprozessor übertragen
werden müssen,
und daher ergibt sich eine unmittelbare Verbesserung des Leistungsverhaltens
an dem aktiven Prozessor, indem ermöglicht wird, dynamische Änderungen
an der Angabe dazu vorzunehmen, welche Speicherbereiche schattenverarbeitet
werden, während
gleichzeitig die notwendige Bandbreite für die Ausführung der Schattenverarbeitung
vermindert wird. Im Gegensatz zur hardwareunterstützten Duplikation,
bei welcher das Verarbeitungssystem kleine Transaktionen (z. B.
ein Wort) beinhaltet, kann durch die Seitengröße der Software-Duplikation
die Möglichkeit
einer stärkeren Beeinträchtigung
durch unrichtige Codierungspraktiken und große Datenmanipulation bestehen.
Der Mechanismus kann außerdem
das Erfassen der Häufigkeit
von Schreibvorgängen
in Speicherbereichen ermöglichen,
wodurch teilweise oder vollständige
Codepunkte oder Programmeinstiegsmöglichkeiten, so genannte "Hooks", die in den Code
der schattenverarbeiteten Applikationsprozesse eingebettet sind, welche
die Leistungsfähigkeit
der Software-Duplikation negativ beeinflussen, entfernt werden.
-
Eine
dynamische Steuerung der Schattenverarbeitung kann möglich sein.
Die dynamische Steuerung der Schattenverarbeitung kann wiederum ermöglichen,
dass das System solche Merkmale wie beispielsweise "sanfte" Umschaltungen unterstützt. Sanfte
Umschaltvorgänge
erfolgen, wenn der aktive Prozessor und der Reserveprozessor identische Speicherbilder
aufweisen und der Reserveprozessor beginnt, Anweisungen auszuführen, unmittelbar nachdem
der aktive Prozessor die Steuerung dem neu aktivierten (zuvor Reserve-)
Prozessor überlassen
hat. Dadurch kann eine nahtlose Übertragung der
Systemsteuerung von einem Prozessor auf einen anderen möglich sein.
-
Wenn
ein Bereich des Speichers einer Entität (z. B. einem Programm) zugeordnet
wird (z. B. durch das Betriebssystem des aktiven Prozessors), kann
festgestellt werden, ob der Speicherbereich, welcher der Entität zugeordnet
worden ist, schattenverarbeitet werden soll. Diese Feststellung
wird bewirken, dass der Speicherbereich anfangs in den gesperrten
Zustand (falls er schattenverarbeitet werden soll) oder in den entsperrten
Zustand (falls er nicht schattenverarbeitet werden soll) gesetzt
wird.
-
Gemäß der Erfindung
kann die gesamte Software, außer
ein Duplikationssystem (welches die Zustände der Speicherbereiche steuert)
von der Kenntnis abgeschirmt werden, wie die Schattenverarbeitung
erfolgt. Die Echtzeit-Anforderungen an den aktiven Prozessor können somit
reduziert werden, welcher ansonsten transaktionsbasierte Duplikationsnachrichten
für alle
Funktionen, die eine Duplikation erfordern, generieren müsste. Darüber hinaus werden
Schattenverarbeitungsentscheidungen vor den Entwicklern von Applikationsprozessen "versteckt", da mittels des
Zustands der Speicherbereiche verfolgt wird, welche Bereiche des
Speichers schattenverarbeitet werden und welche nicht. Damit verbessert
sich die Markteinführungszeit
durch Reduzierung der Systemcode-Entwicklung,
da der Code des Applikationsprozesses nicht im Hinblick darauf geschrieben
zu werden braucht, dass er Duplikationstransaktionen ausführen und
diese korrekt abwickeln können
muss. Darüber
hinaus kann es bei der Abwicklung von Schattenverarbeitungsentscheidungen
unter Nutzung des Zustands der Speicherbereiche zu Echtzeit-Einsparungen kommen,
da kein Applikationsprozess-Code ausgeführt zu werden braucht, um transaktionsbasierte
Datenduplikationsnachrichten zu generieren und abzuwickeln.
-
Die
Erfindung kann eine End-zu-End-TCP(Transport Control Protocol)-Verbindung
nutzen, um eine Übermittlung
von Duplikationsinformationen zwischen dem aktiven oder primären Verarbeitungssystem
und dem Reserveverarbeitungssystem auszuführen. Mit dieser Art von Verbindung
kann ein routingfähiger,
reproduzierbarer und remotefähiger
Standard bereitgestellt werden. Die Verbindung kann ferner durch
Nutzung verschiedener Verschlüsselungsprotokolle,
beispielsweise dem Advanced Encryption Standard oder AES, welche
zu der TCP/IP-Protokollfamilie kompatibel sind, Sicherheit bieten.
-
Diese
und andere Vorteile werden anhand der Offenbarung der vorliegend
enthaltenen Erfindung(en) offensichtlich werden.
-
Die
Ausdrücke "zumindest eines", "eines oder mehrere" und "und/oder" sind offene Ausdrücke, die
in ihrer Anwendung sowohl konjunktiv als auch disjunktiv zu verstehen
sind. Beispielsweise bedeutet jeder der Ausdrücke "zumindest eines der Elemente A, B und
C", "zumindest eines der
Elemente A, B oder C", "eines oder mehrere
der Elemente A, B und C, "eines
oder mehrere der Elemente A, B oder C" und "A, B und/oder C" A allein, B allein, C allein, A und
B zusammen, A und C zusammen, B und C zusammen oder A, B und C zusammen.
-
Die
vorstehend beschriebenen Ausführungsformen
und Konfigurationen sind weder vollständig noch erschöpfend. Wie
zu erkennen sein wird, sind andere Ausführungsformen der Erfindung
möglich, bei
denen allein oder in Kombination eines oder mehrere der vorstehend
angegebenen oder nachstehend im Detail beschriebenen Merkmale zur
Anwendung kommen.
-
Kurze Beschreibung der
Zeichnungen
-
1 stellt
ein Blockdiagramm von duplizierten Verarbeitungssystemen entsprechend
einer Ausführungsform
der vorliegenden Erfindung dar;
-
2 ist
ein Signalflussdiagramm, das die verschiedenen Signale darstellt,
die zwischen den Logikbauelementen entsprechend einer Ausführungsform
der vorliegenden Erfindung ausgetauscht werden;
-
3 stellt
eine Mehrzahl von Speicherbereichen mit unterschiedlichen Zuständen entsprechend
einer Ausführungsform
der vorliegenden Erfindung dar; und
-
4 ist
ein Blockdiagramm eines Satzes von Speicherbereichen entsprechend
einer Ausführungsform
der vorliegenden Erfindung.
-
Detaillierte Beschreibung
-
1 zeigt
ein System 100 mit duplizierter Verarbeitung, welches ein
erstes, ein zweites, ein drittes und ein n-tes Verarbeitungssystem 104a–n umfasst,
die durch eine Mehrzahl von Duplikationsverbindungen 106a–m verbunden
sind. Das System 100 arbeitet normalerweise in einer Konfiguration
aktiv/Reserve, wobei das erste Verarbeitungssystem 104a aktiv
ist und sich das zweite ... n-te Verarbeitungssystem in Reserve
befindet. Obgleich mehrere Reserveverarbeitungssysteme gezeigt sind,
sollte verstanden werden, dass auch nur ein Reserveverarbeitungssystem
verwendet werden kann, wobei die Anzahl von dem speziellen Applikationsprozess
abhängt.
Wie zu erkennen sein wird, führt
das aktive Verarbeitungssystem die Verarbeitungsaufgaben des Systems
aus, und das inaktive Verarbeitungssystem bildet eine Reserve, um
zu dem aktiven Verarbeitungssystem zu werden, falls das momentan
aktive Verarbeitungssystem ausfallen sollte.
-
Jedes
Verarbeitungssystem 104 umfasst einen Speicher 108 und
einen Prozessor 112. Als Speicher 108 wird der
adressierbare Speicherplatz sowie andere interne Speicher, die zur
Ausführung
von Anweisungen genutzt werden, bezeichnet. Er stellt normalerweise
eine Kombination aus Nur-Lese- und beschreibbarem Speicher dar.
Der Prozessor 108 stellt eine Funktionseinheit dar, welche
Anweisungen interpretiert und ausführt. Er umfasst normalerweise eine
oder mehrere Anweisungssteuereinheiten sowie eine Arithmetik- und
Logik-Einheit. Vorzugsweise
ist der Prozessor einstandardmäßiger Mikroprozessor, wie
etwa ein PentiumTM-Mikroprozessor.
-
Der
Speicher 108 umfasst ferner eine Mehrzahl von Applikationsprozessen 116a–y zum Ausführen spezifizierter
Sätze von
Operationen in Form von Transaktionen sowie eine entsprechende Mehrzahl primärer Sätze von
Speicherbereichen 120a–y,
um die Ausgaben der Operationen zu empfangen und zu speichern, ein
Betriebssystem 124 zur Steuerung der Ausführung von
Programmen und zum Bereitstellen solcher Dienste wie Ressourcenzuweisung,
Terminierung, Eingabe/Ausgabe-Steuerung
und Datenverwaltung, ein Duplikationssystem 128 zum Steuern der
Zustände
der Speicherbereiche 120a–y und zur Steuerung von Schattenverarbeitungsvorgängen, sekundäre Sätze von
Speicherbereichen 132a–y
(welche die primären
Sätze von
Speicherbereichen 120a–y
duplizieren können
und diesen entsprechen können)
zum Empfangen und Speichern von Daten aus einem entsprechenden Speicherbereich 120a–y, eine
Vergleichseinrichtung 126 zum Vergleichen der Daten oder
Informationen in den primären
Sätzen von
Speicherbereichen zu einem ersten ausgewählten Zeitpunkt mit den Daten
oder Informationen in den primären
Sätzen
von Speicherbereichen zu einem zweiten (späteren) ausgewählten Zeitpunkt,
um Unterschiede oder Änderungen
an den Daten festzustellen, und eine Schnittstelle 150 zum
Lesen von Sätzen
geänderter
Daten aus der Vergleichseinrichtung 126 zum Zusammensetzen
und Paketieren der geänderten
Daten zu einem seriellen Datenstrom und zum Übermitteln der paketierten
Daten, mit eingeschlossenen geeigneten Fehlerprüfdaten (z. B. zyklische Redundanzprüfung oder
CRC (Cyclic Redundancy Check) und dergleichen), und zwar gleichzeitig
oder zu unterschiedlichen Zeitpunkten, zu jedem der Reserveverarbeitungssysteme.
Bei einer Konfiguration umfasst der Speicher einen gemeinsam genutzten
Speicherraum (welcher Teil des zweiten Satzes von Speicherbereichen
sein kann), welcher Daten bezüglich
jedes Applikationsprozesses, der ein Client für das Duplikationssystem 128 ist,
Daten bezüglich
jedes Speicherbereichs, der dupliziert wird, sowie Warteschlangenköpfe und
Einträge
von Schattenverarbeitungspuffern zum Halten der Daten in jedem geänderten
Speicherbereich umfasst. Die sekundären Sätze von Speicherbereichen 132a–y können als
Puffer implementiert sein und brauchen keine Eins-zu-eins-Entsprechung
zu den primären
Sätzen von
Speicherbereichen zu haben.
-
Wie
zu erkennen sein wird, beinhaltet die Software-Duplikation zwei Hauptaktivitäten, nämlich die
Schattenverarbeitung und die Auffrischung von Daten. Eine Auffrischung
stellt den Prozess des Kopierens aller duplizierten Speicherseiten
von dem aktiven Verarbeitungssystem in das Reserveverarbeitungssystem
dar, um den Speicher des Reserveverarbeitungssystems in Synchronisation
mit dem Speicher des aktiven Verarbeitungssystems zu bringen. Eine
Auffrischung erfolgt, bevor eine Schattenverarbeitung der Daten
beginnt. Dies geschieht, um sicherzustellen, dass alle Daten in
dem Reserveverarbeitungssystem vollständig synchron mit dem aktiven Verarbeitungssystem
sind. Vor der Auffrischung sind die beiden Systeme (das aktive und
das Reserve-) nicht synchronisiert, und der gesamte Speicher in dem
aktiven Verarbeitungssystem befindet sich im Lese/Schreib-Zustand.
Alle Daten in dem Reserveverarbeitungssystem werden als ungültig betrachtet. Bei
einer Konfiguration wird die Auffrischung initiiert, indem für jedes
Speichersegment, das dupliziert werden soll, nacheinander der Nur-Lese-Zustand
markiert wird und erzwungen wird, dass alle Seiten dieses Segments
auf das Reserveverarbeitungssystem dupliziert werden. Wenn ein jeweiliges
Segment dupliziert ist, beginnt es mit der normalen Erkennung von Schreibvorgängen durch
die Applikation und der Schattenverarbeitung dieser Daten auf das
Reservesystem. Somit kann die Auffrischung erfolgen, während die
Applikation Daten verarbeitet und kann auch segmentweise der Reihe
nach erfolgen, sodass die Verarbeitung in dem aktiven Verarbeitungssystem nicht
beeinträchtigt
wird. Das Reservesystem wird als synchron betrachtet, wenn alle
Segmente des Speichers in dem aktiven System aufgefrischt worden sind
und einer Schattenverarbeitung zu dem Reserveverarbeitungssystem
unterworfen sind.
-
Die
Schattenverarbeitung der Daten stellt den fortlaufenden Prozess
des Synchronhaltens des aktiven Verarbeitungssystems und des Reserveverarbeitungssystems
durch Senden neu geänderter Speicherseiten
an das Reserveverarbeitungssystem, wenn Änderungen auftreten, dar. Der
Eintritt in diesen Modus erfolgt, nachdem der Auffrischungsmodus
ausgeführt
worden ist und für
alle Sätze
von primären
Speicherbereichen in dem Reserveverarbeitungssystem angenommen wird,
dass diese einen gültigen
Zustand aufweisen.
-
3 stellt
eine spezielle Konfiguration der Erfindung dar. In der Konfiguration
entsprechen die Speicherbereiche Speicherseiten. Wie erwähnt weist der
primäre
Satz von Speicherseiten verschiedene Zustände auf. Also liegt jede Speicherseite
in einem von zwei Binärzuständen vor,
entweder dem gesperrten (L – Locked)
oder dem ungesperrten (U – Unlocked).
In 3 befinden sich die Speicherseiten 300a,
b, d, h, i, l und n im gesperrten (oder ungeänderten) Zustand), während sich
die Seiten 300c, e, f, g, j, k, m und o im ungesperrten
(oder geänderten) Zustand
befinden.
-
Bei
dieser Konfiguration wird, wenn von dem Duplikationssystem 128 ein
Schreibfehler empfangen wird, diejenige Seite, auf welcher der Schreibfehler
auftritt, als "schmutzig" markiert. Eine Kopie
der "sauberen" Seite (oder der
Seite, bevor irgendwelche Änderungen
in Reaktion auf den Schreibbefehl erfolgen) wird in einer Duplikationsdatei
oder einem der sekundären
Sätze von
Speicherbereichen 132 gespeichert und als die "saubere" Version markiert.
Die Seite wird dann als lesbar/beschreibbar markiert und der Schreibvorgang
wird gestattet. Am Ende einer Transaktion werden alle Seiten, die
als "schmutzig" markiert sind, erneut
als Nur-Lese-Bereiche markiert und mit der "sauberen" Version der entsprechenden Seite, die
in einer Duplikationsdatei gespeichert ist, verglichen. Die Unterschiede
werden dann in das Reserveverarbeitungssystem geschrieben. Wie zu
erkennen sein wird, ist der Auslöser
zur Verarbeitung der schmutzigen Seiten und zur Weiterleitung der Unterschiede
an das Reserveverarbeitungssystem nicht auf den Abschluss einer
Transaktion beschränkt.
Andere mögliche
Auslöser
sind das Vergehen einer ausgewählten
Zeitspanne, Kapazitätsgrenzen
des Schattenpuffers und/oder des sekundären Satzes von Speicherbereichen,
ein Zahlenwert für die
Anzahl geänderter
Speicherbereiche, eine Programmeinstiegsmöglichkeit (Hook) und Kombinationen
dieser.
-
2 veranschaulicht
die Funktionsweise des Daten-Schattenverarbeitungsmechanismus
entsprechend einer Ausführungsform
der Erfindung. Die Signale aus 2 werden
Applikationsprozess für Applikationsprozess
parallel übertragen.
Bevor die dargestellten Signale von den Komponenten ausgetauscht
werden, werden die primären
Sätze von Speicherbereichen 120a–y (auf
welche die Applikationsprozesse zugreifen und die von dem Reserveverarbeitungssystem
schattenverarbeitet oder dupliziert werden sollen) in den gesperrten
oder Nur-Lese-Zustand gesetzt. Ferner werden die Applikationsprozesse
von dem Duplikationssystem 128 als Clients registriert
und erhalten Zugriff auf den für
die Duplikation gemeinsam genutzten Speicherbereich, und das Duplikationssystem
nutzt Informationen, die in dem Applikationsprozess kompiliert sind,
um die Bereiche des Speichers (oder den ausgewählten jeweiligen primären Speicherbereichssatz
des Applikationsprozesses) festzustellen, die dupliziert werden, und
welches die Charakteristiken jedes Bereichs sind. Wie zu erkennen
sein wird, sind für
jeden Applikationsprozess üblicherweise
Codepunkte definiert oder ausgewählt,
welche den Beginn und das Ende einer Transaktion definieren.
-
Was
einen ausgewählten
Applikationsprozess betrifft, so wird der Prozess initiiert, wenn
der Applikationsprozess 116 einen Schreibbefehl 200 an die
Schnittstelle des Speichers zum Schreiben in einen ausgewählten Speicherbereich
(z. B. auf eine Speicherseite) weiterleitet. Da der ausgewählte Speicherbereich
gesperrt ist, führt
jeder Versuch, in den Speicherbereich zu schreiben, zu einem Schreibfehler,
der von dem Prozessor 112 erkannt wird. Beispielsweise
stellt der Fehler bei einer bestimmten Konfiguration ein Segmentierungsverletzungssignal
dar, welches den spezifischen Code aufweist, dass die Speicherseite
in einer Nur-Lese-Umgebung beschrieben wird. In Reaktion darauf
leitet der Prozessor 112 eine Fehlernachricht 204,
welche die Art des Fehlers angibt, an das Betriebssystem 124 weiter,
und diese enthält
eine Speicherkennung, die den betroffenen Speicherbereich identifiziert.
Ein Beispiel für
eine Speicherkennung ist eine Speicheradresse. Das Betriebssystem 124 leitet
dann einen Interruptbefehl 208 an den Applikationsprozess
weiter, welcher einen Aufruf 210 zu dem Duplikationssystem 128 ausführt, der
das Vorhandensein und die Art eines Fehlers anzeigt und die Speicherseite
identifiziert, typischerweise mit Hilfe der Speicheradresse.
-
In
Reaktion darauf stellt das Duplikationssystem 128 zunächst die
Antworten auf zwei Anfragen fest, nämlich:
- a)
Beruhte der Fehler auf einer Berechtigungsverletzung?
- b) Lag der Bereich des betroffenen Speichers im Adressbereich
eines duplizierten Segments für diesen
Applikationsprozess?
-
Wenn
die Antwort auf entweder a) oder b) NEIN lautet, beruht der Fehler
nicht auf einem Versuch, auf eine gesperrte Seite zu schreiben,
und der normale Fehlermechanismus des Applikationsprozesses wird
fortgeführt.
Wenn die Antwort auf sowohl a) als auch b) JA lautet, protokolliert
das Duplikationssystem 128 in dem (nachstehend aufgezeigten) entsprechenden
Schattenverarbeitungspuffer des Applikationsprozesses in dem gemeinsam
genutzten Speicherraum die Speicheradresse des Speicherbereichs,
in welchem der Schreibfehler aufgetreten ist, und leitet eine Lesenachricht 216 an
die (nicht gezeigte) Speicherschnittstelle des Speichers weiter, um
den (ungeänderten)
Inhalt des Speicherbereichs, in dem der Fehler aufgetreten ist,
zu lesen. Die Speicherschnittstelle sendet 220 den Inhalt
des Speicherbereichs an das Duplikationssystem 128 zurück, welches
dann der Schnittstelle den Befehl 224 gibt, den Inhalt
in einen geeigneten Speicherbereich in einem jeweiligen sekundären Satz
von Speicherbereichen 132a–y zu schreiben.
-
4 zeigt
einen Schattenverarbeitungspuffer oder eine Tabelle 400,
die von dem Duplikationssystem 128 unterhalten wird. Jedes
Mal, wenn ein Schreibfehler empfangen wird, fügt das Duplikationssystem 128 an
die Liste eine Speicher bereichskennung an (welche typischerweise
eine Speicheradresse darstellt, die dem Speicherbereich zugeordnet
ist, in welchem der Fehler aufgetreten ist) sowie, optional, Attribute
des Speicherbereichs. Bei einer weiteren Konfiguration enthält die Tabelle 400 eine
Auflistung aller Speicherbereichskennungen, die von einer ausgewählten Applikation
genutzt werden. Immer wenn ein Schreibfehler für einen Speicherbereich empfangen
wird, wird ein Indikatormerker gesetzt, um zu zeigen, dass der Speicherbereich
seit der letzten Datensynchronisation geändert worden ist.
-
Kehren
wir zu 2 zurück,
so wird das Duplikationssystem 128 danach das Betriebssystem 124 anweisen 228,
den Speicherbereich in den ungesperrten Zustand zu setzen, wodurch
ein Schreiben in diesem ermöglicht
wird. Das Betriebssystem 124 wird in Reaktion darauf die
Speicherschnittstelle anweisen 232, den Zustand des Speicherbereichs
auf "ungesperrt" zu setzen. Das bedeutet,
dass alle weiteren Schreibvorgänge
auf die jetzt entsperrte (schmutzige) Seite mit normaler Geschwindigkeit
erfolgen werden, bis der Zustand der Seite zurück auf "gesperrt" geändert
wird.
-
Nachdem
der Schreibbefehl des Applikationsprozesses fehlgeschlagen ist,
gibt der Applikationsprozess erneut den Schreibbefehl 236 für den jetzt
ungesperrten Speicherbereich aus. Da der Speicherbereich jetzt ungesperrt
ist, kann der Applikationsprozess die gewünschten Daten in den Speicherbereich
schreiben.
-
Die
vorstehenden Schritte werden für
den ausgewählten
Applikationsprozess Schreibbefehl für Schreibbefehl wiederholt,
bis zu einem ausgewählten Zeitpunkt
oder dem Eintreten eines ersten Ereignisses, an dem eine Datensynchronisation
mit dem schattenverarbeitenden Reserveverarbeitungssystem ausgeführt werden
soll. Der ausgewählte
Zeitpunkt kann auf einer Reihe von Ereignissen basieren, darunter
der Einstellung einer Uhr, einem Zahlenwert für einen ausgewählten Parameter
(z. B. eine Anzahl von geänderten
Seiten, eine Anzahl von Änderungen und
dergleichen), einer verfügbare Kapazität des sekundären Speichers
und dergleichen. Bei einer Konfiguration wird der Applikationsprozess,
wenn er das Ende einer Transaktion erreicht, eine Funktion in dem
Duplikationssystem aufrufen, um alle schmutzigen Seiten zu verarbeiten,
und wird den Prozess in einen stabilen Zustand zurückführen. Die
Funktion durchläuft
in einer Schleife alle in dem Schattenverarbeitungspuffer gespeicherten
schmutzigen Seiten.
-
Wenn
der ausgewählte
Zeitpunkt erreicht ist, gibt das Duplikationssystem 128 einen
Befehl 240 "fertig" an den ausgewählten Applikationsprozess aus,
um temporär
die Ausgabe an den entsprechenden primären Satz von Speicherbereichen
auszusetzen, weist das Betriebssystem 124 an, den Zustand der
Speicherbereiche in dem entsprechenden primären Satz von Speicherbereichen
auf "gesperrt" oder die Seite auf "sauber" zu setzen 244,
und weist die Vergleichseinrichtung 126 an, den Inhalt
oder die Speicherbilder eines oder mehrerer sekundärer Sätze von
Speicherbereichen 132 auszulesen und die Speicherbilder
Speicherbereich für
Speicherbereich mit den Speicherbildern des entsprechenden primären Satzes
von Speicherbereichen 120 zu vergleichen 248,
um die Differenz oder die Daten, die sich geändert haben, zu bestimmen.
Im gesperrten Zustand befindliche Speicherbereiche werdennormalerweise
nicht ausgelesen, da sie sich seit der vorhergehenden Synchronisation
nicht geändert
haben.
-
Die
Vergleichseinrichtung 126 liefert 252 einen Satz
von geänderten
Daten von jeder Speicherseite an die Schnittstelle 150.
Die geänderten
Daten bestehen normalerweise in einem Versatz und einem Wert für das momentane
Speicherbild des Speicherbereichs. Bei einer bestimmten Konfiguration
wird, wenn die Vergleichseinrichtung die Speicherbereiche bearbeitet,
das ursprüngliche
Bild jedes Speicherbereichs in dem sekundären Satz von Speicherbereichen
durch die Daten aus dem momentanen Speicherbild des Speicherbereichs
und einer Liste der zwischen dem ursprünglichen und dem geänderten
Bild erkannten Unterschiede ersetzt. Bei einer anderen Konfiguration
wird der gesamte Inhalt der schmutzigen Seite an das Reserveverarbeitungssystem
gesendet, wenn die Anzahl der Unterschiede zwischen der ursprünglichen
(ungeänderten)
Seite in dem sekundären
Satz von Speicherbereichen und der schmutzigen Seite in dem primären Satz
von Speicherbereichen einen ausgewählten Schwellwert übersteigt.
-
Nachdem
die gesamte Verarbeitung in den sekundären Sätzen von Speicherbereichen
durch die Vergleichseinrichtung abgeschlossen ist, werden die Speicherbilder
in den Speicherbereichen verschoben; beispielsweise an das Ende
einer abgehenden Warteschlange, die von der Schnittstelle 150 unterhalten
wird, angekoppelt. Es wird ein neuer Satz von sekundären Speicherbereichen
für den
Applikationsprozess erhalten, und es wird gestattet, dass der Prozess
mit einer weiteren Transaktion fortfährt. Die Schnittstelle 150 setzt
die geänderten
Informationen und/oder, in Abhängigkeit
von der Konfiguration, den vollständigen Inhalt der schmutzigen
Seite selbst zu einem seriellen Daten- oder Informationsstrom zusammen
und paketiert diesen und übermittelt
die paketierten Daten über
eine Duplikationsverbindung 106, typischerweise in einem
verschlüsselten
Kommunikationsvorgang und mit eingeschlossenen geeigneten Fehlerprüfdaten (z.
B. zyklische Redundanzprüfung
oder CRC, rollende Prüfsumme
und dergleichen), an das entsprechende Reserveverarbeitungssystem
oder an mehrere Reserveverarbeitungssysteme. Das Reserveverarbeitungssystem vergleicht
die Fehlerprüfdaten
mit den Fehlerprüfdaten
für die
gleiche Seite in dem Reserveverarbeitungssystem, nachdem die geänderten
Daten auf dieser Seite Anwendung gefunden haben. Wenn der Fehlerprüfmechanismus
einen Fehler erkennt – z.
B. die rollende Prüfsumme
nicht mit dem Wert für
die rollende Prüfsumme,
die für
die gleiche Seite in dem Reserveverarbeitungssystem erzeugt worden
ist, nachdem die Unterschiede Anwendung gefunden haben, übereinstimmt,
wird angenommen, dass der Speicherbereich, oder die Seite, nicht
mehr synchronisiert ist. In diesem Fall kann eine Auffrischung erfolgen,
um die Speicherbereiche erneut in Synchronisation zu bringen. Bei
einer Konfiguration werden durch das Reserveverarbeitungssystem
Aktualisierungen einzelner Seiten angefordert, und ein Rückgriff
auf eine vollständige
Auffrischung erfolgt nur, wenn in irgendeinem Intervall eine beträchtliche
Anzahl von Fehlern vorliegt.
-
Da
alle Speicherbereiche in dem primären Satz von Speicherbereichen
auf den ersten Zustand zurückgesetzt
worden sind, wiederholt das Duplikationssystem 128 danach
die Vorgänge 216, 224 und 228 Speicherseite
für Speicherseite,
bis ein ausgewähltes
Ereignis oder ein Auslöser
eintritt, welches/welcher bewirkt, dass die Änderungen an den Daten in dem
primären
Satz von Speicherbereichen erneut an das (die) Reserveprozessorsystem(e)
gesendet werden.
-
Bei
einer alternativen Ausführungsform
speichert das Duplikationssystem 128 die Adressen jedes
der geänderten
Speicherbereiche und sendet den vollständigen Inhalt jedes geänderten
Speicherbereichs an das Reserveverarbeitungssystem. Diese Ausführungsform
ist sinnvoll, wenn die verfügbare Bandbreite
der Duplikationsverbindung 106 keine Rolle spielt.
-
Das
Reserveverarbeitungssystem empfängt die
Duplikationsdaten, entweder in Form von Unterschieden zwischen Seiten
oder in Form von vollständigen
Seiten, aktualisiert die momentanen Speicherbilder jeder Seite in
seinem primären
Satz von Speicherbereichen und speichert die aktualisierten Speicherbilder
temporär
in seinem sekundären Satz von
Speicherbereichen. Erst nachdem der Fehlerprüfmechanismus bestätigt hat,
dass alle aktualisierten und temporär gespeicherten Seiten mit
den entsprechenden Seiten in dem primären Verarbeitungssystem synchronisiert
sind, werden die aktualisierten Seiten in den primären Satz
von Speicherbereichen des Reserveverarbeitungssystems kopiert. Durch diese
verzögerte
Aktualisierung des primären
Satzes von Speicherbereichen des Reserveverarbeitungssystems wird
sichergestellt, dass das Reserveverarbeitungssystem zu jedem beliebigen
Zeitpunkt einen gültigen
Satz von Speicherbildern in seinem primären Satz von Speicherbereichen
besitzt oder, anders ausgedrückt,
dass die Daten in seinem primären
Satz von Speicherbereichen exakt mit den Daten in dem primären Satz
von Speicherbereichen des primären Reserveverarbeitungssystems
zu einem gewissen früheren
Zeitpunkt übereinstimmen.
-
Es
können
auch eine Reihe von Varianten und Modifikationen der Erfindung genutzt
werden. Es wäre
möglich,
gewisse Merkmale der Erfindung zu ermöglichen, ohne dass andere bereitgestellt
werden.
-
Beispielsweise
wird die Erfindung bei einer alternativen Ausführungsform nicht nur in Verarbeitungsarchitekturen
verwendet, die ein primäres
Verarbeitungssystem und N Reserveverarbeitungssysteme nutzen, sondern
auch in Architekturen, die N primäre Verarbeitungssysteme und
M Reserveverarbeitungssysteme nutzen, oder die N primäre und ein Reserveverarbeitungssystem
nutzen.
-
Bei
einer weiteren alternativen Ausführungsform
wird die Erfindung zur Erstellung eines Profils des Funktionsverhaltens
genutzt, um das Funktionsverhalten eines Verarbeitungssystems zu
verfolgen oder zu überwachen.
Die Erfindung ermöglicht,
dass das Überwachungssystem
all das verfolgt, was das überwachte
Verarbeitungssystem in dem Speicher tut.
-
Bei
einer weiteren alternativen Ausführungsform
wird der primäre
Satz von Speicherbereichen auf den ersten Zustand gesetzt, wenn
die Speicherbilder in die Bereiche geladen werden, und/oder wenn
das Verarbeitungssystem hochgefahren wird, bewirkt die Firmware,
dass die Speicherbereiche auf den ersten Zustand gesetzt werden.
In jedem Fall steuert das Duplikationssystem nicht selbst die Einstellung
des Anfangszustands des primären
Satzes von Speicherbereichen.
-
Bei
einer weiteren alternativen Ausführungsform
weist das primäre
Verarbeitungssystem mehr als einen Prozessor auf. Aufgrund der Zunahme
der Verarbeitungsressourcen können
die Aktualisierungen häufiger
an das (die) Verarbeitungssystem e) gesendet werden. Jeder Prozessor
kann eine Teilmenge der vorstehend beschriebenen Vorgänge ausführen.
-
Bei
einer noch anderen alternativen Ausführungsform können speziell
ausgelegte Hardware-Implementierungen, darunter, aber nicht ausschließlich, anwendungsspezifische
integrierte Schaltungen oder ASICs, programmierbare Logik-Gatter und andere Hardware-Bauelemente
gleichfalls dafür
ausgelegt werden, die vorliegend beschriebenen Verfahren zu implementieren.
Ferner können
auch alternative Software-Implementierungen,
darunter, aber nicht ausschließlich,
eine verteilte Verarbeitung oder verteilte Komponenten/Objekt-Verarbeitung, eine
parallele Verarbeitung oder eine Verarbeitung durch eine virtuelle
Maschine ebenfalls dafür
ausgelegt werden, die vorliegend beschriebenen Verfahren zu implementieren.
-
Es
sei außerdem
angemerkt, dass die Software-Implementierungen
gemäß der vorliegenden Erfindung
optional auf einem konkreten Speichermedium, beispielsweise einem magnetischen
Medium wie einer Platte oder einem Band, einem magneto-optischen
oder optischen Medium wie einer Platte oder auf einem Halbleitermedium
wie einer Speicherkarte oder einer anderen Baugruppe, in der ein
oder mehrere (nichtflüchtige)
Nur-Lese-Speicher enthalten sind, gespeichert ist. Ein E-Mail-Anhang
in Form einer digitalen Datei oder ein anderes in sich abgeschlossenes
Informationsarchiv oder ein Satz von Archiven wird als ein Verteilungsmedium
betrachtet, das einem konkreten Speichermedium äquivalent ist. Dementsprechend
werden ein konkretes Speichermedium oder ein Verteilungsmedium und
anerkanntermaßen
dem Stand der Technik entsprechende Äquivalente sowie Nachfolgermedien,
auf welchen die Software-Implementierungen der vorliegenden Erfindung
gespeichert sind, als von der Erfindung umfasst erachtet.
-
Obgleich
die vorliegende Erfindung Komponenten und Funktionen, die in den
Ausführungsformen
realisiert sind, mit Bezug auf bestimmte Standards und Protokolle
beschreibt, ist die Erfindung nicht auf diese Standards und Protokolle
beschränkt. Andere ähnliche
Standards und Protokolle, die vorliegend nicht erwähnt sind,
sind vorhanden und werden als in die vorliegende Erfindung einbezogen
betrachtet. Zudem werden die vorliegend erwähnten Standards und Protokolle
sowie andere, ähnliche
Standards und Protokolle, die vorliegend nicht erwähnt sind,
periodisch durch schnellere oder effizientere Äquivalente abgelöst, die
im Wesentlichen die gleichen Funktionen haben. Solche Ersatzstandards
und -protokolle mit den gleichen Funktionen werden als Äquivalente
betrachtet, die in der vorliegenden Erfindung eingeschlossen sind.
-
Die
vorliegende Erfindung umfasst in ihren verschiedenen Ausführungsformen
Komponenten, Verfahren, Prozesse, Systeme und/oder Vorrichtungen
im Wesentlichen so, wie sie vorliegend dargestellt und beschrieben
worden sind, einschließlich verschiedener
Ausführungsformen,
Teilkombinationen und Teilgruppen derselben. Für Fachleute auf dem Gebiet
wird nach dem Verstehen der vorliegenden Offenbarung klar sein,
wie die vorliegende Erfindung auszuführen und zu nutzen ist. Die
vorliegende Erfindung umfasst in verschiedenen Ausführungsformen
das Bereitstellen von Einrichtungen und Prozessen ohne solche Elemente,
die vorliegend oder in verschiedenen Ausführungsformen des Vorstehenden
nicht dargestellt und/oder beschrieben worden sind, darunter ohne
solche Elemente, die möglicherweise
bei früheren
Einrichtungen oder Prozessen verwendet worden sind, z. B. um das
Funktionsverhalten zu verbessern, eine einfache Realisierung zu erreichen
und/oder die Kosten der Realisierung zu reduzieren.
-
Die
vorstehende Diskussion der Erfindung wurde zum Zwecke der Veranschaulichung
und der Beschreibung dargeboten. Mit dem Vorstehenden wird nicht
beabsichtigt, die Erfindung auf die vorliegend offenbarte(n) Form
oder Formen einzuschränken.
In der vorstehenden detaillierten Beschreibung sind beispielsweise
zum Zwecke der flüssigeren
Offenbarung verschiedene Merkmale der Erfindung in einer oder mehreren
Ausführungsformen
zusammengefasst. Diese Methode der Offenbarung darf nicht dahingehend
interpretiert werden, dass sie eine Intension widerspiegelt, dass
die beanspruchte Erfindung mehr Merkmale erfordere, als explizit
in jedem Anspruch angeführt
sind. Wie die folgenden Ansprüche
reflektieren, beruhen die erfindungsgemäßen Aspekte vielmehr auf weniger
als allen Merkmalen einer einzigen vorstehend offenbarten Ausführungsform.
Die folgenden Ansprüche
seien hiermit also in diese detaillierte Beschreibung einbezogen,
wobei jeder Anspruch für
sich allein für
eine separate bevorzugte Ausführungsform
der Erfindung steht.
-
Obgleich
darüber
hinaus die Beschreibung der Erfindung die Beschreibung einer oder
mehrerer Ausführungsformen
und bestimmter Varianten und Modifikationen umfasste, liegen auch andere
Varianten und Modifikationen innerhalb des Schutzumfangs der Erfindung,
wie sie zum Beispiel nach dem Verstehen der vorliegenden Offenbarung
im Rahmen der Fertigkeiten und Kenntnisse von Fachleuten auf dem Gebiet
liegen werden. Es ist beabsichtigt, Rechte zu erlangen, die alternative
Ausführungsformen
in dem gestatteten Umfang einschließen, darunter alternative,
austauschbare und/oder äquivalente
Strukturen, Funktionen, Bereiche oder Schritte zu den beanspruchten,
egal ob diese alternativen, gegeneinander austauschbaren und/oder äquivalenten
Strukturen, Funktionen, Bereiche oder Schritte vorliegend offenbart
sind oder nicht, und ohne die Absicht, etwaig patentierbare Erfindungsmerkmale öffentlich
zu überlassen.