DE102010046892A1 - Management und Implementierung von Metadaten in der Zentraleinheit unter Verwendung von Registererweiterungen - Google Patents

Management und Implementierung von Metadaten in der Zentraleinheit unter Verwendung von Registererweiterungen Download PDF

Info

Publication number
DE102010046892A1
DE102010046892A1 DE102010046892A DE102010046892A DE102010046892A1 DE 102010046892 A1 DE102010046892 A1 DE 102010046892A1 DE 102010046892 A DE102010046892 A DE 102010046892A DE 102010046892 A DE102010046892 A DE 102010046892A DE 102010046892 A1 DE102010046892 A1 DE 102010046892A1
Authority
DE
Germany
Prior art keywords
registers
metadata
standard
register
processor
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.)
Ceased
Application number
DE102010046892A
Other languages
English (en)
Inventor
Baiju V. Portland Patel
Rajeev Hillsboro Gopalakrishna
Andrew F. Hillsboro Glew
Robert J. Worcester Kushlis
Don Alan Van Rescue Dyke
Asit K. Saratoga Mallick
Gilbert Portland Neiger
Martin Guy Portland Dixon
Jacob Gottlieb (Koby)
Joseph Frank Hillsboro Cihula
James B. Banks Crossland
Scott Dion Hillsboro Rodgers
Mark Jay Lexington Charney
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102010046892A1 publication Critical patent/DE102010046892A1/de
Ceased 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing

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

Eine Reihe von Standardregistern eines Prozessors wird in Metadatenregister auf dem Prozessor eines Computersystems erweitert. Die Standardregister haben darauf Daten gespeichert, während Metadaten, die mit den Daten in Beziehung stehen, separat in den Metadatenregistern gespeichert sind.

Description

  • Technisches Gebiet
  • Das Gebiet bezieht sich generell auf die Computerwissenschaften und insbesondere auf Metadaten in der Zentraleinheit (CPU).
  • Hintergrund
  • Moderne Programmiersprachen wie beispielsweise C und C++ verwenden keine Metadaten. Entscheidende Metadaten, wie beispielsweise Grenzen für Zeiger (z. B. beziehen sich Grenzen auf den Beginn und das Ende von Adressen, d. h. auf die jeweilige untere und obere Grenze der Objekte, auf die durch einen Zeiger gezeigt wird) und Datentypen für Objekte, sind während der Ausführung dieser Programmiersprachen, wie beispielsweise C/C++ Programme, nicht verfügbar. Das Nichtvorhandensein solcher Metadaten bei einem arbeitenden Softwareprogramm resultiert häufig in einem inkorrekten Verhalten des Programms und in Anfälligkeiten. Ein konventioneller Ansatz, um Metadaten hinzuzufügen, besteht darin, sie neben den Daten selbst im Speicher zu speichern, sodass Software oder Hardware sie lokalisieren können; dies erfordert jedoch eine Änderung in der Speicheraufteilung/im Application Binary Interface (ABI). Infolgedessen werden Metadaten nur in einem sehr spezialisierten Umfeld verwendet, wo die vollständige Software neu kompiliert werden muss, um an den neuen modifizierten Konventionen festzuhalten.
  • Alternativ speichert Software die Daten und Metadaten in nicht angrenzenden Speicherplätzen und implementiert weiter eine Kartenfunktion, um die Daten mit den entsprechenden Metadaten abzugleichen. In diesem Fall werden die Daten in Register geladen, während die entsprechenden Metadaten in andere bestehende Register geladen werden. Weiter wird von der Software verlangt, dass sie die Verbindung zwischen den Daten und den Metadaten in bestehenden Registern nachverfolgt und die notwendige Ausbreitung und Invalidierung der Metadaten ausführt, um sie mit ihren entsprechenden Daten synchron zu halten. Wenn in diesem Fall Daten an Funktionen in Registerparametern weitergegeben werden, müssen die entsprechenden Metadaten ebenfalls in Register weitergegeben werden. Das resultiert in einem Mangel an Transparenz und bedingt eine Erweiterung zu der verwendeten Aufrufkonvention. Außerdem ist die Implementierung dieser Technik wegen eines hohen Overhead, den sie der Software und dem System auferlegt, wie beispielsweise hinzugefügter Registerdruck, Zusatzanweisungen, die für die Metadatenausbreitung und Invalidierung benötigt werden usw., grundsätzlich langsam, sodass die Technik in der Praxis nicht verwendet wird.
  • 1 zeigt eine vereinfachte Ansicht eines Prozessors 100, der Standardregister 102 aufweist. Ein Prozessor, wie beispielsweise ein Allzweckprozessor oder ein Spezialprozessor, ist ein Halbleiterchip, der eine elektronische Schaltung aufweist, die dazu ausgelegt ist, Programmcodeanweisungen zu verarbeiten. Die meisten Prozessoren umfassen normalerweise mehrere allgemeine architektonische Funktionen, wie beispielsweise Standardregister 102. Ein typisches Register stellt eine kleine Menge an Speicherplatz auf dem Prozessor bereit, sodass auf bestimmte Daten unter Verwendung des Registers zugegriffen werden kann, im Gegensatz zu einem Zugreifen auf Speicher, was ein langsamer Prozess sein könnte; ein Register kann zum Beispiel verwendet werden, um Anweisungseingangsoperanden und Anweisungsausgabeergebnisse zu speichern.
  • Andere allgemeinere architektonische Funktionen können einen Cache umfassen, um Anweisungen und/oder Daten lokal zu speichern, eine Abrufschaltung, um Anweisungen vom Cache und/oder Speicher abzurufen, eine Write-Back-Schaltung, um Anweisungsergebnisse im Cache und/oder Speicher zu speichern. Weiter wird der Prozessor 100, der Register 102 aufweist, in Kommunikation mit Random-Access Memory (RAM) 104 und Read Only Memory (ROM) 106 gezeigt.
  • Kurze Beschreibung der Zeichnungen
  • Ausführungsformen der vorliegenden Erfindung werden exemplarisch und in keiner Weise einschränkend in den Figuren der begleitenden Zeichnungen veranschaulicht, wobei gleiche Bezugsnummern zum Verweis auf ähnliche Elemente verwendet werden und in denen:
  • 1 zeigt einen traditionellen Prozessor, der Standardregister aufweist;
  • 2 zeigt eine Ausführungsform eines Prozessors, der Standardregister und Grenzregister aufweist;
  • 3 zeigt eine Ausführungsform von Standardregistern gekoppelt mit Grenzregistern in einem Prozessor;
  • 4 zeigt eine Ausführungsform eines Prozesses für das Management von Metadaten unter Verwendung von Grenzregistern als Erweiterungsregister von Standardregistern, welche mit den Metadaten verbundene Daten aufweisen;
  • 5 zeigt eine Ausführungsform eines Prozesses für die Grenzprüfung;
  • 6 zeigt eine Ausführungsform eines Prozesses für das Management von Metadaten unter Verwendung von Grenzregistern als Erweiterungsregister von Standardregistern, welche mit den Metadaten verbundene Daten aufweisen; und
  • 7 zeigt eine Ausführungsform eines Computersystems.
  • Ausführliche Beschreibung
  • 2 zeigt eine Ausführungsform eines Prozessors 200, der Standardregister (d. h. bestehende Register) 202 und Grenzregister 204 aufweist. Bei einer Ausführungsform weist der gezeigte Prozessor 200 die Standardregister 202 und Grenzregister 204 auf, welche die Hardwareregistererweiterungen der Standardregister repräsentieren. Diese Grenzregister 204 stellen die Hardwareregistererweiterung bereit, um Metadaten (z. B. Grenzen in Grenzregistern 204) zu enthalten und die Verbindung der Metadaten mit den entsprechenden Daten aufrechtzuerhalten (z. B. Zeiger in Standardregistern 202), wenn sie ohne den zusätzlichen Druck auf den Standardregistern 202 kopiert oder modifiziert werden. Außerdem bleibt durch die Bereitstellung (implizit oder explizit) der Verbindung zwischen den Standardregistern 202 und den Grenzregistern 204 die Aufrufkonvention dieser Register 202 gleich. Die Metadaten, die in den Grenzregistern 204 gehalten werden, können von Prozessor 200 für unterschiedliche Zwecke verwendet werden. Die Metadaten enthalten zum Beispiel den Datentyp und der Prozessor 200 kann den Datentyp vor dem Verarbeiten validieren.
  • Ein Register kann ein Allzweck- oder Integerregister umfassen (das verwendet wird, um Daten und Adressen zu speichern, und das als kombiniertes Daten-/Adressregister betrachtet wird) und andere Register, wie beispielsweise ein Benutzer zugängliches Register, ein Datenregister, ein Adressregister, ein Zustandsregister, ein Gleitkommaregister, ein Konstantenregister, ein Vektorregister, ein Spezialregister (einschließlich eines Befehlsregisters), ein modellspezifisches Register, ein Kontroll- und Statusregister usw. Bei einer Ausführungsform sind Integerregister mit Grenzregistern 204 verbunden, aber die Ausführungsformen begrenzen Grenzregister 204 nicht auf Integerregister, sodass jede Art oder eine Kombination von Registerarten verwendet werden kann. Die Registererweiterungen 204 enthalten Metadaten verbunden mit Daten in den Registern 202. Bei einer Ausführungsform, wenn ein (Allzweck-)Register 202 eine Speicheradresse (z. B. einen Zeiger) enthält, kann die Registererweiterung 204 verwendet werden, um den Bereich von Speicheradressen anzugeben, auf die unter Verwendung von Register 202 zugegriffen werden kann (laden/speichern). Die Adresse im Register 202 kann sich außerhalb der Grenzen befinden, die in seinem Grenzregister 204 angegeben sind. Diese Grenzen können zur Zeit des Speicherzugriffs geprüft werden. Jeder Speicheradressenbereich besteht aus einer unteren Grenze und einer oberen Grenze (die später in diesem Dokument weiter beschrieben und erörtert werden). In diesem Fall wird die Registererweiterung 204 als Grenzregister oder Registerbeschreiber bezeichnet. Prozessor 200 umfasst weiter eine Adressgeneratoreinheit 206, um Speicheradressen zu generieren oder zu bestimmen. Die Adresse könnte unter Verwendung von Register 202 und optional anderen Registern (z. B. Indexregister im Prozessor von Intel und einer konstanten Verlagerung) generiert werden. Prozessor 200 umfasst werter einen Adress-Comparator (auch als Grenzenprüfeinheit bezeichnet) 208, um die unteren und oberen Grenzen von Adressbereichen zu vergleichen, und eine Speicherzugriffseinheit 210, um Zugriff zum Speicher gekoppelt mit Prozessor 200 und Speichermedien innerhalb der Register 202, 204 zu ermöglichen. Wie gezeigt sind die Standardregister 202 mit der Adressgeneratoreinheit 206 gekoppelt, während sowohl die Adressgeneratoreinheit 206 als auch die Grenzregister 204 mit dem Adress-Comparator (Rechenlogik) 208 gekoppelt sind, der weiter mit der Speicherzugriffseinheit 210 gekoppelt ist. Prozessor 200 kann andere Logiken, Schaltungen und Module enthalten, um verschiedene Aufgaben der Ausführungsformen auszuführen, wie sie durchweg in diesem Dokument beschrieben sind. Die Standardregister 202 können abhängig von der Art der auszuführenden Aufgaben irgendeine Anzahl und Art von Registern enthalten, wie beispielsweise Allzweckregister, Gleitkommaregister usw. Zum Beispiel werden im Zusammenhang mit einer Anweisung Quellregister und Zielregister verwendet und diese können Allzweckregister oder Gleitkommaregister usw. umfassen. Eine Anweisung kann also durch ein Quellregister bereitgestellt werden, während die Ergebnisse der Anweisung in einem Zielregister platziert werden können; wobei die Quell- und Zielregister Teil der Standardregister 202 sind.
  • Bei einer Ausführungsform ist eine neue Programmanweisung definiert, um Grenzen zu erstellen und sie in den Grenzregistern 204 zu speichern. Diese Programmanweisung kann ein vollständig neuer Befehlscode sein, der zuvor in einem Programm undefiniert war, oder er könnte ebenfalls mit einem Alias versehen sein, um eine zuvor nicht verwendete nicht operative (NOP) Anweisung zu verwenden. Die Ausbreitung von Metadaten, um die Konsistenz aufrechtzuerhalten, wird durch den Prozessor 200 entweder implizit für einen Teilsatz von Anweisungen ausgeführt, die normalerweise mit Zeigermanipulation (wie beispielsweise ADD, SUB, INC, DEC usw.) verwendet werden oder explizit unter Verwendung von neuen Anweisungen, die das Ausbreitungsverhalten anzeigen. Es beschreibt, wie der Prozessor 200 die Metadaten konserviert, wenn die Daten, mit denen sie korrespondieren, in bestimmten Zustanden modifiziert werden, als auch wie der Prozessor 200 die Metadaten zerstört, wenn die Daten, mit denen sie korrespondieren, bei anderen Zuständen modifiziert werden. Da bei einer Ausführungsform die Semantik von bestehenden Anweisungen verwendet wird, um Metadaten zu propagieren, zu erhalten und zu validieren/invalidieren, gibt es keine im Softwareprogramm benötigten Zusatzanweisungen, die sich auf die Programmcodegröße und deren Betriebsverhalten potenziell negativ auswirken können.
  • Bei einer Ausführungsform werden Grenzprüfungen auf irgendeine Anzahl an Speicheranweisungen angewandt und sie können explizit über ein Präfix einer Anweisung, wie beispielsweise ein Segmenttibersteuerungspräfix angegeben sein. Wenn eine Anweisung das Segmentübersteuerungspräfix aufweist, was dasselbe wie ihr Standardsegment ist, kann die Anweisung die Grenzprüfung erzwingen, während bei einer anderen Ausführungsform ein vollständig neues Präfix zur Anweisung hinzugefügt werden kann. Das Standardsegmentpräfix bei jenen Prozessoren, die diese Methode nicht implementieren, ist NOP. Die Verwendung des NOP-Präfixes erlaubt der Software, korrekt und ohne den Vorteil von Metadaten auf jenen Prozessoren zu arbeiten, die keine Metadaten unterstützen/implementieren. Bei einer Ausführungsform kann eine explizite Grenzprüfungsanweisung erlaubt sein, wobei solch eine Anweisung zwei oder drei Operanden aufweisen würde. Bei einer Zweioperandenform wird der erste Operand beispielsweise als eine Speicheradresse verwendet und der zweite Operand wird als eine Zugriffsgröße (Byte, Wort usw.) verwendet.
  • 3 zeigt eine Ausführungsform von Standardregistern 202 gekoppelt mit Grenzregistern 204 in einem Prozessor. Bei einer Ausführungsform können Registererweiterungen (z. B. Grenzregister) 204 jegliche Anzahl und Art von Registern basierend auf der Anzahl und Art von Standardregistern 202 sowie auf den Funktionsweisen der Prozessorarchitektur des Computersystems umfassen. In dieser Darstellung sind die Registererweiterungen 128 Bits breit mit den unteren Grenzeerweiterungen 302, die 64 Bits breit sind, um die unteren Grenzen zu enthalten, und den oberen Grenzerweiterungen 304, die 64 Bits breit sind, um die oberen Grenzen zu enthalten.
  • Zum Beispiel benötigt eine neue Anweisung wie z. B. CPMKDSC r, m ein Register und eine absolute Adresse als Operanden. Der Registerwert ist die untere Grenze und die absolute Adresse ist die obere Grenze. Die Anweisung schreibt den Wert der unteren Grenze in die Registererweiterung der unteren Grenze 302 und den Wert der oberen Grenze in die Registererweiterung der oberen Grenze 304 entsprechend dem angegebenen Register. So wird zum Beispiel CPMKDSC RAX, [RBX], mit RAX 1000 und RBX = 1004, die Erweiterung der unteren Grenze 306 mit 1000 als dem Wert der unteren Grenze geschrieben, während die Erweiterung der oberen Grenze 308 mit 1004 als dem oberen Grenzwert im Beschreiber von RAX geschrieben wird. Das etabliert 1000 und 1004 als die unteren und oberen Grenzen für den Zeiger in RAX. Bei einer anderen Ausführungsform kann die Anweisung drei Operanden aufweisen, um die untere Grenze und die obere Grenze zu berechnen, während es bei einer weiteren Ausführungsform zwei separate Anweisungen geben kann, um die untere und obere Grenze separat zu generieren.
  • Anweisungen, die verwendet werden können, um arithmetische Operationen bei Zeigern wie beispielsweise INC, DEC, AND, OR, ADD und SUB auszuführen, konservieren den Beschreiberinhalt des in der Operation verwendeten Registers. Diese Operationen modifizieren den Zeigerwert, zerstören ihn aber nicht, und deshalb ist der Beschreiberinhalt immer noch gültig. Des Weiteren beträgt bei dem oben genannten Beispiel, wenn INC RAX fünfmal ausgeführt wird, der Wert von RAX 1005, und nehmen wir an, dass RAX jetzt verwendet wird, um auf Speicher unter Verwendung von MOV RCX, [RAX] zuzugreifen. Die mit dem Zeiger in RAX verbundenen Metadaten sind die unteren und oberen Grenzen, nämlich 1000 306 und 1004 308. Diese Information lässt, wenn sie mit RAX gepaart 1005 ist, darauf schließen, dass ein Speicherzugriff außerhalb der Grenzen, d. h. ein Pufferüberlauf, erkannt wird. Bei dieser Ausführungsform kann die CPU/der Prozessor eine Pufferüberlaufausnahme signalisieren, sodass die Programmiersoftware entsprechende Korrekturmaßnahmen vornehmen kann.
  • Anweisungen wie beispielsweise MOV oder LEA werden verwendet, um Zeiger zwischen Registern zu kopieren und um den Inhalt eines Quellbeschreibers zu einem Zielbeschreiber zusätzlich zum Kopieren von Zeigern zu propagieren. Das entspricht dem Kopieren der Grenzen in den Grenzregistern 204, wenn Zeiger zwischen Registern in den Standardregistern 202 kopiert werden. Jede andere Anweisung, die keine Metadaten erfordert oder erwartet, kann den Beschreiberinhalt von irgendwelchen in Anweisungen verwendeten Zielregistern invalidieren oder zerstören; MOV RAX, 0 beispielsweise zerstört den Beschreiberinhalt von RAX, da Grenzen für Zeiger nicht aber für Integer bedeutungsvoll sein können.
  • Bei einer Ausführungsform kann Software oder Hardware oder eine Kombination von beiden verwendet werden, um eine feinkörnige Zugangsbeschränkung zum Speicher durchzusetzen. Die Zugangsbeschränkung bezieht sich im Allgemeinen auf die ausgeführten Prüfungen, wenn verschiedene Subjekte auf Objekte zugreifen, um sicherzustellen, dass irgendwelche Subjekte, die versuchen auf Objekte zuzugreifen, Genehmigungen haben, auf solche Objekte zuzugreifen. Zum Beispiel können Zeiger als die Subjekte betrachtet werden, die versuchen, auf unterschiedliche Objekte im Speicher zuzugreifen. Genehmigungen sind als mit dem Zeiger verbundene Grenzen verkörpert. Zugangsbeschränkungsinformation wird hier als (untere/obere) Grenzinformation oder Grenzwerte bezeichnet, während die Zugangsbeschränkungsprüfung als Grenzprüfung bezeichnet wird. Die Grenzregister 204 und irgendwelche hier angegebenen Verfahren können bestimmte Aufgaben oder Prüfungen ausführen, wie beispielsweise eine untere/obere Grenzprüfung, wenn sie auf Speicher unter Verwendung eines Zeigers zugreifen. Diese Verfahren können ebenfalls zusätzliche Prüfungen ausführen, wie Genehmigungsprüfungen und/oder das Prüfen von Datentypen. Bei einer Ausführungsform werden Grenzregister 204 verwendet, um die unteren/oberen Grenzwerte für eine Adresse anzugeben, die zu verwenden ist, um auf Speicher zuzugreifen, die angegebenen Grenzwerte zu erzwingen und irgendwelche Grenzverletzungen zu behandeln.
  • Bei einer Ausführungsform werden Grenzregister 204 und Verfahren verwendet, um Grenzwerte (auch als Zugangsbeschränkungsinformation bezeichnet) für Zeiger, Manipulationszeiger und/oder Grenzwerte wie erforderlich festzulegen und Grenzwerte als Teil des Speicherzugriffs zu erzwingen. Es wird eine neuartige feine Zugangsbeschränkungs- oder Grenzprüfungstechnik unter Verwendung der Grenzregister 204 eingesetzt. Das hier eingesetzte Verfahren/Vorrichtung/System verbindet direkt Grenzwerte mit Zeigern oder Zeigerwerten (im Gegensatz zu Kontrollen in Seitentabellen- oder Segmentregistern aufzuweisen), welche die Zugangsbeschränkung für eine Speicherregion im Gegensatz zu den Datenobjekten im Allzweckregister (z. B. Integer) 202 durchsetzen, um feinkörnige Grenzprüfungen von in den Grenzregistern 204 gespeicherten Grenzwerten zu erleichtern.
  • Wie oben bei einer Ausführungsform erwähnt, können ein oder mehrere bestehende (aber unbenutzte) Anweisungen eines Programms verwendet werden, um Grenzwerte (Zugangsbeschränkungsinformation) zu generieren und festzulegen, und Grenzwerte mit Zeigern in den Standardregistern 202 zu verbinden, und Anweisungen/Präfixe werden weiter verwendet, um dem Prozessor 200 die Durchsetzungsanforderungen für einen spezifischen Speicherzugriff anzuzeigen. Zum Beispiel können die Standardregister 202 Allzweckregister (Integerregister) umfassen, die zu erweitern sind, um Grenzwerte einschließlich der unteren und oberen Grenzen der Adresse, auf die zuzugreifen ist, unter Verwendung von Zeigern, die in den Standardregistern 202 enthalten sind, aufzunehmen. Jedes Standardregister 202 ist in zwei zusätzliche Register, die als Grenzregister 204 gezeigt sind, erweitert, um die unteren und oberen Grenzwerte für den Zeiger in einem Standardregister 202 zu enthalten.
  • Wenn ein Standard-(Integer-)Register 202 mit einem gültigen Beschreiber verwendet wird, um auf Speicher zuzugreifen, erzwingt der Prozessor 200 Grenzen im Beschreiber gegenüber der Speicheradresse, auf die zugegriffen wird. Der Prozessor 200 kann dann die Operandengröße zum Zeiger im Standardregister 202 hinzufügen, um sie in Bezug auf die angegebene obere Grenze zu prüfen. Wenn der Zugriff beispielsweise vier Bytes war, kann der Prozessor 200 4 zum Zeiger hinzuaddieren und diese Zahl mit der vorgegebenen oberen Grenze vergleichen. Folglich ist für die Grenzprüfung die Operandengröße ein impliziter Operand, der verwendet wird, um Grenzen zu prüfen. Ein Grenzwert kann beispielsweise im Basisregister einer Adressierungsart von einer Prozessorarchitektur angegeben sein; die Grenze kann jedoch ebenfalls in einem Indexregister angegeben sein.
  • Um Interoperabilität und Kompatibilität mit den bestehenden Aals sicherzustellen, können die Legacy-Anweisungen die mit den Zielregistern verbundenen Grenzen gemäß einer Ausführungsform invalidieren. Bei einer anderen Ausführungsform, bei der Interoperabilität nicht erforderlich sein mag, werden jene Anweisungen gewählt, für die die Grenzen nicht zutreffend sind, und die Grenzen (oder Metadaten) können für Grenzregister 204 verbunden mit Zielregistern invalidiert werden. Außerdem kann jede Anweisung, die Grenzwerte von einem spezifischen Quellregister zu einem spezifischen Zielregister propagieren muss, ein Ausbreitungspräfix zur Anweisung hinzufügen. Auf diese Art und Weise ermöglichen die Ausführungsformen eine feine Kontrolle über Grenzwerte, und der Prozessor 200 kommt ebenfalls dazu, sicherzustellen, dass irgendwelche Legacy-Anweisungen Beschreiber löschen, um baumelnde Beschreiber zu verhindern. Bei anderen Ausführungsformen, wo diese Interoperabilität oder Kompatibilität nicht erforderlich sein mag, können diese Zustände entspannt oder ignoriert werden.
  • Bei einer Ausführungsform werden Grenzprüfungen auf irgendeine Anzahl an Speicheranweisungen angewandt und sie können explizit über ein Präfix einer Anweisung, wie beispielsweise ein Segmentübersteuerungspräfix angegeben sein. Wenn eine Anweisung das Segmentübersteuerungspräfix aufweist, was dasselbe wie ihr Standardsegment ist, kann die Anweisung die Grenzprüfung erzwingen, während bei einer anderen Ausführungsform ein vollständig neues Präfix zur Anweisung hinzugefügt werden kann. Bei einer Ausführungsform kann eine explizite Grenzprüfungsanweisung erlaubt sein, wobei solch eine Anweisung zwei oder drei Operanden aufweisen würde. Bei einer Zweioperandenform wird der erste Operand als eine Speicheradresse verwendet und der zweite Operand wird als eine Zugriffsgröße (Byte, Wort usw.) verwendet. Grenzen vom Basis- oder Indexregister der Speicheradresse werden für das Prüfen verwendet. Bei einer Dreioperandenform kann ein bestimmtes Grenzregister der Grenzregister 204 ebenfalls explizit zusammen mit dem Inhalt der ersten zwei Operanden angegeben werden. Unter Verwendung der in dieser Figur beschriebenen Techniken können Operationen, wie beispielsweise das Verhindern von Pufferüberlauf, Laufzeittypprüfung von Code (z. B. C/C++ Code usw.) ausgeführt werden.
  • 4 zeigt eine Ausführungsform eines Prozesses 400 für Betriebsmetadaten unter Verwendung von Grenzregistern als Erweiterungsregister von Standardregistern. Bei Verarbeitungsblock 402 wird eine Anweisung eines Softwareprogramms abgeholt und in einem Standardregister bei einem Prozessor decodiert, und wenn die Anweisung eine Legacy-Anweisung ist, wird die Legacy-Anweisung bei Verarbeitungsblock 404 ausgeführt. Bei Verarbeitungsblock 406 wird Zeigerarithmetik (z. B. Addieren, Subtrahieren, Inkrementieren usw.) ausgeführt und die oberen und unteren Grenzen des im Standardregister enthaltenen Zeigers werden im Grenzregister konserviert, das ein Erweiterungsregister des Standardregisters bei Verarbeitungsblock 408 ist. Wenn die Legacy-Anweisung keine zeigerarithmetische Anweisung ist, werden die Grenzen bei Verarbeitungsblock 410 invalidiert.
  • Wenn die Anweisung CMPKDSC ist, werden die unteren und oberen Grenzen der Adresse, auf die zuzugreifen ist, unter Verwendung eines in einem Standardregister enthaltenen Zeigers bei Verarbeitungsblock 412 berechnet und diese Grenzen werden dann in ein Grenzregister bei Verarbeitungsblock 414 kopiert. Wenn die Anweisung sich auf Legacy-Laden bezieht, wird bei Entscheidungsblock 416 festgestellt, ob es eine Grenzverletzung beim Legacy-Laden gegeben hat. Wenn Ja, wird eine Ausnahme bei Verarbeitungsblock 420 ausgelöst, und wenn nicht, wird eine Legacy-Ladeoperation bei Verarbeitungsblock 418 ausgeführt. Auf gleiche Weise wird, wenn sich die Anweisung auf Legacy-Speichern bezieht, am Entscheidungsblock 422 festgestellt, ob es eine Grenzverletzung beim Legacy-Speichern gegeben hat. Wenn Ja, wird eine Ausnahme bei Verarbeitungsblock 420 ausgelöst, und wenn nicht, wird eine Legacy-Speicheroperation bei Verarbeitungsblock 424 ausgeführt.
  • Wenn die Anweisung sich auf geprüftes Zeigerladen bezieht (z. B. ein Zeiger, der mit Grenzen verbunden ist), wird bei Entscheidungsblock 426 festgestellt, ob es eine Grenzverletzung beim Zeigerladen gegeben hat. Wenn Ja, wird eine Ausnahme bei Verarbeitungsblock 420 signalisiert, und wenn nicht, wird eine Adresse für den Beschreiber im Speicher bei Verarbeitungsblock 428 berechnet. Bei Entscheidungsblock 430 wird festgestellt, ob es gültige Grenzen für die Adresse im Speicher gibt. Wenn Ja, werden die gültigen Grenzen vom Speicher für das Standardregister zum Grenzregister kopiert, das als eine Erweiterung des Standardregisters bei Verarbeitungsblock 432 dient. Wenn nicht, werden die Grenzen bei Verarbeitungsblock 410 als ungültig erachtet.
  • Auf ähnliche Weise wird, wenn die Anweisung, die bei Verarbeitungsblock 402 abgeholt und decodiert wird, sich auf geprüftes Zeigerspeichern bezieht, bei Entscheidungsblock 434 festgestellt, ob es eine Grenzverletzung beim Zeigerspeichern gegeben hat. Wenn Ja, wird eine Ausnahme bei Verarbeitungsblock 420 signalisiert, und wenn nicht, wird eine Adresse für den Beschreiber im Speicher bei Verarbeitungsblock 436 berechnet. Bei Entscheidungsblock 438 wird festgestellt, ob es irgendwelche verfügbaren Speicher gibt, um Grenzen der Adresse zu speichern. Wenn nicht, wird eine Ausnahme bei Verarbeitungsblock 420 signalisiert, und wenn Ja, werden die Grenzen vom Grenzregister zum Speicherbeschreiber bei Verarbeitungsblock 440 gespeichert. Die Prozesse (von den Verarbeitungsblocks 410, 414, 418, 424, 432, 440) enden bei Übergangsblock 442.
  • 5 zeigt eine Ausführungsform eines Prozesses 500 für die Grenzprüfung; Bei Verarbeitungsblock 502 wird die niedrigste Adresse, auf die zuzugreifen ist, mit einer verfügbaren Anweisung eines Softwareprogramms berechnet. Bei Verarbeitungsblock 504 wird die höchste Adresse, auf die zuzugreifen ist, berechnet. Bei Verarbeitungsblock 506 wird eine Berechnung ausgeführt. Die Berechnung bestimmt, ob die niedrigste Adresse, auf die zuzugreifen ist, größer oder gleich der unteren im Grenzregister bereitgestellten Grenze ist, und ob die höchste Adresse, auf die zuzugreifen ist, niedriger als oder gleich der oberen Grenze im Grenzregister ist; wenn dies so ist, wird keine Verletzung bei Verarbeitungsblock 510 erkannt. Wenn nicht, wird eine Grenzverletzung erkannt und der Prozess endet bei Verarbeitungsblock 508.
  • 6 zeigt eine Ausführungsform eines Prozesses 600 für das Management von Metadaten unter Verwendung von Grenzregistern als Erweiterungsregister von Standardregistern, welche mit den Metadaten verbundene Daten aufweisen. Bei Verarbeitungsblock 602 wird eine Reihe von Grenzregistern zum Prozess hinzugefügt, der bereits eine Reihe von Standardregistern aufweist. Ein Standardregister kann ein Allzweckregister (Integerregister) umfassen und dazu verwendet werden, Daten, Zeiger usw. zu enthalten. Der Satz von Grenzregistern kann (hardwarebasierte) Register umfassen, die Metadaten (wie beispielsweise Grenzen) enthalten können, welche sich auf vorhandene Daten in den Standardregistern beziehen. Bei einer Ausführungsform werden für jedes Standardregister zwei Grenzregister zum Prozessor hinzugefügt, sodass eines von ihnen eine untere Grenze und das andere eine obere Grenze enthält, welche der Adresse entsprechen, die durch einen Zeiger im Standardregister verwendet wird, um auf Speicher zuzugreifen. Bei Verarbeitungsblock 604 wird die Berechnung der unteren und oberen mit einer Adresse verbundenen Grenzen unter Verwendung von Berechnungslogik am Prozessor mit einer oder mehreren Anweisungen eines Softwareprogramms, das verfügbar, aber unbenutzt ist, ausgeführt.
  • Bei Entscheidungsblock 606 wird unter Verwendung der Berechnungslogik festgestellt, ob die berechneten Grenzen gültig sind. Bei einer Ausführungsform werden die berechneten Grenzen verletzt, wenn die berechnete untere Grenze kleiner ist als die untere Grenze, die bereits im Grenzregister vorhanden ist, oder wenn die berechnete obere Grenze größer ist als die obere Grenze, die bereits in den Grenzregistern vorhanden ist. Das wird als Aufweitung der Grenzen bezeichnet. Wenn bestimmt wird, dass die Grenzen aufzuweiten sind, wird eine Ausnahme bei Verarbeitungsblock 608 ausgelöst und die Grenzen werden in den Grenzregistern nicht gespeichert. Wenn jedoch keine Grenzaufweitung erfolgt, werden sie in den unteren und oberen Grenzregistern bei Prozessorblock 610 gespeichert.
  • Ausführungsformen der vorliegenden Erfindung umfassen das Bereitstellen von neuen/Erweiterungsregistern von Standard-(Allzweck-)Registern, sodass die Erweiterungsregister, um Metadaten zu enthalten, eine Anweisung verwenden, um Metadaten in den Erweiterungsregistern zu erzeugen, Metadaten von/zu Speicher in die Erweiterungsregister zu laden/zu speichern, das Prüfen des Speicherzugriffs gegenüber Metadaten, das Ausführen der Invalidierung von Metadaten durch jene Anweisungen, die keine Metadaten für Ergebnisse unterstützen, und das Bereitstellen impliziter Verbindung von Metadaten mit Standardregistern. Des Weiteren umfassen sie das Ausführen der Anweisungscodierung unter Verwendung zuvor implementierter NOPs für die neuen Anweisungen, was einem Softwareprogramm ermöglicht, korrekt auf Prozessoren zu arbeiten, die diese Erfindung nicht korrekt implementieren, ohne den Vorteil von Metadaten; während auf den Prozessoren, welche die neue Technologie implementieren und die Metadaten verwenden, dieselbe Software Vorteile bringt.
  • Des Weiteren definieren Ausführungsformen der vorliegenden Erfindung Metadaten, welche Grenzen für einen Zeiger im Allzweckregister vorgeben. Wenn ein Zeiger verwendet wird, um Speicher zu referenzieren, berechnet der Prozessor den Bereich von Adressen, auf die durch eine Anweisung zugegriffen werden soll, und vergleicht diese Adressen mit den Grenzen in den Erweiterungs-(Grenz-)Registern, um sicherzustellen, dass sich die Speicherplätze, auf die durch irgendwelche Anweisungen zugegriffen wird, vollständig innerhalb dieser Grenzen befinden. Jeder Versuch, auf einen Speicherplatz außerhalb der Grenzen zuzugreifen, wird verhindert, und in solch einem Fall signalisiert der Prozessor die Ausnahme, um dem Softwareprogramm zu erlauben, diesen Zustand zu behandeln. Eine Ausführungsform umfasst eine Adressenübersetzungsfunktion, um die Adresse, an der ein Zeiger gespeichert wird, in die Adresse zu übersetzen, an der die Metadaten im Speicher gespeichert werden sollen, sodass die mit einer Speicheradresse verbundenen Metadaten in die Erweiterungsregister geladen oder gespeichert werden können. Diese Adressenübersetzungstechnik erlaubt den Metadaten, an einer Stelle gespeichert zu werden (z. B. neue/Erweiterungs/Grenzregister), die sich abgesondert von der Stelle, an der die entsprechenden Daten (z. B. Standard-/Allzweckregister) gespeichert werden, befindet. Aus Gründen der Knappheit, Deutlichkeit und Konsistenz wird „Grenzen” hier als ein Beispiel dafür verwendet, was Metadaten umfassen können (folglich der Begriff „Grenzregister”), aber es ist denkbar, dass Metadaten jegliche Anzahl an entsprechendem mit Daten verbundenem Inhalt umfassen können. Metadaten können beispielsweise irgendeine Anzahl an Datentypen [<datatype>] (z. B. Integer, Fließkomma usw.) bei Erweiterungsregistern umfassen, die relevant für die entsprechenden Daten bei Standardregistern sind und die damit verbunden sind. Bei einer anderen Ausführungsform ist es eine Pointer-to-Type-Tabelle für komplexe Datentypen, wie beispielsweise Strukturen. Bei einer anderen Ausführungsform könnten die Metadaten Speicherzugriffsrechte umfassen, wie beispielsweise nur lesen, lesen/schreiben usw.
  • 7 zeigt eine Ausführungsform eines Computersystems (z. B. ein Computer). Das beispielhafte Computersystem von 7 beinhaltet: 1) ein oder mehrere Prozessoren 701, von denen zumindest einer die vorstehend beschriebenen Merkmale beinhalten kann; 2) einen Memory-Control-Hub (MCH) 702; 3) einen Systemspeicher 703 (von dem verschiedene Arten vorliegen, wie z. B. Doppel-Datenraten-RAM (DDR RAM), erweiterter Datenausgabe-RAM (extended data Output RAM, EDO RAM) usw.); 4) einen Cache 704; 5) einen Eingangs/Ausgangs-(input/output, I/O)-Control-Hub (ICH) 705; 6) einen Grafikprozessor 706; 7) ein Display/Bildschirm 707 (von dem verschiedene Arten vorliegen, wie z. B. Röhrenmonitor (Cathode Ray Tube, CRT), Dünnschichttransistor (Thin Film Transistor, TFT), Flüssigkristallbildschirm (Liquid Crystal Display, LCD), DPL usw.; und 8) ein oder mehrere I/O-Geräte 708.
  • Die ein oder mehreren Prozessoren 701 führen Anweisungen aus, um beliebige Softwareroutinen auszuführen, die das Computersystem implementiert. Die Befehle beinhalten oftmals eine Art Operation, die auf Daten ausgeführt wird. Sowohl die Daten als auch die Befehle sind in Systemspeicher 703 und Cache-Speicher 704 gespeichert. Cache-Speicher 704 ist typischerweise so aufgebaut, dass er kürzere Latenzzeiten aufweist als Systemspeicher 703. Beispielsweise könnte Cache-Speicher 704 auf dem/den gleichen Siliziumchip(s) wie der/die Prozessor(en) integriert sein und/oder mit schnelleren statischen RAM(SRAM)-Zellen gefertigt sein, während Systemspeicher 703 mit langsameren dynamischen RAM(DRAM)-Zellen gefertigt sein könnte. Dadurch, dass häufiger verwendete Befehle und Daten eher in dem Cache-Speicher 704 als in dem Systemspeicher 703 gespeichert werden, verbessert sich die Effizienz der Gesamtleistung des Computersystems.
  • Der Systemspeicher 703 wird anderen Komponenten innerhalb des Computersystems absichtlich zugänglich gemacht. Beispielsweise werden die Daten, die von verschiedenen Schnittstellen am Computersystem empfangen werden (z. B. Tastatur und Maus, Druckerport, lokaler Netzwerk-(Local Area Network, LAN)-Port, Modemport usw.) oder von einem internen Speicherelement des Computersystems (z. B. Festplattenlaufwerk) abgerufen werden, oftmals in Systemspeicher 703 vorübergehend in eine Warteschlange aufgenommen, bevor sie von dem einen oder den mehreren Prozessor(en) 701 bei der Implementierung eines Softwareprogramms bearbeitet werden. Gleichermaßen sollten Daten, die ein Softwareprogramm bestimmt, von dem Computersystem an eine äußere Einheit über eine der Schnittstellen des Computersystems gesendet werden oder in einem internen Speicherelement gespeichert werden, und sie werden oftmals vorübergehend in Systemspeicher 703 in eine Warteschlange aufgenommen, bevor sie übertragen oder gespeichert werden.
  • Der ICH 705 ist dafür verantwortlich, sicherzustellen, dass solche Daten ordentlich zwischen dem Systemspeicher 703 und seiner geeigneten entsprechenden Computersystem-Schnittstelle (und internem Speichergerät, wenn das Computersystem so aufgebaut ist) übertragen werden. Der MCH 702 ist dafür verantwortlich, die verschiedenen unter dem/den Prozessor(en) 701, Schnittstellen und internen Speicherelementen konkurrierenden Anfragen nach Zugriffen auf Systemspeicher 703 zu regeln, die der Zeit nach aufeinanderfolgend auftreten können.
  • Ein oder mehrere I/O-Geräte 708 sind ebenfalls in einem typischen Computersystem implementiert. I/O-Geräte sind im Allgemeinen dafür verantwortlich, Daten an das und/oder von dem Computersystem (z. B. ein Netzwerkadapter) zu übertragen; oder für große Permanentspeicher innerhalb des Computersystems (z. B. Festplattenlaufwerk). ICH 705 weist bidirektionale Punkt-zu-Punkt-Links auf.
  • Teile verschiedener Ausführungsformen der vorliegenden Erfindung können als ein Computerprogramm-Produkt bereitgestellt werden, das ein computerlesbares Medium beinhalten kann, auf dem Befehle eines Computerprogramms gespeichert sind, die zum Programmieren eines Computers (oder anderer elektronischer Geräte) verwendet werden können, um einen Prozess gemäß der Ausführungsformen der vorliegenden Erfindung durchzuführen. Das maschinenlesbare Medium kann beinhalten, ist aber nicht beschränkt auf, Disketten, optische Disks, CD-ROM (compact disk read-only memory) und magnetooptische Disks, ROM, RAM, löschbaren programmierbaren Festspeicher (erasable programmable read-only memory, EPROM), elektrischen EPROM (EEPROM), magnetische oder optische Karten, Flash-Memory oder andere Art von Medien/maschinenlesbarem Medium, das zum Speichern elektronischer Befehle geeignet ist.
  • In der vorstehenden Beschreibung wurde die Erfindung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen davon beschrieben. Es ist jedoch offensichtlich, dass verschiedene Modifizierungen und Änderungen an diesen vorgenommen werden können, ohne vom Gedanken und Umfang der in den angehängten Ansprüchen dargelegten Erfindung abzuweichen. Die Beschreibung und Zeichnungen sind demnach vielmehr exemplarisch als einschränkend anzusehen.

Claims (20)

  1. Verfahren, umfassend: die Erweiterung von Standardregistern eines ersten Prozessors in Metadatenregister auf dem ersten Prozessor eines Computersystems, wobei die Standardregister darauf Daten gespeichert haben; und das separate Speichern von Metadaten in den Metadatenregistern, wobei die Metadaten mit den Daten verbunden sind.
  2. Das Verfahren nach Anspruch 1, wobei die Metadaten Grenzen umfassen, die mit Adressen verbunden sind, welche von Zeigern verwendet werden, die die Daten in den Standardregistern repräsentieren, um auf Speicher zuzugreifen, wobei das Verfahren umfasst: das Berechnen einer unteren Grenze und einer oberen Grenze einer Adresse, die durch einen Zeiger in einem Standardregister verwendet wird, um auf den Speicher zuzugreifen; und das Speichern der unteren und oberen Grenzen in einem Metadatenregister.
  3. Das Verfahren nach Anspruch 1, weiter umfassend die Ausführung von automatischer Grenzprüfung für Speicherzugriffe, die ein oder mehrere Standardregister verwenden, welche mit einem oder mehreren Grenzregistern verbunden sind, die ein oder mehrere der Grenzen enthalten.
  4. Das Verfahren nach Anspruch 1, weiter umfassend der Einsatz einer bestehenden nicht operativen (NOP) Anweisung, um eine Reihe von Grenzen zu generieren und eine Grenzprüfung des Satzes von Grenzen auf eine Weise auszuführen, dass ein aktiviertes Softwareprogramm auf dem ersten und zweiten Prozessor operiert, um Interoperabilität und Kompatibilität der Metadatenregister zu konservieren, wenn sie sich auf einem zweiten Prozessor befinden, der nicht mit den Metadaten operiert.
  5. Das Verfahren nach Anspruch 1, weiter umfassend das Verbinden eines Präfixes mit einer Anweisung, die verwendet wird, um eine Reihe von Grenzen, die mit Zielregistern verbunden sind, zu erzeugen und zu propagieren, und das Verwenden des Präfixes mit bestehenden Speicheroperationen, um explizit die Grenzprüfung des Satzes von Grenzen auszuführen, wobei das Präfix ein NOP-Präfix oder ein neues Präfix umfasst, und wobei das NOP-Präfix verwendet wird, um einem aktivierten Softwareprogramm zu erleichtern, auf dem ersten und zweiten Prozessor zu operieren.
  6. Das Verfahren nach Anspruch 1, weiter umfassend das Ausführen einer Anweisung, die eine Legacy-Anweisung einschließt, um Zeigerarithmetik auszuführen, um eine Reihe von Grenzen zu propagieren, die mit einem Quellzeiger zu einem Zielzeiger verbunden sind, wobei ein Standardregister ein Allzweckregister umfasst, das die Quell- und Zielzeiger aufweist, und wobei der Satz von Grenzen invalidiert wird, wenn die Zeigerarithmetik nicht ausgeführt wird.
  7. Das Verfahren nach Anspruch 6, weiter umfassend das Hinzufügen des neuen Präfixes zum Satz von Grenzen, der vom Quellzeiger zum Zielzeiger propagiert wird, wobei das neue Präfix die Ausbreitung des Satzes von Grenzen vom Quellzeiger zum Zielzeiger anzeigt.
  8. Das Verfahren nach Anspruch 6, weiter umfassend das Ausführen einer Legacy-Ladeoperation oder Legacy-Speicheroperation, wenn eine Grenzverletzung in Zusammenhang mit dem Satz von Grenzen erkannt wird.
  9. Das Verfahren nach Anspruch 1, weiter umfassend das Berechnen eines Bereichs von Adressen, die mit Speicherzugriffen verbunden sind, und das Vergleichen des Adressbereichs, der eine niedrigste Adresse und eine höchste Adresse aufweist, in Bezug zu einem Zeiger, dessen untere und obere Grenzen sich bereits in den Metadatenregistern befinden, um alle Speicherzugriffe zu verhindern, die sich außerhalb eines Grenzbereichs der unteren und oberen Grenzen befinden.
  10. Das Verfahren nach Anspruch 9, wobei das Verhindern das Vermeiden der Grenzverletzung umfasst, und wobei die Grenzverletzung auftritt, wenn die niedrigste Adresse kleiner ist als die untere Grenze, die bereits in den Metadatenregistern vorhanden ist, oder die höchste Adresse größer ist als die obere Grenze, die bereits in den Metadatenregistern vorhanden ist.
  11. Das Verfahren nach Anspruch 1, wobei das Erweitern das Erzeugen von mindestens zwei Metadatenregistern, die jedem der Standardregister entsprechen, und das Platzieren der Metadatenregister am Prozessor umfasst, wobei ein erstes der mindestens zwei Metadatenregister die untere Grenze speichert und ein zweites der mindestens zwei Metadatenregister die obere Grenze speichert.
  12. Prozessor, umfassend: die Standardregister, die in Metadatenregister am Prozessor erweitert werden, wobei die Standardregister Daten speichern; und das Metadatenregister, um Metadaten zu speichern, die mit den Daten verbunden sind, wobei die Metadaten in den Metadatenregistern separat von den Daten gespeichert werden, die in den Standardregistern gespeichert sind.
  13. Der Prozessor nach Anspruch 12, wobei die Metadaten mit Adressen verbundene Grenzen umfassen, die von Zeigern verwendet werden, welche die Daten in den Standardregistern repräsentieren, um auf Speicher zuzugreifen, wobei der Prozessor umfasst: Logik, um eine untere Grenze und eine obere Grenze einer Adresse zu berechnen, die von einem Zeiger in einem Standardregister verwendet wird, um auf den Speicher zuzugreifen; und ein Metadatenregister, um die unteren und oberen Grenzen zu speichern.
  14. Der Prozessor nach Anspruch 12, wobei mindestens zwei Metadatenregister generiert werden, die jedem der Standardregister entsprechen, wobei ein erstes der mindestens zwei Metadatenregister die untere Grenze speichert und ein zweites der mindestens zwei Metadatenregister die obere Grenze speichert.
  15. Ein Computersystem, das Folgendes umfasst: einen dynamischen Random Access Memory-Chip; und einen Prozessor, der Standardregister aufweist, die in Metadatenregister am Prozessor erweitert werden, wobei die Standardregister Daten speichern, und das Metadatenregister, um Metadaten zu speichern, die mit den Daten verbunden sind, wobei die Metadaten in den Metadatenregistern separat von den Daten gespeichert werden, die in den Standardregistern gespeichert sind.
  16. Das Computersystem nach Anspruch 15, wobei die Metadaten mit Adressen verbundene Grenzen umfassen, die von Zeigern verwendet werden, welche die Daten in den Standardregistern repräsentieren, um auf Speicher zuzugreifen, wobei der Prozessor umfasst: Logik, um eine untere Grenze und eine obere Grenze einer Adresse zu berechnen, die von einem Zeiger in einem Standardregister verwendet wird, um auf den Speicher zuzugreifen; und ein Metadatenregister, um die unteren und oberen Grenzen zu speichern.
  17. Das Computersystem nach Anspruch 15, wobei mindestens zwei Metadatenregister generiert werden, die jedem der Standardregister entsprechen, wobei ein erstes der mindestens zwei Metadatenregister die untere Grenze speichert und ein zweites der mindestens zwei Metadatenregister die obere Grenze speichert.
  18. Ein maschinenlesbares Medium, das Anweisungen umfasst, die, wenn sie ausgeführt werden, eine Maschine dazu veranlassen: die Standardregister eines Prozessors in Metadatenregister auf dem Prozessor eines Computersystems zu erweitern, wobei die Standardregister darauf Daten gespeichert haben; und Metadaten in den Metadatenregistern separat zu speichern, wobei die Metadaten mit den Daten verbunden sind.
  19. Das maschinenlesbare Medium nach Anspruch 18, wobei die Metadaten mit Adressen verbundene Grenzen umfassen, die von Zeigern verwendet werden, welche die Daten in den Standardregistern repräsentieren, um auf Speicher zuzugreifen, wobei die Anweisungen, wenn sie ausgeführt werden, die Maschine weiter veranlassen: eine untere Grenze und eine obere Grenze einer Adresse zu berechnen, die von einem Zeiger in einem Standardregister verwendet wird, um auf den Speicher zuzugreifen; und die untere und obere Grenze in einem Metadatenregister zu speichern.
  20. Das maschinenlesbare Medium nach Anspruch 18, wobei die Anweisungen, wenn sie ausgeführt werden, weiter die Maschine veranlassen, eine automatische Grenzprüfung für Speicherzugriffe auszuführen, die ein oder mehrere Standardregister verwenden, welche mit einem oder mehreren Grenzregistern verbunden sind, die ein oder mehrere der Grenzen enthalten.
DE102010046892A 2009-09-30 2010-09-29 Management und Implementierung von Metadaten in der Zentraleinheit unter Verwendung von Registererweiterungen Ceased DE102010046892A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/571,269 US8635415B2 (en) 2009-09-30 2009-09-30 Managing and implementing metadata in central processing unit using register extensions
US12/571,269 2009-09-30

Publications (1)

Publication Number Publication Date
DE102010046892A1 true DE102010046892A1 (de) 2011-04-21

Family

ID=43781580

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102010046892A Ceased DE102010046892A1 (de) 2009-09-30 2010-09-29 Management und Implementierung von Metadaten in der Zentraleinheit unter Verwendung von Registererweiterungen

Country Status (5)

Country Link
US (1) US8635415B2 (de)
JP (1) JP5425738B2 (de)
CN (1) CN102033735B (de)
DE (1) DE102010046892A1 (de)
TW (1) TWI499973B (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304898B2 (en) * 2011-08-30 2016-04-05 Empire Technology Development Llc Hardware-based array compression
US9239801B2 (en) * 2013-06-05 2016-01-19 Intel Corporation Systems and methods for preventing unauthorized stack pivoting
US20150205609A1 (en) 2013-12-11 2015-07-23 Mill Computing, Inc. Computer Processor Employing Operand Data With Associated Meta-Data
CN104571952B (zh) * 2014-12-25 2017-08-01 华中科技大学 一种分开处理数据与元数据读写请求的方法
US10437699B2 (en) * 2015-01-21 2019-10-08 International Business Machines Corporation Measuring execution time of benchmark programs in a simulated environment
US9477453B1 (en) * 2015-06-24 2016-10-25 Intel Corporation Technologies for shadow stack manipulation for binary translation systems
GB2540206B (en) * 2015-07-10 2018-02-07 Advanced Risc Mach Ltd Apparatus and method for executing instruction using range information associated with a pointer
GB2541714B (en) * 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour
GB2544315B (en) * 2015-11-12 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
US10235176B2 (en) 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10936713B2 (en) 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10162694B2 (en) 2015-12-21 2018-12-25 Intel Corporation Hardware apparatuses and methods for memory corruption detection
GB2547249B (en) * 2016-02-12 2019-09-11 Advanced Risc Mach Ltd An apparatus and method for generating signed bounded pointers
GB2562062B (en) * 2017-05-02 2019-08-14 Advanced Risc Mach Ltd An apparatus and method for managing capability metadata
US10416963B2 (en) * 2017-06-19 2019-09-17 Arm Limited Bounds checking
WO2019152772A1 (en) 2018-02-02 2019-08-08 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
WO2019152792A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
EP3788488A1 (de) 2018-04-30 2021-03-10 Dover Microsystems, Inc. Systeme und verfahren zur prüfung von sicherheitseigenschaften
WO2020097179A1 (en) 2018-11-06 2020-05-14 Dover Microsystems, Inc. Systems and methods for stalling host processor
WO2020132012A1 (en) 2018-12-18 2020-06-25 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US11068268B2 (en) * 2019-08-05 2021-07-20 Arm Limited Data structure processing
TWI743611B (zh) * 2019-12-04 2021-10-21 新唐科技股份有限公司 處理裝置與其資料存取方法
GB2591788B (en) * 2020-02-06 2022-06-01 Advanced Risc Mach Ltd Saving and restoring registers
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
US11429590B2 (en) 2020-10-15 2022-08-30 International Business Machines Corporation Protecting against invalid memory references
US11983600B2 (en) 2020-12-14 2024-05-14 International Business Machines Corporation Compilation of a quantum program
US11983532B2 (en) 2020-12-30 2024-05-14 International Business Machines Corporation Optimize bound information accesses in buffer protection
US11966331B2 (en) 2020-12-30 2024-04-23 International Business Machines Corporation Dedicated bound information register file for protecting against out-of-bounds memory references
GB2606185B (en) * 2021-04-28 2023-06-21 Advanced Risc Mach Ltd Technique for constraining access to memory using capabilities

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4542456A (en) * 1982-04-28 1985-09-17 At&T Bell Laboratories Method and apparatus for performing range checks
US6349380B1 (en) * 1999-03-12 2002-02-19 Intel Corporation Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor
EP1470476A4 (de) * 2002-01-31 2007-05-30 Arc Int Konfigurierbarer datenprozessor mit mehrlängen-anweisungssatz architektur
CN1271523C (zh) * 2002-08-21 2006-08-23 先进数字芯片株式会社 具有扩展指令的中央处理器
DE10329680A1 (de) * 2003-07-01 2005-02-10 Universität Stuttgart Prozessorarchitektur für exakte Zeigeridentifizierung
CN100338571C (zh) * 2003-09-27 2007-09-19 英特尔公司 处理器的扩展寄存器空间装置和方法
US7197586B2 (en) * 2004-01-14 2007-03-27 International Business Machines Corporation Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler
US7380276B2 (en) * 2004-05-20 2008-05-27 Intel Corporation Processor extensions and software verification to support type-safe language environments running with untrusted code
US7231509B2 (en) * 2005-01-13 2007-06-12 International Business Machines Corporation Extended register bank allocation based on status mask bits set by allocation instruction for respective code block
US7526578B2 (en) * 2006-02-17 2009-04-28 International Business Machines Corporation Option ROM characterization
JP5217431B2 (ja) * 2007-12-28 2013-06-19 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN101226468A (zh) * 2008-01-30 2008-07-23 中国科学院计算技术研究所 一种risc处理器装置及其有界访存方法
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor
US7962729B2 (en) * 2009-01-05 2011-06-14 International Business Machines Corporation Dynamic runtime range checking of different types on a register using upper and lower bound value registers for the register

Also Published As

Publication number Publication date
JP2011081790A (ja) 2011-04-21
TWI499973B (zh) 2015-09-11
TW201118724A (en) 2011-06-01
JP5425738B2 (ja) 2014-02-26
US8635415B2 (en) 2014-01-21
CN102033735B (zh) 2015-06-17
CN102033735A (zh) 2011-04-27
US20110078389A1 (en) 2011-03-31

Similar Documents

Publication Publication Date Title
DE102010046892A1 (de) Management und Implementierung von Metadaten in der Zentraleinheit unter Verwendung von Registererweiterungen
DE112005002405B4 (de) Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung
DE102006015106B4 (de) Bereitstellen eines erweiterten Speicherschutzes
DE102007062744B4 (de) Guest-Host-Adressübersetzung für den Zugriff von Geräten auf einen Speicher in einem partitionierten System
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE102007006190A1 (de) Techniken zur Verwendung von Speicher-Attributen
DE102009049078B4 (de) Verwendung von Ausführer-Wissen über Speicherregion-Ordnungsanforderungen zum Modifizieren von Transaktionsattributen
DE112013002956T5 (de) Vorabladen von Verzweigungsvorhersagen
DE202010018492U1 (de) Dynamisches Einfügen und Löschen von Programmcode für statische, analysebasierte Sandboxen
DE112013003743T5 (de) Beschleunigte spurübergreifende Vektorreduzierungsbefehle
DE102010053088A1 (de) Sammeln und Streuen mehrerer Datenelemente
DE112007001988T5 (de) Gemeinsames Nutzen von Informationen durch Gäste in einer Virtuelle-Maschine-Umgebung
DE102008025476A1 (de) Übersetzung einer virtuellen Adresse in eine physikalische Adresse mit Unterstützung von Seitenattributen
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE10297433T5 (de) Speicherverwaltungssystem und Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse
DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme
DE102020127108A1 (de) Integritätsgeschützte befehlspufferausführung
DE102021124623A1 (de) Schützen vor ungültigen arbeitsspeicherreferenzen
DE112010003942T5 (de) Einrichtung zum Setzen von Schlüsseln ohne Stilllegung
DE112016005823T5 (de) Überwachen des betriebs eines prozessors
DE112017003332T5 (de) Öffnungszugriffsprozessoren, verfahren, systeme und befehle

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012140000

Ipc: G06F0009300000

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final