-
Diese Erfindung bezieht sich auf ein Computersystem mit wenigstens einem Prozessor, einem Systemspeicher und einem mit dem Prozessor und dem Systemspeicher gekoppelten Chipsatz, der eine mit dem Systemspeicher gekoppelte Zugriffssteuereinrichtung enthält.
-
Fortschritte bei Mikroprozessoren und in der Kommunikationstechnologie eröffneten viele Möglichkeiten für Anwendungen, die über die herkömmlichen Wege der Ausführung von Geschäften hinausgehen. Elektronischer Handel (E-commerce) und Business-to-Business(B2B)-Transaktionen werden jetzt populär, wobei sie die globalen Märkte bei einer schnellen Rate erreichen. Während moderne Mikroprozessorsysteme den Benutzern bequeme und effiziente Verfahren der Ausführung von Geschäften, der Kommunikation und der Transaktionen zur Verfügung stellen, sind sie unglücklicherweise auch für skrupellose Angriffe anfällig. Beispiele dieser Angriffe umfassen Viren, ein Eindringen, eine Sicherheitsverletzung und eine Verfälschung, um nur einige wenige zu nennen. Die Computersicherheit wird folglich zunehmend wichtiger, um die Integrität der Computersysteme zu schützen und das Vertrauen der Benutzer zu erhöhen.
-
Durch skrupellose Angriffe verursachte Gefahren können eine Reihe von Formen annehmen. Angriffe können aus der Ferne ausgeführt werden, ohne physikalische Zugriffe zu erfordern. Ein eindringender ferngestarteter Angriff durch Hacker kann den normalen Betrieb eines Systems stören, das mit Tausenden oder gar Millionen von Benutzern verbunden ist. Ein Virusprogramm kann Code und/oder Daten einer Einzelbenutzerplattform zerstören.
-
Vorhandene Techniken zum Schützen gegen Angriffe weisen eine Reihe von Nachteilen auf. Antivirenprogramme können nur nach bekannten Viren suchen und diese erfassen. Die meisten Antivirenprogramme verwenden eine schwache Vorgehensweise, bei welcher eine Datei oder ein Programm als gut gilt, solange sie sich nicht als schlecht herausstellt. Bei vielen Sicherheitsanwendungen könnte es sein, daß diese schwache Vorgehensweise nicht ausreichend ist. Darüber hinaus werden die meisten Antivirenprogramme lokal dort, wo sie sich in der Plattform aufhalten, verwendet. Dies kann in einer Gruppenarbeitsumgebung möglicherweise nicht geeignet sein. Sicherheitscoprozessoren oder Smart-Cards, die kryptographische oder andere Sicherheitstechniken verwenden, haben Grenzen bezüglich der Geschwindigkeit, Leistungsfähigkeit, Speicherkapazität und Flexibilität. Eine Neuentwicklung von Betriebssystemen schafft Softwarekompatibilitätsprobleme und verursacht enorme Investitionen bei den Entwicklungsbemühungen.
-
Im Stand der Technik sind diverse Schutzmechanismen bekannt.
US 5,522,075 A beschreibt ein Computersystem mit virtueller Speicheradressierung und mit einem Schutzmechanismus mit mehreren hierarchisch angeordneten Schutz- oder Privilegringen. Je nach Privilegniveau kann ein Programm auf unterschiedliche Speicherbereiche zugreifen. Zusätzlich umfasst das Computersystem mehrere virtuelle Maschinen (VM) (als virtuelle Duplikate einer darunterliegenden realen Maschine) unter der Kontrolle eines „Virtual Machine Monitor“ (VMM), der die Ressourcen des realen Computersystems multiplext. Damit sowohl der VMM als auch die VM ein Zugriff auf alle Schutzmodi oder -ringe ermöglicht wird, schlägt die Druckschrift vor, die Schutzringe zu verdoppeln, den VMM in einem isolierten Adressraum unterzubringen und durch ein spezielles VM-Bit anzuzeigen, ob ein gerade ausführendes Programm sich in einer VM oder im VMM befindet, wobei jeweils verschiedene Adressübersetzungen virtueller Adressen in physikalische verwendet werden.
-
US 5,628,023 Druckschrift offenbart einen Computer mit einem virtuellen Speicher, über den ein geschützter Zugriff auf einen realen Speicher des Computersystems zur Verfügung gestellt wird. Einem Programm wird der Zugriff auf die gesicherten Seiten des Speichers erlaubt, wenn es sich durch ein entsprechendes Token ausweisen kann. Ein Prozessor umfasst eine mit einem Systemspeicher gekoppelte Zugriffssteuereinrichtung (address translation and protection verification facility), die eine von dem Prozessor ausgegebene virtuelle Adresse in eine reale Adresse übersetzt und ein von dem Prozessor gleichzeitig ausgegebenes Token mit einem in Zuordnung zu dem (an der realen Adresse befindlichen) Speicherplatz gespeichertes Token vergleicht und bei Übereinstimmung den Zugriff gestattet.
-
In dem Artikel von William A. Arbaugh et al., „A secure and reliable bootstrap architecture", in Proceedings IEEE Symposium on Security and Privacy, 1997, sowie in der Dissertation von William A. Arbaugh, „Chaining Layered Integrity Checks“, University of Pennsylvania, 1999, wird ein spezieller Bootprozess (AEGIS) beschrieben, bei dem der gesamte ausführbare Code vor der Ausführung über eine digitale Signatur verifiziert wird. Beim Booten des Computers wird zunächst ein in einem ROM gespeicherter erster Abschnitt des BIOS ausgeführt, der nach einer Standard-Prüfsummenberechnung zur Erkennung von ROM-Fehlern einen kryptographischen Hashwert eines zweiten Abschnitts des BIOS berechnet und diesen mit einem gespeicherten Wert (Signatur) vergleicht. Bei gültiger Sinatur wird der zweite BIOS-Abschnitt aufgerufen und abgearbeitet. Dieser wiederum berechnet Hashwerte von in Erweiterungskarten-ROM enthaltenen Programmen und vergleicht diese mit gespeicherten Signaturen. Anschließend wird die Kontrolle an den auf gleiche Weise zuvor geprüften Bootstrapcode des Betriebssystems übergeben. Der Bootstrapcode prüft den Bootblock eines bootfähigen Geräts und übergibt dann die Kontrolle an den Bootblock. Dann wird das Kernel des Betriebssystems geprüft, bevor an dieses die Kontrolle übergeben wird.
-
Eine ähnliche Vorgehensweise ist aus
US 5,421,006 A bekannt. Hier wird zusätzlich ein Hardware-Latch (RS-Flipflop) verwendet, um den Schreibzugriff auf einen nicht-flüchtigen Speicher, der Daten zur Überprüfung der Integrität einer Start- oder Initialisierungssoftware speichert, zunächst nach dem Rücksetzen oder Starten zu gestatten (Flipflop gesetzt, gibt Signal an Schreibeingang des Speichers frei) und dann durch die Abarbeitung der sicheren Initialisierungssoftware zu sperren (Flipflop zurückgesetzt, sperrt Signal an Schreibeingang des Speichers). Ein Wieder-Setzen des Flipflops ist nur durch Anlegen des Reset-Signals, also Neustart möglich, nicht durch Software. Der Schreibzugriff auf den nichtflüchtigen Speicher wird gesperrt, nachdem in ihm die Daten zur Überprüfung der Integrität der Initialisierungssoftware gespeichert worden sind.
-
Auch aus dem Artikel von Sean W. Smith und Steve Weingart, „Building a high-performance, programmable secure coprocessor“, in Computer Networks, Vol. 31, 1999, S. 831–860, ist eine ähnliche Vorgehensweise bekannt. Anstelle eines Latch in Form eines RS-Flipflops wird hier ein mit Hilfe eines zusätzlichen kleinen Mikrocontrollers realisierter, „Ratchet“ („Sperrklinke“) genannter Mechanismus verwendet, bei dem in einem Register des Mikrocontrollers ein Wert gespeichert wird, der bei einem Hardware-Reset auf null initialisiert und dann nach Aufruf jeweils einer weiteren Ebene der Boot- und Betriebssystem-Software inkrementiert wird, aber niemals dekrementiert oder zurückgesetzt werden kann. In Abhängigkeit vom aktuellen „Ratchet“-Wert ermöglicht oder sperrt der Mikrocontroller dann den Zugriff auf Speicherseiten eines BBRAM und Segmente eines geschützten Flash-Speichers.
-
Das Signieren von ausführbaren Dateien (Programmdateien) nach ihrer Herstellung und die spätere wiederholte Prüfung der Signatur vor dem Ausführen der Datei zur Reduktion der Gefahr einer Ausbreitung eines Computervirus ist bereits aus dem Artikel von Maria M. Pozzi und Terence E. Gray, „A Model for the Containment of Computer Viruses“, 2nd Aerospace Computer Security Conference, Meeting Paper Archive, American Institute of Aeronautics and Astronautics, Inc., 1986, bekannt.
-
Ausgehend von diesem Stand der Technik ist es eine Aufgabe der Erfindung, mit einer höheren Sicherheit zu gewährleisten, dass bei einem Computersystem unabhängig von und zusätzlich zu herkömmlichen Schutzmechanismen, wie z.B. die Ausführung von Software auf verschiedenen Privilegierungsniveaus und davon abhängige Einschränkungen des Zugriffs auf Speicherbereiche, auf sicherheitsrelevante Bereiche des Systemspeichers nur dann zugegriffen werden kann, wenn sich der die zugreifende Software abarbeitende Prozessor in einem entsprechenden besonderen isolierten Modus befindet.
-
Diese Aufgabe wird erfindungsgemäß durch ein Computersystem mit den Merkmalen des Anspruchs 1 gelöst. Vorteilhafte und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
-
Die Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung der vorliegenden Erfindung klar, in welcher:
-
1A ein Schema ist, das eine logische Betriebsarchitektur des erfindungsgemäßen Computersystems veranschaulicht.
-
1B ist ein Schema, das die Zugreifbarkeit verschiedener Elemente in dem Betriebssystem und dem Prozessor des erfindungsgemäßen Computersystems veranschaulicht.
-
1C ist ein Schema, das ein Ausführungsbeispiel es erfindungsgemäßen Computersystems veranschaulicht.
-
2A ist ein Schema, das die Isolierte-Ausführung-Schaltung, die in 1C gezeigt ist, veranschaulicht.
-
2B ist ein Schema, das den in 2A gezeigten Zugriffsmanager veranschaulicht.
-
3A ist ein Schema, das die Zugriffsüberprüfungsschaltung zum Verwalten von Snoop-Zugriffen veranschaulicht.
-
3B ist ein Schema, das die Zugriffsüberprüfungsschaltung zum Verwalten Logischer-Prozessor-Operationen veranschaulicht.
-
4 ist ein Ablaufdiagramm, das einen Prozess zum Verwalten von Snoop-Zugriffen für die isolierte Ausführung veranschaulicht.
-
5 ist ein Ablaufdiagramm, das einen Prozess zum Verwalten Logischer-Prozessor-Operationen für eine isolierte Ausführung veranschaulicht.
-
6 ist ein Schema, das die Isolierter-Bereich-Zugriffskontrolle in dem Speicher-Controller-Hub (MCH), der in 1C gezeigt ist, gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.
-
7 ist ein Schema, das eine Konfigurationssteuereinrichtung, die in 6 gezeigt ist, gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.
-
8 ist ein Schema, das einen Zugriffsgewährungsgenerator, der in 6 gezeigt ist, gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.
-
9 ist ein Ablaufdiagramm, das einen Prozess zum Kontrollieren des Zugriffs auf den Speicher gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.
-
ARCHITEKTURÜBERBLICK
-
Ein Prinzip zum Bereitstellen einer Sicherheit in einem Computersystem oder einer Plattform ist das Konzept einer Architektur der isolierten Ausführung. Die Isolierte-Ausführung-Architektur umfasst logische und physikalische Definitionen von Hardware- und Softwarekomponenten, die direkt oder indirekt mit einem Betriebssystem des Computersystems oder der Plattform interagieren. Ein Betriebssystem und der Prozessor können verschiedene Ebenen der Hierarchie aufweisen, die als Ringe bezeichnet werden und verschiedenen Betriebsmodi entsprechen. Ein Ring ist eine logische Unterteilung von Hardware- und Softwarekomponenten, der so ausgebildet ist, dass er spezielle Aufgaben in dem Betriebssystem ausführt. Die Unterteilung basiert typischerweise auf dem Grad oder dem Niveau der Privilegierung, nämlich der Fähigkeit, Änderungen an der Plattform vorzunehmen. Beispielsweise ist ein Ring-0 der innerste Ring, der sich auf dem höchsten Niveau der Hierarchie befindet. Ring-0 umfasst die kritischsten, privilegierten Komponenten. Darüber hinaus können Module in Ring-0 auch auf weniger privilegierte Daten zugreifen, aber nicht umgekehrt. Ring-3 ist der äußerste Ring, der das niedrigste Niveau der Hierarchie darstellt. Ring-3 umfasst typischerweise die Benutzer- oder Anwendungsebene und führt den am wenigstens vertrauenswürdigen Code aus. Es sei angemerkt, dass die Ebene der Ringhierarchie unabhängig vom Niveau des Sicherheitsschutzes dieses Rings ist.
-
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 enthält einen Ring-0 10, Ring-1 20, Ring-2 30, Ring-3 40 und einen Prozessor-Nub-Lader 52. Der Prozessor-Nub-Lader 52 ist eine Instanz eines Prozessor-Exekutive(PE)-Behandlers. Der PE-Behandler wird verwendet, um eine Prozessor-Exekutive (PE) zu behandeln 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 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 umfassen das primäre Betriebssystem (z.B. Kernel) 12, Softwaretreiber 13 und Hardwaretreiber 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 Exekutiveentitäten, die in einer sicheren Umgebung arbeiten, die einem isolierten Bereich und dem isolierten Ausführungsmodus zugeordnet ist. 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 werden wird.
-
In ähnlicher Weise umfassen Ring-1 20, Ring-2 30 und Ring-3 40 einen Ring-1 21, Ring-2 32, Ring-3 41 für normale Ausführung und einen Ring-1 25, Ring-2 35 und Ring-3 45 für isolierte Ausführung. Insbesondere enthält der Normale-Ausführung-Ring-3 N Anwendungen 42 1 bis 42 N, und der Isolierte-Ausführung-Ring-3 enthält K Applets 46 1 bis 46 K.
-
Ein Konzept der Architektur isolierter Ausführung ist die Schaffung eines isolierten Gebiets in dem Systemspeicher, das als isolierter Bereich bezeichnet wird und das sowohl durch den Prozessor als auch den Chipsatz in dem Computersystem geschützt ist. Teile des isolierten Bereichs können sich auch im Cache-Speicher befinden. Ein Zugriff auf dieses isolierte Gebiet ist nur über einen Frontseitenbus (FSB) des Prozessors unter Verwendung spezieller Buszyklen (z.B. Speicherlese- und Schreibzyklen), die als isolierte Lese- und Schreibzyklen bezeichnet werden, gestattet. Die speziellen Buszyklen werden auch für ein Snooping verwendet. Die isolierten Lese- und Schreibzyklen werden durch den in einem isolierten Ausführungsmodus ausführenden Prozessor ausgegeben. 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 in den isolierten Bereich zu laden und diesen zu überprüfen und die Wurzel der Schüsselhierarchie, die einzigartig für eine Kombination der Plattform, des Prozessor-Nubs 18 und des Betriebssystem-Nubs 16 ist, zu erzeugen. Der Betriebssystem-Nub 16 stellt Verbindungen (Links) zu Diensten in dem primären OS 12 (z.B. den ungeschützten Segmenten des Betriebssystems) zur Verfügung, schafft eine Seitenverwaltung in dem isolierten Bereich und ist dafür verantwortlich, die Ring-3-Anwendungsmodule 45 einschließlich der Applets 46 1 bis 46 K in die in dem isolierten Bereich zugeteilten geschützten Seiten zu laden. Der Betriebssystem-Nub 16 kann darüber hinaus Ring-0-Unterstützungsmodule laden.
-
Der Betriebssystem-Nub 16 kann auswählen, dass er ein Paging der Daten zwischen dem isolierten Bereich und dem gewöhnlichen (d.h. nicht isolierten) Speicher unterstützt. Wenn dies der Fall ist, dann ist der Betriebssystem-Nub 16 außerdem für eine Verschlüsselung und ein Hashing der Seiten des isolierten Bereichs verantwortlich, bevor die Seite in den gewöhnlichen Speicher geräumt wird, und für eine Überprüfung des Seiteninhalts bei der Wiederherstellung der Seite. Die Isolierter-Modus-Applets 46 1 bis 46 K und ihre Daten sind verfälschungssicher und überwachungsresistent gegenüber sämtlichen Softwareangriffen von anderen Applets sowie aus Anwendungen (z.B. 42 1 bis 42 N) aus dem nicht-isolierten Raum, Treibern und selbst gegenüber dem primären Betriebssystem 12. Die Software, die in die Ausführung des Applets eingreifen kann oder diese beobachten kann, ist der Prozessor-Nub-Lader 52, der Prozessor-Nub 18 oder der Betriebssystem-Nub 16.
-
1B ist ein Schema, das die Zugreifbarkeit der verschiedenen Elemente in dem Betriebssystem 10 und dem Prozessor gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht. Zu Veranschaulichungszwecken 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 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 des Prozessors, die in dem isolierten Ausführungsmodus arbeiten, zugreifbar. Der nicht-isolierte Bereich 80 ist für sämtliche Elemente des Ring-0-Betriebssystems und des Prozessors zugreifbar.
-
Der Normale-Ausführung-Ring-0 11 enthält das primäre OS 12, die Softwaretreiber 13 und Hardwaretreiber 14 und kann sowohl auf die OS-Seiten 84 als auch die Anwendungsseiten 82 zugreifen. Der Normale-Ausführung-Ring-3, der die Anwendungen 42 1 bis 42 N enthält, kann nur auf die Anwendungsseiten 82 zugreifen. Grundsätzlich können Anwendungen nur auf ihre eigenen Seiten zugreifen, jedoch stellt das OS üblicherweise in kontrollierten Verfahren Dienste zum Teilen/gemeinsamen Benutzen von Speicher zur Verfügung. Jedoch können weder der Ring-0 11 noch der Ring-3 41 der normalen Ausführung auf den isolierten Bereich 70 zugreifen.
-
Der Isolierte-Ausführung-Ring-0 15 einschließlich des OS-Nubs 16 und des Prozessor-Nubs 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 46 1 bis 46 K, kann nur auf die Applet-Seiten 72 zugreifen. Die Applets 46 1 bis 46 K, halten sich in dem isolierten Bereich 70 auf. Allgemein können Applets nur auf ihre eigenen Seiten zugreifen; jedoch kann der OS-Nub 16 auch Dienste für die Applets zum gemeinsamen Benutzen von Speicher zur Verfügung stellen (z.B. zum Teilen von Speicher mit anderen Applets oder mit Anwendungen des nicht-isolierten Bereichs).
-
1C ist ein Schema, das ein Computersystem 100 veranschaulicht, in welcher ein Ausführungsbeispiel der Erfindung ausgeführt werden kann. Das Computersystem 100 enthält einen Prozessor 110, einen Host-Bus 120, einen Speicher-Controller-Hub (MCH) 130, einen Systemspeicher 140, einen Eingabe/Ausgabe-Controller-Hub (ICH) 150, einen nicht-flüchtigen Speicher oder System-Flash-Speicher 160, eine Massenspeichereinrichtung 170, Eingabe/Ausgabe-Geräte 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 eine vielfache Funktionalität, wie beispielsweise den isolierten Ausführungsmodus, eine Host-Zu-Peripherie-Schnittstelle, eine Speichersteuereinrichtung integriert. In ähnlicher Weise kann der ICH 150 ebenfalls in einen Chipsatz gemeinsam mit dem oder getrennt 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, dass das System 100 darüber hinaus Peripheriebusse, wie beispielsweise einen Peripheriekomponentenverbindungsbus (PCI-Bus), einen beschleunigten Graphikport (AGP), einen Industriestandardarchitektur(ISA)-Bus und einen universellen seriellen Bus (USB), etc., enthält. Der "Token-Bus" kann Teil des USB-Busses sein, d.h. er kann Gast an dem USB-Bus sein.
-
Der Prozessor 110 repräsentiert eine zentrale Verarbeitungseinheit einer beliebigen Architektur, wie beispielsweise einer Komplexer-Befehlssatz-Computer(CISC)-Architektur, Reduzierter-Befehlssatz-Computer(RISC)-Architektur, Sehr-Langes-Befehlswort(VLIW)-Architektur oder einer Hybrid-Architektur. Bei einer Ausführungsform ist der Prozessor 110 mit einem Prozessor einer Intel-Architektur (IA), wie beispielsweise einem Prozessor der PentiumTM-Serie mit IA-32TM und IA-64TM kompatibel. Der Prozessor 110 schließt einen normalen Ausführungsmodus und eine Isolierte-Ausführung-Schaltung 115 ein. Der normale Ausführungsmodus 112 ist der Modus, in welchem der Prozessor 110 in einer nicht sicheren Umgebung oder einer normalen Umgebung ohne die von dem isolierten Ausführungsmodus zur Verfügung gestellten Sicherheitsmerkmale betrieben wird. Die Isolierte-Ausführung-Schaltung 115 stellt einen Mechanismus zur Verfügung, der es dem Prozessor 110 ermöglicht, in einem isolierten Ausführungsmodus zu arbeiten. Die Isolierte-Ausführung-Schaltung 115 schafft die Hardware- und Software-Unterstützung für den isolierten Ausführungsmodus. Diese Unterstützung umfasst eine Konfiguration für eine isolierte Ausführung, das Definieren eines isolierten Bereichs, das Definieren (z.B. Dekodieren und Ausführung) isolierter Befehle, das Erzeugen Isolierter-Zugriff-Buszyklen, das Erzeugen Isolierter-Modus-Interrupts und eine Zugriffsüberprüfung.
-
Bei einem Ausführungsbeispiel kann das Computersystem 100 ein Einzelprozessorsystem, wie beispielsweise ein Desktop-Computer sein, welcher nur eine Hauptzentralverarbeitungseinheit, beispielsweise den Prozessor 110, aufweist. Bei anderen Ausführungsbeispielen kann das Computersystem 100 mehrere Prozessoren, zum Beispiel die Prozessoren 110, 110a, 110b, etc. enthalten, wie es in 1C gezeigt ist. So kann das Computersystem 100 ein Multi-Prozessor-Computersystem mit einer beliebigen Anzahl von Prozessoren sein. Beispielsweise kann das Multi-Prozessor-Computersystem 100 als Teil einer Server- oder Workstation-Umgebung arbeiten. Die grundlegende Beschreibung und die Betriebsweise des Prozessors 110 werden detailliert nachfolgend erörtert. Für Fachleute ist es klar, dass diese grundlegende Beschreibung und Betriebsweise des Prozessors 110 auch für die anderen Prozessoren 110a und 110b, die in 1C gezeigt sind, sowie für eine beliebige Anzahl weiterer Prozessoren, die in dem Multi-Prozessor-Computersystem 100 in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung benutzt werden können, gilt.
-
Der Prozessor 110 kann darüber hinaus mehrere logische Prozessoren aufweisen. Ein logischer Prozessor ist eine Funktionseinheit in einem physikalischen Prozessor mit einem Architekturzustand und gemäß irgendeiner Aufteilungsvorgehensweise zugeteilten physikalischen Ressourcen. Ein Multi-Prozessor-System (zum Beispiel das die Prozessoren 110a und 110b aufweisende System), kann mehrere mehrfach-logische Prozessoren aufweisen.
-
Der Host-Bus 120 stellt Schnittstellensignale zur Verfügung, um es dem Prozessor 110 oder den Prozessoren 110, 110a und 110b zu ermöglichen, mit anderen Prozessoren oder Einrichtungen, beispielsweise dem MCH 130, zu kommunizieren. Zusätzlich zum normalen Modus stellt der Host-Bus 120 einen Bus-Modus des isolierten Zugriffs mit zugehörigen Schnittstellensignalen für Speicherlese- und -schreibzyklen zur Verfügung. Der Busmodus des isolierten Zugriffs wird bei Speicherzugriffen angelegt, die initiiert werden, während sich der Prozessor 110 im isolierten Ausführungsmodus befindet und er auf Speicher im isolierten Bereich zugreift. Der Isolierter-Zugriff-Busmodus wird außerdem bei Befehls-Vorabruf- und Cache-Rückschreib-Zyklen angelegt, wenn die Adresse innerhalb des Adressbereichs des isolierten Bereichs liegt. Der Isolierter-Zugriff-Busmodus ist in dem Prozessor 110 konfiguriert. Der Prozessor 110 antwortet auf einen Snoop-Zyklus zu einer cache-gespeicherten Adresse, wenn der Isolierte-Zugriff-Busmodus auf dem FSB mit dem Modus der cachegespeicherten Adresse übereinstimmt.
-
Der MCH 130 stellt eine Steuerung und Konfiguration des Systemspeichers 140 zur Verfügung. Der MCH 130 stellt Schnittstellenschaltungen zur Verfügung, um das Anlegen isolierten Zugriffs bei Speicherreferenzbuszyklen, einschließlich isolierter Speicherlese- und -Schreibzyklen, zu erkennen und diese zu bedienen. Zusätzlich weist der MCH 130 Speicherbereichsregister (z.B. Basis- und Längenregister) auf, um den isolierten Bereich in dem Systemspeicher 140 darzustellen. Sobald er konfiguriert ist, bricht der MCH 130 jegliche Zugriffe auf einen isolierten Bereich ab, bei denen kein Isolierter-Zugriff-Busmodus angelegt ist.
-
Der Systemspeicher 140 speichert Systemcode 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 enthält den zugreifbaren physikalischen Speicher 60 (der in 1B gezeigt ist). Der zugreifbare physikalische Speicher enthält ein geladenes Betriebssystem 142, den isolierten Bereich 70 (der in 1B gezeigt ist) und einen isolierten Steuer- und Statusraum 148. Das geladene Betriebssystem 142 ist der Teil des Betriebssystems, der in den Systemspeicher 142 geladen wird. 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, wie er in 1B gezeigt ist, ist derjenige Speicherbereich, der von dem Prozessor 110 definiert wird, wenn er in dem isolierten Ausführungsmodus arbeitet. Der Zugriff auf den isolierten Bereich ist eingeschränkt und wird von dem Prozessor 110 und/oder dem MCH 130 oder einem anderen Chipsatz durchgesetzt, der die Isolierter-Bereich-Funktionalitäten integriert. Der isolierte Steuer- und Statusraum 148 ist ein dem Eingabe/Ausgabe(I/O) ähnlicher unabhängiger Adressraum, der von dem Prozessor 110 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 Adressraum, und es wird auf ihn unter Verwendung der isolierten Buszyklen zugegriffen. Der Systemspeicher 140 kann darüber hinaus weitere Programme und Daten enthalten, die nicht gezeigt sind.
-
Der ICH 150 repräsentiert einen bekannten Einzelpunkt in dem System, 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 ICHs enthalten, die ähnlich dem ICH 150 sind. 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 ein externes Strapping-Pin ausgeführt. Wie es Fachleuten bekannt ist, können auch andere Verfahren der Auswahl verwendet werden, einschließlich der Verwendung programmierbarer Konfigurationsregister. Der ICH 150 weist eine Reihe von Funktionalitäten auf, die so ausgebildet sind, dass sie zusätzlich zu den herkömmlichen I/O-Funktionen den isolierten Ausführungsmodus unterstützen. Insbesondere enthält der ICH 150 eine Isolierter-Buszyklus-Schnittstelle 152, den Prozessor-Nub-Lader 52 (der in 1A gezeigt ist), einen Digest-Speicher 154, einen Speicher 155 für einen kryptographischen Schlüssel, eine kryptographische Hash-Einheit 157, einen Isolierte-Ausführung-Logikverarbeitungs-Manager 156 und eine Token-Bus-Schnittstelle 159.
-
Die Isolierter-Buszyklus-Schnittstelle 152 enthält Schaltungen zum Bilden einer Schnittstelle zu den Isolierter-Buszyklus-Signalen, um isolierte Buszyklen, wie beispielsweise die isolierten Lese- und Schreibbuszyklen zu erkennen und zu bedienen. Der Prozessor-Nub-Lader 52, wie er in 1A gezeigt ist, umfasst einen Prozessor-Nub-Lader-Code und dessen Digest-Wert (z.B. kryptographischen Hash-Wert). Der Prozessor-Nub-Lader 52 wird durch Ausführung eines geeigneten Isoliert-Befehls (zum Beispiel iso_init) aufgerufen und in den isolierten Bereich 70 übertragen. Aus dem isolierten Bereich 80 kopiert der Prozessor-Nub-Lader 52 den Prozessor-Nub 18 aus dem System-Flash-Speicher (z.B. den Prozessor-Nub-Code 18 in dem nicht-flüchtigen Speicher 160) in den isolierten Bereich 70, überprüft und protokolliert seine Integrität und verwaltet einen symmetrischen Schlüssel, der verwendet wird, um die Geheimnisse des Prozessor-Nubs zu schützen. Bei einem Ausführungsbeispiel 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, üblicherweise in RAM implementiert, speichert die Digest-Werte (z.B. kryptographischen Hash-Werte) des geladenen Prozessor-Nubs 18, des Betriebssystem(OS)-Nubs 16 und irgendwelcher anderen Aufsichts-Module (z.B. Ring-0-Module), die in den isolierten Ausführungsraum geladen sind. Der Speicher 155 des kryptographischen Schlüssels hält einen symmetrischen Verschlüsselungs/Entschlüsselung-Schlüssel, der für die Plattform des Systems 100 einzigartig ist. Bei einem Ausführungsbeispiel enthält der Kryptographische-Schlüssel-Speicher 155 interne Schmelzsicherungen, die bei der Herstellung programmiert werden. Alternativ kann der Kryptographischer-Schlüssel-Speicher 155 auch während der Herstellung mit einem kryptographischen Zufallszahlengenerator erzeugt werden. Der Isolierte-Ausführung-Logikverarbeitungsmanager 156 verwaltet die Operation der logischen Prozessoren, wobei er deren Unterstützung der isolierten Ausführung konfiguriert. Bei einem Ausführungsbeispiel enthält der Isolierte-Ausführung-Logikverarbeitungsmanager 156 ein Logischer-Prozessor-Zählregister, das die Anzahl der logischen Prozessoren verfolgt, die an dem isolierten Ausführungsmodus teilnehmen. Die Token-Bus-Schnittstelle 159 bildet eine Schnittstelle zu dem Token-Bus 180. Eine Kombination des Prozessor-Nub-Lader-Digests, des Prozessor-Nub-Digests, des Betriebssystem-Nub-Digests und optional zusätzlicher Digests stellt den Gesamtdigest der isolierten Ausführung dar, der als Isoliert-Digest bezeichnet wird. Der Isoliert-Digest ist ein Fingerabdruck, der sämtlichen Supervisor-Befehlscode identifiziert, der in die Steuerung der Konfiguration und Operation der isolierten Ausführung involviert ist. Der Isoliert-Digest wird verwendet, um den Zustand der aktuellen isolierten Ausführungsumgebung zu attestieren oder nachzuweisen.
-
Der nicht-flüchtige Speicher 160 speichert nicht-flüchtige Informationen. Typischerweise ist der nicht-flüchtige Speicher 160 in Flash-Speicher implementiert. Bei einem Ausführungsbeispiel enthält der nicht-flüchtige Speicher 160 den Prozessor-Nub 18. Der Prozessor-Nub 18 stellt das Einricht-Management auf niedriger Ebene für den isolierten Bereich 70 (in dem Systemspeicher 140), einschließlich der Überprüfung, des Ladens und der Protokollierung (logging) des Betriebssystem-Nubs 16, und die Verwaltung des symmetrischen Schlüssels, der zum Schützen der Geheimnisse des Betriebssystem-Nubs verwendet wird, zur Verfügung. Der Prozessor-Nub-Lader 52 führt einen Teil des Einrichtens aus und verwaltet/aktualisiert den symmetrischen Schlüssel, bevor der Prozessor-Nub 18 und der OS-Nub 16 geladen werden. Der Prozessor-Nub 18 kann darüber hinaus Schnittstellenabstraktionen für Low-Level-Sicherheitsdienste, die von weiterer Hardware zur Verfügung gestellt werden, zur Verfügung stellen. Der Prozessor-Nub 18 kann außerdem durch den ursprünglichen Ausrüstungshersteller (OEM) oder Betriebssystemanbieter (OSV) verteilt werden.
-
Die Massenspeichereinrichtung 170 speichert Archivinformationen, wie beispielsweise Code (z.B. Prozessor-Nub 18), Programme, Dateien, Daten, Anwendungen (z.B. Anwendungen 42 1 bis 42 N), Applets (z.B. Applets 46 1 bis 46 K) und Betriebssysteme. Die Massenspeichereinrichtung 170 kann eine Compact-Disk(CD)-ROM 172, Disketten 174 und ein Festplattenlaufwerk 176 sowie irgendwelche weiteren Speichereinrichtungen umfassen. Die Massenspeichereinrichtung 170 stellt einen Mechanismus zum Lesen eines maschinenlesbaren Mediums zur Verfügung. 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 prozessor-lesbaren Medium gespeichert sein oder durch ein in einer Trägerwelle enthaltenes Computerdatensignal oder ein durch einen Träger moduliertes Signal über ein Übertragungsmedium übertragen werden. Das "prozessor-lesbare Medium" schließt irgendein Medium ein, das Informationen speichern oder übertragen kann. Beispiele prozessor-lesbarer Medien sind elektronische Schaltungen, Halbleiterspeicherbauelemente, ein ROM, ein Flash-Speicher, ein löschbarer und programmierbarer ROM (EPROM), eine Diskette, eine CD-ROM, eine optische Platte, eine Festplatte, ein Lichtleitermedium, eine Hochfrequenz(HF)-Verbindung, etc. Das Computerdatensignal kann irgendein Signal einschließen, das über ein Übertragungsmedium weitergeleitet werden kann, wie beispielsweise über elektronische Netzwerkkanäle, Lichtleiter, Luft, elektromagnetische, HF-Verbindungen, etc. Die Codesegmente können heruntergeladen werden über Computernetzwerke, wie beispielsweise das Internet, ein Intranet, etc.
-
Die I/O-Geräte 175 können beliebige I/O-Geräte zum Ausführen von I/O-Funktionen umfassen. Beispiele der I/O-Geräte 175 umfassen einen Controller für Eingabeeinrichtungen (z.B. Tastatur, Maus, Trackball, Zeigereinrichtung), Medienkarten (z.B. Audio-, Video-, Grafikkarten), eine Netzwerkkarte und irgendwelche anderen Peripheriegerätsteuereinrichtungen.
-
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 Sicherheitsfunktionalitäten ausführt. Ein Token hat Eigenschaften, die ähnlich einer Smart-Card sind, einschließlich wenigstens eines öffentlichen/privaten Schlüsselpaars für reservierte Zwecke und der Fähigkeit, Daten mit dem privaten Schlüssel zu signieren. Beispiele des mit dem Token-Bus 180 verbundenen Tokens umfassen ein Mutterplatinen-Token 182, einen Token-Leser 184 und weitere transportable Tokens 186 (z.B. Smart-Card). Die Token-Bus-Schnittstelle 159 in dem ICH 150 koppelt den Token-Bus 180 mit dem ICH 150 und sichert, dass dann, wenn der Nachweis des Zustands der isolierten Ausführung angewiesen wird, das zugehörige 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.
-
VERWALTUNG VON ZUGRIFFEN IM ISOLIERTEN AUSFÜHRUNGSMODUS
-
2A ist ein Schema, das die Isolierte-Ausführung-Schaltung 115, die in 1C 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-Speicher-Manager 230.
-
Die Kernausführungseinheit 205 enthält eine Befehlsdekodier- und -ausführungseinheit 210 und einen Übersetzungsnachschlagepuffer (TLB; Translation Lookaside Buffer) 218. Die Befehlsdekodier- und -ausführungseinheit 210 empfängt einen Befehlsstrom 215 aus einer Befehlsabrufeinheit. Der Befehlsstrom 215 enthält eine Reihe von Befehlen. Die Befehlsdekodier- und -ausführungseinheit 210 dekodiert die Befehle und führt die dekodierten Befehle aus. Diese Befehle können auf dem Mikro- oder dem Makroniveau vorliegen. Die Befehlsdekodier- und -ausführungseinheit 210 kann eine physikalische Schaltung oder eine Abstraktion eines Prozesses der Dekodierung und Ausführung von Befehlen sein. Darüber hinaus können die Befehle Isoliert-Befehle und Nicht-Isoliert-Befehle umfassen. Die Befehlsdekodier- 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.
-
Die Kernausführungsschaltung 205 bildet eine Schnittstelle zu dem Zugriffsmanager 220 über Steuer/Statusinformationen 222, Operanden 224 und Zugriffsinformationen 226. Die Steuer/Statusinformationen 222 umfassen Steuerbits zum Manipulieren verschiedener Elemente in dem Isolierter-Buszyklus-Generator 220 und Statusdaten aus dem Zugriffsmanager 220. Die Operanden 224 schließen in den Zugriffsmanager 220 zu schreibende Daten und aus ihm zu lesende Daten ein. Die Zugriffsinformationen 226 schließen Adressinformationen (z. B. die von dem TLB 218 zur Verfügung gestellte physikalische Adresse), Lese/Schreib-Informationen und andere Informationsarten ein.
-
Der Zugriffsmanager 220 empfängt die Steuer/Status-Informationen 222 und den 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 aus dem Cache-Speicher-Manager 230 und empfängt einen externen isolierten Zugriff 278 aus einem anderen Prozessor in dem System. 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 zu erzeugen, der zu Einrichtungen (z. B. Chipsätzen) gesendet wird, die sich außerhalb des Prozessors 110 befinden, um anzuzeigen, dass der Prozessor 110 einen Befehl des isolierten Modus ausführt. Das Prozessor-Snoop-Zugriffssignal 276 kann durch andere Einrichtungen 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 steuern und zu überwachen.
-
Der Cache-Speicher-Manager 230 empfängt die Zugriffsinformationen 226 aus der Kernausführungsschaltung 205 und erzeugt das Cache-Zugriffssignal 235 an den Zugriffsmanager 220. Der Cache-Speicher-Manager 230 enthält einen Cache-Speicher 232 zum Speichern von Cache-Informationen und weitere Schaltungen zum Verwalten von Cache-Transaktionen, wie sie Fachleuten bekannt sind. Das Cache-Zugriffssignal 235 zeigt das Ergebnis des Cache-Zugriffs an. Bei einem Ausführungsbeispiel ist das Cache-Zugriffssignal 235 ein Cache-Fehlversuch-Signal, welches angelegt wird, wenn es einen Cache-Fehlversuch im Ergebnis eines Cache-Zugriffs gibt.
-
2B ist ein Schema, das den in 2A gezeigten Zugriffs-Manager 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 den Operanden 224 mit der in 2A gezeigten Kernausführungsschaltung 205 aus und empfängt die Zugriffsinformationen 226 aus der Kernausführungsschaltung 205. Der Zugriffsmanager 220 empfängt darüber hinaus das Cache-Zugriffssignal 235 aus dem Cache-Manager 230 und den externen isolierten Zugriff 278 aus einem anderen Prozessor, wie es in 2A gezeigt ist. Die Zugriffsinformationen 226 schließen eine physikalische Adresse 282, ein Lese/Schreib(RD/WR#)-Signal 284 und einen Zugriffstyp 286 ein. Die Zugriffsinformationen 226 werden während einer Zugriffstransaktion von dem Prozessor 110 erzeugt. Der Zugriffstyp 286 zeigt einen Typ des Zugriffs an, einschließlich einer Speicherreferenz, einer Eingabe/Ausgabe(I/O)-Referenz und eines Logischer-Prozessor-Zugriffs. Der Logischer-Prozessor-Zugriff schließt einen Eintritt eines logischen Prozessors in einen Isoliert-Freigegeben-Zustand und eine Rücknahme eines logischen Prozessors aus einem Isoliert-Freigegeben-Zustand ein.
-
Der Konfigurationsspeicher 250 enthält Konfigurationsparameter zum Konfigurieren einer Zugriffstransaktion, die von dem Prozessor 110 erzeugt wird. Der Prozessor 110 weist einen normalen Ausführungsmodus und einen isolierten Ausführungsmodus auf. Die Zugriffstransaktion weist Zugriffsinformationen auf. Der Konfigurationsspeicher 250 empfängt den Operanden 224 aus der Befehlsdecodier- und -ausführungseinheit 210 (2A) und enthält ein Prozessorsteuerregister 252 und ein Isolierte-Einstellung-Register 260. Das Prozessorsteuerregister 252 enthält ein Ausführungsmodus-Wort 253. Das Ausführungsmodus-Wort 253 wird angelegt, wenn der Prozessor 110 in den isolierten Ausführungsmodus konfiguriert wird. Bei einem Ausführungsbeispiel ist das Ausführungsmodus-Wort 253 ein einzelnes Bit, das anzeigt, ob sich der Prozessor 110 in dem isolierten Ausführungsmodus befindet. Das Isolierte-Einstellung-Register 260 enthält eine Isolierte-Einstellung 268. Die Isolierte-Einstellung 268 definiert den isolierten Speicherbereich (z.B. den isolierten Bereich 70 in dem Systemspeicher 140, der in 1C gezeigt ist). Das Isolierte-Einstellung-Register 260 enthält ein Maskenregister 262 und ein Basisregister 264. Das Maskenregister 262 enthält einen Isoliert-Maskenwert 263. Das Basisregister 264 enthält einen Isoliert-Basiswert 265. Der Isoliert-Maskenwert und der Isoliert-Basiswert 263 und 265 bilden die Isoliert-Einstellung 268 und werden verwendet, um den isolierten Speicherbereich zu definieren.
-
Die Zugriffsüberprüfungsschaltung 270 überprüft die Zugriffstransaktion unter Verwendung zumindest der Konfigurationsparameter und der Zugriffsinformationen 226. Die Zugriffsüberprüfungsschaltung 270 erzeugt das Isolierter-Zugriff-Signal 272, das Zugriffsgewährungssignal 274 und das Prozessor-Snoop-Zugriffssignal 276 unter Verwendung wenigstens eines der Isolierter-Bereich-Parameter in dem Konfigurationsspeicher 250 und der Zugriffsinformationen 260 in einer von dem Prozessor 110 erzeugten Transaktion. Das Isolierter-Zugriff-Signal 272 wird angelegt, wenn der Prozessor 110 in dem isolierten Ausführungsmodus konfiguriert ist. Das Gewährungssignal 274 wird verwendet, um anzuzeigen, ob ein isolierter Zugriff gewährt worden ist. Das Prozessor-Snoop-Zugriffssignal 276 wird verwendet, um zu bestimmen, ob ein isolierter Zugriff zu einem Treffer oder einem Fehlversuch führt.
-
3A ist ein Schema, das die Zugriffsüberprüfungsschaltung 270 zum Verwalten von Snoop-Zugriffen gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht. Die Zugriffsüberprüfungsschaltung 270 enthält einen Adressdetektor 310, einen Zugriffsgewährungsgenerator 320 und eine Snoop-Überprüfungsschaltung 330.
-
Der Adressdetektor 310 empfängt die Isoliert-Einstellung 268 (z.B. den Isoliert-Maskenwert 263, den Isoliert-Basiswert 265) aus dem Konfigurationsspeicher 250 in 2B. Der Adressdetektor 310 erfasst, ob die physikalische Adresse 282 in dem durch die Isoliert-Einstellung 260 definierten isolierten Speicherbereich liegt. Der Adressdetektor 310 enthält ein Maskierelement 312, einen Komparator 314 und einen Kombinierer 318. Das Maskierelement 312 maskiert die physikalische Adresse 282 mit dem Isoliert-Maskenwert 263. Bei einem Ausführungsbeispiel führt das Maskierelement 312 eine logische UND-Operation aus. Der Komparator 314 vergleicht das Ergebnis der Maskieroperation, die von dem Maskierelement 312 erledigt worden ist, und den Isoliert-Basiswert 265 und erzeugt ein Vergleichsergebnis. Der Kombinierer 318 kombiniert das Vergleichsergebnis mit weiteren Bedingungen, um das Isolierter-Zugriff-Signal 272 zu erzeugen. Das Isolierter-Zugriff-Signal 272 wird angelegt, wenn die physikalische Adresse 282 innerhalb des isolierten Speicherbereichs liegt, wie er von dem Isoliert-Maskenwert und dem Isoliert-Basiswert 263 und 265 definiert ist, und weitere Bedingungen erfüllt sind. Es sei angemerkt, dass die Maske auch als Länge benutzt werden könnte.
-
Der Zugriffsgewährungsgenerator 320 kombiniert das Isolierter-Zugriff-Signal 272 und das Zugriffsmodus-Wort 253, um das Zugriffsgewährungssignal 274 zu erzeugen. Das Zugriffsgewährungssignal 274 wird angelegt, wenn sowohl das Isoliert-Zugriff-Signal 272 als auch das Zugriffsmodus-Wort 253 angelegt sind, um anzuzeigen, dass ein isolierter Zugriff gültig oder gestattet ist, wie es konfiguriert ist. Bei einem Ausführungsbeispiel führt der Zugriffsgewährungsgenerator 320 eine logische UND-Operation aus.
-
Der Snoop-Überprüfungsschaltung 330 erzeugt das Prozessor-Snoop-Zugriffssignal 276. Die Snoop-Überprüfungsschaltung 330 enthält einen Snoop-Kombinierer 340, um das Cache-Zugriffssignal 235, das Isolierter-Zugriff-Signal 272 und ein externes Isolierter-Zugriff-Signal 278 von einem anderen Prozessor zu kombinieren. Die Kombination des Cache-Zugriff-Signals 235, des Isolierter-Zugriff-Signals 272 und des externen Isolierter-Zugriff-Signals 278 entspricht dem Prozessor-Snoop-Zugriffssignal 276. Bei einem Ausführungsbeispiel enthält der Snoop-Kombinierer 340 ein Exklusiv-ODER(X-OR)-Element 342 und ein ODER-Element 344. Das X-OR-Element 342 führt eine Exklusiv-ODER-Operation an dem Isolierter-Zugriff-Signal 272 und dem externen Isolierter-Zugriff-Signal 278 aus. Das ODER-Element 344 führt eine ODER-Operation an dem Ergebnis des X-OR-Elements 342 und dem Cache-Zugriff-Signal 235 aus.
-
3B ist ein Schema, das die Zugriffsüberprüfungsschaltung 270 zum Verwalten Logischer-Prozessor-Operationen gemäß einem anderen Ausführungsbeispiel der Erfindung veranschaulicht. Die Zugriffsüberprüfungsschaltung 270 enthält einen Logischer-Prozessor-Manager 360.
-
Der Logischer-Prozessor-Manager 360 verwaltet (managt) eine Logischer-Prozessor-Operation, die von dem Logischer-Prozessor-Zugriff verursacht ist. Der Logischer-Prozessor-Manager 360 enthält ein Logischer-Prozessor-Register 370, einen Logischer-Prozessor-Zustandsfreigeber 382, einen Logischer-Prozessor-Aktualisierer 380, einen Minimumerfasser 374 und einen Maximumerfasser 376. Das Logischer-Prozessor-Register 370 speichert eine Logischer-Prozessor-Zählung 372, um eine Anzahl logischer Prozessoren, die gegenwärtig freigegeben sind, anzuzeigen. Der Logischer-Prozessor-Zustandsfreigeber 382 gibt einen Logischer-Prozessor-Zustand frei, wenn der Logischer-Prozessor-Zugriff gültig ist. Der Logischer-Prozessor-Aktualisierer 380 aktualisiert die Logischer-Prozessor-Zählung 372 in Übereinstimmung mit dem Logischer-Prozessor-Zugriff. Der Logischer-Prozessor-Aktualisierer 380 wird von dem freigegebenen Logischer-Prozessor-Zustand freigegeben. Der Minimumerfasser 374 bestimmt, ob die Logischer-Prozessor-Zählung 372 gleich einem minimalen Logischer-Prozessor-Wert (z.B. 0) ist. Der Maximumerfasser 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 von dem isolierten Ausführungsmodus in dem Prozessor 110 unterstützt werden können.
-
Der Logischer-Prozessor-Aktualisierer 380 initialisiert das Logischer-Prozessor-Register 370, wenn es keinen freigegebenen logischen Prozessor gibt. Der Logischer-Prozessor-Aktualisierer 380 aktualisiert die Logischer-Prozessor-Zählung 372 in einer ersten Richtung (z.B. inkrementierend), wenn die Zugriffstransaktion dem Eintritt eines logischen Prozessors 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. dekrementierend), wenn die Zugriffstransaktion dem Verlassen eines logischen Prozessors oder der Zurücknahme eines logischen Prozessors entspricht. Wenn die Logischer-Prozessor-Zählung 372 gleich dem minimalen Logischer-Prozessor-Wert ist, veranlasst der Logischer-Prozessor-Manager 360 den Prozessor 110, den Cache-Speicher 232 (2A) und das Isolierte-Einstellung-Register (2A) zu initialisieren oder sämtliche Isoliert-Informationen zu löschen (z.B. sämtliche ISO-Daten in den Hauptspeicher zurückzuschreiben). Wenn die Logischer-Prozessor-Zählung 372 den maximalen Logischer-Prozessor-Wert überschreitet, veranlasst der Logischer-Prozessor-Manager 360 den Prozessor 110, einen Fehlschlag oder eine Fehlerbedingung zu erzeugen.
-
4 ist ein Ablaufdiagramm, das einen Prozess 400 zum Verwalten von Snoop-Zugriffen für eine isolierte Ausführung gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.
-
Bei START definiert der Prozess 400 einen isolierten Speicherbereich unter Verwendung der Isoliert-Einstellung (z.B. Isoliert-Masken- und -Basis-Werte) (Block 410). Dann legt der Prozess 400 das Ausführungsmodus-Wort in dem Prozessorsteuerregister an, um den Prozessor in den isolierten Ausführungsmodus zu konfigurieren (Block 420). Als nächstes bestimmt der Prozess 400, ob die physikalische Adresse, wie sie in einer Transaktion erzeugt wurde, innerhalb des isolierten Speicherbereichs liegt, wie er durch die Isoliert-Einstellung definiert ist (Block 430). Wenn nicht, erzeugt der Prozess 400 ein Fehlschlag oder eine Fehlerbedingung (Block 435) und wird dann beendet. Anderenfalls legt der Prozess 400 das Isolierter-Zugriff-Signal an (Block 440).
-
Als nächstes erzeugt der Prozess 400 ein Prozessor-Snoop-Zugriffssignal, indem er das Cache-Zugriffssignal, das externe Isolierter-Zugriff-Signal und das Isolierter-Zugriff-Signal kombiniert. Dann wird der Prozess 400 beendet.
-
5 ist ein Ablaufdiagramm, das einen Prozess 500 zum Verwalten Logischer-Prozessor-Operationen für isolierte Ausführung gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.
-
Bei START initialisiert der Prozess 500 das Logischer-Prozessor-Register, wenn es keinen freigegebenen logischen Prozessor gibt (Block 510). Dies wird mit ISO_Create ausgeführt. Dann führt der Prozess 500 einen Logischer-Prozessor-Zugriffsbefehl aus (z.B. iso_create, iso_clear) (Block 520). Der Logischer-Prozessor-Zugriffsbefehl legt das Ausführungsmodus-Wort an. Als nächstes gibt der Prozess 500 den Logischer-Prozessor-Zustand frei (Block 525). Dann bestimmt der Prozess 500 den Logischer-Prozessor-Zugriffstyp (Block 530).
-
Wenn der Logischer-Prozessor-Zugriffstyp ein Logischer-Prozessor-Eintritt ist, aktualisiert der Prozess 500 die Logischer-Prozessor-Zählung in einer ersten Richtung (z.B. durch Inkrementieren) (Block 540). Dann bestimmt der Prozess 500, ob die Logischer-Prozessor-Zählung den maximalen Logischer-Prozessor-Wert überschreitet (Block 550). Wenn dies nicht der Fall ist, ist der Prozess 500 beendet. Anderenfalls erzeugt der Prozess 500 einen Fehlschlag oder eine Fehlerbedingung (Block 560) und wird dann beendet.
-
Wenn der Logischer-Prozessor-Zugriffstyp ein Logischer-Prozessor-Austritt oder eine Logischer-Prozessor-Zurücknahme ist, aktualisiert der Prozess 500 die Logischer-Prozessor-Zählung in einer zweiten Richtung, die der ersten Richtung entgegengesetzt ist (z.B. durch Dekrementieren) (Block 545). Dann bestimmt der Prozess 500, ob die Logischer-Prozessor-Zählung gleich dem minimalen Wert (z.B. Null) ist (Block 555). Wenn dies nicht der Fall ist, ist der Prozess 500 beendet. Anderenfalls löscht der Prozess 500 den Cache-Speicher und das Isoliert-Einstellung-Register von sämtlichen Isoliert-Informationen (Block 565) und wird dann beendet.
-
KONTROLLIEREN DER ZUGRIFFE AUF DEN ISOLIERTEN SPEICHER UNTER VERWENDUNG EINER SPEICHERSTEUEREINRICHTUNG
-
Die obige Beschreibung bezieht sich auf den Prozess der isolierten Ausführung in dem Prozessor 110. Zugriffe auf den isolierten Speicherbereich 70 (der in den 1B und 1C gezeigt ist) werden ferner durch den MCH 130 (1C) kontrolliert. Der Prozessor 110 betrachtet den MCH 130 als eine Eingabe/Ausgabe-Einrichtung, die in einen Adressort abgebildet ist. Um Zugriff auf den isolierten Speicherbereich 70 zu erlangen, muss der Prozessor 110 den Speicherkonfigurationsspeicher in dem MCH 130 entsprechend konfigurieren. Der MCH 130 enthält außerdem Steuerfunktionen, um dem Prozessor 110 zu ermöglichen, auf den Speicher 140 im nicht-isolierten Speicherbereich 80 ebenso zuzugreifen. Der MCH 130 empfängt Signale aus dem Prozessor 110 über den Host-Bus 120, wie beispielsweise das Isolierter-Zugriff-Signal 272 (2) oder die Buszyklusinformationen.
-
In 1C ist gezeigt, dass der MCH 130 sich außerhalb des Prozessors 110 befindet. Jedoch ist es möglich, daß der MCH 130 in den Prozessor 110 aufgenommen wird. In diesem Fall wird ein Schreibzyklus zu den Registern in dem MCH 130 extern gemacht, um es irgendwelchen externen Cache-Speichern zu ermöglichen, aus Gründen der Cache-Kohärenz teilzuhaben.
-
Im wesentlichen führt die Zugriffssteuereinrichtung in dem MCH 130 eine ähnliche Funktion aus wie die Zugriffsüberprüfungsschaltung 270, die in 3A gezeigt ist. Durch Aufrechterhalten der Zugriffskonsistenz in sowohl dem Prozessor 110 als auch dem MCH 130 kann das Zugreifen auf den Speicher eng kontrolliert werden. Die Zugriffssteuereinrichtung in dem MCH 130 bestimmt, ob eine Zugriffstransaktion aus dem Prozessor 110 gültig ist. Wenn dies der Fall ist, gibt die Zugriffssteuereinrichtung ein Zugriffsgewährungssignal zurück, um einen Abschluss der Zugriffstransaktionen zu ermöglichen. Anderenfalls wird ein Fehler oder eine Fehlerbedingung erzeugt. Zusätzlich schützt die Zugriffssteuereinrichtung in dem MCH 130 außerdem vor irgendwelchen vorsätzlichen oder versehentlichen Schreiboperationen zu ihrem eigenen Konfigurations- und Steuerspeicher. Da der MCH 130 eine direkte Schnittstelle zu dem Speicher 140 bildet, stellt die Zugriffssteuereinrichtung darüber hinaus Initialisierungsinhalte des isolierten Speicherbereichs und ihres eigenen internen Speichers beim Rücksetzen zur Verfügung.
-
6 ist ein Schema, das die Isolierter-Bereich-Zugriffssteuereinrichtung 135 in dem Speicher-Controller-Hub (MCH) 130, der in 1C gezeigt ist, gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht. Die Zugriffssteuereinrichtung 135 enthält einen Konfigurationsspeicher 610, eine Konfigurationssteuereinrichtung 640 und einen Zugriffsgewährungsgenerator 650.
-
Der Konfigurationsspeicher 610 enthält eine Konfigurationseinstellung 612, um eine Zugriffstransaktion zu konfigurieren, die von dem Prozessor 110, der in 1C gezeigt ist, erzeugt worden ist. 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 (1C) übertragen und enthalten Adressinformationen und einen Isolierter-Zugriff-Zustand. Die Adressinformationen 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 äquivalent dem Isolierter-Zugriff-Signal 272, das in 2 gezeigt ist. Das Isolierter-Zugriff-Signal 664 wird angelegt, wenn der Prozessor 110 eine gültige Referenz zu dem isolierten Speicherbereich 70 (der in 1C gezeigt ist) erzeugt. Die Konfigurationseinstellung 612 enthält einen Speichermaskenwert 622 und einen Speicherbasiswert 632. Der Speichermasken- und der Speicherbasiswert 622 und 632 sind die zwei Gegenstückwerte des Isoliert-Maskenwerts 263 bzw. Isoliert-Basiswerts 265, wie sie in Verbindung mit 2 erörtert wurden. Der Speichermasken- und der Speicherbasiswert 622 und 632 definieren den isolierten Speicherbereich 70 in dem Speicher 140 außerhalb des Prozessors 110. Wie oben erörtert, ist der isolierte Speicherbereich 70 für den Prozessor 110 in dem isolierten Ausführungsmodus zugreifbar. Der Konfigurationsspeicher 610 enthält ein Speichermaskenregister 620 zum Speichern des Speichermaskenwerts 622 und ein Speicherbasisregister 630 zum Speichern des Speicherbasiswerts 632.
-
Die Konfigurationssteuereinrichtung 640 steuert Zugriffe auf den Konfigurationsspeicher 610 und stellt einige Steuerfunktionen für den Speicher 140 zur Verfügung. Der Zugriffsgewährungsgenerator 650 erzeugt ein Zugriffsgewährungssignal 652 unter Verwendung der Konfigurationseinstellung 612 und der Zugriffsinformationen 660. Das Zugriffsgewährungssignal 652 zeigt an, ob die Zugriffstransaktion gültig ist. Wenn der Zugriff nicht gewährt wird, gibt der Chipsatz einen vorgegebenen Datenwert zurück. Dies verhindert eine Blockierung (livelock). Dies versteckt darüber hinaus das Vorhandensein eines isolierten Bereichs.
-
7 ist ein Schema, das die Konfigurationssteuereinrichtung 640, die in 6 gezeigt ist, gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht. Die Konfigurationssteuereinrichtung 640 enthält einen Steuerspeicher 710, einen Verriegler 720, einen Priorisierer 730 und einen Rücksetzer 740.
-
Der Steuerspeicher 710 weist eine Schnittstelle zu dem Host-Bus 120 auf, um ein Verriegelungssteuerwort 712 zu empfangen und zu speichern. Das Verriegelungssteuerwort 712 zeigt an, ob der isolierte Speicherbereich freigegeben ist. Typischerweise wird das Verriegelungssteuerwort 712 durch den Prozessor-Nub 18 geschrieben, wenn dieser aufgerufen wird, um den isolierten Speicherbereich 70 freizugeben oder zu initialisieren. Das Verriegelungssteuerwort 712 kann ein einzelnes Bit sein, um anzuzeigen, ob eine Verriegelung erwünscht ist. Eine Verriegelung ist eine Operation zum Verhindern, dass ein Speicher durch eine versehentliche oder absichtliche Schreiboperation durch andere Einrichtungen überschrieben wird.
-
Der Verriegler 720 sperrt den Zugriff zu dem Konfigurationsspeicher 610 auf der Grundlage des Verriegelungssteuerworts 712. Wenn das Verriegelungssteuerwort 712 angelegt ist (z.B. das Verriegelungssteuerbit in den Freigabezustand gesetzt ist), schützt der Verriegler 720 den Konfigurationsspeicher 610 davor, überschrieben oder modifiziert zu werden. Der Verriegler 720 verhindert Aktualisierungen an den MCH-Steuerregistern. Der Verriegler 720 kann auf vielfältige Weise implementiert sein. Bei einer Methode kann der Verriegler ein Torelement (gating element) sein (z.B. ein ODER-Gatter bei einer positiven Logik), um das Lese/Schreib-Signal (R/W#) aus dem Prozessor mit dem Verriegelungssteuerwort 712 auszutasten. Wenn das Verriegelungssteuerwort 712 auf hohen Pegel angelegt ist, ist die Schreibfunktion gesperrt, was ein Schreiben in den Konfigurationsspeicher 610 verhindert.
-
Der Priorisierer 730 priorisiert die Zugriffstransaktion auf der Grundlage des Verriegelungssteuerworts 712. Diese Priorisierung ermöglicht, dass die Speichermasken- und basiswerte 622 und 632 Vorrang gegenüber irgendwelchen anderen Speicherdecodierungen habe. Mit anderen Worten, sämtliche Adressierung in den konfigurierten isolierten Speicherbereich und Steuerregistern wird von dem MCH 130 unabhängig davon behandelt, ob es ein Speicher-Backing in diesem Bereich gibt oder nicht. Andere Konfigurationsregister, wie beispielsweise Oberer-Rand-des-Speichers, Speicher-Loch-Register, verletzen diese Anforderung wegen des Verrieglers 720 nicht. Diese Priorisierung sichert, dass Code, der sich im nicht-isolierten Speicherbereich (zum Beispiel Bereich 80 im Speicher 140, der in 2b gezeigt ist) aufhält, nicht die Oberer-Rand-des-Speichers-, Speicherbereichs- oder Speicher-Loch-Einstellungen so ändern kann, dass Inhalte des isolierten Speicherbereichs 70 verlorengehen oder bewegt werden. Bei einem Ausführungsbeispiel enthält der Priorisierer 730 einen Buszyklusdecodierer 732 und einen Prioritätscodierer 734. Der Buszyklusdecodierer 732 decodiert den Buszyklus aus den Buszyklussignalen, wie sie von dem Prozessor 110 erzeugt werden. Der Buszyklus kann ein normaler oder spezieller Buszyklus sein. Der normale Buszyklus entspricht dem normalen Ausführungsmodus. Der spezielle Buszyklus entspricht dem isolierten Ausführungsmodus. Beispiele des speziellen Buszyklus umfassen einen Lese/Schreib-Datenzugriffszyklus, einen Lese/Schreib-Steuerzugriffszyklus, einen Logischer-Prozessor-Eintritt-Zyklus und einen Logischer-Prozessor-Zurücknahme-Zyklus. Der Prioritätscodierer 732 codiert den decodierten Buszyklus, wie es von dem Verriegelungssteuerwort 712 freigegeben ist. Der Priorisierer 730 erzeugt ein Isolierter-Speicher-Prioritätssignal 736 an den Zugriffsgewährungsgenerator 650. Es ist kein Speicherzugriff, der die Priorität erlangt. Es ist der Verriegler, der Änderungen an den Konfigurationsregistern verhindert.
-
Der Rücksetzer 740 initialisiert den isolierten Speicherbereich 70, den Konfigurationsspeicher 610 und den Steuerspeicher 710 beim Rücksetzen. Der Rücksetzer 740 enthält eine Schreibschaltung zum Schreiben von Anfangswerten (z.B. durchgehend Nullen, durchgehend Einsen oder eine Konstante) in sämtliche Speicher, den Konfigurationsspeicher 610 und den Steuerspeicher 710, wenn ein Rücksetzen ausgelöst worden ist.
-
8 ist ein Schema, das den Zugriffsgewährungsgenerator 650, der in 6 gezeigt ist, gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht. Der Zugriffsgewährungsgenerator 650 enthält einen Adressdetektor 810 und einen Zugriffsgewährungskombinierer 820.
-
Der Adressdetektor 810 erfasst, ob die physikalische Adresse 652 in dem isolierten Speicherbereich 70 liegt. Der Adressdetektor 810 erzeugt ein Adressübereinstimmungssignal 822. Der Adressdetektor 810 enthält ein Maskierungselement 812, einen Komparator 814 und einen Adresserfassungskombinierer 820. Das Maskierungselement 812 maskiert die physikalische Adresse 652 mit dem Speichermaskierungswert 622. Bei einem Ausführungsbeispiel implementiert das Maskierungselement 812 eine UND-Operation. Der Komparator 814 vergleicht die maskierte physikalische Adresse mit dem Speicherbasiswert 632. Der Komparator 814 erzeugt ein Vergleichsergebnis 816, das dem Adressübereinstimmungssignal 822 entspricht. Der Adresserfassungskombinierer 820 kombiniert das Vergleichsergebnis 816 mit wenigstens einer Zugriffsbedingung 818. Die Kombination des Vergleichsergebnisses 816 und der wenigstens eine Zugriffsbedingung 818 stellt das Adressübereinstimmungssignal 822 zur Verfügung. Zusätzlich kann der Adresserfassungskombinierer 820 außerdem durch das Isolierter-Speicher-Prioritätssignal 736, wie es von dem in 7 gezeigten Priorisierer 730 erzeugt worden ist, ausgetastet bzw. freigegeben werden.
-
Der Zugriffsgewährungskombinierer 830 kombiniert das Adressübereinstimmungssignal 822 (aus dem Adressdetektor 810) und das Isolierter-Zugriff-Signal 664 (aus den Zugriffsinformationen 660), um das Zugriffsgewährungssignal 652 zu erzeugen. Der Zugriffsgewährungskombinierer 830 sichert, dass eine übereinstimmende physikalische Adresse von einer gültigen Prozessorbezugnahme auf den isolierten Speicherbereich begleitet wird, wie es von dem Isolierter-Zugriff-Signal 664 angezeigt wird.
-
9 ist ein Ablaufdiagramm, das einen Prozess 900 zum Kontrollieren des Zugriffs auf den Speicher gemäß einem Ausführungsbeispiel der Erfindung veranschaulicht.
-
Beim START konfiguriert der Prozess 900 die Zugriffstransaktion in dem MCH (Block 910). Die Konfiguration umfasst das Schreiben der Konfigurationseinstellung in den Konfigurationsspeicher, z.B. das Speichern der Speichermasken- und Speicherbasiswerte in das Speichermasken- bzw. Speicherbasisregister. Als nächstes konfiguriert der Prozess 900 die Zugriffskontrolle auf den Konfigurationsspeicher (Block 915), indem er das Verriegelungssteuerwort in den Steuerspeicher speichert. Der Prozess 900 sperrt dann Zugriffe auf den Konfigurationsspeicher auf der Grundlage des Verriegelungssteuerworts (Block 920). Der Verriegelungssteuerblock könnte jegliche Zugriffe auf die Konfiguration verhindern. Folglich sind sämtliche Zugriffe auf die Konfiguration nach der Verriegelung Fehler (faults).
-
Als nächste empfängt der Prozess 900 eine Zugriffstransaktion aus dem Prozessor und decodiert den Zugriffsbuszyklus (Block 925) und priorisiert die Zugriffstransaktion auf der Grundlage des Verriegelungssteuerworts (Block 930). Dann bestimmt der Prozeß 900, ob andere Zugriffsbedingungen erfüllt sind (Block 935). Wenn dies nicht der Fall ist, erzeugt der Prozess 900 eine Fehlschlag- oder Fehlerbedingung (Block 940) und wird dann beendet. Anderenfalls bestimmt der Prozess, ob die physikalische Adresse in dem isolierten Speicherbereich liegt, wie er durch den Speichermaskenwert und den Speicherbasiswert definiert ist (Block 945). Wenn dies nicht der Fall ist, erzeugt der Prozess 900 ein Zugriffsgewährungssignal für den normalen Ausführungsmodus (Block 950) und wird dann beendet. Anderenfalls erzeugt der Prozess 900 eine Zugriffsgewährung für den isolierten Ausführungsmodus (Block 955). Dies schließt das Erzeugen eines Adressübereinstimmungssignals ein, das anzeigt, ob die physikalische Adresse in dem isolierten Speicherbereich liegt, und ein Kombinieren des Adressübereinstimmungssignal und des Isolierter-Zugriff-Signals zum Erzeugen des Zugriffsgewährungssignals. Das Erzeugen des Adressübereinstimmungssignals umfasst das Maskieren der physikalischen Adresse mit dem Speichermaskenwert und das Vergleichen der maskierten physikalischen Adresse mit dem Speicherbasiswert, um ein Vergleichsergebnis zu erzeugen.
-
Als nächstes bestimmt der Prozess 900, ob ein Rücksetzen ausgelöst worden ist (Block 960). Wenn dies nicht der Fall ist, wird der Prozess 900 beendet. Anderenfalls initialisiert der Prozess 900 den isolierten Speicherbereich, den Konfigurationsspeicher und den Steuerspeicher (Block 965). Der Prozess 900 wird dann beendet.