DE19934067A1 - Verfahren, Vorrichtung und Computerprogrammprodukt für stapelspeicherbezogene Ausnahmeunterbrechungen - Google Patents
Verfahren, Vorrichtung und Computerprogrammprodukt für stapelspeicherbezogene AusnahmeunterbrechungenInfo
- Publication number
- DE19934067A1 DE19934067A1 DE19934067A DE19934067A DE19934067A1 DE 19934067 A1 DE19934067 A1 DE 19934067A1 DE 19934067 A DE19934067 A DE 19934067A DE 19934067 A DE19934067 A DE 19934067A DE 19934067 A1 DE19934067 A1 DE 19934067A1
- Authority
- DE
- Germany
- Prior art keywords
- stack
- interrupt
- computer
- value
- exception
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 110
- 238000004590 computer program Methods 0.000 title claims abstract description 13
- 230000004044 response Effects 0.000 claims abstract description 8
- 230000007246 mechanism Effects 0.000 claims description 62
- 230000008569 process Effects 0.000 claims description 40
- 239000013598 vector Substances 0.000 claims description 30
- 239000011159 matrix material Substances 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 5
- 238000007726 management method Methods 0.000 description 18
- 230000003044 adaptive effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000003754 machining Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
- G06F9/30127—Register windows
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/451—Stack data
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Es werden Vorrichtungen, Verfahren und Computerprogrammprodukte offenbart, die den Betrieb eines Computers, der einen Cache-Speicher für den oberen Stapelspeicherbereich verwendet, durch Verringern der Anzahl an Überlauf- und Unterlaufunterbrechungen, die während der Ausführung eines Programms erzeugt werden, verbessern. Die Erfindung verwaltet einen Vorgabewert, der die Anzahl an Stapelspeicherelementen, die aus dem Cache-Speicher für den oberen Stapelspeicherbereich abgegeben oder in diesen gefüllt werden, als Reaktion auf eine Überlaufunterbrechung oder (bzw.) eine Unterlaufunterbrechung steuert. Der Vorgabewert spiegelt das Protokoll der Überlaufunterbrechungen und Unterlaufunterbrechungen wider.
Description
Diese Erfindung betrifft das Gebiet der Computerarchitektur.
Insbesondere ist diese Erfindung ein Verfahren, eine
Vorrichtung und ein Computerprogrammprodukt zum Verringern
von Überlauf- und Unterlauf-Ausnahmeunterbrechungen, die
sich durch den Benutzer einer Stapelspeicherdatei ergeben.
Einige Computerarchitekturen umfassen eine Ausschnitt
registerdatei (die Registerausschnittdatei), die einen Satz
von Registern enthält. Ein Registerausschnitt ist eine
Auswahl von Registern, die für ein Programm zu einem
speziellen Zeitpunkt verfügbar sind. Registerausschnitte
werden (unter anderen Gründen) zur Verbesserung der
Leistung von Unterprogrammaufrufen verwendet. Die SPARC®-
Architektur ist ein Beispiel einer Computerarchitektur, die
eine Registerausschnittdatei verwendet.
Eine Registerausschnittdatei ist ein Beispiel einer
Stapelspeicherdatei. Eine "Stapelspeicherdatei" besteht aus
einer Stapelspeicherstruktur, die teilweise im Speicher
gespeichert ist und für einen schnelleren Zugriff teilweise
in einer Registerdatei gespeichert ist. Der "Cache-Speicher
für den oberen Stapelspeicherbereich" bezieht sich auf
Register der Stapelspeicherdatei. Stapelspeicherelemente
werden auf der Basis von Stapelspeicherunterlauf- und
-überlauf-Ausnahmeunterbrechungen aus den Registern zum
Speicher und wieder zurück bewegt.
Beim Sprung in ein Unterprogramm ruft das Unterprogramm im
allgemeinen einen "Speicher"-Befehl (oder einen ähnlichen
Befehl) auf. Der "Speicher"-Befehl versieht das
Unterprogramm mit einem neuen Registerausschnitt. Wenn die
Registerausschnittdatei nicht genügend Register enthält, um
den neuen Registerausschnitt aufzubewahren, verursacht der
"Speicher"-Befehl eine Überlaufunterbrechung. Wenn die
Registerausschnittdatei überläuft, müssen die Register in
mindestens einem älteren Registerausschnitt in der
Registerausschnittdatei im Speicher gespeichert (an diesen
abgegeben) werden, um Register für einen neuen
Registerausschnitt freizugeben. In ähnlicher Weise erfährt
die Registerausschnittdatei einen Unterlauf, wenn die
Registerausschnittdatei leer ist und der Computer einen
Befehl ausführt (wie z. B. einen "Umspeicher"-Befehl), um
einen vorher gespeicherten Registerausschnitt
umzuspeichern.
Unter beiden von diesen Umständen erzeugt der Computer eine
Registerausschnitt-Ausnahmeunterbrechung. Diese Stapel
speicher-Ausnahmeunterbrechung ruft eine Unterbrechungs-
Bearbeitungsroutine auf, die Befehle ausführt, um die
Ausnahmebedingung zu bearbeiten. Für eine
Registerausschnitt-Überlaufbedingung wird der Inhalt von
einem oder mehreren existierenden Registerausschnitten an
den Speicher abgegeben (in diesem gespeichert). Für eine
Registerausschnitt-Unterlaufbedingung wird der vorher
gespeicherte Inhalt von einem oder mehreren
Registerausschnitten in die Stapelspeicherdatei
umgespeichert (Füllen).
Betriebssysteme des Standes der Technik geben bei jeder
Registerausschnitt-Ausnahmeunterbrechung eine feste Anzahl
von Registerausschnitten ab bzw. füllen sie (häufig
beeinflußt die Unterbrechung nur einen einzigen
Registerausschnitt). Dies ist ineffizient, wenn
tiefverschachtelte oder rekursive Unterprogrammaufrufe
vorhanden sind. Aus Sicht der Vergangenheit wurde ein
einziges Füllen oder Abgeben als zweckmäßig betrachtet, da
die meisten herkömmlichen Programmiermethodiken keine
tiefen Unterprogrammaufrufketten erzeugten. Moderne
Programmiermethodiken (insbesondere objektorientierte
Programme und Programme, die eine Rekursion verwenden)
erzeugen häufig tiefe Aufrufketten. Für diese
Programmiermethodiken würden die Ausschnitt-
Ausnahmebedingungen verringert werden, wenn mehr als ein
Abgeben/Füllen bei einer Registerausschnitt-
Ausnahmeunterbrechung geschehen würde. Die Programmischung
bei den meisten Computersystemen umfaßt jedoch einige
Programme, die die herkömmliche Methodik verwenden, und
andere Programme, die die moderne Methodik verwenden.
Außerdem umfaßt ein einziges Programm häufig beide
Methodiken. Somit verbessert das einfache Abgeben oder
Füllen einer festen Anzahl von Registerausschnitten nicht
die Systemgesamtleistung.
Die Registerausschnittdatei ist nur ein Beispiel für die
Verwendung eines "Cache-Speichers für den oberen
Stapelspeicherbereich". Ein weiteres Beispiel wird von der
Architektur der Intel®-Gleitkommaeinheit (FPU) dargestellt.
Noch ein weiteres Beispiel ist der Hardware-Stapelspeicher,
der von einer stapelspeicherorientierten
Computerarchitektur (wie z. B. einem Forth-Computer)
vorgesehen wird. Jeder dieser Hardware-Stapelspeicher ist
eine Form eines "Cache-Speichers für den oberen
Stapelspeicherbereich", indem der obere Stapelspeicher
bereich in Registern aufbewahrt werden kann, auf die direkt
von der CPU zugegriffen werden kann, und der Rest des
Stapelspeichers im Speicher aufbewahrt werden kann, und
indem jeder Stapelspeicher eine Überlaufunterbrechung oder
eine Unterlaufunterbrechung aufrufen kann.
Es wäre vorteilhaft, eine Bearbeitungsroutine zum
Abgeben/Füllen für Cache-Speicher für den oberen
Stapelspeicherbereich vorzusehen, die sich an die
Eigenschaften des gerade ausgeführten Programms anpaßt.
Diese Anpassung würde die Leistung des Computersystems
durch Verringern der Anzahl an Ausnahmebedingungen des
Cache-Speichers für den oberen Stapelspeicherbereich, die
vom Ausführungsprogramm erzeugt werden, verbessern.
Die vorliegende Erfindung verbessert die Leistung eines
Computers (der einen Cache-Speicher für den oberen
Stapelspeicherbereich enthält) durch Einstellen des Inhalts
des Cache-Speichers für den oberen Stapelspeicherbereich in
Abhängigkeit von einem Vorgabewert, der Informationen über
die vergangene Verwendung des Cache-Speichers für den
oberen Stapelspeicherbereich enthält. Ein Aspekt der
Erfindung ist ein computergesteuertes Verfahren zum
Minimieren von Ausnahmebedingungen in einem Computer mit
einem Speicher und einem Cache-Speicher für den oberen
Stapelspeicherbereich. Das Verfahren initialisiert einen
Vorgabewert, der zum Verfolgen von Ausnahmebedingungen von
dem Cache-Speicher für den oberen Stapelspeicherbereich
verwendet wird. Das Verfahren ruft auch eine
Ausnahmeunterbrechung auf, die in Abhängigkeit von dem
Vorgabewert verarbeitet wird. Das Verfahren ändert auch den
Vorgabewert als Reaktion auf die Ausnahmeunterbrechung.
Ein weiterer Aspekt der Erfindung ist eine Vorrichtung mit
einer Zentraleinheit (CPU) und einem mit der CPU
gekoppelten Speicher zum Minimieren von Ausnahmebedingungen
in einem Computer mit einem Cache-Speicher für den oberen
Stapelspeicherbereich. Die Vorrichtung umfaßt einen
Vorgabewert-Initialisierungsmechanismus, der dazu
konfiguriert ist, einen Vorgabewert zum Verfolgen von
Ausnahmebedingungen von dem Cache-Speicher für den oberen
Stapelspeicherbereich zu initialisieren. Außerdem umfaßt
die Vorrichtung einen Unterbrechungsmechanismus, der dazu
konfiguriert ist, eine Ausnahmeunterbrechung im Computer
aufzurufen. Die Vorrichtung umfaßt auch einen
Unterbrechungs-Bearbeitungsmechanismus im Computer, der
dazu konfiguriert ist, die Ausnahmeunterbrechung in
Abhängigkeit vom Vorgabewert zu verarbeiten. Außerdem
umfaßt die Vorrichtung einen Vorgabewert-
Verwaltungsmechanismus, der dazu konfiguriert ist, den
Vorgabewert als Reaktion auf die Ausnahmeunterbrechung zu
ändern.
Noch ein weiterer Aspekt der Erfindung ist ein
Computerprogrammprodukt, das auf einem von einem Computer
verwendbaren Medium verkörpert ist, um einen Computer mit
einem Cache-Speicher für den oberen Stapelspeicherbereich
zu veranlassen, Ausnahmebedingungen zu minimieren. Bei
Ausführung auf einem Computer veranlaßt der
maschinenlesbare Code den Computer, einen Vorgabewert-
Initialisierungsmechanismus, einen Unterbrechungs
mechanismus, einen Unterbrechungs-Bearbeitungsmechanismus
und einen Vorgabewert-Verwaltungsmechanismus zu bewirken.
Jeder dieser Mechanismen besitzt dieselben Funktionen wie
die entsprechenden Mechanismen für die vorher beschriebene
Vorrichtung.
Ein weiterer Aspekt der Erfindung ist ein
Computerdatensignal, das in einer Trägerwelle mit einem
darin verkörperten maschinenlesbaren Code verkörpert ist,
um einen Computer mit einem Cache-Speicher für den oberen
Stapelspeicherbereich zu veranlassen, Ausnahmebedingungen
zu minimieren. Bei Ausführung auf einem Computer veranlaßt
der maschinenlesbare Code den Computer, einen Vorgabewert-
Initialisierungsmechanismus, einen Unterbrechungs
mechanismus, einen Unterbrechungs-Bearbeitungsmechanismus
und einen Vorgabewert-Verwaltungsmechanismus zu bewirken.
Jeder dieser Mechanismen besitzt dieselben Funktionen wie
die entsprechenden Mechanismen für die vorher beschriebene
Vorrichtung.
Die vorangehenden und viele weitere Aspekte der
vorliegenden Erfindung werden für Fachleute offensichtlich,
nachdem sie die folgende ausführliche Beschreibung der
bevorzugten Ausführungsformen, die in den verschiedenen
Zeichnungsfiguren dargestellt sind, gelesen haben.
Fig. 1 stellt ein Computersystem, das in der Lage ist,
die Erfindung zu verwenden, gemäß einer
bevorzugten Ausführungsform dar;
Fig. 2 stellt einen Überblick über den
Stapelspeicherausnahme-Bearbeitungsprozeß gemäß
einer bevorzugten Ausführungsform dar;
Fig. 3A stellt die Operation eines in Fig. 2 verwendeten
Bearbeitungsprozesses für die Stapelspeicher-
Überlaufunterbrechung dar;
Fig. 3B stellt die Operation eines in Fig. 2 verwendeten
Bearbeitungsprozesses für die Stapelspeicher-
Unterlaufunterbrechung dar;
Fig. 4 stellt einen von einem Vorgabewert abhängigen
Vektor gemäß einer bevorzugten Ausführungsform
dar;
Fig. 5 stellt einen Prozeß der "adaptiven
Stapelspeicher-Verwendungseinstellung" gemäß
einer bevorzugten Ausführungsform dar;
Fig. 6 A stellt einen Hash-Mechanismus dar, der gemäß
einer bevorzugten Ausführungsform verwendet wird;
und
Fig. 6B stellt einen Vorgabewert-Auswahlprozeß dar, der
gemäß einer bevorzugten Ausführungsform verwendet
wird.
Ein Beispiel einer Computerarchitektur, die eine
Registerausschnittdatei verwendet, ist die SPARC®-
Architektur. Diese Architektur ist in The SPARC
Architecture Manual: Version 9, Weaver & Germond, © 1994
SPARC International, Inc., ISBN 0-13-099227-5, definiert.
Die folgenden Abschnitte dieses Dokuments betreffen
Registerausschnittdateien und werden durch den Hinweis in
ihrer Gesamtheit integriert: §§ 2, 3.2.7, 3.3, 5.1.1-5.1.4,
5.2.10-5.2.11, 6.3.6.1-6.3.6.4, 6.4, 7.5.2.1, A.8, A.21,
A.24, A.44-46, H.
Intel®-Prozessoren verwenden einen Registerstapelspeicher
für Gleitkommaoperationen, der als Cache-Speicher für den
oberen Stapelspeicherbereich organisiert sein kann. Diese
Registerstapelspeicher-Organisation ist im Kapitel 7 von
Intel Architecture Software Developer's Manual: Basic
Architecture, Bestellnummer 243190, © 1996, 1997,
beschrieben, welches hiermit durch den Hinweis in seiner
Gesamtheit integriert wird.
Ein gewöhnlicher Register-Cache-Speicher für den oberen
Stapelspeicherbereich wird auch in einem Mikroprozessor
verwendet, der dazu ausgelegt ist, Forth-Programme direkt
auszuführen. Diese Vorrichtung ist in An Architecture for
the Direct Execution of the Forth Programming Language, von
Hayes, Fraeman, Williams und Zaremba, © 1987 ACM 0-89791-
238-1/87/1000-0042, Proceedings Second International
Conference on Architectural Support for Programming
Languages and Operating Systems, Oktober 1987, beschrieben,
welches hiermit durch den Hinweis in seiner Gesamtheit
integriert wird.
Fig. 1 stellt einen Computer dar, der mit dem allgemeinen
Bezugszeichen 100 bezeichnet ist, welcher die Erfindung
integriert. Der Computer 100 umfaßt einen Prozessor 101,
der eine Zentraleinheit (CPU) 103, einen Speicherabschnitt
105 und einen Eingabe/Ausgabe (E/A)-Abschnitt 107 enthält.
Der E/A-Abschnitt 107 ist mit einer Tastatur 109, einer
Anzeigeeinheit 111, einer Plattenspeichereinheit 113 und
einer CD-ROM-Laufwerkseinheit 115 verbunden. Die CD-ROM-
Laufwerkseinheit 115 kann ein CD-ROM-Medium 117 lesen, das
typischerweise ein Programm und Daten 119 enthält. Die CD-
ROM-Laufwerkseinheit 115 (zusammen mit dem CD-ROM-Medium
117) und die Plattenspeichereinheit 113 umfassen einen
Dateispeichermechanismus. Einige Ausführungsformen der
Erfindung umfassen eine Netzwerkschnittstelle 121, die den
Computer 100 mit einem Netzwerk 123 verbindet. Der
Prozessor 101 schließt die Fähigkeit ein,
Ausnahmeunterbrechungen zu erzeugen, die von einer
Unterbrechungs-Bearbeitungsroutine 125 bearbeitet werden.
Die Unterbrechungs-Bearbeitungsroutine 125 ist im
allgemeinen (wenn auch nicht immer) ein Teil eines
Betriebssystems 127 innerhalb des Speicherabschnitts 105.
Ein Anwendungsprogramm 129 führt im allgemeinen
Systemaufrufe zum Betriebssystem 127 durch, um Dienste
durchzuführen und Betriebsmittel bereitzustellen. Die CPU
103 umfaßt einen "Cache-Speicher 131 für den oberen
Stapelspeicherbereich". Im Fall von Computern, die der
SPARC-Architektur entsprechen, ist der "Cache-Speicher 131
für den oberen Stapelspeicherbereich" eine Registerdatei,
die in Registerausschnitte organisiert ist. Ein Fachmann
wird verstehen, daß nicht alle der angezeigten Merkmale des
Computers 100 zur Ausführung der Erfindung vorhanden sein
müssen.
Viel von der Erfindung wird mit Bezug auf die
Registerausschnittdatei der SPARC-Architektur beschrieben.
Ein Fachmann wird verstehen, wie die bezüglich der
Registerdatei beschriebene Erfindung auf andere
Architekturen von Cache-Speichern für den oberen
Stapelspeicherbereich anzuwenden ist. Eine beispielhafte
Architektur verwendet eine Universalregisterdatei, die eine
Universalregisterdatei-Ausnahmeunterbrechung aufruft, wenn
der Universal-Cache-Speicher für den oberen
Stapelspeicherbereich überläuft oder unterläuft. Eine
weitere beispielhafte Architektur umfaßt einen Gleitkomma-
Cache-Speicher für den oberen Stapelspeicherbereich, der in
der Lage ist, eine Gleitkommaregisterdatei-
Ausnahmeunterbrechung zu erzeugen, wenn der Gleitkomma-
Cache-Speicher für den oberen Stapelspeicherbereich
überläuft oder unterläuft.
Fig. 2 stellt einen Prozeß der "Stapelspeicher-
Ausnahmebearbeitung", der mit dem allgemeinen Bezugszeichen
200 bezeichnet ist, zum Minimieren der Anzahl an Überlauf-
und Unterlauf-Ausnahmebedingungen dar. Der Prozeß 200 der
"Stapelspeicher-Ausnahmebearbeitung" beginnt bei einer
"Start"-Station 201 und geht zu einer "Initialisierungs"-
Prozedur 203 weiter. Eine Prozedur ist eine beliebige Folge
von Befehlen, die von einem Computer ausgeführt werden
können. Die "Initialisierungs"-Prozedur 203 initialisiert
einen Vorgabewert, initialisiert Stapelspeicherelement-
Verwaltungswerte, die dem Vorgabewert zugeordnet sind, und
initialisiert die Überlauf- und Unterlauf-
Unterbrechungsvektoren für den Cache-Speicher für den
oberen Stapelspeicherbereich.
Nach einer gewissen Betriebsdauer läuft der Cache-Speicher
für den oberen Stapelspeicherbereich über (oder zu einem
späteren Zeitpunkt kann der Cache-Speicher für den oberen
Stapelspeicherbereich unterlaufen), was eine
Stapelspeicher-Ausnahmeunterbrechung durch einen der
Unterbrechungsvektoren, die durch die "Initialisierungs"-
Prozedur 203 initialisiert wurden, aufruft. Ein Ereignis
205 "Stapelspeicher-Unterbrechung empfangen" empfängt die
Unterbrechung, speichert den Computerstatus als
Unterbrechungsinformation und veranlaßt die CPU 103,
Computerbefehle auszuführen, die in der Unterbrechungs-
Bearbeitungsroutine 125 stehen. Die Unterbrechungs-
Bearbeitungsroutine 125 umfaßt eine Prozedur 207
"Stapelspeicher-Unterbrechung verarbeiten". Die Prozedur
207 "Stapelspeicher-Unterbrechung verarbeiten" verarbeitet
die Stapelspeicher-Ausnahmeunterbrechung, um ein oder
mehrere Stapelspeicherelemente (wie z. B.
Registerausschnitte) in Abhängigkeit vom Vorgabewert
abzugeben oder zu füllen. Als nächstes ändert die Prozedur
207 "Stapelspeicher-Unterbrechung verarbeiten" den
Vorgabewert in Abhängigkeit davon, ob die Stapelspeicher-.
Ausnahmeunterbrechung durch einen Stapelspeicherüberlauf
oder -unterlauf verursacht wurde. Wenn die nächste
Stapelspeicher-Ausnahmeunterbrechung auftritt, wiederholt
sich der Prozeß 200 "Stapelspeicher-Ausnahmebearbeitung"
beginnend beim Ereignis 205 "Stapelspeicher-Unterbrechung
empfangen". Ein Fachmann wird verstehen, daß die
gespeicherte Unterbrechungsinformation verwendet wird, um
den Computerstatus wiederherzustellen (im allgemeinen den
unterbrochenen Befehl neu auszuführen), wenn die
Unterbrechung zurückkehrt.
Einer der Vorteile der Erfindung besteht darin, daß sie die
Anzahl der Stapelspeicherelemente, die abgegeben/gefüllt
werden sollen, in Abhängigkeit vom Abgabe/Füll-Protokoll,
das sich im Wert des Vorgabewerts widerspiegelt, bestimmt.
Wenn mehr Überlaufunterbrechungen als Unterlauf
unterbrechungen aufgetreten sind, können folglich bei jeder
Überlaufunterbrechung mehr Stapelspeicherelemente an den
Speicher abgegeben werden. Für Registerausschnitt-
Stapelspeicher sind die Stapelspeicherelemente
Registerausschnitte. Dieser Aspekt der Erfindung wird bei
modernen Programmiermethodiken, die tiefe Aufrufsequenzen
erzeugen (beispielsweise objektorientierte und/oder
rekursive Programmierung), sehr wichtig.
Die Stapelspeicherelemente in anderen Architekturen von
Cache-Speichern für den oberen Stapelspeicherbereich müssen
keine Registerausschnitte sein. Beispielsweise enthält die
Intel-FPU einen Registerstapelspeicher mit
Stapelspeicherelementen, die Gleitkommaregister sind,
während die Forth-Architektur Universalregister enthält.
Die Erfindung bearbeitet diese Stapelspeicherdateien, um
bei jeder Überlauf- oder Unterlauf-Ausnahmeunterbrechung in
Abhängigkeit von einem Vorgabewert eine festgelegte Anzahl
von Registern (Stapelspeicherelementen) an einen Speicher
abzugeben oder aus einem Speicher einzufüllen.
Fig. 3A stellt einen Bearbeitungsprozeß für eine
Stapelspeicher-Überlaufunterbrechung dar, der mit dem
allgemeinen Bezugszeichen 300 bezeichnet ist, welcher zum
Verarbeiten einer Stapelspeicher-Überlaufunterbrechung
konfiguriert ist. Ein Fachmann wird verstehen, daß einige
Computerarchitekturen nur einen Unterbrechungsvektor
besitzen, der sowohl Registerausschnitt-Überlauf- als auch
-Unterlaufbedingungen zugeordnet ist. Andere
Computerarchitekturen besitzen separate Vektoren, die den
Registerausschnitt-Unterlauf- und -Überlaufbedingungen
zugeordnet sind. Noch andere Computerarchitekturen
beinhalten mehrere Vektoren für sowohl Überlauf
unterbrechungen als auch Unterlaufunterbrechungen.
Ungeachtet der tatsächlichen Unterbrechungsdetails wird
eine Bearbeitungsroutine für die Stapelspeicher-
Ausnahmeunterbrechung ähnlich dem Bearbeitungsprozeß 300
für die Stapelspeicher-Überlaufunterbrechung bei einer
Überlaufunterbrechung aufgerufen. Für die Zwecke der
folgenden Erörterung schließt der Begriff "Stapelspeicher-
Ausnahmeunterbrechung" sowohl eine Stapelspeicher-
Unterlaufunterbrechung als auch eine Stapelspeicher-
Überlaufunterbrechung ein.
Der Bearbeitungsprozeß 300 für die Stapelspeicher-
Überlaufunterbrechung beginnt bei einer "Start"-Station
301, nachdem die "Initialisierungs"-Prozedur 203 abläuft.
Sobald eine Stapelspeicher-Überlaufunterbrechung auftritt,
geht der Bearbeitungsprozeß 300 für die Stapelspeicher-
Überlaufunterbrechung zu einem Ereignis 303
"Stapelspeicherüberlauf empfangen" weiter, das als direktes
oder indirektes Ergebnis des Auftretens einer
Stapelspeicher-Überlaufunterbrechung aufgerufen wird. Als
nächstes bestimmt der Bearbeitungsprozeß 300 für die
Stapelspeicher-Überlaufunterbrechung auf der Basis des
Vorgabewerts, wie viele Stapelspeicherelemente an den
Speicher abgegeben werden sollen. Da die Unterbrechung eine
Stapelspeicher-Überlaufunterbrechung ist, ist der Cache-
Speicher für den oberen Stapelspeicherbereich voll. Obwohl
der Bearbeitungsprozeß 300 für die Stapelspeicher-
Überlaufunterbrechung mindestens ein Stapelspeicherelement
abgeben muß, kann er folglich mehr als ein
Stapelspeicherelement abgeben, um im Cache-Speicher für den
oberen Stapelspeicherbereich zusätzlichen Platz zu
schaffen. Für eine Registerausschnittdatei kann der Prozeß
folglich für die voraussichtliche Ausführung von
"Speicher"-Befehlen Platz schaffen. Eine Prozedur 305
"abzugebende Stapelspeichermenge bestimmen" bestimmt auf
der Basis des Vorgabewerts, wie viele
Stapelspeicherelemente abgegeben werden sollen.
Bei einer bevorzugten Ausführungsform ist der Vorgabewert
eine Zwei-Bit-Variable, die zum Auswählen eines Abgabewerts
aus einer Tabelle von Stapelspeicherelement-
Verwaltungswerten verwendet wird. Beispielsweise stellt die
Tabelle 1 ein Beispiel von Stapelspeicherelement-
Verwaltungswerten dar, die durch einen Zwei-Bit-Vorgabewert
indiziert sind.
Unter der Annahme, daß der Vorgabewert anfänglich auf Null
gesetzt wird, gibt folglich die erste Stapelspeicher-
Überlaufunterbrechung nur ein Stapelspeicherelement ab.
Eine zweite oder dritte Stapelspeicher-
Überlaufunterbrechung ohne eine zwischenzeitliche
Stapelspeicher-Unterlaufunterbrechung gibt zwei
Stapelspeicherelemente ab. Eine vierte Unterbrechung (und
alle nachfolgenden Stapelspeicher-Überlaufunterbrechungen,
bei denen keine zwischenzeitliche Stapelspeicher-
Unterlaufunterbrechung auftritt) geben drei
Stapelspeicherelemente ab. Wie anschließend beschrieben
wird, dekrementiert jedoch jede Stapelspeicher-
Unterlaufunterbrechung den Vorgabewert und ändert
möglicherweise die Anzahl der Stapelspeicherelemente, die
an den Speicher abgegeben werden.
Ein Fachmann wird verstehen, daß für Registerausschnitt-
Cache-Speicher für den oberen Stapelspeicherbereich die
Anzahl der Stapelspeicherelemente die Anzahl der
einzufüllenden/abzugebenden Registerausschnitte ist. Für
andere Cache-Speicher für den oberen Stapelspeicherbereich
können die Stapelspeicherelement-Verwaltungswerte die
Anzahl der aus dem Cache-Speicher für den oberen
Stapelspeicherbereich abzugebenden oder in diesen
einzufüllenden Stapelspeicherelemente bestimmen.
Wenn der Abgabewert durch die Prozedur 305 "abzugebende
Stapelspeichermenge bestimmen" einmal ausgewählt ist, geht
der Bearbeitungsprozeß 300 für die Stapelspeicher-
Überlaufunterbrechung zu einer Prozedur 307
"Stapelspeichermenge abgeben" weiter, die die Anzahl der
Registerausschnitte, die durch den Abgabewert festgelegt
ist, an den Speicher abgibt.
Als nächstes geht der Bearbeitungsprozeß 300 für die
Stapelspeicher-Überlaufunterbrechung zu einer
Entscheidungsprozedur 309 "Vorgabewert geringer als
Maximum" weiter, die bestimmt, ob der Vorgabewert geringer
ist als sein Maximum. Wenn ja, geht der Bearbeitungsprozeß
300 für die Stapelspeicher-Überlaufunterbrechung zu einer
Prozedur 311 "Vorgabewert inkrementieren" weiter, die den
Vorgabewert so ändert, daß die nächste Stapelspeicher-
Ausnahmeunterbrechung den größeren Vorgabewert verwendet.
Wenn der Vorgabewert einmal inkrementiert ist, oder wenn
der Vorgabewert bereits auf seinem Maximum liegt, geht der
Bearbeitungsprozeß 300 für die Stapelspeicher-
Überlaufunterbrechung zu einer Prozedur 313 "von der
Unterbrechung zurückkehren" weiter. Die Prozedur 313 "von
der Unterbrechung zurückkehren" kehrt zum Programm zurück,
das versuchte, einen Befehl auszuführen, der den
Stapelspeicherüberlauf verursachte. Im Fall einer
Registerdatei ist dieser Befehl ein "Speicher"-Befehl.
Somit führt die Prozedur 313 "von der Unterbrechung
zurückkehren" den "Speicher"-Befehl erneut aus. Da der
Cache-Speicher für den oberen Stapelspeicherbereich nun für
einen Registerausschnitt Platz hat, gelingt der "Speicher"-
Befehl und das Programm fährt mit der Ausführung fort. Der
Bearbeitungsprozeß 300 für die Stapelspeicher-
Überlaufunterbrechung endet dann über eine "End"-Station
315.
Ein Fachmann wird verstehen, daß der Vorgabewert eine
beliebige Größe besitzen kann, von einem einzigen Bit bis
zu vielen Bits, in Abhängigkeit von der Menge an
Information, die zum Voraussehen der nächsten
Stapelspeicher-Ausnahmeunterbrechung erforderlich ist.
Ferner wird ein Fachmann verstehen, daß die Erfindung den
Vorgabewert nicht dekrementieren oder inkrementieren muß.
Statt dessen speichert eine bevorzugte Ausführungsform
einen Zustandswert im Vorgabewert und ändert den
Zustandswert in Abhängigkeit von dem existierenden Zustand
und davon, ob eine Überlauf- oder Unterlaufunterbrechung
auftritt.
Fig. 3B stellt einen Bearbeitungsprozeß für eine
Stapelspeicher-Unterlaufunterbrechung dar, der mit dem
allgemeinen Bezugszeichen 350 bezeichnet ist, welcher zum
Verarbeiten einer Stapelspeicher-Unterlaufunterbrechung
konfiguriert ist. Wie vorher mit Bezug auf Fig. 3A
beschrieben, gibt es viele Möglichkeiten, den
Bearbeitungsprozeß 350 für die Stapelspeicher-
Unterlaufunterbrechung aufzurufen. Der Bearbeitungsprozeß
350 für die Stapelspeicher-Unterlaufunterbrechung beginnt
bei einer "Start"-Station 351, nachdem die
"Initialisierungs"-Prozedur 203 abläuft. Sobald eine
Stapelspeicher-Unterlaufunterbrechung auftritt, geht der
Bearbeitungsprozeß 350 für die Stapelspeicher-
Unterlaufunterbrechung zu einem Ereignis 353
"Stapelspeicherunterlauf empfangen" weiter, das als
direktes oder indirektes Ergebnis des Auftretens einer
Stapelspeicher-Unterlaufunterbrechung aufgerufen wird. Als
nächstes geht der Bearbeitungsprozeß 350 für die
Stapelspeicher-Unterlaufunterbrechung zu einer Prozedur 355
"zu füllende Stapelspeichermenge bestimmen" weiter, die auf
der Basis des Vorgabewerts bestimmt, wie viele
Registerausschnitte aus dem Speicher eingefüllt werden
sollen.
Wie vorher beschrieben wurde, ist der Vorgabewert bei einer
bevorzugten Ausführungsform eine Zwei-Bit-Variable, die zum
Auswählen eines Füllwerts aus einer Tabelle von
Stapelspeicherelement-Verwaltungswerten ähnlich den in
Tabelle 1 gezeigten verwendet wird. Da die Unterbrechung
eine Stapelspeicher-Unterlaufunterbrechung ist, ist der
Cache-Speicher für den oberen Stapelspeicherbereich leer.
Obwohl der Bearbeitungsprozeß 350 für die Stapelspeicher-
Unterlaufunterbrechung mindestens ein Stapelspeicherelement
einfüllen muß, kann er folglich mehr als ein
Stapelspeicherelement einfüllen, um den Cache-Speicher für
den oberen Stapelspeicherbereich vorzuladen. Im Fall eines
Registerausschnitts kann die Registerdatei in Erwartung auf
die Ausführung von mehr "Umspeicher"-Befehlen als
"Speicher"-Befehlen gefüllt werden.
Wenn der Füllwert von der Prozedur 355 "zu füllende
Stapelspeichermenge bestimmen" einmal ausgewählt ist, geht
der Bearbeitungsprozeß 350 für die Stapelspeicher-
Unterlaufunterbrechung zu einer Prozedur 357
"Stapelspeichermenge füllen" weiter, die die Anzahl der
Stapelspeicherelemente, die durch den Füllwert festgelegt
ist, aus dem Speicher einfüllt.
Als nächstes geht der Bearbeitungsprozeß 350 für die
Stapelspeicher-Unterlaufunterbrechung zu einer
Entscheidungsprozedur 359 "Vorgabewert größer als Minimum"
weiter, die bestimmt, ob der Vorgabewert größer ist als
sein Minimalwert. Wenn ja, geht der Bearbeitungsprozeß 350
für die Stapelspeicher-Unterlaufunterbrechung zu einer
Prozedur 361 "Vorgabewert dekrementieren" weiter, die den
Vorgabewert dekrementiert, so daß die nächste
Stapelspeicher-Ausnahmeunterbrechung den neuen Vorgabewert
verwendet. Wenn der Vorgabewert einmal dekrementiert ist,
oder wenn der Vorgabewert bereits auf seinem Minimum liegt,
geht der Bearbeitungsprozeß 350 für die Stapelspeicher-
Unterlaufunterbrechung zu einer Prozedur 363 "von der
Unterbrechung zurückkehren" weiter. Im Fall einer
Registerausschnitt-Unterlaufunterbrechung kehrt die
Unterbrechung zum Programm zurück, das versuchte, einen
"Umspeicher"-Befehl auszuführen, und führt den
"Umspeicher"-Befehl erneut aus. Da die Registerdatei nun
einen Registerausschnitt enthält, gelingt der "Umspeicher"-
Befehl und das Programm fährt mit der Ausführung fort. Der
Bearbeitungsprozeß 350 für die Stapelspeicher-
Unterlaufunterbrechung endet dann über eine "End"-Station
365.
Bei einer Ausführungsform befinden sich der
Bearbeitungsprozeß 300 für die Stapelspeicher-
Überlaufunterbrechung und der Bearbeitungsprozeß 350 für
die Stapelspeicher-Unterlaufunterbrechung innerhalb des
Betriebssystems und laufen in einer privilegierten Umgebung
ab. Bei einer weiteren Ausführungsform befinden sich der
Bearbeitungsprozeß 300 für die Stapelspeicher-
Überlaufunterbrechung und der Bearbeitungsprozeß 350 für
die Stapelspeicher-Unterlaufunterbrechung in einer
Anwendung und laufen in einer geschützten Umgebung ab. In
diesem Fall wird die Unterbrechung im allgemeinen zuerst zu
Programmbefehlen im Betriebssystem gerichtet, das die
Unterbrechung umleitet, um die Registerausschnitt-
Bearbeitungsroutinen in der Anwendung auszuführen.
Ein Fachmann wird verstehen, daß die Stapelspeicherelement-
Verwaltungswerte, die in Tabelle 1 angegeben sind, nur eine
mögliche Gruppe von Werten sind. Die optimale Gruppe von
Werten hängt von der Anzahl der Stapelspeicherelemente im
Cache-Speicher für den oberen Stapelspeicherbereich und von
den Eigenschaften der Arten der Programme, die vom Computer
ausgeführt werden, ab. Ein solcher wird auch verstehen, daß
der Vorgabewert einen Status darstellt. Somit zieht die
Erfindung in Erwägung, spezielle Werte im Vorgabewert zu
speichern, anstatt den Vorgabewert zu inkrementieren oder
zu dekrementieren.
Fig. 4 stellt eine Vektorarchitektur für die
Stapelspeicher-Ausnahmeunterbrechung dar, die mit dem
allgemeinen Bezugszeichen 400 bezeichnet ist, welche zum
Bewerkstelligen einer bevorzugten Ausführungsform verwendet
werden kann. Ein Vorgabewertregister 401 enthält den Wert
des Vorgabewerts. Der im Vorgabewertregister 401 enthaltene
Wert wird verwendet, um auszuwählen, welcher Überlaufvektor
in einer Stapelspeicher-Überlaufvektormatrix 403 und
welcher Unterlaufvektor in einer Stapelspeicher-Unterlauf
vektormatrix 405 verwendet werden soll, wenn eine
Stapelspeicher-Ausnahmeunterbrechung auftritt. Beispiels
weise wählt der aktuelle Wert im Vorgabewertregister 401
bei einer Überlaufausnahmebedingung einen ausgewählten
Überlaufvektor 407 aus. Der ausgewählte Überlaufvektor 407
veranlaßt den Computer, Befehle in einer
Bearbeitungsroutine 409 "1 Stapelspeicherelement abgeben"
auszuführen. Die Bearbeitungsroutine 409 "1
Stapelspeicherelement abgeben" enthält Befehle, die ein
Stapelspeicherelement (beispielsweise ein einziges Register
oder einen Registerausschnitt) abgeben und die den Wert im
Vorgabewertregister 401 (bis zu einem Maximum)
inkrementieren. Der aktuelle Wert im Vorgabewertregister
401 legt jedoch auch einen ausgewählten Unterlaufvektor 411
fest, der den Computer veranlaßt, Befehle in einer
Bearbeitungsroutine 413 "3 Stapelspeicherelemente
einfüllen" auszuführen. Die Bearbeitungsroutine 413 "3
Stapelspeicherelemente einfüllen" enthält Befehle, die drei
Stapelspeicherelemente einfüllen und die den Wert im
Vorgabewertregister 401 (bis auf ein Minimum)
dekrementieren. Wenn sich der Wert im Vorgabewertregister
401 ändert (infolge von Stapelspeicher-
Ausnahmeunterbrechungen), werden folglich durch Festlegen,
welche Unterbrechungsvektoren in den Vektormatrizen
ausgewählt werden, verschiedene Abgabe/Füll-
Bearbeitungsroutinen ausgewählt.
Fig. 5 zeigt einen Prozeß der "adaptiven Stapelspeicher-
Verwendungseinstellung", der mit dem allgemeinen
Bezugszeichen 500 bezeichnet ist, zur adaptiven Änderung
der Stapelspeicherelement-Verwaltungswerte als Reaktion auf
über die Leistungsmerkmale eines speziellen
Ausführungsprogramms gesammelten Informationen.
Der Prozeß 500 "adaptive Stapelspeicher-
Verwendungseinstellung" beginnt bei einer "Start"-Station
501 und geht zu einer Prozedur 503 "Stapelspeicherelement-
Verwaltungswert initialisieren" weiter. Die Prozedur 503
"Stapelspeicherelement-Verwaltungswert initialisieren"
initialisiert die Stapelspeicherelement-Verwaltungswerte,
die dem Vorgabewert zugeordnet sind. Diese Initialisierung
kann (ohne Einschränkung) einmal durchgeführt werden, wenn
das Betriebssystem bootet, wenn ein neuer
Anwendungsprogrammprozeß gestartet wird oder sobald das
Anwendungsprogramm die Stapelspeicherelement-
Verwaltungswerte zurücksetzen will. Wenn die
Stapelspeicherelement-Verwaltungswerte einmal initialisiert
sind, geht der Prozeß 500 "adaptive Stapelspeicher-
Verwendungseinstellung" zu einer "Verarbeitungs"-Prozedur
505 weiter, die die an der Erfüllung des Programmzwecks
beteiligten Schritte durchführt. Wenn die Verarbeitung
fertig ist, endet der Prozeß 500 "adaptive Stapelspeicher-
Verwendungseinstellung" über eine "End"-Station 507. Nach
der Prozedur 503 "Stapelspeicherelement-Verwaltungswert
initialisieren" und während der Ausführung der
"Verarbeitungs"-Prozedur 505 läuft jedoch auch eine
Prozedur 509 "Stapelspeicher-Verwendungsinformationen
sammeln" ab. Die Prozedur 509 "Stapelspeicher-
Verwendungsinformationen sammeln" sammelt Stapelspeicher-
Verwendungsinformationen, die sich aus der Ausführung der
"Verarbeitungs"-Prozedur 505 ergeben. Die Stapelspeicher-
Verwendungsinformationen werden von einer Prozedur 511
"Stapelspeicherelement-Verwaltungswert einstellen"
verwendet, um die Stapelspeicherelement-Verwaltungswerte so
einzustellen, daß die Stapelspeicherdatei-Füll/Abgabe-
Eigenschaften während der Ausführung der "Verarbeitungs"-
Prozedur 505 optimiert werden. Die Stapelspeicherelement-
Verwaltungswerte können durch einen Betriebssystem-
Dienstaufruf oder ein anderes Verfahren, das sich zum
Ändern dieser Werte in Abhängigkeit von den speziellen
Eigenschaften einer Ausführungsform eignet, eingestellt
werden.
Ein weiterer Aspekt der Erfindung sieht mehrere
Vorgabewerte als Funktion der Adresse der Befehle, die eine
Stapelspeicher-Ausnahmeunterbrechung aufrufen, vor. Fig. 6 A
stellt einen Hash-Mechanismus dar, der mit dem allgemeinen
Bezugszeichen 600 bezeichnet ist, welcher einen Vorgabewert
als Funktion der Adresse des Befehls, der eine
Stapelspeicher-Ausnahmeunterbrechung verursachte, auswählt.
Der Hash-Mechanismus 600 umfaßt eine Prozedur 601
"Hashindexerzeugung", die anschließend mit Bezug auf Fig.
6B beschrieben wird, und eine Hash-Tabelle 603. Die
Prozedur 601 "Hashindexerzeugung" nimmt als Eingabe die
Adresse im Speicher des Befehls, der die Stapelspeicher-
Ausnahmeunterbrechung verursachte (beispielsweise im Fall
einer Registerausschnittdatei den "Speicher"- oder
"Umspeicher"-Befehl, der die Stapelspeicher-
Ausnahmeunterbrechung verursachte). Unter Verwendung von
gut bekannten Verfahren wird die Adresse abgeleitet, um
einen Index zu einer Eintragung in der Hash-Tabelle 603 zu
erzeugen. Die Hash-Tabelle 603 enthält eine erste
Vorgabewert-Eintragung 605 und eine nte Vorgabewert-
Eintragung 607. Die erste Vorgabewert-Eintragung 605 bis n
te Vorgabewert-Eintragung 607 umfassen einen Satz von
Vorgabewert-Eintragungen. Jede Vorgabewert-Eintragung in
der Hash-Tabelle 603 kann den Vorgabewert selbst, einen
Zeiger zum geeigneten Vorgabewert oder einen anderen Wert,
der zum Festlegen eines Vorgabewerts verwendet wird,
enthalten. Ein Fachmann wird verstehen, daß die Verwendung
des Hash-Mechanismus 600 ermöglicht, daß mehrere
Vorgabewerte das Abgeben/Füllen der Stapelspeicherdatei in
Abhängigkeit davon, wo im Speicher die Überlauf- und
Unterlauf-Ausnahmebedingungen auftreten, separat steuern.
Ein solcher wird auch verstehen, daß der Hash-Mechanismus
nur eine mögliche Art und Weise ist, durch die
Unterbrechung gespeicherte Informationen zu verwenden, um
die Auswahl eines Vorgabewerts zu steuern.
Fig. 6B stellt einen Vorgabewert-Auswahlprozeß, der mit dem
allgemeinen Bezugszeichen 650 bezeichnet ist, zum Zugriff
auf einen Vorgabewert aus der Hash-Tabelle 603 von Fig. 6 A
dar. Der Vorgabewert-Auswahlprozeß 650 wird durch die
Prozedur 601 "Hashindexerzeugung" aufgerufen und beginnt
bei einer "Start"-Station 651. Als nächstes greift eine
Prozedur 653 "Adresse des unterbrechenden Befehls erhalten"
auf die als Ergebnis der Stapelspeicher-
Ausnahmeunterbrechung gespeicherte Information zu, um die
Adresse des Befehls, der die Unterbrechung verursachte, zu
erhalten. Als nächstes verwendet eine Prozedur 655 "Hash-
Adresse" gut verstandene Verfahren, um auf der Basis der
aus der Prozedur 653 "Adresse des unterbrechenden Befehls
erhalten" erhaltenen Adresse einen geeigneten Index in die
Hash-Tabelle 603 zu erzeugen. Als nächstes verwendet eine
Prozedur 657 "auf Vorgabewert zugreifen" den Inhalt der
Hash-Tabelle 603 als Vorgabewert (oder um diesen zu
erhalten). Wenn der Vorgabewert (oder ein Zeiger zum
Vorgabewert) einmal ausgewählt ist, können die vorher
beschriebenen Prozesse mit dem Vorgabewert arbeiten und aus
der Stapelspeicherdatei zweckmäßig abgeben oder diese
füllen. Der Vorgabewert-Auswahlprozeß 650 endet über eine
"End"-Station 659.
Ein Fachmann wird verstehen, daß die Erfindung die Leistung
von Computersystemen mit einer Stapelspeicherdatei (oder
einem anderen Cache-Speicher für den oberen
Stapelspeicherbereich) durch Verringern der Anzahl an
Stapelspeicher-Ausnahmeunterbrechungen, die sich aus der
Ausführung eines Programms ergeben, verbessert.
Obwohl die vorliegende Erfindung hinsichtlich den derzeit
bevorzugten Ausführungsformen beschrieben wurde, wird ein
Fachmann verstehen, daß verschiedene Modifikationen und
Veränderungen vorgenommen werden können, ohne vom
Schutzbereich der Erfindung abzuweichen. Folglich ist der
Schutzbereich der Erfindung nicht auf die hierin erörterten
speziellen erfindungsgemäßen Ausführungsformen zu
begrenzen, sondern sollte nur durch die beigefügten
Ansprüche und deren Äquivalente definiert sein.
Claims (35)
1. Computergesteuertes Verfahren zum Minimieren von
Ausnahmebedingungen in einem Computer mit einem Speicher
und einem Cache-Speicher für den oberen
Stapelspeicherbereich, wobei das Verfahren die folgenden
Schritte umfaßt:
- a) Initialisieren eines Vorgabewerts zum Verfolgen von Ausnahmebedingungen von dem Cache-Speicher für den oberen Stapelspeicherbereich;
- b) Aufrufen einer Ausnahmeunterbrechung;
- c) Verarbeiten der Ausnahmeunterbrechung in Abhängigkeit von dem Vorgabewert; und
- d) Ändern des Vorgabewerts als Reaktion auf die Ausnahmeunterbrechung.
2. Computergesteuertes Verfahren nach Anspruch 1, wobei
der Vorgabewert mindestens einem Stapelspeicherelement-
Verwaltungswert zugeordnet ist, der einen Füllwert enthält,
die Stapelspeicher-Ausnahmeunterbrechung eine Stapel
speicher-Unterlaufunterbrechung ist, die Stapel
speicherdatei in eine Vielzahl von Stapelspeicherelemente
organisiert ist und Schritt (c) ferner folgendes umfaßt:
- 1. Bestimmen des Füllwerts in Abhängigkeit von dem Vorgabewert, wobei der Füllwert zum Festlegen, wie viele der Vielzahl von Stapelspeicherelementen eingefüllt werden sollen, verwendet wird; und
- 2. Einfüllen von mindestens einem der Vielzahl von Stapelspeicherelementen in Abhängigkeit von dem Füllwert.
3. Computergesteuertes Verfahren nach Anspruch 2, wobei
Schritt (c2) mindestens eines der Vielzahl von
Stapelspeicherelementen aus dem Speicher einfüllt.
4. Computergesteuertes Verfahren nach Anspruch 1, wobei
der Vorgabewert mindestens einem Stapelspeicherelement-
Verwaltungswert zugeordnet ist, der einen Abgabewert
enthält, die Stapelspeicher-Ausnahmeunterbrechung eine
Stapelspeicher-Überlaufunterbrechung ist, die Stapel
speicherdatei in eine Vielzahl von Stapelspeicherelemente
organisiert ist und Schritt (c) ferner folgendes umfaßt:
- 1. Bestimmen des Abgabewerts in Abhängigkeit von dem Vorgabewert, wobei der Abgabewert zum Festlegen, wie viele der Vielzahl von Stapelspeicherelementen abgegeben werden sollen, verwendet wird; und
- 2. Abgeben von mindestens einem der Vielzahl von Stapelspeicherelementen in Abhängigkeit von dem Abgabewert an den Speicher.
5. Computergesteuertes Verfahren nach Anspruch 1, wobei
der Vorgabewert mindestens einem Stapelspeicherelement-
Verwaltungswert zugeordnet ist und das Verfahren ferner
folgendes umfaßt:
- a) Einstellen des mindestens einen Stapel speicherelement-Verwaltungswerts.
6. Computergesteuertes Verfahren nach Anspruch 5, wobei
Schritt (e) auf eine Stapelspeicher-Verwendungsinformation
reagiert.
7. Computergesteuertes Verfahren nach Anspruch 1, wobei
die Stapelspeicher-Ausnahmeunterbrechung einen Unter
brechungsvektor innerhalb einer Unterbrechungsvektormatrix
verwendet und Schritt (c) ferner folgendes umfaßt:
- 1. Auswählen des Unterbrechungsvektors in der Unterbrechungsvektormatrix in Abhängigkeit von dem Vorgabewert.
8. Computergesteuertes Verfahren nach Anspruch 1, wobei
der Computer ein Anwendungsprogramm ausführt und Schritt
(c) innerhalb des Anwendungsprogramms ausgeführt wird.
9. Computergesteuertes Verfahren nach Anspruch 1, welches
ferner folgendes umfaßt:
- a) Auswählen des Vorgabewerts aus einer Gruppe von Vorgabewert-Eintragungen.
10. Computergesteuertes Verfahren nach Anspruch 9, wobei
Schritt (e) folgendes umfaßt:
- 1. Zugreifen auf durch die Ausnahmeunterbrechung gespeicherte Unterbrechungsinformationen; und
- 2. Auswählen des Vorgabewerts aus der Gruppe von Vorgabewert-Eintragungen, wobei die Auswahl auf der Unterbrechungsinformation basiert.
11. Computergesteuertes Verfahren nach Anspruch 1, wobei
der Cache-Speicher für den oberen Stapelspeicherbereich
eine Universalregisterdatei ist und die Ausnahme
unterbrechung eine Universalregisterdatei-Ausnahme
unterbrechung ist.
12. Computergesteuertes Verfahren nach Anspruch 1, wobei
der Cache-Speicher für den oberen Stapelspeicherbereich
eine Registerausschnittdatei ist und die Ausnahme
unterbrechung eine Registerausschnitt-Stapelspeicher-
Ausnahmeunterbrechung ist.
13. Computergesteuertes Verfahren nach Anspruch 1, wobei
der Cache-Speicher für den oberen Stapelspeicherbereich
eine Gleitkommaregisterdatei ist und die Ausnahme
unterbrechung eine Gleitkommaregister-Stapelspeicher-Aus
nahmeunterbrechung ist.
14. Vorrichtung mit einer Zentraleinheit (CPU) und einem
Speicher, der mit der CPU gekoppelt ist, zum Minimieren von
Ausnahmebedingungen in einem Computer mit einem Cache-
Speicher für den oberen Stapelspeicherbereich, wobei die
Vorrichtung folgendes umfaßt:
- 1. einen Vorgabewert-Initialisierungsmechanismus, der zum Initialisieren eines Vorgabewerts zum Verfolgen von Ausnahmebedingungen von dem Cache-Speicher für den oberen Stapelspeicherbereich konfiguriert ist;
- 2. einen Unterbrechungsmechanismus, der zum Aufrufen einer Ausnahmeunterbrechung in dem Computer konfiguriert ist;
- 3. einen Unterbrechungs-Bearbeitungsmechanismus in dem Computer, der zum Verarbeiten der Ausnahmeunterbrechung in Abhängigkeit von dem Vorgabewert konfiguriert ist; und
- 4. einen Vorgabewert-Verwaltungsmechanismus, der zum Ändern des Vorgabewerts als Reaktion auf die Ausnahmeunterbrechung konfiguriert ist.
15. Vorrichtung nach Anspruch 14, wobei der Vorgabewert
mindestens einem Stapelspeicherelement-Verwaltungswert
zugeordnet ist, der einen Füllwert enthält, die
Stapelspeicher-Ausnahmeunterbrechung eine Stapelspeicher-
Unterlaufunterbrechung ist, die Stapelspeicherdatei in eine
Vielzahl von Stapelspeicherelemente organisiert ist und der
Unterbrechungs-Bearbeitungsmechanismus ferner folgendes
umfaßt:
- 1. einen Füllbestimmungsmechanismus, der zum Bestimmen des Füllwerts in Abhängigkeit von dem Vorgabewert konfiguriert ist, wobei der Füllwert zum Festlegen, wie viele der Vielzahl von Stapelspeicherelementen eingefüllt werden sollen, verwendet wird; und
- 2. einen Füllmechanismus, der zum Einfüllen von mindestens einem der Vielzahl von Stapelspeicherelementen in Abhängigkeit von dem Füllwert konfiguriert ist.
16. Vorrichtung nach Anspruch 15, wobei der
Füllmechanismus mindestens eines der Vielzahl von
Stapelspeicherelementen aus dem Speicher einfüllt.
17. Vorrichtung nach Anspruch 14, wobei der Vorgabewert
mindestens einem Stapelspeicherelement-Verwaltungswert
zugeordnet ist, der einen Abgabewert enthält, die
Stapelspeicher-Ausnahmeunterbrechung eine Stapelspeicher-
Überlaufunterbrechung ist, die Stapelspeicherdatei in eine
Vielzahl von Stapelspeicherelemente organisiert ist und der
Unterbrechungs-Bearbeitungsmechanismus ferner folgendes
umfaßt:
- 1. einen Abgabebestimmungsmechanismus, der zum Bestimmen des Abgabewerts in Abhängigkeit von dem Vorgabewert konfiguriert ist, wobei der Abgabewert zum Festlegen, wie viele der Vielzahl von Stapelspeicherelementen abgegeben werden sollen, verwendet wird; und
- 2. einen Abgabemechanismus, der zum Abgeben von mindestens einem der Vielzahl von Stapelspeicherelementen an den Speicher in Abhängigkeit von dem Abgabewert konfiguriert ist.
18. Vorrichtung nach Anspruch 14, wobei der Vorgabewert
mindestens einem Stapelspeicherelement-Verwaltungswert
zugeordnet ist und die Vorrichtung ferner folgendes umfaßt:
- 1. einen Einstellungsmechanismus, der zum Einstellen des mindestens einen Stapelspeicherelement-Verwaltungswerts konfiguriert ist.
19. Vorrichtung nach Anspruch 18, wobei der
Einstellungsmechanismus auf die Stapelspeicher-
Verwendungsinformation reagiert.
20. Vorrichtung nach Anspruch 14, wobei die
Stapelspeicher-Ausnahmeunterbrechung einen Unterbrechungs
vektor innerhalb einer Unterbrechungsvektormatrix verwendet
und der Unterbrechungs-Bearbeitungsmechanismus ferner
folgendes umfaßt:
- 1. einen Unterbrechungsvektor-Auswahlmechanismus, der zum Auswählen des Unterbrechungsvektors in der Unterbrechungs vektormatrix in Abhängigkeit von dem Vorgabewert konfiguriert ist.
21. Vorrichtung nach Anspruch 14, wobei der Computer ein
Anwendungsprogramm ausführt und der Unterbrechungs-
Bearbeitungsmechanismus innerhalb des Anwendungsprogramms,
das in dem Computer ausgeführt wird, konfiguriert ist.
22. Vorrichtung nach Anspruch 14, wobei der Cache-Speicher
für den oberen Stapelspeicherbereich eine
Universalregisterdatei ist und die Ausnahmeunterbrechung
eine Universalregisterdatei-Ausnahmeunterbrechung ist.
23. Vorrichtung nach Anspruch 14, wobei der Cache-Speicher
für den oberen Stapelspeicherbereich ein
Gleitkommaregister-Stapelspeicher ist und die Ausnahme
unterbrechung eine Gleitkommaregister-Stapelspeicher-
Ausnahmeunterbrechung ist.
24. Vorrichtung nach Anspruch 14, wobei der Cache-Speicher
für den oberen Stapelspeicherbereich eine
Registerausschnittdatei ist und die Ausnahmeunterbrechung
eine Registerstapelspeicher-Ausnahmeunterbrechung ist.
25. Vorrichtung nach Anspruch 14, welche ferner folgendes
umfaßt:
- 1. einen Vorgabewert-Auswahlmechanismus, der zum Auswählen des Vorgabewerts aus einer Gruppe von Vorgabewert- Eintragungen konfiguriert ist.
26. Vorrichtung nach Anspruch 25, wobei der Vorgabewert-
Auswahlmechanismus folgendes umfaßt:
- 1. einen Unterbrechungsinformations-Zugriffsmechanismus, der zum Zugreifen auf eine durch die Ausnahmeunterbrechung gespeicherte Unterbrechungsinformation konfiguriert ist; und
- 2. einen gesteuerten Auswahlmechanismus, der zum Auswählen des Vorgabewerts aus der Gruppe von Vorgabewert- Eintragungen unter Verwendung der Unterbrechungsinformation konfiguriert ist.
27. Computerprogrammprodukt, welches folgendes umfaßt:
- 1. ein von einem Computer verwendbares Speichermedium mit einem darin verkörperten maschinenlesbaren Code zum Bewirken, daß ein Computer Ausnahmebedingungen minimiert, wobei der Computer einen Cache-Speicher für den oberen Stapelspeicherbereich aufweist, wobei der maschinenlesbare Code folgendes umfaßt:
- 2. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Vorgabewert-Initialisierungsmechanismus zu bewirken, welcher zum Initialisieren eines Vorgabewerts zum Verfolgen von Ausnahmebedingungen von dem Cache-Speicher für den oberen Stapelspeicherbereich konfiguriert ist;
- 3. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Unterbrechungsmechanismus zu bewirken, welcher zum Aufrufen einer Ausnahmeunterbrechung in dem Computer konfiguriert ist;
- 4. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Unterbrechungs-Bearbeitungsmechanismus in dem Computer zu bewirken, welcher zum Verarbeiten der Ausnahmeunterbrechung in Abhängigkeit von dem Vorgabewert konfiguriert ist; und
- 5. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Vorgabewert-Verwaltungsmechanismus zu bewirken, welcher zum Ändern des Vorgabewerts als Reaktion auf die Ausnahmeunterbrechung konfiguriert ist.
28. Computerprogrammprodukt nach Anspruch 27, wobei der
Vorgabewert mindestens einem Stapelspeicherelement-
Verwaltungswert zugeordnet ist, der einen Füllwert enthält,
die Stapelspeicher-Ausnahmeunterbrechung eine
Stapelspeicher-Unterlaufunterbrechung ist, die
Stapelspeicherdatei in eine Vielzahl von
Stapelspeicherelemente organisiert ist und der
Unterbrechungs-Bearbeitungsmechanismus ferner folgendes
umfaßt:
- 1. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Füllbestimmungsmechanismus zu bewirken, welcher zum Bestimmen des Füllwerts in Abhängigkeit von dem Vorgabewert konfiguriert ist, wobei der Füllwert zum Festlegen, wie viele der Vielzahl von Stapelspeicherelementen eingefüllt werden sollen, verwendet wird; und
- 2. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Füllmechanismus zu bewirken, der zum Füllen von mindestens einem der Vielzahl von Stapelspeicherelementen in Abhängigkeit von dem Füllwert konfiguriert ist.
29. Computerprogrammprodukt nach Anspruch 27, wobei der
Vorgabewert mindestens einem Stapelspeicherelement-
Verwaltungswert zugeordnet ist, der einen Abgabewert
enthält, die Stapelspeicher-Ausnahmeunterbrechung eine
Stapelspeicher-Überlaufunterbrechung ist, die
Stapelspeicherdatei in eine Vielzahl von
Stapelspeicherelemente organisiert ist und der
Unterbrechungs-Bearbeitungsmechanismus ferner folgendes
umfaßt:
- 1. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Abgabebestimmungsmechanismus zu bewirken, welcher zum Bestimmen des Abgabewerts in Abhängigkeit von dem Vorgabewert konfiguriert ist, wobei der Abgabewert zum Festlegen, wie viele der Vielzahl von Stapelspeicherelementen abgegeben werden sollen, verwendet wird; und
- 2. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Abgabemechanismus zu bewirken, welcher zum Abgeben von mindestens einem der Vielzahl von Stapelspeicherelementen an den Speicher in Abhängigkeit von dem Abgabewert konfiguriert ist.
30. Computerprogrammprodukt nach Anspruch 27, wobei der
Vorgabewert mindestens einem Stapelspeicherelement-
Verwaltungswert zugeordnet ist und das Produkt ferner
folgendes umfaßt:
- 1. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Einstellungsmechanismus zu bewirken, welcher zum Einstellen des mindestens einen Stapelspeicherelement-Verwaltungswerts konfiguriert ist.
31. Computerprogrammprodukt nach Anspruch 27, wobei die
Stapelspeicher-Ausnahmeunterbrechung einen Unterbrechungs
vektor innerhalb einer Unterbrechungsvektormatrix verwendet
und der Unterbrechungs-Bearbeitungsmechanismus ferner
folgendes umfaßt:
- 1. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Unterbrechungsvektor-Auswahlmechanismus zu bewirken, welcher zum Auswählen des Unterbrechungsvektors in der Unterbrechungsvektormatrix in Abhängigkeit von dem Vorgabewert konfiguriert ist.
32. Computerprogrammprodukt nach Anspruch 27, wobei der
Computer ein Anwendungsprogramm ausführt und der
Unterbrechungs-Bearbeitungsmechanismus innerhalb des
Anwendungsprogramms, das in dem Computer ausgeführt wird,
konfiguriert ist.
33. Computerprogrammprodukt nach Anspruch 27, welches
ferner folgendes umfaßt:
- 1. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Vorgabewert-Auswahlmechanismus zu bewirken, welcher zum Auswählen des Vorgabewerts aus einer Gruppe von Vorgabewert-Eintragungen konfiguriert ist.
34. Computerprogrammprodukt nach Anspruch 33, wobei der
Vorgabewert-Auswahlmechanismus folgendes umfaßt:
- 1. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Unterbrechungsinformations-Zugriffsmechanismus zu bewirken, welcher zum Zugreifen auf eine durch die Ausnahmeunterbrechung gespeicherte Unterbrechungs information konfiguriert ist; und
- 2. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen gesteuerten Auswahlmechanismus zu bewirken, welcher zum Auswählen des Vorgabewerts aus der Gruppe von Vorgabewert- Eintragungen unter Verwendung der Unterbrechungsinformation konfiguriert ist.
35. Computerprogrammprodukt, welches folgendes umfaßt:
- 1. ein Computerdatensignal, das in einer Trägerwelle mit einem darin verkörperten maschinenlesbaren Code verkörpert ist, zum Bewirken, daß ein Computer Ausnahmebedingungen minimiert, wobei der Computer einen Cache-Speicher für den oberen Stapelspeicherbereich aufweist, wobei der maschinenlesbare Code folgendes umfaßt:
- 2. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Vorgabewert-Initialisierungsmechanismus zu bewirken, welcher zum Initialisieren eines Vorgabewerts zum Verfolgen von Ausnahmebedingungen von dem Cache-Speicher für den oberen Stapelspeicherbereich konfiguriert ist;
- 3. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Unterbrechungsmechanismus zu bewirken, welcher zum Aufrufen einer Ausnahmeunterbrechung in dem Computer konfiguriert ist;
- 4. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Unterbrechungs-Bearbeitungsmechanismus in dem Computer zu bewirken, welcher zum Verarbeiten der Ausnahmeunterbrechung in Abhängigkeit von einem Vorgabewert konfiguriert ist; und
- 5. einen maschinenlesbaren Programmcode, der dazu konfiguriert ist, den Computer zu veranlassen, einen Vorgabewert-Verwaltungsmechanismus zu bewirken, der zum Ändern des Vorgabewerts als Reaktion auf die Ausnahmeunterbrechung konfiguriert ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/122,172 US6167504A (en) | 1998-07-24 | 1998-07-24 | Method, apparatus and computer program product for processing stack related exception traps |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19934067A1 true DE19934067A1 (de) | 2000-05-04 |
Family
ID=22401125
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19934067A Withdrawn DE19934067A1 (de) | 1998-07-24 | 1999-07-23 | Verfahren, Vorrichtung und Computerprogrammprodukt für stapelspeicherbezogene Ausnahmeunterbrechungen |
Country Status (4)
Country | Link |
---|---|
US (2) | US6167504A (de) |
CA (1) | CA2277638A1 (de) |
DE (1) | DE19934067A1 (de) |
GB (1) | GB2343031B (de) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2385175A (en) * | 1998-07-30 | 2003-08-13 | Sun Microsystems Inc | Processing stack related exception traps |
CA2277636A1 (en) * | 1998-07-30 | 2000-01-30 | Sun Microsystems, Inc. | A method, apparatus & computer program product for selecting a predictor to minimize exception traps from a top-of-stack cache |
US6487630B2 (en) * | 1999-02-26 | 2002-11-26 | Intel Corporation | Processor with register stack engine that dynamically spills/fills physical registers to backing store |
US6567975B1 (en) * | 1999-11-08 | 2003-05-20 | Sun Microsystems, Inc. | Method and apparatus for inserting data prefetch operations using data flow analysis |
US6915508B2 (en) * | 2000-06-12 | 2005-07-05 | Sun Microsystems, Inc. | Method and apparatus for eliminating C recursion from a Java™ bytecode interpreter |
US7150007B2 (en) * | 2000-09-11 | 2006-12-12 | Microsoft Corporation | Universal routine for reviewing and exercising software objects |
US20020083309A1 (en) * | 2000-12-21 | 2002-06-27 | Sun Microsystems, Inc. | Hardware spill/fill engine for register windows |
JP2004157636A (ja) * | 2002-11-05 | 2004-06-03 | Renesas Technology Corp | データ処理装置 |
US7660985B2 (en) * | 2003-04-30 | 2010-02-09 | At&T Corp. | Program security through stack segregation |
JP2006039874A (ja) * | 2004-07-26 | 2006-02-09 | Fujitsu Ltd | 情報処理装置 |
JP3768516B1 (ja) * | 2004-12-03 | 2006-04-19 | 株式会社ソニー・コンピュータエンタテインメント | マルチプロセッサシステムとそのシステムにおけるプログラム実行方法 |
JP2006309508A (ja) * | 2005-04-28 | 2006-11-09 | Oki Electric Ind Co Ltd | スタック制御装置およびその方法 |
US7752427B2 (en) * | 2005-12-09 | 2010-07-06 | Atmel Corporation | Stack underflow debug with sticky base |
FR2896601B1 (fr) * | 2006-01-24 | 2008-08-15 | Atmel Nantes Sa | Dispositif de traitement en notation polonaise inversee, et circuit integre electronique comprenant un tel dispositif de traitement. |
US20070282928A1 (en) * | 2006-06-06 | 2007-12-06 | Guofang Jiao | Processor core stack extension |
US7681000B2 (en) | 2006-07-10 | 2010-03-16 | Silverbrook Research Pty Ltd | System for protecting sensitive data from user code in register window architecture |
US7934092B2 (en) | 2006-07-10 | 2011-04-26 | Silverbrook Research Pty Ltd | Electronic device having improved security |
JP2009543234A (ja) * | 2006-07-10 | 2009-12-03 | シルバーブルック リサーチ ピーティワイ リミテッド | レジスタウィンドウアーキテクチャ内においてユーザコードから機密データを保護するためのシステム |
US20090183160A1 (en) * | 2008-01-16 | 2009-07-16 | Morinville Paul V | Automated Execution of Business Processes Using Dual Element Events |
CN101587447B (zh) * | 2008-05-23 | 2013-03-27 | 国际商业机器公司 | 基于预测的事务执行系统和方法 |
US9672351B2 (en) * | 2015-02-02 | 2017-06-06 | Qualcomm Incorporated | Authenticated control stacks |
CN105677535A (zh) * | 2016-01-04 | 2016-06-15 | 广东威创视讯科技股份有限公司 | 窗口异常处理方法及窗口异常处理装置 |
US9904485B2 (en) * | 2016-03-31 | 2018-02-27 | Intel Corporation | Secure memory controller |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5050067A (en) * | 1987-08-20 | 1991-09-17 | Davin Computer Corporation | Multiple sliding register stacks in a computer |
JPH02187825A (ja) * | 1989-01-13 | 1990-07-24 | Mitsubishi Electric Corp | コンピュータ |
US4951194A (en) * | 1989-01-23 | 1990-08-21 | Tektronix, Inc. | Method for reducing memory allocations and data copying operations during program calling sequences |
US5107457A (en) * | 1989-04-03 | 1992-04-21 | The Johns Hopkins University | Stack data cache having a stack management hardware with internal and external stack pointers and buffers for handling underflow and overflow stack |
JP2655191B2 (ja) * | 1989-07-05 | 1997-09-17 | 三菱電機株式会社 | 演算処理装置 |
US5832289A (en) * | 1991-09-20 | 1998-11-03 | Shaw; Venson M. | System for estimating worst time duration required to execute procedure calls and looking ahead/preparing for the next stack operation of the forthcoming procedure calls |
CA2105806C (en) * | 1992-09-18 | 2001-11-20 | Paul V. Jeffs | Apparatus for implementing interrupts in pipelined processors |
JP2725546B2 (ja) * | 1992-12-07 | 1998-03-11 | 株式会社日立製作所 | デ−タ処理装置 |
GB2282473B (en) * | 1993-10-02 | 1998-01-07 | Motorola Inc | A history buffer system |
US5659721A (en) * | 1995-02-14 | 1997-08-19 | Hal Computer Systems, Inc. | Processor structure and method for checkpointing instructions to maintain precise state |
US6006323A (en) * | 1998-05-20 | 1999-12-21 | Industrial Technology Research Institute | Intelligent multiple stack management unit |
-
1998
- 1998-07-24 US US09/122,172 patent/US6167504A/en not_active Expired - Lifetime
- 1998-07-30 US US09/126,560 patent/US6108767A/en not_active Expired - Lifetime
-
1999
- 1999-07-19 CA CA002277638A patent/CA2277638A1/en not_active Abandoned
- 1999-07-21 GB GB9917118A patent/GB2343031B/en not_active Expired - Fee Related
- 1999-07-23 DE DE19934067A patent/DE19934067A1/de not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
GB2343031B (en) | 2002-10-09 |
US6108767A (en) | 2000-08-22 |
US6167504A (en) | 2000-12-26 |
CA2277638A1 (en) | 2000-01-24 |
GB2343031A (en) | 2000-04-26 |
GB9917118D0 (en) | 1999-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19934067A1 (de) | Verfahren, Vorrichtung und Computerprogrammprodukt für stapelspeicherbezogene Ausnahmeunterbrechungen | |
DE60131864T2 (de) | Speichern von stapeloperanden in registern | |
DE10084556B4 (de) | Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen | |
DE69727773T2 (de) | Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor | |
DE69936162T2 (de) | Verfahren und Gerät für ein objektorientiertes Unterbrechungssystem | |
DE60035745T2 (de) | Verfahren zum bei Bedarf Laden und Ausführen einer Netzwerkanwendung | |
DE10085374B4 (de) | Systemmanagementspeicher für die Systemmanagement-Interrupt-Behandler wird in die Speichersteuereinrichtung integriert, unabhängig vom BIOS und Betriebssystem | |
EP0333123B1 (de) | Modular strukturiertes ISDN-Kommunikationssystem | |
DE69723286T2 (de) | Echtzeitprogramm-sprachbeschleuniger | |
DE69724516T2 (de) | Rechnersystem und Verfahren zur Ausführung von architekturspezifischem Programmcode mit geringen Laufzeitspeicherbereichsanforderungen | |
DE69836902T2 (de) | Auf variable instruktionen eingestellter computer | |
DE69816044T2 (de) | Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken | |
DE602004011018T2 (de) | Ungültigkeitserklärung eines speichers und löschen von puffereinträgen | |
DE69834230T2 (de) | Verfahren und Gerät zur Optimierung des Programmablaufs von Anwendungen | |
DE69724322T2 (de) | Verfahren und Anordnung zum frühzeitigen Einfügen von Assemblercode zwecks Optimierung | |
DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
DE4237417C2 (de) | Datenverarbeitungssystem | |
DE69738101T2 (de) | Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen | |
DE19755798A1 (de) | Verfahren und Vorrichtung für adaptive Computer-Directory- und File-Auswahl | |
DE2414311C2 (de) | Speicherschutzeinrichtung | |
DE1952158A1 (de) | Speicherschutzverfahren und Einrichtung zur Durchfuehrung dieses Verfahrens | |
DE69634315T2 (de) | Verfahren und Gerät zur Verwendung eines Ladebefehls der keinen Fehler verursacht | |
DE2411963B2 (de) | Datenverarbeitungsanlage | |
DE19527031A1 (de) | Verbesserte Vorrichtung zum Reduzieren von Verzögerungen aufgrund von Verzweigungen | |
DE19847676A1 (de) | Modifizierbarer Partitionsstarteintrag für ein Computerspeichergerät |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8125 | Change of the main classification |
Ipc: G06F 9/40 |
|
8130 | Withdrawal |