DE19934067A1 - Verfahren, Vorrichtung und Computerprogrammprodukt für stapelspeicherbezogene Ausnahmeunterbrechungen - Google Patents

Verfahren, Vorrichtung und Computerprogrammprodukt für stapelspeicherbezogene Ausnahmeunterbrechungen

Info

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
Application number
DE19934067A
Other languages
English (en)
Inventor
Peter C Damron
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE19934067A1 publication Critical patent/DE19934067A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/451Stack 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

Gebiet der Erfindung
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.
Hintergrund
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.
Zusammenfassung der Erfindung
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.
Beschreibung der Zeichnungen
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.
Beschreibung der bevorzugten Ausführungsformen Betriebskonfiguration
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.
Tabelle 1
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.
DE19934067A 1998-07-24 1999-07-23 Verfahren, Vorrichtung und Computerprogrammprodukt für stapelspeicherbezogene Ausnahmeunterbrechungen Withdrawn DE19934067A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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