DE102018125236A1 - System, Vorrichtung und Verfahren zum Selbsstest vor Ort in einem Diagnose-Ruhezustand - Google Patents

System, Vorrichtung und Verfahren zum Selbsstest vor Ort in einem Diagnose-Ruhezustand Download PDF

Info

Publication number
DE102018125236A1
DE102018125236A1 DE102018125236.6A DE102018125236A DE102018125236A1 DE 102018125236 A1 DE102018125236 A1 DE 102018125236A1 DE 102018125236 A DE102018125236 A DE 102018125236A DE 102018125236 A1 DE102018125236 A1 DE 102018125236A1
Authority
DE
Germany
Prior art keywords
test
core
processor
self
memory
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.)
Pending
Application number
DE102018125236.6A
Other languages
English (en)
Inventor
Vedvyas Shanbhogue
Jeff Huxel
Wei Li
Sanjoy Mondal
Arvind Raman
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 DE102018125236A1 publication Critical patent/DE102018125236A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3187Built-in tests
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31721Power aspects, e.g. power supplies for test circuits, power saving during test
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/319Tester hardware, i.e. output processing circuits
    • G01R31/31917Stimuli generation or application of test patterns to the device under test [DUT]
    • G01R31/31919Storing and outputting test patterns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • G06F11/2242Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors in multi-processor systems, e.g. one processor becoming the test master
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/273Tester hardware, i.e. output processing circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)

Abstract

Bei einer Ausführungsform umfasst ein Prozessor mindestens einen Kern und eine Schnittstellenschaltung zum Verbinden des mindestens einen Kerns mit zusätzlicher Schaltung des Prozessors. Als Reaktion auf eine Anweisung zum Selbsttest vor Ort kann mindestens ein Kern einen Zustand in einem Energiesparspeicher speichern, in einen diagnostischen Ruhezustand eintreten und einen Selbsttest vor Ort im diagnostischen Ruhezustand ausführen, in dem der mindestens eine Kern inaktiv zu sein scheint. Weitere Ausführungsformen sind beschrieben und beansprucht.

Description

  • Technisches Gebiet
  • Ausführungsformen beziehen sich auf einen Prozessor mit Selbsttestfähigkeiten.
  • Stand der Technik
  • Elektronische Einrichtungen wie in Fahrzeugsystemen integrierte Schaltkreise müssen bestimmte funktionelle Sicherheitsanforderungen erfüllen. Das Ziel dieser Anforderungen ist es, unzumutbares Risiko eines Schadens aufgrund von durch fehlerbehaftete Funktionsweise verursachten Gefahren abzuwenden. Die Norm ISO 26262 der International Organization For Standards (ISO) für sicherheitsrelevante elektrische/elektronische Systeme in Kraftfahrzeugen definiert diese Anforderungen und klassifiziert 4 unterschiedliche Sicherheitsebenen, die vom Kraftfahrzeugsicherheitsintegritätsgrad (ASIL)-A (geringste Anforderungen) zu ASIL-D (strengste Anforderungen) reichen.
  • Um diese Sicherheits- und Integritätsziele zu erreichen, kann die Diagnostik vor Ort eingebaute Selbsttestschaltkreise eines Prozessors einsetzen. Dennoch ist die Durchführung derartiger Tests schwierig und zeitaufwendig, und sie kann den normalen Betrieb nachteilig beeinflussen. In vielen Fällen können diese Tests nicht während des normalen Systembetriebs durchgeführt werden.
  • Figurenliste
    • 1 ist ein Blockdiagramm eines Abschnitts eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 2 ist ein Blockdiagramm eines Abschnitts eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 3 ist ein Blockdiagramm eines Abschnitts eines Multi-Domänen-Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 4 ist eine Ausführungsform eines Prozessors, aufweisend mehrere Kerne.
    • 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer anderen Ausführungsform.
    • 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns in Übereinstimmung mit noch einer weiteren Ausführungsform.
    • 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer weiteren Ausführungsform.
    • 9 ist ein Blockdiagramm eines Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 10 ist ein Blockdiagramm eines repräsentativen SoC gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 11 ist ein Blockdiagramm einer weiteren beispielhaften SoC gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 12 ist ein Blockdiagramm eines beispielhaften Systems, bei dem Ausführungsformen verwendet werden können.
    • 13 ist ein Blockdiagramm eines weiteren beispielhaften Systems, bei dem Ausführungsformen verwendet werden können.
    • 14 ist ein Blockdiagramm eines repräsentativen Rechnersystems.
    • 15 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 16 ist ein Blockdiagramm eines Abschnitts eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 17 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 18 ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 19 ist ein Ablaufdiagramm eines Verfahrens gemäß einer weiteren Ausführungsform der vorliegenden Erfindung.
    • 20 ist ein Ablaufdiagramm eines Verfahrens gemäß noch einer weiteren Ausführungsform der vorliegenden Erfindung.
    • 21 ist ein Ablaufdiagramm noch eines weiteren Verfahrens gemäß einer Ausführungsform.
    • 22 ist ein Blockdiagramm eines Systems gemäß einer weiteren Ausführungsform der vorliegenden Erfindung.
  • Detaillierte Beschreibung
  • Bei verschiedenen Ausführungsformen sind Techniken bereitgestellt, um es einem Prozessor oder einer anderen integrierten Schaltung zu ermöglichen, während des normalen Systembetriebs Selbsttests vor Ort auf eine Weise durchzuführen, die für einen aktuellen Zustand des Prozessors nicht destruktiv ist. Zu diesem Zweck stellen Ausführungsformen einen diagnostischen Ruhezustand bereit, in dem diagnostische Tests vor Ort durchgeführt werden können. Vor Eintritt in diesen Zustand speichert ein Prozessor (z. B. über Mikrocode) den Zustand des Kerns ab. Wenn der Kern in den diagnostischen Ruhezustand eingetreten ist, wird eine Teststeuerung, wie beispielsweise eine Scan-Zustandsmaschine (FSM), ausgelöst, um einen Test der Logik des Kerns vor Ort durchzuführen. Nach Abschluss löst die Teststeuerung ein lokalisiertes Rücksetzen und einen Wakeup des Kerns auf. Beim Wakeup aus diesem diagnostischen Ruhezustand stellt der Kern (z. B. über Mikrocode) den Zustand des Kerns wieder her.
  • Bei einer Ausführungsform kann dieser Selbsttest vor Ort unter Verwendung eines Testmustermoduls durchgeführt werden, das eine verschlüsselte und signierte Binärform ist, die zum Packen von einem oder mehreren Scan- oder anderen Testmustern verwendet werden kann Ein gegebener Kern kann Mikrocode ausführen, um diese Binärform zu authentifizieren und zu entschlüsseln und sie in einen Cache-Speicher zu laden. Die Teststeuerung kann einen Direktzugriffstest-(DAT)-Mechanismus verwenden, um auf den Cache-Speicher zuzugreifen und die Muster auszulesen und sie in Abtastketten oder andere Testschaltungen eines Prozessors zu verschieben. Bei einer anderen Ausführungsform kann die Teststeuerung unter Verwendung einer herkömmlichen Lese-/Schreibschnittstelle zum Cache-Speicher auf die Muster zugreifen.
  • Bei Einsatz einer Ausführungsform wird die Anforderung einer externen Steuerung zur Aktivierung des Selbsttests über einen Testzugriffsanschluss (TAP) vermieden. Zusätzlich zur Reduzierung der Komponentenzahl werden auch Sicherheitsprobleme, die durch eine derartige externe Teststeuerung aufkommen, vermieden. Eine externe Steuerung führt typischerweise Tests auf eine Weise durch, die für den Prozessorzustand komplett destruktiv ist und ein vollständiges Neustarten des Prozessors nach dem Test erfordert, was bei Verwendung einer Ausführungsform ebenfalls vermieden werden kann.
  • Bei einer Ausführungsform können Mikrocode-Patch-Authentifizierungs- und Entschlüsselungsschaltung und kryptografische Mikrooperationen eines Kerns verwendet werden, um die Authentifizierung und Entschlüsselung des Testmustermoduls durchzuführen. Zusätzlich unterstützen Ausführungsformen einen Cache-Speicher zum Speichern von Testmustern. Auf diese Weise kann ein externer nichtflüchtiger Speicher, in dem diese Testmuster bestehen bleiben, eine beliebige gegebene Technologie aufweisen, da die Testoperation agnostisch gegenüber nichtflüchtiger Speichertechnologie ist. Und bei einem diagnostischen Ruhezustand, in dem der Prozessorzustand in einem Energiesparspeicher gespeichert und daraus wiederhergestellt wird, ist es nicht erforderlich, im Anschluss an den Abschluss des Tests Software neu zu starten. Da Ausführungsformen den Selbsttest in nicht destruktiver Weise durchführen, können diese Tests periodisch während des normalen funktionellen Betriebs durchgeführt werden. Als Beispiel kann Software ein Modul zum Testen und Durchführen des Tests auswählen, während andere Module des Prozessors im normalen Funktionsbetrieb fortfahren.
  • Bei einer Ausführungsform können Testmustermodule vor Ort empfangen werden, zum Beispiel mittels Download über eine Luftschnittstelle, und durch ein Betriebssystem/Basis-Eingangs-/Ausgangssystem (OS/BIOS) in einem gegebenen Speicher gespeichert werden. In einigen Fällen können Tests in mehrere Gruppen aufgeteilt werden. Während des Tests kann anschließend eine Teststeuerung eine oder mehrere Gruppen von auszuführenden Tests Hugo auswählen, sodass die funktionelle Ausführung zwischen der periodischen Ausführung dieser Testmustermodule erfolgen kann. Damit stellen Ausführungsformen ein kostengünstiges, flexibles, diagnostisches Framework vor Ort mit geringer Latenz bereit.
  • Obwohl die folgenden Ausführungsformen mit Bezug auf spezifische integrierte Schaltkreise beschrieben sind, wie zum Beispiel in Rechenplattformen oder Prozessoren, können andere Ausführungsformen auf andere Typen integrierter Schaltungen und logischer Einrichtungen angewandt werden. Hier beschriebene ähnliche Techniken und Lehren von Ausführungsformen können auf andere Typen von Schaltungen oder Halbleitereinrichtungen angewandt werden, die ebenfalls die bessere Energieeffizienz und Energieerhaltung nutzen können. Beispielsweise sind die offenbarten Ausführungsformen nicht auf bestimmte Typen von Rechnersystemen eingeschränkt. Das heißt, das offenbarte Ausführungsformen in vielen unterschiedlichen Systemtypen verwendet werden können, die von Server-Rechnern (z. B. Tower-, Rack-, Blade-, Mikro-Servern usw.), Kommunikationssystemen, Speichersystemen, Desktop-Rechnern beliebiger Konfiguration, Laptop-, Notebook- und Tablet-Rechnern (einschließlich 2-in-1-Tablets, Phablets usw.) reichen, und sie können auch in anderen Einrichtungen verwendet werden, wie z. B. Handheld-Einrichtungen, Systemen-auf-Chip (SoC) und eingebetteten Anwendungen. Einige Beispiele von Handhelds-Einrichtungen weisen Mobiltelefone auf wie Smartphones, Internetprotokoll-Einrichtungen, Digitalkameras, Personal Digital Assistants (PDAs) und Handheld-PCs. Eingebettete Anwendungen können typischerweise eine Mikrosteuerung, einen digitalen Signalprozessor (DSP), Netzwerkrechner (NetPC), Set-Top-Boxen, Netzwerk-Hubs, Weitverkehrsnetzwerk-(WAN)-Switches, tragbare Einrichtungen oder beliebige andere Systeme aufweisen, die die im Folgenden gelehrten Funktionen und Operationen durchführen können. Ferner können Ausführungsformen in mobilen Endgeräten implementiert sein, die Standard-Sprachfunktionalität aufweisen, wie Mobiltelefonen, Smartphones und Phablets, und/oder in nicht mobilen Endgeräten ohne eine standardmäßige drahtlose Sprachfunktionskommunikationsfähigkeit, wie z. B. viele am Körper tragbare Einrichtungen, Tablets, Notebooks, Desktops, Mikroserver, Server usw. Zudem sind die hier beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physische Recheneinrichtungen beschränkt, sondern sie können sich auch auf Softwareoptimierungen beziehen.
  • Mit Bezug auf 1 wird ein Blockdiagramm eines Teils eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Entsprechend der Darstellung in 1 kann das System 100 verschiedene Komponenten umfassen, aufweisend einen Prozessor 110, der als Mehrkern-Prozessor dargestellt ist. Der Prozessor 110 kann über einen externen Spannungsregler 160 mit einer Stromversorgung 150 gekoppelt sein, die eine erste Spannungsumwandlung durchführen kann, um eine primäre geregelte Spannung zum Prozessor 110 bereitzustellen.
  • Entsprechend der Darstellung kann der Prozessor 110 ein Einzel-Die-Prozessor sein, aufweisend mehrere Kerne 120a - 120n . Zusätzlich kann jeder Kern mit einem integrierten Spannungsregler (IVR) 125a - 125n assoziiert sein, der die primäre geregelte Spannung empfängt und eine Betriebsspannung zum Bereitstellen zu einem oder mehreren mit dem IVR assoziierten Agenten des Prozessors erzeugt. Dementsprechend kann eine IVR-Implementierung bereitgestellt werden, um eine feinkörnige Steuerung von Spannung und damit Leistung und Performanz von jedem einzelnen Kern zu ermöglichen. Jeder Kern kann somit mit einer unabhängigen Spannung und Frequenz arbeiten, sodass große Flexibilität und weit reichende Möglichkeiten zum Abgleich von Energieverbrauch und Performanz ermöglicht werden. Bei einigen Ausführungsformen ermöglicht die Verwendung mehrerer IVRs das Kopieren von Komponenten auf separaten Energieebenen, sodass die Energie durch den IVR nur für die betreffenden Komponenten in der Gruppe geregelt und zugeführt wird. Während des Energiemanagements kann eine gegebene Leistungsebene eines IVR abgeschaltet oder ausgeschaltet werden, wenn der Prozessor in einen bestimmten Energiesparzustand versetzt wird, während eine andere Leistungsebene eines anderen IVR aktiv oder vollständig eingeschaltet bleibt.
  • Weiterhin mit Bezug auf 1 können zusätzliche Komponenten im Prozessor vorliegen, aufweisend eine Eingangs-/Ausgangs-Schnittstelle 132, eine andere Schnittstelle 134 und eine integrierte Speichersteuerung 136. Entsprechend der Darstellung kann jede dieser Komponenten durch einen anderen integrierten Spannungsregler 125x mit Energie versorgt werden. Bei einer Ausführungsform kann die Schnittstelle 132 eine Operation für eine Intel® Quick-Path-Interconnect-(QPI)-Verbindung aktivieren, wodurch Punkt-zu-Punkt-(PtP)-Verbindungen in einem Cache-kohärenten Protokoll bereitgestellt werden, das mehrere Schichten einschließlich einer physikalischen Schicht, einer Verbindungsschicht und einer Protokollschicht aufweist. Die Schnittstelle 134 kann wiederum über ein Peripheral Component Interconnect Express (PCIe™)-Protokoll kommunizieren.
  • Ebenfalls dargestellt ist eine Energie-Steuerungseinheit (PCU) 138, die Hardware, Software und/oder Firmware aufweisen kann, um Energiemanagementoperationen mit Bezug auf den Prozessor 110 durchzuführen. Entsprechend der Darstellung stellt die PCU 138 über eine digitale Schnittstelle Information zum externen Spannungsregler 160 bereit, um den Spannungsregler zu veranlassen, die korrekte geregelte Spannung zu erzeugen. Die PCU 138 stellt über eine andere digitale Schnittstelle auch Steuerinformation zu den IVRs 125 bereit, um die erzeugte Betriebsspannung zu steuern (oder um die Deaktivierung eines dazugehörigen IVR in einem Energiesparmodus zu bewirken). Bei verschiedenen Ausführungsformen kann die PCU 138 eine Mehrzahl von Energiemanagement-Logikeinheiten aufweisen, um hardwarebasiertes Energiemanagement durchzuführen. Ein derartiges Energiemanagement kann vollständig prozessorgesteuert sein (z. B. durch verschiedene Prozessor-Hardware, die durch Arbeitslast und/oder leistungsbezogene, thermische oder andere Prozessorbeschränkungen ausgelöst werden kann), und/oder das Energiemanagement kann als Reaktion auf externe Quellen durchgeführt werden (wie eine Plattform oder Energiemanagementquelle oder Systemsoftware).
  • Bei hier wiedergegebenen Ausführungsformen kann die PCU 138 ausgelegt sein zum Steuern von Eingaben in den Selbsttest vor Ort von verschiedenen Kernen und Logik. Entsprechend der hier wiedergegebenen Erörterung kann die PCU 138 in einigen Fällen derartige diagnostische Tests für einen gegebenen Kern in Verbindung mit einer Eingabe in einem Energiesparzustand auslösen, sodass der gegebene Kern von anderen Kernen und Schaltkreisen des Prozessors 110 isoliert wird. Die Ergebnisse derartiger Tests können wiederum zu einem oder mehreren Zielen gesendet werden.
  • Obwohl dies zur Vereinfachung der Darstellung nicht gezeigt ist, versteht es sich, dass zusätzliche Komponenten im Prozessor 110 vorliegen können, wie z. B. Uncore-Logik, und andere Komponenten wie interne Speicher, z. B. eine oder mehrere Ebenen einer Cache-Speicherhierarchie usw. Obwohl dies bei der Implementierung von 1 mit einem integrierten Spannungsregler dargestellt ist, sind Ausführungsformen ferner nicht derart eingeschränkt.
  • Hier beschriebene Prozessoren können Energiemanagementtechniken unterstützen, die von einem Betriebssystem-(OS)-basierten Energiemanagement-(OSPM)-Mechanismus unabhängig sind und diesen ergänzen. Entsprechend einer beispielhaften OSPM-Technik kann ein Prozessor auf verschiedenen Performanz-Zuständen oder -Ebenen, sogenannten P-Zuständen, und zwar von P0 bis PN arbeiten. Generell kann die P1-Performanz dem höchsten gewährleisteten Performanzzustand entsprechen, der durch ein OS angefordert werden kann. Zusätzlich zu diesem P1-Zustand kann das OS ferner einen höheren Performanzzustand anfordern, und zwar einen P0-Zustand. Dieser P0-Zustand kann somit ein opportunistischer oder Turbomodus-Zustand sein; wenn ein Energie- und/oder thermisches Budget verfügbar ist, kann Prozessorhardware den Prozessor oder zumindest Teile davon dafür auslegen, mit einer höheren als der garantierten Frequenz zu arbeiten. Bei vielen Implementierungen kann ein Prozessor mehrere sogenannte Bin-Frequenzen oberhalb der garantierten maximalen T1-Frequenz aufweisen, die eine maximale Peak-Frequenz des bestimmten Prozessors überschreiten, die während der Herstellung in den Prozessor eingeschmolzen oder auf sonstige Weise geschrieben wird. Zusätzlich kann ein Prozessor gemäß einem OSPM-Mechanismus bei verschiedenen Energiezuständen oder -ebenen arbeiten. Mit Bezug auf Energiezustände kann ein OSPM-Mechanismus unterschiedliche Energieverbrauchszustände angeben, im Allgemeinen bezeichnet als C-Zustände, C0-, C1- bis Cn-Zustände. Ist ein Kern aktiv, arbeitet er in einem C0-Zustand, und wenn der Kern inaktiv ist, kann er in einen Energiesparzustand des Kerns versetzt werden, auch bezeichnet als Kern-C-Zustand ungleich null (z. B. C1-C6-Zustände), wobei jeder C-Zustand auf einer niedrigen Energieverbrauchsebene ist (sodass C6 ein niedrigerer Energiesparzustand als C1 ist usw.).
  • Es versteht sich, dass viele unterschiedliche Typen von Energiemanagementtechniken individuell oder in Kombination bei unterschiedlichen Ausführungsformen eingesetzt werden können. Als repräsentatives Beispiel kann eine Energiesteuerung den Prozessor steuern, um Energiemanagement durch eine Form dynamischer Spannungs-Frequenz-Skalierung (DVFS) zu erfahren, wobei eine Betriebsspannung und/oder Betriebsfrequenz von einem oder mehreren Kernen oder einer anderen Prozessorlogik dynamisch gesteuert werden kann, um den Energieverbrauch in bestimmten Situationen zu reduzieren. Bei einem Beispiel kann DVFS unter Verwendung von „Enhanced Intel SpeedStep™“-Technologie, erhältlich von der Intel Corporation, Santa Clara, US-Bundesstaat Kalifornien, durchgeführt werden, um optimale Performanz auf einer Stufe geringsten Stromverbrauchs bereitzustellen. Bei einem anderen Beispiel kann DVFS unter Verwendung von „Intel TurboBoost™“ -Technologie durchgeführt werden, um es einem oder mehreren Kernen oder anderen Rechenmaschinen zu ermöglichen, bei einer höheren als der garantierten Betriebsfrequenz basierend auf Bedingungen (z. B. Arbeitslast und Verfügbarkeit) zu arbeiten.
  • Eine weitere Energiemanagementtechnik, die bei bestimmten Beispielen eingesetzt werden kann, ist dynamisches Tauschen von Arbeitslasten unter unterschiedlichen Rechenmaschinen. Beispielsweise kann der Prozessor asymmetrische Kerne oder andere Verarbeitungsmaschinen aufweisen, die bei unterschiedlichen Stufen des Stromverbrauchs arbeiten, sodass in einer Situation mit Energieeinschränkung eine oder mehrere Arbeitslasten dynamisch umgelegt werden können, um auf einem Kern mit geringerer Energie oder einer anderen Rechenmaschine ausgeführt zu werden. Eine weitere beispielhafte Energiemanagementtechnik ist Hardware-Lastwechsel (HDC), der bewirken kann, dass Kerne und/oder andere Rechenmaschinen entsprechend einem Lastzyklus periodisch aktiviert und deaktiviert werden, sodass ein oder mehrere Kerne während eines inaktiven Zeitraums des Lastzyklus deaktiviert werden können und während eines aktiven Zeitraums des Lastzyklus aktiviert werden können.
  • Ausführungsformen können in Prozessoren für unterschiedliche Märkte implementiert werden, umfassend Serverprozessoren, Desktop-Prozessoren, mobile Prozessoren usw. Mit Bezug auf 2 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Entsprechend der Darstellung in 2 kann der Prozessor 200 ein Mehrkern-Prozessor sein, aufweisend eine Mehrzahl von Kernen 210a - 210n . Bei einer Ausführungsform kann jeder derartige Kern zu einer unabhängigen Energiedomäne gehören, und er kann dafür ausgelegt sein, in aktive Zustände und/oder Zustände maximaler Performanz basierend auf Arbeitslast einzutreten und diese zu verlassen. Jeder Kern 210 kann mit einer dazugehörigen Kern-Umfangslogik 212a-212n assoziiert sein. Generell kann Kern-Umfangslogik 212 eine oder mehrere unabhängige Energie-/Frequenzdomänen aufweisen, die eine Schnittstelle zwischen Kernschaltung und einem Rest des Prozessors bereitstellen. Insbesondere können eine oder mehrere unabhängige Speichereinheiten jeder Kern-Umfangslogik 212 ausgelegt werden, um mindestens bestimmte Kontextinformation des assoziierten Kerns zu speichern, um schnellen Eintritt in besondere Energiesparzustände und schnellen Austritt daraus zu ermöglichen und um ferner die Durchführung bestimmter Prozessoroperationen (wie Interrupt-Handling und Snoop-Antworten) zu ermöglichen, während ein dazugehöriger Kern in einem Energiesparzustand ist. Zusätzlich kann eine derartige Umfangslogik 212 Interrupt-Information bereitstellen, während der Kern 210 in einem Energiesparzustand ist, um schnelleres Verlassen des Energiesparzustands zu ermöglichen, wenn ein gegebener Kern Ziel eines Interrupts ist.
  • Die verschiedenen Kerne können über eine Verbindung 215 mit einem Systemagenten oder Uncore 220 gekoppelt werden, der verschiedene Komponenten aufweist. Entsprechend der Darstellung kann der Uncore 220 einen geteilten Cache 230 aufweisen, der ein Last-Level-Cache sein kann. Zusätzlich kann der Uncore eine integrierte Speichersteuerung 240 aufweisen, um mit einem Systemspeicher zu kommunizieren (in 2 nicht dargestellt), z. B. über einen Speicherbus. Der Uncore 220 weist auch verschiedene Schnittstellen 250 und eine Energiesteuerungseinheit 255 auf, die Logik zum Durchführen von Energiemanagementtechniken entsprechend der hier wiedergegebenen Beschreibung aufweisen können. Zusätzlich kann eine Selbsttest-Steuerschaltung 256 dafür ausgelegt sein, einen geeigneten Kern (oder eine Gruppe von Kernen) zu identifizieren, um sie zum Durchführen des Selbsttests vor Ort in einen diagnostischen Ruhezustand zu versetzen.
  • Zusätzlich kann durch Schnittstellen 250a-250n eine Verbindung zu verschiedenen Off-Chip-Komponenten wie Peripherieeinrichtungen, Massenspeicher usw. hergestellt werden. Obwohl dies bei der besonderen Implementierung in der Ausführungsform aus 2 dargestellt wird, ist der Umfang der vorliegenden Erfindung diesbezüglich nicht eingeschränkt.
  • Mit Bezug auf 3 ist ein Blockdiagramm eines Mehrdomänen-Prozessors gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Entsprechend der Darstellung bei der Ausführungsform von 3 weist der Prozessor 300 mehrere Domänen auf. Im Einzelnen kann eine Kerndomäne 310 eine Mehrzahl von Kernen 3100 -310n , eine Grafikdomäne 320 kann eine oder mehrere Grafikmaschinen aufweisen, und ferner kann eine Systemagentdomäne 350 vorliegen. Bei einigen Ausführungsformen kann die Systemagentdomäne 350 bei einer von der Kerndomäne unabhängigen Frequenz ausgeführt werden und ständig eingeschaltet bleiben, um Energiesteuerungsereignisse und Energiemanagement zu handhaben, sodass die Domänen 310 und 320 gesteuert werden können, um dynamisch in Zustände hoher Energie und geringer Energie einzutreten und diese zu verlassen. Jede der Domänen 310 und 320 kann mit unterschiedlicher Spannung und/oder Leistung betrieben werden. Man beachte, dass es sich versteht, dass der Umfang der vorliegenden Erfindung, obwohl nur mit drei Domänen dargestellt, nicht diesbezüglich eingeschränkt ist, und dass bei anderen Ausführungsformen zusätzliche Domänen vorliegen können. Beispielsweise können mehrere Kerndomänen vorliegen, von denen jede mindestens einen Kern aufweist.
  • Generell kann jeder Kern 310 ferner zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen Low-Level-Caches aufweisen. Die verschiedenen Kerne können wiederum miteinander gekoppelt sein sowie mit einem geteilten Cache-Speicher einer Mehrzahl von Einheiten eines Last-Level Cache (LLC) 3400 - 340n . Bei verschiedenen Ausführungsformen kann der LLC 340 unter den Kernen und der Grafikmaschine sowie verschiedener Medienverarbeitungsschaltung geteilt werden. Entsprechend der Darstellung koppelt somit eine Ringverbindung 330 die Kerne aneinander und stellt eine Verbindung zwischen den Kernen, der Grafikdomäne 320 und Systemagentenschaltung 350 bereit. Bei einer Ausführungsform kann die Verbindung 330 Teil der Kerndomäne sein. Bei anderen Ausführungsformen kann die Ringverbindung jedoch ihrer eigenen Domäne angehören. Wie ferner dargestellt ist, kann jede einer Mehrzahl von Kern-Umfangslogiken 3120 -312n mit einem gegebenen Kern assoziiert sein, und sie kann effiziente Speicherung und effizienten Abruf von Kontextinformation bereitstellen, z. B. bei Situationen des Eintretens und Verlassens in/von Energieeinsparung. Bei der Darstellung von 3 ist die Kern-Umfangslogik 312 so dargestellt, dass sie zwischen einem entsprechenden Kern 310 und einer Ringverbindung 330 gekoppelt ist und ferner eingesetzt werden kann zum Bereitstellen von Information zur Verwendung beim Identifizieren eines Zielkerns für einen Interrupt, während der Kern in einem Energiesparzustand ist. Es versteht sich jedoch, dass eine direkte Verbindung zwischen dem Kern 310 und der Ringverbindung 330 vorliegen kann, zusammen mit entsprechender direkter Verbindung zwischen der Kern-Umfangslogik 312 und der Ringverbindung 330 bei einigen Ausführungsformen.
  • Wie ferner ersichtlich ist, kann die Systemagentendomäne 350 Anzeigesteuerung 352 aufweisen, die eine Steuerung der assoziierten Anzeige und eine Schnittstelle bereitstellen kann. Wie ferner ersichtlich ist, kann die Systemagentendomäne 350 eine Energiesteuerungseinheit 355 aufweisen, die Logik zum Durchführen von Energiemanagementtechniken aufweist. Und eine Selbsttest-Steuerungsschaltung 356 kann eingesetzt werden, um Selbsttests von gegebenen Kernen vor Ort zu planen und zu steuern, während der Kern von sonstiger Schaltung des Prozessors 300 in einem diagnostischen Ruhezustand isoliert ist (sodass dieser Kern sich gegenüber kernexterner Schaltung als in einem Energiesparzustand befindlich darstellt).
  • Entsprechend der Darstellung in 3 kann der Prozessor 300 ferner eine integrierte Speichersteuerung (IMC) 370 aufweisen, die eine Schnittstelle zu einem Systemspeicher bereitstellen kann, wie zu einem dynamischen Direktzugriffsspeicher (DRAM). Mehrere Schnittstellen 3800 - 380n können vorliegen, um eine Verbindung zwischen dem Prozessor und sonstiger Schaltung zu ermöglichen. Beispielsweise kann bei einer Ausführungsform mindestens eine direkte Medienschnittstelle (DMI) bereitgestellt sein sowie eine oder mehrere PCIe™-Schnittstellen. Zum Bereitstellen von Kommunikation zwischen anderen Agenten wie zusätzlichen Prozessoren oder weiterer Schaltung können außerdem eine oder mehrere QPI-Schnittstellen bereitgestellt sein. Ungeachtet der Darstellung auf dieser höheren Ebene bei der Ausführungsform aus 3 versteht es sich, dass der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist.
  • Mit Bezug auf 4 ist eine Ausführungsform eines Prozessors dargestellt, aufweisend mehrere Kerne. Der Prozessor 400 weist einen beliebigen Prozessor oder eine Verarbeitungseinrichtung auf, wie z. B. einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzprozessor, einen Handheld-Prozessor, einen Anwendungsprozessor, einen Coprozessor, ein System-auf-einem-Chip (SoC) oder eine andere Einrichtung zum Ausführen von Code. Bei einer Ausführungsform weist der Prozessor 400 mindestens zwei Kerne auf - die Kerne 401 und 402, die asymmetrische Kerne oder symmetrische Kerne aufweisen können (die dargestellte Ausführungsform). Der Prozessor 400 kann jedoch eine beliebige Anzahl von Verarbeitungselementen aufweisen, die symmetrisch oder asymmetrisch sein können.
  • Bei einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zur Unterstützung eines Software-Threads. Beispiele von Hardware-Verarbeitungselementen umfassen: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder beliebige andere Elemente, die einen Zustand für einen Prozessor halten können, wie z. B. einen Ausführungszustand oder Architekturzustand. Anders ausgedrückt, bezieht sich ein Verarbeitungselement bei einer Ausführungsform auf beliebige Hardware, die unabhängig mit Code assoziiert werden kann, wie z. B. einen Software-Thread, ein Betriebssystem, eine Anwendung oder sonstigen Code. Ein physischer Prozessor bezieht sich üblicherweise auf eine integrierte Schaltung, die potenziell eine beliebige Anzahl anderer Verarbeitungselemente aufweist, wie Kerne oder Hardware-Threads.
  • Ein Kern bezieht sich häufig auf Logik, Die auf einer integrierten Schaltung positioniert ist und die einen unabhängigen Architekturstatus beibehalten kann, wobei jeder unabhängig beibehaltene Architekturstatus mit mindestens einigen dedizierten Ausführungsressourcen assoziiert ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread normalerweise auf beliebige Logik, die auf einer integrierten Schaltung positioniert ist und die einen unabhängigen Architekturstatus beibehalten kann, wobei unabhängig beibehaltenen Architekturzustände den Zugriff auf Ausführungsressourcen teilen. Wie ersichtlich ist, überschneiden sich die Grenzen zwischen der Nomenklatur eines Hardwarestrandes und eines Kerns, wenn bestimmte Ressourcen geteilt und andere für einen Architekturzustand dediziert sind. Dennoch werden ein Kern und ein Hardware-Thread durch ein Betriebssystem häufig als individuelle logische Prozessoren betrachtet, wobei das Betriebssystem Operationen auf jedem logischen Prozessor individuell planen kann.
  • Der physische Prozessor 400 entsprechend der Darstellung in 4 weist zwei Kerne auf, die Kerne 401 und 402. Hier werden die Kerne 401 und 402 als symmetrische Kerne betrachtet, d. h. als Kerne mit den gleichen Konfigurationen und Funktionseinheiten und/oder der gleichen Logik. Bei einer anderen Ausführungsform weist der Kern 401 einen reihenfolgeveränderlichen Prozessorkern auf, während der Kern 402 einen reihenfolgetreuen Prozessorkern aufweist. Die Kerne 401 und 402 können jedoch aus beliebigen Typen von Kernen ausgewählt werden, wie einem nativen Kern, einem softwareverwalteten Kern, einem zum Ausführen einer nativen Befehlssatzarchitektur (ISA) ausgelegten Kern, einem zum Ausführen einer übersetzten ISA ausgelegten Kern, einem Co-Designed-Kern oder einem anderen bekannten Kern. Um die Erörterung noch zu erweitern, sind die im Kern 401 dargestellten Funktionseinheiten im Folgenden detaillierter beschrieben, da die Einheiten im Kern 402 auf ähnliche Weise arbeiten.
  • Entsprechend der Darstellung weist der Kern 401 zwei Hardware-Threads 401a und 401b auf, die auch als Hardware-Thread-Slots 401a und 401b bezeichnet werden können. Daher betrachten Softwareentitäten wie ein Betriebssystem bei einer Ausführungsform den Prozessor 400 potenziell als vier separate Prozessoren, d. h. vier logische Prozessoren oder Verarbeitungselemente, die vier Software-Threads gleichzeitig ausführen können. Wie vorstehend angedeutet, ist ein erster Thread mit Architekturstatusregistern 401a assoziiert, ein zweiter Thread ist mit Architekturstatusregistern 401b assoziiert, ein dritter Thread kann mit Architekturstatusregistern 402a assoziiert sein, und ein vierter Thread kann mit Architekturstatusregistern 402b assoziiert sein. Hier können alle Architekturstatusregister (401a, 401b, 402a und 402b) entsprechend der vorstehenden Beschreibung als Verarbeitungselemente, Thread-Slots oder Thread-Einheiten bezeichnet sein. Entsprechend der Darstellung werden Architekturstatusregister 401a in Architekturstatusregistern 401b repliziert, sodass individuelle Architekturzustände/Kontexte für den logischen Prozessor 401a und den logischen Prozessor 401b gespeichert werden können. Im Kern 401 können andere kleinere Ressourcen wie Anweisungszeiger und Umbenennungslogik im Verteiler- und Umbenennungsblock 430 auch für die Threads 401a und 401b repliziert werden. Einige Ressourcen wie Umordnungspuffer in der Umordnungs-/Rückordnungseinheit 435, ILTB 420, Lade-/Speicherpuffern und Warteschlangen können über Partitionierung geteilt werden. Andere Ressourcen wie universelle interne Register, Seitentabellen-Basisregister, Low-Level-Daten-Cache und Daten-TLB 415, Ausführungseinheiten 440 und Abschnitte der reihenfolgeveränderlichen Einheit 435 sind potenziell vollständig geteilt.
  • Der Prozessor 400 weist häufig weitere Ressourcen auf, die vollständig geteilt, durch Partitionierung geteilt oder durch/für Verarbeitungselemente dediziert sein können. In 4 ist eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors dargestellt. Man beachte, dass ein Prozessor beliebige dieser Funktionseinheiten aufweisen oder auslassen kann und dass er auch beliebige andere bekannte und nicht dargestellte Funktionseinheiten, Logik oder Firmware aufweisen kann. Entsprechend der Darstellung weist der Kern 401 einen vereinfachten repräsentativen reihenfolgeveränderlichen (OOO) Prozessorkern auf. Jedoch kann bei unterschiedlichen Ausführungsformen ein reihenfolgetreuer Prozessor verwendet werden. Der OOO-Kern weist einen Zweig-Zielpuffer 420 auf, um auszuführende/zu übernehmende Zweige vorherzusagen, und einen Anweisungsübersetzungspuffer (I-TLB) 420 zum Speichern von Adressübersetzungseinträgen für Anweisungen.
  • Der Kern 401 weist ferner ein mit der Abrufeinheit 420 gekoppeltes Decodiermodul 425 zum Decodieren abgerufener Elemente auf. Abruflogik weist bei einer Ausführungsform individuelle, mit Thread-Slots 401a bzw. 401b assoziierte Sequenzer auf. Normalerweise ist der Kern 401 mit einer ersten ISA assoziiert, die auf dem Prozessor 400 ausführbare Anweisungen definiert/angibt. Häufig umfassen Maschinencodeanweisungen, die Teil der ersten ISA sind, einen Teil der Anweisung (als Opcode bezeichnet), der eine auszuführende Anweisung oder Operation angibt oder darauf verweist. Die Decodierlogik 425 weist Schaltung auf, die diese Anweisungen aus ihren Opcodes erkennt und die decodierten Anweisungen zur Verarbeitung entsprechend der Definition durch die erste ISA in der Pipeline weiterleitet. Beispielsweise weisen Decoder 425 bei einer Ausführungsform Logik auf, die zum Erkennen spezifischer Anweisungen wie Transaktionsanweisungen konzipiert oder ausgelegt ist. Als Ergebnis des Erkennens durch die Decoder 425 übernehmen die Architektur oder der Kern 401 vordefinierte Vorgänge zum Durchführen von Aufgaben, die mit der entsprechenden Anweisung assoziiert sind. Es ist wichtig, festzustellen, dass beliebige der hier beschriebenen Aufgaben, Blöcke, Operationen und Verfahren als Reaktion auf eine einzelne oder mehrere Anweisungen durchgeführt werden können, von denen einige neue oder alte Anweisungen sein können.
  • Bei einem Beispiel weist der Verteiler- und Umbenennungsblock 430 einen Verteiler zum Reservieren von Ressourcen wie Registerdateien zum Speichern von Ergebnissen der Anweisungsabarbeitung auf. Die Threads 401a und 401b sind potenziell fähig zur reihenfolgeveränderlichen Ausführung, wobei der Verteiler- und Umbenennerblock 430 auch andere Ressourcen reserviert, wie Umordnungspuffer zum Nachverfolgen von Anweisungsresultaten. Die Einheit 430 kann auch einen Registerumbenenner aufweisen, um Programm-/Anweisungs-Referenzregister zu anderen internen Registern des Prozessors 400 umzubenennen. Die Umordnungs-/Rückordnungs-Einheit 435 weist Komponenten auf wie die vorstehend erwähnten Umordnungspuffer, Ladepuffer und Speicherpuffer zum Unterstützen von reihenfolgeveränderlicher Ausführung und späterer reihenfolgetreuer Rückordnung von reihenfolgeveränderlich ausgeführten Anweisungen.
  • Der Planer- und Ausführungseinheiten-Block 440 weist bei einer Ausführungsform eine Planereinheit zum Planen von Anweisungen/Operationen an Ausführungseinheiten auf. Beispielsweise ist eine Gleitkommaanweisung an einem Anschluss einer Ausführungseinheit geplant, die eine verfügbare Gleitkommaausführungseinheit aufweist. Mit den Ausführungseinheiten assoziierte Registerdateien sind ebenfalls fast, um Informationsanweisungs-Verarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten weisen eine Gleitkomma-Ausführungseinheit, eine Ganzzahl-Ausführungseinheit, eine Sprung-Ausführungseinheit, eine Last-Ausführungseinheit, eine Speicher-Ausführungseinheit und andere bekannte Ausführungseinheiten auf.
  • Lower-Level-Daten-Cache und Datenübersetzungspuffer (D-TLB) 450 sind mit Ausführungseinheiten 440 gekoppelt. Der Daten-Cache soll kürzlich verwendete/abgearbeitete Elemente wie Datenoperanden speichern, die potenziell in Speicherkohärenz-Zuständen gehalten werden. Der D-TLB soll kürzliche virtuelle/linear-zu-physische Adressübersetzungen speichern. Als ein spezifisches Beispiel kann eine Seiten-Tabellenstruktur physischen Speicher in eine Mehrzahl virtueller Seiten aufteilen.
  • Hier teilen die Kerne 401 und 402 den Zugriff auf Cache 410 höherer Ebene oder weiterer Entfernung, der kürzlich abgerufene Elemente im Cache speichern soll. Man beachte, dass höhere Ebene oder weitere Entfernung sich auf Cache-Ebenen beziehen, die ansteigen oder sich weiter von den Ausführungseinheiten entfernen. Bei einer Ausführungsform ist der Cache 410 höherer Ebene ein Last-Level-Daten-Cache - letzter Cache in der Speicherhierarchie auf dem Prozessor 400 - wie ein Daten-Cache zweiter oder dritter Ebene. Der Cache 410 höherer Ebene ist jedoch nicht diesbezüglich eingeschränkt, da er mit einem Anweisungs-Cache assoziiert sein oder diesen aufweisen kann. Ein Spuren-Cache - ein Typ von Anweisungs-Cache - kann stattdessen gekoppelt werden, nachdem der Decoder 425 kürzlich decodierte Spuren gespeichert hat.
  • Bei der dargestellten Konfiguration weist der Prozessor 400 auch ein Bus-Schnittstellenmodul 405 und eine Leistungssteuerung 460 auf, die Energiemanagement in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung durchführen kann. Bei diesem Szenario soll die Busschnittstelle 405 mit zum Prozessor 400 externen Einrichtungen kommunizieren, wie einen Systemspeicher und anderen Komponenten.
  • Eine Speichersteuerung 470 kann eine Verbindung mit anderen Einrichtungen wie einem oder mehreren Speichern herstellen. Bei einem Beispiel weist die Busschnittstelle 405 eine Ringverbindung mit einer Speichersteuerung zur Verbindung mit einem Speicher und eine Grafiksteuerung zur Verbindung mit einem Grafikprozessor auf. In einer SoC-Umgebung können noch mehr Einrichtungen auf einem einzelnen Die oder in einer integrierten Schaltung integriert sein, wie eine Netzschnittstelle, Coprozessoren, Speicher, ein Grafikprozessor und beliebige andere bekannte Rechnereinrichtungen/Schnittstellen, um einen kleinen Formfaktor bei hoher Funktionalität und niedrigem Stromverbrauch bereitzustellen.
  • Mit Bezug auf 5 wird ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Entsprechend der Darstellung in 5 kann der Prozessorkern 500 eine reihenfolgeveränderlicher Mehrstufen-Pipeline-Prozessor sein. Der Kern 500 kann bei verschiedenen Spannungen basierend auf einer empfangenen Betriebsspannung arbeiten, die von einem integrierten Spannungsregler oder externen Spannungsregler empfangen werden können.
  • Entsprechend der Darstellung in 5 weist der Kern 500 Frontend-Einheiten 510 auf, die zum Abruf von Anweisungen zur Ausführung und Vorbereitung für die spätere Verwendung in der Prozessor-Pipeline verwendet werden können, aufweisend eine hier beschriebene Anweisung zum Selbsttest vor Ort. Beispielsweise können Frontend-Einheiten 510 eine Abrufeinheit 501, einen Anweisungs-Cache 503 und einen Anweisungsdecoder 505 aufweisen. Bei einigen Implementierungen können die Frontend-Einheiten 510 ferner einen Spuren-Cache aufweisen, zusammen mit Mikrocodespeicherung sowie einer Mikrooperationsspeicherung. Die Abrufeinheit 501 kann Makroanweisungen abrufen, z. B. aus Speicher oder Anweisungs-Cache 503, und sie zum Anweisungsdecoder 505 führen, um sie in Primitive zu decodieren, d. h. Mikrooperationen zur Ausführung durch den Prozessor.
  • Gekoppelt zwischen Frontend-Einheiten 510 und Ausführungseinheiten 520 ist eine reihenfolgeveränderliche (OOO)-Maschine 515, die verwendet werden kann, um die Mikroanweisungen zu empfangen und sie zur Ausführung vorzubereiten. Insbesondere kann die OOO-Maschine 515 verschiedene Puffer aufweisen zum Umordnen des Mikroanweisungsflusses und zum Zuweisen verschiedener für die Ausführung benötigter Ressourcen sowie zum Bereitstellen des Umbenennens logischer Register auf Speicherpositionen mit verschiedenen Registerdateien wie der Registerdatei 530 und der erweiterten Registerdatei 535. Die Registerdatei 530 kann separate Registerdateien für Ganzzahl- und Gleitkommaoperationen aufweisen. Zu Zwecken der Konfiguration, Steuerung und für zusätzliche Operationen kann eine Gruppe maschinenspezifischer Register (MSR) 538 ebenfalls vorliegen und für verschiedene Logik im Kern 500 (und extern zum Kern) zugänglich sein. Beispielsweise kann Information zur Leistungsbeschränkung in einem oder mehreren MSR gespeichert sein und wie hier beschrieben dynamisch aktualisiert werden.
  • Verschiedene Ressourcen können in Ausführungseinheiten 520 vorliegen, aufweisend beispielsweise verschiedene logische Ganzzahl-, Gleitkomma- und „Single Instruction Multiple Data“ (SIMD)-Einheiten unter weiterer spezialisierter Hardware. Somit können Ausführungseinheiten eine oder mehrere arithmetische logische Einheiten (ALU) 522 und eine oder mehrere Vektorausführungseinheiten 524 unter weiteren derartigen Ausführungseinheiten aufweisen.
  • Resultate von den Ausführungseinheiten können zu Rückordnungslogik, und zwar zu einem Umordnungspuffer (ROB) 540, bereitgestellt werden. Im Einzelnen kann der ROB 540 verschiedene Arrays und Logik aufweisen, um mit Anweisungen, die ausgeführt werden, assoziierte Information zu empfangen. Diese Information wird anschließend durch den ROB 540 geprüft, um festzustellen, ob die Anweisungen gültig zurückgenommen werden können und Ergebnisdaten zum Architekturstatus des Prozessors übermittelt werden können oder ob eine oder mehrere Ausnahmen aufgetreten sind, die eine korrekte Rückordnung der Anweisungen verhindern. Selbstverständlich kann der ROB 540 weitere der Rücknahmeassoziierte Operationen handhaben.
  • Entsprechend der Darstellung in 5 ist der ROB 540 Mit einem cash 550 gekoppelt, der bei einer Ausführungsform ein Low-Level-Cache (z. B. ein L1-Cache) sein kann, obwohl der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist. Die Ausführungseinheiten 520 können auch direkt mit Cache 550 gekoppelt sein. Vom Cache 550 kann Datenkommunikation mit Caches höherer Ebene, Systemspeicher usw. erfolgen. Während diese hohe Ebene bei der Ausführungsform von 5 dargestellt ist, versteht es sich, dass der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist. Obwohl beispielsweise die Implementierung von 5 mit Bezug auf eine reihenfolgeveränderliche Maschine Wie zum Beispiel mit Intel® ×86 Befehlssatzarchitektur (ISA) Erfolgt, ist der Umfang der vorliegenden Erfindung diesbezüglich nicht eingeschränkt. D. h., dass andere Ausführungsformen in einem reihenfolgetreuen Prozessor, einem Prozessor mit Rechenvorgängen mit reduziertem Befehlssatz (RISC) wie einem ARM-basierten Prozessor oder einen Prozessor eines anderen ISA-Typs implementiert sein können, der Anweisungen und Operationen einer unterschiedlichen ISA über eine Emulationsmaschine und assoziierte Logikschaltung emulieren kann.
  • Mit Bezug auf 6 wird ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Bei der Ausführungsform von 6 kann der Kern 60 ein Energiespar-Kern einer unterschiedlichen Mikroarchitektur sein, wie z. B. ein Intel® Atom™-basierter Prozessor, aufweisend eine relativ beschränkte Pipeline-Tiefe, konzipiert zum Reduzieren des Energieverbrauchs. Entsprechend der Darstellung weist der Kern 600 einen Anweisungs-Cache 610 auf, gekoppelt zum Bereitstellen von Anweisungen zu einem Anweisungsdecoder 615, aufweisend eine Anweisung zum Selbsttest vor Ort wie hier beschrieben. Ein Verzweigung-Prädiktor 605 kann mit Anweisung-Cache 610 gekoppelt sein. Man beachte, dass Anweisung-Cache 610 ferner mit einer anderen Ebene eines Cache-Speichers gekoppelt sein kann, wie mit einem L2-Cache (zur einfacheren Veranschaulichung in 6). Der Anweisungsdecoder 615 stellt wiederum decodierte Anweisungen zu einer Ausgabe-Queue 620 zur Speicherung und Zustellung an eine gegebene Ausführungs-Pipeline bereit. Ein Mikrocode-ROM 618 ist mit dem Anwendungsdecoder 615 gekoppelt.
  • Eine Gleitkomma-Pipeline 630 weist eine Gleitkomma-Registerdatei 632 auf, die eine Mehrzahl von Architekturregistern eines gegebenen Bits mit beispielsweise 128, 256 oder 512 Bits aufweisen kann. Die Pipeline 630 weist einen Gleitkomma-Planer 634 zum Planen von Anweisungen zur Ausführung an einer von mehreren Ausführungseinheiten der Pipeline auf. Bei der gezeigten Ausführungsform weisen derartige Ausführungseinheiten eine ALU 635, eine Shuffle-Einheit 636 und einen Gleitkomma-Addierer 638 auf. In diesen Ausführungseinheiten erzeugte Ergebnisse können wiederum zurück zu Puffern und/oder Registern der Registerdatei 632 bereitgestellt werden. Es versteht sich, dass trotz der Wiedergabe mit diesen wenigen beispielhaften Ausführungseinheiten in einer anderen Ausführungsform zusätzliche oder unterschiedliche Gleitkomma-Ausführungseinheiten vorliegen können.
  • Eine Ganzzahl-Pipeline 640 kann ebenfalls bereitgestellt sein. Bei der gezeigten Ausführungsform weist die Pipeline 640 eine Ganzzahl-Registerdatei 642 auf, die eine Mehrzahl von Architekturregistern eines gegebenen Bits Mit beispielsweise 128 oder 256 Bits aufweisen kann. Die Pipeline 640 weist einen Ganzzahl-Planer 644 zum Planen von Anweisungen zur Ausführung an einer von mehreren Ausführungseinheiten der Pipeline auf. Bei der gezeigten Ausführungsform weisen derartige Ausführungseinheiten eine ALU 645, eine Shifter-Einheit 646 und eine Sprung-Ausführungseinheit 648 auf. In diesen Ausführungseinheiten erzeugte Ergebnisse können wiederum zurück zu Puffern und/oder Registern der Registerdatei 642 bereitgestellt werden. Es versteht sich, dass trotz der Wiedergabe mit diesen wenigen beispielhaften Ausführungseinheiten in einer anderen Ausführungsform zusätzliche oder unterschiedliche Ganzzahl-Ausführungseinheiten vorliegen können.
  • Ein Speicherausführungs-Planer 650 kann Speicheroperationen zur Ausführung in einer Adresserzeugungseinheit 652 planen, die ebenfalls mit einem TLB 654 gekoppelt ist. Wie ersichtlich ist, können diese Strukturen an einen Daten-Cache 660 koppeln, der ein L0- und/oder LI-Daten-Cache sein kann, der wiederum an zusätzliche Ebenen einer Cache-Speicherhierarchie, aufweisend einen L2-Cache-Speicher, koppelt.
  • Zum Bereitstellen von Unterstützung für reihenfolgeveränderliche Ausführung kann ein Verteiler/Umbenenner 670 zusätzlich zu einem Umordnungspuffer 680 bereitgestellt sein, der dafür ausgelegt ist, reihenfolgeveränderlich ausgeführte Anweisungen zur reihenfolgetreuen Rücknahme umzuordnen. Trotz der Darstellung mit dieser besonderen Pipeline-Architektur in 6 versteht es sich, dass viele Variationen und Alternativen möglich sind.
  • Man beachte, dass in einem Prozessor, der asymmetrische Kerne aufweist, wie in Übereinstimmung mit den Mikroarchitekturen aus 5 und 6, Arbeitslasten zwischen den Kernen aus Gründen des Energiemanagements getauscht werden können, da diese Kerne, obwohl sie unterschiedliche Pipeline-Designs und -Tiefen aufweisen, zu derselben oder einer verwandten ISA gehören können. Ein derartiges Kern-Tauschen kann auf eine für eine Benutzeranwendung (und möglicherweise auch einen Kernel) transparente Weise durchgeführt werden.
  • Mit Bezug auf 7 wird ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer weiteren Ausführungsform gezeigt. Entsprechend der Darstellung in 7 kann ein Kern 700 eine reihenfolgetreue Mehrstufen-Pipeline zur Ausführung mit sehr niedrigen Stromverbrauchsstufen aufweisen. Als diesbezügliches Beispiel kann der Prozessor 700 eine Mikroarchitektur entsprechend einem ARM-Cortex-A53-Design aufweisen, erhältlich von ARM HOLDINGS, LTD., Sunnyvale, US-Bundesstaat Kalifornien. Bei einer Implementierung kann eine 8-Stufen-Pipeline bereitgestellt sein, die ausgelegt ist zum Ausführen von sowohl 32-Bit- als auch 64-Bit-Code. Der Kern 700 weist eine Abrufeinheit 710 auf, die ausgelegt ist zum Abruf von Anweisungen, aufweisend eine Anweisung zum Selbsttest vor Ort wie hier beschrieben, und zu ihrer Bereitstellung zu einer Decodiereinheit 715, die die Anweisungen decodieren kann, z. B. Makroanweisungen einer gegebenen ISA wie einer ARMv8 ISA. Man beachte ferner, dass eine Queue 730 an die Decodiereinheit 715 koppeln kann, um decodierte Anweisungen zu speichern. Decodierte Anweisungen werden zu einer Ausgabelogik 725 bereitgestellt, wobei die decodierten Anweisungen zu einer gegebenen von mehreren Ausführungseinheiten ausgegeben werden können.
  • Wiederum mit Bezug auf 7 kann die Ausgabelogik 725 Anweisungen zu einer von mehreren Ausführungseinheiten ausgeben. Bei der dargestellten Ausführungsform weisen diese Ausführungseinheiten eine Ganzzahl-Einheit 735, eine Multiplizier-Einheit 740, eine Gleitkomma-/Vektoreinheit 750, eine duale Ausgabeeinheit 760 und eine Lade-/Speichereinheit 770 auf. Die Ergebnisse dieser unterschiedlichen Ausführungseinheiten können zu einer Rückschreibeinheit 780 bereitgestellt werden. Es versteht sich, dass, während zur einfacheren Darstellung eine einzelne Rückschreibeinheit gezeigt ist, bei einigen Implementierungen separate Rückschreibeinheiten mit jeder der Ausführungseinheiten assoziiert sein können. Ferner versteht es sich, dass, obwohl jede der in 7 gezeigten Einheiten und Logik auf einer höheren Ebene dargestellt ist, eine besondere Implementierung mehrere oder unterschiedliche Strukturen aufweisen kann. Ein unter Verwendung von einem oder mehreren Kernen konzipierter Prozessor wie in 7 kann in vielen unterschiedlichen Endprodukten implementiert sein, die von mobilen Einrichtungen bis zu Serversystemen reichen.
  • Mit Bezug auf 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer weiteren Ausführungsform gezeigt. Entsprechend der Darstellung in 8 kann ein Kern 800 eine reihenfolgeveränderliche mehrstufige Mehrfachausgabe-Pipeline zur Ausführung mit sehr hohen Performanzstufen aufweisen (die mit höheren Energieverbrauchsstufen als bei Kern 700 aus 7). Als diesbezügliches Beispiel kann der Prozessor 800 eine Mikroarchitektur entsprechend einem ARM-Cortex-A57-Design aufweisen. Bei einer Implementierung kann eine 15-stufige (oder größere) Pipeline bereitgestellt sein, die ausgelegt ist zum Ausführen von sowohl 32-Bit- als auch 64-Bit-Code. Zusätzlich kann die Pipeline Betrieb mit 3-facher Breite (oder größer) und 3-facher Ausgabe (oder größer) bereitstellen. Der Kern 800 umfasst eine Abrufeinheit 810, die ausgelegt ist zum Abruf von Anweisungen, aufweisend eine Anweisung zum Selbsttest vor Ort wie hier beschrieben, und zu ihrer Bereitstellung zu einem Decoder/Umbenenner/Dispatcher 815, der die Anweisungen decodieren kann, z. B. Makroanweisungen einer ARMv8 Befehlssatzarchitektur, Registerverweise in den Anweisungen umbenennen kann und die Anweisungen (abschließend) zu einer ausgewählten Ausführungseinheit zustellen kann. Decodierte Anweisungen können in einer Queue 825 gespeichert werden. Es versteht sich, dass, obwohl zur einfacheren Darstellung in 8 eine einzelne Queue-Struktur gezeigt ist, separate Queues für jede der mehreren unterschiedlichen Typen von Ausführungseinheiten bereitgestellt sein können.
  • Ebenfalls in 8 gezeigt ist eine Ausgabelogik 830, aus der in der Queue 825 gespeicherte decodierte Anweisungen zu einer ausgewählten Ausführungseinheit ausgegeben werden können. Die Ausgabelogik 830 kann auch in einer besonderen Ausführungsform mit einer separaten Ausgabelogik für jede der mehreren unterschiedlichen Typen von Ausführungseinheiten, an die die Ausgabelogik 830 koppelt, implementiert sein.
  • Decodierte Anweisungen können zu einer gegebenen von mehreren Ausführungseinheiten ausgegeben werden. Bei der dargestellten Ausführungsform weisen diese Ausführungseinheiten eine oder mehrere Ganzzahl-Einheiten 835, eine Multiplizier-Einheit 840, eine Gleitkomma-/Vektoreinheit 850, eine Verzweigungseinheit 860, und eine Lade-/Speichereinheit 870 auf. Bei einer Ausführungsform kann die Gleitkomma-/Vektoreinheit 850 zum Handhaben von SIMD- oder Vektordaten mit 128 oder 256 Bits ausgelegt sein. Zudem kann die Gleitkomma-/Vektor-Ausführungseinheit 850 Gleitkommaoperationen mit doppelter Genauigkeit nach IEEE-754 durchführen. Die Ergebnisse dieser unterschiedlichen Ausführungseinheiten können zu einer Rückschreibeinheit 880 bereitgestellt werden. Man beachte, dass bei einigen Implementierungen separate Rückschreibeinheiten mit jeder der Ausführungseinheiten assoziiert sein können. Ferner versteht es sich, dass, obwohl jede der in 8 gezeigten Einheiten und Logik auf einer höheren Ebene dargestellt ist, eine besondere Implementierung mehrere oder unterschiedliche Strukturen aufweisen kann.
  • Man beachte, dass in einem Prozessor, der asymmetrische Kerne aufweist, wie in Übereinstimmung mit den Mikroarchitekturen aus 7 und 8, Arbeitslasten aus Gründen des Energiemanagements dynamisch getauscht werden können, da diese Kerne, obwohl sie unterschiedliche Pipeline-Designs und -Tiefen aufweisen, zu der gleichen oder einer verwandten ISA gehören können. Ein derartiges Kern-Tauschen kann auf eine für eine Benutzeranwendung (und möglicherweise auch einen Kernel) transparente Weise durchgeführt werden.
  • Ein unter Verwendung von einem oder mehreren Pipelines aufweisenden Kernen konzipierter Prozessor wie in 5-8 kann in vielen unterschiedlichen Endprodukten implementiert sein, die von mobilen Einrichtungen bis zu Serversystemen reichen. Mit Bezug auf 9 ist ein Blockdiagramm eines Prozessors gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Bei der Ausführungsform von 9 kann der Prozessor 900 ein mehrere Domänen aufweisendes SoC sein, von denen jede gesteuert werden kann, um mit einer unabhängigen Betriebsspannung und Betriebsfrequenz zu arbeiten. Als spezifisches veranschaulichendes Beispiel kann der Prozessor 900 ein auf dem Intel® Architecture Core™ basierter Prozessor wie ein i3, i5, i7 oder ein anderer derartiger Prozessor sein, der von der Intel Corporation erhältlich ist. Andere Prozessoren mit geringem Leistungsbedarf, wie beispielsweise erhältlich von Advanced Micro Devices, Inc. (ARM) aus Sunnyvale, US-Bundesstaat Kalifornien, ein ARM-basiertes Design von ARM Holdings, Ltd. oder deren Lizenznehmern oder ein MIPSbasiertes Design von MIPS Technologies, Inc. aus Sunnyvale, US-Bundesstaat Kalifornien, oder deren Lizenznehmern oder Anwendern kann jedoch stattdessen bei anderen Ausführungsformen vorliegen, wie einem Apple A7-Prozessor, einem Qualcomm Snapdragon-Prozessor oder einem Texas Instruments OMAP-Prozessor. Ein derartiges SoC kann in einem System mit geringem Leistungsbedarf verwendet werden, wie einem Smartphone, Tablet-Rechner, Phablet-Rechner, Ultrabook™-Rechner oder einer anderen portablen Recheneinrichtung oder einem Fahrzeug-Rechensystem.
  • Bei der Ansicht der höheren Ebene, gezeigt in 9 weist ein Prozessor 900 eine Mehrzahl von Kerneinheiten 9100 -910n auf. Jede Kerneinheit kann einen oder mehrere Prozessorkerne, einen oder mehrere Cache-Speicher und weitere Schaltung aufweisen. Jede Kerneinheit 910 kann einen oder mehrere Befehlssätze unterstützen (z. B. einen x86-Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt worden sind); einen MIPS-Befehlssatz; einen ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen wie NEON)) oder einen anderen Befehlssatz oder Kombinationen daraus. Man beachte, dass einige der Kerneinheiten heterogene Ressourcen (z. B. mit unterschiedlichem Design) sein können. Zusätzlich kann jeder derartige Kern mit einem Cache-Speicher (nicht gezeigt) gekoppelt sein, der bei einer Ausführungsform ein Cache-Speicher mit geteilter Ebene (L2) sein kann. Ein nichtflüchtiger Speicher 930 kann verwendet werden, um verschiedene Programm- und andere Daten zu speichern. Beispielsweise kann diese Speicherung verwendet werden, um mindestens Teile von Mikrocode, Boot-Information wie einen BIOS, andere Systemsoftware, Testmuster für den hier beschriebenen diagnostischen Selbsttest usw. zu speichern.
  • Jede Kerneinheit 910 kann auch eine Schnittstelle aufweisen wie eine Bus-Schnittstelleneinheit, um eine Verbindung zu zusätzlicher Schaltung des Prozessors zu ermöglichen. Bei einer Ausführungsform koppelt jede Kerneinheit 910 an eine kohärente Struktur, die als primäre Cache-kohärente Auf-dem-Die-Verbindung wirkt, die wiederum an eine Speichersteuerung 935 koppelt. Wie hier ebenfalls beschrieben ist, kann jede Kerneinheit 910 eine Postfach-Schnittstelle aufweisen, um Interaktion mit einer dazugehörigen Kern-Umfangslogik zu ermöglichen (in 9 nicht spezifisch gezeigt), um erweiterte Kommunikation zu ermöglichen und neben anderen Funktionen effizienten Eintritt in Energiesparzustände und deren Verlassen bereitzustellen. Die Speichersteuerung 935 steuert wiederum die Kommunikation mit einem Speicher wie einem DRAM (zur einfacheren Darstellung in 9).
  • Zusätzlich zu Kerneinheiten liegen zusätzliche Verarbeitungsmaschinen im Prozessor vor, aufweisend mindestens eine Grafikeinheit 920, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) Aufweisen kann, um Grafikverarbeitung durchzuführen, sowie um möglicherweise Operationen allgemeiner Zwecke auf dem Grafikprozessor auszuführen (sogenannte GPGPU-Operation). Zusätzlich kann mindestens ein Bildsignalprozessor 925 vorliegen. Der Signal Prozessor 925 kann ausgelegt sein zum Verarbeiten eingehender Bilddaten, empfangen von einer oder mehreren Erfassungseinrichtungen entweder SoC-intern oder Off-Chip.
  • Andere Beschleuniger können ebenfalls vorliegen. Bei der Darstellung von 9 kann ein Videocodierer 950 Codieroperationen durchführen, aufweisend Codieren und Decodieren für Video-Information, z. B. das Bereitstellen von Hardware-Beschleunigungsunterstützung für Videoinhalt in hoher Definition. Eine Anzeigesteuerung 955 kann ferner bereitgestellt sein, um Anzeigeoperationen zu beschleunigen, aufweisend das Bereitstellen von Unterstützung für interne und externe Anzeigen eines Systems. Zusätzlich kann ein Sicherheitsprozessor 945 vorliegen, um Sicherheitsoperationen durchzuführen wie sichere Boot-Operationen, verschiedene Kryptograpfieoperationen usw.
  • Für jede der Einheiten kann ihr Energieverbrauch über einen Energiemanager 940 gesteuert werden, der Steuerungslogik aufweisen kann, um die verschiedenen hier beschriebenen Energiemanagementtechniken durchzuführen, aufweisend die Steuerung von Selbsttests von Kernen vor Ort während eines diagnostischen Ruhezustands.
  • Bei einigen Ausführungsformen kann das SoC 900 ferner eine nicht kohärente Struktur aufweisen, gekoppelt mit der kohärenten Struktur, an die verschiedene Peripherieeinrichtungen koppeln können. Eine oder mehrere Schnittstellen 960a-960d ermöglichen die Kommunikation mit einer oder mehreren Off-Chip-Einrichtungen. Derartige Kommunikation kann über eine Vielfalt von Kommunikationsprotokollen erfolgen, wie, unter anderen Typen von Kommunikationsprotokollen, PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI. Ungeachtet der Darstellung auf dieser höheren Ebene bei der Ausführungsform aus 9 versteht es sich, dass der Umfang der vorliegenden Erfindung diesbezüglich nicht eingeschränkt ist.
  • Mit Bezug auf 10 ist ein Blockdiagramm eines repräsentativen SoC gezeigt. Bei der gezeigten Ausführungsform kann das SoC 1000 ein Mehrkern-SoC sein, ausgelegt für Betrieb mit geringer Leistung zur Optimierung für die Eingliederung in ein Smartphone oder eine andere Einrichtung mit geringer Leistung, wie einen Tablet-Rechner oder eine andere portable Recheneinrichtung oder ein Fahrzeug-Rechensystem. Als Beispiel kann das SoC 1000 unter Verwendung asymmetrischer oder unterschiedlicher Typen von Kernen implementiert sein, wie Kombinationen von Kernen mit höherer Leistung und/oder niedriger Leistung, z. B. reihenfolgeveränderlichen und reihenfolgetreuen Kernen. Bei unterschiedlichen Ausführungsformen können diese Kerne auf dem Intel® Architecture™ Kern-Design oder einem ARM-Architekturdesign basieren. Bei noch weiteren Ausführungsformen kann ein einem gegebenen SoC eine Mischung von Intel- und ARM-Kernen implementiert sein.
  • Entsprechend der Darstellung in 10 weist das SoC 1000 eine erste Kerndomäne 1010 auf, aufweisend eine Mehrzahl von ersten Kernen 10120 - 10123 . Bei einem Beispiel können diese Kerne Energiesparkerne sein wie reihenfolgetreue Kerne, die sich über eine Postfach-Schnittstelle wie hier beschrieben mit entsprechender Kern-Umfangslogik verbinden können. Bei einer Ausführungsform können diese ersten Kerne als ARM-Cortex-A53-Kerne implementiert sein. Diese Kerne koppeln wiederum an einen Cache-Speicher 1015 der Kerndomäne 1010. Zusätzlich weist das SoC 1000 eine zweite Kerndomäne 1020 auf. Bei der Darstellung von 10 weist die zweite Kerndomäne 1020 eine Mehrzahl von zweiten Kernen 10220 - 10223 auf. Bei einem Beispiel können diese Kerne einen höheren Leistungsverbrauch aufweisen als erste Kerne 1012. Bei einer Ausführungsform können die zweiten Kerne reihenfolgeveränderliche Kerne sein, die als ARM-Cortex-A57-Kerne implementiert sein können. Diese Kerne koppeln wiederum an einen Cache-Speicher 1025 der Kerndomäne 1020. Man beachte, dass, während das in 10 gezeigte Beispiel 4 Kerne in jeder Domäne aufweist, Bei anderen Beispielen selbstverständlich mehr oder weniger Kerne in einer gegebenen Domäne vorliegen können.
  • Wiederum mit Bezug auf 10 ist auch eine Grafikdomäne 1030 bereitgestellt, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) aufweisen kann, ausgelegt zum unabhängigen Ausführen von Grafik-Arbeitslasten, z. B. durch einen oder mehrere Kerne der Kerndomänen 1010 und 1020. Als ein Beispiel kann die CPU-Domäne 1030 verwendet werden, um Anzeigeunterstützung für eine Vielfalt von Bildschirmgrößen bereitzustellen, zusätzlich zum Bereitstellen von Grafik- und Anzeige-Rendering-Operationen.
  • Wie ersichtlich ist, koppeln die verschiedenen Domänen an eine kohärente Verbindung 1040, die bei einer Ausführungsform eine Cache-kohärente Verbindungsstruktur sein kann, die wiederum an eine integrierte Speicherschaltung 1050 koppelt. Die kohärente Verbindung 1040 kann bei einigen Beispielen einen geteilten Cache-Speicher aufweisen, wie einen L3-Cache. Bei einer Ausführungsform kann die Speichersteuerung 1050 eine direkte Speichersteuerung sein, um mehrere Kommunikationskanäle mit einem Off-Chip-Speicher bereitzustellen, wie mehrere Kanäle eines DRAM (nicht gezeigt zur einfacheren Darstellung in 10).
  • Bei unterschiedlichen Beispielen kann die Anzahl der Kerndomänen variieren. Beispielsweise kann für ein SoC mit niedriger Leistung, geeignet zur Eingliederung in eine mobile Recheneinrichtung, eine beschränkte Anzahl von Kerndomänen entsprechend der Darstellung in 10 vorliegen. Zudem kann bei derartigen SoCs die Kerne mit höherer Leistung aufweisende Kerndomäne 1020 geringere Anzahlen derartiger Kerne aufweisen. Beispielsweise können bei einer Implementierung zwei Kerne 1022 bereitgestellt sein, um den Betrieb mit reduzierten Energieverbrauchsstufen zu ermöglichen. Zusätzlich können die unterschiedlichen Kerndomänen auch mit einer Interrupt-Steuerung gekoppelt sein, um dynamisches Tauschen von Arbeitslasten zwischen den unterschiedlichen Domänen zu ermöglichen.
  • Bei noch weiteren Ausführungsformen kann eine größere Anzahl von Kerndomänen sowie von zusätzlicher optionaler IP-Logik vorliegen, sodass ein SoC auf höhere Performanz- (und Strom-)Stufen zur Eingliederung in andere Recheneinrichtungen skaliert werden kann, wie z. B. Desktops, Server, Hochleistungsrechensysteme, Basisstationen usw. Bei einem derartigen Beispiel können 4 Kerndomänen bereitgestellt sein, die jeweils eine gegebene Anzahl von reihenfolgeveränderlichen Kernen aufweisen. Zudem können zusätzlich zu optionaler GPU-Unterstützung (die beispielsweise die Form einer GPGPU annehmen kann) auch ein oder mehrere Beschleuniger bereitgestellt sein, um optimierte Hardware Unterstützung für besondere Funktionen bereitzustellen (z. B. Web-Serving, Netzverarbeitung, Schalten usw.). Zusätzlich kann eine Eingabe-/Ausgabe-Schnittstelle vorliegen, um derartige Beschleuniger an Off-Chip-Komponenten zu koppeln.
  • Mit Bezug auf 11 ist ein Blockdiagramm eines weiteren beispielhaften SoC gezeigt. Bei der Ausführungsform von 11 kann das SoC 1100 verschiedene Schaltung aufweisen, um hohe Leistung für Multimedia-Anwendungen, Kommunikation und andere Funktionen zu ermöglichen. Somit ist das SoC 1100 geeignet zur Eingliederung in eine breite Vielfalt von portablen und anderen Einrichtungen, wie Smartphones, Tablet-Rechnern, Smart TVs, Fahrzeug-Rechensystemen usw. Bei dem gezeigten Beispiel weist das SoC 1100 eine zentrale Prozessoreinheit-(CPU)-Domäne 1110 auf. Bei einer Ausführungsform kann eine Mehrzahl von individuellen Prozessorkernen in der CPU-Domäne 1110 vorliegen. Als ein Beispiel kann die CPU-Domäne 1110 ein Vierkern-Prozessor sein, aufweisend 4 Multi-Thread-Kerne. Derartige Prozessoren können homogene oder heterogene Prozessoren sein, z. B. eine Mischung aus Prozessorkernen niedriger Leistung und hoher Leistung.
  • Eine GPU-Domäne 1120 ist wiederum bereitgestellt, um erweiterte Grafikverarbeitung in einer oder mehreren GPUs zum Handhaben von Grafik und Berechnen von APIs durchzuführen. Eine DSP-Einheit 1130 kann einen oder mehrere DSPs geringer Leistung zum Handhaben von Multimedia-Anwendungen mit geringem Leistungsbedarf wie Musikwiedergabe, Audio/Video usw. zusätzlich zu erweiterten Berechnungen, die bei der Ausführung von Multimediaanweisungen auftreten können, bereitstellen. Eine Kommunikationseinheit 1140 kann wiederum verschiedene Komponenten aufweisen, um Konnektivität über verschiedene drahtlose Protokolle bereitzustellen, wie zelluläre Kommunikation (aufweisend 3G/4G LTE), drahtlose lokale Protokolle wie Bluetooth™, IEEE 802.11 usw.
  • Zudem kann ein Multimedia-Prozessor 1150 eingesetzt werden, um Erfassung und Wiedergabe von Video- und Audio-Inhalt in hoher Definition durchzuführen, aufweisend die Verarbeitung von Benutzergesten. Eine Sensoreinheit 1160 kann eine Mehrzahl von Sensoren und/oder eine Sensorsteuerung zum Verbinden mit verschiedenen in einer gegebenen Plattform vorliegenden Off-Chip-Sensoren aufweisen. Ein Bildsignalprozessor 1170 kann mit einem oder mehreren separaten ISPs bereitgestellt sein, um Bildverarbeitung mit Bezug auf erfassten Inhalt von einer oder mehreren Kameras einer Plattform, aufweisend Standbild- und Videokameras, durchzuführen.
  • Ein Anzeigeprozessor 1180 kann Unterstützung zur Verbindung mit einer Anzeige mit hoher Auflösung und einer gegebenen Pixeldichte bereitstellen, aufweisend die Fähigkeit zum drahtlosen Kommunizieren von Inhalt zur Wiedergabe auf der betreffenden Anzeige. Zudem kann eine Positionseinheit 1190 einen GPS-Empfänger mit Unterstützung für mehrere GPS-Konstellationen aufweisen, um für Anwendungen sehr akkurate Positionierungsinformation bereitzustellen, erhalten unter Verwendung eines derartigen GPS-Empfängers. Es versteht sich, dass trotz der Darstellung mit dieser besonderen Gruppe von Komponenten bei dem Beispiel aus 11 viele Variationen und Alternativen möglich sind.
  • Mit Bezug auf 12 ist ein Blockdiagramm eines beispielhaften Systems gezeigt, bei dem Ausführungsformen verwendet werden können. Wie ersichtlich ist, kann das System 1200 ein Smartphone oder ein anderer drahtloser Kommunikator sein. Ein Basisband-Prozessor 1205 ist ausgelegt zum Durchführen verschiedener Signalverarbeitung mit Bezug auf Kommunikationssignale zum Senden oder Empfangen durch das System. Der Basisband-Prozessor 1205 ist wiederum mit einem Anwendungsprozessor 1210 gekoppelt, der eine Haupt-CPU des Systems zum Ausführen eines OS und anderer Systemsoftware ist, zusätzlich zu Benutzeranwendungen wie vielen bereits bekannten Social-Media- und Multimedia-Apps. Der Anwendungsprozessor 1210 kann ferner ausgelegt sein zum Durchführen einer Vielzahl anderer Rechenoperationen für die Einrichtung.
  • Der Anwendungsprozessor 1210 kann wiederum an eine Benutzerschnittstelle/Anzeige 1220 koppeln, z. B. an eine Touchscreen-Anzeige. Zusätzlich kann der Anwendungsprozessor 1210 an ein Speichersystem koppeln, aufweisend einen nichtflüchtigen Speicher, und zwar einen Flash-Speicher 1230, und einen Systemspeicher, und zwar einen dynamischen Direktzugriffsspeicher (DRAM) 1235. Wie ferner ersichtlich ist, koppelt der Anwendungsprozessor 1210 ferner an eine Erfassungseinrichtung 1240, wie z. B. eine oder mehrere Bilderfassungseinrichtungen, die Video- und/oder Standbilder aufzeichnen können.
  • Weiterhin mit Bezug auf 12 ist eine universelle integrierte Schaltungskarte (UICC) 1240, umfassend ein Teilnehmer-Identitätsmodul und möglicherweise einen sicheren Speicher- und Krypto-Prozessor ebenfalls mit dem Anwendungsprozessor 1210 gekoppelt. Das System 1200 kann ferner einen Sicherheitsprozessor 1250 aufweisen, der an den Anwendungsprozessor 1210 koppeln kann. Eine Mehrzahl von Sensoren 1225 kann an den Anwendungsprozessor 1210 koppeln, um die Eingabe einer Vielfalt von abgetasteter Information wie Beschleunigungsmesser- und anderer Umgebungsinformation zu ermöglichen. Eine Audio-Ausgabeeinrichtung 1295 kann eine Schnittstelle zur Ausgabe von Ton bereitstellen, z. B. in Form von Sprachkommunikation, abgespielten oder Streaming-Audiodaten usw.
  • Wie ferner dargestellt, ist eine kontaktlose Schnittstelle 1260 zur Nahfeldkommunikation (NFC) bereitgestellt, die in einem NFC-Nahfeld über eine NFC-Antenne 1265 kommuniziert. Während in 12 separate Antennen gezeigt sind, versteht es sich, dass bei einigen Implementierungen eine Antenne oder eine unterschiedliche Antennengruppe bereitgestellt sein kann, um verschiedene drahtlose Funktionalität zu ermöglichen.
  • Eine integrierte Schaltung zum Leistungsmanagement (PMIC) 1215 koppelt an den Anwendungsprozessor 1210, um Energiemanagement auf Plattformebene durchzuführen. Zu diesem Zweck kann die PMIC 1215 Energieverwaltungsanforderungen an den Anwendungsprozessor 1210 ausgeben, um nach Bedarf in bestimmte Energiesparzustände einzutreten. Basierend auf Plattformbeschränkungen kann die PMIC 1215 ferner auch die Leistungsebene anderer Komponenten des Systems 1200 steuern.
  • Zum Aktivieren der zu sendenden und zu empfangenden Kommunikationen kann verschiedene Schaltung zwischen dem Basisband-Prozessor 1205 und einer Antenne 1290 gekoppelt sein. Insbesondere können ein Hochfrequenz-(RF)-Sendeempfänger 1270 und ein WLAN-Sendeempfänger 1275 eines drahtlosen lokalen Netzes vorliegen. Generell kann der RF-Sendeempfänger 1270 verwendet werden, um drahtlose Daten und Anrufe entsprechend einem gegebenen drahtlosen Kommunikationsprotokoll zu empfangen und zu senden, wie z. B. dem drahtlosen 3G- oder 4G-Kommunikationsprotokoll, z. B. in Übereinstimmung mit einem Codemultiplexverfahren (CDMA), dem globalen System für mobile Kommunikation (GSM), Long Term Evolution (LTE) oder einem anderen Protokoll. Zusätzlich kann ein GPS-Sensor 1280 vorliegen. Weitere drahtlose Kommunikation wie das Empfangen oder Senden von Funksignalen, z. B. AM/FM und sonstige Signale, können ebenfalls bereitgestellt sein. Zusätzlich kann über den WLAN-Sendeempfänger 1275 lokale drahtlose Kommunikation umgesetzt werden.
  • Mit Bezug auf 13 ist ein Blockdiagramm eines weiteren beispielhaften Systems gezeigt, bei dem Ausführungsformen eingesetzt werden können. Bei der Darstellung von 13 kann das System 1300 ein mobiles System mit geringer Leistung sein, wie ein Tablet-Rechner, 2-in-1-Tablet, Phablet oder ein anderes unwandelbares oder Stand-alone-Tablet-System. Entsprechend der Darstellung liegt das SoC 1310 vor und kann ausgelegt sein zum Betrieb als ein Anwendungsprozessor für die Einrichtung.
  • Eine Vielfalt von Einrichtungen kann an das SoC 1310 koppeln. Bei der gezeigten Darstellung weist ein Speicher-Subsystem einen Flash-Speicher 1340 und einen DRAM 1345 auf, gekoppelt an das SoC 1310. Zusätzlich ist ein berührungssensibles Panel 1320 mit dem SoC 1310 gekoppelt, um Anzeigefähigkeit und Benutzereingabe mittels Berührung bereitzustellen, aufweisend das Bereitstellen einer virtuellen Tastatur auf einer Anzeige des berührungssensiblen Panels 1320. Zum Bereitstellen drahtloser Netzkonnektivität koppelt das SoC 1310 an eine Ethernet-Schnittstelle 1330. Ein Peripherie-Hub 1325 ist an das SoC 1310 gekoppelt, um die Verbindung mit verschiedenen Peripherieeinrichtungen zu ermöglichen, die beispielsweise mit dem System 1300 über beliebige verschiedene Anschlüsse oder andere Verbinder gekoppelt sein können.
  • Zusätzlich zu interner Energiemanagementschaltung und Funktionalität im SoC 1310 ist eine PMIC 1380 mit dem SoC 1310 gekoppelt, um plattformbasiertes Leistungsmanagement bereitzustellen, z. B. basierend darauf, ob das System durch eine Batterie 1390 oder AC-Strom über einen AC-Adapter 1395 versorgt wird. Zusätzlich zu diesem Energiequellen-basierten Leistungsmanagement kann die PMIC 1380 ferner Plattform-Energiemanagement-Aktivitäten basierend auf Umgebungs- und Nutzungsbedingungen durchführen. Zudem kann die PMIC 1380 Steuerungs- und Statusinformation zum SoC 1310 kommunizieren, um verschiedene Leistungsmanagement-Vorgänge im SoC 1310 zu bewirken.
  • Wiederum mit Bezug auf 13 ist eine WLAN-Einheit 1350 zum Bereitstellen drahtloser Fähigkeiten mit dem SoC 1310 und wiederum mit einer Antenne 1355 gekoppelt. Bei verschiedenen Implementierungen kann die WLAN-Einheit 1350 Kommunikation gemäß einem oder mehreren drahtlosen Protokollen bereitstellen.
  • Wie ferner dargestellt ist, kann eine Mehrzahl von Sensoren 1360 an das SoC 1310 koppeln. Diese Sensoren können verschiedene Beschleunigungsmesser, Umgebungs- und sonstige Sensoren umfassen, aufweisend Benutzergestensensoren. Schließlich ist ein Audio-Codec 1365 mit dem SoC 1310 gekoppelt, um eine Schnittstelle zu einer Audio-Ausgabeeinrichtung 1370 bereitzustellen. Es versteht sich, dass ungeachtet der Darstellung mit dieser besonderen Implementierung in 13 viele Variationen und Alternativen möglich sind.
  • Mit Bezug auf 14 ist ein Blockdiagramm eines repräsentativen Rechnersystems, wie eines Notebooks, Ultrabooks™ oder eines anderen Systems mit kleinem Formfaktor gezeigt. Ein Prozessor 1410 weist bei einer Ausführungsform einen Mikroprozessor, einen Mehrkern-Prozessor, einen Multi-Thread-Prozessor, einen Prozessor mit ultraniedriger Spannung, einen eingebetteten Prozessor oder ein anderes bekanntes Verarbeitungselement auf. Bei der dargestellten Implementierung wirkt der Prozessor 1410 als eine Haupt-Verarbeitungseinheit und als zentraler Hub für die Kommunikation mit vielen der verschiedenen Komponenten des Systems 1400. Als ein Beispiel ist der Prozessor 1400 als SoC implementiert.
  • Der Prozessor 1410 kommuniziert bei einer Ausführungsform mit einem Systemspeicher 1415. Als veranschaulichendes Beispiel ist der Systemspeicher 1415 über mehrere Speichereinrichtungen oder Module implementiert, um einen gegebenen Umfang von Systemspeicher bereitzustellen.
  • Zum Bereitstellen persistenter Speicherung von Information wie Daten, Anwendungen, einem oder mehreren Betriebssystemen usw. kann ein Massenspeicher 1420 auch an den Prozessor 1410 koppeln. Bei verschiedenen Ausführungsformen kann dieser Massenspeicher zum Ermöglichen eines dünneren und leichteren Systemdesigns sowie zur Verbesserung des Ansprechverhaltens des Systems über eine SSD implementiert sein, oder der Massenspeicher kann primär unter Verwendung eines Festplattenlaufwerks (HDD) mit einem geringeren Umfang von SSD-Speicherung implementiert sein, um als ein SSD-Cache zu wirken, um nichtflüchtige Speicherung von Kontextzustand und anderer derartiger Information während Abschaltereignissen zu ermöglichen, sodass bei Neuinitialisierung von Systemaktivitäten ein schnelleres Einschalten erfolgen kann. Ebenfalls gezeigt in 14, kann eine Flash-Einrichtung 1422 mit dem Prozessor 1410 gekoppelt sein, z. B. über eine serielle Peripherieschnittstelle (SPI). Diese Flash-Einrichtung kann nichtflüchtige Speicherung von Systemsoftware bereitstellen, aufweisend eine Basis-Eingangs-/Ausgangs-Software (BIOS) sowie weitere Firmware des Systems.
  • Verschiedene Eingabe-/Ausgabe-(E/A)-Einrichtungen können im System 1400 vorliegen. Spezifisch gezeigt bei der Ausführungsform von 14 ist eine Anzeige 1424, die ein LCD- oder LED-Panel mit hoher Definition sein kann, das ferner einen berührungssensiblen Bildschirm 1425 bereitstellt. Bei einer Ausführungsform kann die Anzeige 1424 über eine Anzeigeverbindung mit dem Prozessor 1410 gekoppelt sein, die als Hochleistungs-Grafikverbindung implementiert sein kann. Der berührungssensible Bildschirm 1425 kann mit dem Prozessor 1410 über eine andere Verbindung gekoppelt sein, die bei einer Ausführungsform eine I2C-Verbindung sein kann. Wie ferner in 14 dargestellt ist, kann zusätzlich zum berührungssensiblen Bildschirm 1425 Benutzereingabe mittels Berührung auch über ein berührungssensibles Feld 1430 erfolgen, dass im Gehäuse untergebracht sein kann und das auch mit der gleichen I2C-Verbindung wie der berührungssensible Bildschirm 1425 gekoppelt sein kann.
  • Für perzeptives Computing und andere Zwecke können verschiedene Sensoren im System vorliegen, und sie können auf unterschiedliche Weisen mit dem Prozessor 1410 gekoppelt sein. Bestimmte Trägheits- und Umgebungssensoren können an den Prozessor 1410 über einen Sensor-Hub 1440 koppeln, z. B. über eine I2C-Verbindung. Bei der in 14 gezeigten Ausführungsform können diese Sensoren einen Beschleunigungsmesser 1441, einen Umgebungslichtsensor (ALS) 1442, einen Kompass 1443 und ein Gyroskop 1444 aufweisen. Andere Umgebungssensoren können einen oder mehrere thermische Sensoren 1446 aufweisen, die bei einigen Ausführungsformen über einen Systemmanagement-Bus (SMBus) an den Prozessor 1410 koppeln.
  • Ebenfalls gezeigt in 14 können verschiedene Peripherieeinrichtungen über eine Verbindung mit geringer Stiftzahl (LPC) an den Prozessor 1410 koppeln. Bei der gezeigten Ausführungsform können verschiedene Komponenten durch eine eingebettete Steuerung 1435 gekoppelt werden. Derartige Komponenten können eine Tastatur 1436 aufweisen (z. B. über eine PS2-Schnittstelle gekoppelt), einen Ventilator 1437 und einen thermischen Sensor 1439. Bei einigen Ausführungsformen kann das berührungssensible Feld 1430 auch über eine PS2-Schnittstelle an die EC 1435 koppeln. Zusätzlich kann ein Sicherheitsprozessor wie ein vertrauenswürdiges Plattformmodul (TPM) 1438 ebenfalls über diese PPC-Verbindung an den Prozessor 1410 koppeln.
  • Das System 1400 kann auf vielfältige Weise, einschließlich drahtlos, mit externen Einrichtungen kommunizieren. Bei der in 14 gezeigten Ausführungsform liegen verschiedene drahtlose Module vor, von denen jedes einer für ein besonderes drahtloses Kommunikationsprotokoll ausgelegten Funkeinrichtung entsprechen kann. Eine Art der drahtlosen Kommunikation in einem kurzen Bereich wie einem Nahfeld kann über eine NFC-Einheit 1445 erfolgen, die bei einer Ausführungsform über einen SMBus mit dem Prozessor 1410 kommunizieren kann. Man beachte, dass über diese NFC-Einheit 1445 Einrichtungen in enger Nähe zueinander kommunizieren können.
  • Wie ferner in 14 ersichtlich ist, können zusätzliche drahtlose Einheiten andere drahtlose Kurzbereichmaschinen umfassen, die eine WLAN-Einheit 1450 und eine Bluetooth-Einheit 1452 aufweisen. Unter Verwendung der WLAN-Einheit 1450 kann Wi-Fi™ Kommunikation umgesetzt werden, während Kurzbereich-Bluetooth™-Kommunikation über die Bluetooth-Einheit 1452 erfolgen kann. Diese Einheiten können über eine gegebene Verbindung mit dem Prozessor 1410 kommunizieren.
  • Zusätzlich kann drahtlose Weitverkehrskommunikation, z. B. gemäß einem zellulären oder anderen drahtlosen Weitverkehrsprotokoll, über eine WWAN-Einheit 1456 erfolgen, die wiederum an ein Teilnehmer-Identitätsmodul (SIM) 1457 koppeln kann. Um Empfang und Verwendung von Positionsinformation zu aktivieren, kann zusätzlich ein GPS-Modul 1455 vorliegen. Man beachte, dass bei der in 14 gezeigten Ausführungsform die WWAN-Einheit 1456 und eine integrierte Erfassungseinrichtung wie ein Kameramodul 1454 über eine gegebene Verbindung kommunizieren können.
  • Ein integriertes Kameramodul 1454 kann im Deckel eingebaut sein. Zum Bereitstellen von Audio-Eingaben und -Ausgaben kann ein Audio-Prozessor über einen digitalen Signalprozessor (DSP) 1460 implementiert sein, der über eine Audioverbindung in hoher Definition (HDA) an den Prozessor 1410 gekoppelt sein kann. In ähnlicher Weise kann der DSP 1460 mit einem integrierten Codierer/Decoder (CODEC) und Verstärker 1462 kommunizieren, der wiederum mit den Ausgabelautsprechern 1463 gekoppelt sein kann, die im Gehäuse implementiert sind. Auf ähnliche Weise können der Verstärker und der CODEC 1462 gekoppelt sein, um Audio-Eingaben von einem Mikrofon 1465 zu empfangen, das bei einer Ausführungsform über Dual-Array-Mikrofone (wie ein digitales Mikrofon-Array) implementiert sein kann, um Audio-Eingaben hoher Qualität bereitzustellen, um sprachaktivierte Steuerung von verschiedenen Operationen im System zu ermöglichen. Man beachte auch, dass Audio-Ausgaben vom Verstärker/CODEC 1462 zu einem Kopfhöreranschluss 1464 bereitgestellt werden können. Obwohl die Darstellung bei der Ausführungsform von 14 mit diesen besonderen Komponenten erfolgt, versteht es sich, dass der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist.
  • Ausführungsformen können in vielen unterschiedlichen Systemtypen implementiert sein. Mit Bezug auf 15 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Entsprechend der Darstellung in 15 ist das Multiprozessorsystem 1500 ein Punkt-zu-Punkt Verbindungssystem, und es weist einen ersten Prozessor 1570 und einen zweiten Prozessor 1580 auf, gekoppelt über eine Punkt-zu-Punkt-Verbindung 1550. Entsprechend der Darstellung in 15 kann jeder der Prozessoren 1570 und 1580 ein Mehrkern-Prozessor sein, aufweisend erste und zweite Prozessorkerne (d. h. Prozessorkerne 1574a und 1574b und Prozessorkerne 1584a und 1584b), obwohl potenziell viele weitere Kerne in den Prozessoren vorliegen können. Derartige Prozessorkerne können an dazugehörige Kern-Umfangslogik 1577a und 1577b und Kern-Umfangslogik 1587a und 1587b koppeln, um effiziente Kommunikation von Kontext- und anderer Information zu ermöglichen, sowohl zum Zweck des Betriebs während des hier beschriebenen diagnostischen Ruhezustands Als auch zur Kommunikation von Information während des Normalbetriebs. Jeder der Prozessoren kann eine PCU 1575, 1585 oder andere Leistungsmanagement-Logik aufweisen, um prozessorbasiertes Leistungsmanagement entsprechend der hier wiedergegebenen Beschreibung durchzuführen. Zu diesem Zweck kann die PCU 1575 und 1585 Selbsttest-Steuerschaltung aufweisen, um periodisch einen gegebenen Kern (oder eine Gruppe von Kernen) zu veranlassen, in einen diagnostischen Ruhezustand einzutreten, um zum Identifizieren ausfallender Komponenten einen Selbsttest vor Ort durchzuführen.
  • Wiederum mit Bezug auf 15 umfasst der erste Prozessor 1570 ferner einen Speichersteuerungs-Hub (MCH) 1572 und Punkt-zu-Punkt-(P-P)-Schnittstellen 1576 und 1578. Auf ähnliche Weise umfasst der zweite Prozessor 1580 einen MCH 1582 und P-P-Schnittstellen 1586 und 1588. Entsprechend der Darstellung in 15 koppeln die MCHs 1572 und 1582 die Prozessoren an entsprechende Speicher, und zwar einen Speicher 1532 und einen Speicher 1534, die Teile eines Systemspeichers (z.B.) sein können, die an den entsprechenden Prozessoren lokal angeschlossen sind. Der erste Prozessor 1570 und der zweite Prozessor 1580 können an einen Chipsatz 1590 über P-P-Verbindungen 1562 bzw. 1564 gekoppelt sein. Entsprechend der Darstellung in 15 weist der Chipsatz 1590 P-P-Schnittstellen 1594 und 1598 auf.
  • Ferner weist der Chipsatz 1590 eine Schnittstelle 1592 zum Koppeln des Chipsatzes 1590 mit einer Hochleistungs-Grafikmaschine 1538 über eine P-P-Verbindung 1539 auf. Der Chipsatz 1590 kann wiederum an einen ersten Bus 1516 über eine Schnittstelle 1596 gekoppelt werden. Entsprechend der Darstellung in 15 können verschiedene Eingabe-/Ausgabe-(E/A)-Einrichtungen 1514 an den ersten Bus 1516 gekoppelt werden, zusammen mit einer Busbrücke 1518, die den ersten Bus 1516 mit dem zweiten Bus 1520 koppelt. Verschiedene Einrichtungen können an den zweiten Bus 1520 gekoppelt sein, aufweisend beispielsweise eine Tastatur/Maus 1522, Kommunikationseinrichtungen 1526 und eine Datenspeichereinheit 1528 wie ein Plattenlaufwerk oder eine andere Massenspeichereinrichtung, die bei einer Ausführungsform Code 1530 aufweisen kann. Ferner kann eine Audio-E/A 1524 an den zweiten Bus 1520 gekoppelt sein. Ausführungsformen können in andere Typen von Systemen eingegliedert sein, aufweisend mobile Einrichtungen wie ein zelluläres Smartphone, Tablet-Rechner, Netbook, Ultrabook™ usw.
  • Mit Bezug auf 16 wird ein Blockdiagramm eines Teils eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Entsprechend der Darstellung in 16 kann ein Modul 1600 eines von vielen Verarbeitungsmodulen sein, die in einem gegebenen Mehrkern-Prozessor oder einem anderen SoC vorliegen. Wie ersichtlich ist, weist das Modul 1600 eine Mehrzahl von Kernen 16100 -16103 auf. Während zur einfacheren Darstellung in 16 vier Kerne gezeigt sind, versteht es sich, dass bei anderen Ausführungsformen ein Modul oder Cluster mehr oder weniger Kerne aufweisen kann. Das Modul 1600 weist ferner einen für Testschaltung zugänglichen geteilten Cache-Speicher 1620 auf. Bei hier wiedergegebenen Ausführungsformen kann während eines Selbsttests vor Ort des Moduls 1600 der im geteilten Cache-Speicher 1620 gespeicherte Zustand in einen weiteren Teil einer Speicherhierarchie entleert werden, und Testinformation in Form von einem oder mehreren Testmustern und Betriebsparameterinformation können im geteilten Cache-Speicher 1620 gespeichert werden.
  • Wiederum mit Bezug auf 16 weist das Modul 1600 auch eine Bus-Schnittstellenschaltung 1630 auf. Generell weist die Bus-Schnittstellenschaltung 1630 verschiedene geteilte Schaltung auf, die durch Kerne 1610 zugänglich sind. Wie hier näher beschrieben, kann derartige geteilte Schaltung Schnittstellenschaltung zum Schnittstellenmodul 1600 zu anderen Teilen eines Prozessors, zu einer lokalen Leistungssteuerung (wie in Form eines Leistungsmanagement-Agenten (PMA)) und zu anderer Schaltung aufweisen. Wiederum mit Bezug auf das Modul 1600 liegt ein Scan-FSM 1640 vor, zusammen mit einer PBIST-Maschine 1650, die verwendet werden können, um einen Selbsttest von Speicher-Arrays im Cluster 1600 und in der Bus-Schnittstellenschaltung 1630 durchzuführen. Generell kann das Scan-FSM 1640 eine Implementierung einer Teststeuerung sein, die ausgelegt ist zum Durchführen Scan-basierter Tests von Logikschaltung in den Kernen 1610 und der Bus-Schnittstellenschaltung 1630 als Reaktion auf einen Auslöser eines Selbsttests vor Ort, wie beispielsweise mittels eines Schreibvorgangs zu einem entsprechenden maschinenspezifischen Register (MSR) des Selbsttests von einem oder mehreren Kernen 1610. Ungeachtet der Darstellung auf dieser höheren Ebene bei der Ausführungsform aus 16 versteht es sich, dass viele Variationen und Alternativen möglich sind.
  • Bei einer Ausführungsform kann ein Scan vor Ort eines eingebauten Selbsttests (BIST) durch BIOS oder andere Firmware unter Verwendung der MSR initiiert werden. Bei einer Ausführungsform empfängt und speichert ein Scan-BIST MSR einen Zeiger auf ein Testmustermodul. Bei einer Ausführungsform kann dieses MSR zusätzlich zu einem Adressfeld zum Speichern einer Adresse einer Position eines Testmusters ein Typfeld aufweisen, um einen Typ eines durchzuführenden Selbsttests anzugeben (wie eines Scan-Selbsttests und/oder eines Speicher-Selbsttests). Zudem kann ein Fehlersignalisierungsfeld angeben, ob ein Ausfall das Setzen eines Maschinenprüffehlers bewirkt. Wenn dieses MSR auf einem ersten Kern (z. B. dem Kern 16100 ) des Moduls 1600 geschrieben wird, speichert Mikrocode (z. B. in einem Mikrocode-ROM 16150 gespeichert) den Status des betreffenden Kerns in einen Speicher geringer Leistung (z. B. in der Bus-Schnittstellenschaltung 1630) und tritt in den diagnostischen Ruhezustand ein, der ein nicht abbrechbarer Ruhezustand ist. Danach ruft der BIOS einen Schreibvorgang zu diesem MSR auf jedem Kern im Modul 1600 auf. Man beachte, dass, während ein einzelner Kern Mikrocodespeicherung aufweisend gezeigt ist, selbstverständlich bei Ausführungsformen jeder Kern einen Mikrocodespeicher aufweisen oder damit assoziiert sein kann.
  • Der letzte Kern (z. B. der Kern 16103) im Modul 1600 speichert den Status des betreffenden Kerns in Energiespar-Speicher und den geteilten Status des Moduls 1600 (z. B. der Bus-Schnittstellenschaltung 1630) in den Energiespar-Speicher. Im Anschluss an diese Statusspeicherung entleert der Kern 16103 (z. B.) den geteilten Cache-Speicher 1620 und kopiert das Scan-Muster-Modul in den Cache 1620. Mikrocode überprüft anschließend die Signatur auf dem Scan-Muster-Modul, und falls die Signatur bestätigt wird, prüft er den Hash des Scan-Muster-Moduls gegen den signierten Hash. Falls die Hash-Prüfung erfolgreich ist, entschlüsselt der Mikrocode anschließend dieses Modul im Cache 1620. Nachdem der Inhalt des Scan-Muster-Moduls im Cache 1620 entschlüsselt worden ist, programmiert Mikrocode anschließend die Scan-FSM 1640 mit verschiedenen Betriebsparametern. Obwohl der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist, weisen die Betriebsparameter bei einer Ausführungsform die Anzahl von Musterpaketen im Modul, die Startadresse, das erwartete goldene Mehrfacheingabe-Signaturregister (MISR), Signatur nach Scan-BIST usw. auf. Diese Parameter können selbst Teil des Scan-Muster-Moduls sein. Man beachte, dass während 16 eine Implementierung mit mehreren Kernen zeigt, bei anderen Ausführungsformen selbstverständlich der hier beschriebene Selbsttest in einem Prozessor oder einem anderen SoC mit nur einem einzelnen Kern durchgeführt werden kann.
  • Ausführungsformen können in einer breiten Vielfalt von Halbleitereinrichtungen verwendet werden, aufweisend Prozessoren und andere SoCs für verschiedene Anwendungen. In einigen Fällen können Ausführungsformen in Produkte für industrielle und Automobilmärkte eingegliedert sein (z. B. autonom fahrende Fahrzeuge), wobei verschiedene Anforderungen für Funktionssicherheit gelten können. Dies liegt daran, dass einige Produkte Zuverlässigkeitsziele mit höheren Anforderungen aufweisen (z. B. kann ein Ausfall während der Durchführung autonomen Fahrens fatale Folgen haben), sodass ein Kern während der Durchführung missionskritischer Aufgaben nicht beeinträchtigt werden darf. Bei Ausführungsformen kann der Selbsttest vor Ort durchgeführt werden an einem Kern, wenn er vom Normalbetrieb isoliert ist, beispielsweise wenn er auf den Eintritt des Kerns in einen gegebenen Energiesparzustand reagiert, wie den hier beschriebenen diagnostischen Ruhezustand.
  • Mit Bezug auf 17 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Insbesondere ist der in 17 gezeigte Teil des Prozessors 1700 aus einem gegebenen Cluster oder Modul, wobei der Prozessor selbst eine Mehrzahl derartiger Cluster aufweisen kann. Entsprechend der Darstellung in 17 weist der Prozessor 1700 eine Mehrzahl von Kernen 17100 -1710n und eine Bus-Schnittstelleneinheit 1780 auf, die als geteilte Schaltungsschnittstelle zwischen den Kernen 1710 und zusätzlicher Schaltung im Prozessor 1700 wirkt. Es versteht sich, dass bei Mehrkern-Umgebungen jeder Kern seine eigene Kern-Umfangslogik aufweisen kann. Wenn bei dem hier beschriebenen Selbsttest im Isolationsmodus ein Cluster im Isolationsmodus eines diagnostischen Ruhezustands ist und aktiv Selbsttests ausführt (in einem C0-Zustand), scheint er für andere Teile der Kern-Umfangslogik in einem Energiesparzustand zu sein (z. B. in einem C6-Zustand).
  • Bei der besonderen in 17 gezeigten Ausführungsform können der Kern 1710, ein Leistungsmanagement-Agent (PMA) 1730 und zusätzliche Leistungsabgabe- und Taktschaltung (im Folgenden genauer erörtert) während dieses Isolationsmodus-basierten Selbsttests in einem aktiven Zustand (z. B. einem C0-Zustand) sein. Derartige Schaltung erscheint zusätzlicher Kern-Umfangslogik, nämlich einer Struktur-Schnittstellenlogik (FIL) 1720, jedoch, als befände sie sich in einem Energiesparzustand (z. B. C6).
  • Bei der in 17 gezeigten höheren Ebene können alle Komponenten des Prozessors 1700 auf einem einzelnen Halbleiter-Die implementiert sein. Wie ersichtlich, weist der Kern 1710 eine Mikrocode-Speicherung 1715 auf, die verschiedenen Mikrocode zum Ausführen auf den Kern 1710 speichern kann, aufweisend Kryptografie-Mikrocode zum Durchführen von Authentifizierung und Entschlüsselung von Testmustern wie hier beschrieben. Wie ferner dargestellt ist, umfasst der Prozessor 1700 zusätzliche Speicher, Aufweisen einen Energiesparspeicher 1770, der bei einer Ausführungsform ein statischer Direktzugriffsspeicher (SRAM, ein sogenannter „C6 SRAM“) sein kann, in dem verschiedene Kontext- oder Statusinformation eines Clusters während eines diagnostischen Ruhezustands gespeichert wird. Man beachte, dass die Begriffe „Statusinformation“ und „Kontextinformation“ hier austauschbar verwendet werden und sich auf Informationen beziehen wie Steuerregisterwerte, Dateninformation, in Registern gespeicherte Information und sonstige Information, die mit einem auf einem Kern oder anderer Logik ausgeführten Thread assoziiert ist. Derartige Information kann gespeichert werden, wenn der entsprechende Thread aus dem Kern verlegt wird, z. B. wegen des Eintritts in einen Energiesparzustand oder der Migration zu einem anderen Kern.
  • Bei einer Ausführungsform kann der Speicher 1770 dafür ausgelegt sein, eingeschaltet zu bleiben, während der Kern in bestimmten Energiesparzuständen ist. Als ein Beispiel kann der Speicher 1770 Information beibehalten, während ein Kern in einem gegebenen Energiesparzustand (z. B. C6) ist und das Prozessorpaket in einem aktiven Paketstatus (C0) ist. Bei anderen Energiesparzuständen kann derartige Leistung jedoch auch nicht verfügbar sein, und die Kontextinformation kann zu anderen Speichern gesendet werden. Wie ferner dargestellt, koppelt ein geteilter Cache-Speicher 1775 auch an die Bus-Schnittstelleneinheit 1780. Wie dargestellt, kann ein Cache-Speicher 1775 als ein L2-Cache-Speicher implementiert sein, der als geteilter Cache-Speicher für die verschiedenen Kerne des Clusters wirkt. Zusätzlich kann während des Selbsttests vor Ort wie hier beschrieben ein in diesem Cache-Speicher gespeicherter Status entleert werden, und ein oder mehrere Testmuster, Betriebsparameterinformation usw. bezüglich dieses Selbsttests können erhalten und im Cache-Speicher 1775 gespeichert werden.
  • Der Kern 1710 weist ferner eine Intra-Die-Verbindungs-(IDI)-Schnittstelle 1718 zur Verbindung mit einer IDI 1768 auf. Obwohl dies zur einfacheren Darstellung nicht gezeigt ist, versteht es sich, dass die IDI 1768 Kerne 1710 mit verschiedener anderer Schaltung im Prozessor koppeln kann (zur einfacheren Darstellung in 17 nicht gezeigt), aufweisend ein oder mehrere andere Cluster, einen Peripheriesteuerungs-Hub (PCH), einen oder mehrere Cache-Speicher und/oder andere Uncore-Schaltung. Um eine Schnittstelle zwischen dem Kern 1710 und anderen Komponenten im Prozessor bereitzustellen, die mit unterschiedlichen Frequenzen arbeiten kann, kann eine Clock-Crossing-Logik 1719 bereitgestellt sein, die bei einer Ausführungsform als „First In First Out“ (FIFO)-Puffer eines Blasengenerators implementiert sein kann.
  • Um dem Kern 1710 den Eintritt in besondere und tiefere Energiesparzustände, sofern verfügbar, zu ermöglichen, ist eine erste Kern-Umfangslogik, und zwar FIL 1720, an den Kern 1710 gekoppelt. FIL 1720 kann zu einer ersten Leistungserhaltungsdomäne gehören, da sie mit Leistungs- und Taktsignalen bereitgestellt wird, wenn mindestens Teile des Prozessors in einem Energiesparzustand sind. Wie ersichtlich ist, koppelt die FIL 1720 sowohl über die IDI 1768 als auch über eine zweite Verbindung 1777 an die Kerne 1710, was bei einer Ausführungsform eine Steuerregisterverbindung (CRI) ist. Die Verbindung 1777 kann eine relativ einfache Verbindung mit geringer Leistung sein, um Kommunikation von Statusinformation während Speicher- und Wiederherstellungsoperationen für den Eintritt in den und das Verlassen des Energiesparmodus bereitzustellen.
  • Bei der in 17 Gezeigten Ausführungsform weist die FIL 1720 einen Speicher 1722 auf, der als eine Mehrzahl von Registern implementiert sein kann, ausgelegt zum Speichern der von den Kernen 1710 vor deren Eintritt in einen gegebenen Energiesparzustand empfangenen Statusinformation. In bestimmten Energiesparzuständen kann Leistung für die FIL 1720 beibehalten werden, bis das Prozessorpaket in einen tieferen Paket-Energiesparzustand (z. B. einen Paket-C6-Zustand) eintritt, wenn eine kohärente Struktur in einen Energiesparzustand eintritt. Wie ferner gezeigt ist, weist die FIL 1720 eine Monitorlogik 1724, eine Interrupt-Steuerlogik 1726 und eine Snoop-Antwortlogik 1728 auf. Generell kann die Monitorlogik 1724 dafür ausgelegt sein, wenn der Kern 1710 in einem Energiesparzustand ist, eine oder mehrere überwachte Positionen auf eine Aktualisierung eines dort gespeicherten Wertes zu überwachen. Die Interrupt-Steuerlogik 1726 kann wiederum dafür ausgelegt sein, eingehende Interrupts zu handhaben, während der Kern 1710 in einem Energiesparzustand ist. Eine derartige Handhabung kann das Verzögern des Interrupts und/oder das Senden einer Antwort auf den Interrupt aufweisen. Zudem kann in einigen Fällen die Handhabung umfassen, dass das Aufwachen des Kerns 1710 zur Handhabung des Interrupts veranlasst wird. Die FIL 1720 weist auch eine Snoop-Antwortlogik 1728 auf, die ausgelegt sein kann, um eine Snoop-Antwort auf eine Snoop-Anforderung zu senden, die eingeht, während der Kern 1710 in einem Energiesparzustand ist.
  • Wiederum mit Bezug auf 17 ist eine zusätzliche Kern-Umfangslogik ein Leistungsmanagement-Agent (PMA) 1730. Generell kann der PMA 1730 dafür ausgelegt sein, eine Schnittstelle zu anderen Prozessor- und Systemkomponenten über eine Seitenbandverbindung 1790 bereitzustellen, die eine Leistungsmanagement-Seitenbandverbindung sein kann. Der PMA 1730 kann zu einer zweiten Leistungserhaltungsdomäne gehören, da er mit Leistung- und Taktsignalen bereitgestellt wird, wenn andere Teile des Prozessors 1700 (einschließlich der FIL 1720) in einem Energiesparzustand sind. Der PMA 1730 weist einen Speicher 1732 auf, der dafür ausgelegt sein kann, die von der FIL 1720 erhaltene Statusinformation zu speichern. Diese Statusinformation kann eine aktuelle oder aktive Kennung (ID) der erweiterten programmierbaren Interruptsteuerung (APIC) für den Kern 1710 aufweisen, um es dem PMA 1730 zu ermöglichen, auf übertragene Weck-/APIC-ID-Nachrichten zu antworten. Bei Ausführungsformen kann der PMA 1730 Dafür ausgelegt sein, die Ergebnisse des Selbsttests vom Kern 1710 zu einer Leistungssteuerung wie einer PCU über eine Seitenbandverbindung 1790 zu senden.
  • Bei der gezeigten Ausführungsform weist der PMA 1730 eine Sicherungszieher-Logik 1736 auf, die eine oder mehrere FSM aufweisen kann, um Speicher- und Wiederherstellungsoperationen durchzuführen, wenn der PMA 1730 selbst in einen Energiesparzustand versetzt werden soll. Beispielsweise kann die im Speicher 1722 gespeicherte Information in Systemspeicher entleert werden, wenn das Prozessorpaket in einen noch tieferen Paket-Energiesparzustand eintritt (z. B. einen Paket-C10-Zustand). In einigen Fällen kann der PMA 1730 eine Verbindung mit einer Haupt-Leistungssteuerung eines Prozessors wie einer PCU oder einer anderen Leistungsmanagement-Entität herstellen. Der PMA 1730 weist ferner eine Ereignis-Sperrlogik 1738 auf, die dafür ausgelegt sein kann, eingehende Ereignisse zu sperren, wenn der Prozessor in besonderen Energiesparzuständen ist, zu denen auch der hier beschriebene Isolationsmodus zählt. Zudem weist der PMA 1730 auch eine Seitenbandschnittstelle 1739 auf, die eine Schnittstelle zur Seitenbandverbindung 1790 herstellen kann.
  • Es versteht sich, dass ein Prozessor zusätzliche Komponenten und Schaltung aufweisen kann. Bei der Darstellung von 17 weist der Prozessors 1700 eine Energieabgabeeinheit 1740 auf, die bei einer Ausführungsform einen oder mehrere vollständig integrierte Spannungsregler, eine Taktschaltung 1750, die bei einer Ausführungsform als Phasenregelkreis implementiert sein kann, und einen digitalen thermischen Sensor 1760 aufweisen kann. Wie ersichtlich, kann jede dieser Komponenten mit den anderen Komponenten des Prozessors 1700 über die Verbindung 1777 kommunizieren. Es versteht sich, dass, während diese besondere Prozessorimplementierung in 17 gezeigt ist, viele Variationen und Alternativen möglich sind.
  • In einigen Fällen kann eine PCU oder eine andere Leistungssteuerung periodisch einen gegebenen Cluster in den Isolationsmodus zwingen, um ihn zu veranlassen, diagnostische Tests wie hier beschrieben auszuführen. In anderen Fällen kann die PCU das Durchführen des Tests bei Eintritt in einen System-Leistungszustand (z. B. einen S3-Zustand) veranlassen. Wenn der Kern in diesem Isolationsmodus ist, können kernexterne Entitäten den Kern als in einem Energiesparzustand betrachten. Beispielsweise kann die Kern-Umfangslogik wie die FIL 1720 Snoops ignorieren und Interrupts verzögern, und der PMA 1730 wird Ereignisse sperren. Somit weist der getestete Kern im Isolationsmodus keine Interaktion mit externen Komponenten auf.
  • Bei Ausführungsformen kann ein gegebener Kern 1710 einen oder mehrere Tests aus einem Speicher erhalten und die Tests zur Ausführung im Cache-Speicher 1775 speichern. Man beachte, dass die im geteilten Cache-Speicher 1775 gespeicherte Test-Suite für alle Kerne eines Clusters gleich ist. Bei einigen Ausführungsformen können diese Tests eine Untergruppe von diagnostischen Tests sein, die in einer Herstellungseinrichtung zum Durchführen von Herstellungstests oder Test der hypothetischen Verwendung eingesetzt werden. In einigen Fällen kann eine gegebene Test-Suite in einer einzelnen Iteration des Isolationsmodus als einzelner Durchgang ausgeführt werden, oder unterschiedliche Tests oder Abschnitte können in mehrere Iterationen kleiner Abschnitte von Mikrotests aufgeteilt werden.
  • Mit Bezug auf 18 ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Entsprechend der Darstellung in 18 ist das Verfahren 1800 eine Ansicht einer höheren Ebene von Initiierungsoperationen für einen Selbsttest vor Ort von einem oder mehreren Kernen oder anderer Verarbeitungsschaltung wie hier beschrieben. Im Einzelnen ist das Verfahren 1800 aus der Sicht eines Verarbeitungskerns beschrieben, der diesen Selbsttest durchführen soll. Dabei können Ausführungsformen unter Verwendung von Hardwareschaltung, Firmware, Software und/oder Kombinationen daraus implementiert sein. Entsprechend der Darstellung beginnt das Verfahren 1800 mit dem Empfang einer Anweisung zum Initiieren des Selbsttests vor Ort (Block 1810). Bei einer Ausführungsform kann diese Anweisung als ein Schreibvorgang in ein Selbsttestregister implementiert sein. Bei einer Ausführungsform kann dieses Register als ein Steuerregister implementiert sein, das durch Firmware oder andere Systemsoftware mit einer Adresse oder einem anderen Zeiger auf eine Position geschrieben werden soll, an der der Selbsttest gespeichert wird. In anderen Fällen kann eine Anweisung auf Benutzerebene zum Initiieren des Selbsttests verwendet werden.
  • In jedem Fall geht die Steuerung anschließend zu Block 1815 über, wo der Kern seinen Zustand in einem Energiesparspeicher speichern kann und zusätzlich den Kern-Daten-Cache entleert. Man beachte, dass der hier verwendete Begriff „Energiesparspeicher“ verwendet wird, um einen Speicher zu bezeichnen, in dem Information gespeichert und beibehalten wird, während ein Prozessor in einem besonderen Energiesparzustand ist. Somit ist dieser Speicher mit einer geeigneten Betriebsspannung und Frequenz während des Energiesparzustands bereitgestellt, um das Aufrechterhalten der gespeicherten Information zu ermöglichen. Bei einer Ausführungsform kann dieser Speicher ein C6-SRAM sein. Bei einer anderen Ausführungsform kann dieser Speicher ein reservierter Bereich von DRAM sein, der verschlüsselt ist und dessen Integrität geschützt ist. Anschließend wird ermittelt, ob dieser Kern der letzte Kern einer Gruppe von Kernen ist (z. B. ein Modul oder Cluster), um diese Anweisung zu empfangen (Raute 1820). Als ein Beispiel kann ein Verweis auf ein Statusregister erfolgen, das Felder für jeden Kern dieser Gruppe bereitstellt, der bei Einrichtung angibt, dass der dazugehörige Kern dieses Selbsttest-Initiierungssignal empfangen hat und den Selbsttest eingeleitet hat oder dass dieser ausgeführt wird. Falls der Kern ermittelt, dass es der letzte Kern der Gruppe ist, um seinen Status abzuspeichern und in den Selbsttest-Modus einzutreten, geht die Steuerung zu Block 1825 über, wo der Kern auch bewirken kann, dass der Status geteilter Schaltung (wie Bus-Schnittstellenschaltung) in diesem Energiesparspeicher gespeichert wird. In vielen Fällen kann dieser Speicher der gleiche sein wie der Energiesparspeicher, in dem der Kernstatus gespeichert ist. Es versteht sich jedoch, dass der Umfang der vorliegenden Empfindung nicht diesbezüglich eingeschränkt ist, und in anderen Fällen kann ein anderer Energiesparspeicher zum Speichern dieses geteilten Schaltungszustands verwendet werden.
  • Wiederum mit Bezug auf 18 geht die Steuerung anschließend zu Block 1830 über, wo ein geteilter Cache in eine Speicherhierarchie entleert werden kann. Bei einer Ausführungsform kann dieser geteilte Cache ein L2-Cache sein, der von den verschiedenen Kernen dieses Moduls geteilt wird. Man beachte, dass bei unterschiedlichen Implementierungen und in Abhängigkeit von der Umgebung die Entleerungsposition ein Last-Level-Cache (LLC) oder weitere Abschnitte der Speicherhierarchie sein kann, wie z. B. ein Systemspeicher (z. B. DRAM). Anschließend geht die Steuerung zu Block 1840 über, wo ein Testmuster erhalten und im geteilten Cache-Speicher gespeichert werden kann. Weiter oben erörtert, kann bei einer Ausführungsform ein Zeiger bereitgestellt werden, um eine Adresse zu identifizieren, von der das Testmuster erhalten werden kann. Man beachte, dass bei einer Ausführungsform dieses Testmuster ein Scan-Muster sein kann, dass im Kern ausgeführt werden soll, z. B. entsprechend einem Scan-Selbsttestverfahren.
  • Wiederum mit Bezug auf 18 wird anschließend ermittelt, ob dieses Testmuster überprüft worden ist (Raute 1850). Falls nicht, kann ein Fehler gesetzt werden (Block 1860). Obwohl der Umfang der vorliegenden Erfindung diesbezüglich nicht eingeschränkt ist, kann der Kern bei einer Ausführungsform einen MCA-Fehler (Maschinen-Prüfarchitektur) setzen. Falls das Testmuster überprüft worden ist, geht die Steuerung zur Raute 1865 über, wo anschließend ermittelt wird, ob ein Hash des Testmusters einem signierten Hash entspricht. Ist dies der Fall, geht die Steuerung zu Block 1870 über (und anderenfalls geht die Steuerung zu Block 1860 über, um einen Fehler zu setzen).
  • Bei Block 1870 kann das Testmuster entschlüsselt sein. Bei einer Ausführungsform kann ein Kern eine Mikrocode-Entschlüsselungsinfrastruktur aufweisen, die zur Durchführung dieser Entschlüsselung unterstützt werden kann, z. B. unter Verwendung von Entschlüsselungs-Mikrooperationen. Anschließend wird bei Block 1880 eine Teststeuerung mit Betriebsparametern programmiert, die den Selbsttest im Kern verwalten soll. Bei einer Ausführungsform kann diese Teststeuerung als eine Scan-FSM in geteilter Schaltung des Moduls implementiert sein (z. B. als Teil der Bus-Schnittstellenschaltung). Bei einer Ausführungsform können diese Betriebsparameter im Testmustermodul selbst erhalten werden, dann entschlüsselt und im geteilten Cache-Speicher gespeichert werden.
  • Schließlich geht die Steuerung zu Block 1890 über, wo der Kern in einen diagnostischen Ruhezustand eintritt. Man beachte, dass in diesem diagnostischen Ruhezustand der Kern für externe Entitäten als in einem Energiesparzustand befindlich erscheint. Dennoch tritt der Kern nicht tatsächlich in einen Energiesparzustand ein. Anders ausgedrückt, empfängt der Kern in diesem diagnostischen Ruhezustand weiterhin eine Betriebsspannung und eines oder mehrere Taktsignale, sodass er in der Lage ist, eine Selbsttest-Suite oder einen Selbsttest vor Ort auszuführen, wobei weitere Details im Folgenden erörtert werden. Ungeachtet der Darstellung auf dieser höheren Ebene bei der Ausführungsform aus 18 versteht es sich, dass viele Variationen und Alternativen möglich sind.
  • Mit Bezug auf 19 ist ein Ablaufdiagramm eines Verfahrens gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Im Einzelnen ist das Verfahren 1900 ein Ablaufdiagramm eines Selbsttest-Managementprozesses, z. B. durchgeführt durch eine Leistungssteuerung wie einen Leistungsmanagement-Agenten (PMA), z. B. eines Mehrkern-Moduls wie hier beschrieben. Dabei können Ausführungsformen unter Verwendung von Hardwareschaltung, Firmware, Software und/oder Kombinationen daraus implementiert sein.
  • Wie ersichtlich, beginnt das Verfahren 1900 mit der Feststellung, ob alle Kerne (z. B. des Moduls) im diagnostischen Ruhezustand sind (Raute 1910). Bei einer Ausführungsform kann die Leistungssteuerung auf einen Status Register oder anderen Speicher zugreifen, um diese Feststellung zu treffen. Wenn ermittelt worden ist, dass all diese Kerne in einem diagnostischen Ruhezustand sind, geht die Steuerung zu Block 1920 über, wo eine Strukturschnittstelle angehalten werden kann und Clock-Crossing-Schaltung deaktiviert werden kann. Diese Operationen werden ausgeführt, um dieses Modul oder den Cluster von einem Rest eines Prozessors zu isolieren, der weiterhin in einem normalen Ausführungsmodus arbeiten kann, während der Selbsttest auf diesem Modul durchgeführt wird. Anschließend wird bei Block 1930 eine Firewall aktiviert, um diesen Cluster zu isolieren. Dabei erscheint der gesamte Cluster für externe Schaltung (nämlich den Rest eines Prozessors) als in einem Energiesparzustand befindlich. Dennoch bleibt während dieses diagnostischen Ruhezustands der Cluster eingeschaltet und getaktet, um den Ablauf des Selbsttests zu ermöglichen. Anschließend geht die Steuerung zu Block 1940 über, wo die Leistungssteuerung die Teststeuerung veranlassen kann, den Selbsttest vor Ort zu initiieren. Bei einer Ausführungsform kann diese Teststeuerung als eine Scan-FSM oder als eine unabhängige Teststeuerung implementiert sein (z. B. als eine JTAG- oder TAP-Steuerung). Somit können die gegebenen Kerne an dieser Stelle die Selbsttests vor Ort durchführen.
  • Anschließend wird bei Raute 1950 ermittelt, ob ein Testabschlussindikator empfangen worden ist. Bei einer Ausführungsform gibt diese Angabe somit an, dass alle Kerne des Clusters den Selbsttest abgeschlossen haben. Falls dieser Indikator nicht empfangen wird, geht die Steuerung zur Raute 1960 über, um zu ermitteln, ob ein Zeitgeberintervall abgeschlossen ist. Dieser Zeitgeber kann einen Totmann-Timer entsprechen. Falls der Totmann-Timer ohne Abschluss des Selbsttests abläuft, kann dies eine Angabe eines Fehlers oder einer anderen Havarie beim Selbsttest sein.
  • In jedem Fall geht die Steuerung anschließend zu Block 1970 über, wo der Ablauf einer Rücksetzsequenz bewirkt wird. Diese Rücksetzsequenz kann auf den individuellen Kernen durchgeführt werden, um Etwaigen verbliebenen Testinhalt oder einen anderen Zustand des Kerns zu klären, um dem Kern das Beginnen oder Fortsetzen der normalen Ausführung zu ermöglichen. Man beachte jedoch, dass dieses Zurücksetzen ein einfaches Löschen des Teststatus im Kern ist; der Kern erfordert keinen Neustart oder eine andere ausführliche Neuinitialisierung, sodass der fortlaufende Funktionsbetrieb im Kern mit sehr geringer Latenz wiederaufgenommen werden kann. Anschließend wird ermittelt, ob diese Rücksetzsequenz abgeschlossen ist (Raute 1980). Wenn ermittelt worden ist, dass diese Sequenz abgeschlossen ist, geht die Steuerung zu Block 1990 über, wo ein Isolationssignal abgesetzt werden kann und die Strukturschnittstelle neu gestartet werden kann. Damit ist es dem Modul an dieser Stelle möglich, mit zusätzlicher Schaltung des Prozessors zu interagieren, und somit erscheint das Modul für diese Schaltung als in einem normalen Betriebsmodus. Ungeachtet der Darstellung auf dieser höheren Ebene bei der Ausführungsform aus 19 versteht es sich, dass viele Variationen und Alternativen möglich sind.
  • Mit Bezug auf 20 ist ein Ablaufdiagramm eines Verfahrens gemäß noch einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Im Einzelnen ist das Verfahren 2000 aus 20 ein detailliertes Verfahren zum Durchführen eines Selbsttests eines eigentlichen Kerns vor Ort. Wie ersichtlich ist, beginnt das Verfahren 2000 mit dem Lesen eines Testmusters aus dem geteilten Cache (Block 2010). Man beachte, dass an dieser Stelle dieses Testmuster, dass ein einzelnes Testmuster oder eine Sammlung mehrerer Testmuster (z. B. Scans) sein kann, in einem entschlüsselten Zustand ist, sodass es für die Scan-Test-FSM direkt zugänglich ist. Anschließend kann bei Block 2020 ein Selbsttest vor Ort entsprechend diesem Testmuster durchgeführt werden. Bei einer Ausführungsform, wobei das Testmuster ein Scan-Muster ist, kann dieser Test ein Scan-Selbsttest sein, bei dem das Scan-Muster in eine Scan-Kette des Kerns verschoben wird (wobei jede dazugehörige Scan-Schaltung mit einer gegebenen Funktionsschaltung des Kerns assoziiert sein kann) und durch die Scan-Kette zum vollständigen Test z. B. der Schaltungslogik des Kerns verschoben wird. Bei einem Beispiel kann ein BIST verwendet werden, um jeden Flipflop in einer Schaltung dem Test auszusetzen und zu beobachten. Zu diesem Zweck kann ein Testmuster in eine Serie von Flipflops eingescannt werden, die wiederum an Schaltungslogik des Kerns koppeln. Auf diese Weise kann das eingescannte Testmuster die Scan-Kette durchlaufen und ausgescannt werden, um ein Testergebnis bereitzustellen. Dieses Testen kann ferner Direktzugriffs-Testen aufweisen, um auf ein oder mehrere Speicher-Arrays zuzugreifen.
  • Wiederum mit Bezug auf 20 können beim optionalen Block 2030 die aus der Scan-Kette ausgelagerten Muster gespeichert werden, z. B. im geteilten Cache-Speicher. Auf diese Weise können mit dieser detaillierten Scan-Information diagnostische Operationen, Debugging und andere Fehlererkennungs-/Isolationsverfahren durchgeführt werden. Bei einer Ausführungsform können diese ausgelagerten Daten anschließend vor Ort durch Mikrocode im Anschluss an den Abschluss des Zurücksetzens verschlüsselt werden, sodass sie zum Werk oder zu einem anderen Ziel zurückgesendet werden können.
  • Wiederum mit Bezug auf 20 geht die Steuerung zu Block 2040 über, wo der Kern ein Resultat des Selbsttests vor Ort mit einer erwarteten Signatur vergleichen kann. Man beachte, dass bei Ausführungsformen diese erwartete Signatur aus dem geteilten Cache-Speicher erhalten werden kann, der das Testmuster selbst speichert. Das heißt, dass in einigen Fällen die erwartete Signatur in Zusammenhang mit dem Testmuster gespeichert sein kann. In einigen Fällen kann der erwartete Signaturwert aus dem geteilten Cache-Speicher ausgelesen werden, der das Testmuster speichert und in ein Steuerregister in der Scan-Steuerung vor dem Initiieren der Selbsttest-Sequenz programmiert wird. Bei einer besonderen Ausführungsform ist diese Signatur eine sogenannte goldene Signatur, die die erwartete Ausgabe von der Scan-Kette als Reaktion auf die Eingabe des Scan-Musters ist.
  • Wiederum mit Bezug auf 20 kann anschließend ermittelt werden, ob diese Vergleichsergebnisse zu einem Treffer führen (Raute 2050). Ist dies der Fall, kann der Kern angeben, dass er den Selbsttest vor Ort erfolgreich bestanden hat (Block 2070). Anderenfalls kann der Kern bei Block 2060 ein negatives Testergebnis angeben. Bei einer Ausführungsform können diese Angaben durch Bereitstellen eines Indikators in einem Selbsttest-Statusspeicher erfolgen. Beispielsweise kann der Kern einen entsprechenden Indikator auf einen ersten Status setzen (z. B. logisch hoch), um anzugeben, dass er den Selbsttest bestanden hat, und stattdessen diesen Indikator auf einen logisch niedrigen Zustand zurücksetzen, um anzugeben, dass der Selbsttest negativ verlaufen ist. In Verbindung mit dieser Angabe kann der Kern ferner auch angeben, z. B. für den Leistungsmanagement-Agenten, dass er den Selbsttest abgeschlossen hat. Ungeachtet der Darstellung auf dieser höheren Ebene in 20 versteht es sich, dass viele Variationen und Alternativen möglich sind.
  • Mit Bezug auf 21 ist ein Ablaufdiagramm noch eines weiteren Verfahrens gemäß einer Ausführungsform gezeigt. Entsprechend der Darstellung in 21 ist das Verfahren 2100 ein Verfahren zum Abschluss des Selbsttests vor Ort wie hier beschrieben. Zu diesem Zweck kann das Verfahren 2100 durch einen gegebenen Kern einer Gruppe von Kernen wie hier beschrieben durchgeführt werden. Wie ersichtlich ist, beginnt das Verfahren 2100 mit der Feststellung, ob ein geteilter Zustand, z. B. der Schnittstellenschaltung, wiederhergestellt worden ist (Raute 2110). Unter der Annahme, dass dies nicht so ist, geht die Steuerung zu Block 2120 über, wo der Kern diesen geteilten Zustand aus dem Energiesparspeicher zur geteilten Schaltung wiederherstellen kann. Anschließend geht die Steuerung zu Block 2130 über, wo der Kern seinen eigenen Status aus dem Energiesparspeicher wiederherstellen kann.
  • Wiederum mit Bezug auf 21 wird anschließend ermittelt, ob der an diesem Cluster aus Kernen durchgeführte Selbsttest erfolgreich war. Im Einzelnen kann der Kern auf einen Statusspeicher oder eine andere Position zugreifen, um zu identifizieren, ob alle Kerne erfolgreich den Selbsttest vor Ort bestanden haben (oder nicht). Basierend auf dieser erhaltenen Information wird bei Raute 2150 ermittelt, ob ein Ausfall angegeben ist. Ist dies der Fall, geht die Steuerung zu Block 2160 über, wo ein gegebener Fehlerbehandlungsmechanismus durchgeführt werden kann. Beispielsweise kann der Kern einfach den Fehler protokollieren, z. B. in einem Fehlerprotokoll. In anderen Fällen kann der Kern den Fehler melden oder setzen. In einigen Fällen kann dieser Fehlerbehandlungsmechanismus auf dem Typ des Fehlers und einer Fehlerbehandlungsrichtlinie basieren, die vorgibt, wie der Fehler zu handhaben ist.
  • In jedem Fall kann dieser Kern mit seinem eigenen wiederhergestellten Status zu Block 2180 weitergehen, wo er die Ausführung von Nicht-Test-Code beginnen oder fortsetzen kann. Im Einzelnen kann der Kern bei Ausführungsformen, in denen diese Selbsttests vor Ort während des Normalbetriebs iterativ durchgeführt werden, seinen normalen Funktionsumfang fortsetzen, den es vor seinem Eintritt in den Selbsttest vor Ort durchgeführt hatte. Im Einzelnen kann der Kern die Ausführung bei einer nächsten Anweisung beginnen, die auf die Anweisung folgt, die ihn veranlasst hatte, in den Selbsttest vor Ort einzutreten.
  • Wiederum mit Bezug auf 21 beachte man, dass, falls der Kern stattdessen bei Raute 2110 festlegt, dass der geteilte Zustand bereits wiederhergestellt worden ist (was bedeutet, dass dieser Kern nicht der erste Kern ist, der den diagnostischen Ruhezustand verlässt), die Steuerung zu Block 2170 übergeht. Dort wird der Kernstatus aus dem Energiesparspeicher wiederhergestellt, und die Steuerung geht zu Block 2180 über, um die normale Code-Ausführung zu beginnen/fortzusetzen. Ungeachtet der Darstellung auf dieser höheren Ebene bei der Ausführungsform aus 21 versteht es sich, dass viele Variationen und Alternativen möglich sind.
  • Ausführungsformen können ein Mikrocode-Authentifizierungs- und Verschlüsselungs-Framework verwenden, um Scan-Muster vor Ort zu packen. Zusätzlich kann eine für große Herstellungsvolumina verwendete Scan-FSM durch Mikrocode programmiert werden, um aus einem geteilten Cache-Speicher entnommene Testmuster auszuführen, statt eine externe Teststeuerung und -Speicherung zu verwenden. Als Beispiele können Ausführungsformen in Automobil- und Luftfahrt-Fahrzeugsysteme übernommen werden, die Zertifizierungen der Funktionssicherheit implementieren, um autonomes Fahren und autonome Avionik zu ermöglichen.
  • Mit Bezug auf 22 ist ein Blockdiagramm eines Systems gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Bei der Ausführungsform von 22 ist das System 2200 ein Rechensystem für autonomes Fahren. Als solches kann das System 2200 in einem Fahrzeug implementiert werden, dass eine gewisse Stufe autonomen Fahrens bereitstellt. Es versteht sich, dass bei unterschiedlichen Ebenen der Steuerung autonomen Fahrens unterschiedliche Stufen von Arbeitslasten im System 2200 ausgeführt werden können, um einige oder alle der Fahraufgaben autonom durchzuführen.
  • Entsprechend der Darstellung weist das System 2200 einen Prozessor 2210 auf, der ein universeller Multikern-Prozessor oder ein anderes SoC sein kann. Bei unterschiedlichen Implementierungen können mehrere derartige Prozessoren implementiert sein, um Arbeitslasten autonomen Fahrens flexibel unter diesen Prozessoren zuzuweisen. Der Prozessor 2210 fängt Leistung, die durch eine integrierte Schaltung zum Leistungsmanagement (PMIC) 2240 gesteuert wird. Wie ferner dargestellt ist, können Tests zur Funktionssicherheit und andere diagnostische Tests wie hier beschrieben sowohl im Prozessor 2210 als auch in der PMIC 2240 erfolgen, wobei die Ergebnisse zwischen diesen Komponenten kommuniziert werden.
  • Das System 2200 kann ferner ein oder mehrere vor Ort programmierbare Gatteranordnungen (FPGAs) 2215 oder andere programmierbare Beschleuniger aufweisen, auf die bestimmte Arbeitslasten autonomen Fahrens ausgelagert werden können. Der Prozessor 2210 koppelt ferner an einen nichtflüchtigen Speicher 2225, der bei einer Ausführungsform als Flash-Speicher implementiert sein kann. Wie hier beschrieben, kann nichtflüchtiger Speicher 2225 nachhaltig Testmuster speichern, die verwendet werden können, um Selbsttests des Prozessors 2210, der PMIC 2240 und zusätzlicher Komponenten im System 2200 durchzuführen. Zum Bereitstellen von Kommunikation mit anderen Komponenten in einem Fahrzeug koppelt der Prozessor 2210 ferner an eine Schaltstruktur 2220, die bei einer Ausführungsform als eine Ethernet-Schaltstruktur implementiert sein kann, die wiederum an andere Komponenten in einem Fahrzeug koppeln kann, aufweisend Anzeigekomponenten, Fahrzeug-Infotainment-Systeme usw. Zudem koppelt der Prozessor 2210 (und die Schaltstruktur 2220) auch an eine Mikrosteuerung 2250, die ebenfalls in die Tests zur Funktionssicherheit einbezogen sein kann.
  • Ferner können der Prozessor 2210 und die MCU 2250, um Interaktion mit anderen Systemen zu ermöglichen, umfassend andere Fahrzeuge, Streckennetze, Aktualisierungsquellen über die Luftschnittstelle, Infotainment-Inhaltsquellen, Sensordaten-Kommunikation usw., an eine oder mehrere integrierte Hochfrequenzschaltungen (RFICs) 2260 koppeln. Bei Ausführungsformen kann die RFIC 2260 ausgelegt sein zur Unterstützung von 5G-basierten Spezifikationen für die Kommunikation von Automobil- und anderen Daten über eine Vielzahl von drahtlosen Netzen. Zu diesem Zweck kann die RFIC 2260 an eine oder mehrere Antennen 22700 -2270n eines Fahrzeugs koppeln.
  • Wie ferner in 22 dargestellt ist, kann das System 2200 eine Mehrzahl von Sensoren 22300 -2230n aufweisen, die Sensorinformation über einen Sensor-Hub 2235 zum Prozessor 2210 bereitstellen. Obwohl der Umfang der vorliegenden Erfindung nicht diesbezüglich eingeschränkt ist, können derartige Sensoren bei Ausführungsformen unter anderem Sensortypen Lidar-, Ultraschall-, Radar- und optische Sensoren aufweisen. Der Sensor-Hub 2235 kann dafür ausgelegt sein, zumindest einige dieser Daten zusammenzuführen, um Information mit Bezug auf die Umgebung des Fahrzeugs zur Übergabe an den Prozessor 2210 bereitstellen. Der Prozessor 2210 und/oder das FPGA 2215 können diese zusammengeführte Sensor-Information wiederum in Verbindung mit dem Durchführen von Arbeitslasten autonomen Fahrens verwenden. Ungeachtet der Darstellung auf dieser höheren Ebene bei der Ausführungsform aus 22 versteht es sich, dass viele Variationen und Alternativen möglich sind.
  • Die folgenden Beispiele beziehen sich auf weitere Ausführungsformen.
  • Bei einem Beispiel weist ein Prozessor auf: einen ersten Kern und eine Schnittstellenschaltung, gekoppelt mit dem ersten Kern, zum Verbinden des ersten Kerns mit zusätzlicher Schaltung des Prozessors, wobei als Reaktion auf eine Anweisung zum Selbsttest vor Ort der erste Kern einen Status des ersten Kerns in einem Energiesparspeicher speichern, in einen diagnostischen Ruhezustand eintreten und im diagnostischen Ruhezustand einen Selbsttest vor Ort ausführen soll, wobei der erste Kern im diagnostischen Ruhezustand inaktiv zu sein scheint.
  • Bei einem Beispiel umfasst der Prozessor ferner eine Mehrzahl von Kernen, aufweisen den ersten Kern und einen zweiten Kern, wobei der zweite Kern einen Status von mindestens einem Teil der Schnittstellenschaltung in den Energiesparspeicher speichern und einen geteilten Cache-Speicher in eine Speicherhierarchie entleeren soll.
  • Bei einem Beispiel soll der zweite Kern nach dem Entleeren des geteilten Cache-Speichers ein Testmuster erhalten und das Testmuster im geteilten Cache-Speicher speichern.
  • Bei einem Beispiel soll der zweite Kern das Testmuster validieren und als Reaktion auf die Validierung des Testmusters das Testmuster entschlüsseln, eine Teststeuerung mit Betriebsparameterinformation für den Selbsttest vor Ort programmieren und anschließend in den diagnostischen Ruhezustand eintreten.
  • Bei einem Beispiel soll die Teststeuerung als Reaktion auf ein Nichtbestehen des Selbsttests vor Ort ein Fehlersignal zu einem oder mehreren der Mehrzahl von Kernen senden und Fehlerinformation in einem Statusspeicher protokollieren, Wobei der Statusspeicher über ein Seitenbandnetzwerk zugänglich ist.
  • Bei einem Beispiel soll der Prozessor eine Aktualisierung über die Luftschnittstelle empfangen, aufweisend ein oder mehrere Testmuster, und das eine oder die mehreren Testmuster in einem Speicher eines den Prozessor aufweisenden Systems speichern.
  • Bei einem Beispiel soll der erste Kern nach dem Speichern des einen oder der mehreren Testmuster das eine oder die mehreren Testmuster verwenden, um den Selbsttest vor Ort als Reaktion auf eine zweite Anweisung zum Selbsttest vor Ort durchzuführen.
  • Bei einem Beispiel soll die Schnittstellenschaltung als Reaktion auf den diagnostischen Ruhezustand des ersten Kerns den ersten Kern von der zusätzlichen Schaltung isolieren und eine Teststeuerung auslösen, um den Selbsttests vor Ort am ersten Kern zu initiieren.
  • Bei einem Beispiel soll die Schnittstellenschaltung nach Ausführung des Selbsttests vor Ort am ersten Kern das Rücksetzen des ersten Kerns veranlassen und anschließend die Ausführung von Anweisungen mit einer ersten Anweisung im Anschluss an die Anweisung für den Selbsttest vor Ort fortsetzen.
  • Bei einem anderen Beispiel umfasst ein Verfahren: Empfangen einer Anweisung in einem Kern eines Prozessors zum Initiieren eines Selbsttests vor Ort; als Reaktion auf die Anweisung: Speichern eines Status des Kerns und eines Status von geteilter Schaltung des Prozessors in einem ersten Speicher des Prozessors; Erhalten eines Testmusters aus einem Speicher und Speichern des Testmusters in einem geteilten Cache-Speicher des Prozessors; Programmieren einer Teststeuerung des Prozessors mit Betriebsparametern für den Selbsttest vor Ort, basierend zumindest teilweise auf Konfigurationsinformation in Zusammenhang mit dem Testmuster; und Eintritt in einen diagnostischen Ruhezustand und, als Reaktion auf ein Signal von der Teststeuerung, Ausführen des Selbsttests vor Ort während des diagnostischen Ruhezustands.
  • Bei einem Beispiel umfasst das Verfahren ferner: Überprüfen des Testmusters; als Reaktion auf das Überprüfen des Testmusters: Ermitteln, ob ein Hash-Wert des Testmusters einem signierten Hash-Wert entspricht; und als Reaktion auf die Feststellung, dass der Hash-Wert dem signierten Hash-Wert entspricht: Entschlüsseln des Testmusters und Speichern des entschlüsselten Testmusters im geteilten Cache-Speicher.
  • Bei einem Beispiel umfasst das Ausführen des Selbsttests vor Ort das Lesen des entschlüsselten Testmusters aus dem geteilten Cache-Speicher und das Durchführen des Selbsttests vor Ort entsprechend dem Testmuster.
  • Bei einem Beispiel umfasst das Verfahren Ferner das Empfangen eines Downloads des Selbsttests vor Ort über die Luftschnittstelle und das Speichern des Selbsttests vor Ort in den Speicher, wobei der Selbsttest vor Ort verschlüsselt und signiert wird.
  • Bei einem Beispiel umfasst das Verfahren ferner das gleichzeitige Ausführen des Selbsttests vor Ort an einer Mehrzahl von Kernen des Prozessors während des diagnostischen Ruhezustands, in dem die Mehrzahl von Kernen gegenüber anderer Schaltung des Prozessors als in einem Energiesparzustand befindlich erscheint.
  • Bei einem Beispiel umfasst der Selbsttest vor Ort mindestens einen funktionellen Sicherheitstest, und das Verfahren umfasst ferner das Durchführen einer Mehrzahl von Iterationen des Selbsttests vor Ort während der Funktionsausführung auf dem Kern.
  • Bei einem anderen Beispiel soll ein Anweisungen aufweisendes rechnerlesbares Medium das Verfahren nach einem der vorstehenden Beispiele durchführen.
  • Bei einem anderen Beispiel soll ein Daten aufweisendes rechnerlesbares Medium durch mindestens eine Maschine eingesetzt werden, um mindestens eine integrierte Schaltung zum Durchführen des Verfahrens nach einem der vorstehenden Beispiele durchzuführen.
  • Bei einem anderen Beispiel umfasst eine Vorrichtung Mittel zum Durchführen des Verfahrens nach einem der vorstehenden Beispiele.
  • Bei noch einem weiteren Beispiel umfasst ein System einen Multikern-Prozessor, aufweisend einen geteilten Cache-Speicher, eine Mehrzahl von Kernen zum Ausführen funktioneller Operationen, eine Schnittstellenschaltung zum Verbinden der Mehrzahl von Kernen mit einem anderen Teil des Multikern-Prozessors und eine mit der Mehrzahl von Kernen gekoppelte Leistungssteuerung, wobei ein erster Kern der Vielzahl von Kernen in einen diagnostischen Ruhezustand eintreten soll, wobei der erste Kern als Reaktion auf eine Anweisung zum Ausführen eines Selbsttests vor Ort isoliert ist, während mindestens der andere Teil des Multikern-Prozessors mit der Ausführung funktioneller Operationen fortfährt; der erste Kern einen Status des ersten Kerns und einen Status der Schnittstellenschaltung in einem ersten Speicher speichern, eine Selbsttest-Suite erhalten und die Selbsttest-Suite im geteilten Cache-Speicher speichern, die Selbsttest-Suite während des diagnostischen Ruhezustands ausführen und ein Resultat der Ausführung der Selbsttest-Suite zur Leistungssteuerung melden soll. Das System kann ferner Systemspeicher zum Speichern der Selbsttest-Suite aufweisen.
  • Bei einem Beispiel umfasst das System ein Automobil-Fahrzeugrechensystem, und die Leistungssteuerung soll den ersten Kern veranlassen, die Selbsttest-Suite während des Betriebs des Automobil-Fahrzeugrechensystems auszuführen.
  • Bei einem Beispiel soll der erste Kern im diagnostischen Ruhezustand die Selbsttest-Suite ausführen und dem anderen Teil des Multikern-Prozessors gegenüber als in einem Energiesparzustand befindlich erscheinen.
  • Bei einem Beispiel soll der erste Kern Inhalte des geteilten Cache-Speichers in den Systemspeicher entleeren, bevor die Selbsttest-Suite erhalten wird, und die Inhalte des geteilten Cache-Speichers aus dem Systemspeicher erhalten, um es dem ersten Kern zu ermöglichen, die Ausführung der funktionellen Operationen neu zu starten.
  • Bei einem Beispiel umfasst der Prozessor eine Mehrzahl von Clustern, die jeweils eine Untergruppe der Mehrzahl von Kernen, den ersten Speicher und den geteilten Cache-Speicher aufweisen, und wenn ein erster Cluster im diagnostischen Ruhezustand ist, soll mindestens ein zweiter Cluster die Ausführung der funktionellen Operationen fortsetzen.
  • Bei noch einen weiteren Beispiel umfasst eine Vorrichtung: Mittel zum Empfangen einer Anweisung zum Initiieren eines Selbsttests eines Kernmittels eines Prozessors vor Ort; Mittel zum Speichern eines Status des Kernmittels und eines Status von geteilten Schaltungsmitteln des Prozessors in ein erstes Speichermittel; Mittel zum Erhalten eines Testmusters aus einem Speichermittel zum Speichern in einem geteilten Cache-Speichermittel des Prozessors; Mittel zum Programmieren eines Teststeuerungsmittels mit Betriebsparametern für den Selbsttest vor Ort, basierend zumindest teilweise auf Konfigurationsinformation in Zusammenhang mit dem Testmuster; Mittel zum Eintritt in einen diagnostischen Ruhezustand; und Mittel zum Ausführen des Selbsttests vor Ort während des diagnostischen Ruhezustands.
  • Bei einem Beispiel umfasst die Vorrichtung ferner: Mittel zum Überprüfen des Testmusters; Mittel zum Festlegen, ob ein Hash-Wert des Testmusters einem signierten Hash-Wert entspricht; und Mittel zum Entschlüsseln des Testmusters und Speichern des entschlüsselten Testmusters in den geteilten Cache-Speichermitteln.
  • Bei einem Beispiel sollen die Mittel zum Ausführen das entschlüsselte Testmuster aus den geteilten Cache-Speichermitteln auslesen und den Selbsttest vor Ort entsprechend dem Testmuster durchführen.
  • Bei einem Beispiel umfasst die Vorrichtung ferner: Mittel zum Empfangen eines Downloads des Selbsttests vor Ort über die Luftschnittstelle; und Mittel zum Speichern des Selbsttests vor Ort in den Speichermitteln, wobei der Selbsttest vor Ort verschlüsselt und signiert wird.
  • Bei einem Beispiel umfasst die Vorrichtung ferner Mittel zum Ausführen des Selbsttests vor Ort gleichzeitig an einer Mehrzahl von Kernmitteln während des diagnostischen Ruhezustands.
  • Es versteht sich, dass verschiedene Kombinationen der vorstehenden Beispiele möglich sind.
  • Man beachte, dass die Begriffe „Schaltkreis“ und „Schaltung“ hier austauschbar verwendet werden. Entsprechend der hier gebräuchlichen Verwendung werden diese Begriffe und der Begriff „Logik“ eingesetzt, um allein oder in beliebiger Kombination analoge Schaltung, digitale Schaltung, festverdrahtete Schaltung, programmierbare Schaltung, Prozessorschaltung, Mikrosteuerungsschaltung, Hardware-Logikschaltung, Statusmaschinenschaltung und/oder beliebige andere Typen physischer Hardwarekomponenten zu bezeichnen. Ausführungsformen können in vielen unterschiedlichen Typen von Systemen eingesetzt werden. Beispielsweise kann eine Kommunikationseinrichtung bei einer Ausführungsform dafür ausgelegt sein, um die verschiedenen hier beschriebenen Verfahren und Techniken durchzuführen. Selbstverständlich ist der Umfang der vorliegenden Erfindung nicht auf eine Kommunikationseinrichtung eingeschränkt, und vielmehr können andere Ausführungsformen auf andere Typen von Vorrichtungen zur Verarbeitung von Anweisungen ausgerichtet sein oder auf ein oder mehrere maschinenlesbare Medien, aufweisend Anweisungen, die als Reaktion auf die Ausführung auf einer Recheneinrichtung die Einrichtung veranlassen, eines/eine oder mehrere der hier beschriebenen Verfahren und Techniken durchzuführen.
  • Ausführungsformen können in Code implementiert sein und können auf einem nicht vorübergehenden Speichermedium gespeichert sein, das darauf gespeicherte Anweisungen aufweist, die zum Programmieren eines Systems zum Durchführen der Anweisungen verwendet werden können. Ausführungsformen können auch in Daten implementiert sein und können auf einem nicht vorübergehenden Speichermedium gespeichert sein, das bei Verwendung durch mindestens eine Maschine die mindestens eine Maschine veranlasst, mindestens eine integrierte Schaltung zum Durchführen von einer oder mehreren Operationen herzustellen. Noch weitere Ausführungsformen können in einem rechnerlesbaren Speichermedium implementiert sein, aufweisend Information, die bei Fertigung in einem SoC oder anderen Prozessor das SoC oder den anderen Prozessor dafür auslegen soll, eine oder mehrere Operationen durchzuführen. Das Speichermedium kann ohne diesbezügliche Einschränkung beliebige Typen von Platten aufweisen, umfassend Disketten, optische Platten, Solid-State-Drives (SSDs), Compact-Disk-Nur-Lese-Speicher (CD-ROMs), wiederbeschreibbare Compact Disks (CD-RWs) und magnetooptische Platten, Halbleitereinrichtungen wie Nur-Lese-Speicher (ROM), Direktzugriffsspeicher (RAM) wie dynamischen Direktzugriffsspeicher (DRAM), statischen Direktzugriffsspeicher (SRAM), löschbaren programmierbaren Nur-Lese-Speicher (EPROM), Flash-Speicher, elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), magnetische oder optische Karten oder beliebige andere Typen von zum Speichern elektronischer Anweisungen geeigneten Medien.
  • Während die vorliegende Erfindung mit Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben worden ist, erschließen sich Fachleuten auf diesem Gebiet zahlreiche Abänderungen und Variationen davon. Es ist beabsichtigt, dass die beigefügten Ansprüche alle derartigen Abänderungen und Variationen abdecken, die unter den Grundgedanken und Schutzumfang dieser vorliegenden Erfindung fallen.

Claims (25)

  1. Prozessor, umfassend: einen ersten Kern; und eine Schnittstellenschaltung, gekoppelt mit dem ersten Kern, zum Verbinden des ersten Kerns mit zusätzlicher Schaltung des Prozessors, wobei als Reaktion auf eine Anweisung zum Selbsttest vor Ort der erste Kern einen Status des ersten Kerns in einem Energiesparspeicher speichern, in einen diagnostischen Ruhezustand eintreten und im diagnostischen Ruhezustand einen Selbsttest vor Ort ausführen soll, wobei der erste Kern im diagnostischen Ruhezustand inaktiv zu sein scheint.
  2. Prozessor nach Anspruch 1, wobei der Prozessor ferner eine Mehrzahl von Kernen umfasst, aufweisend den ersten Kern und einen zweiten Kern, wobei der zweite Kern einen Status von mindestens einem Teil der Schnittstellenschaltung in den Energiesparspeicher speichern und einen geteilten Cache-Speicher in eine Speicherhierarchie entleeren soll.
  3. Prozessor nach Anspruch 2, wobei der zweite Kern nach dem Entleeren des geteilten Cache-Speichers ein Testmuster erhalten und das Testmuster im geteilten Cache-Speicher speichern soll.
  4. Prozessor nach Anspruch 3, wobei der zweite Kern das Testmuster validieren und als Reaktion auf die Validierung des Testmusters das Testmuster entschlüsseln, eine Teststeuerung mit Betriebsparameterinformation für den Selbsttest vor Ort programmieren und anschließend in den diagnostischen Ruhezustand eintreten soll.
  5. Prozessor nach Anspruch 4, wobei die Teststeuerung als Reaktion auf ein Nichtbestehen des Selbsttests vor Ort ein Fehlersignal zu einem oder mehreren der Mehrzahl von Kernen senden und Fehlerinformation in einem Statusspeicher protokollieren soll, wobei der Statusspeicher über ein Seitenbandnetzwerk zugänglich ist.
  6. Prozessor nach Anspruch 1, wobei der Prozessor eine Aktualisierung über die Luftschnittstelle empfangen soll, aufweisend ein oder mehrere Testmuster, und das eine oder die mehreren Testmuster in einem Speicher eines den Prozessor aufweisenden Systems speichern soll.
  7. Prozessor nach Anspruch 6, wobei nach dem Speichern des einen oder der mehreren Testmuster der erste Kern das eine oder die mehreren Testmuster verwenden soll, um den Selbsttest vor Ort als Reaktion auf eine zweite Anweisung zum Selbsttest vor Ort durchzuführen.
  8. Prozessor nach Anspruch 1, wobei als Reaktion auf den im diagnostischen Ruhezustand befindlichen ersten Kern die Schnittstellenschaltung den ersten Kern von der zusätzlichen Schaltung isolieren und eine erste Teststeuerung auslösen soll, um den Selbsttest vor Ort am ersten Kern zu initiieren.
  9. Prozessor nach Anspruch 8, wobei nach Ausführung des Selbsttests vor Ort am ersten Kern die Schnittstellenschaltung das Rücksetzen des ersten Kerns veranlassen soll und anschließend die Ausführung von Anweisungen mit einer ersten Anweisung im Anschluss an die Anweisung für den Selbsttest vor Ort fortsetzen soll, wobei die Ausführung des Selbsttests vor Ort und das Rücksetzen für die Anweisungen umfassende Software transparent sind.
  10. Verfahren, umfassend: Empfangen einer Anweisung zum Initiieren eines Selbsttests des Kerns vor Ort in einem Kern eines Prozessors; als Reaktion auf die Anweisung, Speichern eines Status des Kerns und eines Status von geteilter Schaltung des Prozessors in einem ersten Speicher des Prozessors; Erhalten eines Testmusters aus einem Speicher und Speichern des Testmusters in einem geteilten Cache-Speicher des Prozessors; Programmieren einer Teststeuerung des Prozessors mit Betriebsparametern für den Selbsttest vor Ort, basierend zumindest teilweise auf Konfigurationsinformation in Zusammenhang mit dem Testmuster; und Eintritt in einen diagnostischen Ruhezustand und, als Reaktion auf ein Signal von der Teststeuerung, Ausführen des Selbsttests vor Ort während des diagnostischen Ruhezustands.
  11. Verfahren nach Anspruch 10, ferner umfassend: Überprüfen des Testmusters; als Reaktion auf das Überprüfen des Testmusters, Ermitteln, ob ein Hash-Wert des Testmusters einem signierten Hash-Wert entspricht; und als Reaktion auf die Feststellung, dass der Hash-Wert dem signierten Hash-Wert entspricht, Entschlüsseln des Testmusters und Speichern des entschlüsselten Testmusters im geteilten Cache-Speicher.
  12. Verfahren nach Anspruch 11, wobei das Ausführen des Selbsttests vor Ort das Auslesen des entschlüsselten Testmusters aus dem geteilten Cache-Speicher und das Durchführen des Selbsttests vor Ort entsprechend dem Testmuster umfasst.
  13. Verfahren nach Anspruch 10, ferner umfassend das Empfangen eines Downloads des Selbsttests vor Ort über die Luftschnittstelle und das Speichern des Selbsttests vor Ort in dem Speicher, wobei der Selbsttest vor Ort verschlüsselt und signiert wird.
  14. Verfahren nach Anspruch 10, ferner umfassend das gleichzeitige Ausführen des Selbsttests vor Ort an einer Mehrzahl von Kernen des Prozessors während des diagnostischen Ruhezustands, in dem die Mehrzahl von Kernen gegenüber anderer Schaltung des Prozessors als in einem Energiesparzustand befindlich erscheint.
  15. Verfahren nach Anspruch 10, wobei der Selbsttest vor Ort mindestens einen funktionellen Sicherheitstest umfasst und das Verfahren ferner das Durchführen einer Mehrzahl von Iterationen des Selbsttests vor Ort während der funktionellen Ausführung auf dem Kern umfasst.
  16. Rechnerlesbares Speichermedium, aufweisend rechnerlesbare Anweisungen zum Implementieren, bei der Ausführung, eines Verfahrens nach einem der Ansprüche 10 bis 15.
  17. Vorrichtung, umfassend Mittel zum Durchführen eines Verfahrens nach einem der Ansprüche 10 bis 15.
  18. System, umfassend: einen Multikern-Prozessor, aufweisend einen geteilten Cache-Speicher, eine Mehrzahl von Kernen zum Ausführen funktioneller Operationen, eine Schnittstellenschaltung zum Verbinden der Mehrzahl von Kernen mit einem anderen Teil des Multikern-Prozessors und eine Leistungssteuerung, gekoppelt mit der Mehrzahl von Kernen, wobei ein erster Kern der Mehrzahl von Kernen in einen diagnostischen Ruhezustand eintreten soll, in dem der erste Kern als Reaktion auf eine Anweisung zum Ausführen eines Selbsttests vor Ort isoliert ist, während mindestens der andere Teil des Multikern-Prozessors mit dem Ausführen funktioneller Operationen fortfährt, wobei der erste Kern einen Status des ersten Kerns und einen Status der Schnittstellenschaltung in einem ersten Speicher speichern, eine Selbsttest-Suite erhalten und die Selbsttest-Suite im geteilten Cache-Speicher speichern, die Selbsttest-Suite während des diagnostischen Ruhezustands ausführen und ein Ergebnis der Ausführung der Selbsttest-Suite zur Leistungssteuerung melden soll; und einen Systemspeicher zum Speichern der Selbsttest-Suite.
  19. System nach Anspruch 18, wobei das System ein Automobil-Fahrzeugrechensystem umfasst und wobei die Leistungssteuerung den ersten Kern zum Ausführen der Selbsttest-Suite während des Betriebs des Automobil-Fahrzeugrechensystems veranlassen soll.
  20. System nach Anspruch 18, wobei der erste Kern im diagnostischen Ruhezustand die Selbsttest-Suite ausführen und gegenüber dem anderen Teil des Multikern-Prozessors als in einem Energiesparzustand befindlich erscheinen soll.
  21. System nach Anspruch 20, wobei der erste Kern den Inhalt des geteilten Cache-Speichers in den Systemspeicher entleeren soll, bevor die Selbsttest-Suite erhalten wird, und den Inhalt des geteilten Cache-Speichers aus dem Systemspeicher erhalten soll, um dem ersten Kern das erneute Starten der Ausführung der funktionellen Operationen zu ermöglichen.
  22. System nach Anspruch 18, wobei der Prozessor eine Mehrzahl von Clustern umfasst, die jeweils eine Untergruppe der Mehrzahl von Kernen, des ersten Speichers und des geteilten Cache-Speichers aufweisen, und wobei, wenn ein erster Cluster im diagnostischen Ruhezustand ist, mindestens ein zweiter Cluster die Ausführung der funktionellen Operationen fortsetzen soll.
  23. Vorrichtung, umfassend: Mittel zum Empfangen einer Anweisung zum Initiieren eines Selbsttests eines Kernmittels eines Prozessors vor Ort; Mittel zum Speichern eines Status der Kernmittel und eines Status von geteilten Schaltungsmitteln des Prozessors in ein erstes Speichermittel; Mittel zum Erhalten eines Testmusters aus einem Speichermittel zum Speichern in einem geteilten Cache-Speichermittel des Prozessors; Mittel zum Programmieren eines Teststeuerungsmittels mit Betriebsparametern für den Selbsttest vor Ort, basierend zumindest teilweise auf Konfigurationsinformation in Zusammenhang mit dem Testmuster; Mittel zum Eintritt in einen diagnostischen Ruhezustand; und Mittel zum Ausführen des Selbsttests vor Ort während des diagnostischen Ruhezustands.
  24. Vorrichtung nach Anspruch 23, ferner umfassend: Mittel zum Überprüfen des Testmusters; Mittel zum Ermitteln, ob ein Hash-Wert des Testmusters einem signierten Hash-Wert entspricht; und Mittel zum Entschlüsseln des Testmusters und Speichern des entschlüsselten Testmusters in den geteilten Cache-Speichermitteln.
  25. Vorrichtung nach Anspruch 24, wobei die Mittel zum Ausführen das entschlüsselte Testmuster aus den geteilten Cache-Speichermitteln auslesen und den Selbsttest vor Ort entsprechend dem Testmuster durchführen sollen.
DE102018125236.6A 2017-11-29 2018-10-12 System, Vorrichtung und Verfahren zum Selbsstest vor Ort in einem Diagnose-Ruhezustand Pending DE102018125236A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/825,352 2017-11-29
US15/825,352 US10620266B2 (en) 2017-11-29 2017-11-29 System, apparatus and method for in-field self testing in a diagnostic sleep state

Publications (1)

Publication Number Publication Date
DE102018125236A1 true DE102018125236A1 (de) 2019-05-29

Family

ID=66442705

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018125236.6A Pending DE102018125236A1 (de) 2017-11-29 2018-10-12 System, Vorrichtung und Verfahren zum Selbsstest vor Ort in einem Diagnose-Ruhezustand

Country Status (2)

Country Link
US (2) US10620266B2 (de)
DE (1) DE102018125236A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220413590A1 (en) * 2021-06-23 2022-12-29 Maxim Integrated Products, Inc. Systems and methods for reducing power consumption in compute circuits

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10481202B2 (en) * 2017-02-13 2019-11-19 Qualcomm Incorporated In-field self-test controller for safety critical automotive use cases
WO2019152037A1 (en) * 2018-02-01 2019-08-08 Hewlett-Packard Development Company, L.P. Instruction updates via side channels
US11129024B2 (en) * 2018-08-21 2021-09-21 Continental Teves Ag & Co. Ohg Vehicle-to-X communication device and method for realizing a safety integrity level in vehicle-to-X communication
US11816008B2 (en) * 2018-12-24 2023-11-14 Intel Corporation Post code reporting via secure digital memory interface
CN109814552B (zh) * 2018-12-28 2024-05-24 阿波罗智能技术(北京)有限公司 车载控制单元、基于fpga的车辆自动驾驶方法及装置
KR20210008712A (ko) * 2019-07-15 2021-01-25 삼성전자주식회사 테스트 패턴 정보를 저장하는 메모리 모듈, 그것을 포함하는 컴퓨터 시스템 및 그것의 테스트 방법
EP3816741B1 (de) * 2019-10-31 2023-11-29 TTTech Auto AG Sicherheitsmonitor für erweiterte fahrerassistenzsysteme
CN110928719A (zh) * 2019-11-19 2020-03-27 深圳忆联信息系统有限公司 Ssd低功耗模式异常处理方法、装置、计算机设备及存储介质
US11204849B2 (en) * 2020-03-13 2021-12-21 Nvidia Corporation Leveraging low power states for fault testing of processing cores at runtime
KR102380506B1 (ko) 2020-10-29 2022-03-31 포스필 주식회사 전자기기 자가 진단 장치
CN112860466B (zh) * 2020-12-31 2022-11-15 东风汽车集团有限公司 一种车载娱乐系统重启故障诊断方法和系统
CN115602240A (zh) * 2021-06-28 2023-01-13 慧荣科技股份有限公司(Tw) 计算机可读取存储介质和固态硬盘装置的调试方法及装置
US11933847B2 (en) 2021-06-28 2024-03-19 Silicon Motion, Inc. Apparatus and system for debugging solid-state disk (SSD) device
US11841398B2 (en) 2021-06-28 2023-12-12 Silicon Motion, Inc. Method and apparatus and non-transitory computer-readable storage medium for debugging solid-state disk (SSD) device
US20230185633A1 (en) * 2021-12-14 2023-06-15 Texas Instruments Incorporated Distributed mechanism for fine-grained test power control
WO2024130572A1 (en) * 2022-12-21 2024-06-27 Intel Corporation Core grouping in a processor

Family Cites Families (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163153A (en) 1989-06-12 1992-11-10 Grid Systems Corporation Low-power, standby mode computer
US5522087A (en) 1994-03-22 1996-05-28 Verifone Inc. System for selectively operating in different modes depending upon receiving signal from a host computer within a time window upon power up
US5590341A (en) 1994-09-30 1996-12-31 Intel Corporation Method and apparatus for reducing power consumption in a computer system using ready delay
US5621250A (en) 1995-07-31 1997-04-15 Ford Motor Company Wake-up interface and method for awakening an automotive electronics module
US5931950A (en) 1997-06-17 1999-08-03 Pc-Tel, Inc. Wake-up-on-ring power conservation for host signal processing communication system
US6823516B1 (en) 1999-08-10 2004-11-23 Intel Corporation System and method for dynamically adjusting to CPU performance changes
US7010708B2 (en) 2002-05-15 2006-03-07 Broadcom Corporation Method and apparatus for adaptive CPU power management
US7539885B2 (en) 2000-01-13 2009-05-26 Broadcom Corporation Method and apparatus for adaptive CPU power management
JP2001318742A (ja) 2000-05-08 2001-11-16 Mitsubishi Electric Corp コンピュータシステムおよびコンピュータ読み取り可能な記録媒体
KR100361340B1 (ko) 2000-05-15 2002-12-05 엘지전자 주식회사 씨피유 클럭 제어 방법
US6792392B1 (en) 2000-06-30 2004-09-14 Intel Corporation Method and apparatus for configuring and collecting performance counter data
US6748546B1 (en) 2000-09-26 2004-06-08 Sun Microsystems, Inc. Method and apparatus for reducing power consumption
US6829713B2 (en) 2000-12-30 2004-12-07 Intel Corporation CPU power management based on utilization with lowest performance mode at the mid-utilization range
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US7058824B2 (en) 2001-06-15 2006-06-06 Microsoft Corporation Method and system for using idle threads to adaptively throttle a computer
US20030061383A1 (en) 2001-09-25 2003-03-27 Zilka Anthony M. Predicting processor inactivity for a controlled transition of power states
US7111179B1 (en) 2001-10-11 2006-09-19 In-Hand Electronics, Inc. Method and apparatus for optimizing performance and battery life of electronic devices based on system and application parameters
US6996728B2 (en) 2002-04-26 2006-02-07 Hewlett-Packard Development Company, L.P. Managing power consumption based on utilization statistics
US7051227B2 (en) 2002-09-30 2006-05-23 Intel Corporation Method and apparatus for reducing clock frequency during low workload periods
US6898689B2 (en) 2002-11-15 2005-05-24 Silicon Labs Cp, Inc. Paging scheme for a microcontroller for extending available register space
US7043649B2 (en) 2002-11-20 2006-05-09 Portalplayer, Inc. System clock power management for chips with multiple processing modules
US6971033B2 (en) 2003-01-10 2005-11-29 Broadcom Corporation Method and apparatus for improving bus master performance
KR20050115227A (ko) 2003-01-23 2005-12-07 유니버시티 오브 로체스터 다중 클록 도메인 마이크로프로세서
JP4061492B2 (ja) 2003-02-10 2008-03-19 ソニー株式会社 情報処理装置および消費電力制御方法
US7093147B2 (en) 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7272732B2 (en) 2003-06-30 2007-09-18 Hewlett-Packard Development Company, L.P. Controlling power consumption of at least one computer system
TW200502847A (en) 2003-07-08 2005-01-16 Benq Corp Control device and method for reducing number of interrupts in a processor
US7146514B2 (en) 2003-07-23 2006-12-05 Intel Corporation Determining target operating frequencies for a multiprocessor system
US7272730B1 (en) 2003-07-31 2007-09-18 Hewlett-Packard Development Company, L.P. Application-driven method and apparatus for limiting power consumption in a processor-controlled hardware platform
US7194643B2 (en) 2003-09-29 2007-03-20 Intel Corporation Apparatus and method for an energy efficient clustered micro-architecture
US7770034B2 (en) 2003-12-16 2010-08-03 Intel Corporation Performance monitoring based dynamic voltage and frequency scaling
JP2005309867A (ja) * 2004-04-22 2005-11-04 Fujitsu Ltd マルチコア・プロセサ試験方法
US20070156992A1 (en) 2005-12-30 2007-07-05 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
US7451333B2 (en) 2004-09-03 2008-11-11 Intel Corporation Coordinating idle state transitions in multi-core processors
US9001801B2 (en) 2004-09-07 2015-04-07 Broadcom Corporation Method and system for low power mode management for complex Bluetooth devices
US7941585B2 (en) 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7426648B2 (en) 2004-09-30 2008-09-16 Intel Corporation Global and pseudo power state management for multiple processing elements
US7434073B2 (en) 2004-11-29 2008-10-07 Intel Corporation Frequency and voltage scaling architecture
US7502948B2 (en) 2004-12-30 2009-03-10 Intel Corporation Method, system, and apparatus for selecting a maximum operation point based on number of active cores and performance level of each of the active cores
US8041967B2 (en) 2005-02-15 2011-10-18 Hewlett-Packard Development Company, L.P. System and method for controlling power to resources based on historical utilization data
US20060259828A1 (en) 2005-05-16 2006-11-16 Texas Instruments Incorporated Systems and methods for controlling access to secure debugging and profiling features of a computer system
US7454632B2 (en) 2005-06-16 2008-11-18 Intel Corporation Reducing computing system power through idle synchronization
US7430673B2 (en) 2005-06-30 2008-09-30 Intel Corporation Power management system for computing platform
US8301868B2 (en) 2005-09-23 2012-10-30 Intel Corporation System to profile and optimize user software in a managed run-time environment
US20070079294A1 (en) 2005-09-30 2007-04-05 Robert Knight Profiling using a user-level control mechanism
US20070106827A1 (en) 2005-11-08 2007-05-10 Boatright Bryan D Centralized interrupt controller
US20070245163A1 (en) 2006-03-03 2007-10-18 Yung-Hsiang Lu Power management in computer operating systems
JP4751216B2 (ja) * 2006-03-10 2011-08-17 株式会社東芝 半導体集積回路及びその設計装置
US7437270B2 (en) 2006-03-30 2008-10-14 Intel Corporation Performance state management
US7752468B2 (en) 2006-06-06 2010-07-06 Intel Corporation Predict computing platform memory power utilization
US7529956B2 (en) 2006-07-17 2009-05-05 Microsoft Corporation Granular reduction in power consumption
US8030649B2 (en) * 2006-07-28 2011-10-04 International Business Machines Corporation Scan testing in single-chip multicore systems
US7930564B2 (en) 2006-07-31 2011-04-19 Intel Corporation System and method for controlling processor low power states
US7730340B2 (en) 2007-02-16 2010-06-01 Intel Corporation Method and apparatus for dynamic voltage and frequency scaling
US8510581B2 (en) 2007-03-26 2013-08-13 Freescale Semiconductor, Inc. Anticipation of power on of a mobile device
JP2008257578A (ja) 2007-04-06 2008-10-23 Toshiba Corp 情報処理装置、スケジューラおよび情報処理置のスケジュール制御方法
US7971074B2 (en) 2007-06-28 2011-06-28 Intel Corporation Method, system, and apparatus for a core activity detector to facilitate dynamic power management in a distributed system
US20090150696A1 (en) 2007-12-10 2009-06-11 Justin Song Transitioning a processor package to a low power state
US8024590B2 (en) 2007-12-10 2011-09-20 Intel Corporation Predicting future power level states for processor cores
US7966506B2 (en) 2007-12-12 2011-06-21 Intel Corporation Saving power in a computer system
US8442697B2 (en) 2007-12-18 2013-05-14 Packet Digital Method and apparatus for on-demand power management
KR101459140B1 (ko) 2007-12-26 2014-11-07 엘지전자 주식회사 전원관리 제어 장치 및 방법
US8156362B2 (en) 2008-03-11 2012-04-10 Globalfoundries Inc. Hardware monitoring and decision making for transitioning in and out of low-power state
US8954977B2 (en) 2008-12-09 2015-02-10 Intel Corporation Software-based thread remapping for power savings
US8352770B2 (en) 2009-09-25 2013-01-08 Intel Corporation Method, system and apparatus for low-power storage of processor context information
US8700943B2 (en) 2009-12-22 2014-04-15 Intel Corporation Controlling time stamp counter (TSC) offsets for mulitple cores and threads
US8943334B2 (en) 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
US8949637B2 (en) 2011-03-24 2015-02-03 Intel Corporation Obtaining power profile information with low overhead
US8769316B2 (en) 2011-09-06 2014-07-01 Intel Corporation Dynamically allocating a power budget over multiple domains of a processor
US8954770B2 (en) 2011-09-28 2015-02-10 Intel Corporation Controlling temperature of multiple domains of a multi-domain processor using a cross domain margin
US9074947B2 (en) 2011-09-28 2015-07-07 Intel Corporation Estimating temperature of a processor core in a low power state without thermal sensor information
US8832478B2 (en) 2011-10-27 2014-09-09 Intel Corporation Enabling a non-core domain to control memory bandwidth in a processor
US9026815B2 (en) 2011-10-27 2015-05-05 Intel Corporation Controlling operating frequency of a core domain via a non-core domain of a multi-domain processor
US9158693B2 (en) 2011-10-31 2015-10-13 Intel Corporation Dynamically controlling cache size to maximize energy efficiency
US8943340B2 (en) 2011-10-31 2015-01-27 Intel Corporation Controlling a turbo mode frequency of a processor
CN104169832B (zh) 2012-03-13 2017-04-19 英特尔公司 提供处理器的能源高效的超频操作
WO2013137862A1 (en) 2012-03-13 2013-09-19 Intel Corporation Dynamically controlling interconnect frequency in a processor
WO2013137860A1 (en) 2012-03-13 2013-09-19 Intel Corporation Dynamically computing an electrical design point (edp) for a multicore processor
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
US10241923B2 (en) 2012-11-06 2019-03-26 International Business Machines Corporation Configurable I/O address translation data structure
US9262322B2 (en) 2013-09-17 2016-02-16 Advanced Micro Devices, Inc. Method and apparatus for storing a processor architectural state in cache memory
US20160224090A1 (en) 2015-01-30 2016-08-04 Alexander Gendler Performing context save and restore operations in a processor
US20160224098A1 (en) 2015-01-30 2016-08-04 Alexander Gendler Communicating via a mailbox interface of a processor
EP3312623B1 (de) * 2015-06-18 2022-04-13 Renesas Electronics Corporation Halbleiterbauelement und diagnostisches testverfahren
US10037227B2 (en) * 2015-12-17 2018-07-31 Intel Corporation Systems, methods and devices for work placement on processor cores

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220413590A1 (en) * 2021-06-23 2022-12-29 Maxim Integrated Products, Inc. Systems and methods for reducing power consumption in compute circuits

Also Published As

Publication number Publication date
US10620266B2 (en) 2020-04-14
US10962596B2 (en) 2021-03-30
US20190162782A1 (en) 2019-05-30
US20200300911A1 (en) 2020-09-24

Similar Documents

Publication Publication Date Title
DE102018125236A1 (de) System, Vorrichtung und Verfahren zum Selbsstest vor Ort in einem Diagnose-Ruhezustand
DE112019001522T5 (de) System, vorrichtung und verfahren zur optimierten drosselung eines prozessors
EP3329345B1 (de) Maskierung eines leistungszustandes eines prozessorkerns
US11029744B2 (en) System, apparatus and method for controlling a processor based on effective stress information
US11740682B2 (en) System, apparatus and method for loose lock-step redundancy power management
DE112020001586T5 (de) System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors
DE112019000693T5 (de) System, vorrichtung und verfahren zur bereitstellung von hardware-rückmeldungsinformationen in einem prozessor
DE202015009867U1 (de) Einrichtung zum Bereitstellen einer Wärmeparametermeldung für eine Mehrchip-Baugruppe
DE112019001001T5 (de) System, vorrichtung und verfahren für eine datengestützte niedrigenergiezustandssteuerung auf der grundlage von leistungsüberwachungsinformationen
US10289188B2 (en) Processor having concurrent core and fabric exit from a low power state
DE102020134491A1 (de) System, Vorrichtung und Verfahren zum dynamischen Justieren von Plattformenergie und -leistung basierend auf Aufgabeneigenschaften
US20180336111A1 (en) System, Apparatus And Method For Performing In-Field Self-Testing Of A Processor
US20190196573A1 (en) System, Apparatus And Method For Processor-External Override Of Hardware Performance State Control Of A Processor
DE112017004361T5 (de) Steuern eines leistungszustands eines prozessors unter verwendung einer kombination von package- und thread-hinweis-informationen
WO2019190683A1 (en) System, apparatus and method for controllable processor configuration based on a temperature specification
DE102020130910A1 (de) System, vorrichtung und verfahren für dynamische energiezustandsskalierung eines spannungsreglers für einen prozessor
US20160224090A1 (en) Performing context save and restore operations in a processor
WO2017030766A1 (en) Transparently monitoring power delivery in a processor
DE112017005000T5 (de) Prozessorspannungssteuerung unter verwendung eines beweglichen mittelwerts
DE102020127742A1 (de) System, vorrichtung und verfahren für eine global bewusste reaktive lokale leistungssteuerung in einem prozessor
DE102020128219A1 (de) System, Einrichtung und Verfahren zur Latenzüberwachung und Reaktion
KR20210091048A (ko) Soc의 동적 열 분배를 위한 시스템, 장치 및 방법
DE102018114958A1 (de) Validieren eines Abbilds für eine umkonfigurierbare Vorrichtung
DE102022121048A1 (de) Auswahl der leistungsversorgung für ein hostsystem
US11493975B2 (en) System, apparatus and method for providing power monitoring isolation in a processor

Legal Events

Date Code Title Description
R012 Request for examination validly filed