DE102018128045A1 - Behandlung von Ausnahmen in einem Programm - Google Patents

Behandlung von Ausnahmen in einem Programm Download PDF

Info

Publication number
DE102018128045A1
DE102018128045A1 DE102018128045.9A DE102018128045A DE102018128045A1 DE 102018128045 A1 DE102018128045 A1 DE 102018128045A1 DE 102018128045 A DE102018128045 A DE 102018128045A DE 102018128045 A1 DE102018128045 A1 DE 102018128045A1
Authority
DE
Germany
Prior art keywords
instruction
additional functionality
exception
special
functionality
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.)
Pending
Application number
DE102018128045.9A
Other languages
English (en)
Inventor
Albrecht Mayer
Neil Stuart Hastie
Pawel Jewstafjew
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102018128045.9A priority Critical patent/DE102018128045A1/de
Priority to US16/678,215 priority patent/US11301249B2/en
Publication of DE102018128045A1 publication Critical patent/DE102018128045A1/de
Pending legal-status Critical Current

Links

Images

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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Es wird vorgeschlagen, dass Behandeln einer Ausnahme Folgendes umfasst: (i) Ausführen einer Rückkehr von der Ausnahme; und (ii) Ausführen einer nachfolgenden Anweisung mit einer zusätzlichen Funktionalität im Falle, dass die zusätzliche Funktionalität der nachfolgenden Anweisung durch eine spezielle Anweisung ausgelöst werden kann.

Description

  • Ausführungsformen der vorliegenden Erfindung beziehen sich auf die Ausnahmebehandlung in einem Programm.
  • Ein Programm kann mehrere aufeinander folgende Anweisungen umfassen, die üblicherweise nacheinander durch eine CPU verarbeitet werden. Allerdings kann jederzeit eine Ausnahme (z. B. ein Interrupt, eine Trap oder ein Aufgabenwechsel, auch bezeichnet als Task-Wechsel) auftreten, sodass die aktuelle Sequenz unterbrochen wird und die Ausnahme durchgeführt wird. Nach der Ausnahme (eine RFE-Anweisung (Return From Exception, Rückkehr von der Ausnahme) kann die letzte Anweisung der Ausnahme sein) wird die vorherige Sequenz fortgesetzt.
  • Die Aufgabe besteht darin, vorhandene Ausnahmebehandlungslösungen zu verbessern.
  • Dies wird entsprechend den Merkmalen der unabhängigen Ansprüche gelöst. Weitere Ausführungsformen ergeben sich aus den abhängenden Ansprüchen.
  • Die hier vorgeschlagenen Beispiele können insbesondere auf zumindest einer der folgenden Lösungen basieren. Kombinationen der folgenden Merkmale können genutzt werden, um ein gewünschtes Ergebnis zu erreichen. Die Merkmale des Verfahrens können mit beliebigen Merkmalen der Vorrichtung, Einrichtung oder des Systems kombiniert werden, oder umgekehrt.
  • Ein Verfahren zur Behandlung von Ausnahmen wird bereitgestellt, das Folgendes umfasst:
    • - Ausführen einer Rückkehr von einer Ausnahme;
    • - Ausführen einer nachfolgenden Anweisung mit einer zusätzlichen Funktionalität im Falle, dass die zusätzliche Funktionalität der nachfolgenden Anweisung durch eine spezielle Anweisung ausgelöst werden kann.
  • Daher liefern die spezielle Anweisung und die nachfolgende Anweisung eine kombinierte Anweisung, die (wenn kombiniert) zum Auslösen einer zusätzlichen Funktionalität (z. B. einer Verfolgungsfunktionalität, auch bezeichnet als Trace-Funktionalität) führt. Die Ausnahme kann zum Trennen beider Anweisungen führen, wodurch sie als atomare Anweisungen verarbeitet werden, ohne eine kombinierte Wirkung zum Auslösen der zusätzlichen Funktionalität. Um daher nicht zu verpassen, dass die zusätzliche Funktionalität ausgelöst wird, wird die zusätzliche Funktionalität für die nachfolgende Anweisung nach der Rückkehr von der Ausnahme immer ausgelöst (dies gilt natürlich nur, wenn für die nachfolgende Anweisung irgendeine zusätzliche Funktionalität verfügbar ist).
  • Entsprechend einer Ausführungsform umfasst die Ausnahme zumindest eines aus Folgendem:
    • - einen Interrupt;
    • - eine Trap;
    • - einen Aufgabenwechsel.
  • Entsprechend einer Ausführungsform kehrt die Rückkehr von einer Ausnahme zu dem vorher unterbrochenen Programm zurück.
  • Entsprechend einer Ausführungsform wird die zusätzliche Funktionalität nicht ausgelöst, wenn die nachfolgende Anweisung in einem speziellen Ausführungsmodus ausgeführt wird.
  • Entsprechend einer Ausführungsform ist der spezielle Ausführungsmodus ein sicherer Ausführungsmodus.
  • Entsprechend einer Ausführungsform umfasst die zusätzliche Funktionalität zumindest eines aus Folgendem:
    • - eine Verfolgungsfunktionalität;
    • - eine Überwachungsfunktionalität.
  • Entsprechend einer Ausführungsform sind die spezielle Anweisung und die nachfolgende Anweisung aufeinander folgende Anweisungen eines Programms.
  • Entsprechend einer Ausführungsform ist die spezielle Anweisung eine NOP-Anweisung.
  • Entsprechend einer Ausführungsform unterstützt die NOP-Anweisung eine Auswahl zwischen Optionen für die zusätzliche Funktionalität.
  • Entsprechend einer Ausführungsform werden Optionen für die zusätzliche Funktionalität über Bits der NOP-Anweisung ausgewählt.
  • Entsprechend einer Ausführungsform sind Optionen für die zusätzliche Funktionalität wie folgt:
    • - keine zusätzliche Funktionalität;
    • - zusätzliche Funktionalität für Speicheranweisung;
    • - zusätzliche Funktionalität für Ladeanweisung;
    • - zusätzliche Funktionalität für Speicher- oder Ladeanweisung.
  • Entsprechend einer Ausführungsform wird das Verfahren auf einem Betriebssystem ausgeführt.
  • Außerdem wird eine Vorrichtung zum Behandeln von Ausnahmen vorgeschlagen, die dazu angeordnet ist, die folgenden Schritte durchzuführen:
    • - Ausführen einer Rückkehr von einer Ausnahme;
    • - Ausführen einer nachfolgenden Anweisung mit einer zusätzlichen Funktionalität im Falle, dass die zusätzliche Funktionalität der nachfolgenden Anweisung durch eine spezielle Anweisung ausgelöst werden kann.
  • Entsprechend einer Ausführungsform umfasst die Vorrichtung zumindest eines aus Folgendem:
    • - eine Verarbeitungsvorrichtung;
    • - eine CPU;
    • - eine Überwachungseinheit;
    • - einen Chip;
    • - einen Single-Chip.
  • Außerdem wird eine Vorrichtung zur Behandlung von Ausnahmen bereitgestellt, die Folgendes umfasst:
    • - Mittel zum Ausführen einer Rückkehr von einer Ausnahme;
    • - Mittel zum Ausführen einer nachfolgenden Anweisung mit einer zusätzlichen Funktionalität im Falle, dass die zusätzliche Funktionalität der nachfolgenden Anweisung durch eine spezielle Anweisung ausgelöst werden kann.
  • Ferner wird ein Computerprogrammprodukt vorgeschlagen, das direkt in einen Speicher einer digitalen Verarbeitungsvorrichtung ladbar ist, umfassend Softwarecodeteile zum Durchführen der Schritte des Verfahrens, wie hier beschrieben.
  • Ausführungsformen werden Bezug nehmend auf die Zeichnungen gezeigt und dargestellt. Die Zeichnungen dienen dazu, das Grundprinzip darzustellen, sodass nur Aspekte dargestellt werden, die zum Verstehen des Grundprinzips erforderlich sind. Die Zeichnungen sind nicht maßstabsgetreu. In den Zeichnungen bezeichnen gleiche Bezugszeichen ähnliche Merkmale.
    • 1 zeigt einen Auszug aus einem Programm, umfassend eine Menge von Anweisungen;
    • 2 zeigt den Auszug aus dem Programm aus 1, wobei ein Interrupt nach der Anweisung 10 aufgetreten ist, der zu einer Menge von Anweisungen des Interrupts führt, bevor er zurückkehrt, um die Anweisung 11 zu verarbeiten;
    • 3 zeigt ein schematisches Diagramm, das die Schritte visualisiert, die zu verarbeiten sind, wenn eine RFE-Anweisung bestimmt wird.
  • Ein Programm kann mehrere aufeinander folgende Anweisungen umfassen, die üblicherweise nacheinander durch eine CPU verarbeitet werden. Allerdings kann jederzeit eine Ausnahme (z. B. ein Interrupt, eine Trap oder ein Aufgabenwechsel) auftreten, sodass die aktuelle Sequenz unterbrochen wird und die Ausnahme durchgeführt wird. Nach der Ausnahme (eine RFE-Anweisung (Return From Exception, Rückkehr von der Ausnahme) kann die letzte Anweisung der Ausnahme sein) wird die vorherige Sequenz fortgesetzt.
  • Allerdings ist es ein Problem, wenn die Ausnahme zwischen Anweisungen auftritt, die eine kombinierte Bedeutung haben, hier auch als „zusätzliche Funktionalität“ bezeichnet: Wenn eine erste Anweisung (10) eine Funktionalität einer nachfolgenden zweiten Anweisung (I1) auslöst, muss sichergestellt sein, dass eine solche Funktionalität selbst dann geschieht, wenn eine Ausnahme zwischen diesen Anweisungen 10 und I1 aufgetreten ist.
  • Die Anweisungen 10 und I1 können als spezifische Anweisungstypen definiert werden. Ein präemptives Betriebssystem (BS) kann eine Aufgabe während einer Interrupt-Routine (Aufgabenwechsel) ändern, sodass die Anweisung 11 möglicherweise gar nicht direkt ausgeführt wird, nachdem die Interrupt-Dienstroutine geendet hat. Stattdessen kann die Anweisung 11 später ausgeführt werden, wenn wieder zurück auf die vorherige Aufgabe gewechselt wird (d. h. die Aufgabe, in der die Anweisung 10 ausgeführt wurde).
  • Das Problem trifft insbesondere zu, wenn eine spezielle Anweisung (spezielle NOP-Anweisung („No Operation“, keine Operation) verwendet wird, um eine nachfolgende Anweisung weiter zu qualifizieren, was eine Speicheranweisung sein kann: Wenn eine solche spezielle Anweisung vor der nachfolgenden Speicheranweisung verwendet wird, kann eine Verfolgungsfunktionalität ausgelöst werden, d. h. Datenwert und Adresse werden über eine Verfolgungsschnittstelle ausgegeben. Wenn die spezielle Anweisung fehlt, wird keine Verfolgungsfunktionalität ausgelöst. Daher kann eine Ausnahme, die zwischen den Anweisungen 10 und I1 auftritt, zu einer fehlenden Verfolgungsfunktionalität führen. Dies ist besonders umständlich, da Ausnahmen mit einem beliebigen Muster auftreten können, was zu fehlenden Informationen auf der Verfolgungsschnittstelle führt.
  • Wie oben angegeben, kann, wenn ein Interrupt (oder eine Trap) nach der speziellen Anweisung auftritt, die Wirkung der speziellen Anweisung (d. h. die Verfolgungsfunktionalität) verloren gehen, d. h. keine zusätzliche Funktionalität wird ausgelöst, nachdem der Interrupt (oder die Trap) geendet hat.
  • Eine Interrupt-Dienstroutine oder ein Trap-Handler können die RFE-Anweisung als die letzte Anweisung umfassen.
  • Hier beschriebene Ausführungsformen setzen insbesondere eine Regel um, dass nach der RFE-Anweisung die Anweisung I1 (immer) mit ihrer zusätzlichen Funktionalität ausgeführt wird.
  • 1 zeigt eine Menge von Anweisungen 101, umfassend die Anweisungen 10 und 11. Ein Pfeil 102 zeigt die Ausführungsreihenfolge der Anweisungen 101 an.
  • Es wird angenommen, dass die Anweisung 10 eine spezielle Anweisung ist, anzeigend, dass in Kombination mit der Anweisung 11 eine zusätzliche Funktionalität, z. B. eine Verfolgungsfunktionalität, ausgelöst wird.
  • Die Ausführung ist wie folgt: An einem Punkt zeigt ein Programmzähler (nicht gezeigt) auf die spezielle Anweisung 10, die eine NOP sein kann, die eine Auswahl zwischen unterschiedlichen Optionen ermöglicht (mehr Details über die durch die NOP ausgewählten Optionen werden nachfolgend beschrieben). Wenn die Anweisung 11 auf die spezielle Anweisung 10 folgt, wird die zusätzliche Funktionalität ausgelöst, z. B. wird eine Verfolgungsfunktionalität (oder ein Verfolgungsmodus) ausgelöst (z. B. eingeschaltet). Dies gilt nur, wenn die Anweisung 11 direkt auf die spezielle Anweisung 10 folgt. Andernfalls wird die zusätzliche Funktionalität nicht ausgelöst.
  • 2 zeigt ein unterschiedliches Szenario, das auf 1 basiert. In diesem Beispiel tritt ein Interrupt 201 nach der speziellen Anweisung 10 auf, zu einer Ausführung mehrerer Anweisungen des Interrupts, d. h. Anweisungen IQ1 bis IQn, führend. Am Ende der Interrupt-Routine wird eine RFE-Anweisung ausgeführt, und die vorherige Aufgabe wird fortgesetzt durch Ausführen der Anweisung 11.
  • In diesem Fall würde die Anweisung 11 ausgeführt werden, ohne dass die spezielle Anweisung 10 ihre direkt vorangehende Anweisung ist. Aufgrund des Interrupts ist der Kontext der speziellen Anweisung 10 verloren, und die zusätzliche Funktionalität wird für die Anweisung 11 nicht ausgelöst.
  • Dies kann effizient verhindert werden durch standardmäßiges Auslösen der zusätzlichen Funktionalität, wenn die Anweisung I1 nach der RFE-Anweisung ausgeführt wird (oder nach einer beliebigen Rückkehr von der Ausnahme). In diesem Fall wird die Verfolgungsfunktionalität unabhängig davon ausgelöst, ob die spezielle Anweisung 10 die vorherige Anweisung vor dem Interrupt ist.
  • Ein Vorteil dieses Ansatzes ist, dass das Vorhandensein der vorherigen speziellen Anweisung 10 nicht während der gesamten Ausnahme gemerkt werden muss, d. h., der Prozessor oder das System muss die Anweisung nicht speichern, die vor dem Interrupt aufgetreten ist, für den Fall, dass sie bei Rückkehr von dem Interrupt relevant sein könnte.
  • Selbst Wechseln zwischen Aufgaben eines BS kann erfolgen, ohne dass die letzte spezielle Anweisung 10 gespeichert und vor Rückkehr zur vorherigen Aufgabe wieder abgerufen werden muss.
  • Daher wird die zusätzliche Funktionalität immer nach der RFE-Anweisung ausgelöst, unabhängig davon, ob eine spezielle Anweisung 10 vorhanden war oder nicht. Dies ist nichtsdestotrotz vorteilhaft, da es zu einem geringen Mehraufwand basierend auf der zusätzlichen Funktionalität führt, z. B. etwas mehr Verfolgungsausgabe als erforderlich (besser mehr Informationen als weniger).
  • 3 zeigt ein beispielhaftes Diagramm, das die Schritte visualisiert, die durchzuführen sind, nachdem eine Rückkehr von einer Ausnahme bestimmt wurde. In einem Schritt 301 wird geprüft, ob es eine Rückkehr zur aktuellen Aufgabe basierend auf der RFE-Anweisung gibt. Dies kann durch das BS in einer Weise umgesetzt werden, dass der nachfolgende Schritt 302 immer ausgeführt wird, für den Fall, dass eine RFE-Anweisung ausgegeben wurde. Im Schritt 302 wird die nachfolgende Anweisung (im Beispiel aus 2 die Anweisung 11) mit einer zusätzlichen Funktionalität ausgeführt. Natürlich kann dies nur gelten, wenn eine zusätzliche Funktionalität für diese nachfolgende Anweisung verfügbar ist, die normalerweise durch eine spezielle Anweisung ausgelöst werden würde (im Beispiel aus 2 die Anweisung 10). Daher ist es irrelevant, ob die spezielle Anweisung 10 die letzte Anweisung vor der Ausnahme war oder nicht; die Anweisung 10 wird ohnehin mit der zusätzlichen Funktionalität ausgeführt.
  • Es ist eine andere Option, dass die zusätzliche Funktionalität in Abhängigkeit von einem Status eines Prozessors ausgelöst wird (oder nicht). Dadurch kann, z. B., verhindert werden, dass sichere Daten einer geheimen Aufgabe durchsickern. Es gibt mehrere Zustände, wie etwa eine virtuelle Maschine, eine Aufgabe und/oder einen sicheren Zustand des Prozessors, die die zusätzliche Funktionalität auslösen können oder nicht (oder eine solche Auslösung verhindern).
  • Zusätzlich können verschiedene Operationen durchgeführt werden, wenn die Prüfung aus Schritt 301 ergibt, dass es keine RFE zur aktuellen Aufgabe gibt. Beispielsweise kann der Code der Ausnahme fortgeführt werden. Der Schritt 301 kann daher in den Code der Ausnahme eingebettet sein (angezeigt durch die gestrichelten Linien 303).
  • Weitere Details zur speziellen Operation
  • Als eine Option kann die spezielle Operation (10 in den oben gezeigten Beispielen) eine NOP-Anweisung („No Operation“, keine Operation) sein, die Codieren unterschiedlicher Optionen ermöglicht.
  • Beispiele solcher Optionen können wie folgt sein:
    • - Eine Option ist, dass es keine Auswirkung auf die nächste Anweisung gibt.
    • - Eine weitere Option ist, dass im Fall, dass die nächste Anweisung eine Speicheranweisung ist, die gespeicherte Adresse und der gespeicherte Wert über eine Verfolgungsschnittstelle einer CPU an eine Verfolgungseinheit (die auf einem Chip mit der CPU bereitgestellt sein kann) und weiter an, z. B., ein verfolgungsbasiertes Messwerkzeug ausgegeben werden.
    • - Entsprechend werden, z. B., als eine weitere Option oder als ein Teil der oben für die Speicheranweisung beschriebenen Option, im Fall, dass die nächste Anweisung eine Ladeanweisung ist, die geladene Adresse und der geladene Wert in die Verfolgungseinheit eingespeist.
  • Diese Optionen können über einzelne Bits der NOP-Anweisung codiert werden. Wenn beispielsweise eine Anweisung 16 Bit hat, können 12 Bit verwendet werden, um die NOP-Anweisung zu identifizieren, und 4 Bit können nicht für die NOP-Anweisung verwendet werden. Diese 4 Bit können dann genutzt werden, um die Optionen zu codieren (4 Bit können verwendet werden, um 24=16 Optionen zu codieren). Dies ist vergleichbar mit 16 NOP-Anweisungen, die durch 12 Bit der 16 Bit identifiziert werden, wohingegen die übrigen Bits „DC“ (don't care, irrelevant) sind. Allerdings ist dies nur ein Beispiel; die Anweisung kann mehr oder weniger als 16 Bit haben, usw.
  • Daher wird, nach der RFE-Anweisung, die Verfolgungsausgabe für Ladeanweisungen und/oder Speicheranweisungen immer geliefert. Der Bandbreitenmehraufwand, der aus unerwünschten Verfolgungsnachrichten herrührt, ist begrenzt: Wenn es beispielsweise 10k Interrupts/Traps pro Sekunde gibt und durchschnittlich jede 10. Anweisung eine Lade- oder Speicheranweisung ist, gibt es 1k Ereignisse vom Typ „II-Anweisungen nach RFE-Anweisung“ pro Sekunde. Dies kann zu einer zusätzlichen Verfolgungsbandbreite führen, die sich auf weniger als 8 kByte/s belaufen kann, was unter Berücksichtigung eines Verwendungsfalls in der realen Welt vernachlässigbar sein kann.
  • In einem oder mehreren Beispielen können die hier beschriebenen Funktionen zumindest teilweise in Hardware umgesetzt sein, wie etwa in spezifischen Hardwarekomponenten oder einem Prozessor. Allgemeiner können die Techniken in Hardware, Prozessoren, Software, Firmware oder einer beliebigen Kombination daraus umgesetzt sein. Wenn in Software umgesetzt, können die Funktionen auf einem computerlesbaren Medium gespeichert oder darüber als eine oder mehrere Anweisungen übertragen werden und durch eine hardwarebasierte Verarbeitungseinheit ausgeführt werden. Computerlesbare Medien können computerlesbare Speichermedien umfassen, was einem greifbaren Medium entspricht, wie etwa einem Datenspeichermedium oder einem Kommunikationsmedium, umfassend jedes Medium, das Übertragung eines Computerprogramms von einem Platz zu einem anderen ermöglicht, z. B. entsprechend einem Kommunikationsprotokoll. Auf diese Weise können computerlesbare Medien im Allgemeinen (1) greifbaren computerlesbaren Speichermedien, die nicht flüchtig sind, oder (2) einem Kommunikationsmedium, wie etwa einem Signal oder einer Trägerwelle, entsprechen. Datenspeichermedien können alle verfügbaren Medien sein, auf die über einen oder mehrere Computer oder einen oder mehrere Prozessoren zugegriffen werden kann, um Anweisungen, Code und/oder Datenstrukturen zur Umsetzung der in dieser Offenbarung beschriebenen Techniken abzurufen. Ein Computerprogrammprodukt kann ein computerlesbares Medium umfassen.
  • Als Beispiel, und nicht als Einschränkung, können solche computerlesbaren Speichermedien RAM, ROM, EEPROM, CD-ROM oder andere optische Plattenspeicher, magnetische Plattenspeicher, Flash-Speicher oder jedes andere Medium umfassen, das verwendet werden kann, um gewünschten Programmcode in der Form von Anweisungen oder Datenstrukturen zu speichern und auf das durch einen Computer zugegriffen werden kann. Außerdem wird jede Verbindung korrekt als computerlesbares Medium bezeichnet, d. h. als ein computerlesbares Übertragungsmedium. Wenn beispielsweise Anweisungen von einer Website, einem Server oder einer anderen externen Quelle unter Verwendung eines Koaxialkabels, eines faseroptischen Kabels, eines verdrillten Paares, per DSL (Digital Subscriber Line) oder über drahtlose Technologien, wie etwa Infrarot, Funk und Mikrowelle übertragen werden, sind das Koaxialkabel, das faseroptische Kabel, das verdrillte Paar, DSL oder drahtlose Technologien, wie etwa Infrarot, Funk und Mikrowelle, in der Definition von Medium enthalten. Es versteht sich allerdings, dass computerlesbare Speichermedien und Datenspeichermedien keine Verbindungen, Trägerwellen, Signale oder andere transiente Medien umfassen, sondern stattdessen auf nicht-transiente, greifbare Speichermedien gerichtet sind. Disk und Disc, wie hier verwendet, umfassen Compact Disc (CD), Laser Disc, optische Platte (Disc), Digital Versatile Disc (DVD), Floppy-Disk und Blu-ray Disc, wobei Disks Daten üblicherweise magnetisch reproduzieren, während Discs Daten optisch mit Laser reproduzieren. Kombinationen des oben genannten sollen auch im Umfang von computerlesbaren Medien enthalten sein.
  • Anweisungen können durch einen oder mehrere Prozessoren ausgeführt werden, wie etwa eine oder mehrere zentrale Verarbeitungseinheiten (CPU), Digitalsignalprozessoren (DSPs), universelle Mikroprozessoren, anwendungsspezifische integrierte Schaltungen (ASICs), feldprogrammierbare Logikarrays (FPGAs) oder andere äquivalente integrierte oder diskrete Logikschaltungsanordnungen. Entsprechend kann sich der Begriff „Prozessor“, wie hier verwendet, auf eine beliebige der vorgenannten Strukturen oder jede andere Struktur beziehen, die für eine Umsetzung der hier beschriebenen Techniken geeignet ist. Zusätzlich kann, in gewisser Hinsicht, die hier beschriebene Funktionalität innerhalb dedizierter Hardware- und/oder Softwaremodule, die zum Codieren und Decodieren ausgelegt sind, bereitgestellt sein oder kann in einen kombinierten Codec integriert sein. Außerdem können die Techniken vollständig in einer oder mehreren Schaltungen oder Logikelementen umgesetzt sein.
  • Die Techniken dieser Offenbarung können in einer breiten Vielfalt von Vorrichtungen und Einrichtungen umgesetzt sein, umfassend ein drahtloses Handset, eine integrierte Schaltung (IC) oder eine Menge von ICs (z. B. einen Chipsatz). Verschiedene Komponenten, Module oder Einheiten werden in dieser Offenbarung beschrieben, um funktionale Aspekte von Vorrichtungen hervorzuheben, die dazu ausgelegt sind, die offenbarten Techniken durchzuführen, die aber nicht notwendigerweise eine Umsetzung durch unterschiedliche Hardwareeinheiten erfordern. Stattdessen können, wie oben beschrieben, verschiedene Einheiten zu einer einzelnen Hardwareeinheit kombiniert werden oder durch eine Sammlung von zusammenwirkenden Hardwareeinheiten, umfassend einen oder mehrere Prozessoren, wie oben beschrieben, in Verbindung mit geeigneter Software und/oder Firmware bereitgestellt werden.
  • Obwohl verschiedene beispielhafte Ausführungsformen der Erfindung offenbart wurden, versteht es sich für Fachleute, dass verschiedene Änderungen und Modifizierungen vorgenommen werden können, die einige der Vorteile der Erfindung erreichen, ohne vom Geist und Schutzumfang der Erfindung abzuweichen. Für hinreichend geschulte Fachleute ist es offensichtlich, dass andere Komponenten, die die gleiche Funktion erfüllen, in geeigneter Weise ersetzt werden können. Es ist anzumerken, dass Merkmale, die Bezug nehmend auf eine spezifische Figur erläutert wurden, mit Merkmalen von anderen Figuren kombiniert werden können, selbst in Fällen, in denen dies nicht ausdrücklich erwähnt wurde. Ferner können die Verfahren der Erfindung in entweder allen Softwareumsetzungen, unter Verwendung der geeigneten Prozessoranweisungen, oder in hybriden Umsetzungen, die eine Kombination von Hardwarelogik und Softwarelogik zum Erreichen der gleichen Ergebnisse nutzen, erreicht werden. Solche Modifikationen am erfindungsgemäßen Konzept solchen durch die beigefügten Ansprüche abgedeckt sein.

Claims (16)

  1. Verfahren zur Behandlung von Ausnahmen, das Folgendes umfasst: - Ausführen einer Rückkehr von einer Ausnahme; - Ausführen einer nachfolgenden Anweisung mit einer zusätzlichen Funktionalität im Falle, dass die zusätzliche Funktionalität der nachfolgenden Anweisung durch eine spezielle Anweisung ausgelöst werden kann.
  2. Verfahren nach Anspruch 1, wobei die Ausnahme zumindest eines aus Folgendem umfasst: - einen Interrupt; - eine Trap; - einen Aufgabenwechsel.
  3. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Rückkehr von einer Ausnahme zu dem vorher unterbrochenen Programm zurückkehrt.
  4. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die zusätzliche Funktionalität nicht ausgelöst wird, wenn die nachfolgende Anweisung in einem speziellen Ausführungsmodus ausgeführt wird.
  5. Verfahren nach Anspruch 4, bei dem der spezielle Ausführungsmodus ein sicherer Ausführungsmodus ist.
  6. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die zusätzliche Funktionalität zumindest eines aus Folgendem umfasst: - eine Verfolgungsfunktionalität; - eine Überwachungsfunktionalität.
  7. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die spezielle Anweisung und die nachfolgende Anweisung aufeinanderfolgende Anweisungen eines Programms sind.
  8. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die spezielle Anweisung eine NOP-Anweisung ist.
  9. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die NOP-Anweisung eine Auswahl zwischen Optionen für die zusätzliche Funktionalität unterstützt.
  10. Verfahren nach Anspruch 7, bei dem die Optionen für die zusätzliche Funktionalität über Bits der NOP-Anweisung ausgewählt werden.
  11. Verfahren nach einem der Ansprüche 7 oder 8, bei dem es die folgenden Optionen für die zusätzliche Funktionalität gibt: - keine zusätzliche Funktionalität; - zusätzliche Funktionalität für Speicheranweisung; - zusätzliche Funktionalität für Ladeanweisung; - zusätzliche Funktionalität für Speicher- oder Ladeanweisung.
  12. Verfahren nach einem der vorhergehenden Ansprüche, das auf einem Betriebssystem ausgeführt wird.
  13. Vorrichtung zum Behandeln von Ausnahmen, die dazu angeordnet ist, die folgenden Schritte durchzuführen: - Ausführen einer Rückkehr von einer Ausnahme; - Ausführen einer nachfolgenden Anweisung mit einer zusätzlichen Funktionalität im Falle, dass die zusätzliche Funktionalität der nachfolgenden Anweisung durch eine spezielle Anweisung ausgelöst werden kann.
  14. Vorrichtung nach Anspruch 1, bei der die Vorrichtung zumindest eines aus Folgendem umfasst: - eine Verarbeitungsvorrichtung; - eine CPU; - eine Überwachungseinheit; - einen Chip; - einen Single-Chip.
  15. Vorrichtung zur Behandlung von Ausnahmen, die Folgendes umfasst: - Mittel zum Ausführen einer Rückkehr von einer Ausnahme; - Mittel zum Ausführen einer nachfolgenden Anweisung mit einer zusätzlichen Funktionalität im Falle, dass die zusätzliche Funktionalität der nachfolgenden Anweisung durch eine spezielle Anweisung ausgelöst werden kann.
  16. Computerprogrammprodukt, das direkt in einen Speicher einer digitalen Verarbeitungsvorrichtung ladbar ist, umfassend Softwarecodeteile zum Durchführen der Schritte des Verfahrens nach einem der Ansprüche 1 bis 10.
DE102018128045.9A 2018-11-09 2018-11-09 Behandlung von Ausnahmen in einem Programm Pending DE102018128045A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102018128045.9A DE102018128045A1 (de) 2018-11-09 2018-11-09 Behandlung von Ausnahmen in einem Programm
US16/678,215 US11301249B2 (en) 2018-11-09 2019-11-08 Handling exceptions in a program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102018128045.9A DE102018128045A1 (de) 2018-11-09 2018-11-09 Behandlung von Ausnahmen in einem Programm

Publications (1)

Publication Number Publication Date
DE102018128045A1 true DE102018128045A1 (de) 2020-05-14

Family

ID=70469241

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018128045.9A Pending DE102018128045A1 (de) 2018-11-09 2018-11-09 Behandlung von Ausnahmen in einem Programm

Country Status (2)

Country Link
US (1) US11301249B2 (de)
DE (1) DE102018128045A1 (de)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0918288A2 (de) * 1997-11-26 1999-05-26 Digital Equipment Corporation Anordnung zum räumlichen und zeitlichen Abtasten in einem Rechnerspeichersystem
US20060282710A1 (en) * 2005-05-16 2006-12-14 Texas Instruments Incorporated Event-generating instructions
US9342429B1 (en) * 2013-03-15 2016-05-17 Google Inc. Counting events using hardware performance counters and annotated instructions

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5182811A (en) * 1987-10-02 1993-01-26 Mitsubishi Denki Kabushiki Kaisha Exception, interrupt, and trap handling apparatus which fetches addressing and context data using a single instruction following an interrupt
US5146581A (en) * 1988-02-24 1992-09-08 Sanyo Electric Co., Ltd. Subprogram executing data processing system having bank switching control storing in the same address area in each of memory banks
US6134653A (en) * 1998-04-22 2000-10-17 Transwitch Corp. RISC processor architecture with high performance context switching in which one context can be loaded by a co-processor while another context is being accessed by an arithmetic logic unit
US6289446B1 (en) * 1998-09-29 2001-09-11 Axis Ab Exception handling utilizing call instruction with context information
US6308319B1 (en) * 1999-02-22 2001-10-23 Sun Microsystems, Inc. Thread suspension system and method using trapping instructions in delay slots
US6314510B1 (en) * 1999-04-14 2001-11-06 Sun Microsystems, Inc. Microprocessor with reduced context switching overhead and corresponding method
US6886094B1 (en) * 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
JP3795744B2 (ja) * 2000-11-21 2006-07-12 沖電気工業株式会社 マイクロコントローラ
US6892260B2 (en) * 2001-11-30 2005-05-10 Freescale Semiconductor, Inc. Interrupt processing in a data processing system
US20110167496A1 (en) * 2009-07-07 2011-07-07 Kuity Corp. Enhanced hardware command filter matrix integrated circuit
US8332564B2 (en) * 2009-10-20 2012-12-11 Arm Limited Data processing apparatus and method for connection to interconnect circuitry
KR101445634B1 (ko) * 2014-01-27 2014-10-06 주식회사 이글루시큐리티 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법
US9411542B2 (en) * 2014-02-21 2016-08-09 Analog Devices Global Interruptible store exclusive

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0918288A2 (de) * 1997-11-26 1999-05-26 Digital Equipment Corporation Anordnung zum räumlichen und zeitlichen Abtasten in einem Rechnerspeichersystem
US20060282710A1 (en) * 2005-05-16 2006-12-14 Texas Instruments Incorporated Event-generating instructions
US9342429B1 (en) * 2013-03-15 2016-05-17 Google Inc. Counting events using hardware performance counters and annotated instructions

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ARM: ARM® Architecture Reference Manual, ARMv7-A and ARMv7-R edition. C.c. Cambridge, England, 20.05.2014 (DDI 0406C.c (ID051414)). S. 1-2, 5-9, 206, 377, 1135-1136, 2023-2024, 2184, 2187. - Firmenschrift *

Also Published As

Publication number Publication date
US20200150962A1 (en) 2020-05-14
US11301249B2 (en) 2022-04-12

Similar Documents

Publication Publication Date Title
DE2953432C1 (de) Vorrichtung zum Testen eines Mikroprogramms
DE2629459C2 (de)
DE2714805C2 (de)
DE2744531C2 (de) Anordnung zur Auswahl von Unterbrechnungsprogrammen in einer Datenverarbeitungsanlage
DE2316296C2 (de) Mikroprogrammierbarer Prozessor
DE2328058C2 (de) Fehlerdiagnoseeinrichtung in einer digitalen Datenverarbeitungsanordnung
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE2755371A1 (de) Ein/ausgabe-verarbeitungssystem
DE112006002908T5 (de) Technik für die Kommunikation und Synchronisation von Threads
DE2750721A1 (de) Ein/ausgabe-system
DE2225841C3 (de) Verfahren und Anordnung zur systematischen Fehlerprüfung eines monolithischen Halbleiterspeichers
DE2244402A1 (de) Datenverarbeitungsanlage
DE102006039747A1 (de) Verfahren für Kontextzustandsmanagement
DE102014002473A1 (de) System und verfahren zur erhöhung der lockstep-kern-verfügbarkeit
DE2400064A1 (de) Speicherpruefanordnung und diese verwendendes endgeraetsystem in einem datenverarbeitungssystem
DE2747633A1 (de) Dv-system mit einer unterbrechungseinrichtung
EP2962205B1 (de) Mehrkern-prozessorsystem mit fehleranalysefunktion
DE2350229A1 (de) Datenverarbeitungsanlage, insbesondere als steuereinrichtung fuer fernsprechvermittlungsanlagen
DE102004003102A1 (de) System und Verfahren zum Bestimmen einer Transaktionszeitüberschreitung
DE102011119585A1 (de) Verbesserte skalierbare CPU für die codierte Ausführung von Software in hochabhängigen sicherheitsrelevanten Anwendungen
DE112016006060T5 (de) Technologien zum Aufruf von nativem Code unter Verwendung binärer Analyse
DE2657897A1 (de) Externes geraet, das die ureingabe fest gespeichert enthaelt, fuer elektronische datenverarbeitungsanlagen mit einem zentralen speicher
DE112011100536T5 (de) Transaktionsverarbeitungssystem
DE102018128045A1 (de) Behandlung von Ausnahmen in einem Programm
WO2000043885A1 (de) Verfahren zum tracen von daten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication