PatentDe  


Dokumentenidentifikation DE10196440B4 23.03.2006
Titel Steuern des Zugriffs auf mehrere isolierte Speicher in einer isolierten Ausführungsumgebung
Anmelder Intel Corporation, Santa Clara, Calif., US
Erfinder Golliver, Roger, Beaverton, Oreg., US;
Sutton II, James, Portland, Oreg., US;
Lin, Derrick, Foster City, Calif., US;
Thakkar, Shreekant, Portland, Oreg., US;
Neiger, Gilbert, Portland, Oreg., US;
Mckeen, Francis, Portland, Oreg., US;
Herbert, Howard, Phoenix, Ariz., US;
Reneris, Kenneth, Woodinville, Wash., US;
Ellison, Carl, Portland, Oreg., US
Vertreter Zenz, Helber, Hosbach & Partner GbR, 45128 Essen
DE-Anmeldedatum 13.07.2001
DE-Aktenzeichen 10196440
WO-Anmeldetag 13.07.2001
PCT-Aktenzeichen PCT/US01/22027
WO-Veröffentlichungsnummer 0000206929
WO-Veröffentlichungsdatum 24.01.2002
Date of publication of WO application in German translation 29.04.2004
Veröffentlichungstag der Patenterteilung 23.03.2006
Veröffentlichungstag im Patentblatt 23.03.2006
IPC-Hauptklasse G06F 12/14(2006.01)A, F, I, 20051017, B, H, DE

Beschreibung[de]

Die Erfindung bezieht sich auf eine Einrichtung bzw. ein Verfahren zum Steuern von Speicherzugriffen mit einem Prozessor und einem Seitenmanager, der unter der Kontrolle des Prozessors arbeitet.

Fortschritte bei Mikroprozessoren und in der Kommunikationstechnologie eröffneten viele Möglichkeiten für Anwendungen, die über herkömmliche Wege, Geschäfte auszuführen, hinausgehen. Electronic commerce (E-commerce) und Business-to-business(B2B)-Transaktionen werden jetzt populär und über globale Märkte bei stets wachsenden Raten ausführt. Während moderne Mikroprozessorsysteme den Benutzern bequeme und effiziente Verfahren zum Ausführen von Geschäften, zum Kommunizieren und zur Ausführung von Transaktionen zur Verfügung stellen, sind sie unglücklicherweise auch für skrupellose Angriffe anfällig. Beispiele dieser Angriffe umfassen Viren, ein Eindringen, Sicherheitsverletzungen und unbefugtes Einmischen, um nur einige wenige zu nennen. Die Computersicherheit wird somit zunehmend wichtiger, um die Integrität der Computersysteme zu schützen und das vertrauen der Benutzer zu erhöhen.

Von skrupellosen Angriffen verursachte Gefahren können eine Reihe von Formen annehmen. Ein invasiver ferngestarteter Angriff durch Hacker kann den normalen Betrieb eines mit Tausenden oder gar Millionen von Benutzern verbundenen Systems unterbrechen. Ein Virenprogramm kann Befehlscode und/oder Daten einer Einzelbenutzerplattform zerstören.

Vorhandene Techniken zum Schutz gegen Angriffe weisen eine Reihe von Nachteilen auf. Antivirenprogramme können nur nach bekannten Viren suchen und diese erfassen. Sicherheitscoprozessoren oder -Smartcards, die kryptografische oder andere Sicherheitstechniken verwenden, weisen Einschränkungen bei der Geschwindigkeitsleistung, der Speicherkapazität und der Flexibilität auf. Darüber hinaus schafft die Neuentwicklung von Betriebssystemen Software-Kompatibilitätsprobleme und erfordert enorme Investitionen bei den Entwicklungsanstrengungen.

Eine Einrichtung, bei der ein Seitenmanager unter der Kontrolle eines zusätzlichen sicheren Prozessors arbeitet, ist z. B. aus dem US-Patent Nr. 5,469,556 bekannt.

Aufgabe der Erfindung ist es, einen verbesserten Schutz von Daten gegen unberechtigte Zugriffe zu unterstützen.

Diese Aufgabe wird erfindungsgemäß durch eine Einrichtung mit den Merkmalen des Anspruchs 1 bzw. ein Verfahren mit den Merkmalen des Anspruchs 11 gelöst.

Vorteilhafte und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.

Einzelheiten und Vorteile der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung der vorliegenden Erfindung klar, in welcher:

1A ein Schema ist, das ein Betriebssystem gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

1B ist ein Schema, das die Zugreifbarkeit der verschiedenen Elemente in dem Betriebssystem und dem Prozessor und einen einzigen zusammenhängenden isolierten Speicherbereich gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

1C ist ein 1B ähnliches Schema, das die Zugreifbarkeit der verschiedenen Elemente in dem Betriebssystem und dem Prozessor und insbesondere mehrere isolierte Speicherbereiche und mehrere nicht-isolierte Speicherbereiche gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

1D ist ein Ablaufdiagramm, das einen Prozeß zum Verteilen von Seiten des Speichers für eine isolierte Ausführung gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

1E ist ein Schema, das eine Speicherbesitz-Seitentabelle und einen Prozeß zum Konvertieren einer virtuellen Adresse in eine physikalische Adresse gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

1F ist ein Schema, das ein Computersystem veranschaulicht, in welchem ein Ausführungsbeispiel der Erfindung ausgeführt werden kann.

2A ist ein Schema, das die in 1F gezeigte Isolierte-Ausführung-Schaltung gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

2B ist ein Schema, das den in 2A gezeigten Zugriffsmanager gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

3A ist ein Schema, das eine Zugriffsüberprüfungsschaltung gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

3E ist ein Schema, das die Zugriffsüberprüfungsschaltung zum Verwalten Logischer-Prozessor-Operationen gemäß einem weiteren Ausführungsbeispiel der Erfindung veranschaulicht.

4 ist ein Ablaufdiagramm, das einen Prozeß zum Erzeugen eines Zugriffsgewährungssignals für eine isolierte Ausführung gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

5 ist ein Ablaufdiagramm, das einen Prozeß zum Verwalten von Prozeß-Thread-Operationen für eine isolierte Ausführung gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

6 ist ein Schema, das die Zugriffssteuerung für den isolierten Bereich in dem in 1F gezeigten Speicher-Controller-Hub (MCH) gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

7 ist ein Schema, das die in 6 gezeigte MCH-Zugriffsüberprüfungsschaltung gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

8 ist ein Ablaufdiagramm, das einen Prozeß zum Erzeugen eines Zugriffsgewährungssignals für eine isolierte Ausführung für einen MCH gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

Die vorliegende Erfindung ist ein Verfahren und eine Einrichtung zum Steuern/Kontrollieren von Speicherzugriffen auf mehrere isolierte Speicher in einer isolierten Ausführungsumgebung. Ein Seitenmanager wird verwendet, um eine Mehrzahl von Seiten jeweils auf eine Mehrzahl verschiedener Speicherbereiche zu verteilen. Der Speicher ist in nicht-isolierte Bereiche und isolierte Bereiche unterteilt. Der Seitenmanager ist in einem isolierten Speicherbereich angeordnet. Ferner beschreibt eine Speicherbesitz-Seitentabelle jede Seite des Speichers und ist ebenfalls in einem isolierten Speicherbereich angeordnet. Der Seitenmanager weist einer Seite ein Isolier-Attribut zu, wenn die Seite zu einem isolierten Bereich des Speichers verteilt wird. Andererseits weist der Seitenmanager einer Seite ein Nicht-Isoliert-Attribut zu, wenn die Seite zu einem nicht-isolierten Bereich des Speichers verteilt wird. Die Speicherbesitz-Seitentabelle zeichnet das Attribut für jedes Seite auf.

Bei einem Ausführungsbeispiel erzeugt ein Prozessor, der einen normalen Ausführungsmodus und einen isolierten Ausführungsmodus aufweist, eine Zugriffstransaktion. Die Zugriffstransaktion wird unter Verwendung eines Konfigurationsspeichers, der Konfigurationseinstellungen enthält, konfiguriert. Die Zugriffstransaktion schließt Zugriffsinformationen ein, wie beispielsweise eine physikalische Adresse des Speichers, auf den zugegriffen werden soll. Die Konfigurationseinstellungen liefern Informationen bezüglich einer Seite des Speichers, die in die Zugriffstransaktion involviert ist. Die Konfigurationseinstellungen enthalten ein Attribut für die Seite, das die Seite als isoliert oder nicht-isoliert definiert und ein Ausführungsmoduswort, das angelegt wird, wenn der Prozessor in einem isolierten Ausführungsmodus konfiguriert ist. Bei einem Ausführungsbeispiel ist das Ausführungsmoduswort ein Einzelbit, das anzeigt, ob der Prozessor sich in dem isolierten Ausführungsmodus befindet. Eine mit dem Konfigurationsspeicher gekoppelte Zugriffsüberprüfungsschaltung überprüft die Zugriffstransaktion unter Verwendung wenigstens einer der Konfigurationseinstellungen und der Zugriffsinformationen.

Bei einem Ausführungsbeispiel enthält die Zugriffsüberprüfungsschaltung eine TLB-Zugriffsüberprüfungsschaltung. Die TLB-Zugriffsüberprüfungsschaltung erzeugt ein Zugriffsgewährungssignal, wenn die Zugriffstransaktion gültig ist. Insbesondere dann, wenn das Attribut für die Seite auf isoliert gesetzt ist und das Ausführungsmoduswort-Signal angelegt wird, erzeugt die TLB-Zugriffsüberprüfungsschaltung ein Zugriffsgewährungssignal für den isolierten Bereich des Speichers. Wenn somit ein Prozessor eine physikalische Adresse eines isolierten Bereichs des Speichers anfordert, wird nur dann, wenn der Prozessor in dem isolierten Ausführungsmodus arbeitet und das Attribut für die der physikalischen Adresse zugeordnete Seite auf isoliert gesetzt ist, die Zugriffstransaktion gewährt.

In der folgenden Beschreibung werden aus Gründen der Erläuterung zahlreiche Details argegegeben, um ein besseres Verständnis der vorliegenden Erfindung zu erreichen. Für einen Fachmann ist es jedoch klar, daß diese speziellen Details nicht erforderlich sind, um die vorliegende Erfindung auszuführen. An anderen Stellen werden gut bekannte elektrische Strukturen und Schaltungen in Blockdarstellungsform gezeigt, um die vorliegende Erfindung nicht zu verdecken.

ARCHITEKTURÜBERSICHT

Ein Prinzip für die Bereitstellung von Sicherheit in einem Computersystem oder einer Plattform ist das Konzept einer Architektur der isolierten Ausführung. Die Architektur der isolierten Ausführung schließt logische und physikalische Definitionen von Hardware- und Softwarekomponenten ein, die direkt oder indirekt mit einem Betriebssystem des Computersystems oder der Plattform in Interaktion treten. Ein Betriebssystem und der Prozessor können verschiedene Ebenen der Hierarchie aufweisen, die als Ringe bezeichnet werden, die verschiedenen Betriebsmodi entsprechen. Ein Ring ist eine logische Unterteilung von Hardware- und Softwarekomponenten, die so ausgebildet sind, daß sie spezielle Aufgaben innerhalb des Betriebssystems ausführen. Die Unterteilung basiert typischerweise auf dem Grad oder dem Niveau der Privilegierung, nämlich der Möglichkeit, Änderungen an der Plattform vorzunehmen. Beispielsweise ist ein Ring-0 der innerste Ring, der auf der höchsten Ebene der Hierarchie ist. Ring-0 umfaßt die kritischen, privilegiertesten Komponenten. Darüber hinaus können Module im Ring-0 auch auf weniger privilegierte Daten zugreifen, jedoch nicht umgekehrt. Ring-3 ist der äußerste Ring, der sich auf der niedrigsten Ebene der Hierarchie befindet. Ring-3 umfaßt typischerweise die Ebene der Benutzer oder Anwendungen und weist das geringste Privileg auf. Ring-1 und Ring-2 stellen Zwischenringe mit absinkenden Ebenen der Sicherheit und/oder des Schutzes dar.

1A ist ein Schema, das eine logische Betriebsarchitektur 50 gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht. Die logische Betriebsarchitektur 50 ist eine Abstraktion der Komponenten eines Betriebssystems und des Prozessors. Die logische Betriebsarchitektur 50 schließt Ring-0 10, Ring-1 20, Ring-2 30, Ring-3 40 und einen Prozessor-Nub-Lader 52 ein. Der Prozessor-Nub-Lader 52 ist eine Instanz eines Prozessor-Exekutive(PE)-Behandlers. Der PE-Behandler wird verwendet, um eine Prozessor-Exekutive (PE) zu handhaben und/oder zu verwalten, wie es später erörtert wird. Die logische Betriebsarchitektur 50 weist zwei Betriebsmodi auf: Einen normalen Ausführungsmodus und einen isolierten Ausführungsmodus. Jeder Ring in der logischen Betriebsarchitektur 50 kann in beiden Modi betrieben werden. Der Prozessor-Nub-Lader 52 arbeitet nur in dem isolierten Ausführungsmodus.

Ring-0 10 enthält zwei Abschnitte: einen Normale-Ausführung-Ring-0 11 und einen Isolierte-Ausführung-Ring-0 15. Der Normale-Ausführung-Ring-0 11 enthält Softwaremodule, die für das Betriebssystem kritisch sind, üblicherweise als Kernel bezeichnet. Diese Softwaremodule enthalten das primäre Betriebssystem (z.B. Kernel) 12, Software-Treiber 13 und Hardware-Treiber 14. Der Isolierte-Ausführung-Ring-0 15 enthält einen Betriebssystem(OS)-Nub 16 und einen Prozessor-Nub 18. Der OS-Nub 16 und der Prozessor-Nub 18 sind Instanzen einer OS-Exekutive (OSE) bzw. einer Prozessor-Exekutive (PE). Die OSE und die PE sind Teil der Exekutive- Entitäten, die in einer einem isolierten Bereich zugeordneten geschützten Umgebung und dem isolierten Ausführungsmodus arbeiten. Der Prozessor-Nub-Lader 52 ist ein geschützter Bootstrap-Lader-Code, der in einem Chipsatz in dem System gehalten wird und für das Laden des Prozessor-Nubs 18 aus dem Prozessor oder dem Chipsatz in einen isolierten Bereich verantwortlich ist, wie später erörtert wird.

In ähnlicher Weise umfassen der Ring-1 20, der Ring-2 30 und der Ring-3 40 einen Ring-1 21, einen Ring-2 31 und einen Ring-3 41 der normalen Ausführung und einen Ring-1 25, Ring-2 35 und Ring-3 45 der isolierten Ausführung. Insbesondere enthält der Normale-Ausführung-Ring-3 N Anwendungen 421 bis 42N, und der Isolierte-Ausführung-Ring-3 enthält K Applets 461 bis 46K.

Ein Konzept der Architektur der isolierten Ausführung ist die Schaffung eines isolierten Gebiets in dem Systemspeicher, das als isolierter Bereich bezeichnet wird, welches sowohl durch den Prozessor als auch den Chipsatz in dem Computersystem geschützt ist. Das isolierte Gebiet kann sich auch in dem Cache-Speicher befinden, geschützt durch eine Übersetzungsnachschlagepuffer(TLB)-Zugriffsüberprüfung. Darüber hinaus kann das isolierte Gebiet in mehrere isolierte Speicherbereiche unterteilt sein, wie erörtert wird. Ein Zugriff auf dieses isolierte Gebiet ist nur ausgehend von einem frontseitigen Bus (FSB) des Prozessors unter Verwendung spezieller Buszyklen (z.B. Speicherlese- und -schreib-Zyklen) gestattet, die als isolierte Lese- und Schreib-Zyklen bezeichnet werden. Die speziellen Buszyklen werden auch für das Snooping verwendet. Die isolierten Lese- und Schreibzyklen werden von dem Prozessor ausgegeben, der in einem isolierten Ausführungsmodus ausführt. Der isolierte Ausführungsmodus wird unter Verwendung eines privilegierten Befehls in dem Prozessor, kombiniert mit dem Prozessor-Nub-Lader 52, initialisiert. Der Prozessor-Nub-Lader 52 überprüft und lädt ein Ring-0-Nub-Softwaremodul (z.B. Prozessor-Nub 18) in den isolierten Bereich. Der Prozessor-Nub 18 stellt hardwarebezogene Dienste für die isolierte Ausführung zur Verfügung.

Eine Aufgabe des Prozessor-Nubs 18 besteht darin, den Ring-0-OS-Nub 16 zu überprüfen und in den isolierten Bereich zu laden und die Wurzel einer Schlüsselhierarchie zu erzeugen, die eine Kombination der Plattform, des Prozessor-Nubs 18 und des Betriebssystems-Nubs 16 eindeutig kennzeichnet. Der Prozessor-Nub 18 stellt das anfängliche Einricht- und Low-Level-Management des isolierten Bereichs zur Verfügung, einschließlich einer Überprüfung, des Ladens und des Protokollierens (logging) des Betriebssystem-Nubs 16 und der Verwaltung eines symmetrischen Schlüssels, der zum Schützen der Geheimnisse des Betriebssystem-Nubs verwendet wird. Der Prozessor-Nub 18 kann darüber hinaus Anwendungsprogrammierschnittstellen(API)-Abstraktionen an Low-Level-Sicherheitsdienste zur Verfügung stellen, die durch andere Hardware zur Verfügung gestellt werden.

Der Betriebssystem-Nub 16 stellt Verknüpfungen (Links) zu Diensten in den primären OS 12 (z.B. den ungeschützten Segmenten des Betriebssystems) zur Verfügung, stellt ein Seitenmanagement innerhalb des isolierten Bereichs zur Verfügung und ist für das Laden der Ring-3-Anwendungsmodule 45, einschließlich der Applets 461 bis 46K, in dem isolierten Bereich zugewiesene geschützte Seiten verantwortlich. Der Betriebssystem-Nub 16 kann außerdem Ring-0-Unterstützungsmodule laden. Wie erörtert wird, verwaltet das primäre OS 12 Seiten, die sich außerhalb des isolierten Bereichs befinden.

Der Betriebssystem-Nub 16 kann auswählen, daß er ein Paging von Daten zwischen dem isolierten Bereich und gewöhnlichem (z.B. nicht-isolierten) Speicher unterstützt. Wenn dies der Fall ist, dann ist der Betriebssystem-Nub 16 auch für das Verschlüsseln und Hashing der Seiten des isolierten Bereichs, bevor die Seite in den gewöhnlichen Speicher geopfert wird, und für das Überprüfen der Seiteninhalte bei Wiederherstellung der Seite verantwortlich. Die Applets 461 bis 46K des isolierten Modus und ihre Daten sind verfälschungssicher und überwachungsresistent gegenüber sämtlichen Softwareangriffen aus anderen Applets sowie aus Anwendungen des nicht-isolierten Raums (z.B. 421 bis 42N), dynamischen Verknüpfungsbibliotheken (DLLs), Treibern und selbst dem primären Betriebssystem 12. Nur der Prozessor-Nub 18 oder der Betriebssystem-Nub 16 können in die Ausführung der Applets eingreifen oder diese überwachen.

1B ist ein Schema, das die Zugreifbarkeit der verschiedenen Elemente im Betriebssystem 10 und dem Prozessor gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht. Aus Gründen der Veranschaulichung sind nur Elemente des Rings-0 10 und des Rings-3 40 gezeigt. Die verschiedenen Elemente in der logische Betriebsarchitektur 50 greifen auf einen zugreifbaren physikalischen Speicher 60 in Übereinstimmung mit ihrer Ringhierarchie und dem Ausführungsmodus zu.

Der zugreifbare physikalische Speicher 60 enthält einen isolierten Bereich 70 und einen nicht-isolierten Bereich 80. Der isolierte Bereich 70 enthält Applet-Seiten 72 und Nub-Seiten 74. Der nicht-isolierte Bereich 80 enthält Anwendungsseiten 82 und Betriebssystemseiten 84. Der isolierte Bereich 70 ist nur für Elemente des Betriebssystems und den im isolierten Ausführungsmodus arbeitenden Prozessor zugreifbar. Der nicht-isolierte Bereich 80 ist für sämtliche Elemente des Ring-0-Betriebssystems und Prozessors zugreifbar.

Der Normale-Ausführung-Ring-0 11, einschließlich des primären OS 12, der Software-Treiber 13 und der Hardware-Treiber 14, kann auf sowohl die OS-Seiten 84 als auch die Anwendungsseiten 82 zugreifen. Der Normale-Ausführung-Ring-3, einschließlich der Anwendungen 421 bis 42N, kann nur auf die Anwendungsseiten 82 zugreifen. Sowohl der Normale-Ausführung-Ring-0 11 als auch der Ring-3 41 können jedoch nicht auf den isolierten Bereich 70 zugreifen.

Der Isolierte-Ausführung-Ring-0 15, einschließlich des OS-Nub 16 und des Prozessor-Nub 18, kann sowohl auf den isolierten Bereich 70, einschließlich der Applet-Seiten 72 und der Nub-Seiten 74, als auch auf den nicht-isolierten Bereich 80, einschließlich der Anwendungsseiten 82 und der OS-Seiten 84, zugreifen. Der Isolierte-Ausführung-Ring-3 45, einschließlich der Applets 461 bis 46K, kann nur auf die Anwendungsseiten 82 und die Applet-Seite 72 zugreifen. Die Applets 461 bis 46K halten sich in dem isolierten Bereich 70 auf.

1C ist ein Schema, das ähnlich der 1B die Zugreifbarkeit der verschiedenen Elemente in dem Betriebssystem und dem Prozessor veranschaulicht, bei welchem der isolierte Speicherbereich 70 in mehrere isolierte Speicherbereiche 71 und der nicht-isolierte Speicherbereich 80 in mehrere nicht-isolierte Speicherbereiche 83 gemäß einem Ausführungsbeispiel der Erfindung unterteilt ist. Aus Gründen der Veranschaulichung sind nur Elemente des Rings-0 10 und des Rings-3 40 gezeigt. Die verschiedenen Elemente in der logischen Betriebsarchitektur 50 greifen auf einen zugreifbaren physikalischen Speicher 60 in Übereinstimmung mit ihrer Ringhierarchie und dem Ausführungsmodus zu. Der zugreifbare physikalische Speicher 60 enthält die mehreren isolierten Bereiche und die mehreren nicht-isolierten Bereiche 83.

Die mehreren isolierten Bereiche 71 enthalten Applet-Seiten 72 und Betriebssystem(OS)-Nub-Seiten 74. Einer der mehreren isolierten Bereiche 71 enthält außerdem den Prozessor-Nub 18 (d.h. die Prozessor-Exekutive (PE)), der in den Prozessor-Nub-Seiten 73 enthalten ist. Die mehreren nicht-isolierten Bereiche 83 enthalten Anwendungsseiten 82 und Betriebssysteme(OS)-Seiten 84. Die mehreren isolierten Bereiche 71 sind nur für Elemente des Betriebssystems und des Prozessors, die im isolierten Ausführungsmodus arbeiten, zugreifbar. Die nicht-isolierten Bereiche 83 sind für sämtliche Elemente des Ring-0-Betriebssystems und Prozessors zugreifbar.

Bei diesem in 1C gezeigten Ausführungsbeispiel ist der isolierte Speicherbereich 70 in eine Mehrzahl isolierter Speicherbereiche 71 unterteilt, die im Unterschied zu einem einzigen Block eines isolierten Speicherbereichs 70, wie er in 1B gezeigt ist, eine erhöhte Plattformfunktionalität bei der Verwendung des isolierten Speichers gestatten. Um die mehreren isolierten Speicherbereiche 71 zu unterstützen, enthält der OS-Nub 16 (d.h. die OS-Exekutive (OSE)), der in den OS-Nub-Seiten 74 enthalten ist, einen Seitenmanager 75 und eine Speicherbesitz-Seitentabelle 77. Der OS-Nub steuert den Seitenmanager 75. Der Seitenmanager 75 ist für die Verteilung von Seiten an mehrere isolierte Speicherbereiche 71, wie beispielsweise OS-Nub-Seiten 74 und Applet-Seiten 72, und an die nicht-isolierten Speicherbereiche 83, wie beispielsweise OS-Seiten 84 und Anwendungsseiten 82, verantwortlich. Der Seitenmanager 75 verwaltet darüber hinaus die Speicherbesitz-Seitentabelle 77 und hält diese aufrecht. Wie später erörtert wird, beschreibt die Speicherbesitz-Seitentabelle 77 jede Seite und wird verwendet, um eine Konfiguration von Zugriffstransaktionen durch einen Prozessor zu unterstützen, und ferner, um zu überprüfen, daß die Zugriffstransaktion gültig ist. Indem es dem Seitenmanager 75 gestattet wird, mehrere isolierte Speicherbereiche 71 und mehrere nicht-isolierte Speicherbereiche 83 zu erzeugen, kann der zugreifbare physikalische Speicher 60 leichter an Änderungen in den Systemspeicheranforderungen angepaßt werden.

Der Normale-Ausführung-Ring-0 11, der das primäre OS 12, die Software-Treiber 13 und die Hardware-Treiber 14 enthält, kann sowohl auf die OS-Seiten 84 als auch die Anwendungsseiten 82 zugreifen. Der Normale-Ausführung-Ring-3, einschließlich der Anwendungen 421 bis 42N, kann nur auf die Anwendungsseiten 82 zugreifen. Sowohl der Ring-0 11 als auch der Ring-3 41 der normalen Ausführung können jedoch nicht auf die mehreren isolierten Speicherbereiche 71 zugreifen.

Der Isolierte-Ausführung-Ring-0 15, einschließlich des OS-Nub 16 und des Prozessor-Nub 18, kann sowohl auf die mehreren isolierten Speicherbereiche 71 einschließlich der Applets-Seiten 72 und der OS-Nub-Seiten 74 als auch auf die mehreren nicht-isolierten Speicherbereiche 83, die die Anwendungsseiten 82 und die OS-Seiten 84 enthalten, zugreifen. Der Isolierte-Ausführung-Ring-3 45, der die Applets 461 bis 46K, enthält, kann nur auf die Anwendungsseiten 82 und die Applet-Seiten 72 zugreifen. Die Applets 461 bis 46K halten sich in den mehreren isolierten Speicherbereichen 71 auf.

1D ist ein Ablaufdiagramm, das einen Prozeß 86 zum Verteilen von Seiten des Speichers zur isolierten Ausführung gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

Bei START verteilt der Prozeß 86 Seiten des Speichers an verschiedene Bereiche des zugreifbaren physikalischen Speichers 60 (Block 87). Die Seiten werden sowohl an isolierte Bereiche 71 als auch nicht-isolierte Bereiche 83 verteilt.

Bei einem bevorzugten Ausführungsbeispiel ist die Größe der Seiten fest vorgegeben. Beispielsweise könnte jede Seite 4 MB oder 4 KB sein. Als nächstes weist der Prozessor 86 jeder Seite ein Attribut zu (Block 88). Der Prozessor 86 weist einer Seite ein Isoliert-Attribut zu, wenn die Seite an einen isolierten Bereich des Speichers verteilt wird, oder Prozeß 86 weist einer Seite ein Nicht-Isoliert-Attribut zu, sofern die Seite an einen nicht-isolierten Bereich des Speichers verteilt wird. Der Prozeß 86 wird dann beendet.

1E ist ein Schema, das die Speicherbesitz-Seitentabelle 77 und einen Prozeß des Konvertierens einer virtuellen Adresse in eine physikalische Adresse gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht. Wie zuvor erörtert, verwaltet der Seitenmanager 75 die Speicherbesitz-Seitentabelle 77. Die Speicherbesitz-Seitentabelle 77 enthält eine Mehrzahl von Seitentabelleneinträgen 93. Jeder Seitentabelleneintrag 93 enthält die folgenden Komponenten: Die Basis der Seite 95 und eine Attribut 96 (isoliert oder nicht-isoliert) für die Seite. Ausschließlich der Seitenmanager 75 kann das einer Seite zugewiesene Attribut 96 ändern. Jede Seite 98 enthält eine Mehrzahl physikalischer Adressen 99. Der Seitenmanager 75 löscht (flushes) die Speicherbesitz-Seitentabelle 77 oder macht einen Seitentabelleneintrag 93 ungültig, wenn sich die isolierten und nicht-isolierten Speicherbereiche ändern. Der Seitenmanager 75 weist dann die isolierten und nicht-isolierten Speicherbereiche neu zu und initialisiert sie.

Eine virtuelle Adresse 212 enthält eine Seitentabellenkomponente 91 und ein Offset 92. Der Prozeß des Konvertierens der virtuellen Adresse 212 in eine physikalische Adresse 99 wird später erörtert.

1F ist ein Schema, das ein Computersystem 100 veranschaulicht, in welchem ein Ausführungsbeispiel der Erfindung ausgeführt werden kann. Das Computersystem 100 enthält einen Prozessor 110, einen Host-Bus 120, einen Speicher-Controlley-Hub (MCH) 130, einen Systemspeicher 140, einen Eingabe/Ausgabe-Controller-Hub (ICH) 150, einen nicht-flüchtigen Speicher oder System-Flash 160, eine Massenspeichereinrichtung 170, Eingabe/Ausgabe-Einrichtungen 175, einen Token-Bus 180, ein Mutterplatinen(MB)-Token 182, einen Leser 184 und ein Token 186. Der MCH 130 kann in einen Chipsatz integriert sein, der mehrere Funktionalitäten integriert, wie beispielsweise den isolierten Ausführungsmodus, Host-Zu-Peripherie-Bus-Schnittstelle, Speichersteuerung. In ähnlicher Weise kann der ICH 150 ebenfalls in einen Chipsatz zusammen mit oder separat von dem MCH 130 integriert sein, um I/O-Funktionen auszuführen. Aus Gründen der Klarheit sind nicht sämtliche Peripheriebusse gezeigt. Es ist beabsichtigt, daß das System 100 auch Peripheriebusse, wie beispielsweise den Peripheriekomponentenverbindungs(PCI)-Bus, einen Accelerated Graphics Port(AGP)-Bus, einen Industriestandardarchitektur(ISA)-Bus und einen universellen seriellen Bus (USB), etc. enthält.

Der Prozessor 110 repräsentiert eine zentrale Verarbeitungseinheit einer beliebigen Architektur, wie beispielsweise einer Architektur eines Computers mit einem komplexen Befehlssatz (CISC), eines Computers mit einem reduzierten Befehlssatz (RISC) oder eines sehr langen Befehlsworts (VLIW) oder eine Hybridarchitektur. Bei einem Ausführungsbeispiel ist der Prozessor 110 mit einem Prozessor der Intel-Architektur (IA) kompatibel, wie beispielsweise einem Prozessor der PentiumTM-Serie, der IA-32TM und IA 64TM. Der Prozessor 110 weist einen normalen Ausführungsmodus 112 und eine Isolierte-Ausführung-Schaltung 115 auf. Der normale Ausführungsmodus 112 ist der Modus, in welchem der Prozessor 110 in einer nicht-geschützten Umgebung oder einer normalen Umgebung ohne die durch den isolierten Ausführungsmodus zur Verfügung gestellten Sicherheitsmerkmale arbeitet. Die Isolierte-Ausführung-Schaltung 115 schafft einen Mechanismus, der es dem Prozessor 110 ermöglicht, in einem isolierten Ausführungsmodus zu arbeiten. Die Isolierte-Ausführung-Schaltung 115 stellt eine Hardware- und Software-Unterstützung für den isolierten Ausführungsmodus zur Verfügung. Diese Unterstützung schließt eine Konfiguration für die isoliert Ausführung, eine Definition eines isolierten Bereichs oder isolierter Bereiche, eine Definition (z.B. Decodierung und Ausführung) isolierter Befehle, die Erzeugung isolierter Zugriffsbuszyklen und die Erzeugung eines Interrupts des isolierten Modus ein.

Bei einem Ausführungsbeispiel kann das Computersystem 100 ein Einzelprozessorsystem, wie beispielsweise ein Desktop-Computer, sein, welches nur eine zentrale Hauptverarbeitungseinheit, z.B. den Prozessor 110, aufweist. Bei anderen Ausführungsbeispielen kann das Computersystem 100 mehrere Prozessoren, z.B. die Prozessoren 110, 110a, 110b, etc., enthalten, wie es in 1D gezeigt ist. So kann das Computersystem 100 ein Multi-Prozessor-Computersystem mit einer beliebigen Anzahl von Prozessoren sein. Beispielsweise kann das Multi-Prozessor-Computer-System 100 als Teil einer Server- oder Workstation-Umgebung arbeiten. Die grundlegende Beschreibung und der Betrieb des Prozessors 110 werden unten im Detail erörtert. Fachleuten ist es klar, daß die grundlegende Beschreibung und die Operation des Prozessors 110 für die weiteren in 1D gezeigten Prozessoren 110a und 110b sowie für eine Reihe weiterer Prozessoren gelten, die in dem Multi-Prozessor-Computersystem 100 gemäß einem Ausführungsbeispiel der vorliegenden Erfindung benutzt werden können.

Der Prozessor 110 kann auch mehrere logische Prozessoren aufweisen. Ein logischer Prozessor, der manchmal als Thread bezeichnet wird, ist eine Funktionseinheit innerhalb eines physikalischen Prozessors, die einen Architekturzustand und in Übereinstimmung mit irgendeiner Aufteilungsvorgehensweise zugewiesene physikalische Ressourcen aufweisen. Im Kontext der vorliegenden Erfindung werden die Begriffe "Thread" und "logischer Prozessor" in derselben Bedeutung verwendet. Ein Multi-Thread-Prozessor ist ein Prozessor, der mehrere Threads oder mehrere logische Prozessoren aufweist. Ein Multi-Prozessor-System (z.B. das System, das die Prozessoren 110, 110a und 110b aufweist) kann mehrere Multi-Thread-Prozessoren aufweisen.

Der Host-Bus 120 stellt Schnittstellensignale zur Verfügung, die es dem Prozessor 110 oder den Prozessoren 110, 110a und 110b ermöglichen, mit anderen Prozessoren oder Einrichtungen, beispielsweise dem MCH 130, zu kommunizieren. Zusätzlich zum normalen Modus stellt der Host-Bus 120 einen Busmodus des isolierten Zugriffs mit zugehörigen Schnittstellensignalen für Speicherlese- und -schreibzyklen zur Verfügung, wenn der Prozessor 110 in den isolierten Ausführungsmodus konfiguriert ist. Der Busmodus des isolierten Zugriffs wird bei Speicherzugriffen angelegt, die initialisiert worden sind, während sich der Prozessor 110 in dem isolierten Ausführungsmodus befindet. Der Busmodus des isolierten Zugriffs wird darüber hinaus bei Befehlsvorabruf- und Cache-Rückschreib-Zyklen angelegt, wenn sich die Adresse im Adreßbereich des isolierten Bereichs befindet und der Prozessor 110 in den isolierten Ausführungsmodus initialisiert ist. Der Prozessor 110 antwortet auf Snoop-Zyklen zu einer cache-gespeicherten Adresse in dem Adreßbereich des isolierten Bereichs, wenn der Buszyklus des isolierten Zugriffs angelegt wird und der Prozessor 110 in den isolierten Ausführungsmodus initialisiert ist.

Der MCH 130 stellt eine Kontrolle und Konfiguration des Speichers und von Eingabe/Ausgabeeinrichtungen zur Verfügung, wie beispielsweise des Systemspeichers 140 und des ICH 150. Der MCH 130 stellt Schnittstellenschaltungen zur Verfügung, um ein Anlegen isolierter Zugriffe bei Speicherreferenzbuszyklen, einschließlich isolierter Speicherlese- und – schreibzyklen, zu erkennen und zu bedienen. Darüber hinaus weist der MCH 130 Speicherbereichsregister (z.B. Basis- und Längenregister) auf, um den isolierten Bereich oder die isolierten Bereiche in dem Systemspeicher 140 darzustellen. Sobald er konfiguriert ist, bricht der MCH 130 jeglichen Zugriff auf einen isolierten Bereich ab, bei dem nicht der Busmodus des isolierten Zugriffs angelegt ist.

Der Systemspeicher 140 speichert Systembefehlscode und Daten. Der Systemspeicher 140 ist typischerweise mit dynamischem Speicher mit wahlfreiem Zugriff (DRAM) oder statischem Speicher mit wahlfreiem Zugriff (SRAM) implementiert. Der Systemspeicher 140 schließt den zugreifbaren physikalischen Speicher 60 (der in 1B und 1C gezeigt ist) ein. Der zugreifbare physikalische Speicher enthält ein geladenes Betriebssystem 142, den isolierten Bereich 70 (1B) oder die isolierten Bereiche 71 (1C) und einen isolierten Steuer- und Statusraum 148. Das geladene Betriebssystem 142 ist der Teil des Betriebssystems, der in den Systemspeicher 140 geladen ist. Das geladene OS 142 wird typischerweise aus einer Massenspeichereinrichtung über irgendeinen Anfangsladecode in einem Anfangsladespeicher, wie beispielsweise einem Boot-Nur-Lese-Speicher (ROM) geladen. Der isolierte Bereich 70 (1B) oder die isolierten Bereiche 71 (1C) ist bzw. sind der Speicherbereich, der durch den Prozessor 110 definiert wird, wenn dieser in dem isolierten Ausführungsmodus betrieben wird. Der Zugriff auf den isolierten Bereich bzw. die isolierten Bereiche ist eingeschränkt und wird von dem Prozessor 110 und/oder dem MCH 130 oder einem anderen Chipsatz, der die Funktionalitäten des isolierten Bereichs integriert, durchgesetzt. Der isolierte Steuer- und Statusraum 148 ist ein Eingabe/Ausgabe(I/O)-ähnlicher, unabhängiger Adreßraum, der von dem Prozessor 110 oder dem MCH 130 definiert wird. Der isolierte Steuer- und Statusraum 148 enthält hauptsächlich die Steuer- und Statusregister der isolierten Ausführung. Der isolierte Steuer- und Statusraum 148 überlappt keinen vorhandenen Adreßraum, und es wird auf ihn unter Verwendung isolierter Buszyklen zugegriffen. Der Systemspeicher 140 kann darüber hinaus weitere Programme oder Daten enthalten, welche nicht gezeigt sind.

Der ICH 150 stellt einen bekannten einzelnen Punkt im System dar, der die Funktionalität der isolierten Ausführung aufweist. Aus Gründen der Klarheit ist nur ein ICH 150 gezeigt. Das System 100 kann viele dem ICH 150 ähnliche ICHs aufweisen. Wenn es mehrere ICHs gibt, wird ein bestimmter ICH ausgewählt, um die Konfiguration und den Status des isolierten Bereichs zu kontrollieren. Bei einem Ausführungsbeispiel wird diese Auswahl durch eine externe Pin-Verbindung (strapping pin) ausgeführt. Wie es einem Fachmann bekannt ist, können andere Verfahren der Auswahl verwendet werden, einschließlich der Verwendung programmierbarer Konfigurationsregister. Der ICH 150 weist eine Reihe von Funktionen auf, die zusätzlich zu den herkömmlichen I/O-Funktionen zum Unterstützen des isolierten Ausführungsmodus entwickelt sind. Insbesondere enthält der ICH 150 eine Isolierte-Bus-Schnittstelle 152, den Prozessor-Nub-Lader 52 (der 1A gezeigt ist), einen Digest-Speicher 154, einen Speicher 155 für einen kryptografischen Schlüssel, einen logischen Verarbeitungsmanager der isolierten Ausführung 156 und eine Token-Bus-Schnittstelle 159.

Die Isolierte-Buszyklus-Schnittstelle 152 enthält eine Schaltung zum Bilden einer Schnittstelle zu den Signalen des isolierten Buszyklus, um isolierte Buszyklen, wie beispielsweise die isolierten Lese- und Schreib-Buszyklen, zu erkennen und zu bedienen. Der Prozessor-Nub-Lader 52, wie er in 1A gezeigt ist, enthält einen Prozessor-Nub-Lader-Befehlscode und seinen Digest-Wert (z.B. Hash-Wert). Der Prozessor-Nub-Lader 52 wird durch Ausführung eines geeigneten isolierten Befehls (z.B. Iso-Init) aufgerufen und in den isolierten Bereich 70 oder einen der isolierten Bereiche 71 übertragen. Aus dem isolierten Bereich kopiert der Prozessor-Nub-Lader 52 den Prozessor-Nub 18 aus dem System-Flash (z.B. den Prozessor-Nub-Code 18 im nicht-flüchtigen Speicher 160) in den isolierten Bereich 70, überprüft und protokolliert seine Integrität und verwaltet einen symmetrischen Schlüssen, der verwendet wird, um die Geheimnisse des Prozessor-Nubs zu schützen. Bei einer Ausführungsform ist der Prozessor-Nub-Lader 52 im Nur-Lese-Speicher (ROM) implementiert. Aus Sicherheitsgründen ist der Prozessor-Nub-Lader 52 unveränderbar, verfälschungssicher und nicht austauschbar. Der Digest-Speicher 154, der typischerweise in RAM implementiert ist, speichert die Digest-Werte (z.B. Hash-Werte) des geladenen Prozessor-Nubs 18, des Betriebssystem-Nubs 16 und irgendwelcher weiterer kritischer Module (z.B. Ring-0-Module), die in den Raum der isolierten Ausführung geladen sind.

Der Speicher 155 des kryptografischen Schlüssels hält einen symmetrischen Verschlüsselungs/Entschlüsselungs-Schlüssel, der der Plattform des Systems 100 eindeutig zugeordnet ist. Bei einem Ausführungsbeispiel enthält der Kryptografischer-Schlüssel-Speicher 155 interne Schmelzleiter, die bei der Herstellung programmiert werden.

Alternativ könnte der Kryptografischer-Schlüssel-Speicher 155 mit einem Zufallszahlengenerator und einer Brücke zu einem Pin erzeugt werden. Der logische Verarbeitungsmanager 156 der isolierten Ausführung verwaltet die Operation der logischen Prozessoren, die im isolierten Ausführungsmodus betrieben werden. Bei einem Ausführungsbeispiel enthält der logische Verarbeitungsmanager der isolierten Ausführung 156 ein Zählregister für logische Prozessoren, das die Anzahl der an dem isolierten Ausführungsmodus teilnehmenden logischen Prozessoren verfolgt. Die Token-Bus-Schnittstelle 159 bildet eine Schnittstelle zu dem Token-Bus 180. Eine Kombination des Digest des Prozessor-Nub-Laders, des Digest des Prozessor-Nubs, des Betriebssystem-Nub-Digest und, optional, zusätzlicher Digests repräsentiert den Gesamt-Digest der isolierten Ausführung, der als Isoliert-Digest bezeichnet wird. Der Isoliert-Digest ist ein Fingerabdruck, der den Ring-0-Befehlscode identifiziert, der die Konfiguration und den Betrieb der isolierten Ausführung steuert. Der Isoliert-Digest wird verwendet, um den Zustand der aktuellen isolierten Ausführung zu attestieren oder nachzuweisen.

Der nicht-flüchtige Speicher 160 speichert nichtflüchtige Informationen. Typischerweise ist der nicht-flüchtige Speicher 160 in Flash-Speicher implementiert. Der nicht-flüchtige Speicher 160 enthält den Prozessor-Nub 18.

Der Prozessor-Nub 18 schafft das anfängliche Einricht- und Low-Level-Management der isolierten Bereiche (in dem Systemspeicher 140) einschließlich der Überprüfung, des Ladens und der Protokollierung des Betriebssystem-Nubs 16, und die Verwaltung des symmetrischen Schlüssels, der zum Schützen der Geheimnisse des Betriebssystem-Nubs verwendet wird. Der Prozessor-Nub 18 kann darüber hinaus Anwendungsprogrammierschnittstellen(API)-Abstraktionen an Low-Level-Sicherheitsdienste, die von anderer Hardware zur Verfügung gestellt werden, zur Verfügung stellen. Der Prozessor-Nub 18 kann darüber hinaus durch den ursprünglichen Ausrüstungshersteller (OEM) oder Betriebssystemanbieter (OSV) über eine Boot-Diskette verteilt werden.

Die Massenspeichereinrichtung 170 speichert Archivinformationen, wie beispielsweise Code (z.B. Prozessor-Nub 18), Programme, Dateien, Daten, Anwendungen (z.B. Anwendungen 421 bis 42N), Applets (z.B. Applets 461 bis 46K) und Betriebssysteme. Die Massenspeichereinrichtung 170 kann eine CDROM 172, Disketten 174 und ein Festplattenlaufwerk 176 sowie beliebige andere magnetische oder optische Speichereinrichtungen einschließen. Die Massenspeichereinrichtung 170 stellt einen Mechanismus zum Lesen eines maschinen-lesbaren Mediums zur Verfügung.

Die I/O-Einrichtungen 175 können beliebige I/O-Geräte zum Ausführen von I/O-Funktionen einschließen. Beispiele der I/O-Einrichtungen 175 umfassen Controller für Eingabegeräte (z.B. Tastatur, Maus, Track-Ball, Zeigereinrichtung), Medienkarten (z.B. Audio, Video, Grafik), Netzwerkkarten und irgendwelche andere Peripheriecontroller.

Der Token-Bus 180 schafft eine Schnittstelle zwischen dem ICH 150 und verschiedenen Tokens in dem System. Ein Token ist eine Einrichtung, die spezielle Eingabe/Ausgabe-Funktionen mit Sicherheitsfunktionen ausführt. Ein Token weist Eigenschaften auf, die ähnlich einer Smartcard sind, einschließlich wenigstens eines reservierten öffentlichen/privaten Schlüsselpaars und der Fähigkeit, Daten mit dem privaten Schlüssel zu signieren. Beispiele von mit dem Token-Bus 180 verbundenen Tokens umfassen ein Mutterplatinen-Token 182, einen Token-Leser 184 und weitere transportable Tokens 186 (z.B. Smartcard). Die Token-Bus-Schnittstelle 159 in dem ICH 150 verbindet den Token-Bus 180 mit dem ICH 150 und sichert, daß dann, wenn der Nachweis des Zustands der isolierten Ausführung angewiesen wird, das entsprechende Token (z.B. das Mutterplatinen-Token 182, das Token 186) nur gültig isolierte Digest-Informationen signiert. Aus Gründen der Sicherheit sollte das Token mit dem Digest-Speicher verbunden sein.

Wenn sie in Software implementiert sind, sind die Elemente der vorliegenden Erfindung Codesegmente zum Ausführen der erforderlichen Aufgaben. Die Programm- oder Codesegmente können in einem maschinen-lesbaren Medium, wie beispielsweise einem prozessor-lesbaren Medium, gespeichert oder über ein in einer Trägerwelle enthaltenes Computerdatensignal oder ein durch einen Träger moduliertes Signal über ein Übertragungsmedium übertragen werden. Das "prozessor-lesbare Medium" kann ein beliebiges Medium umfassen, das Informationen speichern oder übertragen kann. Beispiele des prozessorlesbaren Mediums umfassen eine elektronische Schaltung, ein Halbleiterspeicherbauelement, einen ROM, einen Flash-Speicher, einen löschbaren programmierbaren ROM (EPROM), eine Diskette, eine CDROM, eine optische Platte, eine Festplatte, ein faseroptisches Medium, eine Hochfrequenz(HF)-Verbindung etc.. Das Computerdatensignal kann ein beliebiges Signal umfassen, das sich über ein Übertragungsmedium, wie beispielsweise elektronische Netzwerkkanäle, Lichtleiter, Luft, elektromagnetische Wellen, HF-Verbindungen etc. ausbreiten kann. Die Codesegmente können über Computernetzwerke, wie beispielsweise das Internet, ein Intranet etc., heruntergeladen werden.

KONTROLLIEREN DER ZUGRIFFE AUF MEHRERE ISOLIERTE SPEICHER IN EINER ISOLIERTEN AUSFÜHRUNGSUMGEBUNG

Die vorliegende Erfindung ist ein Verfahren, eine Einrichtung und ein System zum Steuern/Kontrollieren von Speicherzugriffen auf mehrere isolierte Speicher 71, wie sie in 1C gezeigt sind, in einer isolierten Ausführungsumgebung. 2A ist ein Schema, das die Isolierte-Ausführung-Schaltung 115, die in 1F gezeigt ist, gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht. Die Isolierte-Ausführung-Schaltung 115 enthält eine Kernausführungsschaltung 205, einen Zugriffsmanager 220 und einen Cache-Speichermanager 230.

Die Kernausführungseinheit 205 enthält eine Befehlsdecodierer- und -ausführungseinheit 210 und einen Übersetzungsnachschlagepuffer (TLB; Translation Lookaside Buffer) 218. Die Befehlsdecodierer- und -ausführungseinheit 210 empfängt einen Befehlstrom 215 aus einer Befehlsabrufeinheit. Der Befehlsstrom 215 enthält eine Reihe von Befehlen. Die Befehlsdecodierer- und -ausführungseinheit 210 decodiert die Befehle und führt die decodierten Befehle aus. Diese Befehle können Mikro- oder Makrobefehle sein. Die Befehlsdecodierer- und -ausführungseinheit 210 kann eine physische Schaltung oder eine Abstraktion eines Prozesses des Decodierens und der Ausführung von Befehlen sein. Darüber hinaus können die Befehle isolierte Befehle und nicht-isolierte Befehle einschließen. Die Befehlsdecodierer- und -ausführungseinheit 210 erzeugt eine virtuelle Adresse 212, wenn es eine Zugriffstransaktion gibt.

Der TLB 218 übersetzt die virtuelle Adresse 212 in eine physikalische Adresse 99. Der TLB 218 enthält einen Cache 219 der Speicherbesitz-Seitentabelle (MOPT; "Memory Ownership Page Table") 77. Der TLB 218 schlägt zunächst in dem Cache 219 nach, um die physikalische Adresse zu suchen, die mit der virtuellen Adresse 212 übereinstimmt, und einen zugehörigen Seitentabelleneintrag. Wenn die physikalische Adresse nicht in dem Cache 219 ist, durchsucht der TLB 218 dann die MOPT 77 selbst. Der TLB 218 verwendet die Basis der MOPT 221, um nach der physikalischen Adresse zu suchen. Es wird auch auf 1E Bezug genommen; beginnend mit der Basis der MOPT 221 und der Seitentabellenkomponente 91 der virtuellen Adresse 212 findet der TLB 218 den Seitentabelleneintrag 93 für die virtuelle Adresse 212. wie zuvor erörtert, enthält jeder Seitentabelleneintrag 93 die Basis der Seite 95 und ein Attribut 96 (isoliert oder nicht-isoliert) für die Seite. Unter Verwendung der Basis der Seite 95 und der Offset-Komponente 92 der virtuellen Adresse kann der TLB 218 die der virtuellen Adresse entsprechende physikalische Adresse 99 finden. Es ist klar, daß die Übersetzung der virtuellen Adressen in physikalische Adressen unter Verwendung eines TLB im Stand der Technik gut bekannt ist. Wie später erörtert wird, ist das Attribut 96 (isoliert oder nicht-isoliert) für die Seite beim Konfigurieren einer Zugriffstransaktion für die isolierte Ausführung wichtig.

Es wird wieder auf 2A Bezug genommen; die Kernausführungsschaltung 205 bildet eine Schnittstelle zu dem Zugriffsmanager 220 über Steuer/Status-Informationen 222, einen Operanden 224 und Zugriffsinformationen 226. Die Steuer/Status-Informationen 222 umfassen Steuerbits zum Manipulieren verschiedener Elemente in dem Isolierter-Buszyklus-Generator 220 und Statusdaten aus dem Zugriffsmanager 220. Der Operand 224 umfasst in den Zugriffsmanager 220 zu schreibende Daten und aus ihm zu lesende Daten. Die Zugriffsinformationen 226 umfassen Adreßinformationen (z.B. die von dem TLB 218 zur Verfügung gestellte physikalische Adresse), Lese/Schreib- und Zugriffsartinformationen.

Der Zugriffsmanager 220 empfängt die Steuer/Status-Informationen 220 und stellt diese zur Verfügung, empfängt Informationen des Operanden 224 und stellt diese zur Verfügung, empfängt die Zugriffsinformationen 226 aus der Kernausführungsschaltung 205 im Ergebnis der Befehlsausführung, empfängt ein Cache-Zugriffssignal 235 (z.B. einen Cache-Treffer) und ein Attribut 96 (isoliert oder nicht-isoliert) aus dem Cache-Speichermanager 230. Der Zugriffsmanager 220 empfängt darüber hinaus ein externes Isolierter-Zugriff-Signal 278 und ein Frontseitenbus(FSB)-Adreßinformationssignal 228 von einem anderen Prozessor in dem System. Das externe Isolierter-Zugriff-Signal 278 wird angelegt, wenn ein anderer Prozessor in dem System versucht, auf einen der isolierten Speicherbereiche zuzugreifen. Der Zugriffsmanager 220 erzeugt ein Isolierter-Zugriff-Signal 272, ein Zugriffsgewährungssignal 274 und ein Prozessor-Snoop-Zugriffssignal 276. Das Isolierter-Zugriff-Signal 272 kann verwendet werden, um einen isolierten Buszyklus 230 zu erzeugen, der an Bauelemente (z.B. Chipsätze) gesendet wird, die sich außerhalb des Prozessors 110 befinden, um anzuzeigen, daß der Prozessor 110 einen Befehl des isolierten Modus ausführt. Das Prozessor-Snoop-Zugriffssignal 276 kann durch andere Bauelemente oder Chipsätze verwendet werden, um zu bestimmen, ob ein Snoop-Zugriff ein Treffer oder ein Fehlversuch ist. Das Isolierter-Zugriff-Signal 272, das Zugriffsgewährungssignal 274 und das Prozessor-Snoop-Zugriffssignal 276 können darüber hinaus intern von dem Prozessor 110 verwendet werden, um andere isolierte oder nicht-isolierte Aktivitäten zu überwachen.

Der Cache-Speichermanager 230 empfängt die Zugriffsinformationen 226 aus der Kernausführungsschaltung 205 und erzeugt das Cache-Zugriffssignal 235 zu dem Zugriffsmanager 220. Der Cache-Speichermanager 230 enthält einen Cache-Speicher 232 zum Speichern von Cache-Informationen und weitere Schaltungen zum Verwalten von Cache-Transaktionen, wie es einem Fachmann bekannt ist. Das Cache-Zugriffssignal 235 zeigt das Ergebnis des Cache-Zugriffs an. Bei einem Ausführungsbeispiel ist das Cache-Zugriffssignal 235 ein Cache-Treffer-Signal, das angelegt wird, wenn es einen Cache-Treffer aus einem Cache-Zugriff heraus gibt:

2B ist ein Schema, das den in 2A gezeigten Zugriffsmanager gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht. Der Zugriffsmanager 220 enthält einen Konfigurationsspeicher 250 und eine Zugriffsüberprüfungsschaltung 270. Der Zugriffsmanager 220 tauscht Operandeninformationen 224 mit der in 2A gezeigten Kernausführungsschaltung 205 aus und empfängt die Zugriffsinformationen 226 aus der Schaltung. Die Operandeninformationen 224 umfassen das Attribut 96 (isoliert oder nicht-isoliert) für die der physikalischen Adresse 99 zugeordnete Seite. Der Zugriffsmanager 220 empfängt darüber hinaus das Cache-Zugriffssignal 235 aus dem Cache-Manager 230 und das externe Isolierter-Zugriff-Signal 278 und die FSB-Adreßinformationen 228 aus einem weiteren Prozessor, wie es in 2A gezeigt ist. Der Zugriffsmanager 220 empfängt ferner ein Attribut 96 (isoliert oder nicht-isoliert) aus dem Cache-Manager 230. Das Attribut ist pro Cache-Zeile vorhanden. Die Zugriffsinformationen 226 umfassen eine physikalische Adresse 99, ein Lese/Schreib(RD/WR#)-Signal 284 und eine Zugriffsart 286. Die Zugriffsinformationen 226 werden während einer Zugriffstransaktion von dem Prozessor 110 erzeugt. Die Zugriffsart 286 zeigt die Art des Zugriffs an, die eine Speicherbezugnahme, eine Eingabe/Ausgabe(I/O)-Bezugnahme und einen Logischer-Prozessor-Zugriff einschließt. Der Logischer-Prozessor-Zugriff umfasst einen Eintritt eines logischen Prozessors in einen Isoliert-Freigegeben-Zustand und eine Rücknahme eines logischen Prozessors aus einem Isoliert-Freigegeben-Zustand.

Der Konfigurationsspeicher 250 enthält Konfigurationsparameter zum Konfigurieren einer von dem Prozessor 110 erzeugten Zugriffstransaktion. Der Prozessor 110 weist einen normalen Ausführungsmodus und einen isolierten Ausführungsmodus auf. Die Zugriffstransaktion weist Zugriffsinformationen auf. Der Konfigurationsspeicher 250 empfängt die Operandeninformationen 224 aus der Befehlsdekodierer- und -Ausführungseinheit 210 (2A). Der Konfigurationsspeicher 250 enthält ein Attributregister für eine Seite 251 und ein Prozessorsteuerregister 252. Das Attributregister 251 enthält das Attribut 96 für die der physikalischen Adresse zugeordnete Seite, das entweder auf isoliert oder auf nicht-isoliert gesetzt ist. Das Prozessorsteuerregister 252 enthält ein Ausführungsmoduswort 253. Das Ausführungsmoduswort 253 wird angelegt, wenn der Prozessor 110 in den isolierten Ausführungsmodus konfiguriert ist. Bei einem Ausführungsbeispiel ist das Ausführungsmoduswort 253 ein einzelnes Bit, das anzeigt, ob der Prozessor 110 sich in dem isolierten Ausführungsmodus befindet.

Die Zugriffsüberprüfungsschaltung 270 überprüft die Zugriffstransaktionen unter Verwendung wenigstens eines der Konfigurationsparameter (z.B. des Ausführungsmoduswortes 253 und des Attributes 96) und der Zugriffsinformationen 226. Die Zugriffsüberprüfungsschaltung 270 erzeugt das Prozessor-Isolierter-Zugriff-Signal 272, das Zugriffsgewährungssignal 274 und das Prozessor-Snoop-Zugriff-Signal 276 unter Verwendung wenigstens eines der Parameter in dem Konfigurationsspeicher 250, der Zugriffsinformationen 226 in einer von dem Prozessor 110 erzeugten Transaktionen und der FSB-Adreßinformationen 228. Die FSB-Adreßinformationen 228 werden typischerweise von einem anderen Prozessor zur Verfügung gestellt und werden an dem FSB einer Snoop-Operation unterzogen. Das Isolierter-Zugriff-Signal 272 wird angelegt, wenn der Prozessor 110 in den isolierten Ausführungsmodus konfiguriert ist. Das Zugriffsgewährungssignal 274 wird verwendet, um anzuzeigen, das ein Zugriff gewährt worden ist. Das Prozessor-Snoop-Zugriffssignal 276 wird verwendet, um zu bestimmen, ob ein Zugriff aus einem anderen Prozessor zu einem Treffer oder Fehlversuch führt.

3A ist ein Schema, das die Zugriffsüberprüfungsschaltung 270 gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht. Die Zugriffsüberprüfungsschaltung 270 enthält eine TLB-Zugriffsüberprüfungsschaltung 310 und eine FSB-Snoop-Überprüfungsschaltung 330.

Die TLB-Zugriffsüberprüfungsschaltung 310 empfängt das Attribut 96 und das Ausführungsmoduswort 253 zum Erzeugen eines Zugriffsgewährungssignals 274. Das Zugriffsgewährungssignal 274 an den isolierten Bereich wird angelegt, wenn das Attribut 96 auf isoliert gesetzt ist und das Ausführungsmoduswort 253 angelegt ist, was anzeigt, das ein isolierter Zugriff gültig oder gestattet ist wie es konfiguriert ist. Bei einem Ausführungsbeispiel führt die TLB-Zugriffsüberprüfungsschaltung 310 eine logische "Exclusiv-NOR"-Operation aus. Wenn somit ein Prozessor eine physikalische Adresse eines isolierten Bereichs anfordert, wird die Zugriffstransaktion nur dann gewährt, wenn der Prozessor in dem isolierten Ausführungsmodus arbeitet und das Attribut für die der physikalischen Adresse zugeordnete Seite auf isoliert gesetzt ist.

Die FSB-Snoop-Überprüfungsschaltung 330 führt eine der TLB-Zugriffsüberprüfungsschaltung 310 ähnliche Funktionen aus. Die FSB-Snoop-Überprüfungsschaltung 330 erzeugt das Prozessor-Snoop-Zugriffssignal 276 durch Kombinieren des Cache-Zugriffssignals 235, des externen Isolierter-Zugriff-Signals 278 und des Attributs 96. Die FSB-Snoop-Überprüfungsschaltung 330 enthält einen ersten Kombinierer 342 und einen zweiten Kombinierer 344. Der erste Kombinierer 342 empfängt das Attribut 96 (isoliert oder nicht-isoliert) für die einer Snoop-Operation zu unterziehende Zeile aus dem Cache-Speichermanager 230 und das externe Isolierter-Zugriff-Signal 278 aus einem anderen Prozessor, der die Snoop-Operation ausführt. Das Attribut ist für jede Cache-Zeile vorhanden. Bei einem Ausführungsbeispiel führt der erste Kombinierer 342 eine logische "Exclusiv-NOR"-Operation aus. Der zweite Kombinierer 344 kombiniert das Ergebnis des ersten Kombinierers 342 mit dem Cache-Zugriffssignal 235 (z.B. Cache-Treffer). Bei einem Ausführungsbeispiel führt der zweite Kombinierer 344 eine logische UND-Operation aus. So kann ein Prozessor nur dann eine Zeile aus einem anderen Prozessor für einen isolierten Bereich einer Snoop-Operation unterziehen, wenn der die Snoop-Operation ausführende Prozessor in dem isolierten Ausführungsmodus arbeitet, das Attribut für die Seite auf isoliert gesetzt ist und es einen Cache-Treffer gibt. Nur wenn diese Bedingungen erfüllt sind, wird die Zugriffstransaktion gewährt und das Prozessor-Snoop-Zugriffssignal 276 für einen isolierten Bereich erzeugt.

Die FSB-Snoop-Überprüfungsschaltung 330 sichert eine richtige Funktion in einem Multi-Prozessor-System, wenn nicht sämtliche Prozessoren für Zugriffe auf einen isolierten Speicherbereich initialisiert worden sind. Das X-NOR-Element 342 sichert, daß ein Snoop-Treffer nur aus einem Prozessor auftreten kann, dem ein isolierter Zugriff ermöglicht worden ist. Wenn ein Prozessor noch nicht an den Zugriffen auf isolierte Speicherbereiche teilnimmt, so ist er nicht in der Lage, eine Zeile aus einem anderen Prozessor, der an Zugriffen auf den isolierten Speicherbereich teilhat, einer Snoop-Operation zu unterziehen. In ähnlicher Weise wird vermieden, daß ein Prozessor, der für isolierte Zugriffe freigegeben worden ist, nicht versehentlich eine Zeile aus einem anderen Prozessor, der noch nicht freigegeben worden ist, einer Snoop-Operation unterzieht.

Das Prozessor-Snoop-Zugriffssignal 276 für einen isolierten Bereich wird angelegt, um anzuzeigen, daß es einen Zugriffstreffer gibt, wenn das Cache-Zugriffssignal 235 angelegt wird, was anzeigt, das es einen Cache-Treffer gibt, und wenn das externe Isolierter-Zugriff-Signal 278 angelegt wird und das Attribut 96 auf isoliert gesetzt ist.

3B ist ein Schema, das die Zugriffsüberprüfungsschaltung 270 zum Verwalten logischer Prozessoroperationen gemäß einem weiteren Ausführungsbeispiel der Erfindung veranschaulicht. Die Zugriffsüberprüfungsschaltung 270 enthält einen Logischer-Prozessor-Manager 360.

Ein physikalischer Prozessor kann eine Reihe logischer Prozessoren enthalten. Jeder logische Prozessor kann in einen isolierten Prozessorzustand eintreten oder diesen verlassen, was als Logischer-Prozessor-Zugriff bezeichnet wird. Ein Logischer-Prozessor-Zugriff wird typischerweise erzeugt, wenn der zugehörige logische Prozessor einen Isoliert-Befehl ausführt, wie beispielsweise einen Isoliert_Eintritt (iso_enter) und ein Isoliert_Verlassen (iso_exit). Der Logischer-Prozessor-Manager 360 verwaltet eine logische Prozessoroperation, die durch den logischen Prozessorzugriff verursacht worden ist. Im Wesentlichen verfolgt der Logischer-Prozessor-Manager 360 die Anzahl der freigegebenen logischen Prozessoren in dem Prozessor. Der Logischer-Prozessor-Manager 360 enthält ein Logischer-Prozessor-Register 370, einen Logischer-Prozessor-Zustandsfreigeber 382, einen Logischer-Prozessor-Aktualisierer 380, einen Minimumdetektor 374 und einen Maximumdetektor 376. Die Logischer-Prozessor-Register 370 speichern eine Zählung logischer Prozessoren 372 zum Kennzeichnen einer Anzahl logischer Prozessoren, die gegenwärtig freigegeben sind. Der Logischer-Prozessor-Zustandsfreigeber 382 gibt einen logischen Prozessor frei, wenn der Logischer-Prozessor-Zugriff gültig ist. Der Logischer-Prozessor-Aktualisierer 380 aktualisiert die Zählung 372 logischer Prozessoren in Übereinstimmung mit dem Zugriff auf logische Prozessoren. Der Logischer-Prozessor-Aktualisierer 380 wird durch den freigegebenen Logischer-Prozessor-Zustand freigegeben. Bei einem Ausführungsbeispiel sind die Logischer-Prozessor-Register 370 und der Logischer-Prozessor-Aktualisierer 380 als Aufwärts/Abwärts-Zähler mit Freigabe implementiert. Der Minimumdetektor 374 bestimmt, ob die Logischer-Prozessor-Zählung 372 gleich einem minimalen Logischer-Prozessor-Wert (z.B. gleich Null) ist. Der Maximumdetektor 376 bestimmt, ob die Logischer-Prozessor-Zählung 372 einen maximalen Logischer-Prozessor-Wert überschreitet. Der maximale Logischer-Prozessor-Wert ist eine Zahl, die die maximale Anzahl logischer Prozessoren anzeigt, die durch den isolierten Ausführungsmodus in einem Prozessor 110 unterstützt werden können.

Der Logischer-Prozessor-Aktualisierer 380 initialisiert das Logischer-Prozessor-Register 370 beim Systemrücksetzen. Der Logischer-Prozessor-Aktualisierer 380 aktualisiert die Logischer-Prozessor-Zählung 372 in einer ersten Richtung (z.B. durch Inkrementieren), wenn die Zugriffstransaktion dem Logischer-Prozessor-Eintrag entspricht. Der Logischer-Prozessor-Aktualisierer 380 aktualisiert die Logischer-Prozessor-Zählung 372 in einer zweiten Richtung, die der ersten Richtung entgegengesetzt ist (z.B. durch Dekrementieren), wenn die Zugriffstransaktion dem Logischer-Prozessor-Verlassen oder einer Rücknahme eines logischen Prozessors entspricht. Wenn die Logischer-Prozessor-Zählung 372 gleich dem minimalen Logischer-Prozessor-Wert ist, veranlaßt der Logischer-Prozessor-Manager 360 den Prozessor 110, den Cache-Speicher 232 (2A) durch Rückschreiben in den Hauptspeicher und das Isoliert-Einstellung-Register (2A) von sämtlichen Isoliert-Informationen zu löschen, um die anfänglichen Zustände in diesen Speicherelementen wiederherzustellen. Wenn die Logischer-Prozessor-Zählung 372 den maximalen Logischer-Prozessor-Wert überschreitet, veranlaßt der Logischer-Prozessor-Manager 360 den Prozessor 110, eine Mißerfolg- oder Fehler-Bedingung zu erzeugen, weil die Gesamtzahl der logischen Prozessoren die maximale Anzahl der logischen Prozessoren, die in dem Prozessor unterstützt werden können, überschreitet.

4 ist ein Ablaufdiagramm, das einen Prozeß 400 zum Erzeugen eines Zugriffsgewährungssignals für eine isolierte Ausführung gemäß einem Ausführungsbespiel der Erfindung veranschaulicht.

Bei START verteilt der Prozeß 400 Seiten an mehrere isolierte Speicherbereiche (Block 410). Dann legt der Prozeß 400 das Ausführungsmoduswort in dem Prozessorsteuerregister an, um den Prozessor in den isolierten Ausführungsmodus zu konfigurieren (Block 420). Der Prozeß 400 empfängt dann Zugriffsinformationen aus einer Zugriffstransaktion aus einem Prozessor (Block 425). Die Zugriffsinformationen schließen eine physikalische Adresse (wie sie von dem TLB zur Verfügung gestellt wird), ein Attribut (isoliert/nicht-isoliert) für die Seite und einen Zugriffstyp ein. Als nächstes bestimmt der Prozeß 400, ob das Attribut auf isoliert gesetzt ist und ob das Ausführungsmoduswort angelegt ist (was ein Setzen auf isoliert anzeigt) (Block 430). Wenn dies nicht der Fall ist, erzeugt der Prozeß 400 eine Mißerfolg- oder Fehler-Bedingung (Block 435) und wird dann beendet. Anderenfalls legt der Prozeß 400 das Zugriffsgewährungssignal an (Block 440). Dann ist der Prozeß 400 beendet.

5 ist ein Ablaufdiagramm, das einen Prozeß 500 zum Verwalten Prozeß-Logischer-Prozessor-Operationen für eine isolierte Ausführung gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

Bei START initialisiert der Prozeß 500 das Logischer-Prozessor-Register, wenn es keinen freigegebenen logischen Prozessor gibt (Block 510). Dann führt der Prozeß 500 einen Logischer-Prozessor-Zugriffsbefehl aus (z.B. iso_enter, iso_exit). Der Logischer-Prozessor-Zugriffsbefehl legt das Ausführungsmoduswort an. Als nächstes gibt der Prozeß 500 den Logischer-Prozessor-Zustand frei (Block 525). Dann bestimmt der Prozeß 500 den Logischer-Prozessor-Zugriffstyp (Block 530).

Wenn der Logischer-Prozessor-Zugriffstyp ein Logischer-Prozessor-Eintritt ist, aktualisiert der Prozeß 500 die Zählung logischer Prozessoren in eine erste Richtung (z.B. inkrementierend) (Block 540). Dann bestimmt der Prozeß 500, ob die Zählung logischer Prozessoren den Maximalwert logischer Prozessoren überschreitet (Block 550). Wenn dies nicht der Fall ist, geht der Prozeß 500 zum Block 570. Anderenfalls erzeugt der Prozeß 500 eine Mißerfolg- oder Fehler-Bedingung (Block 560) und wird dann beendet.

Wenn der Logischer-Prozessor-Zugriffstyp ein Verlassen eines logischen Prozessors oder eine Zurücknahme eines logischen Prozessors ist, aktualisiert der Prozeß 500 die Zählung logischer Prozessoren in einer zweiten Richtung, die der ersten Richtung entgegengesetzt ist (z.B. dekrementierend) (Block 545). Dann bestimmt der Prozeß 500, ob die Zählung logischer Prozessoren gleich dem Minimalwert (z.B. Null) ist (Block 555). Wenn dies nicht der Fall ist, geht der Prozeß 500 zum Block 570. Anderenfalls initialisiert der Prozeß 500 den Cache-Speicher und das Isoliert-Einstellung-Register durch Löschen sämtlicher Isoliert-Informationen (Block 565).

Als nächstes bestimmt der Prozeß 500, ob es einen nächsten Logischer-Prozessor-Zugriff gibt (Block 570). Wenn es einen nächsten Logischer-Prozessor-Zugriff gibt, kehrt der Prozeß 500 zum Block 520 zurück, um einen Logischer-Prozessor-Zugriffsbefehl auszuführen. Wenn keinen weiteren Logischer-Prozessor-Zugriff gibt, wird der Prozeß 500 beendet.

STEUERN VON ZUGRIFFEN AUF MEHRERE ISOLIERTE SPEICHER UNTER VERWENDUNG EINES SPEICHER-CONTROLLERS IN EINER ISOLIERTEN AUSFÜHRUNGSUMGEBUNG

Die obige Beschreibung bezieht sich auf den Prozeß der isolierten Ausührung in dem Prozessor 110. Zugriffe auf mehrere isolierte Speicherbereiche 71, die in 1C gezeigt sind, werden darüber hinaus von dem MCH 130 (1F) kontrolliert/gesteuert. Gemäß 1F betrachtet der Prozessor 110 den MCH 130 als eine Eingabe/Ausgabe-Einrichtung, die in einen Adreßort abgebildet ist. Um auf den isolierten Speicherbereich 70 und insbesondere auf die mehreren isolierten Speicherbereiche 71 (1C) zugreifen zu können, muß der Prozessor 110 den Speicherkonfigurationsspeicher in dem MCH 130 entsprechend konfigurieren. Der MCH 130 enthält darüber hinaus Steuerfunktionen, um es dem Prozessor 110 zu ermöglichen, auf den Speicher 140 in den mehreren nicht-isolierten Speicherbereichen 83 (1C) ebenso zuzugreifen. Der MCH 130 empfängt Signale aus dem Prozessor 110 über den Host-Bus 120, wie beispielsweise das Isolierter-Zugriff-Signal oder die Buszyklusinformationen.

In 1F ist der MCH 130 außerhalb des Prozessors 110 gezeigt. Es ist jedoch möglich, daß der MCH 130 in den Prozessor 110 aufgenommen wird. In diesem Fall wird ein Schreib-Zyklus in die Register in dem MCH 130 extern gemacht, um es irgendeinem externen Cache zu ermöglichen, aus Gründen der Cache-Kohärenz daran teilzuhaben.

Im wesentlichen führt die Zugriffssteuereinrichtung in dem MCH 130 eine ähnliche Funktion wie die Zugriffsüberprüfungsschaltung 270 aus, die in 3A gezeigt ist. Durch Aufrechterhalten einer Zugriffskonsistenz in sowohl dem Prozessor 110 als auch dem MCH 130 kann das Zugreifen auf den Speicher genau kontrolliert werden. Die Zugriffssteuereinrichtung in dem MCH 130 bestimmt, ob eine Zugriffstransaktion aus dem Prozessor 110 gültig ist. Wenn sie es ist, gibt die Zugriffssteuereinrichtung ein Zugriffsgewährungssignal zurück, um einen Abschluß der Zugriffstransaktion zu ermöglichen. Anderenfalls wird eine Mißerfolgs- oder Fehlerbedingung erzeugt. Darüber hinaus schützt die Zugriffssteuereinrichtung in dem MCH 130 auch vor irgendeiner absichtlichen oder versehentlichen Schreiboperation zu ihrem eigenen Konfigurations- und Steuerspeicher. Da der MCH 130 eine direkte Schnittstelle zu dem Speicher 140 aufweist, sorgt die Zugriffssteuereinrichtung außerdem für die Initialisierung des Inhalts der isolierten Speicherbereiche und seines eigenen internen Speichers beim Rücksetzen.

6 ist ein Schema, das die Zugriffssteuereinrichtung 135 des isolierten Bereichs in dem Speicher-Controller-Hub (MCH) 130, der in 1F gezeigt ist, gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht. Die Zugriffssteuereinrichtung 135 enthält einen Konfigurationsspeicher 610, eine Konfigurationssteuereinrichtung 640 und eine MCH-Zugriffsüberprüfungsschaltung 810.

Der Konfigurationsspeicher 610 konfiguriert eine Zugriffstransaktion, die von dem Prozessor 110, der in 1F gezeigt ist, erzeugt wird. Der Prozessor 110 weist einen normalen Ausführungsmodus und einen isolierten Ausführungsmodus auf. Die Zugriffstransaktion weist Zugriffsinformationen 660 auf. Die Zugriffsinformationen 660 werden über den Host-Bus 120 (1F) geführt und umfassen Adreßinformationen und einen Isolierter-Zugriff-Zustand. Die Adreßinformationen werden durch eine physikalische Adresse 662 dargestellt. Der Isolierter-Zugriff-Zustand wird durch das Isolierter-Zugriff-Signal 664 dargestellt. Das Isolierter-Zugriff-Signal 664 ist im wesentlichen dem Prozessor-Isolierter-Zugriff-Signal 272, das in 2A gezeigt ist, äquivalent. Das Isolierter-Zugriff-Signal 664 wird angelegt, wenn der Prozessor 110 eine gültige Bezugnahme (Referenz) auf einen der mehreren isolierten Speicherbereiche 71 (die in 1C gezeigt sind) erzeugt.

Der Konfigurationsspeicher 610 enthält einen Cache 660 der Speicherbesitz-Seitentabelle (MOPT) 77. Der Konfigurationsspeicher 610 führt ein Nachschlagen nach der physikalischen Adresse 662 in dem Cache 660 durch, um nach der physikalischen Adresse und einem zugehörigen Seitentabelleneintrag zu suchen. Wenn sich die physikalische Adresse nicht in dem Cache 219 befindet, führt der Konfigurationsspeicher 610 dann ein Nachschlagen nach der physikalischen Adresse 662 in der MOPT 77 (1E) selbst durch. Der Konfigurationsspeicher 610 verwendet die Basis der MOPT 221, um nach der physikalischen Adresse 662 in der MOPT 77 zu suchen. Es wird auch auf 1E Bezug genommen; beginnend mit der Basis der MOPT 221 führt der Konfigurationsspeicher 610 ein Nachschlagen in der MOPT 77 durch und findet den der physikalischen Adresse 662 zugeordneten Seitentabelleneintrag 93. Der Konfigurationsspeicher 610 kann die physikalischen Adressen der Seiten 98 durchsuchen, um den der physikalischen Adresse zugeordneten Seitentabelleneintrag 93 zu lokalisieren. Jeder Seitentabelleneintrag 93 enthält ein Attribut 96 (isoliert oder nicht-isoliert) für die der physikalischen Adresse zugeordnete Seite, welches zum Konfigurieren einer Zugriffstransaktion für der MCH 130 wichtig ist. Es ist klar, daß das Durchführen eines Nachschlagens in eine Seitentabelle zum Lokalisieren einer physikalischen Adresse und eines zugehörigen Seitentabelleneintrags im Stand der Technik gut bekannt ist und daß weitere Verfahren zum Durchführen des Nachschlagens dem Fachmann gut bekannt sind.

Der Konfigurationsspeicher 250 enthält außerdem Konfigurationsparameter zum Konfigurieren einer von dem MCH 130 erzeugten Zugriffstransaktion. Der Konfigurationsspeicher enthält ein Attributregister 611, das das Attribut 96 für die der physikalischen Adresse zugeordnete Seite enthält, das entweder auf isoliert oder auf nicht-isoliert gesetzt ist und durch das Nachschlagen gefunden wird. Wie oben erörtert, ist der isolierte Speicherbereich 71 für den Prozessor 110 nur in dem isolierten Ausführungsmodus zugreifbar.

Die Konfigurationssteuereinrichtung 640 steuert den Zugriff auf den Konfigurationsspeicher 610 und stellt einige Steuerfunktionen für den Speicher 140 zur Verfügung.

Die MCH-Zugriffsüberprüfungsschaltung 810 erzeugt ein Zugriffsgewährungssignal 652 unter Verwendung der Zugriffsinformationen 660, des Attributs 96 des Isolierter-Zugriff-Signals 664 und der Isolierter-Speicher-Priorität 736. Das Zugriffsgewährungssignal 652 zeigt an, ob die Zugriffstransaktion gültig ist. Das Zugriffsgewährungssignal 652 kann von dem Prozessor 110 oder anderen Chipsätzen oder Peripherieeinrichtungen verwendet werden, um zu bestimmen, ob ein Versuch zum Zugreifen auf den isolierten Speicherbereich 71 gewährt worden ist.

7 ist ein Schema, das die in 6 gezeigte MCH-Zugriffsüberprüfungsschaltung 810 gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

Die MCH-Zugriffs-Überprüfungsschaltung 810 erzeugt ein Zugriffsgewährungssignal 652 auf der Grundlage des Attributs 96 und des Isolierter-Zugriff-Signals 664. Das Zugriffsgewährungssignal 652 zeigt an, ob die Zugriffstransaktion gültig ist. Die MCH-Zugriffsüberprüfungsschaltung 810 empfängt das Attribut 96 und das Isolierter-Zugriff-Signal 664, um ein Zugriffsgewährungssignal 652 zu erzeugen. Das Zugriffsgewährungssignal 652 für den isolierten Bereich wird angelegt, wenn das Attribut 96 auf isoliert gesetzt ist und das Isolierter-Zugriff-Signal 664 angelegt ist, was anzeigt, daß ein isolierter Zugriff gültig oder gestattet ist, wie es konfiguriert ist. Bei einem Ausführungsbeispiel führt die MCH-Zugriffsüberprüfungsschaltung 810 eine logische "Exklusiv-NOR"-Operation aus. Wenn somit ein Prozessor eine physikalische Adresse eines isolierten Bereichs anfordert, wird die Zugriffstransaktion nur dann gewährt, wenn der Prozessor in dem isolierten Ausführungsmodus arbeitet und das Attribut für die der physikalischen Adresse zugeordnete Seite auf isoliert gesetzt ist.

8 ist ein Ablaufdiagramm, das einen Prozeß 800 zum Erzeugen eines Zugriffsgewährungssignals für eine isolierte Ausführung für einen MCH gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.

Bei START konfiguriert der Prozeß 800 eine Zugriffstransaktion für der MCH (Block 810). Dann empfängt der Prozeß 800 Zugriffsinformationen aus einer Zugriffstransaktion (Block 820). Die Zugriffsinformationen umfassen eine physikalische Adresse, ein Isolierter-Zugriff-Signal und ein Attribut (isoliert/nicht-isoliert) für die Seite. Als nächstes bestimmt der Prozeß 800, ob das Attribut auf isoliert gesetzt ist und ob das Isolierter-Zugriff-Signal angelegt ist (Block 830). Wenn dies nicht der Fall ist, erzeugt der Prozeß 800 eine Mißerfolgs- oder Fehlerbedingung (Block 835) und wird dann beendet. Anderenfalls legt der Prozeß 800 das Zugriffsgewährungssignal an (Block 840). Dann ist der Prozeß 800 beendet.

Während diese Erfindung unter Bezugnahme auf veranschaulichende Ausführungsbeispiele beschrieben worden ist, soll diese Beschreibung nicht in einem einschränkenden Sinne ausgelegt werden. Verschiedene Modifikationen der veranschaulichenden Ausführungsbeispiele sowie weitere Ausführungsbeispiele der Erfindung, welche Fachleuten klar werden, an welche sich die Erfindung richtet, werden als im Geist und Umfang der Erfindung liegend angesehen.


Anspruch[de]
  1. Eine Einrichtung zum Steuern von Speicherzugriffen, aufweisend:

    einen Prozessor mit einem normalen Ausführungsmodus und einem isolierten Ausführungsmodus, wobei der Prozessor in dem isolierten Ausführungsmodus eine Unterstützung für eine isolierte Ausführung zur Verfügung stellt, die das Festlegen isolierter Speicherbereiche, das Unterstützen isolierter Befehle und das Sicherstellen, daß auf die isolierten Speicherbereiche nur im isolierten Ausführungsmodus zugegriffen werden kann, einschließt;

    einen Seitenmanager, der unter der Kontrolle des im isolierten Ausführungsmodus befindlichen Prozessors arbeitet, um eine Mehrzahl von Seiten auf eine Mehrzahl verschiedener Bereiche eines Speichers zu verteilen, wobei der Speicher in nicht-isolierte Bereiche und isolierte Bereiche unterteilt ist, wobei der Seitenmanager in einem isolierten Bereich des Speichers angeordnet ist; und

    eine Speicherbesitz-Seitentabelle, die in einem isolierten Bereich des Speichers angeordnet ist, wobei die Speicherbesitz-Seitentabelle jede Seite des Speichers beschreibt, wobei eine Beschreibung einer Seite in der Speicherbesitz-Seitentabelle eine Speicheradresse und ein Attribut umfaßt, wobei das Attribut die Seite als Seite eines isolierten oder eines nicht-isolierten Speicherbereichs definiert, wobei die Beschreibung sowohl bei isolierten als auch bei nicht-isolierten Zugriffs-Transaktionen verwendet wird.
  2. Die Einrichtung nach Anspruch 1, wobei der Seitenmanager einer Seite ein Isoliert-Attribut zuweist, wenn die Seite an einen isolierten Bereich des Speichers verteilt wird.
  3. Die Einrichtung nach Anspruch 2, wobei der Seitenmanager der Seite ein Nicht-Isoliert-Attribut zuweist, sofern die Seite zu einem nicht-isolierten Bereich des Speichers verteilt wird.
  4. Die Einrichtung nach Anspruch 3, ferner aufweisend:

    einen Konfigurationsspeicher, der Konfigurationseinstellungen enthält, um eine von dem Prozessor erzeugte Zugriffstransaktion zu konfigurieren, wobei die Zugriffstransaktion Zugriffsinformationen aufweist; und

    eine mit dem Konfigurationsspeicher gekoppelte Zugriffsüberprüfungsschaltung zum Überprüfen der Zugriffstransaktion unter Verwendung zumindest der Konfigurationseinstellungen und der Zugriffsinformationen.
  5. Die Einrichtung nach Anspruch 4, wobei die Konfigurationseinstellungen das Attribut für eine Seite und ein Ausführungsmoduswort einschließen.
  6. Die Einrichtung nach Anspruch 5, wobei die Zugriffsinformationen eine physikalische Adresse und einen Zugriffstyp umfassen, wobei der Zugriffstyp anzeigt, ob die Zugriffstransaktion ein Speicherzugriff, ein Eingabe/Ausgabe-Zugriff oder ein Logischer-Prozessor-Zugriff ist.
  7. Die Einrichtung nach Anspruch 5, wobei der Konfigurationsspeicher ferner einen Attributspeicher zum Aufnehmen eines eine Seite als isolierte oder nicht-isolierte definierenden Attributs für die Seite aufweist.
  8. Die Einrichtung nach Anspruch 5, wobei der Konfigurationsspeicher ferner ein Prozessorsteuerregister zum Aufnehmen des Ausführungmodusworts aufweist, wobei das Ausführungsmoduswort angelegt wird, wenn der Prozessor in den isolierten Ausführungsmodus konfiguriert wird.
  9. Die Einrichtung nach Anspruch 5, wobei die Zugriffsüberprüfungsschaltung eine TLB-Zugriffsüberprüfungsschaltung aufweist, um zu erfassen, ob das Attribut für die Seite auf isoliert gesetzt und das Ausführungsmoduswort angelegt ist, wobei die TLB-Zugriffsüberprüfungsschaltung ein Zugriffsgewährungssignal erzeugt.
  10. Die Einrichtung nach Anspruch 5, wobei die Zugriffsüberprüfungsschaltung eine mit einem Cache gekoppelte FSB-Snoop-Überprüfungsschaltung aufweist, wobei die FSB-Snoop-Überprüfungsschaltung das Attribut, ein externes Isolierter-Zugriff-Signal aus einem anderen Prozessor und ein Cache-Zugriffssignal kopiert, wobei die FSB-Snoop-Überprüfungsschaltung ein Prozessor-Snoop-Zugriffssignal erzeugt.
  11. Ein Verfahren zum Steuern von Speicherzugriffen, umfassend:

    Verteilen einer Mehrzahl von Seiten auf eine Mehrzahl verschiedener Bereiche eines Speichers unter Verwendung eines Seitenmanagers, der unter der Steuerung eines Prozessors mit einem normalen Ausführungsmodus und einem isolierten Ausführungsmodus arbeitet, wobei der Speicher in nicht-isolierte Bereiche und isolierte Bereiche unterteilt ist, wobei der Seitenmanager in einem isolierten Speicherbereich angeordnet ist, wobei der Prozessor in dem isolierten Ausführungsmodus eine Unterstützung für eine isolierte Ausführung zur Verfügung stellt, die das Festlegen isolierter Speicherbereiche, die Unterstützung isolierter Befehle und das Sicherstellen, daß auf die isolierten Speicherbereiche nur im isolierten Ausführungsmodus zugegriffen werden kann, einschließt; und

    Erzeugen einer Beschreibung für jede Seite des Speichers in einer Speicherbesitz-Seitentabelle, wobei eine Beschreibung einer Seite in der Speicherbesitz-Seitentabelle eine Speicheradresse und ein Attribut umfaßt, wobei das Attribut die Seite als Seite eines isolierten Speicherbereichs oder eines nicht-isolierten Speicherbereichs definiert, wobei die Beschreibung für isolierte und normale Transaktionen verwendet wird.
  12. Das Verfahren nach Anspruch 11, wobei das Beschreiben jeder Seite des Speichers das Zuweisen eines Isoliert-Attributs zu einer Seite, wenn die Seite zu einem isolierten Bereich des Speichers verteilt wird, umfaßt.
  13. Das Verfahren nach Anspruch 12, wobei das Beschreiben jeder Seite des Speichers das Zuweisen eines Nicht-Isoliert-Attributs zu einer Seite, wenn die Seite zu einem nicht-isolierten Bereich des Speichers verteilt wird, umfaßt.
  14. Das Verfahren nach Anspruch 13, ferner umfassend:

    Konfigurieren einer Zugriffstransaktion, die von einem Prozessor erzeugt wird, der einen Konfigurationsspeicher aufweist, der Konfigurationseinstellungen enthält, wobei der Prozessor einen normalen Ausführungsmodus und einen isolierten Ausführungsmodus aufweist, wobei die Zugriffstransaktion Zugriffsinformationen aufweist; und

    Überprüfen der Zugriffstransaktion durch eine Zugriffsüberprüfungsschaltung unter Verwendung wenigstens einer der Konfigurationseinstellungen und der Zugriffsinformationen.
  15. Das Verfahren nach Anspruch 14, wobei die Konfigurationseinstellungen das Attribut für eine Seite und ein Ausführungsmoduswort einschließen.
  16. Das Verfahren nach Anspruch 15, wobei die Zugriffsinformationen einen physikalische Adresse und einen Zugriffstyp umfassen, wobei der Zugriffstyp anzeigt, ob die Zugriffstransaktion ein Speicherzugriff, ein Eingabe/Ausgabe-Zugriff oder ein Logischer-Prozessor-Zugriff ist.
  17. Das Verfahren nach Anspruch 15, wobei das Konfigurieren der Zugriffstransaktion ferner umfaßt:

    Setzen des Attributs für die Seite als isoliert oder nicht-isoliert; und

    Speichern des Attributs in einem Attributspeicher innerhalb des Konfigurationsspeichers.
  18. Das Verfahren nach Anspruch 15, wobei das Konfigurieren der Zugriffstransaktion das Anlegen des Ausführungsmoduswort, das in einem Prozessorsteuerregister gespeichert ist, wenn der Prozessor in dem isolierten Ausführungsmodus konfiguriert ist, umfaßt.
  19. Das Verfahren nach Anspruch 15, wobei das Überprüfen der Zugriffstransaktion umfaßt:

    Erfassen, ob das Attribut für die Seite auf isoliert gesetzt ist;

    Erfassen, ob das Ausführungsmoduswort angelegt ist; und

    Erzeugen eines Zugriffsgewährungssignals.
  20. Das Verfahren nach Anspruch 15, wobei das Überprüfen der Zugriffstransaktion umfaßt:

    Kombinieren des Attributs, eines externen Isolierter-Zugriff-Signals aus einem weiteren Prozessor und eines Cache-Zugriffssignals; und

    Erzeugen eines Prozessor-Snoop-Zugriffssignals.
Es folgen 14 Blatt Zeichnungen






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com