-
Hintergrund
-
Die vorliegende Erfindung betrifft die Fehlerbehebung in Hochverfügbarkeitsprozessoren und im Einzelnen betreffen beispielhafte Ausführungsformen der vorliegenden Erfindung Systeme zur Fehlerbehebung und Verfahren zur Instruktionsverarbeitung für Hochverfügbarkeitsprozessoren sowohl mit wiederherstellbarem als auch mit nicht wiederherstellbarem Betriebsmodus.
-
Datenverarbeitungssysteme mit hoher Verfügbarkeit setzen sowohl das Erkennen von Hardwarefehlern als auch Verfahren zum Beheben der erkannten Fehler und zum Vermeiden von falschen Ergebnissen voraus. Bei einem herkömmlichen Mikroprozessor, der die Fehlerbehebung unterstützt, sind die meisten Fehlerbehebungsoperationen hardwarespezifisch und in den Mikroprozessor selbst integriert. Folglich kann Software, die auf dem Mikroprozessor ausgeführt wird, ohne Unterbrechung ausgeführt werden, ohne dass Störungen oder Meldungen, die von transienten Hardwarefehlern in der Hardware des Mikroprozessors herrühren, auftreten beziehungsweise erfolgen.
-
Diese in Mikroprozessoren realisierten herkömmlichen Fehlerbehebungsmechanismen verwerfen üblicherweise Instruktionen, die durch fehlerhafte Schaltungen tatsächlich verarbeitet oder möglicherweise verarbeitet werden, während sie Ergebnisse von zeitlich älteren Instruktionen, die verarbeitet werden, bevor ein Fehler erkannt wird, behalten. Um zu unterscheiden, ob Ergebnisse von Instruktionen möglicherweise fehlerhaft oder nicht fehlerhaft sind, müssen Ergebnisse zwischengespeichert und/oder zurückgehalten werden, bis zugehörige Ergebnisse mit möglicherweise fehlerhaften Zuständen verglichen werden, bevor diese Instruktionen (und ihre Ergebnisse) als nicht fehlerhaft festgeschrieben werden. Wenn ein fehlerhafter Zustand erkannt wird, müssen diese möglicherweise fehlerhaften Ergebnisse rückgängig gemacht werden, und jede betroffene Instruktion wird verworfen und später neu ausgegeben.
-
Um die vorstehend beschriebenen Funktionen zu erzielen, sind zusätzliche Pipeline-Ressourcen notwendig, um Ergebnisse von Instruktionen zwischenzuspeichern, bis keine Fehler erkannt werden. Da Instruktionen aus einem fehlerfreien Architekturzustand außer Kraft gesetzt werden müssen, müssen zudem entsprechende Zustände (architekturbezogene und manchmal nicht architekturbezogene) verwaltet werden (z. B. durch Prüfpunkte). Durch eine solche Zwischenspeicherung, Verwaltung und das Setzen von Prüfpunkten nimmt die gesamte notwendige Schaltlogik zu oder aber die verfügbaren Nettoressourcen nehmen ab, die für die Instruktionsverarbeitung in herkömmlichen Mikroprozessoren, die die Fehlerbehebung unterstützen, zur Verfügung stehen.
-
Kurzdarstellung der Erfindung
-
Gemäß beispielhaften Ausführungsformen der vorliegenden Erfindung wird ein Computerprogrammprodukt, ein System und ein Verfahren zur Durchführung der Fehlerbehebung vorgestellt. Ein Software-Wiederherstellungsprüfpunkt wird von einem Prozessor erzeugt. Auf der Grundlage des Erzeugens des Software-Wiederherstellungsprüfpunkts wird der Prozessor dynamisch in einen nicht wiederherstellbaren Verarbeitungs-Betriebsmodus überführt. Der nicht wiederherstellbare Verarbeitungs-Betriebsmodus ist ein Modus, in dem eine Teilgruppe von Hardware-Fehlerbehebungsressourcen ausgeschaltet oder für den neuen Zweck der Instruktionsverarbeitung verwendet wird. Während des nicht wiederherstellbaren Verarbeitungs-Betriebsmodus wird festgestellt, dass ein neuer Software-Wiederherstellungsprüfpunkt erforderlich ist. Auf der Grundlage des Feststellens, dass ein neuer Software-Wiederherstellungsprüfpunkt erforderlich ist, wird der Prozessor dynamisch in einen wiederherstellbaren Verarbeitungs-Betriebsmodus überführt. Der wiederherstellbare Verarbeitungs-Betriebsmodus ist ein Modus, in dem Hardware-Fehlerbehebungsressourcen, einschließlich mindestens einer der Hardware-Fehlerbehebungsressourcen in der Teilgruppe, für Hardware-Fehlerbehebungsoperationen bestimmt sind.
-
Zusätzliche Merkmale und Vorteile werden durch die Methoden der vorliegenden Erfindung realisiert. Weitere Ausführungsformen und Aspekte der Erfindung werden hier ausführlich beschrieben und als Teil der beanspruchten Erfindung betrachtet. Um die Erfindung mit den Vorteilen und den Merkmalen besser verstehen zu können, sei auf die Beschreibung und die Zeichnungen verwiesen.
-
Kurze Beschreibung der diversen Ansichten der Zeichnungen
-
Der als Erfindung betrachtete Gegenstand ist in den Ansprüchen am Ende der Beschreibung im Einzelnen dargelegt und eindeutig beansprucht. Die vorstehenden und andere Merkmale und Vorteile der Erfindung gehen aus der folgenden ausführlichen Beschreibung, in Verbindung mit den beiliegenden Zeichnungen betrachtet, hervor, bei denen:
-
1 eine schematische Darstellung eines Computerprozessors mit hoher Verfügbarkeit im wiederherstellbaren Modus gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung zeigt;
-
2 eine schematische Darstellung eines Computerprozessors mit hoher Verfügbarkeit im nicht wiederherstellbaren Modus gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung zeigt;
-
3 einen Ablaufplan eines Verfahrens zum Verarbeiten von Instruktionen in einem Computerprozessor mit hoher Verfügbarkeit und Unterstützung des nicht wiederherstellbaren Modus gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung zeigt;
-
4 ein von einem Computer nutzbares Speichermedium gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung zeigt; und
-
5 eine schematische Darstellung einer Datenverarbeitungsvorrichtung gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung zeigt.
-
Ausführliche Beschreibung
-
Gemäß beispielhaften Ausführungsformen der vorliegenden Erfindung werden ein Computerprozessor mit hoher Verfügbarkeit und ein Verfahren zum Verarbeiten von Instruktionen auf einem Hochverfügbarkeitsprozessor bereitgestellt, welche den Umfang der für die Instruktionsausführung zur Verfügung stehenden Ressourcen durch dynamische Änderungen an Fehlerbehebungssystemen vergrößern, welche dem Prozessor zur Verfügung stehen. Gemäß mindestens einer beispielhaften Ausführungsform kann ein Computerprozessor mit hoher Verfügbarkeit beispielsweise dynamisch von einem vollständig wiederherstellbaren Modus in eine Form eines nicht wiederherstellbaren Modus wechseln, der Ressourcen (z. B. Register, Pufferspeicher usw.), die üblicherweise für die Fehlerbehebung verwendet werden, für andere Operationen freigeben kann. Beim Arbeiten in einem nicht wiederherstellbaren Modus können die freigegebenen Ressourcen im Vergleich mit anderen Computerprozessoren (d. h. Prozessoren mit nur wiederherstellbaren Modi) folglich eine höhere Datenverarbeitungsleistung ermöglichen, während sie nach wie vor einen annehmbaren Grad der Fehlerbehebung zulassen, die nicht durch kostspielige hardwarespezifische Prüfpunkte, sondern vielmehr durch Prüfpunkte, die von Software erzeugt werden, aktiviert wird.
-
Ein Hardwaremechanismus kann zum Beispiel so von Software aktiviert werden, dass sich der Prozessor dynamisch selbst konfiguriert, um in einem der beiden Modi ausgeführt zu werden. Während sich die Software in einem nicht wiederherstellbaren Betriebsmodus befindet, kann sie einen groben Wiederherstellungsmechanismus bereitstellen, und sie kann Fehler mit Hilfe von softwarebasierten Prüfpunktschemata beheben und dabei dasselbe Maß an Fehlerbehebung ermöglichen, während sie ebenfalls über freigegebene Ressourcen von nicht in Anspruch genommenen Hardware-Fehlerbehebungsressourcen verfügt. Folglich kann eine Anwendung (oder ein Code-Abschnitt) den Prozessor anweisen, in einen nicht wiederherstellbaren Modus einzutreten und nur benachrichtigt zu werden, wenn ein Fehler erkannt wird. Andernfalls kann der Prozessor in seinem wiederherstellbaren Modus bleiben (oder in seinen wiederherstellbaren Modus zurückgeführt werden).
-
Ein nicht wiederherstellbarer Prozessorzustand hat mehrere Vorteile. Die zusätzlichen Ressourcen, die erforderlich sind, um einen bisher als gut bekannten Prüfpunktzustand zu sichern, können für produktive Arbeiten zugeordnet werden. Temporäre Zwischenspeicherungszustände können ebenfalls verringert werden. Wenn zum Beispiel ein Teil eines physischen Registerpools dem Setzen von Hardware-Prüfpunkten zugeordnet ist, können diese Register stattdessen nun für eine spekulative Verarbeitung genutzt werden. Außerdem kann gestattet werden, dass eine zusätzliche spekulative Verarbeitung vorzeitig abgeschlossen wird, bevor alle Fehler erfasst sind und ein Prüfpunkt gesetzt wird. Ergebnisse können festgeschrieben werden, bevor das Setzen von Prüfpunkten von der Hardware durchgeführt wird, was in einem nicht wiederherstellbaren Modus nicht mehr erforderlich ist. Sobald durch Software aktivierte Fehlerbehebungsoperationen einen neuen Software-Prüfpunkt erforderlich machen, kann der Prozessor daraufhin angewiesen werden, wieder in einen wiederherstellbaren Betriebsmodus zu wechseln, so dass die Fehlerbehebung durch Hardware vereinfacht wird, während die Software einen neuen Prüfpunkt erzeugt. Anschließend kann der Prozessor in einen nicht wiederherstellbaren Modus mit neu freigegebenen Ressourcen zurückkehren.
-
Gemäß weiteren beispielhaften Ausführungsformen der vorliegenden Erfindung werden ein Computerprozessor mit hoher Verfügbarkeit und ein Verfahren zum Verarbeiten von Instruktionen auf einem Hochverfügbarkeitsprozessor bereitgestellt, die den Stromverbrauch durch dynamische Änderungen an Fehlerbehebungssystemen verringern, welche dem Prozessor zur Verfügung stehen. Gemäß mindestens einer beispielhaften Ausführungsform kann ein Computerprozessor mit hoher Verfügbarkeit beispielsweise dynamisch von einem vollständig wiederherstellbaren Modus in eine Form eines nicht wiederherstellbaren Modus wechseln, der Ressourcen (z. B. Register, Pufferspeicher usw.), die üblicherweise für die Fehlerbehebung verwendet werden, für andere Operationen freigeben und ausschalten kann. Beim Arbeiten in einem nicht wiederherstellbaren Modus tragen die ausgeschalteten Ressourcen folglich nicht zum gesamten Stromverbrauch bei, während sie nach wie vor einen annehmbaren Grad der Fehlerbehebung zulassen, die nicht durch kostspielige hardwarespezifische Prüfpunkte, sondern vielmehr durch Prüfpunkte, die von Software erzeugt werden, aktiviert wird.
-
Darüber hinaus können die vorstehend erwähnten beispielhaften Ausführungsformen so in Kombination realisiert werden, dass ein Teil der freigegebenen Ressourcen ausgeschaltet wird, während ein anderer Teil der freigegebenen Ressourcen für einen anderen als den ursprünglich vorgesehenen Zweck verwendet wird. Auf diese Weise kann eine Vielzahl von Betriebszuständen zutage treten, in denen im Gegensatz zu vorhandenen Technologien mehrere Vorteile bei der Datenverarbeitung realisiert werden.
-
Wenden wir uns nun 1 zu, in der ein Computerprozessor mit hoher Verfügbarkeit gemäß einer beispielhaften Ausführungsform gezeigt ist. Wie gezeigt ist, enthält der Prozessor 100 einen Cachespeicher 101 (z. B. einen Daten- und Instruktionscachespeicher), der in eine Vielzahl von verschiedenen Cachespeicher-Stufen oder -Bezeichnungen unterteilt werden kann. Der Prozessor 100 enthält des Weiteren eine Instruktionsabrufschaltung 102, die so konfiguriert ist, dass sie Instruktionen aus dem Cachespeicher 101 abruft. Der Prozessor 100 enthält ferner eine Instruktionsdecodierschaltung 103, die so konfiguriert ist, dass sie abgerufene Instruktionen von der Instruktionsabrufschaltung 102 empfängt. Der Prozessor 100 enthält darüber hinaus eine Instruktionszuteilungsschaltung 104, die so konfiguriert ist, dass sie durch die Schaltung 103 decodierte Instruktionen zuteilt. Nach der Zuteilung werden die Instruktionen ausgegeben und durch den Instruktionsausführungsteil 105 ausgeführt, der des Weiteren so konfiguriert ist, dass er zugehörige Daten aus dem Cachespeicher 101 abruft. Es wird davon ausgegangen, dass die detaillierte Abwicklung der Außer-der-Reihe-Instruktionsausführung und -unterstützung hauptsächlich in den Schaltungen 105 durchgeführt wird.
-
Wie vorstehend beschrieben wurde, enthält der Prozessor 100 folglich relativ gebräuchliche und allgemeine Teile, die erwartungsgemäß funktionieren. Diese Teile können für reduzierte oder komplexe Instruktionssätze (z. B. RISC oder CISC) oder für ganz spezielle Instruktionssätze entsprechend jeder gewünschten Umsetzung von beispielhaften Ausführungsformen konfiguriert werden. Daher sollte der Prozessor 100 nicht auf einen bestimmten Computerprozessor beschränkt werden, sondern gleichermaßen für jeden beliebigen Computerprozessor gelten, der etwas ähnliche oder gleichwertige Komponenten enthält.
-
Wenden wir uns nochmals 1 zu. Der Prozessor 100 enthält des Weiteren Fehlerbehebungsressourcen 106, die mit dem Cachespeicher 101 und dem Instruktionsausführungsteil 105 Daten austauschen. Die Fehlerbehebungsressourcen 106 können Fehlerbehebungskomponenten einschließen, die Warteschlangen, Pufferspeicher, Thread-Verarbeitungseinheiten, Register und beliebige andere geeignete Komponenten aufweisen. Die Fehlerbehebungsressourcen 106 können Instruktionen und Ergebnisse zur Vereinfachung der Fehlerbehebung verarbeiten, erzeugen und speichern. Darüber hinaus können die Fehlerbehebungsressourcen 106 Hardwarefehler erkennen, Prüfpunkte erfassen und nach dem Erkennen von Fehlern eine Wiederholung von Prüfpunkten durchführen.
-
Wenden wir uns nochmals 1 zu. Der Prozessor 100 enthält des Weiteren Mehrzweckressourcen 107, die mit dem Instruktionsausführungsteil 105 und den Fehlerbehebungsressourcen 106 über den Kanal 108 Daten austauschen. Die Mehrzweckressourcen können Mehrzweckregister, Gleitkommaregister, Sonderregister oder beliebige andere geeignete Komponenten einschließen, um Ergebnisse von Instruktionen kontrolliert zu verarbeiten und zu speichern.
-
Zwar sind die Fehlerbehebungsressourcen 106 und die Mehrzweckressourcen 107 als einzelne Komponenten dargestellt, doch können diese Ressourcen in andere Komponenten 101, 102, 103, 104, 105 und andere Prozessorkomponenten verteilt werden, die nicht ausdrücklich gezeigt sind. Außerdem kann mittels der Fehlerbehebungsressourcen 106 und auch der Mehrzweckressourcen 107 eine Vielzahl von Threads auf dem Prozessor 100 ausgeführt werden.
-
Es sei angemerkt, dass die Fehlerbehebungsressourcen 106 und die Mehrzweckressourcen 107 zwar so konfiguriert sind, dass sie unterschiedliche Funktionen bereitstellen, die darin verwalteten zugehörigen Komponenten aber mindestens einen Teil von generell den gleichen oder ähnlichen Komponenten aufweisen. Beispielsweise können sowohl Register als auch Pufferspeicher zu den Fehlerbehebungsressourcen 106 und zu den Mehrzweckressourcen 107 zählen. Gemäß beispielhaften Ausführungsformen der vorliegenden Erfindung kann daher ein Teil der Fehlerbehebungsressourcen freigegeben, ausgeschaltet oder für einen anderen als den ursprünglich vorgesehenen Zweck verwendet werden, damit sie in mindestens einem neuen Betriebsmodus in Übereinstimmung mit den Mehrzweckressourcen funktionieren. Dies ist in 2 dargestellt.
-
Wie in 2 gezeigt ist, wird ein Teil der Fehlerbehebungsressourcen 106 freigegeben und wieder als die Ressourcen 206B verwendet, um eine Funktion entsprechend den Mehrzweckressourcen 107 zu übernehmen. Alternativ kann ein Teil der Ressourcen 206B oder alle Ressourcen 206B ausgeschaltet werden, um den Stromverbrauch zu verringern. Überdies kann ein verbleibender Teil der Fehlerbehebungsressourcen 206A weiterhin ausschließlich für die Fehlerbehebung vorgesehen und des Weiteren so konfiguriert werden, dass er die Ressourcen 206B freigibt, ausschaltet, für einen anderen als den ursprünglich vorgesehenen Zweck verwendet oder wieder einbindet, damit sie im Prozessor 100 entweder die Funktion von Fehlerbehebungsressourcen oder Mehrzweckressourcen übernehmen. Daraus folgt dann, dass, wenn zusätzliche Ressourcen zur Verwendung in der Instruktionsverarbeitung freigegeben werden, der Prozessor 100 schneller arbeiten kann, als wenn alle Fehlerbehebungsressourcen 106 ausschließlich für die Durchführung der Hardware-Fehlerbehebung vorgesehen werden. Wenn ein Teil der zusätzlichen Ressourcen ausgeschaltet wird, lassen sich überdies Stromeinsparungen realisieren. Es sei angemerkt, dass der Prozessor 100 nach wie vor Hardwarefehler erkennt und sie dem Betriebssystem oder dem Anwendungscode meldet. Die Prüfpunkterfassungs- und -wiederholungsmechanismen werden in der Hardware jedoch deaktiviert und stattdessen von Software durchgeführt.
-
Bei dieser Konfiguration ändert der Prozessor seine grundlegende Betriebsweise und ordnet weder Ressourcen für die Sicherung von Prüfpunkten zu noch zögert er die Instruktionsausführung oder -abarbeitung hinaus, die gegebenenfalls warten müssen, bis Prüfpunkte erzeugt und auf Gültigkeit geprüft werden. Eine derartige Konfigurationsänderung kann vorgenommen werden, indem die typischen Instruktionszuteilungs-/-ausgabe/-ausführungsregeln von Algorithmen für die Rangfolgeregelung, die Festlegung der Speicheraktualisierungsreihenfolge und der Registerzuordnung geändert werden. In solch einem nicht wiederherstellbaren Betriebsmodus können viele spezifische Leistungsverbesserungen und Stromeinsparungen bei der Instruktionsverarbeitung erzielt werden.
-
Gemäß beispielhaften Ausführungsformen der vorliegenden Erfindung wird darüber hinaus ein Verfahren zur Instruktionsverarbeitung bereitgestellt, das eine Vorlage für die Instruktionsverarbeitung vorsieht, die sowohl die Datenverarbeitungsleistung erhöht als auch gleichzeitig einen nützlichen Fehlerbehebungsmechanismus auf Systemebene beibehält, der Fehlerbehebungspflichten über die Software und die Hardware verteilt, um Systemressourcen wirksamer zu nutzen.
-
Bezug nehmend auf 3 ist ein Verfahren zur Instruktionsverarbeitung in einem Computerprozessor mit hoher Verfügbarkeit dargestellt. Das Verfahren 300 beinhaltet das Erzeugen eines Software-Prüfpunkts am Block 301. Das Erzeugen des Software-Prüfpunkts kann das Erzeugen eines softwarebasierten Fehlerbehebungsprüfpunkts einschließen, der sowohl eine Software-Fehlerbehebung als auch eine Hardware-Fehlerbehebung bei Instruktionen ermöglicht, die von einem Hochverfügbarkeitsprozessor ausgeführt werden.
-
Nach dem Erzeugen des Prüfpunkts beinhaltet das Verfahren 300 das am Block 302 erfolgende Anweisen des Computerprozessors mit hoher Verfügbarkeit, in einen nicht wiederherstellbaren Modus einzutreten oder mit der Verarbeitung in einem nicht wiederherstellbaren Modus zu beginnen. Folglich wechselt der Prozessor selbsttätig in den nicht wiederherstellbaren Modus, um an Leistungsfähigkeit zu gewinnen oder Stromeinsparungen zu erzielen. Das Anweisen des Prozessors kann das Einfügen einer Instruktion, wie zum Beispiel ”Starte nicht wiederherstellbaren Modus” in das Software-Programm beinhalten. Die Instruktion kann als ein einfacher Befehl, als Operationscode oder als eine Instruktion realisiert werden, die, wenn sie während des normalen Prozessorbetriebs abgerufen und decodiert wird, den Prozessor anweist, in den nicht wiederherstellbaren Betriebsmodus einzutreten. Eine solche Instruktion kann realisiert werden, um einen Datenwert in einem bestimmten Teil des Cache- oder Hauptspeichers speichern zu lassen, welcher nach dem Zugriff als Teil der Verarbeitung der Instruktion die Fehlerbehebungsressourcen 106 anweist, mindestens einen Teil der Ressourcen 206B freizugeben, auszuschalten oder für einen anderen als den ursprünglich vorgesehenen Zweck zu verwenden. Alternativ kann die Instruktion mit einem Satz von Bit-Flags oder anderen zusätzlichen von Software steuerbaren Anweisungen realisiert werden, um die Freigabe von Ressourcen direkter zu steuern. Nach der Ausführung der Instruktion versieht der Prozessor alle vorherigeninstruktionen mit einem Prüfpunkt und wechselt selbsttätig in ein neues Betriebsverfahren, um in einem leistungsorientierten Modus oder in einem Stromsparmodus zu arbeiten; und er unterstützt nicht länger die Fehlerbehebung mittels Hardware-Prüfpunkten. Danach kann der Prozessor 100 am Block 303 Instruktionen mittels der neu freigegebenen Ressourcen 206B und/oder der Mehrzweckressourcen 107 verarbeiten. Alternativ oder in Kombination kann der Prozessor Instruktionen mit den Mehrzweckressourcen 107 verarbeiten, während mindestens ein Teil der Ressourcen 206B ausgeschaltet ist. Wenn von den Fehlerbehebungsressourcen 206A am Block 304 ein Fehler erkannt wird, kann am Block 307 eine Markierung (Flag), ein Wert oder ein anderes Mittel zur Benachrichtigung gesetzt werden und am Block 308 können Instruktionen von der Software unter Verwendung ihres Software-Prüfpunkts wiederholt werden. Die Benachrichtigung kann erfolgen, indem der aktuelle Instruktionsstrom unterbrochen wird, und der Prozessor kann eine spezielle Unterbrechung in den Software-Code aufnehmen. Wenn die Unterbrechungsbehandlung nicht anwendbar oder nicht wünschenswert ist, kann der Prozessor alternativ an eine vorab festgelegte Instruktionsadresse springen. Eine solche Instruktionsadresse kann eine feste Stelle im Speicher sein oder sie kann zum Beispiel als eine Operandenadresse der Instruktion ”Starte nicht wiederherstellbaren Modus” angegeben werden. Andernfalls kann die Verarbeitung im nicht wiederherstellbaren Modus fortgesetzt werden, bis ein neuer Software-Prüfpunkt erforderlich ist. Diese Entscheidung wird für die softwarebasierte Fehlerbehebung getroffen (siehe beispielsweise Block 305).
-
Es dürfte sich verstehen, dass während des Betriebs im nicht wiederherstellbaren Modus alle Instruktionen, deren Zuteilungs-/Ausgaberegel es üblicherweise erforderlich macht (wenn sie zum Beispiel im wiederherstellbaren Modus ausgeführt werden), dass bei ihnen als Nächstes ein Prüfpunkt gesetzt wird, jetzt zu einem früheren Zeitpunkt ausgeführt werden können. Überdies können Ressourcen des physischen Registerpools (Mehrzweckregister/GPRs, Gleitkommaregister/FPRs, Bedingungscoderegister/CCRs usw.), die für eine hardwarebasierte Wiederholung von Prüfpunkten erforderlich gewesen und reserviert worden wären, jetzt für die Instruktionsverarbeitung zugeteilt werden. Auch können Aktualisierungen des Cachespeichers aufgrund von Speicheraktualisierungs-Instruktionen (wie z. B. bei einer einfachen Speicherinstruktion) ausgeführt werden, ohne auf das Setzen von Prüfpunkten durch Instruktionen zu warten. Auf diese Weise lässt sich eine höhere Verarbeitungsleistung realisieren.
-
Wenn die Software bereit ist, einen weiteren Prüfpunkt zu nehmen, was am Block 305 festgestellt wird, kann anschließend eine weitere spezielle Instruktion ausgegeben werden, um den Prozessor am Block 306 anzuweisen, in den wiederherstellbaren Modus einzutreten oder mit der Verarbeitung im wiederherstellbaren Modus zu beginnen. Folglich wechselt der Prozessor selbsttätig in den wiederherstellbaren Modus, um wieder die Unterstützung für eine mögliche hardwarespezifische Fehlerbehebung aufzunehmen. Das Anweisen des Prozessors kann das Ausgeben einer speziellen Instruktion wie zum Beispiel ”Beende den nicht wiederherstellbaren Modus” beinhalten. Die Instruktion kann als ein einfacher Befehl, als Operationscode oder als eine Instruktion realisiert werden, die, wenn sie während des normalen Prozessorbetriebs abgerufen und decodiert wird, den Prozessor anweist, in den wiederherstellbaren Betriebsmodus einzutreten. Eine solche Instruktion kann realisiert werden, um einen Datenwert in einem bestimmten Teil des Cache- oder Hauptspeichers speichern zu lassen, welcher nach dem Zugriff als Teil der Verarbeitung der Instruktion die für einen anderen als den ursprünglich vorgesehenen Zweck verwendeten und/oder ausgeschalteten Ressourcen 206B anweist, ihre Aufgabe als Fehlerbehebungsressourcen wahrzunehmen. Alternativ kann die Instruktion mit einem Satz von Bit-Flags oder anderen zusätzlichen von Software steuerbaren Anweisungen realisiert werden, um die Freigabe von Ressourcen direkter zu steuern. Nach der Ausführung der speziellen Instruktion kann der Prozessor prüfen, ob alle vorherigen Instruktionen abgearbeitet sind, und dann selbsttätig wieder in den wiederherstellbaren Modus wechseln; und wieder die Fehlerbehebung mittels Hardware-Prüfpunkten unterstützen, wie vorstehend beschrieben wurde.
-
Wie der Fachmann verstehen wird, können Aspekte der vorliegenden Erfindung als ein System, ein Verfahren oder ein Computerprogrammprodukt realisiert werden (wie z. B. in 4 dargestellt). Überdies können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts 400 annehmen, das auf einem oder mehreren von einem Computer lesbaren Datenträgern) 402 realisiert ist, auf dem beziehungsweise denen von einem Computer lesbarer Programmcode 404 realisiert ist.
-
Jede beliebige Kombination aus einem oder mehreren von einem Computer lesbaren Datenträgern kann verwendet werden. Der von einem Computer lesbare Datenträger kann ein von einem Computer lesbarer Signaldatenträger oder ein von einem Computer lesbares Speichermedium sein. Ein von einem Computer lesbares 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 eine beliebige geeignete Kombination des Vorstehenden sein. Zu konkreteren Beispielen (wobei die Liste keinen Anspruch auf Vollständigkeit erhebt) für das von einem Computer lesbare Speichermedium würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, 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 eine beliebige geeignete Kombination des Vorstehenden. In Zusammenhang mit diesem Schriftstück kann ein von einem Computer lesbares Speichermedium jedes physisch greifbare Medium sein, das ein Programm zur Verwendung durch ein Instruktionsausführungssystem, eine Instruktionsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Instruktionsausführungssystem, einer Instruktionsausführungsvorrichtung oder -einheit enthalten oder speichern kann.
-
Ein von einem Computer lesbarer Signaldatenträger kann ein weitergegebenes Datensignal mit darin enthaltenem, von einem Computer lesbarem Programmcode, beispielsweise im Basisband oder als Teil einer Trägerwelle, enthalten. Solch ein weitergegebenes Signal kann eine beliebige Form von vielfältigen Formen einschließlich elektromagnetischer, optischer Formen oder eine beliebige geeignete Kombination dieser Formen, ohne darauf beschränkt zu sein, annehmen. Bei einem von einem Computer lesbaren Signaldatenträger kann es sich um einen beliebigen von einem Computer lesbaren Datenträger handeln, der kein von einem Computer lesbares Speichermedium ist und der ein Programm zur Verwendung durch ein Instruktionsausführungssystem, eine Instruktionsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Instruktionsausführungssystem, einer Instruktionsausführungsvorrichtung oder -einheit übertragen, weitergeben oder befördern kann.
-
Programmcode, der auf einem von einem Computer lesbaren Datenträger realisiert ist, kann mittels eines beliebigen geeigneten Mediums einschließlich eines drahtlosen Mediums, eines drahtgebundenen Mediums, eines Lichtwellenleiterkabels, mittels Hochfrequenz (HF) usw. oder mittels einer beliebigen geeigneten Kombination des Vorstehenden, ohne darauf beschränkt zu sein, übertragen werden.
-
Computerprogrammcode 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 sein oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet mittels eines Internet-Dienstanbieters) hergestellt werden.
-
Aspekte der vorliegenden Erfindung werden nachstehend mit Bezug auf Darstellungen in Ablaufplänen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung 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 Instruktionen eines Computerprogramms realisiert werden können. Diese Instruktionen eines Computerprogramms können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Instruktionen, 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 Instruktionen eines Computerprogramms können auch auf einem von einem Computer lesbaren Datenträger gespeichert werden, der eine Datenverarbeitungsvorrichtung (wie beispielsweise in 5 gezeigt), eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem von einem Computer lesbaren Datenträger gespeicherten Instruktionen einen Herstellungsgegenstand erzeugen, der Instruktionen 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 Instruktionen des 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 Instruktionen, 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.
-
Wie oben erwähnt wurde, können die vorstehend beschriebenen methodischen Vorgehensweisen von einem Datenverarbeitungssystem oder einer Datenverarbeitungsvorrichtung umgesetzt werden. Beispielsweise zeigt 5 eine Datenverarbeitungsvorrichtung gemäß einer beispielhaften Ausführungsform. Daher können Teile oder die Gesamtheit der hier beschriebenen methodischen Vorgehensweisen als Instruktionen in einem Prozessor 502 des Datenverarbeitungssystems 500 ausgeführt werden. Zu dem Datenverarbeitungssystem 500 gehören ein Hauptspeicher 501 zur Speicherung von Instruktionen und Daten, die Eingabeeinheit(en) 503 für den Datenaustausch mit dem Computer und ein Bildschirm 504. Folglich kann die vorliegende Erfindung in Software, zum Beispiel als ein beliebiges geeignetes Computerprogramm auf einem Datenverarbeitungssystem, das dem Datenverarbeitungssystem 500 bis zu einem gewissen Grad ähnlich ist, realisiert werden.
-
Der Ablaufplan und die Blockschaubilder in den Figuren stellen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung dar. In dieser Hinsicht kann jeder Block in den Ablaufplänen oder in den Blockschaubildern ein Modul, ein Segment oder einen Teil von Code darstellen, das beziehungsweise der einen oder mehrere ausführbare Instruktionen zur Durchführung der angegebenen logischen Funktion(en) aufweist. Es sei auch angemerkt, dass die in dem Block angegebenen Funktionen in manchen alternativen Ausführungsarten mitunter in einer anderen als in der in den Figuren angegebenen Reihenfolge auftreten können. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Man wird auch feststellen, dass jeder Block der Blockschaubilder und/oder der Darstellung in dem Ablaufplan sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder der Darstellung in dem Ablaufplan von Systemen, die auf Spezial-Hardware beruhen und die angegebenen Funktionen oder Vorgänge durchführen, oder von Kombinationen aus Spezial-Hardware und Computer-Instruktionen ausgeführt werden können.
-
Die hier verwendete Terminologie dient lediglich zur Beschreibung von bestimmten Ausführungsformen 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 Pluralformen einschließen, sofern der Kontext nicht eindeutig etwas anderes angibt. Des Weiteren versteht es sich, dass die Begriffe ”weist auf” 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 plus 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 offenbarten 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.
-
Die hier gezeigten Ablaufpläne stellen lediglich ein Beispiel dar. An diesem Ablaufplan oder den Schritten (oder Operationen), die hier beschrieben sind, können viele Veränderungen vorgenommen werden, ohne vom Wesen der Erfindung abzuweichen. Beispielsweise können die Schritte in einer abweichenden Reihenfolge durchgeführt werden oder es können Schritte hinzugefügt, gelöscht oder geändert werden. All diese Veränderungen werden als ein Teil der beanspruchten Erfindung betrachtet.
-
Zwar wurde die bevorzugte Ausführungsform der Erfindung beschrieben, doch versteht es sich, dass der Fachmann sowohl jetzt als auch in der Zukunft verschiedene Verbesserungen und Erweiterungen vornehmen kann, die unter den Umfang der Ansprüche, die folgen, fallen. Diese Ansprüche sollten so ausgelegt werden, dass sie den ordnungsgemäßen Schutz für die Erfindung, die erstmalig beschrieben wird, bewahren.