[go: up one dir, main page]

DE10208784A1 - System und Verfahren zum Überwachen unausgerichteter Speicherzugriffe - Google Patents

System und Verfahren zum Überwachen unausgerichteter Speicherzugriffe

Info

Publication number
DE10208784A1
DE10208784A1 DE10208784A DE10208784A DE10208784A1 DE 10208784 A1 DE10208784 A1 DE 10208784A1 DE 10208784 A DE10208784 A DE 10208784A DE 10208784 A DE10208784 A DE 10208784A DE 10208784 A1 DE10208784 A1 DE 10208784A1
Authority
DE
Germany
Prior art keywords
error
memory access
trap
handler
misaligned
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE10208784A
Other languages
English (en)
Inventor
Bret A Mckee
John M Kessenich
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE10208784A1 publication Critical patent/DE10208784A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

Ein System überwacht unausgerichtete Speicherzugriffe durch einen Prozessor eines Computersystems. Der Prozessor erzeugt automatisch einen Fehler beim Versuch eines unausgerichteten Speicherzugriffs. Unausgerichteter-Speicherzugriff-Fehler werden ansprechend auf einen Fehler deaktiviert, der durch einen ersten fehlerverursachenden Befehl erzeugt wird. Der erste fehlerverursachende Befehl wird ausgeführt. Eine Falle wird erzeugt durch Ausführen des ersten fehlerverursachenden Befehls. Unausgerichteter-Speicherzugriff-Fehler werden ansprechend auf die Falle aktiviert.

Description

