-
STAND DER TECHNIK
-
1. Gebiet
der Technik
-
Die
vorliegende Erfindung betrifft Computersysteme, und im Besonderen
betrifft die vorliegende Erfindung Computersysteme, die in dem System
Management Mode (SMM) arbeiten können.
-
2. Beschreibung des Stands
der Technik
-
Der
System Management Mode (SMM) ermöglicht
es Systementwicklern, hardwarenahe Funktionen vorzusehen, wie etwa
Funktionen in Bezug auf das Power Management oder die Sicherheit,
und zwar auf eine für
Betriebssysteme und Anwendungsprogramme transparente Art und Weise.
Der SMM ermöglicht
eine Unterbrechung des Betriebs des Betriebssystems und der Anwendungssoftware
zur Ausführung
dieser hardwarenahen Funktionen. Nach der Ausführung der hardwarenahen Funktionen
wird der Betrieb des Betriebssystems oder der Anwendungssoftware
an dem Punkt der Unterbrechung wieder aufgenommen.
-
Zur
Einleitung einer hardwarenahen Funktion, wird eine Hardwareunterbrechung
erzeugt, die hierin als System Management Interrupt (SMI) bzw. Systemverwaltungsunterbrechung
bezeichnet wird. Wenn eine SMI empfangen wird, wartet der Prozessor
auf die vollständige
Ausführung
aller schwebenden bzw. anstehenden Schreiboperationen. Der Prozessor
wartet ferner auf an externen Vorrichtungen anstehende Schreiboperationen,
wie etwa an externen Cache-Speichern. Sobald alle schwebenden Schreiboperationen
vollständig
ausgeführt
worden sind, speichert der Prozessor einen Teil des Registerzustands
in dem System Management- Direktzugriffsspeicher
(SMRAM als englische Abkürzung
von System Management Random Access Memory) und beginnt mit der
Ausführung
einer SMM-Behandlungsroutine, einer Softwareroutine, die hardwarenahe Funktionen
ausführt,
wie etwa eine Fehlermeldung und -protokollierung, eine E/A-Emulation, eine Unterbrechungs-
oder Wiederaufnahmeoperation und Power Management.
-
Bei
dem SMRAM handelt es sich um für
den SMM reservierten Speicher. Die SMM-Behandlungsroutine ist in
dem SMRAM gespeichert. Vor der Ausführung der SMM-Behandlungsroutine
speichert der Prozessor automatisch einen Teil seines Registerzustands
in einem reservierten Abschnitt des SMRAM. Der Prozessor speichert
zum Beispiel häufig
den Zustand seiner Segmentierungsregister, seiner Allzweckregister,
des Instruktionszeigers bzw. des Befehlszeigers, der Deskriptortabellenregister
und modellspezifischer Register in dem reservierten Abschnitt des
SMRAM. Bestimmte Registerzustände, wie
etwa die Gleitkommaregister, werden beim Wechsel in den SMM unter
Umständen
nicht automatisch gespeichert, da viele SMM-Behandlungsroutinen
diese Register nicht modifizieren. Wenn diese Register jedoch in
einer SMM-Behandlungsroutine verwendet
werden, kann Code zum Speichern und Wiederherstellen dieser Register
in die SMM-Behandlungsroutine
aufgenommen werden.
-
Die
SMM-Behandlungsroutine arbeitet in einem dem Realmodus (englisch
Real Mode) ähnlichen
Modus. Ein Unterschied zwischen SMM und dem Realmodus ist es, dass
der 32-Bit-Prozessor in dem SMM einen Adressraum von 4 Gigabyte
adressieren kann. Der Realmodus (und geschützte Modus) sind Fachleuten
und Anwendern allgemein bekannt, die mit den Prozessoren der Intel-Architektur vertraut
sind.
-
Ein
Fortsetzungsbefehl (RSM als englische Abkürzung von Resume) am Ende der
SMM-Behandlungsroutine führt
die Steuerung zurück
auf das entsprechende unterbrochene Programm. Während der Ausführung des
RSM-Befehls stellt der Prozessor seinen Zustand aus dem SMRAM wieder
her und setzt die Ausführung
der unterbrochenen Routine fort. Da der interne Zustand des Prozessors
wiederhergestellt wird und alle Speicherzugriffe an den SMRAM gerichtet
sind, ist diese Unterbrechung sowohl für das Betriebssystem als auch
die Anwendungssoftware transparent.
-
Gemäß dem Stand
der Technik befindet sich der SMRAM in einem anderen Speicherraum
als der Standard-Speicherraum (Nicht-SMM), so dass der SMM für das Betriebssystem
transparent ist. Der Standards-Speicherraum adressiert für gewöhnlich den
ganzen Hauptspeicher. An Stelle eines separaten Speichers für den SMRAM
wird der SMRAM für gewöhnlich in
einem unbenutzten Abschnitt des Hauptspeichers gespeichert, wie
etwa dem Grafikadapterspeicher. In bestimmten Prozessoren wird die Position
des SMRAM auf einen Adressbereich innerhalb des SMRAM-Adressraums
abgebildet, der einem unbenutzten Abschnitt des Hauptspeichers entspricht.
Bei einigen Prozessoren der Intel-Architektur (englisch Intel Architecture)
entspricht die ursprüngliche
SMRAM-Position 00030000H (das an das Ende der Adresse angehängte „H" zeigt an, dass die Adresse
hexadezimal dargestellt ist). Gemäß dem Stand der Technik entspricht
der Adressbereich des Grafikadapterspeichers den Adressen A0000H
bis BFFFFH. Somit werden die SMRAM-Adressen von 30000H bis 4FFFFH
auf A0000H bis BFFFFH abgebildet. Wenn in dem SMM Zugriffe auf Adressen
in dem Adressbereich des Grafikadapterspeichers vorgenommen werden,
wird die Anforderung durch die Speichersteuereinheit zu dem Hauptspeicher (SMM-Daten)
geleitet. Wenn Zugriffe auf Adressen in dem Adressbereich des Grafikadapterspeichers
außerhalb
des SMM vorgenommen werden, wird die Anforderung durch eine periphere
Ein-Ausgabebrücke
(E/A-Brücke)
an den Grafikadapterspeicher an einer Videovorrichtung geleitet
(Nicht-SMM-Daten). Zwar können
die in dem SMRAM gespeicherten Daten die gleiche Adresse aufweisen
wie in dem Standardadressraum gespeicherte Daten, sind die SMM-Daten
und die der Adresse entsprechenden Nicht-SMM-Daten eindeutig unterscheidbar.
Da der Cache-Speicher Datenelemente ausschließlich nach deren Adresse unterscheidet,
existiert kein Mechanismus für
die Unterscheidung zwischen den SMM-Daten an einer bestimmten Adresse
und den Nicht-SMM-Daten an der gleichen Adresse, obwohl beide verschiedene
Daten aufweisen.
-
Wenn
SMM-Daten und Nicht-SMM-Daten in dem Cache gespeichert werden würden, ohne
dass ein Mechanismus für
deren Unterscheidung gegeben ist, so können Probleme in Bezug auf
eine Datenkorrumpierung auftreten. Wenn Daten an einer bestimmten
Adresse aus dem Cache-Speicher zurück geschrieben (englisch: Writeback)
werden, kann das Speicherteilsystem nicht bestimmen, ob es sich
bei den Daten um SMM-Daten und Nicht-SMM-Daten handelt. Wenn es
sich bei den Writeback-Daten zum Beispiel um SMM-Daten handelt,
sollte das Speicherteilsystem die Daten zu dem Hauptspeicher leiten.
Wenn es sich bei den Writeback-Daten um Nicht-SMM-Daten handelt,
sollte das Speicherteilsystem diese zum Beispiel an eine periphere E/A-Vorrichtung
leiten. Wenn das externe System die Writeback-Daten nicht richtig
leitet, können
die SMM-Daten durch Nicht-SMM-Daten überschrieben werden oder vice
versa, wodurch die Daten an dieser Adresse korrumpiert werden.
-
Bei
einem dem Stand der Technik entsprechenden Verfahren, die SMM-Daten
und Nicht-SMM-Daten in dem Cache unterschiedlich zu halten, wird
dafür gesorgt,
dass die SMM-Daten und die Nicht-SMM-Daten,
die sich die gleiche Adresse teilen, nicht in dem Cache gespeichert
werden können.
Der Grafikadapterspeicher wird normalerweise nicht in dem Cache
gespeichert, da Pixeldaten, die an die Anzeige geschrieben werden
müssen,
in Bezug auf den Grafikadapterspeicher aktualisiert werden müssen, anstatt
unbegrenzt in einem Writeback-Cache gespeichert zu werden. Bei diesem
Verfahren wird auch der SMRAM nicht im Cache gespeichert, der den
gleichen Adressbereich gemeinsam nutzt. Bei diesem Verfahren ist
beim Wechsel zwischen SMM und Nicht-SMM keine Entleerung des Caches
erforderlich, da SMM-Daten nicht in dem Cache gespeichert werden.
Ein Nachteil dieses Verfahrens ist es, dass nicht im Cache speicherbare
Buszyklen langsamer sind als im Cache speicherbare Buszyklen. Obwohl
die Latenzzeit verbessert wird, da keine Entleerungsoperationen
erforderlich sind, ist der Durchsatz der Befehle bzw. der Instruktionen
und Daten aufgrund der langsameren Zugriffszeiten der nicht im Cache
speicherbaren Zyklen reduziert.
-
Bei
einem anderen dem Stand der Technik entsprechenden Verfahren, um
die SMM-Daten und die Nicht-SMM-Daten unterschiedlich zu halten,
wird der Cache beim Eintritt in den SMM und beim Verlassen des SMM
entleert. Außerhalb
des SMM führt
der Prozessor allgemein im Cache speicherbare Buszyklen aus. Wenn
eine SMI erkannt wird, wird eine Entleerung des Cache durchgeführt, bevor
in den SMM gewechselt wird, um den Cache aller Nicht-SMM-Daten zu
leeren, so dass die SMM-Daten im Cache gespeichert werden können. In
dem SMM führt
der Prozessor allgemein in dem Cache speicherbare Buszyklen aus.
Wenn ein RSM-Befehl empfangen worden ist, wird die Entleerung des
Cache vorgenommen, bevor der SMM verlassen wird, um den Cache aller SMM-Daten
zu entleeren, so dass Nicht-SMM-Daten in dem Cache gespeichert werden
können.
In dem SMM weist der Cache nur SMM-Daten auf. Außerhalb des SMM weist der Cache
nur Nicht-SMM-Daten auf. Der Vorteil dieses Verfahrens liegt darin, dass
SMM-Buszyklen und Nicht-SMM-Buszyklen im Cache gespeichert werden,
was zu schnelleren Zugriffszeiten führt. Allerdings nehmen die
zum Eintreten in den SMM und zum Verlassen des SMM erforderlichen
Entleerungen des Cache viel Zeit in Anspruch, was zu einer erhöhten Latenz
der Systembehandlungsroutine führen
kann. Dies kann bei SMM-Behandlungsroutinen
zu einem Problem führen,
die schnell ansprechen müssen,
und auch bei Unterbrechungsbehandlungsroutinen, die durch zwei lange
Cache-Entleerungen
deaktiviert werden können.
Zum Beispiel erfordert ein in Echtzeit arbeitendes System eine geringe
Latenz, um auf Ereignisse in Echtzeit anzusprechen. Zum Beispiel
erfordern auch Echtzeitanwendungen eine niedrige Latenz, wie etwa
die Audiowiedergabe, die Spracherkennung, die Modememulation einschließlich digitaler Sprache
und Daten (DVSD) und Videokonferenzen. Die Folgen der erhöhten Latenz
können „Risse" und „Bildausfälle" in Videoanwendungen
sein sowie abgeschnittene Tonwiedergabe und andere akustische Artefakte
in Audioanwendungen. Darüber
hinaus kann eine erhöhte
Latenz auch Datenkorrumpierungen, Systemausfälle und den Verlust kritischer
Daten verursachen.
-
EP-A-0768603,
gemäß Artikel
54(3) EPÜ in Bezug
auf DE, GB und IT, offenbart einen verbesserten SMM zur erneuten
Abbildung des SMM-Bereichs. Eine Bus-Steuereinheit und eine Speichersteuereinheit
bestimmen, ob sich die Adresse innerhalb eines SMM-Bereichs befindet,
der sich außerhalb
des Adressbereichs des Systemspeichers befindet. Wenn sich die Adresse
innerhalb des SMM-Bereichs befindet, führt die Speichersteuereinheit
eine erneute Abbildung des SMM-Bereichs in den nicht benötigten Bereich
von 640K bis 768K des Systemspeichers aus. Dies sieht somit ferner
ein Caching der Daten aus dem SMM-Bereich vor.
-
Das
U.S. Patent US-A-5.475.829 offenbart eine Speichersteuereinheit
mit einer Logik, so dass der Schreibschutz überschrieben wird, wenn der SMM
aktiv ist. Auf diese Weise kann der SMRAM in dem Hauptspeicher angeordnet
sein.
-
Ferner
offenbart dieses Referenzdokument den Beginn des SMRAM an einer
anderen Position außerhalb
des Hauptspeicherraums.
-
Benötigt wird
ein Verfahren, dass ein Speichern von SMM-Daten und Nicht-SMM-Daten
in dem Cache ermöglicht,
ohne dass dabei Probleme in Bezug auf eine Datenkorrumpierung auftreten,
und während
gleichzeitig Entleerungsoperationen des Cache beim Wechsel zwischen
SMM und Nicht-SMM vermieden werden. Benötigt wird ferner ein Verfahren
zur Reduzierung der Latenzund zur Steigerung der Leistung von SMM-Behandlungsroutinen.
-
Vorgesehen
ist gemäß der vorliegenden
Erfindung eine Schaltung gemäß dem gegenständlichen
Anspruch 1.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
In
den Zeichnungen zeigen:
-
1 ein
Ausführungsbeispiel
eines Computersystems gemäß der vorliegenden
Erfindung;
-
2 ein
Ausführungsbeispiel
der Vorrichtung zum Schützen
des SMRAM-Zugriffs;
-
3 ein
Ausführungsbeispiel
der SMRAM-Zyklusanpassungslogik;
-
4 ein
Ausführungsbeispiel
der SMRAM-TSEG-Adressenanpassungslogik;
-
5 ein
Ausführungsbeispiel
der SMRAM-A-F-SEG-Adressenanpassungslogik;
-
6 ein
Ausführungsbeispiel
der Alias-SMRAM-TSEG-Adressenanpassungslogik;
-
7 ein
Ausführungsbeispiel
der Adressumsetzungslogik;
-
8 ein
Ausführungsbeispiel
der harte Fehler Erzeugungslogik; und
-
9 ein
Ausführungsbeispiel
eines Verfahrens zur Abbildung des SMRAM auf den Hauptspeicher,
um außerhalb
des SMM einen Schutz des mit Aliasen versehenen SMRAM-Raums vorzusehen.
-
GENAUE BESCHREIBUNG
DER ERFINDUNG
-
In
der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten
ausgeführt,
wie etwa spezifische Speicherkonfigurationen, Adressbereiche, Schutzmechanismen,
etc., um ein umfassendes Verständnis
der vorliegenden Erfindung zu vermitteln. Für den Fachmann ist es jedoch
ersichtlich, dass die vorliegende Erfindung auch ohne diese spezifischen
Einzelheiten ausgeführt
werden kann. In anderen Fällen
wurde auf die detaillierte Beschreibung allgemein bekannter Vorrichtungen
und Verfahrensschritte verzichtet, um die Erfindung nicht unnötig zu verschleiern.
-
System Management
Mode
-
Die
vorliegende Erfindung ermöglicht
das Speichern von Daten und Code des System Management Mode (SMM)
in einem Cache gemeinsam mit Nicht-SMM-Daten. Ermöglicht wird
dies gemäß der vorliegenden
Erfindung dadurch, dass ein oder mehr Adressbereiche des System
Management-Direktzugriffsspeichers (SMRAM) außerhalb des Hauptspeicheradressbereichs
vorgesehen sind, so dass die SMRAM-Adressen beim Speichern in dem
Cache von allen Hauptspeicheradressen unterschieden werden können. Wenn
SMRAM-Daten in dem Hauptspeicher gespeichert oder aus dem Hauptspeicher abgerufen
werden, wird die SMRAM-Adresse in eine entsprechende Alias-SMRAM-Adresse
in einem oder in mehreren unbenutzten Abschnitten des Hauptspeichers
umgesetzt. Wenn die SMRAM-Daten zum Beispiel aus dem Cache zurück geschrieben
(Writeback) werden, setzt eine Logik die SMRAM-Adresse um, die dazu
verwendet wird, die Daten von Hauptspeicheradressen zu unterscheiden,
und zwar in eine entsprechende Alias-SMRAM-Adresse, die einem Abschnitt des als
SMRAM zu verwendenden Hauptspeichers entspricht. Die unterschiedlichen
Adressbereiche ermöglichen
es, dass SMM-Daten aus dem SMRAM gleichzeitig bzw. gemeinsam mit Nicht-SMM-Daten
in dem Cache gespeichert werden können, wodurch die Zugriffszeiten
und die Latenz der SMM-Behandlungsroutinen reduziert werden.
-
Computersystem
-
Die
Abbildung aus 1 veranschaulicht ein Ausführungsbeispiel
eines Computersystems unter Verwendung der vorliegenden Erfindung.
Das Computersystem umfasst einen Prozessor (CPU) 100 und
einen Cache 106, die in einem Prozessorteilsystem 105 gekoppelt
sind. Das Prozessorteilsystem 105 ist mit einem Systembus 130 gekoppelt.
-
Buszyklusanforderungen
werden durch das Prozessorteilsystem 105 zu dem Systembus 130 und anderen
Busmastern gesteuert, und zwar zum Beispiel gemäß allgemein bekannten Verfahren.
Eine Speichersteuereinheit 110 und eine periphere E/A-Brücke 120 sind
ebenfalls mit dem Systembus 130 gekoppelt. Wenn eine Buszyklusanforderung
an dem Systembus 130 eine Adresse innerhalb spezifizierter
Speicheradressbereiche aufweist, leitet die Speichersteuereinheit 110 diese über einen
Hauptspeicherbus 170 an einen Hauptspeicher 140.
Bei der vorliegenden Erfindung handelt es sich bei einem derartigen
Speicheradressbereich um den SMRAM-Adressbereich. wenn eine Buszyklusanforderung
an dem Systembus 130 eine Adresse innerhalb spezifizierter
peripherer E/A-Adressbereiche aufweist, leitet die periphere E/A-Brücke 120 diese über einen
peripheren E/A-Bus 180 an periphere E/A-Vorrichtungen 190,
wie etwa eine Videovorrichtung 150 oder ein BIOS (englische
Abkürzung
von Basic Input/Output System) 160. Bei einem peripheren E/A-Adressbereich
handelt es sich um den Videografikadapter-Speicheradressbereich,
der einem Grafikadapterspeicher (GAM) 155 an der Videovorrichtung
entspricht. In einem Ausführungsbeispiel
sind der periphere E/A-Bus 180 und der Hauptspeicherbus 170 als
ein einzelner Bus implementiert, und ein Steuersignal wird dazu
verwendet, anzuzeigen, ob der Zyklus oder die peripheren E/A-Vorrichtungen 190 oder
den Hauptspeicher 140 verarbeitet werden soll, wie zum
Beispiel gemäß allgemein
bekannten Verfahren.
-
Die
Speichersteuereinheit 110 ist mit dem Systembus 130 gekoppelt,
der einen Adressbus 101, einen Zyklusstatusbus 102,
einen SMIACT#-Bus 103 und einen Datenbus 104 aufweist.
Der SMIACT#-Bus 103 zeigt an, ob sich das Prozessorteilsystem 105 in
dem SMM-Modus befindet. (Der Zusatz „#" zeigt an, dass das Signal niedrig ist,
wenn der Zustand erfüllt
ist). Der Zyklusstatusbus 102 zeigt an, ob der Systembus 130 aktiv
ist, und wenn dieser aktiv ist, wird angezeigt, welche Art von Zyklus
ausgeführt
wird. Der Adressbus 101 zeigt die Adresse der Busanforderung
an. Wenn es sich bei der Busanforderung um einen Schreibzyklus handelt,
schreibt das Prozessorteilsystem 105 die dieser Adresse
zugeordneten Daten auf den Datenbus 104. Wenn es sich bei
der Busanforderung um einen Lesezyklus handelt, liest das Prozessorteilsystem 105 die
Daten von dem Datenbus 104, wenn diese zurückgeführt werden.
Wenn die Speichersteuereinheit 110 bestimmt, dass die Busanforderung
durch sie ausgeführt
werden soll (anstatt zum Beispiel durch die periphere E/A-Brücke 120),
so erzeugt sie eine Busanforderung an dem Hauptspeicherbus 170,
die der Busanforderung an dem Systembus 130 entspricht. Der
Hauptspeicherbus 170 weist einen Adressbus 111,
einen Zyklusstatusbus 112 und einen Datenbus 114 auf.
Die Speichersteuereinheit 110 umfasst eine SMRAM-Adressenanpassungslogik,
die bestimmt, ob sich die Adresse an dem Adressbus 101 innerhalb des
SMRAM-Adressbereichs befindet, und mit einer SMRAM-Zyklusanpassungslogik,
die bestimmt, ob es sich bei dem Zyklus um einen Zyklus handelt,
der auch berechtigt ist, auf den SMRAM zuzugreifen. Die Speichersteuereinheit 110 umfasst
ferner eine Adressenumsetzlogik 410, welche die SMRAM-Adresse
in eine entsprechende Alias-SMRAM-Adresse umsetzt (auf diese abbildet),
die auf den Adressbus 111 gesteuert wird, wenn es sich
bei dem Zyklus um einen zulässigen
Zyklus mit einer Adresse innerhalb eines SMRAM-Bereichs handelt, und
wenn der Zyklus nicht zulässig
ist, wird die Adresse an dem Adressbus 101 auf den Adressbus 111 gesteuert.
Der Zyklusstatusbus 112 zeigt an, ob der Hauptspeicherbus 170 aktiv
ist, und wenn dieser aktiv ist, wird ferner angezeigt, welche Zyklusart ausgeführt wird.
Wenn es sich bei dem Zyklustyp um einen Schreibzyklus handelt, weist
der Datenbus 114 Daten auf, die den durch das Prozessorteilsystem 105 auf
den Datenbus 104 geschriebenen Daten entsprechen. Wenn
es sich bei der Zyklusart um einen Lesezyklus handelt, weist der
Datenbus 114 in der Folge aus dem Hauptspeicher 140 abgerufene
Daten auf, die in der Folge an dem Datenbus 104 zurückgeführt werden.
In einem Ausführungsbeispiel
umfasst die Speichersteuereinheit 110 ferner eine Logik
für harte
Fehler, welche einen Fehler anzeigt, wenn bestimmte Buszyklen mit
Adressen innerhalb eines SMRAM-Adressbereichs erkannt werden.
-
Auswahl von
SMRAM-Adressbereichen
-
Zwei
Faktoren, die bei der Auswahl eines SMRAM-Adressbereichs zu berücksichtigen
sind, sind der von dem Hauptspeicher verwendete Adressbereich und
der an dem Adressbus darstellbare Adressraum. Bei der vorliegenden
Erfindung ist jeder SMRAM-Adressbereich
so definiert, dass er sich innerhalb eines Abschnitts des Adressbereichs
befindet, der an dem Adressbus dargestellt werden kann, der sich
außerhalb
des Hauptspeicheradressbereichs befindet. Der Hauptspeicheradressbereich weist
alle Adressen auf, die direkt (ohne Umsetzung) dem installierten
Hauptspeicher entsprechen. Der Hauptspeicheradressbereich ist eine
Teilmenge aller Adressen, die an dem Adressbus dargestellt werden können. Zum
Beispiel kann ein 32-Bit-Adressbus 4 Gigabyte (4 GB) Hauptspeicher
unter Verwendung der Adressen 00000000H bis FFFFFFFFH (das an das
Ende der Adresse angehängte „H" zeigt an, dass die
Adresse hexadezimal dargestellt ist) adressieren, wobei jedoch zum
Beispiel ein Hauptspeicher von nur 64 MB installiert sein kann.
In einem derartigen Computer entspricht der Hauptspeicheradressbereich 00000000H
bis 03FFFFFFH, und der SMRAM-Adressbereich kann in einem Abschnitt
des Adressbereichs von 04000000 bis FFFFFFFFH definiert sein. Da
der Cache die werthöchsten
Bits der Adresse als Kennungselement (Tag-Element) (das nachstehend
im Text beschrieben ist) verwendet, um die Datenelemente in dem
Cache zu unterscheiden, können
SMM-Daten und Nicht-SMM-Daten in dem Cache unterschieden werden.
Wenn SMM-Daten aus dem Cache zurück
geschrieben werden, setzt die Adressumsetzlogik die SMRAM-Adresse
in eine entsprechende Alias-SMRAM-Adresse innerhalb des unbenutzten
Abschnitts des Hauptspeichers um. In einem Ausführungsbeispiel werden SMRAM-Adressbereiche
in dem höheren
Abschnitt des verfügbaren Adressraums
bevorzugt, um die Wahrscheinlichkeit zu reduzieren, dass die Anwendung
auf den SMRAM-Adressbereich zugreift anstatt auf den Hauptspeicheradressbereich.
-
Ein
dritter bei der Auswahl eines SMRAM-Adressbereichs zu berücksichtigender
Faktor ist der durch die Tag-Elemente (Kennungselemente) in dem
Cache darstellbare Adressbereich. Ein Kennungselement besteht aus
den werthöchsten
Bits der Adresse des in dem Cache gespeicherten zugeordneten Datenelements.
Das Kennungselement wird zur Identifizierung der Adresse des Datenelements verwendet.
In einem Ausführungsbeispiel
speichern die Kennungselemente in dem Cache nicht alle werthöchsten Bits
der Adresse. In einem derartigen Ausführungsbeispiel muss jeder SMRAM-Adressbereich so
ausgewählt
werden, dass die nicht gespeicherten Adressbits nicht erforderlich
sind für
eine Unterscheidung des Bereichs von dem Hauptspeicheradressbereich.
Der Hauptspeicheradressbereich entspricht zum Beispiel 00000000H
bis 03FFFFFFH bei einem installierten Hauptspeicher von 64 MB. In
einem derartigen System sind die werthöchsten Bits der Adresse stets
Null, wenn direkt auf den Hauptspeicher zugegriffen wird. Da ein
Teil der Chipfläche
eingespart werden kann, wenn die Bits der höchsten Ordnung nicht in den
Kennungselementen des Cache gespeichert werden, in der Annahme,
dass sie auch dann nicht verwendet werden, wenn zukünftige Speicheraktualisierungen
zugelassen werden. Wenn zum Beispiel die drei werthöchsten Bits
der Adresse A31, A30 und A29 nicht in dem Cache gespeichert werden,
ist der Cache weiterhin in der Lage, alle Adressen unterhalb von
512 MB (1FFFFFFFH) voneinander zu unterscheiden. Wenn jedoch Adressen
oberhalb von 1FFFFFFFH in dem Cache eines solchen Systems gespeichert
werden, so können
Probleme in Bezug auf eine Datenkorrumpierung auftreten. Zum Beispiel
wird die Adresse 3FF00000H in einer solchen Cache-Kennungsanordnung
als 1FF00000H gespeichert. Wenn die 3FF00000H zugeordneten Daten
zum Beispiel zurück
in dem Hauptspeicher geschrieben werden, so würden sie bei 1FF00000H gespeichert,
wodurch die vorher in 1FF00000H gespeicherten Daten überschrieben
werden. Zur Unterstützung
von Adressen oberhalb von 1FFFFFFFH ohne Datenkorrumpierung wird
allen Adressen außerhalb des
Cache-Kennungsadressbereichs
ein Standard-Cache-Typ von „nicht
im Cache gespeichert" zugeordnet.
Obwohl jeder SMRAM-Adressbereich als
außerhalb
des Hauptspeicheradressbereichs definiert ist, sollte er sich somit
trotzdem innerhalb des Bereichs des Adressraums befinden, der in
den Kennungselementen implementiert ist, um Leistungsvorteile für das Caching
von SMM-Daten zu erzielen.
-
Ein
vierter bei der Auswahl eines SMRAM-Adressbereichs zu berücksichtigender
Faktor ist die Unbestimmtheit des Pins A20M# im SMM. Der Pin A20M#
ist den mit den Mikroprozessoren mit Intel-Architektur vertrauten
Fachleuten allgemein bekannt. In einem Ausführungsbeispiel ist der Pin A20M#
in dem SMM unbestimmt. In einem Ausführungsbeispiel wird das Bit
A20 bei der Bestimmung nicht geprüft, ob sich die Adresse innerhalb
eines SMRAM-Adressbereichs befindet, um die Logik von dem unbestimmten
Signal A20M# unabhängig
zu machen. Die Adressen von zum Beispiel 1FFXXXXXXH sehen für einen
Adressbereich von 1FEXXXXXXH somit ebenfalls eine Übereinstimmung
vor.
-
Dies
erfolgt dadurch, dass der SMRAM-Adressbereich auf geraden Megabyte-Adressgrenzen
liegt. Arithmetisch ausgedrückt
befindet sich der SMRAM-Adressbereich an der Grenze, die durch die
logische UND-Verknüpfung
einer beliebigen Adresse und FFEFFFFFH gebildet wird. Praktisch wirkt
sich dies darin aus, dass A20M# ignoriert wird. In einem anderen
Ausführungsbeispiel
wird das Bit A20 angepasst, obwohl das Signal A20M# unbestimmt ist,
indem Software dafür
zuständig
ist, den SMRAM-Adressbereich einem geraden Megabyte-Bereich zuzuordnen
(A20 ist gleich Null). In einem derartigen Ausführungsbeispiel kann das entsprechende
ungerade Megabyte (A20 ist gleich Eins) anderen Funktionen zugeordnet
werden.
-
Auswahl von Alias-SMRAM-Adressbereichen
-
Ein
bei der Auswahl eines Alias-SMRAM-Adressbereichs zu berücksichtigender
Aspekt ist die Position der unbenutzten Speicherabschnitte. Gemäß der vorliegenden
Erfindung ist jeder Alias-SMRAM-Adressbereich als ein Adressbereich
definiert, der einem unbenutzten Abschnitt des Hauptspeichers entspricht.
In einem Ausführungsbeispiel entspricht
ein Alias-SMRAM-Adressbereich
dem Adressbereich des Grafikadapterspeichers. In einem Ausführungsbeispiel
entspricht der Adressbereich des Grafikadapterspeichers dem Adressbereich
von A0000H bis BFFFFH. Da in Bezug auf die Abbildung aus 1 alle
Adressen innerhalb des Speicheradressbereichs des Grafikadapters
an dem Systembus 130 durch die periphere E/A-Brücke 120 zu
dem Grafikadapterspeicher 155 an der Videovorrichtung 150 weitergeleitet
werden, werden die Hauptspeicherdatenelemente, die diesen Adressen
entsprechen, nicht durch die Videovorrichtung 150 verwendet.
Gemäß der vorliegenden
Erfindung wird eine SMRAM-Adresse an dem Systembus 130 durch
die Speichersteuereinheit 110 an den Hauptspeicherbus 170 weitergeleitet,
und zwar unter Verwendung einer entsprechenden Alias-SMRAM-Adresse
in dem von der Videovorrichtung nicht benutzten und verbleibenden
Abschnitt des Hauptspeichers. In einem Ausführungsbeispiel entspricht ein
Alias-SMRAM-Adressbereich den Grafikadapterspeicher- und den Erweiterungsadressbereichen
der Industry Standard Architecture (ISA). Der ISA-Erweiterungsbereich
entspricht dem Adressbereich von C0000H bis DFFFFH. Der ISA-Erweiterungsbereich
ist in acht 16K-Blöcke unterteilt,
die unabhängig
dem Speicher oder Vorrichtungen zugewiesen werden können. Wenn
ein Block einer Vorrichtung zugewiesen wird, wie etwa dem Grafikadapterspeicher,
so steht er zur Verwendung in dem Alias-SMRAM-Adressbereich zur
Verfügung.
In einem Ausführungsbeispiel
ist der Programmierer dafür
verantwortlich, den SMM-Code in Abschnitten des SMRAM-Bereichs zu
platzieren, die keine Segmente aufweisen, die zum Beispiel peripheren
E/A-Vorrichtungen zugeordnet bzw. zugewiesen sind. In einem weiteren
Ausführungsbeispiel
entspricht ein Alias-SMRAM-Bereich
einem Abschnitt des Hauptspeichers, der für den SMRAM reserviert ist.
In einem Ausführungsbeispiel
entspricht ein Alias-SMRAM-Bereich einem Block der letzten (höchsten)
128K-Adressen des Hauptspeicheradressbereichs. In einem Ausführungsbeispiel
entspricht ein Alias-SMRAM-Bereich einem Block der letzten 256K-Adressen
des Hauptspeicheradressbereichs. Für den Fachmann ist es offensichtlich,
dass auch Alias-SMRAM-Adressbereiche in anderen Abschnitten des
Hauptspeicheradressbereichs sowie SMRAM-Adressbereiche unterschiedlicher
Größen verwendet
werden können.
-
Ein
weiterer zu berücksichtigender
Aspekt bei der Auswahl des Alias-SMRAM-Adressbereichs ist es, dass
der Weg von den Adresspins der niedrigsten Ordnung des Prozessors
zu den Adresspins an dem Hauptspeicher die schnellste Betriebszeit
beschränkt
(auch als Geschwindigkeitspfad bekannt). Durch die Auswahl der SMRAM-Adresse
und einer entsprechenden Alias-SMRAM-Adresse
mit den genau gleichen Adressbits niedriger Ordnung kann das Hinzufügen einer
zusätzlichen
Schaltkreisanordnung in den Geschwindigkeitspfad verhindert werden.
Für den
Fachmann ist es offensichtlich, dass die Konstruktion der Decodiererschaltkreisanordnung
für die Bits
hoher Ordnung, die decodiert werden, so vorgesehen werden sollte,
dass kein neuer Geschwindigkeitspfad erzeugt wird.
-
SMRAM-A-F-Adressbereich
-
In
einem Ausführungsbeispiel
entspricht ein SMRAM-A-F-Adressbereich
einem Alias-SMRAM-A-F-Adressbereich in einem unbenutzten Abschnitt
des Hauptspeicheradressbereichs, wie etwa dem Grafikadapterspeicher.
In einem Ausführungsbeispiel
wird das Adressbit mit der höchsten
Ordnung, das in der Cache-Kennungsanordnung
implementiert ist, zur Unterscheidung aller SMRAM-Adressbereiche
von dem Hauptspeicheradressbereich verwendet, einschließlich des
Alias-SMRAM-Adressbereichs. In einem Ausführungsbeispiel entspricht der
SMRAM-A-F-Adressbereich 100XXXXXH
und der Alias-SMRAM-A-F-Adressbereich entspricht 000XXXXXH, wobei
X alle unabhängigen
vier Bit Kombinationen darstellt. In anderen Ausführungsbeispielen
können
andere Kombinationen von Adressbits hoher Ordnung zur Unterscheidung
des SMRAM-Adressbereichs von dem Hauptspeicheradressbereich verwendet
werden, einschließlich
des Alias-SMRAM-Adressbereichs. In einem Ausführungsbeispiel wird der SMRAM-Adressbereich
1FEA0000H bis 1FEDFFFFH auf den Alias-SMRAM-Adressbereich von 000A0000H
bis 000DFFFFH abgebildet. In diesem Ausführungsbeispiel weisen alle
abgebildeten Adressen eine Alias-Adresse in dem Grafikadapterspeicher
oder dem ISA-Bereich auf. In wiederum anderen Ausführungsbeispielen
wird nur ein Teil des erkannten SMRAM-Adressbereichs in einen Zielabschnitt
des Alias-SMRAM-Adressbereich
abgebildet. In einem Ausführungsbeispiel
wird zum Beispiel der SMRAM-Adressbereich von 1FEXXXXH auf den Alias-SMRAM-Adressbereich
von 000XXXXXH abgebildet. In diesem Fall wird zum Beispiel die Adresse 1FE00000H
auf 00000000H abgebildet, die außerhalb des Zielabschnitts
des Alias-SMRAM-Adressbereichs
innerhalb des Grafikadapterspeichers oder des ISA-Bereichs liegt
und einem Abschnitt des Hauptspeichers entsprechen kann, der für einen
anderen Zweck verwendet wird. In diesem Ausführungsbeispiel darf die SMM-Behandlungsroutine
nur den Abschnitt des SMRAM-Adressbereichs verwenden, der dem Zielabschnitt
des Alias-SMRAM-Adressbereichs entspricht. In einem Ausführungsbeispiel
werden Abschnitte des ISA-Erweiterungsbereichs
dem Hauptspeicher zugewiesen. In diesem Ausführungsbeispiel werden diese
Abschnitte des ISA-Erweiterungsbereichs
aus dem Zielabschnitt des Alias-SMRAM-Adressbereichs ausgeschlossen.
-
SMRAM-TSEG-Adressbereich
-
In
einem Ausführungsbeispiel
entspricht ein SMRAM-TSEG-Adressbereich
(TSEG als englische Abkürzung
von Top Segment) einem Alias-SMRAM-TSEG-Adressbereich in einem reservierten
Abschnitt des Hauptspeicheradressbereichs. In einem Computersystem
mit einem installierten Hauptspeicher von 64 MB entspricht der Hauptspeicheradressbereich
gemäß der vorstehenden
Beschreibung zum Beispiel 00000000H bis 03FFFFFFH. In einem Ausführungsbeispiel
reicht der SMRAM-TSEG-Adressbereich
von 13FCXXXXXH bis 13FFXXXXXH, und der Alias-SMRAM-TSEG-Adressbereich reicht von 03FCXXXXXH
bis 03FFXXXXXH (dies entspricht den letzten 256K Adressen in dem
Hauptspeicheradressbereich). In einem anderen Ausführungsbeispiel
reicht der SMRAM-TSEG-Adressbereich von 13FEXXXXXH bis 13FFXXXXXH,
und der Alias-SMRAM-TSEG-Adressbereich
reicht von 03FEXXXXXH bis 03FFXXXXXH (dies entspricht den letzten
128K Adressen in dem Hauptspeicheradressbereich). Der Alias-SMRAM-TSEG-Adressbereich kann
mehr oder weniger Adressen aufweisen. Darüber hinaus kann der Alias-SMRAM-TSEG-Adressbereich
anderen Abschnitten des Hauptspeicheradressbereichs entsprechen.
Für den
Fachmann auf dem Gebiet ist es ersichtlich, dass auch andere Bits
verwendet werden können,
um einen SMRAM-Adressbereich
von dem entsprechenden Alias-SMRAM-Adressbereich zu unterscheiden.
Für den
Fachmann auf dem Gebiet ist es ferner ersichtlich, dass auch andere
Adressbereiche verwendet werden können.
-
Weitere Ausführungsbeispiel
von SMRAM-Adressbereichen
-
Es
ist offensichtlich, dass ein oder mehrere TSEG-Adressbereiche und ein oder mehrere A-F-Adressbereiche
verwendet werden können.
In einem weiteren Ausführungsbeispiel
werden nur ein oder mehrere TSEG-Adressbereiche oder ein oder mehrere
A-F-Adressbereiche verwendet. Für
den Durchschnittsfachmann ist es offensichtlich, dass Adressen gemäß den vorstehenden
Ausführungen und
auf andere Art und Weise auf willkürliche Adressbereiche abgebildet
werden können.
Hiermit wird festgestellt, dass diesen Adressen feste Werte zugewiesen
werden. Für
den Durchschnittsfachmann auf dem Gebiet ist es ferner ersichtlich,
dass die willkürlichen
Adressbereiche programmgesteuert modifiziert werden können. In
einem Ausführungsbeispiel ist
ein optionaler Bereichsauswahlbus mit der SMRAM-TSEG-Adressanpassungslogik
und/oder der SMRAM-A-F-Adressanpassungslogik gekoppelt, um es zu
ermöglichen,
dass ein Abschnitt der Bits in dem spezifizierten SMRAM-Adressbereich
extern definiert wird. In einem Ausführungsbeispiel befinden sich
die SMRAM-Adressen in dem Adressbereich 1SEXXXXXH, wobei S die vier
Zielbits darstellt, die extern ausgewählt werden können, um
den SMRAM-Adressbereich
neu anzuordnen. Jedes Zielbit bestimmt, wie das entsprechende Adressbit
beschaffen sein muss, um eine Übereinstimmung
darzustellen. In einem weiteren Ausführungsbeispiel ist der SMRAM-Adressbereich
derart parameterisiert, dass er zu einem späteren Zeitpunkt leicht neu
angeordnet werden kann. Wenn der Hauptspeicher zum Beispiel auf
2 GB erweitert wird (3FFFFFFFH), kann der SMRAM-Adressbereich zu 7FEXXXXXH verändert werden.
In derartigen Systemen verwendete Caches weisen mehr Tag-Bits zur
Darstellung der größeren SMRAM-Adressen
auf. Für
den Durchschnittsfachmann ist es offensichtlich, dass auch andere Speicherbereiche
für andere
Systemkonfigurationen ausgewählt
werden können.
-
Reservieren
von SMRAM-Adressbereichen
-
Nachdem
entsprechende SMRAM-Adressbereiche ausgewählt worden sind, müssen sie
reserviert werden, damit sie nicht für andere Zwecke verwendet werden.
In Bezug auf die Abbildung aus 1 zeigen
das Betriebssystem und das BIOS 160 der peripheren E/A-Brücke 120 häufig an,
welche Adressen auf die peripheren E/A-Vorrichtungen 190 abgebildet
werden. Das Betriebssystem darf keine Adressen in einem SMRAM-Adressbereich
für die peripheren
E/A-Vorrichtungen 190 auswählen. Wenn das Betriebssystem
zum Beispiel eine Adresse innerhalb des SMRAM-Adressbereichs einer peripheren E/A-Vorrichtung
zugewiesen hat, würden
die periphere E/A-Brücke 120 und
die Speichersteuereinheit 110 so konfiguriert werden, das
Buszyklen an dieser Adresse an die entsprechenden Busse weitergeleitet werden.
Wenn die periphere E/A-Brücke 120 Priorität gegenüber der
Speichersteuereinheit 110 besitzt, würden alle Zugriffe auf die
Adresse zu einer peripheren E/A-Vorrichtung
geleitet, wodurch der Zugriff auf die SMM-Behandlungsroutine deaktiviert bzw.
gesperrt wird. In einem Ausführungsbeispiel
wird der SMRAM-Adressbereich reserviert, indem in einem Plug&Play-BIOS ein
Fixed Location Memory Range Descriptor (Speicherbereichsdeskriptor
mit fester Position) zu der System Device Configuration List (Systemvorrichtungs-Konfigurationsliste)
addiert wird. Ein weiteres Ausführungsbeispiel
betrifft das Melden des oberen Bereichs des installierten Speichers
als sich unterhalb der tatsächlichen
Spitze des installierten Speichers erstreckend in Bezug auf den
allgemein bekannten BIOS INT15/E801 Dienst, so dass das Betriebssystem
den Abschnitt des installierten Speichers zwischen der gemeldeten
Spitze des Hauptspeichers und der tatsächlichen Spitze des Hauptspeichers
nicht verwendet. Der nicht gemeldete Speicher wird für den SMRAM
verwendet. In anderen Ausführungsbeispielen
können
andere Verfahren zum Reservieren des SMRAM-Adressbereichs verwendet
werden.
-
SMRAM-Schutzmodi
-
Wenn
sich der Prozessor nicht in dem SMM befindet, können Beschränkungen in Bezug auf den Zugriff
auf den SMRAM wünschenswert
sein, um eine unbefugte Modifikation kritischer SMM-Behandlungsroutinen
zu verhindern. Da die SMM-Behandlungsroutinen
auf Realmodus-Privilegebenen ausgeführt werden, wenn sie in dem
SMM hervorgerufen werden, können
sie einen unbefugten Zugriff auf privilegierte Daten und Befehle
vorsehen. Ein derartiger unbefugter Zugriff kann die kritische Systemsteuerung
kompromittieren, wie etwa die thermische Steuerung, die Fehlerbehebung
und Emulation, und wobei zum Beispiel auch der Schutz vor Viren
kompromittiert werden kann. In einem Ausführungsbeispiel ist das Betriebssystem
damit vertraut, einen unbefugten Zugriff auf Adressen in dem SMRAM-Adressbereich zu
verhindern. Da ein Zugriff auf den hohen Speicher nur privilegierten
Programmen zur Verfügung
steht, wie etwa dem Betriebssystem und den Anwendungen, denen das
Betriebssystem den Zugriff gewährt,
können
Anwendungen ohne „Zustimmung" durch das Betriebssystem
nicht auf den SMRAM-Adressbereich
zugreifen. Somit wird für
alle SMRAM-Busanforderungen
an dem Systembus 130 angenommen, dass diese eine Befugnis
des Betriebssystems aufweisen und somit werden sie an den Hauptspeicherbus 170 geleitet.
-
In
einem anderen Ausführungsbeispiel
umfasst die Speichersteuereinheit 110 (in Bezug auf 1)
eine Schutzlogik, um es zu verhindern, dass bestimmte SMRAM-Busanforderungen
an dem Systembus 130 zu dem Hauptspeicherbus 170 geleitet werden.
In einem Ausführungsbeispiel
erzeugt die Schutzlogik ein Signal für einen harten Fehler an einem
optionalen Bus für
harte Fehler, wenn ein Nicht-Writeback-Zyklus außerhalb des SMM an den SMRAM
ergeht. In einem Ausführungsbeispiel
ist dieses Signal für
einen harten Fehler mit dem Prozessorteilsystem 105 gekoppelt,
um eine Fehlerbehandlungsroutine einzuleiten. In einem Ausführungsbeispiel
ermöglicht
es die Speichersteuereinheit 110, das Writeback-Zyklen
an den SMRAM außerhalb
des SMM Aktualisierungen der im Cache gespeicherten SMM-Daten. In
einem anderen Ausführungsbeispiel ignoriert
die Speichersteuereinheit 110 Writeback-Zyklen an den SMRAM
außerhalb
des SMM in der Annahme, dass nur unkritische SMM-Daten in dem Cache bei Beendigung der
SMM-Behandlungsroutine verbleiben. Wenn die Speichersteuereinheit 110 außerhalb
des SMM Writeback-Zyklen an den SMRAM ignoriert, ist es wichtig
zu garantieren, dass kritische Daten aus dem Cache zurück in den
SMRAM geschrieben werden, bevor der Prozessor wieder in einen Zustand
außerhalb
des SMM zurückkehrt.
In einem Ausführungsbeispiel
wird der gesamte SMRAM-Bereich zum Write-Through zugewiesen. Wenn Write-Through-Daten
in einem Cache modifiziert werden, wird ein Buszyklus zur Aktualisierung des
Hauptspeichers eingeleitet. Write-Through-Zyklen reduzieren die
Leistung, da ein Buszyklus jedes Mal auftreten muss, wenn die Daten
modifiziert werden. In einem anderen Ausführungsbeispiel wird der Bereich
des SMRAM, der kritische Daten aufweist, als Write-Through zugewiesen,
und der Bereich, der unkritische Daten aufweist, wird als Writeback
zugewiesen. Dies ermöglicht
die mögliche
Nutzung der Leistungsvorteile einer Writeback-Cachespeicherung,
während
unverzüglich
die Aktualisierung kritischer Daten in den SMRAM erzwungen wird.
Für den Fachmann
auf dem Gebiet ist es ersichtlich, dass auch andere Schutzmethoden
implementiert werden können.
-
SMRAM-Logik
-
Die
Abbildung aus 2 veranschaulicht ein Ausführungsbeispiel
der Vorrichtung zum Erkennen entsprechender Buszyklen an dem Systembus 130 sowie
zur Ausgabe eines Signals an einem Hauptspeicher-Ausgabebus 441, der
anzeigt, das anzeigt, dass der Zyklus an dem Hauptspeicherbus 170 ausgegeben
wird.
-
Ein
offener Bus 430, der Bus SMIACT# 103 (das Suffix
# zeigt an, dass das Signal niedrig ist, wenn der Zustand wahr ist),
ein Writeback-Bus 428 und ein Busmaster-Bus 427 sind
mit einer Zyklusanpassungslogik 402 gekoppelt, die an einem
Zyklustypanpassungsbus 433 anzeigt, ob ein an dem Systembus 130 ausgegebener
Zyklustyp auf dem SMRAM zugreifen kann. Der offene Bus 430 zeigt
an, ob ein Zugriff auf den SMRAM außerhalb des SMM zulässig ist
oder nicht. Er wird zum Beispiel für die SMRAM-Initialisierung
verwendet. Der Writeback-Bus 428 zeigt an, ob es sich bei
dem an dem Systembus 130 ausgegebenen Zyklus um einen Writeback-Zyklus
handelt. Das offene Signal kann zum Beispiel über den Zyklusstatusbus 102 gemäß allgemein
bekannten Verfahren bestimmt werden. Der Busmaster-Bus 427 zeigt
an, ob der an dem Systembus 130 ausgegebene Zyklus durch
einen Nicht-CPU-Busmaster
erzeugt wird, wie etwa eine PCI-Vorrichtung (PCI als englische Abkürzung von
Peripheral Component Interconnect). Das Busmaster-Signal kann zum
Beispiel gemäß allgemein
bekannten Verfahren über
den Zyklusstatusbus 102 bestimmt werden. Der Adressbus 101 weist
einen Adressbit-17-Bus 420 (A17), einen Adressbit-19-und-Adressbit-18-Bus 412 (A19-A18),
einen Adressbit-21-und-Adressbit-20-Bus 422 (A21-A20),
einen Adressbit-27-bis-Adressbit-22-Bus 423 (A27-A22),
einen Adreissbit-28-Bus 424 (A28) und einen Adressbit-31-bis-Adressbit-29-Bus 425 (A31-A29)
auf.
-
Ein
|DRB4-1| Bus 462 zeigt die Adressbits höherer Ordnung an, die den letzten
(höchsten)
4 Megabyte des installierten Hauptspeichers entsprechen, gemäß allgemein
bekannten Verfahren. Ein 256K/128K# Bus 426 zeigt an, ob
der SMRAM-TSEG-Adressbereich 256K Adressen oder 128K Adressen
aufweist. Der Adressbus 101, der |DRB4-1| Bus 462 und
der 256K/128K# Bus 426 sind mit einer SMRAM-TSEG-Adressenanpassungslogik 401 gekoppelt,
die an einem SMRAM-TSEG-Adressenanpassungsbus 432 anzeigt,
ob sich die Adresse innerhalb des SMRAM-TSEG-Adressbereichs befindet.
Der SMRAM-TSEG-Adressenanpassungsbus 432 und
der Zyklustypanpassungsbus 433 sind mit einem UND-Gatter 450 gekoppelt,
was an einem Ausgabe-TSEG-Zyklusbus 438 anzeigt; ob ein TSEG-Zyklus
zugelassen wird.
-
Der
A28-Bus 424 und der A31-A29-Bus 425 sind mit einer
SMRAM-A-F-Adressenanpassungslogik 403 gekoppelt,
die an einem SMRAM-A-F-Adressenanpassungsbus 434 anzeigt,
ob sich die Adresse innerhalb des SMRAM-A-F-Adressbereichs befindet. Der
SMRAM-A-F-Adressenanpassungsbus 434 und der
Zyklustypanpassungsbus 433 sind mit einem UND-Gatter 451 gekoppelt,
das an einem Ausgabe-A-F-Zyklusbus 439 anzeigt,
ob ein A-F-Zyklus zugelassen wird.
-
Ein
DRB4-Bus 461 zeigt die Adressbits hoher Ordnung an, die
den ersten (niedrigsten) 4 MG des nicht installierten Speicheradressraums
gemäß allgemein
bekannten Verfahren entsprechen. Der A27-A22-Bus 423, der
A28-Bus 424, der A31-A29-Bus 425 und
der DRB4-Bus 316 sind mit der Hauptspeicher-Adressenanpassungslogik 404 gekoppelt,
die an einem Ausgabe-Hauptspeicherzyklusbus 435 anzeigt,
ob ein Hauptspeicherzugriff (Nicht-SMRAM) gemäß allgemein bekannten Verfahren
zugelassen wird. In einem Ausführungsbeispiel lässt die
Hauptspeicheranpassungslogik einen Hauptspeicherzugriff für alle Adressen
zu, die niedriger sind als die durch den DRB4-Bus 461 angezeigte Adresse.
Der Fachmann auf dem Gebiet erkennt, dass andere Ausführungsbeispiel
der Hauptspeicheranpassungslogik implementiert werden können.
-
Ein
Adressöffnungs#-Bus 440 zeigt
an, dass sich die Adresse außerhalb
der Abschnitte des Speicherraums befindet, die peripheren E/A-Vorrichtungen
zugeordnet worden sind oder zum Beispiel dem Alias-SMRAM-TSEG-Adressbereich.
Eine E/A-Vorrichtungs-Adressenanpassungslogik 405 zeigt
an einem E/A-Adressenanpassungsbus 436 an,
dass sich die Adresse innerhalb eines E/A-Adressbereichs befindet,
gemäß allgemein
bekannten Verfahren. Eine Alias-SMRAM-TSEG-Adressenanpassungslogik 406 zeigt
an einem Alias-SMRAM-TSEG-Adressenanpassungsbus 437 an,
dass sich eine Adresse innerhalb des Alias-SMRAM-TSEG-Adressbereichs befindet.
Der E/A-Adressenanpassungsbus 436 und der Alias-SMRAM-TSEG-Adressenanpassungsbus 437 sind
mit den Eingängen
eines NOR-Gatters 452 gekoppelt, wobei an dem Adressöffnungs#-Bus 440 anzeigt
wird, dass sich die Adresse außerhalb
der Abschnitt des Speicherraums befindet, die peripheren E/A-Vorrichtungen
zugewiesen worden sind, oder des Alias-SMRAM-TSEG-Adressbereichs.
-
Der
Ausgabe-TSEG-Buszyklus 438, der Ausgabe-A-F-Zyklusbus 439 und
der Ausgabe-Hauptspeicherzyklusbus 435 sind mit einem ODER-Gatter 453 gekoppelt,
wodurch an einem Bus 442 für eine bedingte Ausgabe angezeigt
wird, dass ein Zyklus ausgegeben werden sollte, wenn das Signal
an dem Adressöffnungs#-Bus 440 nicht
geltend gemacht wird. Der Bus 442 für eine bedingte Ausgabe und
der Adressöffnungs#-Bus 440 sind
mit den Eingängen
eines UND-Gatters 454 gekoppelt, wobei an dem Hauptspeicherausgabebus 441 angezeigt wird,
dass der Zyklus an den Hauptspeicher ausgegeben wird. In einem Ausführungsbeispiel
wird dieses Signal zur Erzeugung des Zyklusstatussignals verwendet,
das das Ausgabesignal des Zyklusstatusbusses 112 gemäß allgemein
bekannten Verfahren erzeugt. In anderen Ausführungsbeispielen wird das Ausgabesignal
unabhängig
erzeugt, und das Signal zeigt an, ob der ausgegebene Buszyklus an
den Hauptspeicher oder zum Beispiel eine E/A-Vorrichtung geleitet
werden soll.
-
Zyklusanpassungslogik
-
Die
Abbildung aus 3 veranschaulicht ein Ausführungsbeispiel
der Zyklusanpassungslogik 402. Der SMIACT#-Bus 103 ist
mit einem Inverter 550 gekoppelt, der an einem SMIACT-Bus 542 anzeigt,
ob der SMM aktiv ist. Der SMIACT#-Bus 103 und der Writeback-Bus 428 sind
mit einem UND-Gatter 551 gekoppelt,
wobei an einem Nicht-SMM-Writeback-Bus 543 angezeigt wird,
ob es sich bei dem Zyklus außerhalb
des SMM um einen Writeback-Zyklus handelt. Der offene Bus 430,
der SMIACT-Bus 542 und der Nicht-SMM-Writeback-Bus 543 sind
mit den Eingängen
eines ODER-Gatters 552 gekoppelt, wobei an einem bedingten
Zyklustypanpassungsbus 544 angezeigt wird, ob der Zyklustyp
berechtigt ist, abhängig
von der Bedingung des Signals an dem Busmaster-Bus 427 auf
den SMRAM zuzugreifen. Der bedingte Zyklustypanpassungsbus 544 und
der Busmaster-Bus 427 sind mit den Eingänge eines UND-Gatters 553 gekoppelt,
wobei an dem Zyklustypanpassungsbus 433 angezeigt wird,
ob der Zyklustyp berechtigt ist, auf den SMRAM zuzugreifen.
-
In
dem in der Abbildung aus 3 veranschaulichten Ausführungsbeispiel
der Zyklusanpassungslogik 402 wird ein Zyklus an den SMRAM
für Writebacks
nur außerhalb
des SMM ausgegeben (außer
für den
Fall, dass das offene Bit gesetzt ist). Dies schützt den SMRAM effektiv von Nicht-SMM-Zugriffen,
währen
weiterhin SMM-Daten außerhalb
des SMM wiederhergestellt werden können, die in dem SMM in den
Cache geschrieben jedoch in dem SMM nicht in dem Hauptspeicher gespeichert
worden sind. In einem anderen Ausführungsbeispiel wird der Writeback-Bus 428 auch
für andere
Zyklen aktiviert bzw. geltend gemacht, die in dem SMM zulässig sind.
In einem weiteren Ausführungsbeispiel
werden alle Nicht-SMM-Buszyklen an den SMRAM ignoriert. Ein derartiger
Schutz muss durch einen entsprechend programmierten SMM-Code unterstützt werden.
Ein derartiger SMM-Code muss Variablen, die geschrieben werden bevor
sie in den SMM gelesen werden, aus dem Cache und in den Hauptspeicher
verschieben. Eine Möglichkeit, wie
dieser SMM-Code
dies realisieren kann, ist der Zugriff auf ausreichend Cache-Zeit-Aliase
für den
Zugriff auf die Variable, so dass die Variable aus dem Cache entfernt
wird. Cache-Zeit-Aliase sind Adressen, die der gleichen Gruppe bzw.
Anordnung entsprechen wie die Zieldaten. Wenn alle Datenplätze gefüllt sind,
die dieser Anordnung entsprechen, schreibt der Cache Daten gemäß allgemein
bekannten Verfahren zurück,
um Platz für
Daten zu schaffen, auf die vor kürzerer
Zeit zugegriffen worden ist. In wiederum einem anderen Ausführungsbeispiel
werden Nicht-SMM-Buszyklen abhängig
von einem Schutzmodussignal ignoriert oder zugelassen. Die Implementierung
jedes dieser Schutzmodi ist für
den Fachmann auf dem Gebiet offensichtlich. Der Fachmann auf dem
Gebiet erkennt, dass weitere Ausführungsbeispiele der Zyklusanpassungslogik 402 implementiert
werden können.
-
SMRAM-TSEG-Anpassungslogik
-
Die
Abbildung aus 4 veranschaulicht ein Ausführungsbeispiel
der SMRAM-TSEG-Adressumsetzungslogik 401. Der A31-A29-Bus 425 ist
mit den Eingängen
einer Gruppe von Invertern 650 gekoppelt, wobei an einem
A31-A29#-Bus 601 angezeigt wird, ob A31-A29 hoch sind.
Der |DRB4-1| Bus 462 und der A27-A22-Bus 423 sind
mit den Eingängen des
Komparators 651 verbunden, wobei an einem letzten 4-MG-Bus 602 angezeigt
wird, ob diese Adressbits denen der letzten 4 MG des installierten Hauptspeichers
entsprechen. Der A17-Bus 420 und der 256K/128K#-Bus 426 sind
mit einem ODER-Gatter 652 gekoppelt, das an einem A17-Anpassungsbus 603 anzeigt,
ob der A17-Bus dem Wert des Adressbits 17 entspricht, der
sich in dem SMRAM-TSEG-Adressbereich
befinden muss. Wenn das Signal an dem 256K/128K#-Bus 426 niedrig
ist, muss das Signal an dem A17-Bus 420 für eine Übereinstimmung
hoch sein, da der SMRAM-TSEG-Adressbereich
nur 128K Adressen aufweist. Wenn das Signal an dem 256K/128K#-Bus 426 hoch
ist, weist der SMRAM-TSRG-Adressbereich
256K Adressen auf, die sowohl A17 hoch als auch A17 niedrig entsprechen.
Der A31-A29#-Bus 601, der A28-Bus, der letzte 4-MG-Bus 602,
der A21-A20-Bus 422, der A19-A18-Bus 421 und der A17-Anpassungsbus 603 sind
mit einem UND-Gatter 653 gekoppelt, wobei an dem SMRAM-TSEG-Adressanpassungsbus 432 angezeigt
wird, ob sich die Adresse in dem SMRAM-TSEG-Adressbereich befindet.
-
SMRAM-A-F-Anpassungslogik
-
Die
Abbildung aus 5 veranschaulicht ein Ausführungsbeispiel
der SMRRM-A-F-Adressanpassungslogik 403. Der A31-A29-Bus 425 ist
mit den Eingängen
einer Anordnung von Invertern 750 gekoppelt, wobei an dem
A31-A29#-Bus 701 angezeigt wird, ob die A31-A29-Bits hoch
sind. Der A27-A22-Bus 423 ist mit den Eingängen einer
Anordnung von Invertern 751 gekoppelt, wobei an einem A27-A22#-Bus 702 angezeigt
wird, ob die A27-A22-Bits hoch sind. Der A21-A20-Bus 422 ist
mit den Eingängen
einer Gruppe von Invertern 752 gekoppelt, wobei an einem
A21-A20#-Bus 703 angezeigt wird, ob die A21-A20-Bits hoch
sind. Der A31-A29#-Bus 701, der A28-Bus 424, der A27-A22#-Bus 702 und
der A21-A20#-Bus 703 sind mit den Eingängen eines UND-Gatters 753 gekoppelt,
wobei an dem SMRAM-A-F-Adressanpassungsbus 434 angezeigt
wird, ob sich die Adresse innerhalb des SMRAM-Adressbereichs befindet.
-
Alias-SMRAM-TSEG-Adressanpassungslogik
-
Die
Abbildung aus 6 veranschaulicht ein Ausführungsbeispiel
der Alias-SMRAM-TSEG-Adressanpassungslogik 406. Der A31-A29-Bus 425 ist
mit den Eingängen
einer Gruppe von Invertern 850 gekoppelt, wobei an einem A31-A29#-Bus 801 angezeigt
wird, ob A31-A29 hoch sind. Der A28-Bus 424 ist mit dem
Eingang eines Inverters 851 gekoppelt, wobei an einem A28#-Bus 802 angezeigt
wird, ob A28 hoch ist. Der |DRB4-1| Bus 462 und der A27-A22-Bus 423 sind
mit den Eingängen
eines Komparators 852 gekoppelt, wobei an dem letzten 4-MG-Bus 803 angezeigt
wird, ob diese Adressbits denen der letzten 4 MG des installierten Hauptspeichers
entsprechen. Der A17-Bus 420 und der 256K/128K#-Bus 426 sind
mit einem ODER-Gater 853 gekoppelt, wobei an einem A17-Anpassungsbus 804 angezeigt
wird, ob der A17-Bus dem Wert des Adressbits 17 entspricht,
der sich in dem SMRAM-TSEG-Adressbereich befinden muss. Wenn das
Signal an dem 256K/128K#-Bus 426 niedrig ist, muss das
Signal an dem A17-Bus 420 für eine Übereinstimmung hoch sein, da
der SMRAM-TSEG-Adressbereich nur 128K Adressen aufweist. Wenn das
Signal an dem 256K/128K#-Bus 426 hoch ist, weist der SMRAM-TSEG-Adressbereich
256K Adressen auf, die sowohl A17 hoch und A17 niedrig entsprechen.
Der A31-A29#-Bus 801, der A28#-Bus 802, der letzte
4-MG-Bus 803, der A21-A20-Bus 422, der A19-A18-Bus 421 und
der A17-Anpassungsbus 804 sind mit einem UND-Gatter 854 gekoppelt,
wobei an dem Alias-SMRAM-TSEG-Adressanpassungsbus 437 angezeigt wird,
ob sich die Adresse innerhalb des Alias-SMRAM-TSEG-Adressbereichs
befindet.
-
Adressumsetzungslogik
-
Die
Abbildung aus 7 veranschaulicht ein Ausführungsbeispiel
der Adressumsetzungslogik 410 zur Umwandlung der Systembusadresse
an dem Adressbus 101 in die Hauptspeicherbusadresse an dem
Adressbus 111. Wenn sich die Systembusadresse innerhalb
eines SMRAM-Adressbereichs befindet, wird die Adresse in ihre entsprechende
Alias-SMRAM-Adresse
umgewandelt. Wenn sich die Systembusadresse außerhalb der Systembusadresse
befindet, handelt es sich bei der Hauptspeicheradresse um die Systembusadresse.
Der SMRAM-TSEG-Adressanpassungsbus 432 und
der SMRAM-A-F-Adressanpassungsbus 434 sind mit den Eingängen eines
ODER-Gatters 1050 gekoppelt, wobei an einem SMRAM-Adressanpassungsbus 1001 angezeigt
wird, ob sich die Adresse an dem Adressbus 101 innerhalb
eines SMRAM-Adressbereichs befindet. Der SMRAM-Adressanpassungsbus 1001 und der
Zyklustypanpassungsbus 433 sind mit den Eingängen eines
NAND-Gatters 1057 gekoppelt, wobei an einem SMRAM-Zyklus#-Bus 1002 angezeigt
wird, ob es sich bei dem Zyklus um einen zulässigen SMRAM-Zyklus handelt.
Der A28-Bus 424 und der SMRAM-Zyklus#-Bus 1002 sind
mit den Eingängen
eines UND-Gatters 1052 gekoppelt,
wobei an einem A28-Ausgangsbus 116 der Wert des A28-Bits
an dem Hauptspeicherbus angezeigt wird. Die anderen Adressbits,
einschließlich
dem A31-A29-Bus 425, dem A27-A22-Bus 423, dem
A21-A20-Bus 422, dem A19-A18-Bus 421 und dem A17-Bus 420 sind
dem Adressbus 101 und dem Adressbus 111 gemeinsam.
-
Logik für harte
Fehler
-
Die
Abbildung aus 8 veranschaulicht ein Ausführungsbeispiel
einer optionalen Logik 409 für harte Fehler. Der offene
Bus 430 ist mit dem Eingang eines Inverters 951 gekoppelt,
wobei an einem offenen# Bus 901 angezeigt wird, ob der
SMRAM-Raum bedingungslos verfügbar
ist. Der Writeback-Bus 428 ist
mit einem Inverter 952 gekoppelt, wobei an dem Writeback#-Bus
angezeigt wird, ob es sich bei dem Zyklus um ein Writeback handelt.
Der SMRAM-TSEG-Adressanpassungsbus 432 und der SMRAM-A-F-Adressanpassungsbus 434 ist
mit den Eingängen
eines ODER-Gatters 953 gekoppelt, wobei an einem SMRAM-Adressbus 903 angezeigt
wird, ob sich die Adresse innerhalb eines SMRAM-Adressbereichs befindet.
Der offene#-Bus 901, der SMIACT#-Bus 103, ein
Writeback#-Bus 902 und der SMRAM-Adressbus 903 sind
mit dem Eingang eines UND-Gatters 954 gekoppelt, wobei
an einem Bus 115 für
harte Fehler anzeigt, ob ein harter Fehler aufgetreten ist. In einem
Ausführungsbeispiel
zeigt das Signal für
einen harten Fehler an, dass ein Buszyklus an einen SMRAM-Adressbereich
abweichend von einem Writeback-Zyklus außerhalb des SMM eingeleitet
wurde. In einem Ausführungsbeispiel
weisen Nicht-Writeback-Zyklen
allgemein bekannte Zyklustypen auf, wie etwa Lesezyklen, Read-for-Ownership-Zyklen
und Cache-Füllzyklen
und Nicht-Writeback-Schreibzyklen. Für den Fachmann auf dem Gebiet
ist es offensichtlich, dass ein Fehlersignal für Buszyklusgruppen erzeugt
werden kann, die andere Zyklustypen aufweisen oder die nicht einige
der vorstehend genannten Zyklustypen aufweisen. In einem Ausführungsbeispiel
wird das Signal für
einen harten Fehler zum Einstellen eines Bits in einem Register verwendet.
In einem anderen Ausführungsbeispiel wird
das Signal für
einen harten Fehler verwendet, um ein Unterrechungssignal zu erzeugen,
das zum Einleiten einer Fehlerbehandlungsroutine verwendet werden
kann.
-
Adressumsetzungs-
und SMRAM-Schutzverfahren
-
Die
Abbildung aus 9 beschreibt einige Ausführungsbeispiele
des erfindungsgemäßen Verfahrens
zum Umsetzen einer SMRAM-Adresse in eine Alias-SMRAM-Adresse und
zum Schützen
des SMRAM gegen bestimmte Zugriffe außerhalb des SMM. Die folgenden
Schritte beziehen sich ferner auf die Abbildung aus 1.
In dem Schritt 1100 empfängt die Adressanpassungslogik
(zum Beispiel die SMRAM-TSEG-Adressanpassungslogik 401 oder die
SMRAM-A-F-Adressanpassungslogik 403)
die erste Adresse von dem Systembus 130. In dem Schritt 1105 empfängt die
Zyklusanpassungslogik 402 die Zyklusstatussignale von dem
Systembus 130. In dem Schritt 1110 bestimmt die
Adressanpassungslogik ob sich die erste Adresse innerhalb des SMRAM-Bereichs
befindet. Wenn sich die erste Adresse nicht innerhalb des SMRAM-Bereichs
befindet, wird der Zyklus in dem Schritt 1115 an dem Hauptspeicherbus 170 ausgegeben
und das Verfahren endet. Wenn sich die erste Adresse innerhalb des SMRAM-Bereichs
befindet, übersetzt
(Abbildung) die Adressumsetzungslogik 410 in dem Schritt 1120 die erste
Adresse in eine entsprechende zweite Adresse innerhalb des Alias-SMRAM-Bereichs.
In dem Schritt 1125 empfängt die Zyklusanpassungslogik 402 das SMM-Statussignal.
In dem Schritt 1130 bestimmt die Zyklusanpassungslogik 402,
ob SMM aktiv ist. Wenn SMM aktiv ist, wird der Zyklus in dem Schritt 1115 an dem
Hauptspeicherbus 170 ausgegeben und das Verfahren endet.
Wenn SMM nicht aktiv ist, bestimmt die Zyklusanpassungslogik 402 in
dem Schritt 1140, ob es sich bei dem Zyklus um einen Writeback-Zyklus
handelt. Wenn es sich bei dem Zyklus um keinen Writeback-Zyklus
handelt, gibt die optionale Logik 409 für einen harten Fehler in dem
Schritt 1145 einen harten Fehler aus und das Verfahren
endet. Wenn es sich bei dem Zyklus um einen Writeback-Zyklus handelt,
fällt das
Ansprechverhalten abhängig
von dem Ausführungsbeispiel
unterschiedlich aus. In einem Ausführungsbeispiel gibt die Zyklusanpassungslogik 402 in
dem Schritt 1155 den Zyklus an dem Hauptspeicherbus 170 aus.
In einem weiteren Ausführungsbeispiel
ignoriert die Zyklusanpassungslogik 402 den Zyklus. In
einem wiederum weiteren Ausführungsbeispiel
bestimmt die Zyklusanpassungslogik 402 in dem Schritt 1150,
welcher Schreibmodus freigegeben ist. Wenn in diesem Schutzmodus
Writebacks zulässig
sind, gibt die Zyklusanpassungslogik 402 in dem Schritt 1155 den
Zyklus an dem Hauptspeicherbus 1700 aus. Wenn in diesem
Schutzmodus keine Writebacks zulässig
sind, ignoriert die Zyklusanpassungslogik 402 den Zyklus.
-
Sonstige Ausführungsbeispiele
-
Es
können
weitere Ausführungsbeispiele
der vorliegenden Erfindung implementiert werden. Zum Beispiel kann
das Computersystem Mehrprozessorteilsysteme oder andere Bausteine
aufweisen, die Daten auf einen Systembus führen. Zwar wird hierin auf
Mikroprozessoren der Intel-Architektur verwiesen, wie etwa den Pentium® Prozessor,
wobei gemäß der beschriebenen
Erfindung jedoch auch andere Mikroprozessorarchitekturen verwendet
werden können,
wie etwa PowerPCTM und AlphaTM.
(Pentium® ist ein
eingetragenes Warenzeichen der Intel Corporation. PowerPCTM ist ein Warenzeichen von IBM, APPLE COMPUTER
und MOTOROLA. AlphaTM ist ein Warenzeichen
der Digital Equipment Corporation.)