[go: up one dir, main page]

DE10297433B4 - Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor - Google Patents

Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor Download PDF

Info

Publication number
DE10297433B4
DE10297433B4 DE10297433T DE10297433T DE10297433B4 DE 10297433 B4 DE10297433 B4 DE 10297433B4 DE 10297433 T DE10297433 T DE 10297433T DE 10297433 T DE10297433 T DE 10297433T DE 10297433 B4 DE10297433 B4 DE 10297433B4
Authority
DE
Germany
Prior art keywords
page
security
memory page
security attribute
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE10297433T
Other languages
English (en)
Other versions
DE10297433T5 (de
Inventor
Brian C. Round Rock Barnes
Rodney W. Dripping Springs Schmidt
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE10297433T5 publication Critical patent/DE10297433T5/de
Application granted granted Critical
Publication of DE10297433B4 publication Critical patent/DE10297433B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

Speicherverwaltungseinheit (602) zur Verwaltung eines Speichers (406), in dem Daten abgelegt sind, die in mehreren Speicherseiten organisiert sind, wobei die Speicherverwaltungseinheit (602) umfasst:
eine Sicherheitsprüfeinheit (416), die angeordnet ist, eine während des Ausführens einer aktuellen Anweisung erzeugte lineare Adresse (102) zu empfangen, wobei die lineare Adresse (102) eine entsprechende physikalische Adresse, die in einer ausgewählten Speicherseite liegt, aufweist, und wobei die Sicherheitsprüfeinheit (416) ausgebildet ist, die lineare Adresse (102) zu verwenden, um auf mindestens eine in dem Speicher (406) angeordnete Sicherheitsattributdatenstruktur zuzugreifen, um ein Sicherheitsattribut der ausgewählten Speicherseite zu erhalten, einen von dem Sicherheitsattribut der aktuellen Anweisung transportierten numerischen Wert mit einem von dem Sicherheitsattribut der ausgewählten Speicherseite transportierten numerischen Wert zu vergleichen, und ein Ausgangssignal in Abhängigkeit eines Ergebnisses des Vergleichs zu erzeugen, wobei das Sicherheitsattribut der ausgewählten Speicherseite und/oder der aktuellen Anweisung einen Sicherheitskontextidentifikations-(SCID)Wert aufweist und wobei der SCID Wert eine Sicherheitskontextebene der ausgewählten Speicherseite kennzeichnet;...

Description

  • TECHNISCHES GEBIET
  • Diese Erfindung betrifft im Allgemeinen Speicherverwaltungssysteme und -Verfahren und betrifft insbesondere Speicherverwaltungssysteme und -Verfahren, die Schutz für in einem Speicher abgelegte Daten bieten.
  • STAND DER TECHNIK
  • Ein typisches Computersystem beinhaltet eine Speicherhierarchie, um ein relativ hohes Maß an Leistungsfähigkeit bei relativ geringen Kosten zu erreichen. Anweisungen diverser unterschiedlicher Softwareprogramme sind typischerweise in einer relativ großen aber langsamen nichtflüchtigen Speichereinheit (beispielsweise einer Festplatteneinheit) gespeichert. Wenn ein Anwender eines der Programme für die Abarbeitung auswählt, werden die Anweisungen bzw. Instruktionen des ausgewählten Programms in eine Hauptspeichereinheit (beispielsweise ein Speicher mit wahlfreiem Zugriff (RAM)) kopiert, und eine zentrale Recheneinheit (CPU) erhält die Instruktionen des ausgewählten Programms von der Hauptspeichereinheit. Eine gut bekannte virtuelle Speicherverwaltungstechnik ermöglicht es der CPU, auf Datenstrukturen zuzugreifen, die größer sind als die Struktur der Hauptspeichereinheit, indem lediglich ein Teil der Datenstrukturen zu einer gegebenen Zeit in der Hauptspeichereinheit gespeichert wird. Der Rest der Datenstrukturen ist in der relativ großen aber langsamen nicht flüchtigen Speichereinheit gespeichert und wird lediglich bei Bedarf in die Hauptspeichereinheit kopiert.
  • Ein virtueller Speicher wird typischerweise so eingerichtet, dass ein Adressenraum der CPU in mehrere Blöcke aufgeteilt wird, die als Rahmen oder „Seiten" bezeichnet werden. Lediglich solche Daten, die einem Teil der Seiten entsprechen, werden in der Hauptspeichereinheit zu einer gegebenen Zeit gespeichert. Wenn die CPU eine Adresse innerhalb einer gegebenen Seite erzeugt, und eine Kopie dieser Seite nicht in der Hauptspeichereinheit vorhanden ist, wird die angeforderte Seite mit den Daten aus der relativ großen aber langsamen nichtflüchtigen Speichereinheit in die Hauptspeichereinheit kopiert. Während dieses Vorganges kann eine weitere Seite mit Daten von der Hauptspeichereinheit in die nichtflüchtige Speichereinheit kopiert werden, um für die geforderte Seite Platz zu schaffen.
  • Die populäre 80 × 86 (×86) Prozessorarchitektur enthält spezialisierte Hardwareelemente, um einen geschützten virtuellen Adressenmodus (d. h. einen geschützten Modus) zu unterstützen. 1 bis 3 werden nunmehr benutzt, um zu beschreiben, wie ein ×86-Prozessor sowohl einen virtuellen Speicher als auch Speicherschutzmerkmale implementiert. 1 ist ein Diagramm eines gut bekannten Mechanismus 100 zur Überführung einer linearen in eine physikalische Adresse der ×86-Prozessorarchitektur. Es ist ein Adressenüberführungsmechanismus 100 in einem ×86-Prozessor eingerichtet und beinhaltet eine lineare Adresse 102, die in dem ×86-Prozessor erzeugt wird, ein Seitentabellenverzeichnis (d. h. ein Seitenverzeichnis) 104, mehrere Seitentabellen mit einer Seitentabelle 106, mehrere Seitenrahmen mit einem Seitenrahmen 108 und ein Steuerregister (CR3) 110. Das Seitenverzeichnis 104 und die mehreren Seitentabellen repräsentieren in seitenunterteilte Speicherdatenstrukturen, die von der Betriebssystemsoftware (d. h. einem Betriebssystem) erzeugt und beibehalten werden. Das Seitenverzeichnis 104 ist stets in dem Speicher (beispielsweise der Hauptspeichereinheit) angeordnet. Der Einfachheit halber wird angenommen, dass die Seitentabelle 106 und der Seitenrahmen 108 ebenfalls in dem Speicher angeordnet sind.
  • Wie in 1 dargestellt ist, ist die lineare Adresse 102 in drei Bereiche unterteilt, um den Übergang von der linearen zur physikalischen Adresse zu bewerkstelligen. Die höherwertigsten Bits des CR3 110 werden verwendet, um ein Seitenverzeichnisbasisregister zu speichern. Das Seitenverzeichnisbasisregister ist eine Basisadresse einer Speicherseite, die das Seitenverzeichnis 104 enthält. Das Seitenverzeichnis 104 enthält mehrere Seitenverzeichnisseinträge, zu denen ein Seitenverzeichniseintrag 112 gehört. Ein oberer „Verzeichnisindex-"Bereich der linearen Adresse 102, der die höherwertigsten oder signifikantesten Bits der linearen Adresse 102 enthält, wird als ein Index für das Seitenverzeichnis 104 verwendet. Der Seitenverzeichniseintrag 112 wird aus dem Seitenverzeichnis 104 ausgewählt, wobei die Seitenverzeichnisbasisadresse des CR3 110 und der obere „Verzeichnisindex-"Bereich der linearen Adresse 102 verwendet werden.
  • 2 ist eine Ansicht eines Seitenverzeichniseintragsformats 200 der ×86-Prozessorarchitekur. Wie in 2 dargestellt ist, enthalten die höherwertigsten (d. h. die signifikantesten) Bits eines gegebenen Seitenverzeichniseintrages eine Seitentabellenbasisadresse, wobei die Seitentabellenbasisadresse eine Basisadresse einer Speicherseite ist, die eine entsprechende Seitentabelle enthält. Die Seitentabellenbasisadresse des Seitenverzeichniseintrags 112 wird verwendet, um die entsprechende Seitentabelle 106 auszuwählen.
  • Es sei nun wieder auf 1 verwiesen; die Seitentabelle 106 enthält mehrere Seitentabelleneinträge, zu denen ein Seitentabelleneintrag 114 gehört. Ein mittlerer „Tabellenindex-"Bereich der linearen Adresse 102 wird als ein Index für die Seitentabelle 106 verwendet, wodurch der Seitentabelleneintrag 114 ausgewählt wird. 3 ist eine Ansicht eines Seitentabelleneintragsformats 300 der ×86-Prozessorarchitektur. Wie in 3 dargestellt ist, enthalten die höherwertigsten (d. h. die signifikantesten) Bits eines gegebenen Seitentabelleneintrags eine Seitenrahmenbasisadresse, wobei die Seitenrahmenbasisadresse eine Rahmenadresse eines entsprechenden Seitenrahmens ist.
  • Es sei wieder auf 1 verwiesen; die Seitenrahmenbasisadresse des Seitentabelleneintrags 114 wird verwendet, um den entsprechenden Seitenrahmen 108 auszuwählen. Der Seitenrahmen 108 enthält mehrere Speicherplätze. Ein unterer oder „Offset"-Bereich der linearen Adresse 102 wird als ein Index für den Seitenrahmen 108 verwendet. In kombinierter Form bilden die Seitenrahmenbasisadresse des Seitentabelleneintrags 114 und der Offset-Bereich der linearen Adresse 102 die physikalische Adresse entsprechend der linearen Adresse 102 und bezeichnen einen Speicherplatz 116 innerhalb des Seitenrahmens 108. Der Speicherplatz 116 besitzt die physikalische Adresse, die aus dem Vorgang der Überführung der linearen in die physikalische Adresse resultiert.
  • Im Hinblick auf die Speicherschutzmerkmale besitzt das Seitenverzeichniseintragsformat 100 aus 2 und das Seitentabelleneintragsformat 300 aus 3 ein Anwender/Steuerungs (U/S) Bit und ein Lese/Schreib-(R/W)Bit. Der Inhalt der U/S und R/W-Bits wird von dem Betriebssystem verwendet, um die entsprechenden Seitenrahmen (d. h. Speicherseiten) vor einem nicht autorisierten Zugriff zu schützen. U/S = 0 wird angewendet, um Betriebssystemspeicherseiten zu kennzeichnen und entspricht ferner einer „Steuerungs- bzw. übergeordneten Ebene" des Betriebssystems. Die Steuerungsebene des Betriebssystems entspricht einer momentanen Privilegebene 0 (CPL0) von Softwareprogrammen und Routinen, die von dem ×86-Prozessor ausgeführt werden. U/S = 1 wird verwendet, um Anwenderspeicherseiten zu bezeichnen und entspricht einer „Anwender-"Ebene des Betriebssystems. Die Anwenderebene des Betriebssystems entspricht CPL3 des ×86-Prozessors. (Die Anwenderebene kann auch der CPL1 und/oder CPL2 des ×86-Prozessors entsprechen.)
  • Das R/W-Bit wird verwendet, um Zugriffsarten zu bezeichnen, die für die entsprechende Speicherseite zulässig sind. R/W = 0 zeigt an, dass lediglich Lesezugriffe für die entsprechende Speicherseite zulässig sind (d. h. die entsprechende Seite ist „nur lesbar"). R/W = 1 zeigt an, dass sowohl Lese- als auch Schreibezugriffe für die entsprechende Speicherseite zulässig sind (d. h. die entsprechende Speicherseite ist „lesbar/schreibbar").
  • Während des Vorgangs zum Überführen der linearen in die physikalischen Adresse aus 1 werden die Inhalte der U/S-Bits des Seitenverzeichniseintrags 112 und des Seitentabelleneintrags 114, die dem Seitenrahmen 108 entsprechen, logisch UND – verknüpft, um zu bestimmen, ob der Zugriff auf den Seitenrahmen 108 autorisiert ist. In ähnlicher Weise werden die Inhalte der R/W-Bits des Seitenverzeichniseintrags 112 und des Seitentabelleneintrags 114 logisch UND – verknüpft, um zu bestimmen, ob der Zugriff auf den Seitenrahmen 108 autorisiert ist. Wenn die logischen Kombinationen der U/S- und R/W-Bits anzeigen, dass der Zugriff auf den Seitenrahmen 108 autorisiert ist, wird auf den Speicherplatz 116 unter Anwendung der physikalischen Adresse zugegriffen. Wenn andererseits die logischen Verknüpfungen der U/S- und R/W-Bits anzeigen, dass der Zugriff auf den Seitenrahmen 108 nicht autorisiert ist, wird auf den Speicherplatz 116 nicht zugegriffen und es wird ein Schutzfehler angezeigt.
  • Details dieses ×86-Schutzmodus können nachgelesen werden in Intel Corp.: „Intel Architektursoftwareentwicklungshandbuch, Band: Systemprogrammierführer. Titel 2–54, 6, 15 und Anhang B." Intel Referenzhandbuch XP 002248376. Ähnliche Beschreibungen sind beispielsweise in US 6,154,818 und US 5,627,987 zu finden. Diese Beschreibungen zeigen, dass Sicherheitsattribute in den Seitentabellen verwendet werden können, um Speicherseiten zu schützen.
  • Bedauerlicherweise sind die zuvor beschriebenen Speicherschutzmechanismen der ×86-Prozessorarchitektur nicht ausreichend, um in dem Speicher gespeicherte Daten zu schützen. Beispielsweise kann ein Softwareprogramm oder eine Routine, die auf der übergeordneten bzw. Steuerungsebene (beispielsweise mit einer CPL von 0) ausgeführt wird, auf einen beliebigen Bereich des Speichers zugreifen und kann einen beliebigen Bereich des Speichers, der nicht als „nur lesbar" (R/W = 0) gekennzeichnet ist, modifizieren (d. h. in diesen schreiben). Zudem kann beim Arbeiten auf der übergeordneten Ebene das Softwareprogramm oder die Routine die Attribute (d. h. die U/S- und R/W-Bits) eines beliebigen Bereichs des Speichers ändern. Das Softwareprogramm oder die Routine kann somit einen beliebigen Bereich des Speichers ändern, der als „nur lesbar" bis „lesbar/schreibbar" (R/W = 1) gekennzeichnet ist, und kann dann ferner diesen Bereich des Speichers modifizieren.
  • US 5 619 671 zeigt eine Speicherverwaltungseinrichtung, in der ein Anwenderprogramm einen speziellen Befehl ausgibt, um ein zuvor gespeichertes Kennzeichen aus einem Register abzurufen. Sodann wird von dem Anwenderprogramm eine virtuelle Adresse in der geschützten Seite zusammen mit dem Kennzeichen zu einer Adressenübersetzungs- und Sicherheitsverifizierungseinheit übertragen. Wenn die erzeugte Adresse einer geschützten Seite entspricht, wird aus einer entsprechenden Tabelle ein zugeordnetes Kennzeichen ausgelesen und mit dem zuvor ausgelesenen Kennzeichen verglichen, so dass ein Zugriff auf die geschützte Speicherseite nur bei Gleichheit der beiden Kennzeichen erfolgt.
  • EP 0 768 594 A1 zeigt ein Sicherheitssystem für ein Computersystem, in welchem spezielle Auflagen für den Zugriff auf das System gemacht werden. Dabei wird das Ausbreiten von Viren unterbunden wird, indem die gesamten Computerfunktionen in eine Menge von Ereignissen unterteilt werden und diesen entsprechende Kapazitäten zugeordnet werden, wobei unterschiedlichen Anwendern abhängig von der speziellen Anwendung unterschiedliche Kapazitäten zugewiesen werden.
  • Aufgabe der vorliegenden Erfindung ist es, ein Verfahren und eine Einheit anzugeben, in denen eine flexible Speicherverwaltung unter Benutzung zusätzlicher Sicherheitsattribute ermöglicht wird.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • Es wird eine Speicherverwaltungseinheit bereitgestellt, um einen Speicher, in dem Daten gespeichert sind, die in einer Vielzahl von Speicherseiten angeordnet sind, zu verwalten.
  • Die Aufgabe wird gelöst durch eine Speicherverwaltungseinheit nach Anspruch 1, ein Verfahren nach Anspruch 6 und einen Prozessor nach Anspruch 8.
  • Eine zentrale Recheneinheit (CPU) wird beschrieben, die eine Ausführungseinheit und die zuvor beschriebene Speicherverwaltungseinheit (MMU) aufweist. Die Ausführungseinheit liest Anweisungen aus einem Speicher aus und führt die Anweisungen aus. Die MMU verwaltet den Speicher und ist so konfigurierbar, um den Speicher so zu verwalten, dass der Speicher Daten speichert, die in mehreren Speicherseiten organisiert sind. Die MMU umfasst die zuvor beschriebene Sicherheitsprüfeinheit. Ferner wird ein Computersystem bereitgestellt, das den Speicher, die CPU und die MMU aufweist.
  • Es wird ein Verfahren bereitgestellt, um Zugriffsicherheit für einen Speicher zu bieten, der zum Speichern von Daten verwendet wird, die in mehreren Speicherseiten organisiert sind. Das Verfahren umfasst das Erhalten einer linearen Adresse, die während der Ausführung einer Instruktion erzeugt wird, und eines Sicherheitsattributs der Anweisung, wobei die Anweisung in einer ersten Speicherseite lokalisiert ist. Die lineare Adresse wird verwendet, um auf eine oder mehrere in Seiten angeordnete Speicherdatenstrukturen in dem Speicher zuzugreifen, um eine Basisadresse einer ausgewählten Speicherseite zu erhalten und auf mehrere Sicherheitsattribute der ausgewählten Speicherseite zuzugreifen. Wenn das Sicherheitsattribut der Instruktion (beispielsweise eine momentane Privilegebene oder CPL der Anweisung, wie sie durch die ×86-Prozessorarchitektur definiert ist) und die Sicherheitsattribute der ausgewählten Speicherseite (beispielsweise ×86-U/S- und R/W-Bits der ausgewählten Speicherseite) anzeigen, dass der Zugriff autorisiert ist, wird die Basisadresse der ausgewählten Speicherseite mit einem Offset kombiniert, um eine physikalische Adresse innerhalb der ausgewählten Speicherseite zu erzeugen. Wenn das Sicherheitsattribut der Instruktion und die Sicherheitsattribute der ausgewählten Speicherseite anzeigen, dass der Zugriff nicht autorisiert ist, wird ein Fehlersignal (beispielsweise ein ×86-GPF-Signal) erzeugt.
  • Die lineare Adresse wird auch verwendet, um auf eine oder mehrere Sicherheitsattributdatenstrukturen, die in dem Speicher lokalisiert sind, um ein zusätzliches Sicherheitsattribut der ersten Speicherseite zu erhalten, und auf ein zusätzliches Sicherheitsattribut der ausgewählten Speicherseite zuzugreifen. Ein numerischer Wert, der in dem zusätzlichen Sicherheitsattribut der ersten Speicherseite enthalten ist, wird mit einem numerischen Wert, der in dem zusätzlichen Sicherheitsattribut der ausgewählten Speicherseite enthalten ist, verglichen. Es wird auf die ausgewählte Speicherseite in Abhängigkeit eines Ergebnisses des Vergleichs der numerischen Werte, die in dem Sicherheitsattribut der ersten Speicher seite und dem zusätzlichen Sicherheitsattribut der ausgewählten Speicherseite enthalten sind, zugegriffen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung kann unter Bezugnahme auf die folgende Beschreibung verstanden werden, wenn diese mit Bezug zu den begleitenden Zeichnungen studiert wird, in denen gleiche Bezugszeichen ähnliche Elemente bezeichnen, und wobei:
  • 1 eine Ansicht eines gut bekannten Mechanismus zum Überführen der linearen in die physikalische Adresse der ×86-Prozessorarchitektur ist;
  • 2 eine Ansicht eines Seitenverzeichniseintragsformats der ×86-Prozessorarchitektur ist;
  • 3 eine Ansicht eines zweiten Seitentabelleneintragformats der ×86-Prozessorarchitektur ist;
  • 4 ein Diagramm einer Ausführungsform eines Computersystems mit einer CPU ist, wobei die CPU eine CPU-Sicherheitsprüfeinheit (SCU) enthält;
  • 5 eine Ansicht ist, die die Abhängigkeiten zwischen den diversen Hardware- und Softwarekomponenten des Computersystems aus 4 zeigt;
  • 6 eine Ansicht einer Ausführungsform der CPU des Computersystems aus 4 ist, wobei die CPU eine Speicherverwaltungseinheit (MMU) aufweist;
  • 7 eine Ansicht einer Ausführungsform der MMU aus 6 ist, wobei die MMU eine Seitenbildungseinheit aufweist, die mit der CPU SCU verbunden ist;
  • 8 eine Ansicht einer Ausführungsform der CPU SCU aus 7 ist;
  • 9 eine Ansicht einer Ausführungsform eines Mechanismus zum Zugreifen auf einen Eintrag einer Sicherheitsattributstabelle (SAT) einer gegebenen Speicherseite ist, um zusätzliche Sicherheitsinformationen für die gegebene Speicherseite zu erhalten;
  • 10 eine Ansicht einer Ausführungsform eines SAT-Ersatzregister ist;
  • 11 eine Ansicht einer Ausführungsform eines SAT-Verzeichniseintragsformats ist;
  • 12 eine Ansicht einer Ausführungsform eines SAT-Eintragsformats ist; und
  • 13a und 13b in Kombination ein Flussdiagramm einer Ausführungsform eines Verfahrens bilden, um einen Speicher zu verwalten, der zur Speicherung von Daten verwendet wird, die als mehrere Speicherseiten organisiert sind.
  • Obwohl die Erfindung diversen Modifizierungen und alternativen Formen unterliegen kann, sind spezielle Ausführungsformen davon durch Beispiele in den Zeichnungen gezeigt und im Weiteren detailliert beschrieben. Es sollte jedoch selbstverständlich sein, dass die Beschreibung spezieller Ausführungsformen nicht beabsichtigt, die Erfindung auf die speziellen offenbarten Formen einzuschränken, sondern die Erfindung soll alle Modifizierungen, Äquivalente und Alternativen, die innerhalb des Grundgedankens und Schutzbereichs der Erfindung liegen, wie sie durch die angefügten Patentansprüche definiert ist, abdecken.
  • ARTEN ZUM AUSFÜHREN DER ERFINDUNG
  • Es werden nun anschauliche Ausführungsformen der Erfindung beschrieben. Im Hinblick auf Klarheit sind nicht alle Merkmale einer tatsächlichen Implementierung in dieser Erläuterung beschrieben. Es sollte jedoch klar sein, dass bei der Entwicklung einer derartigen tatsächlichen Ausführungsform diverse implementierungsabhängige Entscheidungen getroffen werden müssen, um die spezifischen Ziele der Entwickler, etwa die Verträglichkeit mit systembezogenen und geschäftsbezogenen Rahmenbedingungen zu erreichen, die von der speziellen Implementierung abhängen. Ferner ist zu beachten, dass ein derartiger Entwicklungsaufwand komplex und zeitaufwendig sein kann, aber trotzdem eine Routinearbeit ist, die von dem Fachmann bei Kenntnis der vorliegenden Offenbarung durchgeführt werden kann.
  • 4 ist eine Ansicht einer Ausführungsform eines Computersystems 400 mit einer CPU 402, einer System- oder „Hauptrechner" Brücke 404, einem Speicher 406, einem ersten Gerätebus 408 (beispielsweise eine Peripheriekomponentenverbindung oder PCI-Bus), einer Gerätebusbrücke 410, einem zweiten Gerätebus 412 (beispielsweise einem Industriestandardarchitektur- oder ISA-Bus), und vier Gerätehardwareeinheiten 414a bis 414d. Die Hauptrechnerbrücke 404 ist mit der CPU 402, dem Speicher 406 und dem ersten Gerätebus 408 verbunden. Die Hauptrechnerbrücke 404 überträgt Signale zwischen der CPU 402 und dem ersten Gerätebus 408 und verknüpft funktionsmäßig den Speicher 406 mit der CPU 402 und dem ersten Gerätebus 408. Die Gerätebusbrücke 410 ist zwischen dem ersten Gerätebus 408 und dem zweiten Gerätebus 412 angeschlossen und überträgt Signale zwischen dem ersten Gerätebus 408 und dem zweiten Gerätebus 412. In der Ausführungsform aus 4 sind die Gerätehardwareeinheiten 414a und 414b mit dem ersten Gerätebus 408 und die Gerätehardwareeinheiten 414c und 414d mit dem zweiten Gerätebus 412 verbunden. Eine oder mehrere der Gerätehardwareeinheiten 414a bis 414b können beispielsweise Speichereinheiten (z. B. Festplattenlaufwerke, Floppylaufwerken und CD-ROM-Laufwerke), Kommunikationsgeräte (beispielsweise Modems und Netzwerkadapter), oder Eingabe/Ausgabe-Geräte (beispielsweise Videogeräte, Audiogeräte und Drucker) sein.
  • In der Ausführungsform aus 4 umfasst die CPU 402 eine CPU-Sicherheitsprüfeinheit (SCU) 416. Wie nachfolgend detailliert beschrieben ist, schützt die CPU SCU 416 den Speicher 406 vor unautorisierten Zugriffen, die von der CPU 402 hervorgerufen werden. Zu beachten ist, dass in anderen Ausführungsformen die Hauptrechnerbrücke 404 ein Teil der CPU 402 sein kann, wie dies in 4 gezeigt ist.
  • 5 ist eine Ansicht, die die Beziehungen zwischen den diversen Hardware- und Softwarekomponenten des Computersystems 400 aus 4 zeigt. In der Ausführungsform aus 5 sind mehrere Anwenderprogramme 500, ein Betriebssystem 502, ein Sicherheitskernel 504 und Gerätetreiber 506a bis 506d in dem Speicher 406 gespeichert. Die Anwenderprogramme 500, das Betriebssystem 502, der Sicherheitskernel 504 und die Gerätetreiber 506a bis 506d enthalten Instruktionen, die von der CPU 402 ausgeführt werden. Das Betriebssystem 502 stellt eine Anwenderschnittstelle und eine Software-„Plattform" bereit, auf der die Anwenderprogramme 500 laufen. Das Betriebssystem 502 kann ferner beispielsweise grundlegende Hilfsfunktionen bereitstellen, wozu eine Dateisystemverwaltung, eine Prozessverwaltung und eine Eingabe/Ausgabe-(I/O)-Steuerung gehören können.
  • Das Betriebssystem 502 kann ferner grundlegende Sicherheitsfunktionen bereitstellen. Beispielsweise kann die CPU 402 (4) ein ×86-Prozessor sein, der Instruktionen aus dem ×86-Instruktionssatz ausführt. Bei dieser Sachlage kann die CPU 402 spezielle Hardwareelemente enthalten, die sowohl Schutzmerkmale für den virtuellen Speicher als auch für den physikalischen Speicher in dem geschützten Modus aufweisen, wie dies zuvor beschrieben ist. Das Betriebssystem 502 kann beispielsweise eines der Betriebssysteme (Microsoft Cop., Redmond, WA) aus der Windows-Familie sein, das die CPU 402 in dem geschützten Modus betreibt, und das die speziellen Hardwareelemente der CPU 402 benutzt, um sowohl einen virtuellen Speicherschutz als auch Speicherschutz in dem geschützten Modus bereitzustellen.
  • Wie nachfolgend detaillierter beschrieben ist, stellt der Sicherheitskernel 504 weitere Sicherheitsfunktionen über die Sicherheitsfunktionen hinaus bereit, die von dem Betriebssystem 502 zur Verfügung gestellt werden, um in dem Speicher 406 gespeicherte Daten vor einem unautorisierten Zugriff zu schützen. Wie in 5 gezeigt ist, ist der Sicherheitskernel 504 mit der CPU SCU 416 verbunden. Wie nachfolgend detailliert beschrieben ist, überwacht die CPU SCU 416 alle softwareiniziierten Zugriffe auf den Speicher 406 und erlaubt lediglich autorisierte Zugriffe auf den Speicher 406.
  • In der Ausführungsform aus 5 sind die Gerätetreiber 506a bis 506d funktionsmäßig den entsprechenden Gerätehardwareeinheiten 414a bis 414d zugeordnet und mit diesen verbunden. Die Gerätehardwareeinheiten 414a und 414d können beispielsweise „sichere" Geräte sein und die entsprechenden Gerätetreiber 506a und 506d können somit „sichere" Gerätetreiber sein. Der Sicherheitskernel 504 ist zwischen dem Betriebssystem 502 und den sicheren Gerätetreibern 506a und 506d angeordnet und kann alle Zugriffe durch die Anwenderprogramme 500 und das Betriebssystem 502 auf die sicheren Gerätetreiber 506a und 506d und auf die entsprechenden sicheren Geräte 414a und 414d überwachen. Der Sicherheitskernel 504 kann unautorisierte Zugriffe auf die sicheren Gerätetreiber 506a und 506d und die entsprechenden sicheren Geräte 414a und 414b durch die Anwenderprogramme 500 und das Betriebssystem 502 verhindern. Die Gerätetreiber 506b und 506c können andererseits „nicht sichere" Gerätetreiber und die entsprechenden Gerätehardwareeinheiten 414b und 414c können „nicht sichere" Gerätehardwareeinheiten sein. Die Gerätetreiber 506b und 506c und die entsprechenden Gerätehardwareeinheiten 414b und 414c können beispielsweise „vererbte" Gerätetreiber und Gerätehardwareeinheiten sein.
  • Zu beachten ist, dass in anderen Ausführungsformen der Sicherheitskernel 504 ein Teil des Betriebssystems 502 sein kann. In noch weiteren Ausführungsformen können der Sicherheitskernel 504, die Gerätetreiber 506a und 506d und/oder die Gerätetreiber 506b und 506c ein Teil des Betriebssystems 502 sein.
  • 6 ist eine Ansicht einer Ausführungsform der CPU 402 des Computersystems 400 aus 1. In der Ausführungsform aus 6 umfasst die CPU 402 eine Ausführungseinheit 600, eine Speicherverwaltungseinheit (MMU) 602, eine CPU- bzw. Cache-Speichereinheit 604, eine Busschnittstelleneinheit (BIU) 606, einen Satz Steuerregister 608 und einen Satz an Sicherheitsausführungsmodus-(SEM)Registern 610. Die CPU SCU 416 ist in der MMU 602 angeordnet. Wie nachfolgend detailliert beschrieben ist, wird der Satz aus SEM-Register 610 verwendet, um einen Sicherheitsausführungsmodus bzw. einen Sicherheitsexekutionsmodus (SEM) in dem Computersystem 400 aus Fig. 404 einzurichten, und der Betrieb der CPU SCU 416 wird von den Inhalten des Satzes aus SEM-Registern 610 gesteuert. Auf die SEM-Register 610 wird von dem Sicherheitskernel 504 (5) zugegriffen (d. h. diese werden beschrieben und/oder ausgelesen). Das Computersystem 400 aus 4 kann beispielsweise in dem SEM betrieben werden, wenn: (i) die CPU 402 ein ×86-Prozessor ist, der in dem geschützten ×86-Modus betrieben wird, (ii) die Seiteneinteilung des Speichers aktiviert ist, und (iii) die Inhalte der SEM-Register 610 den SEM-Betrieb anweisen.
  • Im Wesentlichen regelt der Inhalt des Satzes der Steuerregister 608 den Betrieb der CPU 402. Folglich regeln die Inhalte des Satzes der Steuerregister 608 den Betrieb der Ausführungseinheit 600, der MMU 602, der Cache-Speichereinheit 604 und/oder der BIU 606. Der Satz aus Steuerregistern 608 kann beispielsweise die mehreren Steuerregister der ×86-Prozessorarchitektur beinhalten.
  • Die Ausführungseinheit 600 der CPU 402 holt Anweisungen (z. B. ×86-Instruktionen) und Daten, führt die abgeholten Anweisungen aus und erzeugt Signale (Adress-, Daten- und Steuersignale) während der Ausführung der Anweisungen. Die Ausführungseinheit 600 ist mit der Cache-Speichereinheit 604 verbunden und kann Anweisungen aus dem Speicher 406 (4) über die Cache-Speichereinheit 604 und die BIU 606 empfangen.
  • Der Speicher 406 (4) des Computersystems 400 enthält mehrere Speicherplätze, die jeweils eine einzigartige physikalische Adresse aufweisen. Beim Betrieb im geschützten Modus, wenn das Seiteneinteilen aktiviert ist, wird ein Adressenraum der CPU 402 in mehrere Blöcke unterteilt, die als Seitenrahmen oder „Seiten" bezeichnet werden. Wie zuvor beschrieben ist, werden lediglich Daten, die einem Teil der Seiten entsprechen, in dem Speicher 406 zu einer gegebenen Zeit gespeichert. In der Ausführungsform aus 6 repräsentieren Adressensignale, die von der Ausführungseinheit 600 während der Ausführung der Anweisungen erzeugt werden, segmentierte (d. h. „logische") Adressen. Wie nachfolgend beschrieben ist, übersetzt die MMU 602 die segmentierten Adressen, die von der Ausführungseinheit 600 erzeugt werden, in entsprechende physikalische Adressen des Speichers 406. Die MMU 602 liefert die physikalischen Adressen an die Cache-Speichereinheit 604. Die Cache-Speichereinheit 604 ist eine relativ kleine Speichereinheit, die zum Speichern von Instruktionen und Daten, die kurze Zeit zuvor von der Ausführungseinheit 600 abgeholt wurden, verwendet wird. Die BIU 606 ist zwischen der Cache-Speichereinheit 604 und der Hauptrechnerbrücke 404 angeordnet und wird verwendet, um Instruktionen und Daten, die nicht in der Cache-Speichereinheit 604 vorhanden sind, aus dem Speicher 406 über die Hauptrechnerbrücke 404 abzuholen.
  • 7 ist eine Ansicht einer Ausführungsform der MMU 602 aus 6. In der Ausführungsform aus 7 umfasst die MMU 602 eine Segmentierungseinheit 700, eine Seitenbildungseinheit 702, die CPU SCU 616 und eine Auswahllogik 704 für das Auswählen zwischen Ausgaben der Segmentierungseinheit 700 und der Seitenbildungseinheit 702, um eine physikalische Adresse zu erzeugen. Wie in 7 dargestellt ist, empfängt die Segmentierungseinheit 700 eine segmentierte Adresse von der Ausführungseinheit 600 und verwendet einen gut bekannten Mechanismus zum Übersetzen der segmentierten Adresse in eine lineare Adresse der ×86-Prozessorarchitektur, um an einem Ausgang eine entsprechende lineare Adresse zu erzeugen. Wie in 7 gezeigt ist, empfängt die Seitenbildungseinheit 702, wenn diese durch ein „Seitenbildungs-"Signal aktiviert ist, die von der Segmentierungseinheit 700 erzeugten linearen Adressen und erzeugt entsprechende physikalische Adressen. Das Seitenbildungssignal kann ein Abbild des Seitenmarken- bzw. Seitenbildungsflag (PG) Bit in einem Steuerregister 0 (CR0) der ×86-Prozessorarchitektur und des Satzes an Steuerregistern 608 (6) sein. Wenn das Seitenbildungssignal nicht festgestellt wird, wird eine Seitenbildung in dem Speicher nicht aktiviert und die Auswahllo gik 704 erzeugt die von der Segmentierungseinheit 700 empfangene lineare Adresse als die physikalische Adresse.
  • Wenn das Seitenbildungssignal erkannt wird, wird die Seitenbildung in dem Speicher aktiviert und die Seitenbildungseinheit 702 übersetzt die von der Segmentierungseinheit 700 empfangene lineare Adresse in eine entsprechende physikalische Adresse, wobei der zuvor beschriebene Übersetzungsmechanismus 100 von der linearen in eine physikalische Adresse der ×86-Prozessorarchitektur (7), wie zuvor beschrieben ist, angewendet wird. Wie oben beschrieben ist, werden während des Vorgangs des Übersetzens der linearen Adresse in die physikalische Adresse die Inhalte der U/S-Bits des ausgewählten Seitenverzeichniseintrages und des ausgewählten Seitentabelleneintrages logisch UND – verknüpft, um zu bestimmen, ob der Zugriff auf einen Seitenrahmen autorisiert ist. In ähnlicher Weise werden die Inhalte der R/W-Bits des ausgewählten Seitenverzeichniseintrages und des ausgewählten Seitentabelleneintrages logisch UND – verknüpft, um zu bestimmen, ob der Zugriff auf den Seitenrahmen autorisiert ist. Wenn die logischen Verknüpfungen der U/S- und R/W-Bits anzeigen, dass der Zugriff auf den Seitenrahmen autorisiert ist, erzeugt die Seitenbildungseinheit 702 die sich aus dem Vorgang des Übersetzens der linearen Adresse in die physikalische Adresse ergebende physikalische Adresse. Die Auswahllogik 704 empfängt die von der Seitenbildungseinheit 702 erzeugte physikalische Adresse, erzeugt die von der Seitenbildungseinheit 702 empfangene physikalische Adresse als die physikalische Adresse und liefert die physikalische Adresse an die Cache-Speichereinheit 604.
  • Wenn andererseits die logischen Verknüpfungen der U/S- und R/W-Bits anzeigen, dass der Zugriff auf den Seitenrahmen 108 nicht autorisiert ist, erzeugt die Seitenbildungseinheit 702 keine physikalische Adresse während des Vorgangs des Übersetzens der linearen Adresse in die physikalische Adresse. Stattdessen erkennt die Seitenbildungseinheit 702 ein allgemeines Schutzfehler-(GPF)Signal und die MMU 602 leitet das GPF-Signal an die Ausführungseinheit 600 weiter. In Reaktion auf das GPF-Signal kann die Ausführungseinheit 600 eine Ausnahmefallroutine ausführen und kann letztlich die Ausführung eines der Anwenderprogramme 500 (5) anhalten, wenn das GPF-Signal erkannt wurde. Die Seitenbildungseinheit 702 kann ferner einen Übersetzungsüberblickpuffer (TLB) zum Speichern einer relativ geringen Anzahl an kürzlich bestimmter Übersetzungen von linearer Adresse in physikalischer Adresse aufweisen.
  • 8 ist eine Ansicht einer Ausführungsform der CPU SCU 416 aus 7. In der Ausführungsform aus 8 umfasst die CPU SCU 416 eine Sicherheitsprüflogik 800, die mit dem Satz aus SEM-Registern 610 (6) und einem Sicherheitsattributtabellen-(SAT)Eintragspuffer 802 verbunden ist. Wie nachfolgend beschrieben ist, enthalten SAT-Einträge zusätzliche Sicherheitsinformationen über die U/S- und R/W-Bits der Seitenverzeichnis- und Seitentabelleneinträge entsprechend den Speicherseiten. Die Sicherheitsprüflogik 800 verwendet die zusätzliche Sicherheitsinformation, die in einem gegebenen SAT-Eintrag gespeichert ist, um nicht autorisierte durch Software initiierte Zugriffe auf die entsprechende Speicherseite zu verhindern. Der SAT-Eintragspuffer 802 wird verwendet, um eine relativ geringe Anzahl an SAT-Einträgen von Speicherseiten zu speichern, auf die kürzlich zugegriffen wurde.
  • Wie zuvor beschrieben ist, wird der Satz aus SEM-Register 610 verwendet, um einen Sicherheitsausführungsmodus (SEM) in dem Computersystem 400 aus 4 einzurichten. Die Inhalte des Satzes aus SEM-Registern 610 regeln den Betrieb der CPU SCU 416. Die Sicherheitsprüflogik 800 empfängt Informationen, die in dem SAT-Eintragspuffer 802 zu speichern sind, von der MMU 602 über einen Kommunikationsbus, der in 8 gezeigt ist. Die Sicherheitsprüflogik 800 empfängt ferner eine von der Seitenbildungseinheit 702 erzeugte physikalische Adresse.
  • 9 bis 11 werden nun benutzt, um zu beschreiben, wie eine zusätzliche Sicherheitsinformation einer ausgewählten Speicherseite in dem Computersystem 400 aus 4 erhalten wird. 9 ist eine Ansicht einer Ausführungsform eines Mechanismus 900 zum Zugreifen auf einen SAT-Eintrag der ausgewählten Speicherseite, um zusätzliche Sicherheitsinformationen der ausgewählten Speicherseite zu erhalten. Der Mechanismus 900 aus 9 kann innerhalb der Sicherheitsprüflogik 800 aus 4 eingerichtet sein und kann implementiert werden, wenn das Computersystem 400 aus 4 in dem SEM betrieben wird. Der Mechanismus 900 beinhaltet eine von der Segmentierungseinheit 700 (7) während der Ausführung einer Anweisung erzeugte lineare Adresse 902, ein SAT-Verzeichnis 904, mehrere SAT's mit einer SAT 906, und ein SAT-Basisadressenregister 908 des Satzes aus SEM-Register 610. Das SAT-Verzeichnis 904 und die mehreren SAT's mit der SAT 906 sind SEM-Datenstrukturen, die von dem Sicherheitskernel 504 (5) erzeugt und bewahrt werden. Wie nachfolgend beschrieben ist, werden das SAT-Verzeichnis 904, falls dies vor handen ist, und eine beliebige benötigte SAT in den Speicher 406 kopiert, bevor auf diese zugegriffen wird.
  • Das SAT-Basisadressenregister 908 enthält ein Präsenz-(P)-Bit, das die Anwesenheit einer gültigen SAT-Verzeichnisbasisadresse innerhalb des SAT-Basisadressenregisters 908 kennzeichnet. Die höchstrangigen (d. h. signifikantesten) Bits des SAT-Basisadressenregister 908 sind für die SAT-Verzeichnisbasisadresse reserviert. Die SAT-Verzeichnisbasisadresse ist eine Basisadresse einer Speicherseite, die das SAT-Verzeichnis 904 enthält. Wenn P = 1, ist die SAT-Verzeichnisbasisadresse zulässig und SAT-Tabellen spezifizieren die Sicherheitsattribute von Speicherseiten. Wenn P = 0, ist die SAT-Verzeichnisbasisadresse nicht zulässig, es bestehen keine SAT-Tabellen und Sicherheitsattribute von Speicherseiten werden mittels eines SAT-Ersatzregisters bestimmt.
  • 10 ist eine Ansicht einer Ausführungsform des SAT-Ersatzregisters 1000. In der Ausführungsform aus 10 enthält das SAT-Ersatzregister 1000 ein Sicherheitskontextidentifikations-(SCID)Feld. Das SCID-Feld enthält mehrere Bit-Positionen des SAT-Ersatzregisters 1000. Die Bit-Positionen bilden eine binäre Darstellung eines SCID-Wertes, wobei der SCID-Wert ein ganzzahliger Wert größer oder gleich Null ist. Der SCID-Wert bezeichnet eine Ersatzsicherheitskontextebene bzw. eine voreingestellte Sicherheitskontextebene für Speicherseiten in dem Computersystem 400. Wenn beispielsweise das SCID-Feld n-Bit des SAT-Ersatzregisters 1000 enthält, kann eine gegebene Speicherseite eine aus 2n möglichen Sicherheitskontextebenen in dem Computersystem 400 einnehmen.
  • Die lineare Adresse 902 besitzt eine entsprechende physikalische Adresse, die in der ausgewählten Speicherseite liegt. Die entsprechende physikalische Adresse wird durch die Seitenbildungseinheit 702 (7) unter Anwendung des Adressenübersetzungsmechanismus 100 aus 1 erzeugt. Es sei nun wieder auf 9 verwiesen und es sei angenommen, dass das P-Bit des SAT-Basisadressenregisters 908 „1" ist; so wird die lineare Adresse 902, die von der Segmentierungseinheit 700 (7) erzeugt wird, in drei Bereiche unterteilt, um auf den SAT-Eintrag der ausgewählten Speicherseite zuzugreifen. Wie zuvor beschrieben ist, ist die SAT-Verzeichnisbasisadresse des SAT-Basisadressenregisters 908 die Basisadresse der Speicherseite, die das SAT-Verzeichnis 904 enthält. Das SAT-Verzeichnis 904 enthält mehrere SAT-Verzeichniseinträge einschließlich eines SAT-Verzeichniseintrags 910. Jeder SAT-Verzeichniseintrag kann eine entsprechende SAT in dem Speicher 406 aufweisen. Ein „oberer" Bereich der linearen Adresse 902 mit den höchstrangigen oder signifikantesten Bits der linearen Adresse 902 wird als ein Index für das SAT-Verzeichnis 904 verwendet. Der SAT-Verzeichniseintrag 910 wird aus dem SAT-Verzeichnis 904 unter Verwendung der SAT-Verzeichnisbasisadresse des SAT-Basisadressenregisters 908 und des oberen Bereichs der linearen Adresse 902 ausgewählt.
  • 11 ist eine Ansicht einer Ausführungsform eines SAT-Verzeichniseintragsformats 1100. Gemäß 11 enthält jeder SAT-Verzeichniseintrag ein Präsenz-(P)Bit, das das Vorhandensein einer zulässigen SAT-Basisadresse innerhalb des SAT-Verzeichniseintrags kennzeichnet. In der Ausführungsform aus 11 sind die höchstrangigen (d. h. die signifikantesten) Bits jedes SAT-Verzeichniseintrages für eine SAT-Basisadresse reserviert. Die SAT-Basisadresse ist eine Basisadresse einer Speicherseite, die eine entsprechende SAT enthält. Wenn P = 1, ist die SAT-Basisadresse zulässig und die entsprechende SAT wird in dem Speicher 406 gespeichert.
  • Wenn P = 0, ist die SAT-Basisadresse nicht zulässig und die entsprechende SAT existiert nicht in dem Speicher 406 und muss von einer Speichereinrichtung (beispielsweise einem Diskettenlaufwerk) in den Speicher 406 kopiert werden. Wenn P = 0, kann die Sicherheitsprüflogik 800 ein Signal für einen Fehler an die Logik innerhalb der Seitenbildungseinheit 702 anzeigen, und die MMU 602 kann das Seitenfehlersignal an die Ausführungseinheit 600 (6) weiterleiten. In Reaktion auf das Seitenfehlersignal kann die Ausführungseinheit 600 eine Seitenfehlerhandhabungsroutine ausführen, die die benötigte SAT von der Speichereinrichtung ausliest und die benötigte SAT in dem Speicher 406 ablegt. Nachdem die erforderliche SAT in dem Speicher 406 gespeichert ist, wird das P-Bit des entsprechenden SAT-Verzeichnisseintrags auf „1" gesetzt, und der Mechanismus 900 wird fortgesetzt. Wenn alternativ P = 0, können die Inhalte eines SAT-Ersatzbasisadressenfeldes (nicht gezeigt) des SAT-Ersatzregisters 1000 (10) als die SAT-Basisadresse verwendet werden.
  • Es wieder auf 9 verwiesen; ein „mittlerer" Bereich der linearen Adresse 902 wird als ein Index für die SAT 906 verwendet. Der SAT-Eintrag 906 wird somit in der SAT 906 unter Anwendung der SAT-Basisadresse des SAT-Verzeichniseintrags 910 und des mittleren Bereichs der linearen Adresse 902 ausgewählt. 12 ist eine Ansicht einer Ausführungsform eines SAT-Eintragsformats 1200. In der Ausführungsform aus 12 enthält jeder SAT-Eintrag ein Sicherheitskontextidentifikations-(SCID)Feld. Das SCID-Feld enthält mehrere Bit-Positionen des SAT-Eintrags. Die Bit-Positionen bilden eine binäre Darstellung eines SCID-Wertes, wobei der SCID-Wert ein ganzzahliger Wert größer oder gleich Null ist. Der SCID-Wert kennzeichnet eine Sicherheitskontextebene der ausgewählten Speicherseite. Wenn beispielsweise das SCID-Feld n-Bits des SAT-Eintrags enthält, kann die ausgewählte Speicherseite eine aus 2n möglichen Sicherheitskontextebenen in dem Computersystem 400 einnehmen.
  • Die BIU 606 (6) liest erforderliche SEM-Datenstruktureneinträge aus dem Speicher 406 aus und liefert die SEM-Datenstruktureinträge an die MMU 602. Es sei nun wieder auf 8 verwiesen; die Sicherheitsprüflogik 800 empfängt SEM-Datenstruktureneinträge von der MMU 602 und der Seitenbildungseinheit 702 über den Kommunikationsbus. Wie zuvor beschrieben ist, wird der SAT-Eintragspuffer 802 verwendet, um eine relativ geringe Anzahl an SAT-Einträgen von kürzlich erfolgten Speicherseitenzugriffen zu speichern. Die Sicherheitsprüflogik 800 speichert einen gegebenen SAT-Eintrag in dem SAT-Eintragspuffer 802 zusammen mit einem „Markierungs-"Bereich der entsprechenden physikalischen Adresse.
  • Während eines nachfolgenden Speicherseitenzugriffs kann die Sicherheitsprüflogik 800 einen „Markierungs-"Bereich einer von der Seitenbildungseinheit 702 erzeugten physikalischen Adresse mit Markierungsbereichen von physikalischen Adressen vergleichen, die SAT-Einträgen entsprechen, die in dem SAT-Eintragspuffer 802 abgelegt sind. Wenn der Markierungsbereich der physikalischen Adresse mit einem Markierungsbereich einer physikalischen Adresse entsprechend einem SAT-Eintrag, der in dem SAT-Eintragspuffer 802 abgelegt ist, übereinstimmt, kann die Sicherheitsprüflogik 800 auf den SAT-Eintrag in dem SAT-Eintragspuffer 802 zugreifen, wodurch es nicht notwendig ist, den Prozess aus 9 auszuführen, um den SAT-Eintrag aus dem Speicher 406 zu erhalten. Der Sicherheitskernel 504 (5) modifiziert den Inhalt des SAT-Basisadressenregisters 908 in der CPU 402 (beispielsweise während Kontextänderungen). In Reaktion auf Modifizierungen des SAT-Basisadressenregisters 908 kann die Sicherheitsprüflogik 800 der CPU SCU 416 den SAT-Eintragspuffer 802 leeren.
  • In der Ausführungsform aus 7 ist die CPU SCU 416 mit der Seitenbildungseinheit 702 verbunden. Wenn das Computersystem 400 aus 4 in dem SEM betrieben wird, empfängt die Sicherheitsprüflogik 800 die momentane Privilegebene (CPL) der gewärtig ausge führten Aufgabe (d. h. gegenwärtig ausgeführten Anweisung). Die Sicherheitsprüflogik 800 empfängt ferner das Seitenverzeichniseintrags (PDE) U/S-Bit, das PDE-R/W-Bit, das Seitentabelleneintrags-(PTE)U/S-Bit und das PTE-R/W-Bit der ausgewählten Speicherseite, in der die entsprechende physikalische Adresse liegt, von der Seitenbildungseinheit 702. Die Sicherheitsprüflogik 800 verwendet die obige Information zusammen mit dem SCID-Wert des SAT-Eintrags entsprechend der ausgewählten Speicherseite, um zu bestimmen, ob der Zugriff auf den Speicher 406 autorisiert ist.
  • Die CPU 402 aus 6 kann ein ×86-Prozessor sein und kann ein Kodierungssegment(CS-)Register enthalten, das eines der 16-Bit-Segmentregister der ×86-Prozessorarchitektur ist. Jedes Segmentregister bestimmt einen Block des Speichers (beispielsweise ein Segment eines Speichers). In dem geschützten Modus, wenn die Seitenbildung aktiviert ist, wird das CS-Register mit einem Segmentselektor beschrieben, der einen ausführbaren Block des Speichers 406 kennzeichnet. Die höchstrangigen (d. h. signifikantesten) Bits des Segmentselektors werden verwendet, um Informationen zu speichern, die einen Block eines Speichers (beispielsweise ein Speichersegment) mit einer nächsten Anweisung, die von der Ausführungseinheit der CPU 402 (6) auszuführen ist, kennzeichnet. Ein Anweisungszeiger-(IP/EIP/RIP)Register wird verwendet, um einen Offset in dem Speicherblock (beispielsweise das Speichersegment), das von dem CS-Register bezeichnet ist, zu speichern. Das CS:IP/EIP/RIP-Paar bezeichnet eine segmentierte Adresse der nächsten Anweisung. Die Bits mit niedrigstem Rang (d. h. am wenigsten signifikante Bits) des CS-Register werden verwendet, um einen Wert zu speichern, der eine momentane Privilegebene (CPL) einer Aufgabe, die momentan von der Ausführungseinheit 600 ausgeführt wird (d. h. die CPL der momentanen Aufgabe) kennzeichnet.
  • Die Tabelle 1 unten zeigt beispielhafte Regeln für von der CPU initiierte (d. h. durch Software initiierte) Speicherzugriffe, wenn das Computersystem 400 aus 4 in dem SEM betrieben wird. Die CPU SCU 416 (4 bis 8) und der Sicherheitskernel 504 (5) arbeiten zusammen, um die Regeln der Tabelle 1 zu implementieren, wenn das Computersystem 400 aus 4 in dem SEM betrieben wird, um zusätzliche Sicherheit für in dem Speicher 406 abgelegte Daten zusätzlich und über die Datensicherheit hinausgehend bereitzustellen, die von dem Betriebssystem 502 (5) geboten wird.
  • In der Tabelle 1 unten repräsentiert „CEI-SCID" den SCID-Wert der momentan abgearbeiteten Anweisung und „SMP-SCID" repräsentiert den SCID-Wert der ausgewählten Speicherseite. Der CEI-SCID-Wert ist der SCID-Wert des SAT-Eintrags, der der Speicherseite entspricht, die die momentan auszuführende Anweisung enthält. In der Ausführungsform aus Tabelle 1 entsprechen geringere SCID-Werte höheren Sicherheitskontextebenen. In anderen Ausführungsformen können höhere SCID-Werte höheren Sicherheitskontextebenen entsprechen. Tabelle 1: Beispielhafte Regeln für durch Software initiierte Speicherzugriffe, wenn das Computersystem 400 aus Fig. 4 in dem SEM betrieben wird.
    ausgewählte Speicherseite zugelassen
    SCID-Vergleich CPL U/S R/W Zugriff Bemerkungen
    CEI-SCID > SMP-SCID x x x kein Zugriff SEM-Sicherheit Ausnahme erkannt
    CEI-SCID <= SMP-SCID 0 x 1(R/W) R/W normaler ×86 Schutzvorgänge ausgeübt: voller Zugriff
    CEI-SCID <= SMP-SCID 0 x 0(R) nur lesen normaler ×86 ausgeübte Schutzmaßnahmen: nur Lesezugriff
    CEI-SCID <= SMP-SCID 3 0 x kein Zugriff normaler ×86 ausgeübte Schutzfunktionen: GPF erkannt
    CEI-SCID <= SMP-SCID 3 1 1(R/W) R/W normaler ×86 ausgeübte Schutzfunktion: voller Zugriff gewährt
    CEI-SCID <= SMP-SCID 3 1 0(R) nur lesen normaler ×86 ausgeübte Schutzfunktionen: nur Lesezugriff
  • In der Tabelle 1 oben ist die „CEI-SCID > SMP-SCID" Bedingung wahr, wenn der ganzzahlige Wert, der durch den SCID-Wert der momentan abgearbeiteten Anweisung repräsentiert wird, numerisch größer als der Ganzzahlwert ist, der durch den SCID-Wert der ausgewählten Speicherseite repräsentiert ist. Die „CEI-SCID <= SMP-SCID Bedingung ist wahr, wenn der ganzzahlige Wert, der von dem SCID-Wert der momentan ausgeführten Anweisung repräsentiert ist, numerisch kleiner oder gleich dem ganzzahligen Wert ist, der von dem SCID-Wert der ausgewählten Speicherseite repräsentiert wird. Das U/S-Bit der ausgewählten Speicherseite ist das Ergebnis der logischen UND – Verknüpfung des PDE U/S Bits und des PTE U/S Bits der ausgewählten Speicherseite. Das R/W-Bit der ausgewählten Speicherseite ist das Ergebnis der logischen UND-Verknüpfung des PDE-R/W-Bits und des PTE-R/W-Bits der ausgewählten Speicherseite. Das Symbol „X" bezeichnet „beliebig": der logische Wert kann entweder „0" oder „1" sein.
  • Es sei wieder auf 8 verwiesen; die Sicherheitsprüflogik 800 der CPU SCU 416 erzeugt ein allgemeines Schutzfehler („GPF") Signal und ein „SEM-Sicherheitsausnahme" Signal und liefert das GPF und das SEM-Sicherheitsausnahmesignal zu einer Logik innerhalb der MMU 602. Wenn die Sicherheitsprüflogik 800 das GPF-Signal erkennt, leitet die MMU 602 das GPF-Signal an die Ausführungseinheit 600 (6) weiter. In Reaktion auf das GPF-Signal kann die Ausführungseinheit 600 den gut bekannten Vektormechanismus für die Interruptdiskriptortabelle (IDT) der ×86-Prozessorarchitektur verwenden, um auf eine GPF-Behandlungsroutine zuzugreifen und diese auszuführen.
  • Wenn die Sicherheitsprüflogik 800 das SEM-Sicherheitsausnahmesignal erkennt, leitet die MMU 602 das SEM-Sicherheitsausnahmesignal an die Ausführungseinheit 600 weiter. Anders als normale Prozessorausnahmeroutinen, bei denen der IDT-Vektormechanismus der ×86-Prozessorarchitektur angewendet wird, kann auch ein unterschiedliches Vektorisierungsverfahren verwendet werden, um SEM-Sicherheitsausnahmefälle zu behandeln. SEM-Sicherheitsausnahmefälle können durch ein Registerpaar (beispielsweise modellspezifische Register oder MSR) ausgelöst werden, die ähnlich arbeiten wie die ×86- „SYSENTER” und „SYSEXIT" Instruktionen arbeiten. Das Registerpaar können „Sicherheitsausnahmeeintragspunkt"-Register sein und können eine Verzweigungszieladresse für die Ausführung der Anweisung definieren, wenn eine SEM-Sicherheitsausnahme auftritt. Sicherheitsausnahmeeintragspunkteregister können das Codierungssegment (CS), dann den Anweisungszeiger (IP oder die 64-Bit-Version RIP), das Stapelsegment (SS) und den Stapelzeiger(SP oder die 64-Bit-Vesion RSP-)Werte definieren, die beim Einsprung in eine SEM-Sicherheitsausnahmehandlungsroutine zu verwenden sind. Unter Softwaresteuerung kann dann die Ausführungseinheit 600 (6) die vorhergehenden SS, SP/RSP, EFLAGS, CS und IP/RIP-Werte auf einen neuen Stapel schieben, um zu kennzeichnen, wo die Ausnahme auftrat. Ferner kann die Ausführungseinheit 600 einen Fehlercode auf dem Stapel ablegen. Anzumerken ist, dass ein normaler Rücksprung von der Interrupt-(IRET)Anweisung nicht verwendet werden kann, da die vorhergehenden SS und SP/RSP-Werte immer gesichert werden und eine Stapelumschaltung wird stets erreicht, selbst wenn eine Änderung im CPL nicht auftritt. Folglich kann eine neue Anweisung definiert werden, um einen Rücksprung von der SEM-Sicherheitsausnahmebehandlungsroutine zu gewährleisten.
  • 13a und 13b bilden zusammen ein Flussdiagramm einer Ausführungsform eines Verfahrens 1300 für das Bereitstellen einer Zugriffssicherung für einen Speicher, der zum Ablegen von Daten verwendet wird, die in mehreren Speicherseiten organisiert sind. Das Verfahren 1300 kann beispielsweise die beispielhaften Regeln aus Tabelle 1 für durch die CPU initiierte (d. h. softwareinitiierte) Speicherzugriffe wiedergeben, wenn das Computersystem 400 aus 4 in dem SEM betrieben wird. Das Verfahren 1300 kann in der MMU 602 (6 bis 7) eingerichtet sein.
  • Während eines Schrittes 1302 des Verfahrens 1300 wird eine lineare Adresse, die während des Ausführens einer Anweisung erzeugt wird, zusammen mit einem Sicherheitsattribut der Anweisung (z. B. ein CPL einer die Anweisung enthaltenden Aufgabe) empfangen. Die Anweisung liegt in einer ersten Speicherseite. Während eines Schritts 1304 wird die lineare Adresse verwendet, um mindestens auf eine in Seiten organisierte Speicherdatenstruktur, die in dem Speicher angeordnet ist, zuzugreifen (beispielsweise ein Seitenverzeichnis und eine Seitentabelle), um eine Basisadresse einer ausgewählten Speicherseite und Sicherheitsattribute der ausgewählten Speicherseite zu erhalten. Die Sicherheitsattribute der ausgewählten Speicherseite können beispielsweise ein U/S-Bit und ein R/W-Bit eines Spei cherverzeichniseintrages und ein U/S-Bit und ein R/W-Bit eines Seitentabelleneintrags enthalten.
  • Während eines Entscheidungsschritts 1306 werden das Sicherheitsattribut der Anweisung und die Sicherheitsattribute der ausgewählten Speicherseite verwendet, um zu bestimmen, ob der Zugriff autorisiert ist oder nicht. Wenn der Zugriff autorisiert ist, werden die Basisadresse der ausgewählten Speicherseite und ein Offset während eines Schritts 1308 kombiniert, um eine physikalische Adresse innerhalb der ausgewählten Speicherseite zu erzeugen. Wenn der Zugriff nicht autorisiert ist, wird ein Fehlersignal (ein allgemeines Schutzfehlersignal oder GPF-Signal) während eines Schritts 1310 erzeugt.
  • Während eines Schritts 1312, der im Wesentlichen gleichzeitig mit dem Schritt 1304 (d. h. parallel zu dem Schritt 1304) ausgeführt werden kann, wird auf mindestens eine Sicherheitsattributdatenstruktur, die in dem Speicher abgelegt ist (z. B. das SAT-Verzeichnis 904 aus 9 und eine SAT) zugegriffen, wobei die während der Ausführung der Anweisung erzeugte lineare Adresse verwendet wird, um ein zusätzliches Sicherheitsattribut der ersten Speicherseite zu erhalten, wobei die erste Speicherseite die Anweisung enthält, und um ein zusätzliches Sicherheitsattribut der ausgewählten Speicherseite zu erhalten, wobei die ausgewählte Speicherseite die der linearen Adresse entsprechende physikalische Adresse enthält. Das zusätzliche Sicherheitsattribut der ersten Speicherseite kann beispielsweise einen Sicherheitskontextidentifikations-(SCID)Wert, wie er zuvor beschrieben ist, enthalten, wobei der SCID-Wert eine Sicherheitskontextebene der ersten Speicherseite kennzeichnet. In gleicher Weise kann das zusätzliche Sicherheitsattribut der ausgewählten Speicherseite einen SCID-Wert enthalten, wobei der SCID-Wert eine Sicherheitskontextebene der ausgewählten Speicherseite kennzeichnet.
  • Während eines Schritts 1314 wird ein von dem zusätzlichen Sicherheitsattribut der ersten Speicherseite übermittelter numerischer Wert mit einem von dem zusätzlichen Sicherheitsattribut der ausgewählten Speicherseite übermittelten numerischen Wert verglichen. Auf die ausgewählte Speicherseite wird während eines Schritts 1316 in Abhängigkeit eines Ergebnisses des Vergleichs der numerischen Werte, die von dem Sicherheitsattribut der ersten Speicherseite und dem zusätzlichen Sicherheitsattribut der ausgewählten Speicherseite übermittelt werden, zugegriffen.
  • Wenn beispielsweise das Verfahren 1300 die beispielhaften Regeln aus Tabelle 1 zuvor für CPU-initiierte (d. h. softwareinitiierte) Speicherzugriffe wiedergibt, wenn das Computersystem 400 aus 4 in dem SEM betrieben wird, kann auf die ausgewählte Speicherseite während des Schritts 1316 lediglich dann zugegriffen werden, wenn der ganzzahlige Wert, der von dem SCID-Wert der Anweisung repräsentiert wird, numerisch kleiner oder gleich dem ganzzahligen Wert ist, der von dem SCID-Wert der ausgewählten Speicherseite repräsentiert wird (d. h. wenn CEI-SCID <= SMP_SCID). Wenn andererseits der ganzzahlige Wert, der von dem SCID-Wert der Anweisung repräsentiert wird, numerisch größer als der ganzzahlige Wert ist, der von dem SCID-Wert der ausgewählten Speicherseite repräsentiert wird, (d. h., wenn CEI-SCID > SMP_SCID), wird auf die ausgewählte Speicherseite nicht während des Schritts 1316 zugegriffen. Bei dieser Sachlage kann das SEM-Sicherheitsausnahmesignal, wie es in Tabelle 1 angegeben und zuvor beschrieben ist, erkannt werden.

Claims (8)

  1. Speicherverwaltungseinheit (602) zur Verwaltung eines Speichers (406), in dem Daten abgelegt sind, die in mehreren Speicherseiten organisiert sind, wobei die Speicherverwaltungseinheit (602) umfasst: eine Sicherheitsprüfeinheit (416), die angeordnet ist, eine während des Ausführens einer aktuellen Anweisung erzeugte lineare Adresse (102) zu empfangen, wobei die lineare Adresse (102) eine entsprechende physikalische Adresse, die in einer ausgewählten Speicherseite liegt, aufweist, und wobei die Sicherheitsprüfeinheit (416) ausgebildet ist, die lineare Adresse (102) zu verwenden, um auf mindestens eine in dem Speicher (406) angeordnete Sicherheitsattributdatenstruktur zuzugreifen, um ein Sicherheitsattribut der ausgewählten Speicherseite zu erhalten, einen von dem Sicherheitsattribut der aktuellen Anweisung transportierten numerischen Wert mit einem von dem Sicherheitsattribut der ausgewählten Speicherseite transportierten numerischen Wert zu vergleichen, und ein Ausgangssignal in Abhängigkeit eines Ergebnisses des Vergleichs zu erzeugen, wobei das Sicherheitsattribut der ausgewählten Speicherseite und/oder der aktuellen Anweisung einen Sicherheitskontextidentifikations-(SCID)Wert aufweist und wobei der SCID Wert eine Sicherheitskontextebene der ausgewählten Speicherseite kennzeichnet; wobei die Speicherverwaltungseinheit (602) ausgebildet ist, auf die ausgewählte Speicherseite in Abhängigkeit des Ausgangssignals zuzugreifen, wobei die mindestens eine Sicherheitsattributdatenstruktur ein Sicherheitsattributtabellenverzeichnis (904) und mindestens eine Sicherheitsattributtabelle (906) aufweist, und wobei das Sicherheitsattributtabellenverzeichnis (904) mehrere Einträge aufweist, und wobei jeder Eintrag des Sicherheitsattributtabellenverzeichnisses (904) ein Präsenzbit und ein Sicherheitsattributtabellenbasisadressenfeld aufweist, und wobei das Präsenzbit kennzeichnet, ob eine Sicherheitsattributtabelle (906) entsprechend dem Sicherheitsattributtabellenverzeichniseintrag in dem Speicher (406) vorhanden ist oder nicht, und wobei das Sicherheitsattributtabellenbasisadressenfeld für eine Basisadresse der Sicherheitsattributtabelle (906), die dem Sicherheitsattributtabellenverzeichniseintrag entspricht, reserviert ist.
  2. Die Speicherverwaltungseinheit (602) nach Anspruch 1, die ferner umfasst: eine Seitenbildungseinheit (702), die mit dem Speicher (406) verbunden ist und ausgebildet ist, eine lineare Adresse (102), die während des Ausführens einer aktuellen Anweisung erzeugt wird, zu empfangen, und die ferner ausgebildet ist, die lineare Adresse (102) zu verwenden, um eine physikalische Adresse innerhalb einer ausgewählten Speicherseite zu erzeugen, wobei die Seitenbildungseinheit (702) ausgebildet ist, die lineare Adresse (102) zu verwenden, um auf mindestens eine in Seiten unterteilte Speicherdatenstruktur, die in dem Speicher (406) enthalten ist, zuzugreifen, um Sicherheitsattribute der ausgewählten Speicherseite zu erhalten, und wobei die Speicherbildungseinheit (702) ausgebildet ist, ein Fehlersignal in Abhängigkeit der Sicherheitsattribute der ausgewählten Speicherseite zu erzeugen.
  3. Die Speicherverwaltungseinheit (602) nach Anspruch 1 oder 2, wobei der SCID-Wert ein ganzzahliger Wert n ist, der größer oder gleich Null ist und der kennzeichnet, dass die Sicherheitskontextebene der ausgewählten Speicherseite eine von 2n Sicherheitskontextebenen ist.
  4. Die Speicherverwaltungseinheit (602) nach Anspruch 1, wobei die mindestens eine Sicherheitsattributtabelle (906) mehrere Einträge aufweist, und wobei jeder Eintrag der Sicherheitsattributtabelle (906) ein Sicherheitskontextidentifikations-(SCID)Feld aufweist, und wobei das SCID-Feld mehrere Bitpositionen enthält, wobei die Bitpositionen eine binäre Darstellung eines SCID-Wertes repräsentieren, wobei der SCID-Wert ein ganzzahliger Wert größer oder gleich Null ist, und wobei der SCID-Wert eine Sicherheitskontextebene einer entsprechenden Speicherseite kennzeichnet.
  5. Die Speicherverwaltungseinheit (602) nach Anspruch 1, wobei die Sicherheitsprüfeinheit (416) ausgebildet ist, einen Satz an Sicherheitsattributen der ausgewählten Speicherseite zusätzlich zu dem Sicherheitsattribut der ausgewählten Speicherseite zu empfangen, und um das Ausgangssignal zu erzeugen in Abhängigkeit von: (i) dem Ergebnis des Vergleichs des durch das Sicherheitsattribut der aktuellen Anweisung transportierten numerischen Wertes mit dem durch das Sicherheitsattribut der ausgewählten Speicherseite transportier ten numerischen Wertes, und (ii) dem Satz der Sicherheitsattribute der ausgewählten Speicherseite.
  6. Verfahren zur Bereitstellung einer Zugriffssicherheit für einen Speicher (406), der zum Ablegen von Daten verwendet wird, die in mehreren Speicherseiten organisiert sind, wobei das Verfahren umfasst: Empfangen einer linearen Adresse (102), die während der Abarbeitung einer Anweisung erzeugt wird und eines Sicherheitsattributs der Anweisung, wobei die Anweisung in einer ersten Speicherseite liegt; Verwenden der linearen Adresse (102), um auf mindestens eine in Seiten organisierte Speicherdatenstruktur zuzugreifen, die in dem Speicher (406) angeordnet ist, um eine Basisadresse einer ausgewählten Speicherseite und Sicherheitsattribute der ausgewählten Speicherseite zu erhalten; Kombinieren der Basisadresse der ausgewählten Speicherseite mit einem Offset, um eine physikalische Adresse innerhalb der ausgewählten Speicherseite zu erzeugen, wenn das Sicherheitsattribut der Anweisung und die Sicherheitsattribute der ausgewählten Speicherseite anzeigen, dass der Zugriff autorisiert ist; Zugreifen auf mindestens eine Sicherheitsattributdatenstruktur, die in dem Speicher (406) angeordnet ist, wobei die während der Ausführung der Anweisung erzeugte lineare Adresse (102) verwendet wird, um ein zusätzliches Sicherheitsattribut der ersten Speicherseite und ein zusätzliches Sicherheitsattribut der ausgewählten Speicherseite zu erhalten, wobei das zusätzliche Sicherheitsattribut der ausgewählten Speicherseite aus einer Sicherheitsattributtabelle (SAT) erzeugt wird, wenn das Vorhandensein der Sicherheitsattributtabelle durch ein Präsenzbit angezeigt wird, und wobei das zusätzliche Sicherheitsattribut der ausgewählten Speicherseite aus einem Voreinstellungsregister erzeugt wird, wenn das Präsenzbit keine Sicherheitsattributtabelle angibt; wobei das zusätzliche Sicherheitsattribut der ersten Speicherseite und/oder der ausgewählten Speicherseite einen Sicherheitskontextidentifikations-(SCID)Wert aufweist und wobei der SCID Wert eine Sicherheitskontextebene der ausgewählten Speicherseite kennzeichnet; und Vergleichen eines numerischen Wertes, der durch ein zusätzliches Sicherheitsattribut der ersten Speicherseite transportiert wird, mit einem numerischen Wert, der von dem zusätzlichen Sicherheitsattribut der ausgewählten Speicherseite transportiert wird; und Zugreifen auf die ausgewählte Speicherseite in Abhängigkeit eines Ergebnisses des Vergleichs der numerischen Werte, die von dem Sicherheitsattribut der ersten Speicherseite und dem zusätzlichen Sicherheitsattribut der ausgewählten Speicherseite transportiert werden.
  7. Das Verfahren nach Anspruch 6, wobei das Zugreifen umfasst: Zugreifen auf mindestens eine Sicherheitsattributdatenstruktur, die in dem Speicher (406) angeordnet ist, wobei die während der Ausführung der Anweisung erzeugte lineare Adresse (102) verwendet wird, um ein zusätzliches Sicherheitsattribut der ersten Speicherseite und ein zusätzliches Sicherheitsattribut der ausgewählten Speicherseite zu erhalten, wobei die mindestens eine Sicherheitsattributdatenstruktur ein Sicherheitsattributtabellenverzeichnis (904) und mindestens eine Sicherheitsattributtabelle (906) umfasst, und wobei das zusätzliche Sicherheitsattribut der ersten Speicherseite einen Sicherheitskontextidentifikations-(SCID)Wert der ersten Speicherseite aufweist, und wobei der SCID-Wert der ersten Speicherseite ein ganzzahliger Wert größer oder gleich Null ist und eine Sicherheitskontextebene der ersten Speicherseite gekennzeichnet, und wobei das zusätzliche Sicherheitsattribut der ausgewählten Speicherseite einen Sicherheitskontextidentifikations-(SCID)Wert der ausgewählten Speicherseite aufweist, und wobei der SCID-Wert der ausgewählten Speicherseite ein ganzzahliger Wert größer oder gleich Null ist und eine Sicherheitskontextebene der ausgewählten Speicherseite kennzeichnet.
  8. Prozessor (402) zum Verwalten eines Speichers (406), dadurch gekennzeichnet, dass, der Prozessor (402) umfasst: eine Ausführungseinheit (600), die funktionsmäßig mit einem Speicher (406) verbunden ist, wobei die Ausführungseinheit (600) ausgebildet ist, Anweisungen aus dem Speicher (406) auszulesen und die Anweisungen auszuführen; und eine Speicherverwaltungseinheit (602) gemäß einem der Ansprüche 1 bis 5.
DE10297433T 2001-11-13 2002-09-12 Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor Expired - Lifetime DE10297433B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/010161 2001-11-13
US10/010,161 US8051301B2 (en) 2001-11-13 2001-11-13 Memory management system and method providing linear address based memory access security
US10/010,161 2001-11-13
PCT/US2002/028984 WO2003042839A2 (en) 2001-11-13 2002-09-12 Memory management system and method providing linear address based memory access security

Publications (2)

Publication Number Publication Date
DE10297433T5 DE10297433T5 (de) 2004-11-11
DE10297433B4 true DE10297433B4 (de) 2008-07-24

Family

ID=21744223

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10297433T Expired - Lifetime DE10297433B4 (de) 2001-11-13 2002-09-12 Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor

Country Status (8)

Country Link
US (1) US8051301B2 (de)
JP (1) JP4295111B2 (de)
KR (1) KR100964000B1 (de)
CN (1) CN1278244C (de)
DE (1) DE10297433B4 (de)
GB (1) GB2398902B (de)
TW (1) TWI233737B (de)
WO (1) WO2003042839A2 (de)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6823433B1 (en) * 2001-11-13 2004-11-23 Advanced Micro Devices, Inc. Memory management system and method for providing physical address based memory access security
US6785790B1 (en) * 2002-05-29 2004-08-31 Advanced Micro Devices, Inc. Method and apparatus for storing and retrieving security attributes
US20030226014A1 (en) * 2002-05-31 2003-12-04 Schmidt Rodney W. Trusted client utilizing security kernel under secure execution mode
US7552303B2 (en) 2004-12-14 2009-06-23 International Business Machines Corporation Memory pacing
US7673345B2 (en) 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
US20070006294A1 (en) * 2005-06-30 2007-01-04 Hunter G K Secure flow control for a data flow in a computer and data flow in a computer network
US7617534B1 (en) 2005-08-26 2009-11-10 Symantec Corporation Detection of SYSENTER/SYSCALL hijacking
CN100432955C (zh) * 2005-09-02 2008-11-12 中兴通讯股份有限公司 一种非法内存读写的检测方法
US7685638B1 (en) 2005-12-13 2010-03-23 Symantec Corporation Dynamic replacement of system call tables
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US8566565B2 (en) * 2008-07-10 2013-10-22 Via Technologies, Inc. Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications
CN102163320B (zh) * 2011-04-27 2012-10-03 福州瑞芯微电子有限公司 一种图像处理专用可配置的mmu电路
US8631212B2 (en) * 2011-09-25 2014-01-14 Advanced Micro Devices, Inc. Input/output memory management unit with protection mode for preventing memory access by I/O devices
US9442732B2 (en) 2012-03-19 2016-09-13 Via Technologies, Inc. Running state power saving via reduced instructions per clock operation
US9804969B2 (en) * 2012-12-20 2017-10-31 Qualcomm Incorporated Speculative addressing using a virtual address-to-physical address page crossing buffer
US8935800B2 (en) 2012-12-31 2015-01-13 Intel Corporation Enhanced security for accessing virtual memory
CN103164348B (zh) * 2013-02-28 2016-06-08 浙江大学 一种多系统下对实时操作系统所占用内存的保护方法
US9015400B2 (en) 2013-03-05 2015-04-21 Qualcomm Incorporated Methods and systems for reducing the amount of time and computing resources that are required to perform a hardware table walk (HWTW)
US9330026B2 (en) * 2013-03-05 2016-05-03 Qualcomm Incorporated Method and apparatus for preventing unauthorized access to contents of a register under certain conditions when performing a hardware table walk (HWTW)
US10061940B2 (en) * 2013-07-09 2018-08-28 Andes Technology Corporation Secure protection processor and method including comparing an instruction security attribute of an instruction and a security attribute of an operational event
US10019260B2 (en) 2013-09-20 2018-07-10 Via Alliance Semiconductor Co., Ltd Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match
US9330011B2 (en) 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
US9755902B2 (en) 2014-05-20 2017-09-05 Via Alliance Semiconductor Co., Ltd. Dynamic system configuration based on cloud-collaborative experimentation
US9575778B2 (en) 2014-05-20 2017-02-21 Via Alliance Semiconductor Co., Ltd. Dynamically configurable system based on cloud-collaborative experimentation
US12248560B2 (en) * 2016-03-07 2025-03-11 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US12339979B2 (en) 2016-03-07 2025-06-24 Crowdstrike, Inc. Hypervisor-based interception of memory and register accesses
US20180081830A1 (en) * 2016-09-20 2018-03-22 Advanced Micro Devices, Inc. Hardware supervision of page tables
US10324857B2 (en) * 2017-01-26 2019-06-18 Intel Corporation Linear memory address transformation and management
US10592437B2 (en) 2017-07-31 2020-03-17 Hewlett Packard Enterprise Development Lp Memory matching key capability
US10831679B2 (en) 2018-03-23 2020-11-10 Intel Corporation Systems, methods, and apparatuses for defending against cross-privilege linear probes
US11983418B2 (en) * 2022-06-27 2024-05-14 Western Digital Technologies, Inc. Security indicator on a data storage device
KR20240044695A (ko) * 2022-09-29 2024-04-05 삼성전자주식회사 전자 장치 및 그 제어 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619671A (en) * 1993-04-19 1997-04-08 International Business Machines Corporation Method and apparatus for providing token controlled access to protected pages of memory
EP0768594A1 (de) * 1995-10-10 1997-04-16 Data General Corporation Rechnersystemsicherheit

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5627987A (en) 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US6813699B1 (en) * 1995-06-02 2004-11-02 Transmeta Corporation Speculative address translation for processor using segmentation and optional paging
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
JPH10177560A (ja) * 1996-12-17 1998-06-30 Ricoh Co Ltd 記憶装置
US6154818A (en) 1997-11-20 2000-11-28 Advanced Micro Devices, Inc. System and method of controlling access to privilege partitioned address space for a model specific register file

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619671A (en) * 1993-04-19 1997-04-08 International Business Machines Corporation Method and apparatus for providing token controlled access to protected pages of memory
EP0768594A1 (de) * 1995-10-10 1997-04-16 Data General Corporation Rechnersystemsicherheit

Also Published As

Publication number Publication date
CN1278244C (zh) 2006-10-04
GB2398902B (en) 2006-06-07
DE10297433T5 (de) 2004-11-11
GB0408766D0 (en) 2004-05-26
WO2003042839A2 (en) 2003-05-22
TWI233737B (en) 2005-06-01
GB2398902A (en) 2004-09-01
JP2005509946A (ja) 2005-04-14
CN1585932A (zh) 2005-02-23
WO2003042839A3 (en) 2003-12-18
US20030093686A1 (en) 2003-05-15
JP4295111B2 (ja) 2009-07-15
KR20050027082A (ko) 2005-03-17
KR100964000B1 (ko) 2010-06-15
US8051301B2 (en) 2011-11-01

Similar Documents

Publication Publication Date Title
DE10297433B4 (de) Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor
DE112005002405B4 (de) Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung
DE102006015106B4 (de) Bereitstellen eines erweiterten Speicherschutzes
DE112005002304B4 (de) Adreßumsetzung für Eingabe/Ausgabe- Vorrichtungen mittels hierarchischer Umsetzungstabellen
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE68924720T2 (de) Verfahren und Vorrichtung für Zugriffsrechtensteuerung.
DE3689209T2 (de) Direkte Ein-- und Ausgabe in einer virtuellen Speicheranordnung.
DE112005001798B4 (de) Verwalten von Prozessorressourcen während Architekturereignissen
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
DE3689287T2 (de) Datenverarbeitungsgerät.
DE112005002298B4 (de) Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen
DE60036960T2 (de) Unterscheidung von feinkorntranslation
DE69227774T2 (de) Speicherverwaltungsverfahren
DE69231611T2 (de) Verfahren zu grosser logischer Adressierung
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE10297494T5 (de) System und Verfahren zum Behandeln von Gerätezugriffen auf einen Speicher mit erhöhter Speicherzugriffssicherheit
DE19635204A1 (de) Ausnahme-Sicherheitsschaltung
DE102014014076A1 (de) Reduzierte Adressenkonvertierung mit mehreren Seitengrößen
DE10357804A1 (de) Neu-Beanspruchung vorhandener Felder in Adressübersetzungsdatenstrukturen zum Erweitern der Kontrolle über Speicherzugriffe
DE102008025476A1 (de) Übersetzung einer virtuellen Adresse in eine physikalische Adresse mit Unterstützung von Seitenattributen
DE10297687B4 (de) Prozessor mit Eingabe/Ausgabeerlaubnisbitstrukturen für in Bereiche aufgeteilte Sicherheit und Verfahren zum selektiven Ausführen einer Eingabe/Ausgabe-Instruktion
DE3131204A1 (de) Adressumrechnungs- und generatoranordnung
DE112016004476T5 (de) Technologien für einen nur-ausführungs-transaktionsarbeitsspeicher
DE102021131418A1 (de) Dedizierte registerdatei mit begrenzungsinformationen zum schützen vor speicherreferenzen ausserhalb der begrenzungen
DE10297686B4 (de) System und Verfahren zum Steuern der Zugriffe zwischen einzelnen Geräten innerhalb eines Computersystems

Legal Events

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

Ref document number: 10297433

Country of ref document: DE

Date of ref document: 20041111

Kind code of ref document: P

8364 No opposition during term of opposition
R071 Expiry of right