DE102020133738A1 - Firmware-update-techniken - Google Patents

Firmware-update-techniken Download PDF

Info

Publication number
DE102020133738A1
DE102020133738A1 DE102020133738.8A DE102020133738A DE102020133738A1 DE 102020133738 A1 DE102020133738 A1 DE 102020133738A1 DE 102020133738 A DE102020133738 A DE 102020133738A DE 102020133738 A1 DE102020133738 A1 DE 102020133738A1
Authority
DE
Germany
Prior art keywords
power
firmware update
firmware
memory
interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102020133738.8A
Other languages
English (en)
Inventor
Larry Seater
Benjamin CHEONG
Manishkumar Rana
Stephen Fife
James Hearn
Kevin LIEDTKE
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102020133738A1 publication Critical patent/DE102020133738A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/28Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

Hierin beschriebene Beispiele beziehen sich auf eine Schaltungsplatine, die ein Gerät, einen Firmware-Speicher und eine Leistungssteuerung umfasst. Bei einigen Beispielen ist der Firmware-Speicher ausgebildet, um ein Firmware-Update zu speichern und ansprechend auf einen softwareinitiierten Befehl ist die Leistungssteuerung ausgebildet, um die Leistung zu dem Gerät zu reduzieren, um ein Firmware-Update des Geräts zu veranlassen und die Leistung zu dem Gerät wiederherzustellen, um eine Ausführung des Firmware-Updates zu veranlassen. Bei einigen Beispielen ist die Leistungssteuerung ausgebildet, um die Leistung nur zu dem Gerät zu reduzieren, unabhängig von der Leistungsversorgung zu zumindest einem anderen Gerät. Bei einigen Beispielen wird die Gerätekonfiguration vor der Reduzierung der Leistung zu dem Gerät gespeichert und wird dem Gerät wiederhergestellt, nachdem die Leistung zu dem Gerät wiederhergestellt ist.

Description

  • Rechengeräte umfassen üblicherweise Firmware, die für die Hardware-Initialisierung, Low-Level-Hardware-Management und das Managen des Boot-Prozesses verantwortlich ist. Zusätzlich zu der Plattform-Firmware können Rechengeräte auch dedizierte Firmware für Steuerungschips, Peripheriegeräte oder andere Komponenten umfassen. Firmware wird üblicherweise während der Laufzeit und in Verbindung mit einem Boot gelesen, kann aber in Verbindung mit einem spezialisierten Firmware-Update-Prozess aktualisiert (upgedatet) werden.
  • Figurenliste
    • 1 stellt ein beispielhaftes System dar.
    • 2 stellt ein beispielhaftes System dar.
    • 3 stellt einen beispielhaften Prozess dar.
    • 4 stellt einen beispielhaften Prozess dar.
    • 5 stellt ein beispielhaftes System dar.
    • 6 stellt eine Netzwerkschnittstelle dar.
    • 7 stellt einen Schalter dar.
    • 8 stellt eine Umgebung dar.
  • DETAILLIERTE BESCHREIBUNG
  • Ein Firmware-Update eines Geräts kann dazu führen, dass ein Server für große Zeitspannen nicht verfügbar ist, da mehrere Geräte neu gestartet werden müssen, umfassend Geräte ohne ein bestimmtes Firmware-Update. In einigen Szenarien kann ein Server z. B. in Verbindung mit Firmware-Updates für 30 Minuten nicht verfügbar sein. Verschiedene Ausführungsbeispiele stellen eine Softwaremanagementkonsole bereit, um Firmware-Updates spezifischer Geräte zu steuern und spezifisch zu steuern, welche Geräte ein Zurücksetzen der Leistung erfahren, anstatt aller Geräte, umfassend Geräte, die nicht einem Firmware-Updates unterliegen. Verschiedene Ausführungsbeispiele stellen eine Power-Cycling- (Aus- und Wiedereinschalten) Schaltung (PCC; power cycling circuit) bereit, die eine Leistungsabgabe an ein Gerät in Verbindung mit einem Firmware-Update steuert. Verschiedene Ausführungsbeispiele können die Notwendigkeit eines Reboots des Systems für ein Firmware-Update eines Geräts reduzieren oder eliminieren, wodurch der aufgrund der Nichtverfügbarkeit des Servers aufgrund des Planens und Ausführens von Server-Reboots verlorene Geldbetrag erheblich reduziert werden kann.
  • Verschiedene Ausführungsbeispiele erlauben es der Software, Konfigurationsraumdaten eines Geräts zu speichern, nach einem Firmware-Update ein Entfernen der Leistung zu dem Gerät auszulösen, die Leistung zu dem Gerät wiederherzustellen, Konfigurationsraumdaten erneut zu laden und den normalen Betrieb des Geräts wieder aufzunehmen, ohne das gesamte System aus- und wieder einzuschalten.
  • 1 stellt ein beispielhaftes System dar. Das System kann verwendet werden, um eine Firmware eines oder mehrerer Geräte zu aktualisieren, ohne ein Zurücksetzen der Leistung eines Geräts zu veranlassen, das keinem Firmware-Update unterzogen wird. Die Rechenplattformen 100-0 bis 100-N (wobei N≥1) können mit der Plattform 150 in Verbindung mit Firmware-Updates interagieren. Die Rechenplattform 100 kann sich auf irgendeine oder alle der Rechenplattformen 100-0 bis 100-N beziehen und irgendeine Komponente der Rechenplattform 100-0 kann sich auf eine ähnliche Komponente in irgendeiner oder allen der Rechenplattformen 100-0 bis 100-N beziehen. Bei einigen Beispielen können die Prozessoren 102 eines oder mehrere umfassen von: einer zentralen Verarbeitungseinheit (CPU; central processing unit), einer Grafikverarbeitungseinheit (GPU; graphics processing unit), einem feldprogrammierbaren Gate-Array (FPGA; field programmable gate array) oder einer anwendungsspezifischen integrierten Schaltung (ASIC; application specific integrated circuit). Bei einigen Beispielen kann eine CPU unter anderem von Intel®, ARM®, AMD®, Qualcomm®, IBM®, Texas Instruments® verkauft oder entwickelt werden. Die Prozessoren 102-0 können das OS 108-0 ausführen. Bei einigen Beispielen kann das OS 108-0 Linux®, Windows®, FreeBSD®, Android®, MacOS®, iOS® oder irgendein anderes Betriebssystem sein. Der Speicher (memory) 104-0 kann ein irgendeine Art von flüchtigem oder nichtflüchtigem Speicher sein. Die Rechenplattform 100 kann Prozessoren 102-0 und einen Speicher 104-0 verwenden, um das Betriebssystem 108-0, Anwendungen oder virtualisierte Ausführungsumgebungen (VEEs; virtualized execution environments) auszuführen. Eine virtualisierte Ausführungsumgebung kann zumindest eine virtuelle Maschine oder einen Container umfassen. Eine virtuelle Maschine (VM; virtual machine) kann Software sein, die ein Betriebssystem und eine oder mehrere Anwendungen ausführt. Eine VM kann durch Spezifikation, Konfigurationsdateien, eine virtuelle Plattendatei, eine nichtflüchtige Direktzugriffsspeicher- (NVRAM; non-volatile random access memory) Einstellungsdatei und die Protokolldatei definiert werden und wird durch die physischen Ressourcen einer Host-Rechenplattform gesichert. Eine VM kann ein Betriebssystem (OS; operating system) oder eine Anwendungsumgebung sein, die auf Software installiert ist, die dedizierte Hardware imitiert. Der Endnutzer hat auf einer virtuellen Maschine die gleiche Erfahrung, die er auf dedizierter Hardware hätte. Spezialisierte Software, genannt Hypervisor, emuliert die CPU-, Speicher-, Festplatten-, Netzwerk- und andere Hardwareressourcen des PC-Clients oder Servers vollständig und ermöglicht es virtuellen Maschinen, die Ressourcen gemeinschaftlich zu verwenden. Der Hypervisor kann mehrere virtuelle Hardware-Plattformen emulieren, die voneinander isoliert sind, was es virtuellen Maschinen erlaubt, Linux- und Windows-Server-Betriebssysteme auf demselben zugrunde liegenden physischen Host auszuführen.
  • Ein Container kann ein Software-Package von Anwendungen, Konfigurationen und Abhängigkeiten sein, sodass die Anwendungen zuverlässig auf einer Rechenumgebung im Hinblick auf eine andere laufen. Container können ein Betriebssystem, das auf der Serverplattform installiert ist, gemeinschaftlich verwenden und als isolierte Prozesse laufen. Ein Container kann ein Software-Package sein, das alles umfasst, was die Software zur Ausführung benötigt, wie beispielsweise Systemwerkzeuge, Bibliotheken und Einstellungen. Container werden nicht wie traditionelle Softwareprogramme installiert, was es ihnen erlaubt, von der anderen Software und dem Betriebssystem selbst isoliert zu sein. Die isolierte Natur der Container stellt mehrere Vorteile bereit. Erstens läuft die Software in einem Container in unterschiedlichen Umgebungen gleich. Beispielsweise kann ein Container, der PHP und MySQL umfasst, sowohl auf einem Linux-Computer als auch auf einer Windows-Maschine identisch ausgeführt werden. Zweitens stellen Container zusätzliche Sicherheit bereit, da die Software das Host-Betriebssystem nicht beeinträchtigt. Während eine installierte Anwendung Systemeinstellungen ändern und Ressourcen, wie beispielsweise die Windows-Registrierung, modifizieren kann, kann ein Container nur Einstellungen innerhalb des Containers modifizieren.
  • Die Plattform 100-0 kann die Netzwerkschnittstelle 110-0 verwenden, um Inhalte unter Verwendung der Verbindung 130 zu senden oder zu empfangen. Ein Administrator kann den Firmware-Update-Manager 152, der auf der Plattform 150 ausgeführt wird, verwenden, um Geräte unter den Rechenplattformen 100-0 bis 100-N auszuwählen, die ein Firmware-Update zu erhalten sollen, und welches Firmware-Update sie erhalten sollen. Bei einigen Beispielen kann der Administrator auf eine grafische Benutzeroberfläche zugreifen, um ein oder mehrere Geräte auszuwählen, die ein Firmware-Update erhalten sollen. Nach dem Anzeigen eines erfolgreichen Firmware-Updates kann ein Administrator abhängig von dem Betriebssystem Treiber-Updates einsetzen. Gemäß verschiedenen Ausführungsbeispielen kann die Plattform 150 über das Betriebssystem 108 ein Firmware- oder anderes Software-Update an irgendeine Rechenplattform 100 ausgeben, um zumindest Firmware in der Netzwerkschnittstelle 110 oder eines anderen Geräts, das einem Firmware-Update unterzogen werden soll, zu aktualisieren, ohne eine Unterbrechung des Betriebs oder ein Zurücksetzen der Leistung eines Geräts zu veranlassen, das keinem Firmware-Update unterzogen werden soll. Beispielsweise kann die Plattform 150 ein Firmware- oder anderes Software-Update auf der Netzwerkschnittstelle 110-0 initiieren, indem sie ein Firmware-Update an die Netzwerkschnittstelle 110-0 sendet. Die Rechenplattform 100-0 wird gewarnt, dass ein Update auftreten soll. Bei einigen Beispielen lädt die Rechenplattform 100-0 das Firmware-Update-Image herunter und installiert es oder empfängt das Firmware-Update über Pakete, die durch die Plattform 150 gesendet werden.
  • Die Prozessoren 102-0 können das Firmware-Update-Tool 106-0 ausführen, um zu identifizieren, wenn ein Versuch zur Aktualisierung von Firmware durch die Plattform 150 initiiert wird, und um einen Versuch zur Aktualisierung von Firmware der Netzwerkschnittstelle 110-0 oder eines anderen Peripheriegeräts 116-0 (z. B. Beschleuniger, Video- oder Anzeigekarte, Speicher- (memory) Steuerung, Speicherungs- (storage) Steuerung oder irgendein Peripheriegerät, das durch eine Schnittstelle (z. B. PCIe) verbunden ist) zu validieren und zu erlauben oder den Versuch zu verweigern. Für ein erlaubtes Firmware-Update kann das Firmware-Update-Tool 106-0 eines oder mehrere ausführen von: (a) Speichern von Konfigurationsinformationen des zu aktualisierenden Geräts (z. B. PCIe-Konfigurationsrauminformationen wie beispielsweise zugewiesene physische Funktionen (PFs)) in den Speicher 104-0, (b) Benachrichtigen einer Leistungssteuerung 114-0 des Geräts (z. B. Leistungssteuerung 114-0), um die Leistung zu dem Gerät auf Null zu reduzieren und die Leistung zu dem Gerät auf den Betriebsleistungspegel des Geräts zu erhöhen, und (c) Speichern von Konfigurationsinformationen in dem Gerät, das aus- und wieder eingeschaltet wurde (z. B. Leistung reduziert und auf Betriebsleistungspegel erhöht). Danach kann das Gerät unter Verwendung von aktualisierter Firmware arbeiten, ohne zu veranlassen, dass andere Geräte aus- und wieder eingeschaltet werden, und ohne den Betrieb anderer Geräte zu unterbrechen, die keinem Firmware-Update unterliegen. In Verbindung mit Firmware-Updates kann das Betriebssystem (OS) 108-0 die Deaktivierung eines Treibers für das Gerät während oder in Verbindung mit dem Firmware-Update ausführen und die Verwendung des Treibers ermöglichen, nachdem die Firmware des Geräts aktualisiert wurde.
  • Eine Verbindung 130 kann Kommunikationen bereitstellen, die kompatibel oder konform sind mit einem oder mehreren von: Ethernet (IEEE 802.3), entfernter Direktspeicherzugriff (RDMA; remote direct memory access), InfiniBand, Internet Wide Area RDMA Protocol (iWARP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), quick UDP Internet Connections (QUIC), RDMA over Converged Ethernet (RoCE), Peripheral Component Interconnect (PCIe), Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On-Chip System Fabric (IOSF), Omnipath, Compute Express Link (CXL), HyperTransport, high-speed fabric, NVLink, Advanced Microcontroller Bus Architecture (AMBA) -Verbindung, OpenCAPI, Gen-Z, Cache Coherent Interconnect for Accelerators (CCIX), 3GPP Long Term Evolution (LTE) (4G), 3GPP 5G, und Variationen derselben. Daten können unter Verwendung eines Protokolls wie beispielsweise NVMe over Fabrics (NVMe-oF) oder NVMe auf virtualisierte Speicherungsknoten kopiert oder gespeichert werden.
  • 2 stellt ein Blockdiagramm eines Systems dar. Gemäß verschiedenen Ausführungsbeispielen kann das CPLD 208 das Zurücksetzen der Leistung von lediglich dem Gerät 202 steuern, das einem nahtlosen Firmware-Update oder -Upgrade unterliegt, ohne eine Leistungsunterbrechung zu einem anderen Gerät zu veranlassen, das keinem Firmware-Update unterliegt, wenn lediglich das Gerät 202 ein Firmware-Update erhält. Wenn das Gerät 202 beispielsweise eine Netzwerkschnittstelle ist oder umfasst, wird während eines Firmware-Updates der Netzwerkschnittstelle möglicherweise keine Migration einer virtuellen Ausführungsumgebung, die die Netzwerkschnittstelle verwendet, ausgeführt. Beispielsweise kann ein Firmware-Speicher-Update einen Stopp-Mechanismus auslösen, der während der Live-Migration einer virtuellen Maschinen verwendet wird, um sicherzustellen, dass virtuelle Maschinen benachrichtigt werden, dass eine PF deaktiviert wird. Virtuelle Maschinen können zu übertragende Pakete fallenlassen oder können weiterhin Pakete bereitstellen, die in einer Warteschlange zur Übertragung angeordnet sind.
  • Das Update-Tool 252 des nichtflüchtigen Speichers (NVM; non-volatile memory) (NUT; non-volatile memory update tool) kann Inhalte des Firmware-Speichers 204 aktualisieren, indem es eine andere Firmware zu dem Firmware-Speicher 204 hinzufügt. Das NUT 252 kann bestimmen, ob das Firmware-Update (z. B. nahtloses Update oder ein nahtloses Upgrade) ein Aus- und Wiedereinschalten des Geräts oder ein Reboot für das Gerät 202 erfordert. Beispielsweise kann ein Aus- und Wiedereinschalten auf das Gerät 202 angewendet werden, wie beispielsweise in Fällen, in denen Änderungen intern zu der Funktionalität des Geräts 202 sind. Wenn ein Reboot angewendet werden soll, kann ein Administrator angewiesen werden, sowohl das Host-Gerät 250 als auch das Gerät 202 und potenziell andere Peripheriegeräte zu rebooten. Beispielsweise kann ein Reboot eines Geräts Änderungen der Portkonfiguration (z. B. 2x100Gbps, 4x50Gpbs oder 8x25Gbps) verwendet werden. Beispielsweise kann ein Reboot eines Geräts verwendet werden, um eine unterschiedliche Anzahl von physischen Funktionen (PFs) zu aktualisieren, und das OS kann das Gerät 202 neu starten, um dem neuen Satz von PFs Ressourcen ordnungsgemäß zuzuweisen. Zum Beispiel werden PFs in der Single-Root-I/O-Virtualisierung (SR-IOV) beschrieben und es kann ein Reboot ausgeführt werden, sodass das OS eine Anzahl von verfügbaren PFs erneut zuweisen kann. Bei einigen Beispielen könnte das OS eine Anzahl von verfügbaren PFs ohne einen Reboot erneut zuweisen.
  • SR-IOV ist eine Spezifikation, die die Verwendung eines einzelnen physischen PCIe-Geräts unter einem einzelnen Root-Port beschreibt, um einem Hypervisor oder Gastbetriebssystem als mehrere separate physische Geräte zu erscheinen. SR-IOV verwendet physische Funktionen (PFs; physical functions) und virtuelle Funktionen (VFs; virtual functions), um globale Funktionen für die SR-IOV-Geräte zu managen. PFs können PCIe-Funktionen sein, die in der Lage sind, die SR-IOV-Funktionalität zu konfigurieren und zu managen. Zum Beispiel kann eine PF ein PCIe-Gerät konfigurieren oder steuern, und die PF weist die Fähigkeit auf, Daten in und aus dem PCIe-Gerät zu bewegen. Bei einem Netzwerkadapter ist die PF zum Beispiel eine PCIe-Funktion des Netzwerkadapters, die SR-IOV unterstützt. Die PF umfasst die Fähigkeit, die SR-IOV-Funktionalität des Netzwerkadapters zu konfigurieren und zu managen, wie z. B. die Ermöglichung der Virtualisierung und das Managen von PCIe-VFs. Eine VF ist einer PCIe-PF auf dem Netzwerkadapter zugeordnet und die VF stellt eine virtualisierte Instanz des Netzwerkadapters dar. Eine VF kann ihren eigenen PCI-Konfigurationsraum aufweisen, kann aber eine oder mehrere physische Ressourcen auf dem Netzwerkadapter, wie beispielsweise einen externen Netzwerk-Port, mit der PF und anderen PFs oder anderen VFs gemeinschaftlich verwenden.
  • Während Beispiele für Netzwerkschnittstellen und das Aktualisieren von Firmware bereitgestellt werden, können verschiedene Ausführungsbeispiele auf irgendeine Hardware angewendet werden, die ein Aus- und Wiedereinschalten erfordert, oder könnten auch verwendet werden, um einem Benutzer ein intelligentes Aus-/Einschalten von Hardware zu ermöglichen, um Geräteleistung zu sparen.
  • Das Gerät 202 kann eine Ethernet-Steuerung, eine Netzwerkschnittstelle, eine Speicherungssteuerung, eine Speichersteuerung, eine Anzeige-Maschine, eine Grafikverarbeitungseinheit (GPU), ein Beschleunigergerät oder irgendein Peripheriegerät sein. Der Firmware-Speicher 204 kann eine oder mehrere Firmware-Versionen speichern, die durch das Gerät 202 ausgeführt werden können. Firmware kann Anweisungen (z. B. Binärcode) sein, die steuern, wie ein Gerät arbeitet. Firmware kann Anweisungen (z. B. Binärcode) sein, die steuern, wie ein Gerät arbeitet. Zum Beispiel kann Firmware für eine Netzwerkschnittstelle Protokollunterstützung hinzufügen oder aktualisieren, Physische-Funktion- (PF) Listen aktualisieren, Netzlisten aktualisieren, Ethernet-Nachrichtenübermittlung (EMP; Ethernet Message Passing) -Firmware aktualisieren (z. B. exponiert und Schnittstelle für Software zur Kommunikation mit einem Link-Management-Agenten), eine Link-Herstellungs-Zustandsmaschine (LESM; Link Establishment State Machine) aktualisieren, einen Link-Management-Agenten unterstützen, einen Link zu erhalten, Netzliste (z. B. Anpassen der Konfiguration der Netzwerkschnittstellen-Ports), die Admin-Warteschlange konfigurieren, Netzwerkschnittstellen-Standards konfigurieren, Entfernter-Direktspeicherzugriff- (RDMA; Remote Direct Memory Access) Firmware konfigurieren, eine Preboot-Binärdatei konfigurieren, kundenspezifische Analogeinstellungen konfigurieren, Physical-Layer (PHY) -Firmware konfigurieren usw. Bei einigen Ausführungsbeispielen kann Firmware eines oder mehrere umfassen von: Basic Input/Output System (BIOS), Universal Extensible Firmware Interface (UEFI), einen Bootloader, Converged Security and Management Engine (CSME)-Firmware, Plattform-Sicherheitsprozessor-Firmware und BMC-Firmware, unter anderem. Die BIOS-Firmware kann auf der Systemplatine eines Personalcomputers vorinstalliert oder durch eine SPI-Schnittstelle von einer Boot-Speicherung (z. B. Flash-Speicher) zugänglich sein. Bei einigen Beispielen kann ein BIOS auf einem Gerät gespeichert sein und von dem Gerät durch einen oder mehrere Kerne oder CPUs unter Verwendung einer Schnittstelle wie beispielsweise einer seriellen peripheren Schnittstelle (SPI; Serial Peripheral Interface) oder einer anderen Schnittstelle (z. B. PCIe) zugänglich sein. Das BIOS kann die System-Hardwarekomponenten initialisieren und testen und lädt einen Bootloader aus einem Speichergerät, der ein Betriebssystem initialisiert und ausführt. Verschiedene nicht einschränkende Beispiele von Firmware sind hierin bereitgestellt.
  • Bei einigen Beispielen kann anstelle oder zusätzlich zu einem BIOS eine Universal Extensible Firmware Interface (UEFI; universelle erweiterbare Firmware-Schnittstelle) zum Booten oder Neustarten von Kernen oder Prozessoren verwendet werden. UEFI ist eine Spezifikation, die eine Software-Schnittstelle zwischen einem Betriebssystem und Plattform-Firmware definiert. UEFI kann aus Einträgen von Plattenpartitionen lesen, indem sie nicht nur von einer Platte oder einer Speicherung bootet, sondern von einem bestimmten Bootloader an einem bestimmten Ort auf einer spezifischen Platte oder Speicherung bootet. UEFI kann die Ferndiagnose und -reparatur von Computern unterstützen, auch wenn kein Betriebssystem installiert ist. Ein Bootloader kann für UEFI geschrieben werden und kann Anweisungen sein, die eine Bootcode-Firmware ausführen kann, und der Bootloader ist ausgebildet, um das/die Betriebssystem(e) zu booten. Ein UEFI-Bootloader kann ein Bootloader sein, der in der Lage ist, von einer Firmware des UEFI-Typs zu lesen.
  • OS 254 kann bei einigen Beispielen Linux®, Windows®, FreeBSD®, Android®, MacOS®, iOS® oder irgendein anderes Betriebssystem sein. Das OS und der Treiber können auf einer CPU ausgeführt werden, die unter anderem von Intel®, ARM®, AMD®, Qualcomm®, IBM®, Texas Instruments® verkauft oder entwickelt wird.
  • Die Leistungsversorgung 206 kann Spannung und/oder Strom an das Gerät 202 bereitstellen. Die Leistungsversorgung 206 kann z. B. eine oder mehrere Leistungsversorgungsgeräte umfassen und eine Betriebsspannung als einen Chip-integrierten (on-chip) Linearregler oder als eine Chip-externe (off-chip) Quelle bereitstellen. Eine Topologie für die Leistungsversorgung 206 kann mit einer gedruckten Schaltungsplatine (PCB; printed circuit board), einer M.2-Platine, Feldprogrammierbares Gate-Array (FPGA) -basierten Platinen oder anderen Schaltungsplatinen konsistent sein.
  • Ein komplexes programmierbares Logikgerät (CPLD; Complex Programmable Logic Device) 208 kann ein Ausmaß steuern, zu dem die Leistungsversorgung 206 Leistung an das Gerät 202 bereitstellt. Gemäß verschiedenen Ausführungsbeispielen kann das CPLD 208 lediglich die Leistung zu dem Gerät 202 ein- oder ausschalten, um ein Laden eines Firmware-Updates für das Gerät 202 zu veranlassen, aber kein(e) Leistungsunterbrechung oder Zurücksetzen irgendeines anderen Geräts veranlassen, das kein(e) Firmware-Update oder Änderung erfährt. Das CPLD 208 kann ein programmierbares Pin-Array umfassen. Das CPLD 208 kann die Spannung, den Strom oder die Leistung, die an das Gerät 202 geliefert werden, überwachen, um zu bestimmen, ob ein Zurücksetzen der Leistung (z. B. Reduzierung der Leistung, der Spannung oder des Stroms unter eine oder mehrere Schwellen) für das Gerät 202 stattgefunden hat, oder um zu bestimmen, ob für das Gerät 202 ein Anstieg der Leistung, der Spannung oder des Stroms auf oder über eine oder mehrere Schwellen stattgefunden hat. Zum Beispiel kann das CPLD 208 einen Zeitgeber anwenden, um zu bestimmen, ob ausreichend Zeit abgelaufen ist, nachdem eine Leistung durch die Leistungsversorgung 206 gestoppt oder auf Null reduziert wurde, um ungefähr zu bestimmen, ob ein Aus- und Wiedereinschalten für das Gerät 202 stattgefunden hat.
  • Bei einigen Beispielen veranlasst das CPLD 208 ein Aus- und Wiedereinschalten für ein Gerät 202, um das Gerät 202 zu veranlassen, Firmware aus dem Firmware-Speicher 204 zu laden. Während eines Leistungsverlusts des Geräts 202 kann das Gerät 202 die Firmware-Konfiguration in einem flüchtigen Speicher verlieren und das Gerät 202 kann bestimmen, ob eine Firmware aus dem Firmware-Speicher 204 verfügbar ist. Firmware kann beispielsweise zum Laden verfügbar sein, wenn eine Lokalbereichsnetzwerk- (LAN; local area network) Leistung-Verfügbar-Indikator oder ein anderer Indikator anzeigt, Firmware aus dem Speicher 204 abzurufen. Bei einigen Ausführungsbeispielen zeigt das CPLD 208 dem Gerät 202 an, Firmware aus dem Firmware-Speicher 204 zu laden. Das CPLD 208 kann RESET CPLD (z.B. PERST CPLD) zu dem Gerät 202 aktivieren, um das Gerät 202 zu veranlassen, Firmware aus dem Firmware-Speicher 204 zu laden und um das Gerät 202 zu veranlassen, sich wieder mit dem Verbinder 210 zu verbinden. Bei einigen Beispielen kann das CPLD 208 als ein Feldeffekttransistor (FETs; Field-Effect Transistors) oder eine Spannungs-Überwachungsvorrichtung, verbunden mit der Leistungsversorgung 206, implementiert sein.
  • Bei einigen Beispielen kann das Gerät 202, das einem Firmware-Update unterliegt, entweder auf dem Verbinder 210 unter Verwendung von bestimmter Logik aktiv bleiben, die auf Nulloperations- (no-op) oder Leerlauf-Befehle reagiert, selbst wenn das Gerät für das Firmware-Update ausgeschaltet ist. Bei einigen Beispielen kann sich das Gerät 202 während des Ausschaltens für das Firmware-Update von dem Verbinder 210 trennen. Bei einigen Beispielen kann das Gerät 202, selbst wenn das Host-Gerät 250 kein Hotadd/Entfernen von Geräten unterstützt, die Verbindung mit dem Verbinder 210 wiederherstellen, sodass das Host-Gerät 250 oder sein OS nicht wüsste, dass das Firmware-Update stattgefunden hat.
  • Der Host-Verbinder 210 kann eine Schnittstelle für zumindest das Gerät 202 und das CPLD 208 zu dem Host-Gerät 250 sein. Zum Beispiel kann das Gerät 202 als PCIe-Gerät mit dem Host-Gerät 250 verbunden sein. Der Host-Verbinder 210 kann ein PCIe-kompatibler Verbinder, ein SMBus oder eine andere Schnittstelle sein.
  • Wenn ein Aus- und Wiedereinschalten des Geräts auf das Gerät 202 angewendet werden soll, um ein Firmware-Update zu veranlassen, können eine oder mehrere der folgenden Aktionen stattfinden. Bei (1) identifiziert das NUT 252 Parameter des Geräts 202 (z. B. Basisadressregister (BAR; base address register) und Konfigurationsraum 203 (z. B. PF-Konfigurationen)) des Geräts 202 und speichert sie in dem Speicher des Host-Geräts 250. Bei (2) benachrichtigt das NUT 252 das CPLD 208 über ein Seitenbandsignal (z. B. SMBUS) über eine Firmware-Update-Operation. Bei (3) aktiviert das CPLD 208 ein Reset-Signal (z. B. RESET CPLD) zu dem Gerät 202 und veranlasst dann die Leistungsversorgung 206, Null-Leistung an das Gerät 202 bereitzustellen. Bei (4), nach einem Detektieren, dass die Leistung Null erreicht hat, ermöglicht das CPLD 208 der Leistungsversorgung 206, Leistung an das Gerät 202 bereitzustellen. Bei (5) reagiert die Leistungsversorgung 206 auf die Freigabe und stellt dem Gerät 202 Leistung bereit. Bei (6), nach dem Detektieren, dass dem Gerät 202 nach dem Ausschalten ein Einschalten des Geräts 202 (z.B. Betriebspegelleistung) bereitgestellt wird, deaktiviert das CPLD 208 das Reset-Signal (z.B. RESET CPLD) zu dem Gerät 202 und zeigt dem NUT 252 an, dass das Gerät 202 zurückgesetzt wurde. Wenn jedoch irgendeines von (3)-(5) fehlschlägt, gibt das CPLD 208 einen Fehler an das NUT 252 zurück und ein Administrator kann informiert werden, um das System neu zu starten. Bei (7) stellt das NUT 252 die gespeicherte Konfiguration des Geräts 202 im Konfigurationsraum 203 wieder her. Danach kann das Gerät 202 die aktualisierte Firmware verwenden.
  • Bei einigen Beispielen kann das Gerät 202 Teil eines Lokalbereichsnetzwerk- (LAN) auf Hauptplatine- (LOM; local area network on motherboard) Entwurfs sein, bei dem Geräte als ein LAN unter Verwendung von Verbindungen, die in eine Hauptplatine eines Servers oder Rechners eingebettet sind, verbunden werden, anstatt eine separate Netzwerkschnittstellenkarte (z. B. Ethernet) zu verwenden. Das Gerät 202 kann leistungsgesteuert sein, wenn ein Firmware-Update für das Gerät 202 erfolgen soll. Bei einigen Beispielen kann das Gerät 202 Teil eines Systems-auf-einem-Chip (SoC; system on a chip) und leistungsgesteuert sein, wenn ein Firmware-Update erfolgen soll.
  • 3 stellt einen beispielhaften Prozess dar. Der Prozess kann verwendet werden, um ein Aus- und Wiedereinschalten oder Zurücksetzen lediglich eines Geräts, das einem Firmware-Update unterzogen werden soll, zu veranlassen. Bei 302 werden Flash-Speichergerät-Inhalte mit einem Firmware-Update aktualisiert. Zum Beispiel kann ein NVM-Update-Tool verwendet werden, um ein Firmware-Update unter Verwendung einer PCIe-Schnittstelle und/oder SMBus-Schnittstelle in dem Flash-Speicher zu speichern. Bei 304 wird angezeigt, dass Flash-Speichergerät-Inhalte mit einem Firmware-Update aktualisiert werden. Zum Beispiel kann ein NVM-Update-Tool anzeigen, dass der Flash-Speicher aktualisiert wird, indem es einen GPIO-Pin umschaltet (toggle) oder unter Verwendung des SMBusses kommuniziert, um einen Wert auf einem CPLD-Pin zu ändern. Bei 306 kann eine Leistungssteuerung veranlassen, dass ein Gerät in einen Reset-Zustand eintritt. Zum Beispiel kann ein CPLD ein Reset-Signal (z. B. RESET) durchsetzen, um zu veranlassen, dass das Gerät in den Reset-Zustand eintritt. Bei 308 kann die Leistung zu dem Gerät abgeschaltet werden. Zum Beispiel kann das CPLD den Leistungsversorgungs-Freigabe-Pin deaktivieren, um zu veranlassen, dass die Leistungsversorgung aufhört, das Gerät mit Leistung zu versorgen. Bei 310 kann eine Zeitspanne zum Erreichen von Leistungsableitung zu dem Gerät ablaufen. Beispielsweise kann das CPLD einen Zeitgeber beginnen und eine vorbestimmte Zeitspanne warten, bis die Leistung zu dem Gerät vollständig abgeleitet ist. Bei 312 kann die Betriebsleistung zu dem Gerät wiederhergestellt werden. Nachdem der Zeitgeber abläuft, kann das CPLD z. B. den Leistungsversorgungs-Freigabe-Pin umschalten, um die Leistungsversorgung zu dem Gerät einzuschalten. Bei 314 kann das Gerät den Reset-Zustand verlassen. Das CPLD kann z. B. eine vorbestimmte Zeitspanne warten und dann ein Reset-Signal (z. B. RESET) zu dem Gerät aktivieren, um das Gerät zu veranlassen, den Reset-Modus zu verlassen. Das Gerät kann die aktualisierte Firmware ausführen. Bei 316 kann die Konfiguration des Geräts wiederhergestellt werden. Zum Beispiel kann das NUT den Konfigurationsraum-Inhalt für das Gerät (z. B. PCIe-Konfigurationsraum-Inhalt) wiederherstellen.
  • 4 stellt einen beispielhaften Prozess dar. Der Prozess kann verwendet werden, um ein Aus- und Wiedereinschalten oder Zurücksetzen lediglich eines Geräts, das einem Firmware-Update unterzogen werden soll, zu veranlassen. Bei 402 kann die Gerätekonfiguration gespeichert werden. Ein NUT oder Firmware-Update-Tool kann zum Beispiel den PCIe-Konfigurationsraum des Geräts speichern. Bei 404 kann eine Gerätetreiber-Operation angehalten werden. Bei 406 kann ein Update des Firmware-Speichers für das Gerät erfolgen. Bei einigen Beispielen kann das Firmware-Update beispielsweise eine neuere Version oder eine ältere Version sein als die Firmware, die das Gerät aktuell ausführt. Die Update-Firmware kann in einer Speicherbank gespeichert sein, die sich von der Speicherbank unterscheidet, die aktuell ausgeführte Firmware speichert. Die Speicherbank 208 kann ein flüchtiger oder nicht-flüchtiger Speicher sein. Eine Speicherbank kann eine Region in einem Speicher darstellen. Eine PCIe-Schnittstelle, eine SPI-Schnittstelle, ein SMBus oder eine andere Schnittstelle kann verwendet werden, um das Firmware-Update von dem Host-System zu dem Firmware-Speicher zu transportieren.
  • Bei 408 wird eine Anzeige eines verfügbaren Firmware-Updates bereitgestellt. Die Anzeige des Updates kann z. B. durch ein Firmware-Update-Tool bereitgestellt werden, das auf einem Host-System ausgeführt wird und das in der Lage ist, das Gerät zu aktualisieren. Die Anzeige des Updates kann durch Umschalten eines Allzweck-Eingang/-Ausgang- (GPIO; General Purpose Input/Output) Pins oder über einen SMBus erfolgen. Bei 410 kann das Gerät in einen Reset-Zustand eintreten. Ein CPLD kann beispielsweise RESET CPLD (z. B. PERST CPLD) aktivieren, um eine Leistungssteuerschaltung zu veranlassen, ein Ausschalten des Geräts zu veranlassen. Bei 412 wird nach dem Ausschalten des Geräts die Leistung zu dem Gerät wiederhergestellt. Das CPLD kann z. B. eine bestimmte Zeitspanne auf eine Leistungsentladung warten oder die Spannung zu dem Gerät überwachen, um zu bestimmen, ob die Leistung zu dem Gerät Null erreicht. Um die Leistung zu dem Gerät wiederherzustellen, kann das CPLD die Leistungsversorgung zu dem Gerät einschalten.
  • Bei 414 verlässt das Gerät den Reset-Zustand. Das CPLD kann beispielsweise RESET-CPLD aktivieren. Nach dem Verlassen des Reset-Zustands führt das Gerät die neue Firmware aus. Bei 416 kann der Gerätetreiber neu gestartet werden. So kann z. B. ein Neustart des Gerätetreibers eine Software-Interaktion mit dem Gerät erlauben. Bei 418 setzt das Firmware-Update-Tool die Konfiguration des Geräts auf den Zustand vor dem Ausschalten zurück.
  • 5 stellt ein beispielhaftes System dar. Das System kann hierin beschriebene Ausführungsbeispiele verwenden, um ein softwaregesteuertes Zurücksetzen der Leistung oder Aus- und Wiedereinschalten für ein Gerät auszuführen, das aktualisierte Firmware anwenden soll. Ein System 500 umfasst einen Prozessor 510, der eine Verarbeitung, ein Operationsmanagement und eine Ausführung von Anweisungen für das System 500 bereitstellt. Der Prozessor 510 kann irgendeine Art von Mikroprozessor, zentraler Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU), Verarbeitungskern oder andere Verarbeitungshardware, um Verarbeitung für das System 500 bereitzustellen, oder eine Kombination von Prozessoren umfassen. Der Prozessor 510 steuert den Gesamtbetrieb des Systems 500 und kann ein oder mehrere programmierbare Allzweck- oder Spezialzweck-Mikroprozessoren, digitale Signalprozessoren (DSPs; digital signal processors), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs; application specific integrated circuits), programmierbare Logikbauelemente (PLDs; programmable logic devices) oder Ähnliches oder eine Kombination solcher Bauelemente sein oder umfassen.
  • Bei einem Beispiel umfasst das System 500 eine Schnittstelle 512, die mit dem Prozessor 510 gekoppelt ist, was eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten darstellen kann, die Verbindungen mit höherer Bandbreite verwendet, wie beispielsweise ein Speicherteilsystem 520 oder Grafikschnittstellen-Komponenten 540 oder Beschleuniger 542. Die Schnittstelle 512 stellt eine Schnittstellenschaltung dar, die eine eigenständige Komponente oder auf einem Prozessor-Die integriert sein kann. Falls vorhanden, bildet die Grafikschnittstelle 540 eine Schnittstelle mit Grafikkomponenten, um einem Benutzer des Systems 500 eine visuelle Anzeige bereitzustellen. Bei einem Beispiel kann die Grafikschnittstelle 540 eine hochauflösende (HD; high definition) Anzeige treiben, die einem Nutzer eine Ausgabe bereitstellt. Hochauflösend kann sich auf eine Anzeige beziehen, die eine Pixeldichte von ungefähr 100 PPI (pixels per inch; Pixel pro Zoll) oder größer aufweist, und kann Formate wie beispielsweise Full HD (z.B. 1080p), Retina-Displays, 4K (ultra high definition oder UHD; ultrahochauflösend) oder andere umfassen. Bei einem Beispiel kann die Anzeige eine Touchscreen-Anzeige umfassen. Bei einem Beispiel erzeugt die Grafikschnittstelle 540 eine Anzeige basierend auf Daten, die in dem Speicher 530 gespeichert sind, oder basierend auf Operationen, die durch den Prozessor 510 ausgeführt werden, oder beidem. Bei einem Beispiel erzeugt die Grafikschnittstelle 540 eine Anzeige basierend auf Daten, die in dem Speicher 530 gespeichert sind, oder basierend auf Operationen, die durch den Prozessor 510 ausgeführt werden, oder beidem.
  • Die Beschleuniger 542 können Feste-Funktion- und/oder Programmierbare-Offload-Maschinen sein, auf die ein Prozessor 510 zugreifen kann oder die von diesem verwendet werden können. Beispielsweise kann ein Beschleuniger unter den Beschleunigern 542 Kompressions (DC) -Fähigkeit, Kryptographiedienste wie beispielsweise Public-Key-Verschlüsselung (PKE; public key encryption), Chiffrieren, Hash-/Authentifizierung-Fähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. Bei einigen Ausführungsbeispielen stellt ein Beschleuniger unter den Beschleunigern 542 zusätzlich oder alternativ Feldauswahlsteuerungsfähigkeiten bereit, wie hierin beschrieben. In einigen Fällen können die Beschleuniger 542 in eine CPU-Buchse (z.B. ein Verbinder zu einer Hauptplatine oder Schaltungsplatine, die eine CPU umfasst und eine elektrische Schnittstelle mit der CPU bereitstellt) integriert sein. Beispielsweise können die Beschleuniger 542 einen Einzel- oder Multi-Kern-Prozessor, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit, Einzel- oder Multi-Ebenen-Cache, funktionale Einheiten verwendbar zur unabhängigen Ausführung von Programmen oder Threads, anwendungsspezifische integrierte Schaltungen (ASICs), Neuronales-Netz-Prozessoren (NNPs; neural network processors), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie beispielsweise feldprogrammierbare Gate-Arrays (FPGAs) umfassen. Die Beschleuniger 542 können mehrere neuronale Netze, CPUs, Prozessorkerne, Allzweck-Grafikverarbeitungseinheiten bereitstellen oder Grafikverarbeitungseinheiten können für eine Verwendung durch Künstliche-Intelligenz- (KI-) oder Maschinelles-Lernen- (ML-) Modelle zur Verfügung gestellt werden. Beispielsweise kann das KI-Modell irgendeines oder eine Kombination verwenden oder umfassen von: einem Bestärkendes-Lernen-Schema, einem Q-Lernen-Schema, einem Deep-Q-Lernen oder einem Asynchronous Advantage Actor-Critic (A3C), einem kombinatorischen neuronalen Netzwerk, einem rekurrenten neuronalen Netzwerk oder einem anderen KI- oder ML-Modell. Mehrere neuronale Netzwerke, Prozessorkerne oder Grafikverarbeitungseinheiten können für die Verwendung durch AI- oder ML-Modelle zur Verfügung gestellt werden.
  • Ein Speicherteilsystem 520 stellt den Hauptspeicher des Systems 500 dar und stellt Speicherung für einen Code, der durch den Prozessor 510 ausgeführt werden soll, oder für Datenwerte, die bei der Ausführung einer Routine verwendet werden sollen, bereit. Das Speicherteilsystem 520 kann eine oder mehrere Speichergeräte 530 umfassen, wie beispielsweise Nur-Lese-Speicher (ROM; read-only memory), Flash-Speicher, eine oder mehrere Varianten von Direktzugriffsspeicher (RAM; random access memory), wie beispielsweise DRAM, oder andere Speichergeräte, oder eine Kombination solcher Geräte. Ein Speicher 530 speichert und hostet unter anderem ein Betriebssystem (OS; operating system) 532, um eine Softwareplattform für eine Ausführung von Anweisungen in dem System 500 bereitzustellen. Zusätzlich können Anwendungen 534 auf der Software-Plattform des OS 532 von dem Speicher 530 ausgeführt werden. Die Anwendungen 534 stellen Programme dar, die ihre eigene operative Logik zur Ausführung einer oder mehrerer Funktionen aufweisen. Prozesse 536 stellen Mittel oder Routinen dar, die dem OS 532 oder einer oder mehreren Anwendungen 534 Hilfsfunktionen bereitstellen, oder eine Kombination. Das OS 532, die Anwendungen 534 und die Prozesse 536 stellen Software-Logik bereit, um Funktionen für das System 500 bereitzustellen. Bei einem Beispiel umfasst das Speicherteilsystem 520 eine Speichersteuerung 522, die eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an den Speicher 530 ist. Es versteht sich, dass die Speichersteuerung 522 ein physischer Teil des Prozessors 510 oder ein physischer Teil der Schnittstelle 512 sein könnte. Zum Beispiel kann die Speichersteuerung 522 eine integrierte Speichersteuerung sein, die auf eine Schaltung mit dem Prozessor 510 integriert ist.
  • Auch wenn nicht eigens dargestellt, versteht es sich, dass das System 500 einen oder mehrere Busse oder Bus-Systeme zwischen Geräten umfassen kann, wie beispielsweise einen Speicher-Bus, einen Grafik-Bus, Schnittstellen-Busse oder andere. Busse oder andere Signalleitungen können Komponenten kommunikativ oder elektrisch miteinander koppeln, oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse können physikalische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuerungen oder eine andere Schaltungsanordnung oder eine Kombination umfassen. Busse können zum Beispiel einen oder mehrere von einem Systembus, einem Peripheral Component Interconnect (PCI) -Bus, einem Hyper Transport- oder Industry Standard Architecture (ISA) -Bus, einem Small Computer System Interface (SCSI) -Bus, einem universellen seriellen Bus (USB; universal serial bus) oder einem Institute of Electrical and Electronics Engineers (IEEE) -Standard 1394-Bus (Firewire) umfassen.
  • Bei einem Beispiel umfasst das System 500 eine Schnittstelle 514, die mit der Schnittstelle 512 gekoppelt sein kann. Bei einem Beispiel stellt die Schnittstelle 514 eine Schnittstellenschaltung dar, die eigenständige Komponenten und eine integrierte Schaltungsanordnung umfassen kann. Bei einem Beispiel koppeln mehrere Nutzerschnittstellenkomponenten oder Peripheriekomponenten oder beide mit der Schnittstelle 514. Eine Netzwerkschnittstelle 550 stellt dem System 500 die Fähigkeit bereit, über ein oder mehrere Netzwerke mit entfernten Geräten (z. B. Servern oder anderen Rechengeräten) zu kommunizieren. Die Netzwerkschnittstelle 550 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, zelluläre Netzwerk-Verbindungskomponenten, USB (Universal Serial Bus) oder andere drahtgebundene oder drahtlos-standard-basierte oder proprietäre Schnittstellen umfassen. Die Netzwerkschnittstelle 550 kann Daten an ein Gerät senden, das in dem gleichen Rechenzentrum oder Rack ist, oder an ein entferntes Gerät, was ein Senden von in einem Speicher gespeicherten Daten umfassen kann. Die Netzwerkschnittstelle 550 kann Daten von einem entfernten Gerät empfangen, was eine Speicherung von empfangenen Daten in Speicher umfassen kann. Verschiedene Ausführungsbeispiele können in Verbindung mit der Netzwerkschnittstelle 550, dem Prozessor 510 und dem Speicherteilsystem 520 verwendet werden.
  • Bei einem Beispiel umfasst das System 500 eine oder mehrere Eingangs-/Ausgangs- (I/O) Schnittstellen 560. Eine I/O-Schnittstelle 560 kann eine oder mehrere Schnittstellenkomponenten umfassen, durch die ein Nutzer mit dem System 500 interagiert (z. B. Audio-, alphanumerische, tastbare/berührbare oder andere Schnittstellenbildung). Eine Peripherieschnittstelle 570 kann irgendeine Hardwareschnittstelle umfassen, die oben nicht ausdrücklich erwähnt wurde. Peripherievorrichtungen beziehen sich im Allgemeinen auf Geräte, die sich abhängig mit dem System 500 verbinden. Eine abhängige Verbindung ist eine, bei der das System 500 die Software-Plattform oder Hardware-Plattform oder beide bereitstellt, auf der die Operation ausgeführt wird und mit der ein Nutzer interagiert.
  • Bei einem Beispiel umfasst das System 500 ein Speicherungsteilsystem 580, um Daten auf eine nichtflüchtige Weise zu speichern. Bei einem Beispiel können in bestimmten Systemimplementierungen zumindest bestimmte Komponenten einer Speicherung 580 mit Komponenten des Speicherteilsystems 520 überlappen. Das Speicherungsteilsystem 580 umfasst eine oder mehrere Speicherungsgeräte 584, die irgendein herkömmliches Medium zum Speichern großer Datenmengen auf nichtflüchtige Weise sein oder umfassen können, wie beispielsweise eine oder mehrere magnetische, Festkörper- (solid state) oder optisch-basierte Platten oder eine Kombination. Eine Speicherung 584 umfasst einen Code oder Anweisungen und Daten 586 in einem dauerhaften Zustand (z. B. der Wert bleibt trotz Unterbrechung der Leistung zu dem System 500 erhalten). Die Speicherung 584 kann allgemein als ein „Speicher“ betrachtet werden, obwohl der Speicher 530 üblicherweise der Ausführungs- oder Betriebsspeicher ist, um dem Prozessor 510 Anweisungen bereitzustellen. Während die Speicherung 584 nichtflüchtig ist, kann der Speicher 530 einen flüchtigen Speicher umfassen (z. B. der Wert oder Zustand der Daten ist unbestimmt, wenn die Leistung zu dem System 500 unterbrochen ist). Bei einem Beispiel umfasst das Speicherungsteilsystem 580 eine Steuerung 582, um eine Schnittstelle mit der Speicherung 584 zu bilden. Bei einem Beispiel ist die Steuerung 582 ein physischer Teil der Schnittstelle 514 oder des Prozessors 510 oder kann Schaltungen oder Logik sowohl in dem Prozessor 510 als auch in der Schnittstelle 514 umfassen.
  • Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und damit die darin gespeicherten Daten) unbestimmt ist, falls Leistung zu dem Gerät unterbrochen wird. Ein dynamischer flüchtiger Speicher erfordert ein Aktualisieren der Daten, die in dem Gerät gespeichert sind, um den Zustand aufrechtzuerhalten. Ein Beispiel eines dynamischen flüchtigen Speichers umfasst DRAM (Dynamic Random Access Memory; dynamischen Direktzugriffsspeicher) oder eine Variante wie beispielsweise synchronen DRAM (SDRAM; Synchronous DRAM). Ein weiteres Beispiel für einen flüchtigen Speicher umfasst einen Cache oder einen statischen Direktzugriffsspeicher (SRAM; static random access memory). Ein Speicherteilsystem, wie es hierin beschrieben ist, kann mit einer Reihe von Speichertechnologien kompatibel sein, wie beispielsweise DDR3 (Double Data Rate Version 3, ursprüngliche Herausgabe durch JEDEC (Joint Electronic Device Engineering Council) am 27. Juni 2007). DDR4 (DDR-Version 4, erste Spezifikation veröffentlicht im September 2012 durch JEDEC), DDR4E (DDR-Version 4), LPDDR3 (Low Power DDR-Version3 (Niedrig-Leistungs-DDR-Version3), JESD209-3B, August 2013 durch JEDEC), LPDDR4) LPDDR-Version 4, JESD209-4, ursprünglich veröffentlicht durch JEDEC im August 2014), WIO2 (Wide Input/Output Version 2 (breiter Eingang/Ausgang Version 2), JESD229-2, ursprünglich veröffentlicht durch JEDEC im August 2014, HBM (High Bandwidth Memory (Hohe-Bandbreite-Speicher), JESD325, ursprünglich veröffentlicht durch JEDEC im Oktober 2013, LPDDR5 (derzeit in Diskussion durch JEDEC), HBM2 (HBM-Version 2), derzeit in Diskussion durch JEDEC, oder anderen oder Kombinationen von Speichertechnologien, und Technologien, die auf Herleitungen oder Erweiterungen solcher Spezifikationen basieren.
  • Ein nichtflüchtiges Speicher- (NVM; non-volatile memory) Gerät ist ein Speicher, dessen Zustand bestimmt wird, auch falls Leistung zu dem Gerät unterbrochen wird. Bei einem Ausführungsbeispiel kann das NVM-Gerät ein blockadressierbares Speichergerät, wie beispielsweise NAND-Technologien, oder genauer, einen Multi-Schwellenpegel-NAND-Flash-Speicher (zum Beispiel Single-Level Cell („SLC“), Multi-Level Cell („MLC“), Quad-Level Cell („QLC“), Tri-Level Cell („TLC“) oder ein anderes NAND) umfassen. Ein NVM-Gerät kann auch ein byteadressierbares dreidimensionales Write-in-Place Cross Point (Vor-Ort-Schreiben-Kreuzpunkt-) Speichergerät oder ein anderes byteadressierbares Write-in-Place-NVM-Gerät (auch als dauerhafter Speicher bezeichnet) umfassen, wie beispielsweise einen ein- oder mehrstufigen Phasenwechselspeicher (PCM; Phase Change Memory) oder Phasenwechselspeicher mit einem Schalter (PCMS; phase change memory with a switch), NVM-Geräte, die Chalkogenidphasenwechselmaterial (zum Beispiel Chalkogenidglas) verwenden, einen resistiven Speicher umfassend Metalloxid-Basis, Sauerstoff-Leerstellenbasis und Conductive Bridge Random Access Memory (CB-RAM), Nanodrahtspeicher, ferroelektrischer Direktzugriffsspeicher (FeRAM, FRAM; ferroelectric random access memory), magnetoresistiver Direktzugriffsspeicher (MRAM; magneto resistive random access memory) mit Memristor-Technologie, Spin Transfer Torque (STT)-MRAM, ein auf Spintronik-Magnet-Übergang-Speicher basierendes Gerät, ein auf magnetischem Tunnelübergang (MTJ; magnetic tunneling junction) basiertes Gerät, ein DW (Domain Wall; Domänenwand) und SOT (Spin Orbit Transfer) -basiertes Gerät, ein thyristorbasiertes Speichergerät oder eine Kombination aus irgendeinem der obigen oder einen anderen Speicher.
  • Eine Leistungsquelle (nicht dargestellt) stellt den Komponenten des Systems 500 Leistung bereit. Genauer gesagt bildet eine Leistungsquelle üblicherweise eine Schnittstelle mit einer oder mehreren Leistungsversorgungen in dem System 500, um den Komponenten des Systems 500 Leistung bereitzustellen. Bei einem Beispiel umfasst die Leistungsversorgung einen AC-zu-DC- (Wechselstrom-zu-Gleichstrom; alternating current to direct current) Adapter zum Einstecken in eine Steckdose. Eine solche Wechselstrom- (AC-) Leistung kann eine Erneuerbare-Energien (z. B. Solarleistung) -Leistungsquelle sein. Bei einem Beispiel umfasst eine Leistungsquelle eine Gleichstrom-(DC-) Leistungsquelle, wie beispielsweise einen externen Wechselstrom-zu-Gleichstrom- (AC-zu-DC-) Wandler. Bei einem Beispiel umfasst eine Leistungsquelle oder Leistungsversorgung drahtlose Ladehardware zum Aufladen über die Nähe zu einem Ladefeld. Bei einem Beispiel kann eine Leistungsquelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Leistungsversorgung, eine Solarleistungsversorgung oder eine Brennstoffzellenquelle umfassen.
  • Bei einem Beispiel kann das System 500 unter Verwendung von miteinander verbundenen Rechenschlitten aus Prozessoren, Speichern, Speicherungen, Netzwerkschnittstellen und anderen Komponenten implementiert sein. Hochgeschwindigkeitsverbindungen können verwendet werden, wie beispielsweise: Ethernet (IEEE 802.3), remote direct memory access (RDMA), InfiniBand, Internet Wide Area RDMA Protocol (iWARP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), quick UDP Internet Connections (QUIC), RDMA over Converged Ethernet (RoCE), Peripheral Component Interconnect express (PCIe), Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On-Chip System Fabric (IOSF), Omnipath, Compute Express Link (CXL), HyperTransport, high-speed fabric, NVLink, Advanced Microcontroller Bus Architecture (AMBA) interconnect, OpenCAPI, Gen-Z, Cache Coherent Interconnect for Accelerators (CCIX), 3GPP Long Term Evolution (LTE) (4G), 3GPP 5G, und Variationen derselben. Daten können unter Verwendung eines Protokolls wie beispielsweise NVMe over Fabrics (NVMe-oF) oder NVMe auf virtualisierte Speicherungsknoten kopiert oder gespeichert werden.
  • Ausführungsbeispiele hierin können in verschiedenen Typen von Rechen- und Netzwerk-Ausrüstung, wie beispielsweise Schaltern, Routern, Racks und Blade-Servern, wie beispielsweise diejenigen, die in einem Rechenzentrum und/oder einer Serverfarmumgebung verwendet werden, implementiert sein. Die Server, die in Rechenzentren und Serverfarmen verwendet werden, umfassen angeordnete Server-Konfigurationen wie beispielsweise Rack-basierte Server oder Blade-Server. Diese Server sind in Kommunikation über verschiedene Netzzugänge miteinander verbunden, wie beispielsweise ein Partitionieren von Serversätzen in lokale Netze (LANs; Local Area Networks) mit geeigneten Schalt- und Routing-Einrichtungen zwischen den LANs, um ein privates Intranet zu bilden. Zum Beispiel können Cloud-Hosting-Einrichtungen üblicherweise große Datenzentren mit einer Vielzahl von Servern nutzen. Ein Blade umfasst eine separate Rechenplattform, die ausgebildet ist, um serverartige Funktionen auszuführen, das heißt, einen „Server auf einer Karte“. Dementsprechend umfasst jedes Blade Komponenten, die herkömmlichen Servern gemeinsam sind, umfassend eine gedruckte Hauptschaltungsplatine (Hauptplatine; main board), die eine interne Verkabelung (d. h. Busse) zum Koppeln geeigneter integrierter Schaltungen (ICs; integrated circuits) und anderer Komponenten, die auf der Platine befestigt sind, bereitstellt.
  • 6 stellt eine Netzwerkschnittstelle dar. Hierin beschriebene Ausführungsbeispiele können verwendet werden, um ein softwaregesteuertes Aus- und Wiedereinschalten zur Aktualisierung von Firmware der Netzwerkschnittstelle bereitzustellen. Der Sendeempfänger 602 kann fähig sein, Pakete in Übereinstimmung mit den anwendbaren Protokollen wie beispielsweise Ethernet, wie in IEEE 802.3 beschrieben, zu empfangen und zu senden, obwohl andere Protokolle verwendet werden können. Der Sendeempfänger 602 kann Pakete von und zu einem Netzwerk über ein Netzwerkmedium (nicht dargestellt) empfangen und senden. Der Sendeempfänger 602 kann eine PHY-Schaltungsanordnung 614 und eine Media Access Control (MAC) -Schaltungsanordnung 616 umfassen. Eine PHY-Schaltungsanordnung 614 kann Codier- und Decodier-Schaltungsanordnungen (nicht gezeigt) zum Codieren und Decodieren von Datenpaketen gemäß anwendbaren Physical-Layer-Spezifikationen oder -Standards umfassen. Die MAC-Schaltungsanordnung 616 kann konfiguriert sein, um die zu übertragenden Daten zu Paketen anzuordnen, die Ziel- und Quelladressen zusammen mit Netzwerksteuerungsinformationen und Fehlerdetektions-Hash-Werten umfassen.
  • Gemäß einigen Ausführungsbeispielen steuert die Link-Steuerung 650 Autonegotiation und Link-Herstellung mit einem oder mehreren Link-Partnern, um Linkgeschwindigkeit, FEC-Modi und Pausenfähigkeiten zu bestimmen. Link-Partner können Host-Geräte, Module (z. B. optische Kommunikationsmodule) oder andere Kommunikationschips sein. Bei einigen Beispielen kann die Link-Steuerung 650 Firmware sein, die in eine MAC-Schaltungsanordnung 616 implementiert ist oder für eine Verwendung durch eine MAC-Schaltungsanordnung 616 verfügbar ist.
  • Prozessoren 604 können irgendeine Kombination sein aus: Prozessor, Kern, Grafikverarbeitungseinheit (GPU; graphics processing unit), feld-programmierbarem Gate-Array (FPGA; field programmable gate array), anwendungsspezifischer integrierter Schaltung (ASIC; application specific integrated circuit ) oder einem anderen programmierbaren Hardware-Gerät, die ein Programmieren der Netzwerkschnittstelle 600 erlauben. Beispielsweise können die Prozessoren 604 für eine Identifizierung einer Ressource sorgen, die für ein Ausführen einer Arbeitslast zu verwenden ist, sowie für eine Erzeugung eines Bitstroms zur Ausführung auf der ausgewählten Ressource. Beispielsweise kann eine „Smarte Netzwerkschnittstelle“ unter Verwendung der Prozessoren 604 Paketverarbeitungsfähigkeiten in der Netzwerkschnittstelle bereitstellen.
  • Ein Paketzuweiser 624 kann eine Verteilung empfangener Pakete für eine Verarbeitung durch mehrere CPUs oder Kerne unter Verwendung einer hierin beschriebenen Zeitschlitz-Zuweisung oder RSS bereitstellen. Wenn der Paketzuweiser 624 RSS verwendet, kann der Paketzuweiser 624 basierend auf den Inhalten eines empfangenen Pakets einen Hash berechnen oder eine andere Bestimmung vornehmen, um zu bestimmen, welche CPU oder welcher Kern ein Paket verarbeiten soll.
  • Eine Interrupt-Zusammenführung 622 kann eine Interrupt-Moderation ausführen, wobei eine Netzwerkschnittstellen-Interrupt-Zusammenführung 622 auf das Eintreffen mehrerer Pakete oder den Ablauf eines Time-Outs wartet, bevor sie einen Interrupt an das Host-System zur Verarbeitung (eines) empfangener(n) Pakete(s) erzeugt. Empfangssegment-Zusammenführung (RSC; Receive Segment Coalescing) kann durch eine Netzwerkschnittstelle 600 ausgeführt werden, wobei Abschnitte eingehender Pakete zu Segmenten eines Pakets kombiniert werden. Die Netzwerkschnittstelle 600 stellt dieses zusammengeführte Paket an eine Anwendung bereit.
  • Die Direktspeicherzugriffs (DMA; direct memory access) -Maschine 652 kann einen Paketanfangsblock, eine Paketnutzlast und/oder einen Deskriptor direkt vom Host-Speicher an die Netzwerkschnittstelle oder umgekehrt kopieren, anstatt das Paket an einen Zwischenpuffer bei dem Host zu kopieren und dann eine weitere Kopieroperation von dem Zwischenpuffer an den Zielpuffer zu verwenden.
  • Der Speicher 610 kann irgendeine Art von flüchtigem oder nichtflüchtigem Speichergerät sein und kann irgendeine Warteschlange oder Anweisungen speichern, die zum Programmieren der Netzwerkschnittstelle 600 verwendet werden. Die Sendewarteschlange 606 kann Daten oder Referenzen auf Daten zur Übertragung durch die Netzwerkschnittstelle umfassen. Die Empfangswarteschlange 608 kann Daten oder Referenzen auf Daten umfassen, die durch eine Netzwerkschnittstelle von einem Netzwerk empfangen wurden. Deskriptor-Warteschlangen 620 können Deskriptoren umfassen, die auf Daten oder Pakete in der Sendewarteschlange 606 oder Empfangswarteschlange 608 Bezug nehmen. Die Busschnittstelle 612 kann eine Schnittstelle mit dem Host-Gerät (nicht dargestellt) bereitstellen. Zum Beispiel kann die Bus-Schnittstelle 612 mit einer PCI-, PCI-Express-, PCI-x-, Serial ATA- und/oder USB-kompatiblen Schnittstelle kompatibel sein (obwohl andere Verbindungsstandards verwendet werden können).
  • 7 stellt einen Schalter dar. Hierin beschriebene Ausführungsbeispiele können verwendet werden, um ein softwaregesteuertes Aus- und Wiedereinschalten zur Aktualisierung von Firmware des Schalters bereitzustellen. Ein Schalter 704 kann Pakete oder Rahmen in irgendeinem Format oder gemäß irgendeiner Spezifikation von irgendeinem Port 702-0 bis 702-X bis zu irgendeinem der Ports 706-0 bis 706-Y (oder umgekehrt) routen. Irgendeiner der Ports 702-0 bis 702-X kann mit einem Netzwerk eines oder mehrerer verbundener Geräte verbunden sein. Ähnlich kann irgendeiner der Ports 706-0 bis 706-X mit einem Netzwerk eines oder mehrerer verbundener Geräte verbunden sein. Der Schalter 704 kann unter Verwendung von Abgleichaktions-Einheiten oder einer Tabelle, die Paket-Charakteristika mit einem zugeordneten Ausgangs-Port abbildet, entscheiden, an welchen Port Pakete oder Rahmen übertragen werden sollen. Zusätzlich kann der Schalter 704 eine Paket-Replikation zum Weiterleiten eines Pakets oder Rahmens an mehrere Ports und das Einreihen von Paketen oder Rahmen in eine Warteschlange vor der Übertragung an einen Ausgangs-Port ausführen.
  • 8 stellt eine Umgebung 800 dar, umfassend mehrere Rechen-Racks 802, von denen jedes einen Top of Rack- (ToR) Schalter 804, einen Pod-Manager 806 und eine Mehrzahl von gepoolten Systemschubladen umfasst. Verschiedene Ausführungsbeispiele können verwendet werden, um zu steuern, welches Gerät in Verbindung mit einem Firmware-Update einem Aus- und Wiedereinschalten unterliegt. Im Allgemeinen können die gepoolten Systemschubladen gepoolte Rechenschubladen und gepoolte Speicherungsschubladen umfassen. Optional können die gepoolten Systemschubladen auch gepoolte Speicherschubladen und gepoolte Eingangs-/Ausgangs- (I/O)-Schubladen umfassen. Bei dem dargestellten Ausführungsbeispiel umfassen die gepoolten Systemschubladen eine Intel® XEON® gepoolte Computerschublade 808 und eine Intel® ATOM™ gepoolte Rechenschublade 810, eine gepoolte Speicherungsschublade 812, eine gepoolte Speicherungsschublade 814 und eine gepoolte I/O-Schublade 816. Jede der gepoolten Systemschubladen ist über einen Hochgeschwindigkeits-Link 818 mit dem ToR-Schalter 804 verbunden, wie beispielsweise einen 40-Gigabit/Sekunde (Gb/s)- oder 100Gb/s-Ethernet-Link oder einen 100+ Gb/s Silizium-Photonik- (SiPh-) optischen Link. Bei einem Ausführungsbeispiel umfasst ein Hochgeschwindigkeits-Link 818 einen 800 Gb/s SiPh optischen Link.
  • Mehrere der Rechen-Racks 802 können über ihre ToR-Schalter 804 miteinander verbunden sein (z. B. mit einem Pod-Ebene-Schalter oder einem Datenzentrum-Schalter), wie durch die Verbindungen zu einem Netzwerk 820 dargestellt. Bei einigen Ausführungsbeispielen werden Gruppen von Rechen-Racks 802 als separate Pods über (einen) Pod-Manger 806 gemanagt. Bei einem Ausführungsbeispiel wird ein einzelner Pod-Manager verwendet, um alle der Racks in dem Pod zu managen. Alternativ können verteilte Pod-Manager für Pod-Management-Operationen verwendet werden.
  • Eine Umgebung 800 umfasst ferner eine Management-Schnittstelle 822, die verwendet wird, um verschiedene Aspekte der Umgebung zu managen. Dies umfasst ein Managen einer Rack-Konfiguration, mit entsprechenden Parametern, die als Rack-Konfigurationsdaten 824 gespeichert sind.
  • Bei einigen Beispielen können die Netzwerkschnittstelle und andere hierin beschriebene Ausführungsbeispiele in Verbindung mit einer Basisstation (z. B. 3G, 4G, 5G usw.), Makro-Basisstation (z. B. 5G-Netzwerke), Picostation (z. B. ein IEEE 802.11-kompatibler Zugangspunkt), Nanostation (z. B. für Point-to-MultiPoint- (PtMP-) Anwendungen), lokalen Rechenzentren, externen Rechenzentren, Edge-Netzwerkelementen, Nebelnetzwerkelementen und/oder hybriden Rechenzentren (z. B. Rechenzentren, die Virtualisierung, Cloud und softwaredefinierte Netzwerke verwenden, um Anwendungs-Workloads über physische Rechenzentren und verteilte Multi-Cloud-Umgebungen hinweg bereitzustellen) verwendet werden.
  • Beispielsweise können verschiedene Ausführungsbeispiele verwendet werden für verdrahtete oder drahtlose Protokolle (z. B. 3GPP Long Term Evolution (LTE) (4G) oder 3GPP 5G), lokale Rechenzentren, externe Rechenzentren, Basisstationsgeräte, Sensordatensender- oder -empfängergeräte (z. B. für autonome Fahrzeuge oder Erweiterte-Realität (augmented reality) -Anwendungen), Endpunktgeräte, Server, Router, Edge-Netzwerk-Elemente (Rechenelemente, die physisch näher an einer Basisstation oder einem Netzwerkzugriffspunkt bereitgestellt sind als ein Rechenzentrum), Fog-Netzwerkelemente (Rechenelemente, die physisch näher an einer Basisstation oder einem Netzwerkzugriffspunkt als ein Rechenzentrum aber weiter von einem Edge-Netzwerk bereitgestellt sind), und/oder Hybrid-Rechenzentren (z. B. ein Rechenzentrum, das Virtualisierung, Cloud- und softwaredefiniertes Netzwerken nutzt, um Anwendungsnutzlasten über physische Rechenzentren und verteilte Multi-Cloud-Umgebungen zu liefern). Netzwerk- oder Rechenelemente können in einem lokalen Netz (LAN; local area network), einem Großstadtnetz (MAN; metropolitan area network), einem Netz mit Geräten, die unter Verwendung von Optische-Faser-Links verbunden sind, einem Campusnetz (CAN; campus area network) oder einem weiten Netz (WAN; wide area network) verwendet werden.
  • Verschiedene Beispiele können unter Verwendung von Hardware-Elementen, Software-Elementen oder einer Kombination aus beiden implementiert sein. Bei einigen Beispielen können Hardware-Elemente Geräte, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten und so weiter), integrierte Schaltungen, ASICs, PLDs, DSPs, FPGAs, Speichereinheiten, Logik-Gates, Register, ein Halbleiterbauelement, Chips, Mikrochips, Chipsätze und so weiter umfassen. Bei einigen Beispielen können Software-Elemente Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, APIs, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination derselben umfassen. Die Bestimmung, ob ein Beispiel unter Verwendung von Hardware-Elementen und/oder Software-Elementen implementiert wird, kann gemäß irgendeiner Anzahl von Faktoren, wie beispielsweise der gewünschten Rechenrate, den Leistungspegeln, den Wärmetoleranzen, dem Budget des Verarbeitungszyklus, den Eingangsdatenraten, den Ausgangsdatenraten, den Speicherressourcen, den Datenbusgeschwindigkeiten und anderen Entwurf- oder Performanceeinschränkungen, wie für eine gegebene Implementierung gewünscht, variieren. Ein Prozessor kann eines oder mehrere sein aus einer Kombination aus einer Hardware-Zustandsmaschine, digitalen Steuerlogik, zentralen Verarbeitungseinheit oder irgendwelchen Hardware-, Firmware- und/oder S oftware-Elementen.
  • Einige Beispiele können unter Verwendung von oder als ein Herstellungsartikel oder zumindest als ein computerlesbares Medium implementiert sein. Ein computerlesbares Medium kann ein nichtflüchtiges Speicherungsmedium zur Speicherung von Logik umfassen. Bei einigen Beispielen kann das nichtflüchtige Speicherungsmedium eine oder mehrere Arten von computerlesbaren Speicherungsmedien umfassen, die fähig sind, elektronische Daten zu speichern, umfassend flüchtigen oder nichtflüchtigen Speicher, entfernbaren oder nicht entfernbaren Speicher, löschbaren oder nicht löschbaren Speicher, beschreibbaren oder wiederbeschreibbaren Speicher und so weiter. Bei einigen Beispielen kann die Logik verschiedene Software-Elemente, wie beispielsweise Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Teilroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, API, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination davon umfassen.
  • Gemäß einigen Beispielen kann ein computerlesbares Medium ein nichtflüchtiges Speicherungsmedium zum Speichern oder Aufrechterhalten von Anweisungen umfassen, die, wenn sie von einer Maschine, einem Rechengerät oder einem System ausgeführt werden, die Maschine, das Rechengerät oder das System veranlassen, Verfahren und/oder Operationen gemäß den beschriebenen Beispielen auszuführen. Die Anweisungen können irgendeine geeignete Art von Code umfassen, wie beispielsweise einen Quellcode, einen kompilierten Code, einen interpretierten Code, einen ausführbaren Code, einen statischen Code, einen dynamischen Code und Ähnliches. Die Anweisungen können gemäß einer vordefinierten Computersprache, Weise oder Syntax implementiert sein, um eine Maschine, ein Rechengerät oder ein System anzuweisen, eine bestimmte Funktion auszuführen. Die Anweisungen können unter Verwendung irgendeiner geeigneten Hochsprachen-, Niedersprachen-, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert sein.
  • Ein oder mehrere Aspekte von zumindest einem Beispiel können durch repräsentative Anweisungen implementiert sein, die auf zumindest einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken innerhalb des Prozessors darstellt, die, wenn sie durch eine Maschine, ein Rechengerät oder ein System gelesen werden, die Maschine, das Rechengerät oder das System veranlassen, Logik zur Ausführung der hierin beschriebenen Techniken herzustellen. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Das Auftreten der Phrase „ein einzelnes Beispiel“ oder „ein Beispiel“ bezieht sich nicht notwendigerweise auf dasselbe Beispiel oder Ausführungsbeispiel. Irgendein hierin beschriebener Aspekt kann mit irgendeinem anderen Aspekt oder ähnlichen hierin beschriebenen Aspekt kombiniert werden, unabhängig davon, ob die Aspekte im Hinblick auf dieselbe Figur oder dasselbe Element beschrieben sind. Ein Teilen, Auslassen oder Umfassen von Blockfunktionen, die in den beiliegenden Figuren dargestellt sind, lässt nicht herleiten, dass die Hardwarekomponenten, Schaltungen, Software und/oder Elemente zum Implementieren dieser Funktionen notwendigerweise unterteilt, weggelassen oder in Ausführungsbeispielen umfasst sein müssten.
  • Einige Beispiele können unter Verwendung der Ausdrücke „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen beschrieben sein. Diese Begriffe sind nicht notwendigerweise als Synonyme füreinander vorgesehen. Beispielsweise können Beschreibungen, die die Begriffe „verbunden“ und/oder „gekoppelt“ verwenden, möglicherweise anzeigen, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander stehen. Der Begriff „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, jedoch weiter miteinander zusammenarbeiten oder interagieren.
  • Die Begriffe „erste,r,s“, „zweite,r,s“ und Ähnliches bezeichnen hierin nicht irgendeine Reihenfolge, Menge oder Bedeutung, sondern werden vielmehr dazu verwendet, ein Element von einem anderen zu unterscheiden. Die Begriffe „ein,e,s“ (a, an) bezeichnen hierin nicht eine Mengenbeschränkung, sondern bezeichnen vielmehr das Vorhandensein von zumindest einem von den Gegenständen, auf die Bezug genommen wird. Der Begriff „aktiviert“ (asserted), der hierin Bezug nehmend auf ein Signal verwendet wird, bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der durch Anwenden irgendeines Logikpegels auf das Signal, entweder Logik 0 oder Logik 1, erreicht werden kann. Die Begriffe „folgen“ oder „nach“ können sich auf unmittelbar folgend oder nach einem anderen Ereignis oder Ereignissen folgend beziehen. Andere Abfolgen von Schritten können auch gemäß alternativen Ausführungsbeispielen ausgeführt werden. Ferner können zusätzliche Schritte, je nach bestimmten Anwendungen, hinzugefügt oder entfernt werden.
  • Es kann irgendeine Kombination von Änderungen verwendet werden und ein Durchschnittsfachmann auf dem Gebiet, der den Nutzen dieser Offenbarung hat, würde die vielen Variationen, Modifikationen und alternativen Ausführungsbeispiele davon verstehen.
  • Eine disjunktive Sprache, wie beispielsweise die Phrase „zumindest eines von X, Y oder Z“, sofern nicht anderweitig spezifisch angegeben, wird ansonsten innerhalb des Kontexts verstanden, wie er im Allgemeinen verwendet wird, um darzustellen, dass ein Gegenstand, ein Begriff etc. entweder X, Y oder Z oder eine Kombination davon (z. B. X, Y und/oder Z) sein kann. Somit ist solch disjunktive Sprache nicht im Allgemeinen dafür vorgesehen und soll nicht implizieren, dass bestimmte Ausführungsbeispiele das jeweilige Vorliegen von zumindest einem von X, zumindest einem von Y oder zumindest einem von Z erfordern. Zusätzlich soll konjunktive Sprache wie beispielsweise die Phrase „zumindest eines von X, Y und Z“, sofern nicht anderweitig spezifisch angegeben, auch als X, Y, Z oder irgendeine Kombination davon, umfassend „X, Y und/oder Z“, verstanden werden.
  • Darstellende Beispiele der Geräte, Systeme und Verfahren, die hierin offenbart sind, sind nachfolgend bereitgestellt. Ein Ausführungsbeispiel der Geräte, Systeme und Verfahren kann irgendeine einzelne oder mehrere und irgendeine Kombination der nachfolgend beschriebenen Beispiele umfassen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • Joint Electronic Device Engineering Council) am 27. Juni 2007 [0035]
    • High Bandwidth Memory (Hohe-Bandbreite-Speicher), JESD325, ursprünglich veröffentlicht durch JEDEC im Oktober 2013 [0035]

Claims (22)

  1. Ein computerimplementiertes Verfahren, umfassend: Veranlassen eines Aus- und Wiedereinschaltens nur eines Geräts, das einem Firmware-Update unterliegt, während eine Leistungsversorgung zu zumindest einem anderen Gerät erlaubt wird, wobei das Aus- und Wiedereinschalten eine Reduzierung der Leistung zu dem Gerät umfasst.
  2. Das Verfahren gemäß Anspruch 1, umfassend: Speichern einer Gerätekonfiguration vor dem Ausführen eines Aus- und Wiedereinschaltens auf dem Gerät.
  3. Das Verfahren gemäß einem der vorangehenden Ansprüche, umfassend: Speichern des Firmware-Updates zum Zugriff durch das Gerät.
  4. Das Verfahren gemäß einem der vorangehenden Ansprüche, umfassend: Wiederherstellen der Leistung zu dem Gerät nach einem Reduzieren der Leistung zu dem Gerät für eine Zeitspanne, wobei das Wiederherstellen der Leistung zu dem Gerät das Gerät veranlasst, ein Firmware-Update zu laden.
  5. Das Verfahren gemäß Anspruch 4, umfassend: Laden einer gespeicherten Gerätekonfiguration in das Gerät und Wiederaufnahme des Betriebs des Geräts unter Verwendung des Firmware-Updates.
  6. Das Verfahren gemäß einem der vorangehenden Ansprüche, das Gerät umfassend eines oder mehrere von: einer Netzwerkschnittstelle, einem Beschleuniger, einer zentralen Verarbeitungseinheit (CPU), einem Beschleuniger, einer Videokarte, einer Speichersteuerung, einer Speicherungssteuerung oder eines Peripheriegeräts.
  7. Das Verfahren gemäß Anspruch 6, wobei das Gerät gemäß Anspruch Teil eines Systems-auf-einem-Chip (SoC) ist.
  8. Das Verfahren gemäß einem der vorangehenden Ansprüche, umfassend ein Nicht-Rebooten eines mit dem Gerät gekoppelten Servers in Verbindung mit einem Firmware-Update des Geräts.
  9. Das Verfahren gemäß einem der vorangehenden Ansprüche, wobei sich das Gerät in Verbindung mit einem Firmware-Update von einer Schnittstelle mit einem Host-System trennt.
  10. Das Verfahren gemäß einem der vorangehenden Ansprüche, wobei das Gerät in Verbindung mit einem Firmware-Update eine Verbindung mit einer Schnittstelle zu einem Host-System beibehält.
  11. Eine Vorrichtung, umfassend: eine Schaltungsplatine, umfassend ein Gerät, einen Firmware-Speicher und eine Leistungssteuerung, wobei: der Firmware-Speicher ausgebildet ist, um ein Firmware-Update zu speichern und ansprechend auf einen softwareinitiierten Befehl die Leistungssteuerung ausgebildet ist, um die Leistung zu dem Gerät, das ein Firmware-Update erhalten soll, zu reduzieren, um ein Firmware-Update des Geräts zu veranlassen, und die Leistungssteuerung ausgebildet ist, um die Leistung zu dem Gerät wiederherzustellen, um eine Ausführung des Firmware-Updates zu veranlassen.
  12. Die Vorrichtung gemäß Anspruch 11, wobei die Leistungssteuerung ausgebildet ist, um die Leistung nur zu dem Gerät zu reduzieren, unabhängig von der Leistungsversorgung zu zumindest einem anderen Gerät.
  13. Die Vorrichtung gemäß einem der Ansprüche 11-12, umfassend zumindest einen Prozessor zum Speichern der Gerätekonfiguration vor der Reduzierung der Leistung zu dem Gerät.
  14. Die Vorrichtung gemäß einem der Ansprüche 11-13, umfassend zumindest einen Prozessor zur Ausführung eines Firmware-Update-Tools, um der Leistungssteuerung einen softwareinitiierten Befehl bereitzustellen.
  15. Die Vorrichtung gemäß einem der Ansprüche 11-14, wobei die Leistungssteuerung ausgebildet ist, um die Leistung zu dem Gerät zu reduzieren, um ein Firmware-Update des Geräts zu veranlassen, und um die Leistung zu dem Gerät wiederherzustellen, um eine Ausführung des Firmware-Updates zu veranlassen.
  16. Die Vorrichtung gemäß Anspruch 15, umfassend zumindest einen Prozessor zum Laden der gespeicherten Gerätekonfiguration in das Gerät nach Wiederherstellung der Leistung zu dem Gerät.
  17. Die Vorrichtung gemäß einem der Ansprüche 11-16, das Gerät umfassend eines oder mehrere von: einer Netzwerkschnittstelle, einem Beschleuniger, einer zentralen Verarbeitungseinheit (CPU), eine Grafikverarbeitungseinheit (GPU), einem Beschleuniger, eine Videokarte, einer Speichersteuerung, einer Speicherungssteuerung oder einem Peripheriegerät.
  18. Die Vorrichtung gemäß Anspruch 17, wobei das Gerät Teil eines Systems-auf-einem-Chip (SoC) ist.
  19. Die Vorrichtung gemäß einem der Ansprüche 11-18, umfassend eines oder mehrere von: einem Server, einem Rechenzentrum oder einem Rack.
  20. Zumindest ein nichtflüchtiges computerlesbares Medium, umfassend darauf gespeicherte Anweisungen, die, falls sie durch zumindest einen Prozessor ausgeführt werden, den zumindest einen Prozessor veranlassen zum: Konfigurieren einer Leistungssteuerung zum Zurücksetzen der Leistung zu einem Gerät, um das Gerät zu veranlassen, aktualisierte Firmware ohne Unterbrechung der Leistung zu einem anderen Gerät, das kein Firmware-Update erhalten soll, auszuführen.
  21. Das zumindest eine computerlesbare Medium gemäß Anspruch 20, wobei die Anweisungen einen Teil eines Firmware-Update-Tools umfassen.
  22. Das zumindest eine computerlesbare Medium gemäß Anspruch 20 oder 21, wobei das Gerät ein Peripheriegerät umfasst, das durch eine Schnittstelle mit einem Rechensystem gekoppelt ist.
DE102020133738.8A 2020-04-23 2020-12-16 Firmware-update-techniken Pending DE102020133738A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/857,103 US20200257517A1 (en) 2020-04-23 2020-04-23 Firmware update techniques
US16/857,103 2020-04-23

Publications (1)

Publication Number Publication Date
DE102020133738A1 true DE102020133738A1 (de) 2021-10-28

Family

ID=71944595

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020133738.8A Pending DE102020133738A1 (de) 2020-04-23 2020-12-16 Firmware-update-techniken

Country Status (2)

Country Link
US (1) US20200257517A1 (de)
DE (1) DE102020133738A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11182315B2 (en) * 2017-02-10 2021-11-23 Intel Corporation Apparatuses, methods, and systems for hardware control of processor performance levels
US11231448B2 (en) 2017-07-20 2022-01-25 Targus International Llc Systems, methods and devices for remote power management and discovery
KR20210100647A (ko) 2018-12-19 2021-08-17 타거스 인터내셔널 엘엘씨 휴대용 전자 디바이스용 디스플레이 및 도킹 장치
US11379398B2 (en) * 2019-06-04 2022-07-05 Microchip Technology Incorporated Virtual ports for connecting core independent peripherals
US11039105B2 (en) 2019-08-22 2021-06-15 Targus International Llc Systems and methods for participant-controlled video conferencing
US20210311897A1 (en) * 2020-04-06 2021-10-07 Samsung Electronics Co., Ltd. Memory with cache-coherent interconnect
US11669473B2 (en) * 2020-06-26 2023-06-06 Advanced Micro Devices, Inc. Allreduce enhanced direct memory access functionality
CN112328280B (zh) * 2020-11-04 2023-07-28 北京计算机技术及应用研究所 实现免拆机更新国产计算机bios和cpld/ec的系统
US11768672B1 (en) * 2020-12-29 2023-09-26 Virtuozzo International Gmbh Systems and methods for user-controlled deployment of software updates
US20220229650A1 (en) * 2021-01-21 2022-07-21 Nvidia Corporation Semiconductor component update device
CN113055296B (zh) * 2021-03-16 2022-06-21 烽火通信科技股份有限公司 一种数据处理方法、装置、系统以及终端设备
US20220391188A1 (en) * 2021-06-03 2022-12-08 Dell Products L.P. Systems and methods for context-aware firmware update
US20230077706A1 (en) * 2021-09-14 2023-03-16 Targus International Llc Independently upgradeable docking stations
US20230205508A1 (en) * 2021-12-29 2023-06-29 Dell Products L.P. Automated firmware updates based on device driver version in a server device
US20240010209A1 (en) * 2022-07-06 2024-01-11 Gm Cruise Holdings Llc Environmental and electromagnetic seal for autonomous vehicle control systems
US20240063632A1 (en) * 2022-08-22 2024-02-22 Juniper Networks, Inc. Apparatus, system, and method for power-cycling field-replaceable units remotely

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4870915B2 (ja) * 2004-07-15 2012-02-08 株式会社日立製作所 ストレージ装置
US10387257B1 (en) * 2018-07-31 2019-08-20 Dell Products L.P. Systems and methods for reliable redundant management controller firmware update

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
High Bandwidth Memory (Hohe-Bandbreite-Speicher), JESD325, ursprünglich veröffentlicht durch JEDEC im Oktober 2013
Joint Electronic Device Engineering Council) am 27. Juni 2007

Also Published As

Publication number Publication date
US20200257517A1 (en) 2020-08-13

Similar Documents

Publication Publication Date Title
DE102020133738A1 (de) Firmware-update-techniken
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
US12001826B2 (en) Device firmware update techniques
DE102022102788A1 (de) Konfigurierbare vorrichtungsschnittstelle
US8595723B2 (en) Method and apparatus for configuring a hypervisor during a downtime state
US12008359B2 (en) Update of boot code handlers
US20110113426A1 (en) Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods
US11681625B2 (en) Receive buffer management
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE102020116316A1 (de) Prioritätsbasierte batterie-zuordnung für ressourcen während leistungsausfall
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
US20210149587A1 (en) Technologies to provide access to kernel and user space memory regions
EP4145284A1 (de) Technologien für arbeitsausführungs-offload
US20210357202A1 (en) Firmware updating
EP4002175A1 (de) Nahtlose globale smm-treiberaktualisierung basierend auf smm-vertrauensanker
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
US11803643B2 (en) Boot code load system
DE102021122233A1 (de) Beschleuniger-controller-hub
DE102020128675A1 (de) Puffer zum verringern von schreibverstärkung fehlausgerichteter schreiboperationen
DE112022002198T5 (de) Initiatorseitige Auslagerung für horizontal skalierte Speicherung
DE102021121933A1 (de) Nahtlose codeinjektion im systemverwaltungsmodus
DE102022124481A1 (de) Dynamische zuweisung von cache-ressourcen
DE102022120128A1 (de) Speicherzugriffs-nachverfolgung
US11210171B2 (en) Apparatus, systems, and methods for booting from a checkpoint image