DE102010034555A1 - Provide state memory in a system management mode processor - Google Patents

Provide state memory in a system management mode processor Download PDF

Info

Publication number
DE102010034555A1
DE102010034555A1 DE102010034555A DE102010034555A DE102010034555A1 DE 102010034555 A1 DE102010034555 A1 DE 102010034555A1 DE 102010034555 A DE102010034555 A DE 102010034555A DE 102010034555 A DE102010034555 A DE 102010034555A DE 102010034555 A1 DE102010034555 A1 DE 102010034555A1
Authority
DE
Germany
Prior art keywords
smm
processor
state
memory
smi
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.)
Withdrawn
Application number
DE102010034555A
Other languages
German (de)
Inventor
Mahesh S. Portland Natu
Baskaran Ganesan
Thanunathan Rangarajan
Mohan J. Aloha Kumar
Gautam B. Doshi
Rajesh S. Hillsboro Parthasarathy
Shammanna M. Hillsboro Datta
Frank Portland Binns
Rajesh Nagaraja Murthy
Robert C. Olympia Swanson
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 DE102010034555A1 publication Critical patent/DE102010034555A1/en
Withdrawn legal-status Critical Current

Links

Images

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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/461Saving or restoring of program or task context
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40615Internal triggering or timing of refresh, e.g. hidden refresh, self refresh, pseudo-SRAMs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Advance Control (AREA)

Abstract

Bei einer Ausführungsform beinhaltet die vorliegende Erfindung einen Prozessor, der einen On-Die-Speicher aufweist, wie z. B. ein statischer Direktzugriffspeicher, um einen Architektur-Zustand eines oder mehr Threads zu speichern, die bei Eintritt in einen Systemmanagement-Modus (system management mode, SMM) aus dem Architektur-Zustandsspeicher ausgelagert werden. Auf diese Weise kann Kommunikation dieser Zustands-Information an einen Systemmanagement-Speicher vermieden werden, wodurch Latenz verringert wird, die mit Eintritt in SMM verbunden ist. Ausführungsformen können ebenfalls den Prozessor in die Lage versetzen, einen Zustand von ausführenden Agenten zu aktualisieren, die entweder in einem langen Befehlsablauf sind oder in einem Systemmanagement-Unterbrechungs-(system management interrupt, SMI)-Blockiert-Zustand, um eine Anzeige an die Agenten innerhalb des SMM bereitzustellen. Weitere Ausführungsformen sind beschrieben und werden beansprucht.In one embodiment, the present invention includes a processor having an on-die memory, such as an on-die memory. A static random access memory to store an architectural state of one or more threads that are swapped out of the architectural state memory upon entering a system management mode (SMM). In this way, communication of this state information to a system management memory can be avoided, thereby reducing latency associated with entry into SMM. Embodiments may also enable the processor to update a state of executing agents that are either in a long instruction flow or in a system management interrupt (SMI) -locked state to display to the agents within the SMM. Further embodiments are described and claimed.

Figure 00000001
Figure 00000001

Description

Hintergrundbackground

Die meisten Prozessoren eines Computersystems unterstützen einen speziellen Betriebsmodus, genannt Systemmanagement-Modus (system management mode, SMM). SMM stellt eine eigene Betriebsumgebung bereit, die der Betriebssystem-(operating system, OS)-Software gegenüber transparent ist. Dieser Modus wird oft von Originalgeräteherstellern (original equipment manufacturers, OEMs) genutzt, um spezielle Tasks, u. a. Systemmanagement, Geräte-, Energie- und Wärmemanagement durchzuführen. Serverbezogene Zuverlässigkeits-, Verfügbarkeits- und Wartungsfreundlichkeits-(reliability, availability and serviceability, RAS)-Funktionen werden normalerweise mittels SMM implementiert. In SMM wird typischerweise eingetreten, indem an den Prozessor eine Systemmanagement-Unterbrechungs-(system management interrupt, SMI)-Nachricht gesendet wird. Bei Bestätigung der SMI sichert der Prozessor den derzeitigen Prozessorkontext, auch Prozessor-Speicherzustand genannt, in einem Teil des Systemspeichers, der dem SMM spezifisch zugeteilt ist, genannt Systemmanagement-Direktzugriffspeicher (system management random access memory, SMRAM), und führt den SMI-Verarbeitungscode aus, der in SMRAM enthalten ist. Wenn der SMI-Verarbeiter seine Operationen ausgeführt hat, führt er einen speziellen (nur in SMM gültig) Wiederaufnahme-Befehl aus, der den Prozessor veranlasst, den gesicherten Prozessorkontext aus dem SMRAM erneut zu laden und das Ausführen der unterbrochenen Task wieder aufzunehmen.Most processors of a computer system support a special operating mode, called system management mode (SMM). SMM provides its own operating environment that is transparent to the operating system (OS) software. This mode is often used by original equipment manufacturers (OEMs) to perform special tasks, including: a. System management, device, energy and heat management. Server-related reliability, availability and serviceability (RAS) functions are typically implemented using SMM. SMM is typically entered by sending a system management interrupt (SMI) message to the processor. Upon assertion of the SMI, the processor saves the current processor context, also called the processor memory state, in a portion of the system memory specifically assigned to the SMM, called System Management Random Access Memory (SMRAM), and maintains the SMI processing code which is included in SMRAM. When the SMI processor has performed its operations, it executes a special (SMM only) resume command that causes the processor to reload the backed-up processor context from the SMRAM and resume execution of the interrupted task.

In einem Mehrprozessor-System wird im Allgemeinen eine SMI-Nachricht an alle Prozessoren gesendet. Der SMI-Verarbeiter wählt einen Prozessor, genannt SMM-Monarch, aus, um das Ereignis zu verarbeiten. Dieser Prozessor wartet, bis sich alle anderen Prozessoren innerhalb SMM zusammengefunden haben, bevor er das SMI-Ereignis verarbeitet. Nicht-Monarch-Prozessoren verweilen in SMM, bis der Monarch die Ereignisverarbeitung ausgeführt hat. Wenn das SMM-Ereignis verarbeitet wurde, signalisiert der Monarch den anderen Prozessoren, aus SMM auszutreten. Dieses synchronisierte Eintritts- und Austrittsverhalten wird implementiert, um jegliche Ressourcen-Konflikte zwischen den beiden Parallelumgebungen (OS und SMM) zu vermeiden. Das heißt, wenn einige Prozessoren in der OS-Umgebung aktiv sind und der Rest gleichzeitig in der SMM-Umgebung aktiv ist, ist es möglich, dass sie eine gemeinsam benutzte Ressource modifizieren und dadurch die Operationen des anderen stören, wodurch das System abstürzt. Zusätzlich können bestimmte SMM-Ereignisse nur von einem spezifischen Logik-Prozessor oder einem Satz an Logik-Prozessoren verarbeitet werden. Eine Übertragung stellt sicher, dass diese Bedingung immer erfüllt ist, da alle Logik-Prozessoren in SMI eintreten.In a multiprocessor system, an SMI message is generally sent to all processors. The SMI fabricator selects a processor, called SMM Monarch, to process the event. This processor waits for all other processors within SMM to assemble before processing the SMI event. Non-Monarch processors linger in SMM until the monarch has performed event processing. When the SMM event has been processed, the monarch signals the other processors to exit SMM. This synchronized entry and exit behavior is implemented to avoid any resource conflicts between the two parallel environments (OS and SMM). That is, when some processors are active in the OS environment and the remainder are active in the SMM environment at the same time, they are likely to modify one shared resource and thereby interfere with the other's operations, causing the system to crash. In addition, certain SMM events can only be processed by a specific logic processor or a set of logic processors. A transmission ensures that this condition is always met, since all logic processors enter SMI.

Daher ist SMI-Verarbeitung in einem Mehrprozessor-System komplex und kann alle Systemressourcen verbrauchen, wodurch das Verarbeiten anderer nützlicher Arbeiten verhindert wird, da ein Prozessor, solange er in SMM ist, dem Betriebssystem nicht zur Verfügung steht.Therefore, SMI processing in a multi-processor system is complex and can consume all system resources, thereby preventing the processing of other useful work, since a processor, while in SMM, is not available to the operating system.

Kurze Beschreibung der ZeichnungenBrief description of the drawings

1 ist ein Blockdiagramm eines Prozessors gemäß einer erfindungsgemäßen Ausführungsform. 1 is a block diagram of a processor according to an embodiment of the invention.

2 ist ein Blockdiagramm eines Mehrprozessor-Systems gemäß einer erfindungsgemäßen Ausführungsform. 2 FIG. 10 is a block diagram of a multiprocessor system according to an embodiment of the invention. FIG.

3 ist ein Ablaufdiagramm eines Verfahrens gemäß einer erfindungsgemäßen Ausführungsform. 3 is a flowchart of a method according to an embodiment of the invention.

4 ist ein Ablaufdiagramm eines Verfahrens gemäß einer erfindungsgemäßen Ausführungsform. 4 is a flowchart of a method according to an embodiment of the invention.

Ausführliche BeschreibungDetailed description

Bei verschiedenen Ausführungsformen kann On-Die-Speicher als Alternative zum Gebrauch von externem physikalischem Speicher verwendet werden, um den Speicherzustand von einzelnen Threads bei SMM-Eintritt/Austritt zu speichern. Im Gegensatz dazu hängen derzeitige Systeme von externem physikalischem Speicher ab, um in SMM ein- und auszutreten. Diese SMM-Abhängigkeit von System-RAM führt zu Skalierung, leistungs- und zuverlässigkeitsbezogenen Einschränkungen bei missionskritischen Anwendungen, und kann vermieden werden, indem eine erfindungsgemäße Ausführungsform verwendet wird. Es ist anzumerken, dass der Begriff „Thread”, wie hierin verwendet, ebenfalls auf einen Hardware-Thread verweisen kann, der Speicher in einem Prozessor für den Architektur-Zustand beinhaltet, der mit einem Prozess verbunden ist (z. B. eine Registerdatei und verbundene Konfigurations- und Zustandsregister). Wie hierin verwendet, wird der Begriff „Hardware-Thread” synonym mit dem Begriff „Logik-Prozessor” verwendet. Jeder Prozessorkern kann mehrere Logik-Prozessoren beinhalten, von denen jeder einen zugehörigen Architektur-Zustandsspeicher aufweist, der aber andere Kernressourcen, wie z. B. Front-End-Einheiten, Ausführungseinheiten und so weiter, gemeinsam benutzt.In various embodiments, on-die memory may be used as an alternative to using external physical memory to store the memory state of individual threads at SMM entry / exit. In contrast, current systems rely on external physical memory to enter and exit SMM. This SMM dependency on system RAM results in scaling, performance and reliability related limitations in mission critical applications, and can be avoided by using an embodiment of the invention. It should be noted that the term "thread" as used herein may also refer to a hardware thread that includes memory in an architectural state processor that is connected to a process (eg, a register file and connected configuration and status registers). As used herein, the term "hardware thread" is used synonymously with the term "logic processor". Each processor core may include a plurality of logic processors, each of which has an associated architectural state memory, but which may have other core resources, such as core resources. As front-end units, execution units and so on, shared.

Bei unterschiedlichen Implementierungen kann der On-Die-Speicher, der bereitgestellt ist, um den Speicherzustand von jeglichen aktiven Threads während eines SMM zu speichern, ein On-Die statischer RAM (static RAM, SRAM) oder eine Registerdatei in dem Prozessor selbst sein, um als kleiner zugehöriger Speicher zum Speichern des Speicherzustands zu dienen. Einige Prozessoren können einen On-Die-SRAM für spezifische Tasks wie Power Management beinhalten, z. B. einen OS-verwalteten Energiesparzustand, wie z. B. gemäß einem Advanced Configuration and Power Interface(ACPI)-Zustand (z. B. C6-Zustand oder andere Power Management-Operationen). Bei solchen Prozessoren kann ein Teil dieses SRAM, der auf einer Per-Thread-Basis aufgeteilt ist, für den SRAM-Speicherzustand eines jeden Threads reserviert werden. Als Beispiel kann jeder Logik-Prozessor 1 Kilobyte (KB) von SRAM-Speicher für SMM-Speicherzustand verwenden. Wenn ein gegebener Prozessor diese Menge an SRAM nicht für SMM-Speicherzustand abgeben kann, kann eine Ausführungsform implementiert werden, sodass er SRAM einsetzen kann, der für C6-Abläufe reserviert ist. In diesem Fall können C6/C7-Transaktionen innerhalb SMM in einen niedrigeren Energiesparzustand (z. B. C3) zurückversetzt werden, um eine gegenseitig exklusive Verwendung des gemeinsam benutzten SRAM-Raums für SMM-Speicherzustand sicherzustellen. Einige Prozessoren implementieren keinen zugehörigen SRAM für das Sichern von C6-Zuständen und setzen stattdessen einen Teil eines Last Level Cache (LLC) ein, um Prozessorzustand während einer Sicherung von C6-Zustand zu speichern. Bei diesen Prozessoren kann der SMM-Speicherzustand in dem LLC gespeichert werden.In various implementations, the on-die memory provided may be the memory state of any active threads during an SMM, an on-the-static RAM (SRAM) or a register file may be in the processor itself to serve as a smaller associated memory for storing the memory state. Some processors may include on-die SRAM for specific tasks such as power management, e.g. B. an OS-managed energy-saving state, such. For example, according to an Advanced Configuration and Power Interface (ACPI) state (eg, C6 state or other power management operations). In such processors, a portion of this SRAM, which is split on a per-thread basis, may be reserved for the SRAM memory state of each thread. As an example, each logic processor may use 1 kilobyte (KB) of SRAM memory for SMM memory state. If a given processor can not emit this amount of SRAM for SMM memory state, an embodiment may be implemented such that it can employ SRAM reserved for C6 operations. In this case, C6 / C7 transactions within SMM may be returned to a lower power-saving state (eg, C3) to ensure mutually exclusive use of the shared SMM memory state SRAM space. Some processors do not implement an associated SRAM for backing up C6 states and instead use part of a Last Level Cache (LLC) to store processor state during a C6 state save. In these processors, the SMM memory state may be stored in the LLC.

Sobald er gespeichert ist, kann auf diesen internen SMM-Speicherzustand auf verschiedene Art und Weise zugegriffen werden. Beispielsweise kann auf den internen Zustand mittels modellspezifischer Register-(model-specific register, MSR)-Adressierung auf einer Per-Thread-Basis oder eines rückwärtskompatiblen Mechanismus zugegriffen werden. Herkömmlicherweise kann ein Prozessor bei bestimmten Systemspeicheradressen auf einen SMM-Speicherzustand zugreifen. Der rückwärtskompatible Mechanismus beinhaltet Logik in dem Prozessor, die den Zugriff eines Logik-Prozessors auf diese Legacy-Speicheradressen festhält und diese an den entsprechenden SRAM-Ort umleitet. Solch eine Umleitung kann implementiert werden, wenn absolute Rückwärtskompatibilität bei bestehender Basis-Eingabe-/Ausgabe-System-(basic input/output system, BIOS)-Software erforderlich ist. Diese MSRs können nur in SMM-Modus gelesen oder beschrieben werden und folgen Beschränkungen, die mit dem SMM-Speicherzustand verbunden sind. Wenn ein Logik-Prozessor Zugriff auf einen Speicherzustand eines anderen Prozessors benötigt, kann dies über ein Software-Protokoll erreicht werden.Once stored, this internal SMM memory state can be accessed in a variety of ways. For example, the internal state may be accessed using model-specific register (MSR) addressing on a per-thread basis or a backward compatible mechanism. Conventionally, a processor may access an SMM memory state at certain system memory addresses. The backward compatible mechanism includes logic in the processor that captures a logic processor's access to these legacy memory addresses and redirects them to the appropriate SRAM location. Such a redirect can be implemented if absolute backwards compatibility is required with existing basic input / output system (BIOS) software. These MSRs can only be read or written in SMM mode and follow restrictions associated with the SMM memory state. If a logic processor needs access to a memory state of another processor, this can be accomplished via a software protocol.

Bei einigen Ausführungsformen kann ein zugehöriges Prozessor-Identifikator-Leaf (z. B. ein CPUID-Leaf) oder ein Bereich davon oder ein featureermöglichendes MSR-(modellspezifisches Register)-Bit verwendet werden, um die Verwendung des internen SRAM zu ermöglichen. Es wird Bezug genommen auf 1, die ein Blockdiagramm eines Prozessors gemäß einer erfindungsgemäßen Ausführungsform zeigt. Wie in 1 gezeigt, kann der Prozessor 100 ein mehrstufiger Out-Of-Order-Prozessor mit Pipeline sein. Prozessor 100 ist in relativ vereinfachter Ansicht gezeigt, um verschiedene Merkmale, die in Verbindung mit den hierin beschriebenen SMM-Techniken verwendet werden, zu veranschaulichen. Wie gezeigt, kann Prozessor 100 ein Mehrkern-Prozessor sein, einschließlich einer Vielzahl von Prozessorkernen 105, und der auf einem einzelnen Halbleiter-Die gebildet sein kann. Während dies mit vier solchen Kernen in der Ausführungsform von 1 gezeigt wird, ist der Umfang der vorliegenden Erfindung jedoch in dieser Hinsicht in keiner Weise einschränken. Wie weiter in 1 gezeigt, können in Prozessor 100 zusätzliche Komponenten vorhanden sein. Beispielsweise kann ein integrierter Memory-Controller (integrated memory controller, IMC) 108 vorhanden sein, zusammen mit einem statischen Direktzugriffspeicher (static random access memory, SRAM) 106. Wie vorstehend erörtert, kann dieser Speicher bei einigen Implementierungen verwendet werden, um Kontextzustand gemäß einer erfindungsgemäßen Ausführungsform zu speichern, der anderenfalls in SMRAM gespeichert werden würde. Noch weiter kann Prozessor 100 einen Last Level Cache (LLC) 109 beinhalten, der ein gemeinsam benutzter Cache sein kann, der von allen Prozessorkernen gemeinsam benutzt wird.In some embodiments, an associated processor identifier leaf (eg, a CPUID leaf) or portion thereof or a feature-enabled MSR (Model Specific Register) bit may be used to facilitate use of the internal SRAM. It is referred to 1 showing a block diagram of a processor according to an embodiment of the invention. As in 1 shown, the processor can 100 be a multi-stage pipelined out-of-order processor. processor 100 is shown in a relatively simplified view to illustrate various features used in conjunction with the SMM techniques described herein. As shown, processor can 100 a multi-core processor, including a variety of processor cores 105 , and which may be formed on a single semiconductor die. While doing so with four such cores in the embodiment of 1 however, the scope of the present invention is in no way limited in this respect. As in further 1 can be shown in processor 100 additional components may be present. For example, an integrated memory controller (IMC) 108 be present, along with a static random access memory (SRAM). 106 , As discussed above, in some implementations, this memory may be used to store contextual state according to an embodiment of the invention that would otherwise be stored in SMRAM. Still further can processor 100 a Last Level Cache (LLC) 109 which may be a shared cache shared by all processor cores.

Wie in 1 gezeigt, umfasst Prozessor 100 Front-End-Einheit 110, die zum Einholen von auszuführenden Makrobefehlen und zu deren Vorbereitung für die spätere Verwendung in dem Kern verwendet werden kann. Front-End-Einheit 110 kann z. B. einen Befehls-Prefetcher, einen Befehls-Decoder und einen Trace-Cache zusammen mit Mikrocode-Speicher und einen Mikro-Befehls-(μOp)-Speicher umfassen. Der Befehls-Prefetcher kann z. B. Makrobefehle aus dem Speicher einholen und diese dem Befehls-Decoder zuführen, um diese in die primitive Form zu entschlüsseln, d. h. μOp für die Ausführung durch den Prozessor. Der Trace-Cache kann entschlüsselte μOp nehmen und in geordneten Programmsequenzen assemblieren. Es ist selbstverständlich, dass auch weitere Komponenten und Merkmale in Front-End-Einheit 110 implementiert werden können.As in 1 shown includes processor 100 Front-end unit 110 which can be used to obtain macro instructions to be executed and prepare them for later use in the kernel. Front-end unit 110 can z. A command prefetcher, a command decoder, and a trace cache along with microcode memory and micro-instruction (μOp) memory. The instruction prefetcher may be e.g. B. Obtain macro instructions from memory and supply them to the instruction decoder to decrypt them into primitive form, ie, μOp for execution by the processor. The trace cache can take decrypted μOp and assemble it into ordered program sequences. It goes without saying that even more components and features in front-end unit 110 can be implemented.

Zwischen der Front-End-Einheit 110 und den Ausführungseinheiten 120 ist eine OOO-(out of Order)-Engine 115 eingekoppelt, die zum Empfangen der Mikrobefehle und deren Vorbereitung für die Ausführung verwendet werden kann. Spezieller kann OOO-Engine 115 verschiedene Puffer für die Rückordnung des Mikrobefehlablaufs und die Zuteilung verschiedener für die Ausführung benötigter Ressourcen umfassen, sowie für die Bereitstellung der Umbenennung von logischen Registern in den Speicherorten innerhalb verschiedener Registerdateien, wie eine Registerdatei 130a. Registerdatei 130 kann separate Registerdateien für Integer- und Floating-Point-Operationen umfassen. Es ist anzumerken, dass mehrere Registerdateien 130a–n vorhanden sein können, jede für einen anderen Logik-Prozessor. Zusätzliche Register, nämlich Zustands- und Konfigurationsregister 135, können ebenfalls vorhanden sein. Wie gezeigt, kann jeder Satz an Registern 135a–n für einen anderen Logik-Prozessor sein. Diese verschiedenen Register können verwendet werden, um einen Kern für unterschiedliche Betriebsmodi zu konfigurieren, und um Zustandsinformation hinsichtlich des Threads und unterschiedlicher ausgeführter Befehle bereitzustellen.Between the front-end unit 110 and the execution units 120 is an OOO (out of order) engine 115 which can be used to receive the microinstructions and prepare them for execution. More specifically OOO-engine 115 various buffers for the retirement of the microinstruction sequence and the allocation include various resources required for execution, as well as providing the renaming of logical registers in the storage locations within various register files, such as a register file 130a , register file 130 can include separate register files for integer and floating point operations. It should be noted that several register files 130a -N, each for a different logic processor. Additional registers, namely state and configuration registers 135 , may also be present. As shown, each set of registers 135a -N for another logic processor. These various registers can be used to configure a core for different modes of operation, and to provide state information regarding the thread and different instructions being executed.

Bei dem Beispiel, das in 1 gezeigt ist, können solche Register ein SMM-Speicherzustandsregister 136 beinhalten. Bei verschiedenen Implementierungen kann eine Vielzahl von solchen Registern vorhanden sein, wobei jedes mit einem gegebenen Thread, der auf dem Kern betrieben wird, verbunden ist. Wie vorstehend erörtert, kann solch ein Register einen Indikator, z. B. ein Enable-Bit, speichern, um es dem Zustand des Threads zu ermöglichen, gespeichert zu werden, z. B. innerhalb des Kerns selbst bei Eintritt in SMM. Wenn dieser Indikator nicht freigegeben ist, wird bei Eintritt in SMM der Kontext eines Threads stattdessen in SMRAM gespeichert. Bei einigen Ausführungsformen kann dieses MSR andere Bits beinhalten, die andere Prozessor-Merkmale steuern können. Bei einigen Ausführungsformen kann diese Registerdatei 135, die den Indikator enthält, nur in SMM veränderbar gemacht werden, wodurch verhindert wird, dass sie durch eine Malware-Komponente außerhalb von SMM bösartig verändert wird, was sowohl die Sicherheit als auch die Robustheit des Systems erhöht.In the example that is in 1 As shown, such registers may be an SMM memory state register 136 include. In various implementations, a plurality of such registers may be present, each associated with a given thread operating on the core. As discussed above, such a register may include an indicator, e.g. An enable bit, to allow the state of the thread to be stored, e.g. Inside the core even when entering SMM. If this indicator is not enabled, when SMM enters, the context of a thread is instead stored in SMRAM. In some embodiments, this MSR may include other bits that may control other processor features. In some embodiments, this register file may be 135 , which contains the indicator, can only be made changeable in SMM, preventing it from being maliciously altered by a malware component outside of SMM, which increases both the security and the robustness of the system.

Wie weiter gezeigt, kann Registerdatei 135 ebenfalls ein oder mehr SMM-Zustands-Indikatorregister 138 beinhalten. Solche Indikatorregister können in Form einer Bitmap oder eines Bit-Vektors sein, wobei jeder Logik-Prozessor einen Ort aufweist, um anzuzeigen, wenn der Logik-Prozessor davon abgehalten wird, in einen SMM einzutreten, oder ob der Logik-Prozessor sich in einer langen Ablaufausführung befindet. Bei einer Ausführungsform kann ein separates Register für jede solche Anzeige vorhanden sein. Wechselweise kann ein einzelnes Register vorhanden sein und ein logisch kombinierter Indikator kann daher verwendet werden, um die Gegenwart eines dieser Zustände für jeden Logik-Prozessor anzuzeigen. Weitere Details hinsichtlich der Verwendung dieser Register sind nachstehend beschrieben.As further shown, register file 135 also one or more SMM state indicator registers 138 include. Such indicator registers may be in the form of a bitmap or bit vector, with each logic processor having a location to indicate when the logic processor is prevented from entering an SMM, or whether the logic processor is in a long time Process execution is located. In one embodiment, a separate register may be present for each such display. Alternatively, a single register may be present, and a logically combined indicator may therefore be used to indicate the presence of one of these states for each logic processor. Further details regarding the use of these registers are described below.