Die vorliegende Erfindung bezieht sich auf das Überwachen unausgerichteter Speicherzugriffe in Computersystemen und insbesondere auf das Überwachen unausgerichteter Speicher­ zugriffe in Computersystemen, die Hardware-Einzelschritt­ betrieb verwenden.
Computersysteme umfassen mindestens einen Prozessor und ei­ nen Speicher. Der Speicher speichert Anwendungsprogrammbe­ fehle, Daten und ein Betriebssystem. Das Betriebssystem steuert den Prozessor und den Speicher für Systemoperatio­ nen und zum Ausführen der Anwendungsprogrammbefehle.
Daten, die in einem Speicher eines Computersystems gespei­ chert sind, können entlang natürlicher Grenzen gespeichert werden oder können grenzüberschreitend sein. Für bestes Verhalten sollten die Daten an natürlichen Speichergrenzen ausgerichtet sein. Wenn ein Datenartikel eine natürliche Grenze überschreitet und auf mehr als einer Leitung gespei­ chert wird, sind mehrere Zugriffe erforderlich, um die Da­ ten zu erhalten, wodurch das Systemverhalten vermindert wird. Die Software richtet Datenwerte vorzugsweise aus, um eine mögliche Verhaltensverschlechterung zu verhindern.
Es wäre wünschenswert, unausgerichtete Speicherzugriffe durch ein Anwendungsprogramm zu Zwecken des Modifizierens der Software zu überwachen, zu zählen und nachzuverfolgen, um das Verhalten zu steigern oder für andere Zwecke. Eine aktuelle Lösung für das Überwachen der Ausführung von Be­ fehlen in einem Anwendungsprogramm ist es, einen Software­ emulator zu bauen, um fehlerverursachende Befehle zu hand­ haben, so daß eine Ausführung fortfahren kann, wenn ein Fehler auftritt. Diese Lösung ist jedoch sehr komplex und erfordert das Entwickeln einer Software, die den Prozessor­ zustand aktualisieren kann, als ob ein fehlerverursachender Befehl ausgeführt worden wäre.
Es wurden ferner Softwarefehlersuchprogramme entwickelt, um die Ausführung von Anwendungsprogrammbefehlen zu überwa­ chen. Softwarefehlersuchprogramme verwenden üblicherweise ein Einzelschrittmerkmal. Ein Einzelschrittmerkmal kann in der Software implementiert sein oder ein Hardwaremerkmal sein, das durch den Prozessor bereitgestellt ist. Ein Ein­ zelschrittmerkmal wurde durch Softwarefehlersuchprogramme verwendet, um einen Befehl nach dem anderen durch ein An­ wendungsprogramm zu schreiten, um zu überwachen, wie sich der Prozessorzustand nach jedem Befehl ändert, und um Feh­ ler basierend auf den Änderungen in dem Prozessorzustand zu identifizieren. Ein Hardware-Einzelschrittmerkmal wurde vo­ rangehend nicht als Teil einer Lösung für das Überwachen, Zählen und Nachverfolgen unausgerichteter Speicherzugriffe in einem Anwendungsprogramm verwendet.
Es wäre wünschenswert, eine vereinfachte Lösung zum Überwa­ chen, Zählen und Nachverfolgen unausgerichteter Speicher­ zugriffe durch ein Anwendungsprogramm zu schaffen, ohne die Anforderung zum Bauen eines komplexen Softwareemulators.
Es ist die Aufgabe der vorliegenden Erfindung, ein Verfah­ ren zum Überwachen unausgerichteter Speicherzugriffe, ein Verfahren zum Ausführen von Befehlen, ein Computersystem und ein computerlesbares Medium zu schaffen, die eine ein­ fache Überwachung von unausgerichteten Speicherzugriffen ermöglichen.
Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 oder 11, ein Computersystem gemäß Anspruch 20 und ein com­ puterlesbares Medium gemäß Anspruch 23 gelöst.
Die vorliegende Erfindung schafft ein Computersystem und ein Verfahren zum Überwachen unausgerichteter Speicher­ zugriffe durch einen Prozessor eines Computersystems. Der Prozessor erzeugt automatisch einen Fehler bei dem Versuch eines unausgerichteten Speicherzugriffs. Fehler unausge­ richteter Speicherzugriffe werden ansprechend auf Fehler deaktiviert, die durch einen ersten fehlerverursachenden Befehl erzeugt werden. Der erste fehlerverursachende Befehl wird ausgeführt. Eine Falle wird durch Ausführen eines er­ sten fehlerverursachenden Befehls erzeugt. Fehler unausge­ richteter Speicherzugriffe werden ansprechend auf die Falle aktiviert.
Bei einem Ausführungsbeispiel werden Unausgerichteter- Speicherzugriff-Fehler aktiviert, bevor der erste fehler­ verursachende Befehl ausgeführt wird.
Bei einem Ausführungsbeispiel wird ein Fehlerhandhaber ver­ anlaßt, den Fehler zu verarbeiten. Der Schritt des Deakti­ vierens Unausgerichteter-Speicherzugriff-Fehler wird durch den Fehlerhandhaber durchgeführt.
Bei einem Ausführungsbeispiel wird ein Fallenhandhaber ver­ anlaßt, die Falle zu verarbeiten. Der Schritt des Aktivie­ rens Unausgerichteter-Speicherzugriff-Fehler wird durch den Fallenhandhaber durchgeführt.
Bei einem Ausführungsbeispiel wird ein Einzelschrittmodus des Prozessors ansprechend auf den Fehler aktiviert. Der Einzelschrittmodus wird durch Einstellen eines Feldes in einem Systemregister des Prozessors aktiviert.
Bei einem Ausführungsbeispiel werden die Zustandsinforma­ tionen ansprechend auf den Fehler gespeichert. Die Zu­ standsinformationen umfassen die Anzahl von Befehlen, die einen Fehler verursacht haben, und eine Identifikation von Befehlen, die einen Fehler verursacht haben.
Eine Form der vorliegenden Erfindung schafft ein Verfahren zum Ausführen von Befehlen durch einen Prozessor eines Com­ putersystems, das durch ein Betriebssystem gesteuert wird. Ein Unausgerichteter-Speicherzugriff-Fehler wird basierend auf der versuchten Ausführung eines ersten Befehls erzeugt. Unausgerichteter-Speicherzugriff-Fehler werden ansprechend auf den Unausgerichteter-Speicherzugriff-Fehler deakti­ viert. Ein Einzelschrittmodus wird ansprechend auf den Un­ ausgerichteter-Speicherzugriff-Fehler aktiviert. Der erste Befehl wird ausgeführt, wodurch eine Einzelschrittfalle er­ zeugt wird. Unausgerichteter-Speicherzugriff-Fehler werden ansprechend auf die Einzelschrittfalle aktiviert. Der Ein­ zelschrittmodus wird ansprechend auf die Einzelschrittfalle deaktiviert.
Eine Form der vorliegenden Erfindung schafft ein Computer­ system, das einen Prozessor umfaßt. Ein Speicher speichert ein Anwendungsprogramm mit Anwendungsbefehlen. Ein in dem Speicher gespeichertes Betriebssystem steuert den Prozes­ sor. Das Betriebssystem umfaßt einen Fehlerhandhaber und einen Fallenhandhaber. Der Fehlerhandhaber deaktiviert Un­ ausgerichteter-Speicherzugriff-Fehler und aktiviert einen Einzelschrittmodus ansprechend auf einen Unausgerichteter- Speicherzugriff-Fehler. Der Fallenhandhaber aktiviert Un­ ausgerichteter-Speicherzugriff-Fehler und deaktiviert den Einzelschrittmodus ansprechend auf eine Einzelschrittfalle. Eine Form der vorliegenden Erfindung schafft ein computer­ lesbares Medium, das ein Betriebssystem zum Steuern eines Prozessors eines Computersystems aufweist, um ein Verfahren zum Überwachen unausgerichteter Speicherzugriffe durchzu­ führen. Das Verfahren umfaßt das Deaktivieren Unausgerich­ teter-Speicherzugriff-Fehler ansprechend auf einen Fehler, der durch einen ersten fehlerverursachenden Befehl erzeugt wird. Der erste fehlerverursachende Befehl wird ausgeführt. Eine Falle wird durch Ausführen des ersten fehlerverursa­ chenden Befehls erzeugt. Unausgerichteter-Speicherzugriff- Fehler werden ansprechend auf die Falle aktiviert.
Die vorliegende Erfindung schafft eine vereinfachte Lösung für das Überwachen, Zählen und Nachverfolgen unausgerichte­ ter Speicherzugriffe durch ein Anwendungsprogramm. Bei ei­ nem Ausführungsbeispiel wird ein Hardware- Einzelschrittmerkmal eines Prozessors verwendet, um unaus­ gerichtete Speicherzugriffe für besondere Befehle temporär zu aktivieren und zu deaktivieren. Die Erfindung beseitigt den Bedarf nach dem Bauen eines komplexen Softwareemula­ tors.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm eines Computersystems gemäß der vorliegenden Erfindung, das unausgerichtete Spei­ cherzugriffe überwacht;
Fig. 2 ein Flußdiagramm, das einen Prozeß zum Überwachen unausgerichteter Speicherzugriffe durch ein An­ wendungsprogramm gemäß der vorliegenden Erfindung darstellt; und
Fig. 3 ein Flußdiagramm, das ein Ausführungsbeispiel ei­ nes Ausrichtungsprüfungs-Modifikationsprozesses darstellt.
Ein Computersystem gemäß der vorliegenden Erfindung ist im allgemeinen bei 30 in Fig. 1 dargestellt. Das Computersy­ stem 30 umfaßt mindestens einen Prozessor, wie z. B. den Prozessor 32, zum Durchführen von Sequenzen logischer Ope­ rationen. Das Computersystem 30 umfaßt ferner einen Spei­ cher 52 zum Speichern von Befehlen und Daten zur Verwendung durch den Prozessor 32. Ein Betriebssystem 60 ist in dem Speicher 52 gespeichert und steuert den Prozessor 32 und den Speicher 52 für Systemoperationen und zum Ausführen von Anwendungsprogrammbefehlen, die in dem Speicher 52 gespei­ chert sind. Der Speicher 52 umfaßt üblicherweise einen Di­ rektzugriffsspeicher (RAM; RAM = Random Access Memory), ei­ nen nichtflüchtigen Speicher und ein Festplattenlaufwerk, kann aber jeglichen bekannten Speichertyp umfassen.
Der Prozessor 32 umfaßt einen Anwendungsregistersatz 34 und einen Systemregistersatz 44. Ein Architekturzustand des Computersystems 30 ist durch den Anwendungsregistersatz 34, den Systemregistersatz 44 und den Speicher 52 dargestellt. Der Anwendungsregistersatz 34 umfaßt Register, die für An­ wendungsprogramme verfügbar sind, die in dem Speicher 52 gespeichert sind. Der Systemregistersatz 44 liefert System­ registerressourcen für Prozeßsteuerung, Unterbrechungshand­ habung, Schutz, Fehlersuche, Verhaltensüberwachung und ähn­ liches. Der Systemregistersatz 44 ist im allgemeinen nur für das Betriebssystem 60 sichtbar.
Beispielregister, die in einem Anwendungsregistersatz 34 umfaßt sein können, umfassen allgemeine Register, Gleit­ punktregister, Vergleichsergebnisregister, Verzweigungsin­ foxmationsregister, Befehlszeiger, Aktueller-Rahmen- Kennzeichner, Prozeßidentifizierer und eine Benutzermaske.
Beispielregister, die in dem Systemregistersatz 44 umfaßt sein können, umfassen Regionenregister, Schutzschlüsselre­ gister, Fehlersuch-Zwischenstopp-Register, maschinenspezi­ fische Register und Steuerregister. Der Systemregistersatz 44 umfaßt ein Prozessorstatusregister (PSR) 46, das die Steuerinformationen beibehält, um die aktuelle Ausführungs­ umgebung für den momentan laufenden Prozeß des Prozessors 32 zu definieren.
Das PSR 46 umfaßt ein Ausrichtungsprüfungs- (ac = alignment check) Feld 46A. Wenn das PSR.ac-Feld 46A eingestellt ist, resultieren unausgerichtete Speicherzugriffe bei einem Un­ ausgerichteter-Speicherzugriff-Fehler. Es gibt verschiedene unterschiedliche Typen unausgerichteter Speicherzugriffe, die bei einem Unausgerichteter-Speicherzugriff-Fehler re­ sultieren können, wie z. B. Zugriffe, die eine Cache- Leitung oder Seitengrenze überschreiten, und ausgerichtete Semaphorreferenzen. Wenn das PSR.ac-Feld 46A eingestellt ist, resultieren Datenspeicherreferenzen, die nicht an ei­ ner Grenze von der Größe des Operanden ausgerichtet sind, in einem Unausgerichteter-Speicherzugriff-Fehler. 1-, 2-, 4-, 8-, 10- und 16-Byte-Bezugsgrößen sollten auf 1-, 2-, 4-, 8-, 10- bzw. 16-Byte-Grenzen ausgerichtet sein, um die Erzeugung eines Unausgerichteter-Speicherzugriff-Fehlers zu verhindern. Wenn ein PSR.ac-Feld 46A eingestellt ist und die Datenadresse, die die Referenz ist, ist nicht auf die natürliche Größe einer Last-, Speicher- oder Semaphor- Operation ausgerichtet, wird ein Unausgerichteter- Speicherzugriff-Fehler erzeugt.
Der Prozessor 32 kann mit Einzelschritten durch die Anwen­ dungsbefehle gehen, durch Aktivieren des Einzelschrittfel­ des (PSR.ss; ss = single step) 46B des PSR 46. Wenn eine Einzelschrittoperation aktiviert ist, führt eine erfolgrei­ che Ausführung eines Befehls zu einer Einzelschrittfalle.
Der Systemregistersatz 44 umfaßt Steuerregister 47. Die Steuerregister 47 umfassen ein Störstatusregister (ISR; ISR interruption status register) 48, ein Störvektoradreß- (IVA-; IVA = interruption vector address) Register 50 und ein Störprozessorstatusregister (IPSR; IPSR = interruption processor status register) 51. Das ISR 48 empfängt Informa­ tionen von dem Prozessor 32, die mit der Eigenschaft einer Unterbrechung in Beziehung stehen. Das ISR 48 enthält In­ formationen über den Ausnahmebefehl und dessen Eigenschaf­ ten, wie z. B. ob der Ausnahmebefehl eine Lese-, Schreib-, Ausführ-, spekulative oder Nichtzugriffs-Operation durchge­ führt hat. Fehler- und fallenspezifische Informationen wer­ den in einem Codefeld (ISR.code) 48A des ISR 48 gespei­ chert. Das IVA-Register 50 spezifiziert eine Basisadresse der Störvektortabelle (IVT; IVT = interruption vector table) 62 (unten erörtert). Das IPSR 51 empfängt den Wert des PSR 46 bei einer Unterbrechung. Das IPSR 51 wird ver­ wendet, um das PSR 46 nach einer Rückkehr von einer Unter­ brechung zu aktualisieren. Wie das PSR 46 umfaßt das IPSR 51 ein Ausrichtungsprüfungs- (ac-) Feld 51A und ein Einzel­ schritt- (ss-) Feld 51B.
Der Speicher 52 speichert ein Anwendungsprogramm 54 mit An­ wendungsbefehlen. Der Speicher 52 speichert ferner einen Ausrichtungsprüfungs-Modifikationsprozeß 56. Das Betriebs­ system 60, das in dem Speicher 52 gespeichert ist, umfaßt die IVT 62. Die IVT 62 speichert eine Mehrzahl von Unter­ brechungshandhabern. Die IVT 62 speichert Unausgerichteter- Speicherzugriff-Fehlerhandhaber 62A und einen Ein­ zelschrittfallenhandhaber 62B. Zusätzlich zu der Verwendung der IVT 62, um bestimmte Unterbrechungen zu handhaben, kön­ nen Unterbrechungen durch andere Prozesse gehandhabt wer­ den.
Eine Unterbrechung ist ein Ereignis, das verursacht, daß die Hardware die Ausführung des aktuellen Befehlsstroms au­ tomatisch stoppt und die Ausführung einer Befehlsadresse entsprechend einem Unterbrechungshandhaber für diese Unter­ brechung startet. Unterbrechungen umfassen Fehler und Fal­ len. Eine Falle tritt auf, wenn ein Betriebssystemeingriff erforderlich ist, bevor dem aktuellen Befehl ausgeführt werden kann. Eine Falle tritt auf, wenn ein Betriebssystem­ eingriff erforderlich ist, nachdem der aktuelle Befehl ab­ geschlossen wurde. Unterbrechungen werden durch das Betriebssystem 60 bei einer Adresse gehandhabt, die durch die Basisposition der IVT 62 bestimmt wird (spezifiziert durch ein IVA-Register 50), versetzt um einen Betrag basierend auf der bestimmten Unterbrechung, die aufgetreten ist. Jede Unterbrechung hat einen eigenen entworfenen Ver­ satz in IVT 62.
Wenn eine Unterbrechung auftritt, stoppt der Prozessor 32 die Ausführung an dem aktuellen Befehlszeiger (IP, IP = in­ struction pointer), stellt den aktuellen Privilegienpegel auf Null (den höchsten Privilegienpegel) ein und beginnt mit dem Abrufen von Befehlen von der Adresse des Eingangs­ punkts zu dem Unterbrechungshandhaber in der IVT 62 für die bestimmte Unterbrechung, die aufgetreten ist. Die Unterbre­ chungshandhaber können vollkommen innerhalb der IVT 62 ent­ halten sein oder die Handhaber können sich verzweigen, um außerhalb der IVT 62 zu codieren, wenn mehr Raum erforder­ lich ist.
Die Position der Unterbrechungshandhaber innerhalb der IVT 62 ist durch einen Unterbrechungsvektor spezifiziert. Bei einem Ausführungsbeispiel sind mehr Unterbrechungen vorhan­ den als Unterbrechungsvektoren in der IVT 62 vorhanden sind. Somit besteht ein Viele-zu-Eins-Verhältnis zwischen Unterbrechungen und Unterbrechungsvektoren. Ein Handhaber, der einem bestimmten Unterbrechungsvektor zugeordnet ist, kann die bestimmte Unterbrechung bestimmen, die durch das Lesen des ISR.code 48A aufgetreten ist. Nachdem eine Unter­ brechung durch einen Unterbrechungshandhaber verarbeitet wurde, wird ein Rückkehr-Von-Unterbrechung-Befehl (rfi- Befehl; rfi = return from interruption) durch den Prozessor 32 ausgeführt und vorangehende gespeicherte Prozessorzu­ standsinformationen werden verwendet, um den Prozessorzu­ stand wiederherzustellen.
Bei einem Ausführungsbeispiel erzeugt der Prozessor 32 ei­ nen unausgerichteten Referenzvektor, wenn ein Unausgerich­ teter-Zugriff-Fehler auftritt. Ein Unausgerichteter- Zugriff-Fehler wird ferner als ein Unausgerichtete-Daten- Referenzfehler bezeichnet. Basierend auf der Basisadresse der IVT 62, die in dem IVA-Register 50 enthalten ist, und dem Versatz, der dem unausgerichteten Referenzvektor zuge­ ordnet ist, springt der Prozessor 32 zu dem Unausgerichte­ ter-Zugriff-Fehlerhandhaber 62A, um den unausgerichteten Zugriffsfehler zu handhaben. Der Unausgerichteter-Zugriff- Fehlerhandhaber 62A wird nachfolgend ferner detaillierter erörtert.
Bei einem Ausführungsbeispiel erzeugt der Prozessor 32 ei­ nen Einzelschrittfallen-Unterbrechungsvektor, wenn eine Einzelschrittfalle auftritt. Basierend auf der Basisadresse der IVT 62, die in dem IVA-Register 50 enthalten ist, und dem Versatz, der dem Einzelschrittfallen- Unterbrechungsvektor zugeordnet ist, springt der Prozessor 32 zu dem Einzelschrittfallenhandhaber 62B, um die Einzel­ schrittfalle zu handhaben. Der Einzelschrittfallenhandhaber 62B wird nachfolgend ferner detaillierter erörtert.
Fig. 2 stellt ein Flußdiagramm eines Prozesses 200 zum Überwachen von unausgerichteten Speicherzugriffen durch das Anwendungsprogramm 54 gemäß der vorliegenden Erfindung dar. Ein erster Schritt bei dem Prozeß 200 ist das Aktivieren Unausgerichteter-Zugriff-Fehler (Schritt 202). Bei einem Ausführungsbeispiel aktiviert der Prozessor 32 Unausgerich­ teter-Zugriff-Fehler durch Einstellen des PSR.ac-Feldes 46A in dem PSR 46.
Als nächstes ruft der Prozessor 32 auf, decodiert und ver­ sucht einen Befehl von dem Anwendungsprogramm 54 bei Schritt 204 auszuführen. Bei Schritt 206 führt eine erfolg­ reiche Ausführung des Befehls zu einer Einzelschrittfalle, wenn das Einzelschrittfallenfeld (PSR.ss 46B) aktiviert ist, und der Einzelschrittfallenhandhaber 62B wird bei Schritt 208 aufgerufen (wird unten erörtert). Wenn die ver­ suchte Ausführung des Befehls zu der Erzeugung eines unaus­ gerichteten Referenzvektors führt, wird der Unausgerichte­ ter-Zugriff-Fehlerhandhaber 62A bei Schritt 216 aufgerufen. Wenn weder ein Einzelschrittfallen-Vektor noch ein ausge­ richteter Referenzvektor erzeugt wird, springt der Prozeß 200 zu Schritt 204 und der nächste Befehl wird abgerufen, decodiert und die Ausführung dieses Befehls wird versucht. Wenn er bei Schritt 216 aufgerufen wird, speichert der Un­ ausgerichteter-Zugriff-Fehlerhandhaber 62A Zustandsinforma­ tionen 64 bei Schritt 226 in dem Speicher 52. Bei einem Ausführungsbeispiel umfassen die Zustandsinformationen 64 Prozessorzustandsinformationen, wie in dem PSR 46 spezifi­ ziert ist. Die Zustandsinformationen 64 umfassen ferner vorzugsweise jegliche Informationen, die bei einem späteren Analysieren des unausgerichteten Zugriffsfehlers hilfreich sein können, einschließlich welcher Befehl einen Fehler verursacht hat, was der Zustand des Prozessors 32 war, als der Unausgerichteter-Zugriff-Fehler auftrat, die Anzahl Un­ ausgerichteter-Zugriff-Fehler, die während der Ausführung eines Anwendungsprogramms 54 auftragen, sowie andere Infor­ mationen.
Als nächstes deaktiviert der Unausgerichteter-Zugriff- Fehlerhandhaber 62A Unausgerichteter-Zugriff-Fehler bei Schritt 228. Bei einem Ausführungsbeispiel deaktiviert der Unausgerichteter-Zugriff-Fehlerhandhaber 62A Unausgerichte­ ter-Zugriff-Fehler durch Ausführen eines Ausrichtungsprü­ fungsmodifikationsprozesses 56. Fig. 3 zeigt ein Flußdia­ gramm eines Ausführungsbeispiels eines Ausrichtungsprü­ fungs-Modifikationsprozesses 56. Der Ausrichtungsprüfungs- Modifikationsprozeß 56 umfaßt einen Schritt 402 des Spei­ cherns des Werts des IPSR.ac 51A in einer Datenstruktur. Bei Schritt 404 wird der Wert in der Datenstruktur, der das IPSR.ac 51A darstellt, auf den gewünschten Wert (z. B. 0) geändert, um Unausgerichteter-Zugriff-Fehler zu deaktivie­ ren. Bei Schritt 406 wird das IPSR 51 basierend auf den in der Datenstruktur gespeicherten Daten aktualisiert. Nachdem das Aktualisieren durchgeführt wurde, enthält das IPSR.ac 51A den gewünschten Wert, um Unausgerichteter-Zugriff- Fehler (z. B. IPSR.ac 51A = 0) zu deaktivieren. Bei Schritt 408 wird eine Rückkehr-Von-Unterbrechung (rfi; rfi = return from interruption) durchgeführt. Eine Rückleitung von der Unterbrechung verursacht, daß das PSR 46 von dem IPSR 51 aktualisiert wird. Somit enthält das PSR.ac 46A den ge­ wünschten Wert, um Unausgerichteter-Zugriff-Fehler nach der Rückleitung von der Unterbrechung zu deaktivieren (z. B. PSR.ac 46A = 0).
Als letztes aktiviert der Unausgerichteter-Zugriff- Fehlerhandhaber 62A den Einzelschrittmodus, wie bei Schritt 230 in Fig. 2 gezeigt ist. Der Unausgerichteter-Zugriff- Fehlerhandhaber 62A aktiviert den Einzelschrittmodus durch Aktivieren des Einzelschrittfeldes PSR.ss 46B in dem PSR 46. Bei einem Ausführungsbeispiel aktiviert der Unausge­ richteter-Zugriff-Fehlerhandhaber 62A das Einzelschrittfeld PSR.ss 46B auf die gleiche Weise und in dem gleichen Pro­ zeß, in dem der Unausgerichteter-Zugriff-Fehlerhandhaber 62A das PSR.ac-Feld 46A modifiziert (oben Bezug nehmend auf Fig. 3 erörtert). Genauer gesagt speichert der Unausgerich­ teter-Zugriff-Fehlerhandhaber 62A bei Schritt 402 den Wert des IPSR.ss 51B in einer Datenstruktur. Bei Schritt 404 wird der Wert in der Datenstruktur, der das IPSR.ss 51B darstellt, geändert, um den Einzelschrittmodus zu aktivie­ ren. Bei Schritt 406 wird das IPSR 51 basierend auf den in der Datenstruktur gespeicherten Daten aktualisiert. Nachdem das Aktualisieren durchgeführt wurde, IPSR.ss 51B = 1. Bei Schritt 408 wird eine Rückkehr-Von-Unterbrechung (rfi) durchgeführt. Eine Rückkehr-Von-Unterbrechung verursacht, daß das PSR 46 von dem IPSR 51 aktualisiert wird. Somit enthält das PSR.ss 46B nach der Rückleitung von der Unter­ brechung den gewünschten Wert (z. B. PSR.ss 46B = 1).
Als nächstes kehrt der Fluß zu Schritt 204 zurück, um den aktuellen Befehl auszuführen. Nach der Ausführung des aktu­ ellen Befehls wird eine Einzelschrittfalle bei Schritt 206 erzeugt und ein Einzelschrittfallenhandhaber 62B wird bei Schritt 208 aufgerufen, da das Einzelschrittfallenfeld PSR.ss 46B aktiviert wurde. Bei Schritt 210 aktiviert der Einzelschrittfallenhandhaber 62B Unausgerichteter-Zugriff- Fehler durch Einstellen des PSR.ac-Feldes 46A in dem PSR 46. Bei Schritt 212 deaktiviert der Einzelschrittfallen­ handhaber 62B den Einzelschrittmodus. Bei einem Ausfüh­ rungsbeispiel deaktiviert der Einzelschrittfallenhandhaber 62B den Einzelschrittmodus durch Deaktivieren des Einzel­ schrittfallenfeldes PSR.ss 46B in dem PSR 46 auf die glei­ che Weise, wie oben diskutiert das PSR.ss 46B aktiviert wird. Bei einem Ausführungsbeispiel speichert der Ein­ zelschrittfallenhandhaber 62 ferner Zustandsinformationen 64, die den aktuellen Zustand des PSR 46 vor jeglichen Mo­ difikationen durch den Einzelschrittfallenhandhaber 62B um­ fassen. Der Fluß kehrt dann zurück zu Schritt 204, wo der nächste Befehl abgerufen, decodiert und die Ausführung des Befehls versucht wird.
Die vorliegende Erfindung ist nicht auf einen Typ von Pro­ zessor begrenzt, sondern trifft auf jeden Prozessor zu, der eine Einzelschritt- und Unterbrechungsfunktionalität lie­ fert, einschließlich, aber nicht begrenzt auf, eine IA-64- Prozessorarchitektur.

Claims (26)

1. Verfahren zum Überwachen von unausgerichteten Spei­ cherzugriffen durch einen Prozessor (32) eines Compu­ tersystems (30), wobei der Prozessor automatisch einen Unausgerichteter-Speicherzugriff-Fehler erzeugt, wenn ein unausgerichteter Speicherzugriff versucht wird, wobei das Verfahren folgende Schritte aufweist:
Deaktivieren (228) von Unausgerichteter- Speicherzugriff-Fehlern ansprechend auf einen Fehler, der durch einen ersten fehlerverursachenden Befehl er­ zeugt wird;
Ausführen (204) des ersten fehlerverursachenden Be­ fehls;
Erzeugen (206) einer Falle durch Ausführen des ersten fehlerverursachenden Befehls; und
Aktivieren (210) von Unausgerichteter-Speicherzugriff- Fehlern ansprechend auf die Falle.
2. Verfahren gemäß Anspruch 1, das ferner folgenden Schritt aufweist:
Aktivieren (202) von Unausgerichteter-Speicherzugriff- Fehlern vor dem Ausführen des ersten fehlerverursa­ chenden Befehls.
3. Verfahren gemäß Anspruch 1 oder 2, das ferner folgen­ den Schritt aufweist:
Aufrufen eines Fehlerhandhabers (62A), um den Fehler zu verarbeiten (216).
4. Verfahren gemäß Anspruch 3, bei dem ein Schritt des Deaktivierens (228) von Unausgerichteter- Speicherzugriff-Fehlern durch den Fehlerhandhaber (62A) durchgeführt wird.
5. Verfahren gemäß einem der Ansprüche 1 bis 4, das fer­ ner folgenden Schritt aufweist:
Aufrufen eines Fallenhandhabers (62B), um die Falle zu verarbeiten (208).
6. Verfahren gemäß Anspruch 5, wobei der Schritt des Ak­ tivierens von Unausgerichteter-Speicherzugriff-Fehlern durch den Fallenhandhaber (62B) durchgeführt wird.
7. Verfahren gemäß einem der Ansprüche 1 bis 6, das fer­ ner folgenden Schritt aufweist:
Aktivieren (230) eines Einzelschrittmodus des Prozes­ sors ansprechend auf den Fehler.
8. Verfahren gemäß Anspruch 7, das ferner folgenden Schritt aufweist:
Einstellen eines Feldes (46B) in einem Systemregister (46) des Prozessors, um den Einzelschrittmodus zu ak­ tivieren (230).
9. Verfahren gemäß einem der Ansprüche 1 bis 8, das fer­ ner folgenden Schritt aufweist:
Speichern von Zustandsinformationen ansprechend auf den Fehler.
10. Verfahren gemäß Anspruch 9, bei dem die Zustandsinfor­ mationen die Anzahl von Befehlen umfassen, die einen Fehler verursacht haben, und eine Identifikation der Befehle, die einen Fehler verursacht haben.
11. Verfahren des Ausführens von Befehlen durch einen Pro­ zessor (32) eines Computersystems (30), das durch ein Betriebssystem (60) gesteuert wird, wobei das Verfah­ ren folgende Schritte aufweist:
Erzeugen (214) eines Unausgerichteter-Speicherzugriff- Fehlers basierend auf der versuchten Ausführung eines ersten Befehls;
Deaktivieren (228) von Unausgerichteter- Speicherzugriff-Fehlern ansprechend auf den Unausge­ richteter-Speicherzugriff-Fehler;
Aktivieren (230) eines Einzelschrittmodus ansprechend auf den Unausgerichteter-Speicherzugriff-Fehler;
Ausführen (204) des ersten Befehls wodurch eine Ein­ zelschrittfalle erzeugt wird (206);
Aktivieren (210) von Unausgerichteter-Speicherzugriff- Fehlern ansprechend auf die Einzelschrittfalle; und
Deaktivieren (212) des Einzelschrittmodus ansprechend auf die Einzelschrittfalle.
12. Verfahren gemäß Anspruch 11, das ferner folgenden Schritt aufweist:
Aktivieren von Unausgerichteter-Speicherzugriff- Fehlern vor dem Ausführen der Befehle.
13. Verfahren gemäß Anspruch 11 oder 12, das ferner fol­ genden Schritt aufweist:
Aufrufen eines Fehlerhandhabers, um den Unausgerichte­ ter-Speicherzugriff-Fehler zu verarbeiten.
14. Verfahren gemäß Anspruch 13, bei dem die Schritte des Deaktivierens von Unausgerichteter-Speicherzugriff- Fehlern und das Aktivieren eines Einzelschrittmodus durch den Fehlerhandhaber durchgeführt werden.
15. Verfahren gemäß einem der Ansprüche 11 bis 14, das ferner folgenden Schritt aufweist:
Aufrufen eines Fallenhandhabers, um die Einzelschritt­ falle zu verarbeiten.
16. Verfahren gemäß Anspruch 15, bei dem die Schritte des Aktivierens von Unausgerichteter-Speicherzugriff- Fehlern und des Deaktivierens des Einzelschrittmodus durch den Fallenhandhaber durchgeführt werden.
17. Verfahren gemäß einem der Ansprüche 11 bis 16, das ferner folgenden Schritt aufweist:
Einstellen eines Feldes in einem Systemregister des Prozessors, um den Einzelschrittmodus zu aktivieren.
18. Verfahren gemäß einem der Ansprüche 11 bis 17, das ferner folgenden Schritt aufweist:
Speichern von Zustandsinformationen ansprechend auf den Unausgerichteter-Speicherzugriff-Fehler.
19. Verfahren gemäß Anspruch 18, bei dem die Zustandsin­ formationen die Anzahl von Befehlen umfassen, die ei­ nen Fehler verursacht haben, und eine Identifikation der Befehle, die einen Fehler verursacht haben.
20. Computersystem (30), das folgende Merkmale aufweist:
einen Prozessor (32);
einen Speicher (52) zum Speichern eines Anwendungspro­ gramms (54), das Anwendungsbefehle aufweist; und
ein Betriebssystem (60), das zum Steuern des Prozes­ sors in dem Speicher gespeichert ist, wobei das Be­ triebssystem einen Fehlerhandhaber (62A) und einen Fallenhandhaber (62B) umfaßt, wobei der Fehlerhandha­ ber Unausgerichteter-Speicherzugriff-Fehler deakti­ viert (228) und einen Einzelschrittmodus ansprechend auf einen Unausgerichteter-Speicherzugriff-Fehler (214) aktiviert (230), wobei der Fallenhandhaber Un­ ausgerichteter-Speicherzugriff-Fehler (210) aktiviert und den Einzelschrittmodus (212) ansprechend auf eine Einzelschrittfalle (206) deaktiviert.
21. Computersystem gemäß Anspruch 20, bei dem der Feh­ lerhandhaber Zustandsinformationen in dem Speicher speichert.
22. Computersystem gemäß Anspruch 21, bei dem die Zu­ standsinformationen die Anzahl von Befehlen umfassen, die einen Fehler verursacht haben und eine Identifika­ tion der Befehle, die einen Fehler verursacht haben.
23. Computerlesbares Medium, das Befehle für ein Betriebs­ system zum Steuern eines Prozessors eines Computersy­ stems enthält, um ein Verfahren des Überwachens unaus­ gerichteter Speicherzugriffe durchzuführen, wobei das Verfahren folgende Merkmale aufweist:
Deaktivieren (228) Unausgerichteter-Speicherzugriff- Fehler ansprechend auf einen Fehler, der durch einen ersten fehlerverursachenden Befehl verursacht wird;
Ausführen (204) des ersten fehlerverursachenden Be­ fehls;
Erzeugen (206) einer Falle durch ein Ausführen des er­ sten fehlerverursachenden Befehls; und
Aktivieren (210) Unausgerichteter-Speicherzugriff- Fehler ansprechend auf die Falle.
24. Computerlesbares Medium gemäß Anspruch 23, bei dem das Verfahren ferner folgenden Schritt ausweist:
Aktivieren (202) von Unausgerichteter-Speicherzugriff- Fehlern vor dem Ausführen des ersten fehlererzeugenden Befehls.
25. Computerlesbares Medium gemäß Anspruch 23 oder 24, bei dem das Verfahren ferner folgenden Schritt aufweist:
Aufrufen eines Fehlerhandhabers (62A), um den Fehler zu verarbeiten (216).
26. Computerlesbares Medium gemäß Anspruch 25, bei dem ein Schritt des Deaktivierens (228) Unausgerichteter- Speicherzugriff-Fehler durch den Fehlerhandhaber (62A) durchgeführt wird.
DE10208784A 2001-03-06 2002-02-28 System und Verfahren zum Überwachen unausgerichteter Speicherzugriffe Withdrawn DE10208784A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/800,283 US6772372B2 (en) 2001-03-06 2001-03-06 System and method for monitoring unaligned memory accesses

