DE69732181T2 - Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen - Google Patents

Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen Download PDF

Info

Publication number
DE69732181T2
DE69732181T2 DE69732181T DE69732181T DE69732181T2 DE 69732181 T2 DE69732181 T2 DE 69732181T2 DE 69732181 T DE69732181 T DE 69732181T DE 69732181 T DE69732181 T DE 69732181T DE 69732181 T2 DE69732181 T2 DE 69732181T2
Authority
DE
Germany
Prior art keywords
address
bus
smram
cycle
smm
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69732181T
Other languages
English (en)
Other versions
DE69732181D1 (de
Inventor
Dennis Reinhardt
P. James KARDACH
W. John HORIGAN
Neil Songer
F. Andrew GLEW
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE69732181D1 publication Critical patent/DE69732181D1/de
Publication of DE69732181T2 publication Critical patent/DE69732181T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means

Description

  • 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.)

Claims (17)

  1. Schaltung zur Verarbeitung eines Buszyklus mit einer ersten Adresse in einem Computersystem, wobei das Betriebssystem und die Anwendungssoftware unterbrochen werden können, um eine hardwarenahe Funktion durch eine System Management Mode (SMM) Behandlungsroutine auszuführen, die in einem System Management-Direktzugriffsspeicher (SMRAM) gespeichert ist, wobei die Schaltung folgendes umfasst: eine Adressanpassungslogik (403) zur Bestimmung, ob sich eine erste Adresse in einem SMRAM-Adressbereich befindet, wobei der genannte SMRAM-Adressbereich außerhalb eines Hauptspeicheradressbereichs liegt; eine Adressumsetzungslogik (410) zur Umsetzung der genannten ersten Adresse in eine zweite Adresse in dem genannten Hauptspeicher, wenn sich die genannte erste Adresse innerhalb des genannten SMRAM-Adressbereichs befindet, wobei es sich bei der genannten zweiten Adresse um eine unbenutzte Adresse in dem genannten Hauptspeicher handelt, um SMM-Daten gleichzeitig mit Nicht-SMM-Daten in dem Speicher zu cachen; gekennzeichnet durch eine Schutzlogik (110) zur selektiven Verarbeitung des genannten Buszyklus außerhalb des SMM, wobei die Schutzlogik eine Zyklusanpassungslogik (402) zur Bestimmung umfasst, ob es sich bei dem genannten Buszyklus um einen Zyklus einer ersten Anordnung von Buszyklustypen handelt; und einen ersten Ausgang (433), der mit der genannten Zyklusanpassungslogik gekoppelt ist, um anzuzeigen, dass der Buszyklus ausgeführt werden soll, wenn sich die erste Adresse innerhalb des SMRAM-Adressbereichs befindet, und wobei der Buszyklus einen Zyklus der ersten Anordnung von Buszyklusarten darstellt, und um anzuzeigen, dass der Buszyklus nicht ausgeführt werden soll, wenn sich die genannte erste Adresse innerhalb des genannten SMRAM-Adressbereichs befindet, und wenn der Buszyklus kein Zyklus der genannten ersten Anordnung von Buszyklusarten ist.
  2. Schaltung nach Anspruch 1, wobei der genannte SMRAM-Adressbereich von Z00000H bis einschließlich ZFFFFFH reicht, wobei Z eine Permutation mindestens eines Bits darstellt.
  3. Schaltung nach Anspruch 1, wobei der genannte SMRAM-Adressbereich von ZA0000H bis einschließlich ZDFFFFH reicht, wobei Z eine Permutation mindestens eines Bits darstellt.
  4. Schaltung nach Anspruch 1, wobei diese ferner einen Bereichsauswahlbus umfasst, wobei der genannte SMRAM-Adressbereich zumindest teilweise durch einen Wert an dem genannten Bereichsauswahlbus bestimmt wird.
  5. Schaltung nach Anspruch 1, wobei alle Adressen innerhalb des genannten SMRAM-Adressbereichs ein Bit A20 aufweisen, das gleich Null ist.
  6. Schaltung nach Anspruch 1, wobei die genannte entsprechende zweite Adresse innerhalb eines Grafikadapter-Speicheradressbereichs liegt.
  7. Schaltung nach Anspruch 1, wobei sich die genannte entsprechende zweite Adresse innerhalb eines Adressbereichs eines Bereichs einer Industriestandard-Architektur (ISA) befindet.
  8. Schaltung nach Anspruch 1, wobei sich die genannte entsprechende zweite Adresse innerhalb eines reservierten Abschnitts des genannten Hauptspeicheradressbereichs befindet.
  9. Schaltung nach Anspruch 1, wobei der genannte SMRAM-Adressbereich von Z00000H bis einschließlich ZFFFFFH reicht, wobei Z eine Permutation mindestens eines Bits darstellt, wobei mindestens ein Abschnitt des genannten mindestens einen Bit durch den genannten Wert bestimmt wird.
  10. Schaltung nach Anspruch 1, wobei der genannte SMRAM-Adressbereich von ZA0000H bis einschließlich ZDFFFFH reicht, wobei Z eine Permutation mindestens eines Bits darstellt, wobei mindestens ein Abschnitt des genannten mindestens einen Bit durch den genannten Wert bestimmt wird.
  11. Schaltung nach Anspruch 8, wobei der genannte reservierte Abschnitt den höchsten (letzten) Abschnitt des genannten Hauptspeicheradressbereichs umfasst.
  12. Schaltung nach Anspruch 1, wobei die genannte erste Anordnung von Buszyklusarten einen Writeback-Zyklus umfasst.
  13. Schaltung nach Anspruch 1, wobei diese ferner eine Fehlerlogik (110) zur Verarbeitung des genannten Buszyklus umfasst, wobei die genannte Fehlerlogik folgendes umfasst: eine Logik für harte Fehler (110) zur Bestimmung, ob es sich außerhalb des SMM bei dem genannten Buszyklus um eine Art einer zweiten Anordnung von Buszyklusarten handelt; und einen zweiten Ausgang, der mit der genannten Logik für harte Fehler gekoppelt ist, der anzeigt, dass der genannte Buszyklus angefordert worden ist, wenn sich die genannte erste Adresse innerhalb des genannten SMRAM-Adressbereichs befindet, und wenn es sich außerhalb des SMM bei dem genannten Buszyklus um einen Zyklus der genannten zweiten Anordnung von Buszyklusarten handelt.
  14. Schaltung nach Anspruch 13, wobei die genannte zweite Anordnung von Buszyklusarten einen Lesezyklus umfasst.
  15. Schaltung nach Anspruch 13, wobei die genannte zweite Anordnung von Buszyklusarten einen Read-for-Ownership-Zyklus umfasst.
  16. Schaltung nach Anspruch 13, wobei die genannte zweite Anordnung von Buszyklusarten einen Cache-Füllzyklus umfasst.
  17. Schaltung nach Anspruch 13, wobei die genannte zweite Anordnung von Buszyklusarten einen Schreibzyklus umfasst, wobei es sich bei dem genannten Schreibzyklus um einen Writeback-Zyklus handelt.
DE69732181T 1996-06-04 1997-05-27 Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen Expired - Fee Related DE69732181T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US656922 1991-02-19
US08/656,922 US5909696A (en) 1996-06-04 1996-06-04 Method and apparatus for caching system management mode information with other information
PCT/US1997/009571 WO1997046937A1 (en) 1996-06-04 1997-05-27 Method and apparatus for caching system management mode information with other information

Publications (2)

Publication Number Publication Date
DE69732181D1 DE69732181D1 (de) 2005-02-10
DE69732181T2 true DE69732181T2 (de) 2005-12-29

Family

ID=24635129

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69732181T Expired - Fee Related DE69732181T2 (de) 1996-06-04 1997-05-27 Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen

Country Status (7)

Country Link
US (1) US5909696A (de)
EP (1) EP0902922B1 (de)
JP (1) JP3987577B2 (de)
AU (1) AU3297597A (de)
DE (1) DE69732181T2 (de)
TW (1) TW351788B (de)
WO (1) WO1997046937A1 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151643A (en) * 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
US6397299B1 (en) * 1998-01-21 2002-05-28 Micron Technology, Inc. Reduced latency memory configuration method using non-cacheable memory physically distinct from main memory
US6560680B2 (en) 1998-01-21 2003-05-06 Micron Technology, Inc. System controller with Integrated low latency memory using non-cacheable memory physically distinct from main memory
US6192455B1 (en) * 1998-03-30 2001-02-20 Intel Corporation Apparatus and method for preventing access to SMRAM space through AGP addressing
US6535798B1 (en) * 1998-12-03 2003-03-18 Intel Corporation Thermal management in a system
US6779027B1 (en) * 1999-04-30 2004-08-17 Hewlett-Packard Development Company, L.P. Intelligent management module application programming interface with utility objects
US6748502B2 (en) * 2001-01-12 2004-06-08 Hitachi, Ltd. Virtual volume storage
US20040078681A1 (en) * 2002-01-24 2004-04-22 Nick Ramirez Architecture for high availability using system management mode driven monitoring and communications
KR100488516B1 (ko) * 2002-02-05 2005-05-11 삼성전자주식회사 디스플레이장치 및 디스플레이장치의 에러검출방법
US6918020B2 (en) * 2002-08-30 2005-07-12 Intel Corporation Cache management
US7107405B2 (en) * 2003-05-30 2006-09-12 Intel Corporation Writing cached data to system management memory
US20050188064A1 (en) * 2004-02-24 2005-08-25 Ioannis Schoinas Using a configuration mode for partition management in server platforms
US7475190B2 (en) * 2004-10-08 2009-01-06 International Business Machines Corporation Direct access of cache lock set data without backing memory
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US7644258B2 (en) * 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US8683158B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Steering system management code region accesses
US7896823B2 (en) * 2006-01-17 2011-03-01 Theranova, Llc Method and apparatus for treating wound using negative pressure therapy
US7925815B1 (en) 2006-06-29 2011-04-12 David Dunn Modifications to increase computer system security
US8661265B1 (en) 2006-06-29 2014-02-25 David Dunn Processor modifications to increase computer system security
US7610426B1 (en) * 2006-12-22 2009-10-27 Dunn David A System management mode code modifications to increase computer system security
US7840792B2 (en) * 2007-04-25 2010-11-23 American Megatrends, Inc. Utilizing hand-off blocks in system management mode to allow independent initialization of SMBASE between PEI and DXE phases
US8909957B2 (en) * 2010-11-04 2014-12-09 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Dynamic voltage adjustment to computer system memory
US9940204B2 (en) * 2015-11-02 2018-04-10 International Business Machines Corporation Memory error recovery
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10565141B1 (en) * 2018-08-28 2020-02-18 Dell Products L.P. Systems and methods for hiding operating system kernel data in system management mode memory to thwart user mode side-channel attacks

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4309532C2 (de) * 1992-03-25 1996-10-31 Intel Corp Verfahren zum Sichern einer Systemabbildung eines Computersystems auf einer permanenten Speichereinrichtung sowie ein Computersystem
JPH06230979A (ja) * 1992-06-17 1994-08-19 Cyrix Corp 改良されたシステム管理方法および装置
US5475829A (en) * 1993-03-22 1995-12-12 Compaq Computer Corp. Computer system which overrides write protection status during execution in system management mode
US5509139A (en) * 1993-03-22 1996-04-16 Compaq Computer Corp. Circuit for disabling an address masking control signal using OR gate when a microprocessor is in a system management mode
US5544344A (en) * 1994-12-06 1996-08-06 Digital Equipment Corporation Apparatus for caching smram in an intel processor based computer system employing system management mode
US5764999A (en) * 1995-10-10 1998-06-09 Cyrix Corporation Enhanced system management mode with nesting

Also Published As

Publication number Publication date
EP0902922B1 (de) 2005-01-05
JP3987577B2 (ja) 2007-10-10
JP2000512406A (ja) 2000-09-19
WO1997046937A1 (en) 1997-12-11
EP0902922A1 (de) 1999-03-24
DE69732181D1 (de) 2005-02-10
EP0902922A4 (de) 2000-06-21
TW351788B (en) 1999-02-01
AU3297597A (en) 1998-01-05
US5909696A (en) 1999-06-01

Similar Documents

Publication Publication Date Title
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE112005002405B4 (de) Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
DE10297433B4 (de) Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor
DE60003273T2 (de) Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse
DE69434473T2 (de) Prozessorschnittstellenchip für Doppelmikroprozessorsystem
DE69724572T2 (de) Verfahren und Vorrichtung zur Vorladung von verschiedenen vorgegebenen Adressenübersetzungsattributen
DE60102017T2 (de) Räumungsfilter für adressenübersetzungspuffer
DE112005002304B4 (de) Adreßumsetzung für Eingabe/Ausgabe- Vorrichtungen mittels hierarchischer Umsetzungstabellen
DE69637294T2 (de) Mikro-tlb mit parallelem zugriff zum beschleunigen der adressübersetzung
DE60026539T2 (de) Ein-/ausgabeadressübersetzung in einer brücke in unmittelbarer nähe eines lokalen ein-/ausgabebuses
DE69533312T2 (de) Geschütztes speichersystem und verfahren dafür
DE112005001798B4 (de) Verwalten von Prozessorressourcen während Architekturereignissen
DE60036960T2 (de) Unterscheidung von feinkorntranslation
DE60211076T2 (de) Datenübertragung zwischen virtuellen Adressen
DE102006015106B4 (de) Bereitstellen eines erweiterten Speicherschutzes
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE69629140T2 (de) Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index
DE60025788T2 (de) Flexibles Mehrzweck-Ein/Ausgabesystem
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE112005003098T5 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE102007032307A1 (de) Dedizierter Mechanismus zur Seitenabbildung in einer GPU
DE102009017496B4 (de) Speicherzugriff in einem System mit Speicherschutz
DE112008001666T5 (de) Hierarchische Cache-Tag-Architektur

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806

8339 Ceased/non-payment of the annual fee