-
Gebiet
-
Diese Erfindung betrifft Verfahren, Vorrichtungen und ein System zur Optimierung der SMI-Behandlung und -Initialisierung.
-
Hintergrund
-
Computersysteme durchdringen zunehmend unsere Gesellschaft einschließlich aller Geräte von kleinen tragbaren elektronischen Vorrichtungen, wie beispielsweise PDAs (Personal Digital Assistants) und Mobiltelephonen, zu anwendungsspezifischen elektronischen Komponenten, wie beispielsweise Settop-Boxen und anderen Unterhaltungselektronikgeräten, und bis zu vollständig beweglichen Systemen, Schreibtisch- und Server-Systemen. Da die Systeme jedoch immer kleiner werden und weniger kosten, nimmt der Bedarf an einer wirksamen Speicherzuweisung und Systemverwaltung weiter zu.
-
Traditionell waren Serversysteme durch einen beträchtlichen Umfang an herkömmlichem Speicher und mehrere physikalische Prozessoren im selben System (einem Multiprozessorsystem) gekennzeichnet, wobei sich ein physikalischer Prozessor auf einen einzelnen Prozessorchip oder eine einzelne Baugruppe bezieht. Der beträchtliche Umfang an für ein Serversystem verfügbarem Speicher führte zu einer äußerst unwirksamen Zuweisung von Speicherraum und verschwendeter Ausführungszeit.
-
Typischerweise arbitriert beim Booten jeder Prozessor in einem Mehrprozessorsystem um einen Wakeup, der eine Zuordnung von Speicher und eine Neuzuordnung der Basisadresse (SMBase) des Prozessors umfassen kann. Beim Initialisierungsprozeß jedes Prozessors wird ein Systemverwaltungsinterrupt (SMI) erzeugt, der mit einem Default-SMI-Handler für jeden Prozessor behandelt wird. Gewöhnlich arbitrieren die Prozessoren bei einem Rennen um das Flag-Schema, wobei der erste Prozessor, der mit der Behandlung des SMI beginnt, mit der Initialisierung beginnen kann. Die Initialisierung umfaßt typischerweise eine Zuordnung eines getrennten und verschiedenen 4kB-ausgerichteten Speicherraums für jeden Prozessor, wodurch gezwungenermaßen mehr Speicher zugewiesen werden muß, als für die Systemverwaltung benötigt wird.
-
Des weiteren läßt jeder Prozessor in einem Multiprozessorsystem, wenn ein Systemverwaltungsinterrupt (SMI) entweder während des Boot-Betriebs oder regulären Betriebs auftritt, einen getrennten und verschiedenen SMI-Handler laufen, um den SMI zu bedienen/behandeln. Es gibt zwei Arten von SMIs. Die erste Art ist ein asynchroner Interrupt, der durch die Systemhardware erzeugt werden kann, wenn beispielsweise eine Batterie schwach ist. Ein asynchroner Interrupt kann getrennt durch jeden beliebigen Prozessor behandelt werden, da die Kenntnis des Sicherungszustandsbereichs eines weiteren Prozessors nicht benötigt wird, um die Anforderung zu bedienen. Die zweite Art von Interrupt, ein synchroner SMI, der durch Software erzeugt wird, sollte von jedem Prozessor behandelt werden. Typischerweise trifft ein Software-erzeugter SMI auf, wenn das Betriebssystem (OS) möchte, daß ein Prozessor in den Systemverwaltungsmodus (SMM) eintritt. Der SMM ist eine Umgebung zur Ausführung von Softwareroutinen Handlern, die nicht mit dem OS oder Anwendungsprogrammen interferiert.
-
Bei aktuellen Mehrprozessorsystemen tritt jeder Prozessor in den SMM ein und führt dann einer nach dem anderen einen verschiedenen SMI-Handler aus, um ihre Register zu prüfen, um festzustellen, welcher Prozessor den SMI erzeugt hat. Dies erfordert, daß für jeden Prozessor ein getrennter SMI-Handler ausgeführt wird, wodurch Konkurrenzstreitpunkte um Ressourcen eingeführt werden, wodurch Aktualisierungen des SMI-Handler-Codes erschwert werden.
-
Jedoch sind diese ineffizienten Initialisierungs- und Behandlungsverfahren nicht auf Multiprozessorserversysteme beschränkt, sondern existieren auch bei anderen Systemen, wie beispielsweise mobilen Multiprozessorsystemen. Die Hyper-Threading-Technologie (HT) ist eine Technologie der Intel Corp. aus Santa Clara, Kalifornien, die eine parallele Ausführung von Threads unter Verwendung eines physikalischen Signalprozessors ermöglicht. Bei der HT werden zwei logische Prozessoren in einem physikalischen Prozessor (auf demselben Chip) integriert. Ein logischer Prozessor ist ein für das Betriebssystem (OS) sichtbarer, unabhängiger Prozessor, der zur Ausführung von Code und zur Beibehaltung eines eindeutigen architektonischen Zustands von einem anderen Prozessor in einem System eingerichtet ist. Die HT wird dadurch erreicht, indem mehrere architektonische Zustände vorhanden sind, die sich eine einzige Gruppe von Ausführungsressourcen teilen.
-
Daher ermöglicht die HT eine Implementierung eines Multi-(Logik-)Prozessorsystems auf einer mobilen Plattform. Wie oben gezeigt wurde, besteht bei herkömmlichen Multiprozessorsystemen, wie beispielsweise Serversystemen, eine ineffiziente Speicherzuweisung, Prozessorinitialisierung und SMI-Behandlung. Darüber hinaus nimmt der Bedarf an Optimierungen der zuvor genannten Ineffizienzen noch weiter zu, da Multiprozessorsysteme zunehmend in den Bereich der mobilen Geräte vordringen, bei welchen Ressourcen, wie beispielsweise Speicher, beschränkt sind.
-
Die
US 6,584,573 B1 offenbart ein Verfahren, bei dem zwei Prozessoren einen Prozessor-Verwaltungs-Interrupt (PMI) empfangen und die Prozessoren aufwachen, nachdem sie ein entsprechendes PMI-Signal erkannt haben, und einen PMI-Handler aufrufen. Gemäß einer Ausführungsform empfangt lediglich ein Prozessor das PMI-Signal. Dieser Prozessor sendet dann ein Inter Prozessor Interrupt(IPR)-Signal an die anderen Prozessoren auf einem Systembus.
-
Die
US 2002/0099893 A1 offenbart ein Verfahren, bei dem ein Code an einer ersten Speicheradresse mit einem Prozessor in Reaktion auf einen ersten SMI nach dem Erwecken des Prozessors ausgeführt wird. Der Prozessor behandelt SMIs für alle Prozessoren, wobei Parameter an den Prozessor aus einem SMRAM-Raum anderer Prozessoren übergeben werden. Zudem ist jeder Prozessor mit seinem eigenem SMI-Handler verbunden. Mit anderen Worten offenbart vorgenannte Druckschrift kein Prüfen, sondern lediglich ein Verfahren zum Behandeln eines SMI durch einen einzelnen Prozessor für jeden anderen Prozessor durch Zugriff auf die SMM-Information anderer Prozessoren. Indem ein einzelner Prozessor ein hardwarebezogenes SMI für mehrere andere Prozessoren behandelt, wird Ausführungszeit verschwendet.
-
Der Erfindung liegt somit die Aufgabe zugrunde, für eine Optimierung der SMI-Behandlung und -Initialisierung zu sorgen.
-
Erfindungsgemäß wird diese Aufgabe durch Verfahren gemäß den Ansprüchen 1, 12, und 25, Vorrichtungen gemäß den Ansprüchen 33 und 38 und ein System gemäß Anspruch 47 gelöst.
-
Kurzbeschreibung der Zeichnungen
-
Die vorliegende Erfindung wird anhand von Beispielen veranschaulicht und es wird keine Beschränkung durch die Figuren und die begleitenden Zeichnungen beabsichtigt.
-
1 zeigt ein Blockdiagramm einer Vorrichtung mit mehreren Prozessoren, die sich Ausführungsressourcen, Caches und Speicher teilen.
-
2 zeigt ein Blockdiagramm eines Systems mit mehreren Prozessoren.
-
3 zeigt ein Blockdiagramm eines Systems mit einem physikalischen Prozessor mit mehreren Logikprozessoren.
-
4 zeigt ein Ablaufdiagramm eines ersten Prozessors, der einen zweiten Prozessor erweckt.
-
5 zeigt ein Ablaufdiagramm einer beispielhaften Ausführungsform zum Erwecken eines zweiten Prozessors mit einem ersten Prozessor.
-
6 zeigt ein Ablaufdiagramm zur Behandlung eines SMI in einem ersten und zweiten Prozessor mit demselben SMI-Handler.
-
7 zeigt ein Ablaufdiagramm einer beispielhaften Ausführungsform zur Behandlung eines SMIs in einem ersten und zweiten Prozessor mit einem einzigen SMI-Handler.
-
8 zeigt ein Ablaufdiagramm zur Ausführung desselben Systemverwaltungsinterruptcodes in einem ersten und zweiten Prozessor, wenn der erzeugte SMI ein Software-SMI ist.
-
9 zeigt ein Ablaufdiagramm einer beispielhaften Ausführungsform eines ersten und zweiten Prozessors, die denselben SMI-Handler ausführen, wenn der bearbeitete SMI mit Software erzeugt wurde.
-
Detaillierte Beschreibung
-
Bei der folgenden Beschreibung sind mehrere spezifische Einzelheiten dargelegt, wie beispielsweise Beispiele spezieller Speicheradressen, Speichergrößen und Konfigurationen von Komponenten, um ein umfassendes Verständnis der vorliegenden Erfindung zu gewährleisten. Für den Fachmann ist jedoch offensichtlich, daß diese speziellen Einzelheiten für eine Realisierung der Erfindung nicht verwendet werden müssen. An anderen Punkten wurden gut bekannte Komponenten oder Verfahren, wie beispielsweise Routinen-Boot-Up-Blöcke (z. B. Selbsttest beim Einschalten (power an self-test (POST))), die Implementierung des speziellen Systemverwaltungsmodus (SMM) und der spezielle Systemverwaltungsinterrupthandlercode nicht in Einzelheiten beschrieben, um die vorliegende Erfindung nicht in unnötiger Weise zu verschleiern.
-
Das hier beschriebene Verfahren und die Vorrichtung dienen der Optimierung der Speicherzuweisung beim Erwecken eines Prozessors und der Optimierung der Behandlung des Systemverwaltungsinterrupts (SMI) bei Multiprozessorsystemen. Das Verfahren zum Erwecken eines Prozessors kann in Folge einer beliebigen Anzahl normaler Betriebsschritte auftreten. Beispielsweise, wenn der Computer eingeschaltet oder zurückgesetzt wird, kann ein inaktiver/schlafender Prozessor erweckt werden. Darüber hinaus kann ein inaktiver Prozessor erweckt werden, wenn ein System aus einem Zustand mit niedriger Leistung, wie beispielsweise einem Schlaf-, Standby-, Unterbrechungs-, Überwinterungs-, Wait-for-SIPI-, Schlaf-, Tiefschlaf-, Resetzustand oder jedem beliebigen anderen Modus, in dem der zweite Prozessor nicht auf Interrupts antwortet, zurückkehrt.
-
Für den Fachmann ist es einfach zu erkennen, daß das offenbarte Verfahren zum Erwecken eines zweiten Prozessors auf Computersysteme jedes Niveaus (Mikrocomputer (PDAs), Mobile Plattformen, Schreibtischplattformen und Serverplattformen) sowie auf jede beliebige Anzahl von Prozessoren angewandt werden kann. Beispielsweise kann dieses Verfahren zum Erwecken eines inaktiven Prozessors durch einen aktiven Prozessor beispielsweise bei einem Multiprozessorsystem mit vier oder mehr Prozessoren verwendet werden.
-
In 1–3 sind veranschaulichende Beispiele von Hardware gezeigt, die zur Implementierung der hier beschriebenen Verfahren verwendet werden können. Die beschriebenen Verfahren können bei jedem beliebigen Multiprozessorsystem verwendet werden. Daher werden die Verfahren lediglich mit Bezugnahme auf 3 beschrieben, um die Erfindung nicht durch unnötige Einzelheiten zu verschleiern.
-
1 zeigt ein Blockdiagramm einer Vorrichtung 105 mit mehreren logischen Prozessoren. Ein physikalischer Prozessor bezieht sich auf einen physikalischen Prozessorchip oder eine einzelne Baugruppe bzw. Package. Ein logischer Prozessor ist ein unabhängiger, für das Betriebssystem (OS) sichtbarer Prozessor, der zur Ausführung von Code von einem anderen Prozessor in einem System und zur Beibehaltung eines eindeutigen architektonischen Status geeignet ist. Die Hyper-Threading-Technologie (HT) ist eine Technologie der Intel Corp. aus Santa Clara, Kalifornien, die eine parallele Ausführung von Threads unter Verwendung eines physikalischen Signalprozessors zuläßt. Die HT umfaßt zwei logische Prozessoren in einem einzelnen physikalischen Prozessor und wird durch Duplizieren des architektonischen Zustands erreicht, wobei sich jeder architektonische Zustand eine einzelne Gruppe von Prozessorausführungsressourcen teilt.
-
Die Vorrichtung 105 kann einen ersten Prozessor 120 und einen zweiten Prozessor 125 umfassen. Die Vorrichtung 105 kann ein physikalischer Prozessor sein. Die Vorrichtung 105 kann auch ein eingebettetes System oder eine andere Vorrichtung mit zumindest zwei Prozessoren sein. Die Prozessoren 120 und 125 können logische Prozessoren sein. Beispielsweise kann der Prozessor 105 architektonische Statusregister 130 und 135 umfassen, die jeweils einen eindeutigen architektonischen Status halten. Es ist ohne weiteres zu erkennen, daß die Vorrichtung 105 mehr als zwei logische Prozessoren umfassen kann, die jeweils ein diesen zugeordnetes architektonisches Zustandsregister umfassen, um einen getrennten architektonischen Status zu halten. Die beiden Prozessoren 120 und 125 teilen sich dieselben Ausführungsressourcen 140, Caches 145, Bus 150 und Speicher 155.
-
Die Vorrichtung 105 kann auch einen Kontroller 110 umfassen. Der Kontroller 110 kann ein Advanced Programmable Interrupt Controller (APIC) sein. Der Kontroller 110 kann zur Erzeugung eines Systemverwaltungsinterrupts (SMI) verwendet werden. Der Kontroller 110 kann auch zur Kommunikation auf einem APIC-Bus, der nicht abgebildet ist, verwendet werden, mit dem der erste Prozessor 120 und der zweite Prozessor 125 miteinander gekoppelt sind.
-
Die Vorrichtung 105 kann auch einen Speicher 155 umfassen. Bei dem Speicher kann es sich um jede Art von Speicher handeln, in dem Daten gespeichert werden können. Beispielsweise kann der Speicher 155 Register zur Informationsspeicherung umfassen. Der Speicher 155 kann auch eine andere Cache-Ebene 145 umfassen. Der Speicher 155 kann auch in der Form eines in der Vorrichtung 105 angeordneten Systemspeichers vorliegen.
-
Der Speicher 155 umfaßt zumindest eine erste Speicherstelle 160 und eine zweite Speicherstelle 165. Die erste Speicherstelle 160 kann einen Default-System-Verwaltungshandlercode umfassen. Die erste Speicherstelle kann auch 1k-ausgerichtet sein. Bei der zweiten Speicherstelle 165 kann es sich um eine weitere nicht 1k-ausgerichtete Adresse handeln. Die erste Speicherstelle 160 und die zweite Speicherstelle 165 können auch Basisadressen für einen ersten Prozessor 120 bzw. einen zweiten Prozessor 125 sein. Die zweite Speicherstelle 165 kann auch als ein temporärer Speicherraum verwendet werden, wenn die Basisadresse des ersten Prozessors 120 neu zugeordnet wird. Die erste und die zweite Speicherstelle werden mit Bezugnahme auf die in den 4–9 beschriebenen Verfahren in weiteren Einzelheiten erläutert.
-
In 2 ist ein veranschaulichendes Beispiel eines Systems mit mehreren Prozessoren abgebildet. Das System kann einen ersten Prozessor 205 und einen zweiten Prozessor 210 umfassen. Die Prozessoren 205 und 210 können physikalische Prozessoren sein, wobei sich jeder Prozessor in einem eigenen Package befindet. Das System kann auch einen Systembus 215 umfassen, um die Prozessoren 205 und 210 mit dem Kontroller-Hub 220 zu koppeln. Der Kontroller-Hub 220 kann auch durch einen Bus 225 mit dem Speicher 230 gekoppelt sein.
-
3 zeigt ein Beispiel eines Systems mit mehreren Prozessoren. Der Prozessor 305 kann einen Prozessor 310 und einen Prozessor 315 umfassen, die sich Ausführungsressourcen 330, einen Cache 335 und einen Systembus 340 teilen. Die architektonischen Zustandsregister 320 und 325 halten den eindeutigen architektonischen Zustand der Prozessoren 320 bzw. 325. Der Prozessor 305 wird durch den Systembus 340 mit dem Kontroller-Hub 345 gekoppelt. Der Kontroller-Hub 345 kann durch einen zweiten Bus 350 mit dem Systemspeicher gekoppelt sein. Der Systemspeicher kann mehrere Speicherstellen umfassen, wie beispielsweise eine erste Speicherstelle 365 und eine zweite Speicherstelle 370.
-
Das veranschaulichende System aus 3 wird zur Beschreibung der in den 4–9 abgebildeten Verfahren verwendet. Obwohl zur Beschreibung der Verfahren zur effizienten Speicherzuweisung und Behandlung von Systemverwaltungsinterrupts (SMI) auf 3 Bezug genommen wird, ist ohne weiteres verständlich, daß die hier beschriebenen Verfahren durch die Hardware in 1, 2 und durch andere, nicht abgebildete Hardwarekonfigurationen implementiert werden können.
-
In 4 ist ein Ablaufdiagramm auf hoher Ebene eines Erweckens eines zweiten Prozessors durch einen ersten Prozessor gezeigt. Der erste und der zweite Prozessor können logische Prozessoren sein, die sich auf einem einzelnen Prozessorchip befinden, getrennte, sich in getrennten Packages bzw. Baugruppen befindende Prozessoren, wie in 2 gezeigt ist, oder Prozessoren in anderen Multiprozessorkonfigurationen. Anfangs, wenn ein Multiprozessorsystem aus einem Zustand niedriger Leistung, wie beispielsweise einem Schlaf-, Standby-, Unterbrechungs-, Überwinterungs-, Wait-for-SIPI-, Schlaf-, Tiefschlaf-, Resetzustand oder jedem beliebigen anderen Modus kommt, in dem der zweite Prozessor nicht auf Interrupts reagiert, sollte ein erster Prozessor in einen aktiven Zustand initialisiert werden, während ein zweiter Prozessor in einen inaktiven Zustand initialisiert werden sollte. Ein aktiver Zustand kann einen Ausführungscode oder ein Antworten auf Interrupts umfassen. Alternativ kann ein inaktiver Zustand ein Nicht-Antworten auf Interrupts umfassen. Ein inaktiver Zustand kann auch ein Nicht-Ausführen von Code umfassen.
-
Im Block 405 wird ein erster Systemverwaltungsinterrupt (SMI) empfangen. Häufig wird ein SMI dazu erzeugt, um einen Dienst von einem Prozessor anzufordern. Sobald ein SMI empfangen wurde, tritt ein Prozessor in einen Systemverwaltungsmodus (SMM) ein, um die Anforderung durch Ablaufenlassen eines SMI-Handlers-Codes und von Routinen in einem herkömmlichen Speicher zu bedienen, sofern der Prozessor nicht inaktiv ist und nicht auf Interrupts antwortet.
-
Als ein veranschaulichendes Beispiel kann der erste SMI im Block 405 durch einen Kontroller-Hub, wie beispielsweise dem in 3 abgebildeten Kontroller-Hub 345, erzeugt werden. Als ein weiteres Beispiel kann der erste SMI im Block 405 durch einen APIC, wie beispielsweise den Kontroller 110 in 1, oder durch einen getrennt im System angeordneten Kontroller (nicht abgebildet) erzeugt werden. Als ein noch weiteres Beispiel kann der erste SMI im Block 405 durch Ändern der Logikebene eines Pins in einem Prozessor, wie beispielsweise dem Prozessor 305 oder einem Kontroller-Hub, wie beispielsweise dem Kontroller 345, erzeugt werden.
-
Der erste SMI im Block 405 kann eine Serviceanforderung zur Initialisierung des SMM sein, um Adreßraum für die Systemverwaltung zuzuweisen und/oder um eine Basisadresse eines Prozessors (SMBase) neu zuzuordnen. Bei der SMBase kann es sich um die Adresse handeln, an der der Systemverwaltungsteil des Speichers beginnt. SMBase kann auch die Adresse sein, von der auf den Systemverwaltungsteil des Speichers verwiesen wird. Beispielsweise kann SMBase einen Wert von 0x30000 sein. Auf den SMI-Handler für diesen Teil des Speichers kann durch die SMBase mittels eines Versatzes verwiesen werden. Beispielsweise kann der SMI-Handler von der SMBase um 0x8000 (SMBase + 0x8000) versetzt sein, wodurch in diesem Beispiel der SMI-Handler auf 0x38000 gesetzt wäre.
-
Wenn der SMI in einem Multiprozessorsystem erzeugt wird, sollte sowohl ein erster als auch ein zweiter Prozessor den SMI empfangen/zwischenspeichern. Jedoch könnte es sein, daß der zweite Prozessor nicht in den SMM eintritt und den SMI zu diesem Zeitpunkt behandelt, da er sich in einem inaktiven Status befindet (in dem er nicht auf Interrupts antwortet). Im Gegensatz dazu kann im Block 410 der erste Prozessor aktiv sein und den ersten im Block 405 empfangenen SMI behandeln. Wenn der erste SMI durch den ersten Prozessor empfangen wird, kann der erste Prozessor in den Systemverwaltungsmodus (SMM) eintreten, um den SMI zu bedienen/behandeln.
-
Wie in 5 gezeigt ist, kann der SMI durch den ersten Prozessor dadurch behandelt werden, indem der SMM im Block 505 initialisiert wird und ein Default-SMI-Handler im Block 510 ausgeführt wird. Der Default-SMI-Handler kann ein sich an einer Default-Speicherstelle, wie beispielsweise der ersten Speicherstelle 365, befindender Default-Code sein. Die erste Speicherstelle kann 1k, 4k oder jeden beliebigen anderen ausgerichteten Speicherbereich umfassen.
-
Wieder mit Bezugnahme auf 4 wird ein Wake-Up-Signal durch den ersten Prozessor im Block 415 erzeugt. Das Wake-Up-Signal im Block 415 kann jedes beliebige Signal sein, das ausgesandt wird, um den zweiten Prozessor aus einem inaktiven Zustand zu erwecken. Da es sein kann, daß der zweite Prozessor in einem inaktiven Zustand nicht auf Interrupts antwortet oder Code nicht ausführt, kann es sich bei dem Wake-Up-Signal um ein Bussignal handeln, auf das der zweite Prozessor in einem inaktiven Zustand wartet, um mit dem Erweckungsprozeß zu beginnen. Bei einer Ausführungsform kann es sich bei dem Wake-Up-Signal um eine Start-Up-Inter-Prozessor-Interrupt-(SIPI)-Nachricht handeln, die auf einem (nicht dargestellten) Bus, wie beispielsweise einem APIC-Bus übertragen wird, durch den der erste und zweite Prozessor gekoppelt sind.
-
Wie in 5 in Block 515 abgebildet ist, kann es sich bei dem Wake-Up-Signal um einen Vektor handeln, der auf der Speicherstelle eines Default-SMI-Handlers basiert. Das Wake-Up-Signal kann jede beliebige Adresse im Speicher oder jede beliebige Referenz auf einen Ort einer Adresse im Speicher sein. Bei einer Ausführungsform befindet sich der Default-SMI-Handler an der ersten Speicherstelle 365, wobei das Wake-Up-Signal ein auf der ersten Speicherstelle 365 basierender Vektor ist. Bei einer weiteren Ausführungsform basiert das Wake-Up-Signal auf der ersten Speicherstelle 365, wobei es sich um einen 1k, 4k oder einen anderen ausgerichteten Speicheradreßbereich handelt. Für den zweiten Prozessor kann es erforderlich sein, daß das Wake-Up-Signal ausgerichtet ist und sich in einem herkömmlichen Systemspeicher befindet. Bei noch einer weiteren Ausführungsform kann es sich bei dem ersten Speicherort 365 um den Adreßort handeln, an dem der zweite Prozessor 315 mit der Ausführung beginnt.
-
Zurückkehrend zu 4 zeigt der Block 420 das Erwecken des zweiten Prozessors. Der Block 420 kann ein Erwecken des zweiten Prozessors umfassen, so daß er den im Block 405 empfangenen ersten SMI behandeln oder grundlegende Wake-Up-Routinen, wie beispielsweise einen Power-On-Selbsttest (POST), ablaufen lassen kann.
-
Im nächsten Block, dem Block 425, wird der im Block 405 empfangene erste SMI durch den zweiten Prozessor behandelt. Obwohl es sein kann, daß der zweite Prozessor inaktiv war, als der erste SMI im Block 405 empfangen wurde, und er daher nicht in der Lage war, den SMI zu diesem Zeitpunkt zu bedienen, kann der zweite Prozessor den SMI jedoch zwischengespeichert haben, als er sich im inaktiven Zustand befand. Sobald er erwacht ist, kann der zweite Prozessor den ersten SMI, der zuvor zwischengespeichert wurde, behandeln.
-
Unter Bezugnahme auf 5 ist in den Blöcken 520 und 525 eine Ausführungsform einer Behandlung des ersten SMI mit dem zweiten Prozessor dargestellt. Im Block 520 initialisiert der zweite Prozessor den SMM. Zusätzlich kann im Block 525 ein Befehlszeiger für den zweiten Prozessor in eine zweite Speicheradresse, wie beispielsweise die zweite Speicheradresse in 3, eingesetzt sein. Die zweite Speicheradresse 370 kann eine nicht ausgerichtete Adresse sein, die nicht länger auf einen herkömmlichen Speicher beschränkt ist. Sobald der zweite Prozessor den Befehlszeiger in die zweite Speicheradresse 370 einsetzt, ist es nicht notwendig den herkömmlichen ausgerichteten Speicher zur Ausführung eines Start-Up-Codes zuzuordnen. Nach der Beendigung der Initialisierung und Wiederaufnahme kann der zweite Prozessor, wie im Block 530 gezeigt ist, bei dem eingesetzten Befehlszeiger, der auf die zweite Speicheradresse 370 zeigt, neu anfangen und damit beginnen, seinen Start-Up-Code auszuführen.
-
Unter Bezugnahme auf 6 wird ein Verfahren zur Behandlung eines SMIs entweder beim Booten oder beim normalen Betrieb beschrieben, wobei ein SMI auf mehreren Prozessoren unter Verwendung desselben SMI-Handlers behandelt werden kann. Im Block 605 wird ein SMI empfangen. SMIs können entweder Hardware (asynchron), wie beispielsweise eine schwache Batterie, oder Software sein, wie beispielsweise das Betriebssystem, das bei einem Prozessor anfordert, die Frequenz oder Leistungspegel zu ändern. Typischerweise kann ein Hardware-SMI von jedem Prozessor ohne Kenntnis des Sicherungszustandsbereichs des anderen Prozessors behandelt werden. Im Gegensatz dazu hängt ein Software-SMI häufig vom architektonischen Zustand des Prozessors ab, wenn der SMI erzeugt wurde, was somit einen Zugang zum Sicherungszustandsbereich des Prozessors erfordert, der den SMI erzeugt hat. Daher kann ein Software-erzeugter SMI alle Prozessoren in einem Multiprozessorsystem in den SMM eintreten und einen Handler ausführen lassen.
-
Im Block 610 führt ein erster Prozessor einen SMI-Code (einen SMI-Handler) aus, um den SMI für den ersten Prozessor zu behandeln. Das Behandeln eines SMIs kann ein Ausführen von SMI-Code umfassen, um zu bestimmen, ob der überprüfte Sicherungszustandsbereich des aktuellen Prozessors den SMI erzeugt hat. Ein Behandeln des SMIs kann auch das Bedienen der SMI-Anforderung umfassen.
-
Wie oben mit Bezugnahme auf 4 erläutert wurde, kann der erste Prozessor eine erste SMBase-Adresse umfassen. Der SMI-Code (SMI-Handler) kann sich bei einem Default-Versatz von der ersten SMBase-Adresse befinden. Darüber hinaus kann der SMI-Code auf eine Ziel-SMBase-Adresse verweisen. Die Ziel-SMBase kann die Adresse sein, auf die der SMI-Code zielt, um den Systemverwaltungsbereich (Speicherbereich) dieses Prozessors zuzugreifen.
-
Als ein veranschaulichendes Beispiel kann die Ziel-SMBase so voreingestellt sein, daß sie auf eine erste SMBase-Adresse verweist, bei der es sich um die Startadresse des Systemverwaltungsbereichs eines ersten Prozessors handelt. Daher ist der SMI-Handler-Code, wenn ein SMI empfangen wurde und der SMI-Handlercode ausgeführt wird, durch Verweisen auf die Ziel-SMBase dazu in der Lage, auf den Systemverwaltungsbereich des ersten Prozessors zuzugreifen, der den Sicherungszustandsbereich des ersten Prozessors umfassen kann.
-
Nach dem Ausführen des SMI-Codes im Block 610 zur Behandlung des SMIs für den ersten Prozessor kann derselbe SMI-Code/Handler ausgeführt werden, um den SMI für den zweiten Prozessor zu behandeln, wie im Block 615 gezeigt ist. In 7 ist eine beispielhafte Ausführungsform aus Block 615, bei der der SMI-Handler zur Behandlung des SMIs für einen zweiten Prozessor ausgeführt wird, in einem Ablaufdiagramm abgebildet. Im Block 705 wird die Ziel-SMBase-Adresse des SMI-Handlers von der ersten SMBase-Adresse für den ersten Prozessor zu einer zweiten SMBase-Adresse für den zweiten Prozessor geändert.
-
Unter Fortsetzung des veranschaulichenden Beispiels von oben kann nach dem Ausführen des SMI-Handlercodes, wobei die Ziel-SMBase auf die erste SMBase zielt, die Ziel-SMBase geändert werden, so daß sie auf die zweite SMBase-Adresse zielt. Die zweite SMBase-Adresse kann die Startadresse des Systemverwaltungsbereichs (Speicherraum) des zweiten Prozessors sein. Daher ist, wenn der SMI-Handler unter Verwendung der SMBase des zweiten Prozessors als die Ziel-SMBase ausgeführt wird, wie im Block 710, derselbe SMI-Code/Handler durch Verweisung auf die SMBase-Adresse des zweiten Prozessors dazu in der Lage, den SMI für den zweiten Prozessor zu behandeln.
-
In 8 ist eine weitere beispielhafte Ausführungsform der Ausführung desselben SMI-Handlercodes für mehrere Prozessoren abgebildet, wenn der behandelte SMI Softwareerzeugt ist. Wie oben erläutert wurde, kann ein Hardware-SMI durch jeden beliebigen Prozessor ohne Beeinflussung des anderen Prozessors behandelt werden. Daher führt im Block 805 ein ersten Prozessor einen SMI-Code aus. Im Block 810 kann entweder der erste Prozessor oder ein zweiter Prozessor überprüfen, ob der SMI Software-erzeugt ist. Es ist ohne weiteres erkennbar, daß jeder beliebige Prozessor in jeder beliebigen zeitlichen Reihenfolge überprüfen kann, ob der behandelte SMI Software-erzeugt ist. Beispielsweise kann der erste Prozessor vor dem Block 805 überprüfen, ob der SMI Software-erzeugt ist, und dann einen SMI-Handler-Code in Block 805 ausführen. Als ein weiteres Beispiel kann der zweite Prozessor nach dem Block 805 überprüfen, ob ein Software-erzeugter SMI existiert. Wenn ein Software-SMI nicht existiert, verläßt der erste Prozessor den SMM im Block 815 und kehrt zum normalen Betrieb zurück.
-
Wenn jedoch der SMI durch Software erzeugt wurde, sollte der zweite Prozessor den SMI ebenso behandeln. Im Block 820 kann dann der zweite Prozessor denselben SMI-Code ausführen, den der erste Prozessor im Block 805 ausgeführt hat.
-
Als ein veranschaulichendes Beispiel einer Ausführung desselben SMI-Codes ist in 9 mit einem Flußdiagramm abgebildet. Auf ähnliche Weise wie in 6 und 7 kann die SMBase des ersten Prozessors, die sich an der ersten Speicherstelle 365 befinden kann, die Ziel-SMBase-Adresse sein. Nachdem der SMI-Code mit dem ersten Prozessor ausgeführt wurde, um den SMI für den ersten Prozessor zu behandeln, kann im Block 905 die Ziel-SMBase geändert werden, um auf die SMBase-Adresse des zweiten Prozessors zu zielen. Im Block 910 wird der SMI-Code unter Verwendung der SMBase des zweiten Prozessors als Ziel-SMBase ausgeführt. Zusätzlich kann die Ziel-SMBase, wie im Block 915 gezeigt ist, zurückgebracht werden, so daß sie auf die SMBase-Adresse des ersten Prozessors zielt.
-
Es ist ohne weiteres zu erkennen, daß jede beliebige Kombination aus dem ersten und zweiten Prozessor den SMI-Code ausführen kann. Beispielsweise kann der erste Prozessor den SMI-Code für den ersten Prozessor ausführen. Dann kann der erste Prozessor, nachdem die Ziel-SMBase zur SMBase des zweiten Prozessors geändert wurde, den SMI-Code erneut ausführen, um den SMI für den zweiten Prozessor zu behandeln. Als ein weiteres Beispiel kann beide Male der zweite Prozessor den SMI-Code ausführen. Als noch ein weiteres Beispiel kann der erste Prozessor den SMI-Code ausführen, wenn der SMI-Code zum ersten mal ausgeführt wird, um den SMI für den ersten Prozessor zu behandeln, und der zweite Prozessor den SMI-Code ein zweites Mal ausführen, um den SMI für den zweiten Prozessor zu behandeln.
-
Daher kann bei diesen Optimierungen anders als bei gängigen Systemen lediglich ein einziger zu erzeugender SMI verwendet werden, um einen zweiten Prozessor zu erwecken und dessen Ausführen zu starten. Darüber hinaus kann anders als bei herkömmlichen Verfahren, bei welchen jeder Prozessor an einer anderen Default-Speicheradresse startet, Speicher eingespart werden, indem ein Wake-Up-Signal ausgesandt wird, das den zweiten Prozessor bei der ersten Speicheradresse startet, bei der es sich um den Ort eines Default-SMI-Handlers handeln kann. Darüber hinaus durch Einsetzen des Befehlszeigers, wenn der zweite Prozessor den ersten SMI behandelt, der zweite Prozessor an einer zweiten Speicheradresse, die nicht ausgerichtet sein kann, wieder anfangen. Dadurch, daß ermöglicht wird, daß der zweite Prozessor bei einer zweiten Speicheradresse wieder anfangen kann, wird die Zuordnung eines getrennten ausgerichteten Speicherraums für jeden Prozessor eingespart.
-
Zusätzlich kann die Behandlung eines SMIs mit einem vereinheitlichten Handler durch Ausführen desselben Handler-Codes bei einem ersten Prozessor und dann bei einem zweiten Prozessor durchgeführt werden. Durch Überprüfen, ob der behandelte SMI Software-erzeugt war und durch Verlassen des SMM, wenn der SMI nicht Software-erzeugt war, kann Ausführungszeit in beträchtlichem Umfang eingespart werden. Darüber hinaus ermöglicht diese Implementierung eine einfachere Plattformentwicklung, da alle für den Software-SMI-Handler erforderlichen Änderungen auf einfache Weise im Wrapper-Code enthalten sein können, ohne daß eine Änderung der Software-SMI-Handler-Routinen erforderlich ist.