Unter weiterer Bezugnahme auf 1, können verschiedene Ressourcen in Ausführungseinheiten 120 vorhanden sein, u. a. in verschiedenen Logik-Einheiten für Integer, Floating-Point und Single-Instruction-Multiple-Data (SIMD) sowie in anderer spezialisierter Hardware. Die Ergebnisse können an eine Rückordnungs-Einheit 140 bereitgestellt werden, die betrieben wird, um zu bestimmen, ob ausgeführte Befehle richtig rückgeordnet und die resultierenden Daten in den Architektur-Zustand des Prozessors aufgenommen werden können, oder ob eine oder mehr Ausnahmen eingetreten sind, die eine richtige Rückordnung der Befehle verhindern.With further reference to 1 , can use different resources in execution units 120 in various logic units for integer, floating-point and single-instruction-multiple-data (SIMD) as well as in other specialized hardware. The results can be sent to a return unit 140 which is operated to determine whether executed instructions can be properly retired and the resulting data included in the processor's architectural state, or whether one or more exceptions have occurred to prevent proper retirement of the instructions.

Wie in 1 gezeigt, ist Rückordnungs-Einheit 140 mit einem Cache-Speicher 150 gekoppelt, welcher bei einer Ausführungsform ein Low Level Cache sein kann (z. B. ein L1-Cache) sein kann, doch der Umfang der vorliegenden Erfindung ist in dieser Hinsicht nicht eingeschränkt. Auch Ausführungseinheiten 120 können direkt mit dem Cache 150 gekoppelt sein (nicht in 1 gezeigt). Von Cache-Speicher 150 aus kann die Datenkommunikation mit Caches höherer Levels, Systemspeicher usw. erfolgen. Dieser High-Level ist in der Ausführungsform in 1 gezeigt, dies soll jedoch den Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise einschränken. Beispielsweise können andere Ausführungsformen in einem In-Order-Prozessor implementiert werden.As in 1 shown is the rearrangement unit 140 with a cache memory 150 coupled, which in one embodiment may be a low level cache (eg, an L1 cache), but the scope of the present invention is not limited in this regard. Also execution units 120 can go directly to the cache 150 be coupled (not in 1 shown). From cache memory 150 The data communication can be done with higher level caches, system memory, etc. This high level is in the embodiment in 1 however, this is not intended to limit the scope of the present invention in any way. For example, other embodiments may be implemented in an in-order processor.

Durch Speichern des SMM-Speicherzustands intern in dem Prozessor, kann die Zuverlässigkeit und Robustheit des Systems verbessert werden. Das heißt, der physikalische Speicher, der typischerweise ein Satz an externen dynamische Direktzugriffspeicher-(dynamic random access memory, DRAM)-Geräten ist, auf denen der SMRAM verbleibt, ist anfällig für Speicherfehler. Ohne eine erfindungsgemäße Ausführungsform laufen SMM-Operationen aus diesem externen Speicher und sind deshalb unter Fehlerbedingungen nicht zuverlässig. Wenn stattdessen eine erfindungsgemäße Ausführungsform verwendet wird, kann die Zuverlässigkeit von SMRAM-Speicher verbessert werden, indem ein SMI-Verarbeiter von nicht-flüchtigem Raum ausgeführt wird, wenn Fehler verarbeitet werden. Beispielsweise kann der SMM-Verarbeiter von einem robusteren Speicher, wie BIOS-Flash oder externem SRAM laufen, während er Speicherfehler verarbeitet. Ebenfalls, wenn SMM-Speicherzustand sich intern zu dem Prozessor befindet, kann der Architektur-Zustand dieses Speichers nur durch MSRs der äußeren Software offengelegt werden. Der mikroarchitektonische Zustand des Prozessors, der benötigt wird, um Maschinenausführungszustand wiederherzustellen, nachdem SMM-Code einen „Wiederaufnahme-(Resume, RSM)”-Befehl ausgeführt hat, muss nicht der äußeren Software offengelegt werden, da diese keine legitime Verwendung für diesen internen Maschinenzustand hat. Dies bedeutet ebenfalls, dass bösartiger Software-Code keinen Zugriff auf den empfindlichen mikroarchitektonischen Zustand hat (wie es sonst der Fall wäre, wenn der Speicher der gesicherten Daten in SMRAM ist), wodurch die Maschine sicherer und robuster gemacht wird.By storing the SMM memory state internally in the processor, the reliability and robustness of the system can be improved. That is, the physical memory, which is typically a set of external dynamic random access memory (DRAM) devices on which the SMRAM remains, is susceptible to memory errors. Without an embodiment of the invention, SMM operations run from this external memory and are therefore not reliable under fault conditions. If an embodiment of the invention is used instead, the reliability of SMRAM memory can be improved by running a nonvolatile space SMI processor when processing errors. For example, the SMM processor may run from a more robust memory, such as BIOS flash or external SRAM, while processing memory errors. Also, if SMM memory state is internal to the processor, the architectural state of this memory can only be exposed by external software MSRs. The microarchitectural state of the processor needed to restore machine execution state after SMM code has executed a "resume (RSM)" command need not be disclosed to the outside software, as this is not a legitimate use for has this internal machine state. This also means that malicious software code does not have access to the sensitive microarchitecture state (as it would otherwise if the memory of the backed up data is in SMRAM), making the machine more secure and robust.

Ausführungsformen können ebenfalls Leistung und Latenz verbessern. Viele Serveranwendungen/Betriebssysteme sind NUMA-(nichteinheitliche Speicherarchitektur)-optimiert, und BIOS konfiguriert Speicher typischerweise so, dass der gesamte SMRAM, der ein durchgängiger Speicherbereich ist, einem einzelnen Sockel zugeordnet wird. Daher erscheinen alle SMM-Speicherzustands-/Zustands-Wiederherstellungs-Operationen als entfernte Schreibzugriffe/entfernte Lesezugriffe für alle Logik-CPUs, mit Ausnahme derjenigen, die in einem Sockel enthalten sind, bei denen der SMRAM lokal befindlich ist. Leistungsanalyse für eine Serverkonfiguration mit vier Sockeln, von denen jeder 12 Kerne umfasst, zeigt an, dass SMM-Speicherzustands-Schreiboperationen durch die Kopplungsstruktur und Speicherbandbreite beschränkt sein und bis zu 5 Mikrosekunden dauern können. Da Anwendungen immer stärker NUMA-optimiert werden, können Prozessoren weniger Puffer für entfernten Datenverkehr zuordnen. Wenn dies geschieht, benötigen SMRAM-Speicherzustands-Schreib- und -Leseoperationen sogar noch mehr Zeit. Betriebssysteme haben typischerweise einen Grenzwert, wie lange eine CPU in SMM verweilen kann, um eine akzeptable Echtzeit-Leistung aufrechtzuerhalten und um Zeitüberschreitungen bei Hochgeschwindigkeits-Netzwerkverbindungen zu vermeiden.Embodiments may also improve performance and latency. Many server applications / operating systems are NUMA (nonuniform memory architecture) optimized, and BIOS typically configures memory so that all SMRAM, which is a contiguous memory area, is mapped to a single socket. Therefore, all SMM memory state / state recovery operations appear as remote write / read accesses for all logic CPUs, except those contained in a socket where the SMRAM is local. Performance analysis for a four socket server configuration, each comprising 12 cores, indicates that SMM memory state writes may be limited by the coupling structure and memory bandwidth and may take up to 5 microseconds. As applications become more NUMA-optimized, processors can allocate fewer buffers for remote traffic. When this happens, SMRAM memory state write and read operations take even more time. Operating systems typically have a limit to how long a CPU can stay in SMM to maintain acceptable real-time performance and to avoid timeouts on high-speed network connections.

Überschreiten dieses Grenzwerts beeinträchtigt die Reaktionsfähigkeit des OS, Anwendungslatenzen, und kann ebenfalls zu Fehlfunktionen des Betriebssystems führen. Dementsprechend verringert das Verwenden eines On-Die-SMM-Speicherzustands gemäß einer erfindungsgemäßen Ausführungsform die Latenz und ermöglicht daher weitere Zeit, die einem SMM-Verarbeiter zugeteilt wird, um das SMM-Ereignis (die nützliche Arbeit des SMM) zu bedienen.Exceeding this limit will affect the OS's responsiveness, application latencies, and may also cause the operating system to malfunction. Accordingly, using an on-die SMM memory state in accordance with one embodiment of the invention reduces latency and therefore allows additional time allocated to an SMM processor to service the SMM event (the useful work of the SMM).

Zusätzlich können Ausführungsformen Skalierbarkeit verbessern. In einem Mehrprozessor-System, wenn eine SMI auftritt, muss jeder Thread in dem System seinen Speicherzustand in seinem eigenen zugehörigen Speicherzustandsbereich in externem Systemspeicher speichern, wie während des Systemstarts durch das System-BIOS definiert und reserviert. Die Gesamtmenge an physikalischem Speicher, der als der SMRAM-Raum reserviert werden soll, der erforderlich ist, um alle Speicherzustände aller Threads in dem System zu erfassen, steigt linear mit der Anzahl an Threads in dem System. Bei einem Mehrkern-, Mehrsockel-System mit symmetrischer Multi-Threading-Unterstützung kann die Menge an Raum ziemlich groß sein (und kann sich bei einer Ausführungsform in der Größenordnung von circa 256 KB befinden). Durch Bereitstellen von On-Die-Speicher für SMM-Speicherzustand kann der Bedarf an einem ständig wachsenden SMRAM-Bereich, um alle Kerne und zugehörigen Threads davon unterzubringen, vermieden werden, wodurch das Skalieren vereinfacht wird. Er beseitigt ebenfalls die Notwendigkeit, dass BIOS einen einzigartigen, nicht-überlappenden Bereich in SMRAM für jeden Thread findet und zuordnet. Noch weiter erspart dies ebenfalls den Speicherschutzbereichen in Silizium implementiert zu werden. Bei Hot-Plug-Szenarien liegt der architektonisch definierte SMM-Speicherzustandsbereich in SMRAM unter 1 MB. Ohne eine erfindungsgemäße Ausführungsform legt BIOS einen Speicherschutzbereich fest und lagert Daten aus, um OS-Angriffe und/oder -Störung zu vermeiden, wenn neue Prozessoren hinzugefügt werden. Ausführungsformen beseitigen den Bedarf dies zu tun, da der Speicherzustand nicht länger in dem sichtbaren OS-Speicher gespeichert ist.Additionally, embodiments may improve scalability. In a multi-processor system, when an SMI occurs, each thread in the system must store its memory state in its own associated memory state area in external system memory as defined and reserved by the system BIOS during system boot. The total amount of physical memory that is to be reserved as the SMRAM space required to capture all storage states of all threads in the system increases linearly with the number of threads in the system. In a multi-core, multi-socket system with symmetric multi-threading support, the amount of space can be quite large (and may be on the order of about 256 KB in one embodiment). By providing on-die storage for SMM memory state, the need for an ever-growing SMRAM area to accommodate all cores and associated threads thereof can be avoided, thereby simplifying scaling. It also eliminates the need for BIOS to find and map a unique, non-overlapping area in SMRAM for each thread. Still further, this also saves the memory protection areas from being implemented in silicon. For hot plug scenarios, the architecturally defined SMM storage state area in SMRAM is less than 1 MB. Without an embodiment of the invention, BIOS sets a memory protection area and stores data to avoid OS attacks and / or interference as new processors are added. Embodiments eliminate the need to do so because the memory state is no longer stored in the visible OS memory.

Es wird Bezug genommen auf 2, die ein Blockdiagramm eines Mehrprozessor-Systems gemäß einer erfindungsgemäßen Ausführungsform zeigt. Wie in 2 gezeigt, beinhaltet Mehrprozessor-System 200 eine Vielzahl von Prozessoren 2101210n (allgemein Prozessor 210). Während dies mit vier solchen Prozessoren in der Ausführungsform von 2 gezeigt wird, ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt. Wie bei der Implementierung in 2 gezeigt, ist ein NUMA-(nichteinheitliches Speicherarchitektur)-System vorhanden, sodass Systemspeicher 2201 und 2203 den Prozessoren 2101 und 2103 über die Kopplungsstruktur 2171 und 2173 lokal zugeordnet ist. Daher erfordert Zugriff auf Speicher durch Prozessoren 2102 und 210n eine Kommunikation über eine einer Vielzahl von Point-to-Point-(PTP)-Kopplungsstrukturen 215 mit einem von Prozessoren 2101 und 2103. Wie bei der Implementierung in 2 gezeigt, beinhaltet Speicher 2201, der ein DRAM sein kann, einen SMRAM 225. In dieser NUMA-Architektur ist SMRAM 225 der Systemmanagement-Speicher für das gesamte System. Dementsprechend muss ohne eine erfindungsgemäße Ausführungsform jeder Prozessor bei einem SMM-Eintritt oder -Austritt Kontext in seinem SMRAM 225 sichern/erneut speichern. Dies wiederum verursacht einen hohen Verbrauch an Bandbreite auf PTP-Kopplungsstruktur 215 und Kopplungsstruktur 2171 sowie eine steigende Latenz bei Eintritt in und Austritt aus dem SMM.It is referred to 2 showing a block diagram of a multiprocessor system according to an embodiment of the invention. As in 2 shown, includes multiprocessor system 200 a variety of processors 2101 - 210n (generally processor 210 ). While doing so with four such processors in the embodiment of FIG 2 is shown, the scope of the present invention is not limited in this regard. As with the implementation in 2 As shown, there is a NUMA (nonuniform memory architecture) system, so system memory 2201 and 2203 the processors 2101 and 2103 via the coupling structure 2171 and 2173 is assigned locally. Therefore requires access to memory through processors 2102 and 210n communication via one of a variety of point-to-point (PTP) coupling structures 215 with one of processors 2101 and 2103 , As with the implementation in 2 shown contains memory 2201 which can be a DRAM, a SMRAM 225 , In this NUMA architecture is SMRAM 225 the system management memory for the entire system. Accordingly, without an embodiment of the invention, each processor must have context in its SMRAM upon SMM entry or exit 225 save / save again. This in turn causes a high consumption of bandwidth on PTP coupling structure 215 and coupling structure 2171 and increasing latency on entry and exit from the SMM.

Dementsprechend kann bei verschiedenen Ausführungsformen jeder Prozessor 210 SRAM 216 zusätzlich zu einem oder mehr Kernen 212 und einem integrierten Memory-Controller 214 beinhalten. Bei verschiedenen Ausführungsformen kann SRAM 216 für das Speichern von SMM-Speicherzuständen bestimmt sein. Das heißt, wenn eine Systemmanagement-Unterbrechung erfolgt, kann der Kontextzustand für die verschiedenen Logik-Prozessoren eines jeden Prozessors 210 lokal in seinem SRAM 216 gespeichert werden, wodurch der Bedarf an Kommunikation von Zustandsinformation mit SMRAM 225 vermieden wird. Bei anderen Ausführungsformen kann dieser Kontextzustand anstatt in einem zugehörigen On-Die-Speicher in auf dem Chip integrierten Registern gespeichert werden, z. B. einer Registerdatei oder anderem Ort, wie einem Cache-Speicher. Während diese bestimmte Implementierung in der Ausführungsform von 2 gezeigt wird, ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt. Beispielsweise können Ausführungsformen weiter mit einem einheitlichen Speicherarchitektursystem verwendet werden.Accordingly, in various embodiments, each processor 210 SRAM 216 in addition to one or more cores 212 and an integrated memory controller 214 include. In various embodiments, SRAM 216 for storing SMM memory states. That is, when a system management interrupt occurs, the context state may be for the various logic processors of each processor 210 locally in his SRAM 216 which reduces the need for communication of state information with SMRAM 225 is avoided. In other embodiments, this context state may be stored in on-die memory instead of in an associated on-die memory, e.g. A register file or other location, such as a cache memory. While this particular implementation in the embodiment of 2 is shown, the scope of the present invention is not limited in this regard. For example, embodiments may be further used with a unified memory architecture system.

Es wird Bezug genommen auf 3, die ein Ablaufdiagramm eines Verfahrens gemäß einer erfindungsgemäßen Ausführungsform zeigt. Wie in 3 gezeigt, kann Verfahren 300 ausgeführt werden, um Eintritt in SMM zu verarbeiten, ohne Zugriffsbedarf auf SMRAM zum Sichern der Zustandsinformation. Es ist anzumerken, dass, aufgrund der Vereinfachung der Erörterung, angenommen wird, dass nur ein einzelner Hardware-Thread vorhanden ist, obwohl bei vielen Implementierungen mehrere Threads zusammen in SMM eintreten können. Wie in 3 gezeigt, kann Verfahren 300 durch den Erhalt einer Systemmanagement-Unterbrechung (Block 310) beginnen. Nach Erhalt dieser Unterbrechung kann ein derzeitiger aktiver Zustand (z. B. eines gegebenen Hardware-Threads) in einem On-Die-Speicher gesichert werden (Block 320). Wie vorstehend erörtert, kann dieser On-Die-Speicher ein zugehöriger SRAM, SRAM, der für einen anderen Zweck verwendet wird (z. B. Power Management-Zustände), Registerspeicher, ein On-Die-Cache-Speicher und so weiter sein.It is referred to 3 showing a flowchart of a method according to an embodiment of the invention. As in 3 shown, can process 300 be executed to process entry into SMM, without access to SMRAM for saving the state information. It should be noted that because of the simplification of the discussion, it is believed that there is only a single hardware thread, although in many implementations, multiple threads may enter SMM together. As in 3 shown, can process 300 by receiving a system management interrupt (block 310 ) kick off. Upon receipt of this interrupt, a current active state (eg of a given hardware thread) may be saved in an on-die memory (block 320 ). As discussed above, this on-die memory may be associated SRAM, SRAM used for a different purpose (eg, power management states), register memory, on-die cache, and so on.

Unter der weiteren Bezugnahme auf 3, ist ein Prozessorzustand modifiziert, um mit einem SMM-Eintrittszustand übereinzustimmen, z. B. wie definiert durch Prozessorspezifikation (Block 330). Dieser Zustand beinhaltet Werte für verschiedene Steuer- und Konfigurationsregister sowie Ausgangswerte für eine Registerdatei. Diese Festlegung bereitet daher eine SMM-Ausführungsumgebung vor, die für einen SMM-Verarbeiter geeignet ist, indem vorbestimmte Werte, die mit dem SMM-Eintrittszustand verbunden sind, in den Zustandsspeicher geladen werden. Wenn der SMM-Zustand festgelegt wurde, geht die Steuerung weiter zu Block 340, wo SMM mittels Code und Daten von SMRAM ausgeführt wird (Block 340). Dementsprechend kann eine gewünschte SMM-Operation ausgeführt werden. Während der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist, umfassen Beispiele von SMM-Operationen Power Management-Operationen, Fehlerverarbeitungs-Operationen und so weiter.With further reference to 3 , a processor state is modified to match an SMM entry state, e.g. As defined by processor specification (Block 330 ). This state includes values for various control and configuration registers as well as output values for a register file. This determination therefore prepares an SMM execution environment suitable for an SMM processor by loading predetermined values associated with the SMM entry state into the state memory. If the SMM state has been set, control continues to block 340 where SMM is executed using code and data from SMRAM (block 340 ). Accordingly, a desired SMM operation can be performed. While the scope of the present invention is not limited in this regard, examples of SMM operations include power management operations, error processing operations, and so forth.

Es kann sodann bestimmt werden, ob SMM-Operationen ausgeführt worden sind (Raute 350). Wenn nicht, kann die Ausführung in SMM fortgesetzt werden. Wenn ausgeführt, führt der Prozessor einen Wiederaufnahme-Befehl aus (Block 360). Als Ergebnis dieses Befehls kann der vorherige Zustand aus dem On-Die-Speicher zurück in die Register des Prozessors geladen werden (Block 370). Der Prozessor kann sodann die Ausführung des Threads wieder aufnehmen, der diesem vorherigen Zustand entspricht, der zurück in den aktiven Zustand versetzt wurde (Block 380). Während diese bestimmte Implementierung in der Ausführungsform von 3 gezeigt wird, ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist. Beispielsweise können bei einigen Ausführungsformen anstelle eines Ausführens von SMM-Operationen von SMRAM, insbesondere wenn der SMM einen Fehler verarbeiten soll, wie z. B. einen DRAM-Fehler, Ausführungsformen stattdessen SMM-Zustandsinformation, SMM-Code und Daten von einem Permanentspeicher, wie z. B. ein Flash-Memory, erhalten.It can then be determined whether SMM operations have been performed (diamond 350 ). If not, execution in SMM can continue. When executed, the processor executes a resume command (block 360 ). As a result of this command, the previous state may be loaded from the on-die memory back into the registers of the processor (block 370 ). The processor may then resume execution of the thread corresponding to that previous state that has been put back into the active state (block 380 ). While this particular implementation in the embodiment of 3 is shown, the scope of the present invention is not limited in this regard. For example, in some embodiments, instead of performing SMM operations of SMRAM, particularly when the SMM is to process an error, such as an error message. For example, a DRAM error, embodiments instead SMM state information, SMM code and data from a non-volatile memory such. As a flash memory received.

Wie vorstehend beschrieben, kann Siliziumspeicherung eines aktiven Zustands SMM-Latenz verringern. Ausführungsformen können weiter Latenz verringern, indem ein schnellerer Eintritt in SMM in bestimmten Situationen ermöglicht wird, wie nun erörtert wird.As described above, silicon storage of an active state can reduce SMM latency. Embodiments may further reduce latency by enabling faster entry into SMM in certain situations, as will now be discussed.

SMM-Latenz wird definiert als die Dauer, für die ein Prozessor per einzelner SMI in der SMM-Umgebung ist. Es gibt zwei hauptsächliche Kontributoren für vollständige SMM-Latenz, Prozessor-Overhead und OEM-BIOS-Code. Diese Latenz muss unter Kontrolle gehalten werden, um Nebeneffekte auf die OS-Umgebung, wie z. B. Zeitüberschreitungen und Taktverschiebungen, zu vermeiden. Weitere Anforderungen erfordern, dass diese Latenz verringert wird, was schwierig umzusetzen sein wird. Derzeit ist vorgeschrieben, dass die SMI-Latenz unter circa 190 Mikrosekunden sein soll. Neue Gebrauchsmodelle, wie Internet-Portal-Daten-Center und Utility Computing, erwarten vorhersehbarere Latenzen von Anwendungen. Folglich drängen OS-Anbieter auf weitere Verringerungen der SMM-Latenz. Auf der anderen Seite haben andere Technologien das Potenzial, SMI-Latenz über die Zeit zu erhöhen. Beispielsweise bedeutet das Drängen der Industrie auf Mehrkern-Prozessoren, dass ein SMI-Verarbeiter eine stetig wachsende Anzahl an Prozessorkernen zusammenfinden muss. Neue SMM-basierte Fähigkeiten üben ebenfalls weiteren Druck auf SMM-Latenz aus. Beispielsweise sind Hochleistungs-RAS-Fähigkeiten von SMM abhängig. Zusätzlich setzen einige OEMs SMM ein, um einzigartige Power Management-Fähigkeiten zu liefern, um ihre Produkte abzugrenzen. Viele OEMs sind bekannt dafür, SMIs zu erzeugen, die bis zu 8-mal pro Sekunde hoch sind.SMM latency is defined as the length of time that a single-SMI processor is in the SMM environment. There are two major contributors for complete SMM latency, processor overhead, and OEM BIOS code. This latency must be kept under control to avoid side effects on the OS environment, such as: B. timeouts and clock shifts to avoid. Other requirements require that this latency be reduced, which will be difficult to implement. It is currently mandated that the SMI latency should be below about 190 microseconds. New utility models, such as Internet portal data center and utility computing, expect more predictable application latencies. As a result, OS providers are pushing for further reductions in SMM latency. On the other hand, other technologies have the potential to increase SMI latency over time. For example, the industry's push for multi-core processors means that an SMI fabricator has to assemble a growing number of processor cores. New SMM-based capabilities also put further pressure on SMM latency. For example, high performance RAS capabilities are dependent on SMM. In addition, some OEMs are putting SMM to deliver unique power management capabilities to differentiate their products. Many OEMs are known to produce SMIs that are up to 8 times per second high.

Bestimmte Befehlssatz-Architekturen (instruction set architectures, ISAs) beinhalten Befehle, wie z. B. ein Zurückschreib- und Invalidierungsbefehl (z. B. wbinvd), der alle Cache-Leitungen invalidiert und diese zurück in den Speicher schreibt. Diese Operationen können eine sehr lange Zeit für die Ausführung benötigen, z. B. im Größenbereich von 103 bis 107 Prozessor-Zyklen, insbesondere bei Prozessoren, die große Cache-Größen unterstützen. Zusätzlich gibt es bestimmte Prozessorzustände, wo eine SMI-Antwort verzögert sein kann (z. B. C3 und C6 niedrige Prozessorzustände). Insgesamt können diese Befehls- und Prozessorzustände als „lange Ablauf”-Zustände bezeichnet werden, was in der Definition einen Befehl oder Prozess bedeutet, der eine ungewöhnlich lange Anzahl an Zyklen für die Ausführung benötigen kann (z. B. in der Größenordnung von 103 Takte), und der einen Eintritt in SMM verzögern kann. Bei einer Ausführungsform kann jeder Ablauf, der SMM-Eintritt um mehr als 5 Mikrosekunden verzögert, als langer Ablauf bezeichnet werden. Hinsichtlich SMM, wenn einer oder mehr Logik-Prozessoren sich in einem langen Ablauf befindet, verzögert er SMM-Eintritt.Certain instruction set architectures (ISAs) include instructions such as: For example, a restore and invalidate command (eg, wbinvd) invalidates all cache lines and writes them back to memory. These operations may take a very long time to execute, e.g. In the size range of 10 3 to 10 7 processor cycles, especially for processors that support large cache sizes. In addition, there are certain processor states where an SMI response may be delayed (eg, C 3 and C 6 low processor states). Overall, these command and processor states may be termed "long drain" states, which in the definition means a command or process that may take an unusually long number of cycles to execute (eg, on the order of 10 3) Bars), and which can delay entry into SMM. In one embodiment, any procedure that delays SMM entry by more than 5 microseconds may be termed a long expiration. With regard to SMM, when one or more logic processors are in a long run, it delays SMM entry.

Wie vorstehend erklärt, wartet der SMM-Monarch, bis alle erwarteten Logik-Prozessoren in SMM eingetreten sind. Bei Eintritt in SMM setzt jeder Prozessor sein eigenes Bit in SMRAM, wodurch angezeigt wird, dass er in SMM eingetreten ist. Der Monarch wartet, bis alle erwarteten Prozessoren ihre Bits gesetzt haben. Wenn einer oder mehr Logik-Prozessoren sich in einem langen Ablauf befindet und spät in SMM eintritt, hält er den SMM-Monarch auf, wodurch die SMM-Latenz erhöht wird. Zusätzlich gibt es bestimmte Architektur-Zustände, wie z. B. Wait For Startup Interprocessor Interrupt (WFS)- und TXT-Sleep-Zustand, wo ein SMI-Ereignis inhibiert wird. Wenn das OS/BIOS einen oder mehr Logik-Prozessoren in einen SMI-inhibierten Zustand versetzt, tritt er nicht in SMM ein, bis das OS/BIOS ihn ausdrücklich aus diesem Zustand herausbringt. Da ein SMI-Ereignis alle anderen Prozessoren in SMM versetzt, ist das OS nicht in der Lage, die SMI zu demaskieren. In diesem Szenario muss der SMM-Monarch sich auf eine lange Zeitüberschreitung verlassen, um die Gegenwart eines SMI-inhibierten Prozessors zu bestimmen. Diese Zeitüberschreitungen verzögern SMM-Rendezvous und entweder erhöhen sie die Gesamt-SMM-Latenz oder verringern die Menge an Zeit, die für die Verarbeitung von SMM-Ereignis zur Verfügung steht.As explained above, the SMM monarch waits until all expected logic processors have entered SMM. Upon entering SMM, each processor sets its own bit in SMRAM, indicating that it has entered SMM. The monarch waits until all expected processors have set their bits. If one or more logic processors are in a long run and enter SMM late, they will stall the SMM monarch, increasing SMM latency. In addition, there are certain architectural states, such. B. Wait For Startup Interprocessor Interrupt (WFS) and TXT Sleep states, where an SMI event is inhibited. When the OS / BIOS places one or more logic processors in an SMI-inhibited state, it does not enter SMM until the OS / BIOS explicitly releases it from that state. Because an SMI event puts all other processors in SMM, the OS is unable to unmask the SMI. In this scenario, the SMM monarch must rely on a long timeout to determine the presence of an SMI-inhibited processor. These timeouts delay SMM rendezvous and either increase overall SMM latency or decrease the amount of time available for SMM event processing.

Bei verschiedenen Ausführungsformen kann der Bedarf an Zeitüberschreitungen innerhalb SMM vermieden werden, sogar dort, wo einige Logik-Prozessoren sich in einem langen Ablauf befinden. Das Beseitigen solcher Zeitüberschreitungen kann die durchschnittliche SMM-Latenz um 10–20% verbessern und ungünstigste SMM-Latenz um zumindest ein paar Millisekunden.In various embodiments, the need for timeouts within SMM can be avoided, even where some logic processors are in a long run. Removing such timeouts can improve the average SMM latency by 10-20% and worst-case SMM latency by at least a few milliseconds.

Ausführungsformen verlassen sich auf die Tatsache, dass ein Prozessor, der sich in einem langen Ablauf oder in einem SMI-inhibierten Zustand befindet, wahrscheinlich nicht auf eine gemeinsam benutzte Ressource zugreift. Außerdem hat solch ein Prozessor wahrscheinlich die SMI nicht verursacht, und daher ist seine Teilnahme für SMI-Verarbeitung nicht notwendig. Daher kann der SMM-Monarch mit SMM-Verarbeitung fortfahren, bevor solch ein Prozessor in einen SMM eingetreten ist.Embodiments rely on the fact that a processor that is in a long-running or SMI-inhibited state is unlikely to access a shared resource. In addition, such a processor has probably not caused the SMI, and therefore its participation is not necessary for SMI processing. Therefore, the SMM monarch can continue SMM processing before such a processor has entered an SMM.

Vor dem Fortfahren muss der SMM-Monarch jedoch in der Lage sein, zuverlässig zu ermitteln, welche Prozessoren sich in einem langen Ablauf und/oder SMI-inhibierten Zustand befinden. Um Prozessoren zu ermitteln, die sich geschäftig in einem langen Ablauf oder in einem SMI-inhibierten Zustand befinden, können Ausführungsformen Indikatoren für diese Zustände bereitstellen, wie z. B. mittels Bitmaps. Bei einer Ausführungsform können solche Indikatoren über global sichtbare Konfigurations-Register bereitgestellt werden, genannt LONG_FLOW_INDICATION und SMI_INHIBITED_INDICATION. Bei dieser Ausführungsform kann ein Bit zu jedem Logik-Prozessor in einem Sockel zugeteilt werden. Als ein Beispiel können die Register von Register 138 von 1 dargestellt werden. Bei Implementierungen, bei denen Prozessor-Mikrocode beim Eintritt in und Austritt aus langen Abläufen und SMI-inhibierten Zuständen beteiligt ist, kann der Mikrocode/die Hardware diese Register-Bits besiedeln. Einige der langen Abläufe können länger als 5 Mikrosekunden anhalten und deshalb kann die Fähigkeit, auf diese Prozessoren in diesen Zuständen nicht zu warten, wesentliche Einsparnisse bei der SMM-Latenz bereitstellen. Zukünftige Prozessoren können mehr als 5 Mikrosekunden für SMM-Mikrocode-Eintrittsablauf benötigen und können selbst als ein langer Ablauf betrachtet werden. Der SMM-Monarch kann warten, bis alle Prozessoren ausgewiesen sind, d. h. sie schließen sich entweder dem SMM an oder es wird berichtet, dass sie sich in einem langen Ablauf oder in SMI-inhibiertem Zustand befinden. Um bei solch einer Bestimmung behilflich zu sein, können eine oder mehr Tabellen, wie z. B. Bitmaps, die in SMRAM gespeichert sind, verwendet werden, wie nachstehend beschrieben.However, before proceeding, the SMM monarch must be able to reliably determine which processors are in a long-running and / or SMI-inhibited state. In order to determine processors that are busy in a long-running or SMI-inhibited state, embodiments may provide indicators for these states, such as: B. by bitmaps. In one embodiment, such indicators may be provided via globally visible configuration registers called LONG_FLOW_INDICATION and SMI_INHIBITED_INDICATION. In this embodiment, one bit may be allocated to each logic processor in a socket. As an example, the registers of register 138 from 1 being represented. In implementations where processor microcode is involved in entry and exit from long runs and SMI inhibited states, the microcode / hardware may populate these register bits. Some of the long runs may last longer than 5 microseconds and therefore the ability to not wait for these processors in these states can provide significant savings in SMM latency. Future processors may require more than 5 microseconds for SMM microcode entry process and may themselves be considered a long process. The SMM monarch can wait for all processors to be expelled, that is, they either join the SMM or are reported to be in a long expiration or SMI-inhibited state. In order to assist in such determination, one or more tables, such as those shown in FIG. B. bitmaps stored in SMRAM can be used as described below.

Bei einer Implementierung sichert der Monarch-Prozessor seinen Zustand und lässt den SMM-Vorspann-Code laufen, bevor er eine Überprüfung der Indikator-Register ausführt. Diese Schritte können leicht mehr als 0,5 Mikrosekunden beanspruchen. Diese Dauer ist viel höher als die Laufzeit für jegliche In-Flight-Unterbrechung, wodurch sichergestellt wird, dass es keine Wettlaufsituation zwischen SMI-Lieferung an einen Kern und ein Lesen seiner Indikator-Register gibt. Wenn die Verzögerung bei bestimmten Konfigurationen geringer ist, kann der Monarch-Prozessor eine kleine Verzögerungsschleife einsetzen, um dies zu kompensieren.In one implementation, the monarch processor saves its state and runs the SMM header code before performing a check on the indicator registers. These steps can easily be more than 0.5 microseconds claim. This duration is much longer than the runtime for any in-flight disruption, ensuring that there is no race between SMI delivery to a core and reading its indicator registers. If the delay is lower in certain configurations, the Monarch processor can use a small delay loop to compensate for this.

Es wird Bezug genommen auf 4, die ein Ablaufdiagramm eines Verfahrens gemäß einer weiteren erfindungsgemäßen Ausführungsform zeigt. Insbesondere zeigt 4 ein Ablaufdiagramm zur Verarbeitung eines Eintritts in und Austritts aus SMM, wenn alle Logik-Prozessoren sich nicht in dem SMM-Zustand zusammenfinden müssen. Auf diese Weise kann die Latenz, die mit dem Warten auf alle Logik-Prozessoren vor der Ausführung von SMM-Operationen verbunden ist, vermieden werden. Wie in 4 gezeigt, kann Verfahren 400 durch Erzeugen eines SMI-Ereignisses beginnen (Block 410). Dieses SMI-Ereignis kann an alle Threads weitergegeben werden. Es ist anzumerken, dass für die Erleichterung der Erörterung angenommen wird, dass die Threads von 4 mit einem einzelnen Prozessor-Sockel beschrieben sind, obwohl Implementierungen verwendet werden können, um SMM über mehrere Sockel zusammenzufinden.It is referred to 4 showing a flowchart of a method according to another embodiment of the invention. In particular shows 4 a flowchart for processing an entry and exit from SMM when all logic processors do not have to come together in the SMM state. In this way, the latency associated with waiting for all logic processors prior to performing SMM operations can be avoided. As in 4 shown, can process 400 by generating an SMI event (block 410 ). This SMI event can be propagated to all threads. It should be noted that in order to facilitate the discussion, it is believed that the threads of 4 with a single processor socket, although implementations can be used to aggregate SMM across multiple sockets.

Als Nächstes kann ein Indikator in einer SMM-Indikator-Speicherabbildung für jeden Thread eingestellt werden, der in einen SMM-Rendezvous-Zustand eintritt (Block 420). Es ist selbstverständlich, dass zuerst verschiedene Vorbereitungsmaßnahmen für den Eintritt in SMM von den Threads ausgeführt werden, z. B. ein Sichern des Zustands, wie vorstehend mit Bezug auf 3 beschrieben. Jeder Thread, der in SMM-Rendezvous-Zustand eintritt, kann einen Indikator in einer SMM-Indikator-Speicherabbildung einstellen, die in SMRAM gespeichert werden kann. Bei einer Ausführungsform kann diese Speicherabbildung eine Bitmap sein, bei der jeder Logik-Prozessor mit einem Bit der Speicherabbildung verbunden ist, und wo Logik-Prozessoren eines jeden Sockels in unterschiedliche Segmente der Speicherabbildung aufgeteilt werden können. Wenn daher ein gegebener Thread in den SMM eintritt, kann sein entsprechendes Bit in der Bitmap eingestellt werden. Einer der Threads innerhalb des SMM kann anschließend als ein Monarch oder ausführender Thread ausgewählt werden (Block 430). Bei verschiedenen Ausführungsformen kann die Bestimmung, welcher Thread der ausführende Thread ist, variieren. Beispielsweise kann der Monarch vorher festgelegt werden (z. B. Logik-Prozessor 0 auf Sockel 0) oder dynamisch über einen Wählmechanismus ausgewählt werden.Next, an indicator may be set in an SMM indicator memory map for each thread entering an SMM Rendezvous state (Block 420 ). It goes without saying that first of all, various preparatory measures for entry into SMM are executed by the threads, e.g. For example, securing the condition as described above with reference to FIG 3 described. Each thread that enters the SMM Rendezvous state can set an indicator in an SMM indicator memory map that can be stored in SMRAM. In one embodiment, this memory map may be a bitmap in which each logic processor is connected to a bit of the memory map, and where logic processors of each socket may be split into different segments of the memory map. Therefore, if a given thread enters the SMM, its corresponding bit in the bitmap can be set. One of the threads within the SMM can then be selected as a monarch or executing thread (Block 430 ). In various embodiments, the determination of which thread is the executing thread may vary. For example, the monarch may be predetermined (eg, Logic Processor 0 on socket 0) or dynamically selected via a dial mechanism.

Unter weiterer Bezugnahme auf 4, kann jeder Thread sodann bestimmen, ob er als Monarch ausgewählt worden ist (Raute 435). Wenn nicht, kann der Thread in einen Schlafzustand eintreten, wo er darauf wartet, dass der Monarch-Thread die Ausführung signalisiert (Block 470).With further reference to 4 , each thread can then determine whether it has been selected as a monarch (diamond 435 ). If not, the thread may enter a sleep state where it waits for the monarch thread to signal execution (Block 470 ).

Dementsprechend geht die Steuerung für den Monarch-Thread weiter zu Block 440. Dort kann sie einen ACCOUNTED-Zustand für alle Threads bestimmen. Bei einer Ausführungsform kann dieser Status auf verschiedenen Konfigurations-Registern, der SMM-Indikator-Speicherabbildung, zusätzlich zu einer Thread-Gegenwarts-Speicherabbildung, die ebenfalls in SMRAM vorhanden sein kann, basieren. Diese Gegenwarts-Speicherabbildung kann eine Bitmap sein, ähnlich derer der SMM-Indikator-Speicherabbildung, und die während SMM-Initialisierung eingestellt werden kann, um die Threads, die in dem System vorhanden sind, anzuzeigen. Bei einer Ausführungsform kann die Bestimmung bei Block 440 eine bitweise OR-Operation wie folgt sein: OR (LONG_FLOW_INDICATION, SMI_INHIBITED_INDICATION, IN_SMM_INDICATION) wo LONG_FLOW_INDICATION von einem Status-Register erhalten wird, das einen Bit-Vektor speichert, wobei jedes Bit davon anzeigt, ob ein entsprechender Thread sich in langer Ablauf-Operation befindet, SMI_INHIBITED_INDICATION von einem Status-Register erhalten wird, das einen Bit-Vektor speichert, wobei jedes Bit davon anzeigt, ob ein entsprechender Thread sich in einem SMI-inhibierten Zustand befindet, und IN_SMM_INDICATION ist die SMM-Indikator-Speicherabbildung. Das Ergebnis der bitweisen OR, ACCOUNTED, kann in einer Bitmap, z. B. in SMRAM, gespeichert werden. Nach dieser Analyse geht die Steuerung weiter zu Raute 450, wo bestimmt werden kann, ob der ACCOUNTED-Zustand für alle vorhandenen Threads aktiv ist (Raute 450). Dies kann bestimmt werden, basierend auf einem Vergleich zwischen dem Ergebnis der ACCOUNTED-Operation und der vorhandenen Speicherabbildung. Wenn nicht, geht die Steuerung weiter zu Block 440. Andernfalls geht die Steuerung weiter zu Block 455, wo das SMI-Ereignis verarbeitet werden kann. Der Monarch-Thread kann somit den gewünschten SMM-Code ausführen. Bei Abschluss des SMM, der durch den Monarch-Thread ausgeführt wird, geht die Steuerung weiter zu Block 460. Bei Block 460 können der ACCOUNTED-Zustand und die SMM-Indikator-Speicherabbildung zurückgesetzt werden (Block 460). Das heißt, der Monarch-Thread kann die Werte in beiden dieser Bitmaps zurücksetzen. Anschließend kann der Monarch-Thread anderen Logik-Prozessoren signalisieren, dass sie aus SMI zurückkehren können (Block 465). Auf diese Weise werden die anderen Threads aus ihrer Warteschleife befreit. Dementsprechend können alle Threads bei Block 475 aus SMM zurückkehren. Während diese bestimmte Implementierung in der Ausführungsform von 4 gezeigt wird, ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt.Accordingly, control for the monarch thread continues to block 440 , There it can determine an ACCOUNTED state for all threads. In one embodiment, this status may be based on various configuration registers, the SMM indicator memory map, in addition to a thread present memory map, which may also be present in SMRAM. This present memory map may be a bitmap similar to that of the SMM indicator memory map, and may be set during SMM initialization to indicate the threads present in the system. In one embodiment, the determination at block 440 a bitwise OR operation as follows: OR (LONG_FLOW_INDICATION, SMI_INHIBITED_INDICATION, IN_SMM_INDICATION) where LONG_FLOW_INDICATION is obtained from a status register storing a bit vector, each bit of which indicates whether a corresponding thread is in long-duration operation SMI_INHIBITED_INDICATION is obtained from a status register storing a bit vector, each bit of which indicates whether a corresponding thread is in an SMI inhibited state, and IN_SMM_INDICATION is the SMM indicator memory map. The result of the bitwise OR, ACCOUNTED, can be stored in a bitmap, e.g. In SMRAM. After this analysis, the controller continues to rhombic 450 where it can be determined if the ACCOUNTED state is active for all existing threads (diamond 450 ). This can be determined based on a comparison between the result of the ACCOUNTED operation and the existing memory map. If not, the controller continues to block 440 , Otherwise, the control continues to block 455 where the SMI event can be processed. The monarch thread can thus execute the desired SMM code. Upon completion of the SMM executed by the Monarch thread, control continues to block 460 , At block 460 the ACCOUNTED state and the SMM indicator memory map can be reset (block 460 ). That is, the monarch thread can reset the values in both of these bitmaps. Subsequently, the monarch thread can signal other logic processors that they can return from SMI (Block 465 ). This frees the other threads from their hold. Accordingly, all threads at block 475 return from SMM. While this particular implementation in the embodiment of 4 is shown, the scope of the present invention is not limited in this regard.

Ausführungsformen ermöglichen somit eine Ausführung von SMM-Verarbeiter ohne Speicherabhängigkeit, wodurch die Zuverlässigkeit verbessert wird. Dieser Mechanismus adressiert ebenfalls Leistungs- und Skalierbarkeits-Themen, die mit SMM verbunden sind, sodass SMI-Verarbeitung vermeiden kann, ein Engpass in Mehrkern-/Mehrsockel-Systemen zu werden. Ausführungsformen vermeiden daher die Ausführung von SMM-Code mit DRAM-Abhängigkeit, wodurch Gebrauchsmodelle mit hoher Verfügbarkeit ermöglicht werden, bei denen SMM-Code Speicherfehler diagnostiziert und korrigiert.Embodiments thus enable execution of SMM processors without memory dependency, thereby improving reliability. This mechanism also addresses performance and scalability issues associated with SMM, so SMI processing can avoid becoming a bottleneck in multi-core / multi-socket systems. Embodiments therefore avoid execution of SMM code with DRAM dependency, thereby enabling high availability utility models in which SMM code diagnoses and corrects memory errors.

Ausführungsformen ermöglichen weiter Eintritt in SMM mit verringerter Latenz in der Gegenwart eines Logik-Prozessors, der sich in einem langen Ablauf- oder SMI-inhibierten Zustand befindet. Im Gegensatz dazu gibt es derzeit keinen zuverlässigen Mechanismus, durch den SMM-Code bestimmen kann, ob einer oder mehr Prozessoren spät in SMM eintreten oder sich in einem SMM-inhibierten Zustand befinden, und daher wird eine Zeitüberschreitung festgesetzt, die höher ist, als der längste Ablauf-Zustand. Diese Lösung erhöht SMM-Latenz und verringert OS-Antwort in Echtzeit, zusätzlich zu der Tatsache, dass sie unzuverlässig und schwer implementierbar ist, und kann unter Verwendung einer erfindungsgemäßen Ausführungsform bewältigt werden.Embodiments further allow entry into SMM with reduced latency in the presence of a logic processor that is in a long drain or SMI inhibited state. In contrast, there is currently no reliable mechanism by which SMM code can determine whether one or more processors enter SMM late or are in an SMM inhibited state, and therefore set a timeout that is higher than that longest expiration state. This solution increases SMM latency and reduces OS response in real time, in addition to the fact that it is unreliable and difficult to implement, and can be handled using one embodiment of the invention.

Ausführungsformen können als Code implementiert und auf einem Speichermedium gespeichert werden, das Anweisungen enthält, die zum Programmieren eines Systems für die Ausführung der Anweisungen verwendet werden können. Das Speichermedium kann beinhalten, ist aber nicht beschränkt auf, jede Art Disks, u. a. Floppy Disks, Optische Disks, Solid State-Laufwerke (SSDs), Compact Disk Read-Only Memories (CD-ROMS), Compact Disk Rewritables (CD-RWs) und magnetooptische Disks (MO), Halbleiter-Geräte, wie Read-Only Memories (ROMS), Random Access Memories (RAMs), wie dynamische Random Access Memories (DRAMs), statische Random Access Memories (SRAMs), Erasable Programmable Read-Only Memories (EPROMs), Flash Memories, Electrically Erasable Programmable Read-Only Memories (EEPROMs), magnetische oder optische Karten oder jede andere Art Speichermedium, die sich für das Speichern von elektronischen Befehlen eignet.Embodiments may be implemented as code and stored on a storage medium containing instructions that may be used to program a system for executing the instructions. The storage medium may include, but is not limited to, any type of disc, u. a. Floppy Disks, Optical Disks, Solid State Drives (SSDs), Compact Disk Read Only Memories (CD-ROMS), Compact Disk Rewritables (CD-RWs) and Magneto-Optical Disks (MO), Semiconductor Devices, such as Read-Only Memories (ROMS), Random Access Memories (RAMs), such as Dynamic Random Access Memories (DRAMs), Static Random Access Memories (SRAMs), Erasable Programmable Read-Only Memories (EPROMs), Flash Memories, Electrically Erasable Programmable Read-Only Memories (EEPROMs ), magnetic or optical cards or any other type of storage medium suitable for storing electronic commands.

Obwohl die vorliegende Erfindung im Hinblick auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, sind sich Fachleute bewusst, dass viele weitere Modifikationen und Varianten davon möglich sind. Die beigefügten Ansprüche sollen alle solchen Modifikationen und Varianten abdecken, die dem Sinn und Schutzbereich der vorliegenden Erfindung entsprechen.Although the present invention has been described in terms of a limited number of embodiments, those skilled in the art will appreciate that many other modifications and variations thereof are possible. The appended claims are intended to cover all such modifications and variations that are within the spirit and scope of the present invention.

Claims (24)

Vorrichtung, umfassend: einen Prozessorkern, um Befehle auszuführen und um in einen Systemmanagement-Modus (system management mode, SMM) einzutreten, wobei bei Eintritt in den SMM der Prozessorkern einen aktiven Zustand, der in einem Zustandsspeicher des Prozessorkerns vorhanden ist, in eine Speichereinheit des Prozessorkerns speichern soll, und eine SMM-Ausführungs-Umgebung festlegen soll, indem Werte, die mit dem SMM verbunden sind, in den Zustandsspeicher eingegeben werden.Apparatus comprising: a processor core to execute instructions and to enter a system management mode (SMM), where upon entering the SMM the processor core is to store an active state present in a state memory of the processor core into a memory unit of the processor core , and set an SMM execution environment by entering values associated with the SMM into the state memory. Die Vorrichtung nach Anspruch 1, wobei der Prozessorkern Information offenlegen soll, die in der Speichereinheit als maschinenspezifische Register (machine specific registers, MSRs) gespeichert ist, auf die nur von SMM-Code zugegriffen werden kann.The apparatus of claim 1, wherein the processor core is to disclose information stored in the memory unit as machine specific registers (MSRs) that are accessible only by SMM code. Die Vorrichtung nach Anspruch 1, weiter umfassend ein erstes Zustandsregister, um einen Indikator zu speichern, um anzuzeigen, dass der Prozessorkern in der Lage ist, den aktiven Zustand in der Speichereinheit zu speichern und nicht in einem Systemmanagement-Direktzugriffspeicher (system management random access memory, SMRAM).The apparatus of claim 1, further comprising a first state register for storing an indicator to indicate that the processor core is capable of storing the active state in the memory device and not in a system management random access memory , SMRAM). Die Vorrichtung nach Anspruch 3, wobei das erste Zustandsregister nur durch einen Agenten aktualisiert werden kann, der in dem SMM ausgeführt wird.The apparatus of claim 3, wherein the first state register can be updated only by an agent executing in the SMM. Die Vorrichtung nach Anspruch 3, wobei der Prozessorkern SMM-Code ausführen soll, der in dem SMRAM gespeichert ist.The apparatus of claim 3, wherein the processor core is to execute SMM code stored in the SMRAM. Die Vorrichtung nach Anspruch 5, wobei, wenn der SMM einen Speicherfehler beseitigen soll, der Prozessorkern einen Wiederherstellungs-SMM-Code von einem Permanentspeicher erhalten soll und den SMM-Code nicht von dem SMRAM erhalten soll.The apparatus of claim 5, wherein if the SMM is to clear a memory error, the processor core should receive a recovery SMM code from a non-volatile memory and should not receive the SMM code from the SMRAM. Die Vorrichtung nach Anspruch 3, weiter umfassend ein zweites Zustandsregister, um einen Indikator zu speichern, um anzuzeigen, dass ein Logik-Prozessor des Prozessorkerns sich in einer langen Ablauf-Operation befindet.The apparatus of claim 3, further comprising a second state register for storing an indicator to indicate that a logic processor of the processor core is in a long expiration operation. Die Vorrichtung nach Anspruch 7, weiter umfassend ein drittes Zustandsregister, um einen Indikator zu speichern, um anzuzeigen, dass ein Logik-Prozessor des Prozessorkerns sich in einem Systemmanagement-Unterbrechungs-(system management interrupt, SMI)-inhibierten Zustand befindet.The apparatus of claim 7, further comprising a third state register for storing an indicator to indicate that a processor processor logic processor is in a system management interrupt (SMI) inhibited state. Die Vorrichtung nach Anspruch 8, weiter umfassend eine SMM-Indikator-Speicherabbildung, um einen Indikator eines jeden Logik-Prozessors des Prozessorkerns zu speichern, der in SMM eingetreten ist.The apparatus of claim 8, further comprising an SMM indicator memory map to store an indicator of each logic processor of the processor core that has entered SMM. Die Vorrichtung nach Anspruch 8, wobei das erste, zweite und dritte Zustandsregister außerhalb von SMM nicht beschreibbar sind. The apparatus of claim 8, wherein the first, second, and third state registers are non-writable outside of SMM. Die Vorrichtung nach Anspruch 1, weiter umfassend einen Monarch-Prozessor, um den SMM auszuführen, ohne dass sich alle Logik-Prozessoren des Prozessorkerns in dem SMM zusammengefunden haben.The apparatus of claim 1, further comprising a monarch processor to execute the SMM without all the logic processors of the processor core merging into the SMM. Die Vorrichtung nach Anspruch 11, wobei der Monarch-Prozessor auf ein erstes Statusregister zugreifen soll, das anzeigt, dass ein Logik-Prozessor des Prozessorkerns sich in einer langen Ablauf-Operation befindet, auf ein zweites Statusregister, das anzeigt, dass ein Logik-Prozessor des Prozessorkerns sich in einem SMI-inhibierten Zustand befindet, und auf eine SMM-Indikator-Speicherabbildung, die anzeigt, dass jeder Logik-Prozessor des Prozessorkerns in SMM eingetreten ist, und basierend darauf zu bestimmen, eine angefragte SMM-Operation auszuführen, ohne dass sich alle Logik-Prozessoren zusammengefunden haben.The apparatus of claim 11, wherein the monarch processor is to access a first status register indicating that a processor processor of the processor core is in a long expiration operation, a second status register indicating that a logic processor of the processor core is in an SMI inhibited state, and an SMM indicator memory map indicating that each logic processor of the processor core has entered SMM and based on determining to perform a requested SMM operation without all logic processors have come together. Die Vorrichtung nach Anspruch 12, wobei der Monarch-Prozessor die angefragte SMM-Operation ausführen soll, ohne dass sich alle Logik-Prozessoren zusammengefunden haben, wenn jeder Logik-Prozessor des Prozessorkerns in SMM eingetreten ist, sich in einer langen Ablauf-Operation oder in einem SMI-inhibierten Zustand befindet.The apparatus of claim 12, wherein the monarch processor is to perform the requested SMM operation without all of the logic processors merging when each logic processor of the processor core has entered SMM, in a long expiration operation, or in an SMI-inhibited state. Verfahren, umfassend: Bestimmen, ob alle Threads, die auf einem Prozessor ausgeführt werden, in einen Systemmanagement-Modus-(system management mode, SMM)-Rendezvous-Zustand, der auf ein Systemmanagement-Unterbrechungs-(system management interrupt, SMI)-Ereignis reagiert, eingetreten sind; und wenn nicht, Bestimmen, ob die verbleibenden Threads eine lange Ablauf-Operation ausführen oder sich in einem SMI-inhibierten Zustand befinden, und wenn dies der Fall ist, Verwenden eines Monarch-Threads, um das SMI-Ereignis zu verarbeiten, während die verbleibenden Threads die lange Ablauf-Operation ausführen oder in dem SMI-inhibierten Zustand sind, ansonsten Warten darauf, dass die verbleibenden Threads in den SMM-Rendezvous-Zustand eintreten, bevor das SMI-Ereignis verarbeitet wird.Method, comprising: Determining whether all threads executing on a processor have entered a system management mode (SMM) rendezvous state responsive to a system management interrupt (SMI) event are; and if not, determining if the remaining threads are performing a long expiration operation or in an SMI inhibited state, and if so, using a Monarch thread to process the SMI event while the remaining threads execute the long expiration operation or are in the SMI inhibited state, otherwise waiting for the remaining threads to enter the SMM rendezvous state before processing the SMI event. Das Verfahren nach Anspruch 14, weiter umfassend Einstellen eines Indikators in einer SMM-Indikator-Speicherabbildung für jeden Thread, der in den SMM-Rendezvous-Zustand eintritt.The method of claim 14, further comprising setting an indicator in an SMM indicator memory map for each thread entering the SMM Rendezvous state. Das Verfahren nach Anspruch 15, weiter umfassend: Einstellen eines Indikators eines ersten Zustandsregisters des Prozessors, um anzuzeigen, dass ein Thread sich in einer langen Ablauf-Operation befindet; und Einstellen eines Indikators eines zweiten Zustandsregisters des Prozessors, um anzuzeigen, dass ein Thread sich in einem SMI-inhibierten Zustand befindet; undThe method of claim 15, further comprising: Setting an indicator of a first status register of the processor to indicate that a thread is in a long expiration operation; and Setting an indicator of a second state register of the processor to indicate that a thread is in an SMI inhibited state; and Das Verfahren nach Anspruch 16, wobei das Bestimmen das Ausführen einer bitweisen OR-Operation zwischen der SMM-Indikator-Speicherabbildung, dem ersten Zustandsregister und dem zweiten Zustandsregister umfasst.The method of claim 16, wherein the determining comprises performing a bitwise OR operation between the SMM indicator memory map, the first state register, and the second state register. Das Verfahren nach Anspruch 14, wobei bei Eintritt in den SMM, der Monarch-Thread einen aktiven Zustand, der in einem Zustandsspeicher des Prozessors vorhanden ist, in eine Speichereinheit des Prozessors speichern soll, und einen SMM-Zustand in den Zustandsspeicher speichern soll.The method of claim 14, wherein upon entering the SMM, the monarch thread is to store an active state present in a state memory of the processor into a memory unit of the processor and store an SMM state in the state memory. System, umfassend: einen ersten Prozessor, umfassend einen ersten Kern, um Befehle auszuführen und um in einen Systemmanagement-Modus (system management mode, SMM) einzutreten, einen ersten Indikator, um anzuzeigen, ob ein Thread, der auf dem ersten Kern ausgeführt wird, sich in einer langen Ablauf-Operation befindet, einen zweiten Indikator, um anzuzeigen, ob der Thread sich in einem Systemmanagement-Unterbrechungs-(system management interrupt, SMI)-inhibierten Zustand befindet, und eine Speichereinheit, wobei bei Eintritt in den SMM, der erste Kern einen aktiven Zustand, der in einem Zustandsspeicher des ersten Kerns vorhanden ist, in eine Speichereinheit speichern soll, und einen SMM-Ausführungs-Zustand in den Zustandsspeicher speichern soll, wobei die Speichereinheit dem Speicher des aktiven Zustands während des SMM zugehörig ist; einen zweiten Prozessor, umfassend einen zweiten Kern, um Befehle auszuführen und um in den SMM einzutreten, einen ersten Indikator, um anzuzeigen, ob ein zweiter Thread, der auf dem zweiten Kern ausgeführt wird, sich in einer langen Ablauf-Operation befindet, einen zweiten Indikator, um anzuzeigen, ob sich der zweite Thread in dem SMI-inhibierten Zustand befindet, und eine zweite Speichereinheit, wobei bei Eintritt in den SMM, der zweite Kern einen aktiven Zustand, der in einem Zustandsspeicher des zweiten Kerns vorhanden ist, in die zweite Speichereinheit speichern soll, und einen SMM-Ausführungs-Zustand in den Zustandsspeicher speichern soll, wobei die zweite Speichereinheit dem Speicher des aktiven Zustands während des SMM zugehörig ist; einen dynamischen Direktzugriffspeicher (dynamic random access memory, DRAM), der mit den ersten und zweiten Prozessoren gekoppelt ist, wobei ein Teil des DRAM ein Systemmanagement-Direktzugriffspeicher (system management random access memory, SMRAM) für das System ist.System comprising: a first processor, comprising a first kernel for executing instructions, and entering a system management mode (SMM), a first indicator for indicating whether a thread executing on the first kernel is in one long expiration operation, a second indicator to indicate whether the thread is in a system management interrupt (SMI) inhibited state, and a storage device, where upon entry into the SMM, the first core one is to store an active state present in a state memory of the first core into a memory unit and store an SMM execution state in the state memory, the memory device being associated with the memory of the active state during the SMM; a second processor comprising a second core for executing instructions and entering the SMM, a first indicator for indicating whether a second thread being executed on the second core is in a long expiration operation, a second indicator Indicator to indicate whether the second thread is in the SMI inhibited state, and a second memory unit, wherein when entering the SMM, the second core has an active state present in a state memory of the second core in the second one Store memory unit and store an SMM execution state in the state memory, wherein the second memory unit is associated with the memory of the active state during the SMM; a dynamic random access memory (DRAM) coupled to the first and second processors, wherein a portion of the DRAM is a system management random access memory (SMRAM) for the system. Das System nach Anspruch 19, wobei der DRAM mit einer nichteinheitlichen Speicherarchitektur (non-uniform memory architecture, NUMA) gekoppelt ist, wobei der zweite Prozessor mit dem DRAM über den ersten Prozessor kommunizieren soll. The system of claim 19, wherein the DRAM is coupled to a non-uniform memory architecture (NUMA), the second processor to communicate with the DRAM via the first processor. Das System nach Anspruch 19, wobei der zweite Prozessor den aktiven Zustand nicht in dem SMRAM speichern soll, der auf ein SMI-Signal reagiert, und stattdessen den aktiven Zustand in der zweiten Speichereinheit speichern soll.The system of claim 19, wherein the second processor is not to store the active state in the SMRAM responsive to an SMI signal and instead to store the active state in the second memory device. Das System nach Anspruch 19, wobei der erste Prozessor einen Monarch-Prozessor beinhaltet, um eine SMM-Operation nach einem SMM-Rendezvous-Zustand auszuführen, wobei zumindest ein Logik-Prozessor der ersten und zweiten Prozessoren nicht in den SMM-Rendezvous-Zustand eintritt.The system of claim 19, wherein the first processor includes a monarch processor to perform an SMM operation after an SMM rendezvous condition, wherein at least one of the first and second processor logic processors does not enter the SMM rendezvous state , Das System nach Anspruch 22, wobei der zumindest eine Logik-Prozessor sich in einer langen Ablauf-Operation oder in einem SMI-inhibierten Zustand befindet.The system of claim 22, wherein the at least one logic processor is in a long drain operation or in an SMI inhibited state. Das System nach Anspruch 22, wobei der Monarch-Prozessor auf eine erste Bitmap zugreifen soll, die anzeigt, ob irgendein Logik-Prozessor des ersten Prozessors sich in einer langen Ablauf-Operation befindet, eine zweite Bitmap, die anzeigt, ob irgendein Logik-Prozessor des ersten Prozessors sich in einem SMI-inhibierten Zustand befindet und eine dritte Bitmap, die anzeigt, ob jeder Logik-Prozessor des ersten Prozessors in den SMM-Rendezvous-Zustand eingetreten ist, und basierend darauf, zu bestimmen, ob die SMM-Operation ausgeführt wird, wenn der zumindest eine Logik-Prozessor nicht in den SMM-Rendezvous-Zustand eintritt.The system of claim 22, wherein the monarch processor is to access a first bitmap indicating whether any logic processor of the first processor is in a long expiration operation, a second bitmap indicating whether any logic processor the first processor is in an SMI inhibited state and a third bitmap indicating whether each logic processor of the first processor has entered the SMM rendezvous state and based on determining whether the SMM operation is in progress when the at least one logic processor does not enter the SMM Rendezvous state.
DE102010034555A 2009-08-31 2010-08-17 Provide state memory in a system management mode processor Withdrawn DE102010034555A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/550,737 US8578138B2 (en) 2009-08-31 2009-08-31 Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode
US12/550,737 2009-08-31

Publications (1)

Publication Number Publication Date
DE102010034555A1 true DE102010034555A1 (en) 2011-03-03

Family

ID=43525352

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102010034555A Withdrawn DE102010034555A1 (en) 2009-08-31 2010-08-17 Provide state memory in a system management mode processor

Country Status (8)

Country Link
US (4) US8578138B2 (en)
JP (2) JP5430756B2 (en)
KR (3) KR101392109B1 (en)
CN (1) CN102004668B (en)
BR (1) BRPI1010234A2 (en)
DE (1) DE102010034555A1 (en)
GB (1) GB2510792A (en)
WO (1) WO2011025626A2 (en)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8255594B2 (en) * 2009-10-15 2012-08-28 Intel Corporation Handling legacy BIOS services for mass storage devices using systems management interrupts with or without waiting for data transferred to mass storage devices
US8954790B2 (en) 2010-07-05 2015-02-10 Intel Corporation Fault tolerance of multi-processor system with distributed cache
US8819225B2 (en) * 2010-11-15 2014-08-26 George Mason Research Foundation, Inc. Hardware-assisted integrity monitor
US8892924B2 (en) * 2011-05-31 2014-11-18 Intel Corporation Reducing power consumption of uncore circuitry of a processor
KR101572403B1 (en) 2011-12-22 2015-11-26 인텔 코포레이션 Power conservation by way of memory channel shutdown
US9507937B2 (en) * 2012-03-30 2016-11-29 Intel Corporation Reporting malicious activity to an operating system
JP2013214210A (en) * 2012-04-02 2013-10-17 Nec Corp Fault tolerant system, method of changing operation frequency of cpu, and program
US8984313B2 (en) * 2012-08-31 2015-03-17 Intel Corporation Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator
US9383812B2 (en) 2012-09-28 2016-07-05 Intel Corporation Method and apparatus for efficient store/restore of state information during a power state
KR20150112075A (en) * 2014-03-26 2015-10-07 삼성전자주식회사 Storage device and operating method of storage device
US9396032B2 (en) * 2014-03-27 2016-07-19 Intel Corporation Priority based context preemption
US20160170767A1 (en) * 2014-12-12 2016-06-16 Intel Corporation Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor
US9977682B2 (en) * 2015-12-09 2018-05-22 Intel Corporation System management mode disabling and verification techniques
US9898351B2 (en) * 2015-12-24 2018-02-20 Intel Corporation Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US11182315B2 (en) * 2017-02-10 2021-11-23 Intel Corporation Apparatuses, methods, and systems for hardware control of processor performance levels
US10678909B2 (en) * 2017-04-21 2020-06-09 Vmware, Inc. Securely supporting a global view of system memory in a multi-processor system
US10990159B2 (en) * 2017-04-25 2021-04-27 Apple Inc. Architected state retention for a frequent operating state switching processor
US10528398B2 (en) * 2017-09-29 2020-01-07 Intel Corporation Operating system visibility into system states that cause delays and technology to achieve deterministic latency
US10552280B2 (en) 2017-12-14 2020-02-04 Microsoft Technology Licensing, Llc In-band monitor in system management mode context for improved cloud platform availability
CN111133414A (en) * 2017-12-25 2020-05-08 英特尔公司 Multithreading parallel computing platform before memory initialization
US11593154B2 (en) * 2018-12-20 2023-02-28 Intel Corporation Operating system assisted prioritized thread execution
KR20200114017A (en) * 2019-03-27 2020-10-07 에스케이하이닉스 주식회사 Controller and operating method thereof
US11481206B2 (en) * 2019-05-16 2022-10-25 Microsoft Technology Licensing, Llc Code update in system management mode
US11119770B2 (en) * 2019-07-26 2021-09-14 Microsoft Technology Licensing, Llc Performing atomic store-and-invalidate operations in processor-based devices
US11385903B2 (en) 2020-02-04 2022-07-12 Microsoft Technology Licensing, Llc Firmware update patch
US11520653B2 (en) 2020-10-15 2022-12-06 Nxp Usa, Inc. System and method for controlling faults in system-on-chip
CN117331676B (en) * 2023-11-30 2024-03-19 上海兆芯集成电路股份有限公司 System management mode entry method, processor and computer system

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369771A (en) * 1991-12-23 1994-11-29 Dell U.S.A., L.P. Computer with transparent power-saving manipulation of CPU clock
US5357628A (en) * 1992-03-25 1994-10-18 Intel Corporation Computer system having integrated source level debugging functions that provide hardware information using transparent system interrupt
US5764999A (en) * 1995-10-10 1998-06-09 Cyrix Corporation Enhanced system management mode with nesting
US5819020A (en) 1995-10-16 1998-10-06 Network Specialists, Inc. Real time backup system
US5689698A (en) 1995-10-20 1997-11-18 Ncr Corporation Method and apparatus for managing shared data using a data surrogate and obtaining cost parameters from a data dictionary by evaluating a parse tree object
US6240414B1 (en) 1997-09-28 2001-05-29 Eisolutions, Inc. Method of resolving data conflicts in a shared data environment
US6571206B1 (en) * 1998-01-15 2003-05-27 Phoenix Technologies Ltd. Apparatus and method for emulating an I/O instruction for the correct processor and for servicing software SMI's in a multi-processor environment
US6766326B1 (en) 2000-07-24 2004-07-20 Resty M Cena Universal storage for dynamic databases
US6848046B2 (en) 2001-05-11 2005-01-25 Intel Corporation SMM loader and execution mechanism for component software for multiple architectures
US8032592B2 (en) 2002-04-18 2011-10-04 Intuit Inc. System and method for data collection and update utilizing surrogate e-mail addresses using a server
ATE448516T1 (en) 2002-09-09 2009-11-15 Dell Marketing Usa L P SYSTEM AND METHOD FOR APPLICATION MONITORING AND AUTOMATIC DISASTER RESOLUTION FOR HIGH AVAILABILITY
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
US7219241B2 (en) 2002-11-30 2007-05-15 Intel Corporation Method for managing virtual and actual performance states of logical processors in a multithreaded processor using system management mode
US7117319B2 (en) 2002-12-05 2006-10-03 International Business Machines Corporation Managing processor architected state upon an interrupt
JP2004220070A (en) * 2003-01-09 2004-08-05 Japan Science & Technology Agency Context switching method and device, central processing unit, context switching program and computer-readable storage medium storing it
US7380106B1 (en) 2003-02-28 2008-05-27 Xilinx, Inc. Method and system for transferring data between a register in a processor and a point-to-point communication link
US7251745B2 (en) 2003-06-11 2007-07-31 Availigent, Inc. Transparent TCP connection failover
US7363411B2 (en) 2003-10-06 2008-04-22 Intel Corporation Efficient system management synchronization and memory allocation
US7617488B2 (en) 2003-12-30 2009-11-10 Intel Corporation Method and apparatus and determining processor utilization
US7653727B2 (en) 2004-03-24 2010-01-26 Intel Corporation Cooperative embedded agents
US8996455B2 (en) 2004-04-30 2015-03-31 Netapp, Inc. System and method for configuring a storage network utilizing a multi-protocol storage appliance
US7487222B2 (en) 2005-03-29 2009-02-03 International Business Machines Corporation System management architecture for multi-node computer system
US7818388B2 (en) 2005-10-07 2010-10-19 International Business Machines Corporation Data processing system, method and interconnect fabric supporting multiple planes of processing nodes
US7433985B2 (en) * 2005-12-28 2008-10-07 Intel Corporation Conditional and vectored system management interrupts
US20070156960A1 (en) 2005-12-30 2007-07-05 Anil Vasudevan Ordered combination of uncacheable writes
US8973094B2 (en) 2006-05-26 2015-03-03 Intel Corporation Execution of a secured environment initialization instruction on a point-to-point interconnect system
US20080040524A1 (en) 2006-08-14 2008-02-14 Zimmer Vincent J System management mode using transactional memory
US7555671B2 (en) 2006-08-31 2009-06-30 Intel Corporation Systems and methods for implementing reliability, availability and serviceability in a computer system
JP4802123B2 (en) 2007-03-07 2011-10-26 富士通株式会社 Information transmitting apparatus, information transmitting method, information transmitting program, and recording medium recording the program
US20090037932A1 (en) 2007-08-01 2009-02-05 Clark Michael T Mechanism for broadcasting system management interrupts to other processors in a computer system
US7831858B2 (en) 2007-08-31 2010-11-09 Intel Corporation Extended fault resilience for a platform
US7962314B2 (en) 2007-12-18 2011-06-14 Global Foundries Inc. Mechanism for profiling program software running on a processor
US7996663B2 (en) 2007-12-27 2011-08-09 Intel Corporation Saving and restoring architectural state for processor cores
US7913018B2 (en) * 2007-12-28 2011-03-22 Intel Corporation Methods and apparatus for halting cores in response to system management interrupts
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
US7991933B2 (en) * 2008-06-25 2011-08-02 Dell Products L.P. Synchronizing processors when entering system management mode

Also Published As

Publication number Publication date
WO2011025626A2 (en) 2011-03-03
BRPI1010234A2 (en) 2016-03-22
WO2011025626A9 (en) 2011-05-26
US20140040543A1 (en) 2014-02-06
GB201122094D0 (en) 2012-02-01
CN102004668A (en) 2011-04-06
GB2510792A (en) 2014-08-20
US10169268B2 (en) 2019-01-01
JP2012531680A (en) 2012-12-10
JP5430756B2 (en) 2014-03-05
US20170010991A1 (en) 2017-01-12
KR20130081302A (en) 2013-07-16
US8578138B2 (en) 2013-11-05
KR101572079B1 (en) 2015-11-27
KR20120061938A (en) 2012-06-13
KR101392109B1 (en) 2014-05-07
US20110055469A1 (en) 2011-03-03
JP5801372B2 (en) 2015-10-28
CN102004668B (en) 2014-08-20
JP2014075147A (en) 2014-04-24
KR20130081301A (en) 2013-07-16
US9465647B2 (en) 2016-10-11
US20180143923A1 (en) 2018-05-24
WO2011025626A3 (en) 2011-07-14
KR101635778B1 (en) 2016-07-04

Similar Documents

Publication Publication Date Title
DE102010034555A1 (en) Provide state memory in a system management mode processor
DE112011105298B4 (en) Reduce energy consumption from uncore circuits of a processor
DE69633166T2 (en) INTEGRATED CIRCUIT WITH MULTIPLE FUNCTIONS AND THE COMMON USE OF SEVERAL INTERNAL SIGNAL BUSS TO DISTRIBUTE THE CONTROL OF BUS ACCESS AND ARBITRATION
DE102014003798B4 (en) Method of booting a heterogeneous system and presenting a symmetric core view
DE102020120019A1 (en) PROACTIVE DI / DT VOLTAGE ROOF DESCENT ATTENUATION
DE112017000721T5 (en) PROCESS, DEVICE AND COMMANDS FOR THREAD SUSPENSION AT USER LEVEL
DE112012005210B4 (en) Provide a common caching agent for a core and integrated I / O (IO) module
DE102010052680A1 (en) A command to allow a processor wait state
DE112004001887B4 (en) Optimization of SMI treatment and initialization
DE112016007566T5 (en) Systems, methods and apparatus for heterogeneous calculation
DE112010004965T5 (en) Control of time stamp counter (TSC) offsets for multiple cores and threads
DE102010035603A1 (en) Providing hardware support for shared virtual memory between physical local and remote storage
DE112013003731T5 (en) New command-and-high-efficiency microarchitecture to enable instantaneous user-level threading context switching
DE112010004971T5 (en) A system, method, and apparatus for a cache flush of a page area and TLB invalidation of a range of entries
DE112012007115T5 (en) Optional logic processor count and type selection for a given workload based on platform heat and power budget constraints
DE112004001133T5 (en) Queue locks with monitor memory wait
DE112013004751T5 (en) Multi-core processor, shared core extension logic, and shared core extension usage commands
DE112010002425B4 (en) Delegate a request operation to another facility
DE112016004303T5 (en) Low administration hardware prediction element to reduce power inversion for core-to-core data transfer optimization commands
DE102010045743A1 (en) Method and device for improving turbo performance for event handling
DE112010003330T5 (en) Set up checkpoints on cache for speculative versioning
DE10393727T5 (en) Processor cache memory as RAM for executing boot code
DE112011100715T5 (en) HARDWARE ASSIST-THREAD
DE112006001698T5 (en) Basic features to improve thread-level speculation
DE102014003399A1 (en) Systems and methods for implementing transactional memory

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20150303