DE102021101458A1 - Master- und Slave-Prozessoren zum Konfigurieren von Subsystemen - Google Patents

Master- und Slave-Prozessoren zum Konfigurieren von Subsystemen Download PDF

Info

Publication number
DE102021101458A1
DE102021101458A1 DE102021101458.1A DE102021101458A DE102021101458A1 DE 102021101458 A1 DE102021101458 A1 DE 102021101458A1 DE 102021101458 A DE102021101458 A DE 102021101458A DE 102021101458 A1 DE102021101458 A1 DE 102021101458A1
Authority
DE
Germany
Prior art keywords
instructions
processor
subsystem
master
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE102021101458.1A
Other languages
English (en)
Other versions
DE102021101458B4 (de
Inventor
Naysen Robertson
Kenneth T. Chin
Theodore F. Emerson
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of DE102021101458A1 publication Critical patent/DE102021101458A1/de
Application granted granted Critical
Publication of DE102021101458B4 publication Critical patent/DE102021101458B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7803System on board, i.e. computer system on one or more PCB, e.g. motherboards, daughterboards or blades
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/287Multiplexed DMA
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

Ein Gerät enthält eine Vielzahl von Subsystemen, darunter ein erstes Subsystem und ein zweites Subsystem. Das Gerät enthält einen Master-Prozessor, um als Reaktion auf das Einschalten des Geräts erste Anweisungen auszuführen, um das erste Subsystem zu konfigurieren und zweite Anweisungen bereitzustellen. Die Vorrichtung enthält ferner einen Slave-Prozessor, um vor dem Hochfahren der Vorrichtung die zweiten Anweisungen vom Master-Prozessor zu empfangen und die zweiten Anweisungen auszuführen, um das zweite Subsystem zu konfigurieren.

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
    • ist eine schematische Darstellung eines Computersystems gemäß einer Beispielimplementierung .
    • ist eine schematische Darstellung eines Baseboard-Management-Controllers des Computersystems von gemäß einer Beispielimplementierung.
    • ist eine Tabelle mit Anweisungen, die von einem Hauptverarbeitungskern des Basisplatinen-Management-Controllers von gemäß einer Beispielimplementierung ausgeführt werden können.
    • ist eine Tabelle, die Felder eines Headers einer Patch-Set-Tabelle gemäß einer Beispielimplementierung darstellt.
    • ist eine Tabelle, die Felder eines Patch-Tabellendatensatzes gemäß einer Beispielimplementierung darstellt.
    • In den , , , und ist ein Zustandsdiagramm eines Hauptverarbeitungskerns des Baseboard-Management-Controllers aus gemäß einer Beispielimplementierung dargestellt.
    • ist eine schematische Darstellung eines Geräts mit Master- und Slave-Prozessoren zur Konfiguration von Teilsystemen eines Geräts gemäß einer Beispielimplementierung .
    • ist eine schematische Darstellung eines Computersystems, das einen Baseboard-Management-Controller mit Master- und Slave-Prozessoren zur Konfiguration von Subsystemen des Computersystems gemäß einer Beispielimplementierung enthält.
    • ist ein Flussdiagramm, das einen Prozess veranschaulicht, der Master- und Slave-Prozessoren verwendet, um Subsysteme eines eingebetteten Verarbeitungssystems gemäß einer Beispielimplementierung zu konfigurieren.
  • 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 AllzweckVerarbeitungskerne (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 AllzweckVerarbeitungskerns/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 nicht von der Firmware 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 , als spezifischeres Beispiel, kann ein elektronisches System in Übereinstimmung mit einigen Implementierungen ein eingebettetes Verarbeitungssystem umfassen, das einen Konfigurator 140 zum Zwecke der Initialisierung oder Konfiguration eines oder mehrerer Subsysteme 150 des eingebetteten Verarbeitungssystems umfasst. Bei der in dargestellten Beispielimplementierung ist das elektronische System ein Computersystem 100, 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 in dargestellten Beispielimplementierung ist das eingebettete Verarbeitungssystem ein Baseboard-Management-Controller 130, 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 Systemspeicher 104 zu bilden. Die CPU(s) 102 kann/können mit einer Eingangs-/Ausgangsbrücke (I/O) 106 gekoppelt sein. Darüber hinaus kann das Computersystem 100, wie ebenfalls in dargestellt, ein oder mehrere Peripheral Component Interconnect Express (PCIe)-Geräte 110 (z. B. PCIe-Erweiterungskarten) enthalten, die über entsprechende individuelle PCIe-Busse 108 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ücke 106 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ücke 106 die CPU(s) 102 mit dem Baseboard-Management-Controller 130, einem oder mehreren Speichergeräten 122, 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 AllzweckVerarbeitungskern(e) 154 (z. B. ARM-Verarbeitungskerne), die der Basisplatinen-Verwaltungscontroller 130 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-Controller 130 den/die AllzweckVerarbeitungskern(e) 154 aus dem Reset frei. Genauer gesagt ist der Baseboard-Management-Controller 130 in Übereinstimmung mit Beispielimplementierungen mit einem externen nichtflüchtigen Speicher 168 gekoppelt, der Firmware 170 speichert, die vom Baseboard-Management-Controller 130 validiert und von einer CPU 102 ausgeführt wird, um das Computersystem 100 zu starten. In Übereinstimmung mit Beispielimplementierungen enthält der Baseboard-Management-Controller 130 eine Hardware Root of Trust (RoT)-Engine 143. Gemäß Beispielimplementierungen speichert die RoT-Engine 143 einen unveränderlichen Fingerabdruck, der verwendet wird, um maschinenausführbare Anweisungen zu validieren. Genauer gesagt lädt die RoT-Engine 143 als Reaktion auf das Booten des Baseboard-Management-Controllers 130 einen Teil der Firmware 170 und legt den Teil der Firmware in einem Speicher 297 des Baseboard-Management-Controllers 130 ab, sichert den Speicher 297, validiert den Teil der Firmware 170 (unter Verwendung des unveränderlichen Fingerabdrucks) und sperrt den Inhalt des Speichers 297, 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 Speicher 297 ab (der validiert und gegen zukünftige Änderungen gesperrt wurde). Die Firmware-Befehle im Speicher 297 werden von dem (den) Mehrzweck-Verarbeitungskern(en) ausgeführt, um den nächsten Teil der Firmware 170 zu validieren, der aus dem Speicher 168 ausgeführt werden kann oder nach Beendigung der Ausführung von Patch-Befehlen (hierin weiter beschrieben) aus einem flüchtigen Speicher 164 (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-Controllers 130 befindet. In Übereinstimmung mit Beispielimplementierungen kann die Validierung von Komponenten des Computersystems 100 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-Engine 143 ausgeführt.
  • Wie ebenfalls in dargestellt, kann der Baseboard-Management-Controller 130 einen Video-Controller 131 enthalten, der von der/den CPU(s) 102 des Computersystems 100 konfiguriert werden kann. Der Speicher 164 kann von dem Videocontroller 131 und dem/den Allzweckverarbeitungskern(en) 154 gemeinsam genutzt werden, so dass gemäß Beispielimplementierungen ein Videocontroller-Bildpuffer in dem Speicher 164 gespeichert werden kann. In Übereinstimmung mit Beispielimplementierungen ist der Videocontroller 131 mit einer Anzeige 105 gekoppelt.
  • Wie hierin beschrieben, arbeitet der Konfigurator 140 in Übereinstimmung mit Beispielimplementierungen autonom oder unabhängig in Bezug auf den/die MehrzweckVerarbeitungskern(e) 154 des Basisplatinen-Management-Controllers 130, um die Subsysteme 150 des Basisplatinen-Management-Controllers 130 zu initialisieren oder zu konfigurieren. Genauer gesagt arbeitet der Konfigurator 140 in Übereinstimmung mit Beispielimplementierungen, um die Subsysteme 150 zu konfigurieren, während der Basisplatinen-Verwaltungscontroller 130 den/die Mehrzweckverarbeitungskern(e) 154 beim Einschalten oder Hochfahren des Basisplatinen-Verwaltungscontrollers 130 in einem Reset-Zustand hält.
  • Darüber hinaus steuert der Baseboard-Management-Controller 130, wie hier weiter beschrieben, Schalter 141 des Controllers 130, um den Konfigurator 140 mit den Subsystemen 150 zu koppeln und den/die Allzweckverarbeitungskern(e) 154 von den Subsystemen 150 zu isolieren, während der Konfigurator 140 die Subsysteme 150 konfiguriert. So haben der/die Allzweckverarbeitungskern(e) 154 des Basisplatinenmanagement-Controllers 130 keinen Zugriff auf die Subsysteme 150, bis die Subsysteme 150 vom Konfigurator 140 auf die entsprechenden grundlegenden Funktionsebenen konfiguriert worden sind. Diese Basisfunktionalität kann vorteilhaft sein, um ein „Bricking“ des Baseboard-Management-Controllers 130 (und möglicherweise ein Bricking des Computersystems 100) zu vermeiden, ohne dass ein Hinweis darauf vorliegt, warum dies geschehen ist. Beispielsweise können die Subsysteme 150 Schnittstellen sein (z. B. eine physische Speicherschnittstelle und ein Speicher-Controller), die die Anzeige von Informations- und Fehlermeldungen an den Endbenutzer über den Speicher 164 ermöglichen. Genauer gesagt, gemäß Beispielimplementierungen, wenn der Baseboard-Management-Controller 130 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 Display 105 unter Verwendung des Videocontrollers 131 innerhalb des Baseboard-Management-Controllers 130 anzeigen, da der Speichercontroller und die physischen Speicherschnittstellen jeweils durch den Konfigurator 140 auf eine Grundstufe initialisiert wurden.
  • Wie ebenfalls in dargestellt, kann gemäß Beispielimplementierungen ein programmierbares Logikgerät (PLD) 160 (z. B. ein komplexes PLD (cPLD)) mit dem Basisboard-Verwaltungscontroller 130 verbunden sein und, wie hierin weiter beschrieben, verwendet werden, um Daten, die einen Bitvektor von Daten darstellen, an den Basisboard-Verwaltungscontroller 130 als Reaktion auf den Übergang des Basisboard-Verwaltungscontrollers 130 von einem Einschalt-Reset zu übermitteln. Dieser Bitvektor von Daten, wie hierin weiter beschrieben, kann verwendet werden, um die Freigabe des/der Allzweckverarbeitungskerns/-kerne 154 aus dem Reset zu steuern, und kann verwendet werden, um Gruppen von Anweisungen zu identifizieren, die vom Konfigurator 140 ausgeführt werden sollen, um anzupassen, wie die bestimmten Subsysteme 150 konfiguriert sind. Darüber hinaus kann das PLD 160, 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 Subsysteme 150 weiter zu konfigurieren.
  • In ist eine bestimmte Beispielarchitektur für den Baseboard-Management-Controller 130 dargestellt, obwohl der Baseboard-Management-Controller 130 eine beliebige von einer Reihe von Architekturen haben kann, die von der in dargestellten Architektur gemäß weiteren Implementierungen abweichen. Bei der in dargestellten Implementierung kommuniziert der Baseboard-Management-Controller 130 mit dem externen PLD 160 über eine cPLD-Schnittstelle (hier als „CIF-Bus 212“ bezeichnet) unter Verwendung einer CIF-Bus-Engine 280. Der Baseboard-Management-Controller 130 umfasst eine Reset-Steuerungsschaltung 284, um zu steuern, wann der/die AllzweckVerarbeitungskern(e) 154 im Reset-Zustand gehalten wird/werden; und eine SPI-Engine (Serial Peripheral Interface) 290, die es dem Baseboard-Management-Controller 130 ermöglicht, mit dem externen Speicher 168 zu kommunizieren, der die Firmware 170 speichert.
  • Wie in dargestellt, enthält die Firmware 170 in Übereinstimmung mit Beispielimplementierungen Boot-Befehle 294, die den anfänglichen Teil der Befehle enthalten, die von der RoT-Engine 143 in den Speicher 297 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 Speicher 297 und führen die Anweisungen aus, um den nächsten Teil der Firmware 170 zu validieren, der aus dem Speicher 168 ausgeführt werden kann oder nach Beendigung der Ausführung von Patch-Anweisungen (hierin weiter beschrieben) aus dem flüchtigen Speicher 164 kopiert und ausgeführt werden kann.
  • Wie in dargestellt, kann die Firmware 170 Systemverwaltungsanweisungen 296 enthalten, die aus dem Speicher 168 in den Speicher 164 kopiert werden, wo die Anweisungen 296 von dem/den Mehrzweckverarbeitungskern(en) 154 ausgeführt werden, um Laufzeit-Systemverwaltungsfunktionen des Basisplatinen-Verwaltungscontrollers 130 auszuführen, wie z. B. die Kommunikation mit einem Fernverwaltungsserver, die Kommunikation mit, die Überwachung und möglicherweise die Änderung von Hardwarekomponenten des Computersystems 100, die Kommunikation mit Anwendungen, die auf dem Computersystem 100 ausgeführt werden, usw.
  • In Übereinstimmung mit Beispielimplementierungen enthält der Konfigurator 140 einen Master-Prozessor 230, der speziell für die Konfiguration oder Initialisierung eines bestimmten Subsystems 150 (hier Subsystem 150-1 für das in dargestellte Beispiel) von N Subsystemen 150 des Basisplatinen-Management-Controllers 130 konstruiert sein kann. Der Hauptprozessor 230 umfasst gemäß Beispielimplementierungen einen Hauptverarbeitungskern 236, 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 Hauptverarbeitungskern 236 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 Teilsystems 150, wie z. B. des Teilsystems 150-1, wie in dargestellt, zugeschnitten sein. Der Hauptverarbeitungskern 236 führt gemäß Beispielimplementierungen Anweisungen 234 aus, die in einem nichtflüchtigen Speicher des Hauptprozessors 230 gespeichert sind, z. B. in einem Hauptfestwertspeicher (ROM) 232, wie in dargestellt. Das Speichern der ausführbaren Befehle 234 in einem nichtflüchtigen Speicher, der aktualisiert werden kann, wie dem Master-ROM 232, im Gegensatz zu beispielsweise fest kodierten Befehlen für den Verarbeitungskern 236, ermöglicht Flexibilität für die Änderung der Konfiguration des Teilsystems 150-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 Speicher 164 sein, und ein anderes Subsystem 150, wie z. B. Subsystem 150-N, kann eine physikalische Speicherschnittstelle für den Speicher 164 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-ROM 232 relativ einfach und ohne Auswirkungen auf einen nachfolgenden Freigabeplan für den Baseboard-Management-Controller 130 aktualisiert werden.
  • In Übereinstimmung mit weiteren Beispielimplementierungen kann der Master-Prozessor 230 (und der Master-Verarbeitungskern 236) verwendet werden, um ein anderes Subsystem als einen Speicher-Controller zu konfigurieren. In Übereinstimmung mit Beispielimplementierungen können die Subsysteme 150, die vom Konfigurator 140 (entweder über den Master-Prozessor 230 oder über einen Slave-Prozessor 260, wie hierin weiter beschrieben) konfiguriert werden können, beispielsweise eine physikalische Speicherschnittstelle, den Videocontroller 131 oder eine Spannungsversorgung umfassen. Darüber hinaus kann gemäß einigen Implementierungen eine serielle Hochgeschwindigkeits-Kommunikationsschnittstelle 292 des Baseboard-Management-Controllers 130 ein Subsystem 150 sein, das vom Konfigurator 140 konfiguriert wird. Auf diese Weise kann die serielle Hochgeschwindigkeitskommunikationsschnittstelle 292 ü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 Kommunikationsschnittstelle 292 mit Komponenten des Basisband-Verwaltungscontrollers 130, wie z. B. dem Videocontroller 131, kommunizieren.
  • Als Beispiel kann der Master-ROM 232 gemäß einigen Implementierungen eine Breite von 84 Bit und eine Tiefe von 128 Einträgen haben, wodurch 128 Befehle 234 im Master-ROM 232 gespeichert werden können. Der Master-ROM 232 kann gemäß weiteren Implementierungen andere Breiten und Eintragstiefen haben.
  • Wie in dargestellt, kann der Hauptverarbeitungskern 236 in Übereinstimmung mit einigen Implementierungen mit dem Subsystem 150-1 unter Verwendung eines Advanced High-Performance Bus (AHB) kommunizieren, und der Hauptverarbeitungskern 236 kann den AHB mit dem/den Mehrzweckverarbeitungskern(en) 154 in einer Zeitmultiplexweise teilen. Auf diese Weise kann der Hauptverarbeitungskern 236 gemäß Beispielimplementierungen einen Schalter oder Multiplexer 242 (einen der Schalter 141) steuern, um zu kontrollieren, ob 1. der Hauptverarbeitungskern 236 mit einem AHB-Segment 246 verbunden ist, das mit dem Subsystem 150-1 verbunden ist, oder 2. alternativ, ob der/die Mehrzweckverarbeitungskern(e) 154 mit dem AHB-Segment 246 verbunden sind. Genauer gesagt ist gemäß Beispielimplementierungen der Hauptverarbeitungskern 236 mit einem AHB-Segment 240 gekoppelt, das ein Eingang des Multiplexers 242 ist; und der/die Allzweckverarbeitungskern(e) 154 sind mit einem anderen AHB-Segment 244 gekoppelt, das einem anderen Eingang des Multiplexers 242 entspricht. Das Subsystem 150-1 ist mit einem weiteren AHB-Segment 246 gekoppelt, das mit einem Ausgang des Multiplexers 242 gekoppelt ist.
  • Während der Anfangsphase beim Einschalt-Reset, in der der Konfigurator 140 die Subsysteme 150 konfiguriert (und während der der/die Mehrzweckverarbeitungskern(e) 154 im Reset gehalten werden), steuert der Hauptverarbeitungskern 236 den Multiplexer 242, um die AHB-Bussegmente 240 und 246 miteinander zu koppeln und den/die Mehrzweckverarbeitungskern(e) 154 vom Subsystem 150-1 zu isolieren. Mit dieser Multiplexerkonfiguration kann der Hauptverarbeitungskern 236 mit dem Subsystem 150-1 kommunizieren, um das Subsystem 150-1 zu konfigurieren, d. h. um Steuer- und Statusregister 248 des Subsystems 150-1 zu lesen und zu beschreiben. In ähnlicher Weise kann der Hauptverarbeitungskern 236 andere Multiplexer steuern (d. h. andere Schalter 141 steuern), um andere Subsysteme 150 von den Allzweckverarbeitungskernen 150 zu isolieren und die Konfiguration dieser anderen Subsysteme zu ermöglichen, wie hierin weiter beschrieben. Wenn die Konfiguration der Subsysteme 150 abgeschlossen ist, kann der Hauptverarbeitungskern 236 gemäß Beispielimplementierungen die Multiplexer weiter steuern, um die Komponenten des Konfigurators 140 von den Subsystemen 150 zu isolieren und den/die Mehrzweckverarbeitungskern(e) 154 physisch mit dem Subsystem 150 zu verbinden, so dass der/die Kern(e) 154 die nun konfigurierten Subsysteme 150 verwenden kann/können.
  • Gemäß Beispielimplementierungen können die Befehle 234, die im Master-ROM 232 gespeichert sind, ein Befehlsformat haben, das in einer Tabelle 300 von dargestellt ist. Unter Bezugnahme auf in Verbindung mit stellen die ersten drei Bits (CMD [2:0]) des Befehls einen Befehl dar, und Beispielbefehle, zusammen mit einer Beispiel-Bitkodierung, die jedem Befehl entspricht, sind in Spalte 302 der Tabelle 300 dargestellt. Bezogen auf die Spalte 302 entspricht „RMW“ einem Lese-Änderungs-SchreibBefehl; „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-Prozessor 260 enthält.
  • In den Spalten 306, 308 und 310 sind Operandenfelder für die Befehle gemäß einer Beispielimplementierung dargestellt, und Spalte 312 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 Spalte 306) 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 Spalte 310 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 Hauptverarbeitungskern 236, unter den Gruppen von Befehlen, die unmittelbar auf den Fallbefehl folgen, eine bestimmte Gruppe von Befehlen 234 zur Ausführung durch den Kern 236 auszuwählen. Genauer gesagt, gemäß einer Beispielimplementierung identifiziert das Sechs-Bit-Operandenfeld Op1[9:4] des Fallbefehls eine Start-Bitposition eines Bitvektors 282 (siehe ), und das Zwei-Bit-Operandenfeld Op1[11:10] des Operandenfelds identifiziert eine Länge oder Anzahl von zusammenhängenden Bitpositionen (beginnend mit der Start-Bitposition) des Bitvektors 282. Daher identifiziert die Kombination der Operandenfelder Op1[9:4] und Op1 [11:10] der Case-Anweisung einen zusammenhängenden Satz von Bits des Bitvektors 282. 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 Hauptverarbeitungskern 236 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 Hauptverarbeitungskern 236 davon aus, dass 23 = 8 Anweisungsgruppen auf die Fallanweisung folgen; und als weiteres Beispiel, wenn die Anzahl der Bits „2“ ist, geht der Hauptverarbeitungskern 236 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 Befehlsgruppe kann durch das Bitfeld LC[3] abgegrenzt oder mit einem Bookend-Tag versehen werden. Daher ist gemäß Beispielimplementierungen die Anzahl der Anweisungen in einer Gruppierung innerhalb der Grenzen der Größe des Master-ROM 232 variabel. In Übereinstimmung mit Beispielimplementierungen fährt der Master-Verarbeitungskern 236 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 ,  Op 1 [ 9 : 4 ] = 6 ' d 22,  Op 1 [ 11 : 10 ] = 2 ' d 2
    Figure DE102021101458A1_0001
    In dieser Notation bedeutet „6'd22‟ sechs Bits, die zusammen einem Dezimalwert von „22“ entsprechen; und „2'd2“ bedeutet zwei Bits, die zusammen einem Dezimalwert von „2“ entsprechen. Daher entsprechen in diesem Beispiel die Bitpositionen 22 und 23 des Bitvektors der Daten 282 dem Gruppenbefehlsselektor. Da der Selektor aus zwei Bits gebildet wird, gibt es außerdem vier Gruppen von Anweisungen, die auf die Case-Anweisung folgen. Die Case-Anweisung kann daher im Pseudocode wie folgt dargestellt werden:
    • 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
  • Wie oben erwähnt, hat das Master-ROM 232 eine Tiefe von 128 Einträgen, obwohl das ROM 232 in Übereinstimmung mit Beispielimplementierungen auch andere Tiefen haben kann. Der Master-Verarbeitungskern 236 behandelt gemäß Beispielimplementierungen die letzte Adresse des Master-ROM 232 (z. B. die 128. ROM-Adresse bei einer Implementierung mit 128 Einträgen) als etwas Besonderes, indem der Master-Verarbeitungskern 236 nach der Ausführung eines beliebigen Befehls an der letzten Adresse die Ausführung anhält und bei Ausführung des Befehls innerhalb der letzten ROM-Zeile in einen Leerlaufzustand zurückkehrt. Darüber hinaus kann der Hauptverarbeitungskern 236 gemäß Beispielimplementierungen bei Erreichen des letzten Eintrags und vor der Rückkehr in den Ruhezustand den Auswahleingang des Multiplexers 242 steuern, um den Hauptprozessor 230 vom Subsystem 150-1 zu entkoppeln und das Subsystem 150-1 mit dem AHB-Bussegment 245 zu koppeln, so dass der/die Mehrzweckverarbeitungskern(e) 154 danach für den Zugriff auf das Subsystem 150-1 angeschlossen werden kann/können.
  • Unter Bezugnahme auf , wie hier weiter beschrieben, kann der Konfigurator 140 gemäß Beispielimplementierungen null, einen oder mehrere Slave-Prozessoren 260 (siehe ) enthalten, die auf die Konfiguration entsprechender Subsysteme 150 des Baseboard-Management-Controllers 130 zugeschnitten sind. Als Beispiele können die von den Slave-Prozessoren 260 konfigurierten Subsysteme 150 einer physikalischen Speicherschnittstelle, einem Bus-Controller, einer Spannungsversorgung usw. entsprechen. Außerdem kann ein bestimmter Slave-Prozessor 260 mit seinem Subsystem 150 unter Verwendung eines Busprotokolls kommunizieren, das sich von dem Protokoll unterscheidet, das von den anderen Slave-Prozessoren 260 und/oder den Master-Prozessoren 230 verwendet wird. So kommuniziert bei der in dargestellten Beispielimplementierung ein Slave-Prozessor 260 mit dem Subsystem 150-N über einen Advanced Peripheral Bus (APB), was z. B. der Fall sein kann, wenn der Slave-Prozessor 260 eine physikalische Speicherschnittstelle konfiguriert.
  • Die Slave-Prozessoren 260 kommunizieren mit dem Master-Prozessor 230 über einen Befehlsbus 250. Im Allgemeinen enthält der Befehlsbus 250 Kommunikationsleitungen, die vom Master-Verarbeitungskern 236 verwendet werden können, um einen bestimmten Befehl an einen bestimmten Slave-Prozessor 260 zu übermitteln, und enthält Dekodierleitungen, die vom Master-Verarbeitungskern 236 verwendet werden, um den bestimmten Slave-Prozessor 260 auszuwählen, so dass der Slave-Prozessor 260 den Befehl zur Ausführung erhalten kann. Auf diese Weise kann der Master-Verarbeitungskern 236 in der Lage sein, die Slave-Prozessoren 260 zu steuern.
  • Unter Bezugnahme auf in Verbindung mit ist der „DFI“-Befehl (mit dem „DFI“-Befehl) gemäß Beispielimplementierungen ein Beispiel für einen Befehl, der innerhalb seiner Operanden einen unabhängigen Befehl kodiert, der von einem bestimmten Slave-Prozessor 260 des Konfigurators 140 auszuführen ist. Der DFI-Befehl kann im Master-ROM 232 gespeichert und vom Master-Verarbeitungskern 236 ausgeführt werden, um einen kodierten Befehl darzustellen, der von einem bestimmten Slave-Prozessor 260 auszuführen ist. In Übereinstimmung mit einigen Implementierungen kann der Slave-Prozessor 260 Befehle ausführen, die den Befehlen RMW, WR, POLL und NOP entsprechen.
  • Als Beispiel kann ein Befehl (hier als „eingebetteter Befehl“ bezeichnet) eines Slave-Prozessors 260 wie folgt in einen DFI-Befehl kodiert werden. Das Zwei-Bit-Operandenfeld Op1 [5:4] enthält die Bits, die den Befehl für den eingebetteten Befehl darstellen, und andere Operandenfelder können je nach Bedarf Bits enthalten, die die Adresse, die Daten und die Maske des eingebetteten Befehls darstellen. Für einen eingebetteten Schreib-Lese-Befehl kann das Operandenfeld Op1 [5:4] beispielsweise den Wert „00b“ enthalten (wobei „b“ eine binäre Darstellung bezeichnet), um den RMW-Befehl darzustellen; und andere Operandenfelder des DFI-Befehls können eine 10-Bit-Adresse, 16-Bit-Daten und eine 16-Bit-Maske für den eingebetteten Schreib-Lese-Befehl, ein letztes Befehlsbitfeld und ein Operandenfeld mit Bits enthalten, die den spezifischen Slave-Prozessor 260 zur Ausführung des eingebetteten Schreib-Lese-Befehls darstellen. Als weitere Beispiele für einen DFI-Befehl kann das Operandenfeld Op1 [5:4] einen weiteren Satz von Bitwerten enthalten, die einen anderen Befehl darstellen (z. B., ein WR-Schreibbefehl, ein POLL-Abfragebefehl und ein NOP-Befehl für keine Operation); andere Operandenfelder des DFI-Befehls können gegebenenfalls Operanden für den eingebetteten Befehl darstellen, wie z. B. eine Adresse, Daten, Maske usw.; und der DFI-Befehl kann auch ein Operandenfeld enthalten, das Bits enthält, die darstellen, ob der eingebettete Befehl ein letzter Befehl ist, und Bits, die den spezifischen Slave-Prozessor 260 zur Ausführung des eingebetteten Befehls darstellen.
  • Gemäß Beispielimplementierungen kann der Basisplatinen-Verwaltungscontroller 130 mehrere, doppelte Subsysteme 150 enthalten, die denselben Aufbau und dieselbe Konfiguration haben; und jedes dieser doppelten Subsysteme 150 kann von einem entsprechenden Slave-Prozessor 260 konfiguriert werden. Bei diesen Implementierungen kann der Master-Verarbeitungskern 236 einen DFI-Befehl verarbeiten, der einen eingebetteten Befehl enthält, der an alle diese Slave-Prozessoren 260 decodiert wird.
  • Zurück zu : Gemäß Beispielimplementierungen enthält der Slave-Prozessor 260 einen Speicher 264 und einen Slave-Verarbeitungskern 262, der Anweisungen 266 ausführt, die im Speicher 264 gespeichert sind, um ein zugehöriges Subsystem 150 autonom oder unabhängig zu konfigurieren. Der Speicher 264 speichert in Übereinstimmung mit Beispielimplementierungen Anweisungen 266, die vom Master-Verarbeitungskern 236 an den Slave-Prozessor 260 übermittelt werden, wie oben beschrieben. In Übereinstimmung mit einigen Implementierungen kann der Speicher 264 ein flüchtiger Speicher sein, der keine anderen Befehle als die Befehle enthält, die über den Befehlsbus 250 an den Slave-Prozessor 260 übermittelt werden (z. B. als Reaktion auf die Ausführung eines DFI-Befehls durch den Hauptverarbeitungskern 236). In Übereinstimmung mit weiteren Beispielimplementierungen kann der Speicher 264 einen nichtflüchtigen Speicher umfassen, der mit bestimmten Befehlen 264 vorcodiert ist, die vom Slave-Verarbeitungskern 262 ausgeführt werden sollen.
  • Ähnlich wie der Master-Prozessor 230 kann der Slave-Verarbeitungskern 262 in Übereinstimmung mit einigen Implementierungen einen zugehörigen Schalter 141 oder Multiplexer 270 steuern, der den Slave-Verarbeitungskern 262 mit dem zugehörigen Sub-Subsystem 150 koppelt. Der Multiplexer 270 hat einen Eingang, der mit einem APB-Segment 272 verbunden ist, und einen anderen Eingang, der mit einem APB-Bussegment 224 verbunden ist, das über eine Brücke 267 mit dem AHB-Bussegment 244 verbunden ist. Der Ausgang des Multiplexers 270 ist mit einem APB-Segment 276 verbunden, das mit dem zugehörigen Subsystem 150 verbunden ist. Der Slave-Verarbeitungskern 262 kann den Multiplexer 270 steuern, um zu kontrollieren, ob 1. der Slave-Verarbeitungskern 262 mit dem APB-Segment 276 verbunden ist, oder 2. alternativ, ob der/die AllzweckVerarbeitungskern(e) 154 mit dem APB-Segment 276 verbunden sind.
  • In Übereinstimmung mit einigen Implementierungen kann der Slave-Verarbeitungskern 262 ein ähnliches Design wie der Master-Verarbeitungskern 236 haben. In dieser Hinsicht können beide Verarbeitungskerne 236 und 262 gemäß Beispielimplementierungen z. B. unter Verwendung einer RTL-Abstraktion in HDL implementiert sein. In Übereinstimmung mit einigen Implementierungen kann der Slave-Verarbeitungskern 262 einen zugehörigen Befehlssatz haben, der kleiner ist als der Befehlssatz des Master-Verarbeitungskerns 236. In Übereinstimmung mit einigen Implementierungen führt der Slave-Verarbeitungskern 262 beispielsweise keinen Befehl aus, der einen eingebetteten Befehl, wie den DFI-Befehl, enthält. In Übereinstimmung mit einigen Implementierungen führt der Slave-Verarbeitungskern 262 möglicherweise keine Case-Anweisung aus. Der Slave-Verarbeitungskern 262 kann in Übereinstimmung mit Beispielimplementierungen Lese-Änderungs-Schreib-, Schreib-, Lese-, Keine-Operation-, Sprung- und Abfragebefehle sowie möglicherweise andere Befehle ausführen.
  • Wie in dargestellt, kann der PLD 160 den Bitvektor der Daten 215 speichern, der dem Bitvektor der Daten 282 entspricht, die dem Hauptprozessor 230 zugeführt werden. Gemäß Beispielimplementierungen kommuniziert eine Engine 280 des Basisplatinen-Verwaltungscontrollers 130 als Reaktion auf einen Power-On-Reset des Basisplatinen-Verwaltungscontrollers mit dem PLD 160 (über den CIF-Bus 212), um den Bitvektor der Daten 282 abzurufen. Wie auch mit der Bezugszahl 281 angegeben, kann die Engine 280 auch Daten, die den Bitvektor der Daten darstellen, an eine Reset-Steuerschaltung 284 des Basisplatinen-Verwaltungscontrollers weiterleiten. Gemäß Beispielimplementierungen setzt die Rücksetzsteuerschaltung 284 den/die Mehrzweckverarbeitungskern(e) 154 als Reaktion auf das Einschalt-Reset des Basisplatinen-Verwaltungscontrollers 130 in den Reset-Zustand, und die Rücksetzsteuerschaltung 284 hält den/die Mehrzweckverarbeitungskern(e) 154 im Reset-Zustand, bis bestimmte Bedingungen erfüllt sind. Gemäß einer Beispielimplementierung kann der Bitvektor der Daten 281 eine oder mehrere solcher Bedingungen festlegen. Als Beispiele kann der Bitvektor der Daten 281 eine oder mehrere bezeichnete Bitpositionen haben, die es dem Konfigurator 140 ermöglichen, die Subsysteme 150 mit spezifischen Bedingungen zu konfigurieren, damit der/die Mehrzweckverarbeitungskern(e) 154 aus dem Reset freigegeben werden können, wie z. B. dass alle Prozessoren 230 und 260 des Konfigurators 140 in den Ruhezustand zurückkehren, eine bestimmte Zeitspanne verstreicht, ein Flag abgefragt wird, um anzuzeigen, dass die Konfiguration der Subsysteme 150 durch den Konfigurator abgeschlossen ist, und so weiter. Gemäß Beispielimplementierungen kann die Reset-Steuerschaltung 284 Bedingungen für die Freigabe des/der Mehrzweckverarbeitungskerns/-kerne 154 aus dem Reset vorgeben, die unabhängig von den Aktionen des Konfigurators 140 sind, wie z. B. Bedingungen bezüglich der Feststellung, ob Hardwarefehler vorliegen, Bedingungen bezüglich der Frage, ob Root-of-Trust-Sicherheitsprüfungen bestanden wurden, usw.
  • In Übereinstimmung mit Beispielimplementierungen konfiguriert der Konfigurator 140 die Subsysteme 150 zumindest bis zu einem Punkt, um die Subsysteme 150 auf ein grundlegendes Funktionsniveau für einfache Operationen zu bringen. In Übereinstimmung mit einigen Implementierungen können die Subsysteme 150 beispielsweise einen Speicher-Controller (ein Subsystem 150) und eine physische Speicherschnittstelle (ein anderes Subsystem 150) umfassen, und der Konfigurator 140 konfiguriert den Speicher-Controller und die physische Speicherschnittstelle auf grundlegende Funktionsebenen, während die Allzweckverarbeitungskerne 154 im Reset gehalten werden. Sollte daher ein bestimmtes Problem auftreten (z. B. ein Hardwarefehler, ein Fehler bei einer kryptografischen Prüfung usw.), das verhindert, dass der/die Allzweckverarbeitungskern(e) 154 aus dem Reset freigegeben werden, kann/können die CPU(s) 102 die Fehlfunktion erkennen und Fehlermeldungen auf dem Display 105 mithilfe des Videocontrollers 131 innerhalb des Baseboard-Management-Controllers 130 anzeigen.
  • Gemäß Beispielimplementierungen ermöglicht der Basisplatinen-Verwaltungscontroller 130 eine weitere Konfiguration der Subsysteme 150, nachdem der/die Allzweckverarbeitungskern(e) 154 aus dem Reset-Zustand freigegeben wurden (und nach der Konfiguration der Subsysteme 150 durch den Konfigurator 140). Genauer gesagt speichert das PLD 160 in Übereinstimmung mit Beispielimplementierungen Patch-Daten 214, die eine Patch-Tabelle darstellen, die Patch-Datensätze enthält, die von dem/den Allzweckverarbeitungskern(en) 154 zum Zwecke der weiteren Konfiguration der Subsysteme 150 ausgeführt werden sollen. Zum Beispiel kann ein bestimmter Patch-Datensatz Anweisungen enthalten, um verschiedene Felder für die Ergebnisqualität (QoR) in einem Speicher-Controller zu setzen, um die Systembusleistung für den Speicher-Controller zu optimieren. Andere Optimierungen auf relativ niedriger Ebene können für einen Speicher-Controller sowie für andere Subsysteme über die Ausführung der Anweisungen, die in den Patch-Tabellen-Datensätzen enthalten sind, durchgeführt werden. Als weiteres Beispiel kann ein Patch-Datensatz eine Verzögerungsoperation enthalten, um Initialisierungsroutinen zu ermöglichen, die zeitliche Elemente enthalten.
  • In Übereinstimmung mit einigen Implementierungen bilden die Bootstrap-Befehle 294, wenn sie von einem oder mehreren Allzweckverarbeitungskernen 154 ausgeführt werden, einen Datensatzinterpreter, der die Datensätze der Patch-Tabelle verarbeitet und Informationen erhält, die für die Initialisierung und/oder das Patchen einer Einstellung für ein oder mehrere Subsysteme 150 relevant sind. Es gibt viele verschiedene Arten von Operationen, die gemäß Beispielimplementierungen durch die Datensätze der Patch-Tabelle gesteuert werden können. Der Datensatzinterpreter tastet die Kopfdaten im Patch-Datensatz ab, um zu erfahren, wie viele gültige Datensätze in der Patch-Tabelle existieren. In Übereinstimmung mit Beispielimplementierungen wird der Datensatzinterpreter von dem/den Allzweckverarbeitungskern(en) 154 zu Beginn der Ausführung der Bootstrap-Befehle ausgeführt. Wenn der Datensatzinterpreter die Verarbeitung der Datensätze der Patch-Tabelle abgeschlossen hat, kann der/die Allzweckverarbeitungskern(e) 154 dann mit der Ausführung weiterer Bootstrap-Anweisungen 294 fortfahren.
  • Bezug nehmend auf kann die Patch-Tabelle gemäß Beispielimplementierungen eine Kopfzeile enthalten, wie z. B. eine Kopfzeile, die durch eine Tabelle 400 von veranschaulicht wird. Die Tabelle 400 illustriert beispielhafte Header-Felder (in Spalte 402) und Definitionen (in Spalte 404) der Header-Felder. Wie gezeigt, kann der Kopf der Patch-Tabelle ein Feld (NUM_PATCH_SET_BYTES[15:0]) enthalten, das Daten enthält, die die Anzahl der Bytes der Patch-Tabelle darstellen; ein Feld (NUM_PATCH SET_ENTRIES[15:0]), das Daten enthält, die die Anzahl der Einträge oder Datensätze der Patch-Tabelle darstellen; ein Feld (MEM_CONFIG_CHECKSUM[31:0]), das Daten enthält, die eine Prüfsumme der Patch-Tabelle und des Headers darstellen; ein Feld (MEM_CONFIG_GEN_REV[15:0]), das Daten enthält, die eine Schema-Generation darstellen; und ein Feld (MEM_CONFIG_TABLE_REV[15:0]), das Daten enthält, die eine Revisionsnummer der Patch-Tabelle darstellen.
  • ist eine Tabelle 500, die Felder (Spalte 502) und Beschreibungen (Spalte 504) eines Patch-Tabelleneintrags oder -datensatzes in Übereinstimmung mit Beispielimplementierungen darstellt. Wie gezeigt, kann der Patch-Tabellen-Datensatz ein Feld (REG_CLASS[2:0]) enthalten, das eine Klasse des Datensatzes definiert; ein Feld (FIELD START_BIT[4:0]), das die Startbitposition des zu modifizierenden Registers 248 definiert; ein Feld (REG OP CODE[2:0]), das einen Befehl (z. B., RMW, POLL und DELAY), der ausgeführt werden soll; ein Feld (FIELD_BIT_LENGTH[4:0]), das die Länge des zu schreibenden oder zu patchenden Feldes im Konfigurationsregister 248 in Bits definiert; ein Feld (REG_OFFSET[15:0]), das einen Register-Offset oder eine Verzögerung definiert (je nachdem, ob es sich um einen RMW-Befehl oder DELAY-Befehl handelt); und ein Feld (FIELD_PATCH_DATA[31:0]), das die zu schreibenden Daten oder eine Verzögerung definiert (je nachdem, ob es sich um einen RMW-Befehl oder DELAY-Befehl handelt).
  • In den , , , und sind die entsprechenden Teile 600A, 600B, 600C bzw. 600E eines Zustandsdiagramms dargestellt, das die Verarbeitung von Anweisungen durch den Hauptverarbeitungskern 236 gemäß Beispielimplementierungen veranschaulicht. Gemäß Beispielimplementierungen hat der Master-Verarbeitungskern 236 die folgenden Zustände: einen IDLE-Zustand 602 ( und ), der der Zustand ist, in dem der Master-Verarbeitungskern 236 im Leerlauf ist und keine Befehle ausführt; einen INIT_CMD-Zustand 608 ( und , der den Zustand darstellt, in dem der Master-Verarbeitungskern 236 im Leerlauf ist und keine Befehle ausführt; einen INIT_CMD-Zustand 608 ( und , der den Zustand darstellt, in dem der Master-Verarbeitungskern 236 im Leerlauf ist. 6A und 6B), bei dem es sich um den Zustand handelt, in dem der Hauptverarbeitungskern 236 die Befehle aus den Anweisungen parst; einen STALL-Zustand 632 ( ; einen DELAY-Zustand 638 ( ; einen WACCESS-Zustand 613 ( und ), in dem der Hauptverarbeitungskern 236 einen Schreibzugriff durchführt; und einen RACCESS-Zustand 683 ( und ), in dem der Hauptverarbeitungskern 236 einen Lesezugriff durchführt. In den , und bezieht sich „AI“ auf eine gegebene Subsystemfunktion, „CND“ auf ein gegebenes bedingtes Sequenzgatter, „SEQ“ auf eine gegebene Gruppe oder Sequenz von auszuführenden Befehlen, „N“ auf die Anzahl der Operanden der Sequenz, „Z“ auf die maximale Anzahl von zusammenhängenden Bits des Bitvektors von Daten, die vom CAS-Befehl unterstützt werden, und „SSTRAPS“ auf den Bitvektor von Daten 282.
  • Unter Bezugnahme auf zeigt der Abschnitt 600A Entscheidungen, die den Übergang in den INIT_CMD-Zustand 608 betreffen, in dem der Hauptverarbeitungskern 236 mit der Verarbeitung eines Befehls beginnt, einschließlich des Parsens des Befehls aus dem Befehl. Insbesondere sind in Entscheidungen dargestellt, die der Hauptverarbeitungskern 236 trifft, um vom Zustand IDLE 602 in den Zustand INIT_CMD 608 überzugehen. Wie in dargestellt, geht der Hauptverarbeitungskern 236 beim Einschalt-Reset 601 des Basisplatinen-Management-Controllers 130 in den IDLE-Zustand 602 über. Der Hauptverarbeitungskern 236 kann aus dem IDLE-Zustand 602 in den INIT_CMD-Zustand 608 übergehen, um eine beliebige aus einer Anzahl verschiedener Sequenzen der Befehle 234 auszuführen, wie in den Entscheidungsblöcken 604, 612 und 616 dargestellt, wodurch Flexibilität bei der Konfiguration des Konfigurators 140 für die besondere Umgebung des Computersystems, in das der Basisplatinen-Verwaltungscontroller 130 eingebaut ist, ermöglicht wird. Je nach der über die Entscheidungsblöcke 604, 612 und 616 ausgewählten speziellen Befehlssequenz 234 wird der Befehlszeiger (CMD_PTR) in den Blöcken 606, 614 bzw. 618 auf den entsprechenden Wert gesetzt, und die Steuerung geht in den Zustand INIT_CMD 608 über.
  • zeigt ferner den Übergang in den INIT_CMD-Zustand 608 als Reaktion auf die Auswahl des nächsten Befehls im Master-ROM 232; und den Übergang in den INIT_CMD-Zustand 608 als Reaktion darauf, dass ein Befehl nicht erkannt wurde, der Befehlszeiger aber nicht am Ende des Master-ROM 232 steht (Entscheidungsblock 622). Außerdem geht der Master-Verarbeitungskern 236, wie durch die kombinatorische Logik 625, einen Countdown-Timer 626 und einen Befehlsfilter 627 dargestellt, als Reaktion auf die Ausführung einer Gruppe von Befehlen, die einer Übereinstimmung des Bitvektors des Datenselektors entsprechen, in den Zustand INIT_CMD über.
  • In sind Entscheidungen dargestellt, die der Hauptverarbeitungskern 236 im Zustand INIT_CMD auf der Grundlage der Analyse des Befehls der Anweisung trifft. Insbesondere, wenn der Befehl ein Stall-Befehl ist (wie im Entscheidungsblock 630 bestimmt), dann geht der Hauptverarbeitungskern 236 in den STALL-Zustand 632 über. Gemäß Beispielimplementierungen geht die Steuerung nach einem Takt aus dem STALL-Zustand 632 zurück in den vorherigen Zustand über, was jedoch in den Figuren aus Gründen der Übersichtlichkeit nicht dargestellt ist. Wenn der Hauptverarbeitungskern 236 feststellt (Entscheidungsblock 634), dass der Befehl ein Verzögerungsbefehl ist, dann verbleibt der Hauptverarbeitungskern 236, wie durch die Blöcke 636, 640 und 642 dargestellt, für eine bestimmte Anzahl in einem DELAY-Zustand 638, bevor er feststellt (Entscheidungsblock 697) ( ), ob sich der Befehlszeiger am Ende des Haupt-ROM 232 befindet. Wenn nicht, inkrementiert der Hauptverarbeitungskern 236 den Befehlszeiger (Block 698) ( ) und kehrt in den INIT_CMD-Zustand 608 zurück. Andernfalls, wenn der Hauptverarbeitungskern 236 feststellt (Entscheidungsblock 697), dass sich der Befehlszeiger am Ende des Master-ROM 232 befindet, kehrt die Steuerung zum Block 624 ( zurück. Wenn der Hauptverarbeitungskern 236 feststellt (Entscheidungsblock 644) ( , dass es sich bei dem Befehl um einen JMP-Befehl handelt, dann setzt der Hauptverarbeitungskern 236 den Befehlszeiger auf die durch den Operanden des Befehls dargestellte Position (Block 646) und kehrt in den INIT_CMD-Zustand 608 zurück.
  • Wenn der Hauptverarbeitungskern 236 feststellt (Entscheidungsblock 650), dass es sich bei dem Befehl um einen WR-Schreibbefehl handelt, wechselt der Hauptverarbeitungskern 236 in den WACCESS-Zustand 613, um einen Schreibzugriff durchzuführen, wie hierin weiter beschrieben. Wenn der Hauptverarbeitungskern 236 feststellt (Entscheidungsblock 654), dass es sich bei dem Befehl um einen POLL-Befehl oder einen RMW-Befehl handelt, setzt der Hauptverarbeitungskern 236 je nach Bedarf ein Poll-Timer-Flag (Block 656) und geht in den RACCESS-Zustand 683 über, der hier weiter beschrieben wird.
  • Wenn der Master-Verarbeitungskern 236 feststellt (Entscheidungsblock 660), dass der Befehl ein CAS-Befehl ist, dann stellt der Master-Verarbeitungskern 236 fest (Entscheidungsblock 661), ob sich der Befehlszeiger am Ende des Master-ROM 232 befindet (d. h. in Entscheidungsblock 661 bezieht sich „[END]“ auf den letzten Eintrag im Master-ROM 232), und wenn dies der Fall ist, kehrt die Steuerung zu Block 624 zurück ( . Andernfalls, wenn sich der Befehlszeiger nicht am Ende des Master-ROM 232 befindet, inkrementiert der Master-Verarbeitungskern 236 gemäß Block 662 den Befehlszeiger und setzt ein CAS-Zählerflag und kehrt die Steuerung zum INIT_CMD-Zustand 608 zurück. Wenn der Hauptverarbeitungskern 236 feststellt (Entscheidungsblock 664), dass es sich bei dem Befehl um einen DFI-Befehl handelt, fordert der Hauptverarbeitungskern 236 gemäß den Blöcken 666, 668 und 670 den Befehlsbus 250 an und sendet den eingebetteten Befehl, sobald er erteilt wurde, gemäß Block 672 an den Slave-Prozessor 260. Wie in gezeigt, bestimmt der Hauptverarbeitungskern 236 dann (Entscheidungsblock 693), ob sich der Befehlszeiger am Ende des Haupt-ROM 232 befindet, und wenn nicht, inkrementiert er den Befehlszeiger gemäß Block 699, bevor er in den INIT_CMD-Zustand 608 zurückkehrt. Andernfalls, wenn der Hauptverarbeitungskern 236 feststellt (Entscheidungsblock 693), dass sich der Befehlszeiger am Ende des Master-ROM 232 befindet, kehrt der Hauptverarbeitungskern 236 zum Block 624 zurück ( .
  • In sind die Aktionen im WACCESS-Zustand 613 und im RACCESS-Zustand 683 dargestellt. Im WACCESS-Zustand 613 bestimmt der Master-Verarbeitungskern 236 (Entscheidungsblock 675), ob es sich bei dem Befehl um einen RMW-Befehl handelt, und wenn dies der Fall ist, führt er (Block 677) den modifizierten Datenschreibvorgang an die angegebene Adresse aus. Andernfalls, wenn der Hauptverarbeitungskern 236 feststellt (Entscheidungsblock 675), dass der Befehl ein WR-Befehl ist, schreibt (Block 676) der Hauptverarbeitungskern 236 die angegebenen Daten an die angegebene Adresse. Als Reaktion darauf, dass der Master-Verarbeitungskern 236 feststellt (Entscheidungsblock 681), dass der Schreibvorgang abgeschlossen ist, fährt der Master-Verarbeitungskern 236 mit dem Entscheidungsblock 697 fort ( ). Wenn der Hauptverarbeitungskern 236 feststellt (Entscheidungsblock 679), dass der Schreibvorgang ein abnormal langer Schreibvorgang ist (d. h. eine vorbestimmte Dauer überschreitet, wie durch Dekrementieren eines Zählers angezeigt, wie in Block 695 dargestellt), dann setzt der Hauptverarbeitungskern 236 ein Fehlerflag gemäß Block 680 und kehrt in den IDLE-Zustand 602 zurück.
  • Im RACCESS-Zustand 683 führt der Master-Verarbeitungskern 236 eine Leseanforderung (Block 684) der angegebenen Adresse durch und bestimmt (Entscheidungsblock 685), ob das Lesen abgeschlossen ist. Bei dieser Bestimmung kann der Master-Verarbeitungskern 236 feststellen (Entscheidungsblock 686), ob ein Timer abgelaufen ist (per Block 687), und wenn ja, ein Fehlerflag setzen (Block 688) und in den IDLE-Zustand 602 zurückkehren. Wenn der Hauptverarbeitungskern 236 feststellt (Entscheidungsblock 689), dass das Lesen mit einem POLL-Befehl verbunden war, dann stellt der Hauptverarbeitungskern 236 fest (Entscheidungsblock 690), ob die gelesenen Daten mit den Daten übereinstimmen, die Teil des entsprechenden Befehls sind, und kehrt, wenn dies der Fall ist, zum Entscheidungsblock 697 zurück ( ). Andernfalls, wenn die gelesenen Daten nicht übereinstimmen (Entscheidungsblock 690), wartet der Hauptverarbeitungskern 236 für die Dauer eines Timers (wie durch die Entscheidungsblöcke 691 und 692 dargestellt) auf die Ausführung nachfolgender Lesungen, bis die POLL-Daten übereinstimmen. Wenn der Poll-Timer abläuft (wie in Entscheidungsblock 691 bestimmt), dann setzt der Hauptverarbeitungskern 236 ein Fehlerflag (Block 694) und kehrt in den IDLE-Zustand 602 zurück. Wie ebenfalls in dargestellt, geht der Hauptverarbeitungskern 236 in den WACCESS-Zustand 613 über, um den Schreibbefehl zu verarbeiten, wenn das Lesen Teil eines Lese-Änderungs-Schreibbefehls war (wie im Entscheidungsblock 693 entschieden). Andernfalls geht der Master-Verarbeitungskern 236 über die Blöcke 620 und 622 (wie unten beschrieben) zurück in den INIT_CMD-Zustand 308, wenn das Ende des Master-ROM 232 noch nicht erreicht ist.
  • Zurück zu : Wenn der Hauptverarbeitungskern 236 feststellt (Entscheidungsblock 622), dass sich der Befehlszeiger nicht am Ende des Haupt-ROMs 232 befindet, dann führt der Hauptverarbeitungskern 236 keine Operation durch (Block 620) und kehrt in den INIT_CMD-Zustand 608 zurück. Andernfalls, wenn der Master-Verarbeitungskern 236 das Ende des Master-ROM 232 erkennt, setzt der Master-Verarbeitungskern 236 das entsprechende Sequenzende-Flag (Block 624) und kehrt in den IDLE-Zustand 602 zurück.
  • Gemäß Beispielimplementierungen kann der Slave-Verarbeitungskern 262 (siehe ) Befehle in ähnlicher Weise wie der Master-Verarbeitungskern 236 verarbeiten, mit der Ausnahme, dass die Befehlsverarbeitung durch den Slave-Verarbeitungskern 262 modifiziert werden kann, um bestimmte Befehle auszulassen, die nicht vom Slave-Verarbeitungskern 262 verarbeitet werden, wie z. B. Befehle, die den DFI-Befehl und/oder CAS-Befehl enthalten.
  • Bezug nehmend auf enthält eine Vorrichtung 700 gemäß Beispielimplementierungen eine Vielzahl von Subsystemen 710, einschließlich eines ersten Subsystems 710-1 und eines zweiten Subsystems 710-2. Die Vorrichtung 700 enthält einen Master-Prozessor 714, der als Reaktion auf das Einschalten der Vorrichtung 700 erste Anweisungen ausführt, um das erste Subsystem 710-1 zu konfigurieren und zweite Anweisungen bereitzustellen. Die Vorrichtung 700 enthält ferner einen Slave-Prozessor 718, um vor dem Hochfahren der Vorrichtung 700 die zweiten Anweisungen vom Master-Prozessor 714 zu empfangen und die zweiten Anweisungen auszuführen, um das zweite Teilsystem 710-2 zu konfigurieren.
  • Bezug nehmend auf enthält ein Computersystem 800 gemäß Beispielimplementierungen eine Vielzahl von Zentraleinheiten (CPUs) 804, einen Systemspeicher 808 und einen Baseboard-Management-Controller 810. Der Baseboard-Management-Controller 810 umfasst eine Vielzahl von Subsystemen 840, darunter ein erstes Subsystem 840-1 und ein zweites Subsystem 840-2. Mindestens ein Verarbeitungskern 814 des Basisplatinen-Verwaltungscontrollers 810 führt Anweisungen aus, um Systemverwaltungsaufgaben für das Computersystem 800 durchzuführen. Der Baseboard-Management-Controller 810 enthält außerdem einen Master-Konfigurator 818 und einen Slave-Konfigurator 820. Der Master-Konfigurator 818 führt als Reaktion auf das Einschalten des Baseboard-Management-Controllers 810 erste Anweisungen aus, um das erste Subsystem 840-1 zu konfigurieren und zweite Anweisungen bereitzustellen; und der Slave-Konfigurator 820 empfängt die zweiten Anweisungen und führt die zweiten Anweisungen aus, um das zweite Subsystem 840-2 zu konfigurieren.
  • Bezugnehmend auf , gemäß Beispielimplementierungen, beinhaltet eine Technik 900 gemäß Block 904, dass ein Allzweckverarbeitungskern eines eingebetteten Verarbeitungssystems Befehle als Reaktion auf die Freigabe des Allzweckverarbeitungskerns aus dem Reset ausführt; und dass der Allzweckverarbeitungskern als Reaktion auf das Einschalten des eingebetteten Verarbeitungssystems im Reset gehalten wird (Block 908). Das Verfahren 900 umfasst gemäß Block 910, während der Mehrzweckverarbeitungskern im Reset gehalten wird, die Ausführung erster Befehle durch einen Master-Prozessor des eingebetteten Verarbeitungssystems, wobei die Ausführung der ersten Befehle ein erstes Subsystem des eingebetteten Verarbeitungssystems konfiguriert und den Master-Prozessor veranlasst, zweite Befehle an einen Slave-Prozessor des eingebetteten Verarbeitungssystems zu übermitteln; und der Slave-Prozessor führt die zweiten Befehle aus, um das zweite Subsystem zu konfigurieren.
  • Gemäß Beispielimplementierungen umfassen die ersten Befehle einen gegebenen ersten Befehl mit Operanden, die einen gegebenen zweiten Befehl der zweiten Befehle darstellen; und die Ausführung des gegebenen ersten Befehls durch den Master-Prozessor bewirkt, dass der Master-Prozessor den gegebenen zweiten Befehl an den Slave-Prozessor übermittelt. Ein besonderer Vorteil dieser Anordnung ist, dass ein Master-Prozessor in der Lage ist, einen Slave-Prozessor fernzusteuern, der auf die Konfiguration eines bestimmten Subsystems zugeschnitten sein kann.
  • Gemäß Beispielimplementierungen kommuniziert der Master-Prozessor mit dem ersten Subsystem unter Verwendung eines ersten Bus-Kommunikationsprotokolls und der Slave-Prozessor kommuniziert mit dem zweiten Subsystem unter Verwendung eines zweiten Bus-Kommunikationsprotokolls, das sich vom ersten Bus-Kommunikationsprotokoll unterscheidet. Ein besonderer Vorteil dieser Anordnung ist, dass die Master- und Slave-Prozessoren speziell auf die jeweiligen Subsysteme zugeschnitten werden können.
  • In Übereinstimmung mit Beispielimplementierungen kann das erste Subsystem einen Speichercontroller und das zweite Subsystem eine Speicherschnittstelle enthalten. Ein besonderer Vorteil dieser Anordnung besteht darin, dass grundlegende Funktionen für den Zugriff auf einen Speicher eingerichtet werden können, bevor Allzweckverarbeitungskerne aus dem Reset-Zustand freigegeben werden, wodurch eine Möglichkeit geschaffen wird, Fehlermeldungen zu melden, falls ein Problem verhindert, dass die Kerne aus dem Reset-Zustand freigegeben werden.
  • Gemäß Beispielimplementierungen kann die Vorrichtung einen Busmultiplexer enthalten, und der Hauptprozessor steuert den Busmultiplexer so, dass der Busmultiplexer den Hauptprozessor mit dem ersten Subsystem koppelt, um das erste System zu konfigurieren, und einen Mehrzweckprozessor mit dem ersten Subsystem koppelt, um dem Mehrzweckprozessor zu ermöglichen, mit dem ersten Subsystem zu kommunizieren, wenn der Mehrzweckprozessor vom Reset freigegeben wird. Ein besonderer Vorteil dieser Anordnung ist, dass das erste Subsystem vom Mehrzweckprozessor isoliert werden kann, wenn das erste Subsystem anfänglich vom Master-Prozessor konfiguriert wird, wodurch verhindert wird, dass ein Mehrzweckprozessor, der eine Root-of-Trust-Prüfung nicht besteht, auf das erste Subsystem zugreift.
  • Gemäß Beispielimplementierungen kann das Gerät eine Vielzahl von Befehlen speichern, wobei die Vielzahl von Befehlen die ersten Befehle, einen Fallbefehl und Gruppen von Befehlen enthält, die dem Fallbefehl zugeordnet sind. Eine gegebene Gruppe von Befehlen der Gruppen von Befehlen entspricht den ersten Befehlen, und der Hauptprozessor wählt als Reaktion auf die Ausführung des Fallbefehls die ersten Befehle zur Ausführung durch den Hauptprozessor auf der Grundlage eines Datenvektors aus, der von der Vorrichtung empfangen wurde und die gegebene Gruppe identifiziert. Ein besonderer Vorteil dieser Anordnung besteht darin, dass die Flexibilität gegeben ist, dass externe Daten verwendet werden können, um die Konfiguration des ersten Subsystems durch den Master-Prozessor zu steuern.
  • Gemäß Beispielimplementierungen verhindert ein Fehler bei der kryptografischen Prüfung, dass der Allzweckverarbeitungskern vom Rücksetzen befreit wird, und die Technik umfasst ferner die Verwendung mindestens eines des konfigurierten ersten Subsystems und des zweiten konfigurierten Subsystems, um eine Nachricht zu übermitteln, die den Fehler bei der kryptografischen Prüfung darstellt. Ein besonderer Vorteil dieser Technik ist, dass Fehler oder Informationsmeldungen unter Verwendung von Subsystemen gemeldet werden können, die auf eine grundlegende Funktionsebene konfiguriert wurden, ohne sich auf den Allzweckverarbeitungskern zu verlassen.
  • Während die vorliegende Offenbarung in Bezug auf eine begrenzte Anzahl von Implementierungen beschrieben wurde, wird der Fachmann, der die Vorteile dieser Offenbarung kennt, zahlreiche Modifikationen und Variationen davon schätzen. Es ist beabsichtigt, dass die beigefügten Ansprüche alle derartigen Modifikationen und Variationen abdecken.

Claims (20)

  1. Eine Vorrichtung, die Folgendes umfasst: eine Vielzahl von Subsystemen, die ein erstes Subsystem und ein zweites Subsystem umfassen; einen Hauptprozessor, um als Reaktion auf das Einschalten des Geräts erste Befehle auszuführen, um das erste Teilsystem zu konfigurieren und zweite Befehle bereitzustellen; und einen Slave-Prozessor, um die zweiten Anweisungen vom Master-Prozessor zu empfangen und die zweiten Anweisungen auszuführen, um das zweite Subsystem zu konfig u rieren.
  2. Die Vorrichtung nach Anspruch 1, wobei: die ersten Befehle einen gegebenen ersten Befehl mit Operanden umfassen, die einen gegebenen zweiten Befehl der zweiten Befehle darstellen; und die Ausführung des gegebenen ersten Befehls durch den Master-Prozessor bewirkt, dass der Master-Prozessor den gegebenen zweiten Befehl an den Slave-Prozessor übermittelt.
  3. Die Vorrichtung nach Anspruch 2, wobei die Ausführung des gegebenen ersten Befehls den Hauptprozessor ferner veranlasst,: ein Dekodiersignal erzeugen, um die Auswahl des Slave-Prozessors darzustellen; und den gegebenen ersten Befehl einem mit dem Slave-Prozessor gekoppelten Befehlsbus zur Verfügung stellen.
  4. Die Vorrichtung nach Anspruch 1, wobei der Master-Prozessor mit dem ersten Subsystem unter Verwendung eines ersten Bus-Kommunikationsprotokolls kommuniziert und der Slave-Prozessor mit dem zweiten Subsystem unter Verwendung eines zweiten Bus-Kommunikationsprotokolls kommuniziert, das sich von dem ersten Bus-Kommunikationsprotokoll unterscheidet.
  5. Die Vorrichtung nach Anspruch 1, wobei die Mehrzahl von Subsystemen weiterhin mindestens ein zusätzliches Subsystem umfasst, wobei die Vorrichtung weiterhin umfasst: mindestens einen zusätzlichen Slave-Prozessor, um als Reaktion auf das Einschalten des Geräts Anweisungen vom Master-Prozessor zu empfangen und auszuführen, um das mindestens eine zusätzliche Subsystem zu konfigurieren.
  6. Die Vorrichtung nach Anspruch 1, wobei das erste Subsystem einen Speichercontroller und das zweite Subsystem eine Speicherschnittstelle umfasst.
  7. Die Vorrichtung nach Anspruch 1, wobei die Vielzahl von Subsystemen mindestens eines der folgenden umfasst ein Speicherinterface, einen Speicher-Controller, einen Bus-Controller oder eine Spannungsversorgung.
  8. Die Vorrichtung nach Anspruch 1, ferner umfassend: einen Allzweckprozessor, um Bootstrap-Befehle auszuführen, wobei der Master-Prozessor die ersten Befehle autonom in Bezug auf den Allzweckprozessor ausführt, während der Allzweckprozessor im Reset gehalten wird, der Slave-Prozessor die zweiten Befehle autonom in Bezug auf den Allzweckprozessor ausführt, während der Allzweckprozessor im Reset gehalten wird, und der Allzweckprozessor die Bootstrap-Befehle ausführt, nachdem er aus dem Reset freigegeben wurde.
  9. Die Vorrichtung nach Anspruch 8, wobei: die Vorrichtung umfasst ferner eine Vertrauenswurzel, die einen unveränderlichen Fingerabdruck speichert; und der Mehrzweckprozessor als Reaktion auf die Freigabe des ersten Prozessors aus dem Reset die Bootstrap-Befehle basierend auf dem unveränderlichen Fingerabdruck validiert.
  10. Die Vorrichtung nach Anspruch 8, die ferner einen Busmultiplexer umfasst, wobei der Master-Prozessor: den Busmultiplexer steuert, um den Busmultiplexer zu veranlassen, den Master-Prozessor mit dem ersten Subsystem zu koppeln, um das erste Subsystem zu konfigurieren; und den Mehrzweckprozessor mit dem ersten Subsystem koppeln, damit der Mehrzweckprozessor mit dem ersten Subsystem kommunizieren kann, wenn der Mehrzweckprozessor vom Reset freigegeben wird.
  11. Die Vorrichtung nach Anspruch 1, ferner umfassend: einen Speicher zum Speichern einer Vielzahl von Befehlen, wobei die Vielzahl von Befehlen die ersten Befehle, einen Fallbefehl und Gruppen von Befehlen, die dem Fallbefehl zugeordnet sind, enthält; wobei: eine bestimmte Gruppe von Befehlen der Befehlsgruppen den ersten Befehlen entspricht; und der Master-Prozessor als Reaktion auf die Ausführung des Fall-Befehls die ersten Befehle zur Ausführung durch den Master-Prozessor auf der Grundlage eines Vektors von Daten auswählt, die von dem Gerät empfangen wurden und die gegebene Gruppe identifizieren.
  12. Ein Computersystem, bestehend aus: eine Vielzahl von Zentraleinheiten (CPUs); einen Systemspeicher; und einen Baseboard-Management-Controller, der Folgendes umfasst: eine Vielzahl von Subsystemen, darunter ein erstes Subsystem und ein zweites Subsystem; mindestens einen Verarbeitungskern zur Ausführung von Befehlen zur Durchführung von Systemverwaltungsaufgaben für das Computersystem; einen Master-Konfigurator, um als Reaktion auf das Einschalten des Basisplatinen-Verwaltungscontrollers Befehle auszuführen, um das erste Subsystem zu konfigurieren und zweite Befehle bereitzustellen; und einen Slave-Konfigurator, um die zweiten Anweisungen zu empfangen und die zweiten Anweisungen auszuführen, um das zweite Subsystem zu konfigurieren.
  13. Das Computersystem nach Anspruch 12, wobei: der Master-Konfigurator einen ersten Befehl ausführt, dessen Operanden einen gegebenen zweiten Befehl der zweiten Befehle darstellen; und der Master-Konfigurator als Reaktion auf die Ausführung des ersten Befehls den gegebenen zweiten Befehl an den Slave-Konfigurator übermittelt.
  14. Das Computersystem nach Anspruch 12, wobei: der Basisplatinen-Verwaltungs-Controller außerdem eine Vielzahl von Slave-Konfiguratoren umfasst, einschließlich des Slave-Konfigurators, der die zweiten Anweisungen empfängt und ausführt; die Basisplatinen-Verwaltungssteuerung außerdem einen Befehlsbus umfasst; und der Master-Konfigurator als Reaktion auf die Ausführung des ersten Befehls ein Dekodiersignal erzeugt, um den Slave-Konfigurator auszuwählen, der die zweiten Befehle empfängt und ausführt.
  15. Das Computersystem nach Anspruch 14, wobei die Master-Konfiguration und die mehreren Slave-Konfiguratoren mit mehreren unterschiedlichen Bus-Kommunikationsprotokollen verbunden sind, die zur Datenkommunikation mit den mehreren Subsystemen verwendet werden.
  16. Das Computersystem nach Anspruch 12, wobei der Baseboard-Management-Controller auf einem monolithischen Halbleiterchip hergestellt ist.
  17. Ein Verfahren, das Folgendes umfasst: einen Mehrzweckverarbeitungskern eines eingebetteten Verarbeitungssystems, der Befehle zum Booten eines eingebetteten Verarbeitungssystems ausführt; Halten des Mehrzweckverarbeitungskerns im Reset-Zustand als Reaktion auf ein Einschalten des eingebetteten Verarbeitungssystems; und während der Allzweckverarbeitungskern im Reset gehalten wird: einen Master-Prozessor des eingebetteten Verarbeitungssystems, der erste Befehle ausführt, wobei die Ausführung der ersten Befehle ein erstes Subsystem des eingebetteten Verarbeitungssystems konfiguriert und den Master-Prozessor veranlasst, zweite Befehle an einen Slave-Prozessor des eingebetteten Verarbeitungssystems zu übermitteln; und der Slave-Prozessor die zweiten Anweisungen ausführt, um das zweite Subsystem zu konfigurieren.
  18. Das Verfahren nach Anspruch 17, wobei: die ersten Befehle einen gegebenen ersten Befehl mit Operanden zur Kodierung eines gegebenen zweiten Befehls der zweiten Befehle umfassen; und die Ausführung der ersten Befehle umfasst, dass der Master-Prozessor den gegebenen ersten Befehl ausführt, und die Ausführung des gegebenen ersten Befehls durch den Master-Prozessor den Master-Prozessor veranlasst, den gegebenen zweiten Befehl an den Slave-Prozessor zu übermitteln.
  19. Das Verfahren nach Anspruch 17, bei dem ein kryptographischer Prüffehler verhindert, dass der Mehrzweckverarbeitungskern aus dem Reset freigegeben wird, wobei das Verfahren ferner Folgendes umfasst Verwenden mindestens eines des konfigurierten ersten Subsystems und des zweiten konfigurierten Subsystems, um eine Nachricht zu übermitteln, die den Fehler der kryptografischen Prüfung darstellt.
  20. Verfahren nach Anspruch 17, ferner umfassend: Speichern einer Mehrzahl von Befehlen, die die ersten Befehle enthalten, in einem Speicher des eingebetteten Verarbeitungssystems, wobei die Mehrzahl von Befehlen die ersten Befehle enthält und Gruppen von Befehlen enthält, die mit dem Fallbefehl verbunden sind, und eine gegebene Gruppe von Befehlen der Gruppen von Befehlen den ersten Befehlen entspricht; und der Master-Prozessor den Fall-Befehl ausführt, wobei der Master-Prozessor, der den Fall-Befehl ausführt, den Master-Prozessor veranlasst, die ersten Befehle für die Ausführung durch den Master-Prozessor auf der Grundlage eines Vektors von Daten auszuwählen, die von dem eingebetteten Verarbeitungssystem empfangen werden und die gegebene Gruppe identifizieren.
DE102021101458.1A 2020-01-31 2021-01-25 Master- und Slave-Prozessoren zum Konfigurieren von Subsystemen Active DE102021101458B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/779,184 US11138140B2 (en) 2020-01-31 2020-01-31 Configuring first subsystem with a master processor and a second subsystem with a slave processor
US16/779,184 2020-01-31

Publications (2)

Publication Number Publication Date
DE102021101458A1 true DE102021101458A1 (de) 2021-08-05
DE102021101458B4 DE102021101458B4 (de) 2022-06-15

Family

ID=76853709

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021101458.1A Active DE102021101458B4 (de) 2020-01-31 2021-01-25 Master- und Slave-Prozessoren zum Konfigurieren von Subsystemen

Country Status (3)

Country Link
US (1) US11138140B2 (de)
CN (1) CN113204518B (de)
DE (1) DE102021101458B4 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220335003A1 (en) * 2021-04-19 2022-10-20 Advanced Micro Devices, Inc. Master-Slave Communication with Subdomains

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3751108T2 (de) * 1986-11-12 1995-10-26 Nec Corp Mikroprozessor mit der Fähigkeit, an einen Koprozessor geschaltet zu werden.
GB2365545B (en) * 1999-12-23 2004-06-02 Ibm Data processing system with master and slave processors
US7111160B1 (en) 2000-02-07 2006-09-19 Cisco Technology, Inc. Method and apparatus for using a development port for boot up
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
KR100456630B1 (ko) 2001-12-11 2004-11-10 한국전자통신연구원 프로세서간 통신을 위한 인터럽트 중계 장치 및 방법
AU2003292455A1 (en) 2002-12-18 2004-07-09 Koninklijke Philips Electronics N.V. Encapsulated hardware configuration/control
US20050102573A1 (en) 2003-11-03 2005-05-12 Macronix International Co., Ltd. In-circuit configuration architecture for embedded configurable logic array
CN1716181A (zh) * 2004-06-29 2006-01-04 凌阳科技股份有限公司 可动态配置协处理器数目的系统
US8645959B2 (en) * 2005-03-30 2014-02-04 Intel Corporaiton Method and apparatus for communication between two or more processing elements
CN1867073A (zh) * 2005-05-18 2006-11-22 四川浩特通信有限公司 多标准数字音视频编码系统
US20070139074A1 (en) 2005-12-19 2007-06-21 M2000 Configurable circuits with microcontrollers
US8473460B2 (en) * 2006-11-21 2013-06-25 Microsoft Corporation Driver model for replacing core system hardware
CN101122892A (zh) * 2007-08-17 2008-02-13 中国科学院计算技术研究所 一种cpci信号处理板
US9703595B2 (en) * 2008-10-02 2017-07-11 Mindspeed Technologies, Llc Multi-core system with central transaction control
US9448964B2 (en) 2009-05-04 2016-09-20 Cypress Semiconductor Corporation Autonomous control in a programmable system
US8255345B2 (en) * 2009-05-15 2012-08-28 The Aerospace Corporation Systems and methods for parallel processing with infeasibility checking mechanism
CN101872336B (zh) * 2010-05-31 2011-12-21 浙江大学 基于主从架构的协处理器高效执行的装置
CN102693210B (zh) * 2011-03-21 2017-03-01 中兴通讯股份有限公司 一种处理器间传递参数的方法及装置
US8839007B2 (en) * 2011-06-17 2014-09-16 Dell Products Lp Shared non-volatile storage for digital power control
CN102508643A (zh) * 2011-11-16 2012-06-20 刘大可 一种多核并行数字信号处理器及并行指令集的运行方法
US9619243B2 (en) * 2013-12-19 2017-04-11 American Megatrends, Inc. Synchronous BMC configuration and operation within cluster of BMC
WO2016140763A1 (en) * 2015-03-03 2016-09-09 Gopher Protocol, Inc. Electronic circuits for secure communications and associated systems and methods
US10001999B2 (en) * 2015-03-13 2018-06-19 Cavium, Inc. System and method for configuring a plurality of registers with soft error detection and low wiring complexity
JP6383348B2 (ja) * 2015-12-22 2018-08-29 矢崎総業株式会社 制御装置および制御システム
US10114550B2 (en) 2016-01-07 2018-10-30 Samsung Electronics Co., Ltd. Data storage device and data processing system including the data storage device
JP6922639B2 (ja) * 2017-10-13 2021-08-18 オムロン株式会社 制御装置、スレーブ装置の制御方法
US10352998B2 (en) * 2017-10-17 2019-07-16 Microchip Technology Incorporated Multi-processor core device with MBIST
CN110490311A (zh) * 2019-07-08 2019-11-22 华南理工大学 基于risc-v架构的卷积神经网络加速装置及其控制方法
CN110703587A (zh) * 2019-10-23 2020-01-17 中船动力研究院有限公司 一种船用低速发动机主控制单元冗余的方法及装置

Also Published As

Publication number Publication date
US11138140B2 (en) 2021-10-05
CN113204518B (zh) 2022-08-02
DE102021101458B4 (de) 2022-06-15
US20210240646A1 (en) 2021-08-05
CN113204518A (zh) 2021-08-03

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
DE102007012448B4 (de) Ein chipsatz-unabhängiges Verfahren für lokale Aktualisierung und Konfigurierung eines System-BIOS
DE60319125T2 (de) Integrierte schaltung mit mehreren betriebsarten
DE102004057756B4 (de) USB-Steuerungseinrichtung mit OTG-Steuerungseinheit
DE102018123817A1 (de) Vorrichtung für den direkten hostzugriff auf den speicherort einer speichervorrichtung
DE60100993T2 (de) Rechnersystem mit einer speicherzugriffssteuerung zum gebrauch von non-system speicheraufschlagmitteln während systemurladungszeit
DE112010002425B4 (de) Delegieren einer Anfrageoperation an eine ander Einrichtung
DE10297662T5 (de) Eingebauter Prozessor mit direkter Verbindung von Sicherheitsvorrichtungen für verbesserte Sicherheit
DE102012208803A1 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE102007039156A1 (de) EFI-basierter Mechanismus zum Exportieren von Plattform-Verwaltungsfähigkeiten in das Betriebssystem
DE10234991A1 (de) Hostcontrollerdiagnose für einen seriellen Bus
DE102009043263B4 (de) Verfahren, Vorrichtung und System zum Abfragen eines Gerätes nach Informationen
WO2017045840A1 (de) Vorrichtung zum verarbeiten von daten und verfahren zum betreiben einer solchen vorrichtung
DE102012209011A1 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE102015102135A1 (de) Unterbrechbares Exklusivspeichern
DE102013113262A1 (de) Auslöser-Leitwegeinheit
DE112013004065T5 (de) Schutzschema für einen eingebetteten Code
DE102021101458B4 (de) Master- und Slave-Prozessoren zum Konfigurieren von Subsystemen
DE102022107800A1 (de) Booten und verwenden eines einzelnen cpu-sockels als partitionierte multi-cpu-plattform
DE102021108300B4 (de) Weiterleitung von steuerdaten zwischen halbleiterpaketen
DE102014011665B4 (de) System und Verfahren für DMA-Betrieb mit hoher Integrität
DE102012209014B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
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
DE102021104937B4 (de) Verifikation von programmierbaren logikbausteinen

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
R016 Response to examination communication
R018 Grant decision by examination section/examining division
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

R020 Patent grant now final