DE102021131418A1 - Dedizierte registerdatei mit begrenzungsinformationen zum schützen vor speicherreferenzen ausserhalb der begrenzungen - Google Patents

Dedizierte registerdatei mit begrenzungsinformationen zum schützen vor speicherreferenzen ausserhalb der begrenzungen Download PDF

Info

Publication number
DE102021131418A1
DE102021131418A1 DE102021131418.6A DE102021131418A DE102021131418A1 DE 102021131418 A1 DE102021131418 A1 DE 102021131418A1 DE 102021131418 A DE102021131418 A DE 102021131418A DE 102021131418 A1 DE102021131418 A1 DE 102021131418A1
Authority
DE
Germany
Prior art keywords
register
information
address
bounds
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021131418.6A
Other languages
English (en)
Inventor
Tong Chen
Alper Buyuktosunoglu
Richard H. Boivie
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102021131418A1 publication Critical patent/DE102021131418A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Ein Verfahren, ein System und eine Vorrichtung zum Schützen vor Referenzen außerhalb der Begrenzungen umfassen Speichern einer Adresse eines Puffers in einem Universalregister und Speichern von Begrenzungsinformationen (Bl) für den Puffer in einem Register mit Begrenzungsinformationen, und wenn ein Inhalt des Universalregisters als eine Adresse bei einem Lade- oder Speichervorgang verwendet wird, Verwenden eines Inhalts des Registers mit Begrenzungsinformationen, um zu ermitteln, ob der Lade- oder Speichervorgang außerhalb der Begrenzungen ist.

Description

  • HINTERGRUND
  • Die Erfindung bezieht sich auf eine Ausführungsform eines Verfahrens, einer Vorrichtung und eines Systems für eine Registerdatei mit Begrenzungsinformationen und insbesondere, jedoch nicht einschränkend, auf ein Verfahren, eine Vorrichtung und ein System zum Verwenden einer dedizierten Registerdatei mit Begrenzungsinformationen zum Schützen vor Speicherreferenzen außerhalb der Begrenzungen.
  • Schwachstellen bei der Speichersicherheit (z.B. Pufferüberlauf, Nullzeiger, Beschädigung des Heap-Speichers, Benutzen nach Freigeben (use after free) und doppeltes Freigeben (double free)) treten auf, wenn Software versehentlich oder absichtlich auf den Systemspeicher in einer Weise zugreift, die die ihm zugeordnete Größe und die Speicheradressen überschreitet.
  • Programme wie C und C++, die in bestimmten Betriebssystemen und anderen Programmen in großem Umfang verwendet werden, können zu einer Mehrzahl von Speichersicherheitsfehlern führen, die Angreifer mit gefährlichen und störenden Folgen wie beispielsweise Remote-Code-Ausführung oder Fehlern bei der Rechteerweiterung usw. ausnützen können. Ein Angreifer kann zum Beispiel beim Lesen von Speichern außerhalb der Begrenzungen den Speicherschutz umgehen und an geheime Werte gelangen.
  • Daher werden Techniken benötigt, die Schwachstellen bei der Speichersicherheit auf effiziente Weise verringern oder beseitigen können.
  • KURZDARSTELLUNG
  • In Anbetracht der vorgenannten Probleme sowie weiterer Probleme, Nachteile und Beeinträchtigungen des oben genannten Standes der Technik stellt ein beispielhafter Aspekt der offenbarten Erfindung ein Verfahren, eine Vorrichtung und ein System für eine dedizierte Registerdatei mit Begrenzungsinformationen zum Schützen vor Speicherreferenzen außerhalb der Begrenzungen bereit.
  • Eine Ausführungsform der vorliegenden Erfindung ist ein Verfahren zum Schützen vor Referenzen außerhalb der Begrenzungen, das Speichern einer Adresse eines Puffers in einem Universalregister und Speichern von Begrenzungsinformationen (Bl) für den Puffer in einem Register mit Begrenzungsinformationen umfasst, und wenn der Inhalt des Universalregisters als eine Adresse bei einem Lade- oder Speichervorgang verwendet wird, Verwenden des Inhalts des Registers mit Begrenzungsinformationen, um zu ermitteln, ob der Lade- oder Speichervorgang außerhalb der Begrenzungen ist.
  • Eine Ausführungsform der vorliegenden Erfindung ist ein System zum Schützen vor Referenzen außerhalb der Begrenzungen, das Speichern einer Adresse eines Puffers in einem Universalregister und Speichern von Begrenzungsinformationen (Bl) für den Puffer in einem Register mit Begrenzungsinformationen umfasst, und wenn der Inhalt des Universalregisters als eine Adresse bei einem Lade- oder Speichervorgang verwendet wird, Verwenden des Inhalts des Registers mit Begrenzungsinformationen, um zu ermitteln, ob der Lade- oder Speichervorgang außerhalb der Begrenzungen ist.
  • Eine weitere Ausführungsform der vorliegenden Erfindung ist ein Computerprogrammprodukt, das ein durch einen Computer lesbares Speichermedium mit darauf enthaltenen Programmanweisungen aufweist, wobei die Programmanweisungen von einem Computer lesbar und ausführbar sind, um den Computer zu veranlassen, ein Verfahren zum Schützen vor Referenzen außerhalb der Begrenzungen durchzuführen, das Speichern einer Adresse eines Puffers in einem Universalregister und Speichern von Begrenzungsinformationen (Bl) für den Puffer in einem Register mit Begrenzungsinformationen umfasst, und wenn der Inhalt des Universalregisters als eine Adresse bei einem Lade- oder Speichervorgang verwendet wird, Verwenden des Inhalts des Registers mit Begrenzungsinformationen, um zu ermitteln, ob der Lade- oder Speichervorgang außerhalb der Begrenzungen ist.
  • Damit die ausführliche Beschreibung der Erfindung besser verstanden und der vorliegende Beitrag zur Technik besser gewürdigt werden können, wurden einige Ausführungsformen der Erfindung in groben Zügen umrissen. Es gibt selbstverständlich noch weitere Ausführungsformen der Erfindung, die im Folgenden beschrieben werden und die Gegenstand der hier beigefügten Ansprüche sind.
  • Es versteht sich, dass die Erfindung in ihrer Anwendung nicht auf die Einzelheiten des Aufbaus und die Anordnungen der in der folgenden Beschreibung aufgeführten oder in den Zeichnungen dargestellten Komponenten beschränkt ist. Die Erfindung kann zusätzlich zu den beschriebenen Ausführungsformen noch Ausführungsformen enthalten und auf verschiedene Art und Weise durchgeführt werden. Es versteht sich ferner, dass die hier verwendete Ausdrucksweise und Terminologie sowie die Zusammenfassung zum Zweck der Beschreibung dienen und nicht als einschränkend angesehen werden sollten.
  • Für Fachleute ist daher offensichtlich, dass das Konzept, auf dem diese Offenbarung beruht, ohne Weiteres als Grundlage für die Gestaltung anderer Strukturen, Verfahren und Systeme zum Durchführen der verschiedenen Zwecke der vorliegenden Erfindung verwendet werden kann. Es ist daher wichtig, dass die Ansprüche unter dem Aspekt betrachtet werden, dass sie diesen äquivalenten Aufbau umfassen, ohne vom Gedanken und Anwendungsbereich der vorliegenden Erfindung abzuweichen.
  • Figurenliste
  • Die beispielhaften Aspekte der Erfindung sind anhand der folgenden ausführlichen Beschreibung der beispielhaften Ausführungsformen der Erfindung unter Bezugnahme auf die Zeichnungen besser verständlich.
    • 1 veranschaulicht ein beispielhaftes System einer Ausführungsform der vorliegenden Erfindung.
    • 2 veranschaulicht eine Tabelle mit Begrenzungsinformationen.
    • 3 veranschaulicht ein Verfahren für eine Tabelle mit Begrenzungsinformationen.
    • 4 veranschaulicht Auswählen zwischen zwei BI-Tabellen der Indextabelle und der Wert-/Schlüsseltabelle in einer Ausführungsform der vorliegenden Erfindung.
    • 5 veranschaulicht ein beispielhaftes Erzeugen einer BI-Anweisung einer Ausführungsform der vorliegenden Erfindung.
    • 6 veranschaulicht eine beispielhafte Ladeanweisung einer Ausführungsform der vorliegenden Erfindung.
    • 7A veranschaulicht, wie eine Anwendung geändert werden kann, damit sie gemäß einer Ausführungsform der vorliegenden Erfindung einen Schutz vor Speicherreferenzen außerhalb der Begrenzungen umfasst.
    • 7B veranschaulicht, wie eine Anwendung geändert werden kann, damit sie einen Schutz vor Speicherreferenzen außerhalb der Begrenzungen unter Verwendung von MPX von INTEL umfasst.
    • 8 veranschaulicht eine beispielhafte Speicheranweisung einer Ausführungsform der vorliegenden Erfindung.
    • 9 veranschaulicht eine alternative Implementierung der Zuordnung.
    • 10A veranschaulicht ein Verfahren einer Ausführungsform der vorliegenden Erfindung.
    • 10B veranschaulicht ein Verfahren einer Ausführungsform der vorliegenden Erfindung.
    • 11 veranschaulicht ein beispielhaftes Hardware-/Informationsverarbeitungssystem zum Integrieren der beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 12 veranschaulicht ein signaltragendes Speichermedium zum Speichern von maschinenlesbaren Anweisungen eines Programms, das das Verfahren gemäß der beispielhaften Ausführungsform der vorliegenden Erfindung implementiert.
    • 13 zeigt einen Cloud-Computing-Knoten gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 14 zeigt eine Cloud-Computing-Umgebung gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
    • 15 zeigt Abstraktionsmodellschichten gemäß einer beispielhaften Ausführungsform der vorliegenden Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die Erfindung wird im Folgenden mit Bezug auf die gezeichneten Figuren beschrieben, in denen sich gleiche Bezugsziffern durchgehend auf gleiche Teile beziehen. Es wird darauf hingewiesen, dass die verschiedenen Merkmale der Zeichnung wie in der Praxis üblich nicht unbedingt maßstabsgetreu sind. Die Abmessungen der verschiedenen Merkmale können aus Gründen der Übersichtlichkeit vielmehr beliebig vergrößert oder verkleinert werden. Nachstehend werden beispielhafte Ausführungsformen zur Veranschaulichung bereitgestellt, die die Ansprüche nicht einschränken. Darüber hinaus sei darauf hingewiesen, dass die Schritte in unterschiedlicher Reihenfolge, kombiniert oder gleichzeitig durchgeführt werden können. Darüber hinaus kann jede der gezeigten Strukturen und Ausführungsformen verändert oder kombiniert werden.
  • Speicherreferenzen, die außerhalb ihrer Begrenzungen liegen, können ernsthafte Sicherheitsprobleme verursachen. Es ist wichtig, zu prüfen, ob jede Speicherreferenz, Laden oder Speichern, in ihrer Speicherbegrenzung liegt. Eine bestehende Lösung ist das System Memory Protection (MPX) von Intel. MPX führte eine neue ISA (Befehlssatzarchitektur) und eine Hardware-Unterstützung zum genauen Überprüfen der Begrenzung ein. Im Speicher werden die Begrenzungsinformationen (Bl) für jeden Puffer mit dem Zeigerwert als Schlüssel gespeichert/abgerufen. Im Kern befinden sich der Zeiger und seine BI in Registern, und die Zuordnung wird durch zusätzliche, vom Compiler hinzugefügte Anweisungen aufrechterhalten. Für die ursprüngliche Berechnung und der Operation des Begrenzungsschutzes werden dieselben Hardware-Ressourcen genutzt. Es gibt noch andere Verfahren, mit denen versucht wird, Schwachstellen bei der Speichersicherheit zu beseitigen oder zu verringern. Bei diesen anderen Lösungen besteht insgesamt jedoch das große Problem, dass eine Mehrzahl von Anweisungen hinzugefügt werden muss und dass die Implementierung teuer ist. Die Anzahl der Anweisungen kann sich daher um das Vier- oder Mehrfache erhöhen, und die Ausführungszeit kann sich um das Zwei- oder Mehrfache erhöhen, selbst wenn die Überprüfung der Begrenzung inaktiv ist.
  • Die vorliegende Erfindung löst die vorstehend genannten Probleme mit Schwachstellen bei der Speichersicherheit, ohne dass die Anzahl der Anweisungen wie bei früheren Lösungen erhöht werden muss. Im Allgemeinen führt die vorliegende Erfindung eine dedizierte Registerdatei zum Speichern von Begrenzungsinformationen für aktive Zeiger ein, die sich in Universalregistern befinden. Bei der vorliegenden Technik wird auch eine Zuordnung vom Universalregister zum Begrenzungsregister aufrechterhalten, sodass die Operation zum Überprüfen der Begrenzung mit den ursprünglichen Anweisungen durchgeführt werden kann. Die Anzahl der Anweisungen, die für das Überprüfen der Begrenzung hinzugefügt werden muss, wird stark verringert. Um die Operationen zum Überprüfen der Begrenzung für Anweisungen auszuführen, wird darüber hinaus eine spezielle Hardware hinzugefügt. Hinzu kommt, dass sich die Latenz der meisten Anweisungen bei Registern mit Begrenzungsinformationen nicht erhöht, wenn eine Operation zum Überprüfen der Begrenzung hinzugefügt wird.
  • Die vorliegende Erfindung stellt einen genauen Schutz bereit, bei dem jeder Puffer geschützt wird, und die Präzision ist bis auf das Byte genau. Das vorliegende System ist auf C/C++-Anwendungen und andere Programme mit möglichen Speicherproblemen anwendbar, bei denen es eine beliebige Zeigerarithmetik gibt und die Anzahl der zu schützenden Puffer in einer Anwendung von Tausenden bis Millionen reichen kann.
  • 1 veranschaulicht ein beispielhaftes System einer Ausführungsform der vorliegenden Erfindung. Das System 100 umfasst einen CPU-Kern 10 (CPU = Zentraleinheit) und einen Speicher 20. Der CPU-Kern 10 umfasst eine Anweisungsabruf- und eine Decodierfunktion 12, eine ALU (arithmetische Logikeinheit) 14, eine Universalregisterdatei 16, eine Begrenzungsregisterdatei 18 und eine Begrenzungsverarbeitungseinheit 20. Die Universalregisterdatei tauscht mit dem Daten-Cache 22 Daten aus, während die Begrenzungsregisterdatei 18 mit dem Cache 24 mit den Begrenzungsinformationen (Bl) verbunden ist. BI-Informationen können in der Hardware-Organisation 100 in einem dedizierten Cache (BI-Cache 24) zwischengespeichert werden. Der BI-Cache 24 verringert eine Verlangsamung des Zugriffs auf die BI-Tabelle 26 im Speicher 20.
  • Der Speicher 20 umfasst die Tabelle 26 mit Begrenzungsinformationen, die die Indextabelle 28 und die Wert-/Schlüsseltabelle 30 enthält. Die Tabelle 26 mit Begrenzungsinformationen (Bl) befindet sich daher im Speicher 20.
  • Der CPU-Kern 10 tauscht Informationen mit der Indextabelle 28 und der Wert-/Schlüsseltabelle 30 aus. Der CPU-Kern 10 stellt der Indextabelle 28 über „Index in einem Zeiger“ (Pfad 23) Daten bereit, während er der Wert-/Schlüsseltabelle 30 über „Wert des Zeigers“ (Pfad 25) Daten bereitstellt.
  • Die Begrenzungsinformationen (Bl) enthalten eine Anfangsadresse und eine Länge für jeden Puffer. Die Indextabelle 28 umfasst einen Zugriff über einen Index. Die Wert-/Schlüsseltabelle 30 umfasst einen Zugriff mit einem Zeigerwert als Schlüssel. Die Ausführung der Anweisungen im CPU-Kern 10 umfasst die BI-Register 18, um die Begrenzungsinformationen zu speichern. Das System 100 hält eine Zuordnung zwischen einem Universalregister in der Universalregisterdatei 16 und einem Register mit Begrenzungsinformationen in der Begrenzungsregisterdatei 18 aufrecht. Die Begrenzungsinformationen für den Zeiger in der Registerdatei 18 können anhand der ursprünglichen Anweisungen lokalisiert werden. Die Begrenzungsverarbeitungseinheit führt Operationen zum Begrenzungsschutz aus.
  • Die Begrenzungsregisterdatei 18 wird wie folgt näher beschrieben. Ein Register in der Begrenzungsregisterdatei 18 (z.B. 128 Bit) speichert Begrenzungsinformationen, darunter eine Anfangsadresse und eine Länge eines Puffers. Das System 100 stellt sicher, dass die BI eines Zeigers im Register 18 über eine Zuordnung, z.B. FB, gefunden werden können:
    • FB(Rn) = Bm: bedeutet, dass sich die BI für den Zeiger im Universalregister Rn im Begrenzungsregister Bm befinden.
  • Eine solche Zuordnung ermöglicht es, dass über ein Zeigerregister auf die Begrenzungsinformationen zugegriffen werden kann. Das System 100 verwendet keine separate Anweisung, um Begrenzungsinformationen zu verwenden, wie dies bei MPX der Fall ist. Zu früheren Anweisungen kann eine zusätzliche Registeradresse hinzugefügt werden.
  • Eine vorgeschlagene Implementierung der FB-Abbildung: Spiegelung der Universalregister FB ( R n ) = B n .
    Figure DE102021131418A1_0001
  • Die Anzahl der Begrenzungsregister 18 entspricht der Anzahl der Universalregister 16, oder sie kann verringert werden, wenn der Compiler nur einen Teilsatz der Universalregister 16 für die Zeiger verwendet. Das System 100 gibt die BI entlang der Zeigerarithmetik (z.B. Ri, Rj, Rk hinzufügen) weiter, während ein Compiler markiert, welcher Operand ein Zeiger ist (Rk ist ein Zeiger). Die BI werden kopiert (von Bk zu Bi).
  • Die Tabelle 26 mit Begrenzungsinformationen (Bl) wird wie folgt näher beschrieben. Die BI-Tabelle 26 enthält mindestens zwei Untertabellen, darunter eine Indextabelle 28 und die Wert-/Schlüsseltabelle 30.
  • 2 veranschaulicht eine Tabelle 26 mit Begrenzungsinformationen. In der Indextabelle 28 enthält jeder Eintrag eine Anfangsadresse 40 und eine Länge 42 des Puffers. Jeder Eintrag in der Wert-/Schlüsseltabelle 30 enthält einen Zeigerwert (Schlüssel) 50, eine Anfangsadresse 52 und eine Länge des Puffers 54. Die Wert-/Schlüsseltabelle 30 kann bei Bedarf vergrößert werden und wird über einen Zeigerwert durchsucht. Der Zeigerwert (Schlüssel) 50 kann vom Zeigerwert 64 eines Zeigers 60 erhalten werden. Der Index 62 des Zeigers 60 kann verwendet werden, um die Einträge der Indextabelle zu erhalten.
  • Die Indextabelle 28 kann als lineare Tabelle mit einer Mehrzahl von BI-Einträgen 29 organisiert sein, wobei jeder BI-Eintrag ein Basisadressfeld 40 und ein Objektgrößen- oder Längenfeld 42 enthält. Jeder BI-Eintrag 29 der Indextabelle 28 kann einem Heap-Objekt zugehörig sein. Der Zugriff auf einen bestimmten BI-Eintrag 29 in der Indextabelle 28, der einem bestimmten Objekt entspricht, kann mit einer einzigen Tabellensuche erfolgen. Die einzige Tabellensuche kann zum Beispiel die Verwendung eines Index 62 umfassen, der während der Objektzuordnung in einen Zeiger 60 eingebettet werden kann.
  • Die Mitgliederfunktionen oder Mikroanweisungen sind wie folgt:
    • Void initialize (long int bit_mask): Einrichten der Zuordnung der Indexbits von bit_mask und Zuordnen von Speicherplatz für die Indextabelle und die Wert-/Schlüsseltabelle
    • unsigned long int get_index_bits (void *addr): Zurücksenden des Wertes ohne Vorzeichen, der durch die Indexbits in der Zeigeradresse dargestellt wird
    • Void *set_index_bits (void *addr, unsigned int v): Zurücksenden der Adresse mit den auf den Wert v gesetzten Indexbits
    • Constant INDEX_NA: all ones 11...1 //: Index ist für diesen Zeiger nicht verfügbar
    • Die Funktionen get_index_bits und set_index_bits sollten direkt von der Hardware unterstützt werden.
  • 3 veranschaulicht ein Verfahren für eine Tabelle mit Begrenzungsinformationen.
  • Das System 100 kann die Zuordnung der Indexbits anhand einer Bitmaske 202 einrichten und in Schritt 204 Platz für die Indextabelle 28 und die Wert-/Schlüsseltabelle 30 zuordnen. Die Schritte 202 und 204 können mit den vorstehenden Anweisungen durchgeführt werden: „Void initialize (long int bit_mask)“.
  • Das System 100 sendet anschließend den Wert ohne Vorzeichen zurück, der durch die Indexbits 62 in der Zeigeradresse 206 dargestellt wird. Anschließend sendet das System 100 in Schritt 208 die Adresse mit den Index-Bits 62 zurück, die auf den Wert v gesetzt sind. Constant INDEX_NA: all ones 11...1 //: der Index ist für diesen Zeiger nicht verfügbar (Schritt 210). Die Funktionen in den Schritten 206 („get_index_bits“) und 208 („set_index_bits“) sollten direkt von der Hardware unterstützt werden.
  • 4 veranschaulicht Auswählen zwischen zwei BI-Tabellen der Indextabelle 28 und der Wert-/Schlüsseltabelle 30 in einer Ausführungsform der vorliegenden Erfindung.
  • Wählen von bzw. Auswählen zwischen zwei BI-Tabellen 26 der Indextabelle 28 und der Wert-/Schlüsseltabelle 30 kann auf der Grundlage der Ressourcenverfügbarkeit (Index-Bits) 62 zur Laufzeit durchgeführt werden (Schritt 232). Der Binärcode ist derselbe.
  • Das System 100 stellt dem Compiler/Benutzer eine Steuerung bereit, mit der es möglich ist, zu entscheiden, welche Tabelle 26 mit Begrenzungsinformationen (die Indextabelle 28 oder die Wert-/Schlüsseltabelle 30) nach Möglichkeit verwendet wird, und die Einträge in der Indextabelle 28 für die künftige Pufferzuordnung zu reservieren.
  • Das System 100 ermittelt in Schritt 234, ob ein Aufrufer (Compiler/Benutzer) eine Entscheidung trifft. Wenn die Entscheidung in Schritt 234 „ja“ ist, ermittelt das System 100 in Schritt 240, ob die Indextabelle 28 vom Compiler/Benutzer (Aufrufer) ausgewählt wird. Wenn die Entscheidung in Schritt 240 „nein“ ist, verwendet das System 100 die Wert-/Schlüsseltabelle 30 für die Puffer. Wenn die Entscheidung in Schritt 240 „ja“ ist, verwendet das System 100 eine Indextabelle 28 für die Puffer (238).
  • Wenn die Entscheidung in Schritt 234 „nein“ ist, ermittelt das System 100, ob die Indextabelle 28 von der Laufzeit-Heuristik ausgewählt wird (236). Wenn die Entscheidung in Schritt 236 „nein“ ist, verwendet das System 100 die Wert-/Schlüsseltabelle 30 für die Puffer (242). Wenn die Entscheidung in Schritt 236 „ja“ ist, verwendet das System 100 die Indextabelle 28 für die Puffer (238).
  • Wie vorstehend gezeigt, kann für das Auswählen ein einfaches oder komplexes Verfahren angewendet werden. Die einfache Strategie wäre, zuerst die Indextabelle 28 zu verwenden. Das System 100 kann die Indextabelle 28 für Puffer verwenden, deren Zeiger selbst viele Lade-/Speichervorgänge umfassen. Das System 100 kann die Verwendung der Indextabelle 28 für Zeiger erzwingen, die in Schritt eine Typkonvertierung durchlaufen.
  • 5 veranschaulicht ein beispielhaftes Erzeugen einer BI-Anweisung 370 einer Ausführungsform der vorliegenden Erfindung.
  • 6 veranschaulicht eine beispielhafte Ladeanweisung 402 einer Ausführungsform der vorliegenden Erfindung. Es sei darauf hingewiesen, dass die Begrenzungsschutzoperationen 400 (nicht fettgedruckt 404) so konzipiert sind, dass sie während der Laufzeit aktiviert oder deaktiviert werden können.
  • 7A veranschaulicht, wie eine Anwendung geändert werden kann, damit sie gemäß einer Ausführungsform der vorliegenden Erfindung einen Schutz vor Speicherreferenzen außerhalb der Begrenzungen umfasst. Es gibt weit weniger Anweisungen als bei anderen Systemen wie MPX, und es wird derselbe Code verwendet, unabhängig davon, welche BI-Tabelle 26 verwendet wird. Zu den Änderungen gehört auch „createBI p, p, @a+79, 0“ (406), um die Tabelle 26 mit Begrenzungsinformationen zu erzeugen. Außerdem zeigt „load“ bei 408 das Laden des Zeigers an.
  • 7B veranschaulicht, wie eine Anwendung geändert werden kann, damit sie einen Schutz vor Speicherreferenzen außerhalb der Begrenzungen unter Verwendung von MPX von INTEL umfasst. Wie aus den unterstrichenen und fettgedruckten Zeilen der Anweisung 409 hervorgeht, erhöht sich die Anzahl der Anweisungen erheblich, wenn MPX anstelle der vorliegenden Erfindung verwendet wird.
  • 8 veranschaulicht eine beispielhafte Speicheranweisung 412 einer Ausführungsform der vorliegenden Erfindung. Es sei darauf hingewiesen, dass die Begrenzungsschutzoperationen (nicht in der fettgedruckten Anweisung 414) so konzipiert sind, dass sie während Laufzeit aktiviert oder deaktiviert werden können.
  • 9 veranschaulicht eine alternative Implementierung der Zuordnung.
  • Das System 100 kann jedem der Universalregister der Universalregisterdatei 16 zusätzliche N-Bits beifügen. Die zusätzlichen N-Bits können zum Indexieren von 2N Begrenzungsregistern verwendet werden, wobei N eine ganze Zahl ist (Schritt 302).
  • FB(Ri) = Bj, j ist der Wert der Ri beigefügten zusätzlichen N-Bits.
  • Die Zuordnung wird wie folgt aufrechterhalten. Bei der Initialisierung des Zeigers wird ein freigegebenes B-Register (Bl-Register) ausgewählt und der Index dieses B-Registers (Bl-Registers) in die N-Bits des Universalregisters für den Zeiger aufgenommen (304). Bei allen anderen Registern sollten die N-Bits in den B-Registern (BI-Registern) angeben, dass diese anderen Register ?? zugehörig sind (306).
  • Weitergabe mit Zeigerarithmetik durch Auswählen des Nicht-Null-Wertes der zusätzlichen Bits von den Operanden (308). Eines der Hauptprobleme besteht darin, wie das BI-Register freigegeben oder das BI-Register der BI-Registerdatei 18 ausgelagert (spill) wird.
  • Das System 100 gibt das BI-Register der BI-Registerdatei 18 mit einer vom Compiler eingefügten Anweisung wie folgt frei. Anweisung zum Freigeben des Registers. Das System 100 verwendet die zugeordnete Registerdatei und benötigt die Freigabeanweisung, um das BI-Register der BI-Registerdatei 18 freizugeben. Wenn Eins-zu-eins-Zuordnung verwendet wird, wird die Freigabeanweisung nicht benötigt, und die Hardware kann die BI-Registerdateien 18 beibehalten. Das System 100 verwendet Zeigt-auf-Analyse (points-to analysis), um Zeigersätze für jedes BI-Register zu identifizieren: (B1:{R2, R4}) (Schritt 310).
  • Wenn festgestellt wird, dass ein Zeigerregister 60 inaktiv wird (durch Datenflussanalyse) 312, entfernt das System 100 es aus dem Registersatz (314).
  • Wenn festgestellt wird, dass der Registersatz in Kürze leer sein wird (316), gibt das System das entsprechende BI-Register 18 frei (Schritt 318). Eine andere Möglichkeit besteht darin, zu ermitteln, welche BI-Register noch aktiv sind, indem alle aktiven Zeiger (am Anfang oder Ende der Funktion) abgetastet und die anderen freigegeben werden (Schritt 318).
  • Das System 100 lagert das BI-Register 18 aus, wenn festgestellt wird, dass nicht genügend vorhanden sind (320). Angenommen, KS ist der Satz von Registern, der beibehalten werden soll (mindestens zwei BI-Register für die nächste Anweisung).
    If FB(Rx) != FB(Ry), for all Ry in KS, spill Rx out
    Remember all Rz that FB(Rz) = FB(Rx) for restore
  • Das System wählt anschließend anhand der Verfahren für das Auslagern von Registern in Verbindung mit dem Ergebnis der Zeigt-auf-Analyse aus, welches Register ausgelagert wird (322).
  • 10A veranschaulicht ein Verfahren einer Ausführungsform der vorliegenden Erfindung.
  • Das System 100 speichert Begrenzungsinformationen (Bl) in Registern in einer Begrenzungsregisterdatei 18 (Schritt 502). Die Begrenzungsinformationen werden der Universalregisterdatei 16 zugeordnet. Die Begrenzungsinformationen enthalten eine Anfangsadresse und eine Länge für jeden Puffer.
  • Das System 100 erzeugt anschließend aus den Begrenzungsinformationen aus der Begrenzungsregisterdatei 18 eine Indextabelle in einem Speicher 20 (Schritt 504). Auf die Indextabelle 28 wird über einen Index zugegriffen. Jeder Eintrag der Indextabelle 28 umfasst eine Anfangsadresse 40 und eine Länge 42 des Puffers.
  • Das System 100 erzeugt ferner anhand der Begrenzungsinformationen eine Wert-/Schlüsseltabelle 30 im Speicher 20. Auf die Wert-/Schlüsseltabelle 30 wird mit einem Zeigerwert 64 als Schlüssel 50 zugegriffen. Jeder Eintrag in der Wert-/Schlüsseltabelle 30 enthält einen Schlüssel 50 eines Zeigerwerts 62, eine Anfangsadresse 52 und eine Länge des Puffers 54. Die Begrenzungsinformationen für einen Zeiger können anhand der ursprünglichen Anweisungen lokalisiert werden.
  • Das System 100 schützt vor Referenzen außerhalb der Begrenzungen unter Verwendung der Indextabelle 28 und der Wert-/Schlüsseltabelle 30 (Schritt 508). Ein Prozessor oder ein CPU-Kern 10 enthält eine Begrenzungsverarbeitungseinheit 20, die Operationen zum Schutz vor Referenzen außerhalb der Begrenzungen ausführt.
  • Die vorliegende Erfindung führt daher eine dedizierte Registerdatei zum Speichern von Begrenzungsinformationen für aktive Zeiger ein, die sich in Universalregistern befinden. Die vorliegende Erfindung erhält eine Zuordnung von einem Universalregister der Universalregisterdatei 16 zu einem Begrenzungsregister der Begrenzungsregisterdatei 16 aufrecht, sodass die Operation zum Überprüfen der Begrenzung mit den ursprünglichen Anweisungen durchgeführt werden kann. Die Anzahl der Anweisungen, die für das Überprüfen der Begrenzung hinzugefügt werden muss, wird durch die vorliegende Erfindung stark verringert. Um die Operationen zum Überprüfen der Begrenzung für Anweisungen auszuführen, wird darüber hinaus eine spezielle Hardware eingeführt. Hinzu kommt, dass sich die Latenz der meisten Anweisungen bei Registern mit Begrenzungsinformationen der Registerdatei 18 mit Begrenzungsinformationen nicht erhöht, wenn eine Operation zum Überprüfen der Begrenzung hinzugefügt wird.
  • Die Erfindung ist daher in der Lage, einen genauen Schutz bereitzustellen, bei dem das System 100 jeden Puffer schützt, und die Präzision bis auf das Byte genau ist. Die vorliegende Erfindung ist auf ältere Programme wie C/C++-Anwendungen anwendbar, bei denen es eine beliebige Zeigerarithmetik geben kann und die Anzahl der zu schützenden Puffer in einer Anwendung von Tausenden bis Millionen reichen kann.
  • 10B veranschaulicht ein Verfahren einer Ausführungsform der vorliegenden Erfindung.
  • Das Verfahren zum Schützen vor Referenzen außerhalb der Begrenzungen umfasst anders ausgedrückt Folgendes. Wenn ein Puffer zugeordnet wird, speichert das System 100 eine Adresse des Puffers in einem Universalregister von einer Universalregisterdatei 16 und speichert die Begrenzungsinformationen (Bl) für den Puffer in einem Register mit Begrenzungsinformationen von einer Begrenzungsregisterdatei 18 (Schritt 510). Wenn der Inhalt des Universalregisters von der Universalregisterdatei 16 als Adresse bei einem Lade- oder Speichervorgang verwendet wird, verwendet das System 100 den Inhalt des Registers mit Begrenzungsinformationen der Begrenzungsregisterdatei 18, um zu ermitteln, ob der Lade- oder Speichervorgang außerhalb der Begrenzungen ist (Schritt 512).
  • Verschiedene Merkmale, die in verschiedenen Figuren der 1 bis 10 dargestellt sind, können kombiniert, geändert oder zwischen den verschiedenen Beispielen ausgetauscht werden. Das in den 1 bis 10 dargestellte System 100 kann auch in der in den 11 bis 15 dargestellten Hardware und Software implementiert werden.
  • 11 veranschaulicht eine andere Hardware-Konfiguration des Systems, in der es ein Informationsverarbeitungs-/Computersystem 1100 gemäß der vorliegenden Erfindung gibt, das über mindestens einen Prozessor oder eine Zentraleinheit (CPU) 1110 verfügt, die die Techniken der Erfindung in Form eines Software-Programms für Software-Intelligenz als Dienst implementieren kann.
  • Die CPUs 1110 sind über einen Systembus 1112 mit einem Direktzugriffsspeicher (RAM) 1114, einem Nur-Lese-Speicher (ROM) 1116, einem Eingabe-/Ausgabeadapter (E/A-Adapter) 1118 (zum Verbinden von Peripherieeinheiten wie Platteneinheiten 1121 und Bandlaufwerken 1140 mit dem Bus 1112), einem Benutzerschnittstellenadapter 1122 (zum Verbinden einer Tastatur 1124, einer Maus 1126, eines Lautsprechers 1128, eines Mikrofons 1132 und/oder einer anderen Benutzerschnittstelleneinheit mit dem Bus 1112), einem Datenübertragungsadapter 1134 zum Verbinden eines Informationsverarbeitungssystems mit einem Datenverarbeitungsnetzwerk, dem Internet, einem Intranet, einem Personal Area Network (PAN) usw. und einem Anzeigeadapter 1136 zum Verbinden des Busses 1112 mit einer Anzeigeeinheit 1138 und/oder einem Drucker 1139 (z.B. einem digitalen Drucker oder Ähnlichem) verbunden.
  • Neben der vorstehend beschriebenen Hardware-/Softwareumgebung umfasst ein anderer Aspekt der Erfindung ein durch einen Computer implementiertes Verfahren zum Durchführen des vorstehenden Verfahrens. Dieses Verfahren kann beispielsweise in der vorstehend beschriebenen besonderen Umgebung implementiert werden.
  • Ein solches Verfahren kann beispielsweise durch den Betrieb eines Computers, wie in einer digitalen Datenverarbeitungsvorrichtung ausgeführt, implementiert werden, um eine Folge von maschinenlesbaren Anweisungen auszuführen. Diese Anweisungen können sich in verschiedenen Arten von signaltragenden Medien befinden.
  • Dieser Aspekt der vorliegenden Erfindung bezieht sich somit auf ein programmiertes Produkt, darunter signaltragende Speichermedien, die ein Programm von maschinenlesbaren Anweisungen physisch ausführen, die von einem digitalen Prozessor ausgeführt werden können, der die vorstehend genannte CPU 1110 und die Hardware enthält, um das Verfahren der Erfindung durchzuführen.
  • Diese signaltragenden Speichermedien können zum Beispiel einen RAM enthalten, der in der CPU 1110 enthalten ist, wie zum Beispiel durch den Schnellzugriffsspeicher dargestellt.
  • Alternativ können die Anweisungen in anderen signaltragenden Speichermedien 1200 wie einem Flash-Speicher 1210 oder einer optischen Speicherdiskette 1220 (12) enthalten sein, auf die die CPU 1110 direkt oder indirekt zugreifen kann.
  • Unabhängig davon, ob die Anweisungen im Flash-Speicher 120, der optischen Platte 1220, dem Computer/der CPU 1110 oder anderswo enthalten sind, können die Anweisungen in einer Vielfalt von maschinenlesbaren Datenspeichermedien gespeichert werden.
  • Bei der vorliegenden Erfindung kann es sich daher um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. einen Lichtwellenleiter durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hier beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Router, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server umfassen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hier unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen.
  • Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, einen Herstellungsartikel umfasst, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Der Ablaufplan und die Blockschaltbilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) umfassen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Mit Bezug nunmehr auf 13 wird eine schematische Darstellung 1400 eines Beispiels eines Cloud-Computing-Knotens gezeigt. Der Cloud-Computing-Knoten 1400 ist nur ein Beispiel eines geeigneten Cloud-Computing-Knotens und soll keine Beschränkung des Anwendungsbereichs der Nutzung oder Funktionalität von Ausführungsformen der hier beschriebenen Erfindung nahelegen. Ungeachtet dessen kann der Cloud-Computing-Knoten 1400 implementiert werden und/oder eine beliebige der vorstehend dargelegten Funktionalitäten durchführen. Wie bereits erwähnt, kann das System 100 von 1 in einer Cloud-Infrastruktur wie in 13 (und auch in den 14 und 15) dargestellt implementiert werden. Im Cloud-Computing-Knoten 1400 gibt es ein Computersystem/einen Server 1412, der mit zahlreichen anderen universellen oder speziellen Datenverarbeitungssystem-Umgebungen oder Konfigurationen funktionsfähig ist. Beispiele für bekannte Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die für die Nutzung mit dem Computersystem/Server 1412 geeignet sein können, sind unter anderem, ohne auf diese beschränkt zu sein, Personal-Computer-Systeme, Server-Computer-Systeme, schlanke Clients, leistungsintensive Clients, Hand- oder Laptop-Einheiten, Mehrprozessorsysteme, Systeme auf Grundlage von Mikroprozessoren, Beistellgeräte, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, die jedes beliebige der oben genannten Systeme oder Einheiten und Ähnliches enthalten.
  • Das Computersystem/der Server 1412 kann im allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen beschrieben werden, z.B. Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen implementieren. Das Computersystem/der Server 1412 kann in verteilten Cloud-Computing-Umgebungen eingesetzt werden, wo die Aufgaben von entfernt angeordneten Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl auf lokalen als auch auf entfernt angeordneten Computersystem-Speichermedien befinden, darunter Speichereinheiten mit Arbeitsspeichern.
  • Wie in 13 gezeigt, wird das Computersystem/der Server 1412 im Cloud-Computing-Knoten 1400 in Form einer universellen Datenverarbeitungseinheit dargestellt. Bei den Komponenten des Computersystems/Servers 1412 kann es sich - ohne auf diese beschränkt zu sein - um einen oder mehrere Prozessoren oder Verarbeitungseinheiten 1416, einen Systemspeicher 1428 und einen Bus 1418 handeln, der verschiedene Systemkomponenten, darunter den Systemspeicher 1428, mit dem Prozessor 1416 verbindet.
  • Der Bus 1418 stellt einen oder mehrere von beliebigen mehreren Arten von Busstrukturen dar, darunter einen Speicherbus oder eine Speichersteuereinheit, einen Peripheriebus, eine AGP-Schnittstelle (Accelerated Graphics Port) und einen Prozessor oder lokalen Bus, der eine beliebige aus einer Vielfalt von Busarchitekturen nutzt. Beispielsweise und nicht einschränkend enthalten solche Architekturen einen Industry-Standard-Architecture(ISA)-Bus, einen Micro-Channel-Architecture(MCA)-Bus, einen Enhanced-ISA(EISA)-Bus, einen lokalen Video-Electronics-Standards-Association(VESA)-Bus und einen Peripheral-Component-Interconnects(PCI)-Bus.
  • Das Computersystem/der Server 1412 umfasst in der Regel eine Vielfalt von durch einen Computer lesbare Medien. Bei diesen Medien kann es sich um beliebige verfügbare Medien handeln, auf die das Computersystem/der Server 1412 zugreifen kann, darunter flüchtige und nichtflüchtige Medien, wechselbare und nichtwechselbare Medien.
  • Der Systemspeicher 1428 kann vom Computersystem lesbare Medien in Form von flüchtigen Speichern, z.B. Direktzugriffsspeicher (RAM) 1430 und/oder Cache 1432, enthalten. Das Computersystem/der Server 1412 kann ferner weitere wechselbare/nichtwechselbare, flüchtige/nichtflüchtige Computersystem-Speichermedien enthalten. Nur beispielhaft kann das Speichersystem 1434 bereitgestellt werden, um ein nichtwechselbares, nichtflüchtiges magnetisches Medium auszulesen und zu beschreiben (nicht dargestellt und üblicherweise als „Festplatte“ bezeichnet). Obwohl nicht dargestellt, können ein Laufwerk für magnetische Speicherplatten zum Auslesen und Beschreiben einer wechselbaren, nichtflüchtigen magnetischen Speicherplatte (z.B. „Diskette“) und ein Laufwerk für optische Speicherplatten zum Auslesen oder Beschreiben einer wechselbaren, nichtflüchtigen optischen Speicherplatte wie einer CD-ROM, DVD-ROM und andere optische Medien bereitgestellt werden. In solchen Fällen kann jedes über eine oder mehrere Datenmedien-Schnittstellen mit dem Bus 1418 verbunden sein. Wie unten weiter dargestellt und beschrieben, kann der Speicher 1428 mindestens ein Programmprodukt mit einem (z.B. mindestens einem) Satz von Programmmodulen enthalten, die so konfiguriert sind, dass sie die Funktionen der Ausführungsformen der Erfindung ausführen.
  • Das Programm/Dienstprogramm 1440 mit (mindestens) einem Satz von Programmmodulen 1442 kann beispielsweise und nicht einschränkend im Speicher 1428 gespeichert sein, ebenso ein Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten oder eine Kombination daraus können jeweils eine Implementierung einer Netzwerkumgebung enthalten. Die Programmmodule 1442 führen im Allgemeinen die Funktionen und/oder Methodiken von Ausführungsformen der hierin beschriebenen Erfindung aus.
  • Das Computersystem/der Server 1412 kann auch mit einer oder mehreren externen Einheiten 1414, z.B. einer Tastatur, einer Zeigeeinheit, einer Anzeige 1424 usw., Daten austauschen; sowie mit einer oder mehreren Einheiten, die einen Benutzer in die Lage versetzen, mit dem Computersystem/Server 1412 zu interagieren; und/oder beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die das Computersystem/den Server 1412 in die Lage versetzen, mit einer oder mehreren Datenverarbeitungseinheiten Daten auszutauschen. Eine solche Datenübertragung kann über die Eingabe-/Ausgabeschnittstellen (E/A-Schnittstellen) 1422 erfolgen. Überdies kann das Computersystem/der Server 1412 mit einem oder mehreren Netzwerken, z.B. einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. das Internet), über den Netzwerkadapter 1420 Daten austauschen. Wie dargestellt, tauscht der Netzwerkadapter 1420 über den Bus 1418 mit den anderen Komponenten des Computersystems/Servers 1412 Daten aus. Es versteht sich, dass sonstige Hardware- und/oder Softwarekomponenten in Verbindung mit dem Computersystem/Server 1412 verwendet werden können, auch wenn sie nicht dargestellt sind. Beispiele sind unter anderem, ohne auf diese beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, Anordnungen externer Festplattenlaufwerke, RAID-Systeme, Bandlaufwerke und Speichersysteme für die Datenarchivierung usw.
  • Mit Bezug nunmehr auf 14 ist eine veranschaulichende Cloud-Computing-Umgebung 1550 dargestellt. Wie gezeigt, enthält die Cloud-Computing-Umgebung 1550 einen oder mehrere Cloud-Computing-Knoten 1400, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten wie der persönliche digitale Assistent (PDA) oder das Mobiltelefon 1554A, der Desktop-Computer 1554B, der Laptop-Computer 1554C und/oder das Kraftfahrzeug-Computersystem 1554N Daten austauschen können. Die Knoten 1400 können miteinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken wie private, benutzergemeinschaftliche, öffentliche oder hybride Clouds wie oben beschrieben oder in einer Kombination davon in Gruppen angeordnet sein (nicht dargestellt). Dies ermöglicht es der Cloud-Computing-Umgebung 1550, Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es ist ersichtlich, dass die Arten von Datenverarbeitungseinheiten 1554A bis N, die in 16 dargestellt sind, nur veranschaulichend sein sollen und die Datenverarbeitungsknoten 1400 und die Cloud-Datenverarbeitungsumgebung 1550 mit jeder Art von computergestützter Einheit über jede Art von Netzwerk und/oder netzwerkadressierbarer Verbindung Daten austauschen kann (z.B. über einen Web-Browser).
  • Mit Bezug nunmehr auf 15 wird ein Satz funktionaler Abstraktionsschichten gezeigt, die von der Cloud-Computing-Umgebung 1550 (14) bereitgestellt werden. Es versteht sich von vornherein, dass die in 15 dargestellten Komponenten, Schichten und Funktionen nur veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Die Hardware- und Software-Schicht 1600 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten gehören Mainframe-Computer, in einem Beispiel IBM® zSeries®-Systeme; auf der RISC-Architektur (Reduced Instruction Set Computer) beruhende Server, in einem Beispiel IBM pSeries®-Systeme; IBM xSeries®-Systeme; IBM BladeCenter®-Systeme; Speichereinheiten; Netzwerke sowie Netzwerkkomponenten. Zu Beispielen für Software-Komponenten gehören eine Netzwerk-Anwendungsserver-Software, in einem Beispiel die IBM WebSphere®-Anwendungsserver-Software; und eine Datenbank-Software, in einem Beispiel die IBM DB2®-Datenbank-Software. (IBM, zSeries, pSeries, xSeries, BladeCenter, WebSphere und DB2 sind Warenzeichen der International Business Machines Corporation, die in vielen Rechtsordnungen weltweit eingetragen sind).
  • Die Virtualisierungsschicht 1620 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Entitäten bereitgestellt werden können: virtuelle Server, virtuelle Speicher, virtuelle Netzwerke, darunter virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme und virtuelle Clients.
  • In einem Beispiel kann die Verwaltungsschicht 1630 die nachfolgend beschriebenen Funktionen bereitstellen. Die Ressourcenbereitstellung ermöglicht eine dynamische Bereitstellung von Datenverarbeitungsressourcen und anderen Ressourcen, die verwendet werden, um Aufgaben in der Cloud-Datenverarbeitungsumgebung durchzuführen. Messen und Preisermittlung stellen eine Kostenerfassung (wenn Ressourcen in der Cloud-Datenverarbeitungsumgebung verwendet werden) sowie eine Rechnungsstellung oder Fakturierung für die Inanspruchnahme dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware umfassen. Die Sicherheitsfunktion stellt eine Identitätsprüfung für Cloud-Nutzer und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal stellt einen Zugang zur Cloud-Computing-Umgebung für Nutzer und Systemadministratoren bereit. Eine Dienstgüteverwaltung stellt eine Zuordnung und Verwaltung der Cloud-Datenverarbeitungsressourcen bereit, sodass die erforderliche Dienstgüte erfüllt wird. Die Planung und Erfüllung der Dienstgütevereinbarung (Service Level Agreement, SLA) stellt eine Vorabanordnung und Bereitstellung von Cloud-Computing-Ressourcen bereit, deren künftiger Bedarf auf der Grundlage einer Dienstgütevereinbarung vorausberechnet wird.
  • Die Arbeitslastschicht 1640 stellt Beispiele für Funktionalitäten bereit, für die die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen von Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation; Software-Entwicklung und Lebenszyklusverwaltung; Lieferung von Bildung aus dem virtuellen Klassenzimmer; Datenanalyseverarbeitung; Transaktionsverarbeitung; und insbesondere in Bezug auf die vorliegende Erfindung APIs und Laufzeitsystemkomponenten zum Erzeugen von Vorschlägen für die automatische Vervollständigung der Suche auf der Grundlage von Kontexteingaben.
  • Die zahlreichen Merkmale und Vorteile der Erfindung ergeben sich aus der ausführlichen Beschreibung, daher sollen die beigefügten Ansprüche alle diese Merkmale und Vorteile der Erfindung abdecken, die dem eigentlichen Gedanken und Anwendungsbereich der Erfindung entsprechen. Da für Fachleute zahlreiche Änderungen und Variationen offensichtlich sind, soll die Erfindung nicht auf den genauen Aufbau und die genaue Funktionsweise wie dargestellt und beschrieben beschränkt sein, und entsprechend kann auf alle geeigneten Änderungen und Äquivalente zurückgegriffen werden, die in den Anwendungsbereich der Erfindung fallen.
  • Es versteht sich, dass die Erfindung in ihrer Anwendung nicht auf die Einzelheiten des Aufbaus und die Anordnungen der in der folgenden Beschreibung aufgeführten oder in den Zeichnungen dargestellten Komponenten beschränkt ist. Die Erfindung kann zusätzlich zu den beschriebenen Ausführungsformen noch Ausführungsformen enthalten und auf verschiedene Art und Weise durchgeführt werden. Es versteht sich ferner, dass die hier verwendete Ausdrucksweise und Terminologie sowie die Zusammenfassung zum Zweck der Beschreibung dienen und nicht als einschränkend angesehen werden sollten.
  • Für Fachleute ist daher offensichtlich, dass das Konzept, auf dem diese Offenbarung beruht, ohne Weiteres als Grundlage für die Gestaltung anderer Strukturen, Verfahren und Systeme zum Durchführen der verschiedenen Zwecke der vorliegenden Erfindung verwendet werden kann. Es ist daher wichtig, dass die Ansprüche unter dem Aspekt betrachtet werden, dass sie diesen äquivalenten Aufbau umfassen, ohne vom Gedanken und Anwendungsbereich der vorliegenden Erfindung abzuweichen.

Claims (9)

  1. Verfahren zum Schützen vor Referenzen außerhalb der Begrenzungen, wobei das Verfahren aufweist: Speichern einer Adresse eines Puffers in einem Universalregister und Speichern von Begrenzungsinformationen (Bl) für den Puffer in einem Register mit Begrenzungsinformationen; und wenn ein Inhalt des Universalregisters als eine Adresse bei einem Lade- oder Speichervorgang verwendet wird, Verwenden eines Inhalts des Registers mit Begrenzungsinformationen, um zu ermitteln, ob der Lade- oder Speichervorgang außerhalb der Begrenzungen liegt.
  2. Verfahren nach Anspruch 1, das weiterhin aufweist: Speichern der Begrenzungsinformationen im Register mit Begrenzungsinformationen in einer Registerdatei mit Begrenzungsinformationen; Erzeugen einer Indextabelle in einem Speicher anhand der Begrenzungsinformationen; Erzeugen einer Wert- und Schlüsseltabelle im Speicher anhand der Begrenzungsinformationen; und Schutz vor Referenzen außerhalb der Begrenzungen unter Verwendung der Indextabelle und der Wert- und Schlüsseltabelle.
  3. Verfahren nach Anspruch 1, das aufweist, dass, wenn eine erste Adresse im Universalregister verwendet wird, um eine zweite Adresse in einer Anordnungsindexierung oder Zeigerarithmetik zu berechnen, die Begrenzungsinformationen für die erste Adresse als Begrenzungsinformationen für die zweite Adresse verwendet werden.
  4. Verfahren nach Anspruch 2, wobei auf der Grundlage von Heuristik entschieden wird, ob auf die Indextabelle oder die Wert- und Schlüsseltabelle zugegriffen wird, wobei auf die Indextabelle über einen Index zugegriffen wird, wobei jeder Eintrag der Indextabelle eine Anfangsadresse und eine Länge eines Puffers umfasst, und wobei die Begrenzungsinformationen dem Universalregister zugeordnet werden.
  5. Verfahren nach Anspruch 2, wobei auf die Wert- und Schlüsseltabelle mit einem Zeigerwert als Schlüssel zugegriffen wird, und wobei jeder Eintrag in der Wert-/Schlüsseltabelle einen Schlüssel eines Zeigerwerts, eine Anfangsadresse und eine Länge eines Puffers enthält.
  6. Verfahren nach Anspruch 1, wobei die Begrenzungsinformationen eine Anfangsadresse und eine Länge für jeden Puffer enthalten, wobei die Begrenzungsinformationen für einen Zeiger anhand der ursprünglichen Anweisungen lokalisierbar sind, und wobei ein Prozessor eine Begrenzungsverarbeitungseinheit enthält, die Operationen zum Schützen vor Referenzen außerhalb der Begrenzungen ausführt.
  7. Verfahren nach Anspruch 1, das aufweist, dass, wenn eine Adresse im Universalregister einem zweiten Universalregister zugewiesen wird, die Begrenzungsinformationen für ein erstes Register als Begrenzungsinformationen für ein zweites Register verwendet werden.
  8. System zum Schützen vor Referenzen außerhalb der Begrenzungen, wobei das System aufweist: einen Speicher, der Computeranweisungen speichert; und einen Prozessor, der so konfiguriert ist, dass er die Computeranweisungen ausführt, um: eine Adresse eines Puffers in einem Universalregister zu speichern und Begrenzungsinformationen (Bl) für den Puffer in einem Register mit Begrenzungsinformationen zu speichern; und wenn ein Inhalt des Universalregisters als eine Adresse bei einem Lade- oder Speichervorgang verwendet wird, einen Inhalt des Registers mit Begrenzungsinformationen zu verwenden, um zu ermitteln, ob der Lade- oder Speichervorgang außerhalb der Begrenzungen liegt.
  9. Computerprogrammprodukt zum Schützen vor Referenzen außerhalb der Begrenzungen, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit darauf enthaltenen Programmanweisungen aufweist, wobei die Programmanweisungen von einem Computer lesbar und ausführbar sind, um den Computer zu veranlassen, ein Verfahren durchzuführen, das aufweist: Speichern einer Adresse eines Puffers in einem Universalregister und Speichern von Begrenzungsinformationen (Bl) für den Puffer in einem Register mit Begrenzungsinformationen; und wenn ein Inhalt des Universalregisters als eine Adresse bei einem Lade- oder Speichervorgang verwendet wird, Verwenden eines Inhalts des Registers mit Begrenzungsinformationen, um zu ermitteln, ob der Lade- oder Speichervorgang außerhalb der Begrenzungen liegt.
DE102021131418.6A 2020-12-30 2021-11-30 Dedizierte registerdatei mit begrenzungsinformationen zum schützen vor speicherreferenzen ausserhalb der begrenzungen Pending DE102021131418A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/137,666 2020-12-30
US17/137,666 US11966331B2 (en) 2020-12-30 2020-12-30 Dedicated bound information register file for protecting against out-of-bounds memory references

Publications (1)

Publication Number Publication Date
DE102021131418A1 true DE102021131418A1 (de) 2022-06-30

Family

ID=79269828

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021131418.6A Pending DE102021131418A1 (de) 2020-12-30 2021-11-30 Dedizierte registerdatei mit begrenzungsinformationen zum schützen vor speicherreferenzen ausserhalb der begrenzungen

Country Status (5)

Country Link
US (1) US11966331B2 (de)
JP (1) JP2022104879A (de)
CN (1) CN114691543A (de)
DE (1) DE102021131418A1 (de)
GB (1) GB2605678B (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966382B2 (en) 2020-10-15 2024-04-23 International Business Machines Corporation Protecting against invalid memory references
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
US11983532B2 (en) 2020-12-30 2024-05-14 International Business Machines Corporation Optimize bound information accesses in buffer protection

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115357212B (zh) * 2022-10-20 2023-01-13 瀚博半导体(上海)有限公司 用于环形缓冲器的参数生成方法、装置和人工智能芯片

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61228539A (ja) 1985-04-03 1986-10-11 Hitachi Ltd アドレス変換回路
US5546561A (en) * 1991-02-11 1996-08-13 Intel Corporation Circuitry and method for selectively protecting the integrity of data stored within a range of addresses within a non-volatile semiconductor memory
US6370073B2 (en) * 1998-10-01 2002-04-09 Monlithic System Technology, Inc. Single-port multi-bank memory system having read and write buffers and method of operating same
US6662268B1 (en) * 1999-09-02 2003-12-09 International Business Machines Corporation System and method for striped mirror re-synchronization by logical partition rather than stripe units
US20030126591A1 (en) 2001-12-21 2003-07-03 Youfeng Wu Stride-profile guided prefetching for irregular code
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US6981099B2 (en) 2002-12-16 2005-12-27 Sun Microsystems, Inc. Smart-prefetch
US8762694B1 (en) 2003-02-19 2014-06-24 Intel Corporation Programmable event-driven yield mechanism
US7634629B2 (en) * 2005-12-19 2009-12-15 Intel Corporation Mechanism to control access to a storage device
US8468244B2 (en) 2007-01-05 2013-06-18 Digital Doors, Inc. Digital information infrastructure and method for security designated data and with granular data stores
US20090077097A1 (en) 2007-04-16 2009-03-19 Attune Systems, Inc. File Aggregation in a Switched File System
US7730289B2 (en) 2007-09-27 2010-06-01 Faraday Technology Corp. Method for preloading data in a CPU pipeline
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
US8635415B2 (en) 2009-09-30 2014-01-21 Intel Corporation Managing and implementing metadata in central processing unit using register extensions
KR101639672B1 (ko) 2010-01-05 2016-07-15 삼성전자주식회사 무한 트랜잭션 메모리 시스템 및 그 동작 방법
US8949579B2 (en) 2010-10-04 2015-02-03 International Business Machines Corporation Ineffective prefetch determination and latency optimization
WO2013032446A1 (en) 2011-08-30 2013-03-07 Empire Technology Development Llc Hardware-based array compression
US10191873B2 (en) 2012-12-20 2019-01-29 Advanced Micro Devices, Inc. Method and apparatus for power reduction for data movement
US9569612B2 (en) 2013-03-14 2017-02-14 Daniel Shawcross Wilkerson Hard object: lightweight hardware enforcement of encapsulation, unforgeability, and transactionality
US8977997B2 (en) 2013-03-15 2015-03-10 Mentor Graphics Corp. Hardware simulation controller, system and method for functional verification
US9721086B2 (en) 2013-03-15 2017-08-01 Advanced Elemental Technologies, Inc. Methods and systems for secure and reliable identity-based computing
US11620220B2 (en) 2014-07-14 2023-04-04 Via Alliance Semiconductor Co., Ltd. Cache system with a primary cache and an overflow cache that use different indexing schemes
EP3183653A4 (de) 2014-08-20 2018-07-04 Landmark Graphics Corporation Optimierung von computerhardware-ressourcennutzung beim verarbeiten von variablen präzisionsdaten
US9535613B2 (en) * 2014-11-24 2017-01-03 Futurewei Technologies, Inc. Hardware and software methodologies for detecting illegal memory address of a memory access operation
US10162694B2 (en) 2015-12-21 2018-12-25 Intel Corporation Hardware apparatuses and methods for memory corruption detection
US10528476B2 (en) 2016-05-24 2020-01-07 International Business Machines Corporation Embedded page size hint for page fault resolution
US10198335B2 (en) 2016-09-23 2019-02-05 Intel Corporation Detecting root causes of use-after-free memory errors
US20180095720A1 (en) 2016-09-30 2018-04-05 Intel Corporation Storage device with fine grained search capability
US11601523B2 (en) 2016-12-16 2023-03-07 Intel Corporation Prefetcher in multi-tiered memory systems
GR20170100067A (el) 2017-02-16 2018-10-31 Arm Limited Προβλεψη χρησης τομεων κρυφης μνημης
US20180255589A1 (en) 2017-03-03 2018-09-06 Qualcomm Incorporated Random access request regulation techniques for wireless stations
US11360907B2 (en) 2017-03-30 2022-06-14 Intel Corporation Methods and apparatus to protect memory from buffer overflow and/or underflow
US10706164B2 (en) 2017-09-29 2020-07-07 Intel Corporation Crypto-enforced capabilities for isolation
US10761970B2 (en) 2017-10-20 2020-09-01 International Business Machines Corporation Computerized method and systems for performing deferred safety check operations
GB2572151B (en) 2018-03-19 2020-07-08 Advanced Risc Mach Ltd An apparatus and method for storing bounded pointers
US20190303263A1 (en) 2018-03-30 2019-10-03 Kermin E. Fleming, JR. Apparatus, methods, and systems for integrated performance monitoring in a configurable spatial accelerator
US20190356412A1 (en) 2018-05-16 2019-11-21 Qualcomm Incorporated Fast termination of multilane double data rate transactions
EP3584946A1 (de) 2018-06-19 2019-12-25 Fronius International GmbH Fotovoltaikmodulebenenüberwachungssystem
US10691374B2 (en) 2018-07-24 2020-06-23 Salesforce.Com, Inc. Repeatable stream access by multiple components
US11256624B2 (en) 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with borrowed memory
US20200379809A1 (en) 2019-05-28 2020-12-03 Micron Technology, Inc. Memory as a Service for Artificial Neural Network (ANN) Applications
US11868273B2 (en) 2019-06-29 2024-01-09 Intel Corporation Memory protection with hidden inline metadata to indicate data type
US11429590B2 (en) 2020-10-15 2022-08-30 International Business Machines Corporation Protecting against invalid memory references
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
US11983532B2 (en) 2020-12-30 2024-05-14 International Business Machines Corporation Optimize bound information accesses in buffer protection

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11966382B2 (en) 2020-10-15 2024-04-23 International Business Machines Corporation Protecting against invalid memory references
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
US11983532B2 (en) 2020-12-30 2024-05-14 International Business Machines Corporation Optimize bound information accesses in buffer protection

Also Published As

Publication number Publication date
JP2022104879A (ja) 2022-07-12
US11966331B2 (en) 2024-04-23
GB2605678B (en) 2024-07-31
CN114691543A (zh) 2022-07-01
US20220206943A1 (en) 2022-06-30
GB2605678A (en) 2022-10-12
GB202117483D0 (en) 2022-01-19

Similar Documents

Publication Publication Date Title
DE102021131418A1 (de) Dedizierte registerdatei mit begrenzungsinformationen zum schützen vor speicherreferenzen ausserhalb der begrenzungen
DE112015001977B4 (de) Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung
DE102013017509B4 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE102013017511B4 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE102007062744B4 (de) Guest-Host-Adressübersetzung für den Zugriff von Geräten auf einen Speicher in einem partitionierten System
DE112012003716B4 (de) Erzeugen von kompiliertem Code, der Registeraktivität angibt
DE112016005571T5 (de) Aufrufergeschützte stapelrücksprungadresse in einer hardware-verwalteten stapelarchitektur
DE102021130906A1 (de) Optimieren von zugriffen auf begrenzungsinformationen beim pufferschutz
DE112018003584B4 (de) Vorhersagen eines inhaltsverzeichnis-zeigerwerts in reaktion auf ein verzweigen auf eine subroutine
DE102014014076A1 (de) Reduzierte Adressenkonvertierung mit mehreren Seitengrößen
DE102013222384A1 (de) Sicherheits-Screening auf Kontextgrundlage für Zugriff auf Daten
DE112012005037T5 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112019002235T5 (de) Einbinden eines wörterbuch-bearbeitungssystems in ein text mining
DE112005002328T5 (de) Cachespeicherungsunterstützung für Direktspeicherzugriffsadreßübersetzung
DE112017001027T5 (de) Seitenfehlerbehebung
DE112007001988T5 (de) Gemeinsames Nutzen von Informationen durch Gäste in einer Virtuelle-Maschine-Umgebung
DE112018001124T5 (de) Verarbeitung von compare string durch decodiergestützte inline-erweiterung von mikrooperationen
DE112015000203T5 (de) "Compare and Delay"-Befehle
DE112017000163T5 (de) Priorisierung von Transaktionen
DE112020000865T5 (de) Speicherverwaltungssystem
DE112017005015T5 (de) Verarbeiten von gleichgeordneten Aufrufen (SIBLING CALLS)
DE112017005022T5 (de) Umladen der Bandverarbeitung auf Objektspeicher
DE112021003031T5 (de) Archivieren von nur-beschleuniger-datenbanktabellen
DE112019000402T5 (de) Chronologisch geordnetes out-of-place-aktualisierungs-schlüssel-wert-speichersystem
DE112011100825B4 (de) Zuweisen von Speicher zu chipintegrierten Kohärenz-Domänen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence