DE112004001887T5 - Optimierung der SMI-Handhabung und -Initialisierung - Google Patents

Optimierung der SMI-Handhabung und -Initialisierung Download PDF

Info

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
Application number
DE112004001887T
Other languages
English (en)
Other versions
DE112004001887B4 (de
Inventor
Barnes Beaverton COOPER
Grant Millilani Kobayashi
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
Publication of DE112004001887T5 publication Critical patent/DE112004001887T5/de
Application granted granted Critical
Publication of DE112004001887B4 publication Critical patent/DE112004001887B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming 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.

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 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 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 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 wer den, 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 334 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 beispiels weise 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 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 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 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 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.
  • 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)

  1. 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.
  2. Verfahren nach Anspruch 1, wobei der erste und zweite Prozessor logische Prozessoren sind.
  3. Verfahren nach Anspruch 1, wobei der erste und zweite Prozessor physikalische Prozessoren sind.
  4. 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.
  5. Verfahren nach Anspruch 4, wobei das Wake-Up-Signal einen auf der ersten Speicheradresse basierenden Vektor umfaßt.
  6. Verfahren nach Anspruch 5, wobei die erste Speicheradresse ausgerichtet ist.
  7. Verfahren nach Anspruch 6, wobei die erste Speicheradresse 4k ausgerichtet ist.
  8. 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.
  9. 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.
  10. Verfahren nach Anspruch 9, wobei die zweite Speicheradresse eine nicht ausgerichtete Adresse ist.
  11. 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.
  12. 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.
  13. Verfahren nach Anspruch 12, wobei das Wake-Up-Signal auf der ersten Speicheradresse basiert.
  14. Verfahren nach Anspruch 13, wobei die erste Speicheradresse die Stelle eines Default-SMI-Behandlungscodes ist.
  15. Verfahren nach Anspruch 14, wobei die erste Speicheradresse sich in einem herkömmlichen Speicher befindet.
  16. Verfahren nach Anspruch 15, wobei die erste Speicheradresse ausgerichtet ist.
  17. Verfahren nach Anspruch 12, wobei sowohl der erste als auch der zweite Prozessor logische, sich auf demselben Chip befindende Prozessoren sind.
  18. Verfahren nach Anspruch 12, wobei der erste und zweite Prozessor sich in getrennten Packages befindende physikalische Prozessoren sind.
  19. Verfahren nach Anspruch 12, das des weiteren umfaßt: Einsetzen eines Befehlszeigers für den zweiten Prozessor in eine zweite Speicheradresse.
  20. Verfahren nach Anspruch 19, wobei die zweite Speicheradresse eine nicht ausgerichtete Adresse ist.
  21. 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.
  22. 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.
  23. Verfahren nach Anspruch 22, wobei ein Erzeugen des SMIs ein Ändern des Logikniveaus eines mit einem Kontroller-Hub gekoppelten Pins umfaßt.
  24. Verfahren nach Anspruch 22, wobei ein APIC zur Erzeugung des SMIs verwendet wird.
  25. Verfahren nach Anspruch 24, wobei sich der APIC im ersten Prozessor befindet.
  26. 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.
  27. Verfahren nach Anspruch 26, wobei der SMI ein Software-erzeugter SMI ist.
  28. 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.
  29. Verfahren nach Anspruch 26, wobei sich der SMI-Handler an einer ersten Speicheradresse befindet.
  30. Verfahren nach Anspruch 29, wobei die erste Speicheradresse ein Default-Versatz von einer ersten Systemverwaltungsbasis-(SMBase)-Adresse für den ersten Prozessor ist.
  31. 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.
  32. 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.
  33. 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.
  34. 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.
  35. Verfahren nach Anspruch 32, wobei der erste Prozessor eine erste Systemverwaltungsbasis-(SMBase)-Adresse umfaßt.
  36. Verfahren nach Anspruch 33, wobei der zweite Prozessor eine zweite SMBase-Adresse umfaßt.
  37. Verfahren nach Anspruch 36, wobei der SMI-Code sich an einer ersten Speicherstelle befindet, die einen Versatz von der SMBase-Adresse aufweist.
  38. 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.
  39. 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.
  40. 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.
  41. 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.
  42. Vorrichtung nach Anspruch 41, wobei die erste Speicheradresse 1k-ausgerichtet ist.
  43. 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.
  44. 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.
  45. 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.
  46. System nach Anspruch 45, wobei der erste und der zweite Prozessor logische Prozessoren auf demselben Chip sind.
  47. System nach Anspruch 45, wobei der erste und der zweite Prozessor physikalische Prozessoren sind, die sich auf getrennten Packages befinden.
  48. System nach Anspruch 45, wobei ein Pin auf dem Kontroller-Hub zur Erzeugung des ersten SMIs hin- und hergeschaltet wird.
  49. System nach Anspruch 45, wobei ein Code durch den Kontroller-Hub ausgeführt wird, um den ersten SMI zu erzeugen.
  50. System nach Anspruch 45, wobei der Code an der ersten Speicheradresse ein SMI-Behandlungscode ist.
  51. System nach Anspruch 50, wobei das Wake-Up-Signal ein Vektor ist, der die erste Speicheradresse enthält.
  52. 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.
  53. System nach Anspruch 52, wobei der zweite Prozessor nach der Wiederaufnahme vom Behandeln des SMIs Code an der zweiten Speicheradresse ausführt.
  54. 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.
  55. System nach Anspruch 54, wobei der erste Prozessor eine erste Systemverwaltungsbasis-(SMBase)-Adresse umfaßt.
  56. System nach Anspruch 55, wobei der zweite Prozessor eine zweite SMBase-Adresse umfaßt.
  57. System nach Anspruch 56, wobei die erste Speicheradresse einen Versatz von der ersten SMBase umfaßt.
  58. System nach Anspruch 57, wobei die Ziel-SMBase voreinstellungsgemäß die erste SMBase ist.
  59. System nach Anspruch 58, wobei die Ziel-SMBase zur zweiten SMBase geändert wird, bevor der zweite Prozessor den SMI-Code ausführt.
  60. System nach Anspruch 54, wobei der erste und der zweite Prozessor logische Prozessoren sind.
  61. System nach Anspruch 54, wobei der erste und der zweite Prozessor physikalische Prozessoren sind.
DE112004001887T 2003-10-06 2004-09-30 Optimierung der SMI-Behandlung und -Initialisierung Expired - Fee Related DE112004001887B4 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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