Publications (1)

Publication Number Publication Date
DE10208784A1 true DE10208784A1 (de) 2002-09-26

Family

ID=25177978

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10208784A Withdrawn DE10208784A1 (de) 2001-03-06 2002-02-28 System und Verfahren zum Überwachen unausgerichteter Speicherzugriffe

Country Status (4)

Country Link
US (1) US6772372B2 (de)
JP (1) JP2002268915A (de)
DE (1) DE10208784A1 (de)
GB (1) GB2373891A (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2383832A1 (en) * 2002-04-24 2003-10-24 Ibm Canada Limited-Ibm Canada Limitee System and method for intelligent trap analysis
US7076631B2 (en) * 2003-04-14 2006-07-11 Adtran, Inc. Mechanism for on-the-fly handling of unaligned memory accesses
US20050198421A1 (en) * 2004-03-08 2005-09-08 Nalawadi Rajeev K. Method to execute ACPI ASL code after trapping on an I/O or memory access
JP2006178867A (ja) * 2004-12-24 2006-07-06 Nec Saitama Ltd フラッシュメモリを用いたcpuシステム、フラッシュメモリ保護回路およびそのフラッシュメモリ保護方法
GB2482710A (en) 2010-08-12 2012-02-15 Advanced Risc Mach Ltd Enabling stack access alignment checking independently of other memory access alignment checking
WO2019240485A1 (ko) * 2018-06-14 2019-12-19 삼성전자 주식회사 이상 환경으로부터 어플리케이션을 보호하는 전자 장치 및 그 동작 방법

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809160A (en) 1985-10-28 1989-02-28 Hewlett-Packard Company Privilege level checking instruction for implementing a secure hierarchical computer system
US4912707A (en) * 1988-08-23 1990-03-27 International Business Machines Corporation Checkpoint retry mechanism
US5134701A (en) 1989-02-10 1992-07-28 Hewlett-Packard Co. Test apparatus performing runtime replacement of program instructions with breakpoint instructions for processor having multiple instruction fetch capabilities
US5201043A (en) * 1989-04-05 1993-04-06 Intel Corporation System using both a supervisor level control bit and a user level control bit to enable/disable memory reference alignment checking
GB2230118B (en) 1989-04-05 1992-12-23 Intel Corp Microprocessor providing selectable alignment checking on memory references
US5450586A (en) 1991-08-14 1995-09-12 Hewlett-Packard Company System for analyzing and debugging embedded software through dynamic and interactive use of code markers
EP0537721B1 (de) 1991-10-15 1998-11-25 Hewlett-Packard Company Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor
US5649142A (en) * 1991-10-24 1997-07-15 Intel Corporation Method and apparatus for translating addresses using mask and replacement value registers and for accessing a service routine in response to a page fault
US5596717A (en) 1995-06-07 1997-01-21 Texas Instruments Incorporated Four state token passing alignment fault state circuit for microprocessor address misalignment fault generation
US5742755A (en) 1996-02-20 1998-04-21 Cyrix Corporation Error-handling circuit and method for memory address alignment double fault
US6205560B1 (en) * 1996-02-27 2001-03-20 Via-Cyrix, Inc. Debug system allowing programmable selection of alternate debug mechanisms such as debug handler, SMI, or JTAG
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US5915114A (en) 1997-02-14 1999-06-22 Hewlett-Packard Company Dynamic trace driven object code optimizer
US6085312A (en) * 1998-03-31 2000-07-04 Intel Corporation Method and apparatus for handling imprecise exceptions
US6282637B1 (en) * 1998-12-02 2001-08-28 Sun Microsystems, Inc. Partially executing a pending atomic instruction to unlock resources when cancellation of the instruction occurs
US6587966B1 (en) * 2000-04-25 2003-07-01 Hewlett-Packard Development Company, L.P. Operating system hang detection and correction

Also Published As

Publication number Publication date
US20020129301A1 (en) 2002-09-12
JP2002268915A (ja) 2002-09-20
GB0201892D0 (en) 2002-03-13
US6772372B2 (en) 2004-08-03
GB2373891A (en) 2002-10-02

Similar Documents

Publication Publication Date Title
DE10206422A1 (de) System und Verfahren zum Überwachen der Ausführung privilegierter Befehle
DE69614515T2 (de) Software-emulationssystem mit dynamischer übersetzung von emulierten befehlen zur erhöhung der verarbeitungsgeschwindigkeit
DE69621493T2 (de) Hardwareunterstützung zur schnellen Emulation von nicht-implementierten Befehlen
DE3650413T2 (de) Verfahren und Vorrichtung zur Annulierung eines Befehls.
DE2722099C2 (de)
DE69903629T2 (de) Prüfung der funktionsfähigkeit eines gerätetreibers
DE69505717T2 (de) Verfahren und Vorrichtung zur Feststellung und Durchführung von kreuzweisen Unterprogrammanrufen
DE69810064T2 (de) Verfahren und Anordnung zur Veränderung der Durchführung eines Nachfolgebefehls in einem Dataprozessor
DE69216020T2 (de) Verbessertes fehlersuchsystem und -verfahren, besonders für die fehlersuche in einer multi-architekturumgebung
DE69811474T2 (de) Rechnerarchitektur zur aufschiebung von exceptions statischer spekulativer befehle
DE3855029T2 (de) Supervisorverfahren für ein Rechnerbetriebssystem
DE60224774T2 (de) Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit
DE60115976T2 (de) Rechnersystem und Interruptvorgang
DE69618221T2 (de) Mechanismus zur wartung objektorientierter "methoden" der keine unterbrechung des computersystems erfordert
DE69622832T2 (de) Vorrichtung und verfahren für kooperative unterbrechungen in einer preemptiven prozessablauffolgeplanungsumgebung
DE69908682T2 (de) Prozessor mit Echtzeit-Ablaufsteuerung zur Fehlerbeseitigung ohne Fehlerbeseitigungsmonitor
DE102013219856A1 (de) Handhaben von potentiell ungültigen Ergebnissen während Vorauslaufen
DE69621405T2 (de) Verarbeitungssystem, prozessor, befehlsstromspeicher und kompilierer
DE69128908T2 (de) Verfahren zum Durchführen von erlässlichen Befehlen in einem Rechner
DE69320741T2 (de) Verfahren und Einrichtung zur Emulation der Umgebung eines Mikroprozessors
DE69807021T2 (de) Verfahren und Geraet zur Implementierung von mehrfachen Ruecksprungstellen
DE2364323C2 (de) Verfahren zur Behandlung von Unterbrechungsbedingungen in einer Datenverarbeitungsanlage
DE3850906T2 (de) Gastmaschinenablaufsteuerungssystem für virtuelles Maschinensystem.
DE10208784A1 (de) System und Verfahren zum Überwachen unausgerichteter Speicherzugriffe
DE69510966T2 (de) Verfahren zur Lenkung von Instruktionen in einem Rechnersystem und Rechnersystem zur Durchführung dieses Verfahrens

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal