DE10297494T5 - System und Verfahren zum Behandeln von Gerätezugriffen auf einen Speicher mit erhöhter Speicherzugriffssicherheit - Google Patents

System und Verfahren zum Behandeln von Gerätezugriffen auf einen Speicher mit erhöhter Speicherzugriffssicherheit Download PDF

Info

Publication number
DE10297494T5
DE10297494T5 DE10297494T DE10297494T DE10297494T5 DE 10297494 T5 DE10297494 T5 DE 10297494T5 DE 10297494 T DE10297494 T DE 10297494T DE 10297494 T DE10297494 T DE 10297494T DE 10297494 T5 DE10297494 T5 DE 10297494T5
Authority
DE
Germany
Prior art keywords
memory
page
access
security
security attribute
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.)
Withdrawn
Application number
DE10297494T
Other languages
English (en)
Inventor
Geoffrey Austin Strongin
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.)
GlobalFoundries 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 DE10297494T5 publication Critical patent/DE10297494T5/de
Withdrawn 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/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Host-Brücke (404) mit:
einer Speichersteuerung (1304), die zur Verbindung mit einem Speicher (406), der in mehreren Speicherseiten organisierte Daten gespeichert hat, ausgebildet ist, wobei die Speichersteuerung (1304) angeschlossen ist, um Speicherzugriffssignale zu empfangen, und wobei die Speichersteuerung (1304) ausgebildet ist, um auf die Speicherzugriffssignale durch Zugreifen auf den Speicher (406) zu reagieren; und
einer Sicherheitsprüfeinheit (418), die angeschlossen ist, um die Speicherzugriffssignale zu empfangen, wobei die Speicherzugriffssignale eine physikalische Adresse in einer Zielspeicherseite enthalten, und wobei die Sicherheitsprüfeinheit (418) ausgebildet ist, die physikalische Adresse zu verwenden, um auf mindestens eine Sicherheitsattributdatenstruktur, die in dem Speicher (406) angeordnet ist, zuzugreifen, um ein Sicherheitsattribut der Zielspeicherseite zu erhalten, und wobei Sicherheitsprüfeinheit (418) ausgebildet ist, die Speicherzugriffssignale für die Speichersteuerung (1304) in Abhängigkeit des Sicherheitsattributs der Zielspeicherseite bereit zu stellen.

Description

  • TECHNISCHES GEBIET
  • Diese Erfindung betrifft im Allgemeinen Speicherverwaltungssysteme und Verfahren und betrifft insbesondere Speicherverwaltungssysteme und Verfahren, die Schutz für in einem Speicher gespeicherte 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 Diskettenlaufwerkseinheit) 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 wird 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 80x86 (x86) 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 x86-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 physikalischen Adresse der x86-Prozessorarchitektur. Es ist ein Adressenüberführungsmechanismus 100 in einem x86-Prozessor eingerichtet und beinhaltet eine lineare Adresse 102, die in dem x86-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 sind in seitenunterteilte Speicherdatenstrukturen eingeteilt, die von der Betriebssystemsoftware (d. h. einem Betriebssystem) erzeugt und verwaltet 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 x86-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 Seitentabellebasisadresse 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 x86-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 200 aus 2 und das Seitentabelleneintragsformat 300 aus 3 ein Anwender/übergeordnete Ebene- (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 "Überwachungs- bzw. übergeordneten" Ebene des Betriebssystems. Die übergeordnete Ebene des Betriebssystems entspricht einer momentanen Privilegebene 0 (CPL0) von Softwareprogrammen und Routinen, die von dem x86-Prozessor ausgeführt werden. U/S > 0 (d. h., U/S = 1, 2 oder 3) wird verwendet, um Anwenderspeicherseiten zu bezeichnen und entspricht einer "Anwender-" Ebene des Betriebssystems.
  • 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 UNDverknü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.
  • Bedauerlicherweise sind die zuvor beschriebenen Speicherschutzmechanismen der x86-Prozessorarchitektur nicht ausreichend, um in dem Speicher gespeicherte Daten zu schützen. Beispielsweise kann ein Softwareprogramm oder eine Routine, die auf der übergeordneten Ebene (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.
  • Die Schutzmechanismen der x86-Prozessarchitektur sind ebenso ungeeignet, um falsche oder fehlerhafte Zugriffe auf den Speicher durch Hardwaregeräte zu verhindern, die funktionsmäßig mit dem Speicher gekoppelt sind. Es ist zwar richtig, dass Bereiche des Speichers, die als "nur lesbar" bezeichnet sind, nicht durch Schreibzugriffe, die von den Hardwaregeräten initiiert werden, modifiziert werden können (ohne die Attribute jener Bereiche des Speichers, die zuerst geändert werden, wie dies zuvor beschrieben ist). Es ist auch richtig, dass Softwareprogramme oder Routinen (z. B. Gerätetreiber), die den Datentransfer zwischen Hardwaregeräten und dem Speicher handhaben, typischerweise auf Anwenderebene operieren (beispielsweise CPL3) und keinen Zugriff auf Bereiche des Speichers besitzen, die als übergeordnete Ebene gekennzeichnet sind (U/S = 0). Die Schutzmechanismen der x86-Prozessarchitektur decken jedoch lediglich Gerätezugriffe auf den Speicher ab, die als Ergebnis einer Instruktionsabarbeitung ausgeführt werden (d. h. programmierte Eingabe/Ausgabe). Ein Gerätetreiber kann ein Hardwaregerät mit einer Busbestimmungsfunktion oder einer DMA-Fähigkeit programmieren, um Daten in dem Gerät in einen beliebigen Bereich des Speichers zu übertragen, auf den von dem Hardwaregerät zugegriffen werden kann. Beispielsweise ist es relativ einfach, eine Diskettenlaufwerkssteuerung zu programmieren, um Daten von dem Diskettenlaufwerk direkt in einen Bereich des Speichers zu übertragen, der zur Speicherung des Betriebssystems verwendet wird.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • Es wird eine Hauptrechner- bzw. Hostbrücke beschrieben, die eine Speichersteuerung und eine Sicherheitsprüfeinheit aufweist. Die Speichersteuerung ist ausgebildet, mit einem Speicher verbunden zu werden, der dann in mehreren Speicherseiten angeordnete Daten enthält. Die Speichersteuerung empfängt Speicherzugriffssignale (beispielsweise während eines Speicherzugriffs) und reagiert auf die Speicherzugriffssignale durch Zugriff auf den Speicher. Die Sicherheitsprüfeinheit empfängt die Speicherzugriffssignale, wobei die Speicherzugriffssignale eine physikalische Adresse für eine Zielspeicherseite enthalten. Die Sicherheitsprüfeinheit verwendet die physikalische Adresse, um auf eine oder mehrere Sicherheitsattributdatenstrukturen zuzugreifen, die in dem Speicher angeordnet sind, um ein Sicherheitsattribut der Zielspeicherseite zu erhalten. Die Sicherheitsprüfeinheit leitet die Speicherzugriffssignale der Speichersteuerung in Abhängigkeit des Sicherheitsattributs der Zielspeicherseite zu.
  • Die eine oder mehreren Sicherheitsattributdatenstrukturen können ein Sicherheitsattributtabellenverzeichnis und eine oder mehrere Sicherheitsattributstabellen enthalten. Das Sicherheitsattributtabellenverzeichnis kann mehrere Einträge aufweisen. Jeder Eintrag des Sicherheitsattributstabellenverzeichnisses kann ein Anwesenheitsbit und ein Sicherheitsattributtabellenadressenfeld enthalten. Das Anwesenheitsbit kann kennzeichnen, ob eine Sicherheitsattributstabelle entsprechend dem Sicherheitsattributstabelleneintrag in dem Speicher vorhanden ist oder nicht. Das Sicherheitsattributsbasisadressenfeld kann für eine Basisadresse der Sicherheitsattributstabelle entsprechend dem Sicherheitsattributstabellenverzeichniseintrag reserviert sein. Die eine oder mehrere Sicherheitsattributstabellen können mehrere Einträge enthalten. Jeder Eintrag der einen oder mehreren Sicherheitsattributstabellen kann ein Sicherheitsseiten-(SP) Bit enthalten, das anzeigt, ob eine entsprechende Speicherseite eine sichere Seite ist oder nicht.
  • Die Speicherzugriffssignale können mittels einer Gerätehardwareeinheit erzeugt werden, die mit der Hostbrücke gekoppelt ist. Das Sicherheitsattribut der Zielspeicherseite kann ein Sicherheitsseiten-(SP) Bit enthalten, das anzeigt, ob die Zielspeicherseite eine sichere Seite ist oder nicht. Wenn das Sicherheitsseiten-(SP) Bit anzeigt, dass die Zielspeicherseite keine sichere Seite ist, kann die Sicherheitsprüfeinheit die Speicherzugriffssignale zu der Speichersteuerung zuführen. Wenn das Sicherheitsseiten-(SP) Bit anzeigt, dass die Zielspeicherseite eine sichere Seite ist, kann der Speicherzugriff unautorisiert sind und die Sicherheitsprüfeinheit liefert die Speicherzugriffssignale nicht zu der Speichersteuerung.
  • Die Speicherzugriffssignale können eine Speicherzugriffsart kennzeichnen. Beispielsweise kann die Speicherzugriffsart ein Lesezugriff oder ein Schreibzugriff sein. Wenn das Sicherheitsseiten-(SP) Bit anzeigt, dass die Zielspeicherseite eine sichere Seite ist und die Speicherzugriffssignale anzeigen, dass die Speicherzugriffsart ein Lesezugriff ist, so kann der Speicherzugriff ein unautorisierter Lesezugriff sein. In dieser Situation kann die Sicherheitsprüfeinheit auf den unautorisierten Lesezugriff reagieren, indem sie ungültige oder falsche Lesedaten bereitstellt. Die Sicherheitsprüfeinheit kann ferner auf den unautorisierten Lesezugriff reagieren, indem der unautorisierte Lesezugriff beendet wird.
  • Wenn das Sicherheitsseiten-(SP) Bit anzeigt, dass die Zielspeicherseite eine sichere Seite ist und die Speicherzugriffssignale anzeigen, dass die Speicherzugriffsart ein Schreibzugriff ist, so kann der Speicherzugriff ein unautorisierter Schreibzugriff sein. Die Sicherheitsprüfeinheit kann auf den unautorisierten Schreibzugriff reagieren, indem die in den Speicherzugriffssignalen enthaltenen Schreibdaten verworfen werden. Die Sicherheitsprüfeinheit kann ferner auf den unautorisierten Schreibzugriff reagieren, indem der unautorisierte Schreibzugriff abgebrochen wird.
  • Es wird ein Computersystem beschrieben mit einem Speicher, der in mehreren Speicherseiten angeordnete Daten enthält, einer Einrichtung, die mit dem Speicher funktionsmäßig verbunden und so ausgebildet ist, um Speicherzugriffssignale zu erzeugen; ferner enthält das System die zuvor beschriebene Hostbrücke. Das Computersystem kann beispielsweise eine zentrale Recheneinheit (CPU) mit einer Speicherverwaltungseinheit (MMU), die funktionsmäßig mit dem Speicher verbunden und ausgebildet ist, den Speicher zu verwalten, aufweisen. Die Speicherverwaltungseinheit (MMU) kann den Speicher so verwalten, dass der Speicher die Daten so speichert, dass sie in den mehreren Speicherseiten angeordnet sind.
  • Es wird ferner ein Verfahren offenbart, um eine Zugriffssicherheit für einen Speicher bereitzustellen, der verwendet wird, um Daten in mehreren Speicherseiten zu speichern. Das Verfahren umfasst das Empfangen von Speicherzugriffssignalen, wobei die Speicherzugriffssignale eine physikalische Adresse innerhalb einer Zielspeicherseite enthalten. Die physikalische Adresse wird verwendet, um auf eine oder mehrere Sicherheitsattributsdatenstrukturen, die in dem Speicher angeordnet sind, zuzugreifen, um ein Sicherheitsattribut für die Zielspeicherseite zu erhalten. Es wird auf den Speicher unter Anwendung der Speicherzugriffssignale in Abhängigkeit des Sicherheitsattributs der Zielspeicherseite zugegriffen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung kann mit Bezug zu der folgenden Beschreibung in Verbindung mit den begleitenden Zeichnungen verstanden werden, wobei gleiche Bezugszeichen ähnliche Elemente bezeichnen und wobei:
  • 1 ein Diagramm eines gut bekannten Adressenumwandlungsmechanismus von einer linearen zu einer physikalischen Adresse der x86-Prozessorarchitektur ist;
  • 2 eine Ansicht eines Seitenverzeichniseintragsformats der x86-Prozessorarchitektur ist;
  • 3 eine Ansicht eines Seitentabelleneintragsformats der x-86-Prozessorarchitektur ist;
  • 4 eine Ansicht einer Ausführungsform eines Computersystem mit einer CPU und einer Systems- oder "Host"-Brücke, wobei die CPU eine CPU-Sicherheitsprüfeinheit (SCU) aufweist, und wobei die Host-Brücke eine Host-Brücken-SCU aufweist;
  • 5 eine Ansicht ist, die die Beziehungen 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 und wobei die Seitenbildungseinheit die CPU SCU aufweist;
  • 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 Sicherheitsattributtabelle (SAT) einer ausgewählten Speicherseite, um zusätzliche Sicherheitsinformationen der ausgewählten Speicherseite zu erhalten ist;
  • 10 eine Ansicht einer Ausführungsform eines SAT-Ersatzregisters ist;
  • 11 ein Diagramm einer Ausführungsform eines SAT-Verzeichniseintragsformats ist;
  • 12 eine Ansicht einer Ausführungsform eines SAT-Eintragsformats ist;
  • 13 eine Ansicht einer Ausführungsform der Host-Brücke aus 4 ist, wobei die Host-Brücke die Host-Brücken-SCU aufweist;
  • 14 eine Ansicht einer Ausführungsform der Host-Brücken-SCU aus 13 ist;
  • 15 ein Flussdiagramm einer Ausführungsform eines ersten Verfahrens zum Bereitstellen einer Zugriffssicherheit für einen Speicher ist, der zur Speicherung von Daten verwendet wird, die in mehreren Speicherseiten angeordnet sind; und
  • 16 ein Flussdiagramm einer Ausführungsform eines zweiten Verfahrens ist, um eine Zugriffssicherheit für einen Speicher bereitzustellen, der zur Speicherung von Daten verwendet wird, die in mehreren Speicherseiten angeordnet sind.
  • Obwohl die Erfindung diversen Modifizierungen und alternativen Formen unterliegen kann, sind spezielle Ausführungsformen beispielhaft in den Zeichnungen gezeigt und sind hierin detailliert beschrieben. Es sollte jedoch selbstverständlich sein, dass die Beschreibung der speziellen Ausführungsformen nicht beabsichtigen, die Erfindung auf die speziellen offenbarten Formen einzuschränken, sondern es ist vielmehr beabsichtigt, alle Modifizierungen, Äquivalente und Alternativen, die innerhalb des Grundgedankens und Schutzbereichs der Erfindung liegen, wie sie in den angefügten Patentansprüchen definiert sind, abzudecken.
  • ARTEN ZUM AUSFÜHREN DER ERFINDUNG
  • Es werden nun anschauliche Ausführungsformen der Erfindung beschrieben. Im Interesse der Einfachheit werden nicht alle Merkmale einer tatsächlichen Implementierung in dieser Beschreibung dargelegt. Es ist jedoch selbstverständlich, dass bei der Entwicklung derartiger tatsächlicher Ausführungsformen zahlreiche implementationsspezifische Entscheidungen getroffen werden müssen, um die speziellen Ziele des Entwicklers zu erreichen, etwa die Verträglichkeit mit systembezogenen und geschäftsbezogenen Rahmenbedingungen, die für die einzelnen Implementierungen unterschiedlich sein können. Ferner ist anzumerken, dass der Entwicklungsaufwand komplex und zeitraubend sein kann, aber dennoch eine Routinemaßnahme für den Fachmann ist, sobald er im Besitz der vorliegenden Offenbarung ist.
  • 4 ist eine Ansicht einer Ausführungsform eines Computersystem 400 mit einer CPU 402, einer System- oder "Host"-Brücke 404, einem Speicher 406, einem ersten Gerätebus 408 (beispielsweise einem peripheren Komponentenverbindungs- 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 Host-Brücke 404 ist mit der CPU 402, dem Speicher 406 und dem Gerätebus 408 verbunden. Die Host-Brücke 404 übersetzt Signale zwischen der CPU 402 und dem Gerätebus 408 und verbindet funktionsmäßig den Speicher 406 mit der CPU 402 und dem Gerätebus 408. Die Gerätebusbrücke 410 ist zwischen den Gerätebus 408 und den Gerätebus 412 geschaltet und übersetzt Signale zwischen dem Gerätebus 408 und dem Gerätebus 412. In der Ausführungsform aus 4 sind die Gerätehardwareeinheiten 414a und 414b mit dem Gerätebus 408 und die Gerätehardwareeinheiten 414c und 414d mit dem Gerätebus 412 verbunden. Eine oder mehrere der Hardwaregeräteeinheiten 414a bis 414d können beispielsweise Speichereinrichtungen (z. B. Festplattenlaufwerke, Diskettenlaufwerke und CD-ROM-Laufwerke), Kommunikationseinrichtungen (z. B. Modems und Netzwerkadapter), oder Eingabe/Ausgabe-Einrichtungen (z. B. Videogeräte, Audiogeräte und Drucker) sein.
  • In der Ausführungsform aus 4 umfasst die CPU 402 eine CPU-Sicherheitsprüfeinheit (SCU) 416 und eine Host-Brücke 404 mit einer Host-Brücken-SCU 418. Wie nachfolgend detailliert beschrieben ist, schützt die CPU SCU 416 den Speicher 406 vor unautorisierten Zugriffen, die von der CPU 402 erzeugt werden (d. h. "softwareinitiierte Zugriffe"), und die Host-Brücken-SCU 418 schützt den Speicher 406 vor unautorisierten Zugriffen, die von den Gerätehardwareeinheiten 414a bis 414d hervorgerufen werden (d. h. "hardwareinitiierte Zugriffe"). Anzumerken ist, dass in anderen Ausführungsformen die Host-Brücke 404 ein Teil der CPU 402 sein kann, wie dies in 4 angedeutet ist.
  • 5 ist eine Ansicht, die die Beziehungen zwischen den diversen Hardware- und Softwarekomponenten des Computersystems 400 auf 4 darstellt. In der Ausführungsform aus 5 sind mehrere Anwendungsprogramme 500, ein Betriebssystem 502, ein Sicherheitskernel 504 und Gerätetreiber 506a bis 506d in dem Speicher 406 abgelegt. Die Anwendungsprogramme 500, das Betriebssystem 502, der Sicherheitskernel 504 und die Gerätetreiber 506a bis 506d enthalten Instruktionen, die von der CPU 402 abgearbeitet werden. Das Betriebssystem 502 stellt eine Anwenderschnittstelle und eine Software"plattform" bereit, auf der die Anwendungsprogramme 500 laufen. Das Betriebssystem 502 kann ferner beispielsweise grundlegende Hilfsfunktionen einschließlich einer Dateisystemverwaltung, der Prozessablaufsverwaltung und der Eingabe/Ausgabe (I/O) Steuerung bereitstellen.
  • Das Betriebssystem 502 kann ferner grundlegende Sicherheitsfunktionen bereitstellen. Beispielsweise kann die CPU 402 (4) ein x86-Prozessor sein, der die Anweisungen des x86-Instruktionssatzes ausführt. In dieser Situation kann die CPU 402 spezialisierte Hardwareelemente enthalten, um sowohl eventuelle Speichereigenschaften und Speicherschutzeigenschaften in dem geschützten Modus bereitzustellen, wie dies zuvor beschrieben ist. Das Betriebssystem 502 kann beispielsweise aus der Windows-Familie von Betriebssystemen (Microsoft Corp. Redmond, WA) sein, die die CPU 402 in dem geschützten Modus betreiben, und die die spezialisierten Hardwareelemente der CPU 402 benutzen, um sowohl einen virtuellen Speicher als auch einen Speicherschutz in dem geschützten Modus bereitzustellen.
  • Wie nachfolgend detaillierter beschrieben ist, liefert der Sicherheitskernel 504 zusätzliche Sicherheitsfunktionen, die über die von dem Betriebssystem 502 bereitgestellten Sicherheitsfunktionen hinausgehen, um die in dem Speicher 406 gespeicherten Daten vor einem unautorisierten Zugriff zu schützen. In der Ausführungsform aus 5 sind die Gerätetreiber 506a bis 506d funktionsmäßig den entsprechenden Hardwaregeräteeinheiten 414a bis 414d zugeordnet und mit diesen funktionsmäßig verbunden. Die Gerätehardwareeinheiten 414a und 414d sind "sichere" Geräte und die entsprechenden Gerätetreiber 506a und 506d sind "sichere" Gerätetreiber. Der Sicherheitskernel 504 ist zwischen dem Betriebssystem 502 und den sicheren Gerätetreibern 506a und 506d angeordnet und überwacht alle Zugriffe durch die Anwendungsprogramme 500 und das Betriebsystem 502 auf die sicheren Gerätetreiber 506a und 506d und die entsprechenden sicheren Geräte 414a und 414d. Der Sicherheitskernel 504 verhindert ferner unautorisierte Zugriffe auf die sicheren Gerätetreiber 506a und 506d und die entsprechenden sicheren Geräte 414a und 414d durch die Anwendungsprogramme 500 und das Betriebssystem 502.
  • Wie in 5 gezeigt ist, ist der Sicherheitskernel 504 mit der CPU SCU 416 und der Host-Brücken-SCU 418 (z. B. über einen oder mehrere Gerätetreiber) verbunden. Wie nachfolgend detailliert beschrieben ist, steuern die CPU SCU 416 und die Host-Brücken-SCU 418 die Zugriffe auf den Speicher 406. Die CPU SCU 416 überwacht alle softwareinitiierten Zugriffe auf den Speicher 406 und die Host-Brücken-SCU 418 überwacht alle hardwareinitiierten Zugriffe auf den Speicher 406. Nach der Konfigurierung durch den Sicherheitskernel 504 erlauben die CPU SCU 416 und die Host-Brücken SCU 418 lediglich autorisierte Zugriffe auf den Speicher 406.
  • In der Ausführungsform aus 5 sind die Gerätetreiber 506b und 506c "nicht sichere" Gerätetreiber und die entsprechenden Gerätehardwareeinheiten 414b und 414c sind "nicht sichere" Gerätehardwareeinheiten. Die Gerätetreiber 506 und 506c und die entsprechenden Gerätehardwareeinheiten 414b und 414c können beispielsweise "vererbte" Gerätetreiber und Gerätehardwareeinheiten sein.
  • Anzumerken 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 Computersystem 400 aus 4. In der Ausführungsform aus 6 umfasst die CPU 402 eine Ausführungseinheit 600, eine Speicherverwaltungseinheit (MMU) 602, eine Cache-Einheit bzw. Rechnerspeichereinheit 604, eine Busschnittstelleneinheit (BIU) 606, einen Satz an Steuerregistern 608 und einen Satz an Sicherheitsausführungsmodus- (SEM) Registern 610. Die CPU SCU 416 ist in der MMU 602 enthalten. Wie nachfolgend detaillierter beschrieben ist, wird der Satz aus SEM-Register 610 verwendet, um einen Sicherheitsausführungsmodus (SEM) in dem Computersystem 400 aus 4 einzurichten, und die Funktion der CPU SCU 416 und der Host-Brücken 418 wird durch den Inhalt des Satzes der SEM-Register 610 gesteuert. Auf die SEM-Register 610 wird durch den 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 x86-Prozessor ist, der in dem geschützten x86-Modus arbeitet, (ii) die Seiteneinteilung des Speichers freigegeben ist und (iii) der Inhalt der SEM-Register 610 den SEM-Betrieb spezifizieren.
  • Im Allgemeinen regelt der Inhalt des Satzes an Steuerregistern 608 den Betrieb der CPU 402. Daher regelt der Inhalt des Satzes der Steuerregister 608 den Betrieb der Ausführungseinheit 600, der MMU 602, der Rechnerspeichereinheit 604 und/oder der BIU 606. Der Satz aus Steuerregistern 608 kann beispielsweise die mehreren Steuerregister der x86-Prozessorarchitektur enthalten.
  • Die Ausführungseinheit 600 der CPU 402 holt Anweisungen (beispielsweise x86-Anweisungen) und Daten ab, führt die abgeholten Anweisungen aus und erzeugt Signale (z. B. Adress-, Daten- und Steuersignale) während der Ausführung der Instruktionen. Die Ausführungseinheit 600 ist mit der Rechnerspeichereinheit 604 verbunden und kann Anweisungen von dem Speicher 406 (4) über die Rechnerspeichereinheit 604 und die BIU 606 empfangen.
  • Der Speicher 406 (4) des Computersystems 400 enthält mehrere Speicherplätze, die jeweils eine einzigartige physikalische Adresse besitzen. Beim Betrieb im geschützten Modus, wobei die Seitenbildung freigegeben ist, ist ein Adressraum der CPU 402 in mehrere Blöcke unterteilt, die als Seitenrahmen oder "Seiten" bezeichnet werden. Wie zuvor beschrieben ist, werden lediglich Daten, die einem Bereich der Seiten entsprechen, in dem Speicher 406 zu einem gegebenen Zeitpunkt gespeichert. In der Ausführungsform aus 6 repräsentieren Adressensignale, die von der Ausführungseinheit 600 während der Abarbeitung der Instruktionen 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 Rechnerspeichereinheit 604. Die Rechnerspeichereinheit 604 ist eine relativ kleine Speichereinheit, die zur Speicherung von Instruktionen und Daten verwendet wird, die kurz zuvor von der Ausführungseinheit 600 abgerufen wurden. Die BIU 606 ist zwischen der Rechnerspeichereinheit 604 und der Host-Brücke 404 angeschlossen und wird verwendet, Anweisungen und Daten, die nicht in der Rechnerspeichereinheit 604 vorhanden sind, von dem Speicher 406 über die Host-Brücke 404 abzurufen.
  • 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 und eine Auswahllogik 704 zum Auswählen zwischen Ausgängen der Segmentierungseinheit 700 und der Seitenbildungseinheit 702, um eine physikalische Adresse zu erzeugen. Wie in 7 gezeigt ist, empfängt die Segmentierungseinheit 700 eine segmentierte Adresse von der Ausführungseinheit 600 und wendet einen gut bekannten Übersetzungsmechanismus von der segmentierten zur linearen Adresse der x86-Prozessorarchitektur an, um eine entsprechende lineare Adresse an einem Ausgang zu erzeugen. Wie in 7 dargestellt ist, empfängt bei Freigabe durch ein "Seitenbildungs"-Signal die Seitenbildungseinheit 702 die linearen Adressen, die von der Segmentierungseinheit 700 erzeugt wurden, und erzeugt entsprechende physikalische Adressen an einem Ausgang. Das Seitenbildungssignal kann das Seitenbildungsflag- (PG) Bit in einem Steuerregister 0 (CR0) der x86-Prozessorarchitektur des Satzes der Steuerregister 608 (6) wiedergeben. Wenn das Seitenbildungssignal nicht bestätigt wird, wird die Speichereinteilung in Seiten nicht freigegeben und die Auswahllogik 704 erzeugt die lineare Adresse, die von der Segmentierungseinheit 700 empfangen wird, als die physikalische Adresse.
  • Wenn das Seitenbildungssignal erkannt wird, wird die Seiteneinteilung des Speichers freigegeben 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 linearer Adresse zur physikalischen Adresse der x86-Prozessorarchitektur (1) angewendet wird. Wie zuvor beschrieben ist, werden während des Übersetzungsvorganges von der linearen zur physikalischen 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 logische Kombinierung der U/S- und R/W-Bits anzeigt, dass der Zugriff auf den Seitenrahmen autorisiert ist, erzeugt die Seitenbildungseinheit 702 die physikalische Adresse, die sich aus dem Übersetzungsvorgang von der linearen in die physikalische Adresse ergeben hat. 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 leitet die physikalische Adresse der Rechnerspeichereinheit 604 zu.
  • Wenn andererseits die logische Verknüpfung der U/S- und R/W-Bits anzeigt, dass der Zugriff auf den Seitenrahmen 108 nicht autorisiert ist, erzeugt die Seitenbildungseinheit 702 keine physikalische Adresse während des Übersetzungsvorgangs von linearer in physikalische Adresse. Stattdessen erkennt die Seitenbildungseinheit 702 ein Seitenfehlersignal und die MMU 602 leitete das Seitenfehlersignal an die Ausführungseinheit 600 weiter. In der x86-Prozessorarchitektur kann ein Seitenfehlersignal in einigen Fällen eine Schutzverletzung kennzeichnen. In Reaktion auf das Seitenfehlersignal kann die Ausführungseinheit 600 eine Ausnahmehandhabungsroutine ausführen und kann schließlich die Ausführung eines der Anwendungsprogramme 500 (5) anhalten, das gerade läuft, wenn das Seitenfehlersignal erkannt wurde.
  • In der Ausführungsform aus 7 ist die CPU SCU 416 in der Seitenbildungseinheit 702 der MMU 602 angeordnet. Die Seitenbildungseinheit 702 kann auch Übersetzungsnebenpuffer (TLB) aufweisen, um eine relativ geringe Anzahl jüngst bestimmter Übersetzungen von linearer in physikalische Adressen zu speichern.
  • 8 ist eine Ansicht einer Ausführungsform der CPU SCU 416 aus 7. In der Ausführungsform aus 8 enthält die CPU SCU 416 eine Sicherheitsprüflogik 800, die mit dem Satz aus SEM-Registern 610 (6) verbunden ist, und einen Sicherheitsattributstabellen-(SAT) Eintragspuffer 802. Wie nachfolgend beschrieben ist, gehören zu den SAT-Einträgen zusätzliche Sicherheitsinformationen über die U/S- und R/W-Bits der Seitenverzeichniseinträge und Seitentabelleneinträge, die den Speicherseiten entsprechen. Die Sicherheitsprüflogik 800 verwendet die zusätzliche Sicherheitsinformation, die in einem gegebenen SAT-Eintrag enthalten ist, um unautorisierte softwareinitiierte Zugriffe auf die entsprechende Speicherseite zu verhindern. Der SAT-Eintragspuffer 802 wird verwendet, um eine relativ geringe Anzahl von SAT-Einträgen von Speicherseiten zu speichern, auf die kürzlich zugegriffen wurde.
  • Wie zuvor beschrieben ist, wird der Satz aus SEM-Registern 610 verwendet, um einen Sicherheitsausführungsmodus (SEM) in dem Computersystem 400 aus 4 einzurichten. Der Inhalt des Satzes aus SEM-Registern 610 regelt 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.
  • Es werden nun die 9 bis 11 verwendet, um zu beschreiben, wie die zusätzliche Sicherheitsinformation von Speicherseiten, die unter Anwendung des Adressenübersetzungsmechanismus 100 aus 1 ausgewählt wird, in dem Computersystem 400 aus 4 erhalten wird. 9 ist eine Ansicht einer Ausführungsform eines Mechanismus 900 zum Zugreifen auf einen SAT-Eintrag einer ausgewählten Speicherseite, um eine zusätzliche Sicherheitsinformation der ausgewählten Speicherseite zu erhalten. Der Mechanismus 900 aus 9 kann in der Sicherheitsprüflogik 800 aus 4 eingerichtet werden und kann implementiert werden, wenn das Computersystem 400 aus 4 im SEM betrieben wird. Der Mechanismus 900 enthält eine physikalische Adresse 902, die von dem Seitenbildungsmechanismus 702 (7) unter Anwendung des Adressenübersetzungsmechanismus 100 aus 1 erzeugt wurde, ein SAT-Verzeichnis 904, mehrere SAT's mit einer SAT 906 und ein SAT-Basisadressenregister 908 aus dem Satz aus SEM-Registern 610. Das SAT-Verzeichnis 104 und die mehreren SAT's mit der SAT 906 sind SEM-Datenstrukturen, die von dem Sicherheitskernel 504 erzeugt und bewahrt werden (5). Wie nachfolgend beschrieben ist, wird das SAT-Verzeichnis 104 (falls es vorhanden ist) und eine beliebige benötigte SAT in den Speicher 406 vor einem Zugriff kopiert.
  • Das SAT-Basisadressenregister 908 enthält ein Anwesenheits- (P) Bit, das die Anwesenheit einer zulässigen SAT-Verzeichnisadresse innerhalb des SAT-Basisadressenregister 908 anzeigt. 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 die SAT-Tabellen spezifizieren die Sicherheitsattribute von Speicherseiten. Wenn P = 0, ist die SAT-Verzeichnisbasisadresse nicht zulässig, es gibt keine SAT-Tabellen und Sicherheitsattribute der Speicherseite 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 Sicherheitsseiten(SP) Bit. Das SP-Bit zeigt an, ob alle Speicherseiten sichere Seiten sind oder nicht. Wenn beispielsweise SP = 0, sind unter Umständen nicht alle Speicherseiten sichere Seiten, und wenn SP = 1, sind alle Speicherseiten sichere Seiten.
  • Es sei nun wieder auf 9 verwiesen und angenommen, dass das P-Bit des SAT-Basisadressenregisters 908 eine "1" ist, so wird die physikalische Adresse 902, die von de Seitenbildungseinheit 702 (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 enthalten. Ein "oberer" Bereich der physikalischen Adresse 902, einschließlich der höchstrangigsten oder signifikantesten Bits der physikalischen Adresse 902, wird als ein Index für das SAT-Verzeichnis 904 verwendet. Der SAT-Verzeichniseintrag 910 wird aus dem SAT-Verzeichnis 904 unter Anwendung der SAT-Verzeichnisbasisadresse des SAT-Basisadressenregisters 908 und den oberen Bereich der physikalischen Adresse 902 ausgewählt.
  • 11 ist eine Ansicht einer Ausführungsform eines SAT-Verzeichniseintragsformats 1100. Entsprechend 11 enthält jeder SAT-Verzeichniseintrag ein Anwesenheits-(P) Bit, das die Anwesenheit einer gültigen SAT-Basisadresse in dem SAT-Verzeichniseintrag kennzeichnet. In der Ausführungsform aus 11 sind die höchstrangigsten (d. h. die signifikantesten) Bits jedes SAT-Verzeichniseintrags 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 ist 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 Laufwerk) in den Speicher 406 kopiert werden. Wenn P = 0, kann die Sicherheitsprüflogik 800 einen Seitenfehler einer Logik innerhalb der Seitenbildungseinheit 702 anzeigen und die MMU 602 kann das Seitenfehlersignal zu der Ausführungseinheit 600 (6) weiterleiten. In Reaktion auf das Seitenfehlersignal kann die Ausführungseinheit 600 eine Seitenfehlerbehandlungsroutine ausführen, die die erforderliche SAT aus der Speichereinrichtung prüft und die erforderliche SAT in dem Speicher 406 ablegt. Nachdem die benötigte SAT in dem Speicher 406 abgelegt ist, wird das P-Bit des entsprechenden SAT-Verzeichniseintrags "1" gesetzt und der Mechanismus 900 wird fortgesetzt.
  • Es sei nun auf 9 verwiesen; ein "mittlerer" Bereich der physikalischen Adresse 902 wird als ein Index für die SAT 906 verwendet. Der SAT-Eintrag 906 wird somit aus der SAT 906 unter Anwendung der SAT-Basisadresse des SAT-Verzeichniseintrags 910 und des mittleren Bereichs der physikalischen 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 Sicherheitsseiten-(SP) Bit. Das SP-Bit zeigt an, ob die ausgewählte Speicherseite eine sichere Seite ist oder nicht. Wenn beispielsweise SP = 0, ist die ausgewählte Speicherseite keine sichere Seite, und wenn SP = 1, ist die ausgewählte Speicherseite eine sichere Seite.
  • Die BIU 606 (6) ruft die benötigten SEM-Datenstruktureneinträge aus dem Speicher 406 ab und liefert die SEM-Datenstruktureinträge an die MMU 602 weiter. Es sei auf 8 verwiesen; die Sicherheitsprüflogik 800 empfängt die SEM-Datenstruktureinträge von der MMU 602 und der Seitenbildungseinheit 702 über den Kommunikationsbus. Wie zuvor beschrieben ist, wird der SAT-Eintragspuffer 802 verwendet, um ein relativ geringe Anzahl von SAT-Einträgen von Speicherseiten, auf die kürzlich zugegriffen wurde, 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 den Markierungsbereichen von physikalischen Adressen entsprechend den SAT-Einträgen, die in dem SAT-Eintragspuffer 802 abgelegt sind, vergleichen. Wenn der Markierungsbereich der physikalischen Adresse mit einem Markierungsbereich einer physikalischen Adresse übereinstimmt, die einen in dem SAT-Eintragspuffer 802 gespeicherten SAT-Eintrag entspricht, kann die Sicherheitsprüflogik 800 auf den SAT-Eintrag in dem SAT-Eintragspuffer 802 zugreifen, wodurch kein Bedarf mehr besteht, den Prozess aus 9 durchzufü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 löschen.
  • Wenn das Computersystem 400 aus 4 in dem SEM arbeitet, empfängt die Sicherheitsprüflogik 800 die aktuelle Privilegebene (CPL) der momentan ablaufenden Aufgabe (d. h. des momentan ausgeführten Instruktionssatzes) zusammen mit dem Seitenverzeichniseintrags-(PDE) U/S-Bit, dem PDE R/W-Bit, dem Seitentabelleneintrag (PTE) U/S-Bit und dem PTE R/W-Bit einer ausgewählten Speicherseite, in der eine physikalische Adresse liegt. Die Sicherheitsprüflogik 800 verwendet die obige Information zusammen mit dem SP-Bit 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 x86-Prozessor sein und kann ein Codierungssegments-(CS) Register aufweisen, das eines der 16 Bit-Segementregister der x86-Prozessorarchitektur ist. Jedes Segmentregister bestimmt einen 64k-Block des Speichers, der als ein Segment bezeichnet wird. In dem geschützten Modus mit freigegebener Seiteneinteilung wird das CS-Register mit einem Segmentselektor geladen, der ein ausführbares Segment des Speichers 406 kennzeichnet. Die höchstrangisten (d. h. die signifikantesten) Bits des Segmentselektors werden verwendet, um Informationen zu speichern, die ein Segment eines Speichers kennzeichnen, das eine nächste von der Ausführungseinheit 600 der CPU 402 (6) auszuführende Anweisung enthält. Ein Anweisungszeiger (IP) Register wird verwendet, um einen Offset bzw. Versatz in dem Segment, das von dem CS-Register bezeichnet wird, zu speichern. Das CS : IP-Paar bezeichnet somit eine segmentierte Adresse der nächsten Anweisung. Die zwei niedrigstrangigsten, d. h. wenigsten signifikanten Bits des CS-Registers werden verwendet, um einen Wert zu speichern, der eine aktuelle Privilegebene (CPL) einer momentan von der Ausführungseinheit 600 ausgeführte Aufgabe bezeichnet (d. h. die CPL der aktuellen Aufgabe).
  • Tabelle 1 unten zeigt beispielhafte Regeln für CPU-initiierte (d. h. softwareinitiierte) Speicherzugriffe, wenn das Computersystem 400 aus 4 in dem SEM arbeitet. Die CPU SCU 416 (4 bis 8) und der Sicherheitskernel 504 (5) arbeiten zusammen, um die Regeln aus Tabelle 1 zu implementieren, wenn das Computersystem 400 aus 4 in dem SEM arbeitet, um eine zusätzliche Sicherheit für in dem Speicher 406 bereit zu stellen, die über die von dem Betriebssystem 502 (5) bereitgestellte Sicherheit hinausgeht.
  • Tabelle 1
  • Beispielhafte Regeln für softwareinitiierte Speicherzugriffe, wenn das Computersystem 400 aus 4 in dem SEM betrieben wird.
  • Figure 00190001
  • Figure 00200001
  • Figure 00210001
  • In der obigen Tabelle 1 ist das SP-Bit der momentan auszuführenden Anweisung das SP-Bit des SAT-Eintrags, der der Speicherseite entspricht, die die momentan auszuführende Anweisung enthält. 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 ein "beliebig": der logische Wert kann eine "0" oder "1" sein.
  • Es sei wieder auf 8 verwiesen; die Sicherheitsprüflogik 800 der CPU SCU 416 erzeugt ein Seitenfehlersignal und ein "SEM-Sicherheitsausnahme-" Signal und liefert das Seitenfehlersignal und das SEM-Sicherheitsausnahmesignal zur einer Logik innerhalb der Seitenbildungseinheit 702. Wenn die Sicherheitsprüflogik 800 das Seitenfehlersignal erkennt, leitet die MMU 602 das Seitenfehlersignal zur Ausführungseinheit 600 (6) weiter. In Reaktion auf das Seitenfehlersignal kann die Ausführungseinheit 600 den gut bekannten Vektorisierungsmechanismus für die Interrupt-Diskriptortabelle (IDT) der x86-Prozessorarchitektur verwenden, um eine Seitenfehlerbehandlungsroutine abzurufen und 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 bei normalen Prozessorausnahmeroutinen, in denen der IDT-Vektorisierungsmechanismus der x86-Prozessorarchitektur verwendet wird, kann ein anderes Vektorisierungsverfahren zur Behandlung der SEM-Sicherheitsausnahmen verwendet werden. SEM-Sicherheitsausnahmen können durch zwei Register ausgelöst werden (beispielsweise modellspezifische Register oder MSR), ähnlich wie x86 "SYSENTER" und "SYSEXIT" Anweisungen funktionieren. Die beiden Register können "Sicherheitsausnahmeeingangspunkt"- Register sein und können eine Verzweigungszieladresse für die Abarbeitung der Instruktionen sein, wenn eine SEM-Sicherheitsaufnahme auftritt. Die Sicherheitsausnahmeeintrittspunktregister können das Codierungssegment (CS) definieren, dann den Anweisungszeiger- (IP oder die 64-Bitversion RIP), den Stapelsegment- (SS) und den Stapelzeiger- (SP der die 64-Bit-Version RSP) Inhalt definieren, der bei Einsprung in eine SEM- Sicherheitsausnahmebehandlung verwendet wird. Unter Softwaresteuerung kann die Ausführungseinheit 600 (6) die vorhergehenden SS-, SR/RSP-, EFLAGS-, CS- und IP/RIP- Werte auf einem neuen Stapel ablegen, um zu kennzeichnen, wo die Ausnahme auftrat. Zudem kann die Ausführungseinheit 600 einen Fehlercode auf dem Stapel ablegen. Anzumerken ist, dass ein normaler Rücksprung von der Interrupt-(IRET) Instruktion nicht verwendet werden kann, da die vorhergehenden SS- und SP/RSP-Werte immer gesichert werden, und ein Umschalten des Stapels wird immer erreicht, selbst wenn eine Änderung in dem CPL nicht auftritt. Folglich kann eine neue Anweisung definiert werden, um einen Rücksprung aus der SEM-Sicherheitsausnahmebehandlung zu bewerkstelligen.
  • 13 ist eine Ansicht einer Ausführungsform der Host-Brücke 404 aus 4. In der Ausführungsform aus 13 umfasst die Host-Brücke 404 eine Host-Schnittstelle 1300, eine Brückenlogik 1302, eine Host-Brücken SCU 418, eine Speichersteuerung 1304 und eine Gerätebusschnittstelle 1306. Die Host-Schnittstelle 1300 ist mit der CPU 402 verbunden und die Gerätebusschnittstelle ist mit dem Gerätebus 408 verbunden. Die Brückenlogik 1302 ist mit der Host-Schnittstelle 1300 und der Geräteschnittstelle 1306 verbunden. Die Speichersteuerung 1304 ist mit dem Speicher 406 verbunden und führt alle Zugriffe auf den Speicher 406 aus. Die Host-Brücken SCU 418 ist zwischen der Brückenlogik 1302 und der Speichersteuerung 1304 angeordnet. Wie zuvor beschrieben ist, steuert die Host-Brücken SCU 418 den Zugriff auf den Speicher 406 über die Gerätebusschnittstelle 1306. Die Host-Brücken SCU 418 überwacht alle Zugriffe auf den Speicher 406 über die Gerätebusschnittstelle 1306 und erlaubt lediglich autorisierte Zugriffe auf den Speicher 406.
  • 14 ist eine Ansicht einer Ausführungsform der Host-Brücken SCU 418 aus 13. In der Ausführungsform aus 14 umfasst die Host-Brücken SCU 418 eine Sicherheitsprüflogik 1400 , die mit einem Satz aus SEM-Registern 1402 verbunden ist, und einen SAT-Eintragspuffer 1404. Der Satz aus SEM-Registern 1402 regelt den Betrieb der Sicherheitsprüflogik 1400 und umfasst ein zweites SAT-Basisadressenregister 908 aus 9. Das zweite SAT-Basisadressenregister 908 aus dem Satz aus SEM-Registern 1402 kann ein adressierbares Register sein. Wenn der Sicherheitskernel 504 (5) den Inhalt des SAT-Basisadressenregisters 908 in dem Satz aus SEM-Registern 610 der CPU 402 modifiziert (beispielsweise während einer Kontextänderung), kann der Sicherheitskernel 504 den gleichen Wert in das zweite SAT-Basisadressenregister 908 in dem Satz aus SEM-Registern 1402 der Host-Brücken SCU 418 schreiben. In Reaktion auf Modifizierungen des zweiten SAT-Basisadressenregisters 908 kann die Sicherheitsprüflogik 1400 der Host-Brücken SCU 418 den SAT-Eintragspuffer 1404 löschen.
  • Die Sicherheitsprüflogik 1400 empfängt Speicherzugriffssignale von Speicherzugriffen, die durch die Hardwaregeräteeinheiten 414a bis 414d (4) initiiert werden, über die Gerätebusschnittstelle 1306 und die Brückenlogik 1302 (13). Die Speicherzugriffssignale enthalten physikalische Adressen von den Hardwaregeräteeinheiten 414a bis 414d, und zugeordnete Steuer- und/oder Datensignale. Die Sicherheitsprüflogik 1400 kann den Mechanismus 900 (9) enthalten, um die SAT-Einträge entsprechender Speicherseiten zu ermitteln, und kann den Mechanismus 900 implementieren, wenn das Computersystem 400 aus 4 in dem SEM arbeitet. Der SAT-Eintragspuffer 1404 ist ähnlich zu dem SAT-Eintragspuffer 802 der CPU SCU 416 (8), die zuvor beschrieben ist, und wird verwendet, um eine relativ geringe Anzahl von SAT-Einträgen von Speicherseiten zu speichern, auf die kürzlich zugegriffen wurde.
  • Wenn das Computersystem 400 aus 4 in dem SEM arbeitet, verwendet die Sicherheitsprüflogik 1400 aus 14 zusätzliche Sicherheitsinformationen eines SAT-Eintrags, der mit einer ausgewählten Speicherseite verknüpft ist, um zu bestimmen, ob ein gegebener hardwareinitiierter Speicherzugriff autorisiert ist. Wenn der vorliegende hardwareinitiierte Speicherzugriff autorisiert ist, liefert die Sicherheitsprüflogik 1400 die Speicherzugriffssignale (d. h. Adressensignale, die eine physikalische Adresse beinhalten und die dazugehörigen Steuer- und/oder Datensignale) des Speicherzugriffs zu der Speichersteuerung 1304. Die Speichersteuerung 1304 verwendet die physikalische Adresse und die zugeordneten Steuer- und/oder Datensignale, um auf den Speicher 406 zuzugreifen. Wenn der Zugriff auf den Speicher 406 ein Schreibzugriff ist, werden die von den Datensignalen transportierten Daten in den Speicher 406 geschrieben. Wenn der Zugriff auf den Speicher 406 ein Lesezugriff ist, liest die Speichersteuerung 1304 Daten aus dem Speicher 406 aus und liefert die gewonnenen ausgelesenen Daten an die Sicherheitsprüflogik 1400 weiter. Die Sicherheitsprüflogik 1400 leitet die ausgelesenen Daten zu der Brückenlogik 1302 weiter und die Brückenlogik 1302 liefert die Daten zu der Gerätebusschnittstelle 1306.
  • Wenn andererseits der vorliegende hardwareinitiierte Speicherzugriff nicht autorisiert ist, stellt die Sicherheitsprüflogik 1400 die physikalische Adresse und die zugeordneten Steuer- und/oder Datensignale aus den Zugriffen des Speichers 406 nicht für die Speichersteuerung 1304 bereit. Wenn der nicht autorisierte hardwareinitiierte Speicherzugriff ein Speicherschreibzugriff ist, kann die Sicherheitsprüflogik 1400 das Ende des Schreibzugriffes anzeigen und die Schreibdaten verwerten, wodurch der Speicher 406 ungeäundert bleibt. Die Sicherheitsprüflogik 1400 kann ferner einen Aufzeichnungseintrag in einer Registrierung erzeugen (beispielweise ein oder mehrere Bits eines Statusregisters setzen oder zurücksetzen), um die Sicherheitszugriffsverletzung zu dokumentieren. Der Sicherheitskernel 504 kann periodisch auf die Aufzeichnung zugreifen, um derartige Aufzeichnungseinträge zu überprüfen. Wenn der nicht autorisierte hardwareinitiierte Speicherzugriff ein Speicherlesezugriff ist, kann die Sicherheitsprüflogik 1400 ein falsches Ergebnis (beispielsweise nur die Ziffern "F") an die Gerätebusschnittstelle 1306 über die Brückenlogik 1302 als die ausgelesenen Daten zurückgeben. Die Sicherheitsprüflogik 1400 kann ferner einen Aufzeichnungseintrag in der oben beschriebenen Weise erzeugen, um die Sicherheitszugriffsverletzung zu dokumentieren.
  • 15 ist ein Flussdiagramm einer Ausführungsform eines Verfahrens 1500 zum Bereitstellen einer Zugriffssicherheit für einen Speicher, der zur Speicherung von Daten verwendet wird, die in mehreren Speicherseiten angeordnet sind. Das Verfahren 1500 gibt die beispielhaften Regeln aus Tabelle 1 für CPU-initiierte (d. h. softwareinitiierte) Speicherzugriffe wieder, wenn das Computersystem 400 aus 4 in dem SEM betrieben wird. Das Verfahren 1500 kann in der MMU 602 (6 bis 7) eingerichtet sein. Während eines Schritts 1502 des Verfahrens 1500 wird eine während der Abarbeitung einer Anweisung erzeugte lineare Adresse zusammen mit einem Sicherheitsattribut der Anweisung (beispielsweise ein CPL einer Aufgabe, die die Anweisung enthält) empfangen. Die Anweisung liegt in einer Speicherseite. Während eines Schritts 1504 wird die lineare Adresse verwendet, um auf mindestens eine in Speicherseiten organisierte Datenstruktur, die in dem Speicher angeordnet ist (beispielsweise ein Seitenverzeichnis oder eine Seitentabelle) zuzugreifen, 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 Seitenverzeichniseintrages und ein U/S-Bit und ein R/W-Bit eines Seitentabelleneintrags enthalten.
  • Während eines Entscheidungsschritts 1506 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 1508 kombiniert, um eine physikalische Adresse in der ausgewählten Speicherseite zu erzeugen. Wenn der Zugriff nicht autorisiert ist, wird ein Fehlersignal (beispielsweise ein Seitenfehlersignal) während eines Schritts 1510 erzeugt.
  • Während eines Schritts 1512, der auf den Schritt 1508 folgt, wird auf mindestens eine Sicherheitsattributdatenstruktur, die in dem Speicher angeordnet ist (beispielsweise das SAT-Verzeichnis 904 aus 9 und eine SAT) zugegriffen, wobei die physikalische Adresse der ausgewählten Speicherseite verwendet wird, um ein zusätzliches Sicherheitsattribut der ersten Speicherseite und ein zusätzliches Sicherheitsattribut der ausgewählten Speicherseite zu erhalten. Das zusätzliche Sicherheitsattribut der ersten Speicherseite kann beispielsweise ein Sicherheitsseiten-(ISP) Bit enthalten, wie es zuvor beschrieben ist, wobei das SP-Bit anzeigt, ob die erste Speicherseite eine sichere Seite ist oder nicht. In ähnlicher Weise kann das zusätzliche Sicherheitsattribut der ausgewählten Speicherseite ein Sicherheitsseiten-(SP) Bit enthalten, wobei das SP-Bit anzeigt, ob die ausgewählte Speicherseite eine sichere Seite ist oder nicht.
  • Das Fehlersignal wird während eines Schritts 1514 in Abhängigkeit des Sicherheitsattributs der Anweisung, des zusätzlichen Sicherheitsattributs der ersten Speicherseite, der Sicherheitsattribute der ausgewählten Speicherseite und des zusätzlichen Sicherheitsattributs der ausgewählten Speicherseite erzeugt. Anzumerken ist, dass die Schritte 1512 und 1514 des Verfahrens 1500 in der CPU CSU 416 (4 bis 8) eingerichtet werden können.
  • Die folgende Tabelle 2 zeigt beispielhafte Regeln für Speicherseitenzugriffe, die von den Gerätehardwareeinheiten 414a bis 414d initiiert werden (d. h. hardwareinitiierte Speicherzugriffe), wenn das Computersystem 400 aus 4 in dem SEM betrieben wird. Derartige hardwareinitiierte Speicherzugriffe können von einer Bussteuerschaltung innerhalb der Gerätehardwareeinheiten 414a bis 414d initiiert werden, oder durch DMA-Geräte auf Anforderung der Gerätehardwareeinheiten 414a bis 414d. Die Sicherheitsprüflogik 1400 kann die Regeln aus Tabelle 2 einrichten, wenn das Computersystem aus 4 in dem SEM betrieben wird, um eine zusätzliche Sicherheit für in dem Speicher 406 gespeicherte Daten bereitzustellen, die über die von dem Betriebssystem 502 (5) bereitgestellte Sicherheit hinausgeht. In der folgenden Tabelle 2 ist die "Ziel"-Speicherseite die Speicherseite, innerhalb derer eine physikalische Adresse liegt, die von Speicherzugriffssignalen eines Speicherzugriffes transportiert wird.
  • Tabelle 2
  • Beispielhafte Regeln für hardwareinitiierte Speicherzugriffe, wenn das Computersystem 400 aus 4 in SEM arbeitet.
  • Figure 00260001
  • In der Tabelle 2 oben kann das SP-Bit der Zielspeicherseite durch die Host-Brücken SCU 418 erhalten werden, indem die physikalische Adresse des Speicherzugriffs und der zuvor beschriebenen Mechanismus 900 aus 9 zum Erhalten von SAT-Einträgen entsprechender Speicherseiten verwendet wird.
  • Wie in 2 angezeigt ist, wenn SP = 1 ist, wobei die Zielspeicherseite als eine sichere Seite bezeichnet wird, ist der Speicherzugriff nicht autorisiert. In dieser Situation liefert die Sicherheitsprüflogik 1400 (14) keine Speicherzugriffsignale an die Speichersteuerung. Ein Teil der Speicherzugriffssignale (beispielsweise die Steuersignale) kennzeichnen die Art des Speicherzugriffs, wobei die Speicherzugriffsart ein Lesezugriff oder ein Schreibzugriff ist. Wenn SP = 1 und die Speicherzugriffssignale an die Speicherzugriffsart als einen Lesezugriff kennzeichnen, ist der Speicherzugriff ein nicht autorisierter Lesezugriff und die Sicherheitslogik 1400 reagiert auf den unautorisierten Lesezugriff, indem nur "F" anstelle des tatsächlichen Speicherinhalts bereitgestellt werden (d. h. falsche Lesedaten). Die Sicherheitsprüflogik 1400 kann auch auf den unautorisierten Lesezugriff reagieren, indem der unautorisierte Lesezugriff in der oben beschriebenen Weise registriert wird.
  • Wenn SP = 1 und die Speicherzugriffssignale die Speicherzugriffsart als einen Schreibzugriff kennzeichnen, ist der Speicherzugriff ein unautorisierter Schreibzugriff. In dieser Situation reagiert die Sicherheitsprüflogik 1400 auf den unautorisierten Schreibzugriff durch Verwerten der Schreibdaten, die von den Speicherzugriffssignalen transportiert werden. Die Sicherheitsprüflogik 1400 kann ferner auf den unautorisierten Schreibzugriff durch Registrieren des unautorisierten Schreibzugriffs in der oben beschriebenen Weise reagieren
  • 16 ist ein Flussdiagramm einer Ausführungsform eines Verfahrens 1600 zum Bereitstellen einer Zugriffssicherheit für einen Speicher, der zum Speichern von Daten verwendet wird, die in mehreren Speicherseiten organisiert sind. Das Verfahren 1600 reflektiert die beispielhaften Regeln aus Tabelle 2 für hardwareinitiierte Speicherzugriffe, wenn das Computersystem 400 aus 4 in dem SEM betrieben wird. Das Verfahren 1600 kann in der Host-Brücke 404 (4 und 13 bis 14) eingerichtet sein. Während eines Schritts 1602 des Verfahrens 1600 werden Speicherzugriffssignale eines Speicherzugriffs empfangen, wobei die Speicherzugriffssignale eine physikalische Adresse in einer Zielspeicherseite enthalten. Wie zuvor beschrieben ist, können die Speicherzugriffssignale durch eine Gerätehardwareeinheit erzeugt werden. Die physikalische Adresse wird verwendet, um auf mindestens eine Sicherheitsattributsdatenstruktur zuzugreifen, die in dem Speicher angeordnet ist, um ein Sicherheitsattribut der Zielspeicherseite während eines Schritts 1604 zu erhalten. Die mindestens eine Sicherheitsattributsdatenstruktur kann beispielsweise ein SAT-Verzeichnis (beispielsweise das SAT-Verzeichnis 904 in 9) und mindestens eine SAT (beispielsweise die SAT 906 in 9) enthalten, und das zusätzliche Sicherheitsattribut der Zielspeicherseite kann ein Sicherheitsseiten- (SP) Bit enthalten, wie es zuvor beschrieben ist, das anzeigt, ob die Zielspeicherseite eine sichere Seite ist oder nicht. Während eines Schritts 1606 wird auf den Speicher unter Anwendung der Speicherzugriffssignale in Abhängigkeit des Sicherheitsattributs der Zielspeicherseite zugegriffen. Anzumerken ist, dass die Schritte 1602 und 1604 des Verfahrens 1600 in der Host-Brücken SCU 418 (4 und 13 bis 14) eingerichtet sein können.
  • Die speziellen zuvor offenbarten Ausführungsformen sind lediglich anschaulicher Natur, da die Erfindung in unterschiedlichen aber äquivalenten Weisen modifiziert und praktiziert werden kann, die dem Fachmann offensichtlich werden, wenn er in Besitz der Lehren hierin ist. Ferner sind keine Einschränkungen auf die Details des Aufbaus oder der Gestaltung, wie sie hierin gezeigt sind, beabsichtigt, sofern sie nicht in den nachfolgenden Patentansprüchen beschrieben sind. Es ist daher offensichtlich, dass die offenbarten speziellen Ausführungsformen geändert oder modifiziert werden können und dass alle derartigen Variationen als innerhalb des Grundgedankens und des Schutzbereichs der Erfindung liegend betrachtet werden. Daher ist der angestrebte Schutzbereich in den nachfolgenden Patentansprüchen festgelegt.
  • Zusammenfassung
  • Eine Host-Brücke umfasst eine Speichersteuerung und eine Sicherheitsprüfeinheit Die Speichersteuerung ist mit einem Speicher verbunden, der Daten enthält, die in mehreren Speicherseiten angeordnet sind. Die Speichersteuerung empfängt Speicherzugriffssignale und greift auf den Speicher Die Sicherheitsprüfeinheit empfängt die Speicherzugriffssignale, die eine physikalische Adresse in einer Zielspeicherseite enthalten. Die Sicherheitsprüfeinheit verwendet die physikalische Adresse, um auf eine oder mehrere Sicherheitsattributdatenstrukturen zuzugreifen, um ein Sicherheitsattribut der Zielspeicherseite zu erhalten. Die Sicherheitsprüfeinheit liefert die Speicherzugriffssignale zu der Speichersteuerung in Abhängigkeit von dem Sicherheitsattribut der Zielspeicherseite.
  • Figurenbeschreibung
  • 15
    • 1502 Empfangen der linearen Adresse und des Sicherheitsattributs der Anweisung
    • 1504 Verwenden der linearen Adresse, um auf die in Seiten eingeteilten Speicherdatenstrukturen zuzugreifen, um Sicherheitsattribute der ausgewählten Speicherseite zu erhalten.
    • 1506 Zugriff autorisiert?
    • 1510 Erzeugen des Fehlersignals
    • 1508 Erzeugen der physikalischen Adresse
    • 1512 Verwenden der physikalischen Adresse, um auf SEM-Datenstrukturen zuzugreifen, um ein zusätzliches Sicherheitsattribut der Instruktionsspeicherseite und der ausgewählten Speicherseite zu erhalten.
    • 1514 Erzeugen eines Fehlersignals in Abhängigkeit des Instruktionssicherheitsattributs, des zusätzlichen Sicherheitsattributs der Instruktionsspeicherseite, der Sicherheitsattribute der ausgewählten Speicherseite und des zusätzlichen Sicherheitsattributs der ausgewählten Speicherseite.
  • 16
    • 1602 Empfangen der Speicherzugriffssignale, die die physikalische Adresse in der Zielspeicherseite enthalten
    • 1604 Verwenden der physikalischen Adresse, um auf SEM-Datenstrukturen zuzugreifen, um ein Sicherheitsattribut der Zielspeicherseite zu erhalten
    • 1606 Zugreifen auf den Speicher unter Verwendung der Speicherzugriffssignale in Abhängigkeit des Sicherheitsattributs der Zielspeicherseite

Claims (10)

  1. Host-Brücke (404) mit: einer Speichersteuerung (1304), die zur Verbindung mit einem Speicher (406), der in mehreren Speicherseiten organisierte Daten gespeichert hat, ausgebildet ist, wobei die Speichersteuerung (1304) angeschlossen ist, um Speicherzugriffssignale zu empfangen, und wobei die Speichersteuerung (1304) ausgebildet ist, um auf die Speicherzugriffssignale durch Zugreifen auf den Speicher (406) zu reagieren; und einer Sicherheitsprüfeinheit (418), die angeschlossen ist, um die Speicherzugriffssignale zu empfangen, wobei die Speicherzugriffssignale eine physikalische Adresse in einer Zielspeicherseite enthalten, und wobei die Sicherheitsprüfeinheit (418) ausgebildet ist, die physikalische Adresse zu verwenden, um auf mindestens eine Sicherheitsattributdatenstruktur, die in dem Speicher (406) angeordnet ist, zuzugreifen, um ein Sicherheitsattribut der Zielspeicherseite zu erhalten, und wobei Sicherheitsprüfeinheit (418) ausgebildet ist, die Speicherzugriffssignale für die Speichersteuerung (1304) in Abhängigkeit des Sicherheitsattributs der Zielspeicherseite bereit zu stellen.
  2. Die Host-Brücke (404) nach Anspruch 1, wobei die mindestens eine Sicherheitsattributsdatenstruktur ein Sicherheitsattributtabellenverzeichnis (904) und mindestens eine Sicherheitsattributstabelle (906) aufweist.
  3. Die Host-Brücke (404) nach Anspruch 2, wobei das Sicherheitsattributtabellenverzeichnis (904) mehrere Einträge (910) umfasst, und wobei jeder Eintrag (910) des Sicherheitsattributstabellenverzeichnisses (904) ein Anwesenheitsbit und ein Sicherheitsattributstabellen-(906) Basisadressenfeld enthält, und wobei das Anwesenheitsbit anzeigt, ob eine Sicherheitsattributstabelle (906) entsprechend dem Sicherheitsattributtabellenverzeichniseintrag (910) in dem Speicher (406) vorhanden ist oder nicht, und wobei das Sicherheitsattributstabellenbasisadressenfeld für eine Basisadresse der Sicherheitsattributstabelle (906) entsprechend dem Sicherheitsattributtabellenverzeichniseintrag (910) reserviert ist.
  4. Die Host-Brücke (404) nach Anspruch 1, wobei das Sicherheitsattribut der Zielspeicherseite ein Sicherheitsseiten- (SP) Bit aufweist und wobei das SP-Bit anzeigt, ob die Zielspeicherseite eine sichere Seite ist oder nicht.
  5. Die Host-Brücke (404) nach Anspruch 4, wobei, wenn das SP-Bit anzeigt, dass die Zielspeicherseite eine sichere Seite ist, der Speicherzugriff unautorisiert ist, und wobei die Sicherheitsprüfeinheit (418) keine Speicherzugriffssignale an die Speichersteuerung (1304) bereitstellt.
  6. Die Host-Brücke (404) nach Anspruch 5, wobei wenn das SP-Bit anzeigt, dass die Zielspeicherseite eine sichere Seite ist und die Speicherzugriffsignale anzeigen, dass eine Speicherzugriffsart ein Lesezugriff und/oder ein unautorisierter Lesezugriff ist, die Sicherheitsprüfeinheit (418) ausgebildet ist, auf den unautorisierten Lesezugriff durch Bereitstellen von falschen Lesedaten zu reagieren.
  7. Die Host-Brücke (404) nach Anspruch 5, wobei, wenn das SP-Bit anzeigt, dass die Zielspeicherseite eine sichere Seite ist und die Speicherzugriffssignale anzeigen, dass eine Speicherzugriffsart ein Schreibzugriff und/oder ein unautorisierter Schreibzugriff ist, die Sicherheitsprüfeinheit (418) ausgebildet ist, auf den unautorisierten Schreibzugriff durch Verwerten der Schreibdaten, die von den Speicherzugriffssignalen transportiert werden, zu reagieren.
  8. Computersystem (400) zur Verwaltung eines Speichers (406), dadurch gekennzeichnet, dass das Computersystem (400) umfasst: einen Speicher (406), der Daten speichert, die in mehreren Speicherseiten organisiert sind; eine Einrichtung (414a bis d), die funktionsmäßig mit dem Speicher (406) verbunden und ausgebildet ist, Speicherzugriffssignale zu erzeugen; und eine Host-Brücke (404), die funktionsmäßig mit der Einrichtung (414a bis d) und dem Speicher (406) verbunden ist, und die umfasst: eine Speichersteuerung (1304), die zur Verbindung mit dem Speicher (406), der in mehreren Speicherseiten gespeicherte Daten enthält, ausgebildet ist, wobei die Speichersteuerung (1304) so angeschlossen ist, um Speicherzugriffssignale zu empfangen, und wobei die Speichersteuerung (1304) ausgebildet ist, auf die Speicherzugriffssignale durch Zugreifen auf den Speicher (406) zu reagieren; und eine Sicherheitsprüfeinheit (418), die angeschlossen ist, um die Speicherzugriffssignale zu empfangen, wobei die Speicherzugriffssignale eine physikalische Adresse in einer Zielspeicherseite enthalten, und wobei die Sicherheitsprüfeinheit (418) ausgebildet ist, die physikalische Adresse zu verwenden, um auf mindestens eine Sicherheitsattributsdatenstruktur, die in dem Speicher (406) angeordnet ist, zuzugreifen, um ein Sicherheitsattribut der Zielspeicherseite zu erhalten, und wobei die Sicherheitsprüfeinheit (418) ausgebildet ist, die Speicherzugriffssignale für die Speichersteuerung (1304) in Abhängigkeit des Sicherheitsattributs der Zielspeicherseite bereit zu stellen.
  9. Verfahren zum Bereitstellen einer Zugriffssicherheit für einen Speicher (406), der zur Speicherung von Daten verwendet wird, die in mehreren Speicherseiten organisiert sind, wobei das Verfahren umfasst: Empfangen von Speicherzugriffssignalen, wobei die Speicherzugriffssignale eine physikalische Adresse in einer Zielspeicherseite enthalten; Verwenden der physikalischen Adresse, um auf mindestens eine Sicherheitsattributdatenstruktur, die in dem Speicher (406) angeordnet ist, zuzugreifen, um ein Sicherheitsattribut der Zielspeicherseite zu erhalten; und Zugreifen auf den Speicher (406) unter Anwendung der Speicherzugriffssignale in Abhängigkeit von dem Sicherheitsattribut der Zielspeicherseite.
  10. Das Verfahren nach Anspruch 9, wobei das Verwenden der physikalischen Adresse zum Zugreifen auf mindestens eine Sicherheitsattributsdatenstruktur umfasst: Verwenden der physikalischen Adresse, um auf mindestens eine Sicherheitsattributsdatenstruktur zuzugreifen, die ein Sicherheitsattributtabellenverzeichnis (904) und mindestens eine Sicherheitsattributtabelle (906) aufweist.
DE10297494T 2001-12-05 2002-09-12 System und Verfahren zum Behandeln von Gerätezugriffen auf einen Speicher mit erhöhter Speicherzugriffssicherheit Withdrawn DE10297494T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/011,151 2001-12-05
US10/011,151 US7426644B1 (en) 2001-12-05 2001-12-05 System and method for handling device accesses to a memory providing increased memory access security
PCT/US2002/028981 WO2003050688A2 (en) 2001-12-05 2002-09-12 System and method for handling device accesses to a memory providing increased memory access security

Publications (1)

Publication Number Publication Date
DE10297494T5 true DE10297494T5 (de) 2004-11-25

Family

ID=21749091

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10297494T Withdrawn DE10297494T5 (de) 2001-12-05 2002-09-12 System und Verfahren zum Behandeln von Gerätezugriffen auf einen Speicher mit erhöhter Speicherzugriffssicherheit

Country Status (9)

Country Link
US (1) US7426644B1 (de)
JP (1) JP2005512228A (de)
KR (1) KR100995146B1 (de)
CN (1) CN1285038C (de)
AU (1) AU2002336493A1 (de)
DE (1) DE10297494T5 (de)
GB (1) GB2399920B (de)
TW (1) TWI262389B (de)
WO (1) WO2003050688A2 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1619572A1 (de) * 2004-07-23 2006-01-25 Texas Instruments Incorporated System und Verfahren um Sicherheitseinbrüche innerhalb eines Rechnersystems zu identifizieren und vorzukommen
DE102005014837B4 (de) * 2004-08-02 2007-08-30 Mahltig, Holger Sicherheitsmodul und Verfahren zum Steuern und Kontrollieren eines Datenverkehrs eines Personalcomputers
JP4794269B2 (ja) * 2004-11-08 2011-10-19 パナソニック株式会社 セキュアデバイスおよび中継端末
JP4628149B2 (ja) * 2005-03-14 2011-02-09 株式会社エヌ・ティ・ティ・ドコモ アクセス制御装置及びアクセス制御方法
TWI310153B (en) 2006-08-17 2009-05-21 Quanta Comp Inc Computer system and boot code accessing method thereof
TWI448902B (zh) * 2007-08-24 2014-08-11 Cypress Semiconductor Corp 具頁存取基礎處理器介面之橋接裝置
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
TWI484334B (zh) * 2009-12-24 2015-05-11 Univ Nat Taiwan 非揮發記憶體的區域式管理方法
US20110202740A1 (en) * 2010-02-17 2011-08-18 Arm Limited Storing secure page table data in secure and non-secure regions of memory
US8935800B2 (en) 2012-12-31 2015-01-13 Intel Corporation Enhanced security for accessing virtual memory
US8959576B2 (en) * 2013-03-14 2015-02-17 Intel Corporation Method, apparatus, system for qualifying CPU transactions with security attributes
US9767044B2 (en) * 2013-09-24 2017-09-19 Intel Corporation Secure memory repartitioning
WO2015061970A1 (zh) * 2013-10-29 2015-05-07 华为技术有限公司 一种访问内存的方法及设备
US9875189B2 (en) 2015-06-12 2018-01-23 Intel Corporation Supporting secure memory intent
US20170109526A1 (en) * 2015-10-20 2017-04-20 Intel Corporation Systems and methods for providing anti-malware protection and malware forensics on storage devices
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
WO2018090201A1 (zh) 2016-11-15 2018-05-24 华为技术有限公司 一种安全的处理器芯片及终端设备
KR20200067633A (ko) * 2018-12-04 2020-06-12 삼성전자주식회사 메모리 장치 및 그것의 보안 데이터 처리 방법
FR3100901B1 (fr) * 2019-09-12 2021-08-27 Stmicroelectronics Grand Ouest Sas Système de protection de la mémoire

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63752A (ja) 1986-06-20 1988-01-05 Nippon Telegr & Teleph Corp <Ntt> メモリ保護方式
US5335334A (en) 1990-08-31 1994-08-02 Hitachi, Ltd. Data processing apparatus having a real memory region with a corresponding fixed memory protection key value and method for allocating memories therefor
US5263147A (en) * 1991-03-01 1993-11-16 Hughes Training, Inc. System for providing high security for personal computers and workstations
US5442704A (en) * 1994-01-14 1995-08-15 Bull Nh Information Systems Inc. Secure memory card with programmed controlled security access control
US5729760A (en) 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
JPH10289158A (ja) 1997-04-11 1998-10-27 Hitachi Ltd タスク管理装置
US6516395B1 (en) * 1997-11-20 2003-02-04 Advanced Micro Devices, Inc. System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes
US6505279B1 (en) * 1998-08-14 2003-01-07 Silicon Storage Technology, Inc. Microcontroller system having security circuitry to selectively lock portions of a program memory address space
US6745306B1 (en) * 1999-07-29 2004-06-01 Microsoft Corporation Method and system for restricting the load of physical address translations of virtual addresses
US7624249B2 (en) * 2005-11-10 2009-11-24 O'connor Dennis Processor multi-partition security architecture

Also Published As

Publication number Publication date
AU2002336493A1 (en) 2003-06-23
US7426644B1 (en) 2008-09-16
GB0414778D0 (en) 2004-08-04
CN1285038C (zh) 2006-11-15
JP2005512228A (ja) 2005-04-28
GB2399920B (en) 2005-07-06
GB2399920A (en) 2004-09-29
WO2003050688A3 (en) 2004-02-12
TW200300885A (en) 2003-06-16
WO2003050688A2 (en) 2003-06-19
KR100995146B1 (ko) 2010-11-18
TWI262389B (en) 2006-09-21
CN1599902A (zh) 2005-03-23
KR20050027085A (ko) 2005-03-17

Similar Documents

Publication Publication Date Title
DE10297433B4 (de) Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor
DE10297494T5 (de) System und Verfahren zum Behandeln von Gerätezugriffen auf einen Speicher mit erhöhter Speicherzugriffssicherheit
DE68924720T2 (de) Verfahren und Vorrichtung für Zugriffsrechtensteuerung.
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
DE112005002405B4 (de) Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung
DE10357804B4 (de) Neu-Beanspruchung vorhandener Felder in Adressübersetzungsdatenstrukturen zum Erweitern der Kontrolle über Speicherzugriffe
DE3587694T2 (de) Speicherzugriffssteuergerät zur Realisierung von geschützten Gebieten in einem Speicher, und mit solchem Speicherzugriffssteuergerät ausgerüsteter Speicher.
EP1005676B1 (de) Verfahren zur verbesserung der steuerungsmöglichkeit in datenverarbeitungsanlagen mit adressübersetzung
DE69531112T2 (de) Mechanismus zum verknüpfen von dateien auf einem emulierten system mit dem zentralsystem für den zugriff durch emulierte systembenutzer
DE602004011018T2 (de) Ungültigkeitserklärung eines speichers und löschen von puffereinträgen
DE3889816T2 (de) Virtuelle Ein/Ausgabebefehle.
DE3689209T2 (de) Direkte Ein-- und Ausgabe in einer virtuellen Speicheranordnung.
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE3689287T2 (de) Datenverarbeitungsgerät.
DE69724572T2 (de) Verfahren und Vorrichtung zur Vorladung von verschiedenen vorgegebenen Adressenübersetzungsattributen
DE3688978T2 (de) Seitenspeicherverwaltungseinheit mit der fähigkeit nach wahl mehrere adressräume zu unterstützen.
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE60036960T2 (de) Unterscheidung von feinkorntranslation
DE19635204A1 (de) Ausnahme-Sicherheitsschaltung
DE10297687B4 (de) Prozessor mit Eingabe/Ausgabeerlaubnisbitstrukturen für in Bereiche aufgeteilte Sicherheit und Verfahren zum selektiven Ausführen einer Eingabe/Ausgabe-Instruktion
DE102020125599A1 (de) Vertrauenswürdige lokale speicherverwaltung in einer virtualisierten gpu
DE112009000344T5 (de) Zugriffsrechte auf eine Speicher-Map
DE102006015106A1 (de) Bereitstellen eines erweiterten Speicherschutzes
DE2458065A1 (de) Datenverarbeitungsanlage mit sicherung der daten gegen unberechtigten zugriff
DE10196440B4 (de) Steuern des Zugriffs auf mehrere isolierte Speicher in einer isolierten Ausführungsumgebung

Legal Events

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

Ref document number: 10297494

Country of ref document: DE

Date of ref document: 20041125

Kind code of ref document: P

8127 New person/name/address of the applicant

Owner name: GLOBALFOUNDRIES INC., GRAND CAYMAN, KY

8128 New person/name/address of the agent

Representative=s name: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER,

R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20120403