DE102021101460A1 - Prozessoren zur Konfiguration von Subsystemen während andere Prozessoren im Reset gehalten werden - Google Patents
Prozessoren zur Konfiguration von Subsystemen während andere Prozessoren im Reset gehalten werden Download PDFInfo
- Publication number
- DE102021101460A1 DE102021101460A1 DE102021101460.3A DE102021101460A DE102021101460A1 DE 102021101460 A1 DE102021101460 A1 DE 102021101460A1 DE 102021101460 A DE102021101460 A DE 102021101460A DE 102021101460 A1 DE102021101460 A1 DE 102021101460A1
- Authority
- DE
- Germany
- Prior art keywords
- processor
- instructions
- memory
- subsystem
- processing core
- 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
Links
- 230000004044 response Effects 0.000 claims abstract description 30
- 238000012545 processing Methods 0.000 claims description 232
- 238000003860 storage Methods 0.000 claims description 41
- 238000000034 method Methods 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 9
- 230000007257 malfunction Effects 0.000 claims description 5
- 238000012546 transfer Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 239000011449 brick Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/20—Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/24—Resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Abstract
Description
- HINTERGRUND
- Ein anwendungsspezifischer integrierter Schaltkreis (ASIC) ist ein integrierter Schaltkreis (IC), der für eine bestimmte Anwendung entwickelt wurde. Um den Platz auf der Leiterplatte zu reduzieren, kann ein eingebettetes Verarbeitungssubsystem, wie z. B. ein Subsystem, das ein System on Chip (SoC), einen Baseboard Management Controller (BMC) oder einen Mikroprozessor mit mehreren Funktionen enthält, einen oder mehrere ASICs enthalten. Im Allgemeinen kann ein ASIC „gehärtet“ sein und es ist schwierig, ihn nach der Herstellung zu ändern. Die monetären und personellen Kosten für den Spin (d. h. den Neuaufbau, einschließlich Redesign und Refabrication) eines neuen oder modifizierten ASICs können erheblich sein.
- Figurenliste
-
-
-
-
-
-
- In den
-
-
-
- DETAILLIERTE BESCHREIBUNG
- Ein bestimmter anwendungsspezifischer integrierter Schaltkreis (ASIC) kann in verschiedenen Versionen eines Produkts verwendet werden, und jede dieser Versionen stellt eine andere Umgebung für den ASIC dar. Aus verschiedenen Gründen (z. B. monetäre Kosten, Personalkosten und Produktentwicklungszeiten) kann es vorteilhaft sein, den ASIC für eine bestimmte Umgebung zu modifizieren, ohne einen ASIC-Spin (d. h. ohne einen weiteren Round Trip durch einen Design-, Engineering- und Fertigungszyklus).
- Als spezifischeres Beispiel kann der ASIC ein Baseboard-Management-Controller sein, der in einer Reihe von Computersystemumgebungen verwendet werden kann, z. B. in den Umgebungen, die einer Reihe von verschiedenen Servermodellen entsprechen, die den Baseboard-Management-Controller enthalten. Der Baseboard-Management-Controller kann verschiedene Komponenten enthalten, die mit der Umgebung außerhalb des Baseboard-Management-Controllers interagieren. Beispielsweise ermöglichen ein Speicher-Controller und eine physische Speicherschnittstelle des Baseboard-Management-Controllers, dass der Baseboard-Management-Controller auf externe Speichergeräte, die mit dem Baseboard-Management-Controller verbunden sind, zugreifen kann (z. B. Lesen von und Schreiben in diese). Der Speicher-Controller und die Speicherschnittstelle können eine relativ große Anzahl von Einstellungen haben, die von den spezifischen Eigenschaften der externen Speichergeräte abhängen. Beispielsweise können die Einstellungen für die Speicherschnittstelle davon abhängen, ob es sich bei den externen Speichergeräten um Geräte mit doppelter Datenrate 3 (DDR3) oder DDR4 handelt, vom verwendeten Fehlerkorrekturcode (ECC), vom Typ des dynamischen Direktzugriffsspeichers (DRAM), von der Speicherlatenz, von der Terminierungsstärke und so weiter. Darüber hinaus können sich die Einstellungen der Speicherschnittstelle zusätzlich zu den Schnittstellen mit verschiedenen Komponenten und der Anpassung an die Eigenschaften dieser Komponenten für unterschiedliche Umgebungen aus anderen Gründen ändern. Zum Beispiel kann eine unterschiedliche physikalische Gehäuseplatzierung zwischen dem Baseboard-Management-Controller und den angeschlossenen Speichergeräten zu unterschiedlichen Einstellungen für die Speicherschnittstelle führen.
- Ein Ansatz, um eine benutzerdefinierte Konfiguration eines ASIC zu ermöglichen, besteht darin, dass ein Mikrocontroller oder Prozessor des ASICs Firmware-Befehle ausführt, die verschiedene Parameter der Subsysteme des ASICs festlegen. Zum Beispiel kann ein Baseboard-Management-Controller einen oder mehrere Allzweck-Verarbeitungskerne (z. B. Advanced RISC Machine (ARM)-Verarbeitungskerne) enthalten, die Firmware für den Baseboard-Management-Controller ausführen. Die Firmware kann für eine bestimmte Computersystemumgebung modifiziert werden, so dass die modifizierte Firmware darauf zugeschnitten ist, die Subsysteme des Baseboard-Management-Controllers für diese bestimmte Umgebung zu konfigurieren. Die Verwendung solcher Firmware-Modifikationen kann jedoch auf bestimmte Herausforderungen stoßen. Beispielsweise ist die vom Baseboard-Management-Controller ausgeführte Firmware typischerweise relativ komplex, und die Modifizierung der Firmware für jede Computersystemumgebung kann Risiken mit sich bringen, zusätzlichen Aufwand verursachen und die Zeit für die Integration des Baseboard-Management-Controllers in das Produkt erhöhen
- Die Verwendung des/der Allzweck-Verarbeitungskerns/Core(s) zur Konfiguration von Subsystemen des Baseboard-Management-Controllers kann das Computersystem sicherheitsrelevanten Problemen aussetzen. Wenn z. B. für die Initialisierung des Speicher-Controllers oder der Speicherschnittstelle des Basisplatinen-Verwaltungscontrollers auf Firmware zurückgegriffen wird, kann die Freigabe des/der Allzweck-Verarbeitungskerns/Core(s) nach dem Zurücksetzen, um die Firmware vor der Speicherinitialisierung auszuführen, Sicherheitsbedenken aufwerfen und nicht zulassen, dass auf den Speicher für bestimmte Funktionen zurückgegriffen werden kann.
- Darüber hinaus kann der Basisplatinen-Verwaltungscontroller beim Einschalten auf ein Problem stoßen (ein Root-of-Trust-bezogener kryptografischer Fehler, ein Hardware-Fehler usw.), das verhindert, dass die Allzweckverarbeitungskerne aus dem Reset freigegeben werden. In diesem Fall werden die Subsysteme des Basisplatinen-Verwaltungs-Controllers von der Firmware nicht konfiguriert, was dazu führen kann, dass das Problem nicht gemeldet werden kann. Beispielsweise kann der Baseboard-Management-Controller einen Video-Controller enthalten, der auf den Videospeicher zugreift, der mit dem Baseboard-Management-Controller verbunden ist. Auf den Video-Controller kann von einer zentralen Verarbeitungseinheit (CPU) des Computersystems zugegriffen werden. Obwohl die CPU des Computersystems erkennen kann, dass der Basisplatinen-Verwaltungscontroller eine Fehlfunktion aufweist, kann die CPU nicht auf den Videospeicher zugreifen, um Fehlermeldungen zu melden, wenn die Speicherschnittstelle des Basisplatinen-Verwaltungscontrollers nicht konfiguriert wurde (weil der/die Allzweckverarbeitungskern(e) des Basisplatinen-Verwaltungscontrollers nicht aus dem Reset freigegeben wurden).
- Gemäß Beispielimplementierungen kann ein eingebettetes Verarbeitungssystem (z. B. ein Baseboard-Management-Controller, ein System on a Chip (SoC) usw.) einen Konfigurator und einen oder mehrere Allzweckverarbeitungskerne enthalten. Der Konfigurator konfiguriert beim Einschalten autonom ein oder mehrere Subsysteme des eingebetteten Verarbeitungssystems, während der/die Allzweckverarbeitungskern(e) im Reset verbleiben. In diesem Zusammenhang bezieht sich ein „eingebettetes Verarbeitungssystem“ auf ein prozessorbasiertes System, das einen oder mehrere Allzweckverarbeitungskerne enthält und eine oder mehrere dedizierte Funktionen in einem größeren System, wie einem Computersystem (z. B. einem Desktop, einem Laptop, einem Server usw.), ausführt. In Übereinstimmung mit einigen Implementierungen kann das eingebettete Verarbeitungssystem ein oder mehrere Halbleiterpakete (oder „Chips“) enthalten, und das/die Halbleiterpaket(e) kann/können ein oder mehrere Halbleiterchips enthalten. Darüber hinaus bezieht sich im Kontext dieser Anwendung der „autonom“ agierende Konfigurator auf den Konfigurator, der separat oder unabhängig von einem der allgemeinen Verarbeitungskerne des eingebetteten Verarbeitungssystems arbeitet.
- In Übereinstimmung mit Beispielimplementierungen enthält der Konfigurator einen Master-Prozessor, der ein bestimmtes Subsystem des eingebetteten Verarbeitungssystems konfiguriert, und der Konfigurator enthält einen oder mehrere Slave-Prozessoren, die ein oder mehrere andere Subsysteme des eingebetteten Verarbeitungssystems konfigurieren. In Übereinstimmung mit einigen Implementierungen kann der Master-Prozessor beispielsweise einen Speicher-Controller des eingebetteten Verarbeitungssystems konfigurieren, und ein bestimmter Slave-Prozessor kann eine physische Speicherschnittstelle des eingebetteten Verarbeitungssystems konfigurieren.
- Die Master- und Slave-Prozessoren können unterschiedlichen Bus-Kommunikationsprotokollen zugeordnet sein, so dass z. B. der Master-Prozessor über ein bestimmtes Bus-Protokoll (z. B. ein Advanced High-Performance Bus (AHB)-Protokoll) kommunizieren kann, um einen Speicher-Controller des eingebetteten Verarbeitungssystems zu konfigurieren, während ein bestimmter Slave-Prozessor über ein anderes Bus-Protokoll (z. B. ein Advanced Peripheral Bus (APB)-Protokoll) kommunizieren kann, um eine physikalische Speicherschnittstelle des eingebetteten Verarbeitungssystems zu konfigurieren.
- Wie hierin verwendet, bezieht sich ein „Subsystem“ auf einen bestimmten Teil des eingebetteten Verarbeitungssystems, der eine bestimmte Funktion für die eingebettete Funktion ausführt, wie z. B. ein Speicher-Controller, eine physische Speicherschnittstelle, ein Video- oder Display-Controller, ein Spannungsregelungs-Subsystem, eine serielle Hochgeschwindigkeitsschnittstelle (z. B. eine Peripheral Component Interconnect Express (PCIe)-Schnittstelle, eine Ethernet-Schnittstelle, eine Serial Attached SCSI (SAS)-Schnittstelle, eine Serial AT Attachment (SATA)-Schnittstelle oder eine Universal Serial Bus (USB) 3-Schnittstelle) usw. Im Allgemeinen konfiguriert der Konfigurator, wie hier beschrieben, die Subsysteme des eingebetteten Verarbeitungssystems für die spezifische Computersystemumgebung, in der das eingebettete Verarbeitungssystem verwendet wird.
- In Übereinstimmung mit Beispielimplementierungen kann der Hauptprozessor einen Hauptverarbeitungskern (z. B. einen eingebetteten Mikrocontroller) enthalten, der maschinenausführbare Befehle ausführt, die in einem nichtflüchtigen Speicher (z. B. einem Festwertspeicher (ROM)) des Hauptprozessors gespeichert sind. In diesem Zusammenhang bezieht sich eine „Anweisung“ auf eine Gruppe von Bits, die von einem Prozessor (z. B. einem Verarbeitungskern) verarbeitet bzw. ausgeführt werden, um den Prozessor zu veranlassen, eine Funktion auszuführen. Die Anweisung enthält einen Befehl, der die auszuführende Funktion oder Aktion darstellt, und einen oder mehrere Operanden, die eine oder mehrere Entitäten (z. B. Adressen, Daten, Masken) darstellen, mit denen gearbeitet wird, um die Funktion oder Aktion auszuführen. Darüber hinaus kann, wie hier beschrieben, der Befehlsoperand auch einen eingebetteten Befehl für einen Slave-Prozessor enthalten.
- Der nichtflüchtige Speicher des Hauptprozessors kann Gruppen von Befehlen speichern, wobei die Gruppen verschiedenen möglichen Konfigurationen des Subsystems entsprechen können, das vom Hauptprozessor konfiguriert wird. So kann eine Gruppe von Anweisungen beispielsweise dem Setzen eines oder mehrerer Konfigurations- und Statusregister (CSRs) einer Speicherschnittstelle des eingebetteten Verarbeitungssystems für eine Version eines Servers entsprechen, der das eingebettete Verarbeitungssystem enthält, und eine andere Gruppe von Anweisungen kann dem Setzen der CSRs für eine andere Version eines Servers entsprechen, der das eingebettete Verarbeitungssystem enthält.
- Der nichtflüchtige Speicher des Hauptprozessors kann auch Fallbefehle speichern, wobei die Ausführung eines bestimmten Fallbefehls die Auswahl einer bestimmten Gruppe von auszuführenden Befehlen durch den Hauptverarbeitungskern anweist, basierend auf einem Bitvektor von Daten, die dem eingebetteten Verarbeitungssystem bereitgestellt werden. Auf diese Weise kann, wie hierin weiter beschrieben, in Übereinstimmung mit einigen Implementierungen eine Komponente, die sich außerhalb des eingebetteten Verarbeitungssystems befindet, wie z. B. eine programmierbare Logikvorrichtung (PLD), Daten speichern, die einen Bitvektor von Daten darstellen, und die PLD liefert den Bitvektor von Daten an das eingebettete Verarbeitungssystem beim Einschalt-Reset des eingebetteten Verarbeitungssystems. Wie hier weiter beschrieben, identifiziert die Fallanweisung gemäß Beispielimplementierungen bestimmte Bitpositionen des Bitvektors von Daten, und die den identifizierten Bits entsprechenden Bits wählen eine bestimmte Gruppe von Anweisungen (die der Fallanweisung folgen) aus, die auszuführen sind.
- In Übereinstimmung mit Beispielimplementierungen kann der Master-Verarbeitungskern einen Befehl ausführen, der Operanden enthält, die zusammen einen Befehl für einen bestimmten Slave-Prozessor darstellen. Genauer gesagt, kann der Master-Prozessor gemäß einigen Implementierungen über einen Befehlsbus mit den Slave-Prozessoren verbunden sein; und der Befehlsbus kann Dekodiersignale enthalten, die zur Auswahl verschiedener Slave-Prozessoren verwendet werden. Genauer gesagt kann eine bestimmte Anweisung, die vom Master-Verarbeitungskern ausgeführt wird, Operanden enthalten, die eine eingebettete Anweisung festlegen, die von einem bestimmten Slave-Prozessor ausgeführt werden soll, und der Master-Verarbeitungskern kann die eingebettete Anweisung an den Anweisungsbus liefern und das entsprechende Dekodierungssignal aktivieren, so dass der Slave-Prozessor die Anweisung vom Anweisungsbus abrufen und anschließend die Anweisung ausführen kann.
- In Übereinstimmung mit einigen Implementierungen kann der Slave-Prozessor einen Slave-Verarbeitungskern (z. B. einen eingebetteten Mikrocontroller) sowie einen Speicher (z. B. einen nichtflüchtigen Speicher) enthalten, der Befehle zur Ausführung durch den Slave-Prozessor speichert. In Übereinstimmung mit einigen Implementierungen kann der Slave-Prozessor Befehle ausführen, die über den Befehlsbus an den Slave-Prozessor weitergeleitet werden.
- Bezug nehmend auf
140 zum Zwecke der Initialisierung oder Konfiguration eines oder mehrerer Subsysteme150 des eingebetteten Verarbeitungssystems umfasst. Bei der in100 , wie z. B. ein Server, ein Client, ein Desktop-Computer, ein Laptop-Computer, ein Tablet-Computer, ein Smartphone, ein tragbarer Computer, ein rackmontiertes Modul usw. Bei der in130 , obwohl das eingebettete Verarbeitungssystem in Übereinstimmung mit weiteren Implementierungen eine beliebige Anzahl anderer eingebetteter Verarbeitungssysteme sein kann, wie z. B. ein ASIC, der kein Baseboard-Management-Controller ist, ein SoC, ein Mikroprozessor, ein Mikrocontroller und so weiter. - Wie hierin verwendet, ist ein „Baseboard-Management-Controller“ ein spezialisierter Serviceprozessor, der den physischen Zustand eines Servers oder anderer Hardware mithilfe von Sensoren überwacht und mit einem Managementsystem über ein Management-Netzwerk kommuniziert. Der Baseboard-Management-Controller kann auch mit Anwendungen kommunizieren, die auf Betriebssystemebene über einen IOCTL-Schnittstellentreiber (Input/Output Controller), eine REST-Anwendungsprogrammschnittstelle (API) oder einen anderen Systemsoftware-Proxy ausgeführt werden, der die Kommunikation zwischen dem Baseboard-Management-Controller und den Anwendungen erleichtert. Der Baseboard-Management-Controller kann auf Hardware-Ebene auf Hardware-Geräte zugreifen, die sich in einem Server-Chassis befinden, einschließlich Systemspeicher. Der Baseboard-Management-Controller kann in der Lage sein, die Hardware-Geräte direkt zu modifizieren. Der Baseboard-Management-Controller kann unabhängig vom Betriebssystem des Systems arbeiten, in dem der Baseboard-Management-Controller angeordnet ist. Der Baseboard-Management-Controller kann sich auf der Hauptplatine oder der Hauptplatine des Servers oder eines anderen zu überwachenden Geräts befinden. Die Tatsache, dass ein Baseboard-Management-Controller auf einer Hauptplatine des zu überwachenden Servers/der zu überwachenden Hardware montiert oder anderweitig mit dem zu überwachenden Server/der zu überwachenden Hardware verbunden oder daran angebracht ist, verhindert nicht, dass der Baseboard-Management-Controller als „getrennt“ vom Server/der Hardware betrachtet wird. Wie hierin verwendet, hat ein Baseboard-Management-Controller Verwaltungsfunktionen für Subsysteme eines Computergeräts und ist getrennt von einer Verarbeitungsressource, die ein Betriebssystem eines Computergeräts ausführt. Der Baseboard-Management-Controller ist von einem Prozessor, wie z. B. einer Zentraleinheit, getrennt, der ein High-Level-Betriebssystem oder einen Hypervisor auf einem System ausführt.
- Gemäß Beispielimplementierungen enthält das Computersystem
100 eine oder mehrere Zentraleinheiten (CPUs)102 (z. B. CPU-Verarbeitungskerne, Halbleiter, die CPU-Prozessorkerne enthalten) und Speichervorrichtungen, die mit der/den CPU(s) verbunden sind, um einen Systemspeicher104 zu bilden. Die CPU(s)102 kann/können mit einer Eingangs-/Ausgangsbrücke (I/O)106 gekoppelt sein. Darüber hinaus kann das Computersystem100 , wie ebenfalls in110 (z. B. PCIe-Erweiterungskarten) enthalten, die über entsprechende individuelle PCIe-Busse108 mit der/den CPU(s)102 gekoppelt sein können. Gemäß einer weiteren Beispielimplementierung kann das/die PCIe-Gerät(e)110 mit der E/A-Brücke106 gekoppelt sein, anstatt mit der/den CPU(s)102 gekoppelt zu sein. - Im Allgemeinen können die Speichervorrichtungen, die den Systemspeicher
104 bilden, sowie andere hierin beschriebene Speichervorrichtungen aus nicht transitorischen Speichervorrichtungen gebildet werden, wie z. B. Halbleiterspeichervorrichtungen, Flash-Speichervorrichtungen, Memristoren, Phasenwechselspeichervorrichtungen, einer Kombination aus einer oder mehreren der vorgenannten Speichertechnologien usw. Darüber hinaus können die Speichervorrichtungen flüchtige Speichervorrichtungen (z. B. dynamische Direktzugriffsspeicher (DRAM)-Vorrichtungen, statische Direktzugriffsspeicher (SRAM)-Vorrichtungen und so weiter) oder nichtflüchtige Speichervorrichtungen (z. B. Flash-Speicher-Vorrichtungen, Festwertspeicher (ROM)-Vorrichtungen und so weiter) sein, sofern hier nicht anders angegeben. - Im Allgemeinen kann die E/A-Brücke106 die CPU(s)
102 mit dem Baseboard-Management-Controller130 , einem oder mehreren Speichergeräten122 , einem oder mehreren Netzwerkschnittstellen-Controllern (NICs)124 , einem oder mehreren USB-Geräten (Universal Serial Bus)126 usw. verbinden. - Im Allgemeinen enthält der Basisplatinen-Verwaltungscontroller
130 Allzweck-Verarbeitungskern(e)154 (z. B. ARM-Verarbeitungskerne), die der Basisplatinen-Verwaltungscontroller130 beim Einschalten im Reset hält. Nach der Durchführung anfänglicher Root-of-Trust-Sicherheitsprüfungen sowie anderer Prüfungen (z. B. Hardware-Fehlerprüfungen) gibt der Baseboard-Management-Controller130 den/die Allzweck-Verarbeitungskern(e)154 aus dem Reset frei. Genauer gesagt ist der Baseboard-Management-Controller130 gemäß Beispielimplementierungen mit einem externen nichtflüchtigen Speicher168 gekoppelt, der Firmware170 speichert, die von dem Baseboard-Management-Controller130 validiert und von einer CPU102 ausgeführt wird, um das Computersystem100 zu starten. In Übereinstimmung mit Beispielimplementierungen enthält der Baseboard-Management-Controller130 eine Hardware Root of Trust (RoT)-Engine143 . Gemäß Beispielimplementierungen speichert die RoT-Engine143 einen unveränderlichen Fingerabdruck, der verwendet wird, um maschinenausführbare Anweisungen zu validieren. Genauer gesagt lädt die RoT-Engine143 als Reaktion auf das Booten des Baseboard-Management-Controllers130 einen Teil der Firmware170 und legt den Teil der Firmware in einem Speicher297 des Baseboard-Management-Controllers130 ab, sichert den Speicher297 , validiert den Teil der Firmware170 (unter Verwendung des unveränderlichen Fingerabdrucks) und sperrt den Inhalt des Speichers297 , so dass der Inhalt nicht verändert werden kann. Wenn der/die Allzweckverarbeitungskern(e)154 aus dem Reset herausgenommen werden, rufen der/die Kern(e)154 die Anweisungen im sicheren Speicher297 ab (der validiert und gegen zukünftige Änderungen gesperrt wurde). Die Firmware-Befehle im Speicher297 werden von dem (den) Mehrzweck-Verarbeitungskern(en) ausgeführt, um den nächsten Teil der Firmware170 zu validieren, der aus dem Speicher168 ausgeführt werden kann oder nach Beendigung der Ausführung von Patch-Befehlen (hierin weiter beschrieben) aus einem flüchtigen Speicher164 (z. B. einem Speicher, der aus Double Data Rate (DDR) 4 DRAM-Bauteilen gebildet wird) kopiert und ausgeführt werden kann, der sich außerhalb des Basisplatinen-Management-Controllers130 befindet. In Übereinstimmung mit Beispielimplementierungen kann die Validierung von Komponenten des Computersystems100 stufenweise erfolgen (Teil 1 validiert Teil 2, bevor er ausgeführt werden darf, usw.), und die „Wurzel“ des Prozesses wird in Hardware von der RoT-Engine143 ausgeführt. - Wie ebenfalls in
130 einen Video-Controller131 enthalten, der von der/den CPU(s)102 des Computersystems100 konfiguriert werden kann. Der Speicher164 kann von dem Videocontroller131 und dem/den Allzweckverarbeitungskern(en)154 gemeinsam genutzt werden, so dass gemäß Beispielimplementierungen ein Videocontroller-Bildpuffer in dem Speicher164 gespeichert werden kann. In Übereinstimmung mit Beispielimplementierungen ist der Videocontroller131 mit einer Anzeige105 gekoppelt. - Wie hierin beschrieben, arbeitet der Konfigurator
140 in Übereinstimmung mit Beispielimplementierungen autonom oder unabhängig in Bezug auf den/die Mehrzweck-Verarbeitungskern(e)154 des Basisplatinen-Management-Controllers130 , um die Subsysteme150 des Basisplatinen-Management-Controllers130 zu initialisieren oder zu konfigurieren. Genauer gesagt arbeitet der Konfigurator140 in Übereinstimmung mit Beispielimplementierungen, um die Subsysteme150 zu konfigurieren, während der Basisplatinen-Verwaltungscontroller130 den/die Mehrzweck-Verarbeitungskern(e)154 beim Einschalten oder Hochfahren des Basisplatinen-Verwaltungscontrollers130 in einem Reset-Zustand hält. - Darüber hinaus steuert der Baseboard-Management-Controller
130 , wie hier weiter beschrieben, Schalter141 des Controllers130 , um den Konfigurator140 mit den Subsystemen150 zu koppeln und den/die Allzweckverarbeitungskern(e)154 von den Subsystemen150 zu isolieren, während der Konfigurator140 die Subsysteme150 konfiguriert. So haben der/die Allzweckverarbeitungskern(e)154 des Basisplatinenmanagement-Controllers130 keinen Zugriff auf die Subsysteme150 , bis die Subsysteme150 vom Konfigurator140 auf die entsprechenden grundlegenden Funktionsebenen konfiguriert worden sind. Diese Basisfunktionalität kann vorteilhaft sein, um ein „Bricking“ des Baseboard-Management-Controllers130 (und möglicherweise ein Bricking des Computersystems100 ) zu vermeiden, ohne dass ein Hinweis darauf vorliegt, warum dies geschehen ist. Beispielsweise können die Subsysteme150 Schnittstellen sein (z. B. eine physische Speicherschnittstelle und ein Speicher-Controller), die die Anzeige von Informations- und Fehlermeldungen an den Endbenutzer über den Speicher164 ermöglichen. Genauer gesagt, gemäß Beispielimplementierungen, wenn der Baseboard-Management-Controller130 eine Fehlfunktion aufweist (z. B. eine Fehlfunktion aufgrund eines Hardwarefehlers, eines Fehlers bei der kryptografischen Schlüsselüberprüfung usw.), dann können die CPU(s)102 die Fehlfunktion erkennen und Fehlermeldungen auf dem Display105 unter Verwendung des Videocontrollers131 innerhalb des Baseboard-Management-Controllers130 anzeigen, da der Speichercontroller und die physischen Speicherschnittstellen jeweils durch den Konfigurator140 auf eine Grundstufe initialisiert wurden. - Wie ebenfalls in
160 (z. B. ein komplexes PLD (cPLD)) mit dem Basisboard-Verwaltungs-Controller130 verbunden sein und, wie hierin weiter beschrieben, verwendet werden, um Daten, die einen Bitvektor von Daten darstellen, an den Basisboard-Verwaltungs-Controller130 als Reaktion auf den Übergang des Basisboard-Verwaltungs-Controllers130 von einem Einschalt-Reset zu übermitteln. Dieser Bitvektor von Daten, wie hierin weiter beschrieben, kann verwendet werden, um die Freigabe des/der Allzweckverarbeitungskerns/-kerne154 aus dem Reset zu steuern, und kann verwendet werden, um Gruppen von Anweisungen zu identifizieren, die vom Konfigurator140 ausgeführt werden sollen, um anzupassen, wie die bestimmten Subsysteme150 konfiguriert sind. Darüber hinaus kann das PLD160 , wie ebenfalls hierin beschrieben, Daten speichern, die eine „Patch-Tabelle“ darstellen, wobei Datensätze der Patch-Tabelle von dem/den Allzweckverarbeitungskern(en)154 ausgeführt werden können (nachdem der/die Kern(e)154 aus dem Reset freigegeben wurde(n)), um ein oder mehrere Subsysteme150 weiter zu konfig u rieren. - In
130 dargestellt, obwohl der Baseboard-Management-Controller130 eine beliebige von einer Reihe von Architekturen haben kann, die von der in130 mit dem externen PLD160 über eine cPLD-Schnittstelle (hier als „CIF-Bus212 “ bezeichnet) unter Verwendung einer CIF-Bus-Engine280 . Der Baseboard-Management-Controller130 umfasst eine Reset-Steuerungsschaltung284 , um zu steuern, wann der/die Allzweck-Verarbeitungskern(e)154 im Reset-Zustand gehalten wird/werden; und eine SPI-Engine (Serial Peripheral Interface) 290, die es dem Baseboard-Management-Controller130 ermöglicht, mit dem externen Speicher168 zu kommunizieren, der die Firmware170 speichert. - Wie in
170 in Übereinstimmung mit Beispielimplementierungen Boot-Befehle294 , die den anfänglichen Teil der Befehle enthalten, die von der RoT-Engine143 in den Speicher297 geladen und von dem/den allgemeinen Verarbeitungskern(en)154 ausgeführt werden, wenn sie aus dem Reset freigegeben werden. Wie oben beschrieben, holen der/die allgemeine(n) Verarbeitungskern(e)154 gemäß Beispielimplementierungen Anweisungen in den sicheren Speicher297 und führen die Anweisungen aus, um den nächsten Teil der Firmware170 zu validieren, der aus dem Speicher168 ausgeführt werden kann oder nach Beendigung der Ausführung von Patch-Anweisungen (hierin weiter beschrieben) aus dem flüchtigen Speicher164 kopiert und ausgeführt werden kann. - Wie in
170 Systemverwaltungsanweisungen296 enthalten, die aus dem Speicher168 in den Speicher164 kopiert werden, wo die Anweisungen296 von dem/den Mehrzweckverarbeitungskern(en)154 ausgeführt werden, um Laufzeit-Systemverwaltungsfunktionen des Basisplatinen-Verwaltungscontrollers130 auszuführen, wie z. B. die Kommunikation mit einem Fernverwaltungsserver, die Kommunikation mit, die Überwachung und möglicherweise die Änderung von Hardwarekomponenten des Computersystems100 , die Kommunikation mit Anwendungen, die auf dem Computersystem100 ausgeführt werden, usw. - In Übereinstimmung mit Beispielimplementierungen enthält der Konfigurator
140 einen Master-Prozessor230 , der speziell für die Konfiguration oder Initialisierung eines bestimmten Subsystems150 (hier Subsystem150-1 für das in150 des Basisplatinen-Management-Controllers130 konstruiert sein kann. Der Hauptprozessor230 umfasst gemäß Beispielimplementierungen einen Hauptverarbeitungskern236 , bei dem es sich um einen eingebetteten Mikrocontroller handeln kann, der autonom oder unabhängig in Bezug auf den/die Mehrzweckverarbeitungskern(e)154 arbeitet. Gemäß einer Beispielimplementierung kann der Hauptverarbeitungskern236 unter Verwendung einer Register Transfer Language (RTL)-Abstraktion in der Hardware Design Language (HDL) implementiert werden. - Im Allgemeinen kann der Hauptverarbeitungskern
236 relativ stark auf die spezifische Aufgabe der Konfiguration eines bestimmten Teilsystems150 , wie z. B. des Teilsystems150-1 , wie in236 führt gemäß Beispielimplementierungen Anweisungen234 aus, die in einem nichtflüchtigen Speicher des Hauptprozessors230 gespeichert sind, z. B. in einem Hauptfestwertspeicher (ROM)232 , wie in234 in einem nichtflüchtigen Speicher, der aktualisiert werden kann, wie dem Master-ROM232 , im Gegensatz zu beispielsweise fest kodierten Befehlen für den Verarbeitungskern236 , ermöglicht Flexibilität für die Änderung der Konfiguration des Teilsystems150-1 ohne die Notwendigkeit eines vollständigen Metallschicht-Spins (d. h. ohne eine weitere Reise durch einen Design-, Engineering-Fertigungszyklus). - Als spezifischeres Beispiel kann in Übereinstimmung mit einigen Implementierungen das Subsystem
150-1 ein Speicher-Controller für den externen Speicher164 sein, und ein anderes Subsystem150 , wie z. B. Subsystem150-N , kann eine physikalische Speicherschnittstelle für den Speicher164 sein. Wenn beispielsweise eine Zeitverzögerung zwischen dem Einstellen eines Parameters für den Speicher-Controller und dem Einschalten der physischen Speicherschnittstelle geändert werden soll, kann der Master-ROM232 relativ einfach und ohne Auswirkungen auf einen nachfolgenden Freigabeplan für den Baseboard-Management-Controller130 aktualisiert werden. - In Übereinstimmung mit weiteren Beispielimplementierungen kann der Master-Prozessor
230 (und der Master-Verarbeitungskern236 ) verwendet werden, um ein anderes Subsystem als einen Speicher-Controller zu konfigurieren. In Übereinstimmung mit Beispielimplementierungen können die Subsysteme150 , die vom Konfigurator140 (entweder über den Master-Prozessor230 oder über einen Slave-Prozessor260 , wie hierin weiter beschrieben) konfiguriert werden können, beispielsweise eine physikalische Speicherschnittstelle, den Videocontroller131 oder eine Spannungsversorgung umfassen. Darüber hinaus kann gemäß einigen Implementierungen eine serielle Hochgeschwindigkeits-Kommunikationsschnittstelle292 des Baseboard-Management-Controllers130 ein Subsystem150 sein, das vom Konfigurator140 konfiguriert wird. Auf diese Weise kann die serielle Hochgeschwindigkeitskommunikationsschnittstelle292 über eine physikalische und eine Verbindungsschicht verfügen, die (über CSR-Register) so programmiert werden können, dass sie eine beliebige Anzahl verschiedener Protokolle implementieren, wie z. B. PCIe- und Infiniband-Protokolle. In Übereinstimmung mit einigen Implementierungen kann die CPU(s)102 über die Kommunikationsschnittstelle292 mit Komponenten des Basisband-Verwaltungscontrollers130 , wie z. B. dem Videocontroller131 , kommunizieren. - Als Beispiel kann der Master-ROM
232 gemäß einigen Implementierungen eine Breite von 84 Bit und eine Tiefe von128 Einträgen haben, wodurch128 Befehle234 im Master-ROM232 gespeichert werden können. Der Master-ROM232 kann gemäß weiteren Implementierungen andere Breiten und Eintragstiefen haben. - Wie in
236 in Übereinstimmung mit einigen Implementierungen mit dem Subsystem150-1 unter Verwendung eines Advanced High-Performance Bus (AHB) kommunizieren, und der Hauptverarbeitungskern236 kann den AHB mit dem/den Mehrzweckverarbeitungskern(en)154 in einer Zeitmultiplexweise teilen. Auf diese Weise kann der Hauptverarbeitungskern236 gemäß Beispielimplementierungen einen Schalter oder Multiplexer242 (einen der Schalter141 ) steuern, um zu kontrollieren, ob 1. der Hauptverarbeitungskern236 mit einem AHB-Segment246 verbunden ist, das mit dem Subsystem150-1 verbunden ist, oder 2. alternativ, ob der/die Mehrzweckverarbeitungskern(e)154 mit dem AHB-Segment246 verbunden sind. Genauer gesagt ist gemäß Beispielimplementierungen der Hauptverarbeitungskern236 mit einem AHB-Segment240 gekoppelt, das ein Eingang des Multiplexers242 ist; und der/die Allzweckverarbeitungskern(e)154 sind mit einem anderen AHB-Segment244 gekoppelt, das einem anderen Eingang des Multiplexers242 entspricht. Das Subsystem150-1 ist mit einem weiteren AHB-Segment246 gekoppelt, das mit einem Ausgang des Multiplexers242 gekoppelt ist. - Während der Anfangsphase beim Einschalt-Reset, in der der Konfigurator
140 die Subsysteme150 konfiguriert (und während der der/die Mehrzweckverarbeitungskern(e)154 im Reset gehalten werden), steuert der Hauptverarbeitungskern236 den Multiplexer242 , um die AHB-Bussegmente240 und246 miteinander zu koppeln und den/die Mehrzweckverarbeitungskern(e)154 vom Subsystem150-1 zu isolieren. Mit dieser Multiplexerkonfiguration kann der Hauptverarbeitungskern236 mit dem Subsystem150-1 kommunizieren, um das Subsystem150-1 zu konfigurieren, d. h. um Steuer- und Statusregister248 des Subsystems150-1 zu lesen und zu beschreiben. In ähnlicher Weise kann der Hauptverarbeitungskern236 andere Multiplexer steuern (d. h. andere Schalter141 steuern), um andere Subsysteme150 von den Allzweckverarbeitungskernen150 zu isolieren und die Konfiguration dieser anderen Subsysteme zu ermöglichen, wie hierin weiter beschrieben. Wenn die Konfiguration der Subsysteme150 abgeschlossen ist, kann der Hauptverarbeitungskern236 gemäß Beispielimplementierungen die Multiplexer weiter steuern, um die Komponenten des Konfigurators140 von den Subsystemen150 zu isolieren und den/die Mehrzweckverarbeitungskern(e)154 physisch mit dem Subsystem150 zu verbinden, so dass der/die Kern(e)154 die nun konfigurierten Subsysteme150 verwenden kann/können. - Gemäß Beispielimplementierungen können die Befehle
234 , die im Master-ROM232 gespeichert sind, ein Befehlsformat haben, das in einer Tabelle 300 von302 der Tabelle 300 dargestellt. Bezogen auf die Spalte302 entspricht „RMW“ einem Lese-Änderungs-Schreib-Befehl; „POL“ entspricht einem Abfragebefehl; „JMP“ entspricht einem Sprungbefehl; „DLY“ entspricht einem Verzögerungsbefehl; „NOP“ entspricht einem Befehl für keine Operation; „CAS“ entspricht einem Fallbefehl eines Fallbefehls (weiter unten beschrieben); und „DFI“ entspricht einem Befehl für einen Befehl (weiter unten beschrieben), der einen eingebetteten Befehl für einen Slave-Prozessor260 enthält. - In den Spalten
306 ,308 und310 sind Operandenfelder für die Befehle gemäß einer Beispielimplementierung dargestellt, und Spalte312 enthält Beschreibungen für die Befehle Lesen-Ändern-Schreiben, Schreiben und Abfragen. Für den Sprungbefehl beispielsweise enthält das 16-Bit-Operandenfeld OP1[19:4] (dargestellt in Spalte306 ) Bits, die einen Zeiger auf den nächsten auszuführenden Befehl darstellen. Als weiteres Beispiel für den Verzögerungsbefehl enthält das Operandenfeld [5:4] Bits, die eine bestimmte Verzögerung darstellen, z. B. eine Verzögerung von einer Anzahl von Mikrosekunden (d. h., [5:4]=„b10“, wobei „b“ eine binäre Darstellung bezeichnet), wobei die Anzahl der Mikrosekunden durch die Bits in einem 32-Bit-Operandenfeld OP2[51:20] festgelegt wird. Wie in Spalte310 dargestellt, kann ein weiteres Zweiunddreißig-Bit-Operandenfeld OP3[83:52] Bits enthalten, die eine Zweiunddreißig-Datenmaske darstellen. - Gemäß Beispielimplementierungen kann die Anweisung ein einzelnes Bitfeld (LC[3], dargestellt in Spalte
304 ) enthalten, das (abhängig vom Wert des Bits) dazu verwendet werden kann, einen bestimmten Satz von Anweisungen, die als Gruppe ausgeführt werden sollen, zu kennzeichnen - Im Allgemeinen veranlasst die Ausführung des Fallbefehls (d. h. eines Befehls
234 mit dem CAS-Befehl) den Hauptverarbeitungskern236 , unter den Gruppen von Befehlen, die unmittelbar auf den Fallbefehl folgen, eine bestimmte Gruppe von Befehlen234 zur Ausführung durch den Kern236 auszuwählen. Genauer gesagt, gemäß einer Beispielimplementierung identifiziert das Sechs-Bit-Operandenfeld Op1[9:4] des Fallbefehls eine Start-Bitposition eines Bitvektors282 (siehe282 . Daher identifiziert die Kombination der Operandenfelder Op1[9:4] und Op1[11:10] der Case-Anweisung einen zusammenhängenden Satz von Bits des Bitvektors282 . Der Wert, der durch diesen Satz von Bits dargestellt wird, ist wiederum ein Index oder Selektor, der die bestimmte Gruppe von Anweisungen identifiziert, die der Hauptverarbeitungskern236 ausführen soll. Die Anzahl der Bits, die durch die Bits im Feld Op1[11:10] dargestellt werden, gibt auch die Anzahl der Befehlsgruppen (2 Längen) an, die auf den Fallbefehl folgen. Wenn die Anzahl der Bits beispielsweise „3“ ist, geht der Hauptverarbeitungskern236 davon aus, dass 23 = 8 Anweisungsgruppen auf die Fallanweisung folgen; und als weiteres Beispiel, wenn die Anzahl der Bits „2“ ist, geht der Hauptverarbeitungskern236 davon aus, dass 22 = 4 Anweisungsgruppen auf die Fallanweisung folgen. - Der Hauptverarbeitungskern
236 durchläuft gemäß Beispielimplementierungen die Befehlsgruppen in laufender binärer Reihenfolge und führt die Befehlsgruppe aus, die mit dem Selektor übereinstimmt. Das Ende jeder Anweisungsgruppe kann durch das Bitfeld LC[3] abgegrenzt bzw. mit einem Lesezeichen versehen werden. Daher ist gemäß Beispielimplementierungen die Anzahl der Anweisungen in einer Gruppierung innerhalb der Grenzen der Größe des Master-ROM232 variabel. In Übereinstimmung mit Beispielimplementierungen fährt der Master-Verarbeitungskern236 fort, alle verbleibenden Befehlsgruppen zu durchlaufen, die auf die ausgeführte Befehlsgruppe folgen. - Als spezifischeres Beispiel wird im Folgenden eine Beispielsfallanweisung aufgeführt:
CMD[2:0] = CAS, Op1[9:4]=6'd22, Op1[11:10]=2'd2
case (SSTRAP[23:22]) 2'b00: Befehlsgruppe 1 ausführen 2'b01: Befehlsgruppe 2 ausführen 2'b10: Befehlsgruppe 3 ausführen 2'b11: Ausführen Anweisungsgruppe 4
Claims (20)
- Eine Vorrichtung, die Folgendes umfasst: ein Teilsystem; einen ersten Prozessor zur Ausführung von Bootstrap-Befehlen; einen Speicher zum Speichern von zweiten Befehlen; eine Schaltung, um den ersten Prozessor als Reaktion auf das Einschalten des Geräts im Reset-Zustand zu halten; und einen zweiten Prozessor, um, während der erste Prozessor im Reset-Zustand gehalten wird, die zweiten Anweisungen auszuführen, um das Subsystem zu initialisieren.
- Die Vorrichtung nach
Anspruch 1 , wobei: der zweite Prozessor auf Daten zugreift, die in einem Speicher gespeichert sind und als Reaktion auf das Einschalten des Geräts an das Gerät übertragen werden; die Daten eine Auswahl aus einer Gruppe der zweiten Befehle darstellen; und der zweite Prozessor führt die Gruppe der zweiten Befehle in Reaktion auf die Daten aus. - Die Vorrichtung nach
Anspruch 2 , wobei: das Subsystem umfasst einen Speicher-Controller oder eine Speichersch n ittstelle; die Auswahl einem konfigurierbaren Merkmal des Speicher-Controllers oder der Speicherschnittstelle entspricht; und die Ausführung der Gruppe der zweiten Anweisungen konfiguriert das Merkmal. - Die Vorrichtung nach
Anspruch 1 , wobei das Subsystem eine Speicherschnittstelle, einen Speichercontroller, einen Buscontroller, eine serielle Busschnittstelle oder eine Spannungsversorgung umfasst. - Die Vorrichtung nach
Anspruch 1 , wobei der erste Prozessor als Reaktion auf die Freigabe des ersten Prozessors aus dem Reset einen Speicher außerhalb der Vorrichtung nach Patch-Anweisungen durchsucht. - Die Vorrichtung nach
Anspruch 1 , wobei: die Vorrichtung umfasst ferner eine Root-of-Trust-Maschine, die einen unveränderlichen Fingerabdruck speichert; und die Root-of-Trust-Engine validiert die ersten Anweisungen auf der Grundlage des unveränderlichen Fingerabdrucks. - Die Vorrichtung nach
Anspruch 1 , wobei: der erste Prozessor greift auf Daten zu, die in einem Speicher außerhalb des Geräts gespeichert sind; die Daten einen Patch-Datensatz darstellen, der dritte Anweisungen enthält; und der erste Prozessor führt die dritten Anweisungen aus, um das Subsystem weiter zu konfigurieren. - Die Vorrichtung nach
Anspruch 7 , wobei: der Patch-Datensatz enthält einen Header, der die Nummer der dritten Anweisung enthält und der erste Prozessor als Reaktion auf die Freigabe aus dem Reset auf die Daten zugreift und die dritten Anweisungen ausführt. - Ein System, bestehend aus: eine Vorrichtung, die Folgendes umfasst: ein Subsystem zur Bereitstellung einer Funktion, die vom Gerät während und nach einem Bootvorgang des Geräts verwendet wird; einen Verarbeitungskern; eine Schaltung, um den Verarbeitungskern als Reaktion auf das Einschalten des Geräts im Reset zu halten; einen Konfigurator; und einen ersten Speicher zum Speichern erster Befehle, die vom Konfigurator ausgeführt werden, um das Subsystem zu konfigurieren, während der Verarbeitungskern im Reset-Zustand gehalten wird; einen zweiten Speicher außerhalb des Geräts, um ein Firmware-Boot-Image zu speichern, das vom Verarbeitungskern als Reaktion darauf ausgeführt wird, dass der Verarbeitungskern aus der Rücksetzung freigegeben wird; und einen dritten Speicher außerhalb des Geräts, um zweite Befehle zu speichern, die von dem Verarbeitungskern ausgeführt und von dem Verarbeitungskern unter Verwendung des Firmware-Boot-Images interpretiert werden, nachdem der Verarbeitungskern aus der Rücksetzung freigegeben wurde, um das Subsystem weiter zu konfigurieren.
- Das System nach
Anspruch 9 , wobei die Vorrichtung einen Baseboard-Management-Controller umfasst. - Das System nach
Anspruch 9 , wobei die ersten Anweisungen sind Teil einer Vielzahl von Anweisungen, die im ersten Speicher gespeichert sind; die Vielzahl von Anweisungen eine Fallanweisung und Gruppen von Anweisungen umfasst, die mit der Fallanweisung verbunden sind; eine bestimmte Gruppe von Befehlen der Befehlsgruppen den ersten Befehlen entspricht; und der Konfigurator als Reaktion auf die Ausführung des Fallbefehls die ersten Befehle zur Ausführung auswählt, basierend auf einem vom Gerät empfangenen Vektor, der die gegebene Gruppe identifiziert. - Das System nach
Anspruch 9 , wobei: Das Subsystem umfasst einen Speicher-Controller; der Konfigurator führt die ersten Anweisungen aus, um den Speicher-Controller zu konfigurieren; und der Verarbeitungskern die zweiten Befehle ausführt, um eine Qualität des Ergebnisfeldes des Speicher-Controllers zu konfigurieren. - Das System nach
Anspruch 9 , wobei: die Vorrichtung umfasst ferner eine Root-of-Trust-Maschine, die einen unveränderlichen Fingerabdruck speichert; und Die Root-of-Trust-Engine validiert das Boot-Image anhand des unveränderlichen Fingerabdrucks. - Das System nach
Anspruch 9 , wobei: wobei das Gerät einen Dienst unter Verwendung des Subsystems, wie vom Konfigurator konfiguriert, bereitstellen soll, nachdem eine dem Gerät zugeordnete Fehlfunktion verhindert, dass der Prozessorkern aus dem Reset freigegeben wird. - Ein Verfahren, das Folgendes umfasst: Halten eines ersten Prozessors eines eingebetteten Verarbeitungssystems in einem Reset-Zustand in Reaktion auf das Einschalten des eingebetteten Verarbeitungssystems; während der erste Prozessor in dem Rücksetzzustand gehalten wird, ein zweiter Prozessor des eingebetteten Verarbeitungssystems erste Anweisungen ausführt, die in einem Speicher des eingebetteten Verarbeitungssystems gespeichert sind, um ein Subsystem des eingebetteten Verarbeitungssystems zu konfigurieren; Freigeben des ersten Prozessors aus dem Rücksetzzustand; und als Reaktion auf die Freigabe aus dem Rücksetzzustand führt der erste Prozessor Bootstrap-Befehle aus, wobei das Ausführen der Bootstrap-Befehle den Zugriff des ersten Prozessors auf das Subsystem umfasst.
- Das Verfahren nach
Anspruch 15 , wobei der erste Prozessor einen Allzweckverarbeitungskern mit einer zugehörigen ersten Befehlssatzgröße umfasst und der zweite Prozessor eine endliche Registertransferlogikmaschine (RTL) mit einer zugehörigen zweiten Befehlssatzgröße umfasst, die kleiner ist als die erste Befehlssatzgröße. - Das Verfahren nach
Anspruch 15 , wobei der zweite Prozessor die Anweisungen ausführt: der zweite Prozessor auf einen Vektor zugreift, der eine Teilmenge der ersten Anweisungen identifiziert. - Das Verfahren nach
Anspruch 17 , das ferner das Übertragen von Daten, die den Vektor repräsentieren, an das eingebettete Verarbeitungssystem in Reaktion auf das Einschalten des eingebetteten Verarbeitungssystems umfasst. - Das Verfahren nach
Anspruch 15 , wobei das Ausführen der Bootstrap-Befehle umfasst, dass der erste Prozessor einen Speicher außerhalb des eingebetteten Verarbeitungssystems nach Patch-Befehlen durchsucht, wobei das Verfahren ferner umfasst, dass der erste Prozessor die Patch-Befehle ausführt, um das Subsystem weiter zu konfigurieren. - Das Verfahren nach
Anspruch 15 , wobei das Subsystem eine Speicherschnittstelle, einen Speicher-Controller, einen Bus-Controller, eine serielle Busschnittstelle oder eine Spannungsversorgung umfasst.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/779,230 US11360782B2 (en) | 2020-01-31 | 2020-01-31 | Processors to configure subsystems while other processors are held in reset |
US16/779,230 | 2020-01-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102021101460A1 true DE102021101460A1 (de) | 2021-08-05 |
Family
ID=76853740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102021101460.3A Pending DE102021101460A1 (de) | 2020-01-30 | 2021-01-25 | Prozessoren zur Konfiguration von Subsystemen während andere Prozessoren im Reset gehalten werden |
Country Status (3)
Country | Link |
---|---|
US (1) | US11360782B2 (de) |
CN (1) | CN113205838B (de) |
DE (1) | DE102021101460A1 (de) |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7092980B1 (en) | 2000-10-26 | 2006-08-15 | Cypress Semiconductor Corporation | Programming architecture for a programmable analog system |
US20020138225A1 (en) | 2001-01-25 | 2002-09-26 | Wong Isaac H. | Automatic configuration of delay parameters for memory controllers of slave processors |
US7174463B2 (en) * | 2001-10-04 | 2007-02-06 | Lenovo (Singapore) Pte. Ltd. | Method and system for preboot user authentication |
US20050102573A1 (en) | 2003-11-03 | 2005-05-12 | Macronix International Co., Ltd. | In-circuit configuration architecture for embedded configurable logic array |
US20060236032A1 (en) * | 2005-04-13 | 2006-10-19 | Campbell Brian K | Data storage system having memory controller with embedded CPU |
US20070139074A1 (en) | 2005-12-19 | 2007-06-21 | M2000 | Configurable circuits with microcontrollers |
US7930576B2 (en) * | 2007-04-10 | 2011-04-19 | Standard Microsystems Corporation | Sharing non-sharable devices between an embedded controller and a processor in a computer system |
US9448964B2 (en) | 2009-05-04 | 2016-09-20 | Cypress Semiconductor Corporation | Autonomous control in a programmable system |
US9558012B2 (en) * | 2013-02-21 | 2017-01-31 | Applied Micro Circuits Corporation | System boot with external media |
US9886285B2 (en) * | 2015-03-31 | 2018-02-06 | Western Digital Technologies, Inc. | Communication interface initialization |
US10114550B2 (en) | 2016-01-07 | 2018-10-30 | Samsung Electronics Co., Ltd. | Data storage device and data processing system including the data storage device |
US10417429B2 (en) * | 2017-06-02 | 2019-09-17 | Apple Inc. | Method and apparatus for boot variable protection |
US20190114433A1 (en) * | 2017-06-02 | 2019-04-18 | Apple Inc. | Method and Apparatus for Boot Variable Protection |
SG11202007272QA (en) * | 2018-02-02 | 2020-08-28 | Charles Stark Draper Laboratory Inc | Systems and methods for policy execution processing |
-
2020
- 2020-01-31 US US16/779,230 patent/US11360782B2/en active Active
-
2021
- 2021-01-25 DE DE102021101460.3A patent/DE102021101460A1/de active Pending
- 2021-01-28 CN CN202110118069.4A patent/CN113205838B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US11360782B2 (en) | 2022-06-14 |
CN113205838A (zh) | 2021-08-03 |
CN113205838B (zh) | 2023-01-06 |
US20210240485A1 (en) | 2021-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69633166T2 (de) | Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration | |
DE102004057756B4 (de) | USB-Steuerungseinrichtung mit OTG-Steuerungseinheit | |
DE102019122363A1 (de) | Programmierbare doppelreihige arbeitsspeichermodul-beschleunigerkarte (dimm-beschleunigerkarte) | |
DE112004002259B4 (de) | Zugriff auf private Daten zum Status einer datenverarbeitenden Maschine von einem öffentlich zugänglichen Speicher | |
DE69828074T2 (de) | Direkt-speicherzugriff / transaktionen auf ein bus mit niedriger pinanzahl | |
DE102015217933B4 (de) | Vorrichtung zum Verarbeiten von Daten und Verfahren zum Betreiben einer solchen Vorrichtung | |
DE10297662T5 (de) | Eingebauter Prozessor mit direkter Verbindung von Sicherheitsvorrichtungen für verbesserte Sicherheit | |
DE10234991A1 (de) | Hostcontrollerdiagnose für einen seriellen Bus | |
DE102012209016A1 (de) | System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten | |
DE102012208803A1 (de) | System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten | |
DE102009043263B4 (de) | Verfahren, Vorrichtung und System zum Abfragen eines Gerätes nach Informationen | |
DE102008062692A1 (de) | Vorrichtung und Verfahren mit gesteuertem Schaltmodus | |
DE102010054614A1 (de) | Eindringen in eine gesicherte EDV-Umgebung unter Verwendung mehrerer authentifizierter Codemodule | |
DE102012209011A1 (de) | System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten | |
DE112018004577T5 (de) | Multiprozessorkern-vorrichtung mit mbist | |
DE102013113262A1 (de) | Auslöser-Leitwegeinheit | |
DE112013004065T5 (de) | Schutzschema für einen eingebetteten Code | |
DE2533737A1 (de) | Datenprozessor | |
DE102020113225A1 (de) | Aufzählung persistenter Vorrichtungen auf dem USB (Universal Serial Bus) | |
DE102021101458B4 (de) | Master- und Slave-Prozessoren zum Konfigurieren von Subsystemen | |
DE102021108300B4 (de) | Weiterleitung von steuerdaten zwischen halbleiterpaketen | |
EP1407348B1 (de) | Verfahren zum ansteuern einer zentralen verarbeitungseinheit für eine adressierung bezüglich eines speichers und controller | |
DE102021101460A1 (de) | Prozessoren zur Konfiguration von Subsystemen während andere Prozessoren im Reset gehalten werden | |
DE102012209014B4 (de) | System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten | |
DE112016007538T5 (de) | Technologie zur realisierung eines binärverzweigten non-volatile-memory-express-treibers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R082 | Change of representative |
Representative=s name: HL KEMPNER PATENTANWALT, RECHTSANWALT, SOLICIT, DE Representative=s name: HL KEMPNER PATENTANWAELTE, SOLICITORS (ENGLAND, DE Representative=s name: PROCK, THOMAS, DR., GB |
|
R012 | Request for examination validly filed | ||
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G06F0009445000 Ipc: G06F0009440100 |
|
R081 | Change of applicant/patentee |
Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, SPR, US Free format text: FORMER OWNER: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOUSTON, TEX., US |
|
R082 | Change of representative |
Representative=s name: HL KEMPNER PATENTANWALT, RECHTSANWALT, SOLICIT, DE Representative=s name: HL KEMPNER PATENTANWAELTE, SOLICITORS (ENGLAND, DE |