DE102006005480B3 - Mikroprozessor und Compiler - Google Patents

Mikroprozessor und Compiler Download PDF

Info

Publication number
DE102006005480B3
DE102006005480B3 DE200610005480 DE102006005480A DE102006005480B3 DE 102006005480 B3 DE102006005480 B3 DE 102006005480B3 DE 200610005480 DE200610005480 DE 200610005480 DE 102006005480 A DE102006005480 A DE 102006005480A DE 102006005480 B3 DE102006005480 B3 DE 102006005480B3
Authority
DE
Germany
Prior art keywords
memory
register
data
limits
admissibility
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
DE200610005480
Other languages
English (en)
Inventor
Detlef Jantz
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.)
Technische Universitaet Clausthal
Original Assignee
Technische Universitaet Clausthal
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 Technische Universitaet Clausthal filed Critical Technische Universitaet Clausthal
Priority to DE200610005480 priority Critical patent/DE102006005480B3/de
Priority to PCT/DE2007/000103 priority patent/WO2007087782A1/de
Application granted granted Critical
Publication of DE102006005480B3 publication Critical patent/DE102006005480B3/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing

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 Security & Cryptography (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

Ein Mikroprozessor mit mindestens einer Befehlsausführungseinheit (EX) zum Ausführen von Prozessorbefehlen und mindestens einem Registerspeicher eines Registerblocks (RF) zum temporären Zwischenspeichern von Datenworten wird beschrieben. Mindestens ein Registerspeicher im Registerblock (RF) hat weiterhin Speicherplatz zum Zwischenspeichern von für ein Datenwort jeweils festgelegten Zulässigkeitsgrenzwerten und eines Kontrollwortes, die zusammen mit dem Datenwort im Registerspeicher zwischenspeicherbar sind. Die Befehlsausführungseinheit (EX) ist vorgesehen, um in Abhängigkeit von dem Kontrollwort eine Zulässigkeitsüberprüfung auszuführen, ob das Datenwort in dem durch die zugeordneten Zulässigkeitsgrenzwerte festgelegten Bereich liegt.

Description

  • Die Erfindung betrifft einen Mikroprozessor mit mindestens einer Befehlsausführungseinheit zum Ausführen von Prozessorbefehlen und mindestens einem Registerspeicher im Registerblock zum temporären Zwischenspeichern von Datenworten.
  • Die Erfindung betrifft weiterhin einen Compiler zum Erzeugen von Objekt- und/oder Maschinencode zur Steuerung eines solchen Mikroprozessors. In komplexen Systemen muss sichergestellt werden, dass ein Prozessor keine an sich anderen Prozessen vorbehaltene Speicheradressen nutzt. Zudem ist sicherzustellen, dass sich Variablen innerhalb vorgegebener Grenzen halten.
  • Für die Speicherverwaltung verfügen herkömmliche Prozessoren über Speicherverwaltungseinheiten (Memory Management Units-MMU), die gegebenenfalls auch eine Speicherschutzeinheit (Memory Protection Unit-MPU) beinhaltet. Eine herkömmliche Speicherschutzeinheit MPU bietet einen gewissen Zugriffschutz, indem ein gemeinsam genutzter Speicher in seinem Adressbereich sehr grobkörnig in Abschnitte eingeteilt wird. Für diese Abschnitte werden Zugriffsrechte definiert und jeder fehlerhafte Zugriff wird abgelehnt. In diesem Fall wird eine Ausnahmewarnung erzeugt, die so genannte Exception. Die Ausnahme wird wiederum durch ein besonderes Programm im kompletten Softwaresystem, die so genannte Exception Service Routine, behandelt, so dass ein qualifiziertes Fortlaufen des (fehlerhaften) Programms zumindest möglich ist.
  • Die datenveränderlichen Werte stammen bei Mikroprozessoren aus einem Speicher, dem so genannten Hauptspeicher. Weiterhin werden Registervariablen, die unter anderem durch Optimierungen eines Compilers entstehen können genutzt. Diese temporären Registervariablen, deren Gültigkeitsbereich beschränkt ist werden ausschließlich in einem der zentralen Register des Prozessors gehalten. Abgesehen von den Registervariablen wird bei einem lesenden oder schreibenden Zugriff auf die Datenwerte des Hauptspeichers oder gegebenenfalls Cache-Speichers zugegriffen. Der Zugriff wird durch die Speicherverwaltungseinheit MMU kontrolliert. Zum Zugriff auf die im Hauptspeicher oder Cache-Speicher abgelegten Daten werden Zeiger benötigt, die die aktuelle Zugriffsadresse der Daten im Speicher beinhalten. Diese Zeiger unterliegen keinerlei Kontrolle, dass heißt sie können durch Veränderungen auf Bereiche zeigen, die nicht mehr erlaubt sind, für die also keine Zugriffsberechtigung mehr vorliegt.
  • Der herkömmliche MPU-Mechanismus gewährt einen Zugriffsschutz zwischen verschiedenen Prozessen. Zwei verschiedene Prozesse haben per Definition unterschiedliche Speicherbereiche, so dass ein Zugriff eines Prozesses außerhalb des zugehörigen Speicherbereichs sicher erkannt wird. Innerhalb eines Prozesses können fehlerhafte Zugriffe nur in Ausnahmefällen entdeckt werden, z. B. wenn ein Teil der Befehlssequenz fehlerhaft als Daten interpretiert werden. Der MPU-Mechanismus ist damit sehr eingeschränkt. Die herkömmlichen Mechanismen bieten auch keine Überwachung von Wertebereichen für einzelne Daten, falls deren zulässiger Bereich eingeschränkt ist. Hierzu ist eine Softwareüberwachung erforderlich, die zu einer drastischen Zunahme der Laufzeit führt.
  • Aus der DD 75162 ist eine Schaltungsanordnung zur Durchführung des Speicherschutzes für einen in Blöcke aufgeteilten Hauptspeicher einer Datenverarbeitungsanlage bekannt. Damit soll gewährleistet werden, dass Programme nicht auf Daten ei nes anderen Programms zugreifen und diese verändern. Hierzu wird die Blockadresse eines vorangehenden Speicherzugriffs in ein Blockadressenregister aufgenommen. Jedem Block ist dabei ein Speicherschlüsselregister zugeordnet, das einen Speicherschlüssel enthält. Durch Vergleich des Speicherschlüssels mit einem dem Programm zugeordneten Schutzschlüssel wird der Speicherzugriff gesteuert. Wenn die Blockadressen des vorangehenden Speicherzugriffs und des aktuellen Speicherzugriffs nicht mehr übereinstimmen, wird ein neuer Speicherschlüssel gelesen. Dadurch entfällt ein ständiger Zugriff auf das jedem Block zugeordnete Speicherschlüsselregister.
  • In der DE 41 15 152 C2 ist ein kartenförmiger Datenträger mit einer Datenschützenden Mikroprozessorschaltung zur Verhinderung des Zugriffs auf die im Speicher abgelegten Daten beschrieben. Ein Komparator vergleicht die Inhalte eines Adressregisters und eines Hilfsregisters, wobei in dem Hilfsregister vorprogrammierte Adressen eines freigegebenen oder zu schützenden Speicherbereichs abgelegt sind. Die Zuordnung der zulässigen Adressräume erfolgt bezogen auf das auszuführende Programm.
  • In der EP 0 813 714 B1 ist eine Mehrbenutzer-Datenverarbeitungsanlage mit Speicherschutz offenbart, die eine Speicherbereichs-Zugriffstabelle in einem Betriebssystemspeicherbereich hat. In der Speicherbereichs-Zugriffstabelle sind pro Anwenderspeicherbereich der zugelassene Adressraum für die im jeweiligen Anwenderspeicherbereich geladenen Befehle hinterlegt. Vor einer Befehlsausführung wird überprüft, ob der vom jeweiligen Befehl angeforderte Zugriff auf eine Speicherzelle im zugelassenen Adressraum liegt und gegebenenfalls die Ausführung des Befehls gesperrt.
  • In der DE 1 952 158 A1 ist ein Speicherschutzverfahren für einen zu schützende Informationen enthaltenen Speicher beschrieben, bei dem getrennt von dem Speicher obere und untere Grenzwerte für zugängliche Speicheradressen gespeichert werden. Ein Adressenteil einer Speicheradresse wird mit diesen Grenzwerten verglichen, um den Speicher je nach Ergebnis des Vergleichs zu sperren oder zugänglich zu ma chen. Die oberen und unteren Grenzwerte werden in Abhängigkeit von dem zu schützenden Speicher von einer Peripherieverarbeitungseinheit (PPU) in Registern abgelegt, während unabhängig davon Adressen von einer zentralen Prozessoreinheit (CPU) an einen Adressbus gelegt werden.
  • Weiterhin ist aus der EP 0 011 685 B1 eine programmierbare Speicherschutzvorrichtung für Mikroprozessorsysteme bekannt, bei der Speicherblöcken zugeordnete oberen und unteren Grenzwerte in einem Grenzadressregister abgelegt werden. Zur Überprüfung, ob eine Speicheradresse zulässig ist oder nicht, erfolgt ein Vergleich der auf einem Adressbus anliegenden Adresse mit den im Grenzwertregister definierten Grenzwerten. Die Speicherschutzmechanismen sind sehr eingeschränkt und bieten keine Überwachung von Wertebereichen für einzelne Daten, falls deren zulässiger Bereich eingeschränkt ist.
  • Aufgabe der Erfindung ist es daher, einen verbesserten Prozessor zu schaffen, mit dem die schnelle Überprüfung der Gültigkeit des Datenwortes in Abhängigkeit von zugeordneten Zulässigkeitsgrenzwerten und Kontrollwerten möglich ist.
  • Die Aufgabe wird mit dem Prozessor der eingangs genannten Art dadurch gelöst, dass mindestens ein Registerspeicher im Registerblock weiterhin Speicherplatz zum Zwischenspeichern von für ein Datenwort jeweils festgelegten Zulässigkeitsgrenzwerten und eines Kontrollwortes hat, die zusammen mit dem Datenwort im Registerspeicher zwischenspeicherbar sind, und dass die Befehlsausführungseinheit vorgesehen ist, um in Abhängigkeit von dem Kontrollwort eine Zulässigkeitsüberprüfung, ob das Datenwort in dem durch die zugeordneten Zulässigkeitsgrenzwerte festgelegten Bereich liegt, auszuführen.
  • Durch die Erweiterung des zum temporären Zwischenspeichern des Datenworts vorgesehenen Registerblocks um Speicherplätze für die Zulässigkeitsgrenzwerte und das Kontrollwort ist es nunmehr möglich, zusammen mit dem zu einer Befehlsausführung mit der Befehlsausführungseinheit in den Registerspeicher geschriebenen Datenwort, das eine Speicheradresse oder ein Operand sein kann, speziell für dieses Datenwort festgelegte Grenzwerte vorzugeben und mit in den Registerspeicher einzuschreiben. In Abhängigkeit von dem Kontrollwort, das ebenfalls auf das Datenwort bezogen und gleichfalls mit geladen ist, wird dann eine Überprüfung des Datenwortes durchgeführt, ob dieses innerhalb der Grenzwerte liegt. Durch das Kontrollwort kann z. B. festgelegt werden, ob eine Überprüfung stattfinden soll oder nicht. Zudem kann die Methode der Überprüfung durch das Kontrollwort steuerbar sein.
  • Ein Registerblock im Sinne der vorliegenden Erfindung wird als Register-File in der Gesamtheit aller Register verstanden. Ein Registerelement aus einem Registerblock wird Registerspeicher genannt. Ein Registerspeicher hat eine Anzahl von Registerteilen bzw. Registerbereichen, in denen jeweils Datenworte abgelegt werden können. Die Registerteile eines Registerspeichers enthalten nicht nur wie herkömmlich einen Datenregisterteil, sondern zusätzlich Grenzwertregisterteile für den minimalen und maximalen Grenzwert und Kontrollwortregisterteile für das Kontrollwort.
  • Der Prozessor ermöglicht somit eine feinkörnige und schnelle Überprüfung der Gültigkeit von Datenworten, ohne dass die Verarbeitungsgeschwindigkeit wesentlich reduziert wird. Es sind lediglich nur die zusätzlichen Zulässigkeitsgrenzwerte und das Kontrollwort zusammen mit dem Datenwort einzulesen und die Befehlsausführungseinheit muss die Überprüfung in Abhängigkeit von dem Kontrollwort vornehmen, dass heißt mindestens eine Auswertung des Kontrollwortes vorsehen.
  • Das Datenwort kann beispielsweise ein Adresszeiger auf eine Speicheradresse eines Speichers sein, der adressspezifisch zu schützen ist. Der Speicher kann ein von mehreren Peripheriegeräten gemeinsam genutzter (Haupt-)Speicher oder aber auch ein prozessorbezogener Cache-Speicher oder ähnliches sein.
  • Die Zulässigkeitsgrenzwerte legen beispielsweise obere und untere Grenzen eines für die Adressierung mit dem Adresszeiger als Datenwort zugelassenen Speicherbereiches fest.
  • Es ist aber auch denkbar, dass das Datenwort ein Wert einer Variablen ist. Dann legen die Zulässigkeitsgrenzwerte die Wertebereichsgrenzen für die Variable fest.
  • Auf diese Weise kann beim Inkrementieren des Adresszeigers oder der Variablen mit der Befehlsausführungseinheit ständig überprüft werden, ob der inkrementierte Adresszeiger oder die inkrementierte Variable noch innerhalb der vorgegebenen Grenzen liegen.
  • Besonders vorteilhaft ist es, wenn die Schaltungseinrichtung eine Befehlsanweisungs-Ladeeinheit zum Lesen einzelner Befehlsanweisungen aus einem Befehlsroutinenspeicher, in dem Objekt- und/oder Maschinencode in Form aufeinander folgender Anweisungen abgelegt ist, und einer an die Befehls-Ladeeinheit angeschlossene Decodier- und Ladeeinheit zum Decodieren der eingelesenen Befehlsanweisungen und Steuern des Einladens von Operanden aus dem zugeordneten Registerspeicher in die Decodier- und Ladeeinheit vorgesehen sind. Die Decodier- und Ladeinheit hat dabei mit der Befehlsausführungseinheit verbundene Ausgänge.
  • Auf diese Weise können Anweisungen, vorzugsweise Maschinen-Code (hier in Assemblerschreibweise dargestellt) sukzessiv eingelesen und zur Steuerung der Befehlsausführungseinheit genutzt werden.
  • Ausgänge der Decodier- und Ladeeinheit sind vorzugsweise mit einer Speicherzugriffseinheit zur Zugriffsteuerung auf einen internen oder externen Datenspeicher verbunden. Damit kann mit den im Registerspeicher abgelegten Adresszeigern ein Zugriff auf den internen oder externen Datenspeicher erfolgen.
  • Die Speicherzugriffseinheit ist zudem vorzugsweise mit einer Busschnittstelleneinheit verbunden, so dass der Zugriff auf den Datenspeicher mit der Busschnittstelleneinheit über einen Adress- und/oder Datenbus erfolgen kann.
  • Die Zulässigkeitsüberprüfung der in dem jeweiligen Registerspeicher abgelegten Datenworte erfolgt vorzugsweise verborgen mit der Ausführungseinheit. Hierzu sind Be fehlsanweisungen zum Auslesen von Datenworten zusammen mit den zugeordneten Zulässigkeitsgrenzwerten und dem Kontrollwort aus dem Speicher in die Registerspeicher bzw. in die umgekehrte Richtung vorgesehen. Die Befehlsanweisungen sind dabei so implementiert, dass sie im Falle einer Grenzwertüber- oder -unterschreitung eine vordefinierte Fehlerbehandlungsroutine starten.
  • Das Auslesen und die Ausführung der Befehlsanweisungen werden dabei mit Hilfe der oben erwähnten Befehlsanweisungs-Ladeeinheit und Decodier- und Ladeeinheit in Verbindung mit der Befehlsausführungseinheit vorgenommen.
  • Der Prozessor ist vorzugsweise so eingerichtet, dass die den Datenworten zugeordneten Zulässigkeitsgrenzwerte und Kontrollworte durch den Programmcode definierbar sind. Auf diese Weise ist eine flexible Vorgabe der Zulässigkeitsgrenzwerte und Kontrollwerte in Verbindung mit den zugeordneten Datenworten möglich, ohne dass diese beim Start eines Programms relativ statisch vordefiniert in ein bei Ausführung des Programmcodes unverändertes Grenzwertregister gespeichert werden müssen. Vielmehr ist während der Laufzeit des Programms eine ständige Anpassung der Grenzwerte in Abhängigkeit von dem jeweils zu überprüfenden Datenwort möglich.
  • Besonders vorteilhaft ist es, wenn die Befehlsausführungseinheit mindestens zwei gesondert ansteuerbare Rechenwerke hat. Ein Rechenwerk ist dabei exklusiv für die Zulässigkeitsüberprüfung und das mindestens andere Rechenwerk für die Ausführung von sonstigen Befehlsanweisungen reserviert. Auf diese Weise kann die Zulässigkeitsüberprüfung transparent für das ausgeführte Programm parallel zu anderen Aufgaben in der Prozessorhauptschleife, sozusagen im Verborgenen ausgeführt werden. Es ist lediglich eine zusätzliche Flusssteuerung für die Zulässigkeitsüberprüfung und das Ein- und Auslesen der Zulässigkeitsgrenzwerte und Kontrolldaten aus dem Registerspeicher erforderlich.
  • Der Mikroprozessor ist vorzugsweise ein RISC-Prozessor (Reduced Instruction Set Computer). Bei RISC-Prozessoren erfolgt der Speicherzugriff auf Daten mit Hilfe von Lade- und Speicher-Datentransferbefehlen (Load und Store). Speicherzugriffe und logisch/arithmetische Operationen sind strikt voneinander getrennt, so dass während des Ein- und Ausladens von Daten in/aus dem Registerspeicher die Befehlsausführungseinheit nicht für andere Operationen genutzt wird. Es ist daher ohne weitere Kollisionskontrolle mit anderen Programmroutinen möglich, die Load- und Store- und Datentransferbefehle um Routinen zur Zulässigkeitsüberprüfung zu erweitern und hierfür die während des Speicherzugriffs exklusiv zur Verfügung stehende Ausführungseinheit zu nutzen. Weiterhin gibt es nur einen Speicherzugriff für einen Operanden zur jeweiligen Befehlsabarbeitungsfolge und dies auch nur bei den Lade- und Speicher-Datentransferbefehlen, was die Speicherzugriffsberechnungen begrenzt und vereinfacht.
  • Die Aufgabe wird weiterhin mit dem Compiler der eingangs genannten Art dadurch gelöst, dass der Compiler zur Erzeugung von Objekten und/oder Maschinencode eingerichtet ist, der Anweisungen zum Zwischenspeichern von Kontrollwerten und Zulässigkeitsgrenzwerten in Verbindung mit einem Datenwort in einem Registerspeicher enthält, so dass bei Ausführung des Objekt- und/oder Maschinencodes auf dem Mikroprozessor eine temporäre Zwischenspeicherung von einem Datenwort jeweils zugeordneten Zulässigkeitsgrenzwerten und einem Kontrollwert in einem Registerspeicher zusammen mit dem Datenwort und eine Zulässigkeitsüberprüfung des Datenwortes in Abhängigkeit von dem Kontrollwert auf Basis der Zulässigkeitsgrenzwerte erfolgt.
  • Damit ist eine automatische Generierung von Zulässigkeitsüberwachungsanweisungen möglich, ohne dass diese in einem Programmcode von einem Programmierer vorgegeben werden müssen. Die Zulässigkeitsüberprüfung findet somit im Hintergrund statt.
  • Vorteilhafte Ausführungsformen sind in den Unteransprüchen beschrieben.
  • Die Erfindung wird nachfolgend anhand von Ausführungsbeispielen mit den beigefügten Zeichnungen näher erläutert. Es zeigen:
  • 1 – Blockdiagramm von wesentlichen Teilen einer RISC-Prozessorarchitektur mit vier-stufigen Phasenpipelining;
  • 2 – Flussdiagramm einer typischen Programmcode-Hauptschleife mit Teilphasen und zusätzlichem Kontrolldatenfluss zur Grenzwertüberprüfung;
  • 3 – Skizze von Speicherbereichen eines herkömmlichen Registerspeichers im Vergleich zu dem erfindungsgemäß erweiterten Registerspeicher;
  • 4 – Skizze des Bezugs eines grenzwertüberwachten Adresszeigers auf Bereiche eines Hauptspeichers;
  • 5 – Skizze des Bezugs einer grenzwertüberwachten Variablen auf einen Zahlenwertebereich und ein erlaubtes Intervall.
  • Die 1 lässt ein Blockdiagramm der für die vorliegende Erfindung wesentlichen Teil eines RISC-Prozessors erkennen, der einen Registerblock RF (Register File) mit einer Anzahl von Registerspeichern hat. Mit Hilfe von Lade- und Speicher-Datentransferbefehlen werden Operanden in einen jeden Registerspeicher im Registerblock RF geladen. Erfindungsgemäß ist der Registerblock RF dahingehend erweitert, dass zusammen mit dem Operanden, dass heißt dem geladenen Datenwort, zugeordnete Zulässigkeitsgrenzwerte und ein Kontrollwert in einen jeden Registerspeicher RF eingeladen werden können.
  • Ausgeführte logische und arithmetische Befehle beziehen sich ausschließlich auf die Datenworte, dass heißt die bereits in den internen Registerblock RF eingeladene Operanden.
  • Auf diese Weise können alle möglichen Operationen durchgeführt werden, im Zweifels durch einen Ladebefehl gefolgt von der gewünschten Operation. Durch die Load/Store-Architektur wird eine gleichmäßige Auslastung der Pipelinestufen bei unterschiedlichen Befehlen erreicht.
  • Der RISC-Prozessor hat weiterhin eine Befehlsanweisungs-Ladeeinheit IF (Instruction Fetch), mit der die nächste anstehende Instruktion aus einem Programmcode-Speicher (nicht dargestellt) geholt wird. Die Befehlsanweisung wird dann an eine Decodier- und Ladeeinheit DL (Decode/Load-Unit) weitergeleitet. Hier werden die Befehlsanweisungen endgültig decodiert und die Datenworte als Operanden aus dem Registerblock RF oder eines aus dem Speicher geladen. Die Operanden können Daten sein, die beispielsweise miteinander addiert werden sollen, es können aber auch Adresszeiger auf die Daten in einem Speicher sein, also die Adresse der zu verarbeitenden Variablen.
  • Die decodierte Instruktion wird mitsamt den Operanden anschließend an eine Befehlsausführungseinheit EX (Execute-Unit) weitergeleitet, die in der Regel eine arithmetische Logikeinheit ALU und eine Speicherzugriffskontroll-Recheneinheit MA (Memory Access) hat. Hier findet die eigentliche Operation statt, deren Ergebnisse an eine Rückschreibeeinheit WB (Write-Back-Unit) weitergegeben werden. Gegebenfalls werden solche Ergebnisse auch an den Eingang der Befehlsausführungseinheit EX, d. h. den Eingang der arithmetischen Logikeinheit ALU oder der Speicherzugriffskontroll-Recheneinheit MA, und gegebenenfalls an weiter davor liegende Einheiten zurückgeleitet. Dies wird auch als "Data-Forwarding" bezeichnet. Die Rückschreibeeinheit WB schreibt dann die Operationsergebnisse in den Registerblock RF zurück. Jede der Einheiten IF, DL, EX (ALU, MA) und WB benötigen im angestrebten Idealfall einen Takt zur Ausführung. Die Parallelität der Elemente der Befehlsausführungseinheit EX, d. h. der arithmetischen Logikeinheit ALU und Speicher zugriffskontroll-Recheneinheit MA ist einhaltbar, da Speicherzugriffe und logische/arithmetische Operationen strikt von einander getrennt sind. Dies führt zu einer verkürzten, balancierten Pipeline.
  • Ein Speicherzugriff Lade- oder Speicherbefehl läuft wie folgt ab:
    Nach dem Einladen einer Befehlsanweisung mit der Befehlsanweisungs-Ladeeinheit IF werden die Operanden in die Decodier- und Ladeeinheit DL geladen. Die Operanden sind die Speicheradresse bei Lade- und Speicher-Befehlen sowie ein neuer Speicherinhalt bei einem (schreibenden) Speicherbefehl. Falls die Speicheradresse in einem Registerspeicher des Registerblocks RF steht, wird dies auch Registerindirekte Adressierung genannt. Es erfolgt also eine Speicher-indirekte Adressierung durch direkte Registerangabe.
  • Diese Register-indirekte Adressierung ist in allen RISC-Architekturen vorhanden, da sie optimal hierfür passend ist. Mit Hilfe dieser Adressierung können alle Speicheradressen erreicht werden (dies ist in RISC-Architekturen mittels einer Speicher-direkten Adressangabe nicht möglich) und alle weiteren Operationen, wie Inkrement, Offset etc. können ebenfalls einfach durchgeführt werden. Eine RISC-Architektur, die als Load/Store-Architektur ausgeführt ist, benötigt somit nur diese Register-indirekte Adressierung als Speicherzugriffsadressierung, bzw. ein Compiler braucht nur diese zu nutzen. Dies gilt auch für abgeleitete Adressierungsformen, wie Register-indirekte Adressierung mit Index, Offset etc..
  • Ein üblicher Prozessor hat aufgrund der verwendeten Digitaltechnik Register, die je nach Bitbreite n von 0 bis (2n) – 1 reichen, also beispielsweise bei einem 32-Bit Prozessor von 0 bis 0FFFFFFFFhex. Dies ist in der Regel ein singulärer Wertespeicher.
  • In einem Kontrollmechanismus, der zwischen erlaubten und unerlaubten Werten unterscheiden können soll, werden zusätzliche Angaben benötigt. Diese werden bei der erfindungsgemäßen Schaltungsanordnung in zusätzlichen Bits neben dem Registerteil (Registerbereich) für das Datenwort bzw. den Operanden gespeichert und somit gleichzeitig damit untrennbar verbunden. Die Registerspeicher im Registerblock RF enthalten somit neben dem Registerteil für das Datenwort auch Registerteile für die Zulässigkeitsgrenzwerte sowie ein Kontrollwort. Vorzugsweise werden alle relevanten Register eines Prozessors entsprechend erweitert, so dass nicht nur ein einzelnes Register oder ein Pufferregister, sondern jedes Adress- und Universalregister Erweiterungsplätze für Zulässigkeitsgrenzwerte und das Kontrollwort erhält. Für die Erweiterung wird die Menge an Speicherbits erheblich vergrößert und zwar um das Vielfache der intrinsischen Daten- bzw. Adressbreiten. Bei einer typischen 32-Bit Architektur werden jeweils 4 × 32 Bit = 128 Bit im Registerspeicher abgelegt.
  • Es handelt sich aber nicht um ein 128 Bit Register oder eine 128 Bit Architektur im üblichen Sinne, sondern um ein 4 × 32 Bit Registerüberwachungsset mit bestimmten Teilaufgaben. Die zusätzlichen drei Datenworte, dass heißt der obere und untere Grenzwert als Zulässigkeitsgrenzwert und das Kontrollwort dienen der unsichtbaren Überwachung des im Registerspeicher abgelegten zugeordneten Datenwortes und nicht den eigentlichen Rechen- oder Datenstrukturoperationen, die weiterhin mit dem einen ursprünglichen Datenwort des Registerspeichers erfolgen. Mit Hilfe der zusätzlich gespeicherten Zulässigkeitsgrenzwerte und des Kontrollwertes wird eine Zulässigkeitsüberprüfung mit dem Ziel der Verhinderung der Einstellung bzw. der Benutzung von unerlaubten Werten durchgeführt. Hierzu wird ein eingeschränkter Bereich durch zwei Grenzwerte, nämlich den oberen und unteren Grenzwert aufgestellt. Nur ein Wert innerhalb dieses erlaubten Bereiches ist ein erlaubter Wert. Ein Wert außerhalb ist ein unerlaubter Wert und wird gesondert behandelt. Die Negation dieser Überwachung liefert die viel stärkere Aussage, dass kein Zugriff auf unerlaubte Bereiche mehr möglich ist.
  • Die Zulässigkeitsüberwachungsfunktionalität der Schaltungsanordnung ist eine Kontrolleinheit, die aus demselben Programmstrom gespeist wird, wie die zur Verarbeitung der Datenworte genutzten Teile des Prozessors. Der Hauptprogrammstrom wird mit einem eingebetteten Kontrollprogrammstrom automatisch, permanent und transparent kontrolliert.
  • Die 2 lässt ein Flussdiagramm einer Programmhauptschleife mit Teilphasen und einem zusätzlichen Zulässigkeitsüberprüfungs-Kontrolldatenfluss erkennen.
  • Nach dem Abholen eines Befehls mit der Befehlsanweisungs-Ladeeinheit IF und der Decodierung des Befehls der Decodier- und Ladeeinheit DL werden in der Hauptschleife unter Umständen Sprungbefehle oder ähnliches auf neue Programmroutinen ausgeführt. Mit der Decodierung eines Befehls und der Benutzung eines Registeroperanden werden zudem Kontrolldaten aus dem Registerspeicher im Registerblock RF geladen, nämlich die oberen und unteren Grenzwerte und das Kontrollwort, die dem im Registerspeicher abgelegten Datenwort zugeordnet sind.
  • In der Hauptschleife werden von der Decodier- und Ladeeinheit DL dann die Operanden aus dem Registerspeicher im Registerblock RF geholt. Anschließend werden die Befehlsanweisungen ausgeführt.
  • Zur Zulässigkeitsüberprüfung erfolgt zudem ein Auslesen der Kontrolldaten aus dem Registerspeicher, dass heißt der dem Operanden (Datenwort) im Register zugeordneten Zulässigkeitsgrenzwert und des Kontrollwortes. In Abhängigkeit von dem Kontrollwort findet dann eine Grenzwertüberprüfung (insbesondere eine Schreibkontrolle) statt. Das Kontrollwort steuert hierbei, ob eine Zulässigkeitsüberprüfung stattfinden soll oder nicht und gegebenenfalls ob eine Adressbereichsüberprüfung eines Adresszeigers oder eine Wertebereichsüberprüfung einer Variablen durchgeführt werden soll.
  • Für den Fall, dass das Ergebnis der Zulässigkeitsüberprüfung negativ ist, dass heißt das der Adresszeiger oder das Datenwort der Variablen den vorgegebenen Bereich über- oder unterschreitet, wird eine Sonderbehandlungsroutine eingeleitet.
  • In der Hauptschleife wird ansonsten das Ergebnis in die Rückschreibeeinheit WB, die Befehlsausführungseinheit EX, die Befehlsanweisungs-Ladeeinheit IF u. ä. zurück geschrieben und der nächste Schritt des Programmablaufs gestartet. Es beginnt damit eine neue Runde der Hauptschleife.
  • Die 3 lässt eine Skizze des Inhalts des Registerspeichers im Registerblock RF erkennen.
  • In einem herkömmlichen Registerspeicher kann ein einziger Operand als binärer Wert abgelegt werden. Dieser binäre Wert stellt eine Variable dar, die je nach Bitbreite n Werte von 0 bis (2n)-1 annehmen kann. Dies gilt sowohl für einfache Zahlen wie für Adresswerte als auch prinzipiell für alle Zahlenformate. Herkömmlicherweise enthält ein Registerspeicher diesen Wert als singulären Wert.
  • Zusätzlich zu dem Registerteil für die Variable (Datenwort) sind Registerteile für einen unteren und oberen Grenzwert als Zulässigkeitsgrenzwerte und für ein Kontrollwort in dem Registerspeicher vorgesehen. Im Programmablauf laufen die Berechnungen des funktionalen Programmcodes aus dem Hauptstrom nur mit dem eigentlichen Registerdatenwortteil ab und der resultierende Datenwert bleibt immer in dem als Register bezeichneten Teil des Registerspeichers im Registerblock RF.
  • Im Registerteil "Minimum" ist die untere Grenze gespeichert. Dieser Basiswert stellt den untersten erlaubten Wert der im Bereich "Register" abgelegten Variablen dar. Darunter bzw. davor darf dieser Wert nicht sinken. Es handelt sich somit im Wesentlichen um eine Zusatzkonstante zur Datendeklaration. Im Registerteil "Maximum" des Registerspeichers ist dementsprechend die obere Grenze gespeichert. Dieser Grenzwert stellt den höchsten erlaubten Wert dar. Darüber bzw. danach darf dieser Wert nicht ansteigen. Dies ist im Wesentlichen ebenfalls eine Zusatzkonstante zur Datendeklaration.
  • Das Kontrollwort Control besteht aus einer Codierung für mehrere statische und dynamische Typbeschreibungen. So muss im Wesentlichen in einem Bit vermerkt werden, dass es sich um einen mit einem bestimmten Datenladebefehl geladenen und hinsichtlich einer Grenzwertüber- oder -unterschreitung zur kontrollierenden Wert handelt oder nicht. Die Registerspeicher und speziell die Datenwertteile müssen auch noch für andere Verwendungen und Berechnungen, die der Zulässigkeitsüberwachung nicht genügen, zu verwenden sein. Das Kontrollwort dient wachung nicht genügen, zu verwenden sein. Das Kontrollwort dient daher zur Einsteuerung des Überwachungsmechanismus.
  • Die vorzunehmende Zulässigkeitsüberprüfung funktioniert nach einer einfachen Abfrage, die in der Syntax der Programmiersprache C wie folgt dargestellt werden kann:
    if (Register<Minimum || Register>Maximum) {exception(DPE_FAILURE);}
  • Die Funktion "exception" steht hier für den üblichen Exception-Mechanismus eines Prozessors, der die normale Bearbeitung abbricht und eine Sonderbehandlung über eine vereinbarte Routine einleitet. Im vorliegenden Fall der Grenzwertüberprüfung ist dies eine Reaktion auf einen aufgetretenen falschen Wert.
  • Die 4 lässt eine schematische Darstellung des Einsatzes der Zulässigkeitsüberwachung in der Adresskontrolle erkennen. Mit der Zulässigkeitsüberwachung werden Zeigeradressen auf Einhaltung von erlaubten Adressbereichen überprüft. Das wirksame Schutzelement ist der überwachte Adresszeiger, der die Adresse enthält, die im Bereich "Register" des Registerspeichers im Registerblock RF (siehe 3) abgelegt ist. Die Berechnungen und der resultierende Adresszeigerwert laufen nur mit diesem Teil ab. Die Adresse darf sich innerhalb der oberen und unteren Grenzwerte "Base" und "Limit" bewegen, aber nicht darüber hinaus. Ein Speicherzugriff mit einem falschen Adresswert führt zur Ausnahmeroutine (Exception).
  • Der Bereich "Base" des Registerspeichers enthält den Basiswert und stellt damit den untersten erlaubten Wert für die Adresse und den Anfang des Datenobjektes dar. Darunter bzw. davor darf diese nicht sinken. Der Bereich "Limit" des Registerspeichers enthält den Grenzwert bzw. das Ende des Datenobjektes und stellt somit den höchsten erlaubten Wert für die Adresse dar. Darüber bzw. danach darf diese nicht ansteigen.
  • Das Kontrollwort Control dient der Feinsteuerung des Überwachungsmechanismus und aktiviert hier vor allem die Adresskontrolle. In dem Kontrollwort ist unter anderem codiert, dass es sich um einen Adresszeiger (Pointer) handelt, so dass die entsprechende auf die Adresszeigerprüfung spezialisierte Kontrolle durchgeführt werden kann.
  • Der Adresszeiger definiert zusammen mit den unteren und oberen Grenzwerten (Base und Limit) ein Speicherblockobjekt, der einen bestimmten Datenbereich im Hauptspeicher des Prozessors darstellt. Das Speicherblockobjekt ist durch seine Anfangsadresse und seine Länge bzw. äquivalent durch die sich daraus ergebende Endadresse charakterisiert. Um sicherzustellen, dass nur in diesem Speicherbereich gearbeitet wird und nur dort Daten gelesen, verändert oder geschrieben werden, wird die Zulässigkeitsüberprüfung durchgeführt. Die Speicherbereiche werden durch Datendeklarationen in einem Programmquellcode gebildet oder werden vom Compiler dynamisch angefordert und bilden bestimmte Arbeitsbereiche. Die Grenzwertüberwachung sorgt nun dafür, dass alle Zugriffe im gerade anstehenden Programmablauf auch nur in diesem Arbeitsbereich bleiben und nicht versehentlich an andere Stellen im Speicher gelangen.
  • Der Hauptspeicher eines Prozessors, auch als Arbeitsspeicher bezeichnet, ist üblicherweise als Random Access Memory (RAM) ausgeführt und erlaubt einen wahlfreien Zugriff auf eine jede Speicherstelle. Dies ist eine Voraussetzung für frei einstellbare Adresszeiger. Je nach verwendeter Bitbreite n spannt dies einen Wertebereich von 0 bis (2n)-1 auf. Dafür stehen z. B. für einen 32-Bit-Prozessor die unterste Adresse 0 und die oberste Adresse 0FFFFFFFFhex.
  • Die vorzunehmende Zulässigkeitsüberprüfung funktioniert nach einer einfachen Abfrage, die in der Syntax der Programmiersprache C wie folgt lautet:
    if (Adresse<Base || Adresse>Limit) {exception(DPE_FAILURE);}.
  • Die Funktion "exception" steht hierbei für den üblichen Ausnahmemechanismus eines Prozessors, der die normale Abarbeitung abbricht und eine Sonderbehandlung einleitet. In diesem Falle ist dies eine Reaktion auf einen falschen aufgetretenen Wert für die Adresszeiger.
  • Die Befehlsroutine für die Zulässigkeitsüberprüfung kann transparent für das ausgeführte Programm parallel zu anderen Aufgaben in der Prozessorhauptschleife ausgeführt werden. Diese Erweiterung bedingt dann unter anderem auch ein zusätzliches Rechenwerk und eine zusätzliche Flusssteuerung für die Zulässigkeitsüberprüfung, wobei bei einem RISC-Prozessor wie ausgeführt prinzipiell auch das ALU-Rechenwerk mitverwendet werden kann. Die Zulässigkeitsüberprüfung wird durch das Kontrollwort Control gesteuert.
  • Die Adresskontrolle wird beispielhaft anhand der folgenden Syntax in der Programmiersprache C erläutert:
    Figure 00170001
  • Die Speicherbelegung und der Link-Vorgang liefert z. B. die Startadresse 04000000hex für die Variable "buffer". Die Größe dieses Datenobjektes beträgt 256 Bytes laut Deklaration. Bei einem Zugriff wird z. B. das Adressregister A01 geladen mit:
    Adresse = 04000000hex
    Base = 04000000hex
    Limit = 040000FFhex
    Control = 100hex, z. B. zum Einschalten der Grenzwertüberwachung für Adressen.
  • Eine Schleife die hochzählt und alle Zeichen verwendet, verändert auch die effektive Adresse in diesem Array-Zugriff. Falls z. B. der Parameter "Länge" größer als 256 ist, was in der Praxis als Fehler oft vorkommt, würde beim Überschreiten des Index 255 (auf->256) und der Adresse 040000FFhex ein unerlaubtes Datenbyte an der Stelle 04000100hex beschrieben werden. Die Zulässigkeitsüberwachung löst genau davor eine "exception" aus und verhindert dies. Die Übersetzung des Beispiels in C-Syntax in Assembler Code sieht beispielsweise wie folgt aus. Die speziellen Befehle sind fett gekennzeichnet:
    Figure 00180001
    Figure 00190001
  • Die 5 lässt eine Skizze des Bezugs von Variablen mit zugeordneten Zulässigkeitsgrenzwerten in Form oberer und unterer Grenzwerte und einem Kontrollwert zu einem Zahlenwertebereich erkennen. Mit der Schaltungsanordnung können nämlich auch alle Variablen gegen bestimmte Grenzen kontrolliert werden. In den meisten Anwendungsgebieten ist nämlich nur eine bestimmte Wertemenge aus der prinzipiell darstellbaren Wertemenge zulässig.
  • Das wirksame Schutzelement ist wieder der um die Zulässigkeitsgrenzwerte und das Kontrollwort erweiterte Registerspeicher (3).
  • Die Berechnungen und der resultierende Datenwert erfolgen nur mit den im Bereich "Variable" des Registerspeichers im Registerblock RF abgelegten Datenworten. Die Variable darf sich innerhalb der beiden Grenzwerte "unteren Grenze" und "obere Grenze" bewegen, aber in keine Richtung darüber hinaus.
  • Eine Benutzung mit einem falschen variablen Wert führt zur Ausnahmefunktion (exception).
  • Die untere Grenze stellt den untersten erlaubten Wert für die Variable dar. Darunter darf diese nicht sinken. Die obere Grenze stellt den höchsten erlaubten Wert für die Variable dar. Darüber hinaus darf diese nicht ansteigen.
  • Das Kontrollwort Control dient der Feinsteuerung des Überwachungsmechanismus und aktiviert vor allem die Grenzwertüberprüfung, d. h. die Wertebereichskontrolle.
  • Das erlaubte Intervall ist ein bestimmter Wertebereich im Zahlenbereich des Prozessors, der durch seine untere Grenze charakterisiert ist. In vielen Fällen geht es darum nur in diesem erlaubten Intervall zu arbeiten und alle Veränderungen der Variable sicher in diesem Wertebereich zu halten. Die Wertebereiche werden durch Datendeklarationen in einem Programmquellcode gebildet. Der Prozessor sorgt nun dafür, dass alle Berechnungen im gerade anstehenden Programmablauf auch nur in diesem Wertebereich bleiben und nicht versehentlich ungültige Werte annehmen können, indem jeder Verstoß gemeldet wird.
  • Der Zahlenwertebereich ist der Wertebereich aller Zahlen und hängt von der verwendeten Bitbreite ab. Bei einer verwendeten Bitbreite n spannt dies einen Wertebereich von 0 bis (2n)-1 auf. Dafür stehen z. B. für ein 32-Bit Prozessor die Ganzzahlen (Integer) 0 bis FFFFFFFFhex. Bei jeglichen anderen Zahlenformaten, wie z. B. Fließkommazahlen (Float) sind die Werte entsprechend dem Minimum/Maximum angepasst.
  • Die Zulässigkeitsüberprüfung zur Wertebereichskontrolle erfolgt mit einer einfachen Abfrage die in der Syntax der Programmiersprache C wie folgt formuliert werden kann:
    if (Variable<Untere_Grenze || Variable>Obere_Grenze) {exception(DPE_FAILURE);}
  • Die Funktion "exception" steht wiederum für den üblichen Ausnahmemechanismus eines Prozessors, der die normale Abarbeitung abbricht und eine Sonderbehandlung einleitet, in diesem Falle eine Reaktion auf einen falschen aufgetretenen Wert der Variablen.
  • Die Zulässigkeitsüberprüfung von Wertebereichen wird beispielhaft mit der nachfolgenden Syntax in der Programmiersprache C erläutert.
  • Figure 00210001
  • Die Variable "regler" wird durch die Pragma- Anweisung zu einer überprüften Variablen mit Rahmenkonstanten deklariert. Dabei werden die Konstanten gleich mit definiert. Bei einem Zugriff wird z. B. das Datenregister D01 mit einer Wertekopie wie folgt geladen:
    Variable = 20
    Untere_Grenze = 10
    Obere_Grenze = 10000
    Control Wert = 200hex,
    zum Beispiel zum Einschalten als Grenzwertüberprüfung für Variablen.
  • Die angegebene Funktion wird dauernd aufgerufen und bewirkt eine Veränderung an der Variablen "regler". Wenn beispielsweise angenommen wird, dass die Funktion zwei Mal mit einem cmd=2 aufgerufen wird, wird 2 × 8 vom Initialwert 20 abgezogen. Daraus ergibt sich die Wertfolge: 20 -> 12 -> 4. Der Wert 4 ist aber nicht mehr erlaubt, da er kleiner als die untere Grenze ist. Es wird daher eine Ausnahmeroutine (exception) ausgelöst.
  • Die Übersetzung des C-Beispiels in Assembler-Code sieht beispielsweise wie folgt aus:
    Figure 00220001
  • Die speziellen Befehle sind fett gekennzeichnet.
  • Die Zulässigkeitsüberprüfung von Variablen kann vorteilhaft in sicherheitskritischen Anwendungen eingesetzt werden. So ermöglicht der Prozessor eine wichtige Kontrolle, die inhärent ohne Weiteres auf Sicherungsanweisungen funktioniert. Der Prozessor kann beispielsweise für eine Flugzeugturbine genutzt werden, die im Flug nicht ausgeschaltet werden darf.
  • Die für die Zulässigkeitsüberwachung genutzten Operanden sind neue Datentypen. Daher werden für die Darstellung der neuen Operanden Codierungen im Maschinencode benötigt. Auch die Darstellung im Assembler-Code ist etwas aufwendiger als die bisherigen monolithischen Wertebyte (8-Bit), Word (16-Bit), DWord (32-Bit) oder QWord (64-Bit), da der Operand selber eine ganze Struktur an Teilwerten besitzt und diese aus Gründen der Lesbarkeit einzeln notiert werden können müssen. In der Implementierung eines Assemblers kann daher zu einem komplexen variablen Zusatzoperator gegriffen werden, der aus den Teilwertangaben das insgesamt 128-Bit umfassende Operandenwort formt.
  • Im Maschinencode werden für die Transferbefehle der Adresszeiger oder zu schützenden Variablen jeweils zusätzliche Befehle benötigt, die entweder im zur Verfügung stehenden Bitbereich des Maschinencodes noch frei sein müssen oder in einem neu konstruierten Befehlssatz geschaffen werden können. Prinzipiell können diese Befehle in bestehende Prozessorarchitekturen durch geeignete Codierungen nachgerüstet werden oder es kann konsistenter ein neuer Befehlssatz konstruiert werden.
  • Erweiterte Compiler können zur Erstellung von Objekt- und/oder Maschinencode vorgesehen sein, der Befehlsanweisungen zur Zulässigkeitsüberwachung enthält und den Prozessor auf der oben beschriebenen Weise steuert.

Claims (13)

  1. Mikroprozessor mit mindestens einer Befehlsausführungseinheit (EX) zum Ausführen von Prozessorbefehlen und mindestens einem Registerspeicher in einem Registerblock (RF) zum temporären Zwischenspeichern von Datenworten, dadurch gekennzeichnet, dass mindestens ein Registerspeicher im Registerblock (RF) weiterhin Speicherplatz zum Zwischenspeichern von für ein Datenwort jeweils festgelegten Zulässigkeitsgrenzwerten und eines Kontrollwortes hat, die zusammen mit dem Datenwort im Registerspeicher zwischenspeicherbar sind, und dass die Befehlsausführungseinheit (EX) vorgesehen ist, um in Abhängigkeit von dem Kontrollwort eine Zulässigkeitsüberprüfung, ob das Datenwort in dem durch die zugeordneten Zulässigkeitsgrenzwerte festgelegten Bereich liegt, auszuführen.
  2. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet, dass das Datenwort ein Adresszeiger auf eine Speicheradresse eines Speichers der Schaltungseinrichtung ist und die Zulässigkeitsgrenzwerte obere und untere Grenzen eines für die Adressierung mit dem Adresszeiger zulässigen Speicherbereiches festlegen.
  3. Mikroprozessor nach Anspruch 1, dadurch gekennzeichnet, dass das Datenwort ein Wert einer Variablen ist und die Zulässigkeitsgrenzwerte obere und untere Wertebereichsgrenzen für die Variable festlegen.
  4. Mikroprozessor nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass eine Befehlsanweisungs-Ladeeinheit (IF) zum Lesen einzelner Befehlsanweisungen aus einem Befehlsroutinenspeicher, in dem Objekt- und/oder Maschinencode in Form aufeinander folgender Befehlsanweisungen abgelegt ist, und einer an die Befehlsanweisungs-Ladeeinheit (IF) angeschlossene Decodier- und Ladeeinheit (DL) zum Decodieren der eingelesenen Befehlsanweisungen und Steuern des Einladens von Operanden aus dem zugeordneten Registerspeicher im Registerblock (RF) in die Decodier- und Ladeeinheit (DL) vorgesehen sind, wobei die Decodier- und Ladeeinheit (DL) mit der Befehlsausführungseinheit (EX) verbundene Ausgänge hat.
  5. Mikroprozessor nach Anspruch 4, dadurch gekennzeichnet, dass Ausgänge der Decodier- und Ladeeinheit (DL) weiterhin mit einer Speicherzugriffskontroll-Recheneinheit (MA) zur Zugriffssteuerung auf einem internen oder externen Datenspeicher verbunden sind und die Speicherzugriffskontroll-Recheneinheit (MA) ein die Befehle zum Speicherzugriff ausführender Teil der Befehlsausführungseinheit (EX) ist.
  6. Mikroprozessor nach Anspruch 5, dadurch gekennzeichnet, dass die Speicherzugriffskontroll-Recheneinheit (MA) mit einer Busschnittstelleneinheit (BIU) verbunden ist, wobei der Zugriff auf den Datenspeicher mit der Busschnittstelleneinheit (BIU) über einen Adress- und/oder Datenbus erfolgt.
  7. Mikroprozessor nach einem der Ansprüche 4 bis 6, dadurch gekennzeichnet, dass Befehlsanweisungen zum Auslesen von Datenworten und den zugeordneten Zulässigkeitsgrenzwerten und dem Kontrollwort aus dem Registerspeicher im Registerblock (RF) und zur Zulässigkeitsüberprüfung vorgesehen sind und die Befehlsanweisungen so implementiert sind, dass sie im Falle einer Grenzwertüber- oder -unterschreitung eine Fehlerbehandlungsroutine starten.
  8. Mikroprozessor nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Schaltungseinrichtung so eingerichtet ist, dass die den Datenworten zugeordneten Zulässigkeitsgrenzwerte und Kontrollwerte durch einen Programmcode definierbar sind.
  9. Mikroprozessor nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Befehlsausführungseinheit (EX) mindestens zwei gesondert ansteuerbare Rechenwerke hat, wobei ein Rechenwerk exklusiv für die Zulässigkeitsüberprüfung und das mindestens andere Rechenwerk für die Ausführung von sonstigen Befehlsanweisungen reserviert ist.
  10. Mikroprozessor nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Mikroprozessor ein RISC-Prozessor ist.
  11. Compiler zum Erzeugen von Objekt- und/oder Maschinencodes zur Steuerung des Mikroprozessor nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Compiler zur Erzeugung von Objekten und/oder Maschinencode eingerichtet ist, der Anweisungen zum Zwischenspeichern von Kontrollwerten und Zulässigkeitsgrenzwerten in Verbindung mit einem Datenwort in einem Registerspeicher und Anweisungen zum Verifizieren von Registereinträgen in Form von in einem Register zusammen mit zugeordneten Zulässigkeitsgrenzwerten und einem Kontrollwert temporärer zwischengespeicherten Datenworten in Abhängigkeit von dem Kontrollwort und den Zulässigkeitsgrenzwerten enthält, so dass bei Ausführung des Objekt- und/oder Maschinencodes auf dem Mikroprozessor eine temporäre Zwischenspeicherung von einem Datenwort jeweils zugeordneten Zulässigkeitsgrenzwerten und einem Kontrollwert in einem Registerspeicher zusammen mit dem Datenwort und eine Zulässigkeitsüberprüfung des Datenwortes in Abhängigkeit von dem Kontrollwert auf Basis der Zulässigkeitsgrenzwerte erfolgt.
  12. Compiler nach Anspruch 11, dadurch gekennzeichnet, dass der Objekt- und/oder Maschinencode von einem einen Mikroprozessor simulierenden Programm ausführbar ist.
  13. Compiler nach Anspruch 11 oder 12, dadurch gekennzeichnet, dass der Compiler zum Detektieren von Zulässigkeitsgrenzwerten und Kontrollwerten aus der Syntax der Programmstruktur eingerichtet ist.
DE200610005480 2006-02-03 2006-02-03 Mikroprozessor und Compiler Expired - Fee Related DE102006005480B3 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE200610005480 DE102006005480B3 (de) 2006-02-03 2006-02-03 Mikroprozessor und Compiler
PCT/DE2007/000103 WO2007087782A1 (de) 2006-02-03 2007-01-17 Mikroprozessor und compiler

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200610005480 DE102006005480B3 (de) 2006-02-03 2006-02-03 Mikroprozessor und Compiler

Publications (1)

Publication Number Publication Date
DE102006005480B3 true DE102006005480B3 (de) 2007-02-22

Family

ID=37697580

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200610005480 Expired - Fee Related DE102006005480B3 (de) 2006-02-03 2006-02-03 Mikroprozessor und Compiler

Country Status (2)

Country Link
DE (1) DE102006005480B3 (de)
WO (1) WO2007087782A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9411600B2 (en) * 2013-12-08 2016-08-09 Intel Corporation Instructions and logic to provide memory access key protection functionality

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4930578B1 (de) * 1970-09-30 1974-08-14
EP0326053B1 (de) * 1988-01-28 1996-06-26 National Semiconductor Corporation Datensicherungsverfahren für einen programmierbaren Speicher
US5325496A (en) * 1991-12-24 1994-06-28 Intel Corporation Selectable pointer validation in a computer system
US6519690B1 (en) * 1999-08-23 2003-02-11 Advanced Micro Devices, Inc. Flexible address programming with wrap blocking

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
NICHTS ERMITTELT *

Also Published As

Publication number Publication date
WO2007087782A1 (de) 2007-08-09

Similar Documents

Publication Publication Date Title
DE69616465T2 (de) Cachespeicher mit Datenvorausladung
DE102006015106B4 (de) Bereitstellen eines erweiterten Speicherschutzes
DE2416609C2 (de) Datenverarbeitungsanlage mit einer zentralen Verarbeitungseinheit und Multiprogrammierung mit mehreren Programmunterbrechungs-Prioritätsstufen
DE69331448T2 (de) Dataprozessor mit einem Cachespeicher
DE3688978T2 (de) Seitenspeicherverwaltungseinheit mit der fähigkeit nach wahl mehrere adressräume zu unterstützen.
DE112005003874B3 (de) Transaktionsgestützter Verarbeitungsbetrieb mit gemeinsam genutzten Daten in einer Multiprozessorumgebung
DE69616223T2 (de) Datenstromvorausladepufferspeicher mit Datenstromfilters
DE69210714T2 (de) Durch Doppelzweck-On-Chip-Speicher implementierter Echtzeit-Cachespeicher
DE112005003098B4 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE69626054T2 (de) Verfahren zur Priorisierung und Behandlung von Fehlern in einem Rechnersystem
DE69127111T2 (de) Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher
DE69032276T2 (de) Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE102010046892A1 (de) Management und Implementierung von Metadaten in der Zentraleinheit unter Verwendung von Registererweiterungen
WO2005073865A2 (de) Vorrichtung zur datenübertragung zwischen speichern
DE69937611T2 (de) Intelligenter Puffer-Speicher
DE3131204A1 (de) Adressumrechnungs- und generatoranordnung
DE102013206423A1 (de) Multithread-transaktionale-Speicherkohärenz
DE69322244T2 (de) Verfahren und System zur Erhöhung der Systemspeichergleichzeitigkeit eines Multiprozessor-Rechnersystems
DE69616718T4 (de) Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten
DE69325473T2 (de) Virtuelles Speichersystem verwendendes Datenverarbeitungssystem und -verfahren
DE102018125665A1 (de) Vorrichtung und verfahren zum pausieren einer prozessortrace für eine effiziente analyse
DE3740834A1 (de) Aufrechterhaltung der kohaerenz zwischen einem mikroprozessorenintegrierten cache-speicher und einem externen speicher
DE102006005480B3 (de) Mikroprozessor und Compiler

Legal Events

Date Code Title Description
8100 Publication of the examined application without publication of unexamined application
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20120901