DE69730276T2 - Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes - Google Patents

Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes Download PDF

Info

Publication number
DE69730276T2
DE69730276T2 DE69730276T DE69730276T DE69730276T2 DE 69730276 T2 DE69730276 T2 DE 69730276T2 DE 69730276 T DE69730276 T DE 69730276T DE 69730276 T DE69730276 T DE 69730276T DE 69730276 T2 DE69730276 T2 DE 69730276T2
Authority
DE
Germany
Prior art keywords
exceptional
code
counter
state
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69730276T
Other languages
English (en)
Other versions
DE69730276D1 (de
Inventor
Paul H. Nashua Hohensee
David L. Westborough Reese
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 DE69730276D1 publication Critical patent/DE69730276D1/de
Application granted granted Critical
Publication of DE69730276T2 publication Critical patent/DE69730276T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Description

  • Die vorliegende Erfindung betrifft ein System und ein Verfahren zur Vermeidung eines exzeptionellen Zustands eines vorherbestimmten Typs während der Ausführung eines Programms.
  • Insbesondere betrifft die vorliegende Erfindung ein System und ein Verfahren zur Vermeidung einer Ausnahme eines vorherbestimmten Typs in einem digitalen Computersystem. Die Erfindung stellt insbesondere ein System und ein Verfahren zur effizienten Handhabung von Speicherzugriffsoperationen bereit, die nicht synchronisierte Speicherreferenzen durch einen Mikroprozessor umfassen, der die Verwendung eines Ausnahmebehandlers erfordert, um die nicht synchronisierte Speicherreferenz zu behandeln.
  • STAND DER TECHNIK
  • Digitale Computer bearbeiten eine Vielzahl unterschiedlicher Programmtypen, wobei jedes Programm eine Reihe von Befehlen umfasst, die dem Computer ermöglichen, bestimmte Operationen im Zusammenhang mit bestimmten Datenelementen durchzuführen. Es steht eine Vielzahl von Prozessortypen zur Verwendung in digitalen Computersystemen zur Verfügung, wobei jeder Prozessortyp gemäß einer Architektur konstruiert ist, die unter anderem Folgendes beschreibt: den Befehlssatz, den ein Prozessor, der gemäß der Architektur konstruiert ist, ausführen soll, das Format oder die Formate der verschiedenen Befehle, die Datentypen und -formate, die verarbeitet werden können, Definitionen für unterschiedliche Register, die während der Befehlsbearbeitung verwendet werden können, wie auf Informationen im Speicher des Computers zugegriffen wird und wie ein Prozessor, der gemäß der Architektur konstruiert ist, exzeptionelle Zustände behandeln soll, die während der Befehlsbearbeitung erfasst werden können.
  • Es ist oft wünschenswert, einen Prozessortyp als „emulierten Prozessor" zu aktivieren, der von einem anderen Prozessortyp, der als „Zentralprozessor" arbeitet, emuliert werden soll. Ein Zentralprozessor emuliert einen emulierten Prozessor im Allgemeinen durch die Verarbeitung von Programmen, die für den emulierten Prozessor geschrieben wurden, um eine Ausgabe zu erzeugen, die effektiv der Ausgabe entspricht, die von dem emulierten Prozessor erzeugt würde. Im Allgemeinen wird die Emulation durch Übersetzung eines Programms, das für die Ausführung durch einen emulierten Prozessor erzeugt wird (ein „originales" Programm), in ein Programm, das von einem Zentralprozessor bearbeitet werden kann (ein „übersetztes" Programm), erreicht. Dieser Übersetzungsprozess kann zum Beispiel umfassen, dass aus Befehlen und anderen Elementen des originalen Programms Befehle und andere Elemente erzeugt werden, die auf der Architektur des Zentralprozessors basieren, wodurch das übersetzte Programm bereitgestellt wird. Die Übersetzung kann beispielsweise durch den Zentralprozessor selbst, durch einen anderen Prozessor im selben Computersystem oder durch ein anderes Computersystem durchgeführt werden und dem Zentralprozessor, der das Programm bearbeiten soll, verfügbar gemacht werden, und zwar unter der Steuerung eines Übersetzungsprogramms. Bei der Ausführung der Übersetzung können jeder Befehl oder Folgen oder verschiedene Gruppen von Befehlen im originalen Programm (das heißt, dem Programm, das auf der Architektur des emulierten Prozessors basiert) in einen oder in eine Reihe oder Gruppe von Befehlen zur Verarbeitung durch den Zentralprozessor übersetzt werden. Der Übersetzungsprozess wird typischerweise für das gesamte oder für ausgewählte Abschnitte eines originalen Programms durchgeführt, wenn der Prozessor mit der Bearbeitung des originalen Programms beginnt, obwohl darauf hingewiesen wird, dass ein Befehl oder eine Gruppe von Befehlen des originalen Programms übersetzt werden können, während die Verarbeitung fortschreitet. Wenn die Datenformate des emulierten Prozessors für den Zentralprozessor nicht direkt verwendbar sind, können die Daten des Weiteren verarbeitet werden, um sie von den Formaten des emulierten Prozessors in Formate umzuwandeln, die der Zentralprozessor verwenden kann.
  • Wie oben erwähnt, umfasst eine Architekturdefinition eine Beschreibung darüber, wie ein Prozessor, der gemäß der Architektur konstruiert ist, auf Informationen im Speicher des Computers zugreift. Normalerweise werden Daten in einem Speichersubsystem gespeichert, das eine Reihe von Speicherplätzen umfasst, von denen jeder die Kapazität aufweist, Daten mit einer Länge von einem Acht-Bit-Byte, die einer entsprechenden Reihe von aufeinanderfolgenden Adresswerten zugeordnet sind, zu speichern. Typischerweise kann ein Prozessor Datenelemente verarbeiten, die jeweils beispielsweise ein, zwei, vier, acht usw. Bytes umfassen (im Allgemeinen Mengen von 2n Bytes, wobei „n" eine Ganzzahl ist), und moderne Prozessorarchitekturen erfordern typischerweise, dass die Datenelemente in einer „synchronisierten" Weise gespeichert werden. Das heißt, dass die Architekturen erfordern, dass Zwei-Byte-Datenelemente in Speicherplätzen gespeichert werden, auf die mit Adressen zugegriffen wird, die durch zwei teilbar sind, und dass Vier-Byte- und Acht-Byte-Datenelemente in Speicherplätzen gespeichert werden, auf die mit Adressen zugegriffen wird, die durch vier teilbar sind. Wenn ein Datenelement nicht korrekt synchronisiert ist, müsste das Speichersubsystem oder der Prozessor typischerweise eine Reihe von Operationen durchführen, nachdem der Inhalt von einem oder mehreren Speicherplätzen während einer Abrufoperation abgerufen wurde, um den Inhalt neu zu ordnen und das gewünschte Datenelement aus dem abgerufenen Inhalt auszublenden oder das Datenelement während einer Speicheroperation neu zu ordnen und es in einem oder mehreren Speicherplätzen zu speichern.
  • Bei Prozessoren, die gemäß solcher moderner Architekturen konstruiert sind, würde typischerweise ein Ausnahmebehandler aufgerufen, um die Operation zu behandeln, wenn ein Speicherzugriff eine Adresse verwenden würde, die nicht korrekt synchronisiert ist. Der Ausnahmebehandler kann den Prozessor so steuern, dass er in einer Speicheroperation eine Anzahl von Operationen ausführt, damit der Inhalt einer Anzahl von Speicherplätzen abgerufen werden kann und das Datenelement aus verschiedenen Abschnitten des abgerufenen Inhalts während einer Abrufoperation hergestellt werden kann, oder dass verschiedene Abschnitte des Datenelements disassembliert und in jeweiligen Speicherplätzen bei einer Speicheroperation gespeichert werden können. Um den bedeutenden Umfang an Zusatz zu vermeiden, der beim Aufrufen des Ausnahmebehandlers, dem Ausführen der Abhilfeoperationen und der Rückkehr zum Programm auftreten würde, kann der Ausnahmebehandler den Prozessor alternativ lediglich befähigen, das Programm zu beenden, das die nicht synchronisierte Adressreferenz verwendet hat. Um beides zu vermeiden, sorgen Kompilierer typischerweise dafür, dass Datenelemente im Speicher ausgelegt werden, um sicherzusteilen, dass nicht synchronisierte Referenzen vermieden werden.
  • Jedoch erlaubt eine Anzahl von älteren Architekturen nicht synchronisierte Referenzen, und zwar zur Veranschaulichung die Mikroprozessorfamilie x86 der Intel Corporation, die gegenwärtig die Mikroprozessorpalette 8086, 8088, 80286, 80386, 80486 und „PentiumTM" umfasst. Jedoch tritt ein Problem auf, wenn gewünscht wird, einen Zentralprozessor zu aktivieren, der gemäß einer der modernen Architekturen konstruiert ist, was erfordert, dass der Speicherzugriff synchronisiert ist, um einen emulierten Prozessor zu emulieren, der keine solche Synchronisation erfordert, da während einer solchen Emulation eine nicht synchronisierte Referenz auftreten könnte.
  • GB-A-2285155 offenbart ein Computersystem, das eine Ausführungsumgebung zur Ausführung eines Programms umfasst, wobei das Programm einen Befehlsstrom umfasst, der eine Reihe von Befehlen umfasst, und die Ausführungsumgebung einen Detektor zur Erfassung von exzeptionellen Zuständen zur Erfassung eines exzeptionellen Zustands mindestens eines Typs umfasst, der aus der Ausführung mindestens eines der Befehle in der Reihe resultiert. Ein bedingter Substitutionsbefehl wird in einem Befehlssatz bereitgestellt, um Ausnahmen zu korrigieren, die während der Ausführungszeit auftreten. Der bedingte Substitutionsbefehl wird gleichzeitig in einem Fließband-Computersystem mit einem potenziellen Ausnahmebefehl oder gleichzeitig in einem weiträumigen Computersystem ausgeführt. Der bedingte Substitutionsbefehl substituiert einen Vorgabewert für das Ergebnis des potenziellen Ausnahmebefehls, wenn der potenzielle Ausnahmebefehl eine oder mehrere spezifizierte Ausnahmen erzeugt.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die Erfindung stellt ein neuartiges und verbessertes System und Verfahren zur Vermeidung eines exzeptionellen Zustands eines vorherbestimmten Typs in einem digitalen Computersystem bereit, insbesondere zur effizienten Behandlung von Speicherzugriffsoperationen, die nicht synchronisierte Speicherreferenzen durch einen Mikroprozessor umfassen, die die Verwendung eines Ausnahmebehandlers erfordern, um die nicht synchronisierte Speicherreferenz zu behandeln.
  • Kurz zusammengefasst umfasst ein System zur Vermeidung von exzeptionellen Zuständen während der Ausführung eines Programms eine Ausführungsumgebung zur Ausführung des Programms und ein Korrekturcode-Erzeugungssubsystem. Das Programm umfasst einen Befehlsstrom, der eine Reihe von Befehlen umfasst, und die Ausführungsumgebung umfasst einen Detektor zur Erfassung von exzeptionellen Zuständen zur Erfassung mindestens eines vorherbestimmten Typs eines exzeptionellen Zustands im Zusammenhang mit der Ausführung jedes der Befehle in dem Befehlsstrom. Ein Korrekturcode-Erzeugungssubsystem reagiert auf eine Erfassung durch die Ausführungsumgebung eines exzeptionellen Zustands des vorherbestimmten Typs im Zusammenhang mit der Ausführung eines Befehls in dem Befehlsstrom, um einen Korrekturcode zu erzeugen, wobei der Korrekturcode, wenn er verarbeitet wird, den exzeptionellen Zustand des vorherbestimmten Typs vermeidet und den Korrekturcode in dem Befehlsstrom durch den Befehl in dem Befehlsstrom ersetzt, für den der exzeptionelle Zustand erfasst wurde. Wenn sich der Befehl, der die Ausnahme ausgelöst hat, in einer Schleife oder dergleichen befindet, wird als Ergebnis anstelle des Befehls der Korrekturcode verarbeitet, der den exzeptionellen Zustand vermeidet.
  • Somit ermöglicht das System die Verwendung von Befehlen in einem Befehlsstrom, die effizient verarbeitet werden können, die jedoch exzeptionelle Zustände, wie beispielsweise nicht synchronisierte Speicherreferenzen, auslösen können, und das System ermöglicht, diese durch Korrekturcode zu ersetzen, der möglicherweise weniger effizient ist, jedoch sicherstellt, dass exzeptionelle Zustände vermieden werden, wenn ein exzeptioneller Zustand bei der Verarbeitung des ursprünglichen Befehls erfasst wird. Wenn der Abschnitt des Programms, der den Befehl enthält, der den exzeptionellen Zustand ausgelöst hat, mehrere Male verarbeitet wird, was auftreten kann, wenn er Teil einer Schleife ist, wird somit der exzeptionelle Zustand nur einmal oder eine vorherbestimmte Anzahl von Malen angetroffen und danach wird der Ersatzcode verarbeitet, wodurch sichergestellt wird, dass der exzeptionelle Zustand vermieden wird.
  • Die vorliegende Erfindung wird nun beispielhaft ausführlicher und unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, in denen:
  • 1 ein Funktionsblockdiagramm ist, das ein digitales Computersystem darstellt, das gemäß der Erfindung konstruiert ist;
  • 2 und 3 Zeichnungen sind, die für das Verständnis der Erfindung nützlich sind; und
  • 4 ein Ablaufplan ist, der Operationen zeigt, die von dem digitalen Computersystem im Zusammenhang mit der Erfindung ausgeführt werden.
  • AUSFÜHRLICHE BESCHREIBUNG EINER VERANSCHAULICHENDEN AUSFÜHRUNGSFORM
  • 1 ist ein Funktionsblockdiagramm eines digitalen Computersystems 10, das ein System zur effizienten Behandlung von Speicherzugriffsoperationen umfasst, die nicht synchronisierte Speicherreferenzen durch einen Mikroprozessor umfassen und die Verwendung eines Ausnahmebehandlers erfordern würden, um die nicht synchronisierte Speicherreferenz zu behandeln. Unter Bezugnahme auf 1 umfasst das digitale Computersystem 10 einen Mikroprozessor 11, der über eine Speicherverwaltungseinheit 14 mit einem Speichersubsystem 12 und einem oder mehreren Eingabe-/Ausgabesubsystemen, die im Allgemeinen mit der Bezugsnummer 13 gekennzeichnet sind, kommuniziert. Das Speichersubsystem 12 umfasst eine Anzahl physikalisch adressierbarer Speicherplätze, in denen durch den Mikroprozessor 11 zu verarbeitende Daten und Befehle (die hierin kollektiv als „Informationen" bezeichnet werden) gespeichert werden können. Zusätzlich kann der Mikroprozessor 11 die verarbeiteten Daten nach der Verarbeitung der Daten zur Speicherung zum Speichersubsystem 12 übertragen.
  • Das digitale Computersystem 10 kann eine Anzahl verschiedener Typen von Eingabe-/Ausgabesubsystemen 13 umfassen, einschließlich Massenspeichersubsystemen, Bediener-Eingabe- und -Ausgabesubsystemen 13, Netzanschlüssen und dergleichen. Die Massenspeichersubsysteme stellen im Allgemeinen einen Langzeitspeicher für Informationen bereit, die von dem Mikroprozessor 11 verarbeitet werden können. Die Massenspeichersubsysteme können Vorrichtungen wie beispielsweise Platten- oder Band- Subsysteme, optische Plattenspeichervorrichtungen und CD-ROM-Vorrichtungen umfassen, in denen Informationen gespeichert werden können und/oder aus denen Informationen ausgelesen werden können. Ein oder mehrere Massenspeichersubsysteme können entfernbare Speichermedien verwenden, die von einem Bediener entnommen und installiert werden können und die dem Bediener ermöglichen, Programme und Daten in das digitale Computersystem 10 zu laden und verarbeitete Daten aus diesem zu erhalten. Unter der Steuerung von Steuerungsinformationen, die den Massenspeichersubsystemen vom Mikroprozessor 11 bereitgestellt werden, können Informationen, die in den Massenspeichersubsystemen gespeichert sind, zur Speicherung zum Speichersubsystem 12 übertragen werden. Nachdem die Informationen im Speichersubsystem 12 gespeichert worden sind, kann der Mikroprozessor 11 sie zur Verarbeitung aus dem Speichersubsystem 12 abrufen. Nachdem die verarbeiteten Daten erzeugt wurden, kann der Mikroprozessor 11 ebenfalls die Massenspeichersubsysteme befähigen, die verarbeiteten Daten aus dem Speichersubsystem 12 für eine relative Langzeitspeicherung abzurufen.
  • Die Bediener-Eingabe- und -Ausgabesubsysteme stellen dem digitalen Computersystem 10 im Allgemeinen eine Bedienerschnittstelle bereit. Insbesondere können die Bediener-Eingabesubsysteme beispielsweise Tastatur- und Mausvorrichtungen umfassen, die ein Bediener für die interaktive Eingabe von Informationen zur Verarbeitung in das digitale Computersystem 10 verwenden kann. Zusätzlich können die Bediener-Eingabesubsysteme Mechanismen bereitstellen, mit denen der Bediener das digitale Computersystem 10 steuern kann. Die Bediener-Ausgabesubsysteme können Vorrichtungen, wie beispielsweise Video-Anzeigevorrichtungen, umfassen, mit Hilfe derer das digitale Computersystem 10 unter der Steuerung des Mikroprozessors 11 dem Bediener Verarbeitungsergebnisse anzeigt. Zusätzlich kann ein Drucker vorgesehen sein, um dem Bediener eine Ausdruckausgabe bereitzustellen.
  • Die Netzanschlüsse können dem digitalen Computersystem 10 ermöglichen, eine Verbindung zu einer Kommunikationsverknüpfung herzustellen, wodurch das Computersystem 10 an ein Computernetz angeschlossen wird. Die Netzanschlüsse ermöglichen dem Computersystem 10, Informationen (einschließlich sowohl Programmbefehle als auch Daten) zu anderen Computersystemen und anderen Vorrichtungen im Netz (nicht gezeigt) zu übertragen und von diesen zu empfangen. In einem typischen Netz, das beispielsweise gemäß einem Client-Server-Paradigma organisiert ist, sind bestimmte Computersysteme in dem Netz als Server bestimmt, die Informationen zur Verarbeitung durch andere Client-Computersysteme speichern und somit den Client-Computersystemen ermöglichen, die Informationen in angemessener Weise gemeinsam zu nutzen. Ein Client-Computersystem, das Zugriff auf Informationen benötigt, die von einem bestimmten Server verwaltet werden, befähigt den Server, die Informationen über das Netz zu ihm zu übertragen. Nach der Verarbeitung der Daten kann das Client-Computersystem die verarbeiteten Daten ebenfalls zur Speicherung zum Server zurück übertragen. Zusätzlich zu Computersystemen (einschließlich der oben beschriebenen Server und Clients) kann ein Netz ebenfalls beispielsweise Drucker und Faxgeräte, digitale Audio- oder Videospeichergeräte und -verteilungsgeräte und dergleichen umfassen, die von den verschiedenen Computersystemen, die in dem Netz angeschlossen sind, gemeinsam genutzt werden können. Die Kommunikationsverknüpfungen, die die Computersysteme in dem Netz miteinander verbinden, können herkömmlicherweise jedes angemessene Informationsträgermedium, einschließlich Drähte, Lichtleitfasern oder anderer Medien, zur Übertragung von Signalen zwischen den Computersystemen umfassen. Computersysteme übertragen Informationen in dem Netz mittels Nachrichten, die über die Kommunikationsverknüpfungen übertragen werden, wobei jede Nachricht Informationen und ein Etikett, das das Gerät für den Empfang der Nachricht identifiziert, umfasst.
  • Herkömmlicherweise umfasst jedes der Eingabe-/Ausgabesubsysteme 13 typischerweise Register und andere Datenspeicherelemente (nicht gezeigt), die Steuerungs-, Status- und andere Informationen speichern, die zur Steuerung der Operationen, die von dem jeweiligen Eingabe-/Ausgabesubsystem 13 durchgeführt werden, und zur Anzeige von dessen Operationsstatus verwendet werden. Der Mikroprozessor 11 kann Informationen in den Registern und anderen Datenspeicherelementen speichern, wodurch er das jeweilige Eingabe-/Ausgabesubsystem 13 in gleicher Weise steuert, wie er Informationen im Speichersubsystem 12 speichert. Entsprechend kann der Mikroprozessor 11 die Informationen, die in dem Eingabe-/Ausgabesubsystem 13 enthalten sind, in gleicher Weise abrufen, wie er Informationen aus dem Speichersubsystem 12 abruft, um den Operationsstatus des jeweiligen Eingabe-/Ausgabesubsystems 13 zu ermitteln.
  • Die Speicherverwaltungseinheit 14 führt eine Anzahl von Operationen aus. Insbesondere umfasst die Speicherverwaltungseinheit 14 typischerweise einen Pufferspeicher, der Informationen, die von dem Mikroprozessor 11 aus dem Speichersubsystem 12 angefordert werden, puffert. Wenn der Mikroprozessor 11 Informationen anfordert, die beispielsweise aus dem Speichersubsystem 12 abgerufen werden sollen, oder verarbeitete Daten für die Speicherung beispielsweise im Speichersubsystem 12 bereitstellt, stellt der Mikroprozessor 11 der Speicherverwaltungseinheit 14 zusätzlich typischerweise eine Adresse in einem virtuellen Adressraum bereit. Die verschiedenen Anwendungsprogramme, die von dem Mikroprozessor 11 verarbeitet werden, können mit entsprechenden virtuellen Adressräumen versehen werden. Der virtuelle Adressraum ist in „Seiten" unterteilt, von denen jede eine ausgewählte Anzahl von virtuell adressierbaren Speicherplätzen umfasst, wobei jeder virtuell adressierbare Speicherplatz Informationen speichert. Die Seiten eines virtuellen Adressraums eines Anwendungsprogramms sind normalerweise in einem Massenspeichersubsystem gespeichert, und der Mikroprozessor 11 ermöglicht, dass individuelle Seiten in das Speichersubsystem 12 so kopiert werden, wie sie während der Verarbeitung benötigt werden, und für die Seiten, die während der Verarbeitung modifiziert werden, kann der Mikroprozessor 11 ermöglichen, dass sie zur Langzeitspeicherung in das Massenspeichersubsystem kopiert werden.
  • Jeweilige Seiten eines virtuellen Adressraums können in physikalischen Plätzen, die mit Hilfe von physikalischen Adressen identifiziert werden, in dem Speichersubsystem 12 kompakt gespeichert werden, und indem eine Zugriffsoperation im Zusammenhang mit einem bestimmten virtuellen Adressspeicherplatz (das heißt, ein Abruf von Informationen aus einem bestimmten physikalischen Platz oder eine Speicherung von Informationen in einem bestimmten physikalischen Platz) als Reaktion auf eine Anfrage vom Mikroprozessor 11 durchgeführt wird, führt die Speicherverwaltungseinheit 14 eine Übersetzung der virtuellen Adresse aus, um die physikalische Adresse zur Verwendung bei der Durchführung der Zugriffsoperation im Zusammenhang mit dem Speichersubsystem 12 zu erhalten. Zusätzlich kann die Speicherverwaltungseinheit 14 mehrere Überprüfungsoperationen durchführen, einschließlich der Überprüfung zur Bestimmung, ob sich die Seite im Speichersubsystem 12 befindet oder nicht, ob das Anwendungsprogramm Zugriffserlaubnis auf die Seite hat oder nicht (das heißt, Daten auszulesen und Daten hineinzuschreiben), und ob die angeforderte Seite in dem virtuellen Adressraum eine gültige Seite ist oder nicht, und dergleichen. Wenn die Speicherverwaltungseinheit 14 eine negative Bestimmung bei der Überprüfungsoperation durchführt, das heißt, wenn sie beispielsweise bestimmt, dass sich die Seite nicht im Speichersubsystem 12 befindet, dass das Anwendungsprogramm nicht über die geeignete Zugriffserlaubnis verfügt, oder wenn sie bestimmt, dass die angeforderte Seite der Seite des virtuellen Adressraums im virtuellen Adressraum des Anwendungsprogramms keine gültige Seite ist, kann sie eine ZUGRIFFSFEHLER-Meldung erzeugen, die der Mikroprozessor 11 empfangen und bei der Durchführung der ausgewählten Fehlerbehandlungsoperationen verwenden kann.
  • Bei einer Ausführungsform umfasst ein Mikroprozessor 11, der für das System 10 nützlich ist, einen Mikroprozessor, der gemäß der Architektur SPARC Version 9 konstruiert ist, die in The SPARC Architecture Manual Version 9 (Prentice-Hall, 1994) von der SPARC International, Inc [David L. Weaver und Tom Germond (Hg.)], (im Folgenden als "SPARC Architekturhandbuch, Version 9" bezeichnet) beschrieben ist. Der Mikroprozessor 11 umfasst im Allgemeinen eine Anzahl von Elementen, einschließlich eines Registersatzes 20, einer oder mehrerer Funktionseinheiten 21, einer Busleitungsschnittstelle 22 und eines Steuerschaltkreises 23. Der Steuerschaltkreis 23 steuert die Verarbeitungsoperationen, die von dem Mikroprozessor 11 unter der Steuerung von Befehlen, die das Programm bereitstellt, durchgeführt werden. Unter der Steuerung des Steuerschaltkreises 23 ruft die Busleitungsschnittstelle 22 in Zusammenwirkung mit der Speicherverwaltungseinheit 14 im Allgemeinen Befehle und Daten ab, und zwar von dem Speichersubsystem 12 oder von Datenspeicherelementen, die von bestimmten Eingabe-/Ausgabesubsystemen 13 zur Verarbeitung verwaltet werden, und lädt die abgerufenen Daten in Register, die sich in dem Registersatz 20 befinden. Ebenfalls führen die Funktionseinheiten 21 unter der Steuerung des Steuerschaltkreises 23 logische, Ganzzahl- und Fließkomma-Arithmetik- und andere Verarbeitungsoperationen im Zusammenhang mit Daten durch, denen der Steuerschaltkreis 23 ermöglicht, vom Registersatz 20 zu diesen übertragen zu werden, um verarbeitete Daten zu erzeugen, die zur Speicherung zum Registersatz 20 übertragen werden. Der Steuerschaltkreis 23 kann der Busleitungsschnittstelle 22, die ebenfalls mit der Speicherverwaltungseinheit 14 zusammenwirkt, ebenfalls ermöglichen, verarbeitete Daten vom Registersatz 20 zur Speicherung zum Speichersubsystem 12 oder zu Datenspeicherelementen, die von bestimmten Eingabe-/Ausgabesubsystemen 13 verwaltet werden, zu übertragen. Die Architektur SPARC Version 9 ist eine Klasse von Architekturen, die als "Laden-Speichern"-Architekturen bezeichnet werden, bei denen Speicherzugriffsoperationen, bei denen Daten aus beispielsweise dem Speichersubsystem 12 oder Registern (nicht gezeigt) in den Eingabe-/Ausgabesubsystemen 13 abgerufen oder in diesen gespeichert werden, unter Verwendung von jeweils "Laden"- und "Speichern"-Befehlen behandelt werden, die im Allgemeinen im Singular als "Speicherzugriffsbefehl" und im Plural als "Speicherzugriffsbefehle" bezeichnet werden.
  • Die Erfindung stellt eine Anordnung bereit, bei der ein Mikroprozessor, wie beispielsweise der Mikroprozessor 11, der erfordert, dass sich Speicherreferenzen auf synchronisierten Adressgrenzen befinden, und bei dem nicht synchronisierte Speicherreferenzen, das heißt, Speicherreferenzen, die sich nicht auf synchronisierten Adressgrenzen befinden, eine Ausnahme auslösen würden, befähigt wird, einen Mikroprozessor, wie beispielsweise einen Mikroprozessor der Familie Intel x86, der nicht erfordet, dass Speicherreferenzen derartig synchronisiert sind, effizient zu emulieren. Synchronisierte und nicht synchronisierte Speicherreferenzen werden im Allgemeinen im Zusammenhang mit 2 und 3 beschrieben. Unter anfänglicher Bezugnahme auf 2 zeigt diese Figur einen Wortspeicherplatz 50, der beispielsweise ein Platz im Speichersubsystem 12 sein kann, und ein Register 51, das ein Register im Registersatz 20 umfasst. Der Speicherplatz 50 umfasst vier Byte-Speicherplätze 50(0) bis 50(3), von denen jeder mit einer jeweiligen Adresse "0" bis "3" identifiziert ist. Das Register 51 umfasst Vier-Byte-Speicherplätze B0 bis B3. Wenn der Mikroprozessor 11 eine Speicherzugriffsoperation, wie beispielsweise eine "Wort-Laden"-Operation initiiert, um ein Datenelement, das die vier Bytes in Speicherplatz 50 umfasst, abzurufen, wird der Inhalt der Byte-Speicherplätze 50(0) bis 50(3) des Speicherplatzes 50 zu den entsprechenden Byte-Speicherplätzen B0 bis B3 des Registers 51 übertragen. Für eine solche Speicherzugriffsoperation würde der Mikroprozessor 11 den Wert "0" als Adresse verwenden, welche die "Basis" des Speicherplatzes 50 ist.
  • Wenn der Mikroprozessor 11 andererseits eine Speicherzugriffsoperation, wie beispielsweise eine "Halbwort-Laden"-Operation (wobei ein "Halbwort" ein zwei-Byte-Datenelement ist) initiiert, wird der Inhalt der Byte-Speicherplätze 50(i) bis 50(i+1) in die entsprechenden Byte-Speicherplätze B0 und B1 des Registers 51 übertragen, wobei der Index "i" der Adresse entspricht, die der Mikroprozessor 11 für die Operation verwenden würde. Wenn der Wert "i", das heißt, die Adresse, die für die Speicherzugriffsoperation verwendet wird, "0" oder "2" ist, ist die Referenz "synchronisiert". Wenn der Wert "i" andererseits "1" oder "3" ist, ist die Referenz nicht synchronisiert. Ähnliche Operationen treten im Zusammenhang mit einer "Halbwort-Speichern"-Operation auf, wobei der Inhalt der Byte-Speicherplätze B0 und B1 des Registers 51 in die Byte-Speicherplätze 50(i) und 50(i+1) des Speicherplatzes 50 übertragen wird. Bei der Speicherzugriffsoperation, die durch den Pfeil 52 dargestellt wird, wie in 2 gezeigt, die eine Speicherzugriffsoperation mit einer nicht synchronisierten Speicherreferenz, bei der die Adresse "1" ist, darstellt, würde das Datenelement während einer Ladeoperation somit in die Byte-Plätze B0 und B1 des Registers 51 oder während einer Speicheroperation von den Byte-Plätzen B0 und B1 des Registers 51 übertragen.
  • Wenn der Mikroprozessor eine Speicherzugriffsoperation, wie beispielsweise eine „Byte-Laden"-Operation initiiert, wird der Inhalt des Speicherplatzes 50(i) des Weiteren in den Byte-Speicherplatz B0 des Registers 51 übertragen, wobei „i" der Adresse entspricht, die der Mikroprozessor 11 für die Operation verwenden würde. Daher sind Speicherzugriffsoperationen als solches synchronisiert, ungeachtet des Wertes „i", der als Adresse verwendet wird. Ähnliche Operationen treten im Zusammenhang mit einer „Byte-Speichern"-Operation auf, wobei der Inhalt von Byte-Speicherplatz B0 des Registers 51 in den Byte-Speicherplatz 50(i) des Speicherplatzes 50 übertragen wird.
  • Nicht synchronisierte Speicherreferenzen können ebenfalls im Zusammenhang mit einer „Wort-Laden"- oder „Wort-Speichern"-Speicherzugriffsoperation auftreten, wie im Zusammenhang mit 3 beschrieben wird. 3 zeigt zwei aufeinanderfolgende Wortspeicherplätze 60 und 61 beispielsweise im Speichersubsystem 12 und ein Register 62 im Registersatz 20. Der Wortspeicherplatz 60 umfasst Vier-Byte-Speicherplätze 60(1) bis 60(3), die jeweils durch eine Adresse „0" bis „3" gekennzeichnet sind. Ebenso umfasst der Wortspeicherplatz 61 Vier-Byte-Speicherplätze 61(4) bis 61(7), die jeweils durch eine Adresse „4" bis „7" gekennzeichnet sind. Das Register 62 umfasst vier Byte-Speicherplätze B0 bis B3. Wenn der Mikroprozessor 11 eine Speicherzugriffsoperation, wie beispielsweise eine „Wort-Laden"-Operation, initiiert, wird der Inhalt von vier aufeinanderfolgenden Byte-Speicherplätzen, die mit dem Byte-Speicherplatz mit der Adresse „i" beginnen, welche der Adresse entspricht, die der Mikroprozessor 11 für die Operation verwenden würde, in die Byte-Speicherplätze B0 bis B3 des Registers 62 übertragen. Wenn der Wert "i", das heißt, die Adresse, die für die Speicherzugriffsoperation verwendet wird, "0" oder "4" ist, ist die Referenz "synchronisiert". Wenn der Wert "i" andererseits einen anderen Wert aufweist, ist die Referenz nicht synchronisiert. Ähnliche Operationen treten im Zusammenhang mit einer "Wort-Speichern"-Operation auf, wobei der Inhalt der Byte-Speicherplätze B0 bis B3 des Registers 62 in vier aufeinanderfolgende Byte-Speicherplätze des Speicherplatzes 60 übertragen wird, welcher mit dem Byte-Speicherplatz beginnt, der mit der Adresse "i" identifiziert ist. Bei der Speicherzugriffsoperation, die durch den Pfeil 63 dargestellt wird, wie in 3 gezeigt, die eine Speicherzugriffsoperation mit einer nicht synchronisierten Speicherreferenz, bei der die Adresse "3" ist, darstellt, wird das Datenelement während einer Ladeoperation somit von den Byte-Speicherplätzen 60(3) und 61(1) bis 61(2) in die Byte-Plätze B0 bis B3 des Registers 51 oder während einer Speicheroperation von den Byte-Plätzen B0 bis B3 des Registers 51 übertragen.
  • Unter nochmaliger Bezugnahme auf 1 wird der Mikroprozessor 11, der erfordert, dass Speicherreferenzen synchronisiert sind, hierin als „Zentral"-Mikroprozessor 11 bezeichnet, und der Mikroprozessor, der nicht synchronisierte Speicherreferenzen ermöglicht, wird hierin als „emulierter" Mikroprozessor bezeichnet. Wenn der Mikroprozessor 11 während der Verarbeitung eines Programms einen Speicherzugriffsbefehl antrifft, der eine nicht synchronisierte Speicherreferenz enthält, würde der Mikroprozessor 11 normalerweise einen Ausnahmebehandler aufrufen, um die Ausnahme zu behandeln, und typischerweise benötigt die Operation des Aufrufens, der Verarbeitung und der Rückkehr von einem Ausnahmebehandler ein beträchtliches Ausmaß an Verarbeitungszeit. Demgemäß kann die Erfordernis, dass der Mikroprozessor 11 einen Ausnahmebehandler zur Behandlung von Befehlen aufrufen muss, die nicht synchronisierte Speicherreferenzen enthalten, eine ineffiziente Emulation des emulierten Mikroprozessors zur Folge haben. Die Erfindung stellt eine Anordnung bereit, die die Anzahl von Malen reduzieren kann, die der Mikroprozessor 11 benötigen würde, um einen Ausnahmebehandler für solche Befehle aufzurufen, insbesondere wenn solch ein Befehl mehr als eine ausgewählte Anzahl von Malen angetroffen wird, was auftreten kann, wenn sich der Befehl in einer Schleife befindet. Wenn der Mikroprozessor 11 als Zentralmikroprozessor, der einen emulierten Mikroprozessor emuliert, gemäß der Erfindung auf einen Befehl eines Programms, das emuliert wird, trifft, der eine nicht synchronisierte Speicherreferenz aufweist, wird ein Code-Generator aktiviert, um zusätzlichen Code für das Programm, das emuliert wird, zu erzeugen, der anstelle des Befehls ausgeführt wird. Der zusätzliche Code ermöglicht dem Mikroprozessor 11, die Operationen auszuführen, die von dem Ausnahmebehandler bei der Behandlung des Befehls ausgeführt würden. Da der zusätzliche Code als Teil der Programmemulation verarbeitet wird, braucht kein Ausnahmebehandler aufgerufen zu werden, wodurch die Effizienz der Emulation verbessert werden kann.
  • Insbesondere stellt die Erfindung eine Anordnung bereit, die dem Zentralmikroprozessor 11 ermöglicht, Operationen zu emulieren, die von einem emulierten Mikroprozessor (nicht gezeigt) bei der Verarbeitung eines „originalen" Programms 33 durchgeführt werden, das für den emulierten Mikroprozessor geschrieben wurde, während ein „übersetztes" Programm 31, das von einem Übersetzungsprogramm 32 erzeugt wird, in einer Ausführungsumgebung 30 verarbeitet wird, und insbesondere stellt die Erfindung eine Anordnung bereit, die dem Mikroprozessor 11 ermöglicht, die Art und Weise effizient zu emulieren, in der der emulierte Mikroprozessor Speicherzugriffsbefehle behandelt, die nicht synchronisierte Speicherreferenzen verwenden. Gemäß der Erfindung ruft der Zentralmikroprozessor 11 zuerst einen Ausnahnebehandler 36 auf, um die Ausnahme zu behandeln und den Speicherzugriffsbefehl effektiv zu emulieren, wenn er erstmals auf einen Speicherzugriffsbefehl in dem übersetzten Programm 31 trifft, der eine nicht synchronisierte Speicherreferenz enthält.
  • Wenn zudem der Ausnahmebehandler 36 zur Behandlung der Ausnahme erstmalig aufgerufen wird, richtet der Ausnahmebehandler 36 einen Zähler 37 ein, der zu dem Speicherzugriffsbefehl gehört, und initialisiert diesen. Bei jedem nachfolgenden Mal erhöht der Ausnahmebehandler 36, wenn er (das heißt, der Ausnahmebehandler) für denselben Befehl, beispielsweise in einer Schleife, aufgerufen wird, den Zähler 37 und vergleicht den Zählwert, der von dem Zähler 37 bereitgestellt wird, mit einem vorherbestimmten Grenzwert. Wenn der Zählwert, der von dem Zähler 37 bereitgestellt wird, eine vorherbestimmte Übereinstimmung mit dem Grenzwert aufweist (beispielsweise, wenn der Zählwert gleich oder größer als der Grenzwert ist), befähigt der Ausnahmebehandler 36 einen Code-Generator 35, der ebenfalls als Teil der Ausführungsumgebung 30 bereitgestellt ist, zusätzlichen Code zu erzeugen, der als Teil des übersetzten Programms verarbeitet wird, um den Speicherzugriffsbefehl effizient zu emulieren und die nicht synchronisierte Speicherreferenz zu behandeln. Anstatt den Speicherzugriffsbefehl zu verarbeiten, wird danach der zusätzliche Code ausgeführt, wodurch der Speicherzugriffsbefehl ohne die Notwendigkeit des Aufrufens des Ausnahmebehandlers 36 emuliert wird. Eine Emulation des Speicherzugriffsbefehls auf diese Weise kann die Verarbeitungseffizienz verbessern, da nicht der Zusatz des Aufrufens und der Rückkehr vom Ausnahmebehandler erforderlich ist. Es wird darauf hingewiesen, dass kein Zähler 37 bereitgestellt werden muss, wenn der zusätzliche Code erzeugt werden muss, wenn der Ausnahmebehandler 36 erstmalig aufgerufen wird.
  • Ein spezifisches Beispiel hilft beim Verständnis der Operation der Erfindung. In diesem Beispiel wird angenommen, dass das übersetzte Programm 31 Programmcode im folgenden Codesegment A enthält: Codesegment A
    Figure 00150001
    Figure 00160001
    wobei die Register r1 und r2 Register im Registersatz 20 des Mikroprozessors sind. Der Programmcode, der in Codesegment A mit "misc code" gekennzeichnet ist, entspricht Programmcode, der sich im Fall von Zeile (1) vor dem Code in Zeile (2) in dem übersetzten Programm 31 befindet und sich im Fall von Zeile (3) hinter dem Code in Zeile (2) befindet.
  • Der Befehl in Zeile (2) von Codesegment A initiiert eine Speicherzugriffsoperation, um ein Halbwortdatenelement aus dem Speicherplatz abzurufen, dessen Adresse in Register r1 angegeben ist, und es in das Register r2 zu laden. Wenn die Adresse in Register r1 geradzahlig ist, befindet sich das Datenelement in einem synchronisierten Zustand, wobei die Speicherzugriffsoperation in diesem Fall fortfahren kann, ohne dass eine Ausnahme eintritt. Wenn die Adresse in Register r1 jedoch ungeradzahlig ist, ist das Datenelement nicht synchronisiert. Der Ausnahmebehandler 36 wird aufgerufen, um den Befehl zu emulieren, wodurch der Mikroprozessor 11 effektiv befähigt wird, die Reihe von Befehlen in Codesegment B auszuführen.
  • Codesegment B
    Figure 00160002
  • Bei der Durchführung der Operationen, die durch die Zeilen (1) und (2) dargestellt sind, ruft der Mikroprozessor 11 unter der Steuerung des Ausnahmebehandlers 36 Datenbytes ab, die einen entsprechenden Abschnitt des Datenelements von dem Byte-Speicherplatz umfassen, der durch den Adresswert identifiziert ist, der in Register r1 (Zeile (1)) enthalten ist, und die einen entsprechenden Abschnitt des Datenelements von dem nächsten Speicherplatz umfassen, das heißt, von dem Byte-Speicherplatz, der durch der Adresswert identifiziert ist, der in Register r1 enthalten und um 1 inkrementiert ist (Zeile (2)), und der Mikroprozessor 11 lädt die abgerufenen Bytes in die Register r2 und r3. Jedes Register in dem Registersatz 20 umfasst eine vorherbestimmte Anzahl von Byte-Datenspeicherplätzen <BN...B0>, und die Befehle in den Zeilen (1) und (2) ermöglichen dem entsprechenden abgerufenen Byte, in dem Byte-Speicherplatz B0 niedriger Ordnung gespeichert zu werden. Darüber hinaus enthalten die anderen Byte-Datenspeicherplätze <BN...B1>> in jedem Register r2 und r3 Bits, die jeweils den Binärwert "Null" aufweisen.
  • Bei der Durchführung der Operation, die durch Zeile (3) in Codesegment B dargestellt ist, verschiebt der Mikroprozessor 11 weiterhin unter der Steuerung des Ausnahmebehandlers 36 das abgerufene Byte von dem Byte-Speicherplatz B0 niedriger Ordnung zum nächsten Byte-Speicherplatz B1 in dem Register r2 und lädt Bits, die den jeweiligen Wert "Null" aufweisen, in den Byte-Speicherplatz B0 niedriger Ordnung. Bei der Duchführung der Operation, die in Zeile (4) dargestellt ist, führt der Mikroprozessor 11 eine "Inklusiv"-ODER-Operation des Inhalts der Register r2 und r3 durch und speichert das Ergebnis im Register r2. Diese Operation hat effektiv zur Folge, dass der Byte-Speicherplatz B0 niedriger Ordnung von Register r2 den Inhalt des Byte-Speicherplatzes B0 niedriger Ordnung von Register r3 erhält, da die anderen Byte-Speicherplätze <BN...B1> alle den logischen Wert "Null" enthalten, wodurch die entsprechenden Byte-Speicherplätze <BN...B1> des Registers r2 durch die "Inklusiv"-ODER-Operation unverändert bleiben. Demgemäß hat der Mikroprozessor 11 nach der Durchführung der Operationen, die im Zusammenhang mit dem Codesegment B beschrieben wurden, das nicht synchronisierte Halbwortdatenelement (Zwei-Byte-Datenelement) in dem Speicherplatz im Speichersubsystem 12, das durch die Adresse in Register r1 identifiziert ist, konstruiert, indem die beiden Abrufoperationen (Zeile (1) und (2)) durchgeführt wurden, um entsprechende Abschnitte des Halbworts zu erhalten, und entsprechende Operationen (Zeile (3) und (4)) durchgeführt wurden, um das Halbwort aus den entsprechenden Abschnitten effektiv herzustellen.
  • Es wird darauf hingewiesen, dass entsprechende Operationen, wie oben im Zusammenhang mit Codesegment B beschrieben, im Zusammenhang mit einer Speicheroperation durchgeführt werden können, um ein nicht synchronisiertes Halbwort in einem Speicherplatz im Speichersubsystem 12 zu speichern. Das heißt, dass der Mikroprozessor 11 ein Zwei-Byte-Datenelement in ein Register, wie beispielsweise das, das in den Byte-Speicherplätzen B1 und B0 des Registers r2 enthalten ist, in ein Register, wie beispielsweise das Register r3, kopieren kann, das nach rechts verschoben ist, so dass der Inhalt des Byte-Speicherplatzes B0 niedriger Ordnung des Registers r3 dem Inhalt von Byte-Speicherplatz B1 von Register r2 entspricht. Danach kann der Mikroprozessor unter Verwendung der Adresse in Register r1 eine "Byte"-Speichern Speicheroperation durchführen, um den Inhalt von Byte-Platz B0 von Register r2 in dem Speicherplatz im Speichersubsystem 12, der durch das Register r1 identifiziert ist, zu speichern, und der Mikroprozessor kann unter Verwendung der inkrementierten Adresse in Register r1 eine zweite "Byte"-Speichern Speicheroperation durchführen, um den Inhalt von Byte-Platz B0 von Register r3 in dem Speicherplatz im Speichersubsystem 12, der durch die inkrementierte Adresse identifiziert ist, zu speichern.
  • Weiterhin wird darauf hingewiesen, dass der Ausnahmebehandler 36 den Mikroprozessor 11 befähigen kann, ähnliche Operationen im Zusammenhang mit einer Lade- oder Speicheroperation im Zusammenhang mit einem Datenwort, das ein Vier-Byte-Wort umfasst, durchzuführen. Der Ausnahmebehandler 36 könnte den Mikroprozessor 11 befähigen, vier Speicherzugriffsoperationen durchzuführen, von denen jede entsprechende Bytes des Worts abruft oder speichert. Für eine Ladeoperation würde der Ausnahmebehandler 36 den Mikroprozessor 11 befähigen, die entsprechenden aufgerufenen Bytes in entsprechende Register zu kopieren, Verschiebungsoperationen durchzuführen, so dass sich die Bytes in den entsprechenden Byte-Speicherplätzen B3 bis B0 der entsprechenden Register befinden, und eine ODER-Operation durchzuführen, um den Inhalt der Register mit Hilfe der ODER-Operation in ein einzelnes Register zu übertragen, wobei das einzelne Register das aufgerufene Wort enthält.
  • Unter Bezugnahme auf 3 kann eine Speicherzugriffsoperation jedoch im Zusammenhang mit einer nicht synchronisierten Wortspeicherreferenz effizienter erzeugt werden, wenn zwei synchronisierte Halbwortzugriffe verwendet werden, beispielsweise falls die Speicherreferenz als Adresse „2" oder „6" verwendet, oder wenn ein einzelner Halbwortzugriff und Zwei-Byte-Zugriffe verwendet werden, beispielsweise falls die Speicherreferenz als Adresse „1", „3", „5" oder „7" verwendet. Wenn somit die Speicherzugriffsoperation eine Ladeoperation ist, für die die Speicherreferenz „2" als Adresse verwendet, kann der Mikroprozessor 11 unter der Steuerung des Ausnahmebehandlers 36 zwei Halbwortladeoperationen aktivieren, die unter Verwendung der Adressen „2" und „4" durchgeführt werden, von denen jede eine synchronisierte Referenz ist, wobei die abgerufenen Halbwörter in entsprechenden Registern des Registersatzes 20 gespeichert werden. Danach kann der Ausnahmebehandler 36 ermöglichen, dass der Inhalt des Registers, das das Halbwort enthält, das unter Verwendung der Adresse „4" abgerufen wurde, in die Byte-Speicherplätze B2 und B3 verschoben wird und die Inhalte der beiden Register mit Hilfe einer ODER-Operation zusammen angeordnet werden. Wenn die Speicherzugriffsoperation eine Speicheroperation ist, für die die Speicherreferenz „2" als Adresse verwendet, kann der Ausnahmebehandler 36 entsprechend ermöglichen, dass der Mikroprozessor den Inhalt des Registers, das das Wort enthält, das in einem zweiten Register gespeichert werden soll, kopiert, dass der Mikroprozessor den Inhalt des zweiten Registers verschiebt, so dass die Bytes, die ursprünglich in den Byte-Speicherplätzen B3 und B2 enthalten waren, sich jeweils in den Byte-Speicherplätzen B1 und B0 befinden, und dass der Mikroprozessor Halbwort-Speicheroperationen im Zusammenhang mit dem Inhalt der beiden Register durchführt, um die jeweiligen Halbwörter in einem Speicherplatz zu speichern, der jeweils durch die Adressen „2" und „4" identifiziert ist.
  • Wenn die Speicherzugriffsoperation eine Ladeoperation ist, für die die Speicherreferenz „1" als Adresse verwendet, kann der Ausnahmebehandler dem Mikroprozessor 11 andererseits ermöglichen, Folgendes auszuführen:
    • (i) eine Byte-Laden-Operation unter Verwendung von „1" als Adresse, um das Byte in dem Speicherplatz abzurufen und es in einem ersten Register zu speichern,
    • (ii) eine Halbwort-Laden-Operation unter Verwendung der inkrementierten Adresse „2" (das heißt, Adresse „1" um „1" inkrementiert, da die erste Operation (i) für ein Byte galt, das in einem einzelnen adressierten Speicherplatz gespeichert war), um das Halbwort, das in diesem Speicherplatz beginnt, abzurufen und es in einem zweiten Register zu speichern, und
    • (iii) eine Byte-Laden-Operation unter Verwendung der weiter inkrementierten Adresse „4" (das heißt, Adresse „2" um „2" inkrementiert, da die zweite Operation (ii) für ein Halbwort galt, das in zwei aufeinanderfolgenden Speicherplätzen gespeichert ist) und sie in einem dritten Register speichern.
  • Danach kann der Ausnahmebehandler 36 dem Mikroprozessor ermöglichen, die Bytes in den entsprechenden Registern in die geeigneten Speicherplätze zu verschieben und den Inhalt der Register mit Hilfe einer ODER-Operation zusammen anzuordnen, um das Wort zu erzeugen. Der Ausnahmebehandler 36 kann dem Mikroprozessor 11 ermöglichen, ähnliche Operationen durchzuführen, wenn die nicht synchronisierte Speicherreferenz die Adresse „3", „5" oder „7" verwendet. Zusätzlich sind Fachleuten Operationen ersichtlich, die von dem Ausnahmebehandler 36 im Zusammenhang mit einer Speicheroperation ermöglicht werden. Des Weiteren sind Fachleuten ebenfalls Operationen ersichtlich, die von dem Ausnahmebehandler im Zusammenhang mit Laden- und Speicheroperationen im Zusammenhang mit größeren Datenelementen und/oder anderen Adressen ermöglicht werden.
  • Gemäß der Erfindung ermöglicht der Ausnahmebehandler 36 zusätzlich zur Steuerung des Mikroprozessors 11 zur Durchführung der oben beschriebenen Operationen im Zusammenhang mit Codesegment B dem Code-Generator 35 im Allgemeinen ebenfalls, Code bereitzustellen, der unten im Zusammenhang mit Codesegment C beschrieben ist (für einen Halbwortladevorgang mit einer fehlsynchronisierten Speicherreferenz):
  • Codesegment C
    Figure 00210001
  • Der Code, der in Zeile (1) und (3) von Codesegment C mit „misc code" gekennzeichnet ist, entspricht dem originalen übersetzten Programm 31 für die entsprechend nummerierten Zeilen in Codesegment A des übersetzten Programms 31. Der Code, der durch Zeile (4) bis (7) gekennzeichnet ist, entspricht Codesegment B. Der Code in Zeile (2), den der Code-Generator 35 gegen den Code in Zeile (2) von Codesegment A des übersetzten Programms austauscht, ermöglicht dem Mikroprozessor 11, zum Befehl mit dem Etikett „Korrektur" abzuzweigen, der dem ersten Befehl in Codesegment B entspricht, wodurch der Mikroprozessor 11 effektiv befähigt wird, die Befehle in Codesegment B zu verarbeiten. Der Code in Zeile (7) von Codesegment C ermöglicht die letzte Operation, die oben in Zusammenhang mit Codesegment B beschrieben ist, und der Befehl in Zeile (8) von Codesegment C befähigt den Mikroprozessor 11, zum Befehl des übersetzten Programmcodes abzuzweigen, der mit „wiederaufnehmen" gekennzeichnet ist und dem ersten Befehl in <misc code> in Zeile (3) des originalen übersetzten Programmcodes 31 entspricht. Somit ersetzt der Code-Generator 35 den Code in Zeile (2) und (4) bis (8) von Codesegment C durch den Code in Zeile (2) von Codesegment A in dem übersetzten Programm 31.
  • Wenn der Mikroprozessor 11 Codesegment C verarbeitet, was er vornehmen kann, wenn das Codesegment A Teil einer Schleife ist, würde er (das heißt, der Mikroprozessor 11) folglich Codesegment C ausführen, das vom Code-Generator 35 erzeugt wird, was die Emulation des ersetzten Befehls erleichtern würde, ohne dass es nötig ist, den Ausnahmebehandler 36 aufzurufen, anstatt auf einen Befehl, wie beispielsweise den Befehl in Zeile (2) von Codesegment A, zu stoßen, der dazu führen würde, dass der Ausnahmebehandler 36 aufgerufen würde. Da der Mikroprozessor 11 diese Operationen ohne die Notwendigkeit des Aufrufes des Ausnahmebehandlers 36 durchführt, wird die Verarbeitungseffizienz des übersetzten Programms verbessert, da der Mikroprozessor 11 den Verarbeitungszusatz vermeiden kann, der sonst durch den Aufruf des Ausnahmebehandlers 36 erforderlich wäre.
  • Der Code-Generator 35 kann ebenfalls entsprechenden Programmcode für Speicheroperationen und für Wort- und Datenelemente anderer Größe erzeugen, wobei der spezifische Code dafür Fachleuten leicht ersichtlich ist.
  • Auf diesem Hintergrund werden die detaillierten Operationen, die durch den Ausnahmebehandler 36 und den Code-Generator 35 im Zusammenhang mit der Erfindung ausgeführt werden, im Ablaufplan, der in 4 gezeigt ist, beschrieben. Wenn der Mikroprozessor 11 unter Bezugnahme auf 4 auf einen Speicherzugriffsbefehl mit einer fehlsynchronisierten Speicherreferenz (Schritt 100) trifft, während er das übersetzte Programm 31 in der Ausführungsumgebung 30 verarbeitet, ruft er (das heißt, der Mikroprozessor 11) den Ausnahmebehandler 36 auf, um die Verarbeitung des Speicherzugriffsbefehls (Schritt 101) zu steuern. Als Teil des Aufrufs wird der Ausnahmebehandler 36 mit Parametern versorgt, die Folgendes umfassen: die Speicheradresse des Speicherzugriffsbefehls in dem übersetzten Programm 31 mit der nicht synchronisierten Speicherreferenz (die dem aktuellen Wert des Programmzählers (nicht gezeigt) des Mikroprozessors entspricht), die Speicheradresse des nächsten Befehls in dem übersetzten Programm, die auf den Speicherzugriffsbefehl folgt (und die normalerweise dem aktuellen Wert des Programmzählers 24 des Mikroprozessors entspricht, der um einen vorherbestimmten Wert inkrementiert ist), und die Speicheradresse des Datenelements, das die fehlsynchronisierte Speicherreferenz verursacht hat.
  • Nachdem der Ausnahmebehandler 36 in Schritt 101 aufgerufen wurde, bestimmt er anfänglich (genauer ausgedrückt, befähigt er den Mikroprozessor 11 zu bestimmen), ob der Speicherzugriffsbefehl von einem Typ ist, für den die Erzeugung einer „Korrekturroutine", wie beispielsweise der, die oben in Zusammenhang mit Codesegment C (Schritt 102) beschrieben ist, ermöglicht werden muss. Bei einer Ausführungsform kann der Ausnahmebehandler 36 im Zusammenhang mit jedem Speicherzugriffsbefehl verwendet werden, der eine nicht synchronisierte Speicherreferenz aufweist, und nicht nur für Befehle, die im Zusammenhang mit dem übersetzten Programm 31 bereitgestellt werden, und der Ausnahmebehandler 36 ermöglicht die Erzeugung einer Korrekturroutine für Befehle, die im Zusammenhang mit dem übersetzten Programm 31 bereitgestellt werden. Wenn der Ausnahmebehandler 36 in Schritt 102 bestimmt, dass der Speicherzugriffsbefehl nicht von einem Typ ist, für den die Erzeugung einer „Korrekturroutine" ermöglicht werden muss, geht er zu Schritt 103 über, bei dem er den Mikroprozessor 11 befähigt, eine vorherbestimmte Ausnahmeverarbeitungsoperation durchzuführen. Die vorherbestimmte Ausnahmeverarbeitungsoperation hängt von dem jeweiligen Verfahren ab, das für die Behandlung von Speicherzugriffsbefehlen mit nicht synchronisierten Speicherreferenzen ausgewählt wurde und das beispielsweise Folgendes umfassen kann: Durchführen der Operationen, die oben im Zusammenhang mit Codesegment B beschrieben sind, Beenden des Programms, das den Befehl enthielt usw.
  • Wenn der Ausnahmebehandler 36 unter nochmaliger Bezugnahme auf Schritt 102 bei diesem Schritt bestimmt, dass der Speicherzugriffsbefehl von einem Typ ist, für den die Erzeugung einer Korrekturroutine ermöglicht werden muss, bestimmt er anfänglich, ob für den jeweiligen Speicherzugriffsbefehl ein Ausnahmezähler 37 existiert (Schritt 110), und falls dies nicht der Fall ist, richtet er einen Ausnahmezähler 37 dafür ein und initialisiert diesen (Schritt 111). Wenn der Ausnahmebehandler 36 andererseits bestimmt, dass ein Ausnahmezähler 37 für den jeweiligen Speicherzugriffsbefehl existiert, inkrementiert er den Ausnahmezähler (Schritt 112). Nach den Schritten 111 oder 112 bestimmt der Ausnahmebehandler 36, ob der Wert, der von dem Ausnahmezähler 37 bereitgestellt wurde, größer als ein vorherbestimmter Grenzwert ist (Schritt 113). Wenn der Ausnahmebehandler 36 in Schritt 113 eine negative Bestimmung macht, steuert er den Mikroprozessor 11 so, dass dieser die Operationen durchführt, die oben im Zusammenhang mit Codesegment B beschrieben wurden, um dem Datenelement zu ermöglichen, abgerufen und während einer Ladeoperation konstruiert zu werden oder während einer Speicheroperation disassembliert und gespeichert zu werden, wodurch der Befehl emuliert wird (Schritt 114), und der Ausnahmebehandler 36 steuert den Mikroprozessor 11 so, dass er die Steuerung an das übersetzte Programm zurückgibt, und zwar bei dem Befehl, der auf den Befehl folgt, der die Ausnahme verursacht hat, und unter Verwendung der Speicheradresse des nächsten Befehls in dem übersetzten Programm, der auf den Speicherzugriffsbefehl (Schritt 115) folgt.
  • Wenn der Ausnahmebehandler 36 andererseits bei Schritt 113 eine positive Bestimmung macht, befähigt er den Code-Generator 35, den „Korrekturcode", wie beispielsweise den, der oben im Zusammenhang mit Codesegment C beschrieben wurde, zu erzeugen und den erzeugten Code in das übersetzte Programm einzufügen (Schritt 116). Bei dieser Operation empfängt der Code-Generator 35 die Speicheradressen der Befehle, die die Ausnahme verursacht haben, und des nächsten Befehls sowie die Speicheradresse der nicht synchronisierten Speicherreferenz. Der Code-Generator 35 kann die Speicheradresse des Befehls verwenden, der die Ausnahme verursacht hat, um den Typ des Befehls zu bestimmen, das heißt, ob es sich um einen Ladebefehl oder einen Speicherbefehl handelte und ob er für ein Halbwort, ein Wort usw. galt. Zusätzlich kann der Code-Generator die Speicheradresse der nicht synchronisierten Speicherreferenz verwenden, um die Art und Weise zu bestimmen, in der die Referenz nicht synchronisiert war. Aus diesen Informationen kann der Code-Generator 35 leicht die jeweiligen auszuführenden Operationen sowie den zu erzeugenden Code zur Durchführung dieser Operationen bestimmen. Bei einer Ausfühungsform ist der Code-Generator 35 im Wesentlichen mit einem Satz Vorlagen oder Makros versehen, die den Programmcode darstellen, der für jeden Typ von Operation und Datenelement erforderlich ist, und die die An und Weise darstellen, in der die Referenzadresse fehlsynchronisiert war, wobei der Code assembliert und zum übersetzten Programm 31 als Korrekturcode hinzugefügt werden kann und den erforderlichen Verzweigungsbefehl zum Korrekturcode und den Rückkehrverzweigungsbefehl vom Korrekturcode bereitstellt.
  • Nachdem der Code-Generator 35 die Operationen durchgeführt hat, die oben im Zusammenhang mit Schritt 116 beschrieben wurden, gibt er die Steuerung an den Ausnahmebehandler 36 zurück (Schritt 120), wonach der Ausnahmebehandler 36 die Steuerung dem übersetzten Programm 31 zurückgeben kann (Schritt 121). Bei der Rückkehroperation verwendet der Ausnahmebehandler 36 die Speicheradresse des Speicherzugriffsbefehls, der verursacht hat, dass der Ausnahmebehandler 36 aufgerufen wurde, und die dem Ausnahmebehandler 36 bereitgestellt wurde, als er aufgerufen wurde. Demgemäß gibt der Ausnahmebehandler 36 die Steuerung an dem Punkt in dem übersetzten Programm 31 zurück, an dem der exzeptionelle Zustand erfasst wurde, zur Veranschaulichung an dem Verzweigungsbefehl in Zeile (3) von Codesegment C. Wenn der Abschnitt des übersetzten Programms 31, der zuvor in dem Speicherzugriffsbefehl enthalten war, der die nicht synchronisierte Speicherreferenzausnahme verursacht hat, noch einmal verarbeitet wird, was auftreten kann, wenn sich der Speicherzugriffsbefehl in einer Schleife befindet, wird, nachdem dem übersetzten Programm 31 die Steuerung zurückgegeben wurde, der Korrekturcode in Zeile (4) bis (8) anstelle des Speicherzugriffsbefehls verarbeitet, wodurch die Notwendigkeit des Aufrufs des Ausnahmebehandlers 36 vermieden werden kann.
  • Die Erfindung bietet eine Anzahl von Vorteilen. Insbesondere ermöglicht sie die Erzeugung von Code zur Behandlung verschiedener Zustandstypen, die andernfallls den Aufruf eines Ausnahmebehandlers erfordern würden, wodurch der Zusatz vermieden wird, der durch einen Aufruf des Ausnahmebehandlers 36 angetroffen würde. Demgemäß ermöglicht die Erfindung die Erzeugung eines übersetzten Programms 31, ausgehend von einem ursprünglichen Programm 33 unter Verwendung von Code, wie beispielsweise Codesegment A, der im Allgemeinen effizient ausgeführt werden kann, es sei denn, ein exzeptioneller Zustand, wie beispielsweise eine nicht synchronisierte Speicherreferenz, wird angetroffen, der den Aufruf eines Ausnahmebehandlers erforderlich macht. Nur dann, wenn ein exzeptioneller Zustand tatsächlich bei der Verarbeitung des übersetzten Code 31 angetroffen wird, wird Code, wie beispielsweise Codesegment C, gegen den Befehl ausgetauscht, der den exzeptionellen Zustand verursacht hat; der Ersatzcode ist weniger effizient, jedoch vermeidet er die Notwendigkeit, danach den Ausnahmebehandler für den Befehl aufzurufen, der den exzeptionellen Zustand verursacht hat.
  • Es wird darauf hingewiesen, dass eine Anzahl von Modifikationen an der Erfindung, wie sie oben beschrieben ist, vorgenommen werden können. Wenn der Korrekturcode beispielsweise immer erzeugt werden muss, wenn eine Ausnahme erzeugt wird, können der Ausnahmebehandler 36 und der Code-Generator 35 im Wesentlichen zu einer einzelnen Komponente kombiniert werden, die aufgerufen wird, um den Korrekturcode zu erzeugen, wenn die Ausnahme erzeugt wird. In diesem Fall und unter Bezugnahme auf 4 können Operationen direkt von Schritt 101 zu 110 fortfahren, da die Schritte 102 und 103 nicht ausgeführt werden müssen.
  • Wenn der Ausnahmebehandler 36 des Weiteren die Erzeugung von Korrekturcode ermöglichen muss, wenn die Ausnahme erstmalig erzeugt wird, wird darauf hingewiesen, dass der Ausnahmezähler 37 nicht bereitgestellt zu werden braucht.
  • Zusätzlich kann die Erfindung im Zusammenhang mit einer Anzahl von Typen von Ausnahme- oder ungewöhnlichen Zuständen verwendet werden, die im Zusammenhang mit der Verarbeitung von Programmen auftreten können. Des Weiteren kann die Erfindung zusätzlich zu Programmen, die mit Emulation im Zusammenhang stehen, im Zusammenhang mit einer Vielzahl von Programmen und Programmierumgebungen verwendet werden.
  • Es wird darauf hingewiesen, dass ein System gemäß der Erfindung komplett oder teilweise aus Spezial-Hardware oder einem Mehrzweck-Computersystem oder jeder beliebigen Kombination daraus konstruiert werden kann, wobei jeder Abschnitt davon durch ein geeignetes Programm gesteuert werden kann. Jedes Programm kann in herkömmlicher Weise komplett oder teilweise Teil des Systems sein oder es kann in dem System in herkömmlicher Weise gespeichert werden oder es kann dem System komplett oder teilweise über ein Netz oder andere Mechanismen zur Übertragung von Informationen in herkömmlicher Weise bereitgestellt werden. Es wird darauf hingewiesen, dass das System zusätzlich mit Hilfe von Informationen betrieben und/oder in anderer Weise gesteuert werden kann, die durch einen Bediener unter Verwendung von Bedienereingabeelementen (nicht gezeigt) bereitgestellt werden, die mit dem System direkt verbunden sein können oder die die Informationen über ein Netz oder andere Mechanismen zur Übertragung von Informationen in herkömmlicher Weise zu dem System übertragen.
  • Die vorangehende Beschreibung war auf eine bestimmte Ausführungsform dieser Erfindung beschränkt. Es ist jedoch ersichtlich, dass verschiedene Veränderungen und Modifikationen an der Erfindung vorgenommen werden können, wobei einige oder alle Vorteile der Erfindung erreicht werden können. Es ist Aufgabe der angehängten Ansprüche, diese und andere derartige Veränderungen und Modifikationen abzudecken, die in dem wahren Bereich der Erfindung liegen.

Claims (30)

  1. System zur Vermeidung von exzeptionellen Zuständen zur Vermeidung eines exzeptionellen Zustands eines vorherbestimmten Typs während der Ausführung eines Programms (33), wobei das System zur Vermeidung von exzeptionellen Zuständen eine Ausführungsumgebung (30) zur Ausführung des Programms umfasst, das Programm einen Befehlsstrom umfasst, der eine Reihe von Befehlen umfasst, die Ausführungsumgebung einen Detektor zur Erfassung von exzeptionellen Zuständen umfasst, der mindestens einen exzeptionellen Zustand im Zusammenhang mit der Ausführung eines der Befehle in der Reihe erfasst, gekennzeichnet durch ein Korrekturcode-Erzeugungssubsystem, das auf eine Erfassung durch die Ausführungsumgebung des mindestens einen exzeptionellen Zustands im Zusammenhang mit der Ausführung des einen der Befehle in dem Befehlsstrom reagiert, um einen Korrekturcode zu erzeugen, wobei der Korrekturcode, wenn er verarbeitet wird, mindestens einen exzeptionellen Zustand vermeidet, und um den einen der Befehle in dem Befehlsstrom durch den Korrekturcode zu ersetzen.
  2. System zur Vermeidung von exzeptionellen Zuständen nach Anspruch 1, wobei das Korrekturcode-Erzeugungssubsystem Folgendes umfasst: A. einen Code-Generator (35), der auf eine Code-Erzeugungsanfrage reagiert, um den Korrekturcode zu erzeugen und den einen der Befehle in dem Befehlsstrom durch den Korrekturcode zu ersetzen; und B. einen Behandler für exzeptionelle Zustände (36), der auf die Erfassung mindestens eines exzeptionellen Zustands reagiert, um die Code-Erzeugungsanfrage zu erzeugen.
  3. System zur Vermeidung von exzeptionellen Zuständen nach Anspruch 2, wobei der Behandler für exzeptionelle Zustände die Code-Erzeugungsanfrage erzeugt, nachdem der mindestens eine exzeptionelle Zustand eine vorherbestimmte Anzahl von Malen für den einen der Befehle erfasst wurde.
  4. System zur Vermeidung von exzeptionellen Zuständen nach Anspruch 3, das des Weiteren einen Zähler für exzeptionelle Zustände (37) umfasst, der einen Wert des exzeptionellen Zustands erzeugt, wobei der Behandler für exzeptionelle Zustände dem Zähler für exzeptionelle Zustände ermöglicht, den Wert des exzeptionellen Zustands zu inkrementieren, wenn der mindestens eine exzeptionelle Zustand erfasst wird, und der Behandler für exzeptionelle Zustände die Code-Erzeugungsanfrage erzeugt, wenn der Wert des exzeptionellen Zustands eine ausgewählte Übereinstimmung mit einem Grenzwert aufweist.
  5. System zur Vermeidung von exzeptionellen Zuständen nach Anspruch 4, wobei der Behandler für exzeptionelle Zustände den Zähler für exzeptionelle Zustände einrichtet und initialisiert, wenn der mindestens eine exzeptionelle Zustand im Zusammenhang mit dem mindestens einen Befehl in dem Befehlsstrom erfasst wird.
  6. System zur Vermeidung von exzeptionellen Zuständen nach Anspruch 3, wobei der Behandler für exzeptionelle Zustände den mindestens einen der Befehle vor der Erzeugung der Code-Erzeugungsanfrage als Reaktion auf den erfassten exzeptionellen Zustand emuliert.
  7. System zur Vermeidung von exzeptionellen Zuständen nach Anspruch 2, wobei der Behandler für exzeptionelle Zustände Folgendes umfasst: A. ein Einrichtungselement für den Zähler für exzeptionelle Zustände zur Einrichtung eines Zählers für exzeptionelle Zustände als Reaktion auf eine Anzeige zur Aktivierung der Einrichtung eines Zählers, wobei der Zähler für exzeptionelle Zustände einen Zählerwert des exzeptionellen Zustands bereitstellt; B. ein Steuerelement für den Zähler für exzeptionelle Zustände zur Erzeugung der Anzeige zur Aktivierung der Einrichtung eines Zählers, um dem Einrichtungselement für den Zähler für exzeptionelle Zustände zu ermöglichen, den Zähler für exzeptionelle Zustände einzurichten, wenn der mindestens eine exzeptionelle Zustand im Zusammenhang mit dem mindestens einen Befehl zuerst erfasst wird, und um dem Zähler für exzeptionelle Zustände zu ermöglichen, den Zählerwert des exzeptionellen Zustands zu inkrementieren, wenn der mindestens eine exzeptionelle Zustand im Zusammenhang mit dem mindestens einen Befehl daraufhin erfasst wird; und C. einen Code-Erzeugungsanfragegenerator zur Erzeugung der Code-Erzeugungsanfrage, wenn der Zählerwert des exzeptionellen Zustands ein ausgewähltes Verhältnis zu einem Grenzwert aufweist.
  8. System zur Vermeidung von exzeptionellen Zuständen nach Anspruch 2, wobei der Code-Generator Folgendes umfasst: A. mindestens eine Korrekturcode-Vorlage, die stellvertretend für einen Programmcode steht, um die Emulation des mindestens einen der Befehle zu ermöglichen; und B. ein Korrekturcode-Einsatzelement zur Verwendung der Korrekturcode-Vorlage, um den Programmcode zur Aktivierung der Emulation des mindestens einen der Befehle und zum Ersetzen des Programmcodes für den mindestens einen der Befehle in dem Befehlsstrom zu erzeugen.
  9. System zur Vermeidung von exzeptionellen Zuständen nach Anspruch 8, wobei der mindestens eine der Befehle ein Speicherzugriffsbefehl ist, der Speicherzugriffsbefehl eine Speicherzugriffsoperation im Zusammenhang mit einer Speicherreferenz aktiviert, der Speicherzugriffsbefehl den exzeptionellen Zustand vom Typ einer nicht synchronisierten Speicheneferenzausnahme auslöst, wenn sich die Speicheneferenz in einem nicht synchronisierten Zustand befindet, die mindestens eine Korrekturcode-Vorlage stellvertretend für einen Programmcode zur Aktivierung einer Vielzahl von Speicherzugriffsoperationen steht, die jeweils mit einer synchronisierten Speicheneferenz in Zusammenhang stehen, wodurch der exzeptionelle Zustand vom Typ einer nicht synchronisierten Speicheneferenzausnahme vermieden wird.
  10. System zur Vermeidung von exzeptionellen Zuständen nach Anspruch 9, wobei eine Vielzahl von Typen von nicht synchronisierten Speicheneferenzausnahmen vorliegt, die jeweils zu einem einer Vielzahl von nicht synchronisierten Zuständen gehören, A. wobei der Code-Generator eine Vielzahl von Korrekturcode-Vorlagen umfasst, die jeweils stellvertretend für Programmcode zur Aktivierung der Emulation eines Speicherzugriffsbefehls stehen, für den die Speicheneferenz einen der nicht synchronisierten Zustände aufweist, und B. wobei der Ausführungsbehandler als Reaktion auf eine Erfassung eines exzeptionellen Zustands eines der Vielzahl von Typen von nicht synchronisierten Speicheneferenzausnahmen dem Code-Generator ermöglicht, eine der Korrekturcode-Vorlagen auszuwählen, die zu einem der nicht synchronisierten Zustände gehören, die zu dem Typ einer nicht synchronisierten Speicheneferenzausnahme des erfassten exzeptionellen Zustands zur Verwendung bei der Erzeugung von Programmcode gehören.
  11. Computerimplementiertes Verfahren zur Vermeidung eines exzeptionellen Zustands eines vorherbestimmten Typs während der Ausführung eines Programms, wobei das Verfahren die Bereitstellung einer Ausführungsumgebung zur Ausführung des Programms umfasst, das Programm einen Befehlsstrom umfasst, der eine Reihe von Befehlen umfasst, die Ausführungsumgebung einen Detektor zur Erfassung von exzeptionellen Zuständen umfasst, der mindestens einen exzeptionellen Zustand im Zusammenhang mit der Ausführung eines der Befehle in der Reihe erfasst, dadurch gekennzeichnet, dass als Reaktion auf eine Erfassung durch die Ausführungsumgebung des mindestens einen exzeptionellen Zustands im Zusammenhang mit der Ausführung des einen der Befehle in dem Befehlsstrom ein Korrekturcode erzeugt wird, wobei der Korrekturcode, wenn er verarbeitet wird, den mindestens einen exzeptionellen Zustand vermeidet, und der eine der Befehle in dem Befehlsstrom durch den Korrekturcode ersetzt wird.
  12. Verfahren nach Anspruch 11, wobei der Korrekturcode-Erzeugungsschritt folgende Schritte umfasst: A. Erzeugen einer Code-Erzeugungsanfrage als Reaktion auf die Erfassung des mindestens einen exzeptionellen Zustands; und B. Erzeugen eines Korrekturcodes und Ersetzen des Korrekturcodes in dem Befehlsstrom für den einen der Befehle als Reaktion auf eine Code-Erzeugungsanfrage.
  13. Verfahren nach Anspruch 12, wobei die Code-Erzeugungsanfrage erzeugt wird, nachdem der mindestens eine exzeptionelle Zustand eine vorherbestimmte Anzahl von Malen für den einen der Befehle erfasst wurde.
  14. Verfahren nach Anspruch 13, das des Weiteren den Schritt der Bereitstellung eines Zählers für exzeptionelle Zustände umfasst, der einen Wert des exzeptionellen Zustands erzeugt, wobei der Code-Erzeugungsanfrageschritt folgendes Schritte umfasst: A. dem Zähler für exzeptionelle Zustände ermöglichen, den Wert des exzeptionellen Zustands zu inkrementieren, wenn der mindestens eine exzeptionelle Zustand erfasst wird (112), und B. Erzeugen der Code-Erzeugungsanfrage, wenn der Wert des exzeptionellen Zustands eine ausgewählte Übereinstimmung mit einem Grenzwert aufweist (113).
  15. Verfahren nach Anspruch 14, wobei der Zähler für exzeptionelle Zustände eingerichtet und initialisiert wird, wenn der mindestens eine exzeptionelle Zustand im Zusammenhang mit dem mindestens einen Befehl in dem Befehlsstrom erfasst wird (111).
  16. Verfahren nach Anspruch 13, das des Weiteren den Schritt des Emulierens des mindestens einen der Befehle vor der Erzeugung der Code-Erzeugungsanfrage als Reaktion auf die Erfassung des exzeptionellen Zustands umfasst.
  17. Verfahren nach Anspruch 12, wobei der Code-Erzeugungsanfrageschritt folgende Schritte umfasst: A. Einrichten eines Zählers für exzeptionelle Zustände als Reaktion auf eine Anzeige zur Aktivierung der Einrichtung eines Zählers, wobei der Zähler für exzeptionelle Zustände einen Zählerwert des exzeptionellen Zustands bereitstellt; B. Erzeugen der Anzeige zur Aktivierung der Einrichtung eines Zählers, um die Einrichtung des Zählers für exzeptionelle Zustände zu ermöglichen, wenn der mindestens eine exzeptionelle Zustand im Zusammenhang mit dem mindestens einen Befehl zuerst erfasst wird, und um dem Zähler für exzeptionelle Zustände zu ermöglichen, den Zählerwert des exzeptionellen Zustands zu inkrementieren, wenn der mindestens eine exzeptionelle Zustand im Zusammenhang mit dem mindestens einen Befehl daraufhin erfasst wird; und C. Erzeugen der Code-Erzeugungsanfrage, wenn der Zählerwert des exzeptionellen Zustands ein ausgewähltes Verhältnis zu einem Grenzwert aufweist.
  18. Verfahren nach Anspruch 12, wobei der Code-Erzeugungsschritt folgende Schritte umfasst: A. Bereitstellen mindestens einer Korrekturcode-Vorlage, die stellvertretend für einen Programmcode steht, um die Emulation des mindestens einen der Befehle zu ermöglichen; und B. Verwendung der Korrekturcode-Vorlage, um den Programmcode zur Aktivierung der Emulation des mindestens einen der Befehle und zum Ersetzen des Programmcodes für den mindestens einen der Befehle in dem Befehlsstrom zu erzeugen.
  19. Verfahren nach Anspruch 18, wobei der mindestens eine der Befehle ein Speicherzugriffsbefehl ist, der Speicherzugriffsbefehl eine Speicherzugriffsoperation im Zusammenhang mit einer Speicherreferenz aktiviert, der Speicherzugriffsbefehl den exzeptionellen Zustand vom Typ einer nicht synchronisierten Speicherreferenzausnahme auslöst, wenn sich die Speicherreferenz in einem nicht synchronisierten Zustand befindet, die mindestens eine Korrekturcode-Vorlage stellvertretend für einen Programmcode zur Aktivierung einer Vielzahl von Speicherzugriffsoperationen steht, die jeweils mit einer synchronisierten Speicherreferenz in Zusammenhang stehen, wodurch der exzeptionelle Zustand vom Typ einer nicht synchronisierten Speicherreferenzausnahme vermieden wird.
  20. Verfahren nach Anspruch 19, wobei eine Vielzahl von Typen von nicht synchronisierten Speicherreferenzausnahmen vorliegt, die jeweils zu einem einer Vielzahl von nicht synchronisierten Zuständen gehören, A. wobei eine Vielzahl von Korrekturcode-Vorlagen bereitgestellt wird, die jeweils stellvertretend für Programmcode zur Aktivierung der Emulation eines Speicherzugriffsbefehls stehen, für den die Speicheneferenz einen der nicht synchronisierten Zustände aufweist, und B. wobei der Code-Erzeugungsanfrageschritt Folgendes umfasst: Aktivierung der Verwendung einer der Korrekturcode-Vorlagen, die zu einem der nicht synchronisierten Zustände gehören, die zu dem Typ einer nicht synchronisierten Speicheneferenzausnahme des erfassten exzeptionellen Zustands bei der Erzeugung von Programmcode gehören, als Reaktion auf eine Erfassung eines exzeptionellen Zustands eines der Vielzahl von Typen von nicht synchronisierten Speicheneferenzausnahmen.
  21. Computerprogrammprodukt zur Vermeidung von exzeptionellen Zuständen zur Verwendung im Zusammenhang mit einem Computer zur Vermeidung eines exzeptionellen Zustands eines vorherbestimmten Typs während der Ausführung eines Programms, wobei der Computer eine Ausführungsumgebung zur Ausführung des Programms umfasst, das Programm einen Befehlsstrom umfasst, der eine Reihe von Befehlen umfasst, die Ausführungsumgebung einen Detektor zur Erfassung von exzeptionellen Zuständen umfasst, der mindestens einen exzeptionellen Zustand im Zusammenhang mit der Ausführung eines der Befehle in der Reihe erfasst, wobei das Computerprogrammprodukt zur Vermeidung von exzeptionellen Zuständen durch Folgendes gekennzeichnet ist: ein computerlesbares Medium, auf dem Codevorrichtungen zur Korrekturcode-Erzeugung codiert sind, um dem Computer zu ermöglichen, als Reaktion auf eine Erfassung durch die Ausführungsumgebung des mindestens einen exzeptionellen Zustands im Zusammenhang mit der Ausführung des einen der Befehle in dem Befehlsstrom einen Korrekturcode zu erzeugen, wobei der Korrekturcode, wenn er verarbeitet wird, mindestens einen exzeptionellen Zustand vermeidet, und um den einen der Befehle in dem Befehlsstrom durch den Korrekturcode zu ersetzen.
  22. Computerprogrammprodukt zur Vermeidung von exzeptionellen Zuständen nach Anspruch 21, wobei die Codevorrichtungen zur Korrekturcode-Erzeugung Folgendes umfassen: A. einen Code-Generator, der auf Code-Erzeugungsanfrage-Code-Vorrichtungen reagiert, um dem Computer zu ermöglichen, den Korrekturcode zu erzeugen und den einen der Befehle in dem Befehlsstrom durch den Korrekturcode zu ersetzen; und B. Behandler-Code-Vorrichtungen für exzeptionelle Zustände, um dem Computer zu ermöglichen, die Code-Erzeugungsanfrage als Reaktion auf die Erfassung des mindestens einen exzeptionellen Zustands zu erzeugen.
  23. Computerprogrammprodukt zur Vermeidung von exzeptionellen Zuständen nach Anspruch 22, wobei die Behandler-Code-Vorrichtungen für exzeptionelle Zustände dem Computer ermöglichen, die Code-Erzeugungsanfrage zu erzeugen, nachdem der mindestens eine exzeptionelle Zustand eine vorherbestimmte Anzahl von Malen für den einen der Befehle erfasst wurde.
  24. Computerprogrammprodukt zur Vermeidung von exzeptionellen Zuständen nach Anspruch 23, das des Weiteren Zähler-Code-Vorrichtungen für exzeptionelle Zustände umfasst, um dem Computer zu ermöglichen, einen Wert des exzeptionellen Zustands zu erzeugen, wobei die Behandler-Code-Vorrichtungen für exzeptionelle Zustände dem Computer ermöglichen, den Wert des exzeptionellen Zustands zu inkrementieren, wenn der mindestens eine exzeptionelle Zustand erfasst wird, und die Behandler-Code-Vorrichtungen für exzeptionelle Zustände dem Computer ermöglichen, die Code-Erzeugungsanfrage zu erzeugen, wenn der Wert des exzeptionellen Zustands eine ausgewählte Übereinstimmung mit einem Grenzwert aufweist.
  25. Computerprogrammprodukt zur Vermeidung von exzeptionellen Zuständen nach Anspruch 24, wobei die Behandler-Code-Vorrichtungen für exzeptionelle Zustände dem Computer ermöglichen, die Zähler-Code-Vorrichtungen für exzeptionelle Zustände zu verwenden und den Wert des exzeptionellen Zustands zu initialisieren, wenn der mindestens eine exzeptionelle Zustand im Zusammenhang mit dem mindestens einen Befehl in dem Befehlsstrom erfasst wird.
  26. Computerprogrammprodukt zur Vermeidung von exzeptionellen Zuständen nach Anspruch 23, wobei der Behandler für exzeptionelle Zustände dem Computer ermöglicht, den mindestens einen der Befehle vor der Erzeugung der Code-Erzeugungsanfrage als Reaktion auf den erfassten exzeptionellen Zustand zu emulieren.
  27. Computerprogrammprodukt zur Vermeidung von exzeptionellen Zuständen nach Anspruch 22, wobei die Behandler-Code-Vorrichtungen für exzeptionelle Zustände Folgendes umfassen: A. Einrichtungscodevorrichtungen für den Zähler für exzeptionelle Zustände, um dem Computer zu ermöglichen, einen Zähler für exzeptionelle Zustände als Reaktion auf eine Anzeige zur Aktivierung der Einrichtung eines Zählers einzurichten, wobei der Zähler für exzeptionelle Zustände einen Zählerwert des exzeptionellen Zustands bereitstellt; B. Steuercodevorrichtungen für den Zähler für exzeptionelle Zustände, um dem Computer zu ermöglichen, die Anzeige zur Aktivierung der Einrichtung eines Zählers zu erzeugen, um die Einrichtung für den Zähler für exzeptionelle Zustände zu ermöglichen, wenn der mindestens eine exzeptionelle Zustand im Zusammenhang mit dem mindestens einen Befehl zuerst erfasst wird, und um die Inkrementierung des Zählerwerts des exzeptionellen Zustands zu ermöglichen, wenn der mindestens eine exzeptionelle Zustand im Zusammenhang mit dem mindestens einen Befehl daraufhin erfasst wird; und C. Code-Erzeugungsanfrage-Erzeugungscodevorrichtungen, um dem Computer zu ermöglichen, die Code-Erzeugungsanfrage zu erzeugen, wenn der Zählerwert des exzeptionellen Zustands ein ausgewähltes Verhältnis zu einem Grenzwert aufweist.
  28. Computerprogrammprodukt zur Vermeidung von exzeptionellen Zuständen nach Anspruch 22, wobei die Code-Generator-Codevorrichtungen Folgendes umfassen: A. mindestens eine Korrekturcode-Vorlage, die stellvertretend für einen Programmcode steht, um dem Computer zu ermöglichen, den mindestens einen der Befehle zu emulieren; und B. Korrekturcode-Einsatzcodevorrichtungen, um dem Computer zu ermöglichen, die Korrekturcode-Vorlage zu verwenden, um den Programmcode zur Aktivierung der Emulation des mindestens einen der Befehle zu erzeugen und den einen der Befehle in dem Befehlsstrom durch den Programmcode zu ersetzen.
  29. Computerprogrammprodukt zur Vermeidung von exzeptionellen Zuständen nach Anspruch 28, wobei der mindestens eine der Befehle ein Speicherzugriffsbefehl ist, der Speicherzugriffsbefehl eine Speicherzugriffsoperation im Zusammenhang mit einer Speicheneferenz aktiviert, der Speicherzugriffsbefehl den exzeptionellen Zustand vom Typ einer nicht synchronisierten Speicheneferenzausnahme auslöst, wenn sich die Speicheneferenz in einem nicht synchronisierten Zustand befindet, die mindestens eine Korrekturcode-Vorlage stellvertretend für einen Programmcode zur Aktivierung einer Vielzahl von Speicherzugriffsoperationen steht, die jeweils mit einer synchronisierten Speicheneferenz in Zusammenhang stehen, wodurch der exzeptionelle Zustand vom Typ einer nicht synchronisierten Speicheneferenzausnahme vermieden wird.
  30. Computerprogrammprodukt zur Vermeidung von exzeptionellen Zuständen nach Anspruch 29, wobei eine Vielzahl von Typen von nicht synchronisierten Speicherreferenzausnahmen vorliegt, die jeweils zu einem einer Vielzahl von nicht synchronisierten Zuständen gehören, A. wobei die Code-Generator-Codevorrichtungen eine Vielzahl von Korrekturcode-Vorlagen umfassen, die jeweils stellvertretend für Programmcode zur Aktivierung der Emulation eines Speicherzugriffsbefehls stehen, für den die Speicherreferenz einen der nicht synchronisierten Zustände aufweist, und B. die Ausführungsbehandlercodevorrichtungen dem Computer ermöglichen, als Reaktion auf eine Erfassung eines exzeptionellen Zustands eines der Vielzahl von Typen von nicht synchronisierten Speicherreferenzausnahmen während der Verarbeitung der Code-Generator-Codevorrichtungen eine der Korrekturcode-Vorlagen auszuwählen, die zu einem der nicht synchronisierten Zustände gehören, die zu dem Typ einer nicht synchronisierten Speicheneferenzausnahme des erfassten exzeptionellen Zustands zur Verwendung bei der Erzeugung von Programmcode gehören.
DE69730276T 1996-06-03 1997-06-02 Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes Expired - Fee Related DE69730276T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US657112 1996-06-03
US08/657,112 US5907708A (en) 1996-06-03 1996-06-03 System and method for facilitating avoidance of an exception of a predetermined type in a digital computer system by providing fix-up code for an instruction in response to detection of an exception condition resulting from execution thereof

Publications (2)

Publication Number Publication Date
DE69730276D1 DE69730276D1 (de) 2004-09-23
DE69730276T2 true DE69730276T2 (de) 2005-08-18

Family

ID=24635865

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69730276T Expired - Fee Related DE69730276T2 (de) 1996-06-03 1997-06-02 Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes

Country Status (4)

Country Link
US (2) US5907708A (de)
EP (1) EP0817029B1 (de)
JP (1) JPH10116200A (de)
DE (1) DE69730276T2 (de)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000305790A (ja) * 1999-02-19 2000-11-02 Fujitsu Ltd ラベルアドレス変換装置、ラベルアドレス変換方法及びコンピュータ可読媒体
US6772416B1 (en) * 1999-11-19 2004-08-03 General Dynamics Decision Systems, Inc. Separation kernel with memory allocation, remote procedure call and exception handling mechanisms
US6978233B1 (en) * 2000-03-03 2005-12-20 Unisys Corporation Method for emulating multi-processor environment
JP3974742B2 (ja) * 2000-04-14 2007-09-12 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイル装置、最適化方法および記録媒体
US6829700B2 (en) * 2000-12-29 2004-12-07 Stmicroelectronics, Inc. Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
US6993751B2 (en) * 2001-05-14 2006-01-31 Microsoft Corporation Placing exception throwing instructions in compiled code
KR20040022451A (ko) * 2001-07-16 2004-03-12 유킹 렌 임베디드 소프트웨어 업데이트 시스템
US6928536B2 (en) * 2001-11-29 2005-08-09 Hewlett-Packard Development Company, L.P. Dynamic execution layer interface for replacing instructions requiring unavailable hardware functionality with patch code and caching
US6907519B2 (en) * 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US8539063B1 (en) 2003-08-29 2013-09-17 Mcafee, Inc. Method and system for containment of networked application client software by explicit human input
US7493599B2 (en) * 2003-11-26 2009-02-17 Intel Corporation Device, system and method for detection and handling of misaligned data access
US7840968B1 (en) * 2003-12-17 2010-11-23 Mcafee, Inc. Method and system for containment of usage of language interfaces
US7409596B2 (en) * 2004-09-02 2008-08-05 International Business Machines Corporation Apparatus and method for initializing diagnostic functions when specified run-time error criteria are satisfied
US7716528B2 (en) * 2004-09-07 2010-05-11 Broadcom Corporation Method and system for configurable trigger logic for hardware bug workaround in integrated circuits
US20060179349A1 (en) * 2005-02-09 2006-08-10 Preemptive Solutions, Llc System and method for tracking exceptional states
US7856661B1 (en) 2005-07-14 2010-12-21 Mcafee, Inc. Classification of software on networked systems
US7684973B2 (en) * 2005-12-29 2010-03-23 Bull Hn Information Systems Inc. Performance improvement for software emulation of central processor unit utilizing signal handler
US7757269B1 (en) 2006-02-02 2010-07-13 Mcafee, Inc. Enforcing alignment of approved changes and deployed changes in the software change life-cycle
US7895573B1 (en) 2006-03-27 2011-02-22 Mcafee, Inc. Execution environment file inventory
US8555404B1 (en) 2006-05-18 2013-10-08 Mcafee, Inc. Connectivity-based authorization
US9424154B2 (en) 2007-01-10 2016-08-23 Mcafee, Inc. Method of and system for computer system state checks
US8332929B1 (en) 2007-01-10 2012-12-11 Mcafee, Inc. Method and apparatus for process enforced configuration management
US8078847B2 (en) * 2007-05-14 2011-12-13 Apple Inc. Detecting memory-hazard conflicts during vector processing
US8515075B1 (en) * 2008-01-31 2013-08-20 Mcafee, Inc. Method of and system for malicious software detection using critical address space protection
US8615502B2 (en) 2008-04-18 2013-12-24 Mcafee, Inc. Method of and system for reverse mapping vnode pointers
GB2460280A (en) * 2008-05-23 2009-11-25 Advanced Risc Mach Ltd Using a memory-abort register in the emulation of memory access operations
US8745601B1 (en) * 2008-07-17 2014-06-03 Apple Inc. Methods and systems for using data structures for operating systems
EP2361115A1 (de) * 2008-10-27 2011-08-31 Cardiac Pacemakers, Inc. Verfahren und systeme zur aufladung von implantierbaren vorrichtungen
US8473930B2 (en) * 2008-11-05 2013-06-25 Oracle America, Inc. Handling signals and exceptions in a dynamic translation environment
US8549269B2 (en) * 2009-03-10 2013-10-01 International Business Machines Corporation Method, apparatus or software for processing exceptions produced by an application program
US8381284B2 (en) 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
US9552497B2 (en) * 2009-11-10 2017-01-24 Mcafee, Inc. System and method for preventing data loss using virtual machine wrapped applications
US8925101B2 (en) 2010-07-28 2014-12-30 Mcafee, Inc. System and method for local protection against malicious software
US8938800B2 (en) 2010-07-28 2015-01-20 Mcafee, Inc. System and method for network level protection against malicious software
US8549003B1 (en) 2010-09-12 2013-10-01 Mcafee, Inc. System and method for clustering host inventories
US9075993B2 (en) 2011-01-24 2015-07-07 Mcafee, Inc. System and method for selectively grouping and managing program files
US9112830B2 (en) 2011-02-23 2015-08-18 Mcafee, Inc. System and method for interlocking a host and a gateway
US9594881B2 (en) 2011-09-09 2017-03-14 Mcafee, Inc. System and method for passive threat detection using virtual memory inspection
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US9069586B2 (en) 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8973144B2 (en) 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8800024B2 (en) 2011-10-17 2014-08-05 Mcafee, Inc. System and method for host-initiated firewall discovery in a network environment
US8713668B2 (en) 2011-10-17 2014-04-29 Mcafee, Inc. System and method for redirected firewall discovery in a network environment
US8739272B1 (en) 2012-04-02 2014-05-27 Mcafee, Inc. System and method for interlocking a host and a gateway
US8973146B2 (en) 2012-12-27 2015-03-03 Mcafee, Inc. Herd based scan avoidance system in a network environment
EP3061030A4 (de) 2013-10-24 2017-04-19 McAfee, Inc. Agentenunterstützte blockierung böswilliger anwendungen in einer netzwerkumgebung
US10055209B2 (en) * 2015-01-12 2018-08-21 Red Hat, Inc. Resource closing
CN112988441B (zh) * 2021-03-03 2024-04-05 北京京东乾石科技有限公司 异常处理方法和装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210832A (en) * 1986-10-14 1993-05-11 Amdahl Corporation Multiple domain emulation system with separate domain facilities which tests for emulated instruction exceptions before completion of operand fetch cycle
US5212693A (en) * 1990-08-02 1993-05-18 Ibm Corporation Small programmable array to the on-chip control store for microcode correction
US5479616A (en) * 1992-04-03 1995-12-26 Cyrix Corporation Exception handling for prefetched instruction bytes using valid bits to identify instructions that will cause an exception
DE4434895C2 (de) * 1993-12-23 1998-12-24 Hewlett Packard Co Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen
US5862370A (en) * 1995-09-27 1999-01-19 Vlsi Technology, Inc. Data processor system with instruction substitution filter for deimplementing instructions
US5815702A (en) * 1996-07-24 1998-09-29 Kannan; Ravi Method and software products for continued application execution after generation of fatal exceptions
US5881279A (en) * 1996-11-25 1999-03-09 Intel Corporation Method and apparatus for handling invalid opcode faults via execution of an event-signaling micro-operation

Also Published As

Publication number Publication date
US5907708A (en) 1999-05-25
EP0817029B1 (de) 2004-08-18
US6064815A (en) 2000-05-16
JPH10116200A (ja) 1998-05-06
EP0817029A3 (de) 2002-08-14
DE69730276D1 (de) 2004-09-23
EP0817029A2 (de) 1998-01-07

Similar Documents

Publication Publication Date Title
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
DE2846495C2 (de) Zentraleinheit
DE2350884C2 (de) Adreßumsetzungseinheit
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE2500006A1 (de) Wirtsdatenverarbeitungssystem und verfahren zur emulation von eingabe/ausgabe- befehlen
DE2113890C2 (de) Zentrale Verarbeitungseinrichtung für Datenverarbeitungsanlagen
DE69924857T2 (de) Programm-kode-umwandlung
DE69918334T2 (de) Erzeugung von kompilierten programmen für interpretative laufzeitumgebungen
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE1524102C3 (de) Elektronische, aus Baueinheiten aufgebaute Datenverarbeitungsmaschine
DE3503119A1 (de) Verfahren zum automatischen erzeugen eines quellenprogramms
DE2521289A1 (de) Datenfeldprozessor
DE2847934A1 (de) Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher
DE4208924A1 (de) Verfahren zur kommunikation zwischen prozessoren und parallelverarbeitungscomputer hierfuer
DE2517276A1 (de) Datenverarbeitungssystem
EP0010198A2 (de) Vorrichtung zur Steuerung des Seitenaustausches in einem Datenverarbeitungssystem mit virtuellem Speicher
DE2459956A1 (de) Prozessor und diesen verwendendes peripheres verarbeitungssystem
DE3741850A1 (de) Ausfuehrungseinheit fuer einen i/o-prozessor
DE1549523B2 (de) Datenverarbeitungsanlage
DE2714805A1 (de) Datenverarbeitungssystem
DE2750721A1 (de) Ein/ausgabe-system
EP0010185A1 (de) Virtuell-Adressiervorrichtung für einen Computer
DE2458286A1 (de) Datenverarbeitungssystem zum verschieben von datenfeldern mit verschiedenen strukturen
DE2702722C2 (de) Einrichtung zur Verarbeitung nicht direkt ausführbarer Instruktionen

Legal Events

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