DE3687298T2 - Verfahren zur verarbeitung von adressenuebersetzungsausnahmen in einer virtuellen speicheranordnung. - Google Patents

Verfahren zur verarbeitung von adressenuebersetzungsausnahmen in einer virtuellen speicheranordnung.

Info

Publication number
DE3687298T2
DE3687298T2 DE8686112203T DE3687298T DE3687298T2 DE 3687298 T2 DE3687298 T2 DE 3687298T2 DE 8686112203 T DE8686112203 T DE 8686112203T DE 3687298 T DE3687298 T DE 3687298T DE 3687298 T2 DE3687298 T2 DE 3687298T2
Authority
DE
Germany
Prior art keywords
exception
memory
address
failed
operations
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE8686112203T
Other languages
English (en)
Other versions
DE3687298D1 (de
Inventor
Phillip D Hester
William M Johnson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE3687298D1 publication Critical patent/DE3687298D1/de
Publication of DE3687298T2 publication Critical patent/DE3687298T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/88Masking faults in memories by using spares or by reconfiguring with partially good memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Retry When Errors Occur (AREA)

Description

  • Diese Erfindung bezieht sich auf ein Datenverarbeitungssystem mit einem virtuellen Speicher und genauer auf ein Verfahren, das in ihm zur Verarbeitung von Adreßumrechnungsausnahmen in einem Seitenabrufsystem verwendet wird.
  • Es kann ein hierarchisches Speichersystem gebildet werden, das einen Hauptspeicher mit geringer Kapazität und hoher Zugriffsgeschwindigkeit und einen Sekundärspeicher mit hoher Kapazität und niedriger Zugriffsgeschwindigkeit benutzt. Der Hauptspeicher ist in der Regel eine integrierte Speicherschaltung, und der Sekundärspeicher ist gewöhnlich ein Magnetplattenspeicher. Der Zweck des Hauptspeichers besteht darin, geeignete Datenübertragungsraten in einen oder von einem Verarbeitungsmodul zur Verfügung zu stellen, wobei Daten und weitere Informationen so wie gefordert vom Sekundärspeicher in den Hauptspeicher übertragen werden. Ein virtuelles Speichersystem kann geschaffen werden, indem ein hierarchisches Speichersystem mit der Fähigkeit ausgestattet wird, die erforderliche Information zum gewünschten Zeitpunkt automatisch vom Sekundärspeicher in den Hauptspeicher zu übertragen, wenn sich diese Information nicht im Hauptspeicher befindet. Auf diese Weise bemerkt der Nutzer irgendwelche von der Größe des Hauptspeichers herrührenden Beschränkungen nicht.
  • Der Vorteil eines virtuellen Speichersystems besteht darin, daß nicht die gesamte gespeicherte Information (entweder Programm oder Daten), die für den Fortgang der Verarbeitung notwendig ist, auf einmal im Hauptspeicher gespeichert sein muß, sondern daß sich Teile der gespeicherten Information während größerer Zeitabschnitte im Sekundärspeicher befinden können. Dieser Vorteil ergibt sich aus der Tatsache, daß der Hauptspeicher pro Einheit oder pro Bit im allgemeinen teurer als der Sekundärspeicher ist. Bei Anwendungen mit virtuellem Speicher wird die Information in eine Anzahl von Segmenten unterteilt, so daß sich während des Fortganges der Verarbeitung die Information eines Segmentes entweder vollständig im Haupt- oder Primärspeicher befindet oder vollständig fehlt. Wenn alle Segmente die gleiche Größe besitzen, werden sie im allgemeinen als Seiten bezeichnet; in diesem Fall wird der Primärspeicher in sogenannte Seitenrahmen unterteilt, d. h. in Speichereinheiten, die genau eine Seite aufnehmen können.
  • In einem virtuellen Speichersystem wird eine Seitenabrufmethode zur Verfügung gestellt, so daß eine Verarbeitung mit voller Geschwindigkeit weitergehen kann, bis ein Zugriff zu einer fehlenden Seite erforderlich ist. Eine solche Anforderung wird als Fehlseitenbedingung bezeichnet, und die Verarbeitung, die die Fehlseitenbedingung verursacht, wird angehalten, bis die benötigte Seite vom Sekundärspeicher in den Primärspeicher gebracht werden kann. Wenn neue Seiten in den Primärspeicher gebracht werden, müssen einige andere Seiten, die beim Auftreten der Fehlseitenbedingung bereits im Primärspeicher waren, in den Sekundärspeicher zurückgeschickt werden, um den Platz für neue Seiten freizumachen. Die Zahl der Seiten oder Seitenrahmen, die im Primärspeicher für ein bestimmtes Programm zur Verfügung stehen, ist als Programmfenstergröße definiert.
  • Unterschiedliche Programme, unterschiedliche Prozesse innerhalb eines gegebenen Programmes oder sogar der gleiche Prozeß mit unterschiedlichen Daten können unterschiedliche Programmfenstergrößen erforderlich machen. Manche Prozesse können einige Befehle erfordern, die oft wiederholt werden, und andere Prozesse können lange Befehlsketten erfordern. Manche Prozesse können eine Zeit lang ziemlich kleine Datenmengen anfordern, während andere Prozesse zu einem bestimmten Zeitpunkt große Datenmengen fordern können.
  • In einem Computersystem, das eine Speicheradreßumrechnung durchführt, muß das Steuerprogramm entscheiden können, welche physischen Seitenrahmen den Seiten in dem großen virtuellen Adreßraum zugeordnet werden. Das effektivste Mittel zum Treffen dieser Entscheidung ist die Seitenabrufmethode. In diesem Schema werden den virtuellen Seiten physische Seitenrahmen nur dann zugeordnet, wenn dies von einem speziellen, gerade arbeitenden Programm gefordert wird, was durch eine von diesem Programm erzeugte Adreßumrechnungsausnahme angezeigt wird. Dies erfordert, daß diese Ausnahmen im normalen Ablauf der Programmausführung behandelt werden und daß die Ausnahmen für die Fehlerbehandlungsroutine vollständig durchsichtig sind.
  • Es gibt zwei grundlegende Vorgehensweisen, um ein Programm, das auf eine Adreßausnahme gestoßen ist, wiederanlaufen zu lassen. Eine besteht darin, das Programm bei dem Befehl wiederaufzunehmen, der die Ausnahme hervorgerufen hat. Dies erfordert, daß ein Befehl erst abgeschlossen ist, wenn (falls erforderlich) die Ergebnisse der Speicheradreßumrechnung bekannt sind, und daß (in vielen Fällen) ein partiell ausgeführter Befehl rückgängig gemacht wird, so daß er noch einmal ausgeführt werden kann. Da der Prozessor auf die Ergebnisse der Umrechnung warten muß, bevor er zum nächsten Befehl geht, gibt es bei dieser Methode keine Überlappung, und die Leistungsfähigkeit ist relativ gering. Der Mitteilungsmechanismus ist aber einfach. Eine Anzeige der Art der Fehlerbedingung und der Adresse des fehlerbehafteten Befehls sind alles, was für das Steuerprogramm erforderlich ist. Das Steuerprogramm korrigiert die Ausnahmebedingung und läßt die fehlerbehaftete Routine mit einem Rücksprung von der Unterbrechung zum fehlerbehafteten Befehl wiederanlaufen.
  • Eine andere gegenwärtig verwendete Vorgehensweise zum Wiederanlauf eines Programms, in dem eine Adreßausnahme aufgetreten ist, besteht darin, das fehlerbehaftete Programm an dem Punkt wiederaufzunehmen, an dem die Ausnahme festgestellt wurde. Dies erlaubt es dem Prozessor, die Ausführung des nächsten Befehls und die Adreßumrechnung zu überlappen, macht es aber notwendig, daß er dem Steuerprogramm genügend Information über die fehlerbehaftete(n) Operation(en) bereitstellt, so daß die Operation(en) wiederanlaufen kann (können), wenn das fehlerbehaftete Programm wiederanläuft. Die Wiederanlaufprozedur kann sehr komplex sein, da das Steuerprogramm diese Operationen in dem gleichen Prozessorzustand (z. B. dem gleichen Problemzustand) wiederanlaufen lassen muß, der vorhanden war, als die ursprüngliche(n) Operation(en) den Fehler zeigte(n).
  • Um die Befehlsausführung effektiv mit der Adreßumrechnung zu überlappen, muß die Befehlsmenge so definiert sein, daß die Speicherbefehle und die anderen Befehle entkoppelt sind. Beispielsweise muß ein Befehl, der das Inkrementieren eines gegebenen Speicherplatzes erlaubt, notwendigerweise auf die Ergebnisse der Adreßumrechnung warten, bevor er ausgeführt wird.
  • Der Motorola 68010 Mikroprozessor verwendet ein Schema, das einen fehlerbehafteten Befehl nicht an seinem Anfang, sondern an der Stelle wiederanlaufen läßt, an der der Fehler auftrat. Dies beseitigt die Notwendigkeit, den teilweise ausgeführten Befehl rückgängig zu machen, und reduziert in manchen Fällen die Zahl der virtuellen Seiten, denen für das fehlerbehaftete Programm beim Wiederanlauf Speicher zugeordnet werden muß. Es ist aber erforderlich, daß der Prozessor eine große Menge an Information über seinen internen Zustand (100 Bytes) rettet, so daß der Befehl an irgendeinem Zwischenpunkt wiederanlaufen kann. Die Ausnahmebehandlung und die Wiederanlauffolge ist deshalb komplex und uneffektiv. Es gibt auch nur eine geringe effektive Überlappung der Befehlsausführung und der Umrechnung, aber dies wird von der Definition der Befehlsmenge und dem Ausnahmebehandlungsalgorithmus beeinflußt.
  • Eine andere Prozessorarchitektur (wie sie in dem einleitenden Teil von Anspruch 1 beschrieben wurde) erlaubt, daß die fehlerbehaftete Routine an der Stelle wiederanläuft, an der die Ausnahme festgestellt wurde. Die Architektur stellt einen Satz von Registern zur Verfügung, die die Art der Speicheroperation, die Adresse und die Daten anzeigen. Es werden gewisse Befehle definiert, um die Information in diesen Registern zum Wiederanlauf der fehlerbehafteten Operation zu benutzen. Diese Vorgehensweise erlaubt eine gewisse Überlappung, aber da sie auf Registern beruht, begrenzt sie die Zahl der überlappten Speicheroperationen auf eine. Demzufolge werden ziemlich übliche Folgen mit mehreren Lade- und Speicheroperationen nicht mit der maximal möglichen Geschwindigkeit ausgeführt.
  • Die hier beschriebene Erfindung vermeidet alle Nachteile der oben beschriebenen Verfahren. Ist ein Prozessor mit entkoppelten Lade- und Speicheroperationen gegeben, dann stellt diese Erfindung ein umfangreiches Verfahren zum Aufzeichnen und zum Wiederanlaufen fehlerbehafteter Programme dar, so daß die Prozessorleistung maximiert und die Steuerprogrammkomplexität minimiert wird. Sie erlaubt die Überlappung einer großen Zahl von Speicheroperationen mit der Befehlsausführung, und sie begrenzt die Leistungsfähigkeit nicht. In einer Ausführung beträgt die für jede Speicheroperation zu rettende Information 16 Bytes, da die partiell ausgeführten Befehle nicht dem Ausnahmebehandlungsprogramm gezeigt werden. Schließlich stellt sie ein extrem einfaches Wiederanlaufverfahren für das Steuerprogramm zur Verfügung. Sie stützt sich nicht auf irgendwelche zusätzlichen Befehle, sondern modifiziert die Definition des Befehls zum Rücksprung von der Unterbrechung.
  • Die einzige Abbildung ist ein Blockdiagramm, das die Teile eines Datenverarbeitungssystems veranschaulicht, die notwendig sind, um die vorliegende Erfindung auszuführen.
  • Die vorliegende Erfindung verwendet ein 32-Bit-Register im Prozessor, um das Retten der Information über fehlgeschlagene Speicheroperationen zu steuern. Dieses Register wird als Ausnahmesteuerregister (Exception Control Register ECR) bezeichnet und wie irgendein anderes Prozessorsteuerregister behandelt. Aktuelle Informationen über fehlgeschlagene Speicheroperationen werden im Hauptspeicher des Prozessors gerettet. Das ECR wird auch benutzt, um den Wiederanlauf fehlgeschlagener Operationen zu steuern, wenn das fehlerbehaftete Programm wiederanläuft.
  • Das Ausnahmesteuerregister enthält den Ausnahmezähler und die Speicheradresse für die Information, die vom Prozessor für fehlgeschlagene Speicheroperationen gerettet wird. Der Inhalt dieses Registers ist wie folgt definiert:
  • BITS 0-3 Reserviert.
  • BITS 4-7 Ausnahmezähler.
  • Dieses Vier-Bit-Feld enthält den Ausnahmezähler. Wenn der Prozessor Ausnahmen mitteilt, gibt dieses Feld die Zahl der Speicheroperationen an, die Ausnahmen bewirkten. Wenn der Prozessor fehlgeschlagene Operationen wiederanlaufen läßt, zeigt es dem Prozessor an, wie viele Operationen wiederanlaufen müssen.
  • BITS 8-31 Ausnahmesicherungsadresse. Dieses 24-Bit-Feld enthält eine reelle Speicheradresse. Wenn der Prozessor Ausnahmen mitteilt, gibt dieses Feld die Hauptspeicherplätze an, wo die Information über die fehlgeschlagenen Speicheroperationen gerettet wird. Wenn der Prozessor fehlgeschlagene Operationen wiederanlaufen läßt, zeigt es an, von wo der Prozessor Information über die fehlgeschlagenen Operationen lesen muß, so daß sie wiederanlaufen können.
  • Während einer normalen Operation wird der Ausnahmezähler im ECR auf Null gesetzt. Die Ausnahmesicherungsadresse zeigt auf einen Block des realen Speichers, der für die Rettung von Information über die Maximalzahl von Operationen, die in einer gegebenen Ausführung mitgeteilt werden können, reserviert wurde.
  • In einer Ausführung sieht die vorliegende Erfindung die Rettung von bis zu 16 Informationsbytes für jede Ausnahme vor, und die tatsächliche Information, die gerettet wird, ist prozessorabhängig. Die folgende Tabelle I beschreibt die vorliegende Erfindung in ihrer Anwendung auf einen speziellen Prozessor, auf dem sie implementiert wurde.
  • Wort 0 Ausnahmesteuerung
  • Wort 1 Ausnahmeadresse
  • Wort 2 Ausnahmedaten
  • Wort 3 Reserviert
  • Tabelle I
  • Tabelle I zeigt die Definition des Speicherblockes, der zur Rettung der Information über eine spezielle fehlerbehaftete Speicheroperation verwendet wird. Jeder Block besteht aus vier Speichervollworten (ein Vollwort umfaßt vier Bytes). Für diese spezielle Realisierung werden nur zehn Bytes benutzt.
  • Ausnahmesteuerwort
  • Das erste Wort des Ausnahmestatus-Speicherblockes ist das Ausnahmesteuerwort. Das Ausnahmesteuerwort besteht aus den folgenden Feldern:
  • BITS 0-15 Reserviert.
  • BITS 16-18 Nummer des Registersatzes.
  • Dieses Drei-Bit-Feld zeigt an, welcher der acht Registersätze aktiv war, als die Ausnahme auftrat.
  • BITS 20-23 Registernummer.
  • Dieses Vier-Bit-Feld gibt an, welches der sechzehn allgemeinen Register (GPR) in die Speicheroperation einbezogen war, bei der die Ausnahme auftrat. Im Fall einer Ladeoperation gibt diese Registernummer an, welches GPR geladen wurde. Im Fall einer Speicheroperation gibt diese Registernummer an, welches GPR die Speicherdaten enthielt. Für die Operationen "Mehrfaches Laden" (LM) und "Mehrfaches Speichern" (STM) gibt dieses Feld das erste Register an, bei dessen Laden oder Speichern die Ausnahme auftrat.
  • BITS 24-25 Operationslänge.
  • Dieses Zwei-Bit-Feld gibt die Länge des Speicheroperanden so wie nachstehend definiert an:
  • 00 BYTE (8 BITS)
  • 01 HALBWORT (16 BITS)
  • 10 GANZWORT (32 BITS)
  • 11 HALBWORT TEST UND SETZEN
  • BITS 26-28 Operation.
  • Dieses Drei-Bit-Feld gibt so wie nachstehend definiert die Art der Operation an, die die Ausnahme verursachte:
  • 000 LADEN
  • 001 MEHRFACH LADEN
  • 010 PROGRAMMIERTE EIN-/AUSGABE LESEN (PIO)
  • 011 ALGEBRAISCHES LADEN (VORZEICHEN ERWEITERT)
  • 100 SPEICHERN
  • 101 MEHRFACH SPEICHERN
  • 110 PIO SCHREIBEN
  • 111 Reserviert
  • BITS 29-30 Reserviert.
  • BIT 31 Abgebrochen.
  • Dieses Bit zeigt an, ob die Operation beim Feststellen der Ausnahme abgebrochen wurde. Da sich die Speicheroperationen mit einer nachfolgenden Befehlsausführung überlappen, kann ein Befehl, der einem Laden folgt, das geladene Register verändern. Das Laden wird in diesem Falle abgebrochen. Wenn dann bei einem abgebrochenen Laden eine Ausnahme festgestellt wird, wird die Ausnahme mitgeteilt, aber die Ladeoperation kann nicht wiederanlaufen. Wenn dieses Bit auf Eins gesetzt wird, wurde die Operation abgebrochen und läuft nicht wieder an.
  • Wenn es auf Null gesetzt wird, wurde die Operation nicht abgebrochen und läuft wieder an.
  • Ausnahmeadreßwort
  • Das zweite Wort des Ausnahmestatus-Speicherblockes ist das Ausnahmeadreßwort. Das Ausnahmeadreßwort besteht aus der folgenden Information:
  • BITS 0-31 Ausnahmeadresse.
  • Dieses Wort enthält die effektive 32-Bit-Speicheradresse für fehlschlagende Speicher- und E/A-Operationen.
  • Ausnahmedatenwort
  • Das dritte Wort des Ausnahmestatus-Speicherblockes ist das Ausnahmedatenwort. Das Ausnahmedatenwort besteht aus der folgenden Information:
  • BITS 0-31 Ausnahmedaten.
  • Dieses Wort enthält den 32-Bit-Datenwert für fehlschlagende Speicher- oder E/A-Operationen, wenn die fehlschlagende Operation ein einfaches Speichern oder ein E/A-Schreiben war. Dieses Wort ist nicht definiert, wenn die fehlschlagende Operation ein Laden, ein mehrfaches Laden, IOR oder ein mehrfaches Speichern war.
  • Das vierte Wort des Ausnahmestatusblockes ist reserviert.
  • Retten einer Speicheroperationsausnahme
  • Wenn der Prozessor eine Ausnahme feststellt, vollendet er den laufenden Befehl, außer wenn dieser Befehl davon abhängt, daß die Speicheroperation erfolgreich ist. Beispielsweise kann ein ADD von zwei Registern, bei dem eines vorher aus dem Hauptspeicher geladen wurde, nicht abgeschlossen werden, wenn das Laden eine Speicherausnahme bewirkte. Wenn der laufende Befehl nicht abgeschlossen werden kann, wird er abgebrochen. Später läuft das Programm bei diesem Befehl wieder an.
  • Beim Abschluß oder beim Abbruch des laufenden Befehls muß der Prozessor auf den Abschluß aller laufenden Speicheroperationen warten, damit die Ergebnisse aller hängenden Speicheroperationen bekannt sind; es muß Information über alle Operationen gerettet werden, die Ausnahmen verursachten, und sie müssen in der richtigen Reihenfolge gerettet werden. Es ist möglich, daß die erste festgestellte Ausnahme nicht von der Operation verursacht wurde, die als erste gestartet wurde. Wenn alle Speicheroperationen abgeschlossen sind, rettet der Prozessor Information über jede Operation, die eine Ausnahme verursachte, wobei mit der Operation begonnen wird, deren Start dem Ausnahmepunkt am nächsten liegt, und der Reihe nach bis zu der Operation gegangen wird, die vom Ausnahmepunkt aus als letzte gestartet wurde. Für jede Ausnahme besteht die Prozedur zur Rettung der Information aus folgenden Schritten:
  • 1. Die Ausnahmesicherungsadresse im ECR wird um sechzehn verringert (vier Worte).
  • 2. Der Ausnahmezähler im ECR wird um eins erhöht.
  • 3. Das Ausnahmesteuerwort für die nächste Operation wird an der realen Speicheradresse gerettet, die von der Ausnahmesicherungsadresse im ECR angegeben wird.
  • 4. Die Ausnahmeadresse für die nächste Operation wird an der realen Speicheradresse gerettet, die durch Addition von vier zur Ausnahmesicherungsadresse entsteht. Der Wert im ECR wird nicht verändert.
  • 5. Die Ausnahmedaten für die nächste Operation werden an der realen Speicheradresse gerettet, die durch Addition von acht zur Ausnahmesicherungsadresse entsteht.
  • Der Wert im ECR wird nicht verändert. In den Fällen, in denen diese Ausnahmedaten nicht gerettet werden müssen, ist der Wert ohne Bedeutung. Es ist jedoch leichter, alle Fälle gleich zu behandeln.
  • Wenn die Information über alle Ausnahmen gerettet wurde, gibt der Ausnahmezähler an, wie viele Operationen wiederanlaufen müssen. Die Ausnahmesicherungsadresse zeigt auf das Ausnahmesteuerwort der ersten Operation, die wiederanlaufen soll. Zusätzliche Operationen, die wiederanlaufen müssen, haben ihre Information in aufeinanderfolgenden Hauptspeicherplätzen hinter dem Platz der Ausnahmesicherungsadresse. Diese Operationen erscheinen in der Reihenfolge des Wiederanlaufens.
  • Wiederanlauf einer Speicheroperation
  • Speicheroperationen laufen in dieser Erfindung als Teil der Rücksprungfolge von einer Unterbrechung wieder an. Sie laufen wieder an, nachdem der neue Prozessorstatus geladen ist, aber bevor irgendwelche Befehle im Zielbefehlsstrom ausgeführt werden. Dies bedeutet, daß die Operationen unter dem ursprünglichen Prozessorstatus wiederanlaufen. Für die fehlschlagende Routine gibt es keinen Unterschied zwischen den Operationen, die wiederangelaufen sind, und den Operationen, die von den Originalbefehlen gestartet wurden. Der Befehl Rücksprung von der Unterbrechung wird so definiert, daß die Speicheroperationen während des Rücksprungs von der Unterbrechung bedingt wiederanlaufen, auf der Grundlage von Bits im Befehl. Vor der Rückkehr zu dem Programm, in dem die Ausnahme vorkam, muß das Steuerprogramm die Ausnahmebedingung korrigieren und das ECR so setzen, daß es den gleichen Ausnahmezähler enthält, den es enthielt, wenn die Ausnahme mitgeteilt wurde. Wenn der Ausnahmestatusblock im Hauptspeicher bewegt oder transportiert wurde, muß die Ausnahmesicherungsadresse geändert werden, um diese Änderung widerzuspiegeln. Die Reihenfolge der Ausnahmestatusblöcke muß jedoch beibehalten werden. Die Operationen laufen in der Reihenfolge wachsender Ausnahmestatus-Blockadressen entsprechend der nachstehenden Folge an:
  • 1. Wenn der Ausnahmezähler im ECR null ist, sind keine Operationen für den Wiederanlauf übrig. Die Ausführung wird mit dem ersten Befehl im Zielbefehlsstrom fortgesetzt.
  • 2. Das Ausnahmesteuerwort für die nächste wiederanlaufende Operation wird von der realen Speicheradresse geladen, die durch die Ausnahmesicherungsadresse im ECR gegeben ist. Das ECR wird nicht verändert.
  • 3. Die Ausnahmeadresse für die nächste wiederanlaufende Operation wird von der realen Speicheradresse geladen, die durch die Ausnahmesicherungsadresse plus vier gegeben ist. Das ECR wird nicht verändert.
  • 4. Die Ausnahmedaten für die nächste wiederanlaufende Operation wird von der realen Speicheradresse geladen, die durch die Ausnahmesicherungsadresse plus acht gegeben ist. Das ECR wird nicht verändert.
  • 5. Der Ausnahmezähler im ECR wird um eins verringert. Die Ausnahmesicherungsadresse wird um sechzehn erhöht. Die Ausnahmesicherungsadresse zeigt dann auf die nächste Operation, die wiederanlaufen soll (falls sie existiert).
  • 6. Die Operation läuft wieder an, wobei die in den Schritten 2, 3 und 4 von oben geladene Information benutzt wird. Wenn diese Operation einmal wiederangelaufen ist, beginnt die Wiederanlauffolge erneut mit Schritt 1.
  • Ausnahmen während des Wiederanlaufs
  • Wenn mehr als eine Ausnahme mitgeteilt wird, muß das Steuerprogramm nicht notwendigerweise in jedem Fall die Ausnahmebedingung korrigieren. Tatsächlich kann es unmöglich sein, sie alle zu korrigieren. Die Ausnahmebedingung muß nur für die erste Operation korrigiert werden, die wiederanlaufen soll. So ist es möglich, daß Speicheroperationen wieder auf Ausnahmen treffen, wenn sie wiederanlaufen.
  • Diese Möglichkeit wird automatisch behandelt, durch die Art und Weise, wie der Ausnahmezähler und die Ausnahmesicherungsadresse behandelt werden. Irgendwelche Ausnahmen während des Wiederanlaufs treten auf, nachdem der Ausnahmestatusblock gerettet, der Ausnahmezähler nach unten gezählt und die Ausnahmesicherungsadresse erhöht wurde. Der Speicherplatz, der den Ausnahmestatusspeicherblock enthielt, wird nicht länger benötigt. Wenn eine Ausnahme während des Wiederanlaufs auftritt, wird demzufolge die Information über die Operation, die die Ausnahme hervorrief, während der oben beschriebenen Prozedur gerettet. Die Information über irgendwelche Operationen, die beim Auftreten der Ausnahme noch nicht wiederangelaufen waren, wird noch im Hauptspeicher aufbewahrt. Die Reihenfolge des Wiederanlaufs wird auch aufgehoben.
  • Serialisierung
  • Um fehlschlagende Speicheroperationen in der gleichen Umgebung wiederanlaufen zu lassen, in der sie ursprünglich ausgeführt wurden, ist es notwendig, gewisse Operationen zu serialisieren. Die Serialisierung besteht aus dem Abschluß aller logisch früheren Speicheroperationen, bevor die nächste Operation auftritt, um sicherzustellen, daß alle Ausnahmen mitgeteilt werden, bevor sich die Umgebung ändert. Der Prozessor muß alle Unterbrechungen und die Ausführung der folgenden Befehle serialisieren:
  • 1. Jeden Steuerbefehl, der den Prozessorstatus ändern kann.
  • 2. Supervisor-Aufruf.
  • 3. Rücksprung von einer Unterbrechung.
  • 4. Ein-/Ausgabe Schreiben. Diese Operation kann benutzt werden, um die Adreßumrechnungsergebnisse für eine frühere Operation zu ändern. Wenn diese Veränderung auftreten würde, könnte die Operation nicht wiederanlaufen.
  • Die folgenden Ereignisse treten während der Serialisierung auf:
  • 1. Alle logisch früheren Speicheroperationen werden abgeschlossen.
  • 2. Die normale Funktion, die mit der Serialisierungsoperation verbunden ist, wird ausgeführt. Im Falle der Befehlsausführung wird der Befehl ausgeführt, nachdem alle logisch früheren Speicheroperationen abgeschlossen sind.
  • Im Fall von Unterbrechungen wird der PSW-Austausch ausgeführt, nachdem alle logisch früheren Speicheroperationen abgeschlossen sind.
  • 3. Die normale Befehlsausführung wird wiederaufgenommen.
  • Die Serialisierung ist eine übliche Methode, um zu sichern, daß alle Operationen wiederanlaufen können. Dies ist jedoch nicht Teil dieser Erfindung und wird hier nur der Vollständigkeit halber einbezogen. Diese Erfindung erlaubt im Falle des PSW-Austausches eine bedeutende Überlappung, selbst wenn die Serialisierungsanforderungen noch verstärkt werden. Die Speicherzugriffe für den PSW-Austausch können gestartet werden, bevor alle früheren Zugriffe abgeschlossen wurden; nur die Änderung des Prozessorstatus kann erst abgeschlossen werden, wenn die Ergebnisse aller früheren Zugriffe bekannt sind. Der Prozessor muß nur die Zugriffe für den PSW-Austausch als Spezialfälle erkennen können, die nicht mitgeteilt werden, wenn eine Ausnahme bei einem früheren Zugriff auftritt.
  • Realisierung
  • Die vorliegende Erfindung scheint anfänglich einen beträchtlichen Aufwand an zusätzlicher Steuerlogik zur Rettung und zum Wiederanlauf fehlschlagender Speicheroperationen zu erfordern. Sie wurde jedoch so entworfen, daß sie maximalen Vorteil aus der Logik zieht, die bereits existiert, um die Speicherzugriffe mit der nachfolgenden Befehlsausführung zu überlappen.
  • Die einzige Abbildung zu der vorliegenden Anmeldung zeigt den Systemdatenfluß des Prozessors, wobei die zur Steuerung der Speicherzugriffe notwendigen Bereiche betont werden. Die Speicheroperationen haben ihren Ursprung im Steuerregister 11 auf Grund der Ausführung des Mikrocodes, der vom Steuerspeicher 15 zur Verfügung gestellt wird. Während der Ausführung des Mikrowortes für die Speicheroperation finden die folgenden Ereignisse statt:
  • 1. Die effektive Adresse der Speicheroperation wird in der ALU 12 berechnet und zur Speicher-Kanal-Schnittstelle 13 gesendet. Von diesem Ausführungszyklus wird kein Zurückschreiben der Registerdatei gefordert, so daß die Registerdatei 14 verfügbar ist, um die Adresse vom Ausgang der ALU zu akzeptieren. Diese Adresse wird in einem Zwischenspeicher gerettet, so daß sie gerettet werden kann, wenn eine Ausnahme auftritt. Dieser Speicherplatz kann nicht noch einmal verwendet werden, bis die laufende Speicheroperation abgeschlossen ist.
  • 2. In einem Marken-Register wie 16a und 16b müssen Steuerinformationen gesetzt werden, um die Ausführung der Speicheroperation in nachfolgenden Zyklen zu steuern. Die Information im Marken- Register besitzt eine Eins-zu-Eins-Entsprechung mit der Information, die für das Ausnahmesteuerwort im Ausnahmestatusblock definiert ist. Das Marken-Register kann nicht wieder benutzt werden, bis die laufende Speicheroperation abgeschlossen ist.
  • 3. Die Speicher-Kanal-Schnittstelle 13 wird vom Operationstyp, der Datenlänge usw. unterrichtet, und die Speicher-Kanal-Logik schließt dann die Operation ohne weiteres Zutun des Prozessors ab.
  • 4. Irgendwelche Speicherdaten, die für die Operation erforderlich sind, werden im nächsten Mikrocodezyklus gesendet. Diese Daten werden in einem temporären Registersatz-Speicherplatz in Datei 14 gerettet, so wie es die effektive Adresse angibt. Wiederum kann dieser Speicherplatz nicht weiter benutzt werden, bis die Speicheroperation abgeschlossen ist.
  • Der Prozessor kann bis zu sechzehn Operationen starten, so lange wie Marken-Register verfügbar sind, um die Zugriffe zu steuern, und so lange wie es temporäre Registersatz-Speicherplätze gibt, um die Adressen und Daten für diese Operationen zu retten. Mit dem in der Zeichnung dargestellten System können zu irgendeinem bestimmten Zeitpunkt nie mehr als zwei Operationen anhängig sein. Es ist zu beachten, daß jedem Marken-Register 16a, 16b eine Anzeige der Reihenfolge seiner Operation relativ zu den anderen anhängigen Operationen zugeordnet sein muß. Dies ist erforderlich, damit die Ausnahmestatusblöcke in der richtigen Reihenfolge gerettet werden können, wenn mehrfache Ausnahmen auftreten.
  • Rettung der Ausnahmeinformation
  • Wenn die Speicher-Kanal-Schnittstelle 13 anzeigt, daß eine gegebene Operation eine Ausnahme aufweist, werden das Marken-Register, der temporäre Adreßpuffer und der temporäre Datenpuffer für diese Operation blockiert. Das bedeutet, daß sie für irgendwelche zusätzlichen Speicheroperationen nicht benutzt werden können, bis die Ausnahme mitgeteilt wurde. Um den Ausnahmestatusblock für eine gegebene Operation zu retten, rettet der Prozessor einfach den Inhalt seines zugeordneten Marken-Registers im Ausnahmeadreßwort, den Inhalt des temporären Adreßpuffers im Ausnahmesteuerwort und den Inhalt des temporären Datenpuffers im Ausnahmedatenwort. Nachdem der Ausnahmestatusblock gerettet wurde, werden das Marken-Register, der Adreßpuffer und der Datenpuffer für diese Operation freigegeben.
  • Es ist möglich, daß eine Maximalzahl anhängiger Speicheroperationen mit einer Ausnahme für jede Operation auftritt. Dies führt zu einer Situation, in der alle Marken, Adreßpuffer und Datenpuffer blockiert sind, wenn der Prozessor mit der Rettung der Ausnahmestatusblöcke beginnt. Damit kann der Prozessor für die Speicherung der Ausnahmestatusblöcke keine Marken, keinen Adreß- und keinen Datenpuffer benutzen. Dies ist kein Problem, da diese Information unter Benutzung von nichtübersetzten Speichern gerettet wird, die keine Ausnahmen verursachen können. Da Speicher benutzt werden, gibt es für den Prozessor auch keine Notwendigkeit, Marken-Register zur Steuerung des Rückschreibens von Speicherdaten in den Registersatz zu benutzen.
  • Der Wiederanlauf von Speicheroperationen ist ziemlich unkompliziert. Der Prozessor lädt einfach die Ausnahmestatusblöcke in der richtigen Reihenfolge, wobei die Ausnahmeadresse im ECR benutzt wird. Die Operation wird vom Steuerregister 11 neu gestartet, so daß die Steuerung des Wiederanlaufs mit der Steuerung der ursprünglichen Operation identisch ist, was die erforderliche Logik stark vereinfacht. Dies wird erreicht, indem eine feste Beziehung zwischen Mikrocodebits im Steuerregister und Bits im Ausnahmesteuerwort hergestellt wird. Die Bits des Ausnahmesteuerwortes werden dann, zusammen mit den Mikrocodebits, die sich beim Wiederanlauf für verschiedene Speicheroperationen nicht ändern (beispielsweise sind ALU-Steuersignale nicht variabel, da die effektive Adresse bereits bekannt ist) direkt in das Steuerregister geladen. Wenn das Ausnahmesteuerwort anzeigt, daß die Operation abgebrochen wurde oder wenn es eine Operation definiert, die nicht von einem Befehl verursacht werden konnte, wird das Steuerregister nicht mit der Speicherwiederanlaufoperation, sondern einfach mit NO/OP geladen.
  • Die hier beschriebene Erfindung stellt ein umfassendes Verfahren zur Mitteilung und Wiederherstellung von Adreßumrechnungsausnahmen in einer Seitenabrufumgebung zur Verfügung. Dieses Verfahren wurde auf einem Prozessor implementiert, der vorher das fehlschlagende Programm bei dem Befehl wiederanlaufen ließ, der die Ausnahme verursachte. Die Implementation des hier beschriebenen Verfahrens führte zu einer 30%-igen Verbesserung der Prozessorleistung.

Claims (7)

1. Verfahren zum Verarbeiten einer Mehrzahl von Ausnahmen für eine Adreßübersetzung in einem virtuellen Speichersystem, das eine Seitenabrufmethode verwendet und einer Mehrzahl von Registern und einen realen Speicherbereich aufweist, welches den folgenden Schritt umfaßt:
vorübergehendes Speichern für jeden Speichervorgang:
der effektiven Speicheradresse für den Vorgang,
von Informationen eines Ausnahmesteuerwortes bezüglich jener der Register, die an dem Vorgang beteiligt sind und der Länge und Art des Vorgangs und
aller Daten, die während des Vorgangs gespeichert werden sollen, gekennzeichnet durch die folgenden weiteren Schritte:
(a) Wiederauffinden der vorübergehend gespeicherten Informationen, um einen zusätzlichen Ausnahmestatusblock immer dann zu bilden, wenn eine Ausnahme erzeugt wird, die einen gescheiterten Vorgang anzeigt und
(b) neu Initiieren des gescheiterten Vorgangs auf der Grundlage der Informationen, die in dem Ausnahmestatusblock enthalten sind.
2. Verfahren nach Anspruch 1, welches den Schritt des Behaltens einer Zählung der Anzahl der Ausnahmen umfaßt, die auftreten.
3. Verfahren nach Anspruch 1 oder Anspruch 2, welches den Schritt des Angebens der Adresse einer Startadresse in dem realen Speicherbereich umfaßt, wo Informationen bezüglich eines gescheiterten Speichervorgangs gespeichert sind.
4. Verfahren nach Anspruch 3, welches folgendes umfaßt: den Schritt des Speichern der in dem Ausnahmestatusblock in dem realen Speicherbereich enthaltenen Informationen beginnend bei der angegebenen Startadresse.
5. Verfahren nach irgendeinem der Ansprüche 1 bis 4, welches den Schritt des neuerlichen Initiierens aufeinanderfolgender gescheiterter der Vorgänge umfaßt.
6. Verfahren nach Anspruch 5, bei welchem die gescheiterten Vorgänge in der Reihenfolge neu initiiert werden, in der sie gescheitert waren.
7. Verfahren nach Anspruch 5, bei welchem Ausnahmestatusblöcke für jeden der gescheiterten Vorgänge gebildet werden.
DE8686112203T 1985-10-01 1986-09-03 Verfahren zur verarbeitung von adressenuebersetzungsausnahmen in einer virtuellen speicheranordnung. Expired - Fee Related DE3687298T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US78274585A 1985-10-01 1985-10-01

Publications (2)

Publication Number Publication Date
DE3687298D1 DE3687298D1 (de) 1993-01-28
DE3687298T2 true DE3687298T2 (de) 1993-07-01

Family

ID=25127043

Family Applications (1)

Application Number Title Priority Date Filing Date
DE8686112203T Expired - Fee Related DE3687298T2 (de) 1985-10-01 1986-09-03 Verfahren zur verarbeitung von adressenuebersetzungsausnahmen in einer virtuellen speicheranordnung.

Country Status (4)

Country Link
US (1) US4970641A (de)
EP (1) EP0217168B1 (de)
JP (1) JPS6280743A (de)
DE (1) DE3687298T2 (de)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313601A (en) * 1988-01-30 1994-05-17 Nec Corporation Request control apparatus
JP2591136B2 (ja) * 1988-01-30 1997-03-19 日本電気株式会社 リクエスト制御装置
EP0365322A3 (de) * 1988-10-19 1991-11-27 Hewlett-Packard Company Verfahren und Vorrichtung zur Ausnahmenbehandlung in Fliessbandprozessoren mit unterschiedlicher Befehlspipelinetiefe
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5768575A (en) * 1989-02-24 1998-06-16 Advanced Micro Devices, Inc. Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions
US5781753A (en) 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
JPH03156542A (ja) * 1989-08-29 1991-07-04 Hitachi Ltd アドレス変換装置及びそのためのアドレス情報の管理方法
CA2025197C (en) * 1989-10-19 1998-04-21 Michael H. Kelley Method and system for dynamically controlling the operation of a program
JP2581236B2 (ja) * 1989-11-16 1997-02-12 三菱電機株式会社 データ処理装置
EP0503968B1 (de) * 1991-03-14 1999-01-07 Fujitsu Limited Verfahren und Vorrichtung zur Steuerung von Pipelineoperationen
US5386563A (en) * 1992-10-13 1995-01-31 Advanced Risc Machines Limited Register substitution during exception processing
US5761407A (en) * 1993-03-15 1998-06-02 International Business Machines Corporation Message based exception handler
GB2281986B (en) * 1993-09-15 1997-08-06 Advanced Risc Mach Ltd Data processing reset
JP3145545B2 (ja) * 1993-10-18 2001-03-12 松下電器産業株式会社 メモリアクセス装置
US5475822A (en) * 1993-11-15 1995-12-12 Motorola, Inc. Data processing system for resuming instruction execution after an interrupt and method therefor
SG48907A1 (en) * 1993-12-01 1998-05-18 Intel Corp Exception handling in a processor that performs speculative out-of-order instruction execution
DE4434895C2 (de) * 1993-12-23 1998-12-24 Hewlett Packard Co Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen
JP2752592B2 (ja) * 1994-12-28 1998-05-18 日本ヒューレット・パッカード株式会社 マイクロプロセッサ、マイクロプロセッサ−デバッグツール間信号伝送方法及びトレース方法
US5784607A (en) * 1996-03-29 1998-07-21 Integrated Device Technology, Inc. Apparatus and method for exception handling during micro code string instructions
US5774711A (en) * 1996-03-29 1998-06-30 Integrated Device Technology, Inc. Apparatus and method for processing exceptions during execution of string instructions
US5812813A (en) * 1996-07-29 1998-09-22 Integrated Device Technology, Inc. Apparatus and method for of register changes during execution of a micro instruction tracking sequence
US5987594A (en) * 1997-06-25 1999-11-16 Sun Microsystems, Inc. Apparatus for executing coded dependent instructions having variable latencies
US6360315B1 (en) 1999-02-09 2002-03-19 Intrinsity, Inc. Method and apparatus that supports multiple assignment code
US11740929B2 (en) 2020-10-20 2023-08-29 Micron Technology, Inc. Registering a custom atomic operation with the operating system
US11436187B2 (en) 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction
US11693690B2 (en) 2020-10-20 2023-07-04 Micron Technology, Inc. Method of completing a programmable atomic transaction by ensuring memory locks are cleared

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3921153A (en) * 1973-08-02 1975-11-18 Ibm System and method for evaluating paging behavior
US3947823A (en) * 1973-12-26 1976-03-30 International Business Machines Corp. Means for coordinating asynchronous main store accesses in a multiprocessing system using virtual storage
CA1059639A (en) * 1975-03-26 1979-07-31 Garvin W. Patterson Instruction look ahead having prefetch concurrency and pipe line features
JPS5718097A (en) * 1980-07-07 1982-01-29 Nippon Telegr & Teleph Corp <Ntt> Failure processing system for storage device
US4613935A (en) * 1983-02-02 1986-09-23 Couleur John F Method and apparatus for pipe line processing with a single arithmetic logic unit
JPS61117635A (ja) * 1984-11-13 1986-06-05 Fujitsu Ltd 仮想記憶制御方式

Also Published As

Publication number Publication date
JPH0450621B2 (de) 1992-08-14
EP0217168A2 (de) 1987-04-08
EP0217168A3 (en) 1990-01-17
EP0217168B1 (de) 1992-12-16
US4970641A (en) 1990-11-13
DE3687298D1 (de) 1993-01-28
JPS6280743A (ja) 1987-04-14

Similar Documents

Publication Publication Date Title
DE3687298T2 (de) Verfahren zur verarbeitung von adressenuebersetzungsausnahmen in einer virtuellen speicheranordnung.
DE2722099C2 (de)
DE3685913T2 (de) Vektorenverarbeitung.
DE2714805C2 (de)
DE3687866T2 (de) System zur verwaltung einer mehrzahl gemeinsamer unterbrechungsbehandlungsroutinen in einer datenstruktur mit verknuepften listen.
DE2846495C2 (de) Zentraleinheit
DE4228756C2 (de) Unterbrechungseinrichtung für ein Mikroprozessorsystem
DE2251876C3 (de) Elektronische Datenverarbeitungsanlage
DE3151745C2 (de)
DE2718051A1 (de) Datenverarbeitungsanlage mit einrichtungen zur wechselnden bearbeitung mehrerer aufgaben
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE2411963A1 (de) Datenverarbeitungsanlage
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE102006039747A1 (de) Verfahren für Kontextzustandsmanagement
DE112006002908T5 (de) Technik für die Kommunikation und Synchronisation von Threads
EP0325677B1 (de) Schaltungsanordnung und Steuerverfahren eines Befehlspufferspeichers in einer Datenverarbeitungsanlage
DE1549531A1 (de) Digitale Rechenanlage
DE60009496T2 (de) Mikroprozessor mit reduziertem kontextumschaltungsaufwand und verfahren
DE2713685A1 (de) Mikroprogrammgesteuertes datenverarbeitungssystem
EP0764906A2 (de) Verfahren zum Betreiben eines durch ein Realzeit-Betriebssystem gesteuerten Realzeit-Computersystems
DE3900246C2 (de)
DE102010053095A1 (de) Adaptive optimierte Compare-Exchange-Operation
DE2364323C2 (de) Verfahren zur Behandlung von Unterbrechungsbedingungen in einer Datenverarbeitungsanlage
DE2617127A1 (de) Mehrfachprogramm-datenverarbeitungssystem
DE2854400A1 (de) Anordnung zum wechsel zwischen verzahnt zu verarbeitenden programmen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee