DE112004001887T5 - Optimierung der SMI-Handhabung und -Initialisierung - Google Patents
Optimierung der SMI-Handhabung und -Initialisierung Download PDFInfo
- Publication number
- DE112004001887T5 DE112004001887T5 DE112004001887T DE112004001887T DE112004001887T5 DE 112004001887 T5 DE112004001887 T5 DE 112004001887T5 DE 112004001887 T DE112004001887 T DE 112004001887T DE 112004001887 T DE112004001887 T DE 112004001887T DE 112004001887 T5 DE112004001887 T5 DE 112004001887T5
- Authority
- DE
- Germany
- Prior art keywords
- processor
- smi
- smbase
- memory address
- code
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
Abstract
Verfahren,
umfassend:
Empfangen eines ersten Systemverwaltungsinterrupts (SMI);
Behandeln des ersten SMIs mit einem ersten Prozessor;
Erzeugen eines Wake-Up-Signals mit dem ersten Prozessor;
Erwecken eines zweiten Prozessors, basierend auf dem Wake-Up-Signal vom ersten Prozessor; und
Behandeln des ersten SMIs mit einem zweiten Prozessor.
Empfangen eines ersten Systemverwaltungsinterrupts (SMI);
Behandeln des ersten SMIs mit einem ersten Prozessor;
Erzeugen eines Wake-Up-Signals mit dem ersten Prozessor;
Erwecken eines zweiten Prozessors, basierend auf dem Wake-Up-Signal vom ersten Prozessor; und
Behandeln des ersten SMIs mit einem zweiten Prozessor.
Description
- Gebiet
- Diese Erfindung betrifft Computersysteme und insbesondere Optimierungen des Systemverwaltungsmodus.
- 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 gehandhabt 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, wo durch 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.
- 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 on 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 auf3 beschrieben, um die Erfindung nicht durch unnötige Einzelheiten zu verschleiern. -
1 zeigt ein Blockdiagramm einer Vorrichtung105 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 C1ara, 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 Prozessor120 und einen zweiten Prozessor125 umfassen. Die Vorrichtung105 kann ein physikalischer Prozessor sein. Die Vorrichtung105 kann auch ein eingebettetes System oder eine andere Vorrichtung mit zumindest zwei Prozessoren sein. Die Prozessoren120 und125 können logische Prozessoren sein. Beispielsweise kann der Prozessor105 architektonische Statusregister130 und135 umfassen, die jeweils einen eindeutigen architektonischen Status halten. Es ist ohne weiteres zu erkennen, daß die Vorrichtung105 mehr als zwei logische Prozessoren umfassen kann, die jeweils ein diesen zugeordnetes architektonisches Zustandsregister umfassen, um einen getrennten architektonischen Status zu halten. Die beiden Prozessoren120 und125 teilen sich dieselben Ausführungsressourcen140 , Caches145 , Bus150 und Speicher155 . - Die Vorrichtung
105 kann auch einen Kontroller110 umfassen. Der Kontroller110 kann ein Advanced Programmable Interrupt Controller (APIC) sein. Der Kontroller110 kann zur Erzeugung eines Systemverwaltungsinterrupts (SMI) verwendet werden. Der Kontroller110 kann auch zur Kommunikation auf einem APIC-Bus, der nicht abgebildet ist, verwendet wer den, mit dem der erste Prozessor120 und der zweite Prozessor125 miteinander gekoppelt sind. - Die Vorrichtung
105 kann auch einen Speicher155 umfassen. Bei dem Speicher kann es sich um jede Art von Speicher handeln, in dem Daten gespeichert werden können: Beispielsweise kann der Speicher155 Register zur Informationsspeicherung umfassen. Der Speicher155 kann auch eine andere Cache-Ebene145 umfassen. Der Speicher155 kann auch in der Form eines in der Vorrichtung105 angeordneten Systemspeichers vorliegen. - Der Speicher
155 umfaßt zumindest eine erste Speicherstelle160 und eine zweite Speicherstelle165 . Die erste Speicherstelle160 kann einen Default-System-Verwaltungshandlercode umfassen. Die erste Speicherstelle kann auch 1k-ausgerichtet sein. Bei der zweiten Speicherstelle165 kann es sich um eine weitere nicht 1k-ausgerichtete Adresse handeln. Die erste Speicherstelle160 und die zweite Speicherstelle165 können auch Basisadressen für einen ersten Prozessor120 bzw. einen zweiten Prozessor125 sein. Die zweite Speicherstelle165 kann auch als ein temporärer Speicherraum verwendet werden, wenn die Basisadresse des ersten Prozessors120 neu zugeordnet wird. Die erste und die zweite Speicherstelle werden mit Bezugnahme auf die in den4 -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 Prozessor205 und einen zweiten Prozessor210 umfassen. Die Prozessoren205 und210 können physikalische Prozessoren sein, wobei sich jeder Prozessor in einem eigenen Package befindet. Das System kann auch einen Systembus215 umfassen, um die Prozessoren205 und210 mit dem Kontroller-Hub220 zu koppeln. Der Kontroller-Hub220 kann auch durch einen Bus225 mit dem Speicher230 gekoppelt sein. -
3 zeigt ein Beispiel eines Systems mit mehreren Prozessoren. Der Prozessor305 kann einen Prozessor310 und einen Prozessor315 umfassen, die sich Ausführungsressourcen330 , einen Cache335 und einen Systembus340 teilen. Die architektonischen Zustandsregister320 und325 halten den eindeutigen architektonischen Zustand der Prozessoren320 bzw.325 . Der Prozessor305 wird durch den Systembus340 mit dem Kontroller-Hub345 gekoppelt. Der Kontroller-Hub334 kann durch einen zweiten Bus350 mit dem Systemspeicher gekoppelt sein. Der Systemspeicher kann mehrere Speicherstellen umfassen, wie beispielsweise eine erste Speicherstelle365 und eine zweite Speicherstelle370 . - Das veranschaulichende System aus
3 wird zur Beschreibung der in den4 -9 abgebildeten Verfahren verwendet. Obwohl zur Beschreibung der Verfahren zur effizienten Speicherzuweisung und Behandlung von Systemverwaltungsinterrupts (SMI) auf3 Bezug genommen wird, ist ohne weiteres verständlich, daß die hier beschriebenen Verfahren durch die Hardware in1 ,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 in2 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 in3 abgebildeten Kontroller-Hub345 , erzeugt werden. Als ein weiteres Beispiel kann der erste SMI im Block405 durch einen APIC, wie beispiels weise den Kontroller110 in1 , oder durch einen getrennt im System angeordneten Kontroller (nicht abgebildet) erzeugt werden. Als ein noch weiteres Beispiel kann der erste SMI im Block405 durch Ändern der Logikebene eines Pins in einem Prozessor, wie beispielsweise dem Prozessor305 oder einem Kontroller-Hub, wie beispielsweise dem Kontroller345 , 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 0 × 30000 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 0 × 8000 (SMBase + 0 × 8000) versetzt sein, wodurch in diesem Beispiel der SMI-Handler auf 0 × 38000 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 Block405 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 Block505 initialisiert wird und ein Default-SMI-Handler im Block510 ausgeführt wird. Der Default-SMI-Handler kann ein sich an einer Default-Speicherstelle, wie beispielsweise der ersten Speicherstelle365 , 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 Block415 erzeugt. Das Wake-Up-Signal im Block415 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 Block515 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 Speicherstelle365 , wobei das Wake-Up-Signal ein auf der ersten Speicherstelle365 basierender Vektor ist. Bei einer weiteren Ausführungsform basiert das Wake-Up-Signal auf der ersten Speicherstelle365 , 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 Speicherort365 um den Adreßort handeln, an dem der zweite Prozessor315 mit der Ausführung beginnt. - Zurückkehrend zu
4 zeigt der Block420 das Erwecken des zweiten Prozessors. Der Block420 kann ein Erwecken des zweiten Prozessors umfassen, so daß er den im Block405 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 Block405 empfangene erste SMI durch den zweiten Prozessor behandelt. Obwohl es sein kann, daß der zweite Prozessor inaktiv war, als der erste SMI im Block405 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öcken520 und525 eine Ausführungsform einer Behandlung des ersten SMI mit dem zweiten Prozessor dargestellt. Im Block520 initialisiert der zweite Prozessor den SMM. Zusätzlich kann im Block525 ein Befehlszeiger für den zweiten Prozessor in eine zweite Speicheradresse, wie beispielsweise die zweite Speicheradresse in3 , eingesetzt sein. Die zweite Speicheradresse370 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 Speicheradresse370 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 Block530 gezeigt ist, bei dem eingesetzten Befehlszeiger, der auf die zweite Speicheradresse370 zeigt, neu anfangen und damit beginnen, seinen Start-Up-Code auszuführen. - Unter Bezugnahme auf
6 wird ein Verfahren zur Handhabung 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 Block605 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 Block615 gezeigt ist. In7 ist eine beispielhafte Ausführungsform aus Block615 , bei der der SMI-Handler zur Behandlung des SMIs für einen zweiten Prozessor ausgeführt wird, in einem Ablaufdiagramm abgebildet. Im Block705 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 Block805 ein ersten Prozessor einen SMI-Code aus. Im Block810 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 Block805 überprüfen, ob der SMI Software-erzeugt ist, und dann einen SMI-Handler-Code in Block805 ausführen. Als ein weiteres Beispiel kann der zweite Prozessor nach dem Block805 überprüfen, ob ein Software-erzeugter SMI existiert. Wenn ein Software-SMI nicht existiert, verläßt der erste Prozessor den SMM im Block815 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 Block805 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 in6 und7 kann die SMBase des ersten Prozessors, die sich an der ersten Speicherstelle365 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 Block905 die Ziel-SMBase geändert werden, um auf die SMBase-Adresse des zweiten Prozessors zu zielen. Im Block910 wird der SMI-Code unter Verwendung der SMBase des zweiten Prozessors als Ziel-SMBase ausgeführt. Zusätzlich kann die Ziel-SMBase, wie im Block915 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.
- In der vorangehenden Beschreibung wurde die Erfindung mit Bezugnahme auf spezielle beispielhafte Ausführungsformen derselben beschrieben. Es ist jedoch offensichtlich, daß verschiedene Abwandlungen und Änderungen daran vorgenommen werden können, ohne von der umfassenden Idee und dem Umfang der Erfindung, wie sie in den beigefügten Ansprüchen dargelegt ist, abzuweichen. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden und nicht in einem beschränkenden Sinn zu betrachten.
- Zusammenfassung
- Ein Verfahren und eine Vorrichtung zur effizienten Speicherzuweisung und die Behandlung eines Systemverwaltungsinterrupts (SMI) werden beschrieben. Nach einem Erwecken eines zweiten Prozessors in einem Multi-Prozessorsystem kann ein einzelner SMI verwendet werden, um jeden Prozessor zu initialisieren, kann der Ort eines einzelnen Default-SMI-Handlers als ein Wake-Up-Vektor zum ersten Prozessor verwendet werden und kann ein Befehlszeiger auf eine nicht ausgerichtete Adresse während der Behandlung des SMIs mit dem zweiten Prozessor eingesetzt werden, um auf die herkömmliche Zuweisung eines speziell ausgerichteten Speichers zu verzichten. Zusätzlich kann ein vereinheitlichter Handler-Code verwendet werden, um Software-erzeugte SMIs sowohl auf dem ersten als auch auf dem zweiten Prozessor zu behandeln und kann der SMM direkt nach der Behandlung eines Hardware-SMIs verlassen werden, um Ausführungszeit zu sparen.
Claims (61)
- Verfahren, umfassend: Empfangen eines ersten Systemverwaltungsinterrupts (SMI); Behandeln des ersten SMIs mit einem ersten Prozessor; Erzeugen eines Wake-Up-Signals mit dem ersten Prozessor; Erwecken eines zweiten Prozessors, basierend auf dem Wake-Up-Signal vom ersten Prozessor; und Behandeln des ersten SMIs mit einem zweiten Prozessor.
- Verfahren nach Anspruch 1, wobei der erste und zweite Prozessor logische Prozessoren sind.
- Verfahren nach Anspruch 1, wobei der erste und zweite Prozessor physikalische Prozessoren sind.
- Verfahren nach Anspruch 1, wobei das Handhaben des ersten SMIs mit einem ersten Prozessor umfaßt: Ausführen eines Default-SMI-Handlers, der sich an einer ersten Speicheradresse befindet.
- Verfahren nach Anspruch 4, wobei das Wake-Up-Signal einen auf der ersten Speicheradresse basierenden Vektor umfaßt.
- Verfahren nach Anspruch 5, wobei die erste Speicheradresse ausgerichtet ist.
- Verfahren nach Anspruch 6, wobei die erste Speicheradresse 4k ausgerichtet ist.
- Verfahren nach Anspruch 5, wobei das Handhaben des ersten SMI mit dem zweiten Prozessor ein Ausführen des sich an der ersten Speicheradresse befindenden Default-SMI-Handlers umfaßt.
- Verfahren nach Anspruch 8, wobei das Behandeln des ersten SMIs mit dem zweiten Prozessor des weiteren ein Einsetzen eines Befehlszeigers in eine zweite Speicheradresse umfaßt.
- Verfahren nach Anspruch 9, wobei die zweite Speicheradresse eine nicht ausgerichtete Adresse ist.
- Verfahren nach Anspruch 10, welches des weiteren umfaßt: Ausführen eines Codes an der zweiten Speicheradresse, nachdem der zweite Prozessor den ersten SMI behandelt hat.
- Verfahren, umfassend: Empfangen eines ersten Systemverwaltungsinterrupts (SMI); Ausführen von Code an der ersten Speicheradresse mit einem ersten Prozessor in Reaktion auf den ersten SMI; Erzeugen eines Wake-Up-Signals mit dem ersten Prozessor; Erwecken eines zweiten Prozessors basierend auf einem Wake-Up-Signal vom ersten Prozessor; und Ausführen des Codes an der ersten Speicheradresse mit dem zweiten Prozessor.
- Verfahren nach Anspruch 12, wobei das Wake-Up-Signal auf der ersten Speicheradresse basiert.
- Verfahren nach Anspruch 13, wobei die erste Speicheradresse die Stelle eines Default-SMI-Behandlungscodes ist.
- Verfahren nach Anspruch 14, wobei die erste Speicheradresse sich in einem herkömmlichen Speicher befindet.
- Verfahren nach Anspruch 15, wobei die erste Speicheradresse ausgerichtet ist.
- Verfahren nach Anspruch 12, wobei sowohl der erste als auch der zweite Prozessor logische, sich auf demselben Chip befindende Prozessoren sind.
- Verfahren nach Anspruch 12, wobei der erste und zweite Prozessor sich in getrennten Packages befindende physikalische Prozessoren sind.
- Verfahren nach Anspruch 12, das des weiteren umfaßt: Einsetzen eines Befehlszeigers für den zweiten Prozessor in eine zweite Speicheradresse.
- Verfahren nach Anspruch 19, wobei die zweite Speicheradresse eine nicht ausgerichtete Adresse ist.
- Verfahren nach Anspruch 20, das des weiteren umfaßt: Ausführen von Code an der zweien Speicheradresse nach einem Einsetzen des Befehlszeigers in die zweite Speicheradresse.
- Verfahren nach Anspruch 12, das des weiteren ein Erzeugen des SMIs vor einem Empfangen des SMIs mit einem ersten und einem zweiten Prozessor umfaßt.
- Verfahren nach Anspruch 22, wobei ein Erzeugen des SMIs ein Ändern des Logikniveaus eines mit einem Kontroller-Hub gekoppelten Pins umfaßt.
- Verfahren nach Anspruch 22, wobei ein APIC zur Erzeugung des SMIs verwendet wird.
- Verfahren nach Anspruch 24, wobei sich der APIC im ersten Prozessor befindet.
- Verfahren, umfassend: Empfangen eines Systemverwaltungsinterrupts; Ausführen eines SMI-Handlers, um einen SMI für einen ersten Prozessor zu behandeln; und Ausführen des SMI-Handlers, um den SMI für einen zweiten Prozessor zu behandeln.
- Verfahren nach Anspruch 26, wobei der SMI ein Software-erzeugter SMI ist.
- Verfahren nach Anspruch 27, wobei der erste Prozessor den SMI-Handler ausführt, um den SMI für den ersten und zweiten Prozessor zu behandeln.
- Verfahren nach Anspruch 26, wobei sich der SMI-Handler an einer ersten Speicheradresse befindet.
- Verfahren nach Anspruch 29, wobei die erste Speicheradresse ein Default-Versatz von einer ersten Systemverwaltungsbasis-(SMBase)-Adresse für den ersten Prozessor ist.
- Verfahren nach Anspruch 30, wobei ein Handhaben des zweiten SMIs mit dem ersten SMI-Handler umfaßt: Ändern einer Ziel-SMBase des SMI-Handlers von der ersten SMBase zu einer zweiten SMBase für den zweiten Prozessor; und Ausführen des ersten SMI-Handlers unter Verwendung der SMBase des zweiten Prozessors als die Ziel-SMBase.
- Verfahren, umfassend: Ausführen eines Systemverwaltungsinterrupt-(SMI)-Codes mit einem ersten Prozessor, um einen SMI für den ersten Prozessor zu behandeln; Prüfen, ob der SMI ein Software-erzeugter SMI ist; und Ausführen des SMI-Codes, um den SMI für einen zweiten Prozessor zu behandeln, wenn der SMI Software-erzeugt ist.
- Verfahren nach Anspruch 32, wobei der erste Prozessor den SMI-Code ausführt, um den SMI für den zweiten Prozessor zu behandeln, wenn der SMI Software-erzeugt ist.
- Verfahren nach Anspruch 32, wobei der zweite Prozessor den SMI-Code ausführt, um den SMI für den zweiten Prozessor zu behandeln, wenn der SMI Software-erzeugt ist.
- Verfahren nach Anspruch 32, wobei der erste Prozessor eine erste Systemverwaltungsbasis-(SMBase)-Adresse umfaßt.
- Verfahren nach Anspruch 33, wobei der zweite Prozessor eine zweite SMBase-Adresse umfaßt.
- Verfahren nach Anspruch 36, wobei der SMI-Code sich an einer ersten Speicherstelle befindet, die einen Versatz von der SMBase-Adresse aufweist.
- Verfahren nach Anspruch 37, wobei das Ausführen des SMI-Codes, um den SMI für den zweiten Prozessor zu behandeln, umfaßt: Ändern der Ziel-SMBase des SMI-Handlers von der ersten SMBase zur zweiten SMBase; und Ausführen des SMI-Codes unter Verwendung der SMBase des zweiten Prozessors als die Ziel-SMBase.
- Verfahren nach Anspruch 38, das des weiteren ein Zurücksetzen der Ziel-SMBase des SMI-Handlers zur ersten SMBase nach dem Ausführen des SMI-Codes umfaßt, um den SMI für den zweiten Prozessor zu behandeln.
- Vorrichtung, umfassend: einen Kontroller, um einen ersten Systemverwaltungsinterrupt (SMI) zu erzeugen; einen ersten logischen Prozessor, der mit dem Kontroller gekoppelt ist, um einen ersten SMI zu erzeugen, um den ersten SMI zu behandeln und um ein Wake-Up-Signal zu erzeugen; und einen zweiten logischen Prozessor, der mit dem Kontroller gekoppelt ist, um den ersten SMI zu behandeln, nachdem das Wake-Up-Signal vom ersten logischen Prozessor empfangen wurde.
- Vorrichtung nach Anspruch 40, wobei der erste logische Prozessor Code an einer ersten Speicherstelle ausführt, um den ersten SMI mit dem ersten logischen Prozessor zu behandeln.
- Vorrichtung nach Anspruch 41, wobei die erste Speicheradresse 1k-ausgerichtet ist.
- Vorrichtung nach Anspruch 41, wobei das Behandeln des ersten SMIs mit dem zweiten logischen Prozessor ein Ausführen von Code an der ersten Speicherstelle umfaßt.
- Vorrichtung nach Anspruch 43, wobei das Ausführen des ersten SMIs mit dem zweiten logischen Prozessor des weiteren ein Einfügen eines Befehlszeigers auf eine zweite Speicheradresse umfaßt.
- System, umfassend: einen Kontroller-Hub zur Erzeugung eines ersten Systemverwaltungsinterrupts (SMI); einen Speicher mit einer ersten Speicheradresse, die einen Code enthält; einen mit dem Kontroller-Hub gekoppelten ersten Prozessor zur Behandlung des ersten SMIs, wobei der erste Prozessor den Code an der ersten Speicheradresse ausführt und ein Wake-Up-Signal erzeugt; und einen zweiten mit dem Kontroller-Hub gekoppelten Prozessor zur Behandlung des ersten SMIs nach dem Empfangen des Wake-Up-Signals, wobei der zweite Prozessor den Code an der ersten Speicheradresse ausführt.
- System nach Anspruch 45, wobei der erste und der zweite Prozessor logische Prozessoren auf demselben Chip sind.
- System nach Anspruch 45, wobei der erste und der zweite Prozessor physikalische Prozessoren sind, die sich auf getrennten Packages befinden.
- System nach Anspruch 45, wobei ein Pin auf dem Kontroller-Hub zur Erzeugung des ersten SMIs hin- und hergeschaltet wird.
- System nach Anspruch 45, wobei ein Code durch den Kontroller-Hub ausgeführt wird, um den ersten SMI zu erzeugen.
- System nach Anspruch 45, wobei der Code an der ersten Speicheradresse ein SMI-Behandlungscode ist.
- System nach Anspruch 50, wobei das Wake-Up-Signal ein Vektor ist, der die erste Speicheradresse enthält.
- System nach Anspruch 51, wobei das Behandeln des erste SMIs mit dem zweiten Prozessor nach dem Empfang des Wake-Up-Signals des weiteren ein Einstellen eines Zeigers auf eine zweite Speicheradresse umfaßt.
- System nach Anspruch 52, wobei der zweite Prozessor nach der Wiederaufnahme vom Behandeln des SMIs Code an der zweiten Speicheradresse ausführt.
- System, umfassend: einen Speicher mit einer ersten Speicheradresse, die einen Systemverwaltungsinterrupt-(SMI)-Code umfaßt; einen ersten Prozessor zur Ausführung des SMI-Codes, wenn ein SMI empfangen wird; und einen zweiten Prozessor zur Ausführung des SMI-Codes, wenn der SMI Softwareerzeugt ist.
- System nach Anspruch 54, wobei der erste Prozessor eine erste Systemverwaltungsbasis-(SMBase)-Adresse umfaßt.
- System nach Anspruch 55, wobei der zweite Prozessor eine zweite SMBase-Adresse umfaßt.
- System nach Anspruch 56, wobei die erste Speicheradresse einen Versatz von der ersten SMBase umfaßt.
- System nach Anspruch 57, wobei die Ziel-SMBase voreinstellungsgemäß die erste SMBase ist.
- System nach Anspruch 58, wobei die Ziel-SMBase zur zweiten SMBase geändert wird, bevor der zweite Prozessor den SMI-Code ausführt.
- System nach Anspruch 54, wobei der erste und der zweite Prozessor logische Prozessoren sind.
- System nach Anspruch 54, wobei der erste und der zweite Prozessor physikalische Prozessoren sind.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/681,446 | 2003-10-06 | ||
US10/681,446 US7493435B2 (en) | 2003-10-06 | 2003-10-06 | Optimization of SMI handling and initialization |
PCT/US2004/032469 WO2005038652A1 (en) | 2003-10-06 | 2004-09-30 | Optimization of smi handling and initialization |
Publications (2)
Publication Number | Publication Date |
---|---|
DE112004001887T5 true DE112004001887T5 (de) | 2006-09-14 |
DE112004001887B4 DE112004001887B4 (de) | 2011-06-22 |
Family
ID=34465445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112004001887T Expired - Fee Related DE112004001887B4 (de) | 2003-10-06 | 2004-09-30 | Optimierung der SMI-Behandlung und -Initialisierung |
Country Status (7)
Country | Link |
---|---|
US (1) | US7493435B2 (de) |
CN (1) | CN1890634B (de) |
DE (1) | DE112004001887B4 (de) |
GB (1) | GB2422230B (de) |
HK (1) | HK1086097A1 (de) |
TW (1) | TWI275945B (de) |
WO (1) | WO2005038652A1 (de) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7533097B2 (en) * | 2004-06-29 | 2009-05-12 | International Business Machines Corporation | Dynamic user interface creation based on user responsibilities and company policies |
JP4447977B2 (ja) | 2004-06-30 | 2010-04-07 | 富士通マイクロエレクトロニクス株式会社 | セキュアプロセッサ、およびセキュアプロセッサ用プログラム。 |
WO2006013857A1 (ja) * | 2004-08-05 | 2006-02-09 | Matsushita Electric Industrial Co., Ltd. | 情報処理装置 |
US7810083B2 (en) * | 2004-12-30 | 2010-10-05 | Intel Corporation | Mechanism to emulate user-level multithreading on an OS-sequestered sequencer |
US7797555B2 (en) * | 2006-05-12 | 2010-09-14 | Intel Corporation | Method and apparatus for managing power from a sequestered partition of a processing system |
US7647509B2 (en) * | 2006-05-12 | 2010-01-12 | Intel Corporation | Method and apparatus for managing power in a processing system with multiple partitions |
US7464211B2 (en) * | 2006-09-14 | 2008-12-09 | International Business Machines Corporation | Method of detecting and recovering a lost system management interrupt (SMI) in a multiprocessor (MP) environment |
US20090037932A1 (en) * | 2007-08-01 | 2009-02-05 | Clark Michael T | Mechanism for broadcasting system management interrupts to other processors in a computer system |
US7613861B2 (en) * | 2007-08-14 | 2009-11-03 | Dell Products, Lp | System and method of obtaining error data within an information handling system |
KR100932920B1 (ko) * | 2007-12-17 | 2009-12-21 | 한국전자통신연구원 | 센서노드의 웨이크업 장치 및 방법 |
US20090172232A1 (en) * | 2007-12-28 | 2009-07-02 | Zimmer Vincent J | Method and system for handling a management interrupt event |
US7802042B2 (en) * | 2007-12-28 | 2010-09-21 | Intel Corporation | Method and system for handling a management interrupt event in a multi-processor computing device |
US7725637B2 (en) * | 2007-12-31 | 2010-05-25 | Intel Corporation | Methods and apparatus for generating system management interrupts |
US7797473B2 (en) * | 2008-06-05 | 2010-09-14 | Dell Products, Lp | System for executing system management interrupts and methods thereof |
US8024504B2 (en) * | 2008-06-26 | 2011-09-20 | Microsoft Corporation | Processor interrupt determination |
US20090327556A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Processor Interrupt Selection |
WO2012106954A1 (zh) * | 2011-08-31 | 2012-08-16 | 华为技术有限公司 | 多处理器的基本输入输出系统存储器刷写方法、及装置 |
WO2013057769A1 (ja) * | 2011-10-20 | 2013-04-25 | 富士通株式会社 | 情報処理装置、情報処理装置の制御方法および制御プログラム |
US9208113B2 (en) | 2013-01-15 | 2015-12-08 | Apple Inc. | Deferred inter-processor interrupts |
TW201533576A (zh) * | 2013-11-20 | 2015-09-01 | Insyde Software Corp | 在多核心系統上運用系統管理中斷(smi)之系統效能增強 |
US9529750B2 (en) * | 2014-07-14 | 2016-12-27 | American Megatrends, Inc. | Service processor (SP) initiated data transaction with bios utilizing interrupt |
US9529410B2 (en) * | 2014-07-14 | 2016-12-27 | American Megatrends, Inc. | Service processor (SP) initiated data transaction with BIOS utilizing power off commands |
KR102623918B1 (ko) * | 2017-12-25 | 2024-01-11 | 인텔 코포레이션 | 프리-메모리 초기화 멀티스레드 병렬 컴퓨팅 플랫폼 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04346127A (ja) * | 1991-05-23 | 1992-12-02 | Sony Corp | 電子装置 |
US5530891A (en) * | 1994-05-31 | 1996-06-25 | Advanced Micro Devices | System management interrupt mechanism within a symmetrical multiprocessing system |
US5627962A (en) | 1994-12-30 | 1997-05-06 | Compaq Computer Corporation | Circuit for reassigning the power-on processor in a multiprocessing system |
US5613071A (en) * | 1995-07-14 | 1997-03-18 | Intel Corporation | Method and apparatus for providing remote memory access in a distributed memory multiprocessor system |
US5768585A (en) * | 1995-11-21 | 1998-06-16 | Intel Corporation | System and method for synchronizing multiple processors during power-on self testing |
US5761516A (en) * | 1996-05-03 | 1998-06-02 | Lsi Logic Corporation | Single chip multiprocessor architecture with internal task switching synchronization bus |
US5842026A (en) | 1996-07-01 | 1998-11-24 | Sun Microsystems, Inc. | Interrupt transfer management process and system for a multi-processor environment |
US5860002A (en) | 1996-07-12 | 1999-01-12 | Digital Equipment Corporation | System for assigning boot strap processor in symmetric multiprocessor computer with watchdog reassignment |
US5996058A (en) * | 1996-08-19 | 1999-11-30 | Samsung Electronics Company, Ltd. | System and method for handling software interrupts with argument passing |
US6116767A (en) * | 1997-04-30 | 2000-09-12 | Compaq Computer Corporation | Displaying audio disk track number in portable computer system |
US5978903A (en) * | 1997-08-19 | 1999-11-02 | Advanced Micro Devices, Inc. | Apparatus and method for automatically accessing a dynamic RAM for system management interrupt handling |
US5938765A (en) * | 1997-08-29 | 1999-08-17 | Sequent Computer Systems, Inc. | System and method for initializing a multinode multiprocessor computer system |
JP3943665B2 (ja) * | 1997-09-01 | 2007-07-11 | 株式会社東芝 | スリープ制御方法、およびイベント通知方法 |
US6308278B1 (en) * | 1997-12-29 | 2001-10-23 | Intel Corporation | Supplying standby voltage to memory and wakeup circuitry to wake a computer from a low power mode |
US6065121A (en) * | 1998-03-31 | 2000-05-16 | Compaq Computer Corporation | Control of computer system wake/sleep transitions |
US6192442B1 (en) * | 1998-04-29 | 2001-02-20 | Intel Corporation | Interrupt controller |
US6158000A (en) * | 1998-09-18 | 2000-12-05 | Compaq Computer Corporation | Shared memory initialization method for system having multiple processor capability |
US6272618B1 (en) * | 1999-03-25 | 2001-08-07 | Dell Usa, L.P. | System and method for handling interrupts in a multi-processor computer |
US6282601B1 (en) * | 1999-03-31 | 2001-08-28 | International Business Machines Corporation | Multiprocessor data processing system and method of interrupt handling that facilitate identification of a processor requesting a system management interrupt |
US6374338B1 (en) * | 1999-06-25 | 2002-04-16 | International Business Machines Corporation | Method for performing configuration tasks prior to and including memory configuration within a processor-based system |
US6584573B1 (en) * | 1999-08-30 | 2003-06-24 | Intel Corporation | Placing a computer system into a sleeping state |
US6571333B1 (en) * | 1999-11-05 | 2003-05-27 | Intel Corporation | Initializing a memory controller by executing software in second memory to wakeup a system |
US6968412B1 (en) * | 1999-12-30 | 2005-11-22 | Intel Corporation | Method and apparatus for interrupt controller data re-direction |
US6611911B1 (en) * | 1999-12-30 | 2003-08-26 | Intel Corporation | Bootstrap processor election mechanism on multiple cluster bus system |
US20020099893A1 (en) * | 2001-01-24 | 2002-07-25 | Nguyen Tuyet-Huong Thi | System and method for the handling of system management interrupts in a multiprocessor computer system |
US6925556B2 (en) * | 2001-02-14 | 2005-08-02 | Intel Corporation | Method and system to determine the bootstrap processor from a plurality of operable processors |
US6968410B2 (en) * | 2001-02-28 | 2005-11-22 | Intel Corporation | Multi-threaded processing of system management interrupts |
US6836849B2 (en) * | 2001-04-05 | 2004-12-28 | International Business Machines Corporation | Method and apparatus for controlling power and performance in a multiprocessing system according to customer level operational requirements |
US6842857B2 (en) * | 2001-04-12 | 2005-01-11 | International Business Machines Corporation | Method and apparatus to concurrently boot multiple processors in a non-uniform-memory-access machine |
TW498213B (en) * | 2001-04-18 | 2002-08-11 | Via Tech Inc | Method and chipset for supporting interrupts of system management mode in multiple-CPU system |
TW515959B (en) * | 2001-05-10 | 2003-01-01 | Via Tech Inc | Method for memory data access by system management interrupt and computer system thereof |
US6848046B2 (en) * | 2001-05-11 | 2005-01-25 | Intel Corporation | SMM loader and execution mechanism for component software for multiple architectures |
US20030009654A1 (en) * | 2001-06-29 | 2003-01-09 | Nalawadi Rajeev K. | Computer system having a single processor equipped to serve as multiple logical processors for pre-boot software to execute pre-boot tasks in parallel |
US6615329B2 (en) * | 2001-07-11 | 2003-09-02 | Intel Corporation | Memory access control system, apparatus, and method |
US6775728B2 (en) * | 2001-11-15 | 2004-08-10 | Intel Corporation | Method and system for concurrent handler execution in an SMI and PMI-based dispatch-execution framework |
GB0212143D0 (en) * | 2002-05-27 | 2002-07-03 | Sendo Int Ltd | Processor Monitor |
GB0212260D0 (en) | 2002-05-28 | 2002-07-10 | Sendo Int Ltd | System wakeup |
US7146515B2 (en) * | 2002-06-20 | 2006-12-05 | International Business Machines Corporation | System and method for selectively executing a reboot request after a reset to power on state for a particular partition in a logically partitioned system |
US7043729B2 (en) * | 2002-08-08 | 2006-05-09 | Phoenix Technologies Ltd. | Reducing interrupt latency while polling |
US7698689B2 (en) * | 2002-08-13 | 2010-04-13 | Phoenix Technologies Ltd. | Method for meeting SMI duration limits by time slicing SMI handlers |
US7152169B2 (en) * | 2002-11-29 | 2006-12-19 | Intel Corporation | Method for providing power management on multi-threaded processor by using SMM mode to place a physical processor into lower power state |
-
2003
- 2003-10-06 US US10/681,446 patent/US7493435B2/en not_active Expired - Lifetime
-
2004
- 2004-09-30 CN CN2004800362933A patent/CN1890634B/zh not_active Expired - Fee Related
- 2004-09-30 GB GB0606958A patent/GB2422230B/en not_active Expired - Fee Related
- 2004-09-30 DE DE112004001887T patent/DE112004001887B4/de not_active Expired - Fee Related
- 2004-09-30 WO PCT/US2004/032469 patent/WO2005038652A1/en active Application Filing
- 2004-10-04 TW TW093130020A patent/TWI275945B/zh not_active IP Right Cessation
-
2006
- 2006-07-25 HK HK06108245A patent/HK1086097A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN1890634B (zh) | 2011-03-16 |
DE112004001887B4 (de) | 2011-06-22 |
CN1890634A (zh) | 2007-01-03 |
US7493435B2 (en) | 2009-02-17 |
GB0606958D0 (en) | 2006-05-17 |
WO2005038652A1 (en) | 2005-04-28 |
TW200525365A (en) | 2005-08-01 |
GB2422230B (en) | 2007-07-11 |
US20050086547A1 (en) | 2005-04-21 |
TWI275945B (en) | 2007-03-11 |
GB2422230A (en) | 2006-07-19 |
HK1086097A1 (en) | 2006-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112004001887B4 (de) | Optimierung der SMI-Behandlung und -Initialisierung | |
DE102013104328B4 (de) | Aufgabenzuteilung in großen und kleinen Kernen | |
DE112006003444B4 (de) | Verfahren und Vorrichtung zum Erfassen von Prozessorzustands-Übergängen | |
DE102020120019A1 (de) | Proaktive di/dt-spannungs-dachabfall-abschwächung | |
DE112004001320B3 (de) | Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren | |
DE112011105298B4 (de) | Reduzieren des Energieverbrauchs von Uncore-Schaltkreisen eines Prozessors | |
DE69907512T2 (de) | Gerät und verfahren zur automatischen frequenzregelung einer zentralen verarbeitungseinheit | |
DE60031404T2 (de) | Verfahren und vorrichtung zur dynamischen änderung der grössen von pools, die die leistungsaufnahme von speichern steuern | |
DE69727407T2 (de) | Verteilte Ausführung von modusungeeigneten Befehlen in Multiprozessorsysteme | |
DE102014003798B4 (de) | Verfahren zum Booten eines heterogenen Systems und Präsentieren einer symmetrischen Kernansicht | |
DE102010034555A1 (de) | Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus | |
DE10393969T5 (de) | Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands | |
DE112007001987B4 (de) | Überführen einer Rechenplattform in einen Systemzustand niedriger Leistung | |
DE69633166T2 (de) | Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration | |
DE102008035120B4 (de) | Prozessorauswahl für einen Interrupt, die einen Prozessorcluster identifiziert | |
DE112012000749B4 (de) | Techniken zum Verwalten des Stromverbrauchszustands eines Prozessors | |
DE112007000632B4 (de) | Energieoptimierte Frame-Synchronisation für mehrere USB-Controller mit nicht gleichförmigen Frame-Raten | |
DE112010004965T5 (de) | Steuerung von Zeitstempelzähler-(TSC)-Offsets für Mehrfach-Kerne und -Threads | |
DE102013104329B4 (de) | Aufgabenzuteilung in großen und kleinen Kernen | |
DE112012006377B4 (de) | Energieverbrauch und Leistung von Computersystemen steuern | |
DE102010045743A1 (de) | Verfahren und Vorrichtung um Turboleistung für das Event-Handling zu verbessern | |
DE112004001133T5 (de) | Warteschlangen-Sperren mit Monitor-Memory-Wait | |
DE69817170T2 (de) | Emulation von unterbrechungsmechanismus in einem multiprozessorsystem | |
DE112013006184T5 (de) | Verwalten eines Leistungszustandes eines Prozessors | |
DE112012007115T5 (de) | Wahlweise Logikprozessor-Zählung und Typauswahl für eine gegebene Arbeitsbelastung basierend auf Wärme- und Leistungsbudget-Einschränkungen der Plattform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law |
Ref document number: 112004001887 Country of ref document: DE Date of ref document: 20060914 Kind code of ref document: P |
|
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |
Effective date: 20110923 |
|
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |