JP2023020861A - ファームウェアの更新 - Google Patents
ファームウェアの更新 Download PDFInfo
- Publication number
- JP2023020861A JP2023020861A JP2022057852A JP2022057852A JP2023020861A JP 2023020861 A JP2023020861 A JP 2023020861A JP 2022057852 A JP2022057852 A JP 2022057852A JP 2022057852 A JP2022057852 A JP 2022057852A JP 2023020861 A JP2023020861 A JP 2023020861A
- Authority
- JP
- Japan
- Prior art keywords
- firmware
- reduced
- storage
- functionality
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
【課題】デバイスのファームウェアを更新する一方で、デバイスをシャットダウンさせることなく、デバイスの動作を継続することを可能にする。【解決手段】本明細書に記載される例は、デバイスを含み、デバイスが、動作中のときに、デバイスのファームウェアの更新中に、デバイスの動作を維持するために、低減機能ファームウェアを実行することであって、低減機能ファームウェアは、更新されるファームウェアよりもデバイスに少ない機能を提供する、ことを行う。一例では、実行される低減機能ファームウェアは、検証された低減機能ファームウェアを含む。一例では、低減機能ファームウェアは、ファームウェアストレージ内のフルファームウェアを上書きする低減機能ファームウェアの更新されたバージョンを含む。【選択図】図2
Description
コンピューティングデバイスは、ハードウェアの初期化、低レベルのハードウェア管理、およびブートプロセスの管理にファームウェアを利用する。プラットフォームファームウェアに加えて、コンピューティングデバイスはまた、コントローラチップ、周辺デバイス、または他の構成要素のための専用ファームウェアを含んでもよい。ファームウェアは、典型的には、ランタイム時にブートに関連して読み込まれるが、専用のファームウェア更新プロセスに関連して更新されてもよい。
ランタイムファームウェアパッチは、バグ(エラー)を修正したり、新しい能力を導入したり、従来のファームウェアバージョンに戻したりするために、様々な中央処理ユニット(CPU)ファームウェアエンジンに配備することがある。いくつかのファームウェアパッチは、システムリセットを必要とする。しかし、CPUのリブートは、CPUがワークロードを実行することができないシステムダウン時間が発生したり、ワークロード完了の遅延につながる可能性がある。CPUのダウンタイムは、データセンタの所有者またはオペレータのTCO(total cost of ownership)を増加させる可能性があり、これは望ましくない可能性がある。
いくつかの例は、デバイスのファームウェアを更新する一方で、デバイスをシャットダウンさせることなく、デバイスの動作を継続することを可能にする方式を提供する。ファームウェア更新中に、ファームウェアの2つのバージョンを更新することができる。すなわち、第1のバージョンは、低減機能セットファームウェアとすることができ、第2のバージョンはフル機能セットファームウェアとすることができる。ファームウェア更新の真正性は、ファームウェアの実行前に検証することができる。デバイスに対してファームウェアの更新が発生したときに、第1のバージョンのファームウェアを実行することにより、オペレーティングシステム(OS)が実行を継続することが可能とすることができる。しかしながら、第2のバージョンのファームウェアが実行されるまで、デバイスの一部の機能が利用可能ではないかもしれない。第2のバージョンのファームウェアが更新され、検証された後、デバイスは、第2のバージョンのファームウェアを実行することができる。第1または第2のバージョンのファームウェアの更新中に、ファームウェアの更新エラーまたは停電が発生した場合、デバイスは、低減イメージまたは第1のバージョンの回復イメージ戻り、動作を継続することができる。したがって、ファームウェア更新中にリセットを回避することにより、ファームウェア更新中の継続したOSの実行およびワークロードの実行を可能にすることができる。例えば、ファームウェアは、Microsoft Windows(登録商標)SPS(server platform services)を含む。いくつかの例では、ファームウェア更新中またはその後の電力損失、またはファームウェア更新中のエラーの場合に、デバイスは、実行するバージョンのファームウェアを有することができる。
図1は例示的なシステムを示す。中央処理ユニット(CPU)102は、コア104-0~104-nを含むことができる。コアは、命令を実行することができる実行コアまたは計算エンジンであり得る。コアは、自身のキャッシュおよびROM(read only memory)にアクセスすることができ、複数のコアは、キャッシュまたはROMを共有することができる。コアは、均一および/または不均一デバイスであり得る。限定するものではなく、メッセージング、IPI(inter-processor interrupts)、プロセッサ間通信などのような、任意のタイプのプロセッサ間通信技術を使用することができる。コアは、限定するものではなく、バス、リング、またはメッシュなどの任意のタイプの方式で接続することができる。コアは、本明細書に記載される命令を含む、1つ以上の命令セット(例えば、x86命令セット(より新しいバージョンで追加されたいくつかの拡張付き)、カリフォルニア州サニーベールのMIPS TechnologiesのMIPS命令セット、カリフォルニア州サニーベールのARM HoldingsのARM(Advanced RISC Machines)命令セット(NEONなどの任意選択の追加拡張付き)をサポートしてもよい。CPUの使用に加えて、またはその代替としてXPUまたはxPUを使用することができる。XPUは、グラフィック処理ユニット(GPU)、汎用GPU (GPGPU)、フィールドプログラマブルゲートアレイ(FPGA)、APU(Accelerated Processing Unit)、アクセラレータまたは別のプロセッサのうちの1つ以上を含むことができる。
コア140-0~104-nのうちの1つ以上は、オペレーティングシステム(OS)を実行することができる。いくつかの例では、OSは、Linux(登録商標)、Windows(登録商標)Serverまたはパーソナルコンピュータ、Android(登録商標)、MacOS(登録商標)、iOS(登録商標)、VMware vSphere、または任意の他のオペレーティングシステムであり得る。OSおよびドライバは、とりわけ、Intel(登録商標)、ARM(登録商標)、AMD(登録商標)、Qualcomm(登録商標)、IBM(登録商標)、Texas Instruments(登録商標)などによって販売または設計されたCPUまたはプロセッサを実行することができる。
CPU102は、ブートコントローラ114に、ストレージ120からファームウェアコード122にアクセスさせ、1つ以上のコアによる実行のためにファームウェアコードをメモリ106にコピーさせる(ファームウェア110として図示)ことができる。ブートファームウェアコードまたはファームウェアは、どのブートコードがCPU102によってコピーされるかのマップを識別するヘッダファイルを有することができる。例えば、ファームウェアコードの.hファイルは、ファームウェアコードのどのセグメントがコピーされるかのフラッシュイメージレイアウトマップを有することができる。プロセッサによって実行される場合、ファームウェアコードは、プロセッサによって実行されて、ブートプロセス(例えば、電源投入開始または再起動)中にハードウェア初期化を実行し、オペレーティングシステムおよびプログラムに対してランタイムサービスを提供することができる。
いくつかの例では、ブートコントローラ114は、ストレージ120からファームウェアコード122にアクセスし、1つ以上のデバイス118による実行のために、ファームウェアコードをメモリデバイスにコピーすることができる。いくつかの例では、ストレージ120は、ファブリックまたはネットワークを使用してブートコントローラ114に接続することができ、ファームウェア更新は、ファブリックまたはネットワークインターフェース(図示せず)を介して1つ以上のパケットを使用して送信することができる。1つ以上のデバイス118は、XPU、IPU(infrastructure processing unit)、CPU、CPUソケット、GPU(graphics processing unit)、プロセッサ、アクセラレータデバイス、BMC(Board Management Controller )、ストレージコントローラ、メモリコントローラ、ディスプレイエンジン、周辺デバイス、Intel(登録商標)ManagementまたはME(Manageability Engine)、AMD PSP(Platform Security Processor)、TrustZone拡張付きARMコア、ネットワークインターフェースデバイス、PCH(Platform Controller Hub)、特定用途向け集積回路(ASIC)などのうちの1つ以上を含むことができる。
例えば、MEは、1つ以上のプロセッサを含むことができ、ネットワークインターフェースデバイスを使用して受信された通信を介してコンピュータシステムの電源オン、設定、制御、またはリセットを可能にすることができる。例えば、MEは、温度、電圧、電流、およびファン速度センサのファン速度制御および監視を提供することができる。例えば、MEは、安全なオーディオおよび/またはビデオ通信経路を提供することができる。例えば、MEは、ブート前にそのデジタル署名によってファームウェアが検証されることを必要とすることによって、安全なブートプロセスを提供することができる。PCHは、データパスおよび表示インターフェース、入出力コントローラ、クロック、ならびに他の回路を提供するチップセットまたは回路基板を含むことができる。
いくつかの例では、ブートファームウェアコードまたはファームウェアは、BIOS(Basic Input/Output System)、VBIOS(vide BIOS)、GPU BIOS、UEFI(Universal Extensible Firmware Interface)、またはブートローダのうちの1つ以上を含むことができる。BIOSファームウェアは、パーソナルコンピュータのシステム基板にプリインストールすることができるか、またはブートストレージ(例えば、フラッシュメモリ)からSPIインターフェースを介してアクセスすることができる。いくつかの例では、ファームウェアはSPSを含むことができる。いくつかの例では、UEFI(Universal Extensible Firmware Interface)が、コアまたはプロセッサのブートまたは再起動のために、BIOSの代わりに、またはBIOSに加えて使用することができる。UEFIは、オペレーティングシステムとプラットフォームファームウェアとの間のソフトウェアインターフェースを定義する仕様である。UEFIは、ディスクまたはストレージからブートするだけでなく、特定のディスクまたはストレージ上の特定の位置で特定のブートローダからブートすることによって、ディスクパーティションからエントリを読み取ることができる。UEFIは、オペレーティングシステムがインストールされていない場合でも、コンピュータのリモート診断と修理をサポートすることができる。UEFI用にブートローダを書くことができ、ブートコードファームウェアが実行可能な命令とすることができ、ブートローダは、オペレーティングシステムをブートする。UEFIブートローダは、UEFIタイプのファームウェアから読み出すことができるブートローダとすることができる。
UEFIカプセルは、ファームウェアコード更新のためにバイナリイメージをカプセル化する方式である。しかし、いくつかの例では、UEFIカプセルは、ファームウェアコードのランタイムコンポーネントを更新するために使用される。UEFIカプセルには、COFF (Common Object File Format)に基づく実行可能またはdll(dynamic linked library)ファイル用の再配置可能なPE(Portable Executable)ファイル形式で更新可能なバイナリイメージを含むことができる。たとえば、UEFIカプセルには実行可能なファイル(*.exe)を含むことができる。このUEFIカプセルは、既存のOS固有のテクニック(Windows Update for Azure、Linux LVFSなど)を介して、SMMイメージとしてターゲットプラットフォームに展開することができる。
トラステッドエンティティ150は、ファームウェアを更新し、ファームウェアを検証し、および/または特定の低減またはフルファームウェアの実行を引き起こすコマンドを送信することができるBIOS、BMCまたは他のハードウェアを含むことができる。例えば、トラステッドエンティティ150は、IPMI(Intelligent Platform Management Interface)一貫性のあるコマンドをMEまたは他のデバイスに送信して、ファームウェアを更新し、ファームウェアを検証し、および/または特定の低減またはフルファームウェアの実行を引き起こすことができる。
ブートコントローラ114は、任意のタイプのコントローラ(例えば、マイクロコントローラ)、またはメモリ106または他のメモリへのファームウェアコードのロードおよび記憶を管理することができるプロセッサであり得る。いくつかの例では、ブートコントローラ114は、CPUコア(例えば、104-0~104-nのいずれか)またはマルチスレッドコアのスレッドを使用して実装され得る。いくつかの例では、ブートコントローラ114は、インターフェース130を使用してストレージ120に結合され得る。インターフェース130は、SPI(serial peripheral interface)、eSPI(enhanced SPI)、SMBus(System Management Bus)、I2C、MIPI I3C(登録商標)、PCIe(Peripheral Component Interconnect Express)、CXL(Compute Express Link)のうちの1つ以上のプロトコルを使用して通信を提供することができる。例えば、Peripheral Component Interconnection Express (PCIe) Base Specification 1.0 (2002)、ならびに前のバージョン、後のバージョン、およびそれらのバリエーションを参照のこと。例えば、Compute Express Link (CXL) Specification revision 2.0、バージョン0.7 (2019)、および前のバージョン、後のバージョン、およびそれらのバリエーションを参照のこと。
本明細書に記載するように、デバイス118は、少なくともストレージ120内の第1または第2のスロットからファームウェアコード122を実行することができる。ファームウェアのブート可能かつ検証済みのコピーは、ストレージ120内の少なくとも1つまたは第1もしくは第2のスロットに記憶され得る。実行可能なファームウェアのタイプは、サーバシステムの動作に不可欠なサービスを実行し、ブート後のPCH SPI へのアクセスを抑止するためのファームウェアバージョン(a)と、サーバシステムの動作と管理に不可欠なサービスと拡張サービスについて実行可能なファームウェアバージョン(b)(例えば、フルファームウェア)を含むことができる。例えば、電力制限は、電力制限をサポートするフルファームウェアと比較して低減ファームウェアによってはサポートされなくてもよい。例えば、低減デバイス電力管理機能は、デバイス電力管理機能をサポートするフルファームウェアと比較して低減ファームウェアによってサポートされてもよい。例えば、低減された電力管理機能か、またはこの機能のないことが、フル電力監視特徴をサポートするフルファームウェアと比較して、低減ファームウェアによってサポートされてもよい。例えば、低減されたプラットフォーム遠隔測定収集および報告、またはこの機能のないことが、フルプラットフォーム遠隔測定収集および報告機能をサポートするフルファームウェアと比較して、低減ファームウェアによってサポートされてもよい。例えば、低減された1つ以上のセンサからの入力、またはこの入力がないことが、1つ以上のセンサからの入力をサポートするフルファームウェアと比較して、低減ファームウェアによってサポートされてもよい。
低減ファームウェアでサポートされていない機能が要求される場合、OSにエラーメッセージが発行される可能性があるが、ファームウェアが更新されているデバイスは、動作を継続することができる。いくつかの例では、デバイスがバージョン(a)のファームウェアを実行しているときに、システムがOSを実行している間に、デバイスのファームウェアを更新して、システムの動作性を維持することができる。いくつかの例において、SPS機能性のいくつかは、フルファームウェアと比較して、低減ファームウェアにおいて制限され得る。
例えば、ファームウェア更新動作は、ファームウェアが更新されるデバイスが、第1の低減ファームウェア実行することと、第2の低減ファームウェアを、以前のフルファームウェアバージョンを記憶したスロットなど、スロットの1つに記憶することと、第2の低減ファームウェアバージョンを検証した後、ファームウェアが更新されるデバイスが、第2の低減ファームウェアバージョンを実行することと、第1の低減ファームバージョンを記憶したスロットなど、別のスロットにフルファームウェアバージョンを記憶することと、ファームウェアが更新されるデバイスがフルファームウェアバージョンを実行することと、を含むことができる。
図2は、ファームウェアを記憶する例示的な方式を示す。例えば、レイアウトを使用して、デバイスによってアクセス可能なファームウェアを記憶することができる。スロットは、アドレス可能な記憶領域の範囲であり得る。例えば、スロット201およびスロット202は、アドレス可能な記憶領域とすることができる。いくつかの例では、本明細書に記載されるように、スロット201およびスロット202は、スロット201またはスロット202の一方がフルファームウェアを記憶する前に、更新された低減ファームウェアを記憶することができる。2つのスロットが図示されているが、低減またはフルファームウェアを記憶するために3つ以上のスロットを使用できることに留意する。いくつかの例では、ファームウェアの更新および実行の順序付けは、第2の低減ファームウェアでフルファームウェアを上書きし、フォールバックする低減ファームウェアを保持し、第2の低減ファームウェアの検証後、第2の完全ファームウェアで低減ファームウェアを上書きしながら、第2の低減ファームウェアを実行し、そして、第2のフルファームウェアを実行する。
図3Aおよび3Bは、動作の例示的なフローを示す。ファームウェアの更新は、ファームウェアの更新の3つのステージを含むことができる。すなわち、動作中のファームウェア更新ステージでのリカバリ、リカバリ中のファームウェア更新ステージ、および動作中のファームウェア更新ステージである。1つ以上のファームウェア更新を検証することができるが、ファームウェア更新が検証されない場合、デバイスは検証されたファームウェアイメージからブートすることができる。
ファームウェアの更新は、少なくとも2つのバージョンのファームウェア、すなわち、低減機能ファームウェア(低減ファームウェア)である第1のバージョンと、フル機能ファームウェア(ファームウェアまたはフルファームウェア)である第2のバージョンを更新することを含むことができる。いくつかの例では、ファームウェアの更新の前に、第1のスロットは低減ファームウェアを記憶することができ、第2のスロットはフルファームウェアを記憶することができる。302では、トラステッドエンティティは、第1のスロットにおいて低減ファームウェアイメージを実行するために、ファームウェアが更新されるデバイスにコマンドを送信することができる。デバイスは、第1のスロットにおいて低減ファームウェアを実行することができる。304では、デバイスは、トラステッドエンティティに、デバイスが低減ファームウェアを実行していることを示すことができる。
306では、トラステッドエンティティは、ファームウェアストレージの第2のスロットに第2の低減ファームウェアを書き込むことができ、第2のスロットは、以前はフルファームウェアを記憶している。308では、ファームウェアストレージコントローラは、第2のスロットが第2の低減ファームウェアを記憶することをトラステッドエンティティに示すことができる。310では、トラステッドエンティティは、第2のスロットから第2の低減ファームウェアをブートするために、デバイスに命令することができる。デバイスが第2のスロットから低減ファームウェアをブートし損なう場合、デバイスは、第1のスロット内の低減ファームウェアを使用してブートすることができる。
312では、デバイスは、デバイスが第2のスロットから第2の低減ファームウェアをブートしたというステータスをトラステッドエンティティに提供することができる。ステータスは実行中のファームウェアバージョンを示すことができる。トラステッドエンティティは、ファームウェアバージョンが更新されたリカバリバージョンと一致することを検証することによって、更新された第2の低減ファームウェアが正しくアクティブにされたかどうかをチェックすることができる。検証に失敗があった場合、トラステッドエンティティは、デバイスに、第1のスロット内の低減ファームウェアのような以前に検証されたファームウェアバージョンを実行させ、および/または特定のデバイスのフルファームウェアバージョンが検証されていないことを管理者に示すことができる。
314では、トラステッドエンティティは、第3の低減ファームウェアで第1のスロットを更新することができる。316では、ファームウェアストレージコントローラは、トラステッドエンティティに、第1のスロットが第3の低減ファームウェアを記憶することを示すことができる。318では、トラステッドエンティティは、第1のスロット内の第3の低減ファームウェアイメージを実行するために、デバイスに命令することができる。デバイスは、第1のスロットにおいて第3の低減ファームウェアを実行することができる。いくつかの例では、トラステッドエンティティは、強制的にリカバリするコマンドを送信することによって、第1のスロット内の第3の低減ファームウェアの実行をアクティブにすることができる。第1のスロットから第3の低減ファームウェアをブートし損なう場合、第2のスロット内の第2の低減ファームウェアを実行することができる。320では、デバイスは、トラステッドエンティティに、デバイスが第3の低減ファームウェアを実行していることを示すことができる。例えば、トラステッドエンティティはGet FW statusコマンドを送信することができ、デバイスはFWバージョンを有するFWステータスで応答します。トラステッドエンティティは、FWバージョンが新しいリカバリバージョンと一致することを検証することによって、第1のスロット内の第3の低減ファームウェアが正しくアクティブにされているかどうかをチェックすることができ、リカバリ理由がコマンドによって実行されるように設定される。
322では、トラステッドエンティティは、第2のフルファームウェアで第1のスロットを更新することができる。324では、ファームウェアストレージコントローラは、トラステッドエンティティに、第2のスロットが第2のフルファームウェアを記憶することを示すことができる。326では、トラステッドエンティティは、Force ME Recoveryコマンドを送信することによって、第2のスロットから実行するために、第2のフルファームウェアをアクティブにすることができる。デバイスが第2のスロットからフルファームウェアをブートし損なう場合、デバイスは、第2のスロットから低減したファームウェアを使用してブートすることができる。328では、デバイスは、トラステッドエンティティに、デバイスが更新されたフルファームウェアを実行していることを示すことができる。トラステッドエンティティは、ファームウェアバージョンが更新されたリカバリバージョンと一致することを検証することによって、更新された低減ファームウェアが正しくアクティブにされたかどうかをチェックすることができる。検証に失敗があった場合、トラステッドエンティティは、デバイスに、(低減ファームウェアバージョンを含む)以前に検証されたファームウェアバージョンを実行させ、および/または特定のデバイスのフルファームウェアバージョンが検証されていないことを管理者に示すことができる。
いくつかの例では、314~320は実行されず、デバイスは、第3の低減ファームウェアではなく第2の低減ファームウェアの実行を継続することができ、第2の完全ファームウェアは、第2のスロットの代わりに第1のスロットに書き込むことができ、デバイスは、第1のスロットから第2のフルファームウェアを実行することができる。
図4Aおよび4Bは、ブートコントローラによって実行され得るプロセスの例を示す。402では、ファームウェア更新が要求される場合に判定が行われ得る。ファームウェア更新が要求された場合、プロセスは404に進むことができる。ファームウェア更新が要求されていない場合、プロセスは402を繰り返すことができる。
404において、デバイスは、ファームウェアストレージの第1のスロットから低減ファームウェアからブートすることができる。ファームウェアストレージのスロットは、低減またはフルファームウェアを記憶することができる。406では、第2の低減ファームウェアを受信することができる。第2の低減ファームウェアは、ファームウェアストレージの第2のスロットに記憶することができる。408では、第2のスロットから第2の低減ファームウェアをブートする要求に応答して、デバイスは、第2の低減ファームウェアを第2のスロットからブートし、ファームウェアバージョンをトラステッドエンティティに示すことができる。場合によっては、第2の低減ファームウェアは、第1のスロット内の低減ファームウェアと同じファームウェアである。場合によっては、第2の低減ファームウェアは、第1のスロット内の低減ファームウェアとは異なるファームウェアである。
410では、ブートコントローラは、低減ファームウェアの更新の後に、特定のファームウェアを実行するための表示を受信するかどうかを判定することができる。例えば、デバイスは、第2のスロット内の第2の低減ファームウェアがトラステッドエンティティによって検証されていないと識別されたことに基づいて、第1のスロットから低減ファームウェアを実行する表示を受信することができる。低減ファームウェアの更新後に、デバイスが特定のファームウェアを実行する表示を受信する場合、プロセスは430に継続することができる。低減ファームウェアの更新後に、デバイスが特定のファームウェアを実行する表示を受信しない場合、プロセスは430に継続することができる。
412では、第3の低減ファームウェアを受信することができる。第3の低減ファームウェアは、第1のスロットに記憶され得る。414では、第3のスロットから第3の低減ファームウェアをブートする要求に応答して、デバイスは、第3の低減ファームウェアを第3のスロットからブートし、ファームウェアバージョンをトラステッドエンティティに示すことができる。
図4Bを参照すると、416において、ブートコントローラは、低減ファームウェアの更新の後に、特定のファームウェアを実行するための表示を受信するかどうかを判定することができる。例えば、デバイスは、第1のスロット内の第3の低減ファームウェアがトラステッドエンティティによって検証されていないと識別されたことに基づいて、第2のスロットから低減ファームウェアを実行する表示を受信することができる。低減ファームウェアの更新後に、デバイスが特定のファームウェアを実行する表示を受信する場合、プロセスは430に継続することができる。低減ファームウェアの更新後に、デバイスが特定のファームウェアを実行する表示を受信しない場合、プロセスは418に継続することができる。
418では、第2のフルファームウェアを受信することができる。第2のフルファームウェアは、第2のスロット、または別のスロットに記憶され得る。420では、第2のフルファームウェアをブートする要求に応答して、デバイスは、第2のフルファームウェアを第2のスロットからブートし、信頼されるエンティティにファームウェアのバージョンを示すことができる。
422では、ブートコントローラは、ファームウェアの更新の後に、特定のファームウェアを実行するための表示を受信するかどうかを判定することができる。例えば、デバイスは、第2のスロット内のファームウェアがトラステッドエンティティによって検証されていないと識別されたことに基づいて、第1のスロットから第3の低減ファームウェアを実行する表示を受信することができる。ファームウェアの更新後に、デバイスが特定のファームウェアを実行する表示を受信する場合、プロセスは430に継続することができる。ファームウェアの更新後に特定のファームウェアを実行するための表示をデバイスが受信しない場合、プロセスは終了するか、または別の動作を継続することができる。
430では、ブートコントローラは、最後に更新されなかったスロットに記憶された検証済みの低減ファームウェアまたはフルファームウェアを実行することができる。例えば、第2の低減ファームウェアの記憶後、検証された低減ファームウェアを実行することができる。例えば、第3の低減ファームウェアの記憶後、検証された第2低減ファームウェアを実行することができる。例えば、フルファームウェアの記憶後、検証された第3の低減ファームウェアを実行することができる。
図5は、トラステッドエンティティによって実行され得る例示的なプロセスを示す。502では、トラステッドエンティティは、デバイスのファームウェアストレージに最近コピーされたファームウェアを検証することができる。検証は、少なくともいくつかの例において少なくともファームウェアのバージョンに基づいて行うことができる。ファームウェアが検証される場合、プロセスが終了することができる。ファームウェアが検証されない場合、プロセスは、504に継続することができ、そこで、トラステッドエンティティは、デバイスに、事前に検証された低減ファームウェアまたはフルファームウェアを実行させ、検証されない特定のファームウェア更新を管理者に通知させることができる。
図6は、システムを示す。様々な例は、本明細書に記載されるように、更新されたファームウェアを更新またはアクセスするために、システム600によって使用され得る。システム600は、システム600に対する命令の処理、動作管理、および実行を提供するプロセッサ610を含む。プロセッサ610は、任意のタイプのマイクロプロセッサ、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、APU(Accelerated Processing Unit)、処理コア、またはシステム600に対して処理を提供する他の処理ハードウェア、またはプロセッサの組み合わせを含むことができる。プロセッサ610は、システム600の全体的な動作を制御し、1つ以上のプログラマブル汎用または専用マイクロプロセッサ、デジタル信号プロセッサ(DSP)、プログラマブルコントローラ、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)など、またはこれらのデバイスの組み合わせとすることができ、またはこれらを含むことができる。
一例では、システム600は、メモリサブシステム620またはグラフィックインターフェース640もしくはアクセラレータ642のような、より高い帯域幅の接続を必要とするシステム構成要素に対して、より高速のインターフェースまたは高スループットのインターフェースを表すことができる、プロセッサ610に結合されたインターフェース612を含む。インターフェース612は、スタンドアロン構成要素とすることができるか、またはプロセッサダイに一体化され得るインターフェース回路を表す。存在する場合、グラフィックインターフェース640は、システム600のユーザに視覚的ディスプレイを提供するために、グラフィック構成要素とインターフェースする。一例では、グラフィックインターフェース640は、ユーザに出力を提供する高精細度(HD)ディスプレイを駆動することができる。高解像度とは、約100 PPI (ピクセル/インチ)以上のピクセル密度を有するディスプレイを指すことができ、フルHD (例えば、1180p)、レティーナディスプレイ、6K(超高精細度またはUHD)などのフォーマットを含むことができる。一例では、ディスプレイは、タッチスクリーンディスプレイを含むことができる。一例では、グラフィックインターフェース640は、メモリ630に記憶されたデータに基づいて、もしくはプロセッサ610によって実行された動作に基づいて、またはその両方に基づいて、表示を生成する。一例では、グラフィックインターフェース640は、メモリ630に記憶されたデータに基づいて、もしくはプロセッサ610によって実行された動作に基づいて、またはその両方に基づいて、表示を生成する。
アクセラレータ642は、プロセッサ610によってアクセスされるか、または使用され得るプログラマブルまたは固定機能オフロードエンジンとすることができる。例えば、アクセラレータ642のうちのアクセラレータは、本明細書に記載される方式での順次および投機的復号動作、圧縮(DC)能力、公開鍵暗号(PKE)などの暗号化サービス、サイファー、ハッシュ/認証能力、復号、または他の能力もしくはサービスを提供することができる。いくつかの実施形態では、アクセラレータ642のうちのアクセラレータは、本明細書に記載されるように、フィールド選択コントローラ能力を提供する。場合によっては、アクセラレータ642は、CPUソケット(例えば、CPUを含み、CPUとの電気的インターフェースを提供するマザーボードまたは回路基板へのコネクタ)に一体化されてもよい。例えば、アクセラレータ642は、単一またはマルチコアプロセッサ、グラフィック処理ユニット、論理実行ユニット、シングルまたはマルチレベルキャッシュ、プログラムまたはスレッドを独立して実行するために使用可能な機能ユニット、特定用途向け集積回路(ASIC)、ニューラルネットワークプロセッサ(NNP)、プログラマブル制御論理、およびフィールドプログラマブルゲートアレイ(FPGA)などのプログラマブル処理要素を含むことができる。アクセラレータ642は、複数のニューラルネットワーク、CPU、プロセッサコア、汎用グラフィック処理ユニット、または人工知能(AI)モデルまたは機械学習(ML)モデルによって利用可能にされ得るグラフィック処理ユニットを提供することができる。例えば、AIモデルは、強化学習スキーム、Q学習スキーム、ディープQ学習もしくはA3C(Asynchronous Advantage Actor-Critic)、コンビナトリアルニューラルネットワーク、リカレントコンビナトリアルニューラルネットワーク、または他のAIもしくはMLモデルのいずれかまたは組み合わせを使用するか、または含むことができる。複数のニューラルネットワーク、プロセッサコア、またはグラフィック処理ユニットは、AIまたはMLモデルによって利用可能にされ得る。本明細書に記載される技術を使用して、プロセッサ610またはアクセラレータ642のファームウェア更新を発生させることができる。
メモリサブシステム620は、システム600のメインメモリを表し、プロセッサ610によって実行されるコード、またはルーチンを実行する際に使用されるデータ値に対するストレージを提供する。メモリサブシステム620は、読み出し専用メモリ(ROM)、フラッシュメモリ、DRAMなどの1つ以上の種類のランダムアクセスメモリ(RAM)、もしくは他のメモリデバイス、またはそのようなデバイスの組み合わせなどの1つ以上のメモリデバイス630を含むことができる。メモリ630は、とりわけ、システム600において命令を実行するためのソフトウェアプラットフォームを提供するオペレーティングシステム(OS)632を記憶し、ホストする。追加的に、アプリケーション634は、メモリ630からOS632のソフトウェアプラットフォーム上で実行することができる。アプリケーション634は、1つ以上の機能の実行を実行するそれ自身の動作論理を有するプログラムを表す。プロセス636は、OS632、もしくは1つ以上のアプリケーション634、または組み合わせに補助機能を提供するエージェントまたはルーチンを表す。OS632、アプリケーション634、およびプロセス636は、システム600に対して機能を提供するソフトウェア論理を提供する。一例では、メモリサブシステム620は、メモリコントローラ622を含み、これは、メモリ630に向けてコマンドを生成し発行するメモリコントローラである。メモリコントローラ622は、プロセッサ610の物理的部分またはインターフェース612の物理的部分であり得ることが理解されるであろう。例えば、メモリコントローラ622は、プロセッサ610を有する回路に一体化された集積メモリコントローラとすることができる。
具体的に図示していないが、システム600は、メモリバス、グラフィックバス、インターフェースバス、または他のものなどのデバイス間の1つ以上のバスまたはバスシステムを含むことができると理解されるだろう。バスまたは他の信号線は、通信的または電気的に構成要素を一緒に結合することができ、または通信的および電気的に構成要素を結合することができる。バスは、物理的な通信線、ポイントツーポイント接続、ブリッジ、アダプタ、コントローラ、もしくは他の回路または組み合わせを含むことができる。バスは、例えば、システムバス、PCI(Peripheral Component Interconnect)バス、ハイパートランスポートまたはISA(industry standard architecture)バス、SCSI(small computer system interface)、USB(universal serial bus)、またはIEEE(Institute of Electrical and Electronics Engineers)1394バス(Firewire)のうちの1つ以上を含むことができる。
一実施形態では、システム600は、インターフェース612に結合され得るインターフェース614を含む。一例では、インターフェース614は、スタンドアロン構成要素および集積回路を含むことができるインターフェース回路を表す。一例では、複数のユーザインタフェース構成要素もしくは周辺構成要素、またはその両方が、インターフェース614に結合する。ネットワークインターフェース650は、1つ以上のネットワークを介してリモートデバイス(例えば、サーバまたは他のコンピューティングデバイス)と通信する能力をシステム600に提供する。ネットワークインターフェース650は、Ethernetアダプタ、無線相互接続構成要素、セルラネットワーク相互接続構成要素、USB(universal serial bus)、または他の有線もしくは無線規格ベースまたは独自のインターフェースを含むことができる。ネットワークインターフェース1050は、同じデータセンタまたはラック内にあるデバイスまたはメモリに記憶されたデータを送信することを含み得るリモートデバイスにデータを送信することができる。ネットワークインターフェース650は、受信したデータをメモリに記憶することを含み得るリモートデバイスからデータを受信することができる。ネットワークインターフェース650、プロセッサ610、およびメモリサブシステム620に関連して、様々な例を使用することができる。
一例では、システム600は、1つ以上の入出力(I/O)インターフェース660を含む。I/Oインターフェース660は、ユーザがシステム600と対話する1つ以上のインターフェース構成要素(例えば、オーディオ、英数字、触覚/タッチ、または他のインターフェース)を含むことができる。周辺インターフェース670は、具体的には上述されていない任意のハードウェアインタフェースを含むことができる。周辺とは、一般に、システム600に依存して接続するデバイスを指す。依存した接続は、システム600が、動作が実行され、ユーザが対話するソフトウェアプラットフォームもしくはハードウェアプラットフォームまたはその両方を提供するものである。
一例では、システム600は、データを不揮発性方式で記憶するストレージサブシステム680を含む。一例では、特定のシステム実装において、ストレージ680の少なくとも特定の構成要素は、メモリサブシステム620の構成要素とオーバーラップすることができる。ストレージサブシステム680は、ストレージ684を含み、これは、不揮発性方式、例えば、1つ以上の磁気、ソリッドステート、もしくは光ベースのディスク、またはその組み合わせで、大量のデータを記憶するための任意の従来の媒体であるか、またはそれらを含むことができる。ストレージ684は、コードまたは命令およびデータ1046を永続状態で保持する(例えば、値は、システム600への電力の中断にもかかわらず保持される)。ストレージ684は、一般的に「メモリ」とみなすことができるが、メモリ630は、典型的には、プロセッサ610に命令を提供する実行メモリまたは動作メモリである。ストレージ684は不揮発性であるが、メモリ630は揮発性メモリを含むことができる(例えば、電力がシステム600に中断された場合、データの値または状態は不確定である)。一例では、ストレージサブシステム680は、ストレージ684とインターフェースするコントローラ682を含む。一例では、コントローラ682は、インターフェース614またはプロセッサ610の物理的部分であるか、またはプロセッサ610およびインターフェース614の両方に回路または論理を含むことができる。
揮発性メモリは、デバイスに電力が中断された場合に、その状態(したがって、それに記憶されたデータ)が不定であるメモリである。ダイナミック揮発性メモリは、状態を維持するためにデバイスに記憶されたデータをリフレッシュすることを伴うことができる。ダイナミック揮発性メモリの一例は、DRAM (Dynamic Random Access Memory)、またはSDRAM(Synchronous DRAM)などのいくつかのバリアントを含む。本明細書に記載されるようなメモリサブシステムは、DDR3(Double Data Rate version 3、オリジナルリリースは、2007年6月27日にJEDEC (Joint Electronic Device Engineering Council)による)などの複数のメモリ技術と互換性があってもよい。DDR4(DDR version 4、初期仕様は、2012年9月にJEDECによって公開)、DDR4E (DDR version 4)、LPDDR3(Low Power DDR version 3、JESD209-3B、2013年8月にJEDECによる)、LPDDR4(LPDDR version 4、 JESD209-4、オリジナルは、2014年8月にJEDECによって公開)、WIO2(Wide Input/output version 2、JESD229-2、オリジナルは、2014年8月にJEDECによって公開)、HBM(High Bandwidth Memory、JESD325、オリジナルは、2013年10月にJEDECによって公開)、LPDDR5(現在、JEDECにより議論)、HBM2(HBM version 2、現在、JEDECによって議論)、もしくは他のものまたはメモリ技術の組み合わせ、およびそのような仕様の派生物または拡張に基づく技術。
不揮発性メモリ(NVM)デバイスは、デバイスに電力が中断されても、その状態が明確であるメモリである。いくつかの例において、NVMデバイスは、NAND技術、より具体的には、マルチスレッショルドレベルNANDフラッシュメモリ(例えば、SLC(Single-Level Cell)、MLC(Multi-Level Cell)、QLC(Quad-Level Cell)、TLC(Tri-Level Cell)、またはいくつかの他のNAND)のようなブロックアドレス指定可能メモリデバイスを含むことができる。NVMデバイスはまた、バイトアドレス可能なライトインプレイス3次元クロスポイントメモリデバイス、または、シングルまたはマルチレベルPCM(Phase Change Memory)またはPCMS(phase change memory with a switch)などの他のバイトアドレス可能なライトインプレイスNVM、カルコゲニド位相変化材料(例えば、カルコゲナイドガラス)を使用するNVMデバイス、金属酸化物ベース、酸素空格子点ベース、およびCB-RAM(Conductive Bridge Random Access Memory)を含む抵抗性メモリ、ナノワイヤメモリ、強誘電体ランダムアクセスメモリ(FeRAM、FRAM(登録商標))、メモリリスタ技術を組み込んだ磁気抵抗性ランダムアクセスメモリ(MRAM)、STT(spin transfer torque)-MRAM、スピントロニクス磁気トンネル接合メモリベースのデバイス、MTJ(magnetic tunneling junction)ベースのデバイス、DW (Domain Wall)およびSOT (Spin Orbit Transfer)ベースのデバイス、サイリスタベースのメモリデバイス、もしくは上記の組み合わせ、または他のメモリを含むことができる。
電源(図示せず)は、システム600の構成要素に電力を提供する。より具体的には、電源は、典型的には、システム600内の1つ以上の電源にインターフェースして、システム600の構成要素に電力を提供する。一例では、電源は、壁コンセントに差し込むAC-DC(交流-直流)アダプタを含む。このようなAC電力は、再生可能エネルギー(例えば、太陽電力)電源とすることができる。一例では、電源は、外部AC-DCコンバータのようなDC電源を含む。一例では、電源または電力サプライは、充電フィールドの近傍を介して充電するための無線充電ハードウェアを含む。一例では、電源は、内部バッテリ、交流電源、動きベースの電源、太陽電力サプライ、または燃料電池電源を含むことができる。
一例では、システム600は、プロセッサ、メモリ、ストレージ、ネットワークインターフェース、および他の構成要素の相互接続された計算スレッドを使用して実装され得る。高速相互接続は、Ethernet(登録商標)(IEEE 802.3)、RDMA(remote direct memory access)、InfiniBand、iWARP(Internet Wide Area RDMA Protocol)、QUIC(quick UDP Internet Connections)、RoCE(RDMA over Converged Ethernet)、PCIe(Peripheral Component Interconnect express)、QPI(Intel QuickPath Interconnect)、UPI(Intel Ultra Path Interconnect)、IOSF(Intel On-Chip System Fabric)、Omnipath、CXL(Compute Express Link)、HyperTransport、高速ファブリック、NVLink、AMBA(Advanced Microcontroller Bus Architecture)相互接続、OpenCAPI、Gen-Z、CCIX(Cache Coherent Interconnect for Accelerators)、3GPP LTE(Long Term Evolution)(4G)、3GPP 5G、およびその変形が使用され得る。データは、NVMe-oF(NVMe over Fabrics)またはNVMeなどのプロトコルを使用して、仮想化されたストレージノードにコピーまたは記憶され得る。
本明細書における例は、スイッチ、ルータ、ラック、およびデータセンタおよび/またはサーバファーム環境で用いられるようなブレードサーバなどの様々なタイプのコンピューティングおよびネットワーキング機器で実装されてもよい。データセンタおよびサーバファームで使用されるサーバは、ラックベースのサーバまたはブレードサーバなどのアレイ化されたサーバ構成を含む。これらのサーバは、LAN間の適切なスイッチングおよびルーティング機能を備えたLAN(Local Area Network)にサーバのセットをパーティショニングし、プライベートイントラネットを形成するなど、様々なネットワーク規定を介して通信で相互接続される。例えば、クラウドホスティング機能は、典型的には、多数のサーバを備えた大規模なデータセンタを用いてもよい。ブレードは、サーバタイプ機能、すなわち「カード上のサーバ」を実行するように構成された別個のコンピューティングプラットフォームを備える。したがって、ブレードは、適切な集積回路(IC)を結合するための内部配線(例えばバス)を提供するメインプリント回路基板(メイン基板)と、基板に取り付けられた他の構成要素とを含む、従来のサーバに共通の構成要素を含む。
有線または無線プロトコル(例えば、3GPP LTE(Long Term Evolution) (4G)または3GPP 5G)を使用する通信をサポートする基地局、オンプレミスデータセンタ、オフプレミスデータセンタ、エッジネットワーク要素、エッジサーバおよびスイッチ、フォグネットワーク要素、および/またはハイブリッドデータセンター(例えば、仮想化、クラウドおよびソフトウェア定義ネットワークを使用して、物理データセンタおよび分散マルチクラウド環境を横断してアプリケーションワークロードを送達するデータセンタ)において、様々な例を使用することができる。
本明細書における例は、スイッチ、ルータ、ラック、およびデータセンタおよび/またはサーバファーム環境で用いられるようなブレードサーバなどの様々なタイプのコンピューティングおよびネットワーキング機器で実装されてもよい。データセンタおよびサーバファームで使用されるサーバは、ラックベースのサーバまたはブレードサーバなどのアレイ化されたサーバ構成を含む。これらのサーバは、LAN間の適切なスイッチングおよびルーティング機能を備えたLAN(Local Area Network)にサーバのセットをパーティショニングし、プライベートイントラネットを形成するなど、様々なネットワーク規定を介して通信で相互接続される。例えば、クラウドホスティング機能は、典型的には、多数のサーバを備えた大規模なデータセンタを用いてもよい。ブレードは、サーバタイプ機能、すなわち「カード上のサーバ」を実行するように構成された別個のコンピューティングプラットフォームを備える。したがって、各ブレードは、適切な集積回路(IC)を結合するための内部配線(例えばバス)を提供するメインプリント回路基板(メイン基板)と、基板に取り付けられた他の構成要素とを含む、従来のサーバに共通の構成要素を含む。
いくつかの例において、ネットワークインターフェースおよび本明細書に記載される他の例は、基地局(例えば、3G、4G、5Gなど)、マクロ基地局(例えば、5Gネットワーク)、ピコステーション(例えば、IEEE 802.11互換アクセスポイント)、ナノステーション(例えば、PtMP(Point-to-MultiPoint)アプリケーション用)に関連して使用することができる。
様々な例は、ハードウェア要素、ソフトウェア要素、またはその両方の組み合わせを使用して実装されてもよい。いくつかの例において、ハードウェア要素は、デバイス、構成要素、プロセッサ、マイクロプロセッサ、回路、回路要素(例えば、トランジスタ、抵抗、キャパシタ、インダクタなど)、集積回路、ASIC、PLD、DSP、FPGA、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなどを含んでもよい。いくつかの例において、ソフトウェア要素は、ソフトウェア構成要素、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、機能、方法、手順、ソフトウェアインターフェース、API、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはそれらの任意の組み合せを含んでもよい。ハードウェア要素および/またはソフトウェア要素を使用して例が実装されるかどうかを判定することは、所与の実装のために所望されるように、所望の計算速度、電力レベル、熱公差、処理サイクル予算、入力データ速度、出力データ速度、メモリリソース、データバス速度、および他の設計または性能制約のような任意の数の要因にしたがって変動してもよい。プロセッサは、ハードウェア状態機械、デジタル制御論理、中央処理ユニット、または任意のハードウェア、ファームウェア、および/またはソフトウェア要素のうちの1つ以上の組み合わせとすることができる。
いくつかの例は、製造物品または少なくとも1つのコンピュータ可読媒体を使用してまたはそれらとして実装されてもよい。コンピュータ可読媒体は、ロジックを記憶する非一時的な記憶媒体を含んでもよい。いくつかの例において、非一時的な記憶媒体は、揮発性メモリまたは不揮発性メモリ、リムーバブルまたは非リムーバブルメモリ、消去可能または非消去可能メモリ、書き込み可能または再書き込み可能メモリなどを含む、電子データを記憶することができる1つ以上のタイプのコンピュータ可読記憶媒体を含んでもよい。いくつかの例において、論理は、様々なソフトウェア要素を含んでもよく、例えば、ソフトウェア構成要素、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、機能、方法、手順、ソフトウェアインターフェース、API、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはそれらの任意の組み合せを含んでもよい。
いくつかの例によれば、コンピュータ可読媒体は、機械、コンピューティングデバイスまたはシステムによって実行されたときに、その機械、コンピューティングデバイスまたはシステムに、記載された例に従って方法および/または動作を実行させる命令を記憶または維持する非一時的な記憶媒体を含んでもよい。命令は、ソースコード、コンパイルされたコード、解釈されたコード、実行可能なコード、静的コード、動的コードなどのような任意の好適なタイプのコードを含んでもよい。命令は、所定の機能を実行するように機械、コンピューティングデバイスまたはシステムに命令するために、事前定義されたコンピュータ言語、方式または構文に従って実装されてもよい。命令は、任意の好適な高レベル、低レベル、オブジェクト指向、視覚的、コンパイル、および/または解釈されたプログラミング言語を使用して実装されてもよい。
少なくとも1つの例の1つ以上の態様は、プロセッサ内の様々な論理を表す少なくとも1つの機械可読媒体に記憶された代表的な命令によって実装されてもよく、この命令は、機械、コンピューティングデバイスまたはシステムによって読まれると、機械、コンピューティングデバイスまたはシステムに、本明細書に記載される技術を実行するロジックを製造する。「IPコア」として知られるこのような表現は、有形の機械可読媒体上に記憶され、ロジックまたはプロセッサを実際に製造する製造マシンにロードするために、様々な顧客または製造施設に供給されてもよい。
句「1つの例」または「ある例」が現れても、必ずしも同一の例または実施形態を指すものではない。本明細書に記載される任意の態様は、態様が同一の図または要素に関して記載されるかどうかにかかわらず、本明細書に記載される任意の他の態様または類似の態様と組み合わせることができる。添付の図面に示されたブロック機能の分割、省略、または包含は、これらの機能を実装するためのハードウェア構成要素、回路、ソフトウェア、および/または要素が、必ずしも分割、省略、または例における包含を推論しない。
いくつかの例は、表現「結合された」および「接続された」をそれらの派生語とともに使用して記載されてもよい。これらの用語は、必ずしも互いに同義語として意図されているわけではない。例えば、用語「接続された」および/または「結合された」を使用する説明は、2つ以上の要素が互いに直接的に物理的または電気的に接触していることを示してもよい。しかしながら、用語「結合された」はまた、2つ以上の要素が互いに直接接触していないが、互いに協力または相互作用していることを意味してもよい。
用語「第1」、「第2」などは、本明細書においては、いずれの順序、数量、または重要性をも示しておらず、むしろ、1つの要素を別の要素から区別するために使用される。本明細書における用語「a」および「an」は、数量の限定を示さず、むしろ、参照された項目の少なくとも1つの存在を示す。信号を参照して本明細書において使用される用語「アサートされる」は、信号がアクティブであり、任意の論理レベル、論理0または論理1のいずれかを信号に適用することによって達成され得る信号の状態を示す。用語「に続く」または「~後」は、何らかの他のイベントまたは複数のイベントの直後、またはそれの後に続くことを指すことができる。他の動作シーケンスもまた、代替的な例により実行されてもよい。さらに、特定の用途に応じて、追加の動作が追加または削除されてもよい。変更の任意の組み合わせを使用することができ、本開示の利益を伴う当業者は、その多くの変形、修正、および代替的な例を理解するであろう。
句「X、Y、またはZのうちの少なくとも1つ」のような分離性言語は、特に断らない限り、一般に、ある項目、用語などがX、Y、もしくはZ、またはそれらの任意の組み合わせ(例えば、X、Y、および/またはZ)であり得ることを示すために使用される文脈において、他の意味で理解される。したがって、そのような分離性言語は、一般に、特定の例が、各々が存在するために、Xのうちの少なくとも1つ、Yのうちの少なくとも1つ、またはZのうちの少なくとも1つを必要とすることを暗示することを意図しておらず、また暗示するべきではない。追加的に、句「X、Y、およびZのうちの少なくとも1つ」のような結合性言語も、特に断らない限り、「X、Y、Z」、またはそれらの任意の組み合わせを意味すると理解されるべきであり、「X、Y、および/またはZ」を含む。
本明細書に開示されるデバイス、システム、および方法の例示的な例は、以下に提供される。デバイス、システム、および方法の例は、以下に記載される例のいずれか1つ以上およびそのいずれかの組み合わせを含んでもよい。
例1は、1つ以上の例を含み、ストレージデバイスへのファームウェアの更新中のデバイスの動作を維持することと、前記ストレージデバイスへの前記ファームウェアの更新中に低減機能ファームウェアを実行することと、前記ストレージデバイスへの前記ファームウェアの更新後、前記ストレージデバイスから前記ファームウェアをブートすることと、を含む、方法を含む。
例2は、1つ以上の例を含み、前記デバイスの前記ファームウェアを更新する前に、低減機能ファームウェアの複数のコピーを記憶することを含む。
例3は、1つ以上の例を含み、実行される前記低減機能ファームウェアは、検証された低減機能ファームウェアを含む。
例4は、1つ以上の例を含み、ファームウェアのストレージへの更新後のストレージからのファームウェアのブートが、検証済みの低減機能ファームウェアに基づいている1つ以上の例を含む。
例5は、1つ以上の例を含み、前記低減機能ファームウェアをファームウェアストレージの第1の領域にコピーすることと、第2の低減機能ファームウェアを前記ファームウェアストレージの第2の領域にコピーすることと、前記ファームウェアストレージの前記第1の領域を前記ファームウェアで上書きすることと、を含む。
例6は、1つ以上の例を含み、前記ファームウェアストレージの前記第1の領域を前記ファームウェアで上書きすることは、少なくとも前記第2の低減機能ファームウェアの検証に基づく。
例7は、1つ以上の例を含み、前記低減機能ファームウェアは、9つ以上のセンサからの出力の低減測定、低減デバイス電力管理機能、限定された電力監視機能、および/または低減プラットフォーム遠隔測定収集および報告のうちの1つ以上を提供する。
例8は、1つ以上の例を含み、ブートコントローラが、前記ストレージデバイスへの前記ファームウェアの更新中に、低減機能ファームウェアを実行し、前記ストレージデバイスへの前記ファームウェアの更新後に、前記ストレージデバイスから前記ファームウェアをブートする。
例9は、1つ以上の例を含み、デバイスを含む装置を含み、前記デバイスは、動作中のときに、前記デバイスのファームウェアの更新中に、前記デバイスの動作を維持するために、低減機能ファームウェアを実行することであって、前記低減機能ファームウェアは、更新されるファームウェアよりも前記デバイスに少ない機能を提供する、ことを行う。
例10は、1つ以上の例を含み、前記低減機能ファームウェアは、検証された低減機能ファームウェアを含む。
実施例11は、1つ以上の例を含み、前記低減機能ファームウェアは、ファームウェアストレージ内のフルファームウェアを上書きする更新されたバージョンの低減機能ファームウェアを含む。
例12は、1つ以上の例を含み、前記低減機能ファームウェアは、9つ以上のセンサからの出力の低減測定、低減デバイス電力管理機能、限定された電力監視機能、および/または低減プラットフォーム遠隔測定収集および報告のうちの1つ以上を提供する。
例13は、1つ以上の例を含み、前記ファームウェアは、前記低減機能ファームウェアの動作を提供するものであり、1つ以上のセンサからの出力の測定、デバイス電力管理機能、電力監視機能、および/またはプラットフォーム遠隔測定収集および報告のうちの1つ以上を提供する。
例14は、1つ以上の例を含み、前記デバイスは、XPU、IPU(infrastructure processing unit)、CPU(central processing unit)、CPUソケット、GPU(graphics processing unit)、プロセッサ、アクセラレータデバイス、BMC(Board Management Controller)、ストレージコントローラ、メモリコントローラ、ディスプレイエンジン、周辺デバイス、Intel(登録商標)ManagementまたはME(Manageability Engine)、AMD PSP(Platform Security Processor)、TrustZone拡張付きARM(Advanced RISC Machines)コア、ネットワークインターフェースデバイス、PCH(Platform Controller Hub)、特定用途向け集積回路(ASIC)のうちの1つ以上を含む。
例15は、1つ以上の例を含み、前記デバイスを含むサーバを含み、前記ファームウェアの更新の前に、前記サーバは、1つ以上の動作を実行するように前記デバイスに命令し、前記デバイスの動作の維持は、前記1つ以上の動作を実行することを含む。
例16は、1つ以上の例を含み、命令が記憶されたコンピュータ可読媒体を含み、前記命令は、1つ以上のプロセッサによって実行される場合、1つ以上のプロセッサに、前記デバイスのファームウェアの更新中に、デバイスの動作を維持するために、低減機能ファームウェアを実行することであって、前記低減機能ファームウェアは、更新されるファームウェアよりも前記デバイスに少ない機能を提供する、ことを行わせる。
例17は、1つ以上の例を含み、前記低減機能ファームウェアは、検証された低減機能ファームウェアを含む。
例18は、1つ以上の例を含み、前記低減機能ファームウェアは、ファームウェアストレージ内のフルファームウェアを上書きする更新されたバージョンの低減機能ファームウェアを含む。
例19は、1つ以上の例を含み、前記低減機能ファームウェアは、9つ以上のセンサからの出力の低減測定、低減デバイス電力管理機能、限定された電力監視機能、および/または低減プラットフォーム遠隔測定収集および報告のうちの1つ以上を提供する。
例20は、1つ以上の例を含み、前記デバイスは、XPU、IPU(infrastructure processing unit)、CPU(central processing unit)、CPUソケット、GPU(graphics processing unit)、プロセッサ、アクセラレータデバイス、BMC(Board Management Controller)、ストレージコントローラ、メモリコントローラ、ディスプレイエンジン、周辺デバイス、Intel(登録商標)ManagementまたはME(Manageability Engine)、AMD PSP(Platform Security Processor)、TrustZone拡張付きARM(Advanced RISC Machines)コア、ネットワークインターフェースデバイス、PCH(Platform Controller Hub)、特定用途向け集積回路(ASIC)のうちの1つ以上を含む。
Claims (20)
- ストレージデバイスへのファームウェアの更新中のデバイスの動作を維持することと、
前記ストレージデバイスへの前記ファームウェアの更新中に低減機能ファームウェアを実行することと、
前記ストレージデバイスへの前記ファームウェアの更新後、前記ストレージデバイスから前記ファームウェアをブートすることと、を含む、方法。 - 前記デバイスの前記ファームウェアを更新する前に、低減機能ファームウェアの複数のコピーを記憶することを含む、請求項1に記載の方法。
- 実行される前記低減機能ファームウェアは、検証された低減機能ファームウェアを含む、請求項1に記載の方法。
- 前記ストレージデバイスへの前記ファームウェアの更新後、前記ストレージデバイスから前記ファームウェアをブートすることは、前記低減機能ファームウェアが検証されていることに基づく、請求項1に記載の方法。
- 前記低減機能ファームウェアをファームウェアストレージの第1の領域にコピーすることと、
第2の低減機能ファームウェアを前記ファームウェアストレージの第2の領域にコピーすることと、
前記ファームウェアストレージの前記第1の領域を前記ファームウェアで上書きすることと、を含む、請求項1に記載の方法。 - 前記ファームウェアストレージの前記第1の領域を前記ファームウェアで上書きすることは、少なくとも前記第2の低減機能ファームウェアの検証に基づく、請求項5に記載の方法。
- 前記低減機能ファームウェアは、1つ以上のセンサからの出力の低減測定、低減デバイス電力管理機能、限定された電力監視機能、および/または低減プラットフォーム遠隔測定収集および報告のうちの1つ以上を提供する、請求項1~7のいずれか一項に記載の方法。
- ブートコントローラが、前記ストレージデバイスへの前記ファームウェアの更新中に、低減機能ファームウェアを実行し、前記ストレージデバイスへの前記ファームウェアの更新後に、前記ストレージデバイスから前記ファームウェアをブートする、請求項1~7のいずれか一項に記載の方法。
- デバイスを含み、前記デバイスは、動作中のときに、
前記デバイスのファームウェアの更新中に、前記デバイスの動作を維持するために、低減機能ファームウェアを実行することであって、前記低減機能ファームウェアは、更新されるファームウェアよりも前記デバイスに少ない機能を提供する、ことを行う、装置。 - 実行される前記低減機能ファームウェアは、検証された低減機能ファームウェアを含む、請求項9に記載の装置。
- 前記低減機能ファームウェアは、ファームウェアストレージ内のフルファームウェアを上書きする更新されたバージョンの低減機能ファームウェアを含む、請求項9に記載の装置。
- 前記低減機能ファームウェアは、9つ以上のセンサからの出力の低減測定、低減デバイス電力管理機能、限定された電力監視機能、および/または低減プラットフォーム遠隔測定収集および報告のうちの1つ以上を提供する、請求項9に記載の装置。
- 前記ファームウェアは、前記低減機能ファームウェアの動作を提供するものであり、1つ以上のセンサからの出力の測定、デバイス電力管理機能、電力監視機能、および/またはプラットフォーム遠隔測定収集および報告のうちの1つ以上を提供する、請求項12に記載の装置。
- 前記デバイスは、XPU、IPU(infrastructure processing unit)、CPU(central processing unit)、CPUソケット、GPU(graphics processing unit)、プロセッサ、アクセラレータデバイス、BMC(Board Management Controller)、ストレージコントローラ、メモリコントローラ、ディスプレイエンジン、周辺デバイス、Intel(登録商標)ManagementまたはME(Manageability Engine)、AMD PSP(Platform Security Processor)、TrustZone拡張付きARM(Advanced RISC Machines)コア、ネットワークインターフェースデバイス、PCH(Platform Controller Hub)、特定用途向け集積回路(ASIC)のうちの1つ以上を含む、請求項9~13のいずれか一項に記載の装置。
- 前記デバイスを含むサーバを含み、
前記ファームウェアの更新の前に、前記サーバは、1つ以上の動作を実行するように前記デバイスに命令し、前記デバイスの動作の維持は、前記1つ以上の動作を実行することを含む、請求項9~14のいずれか一項に記載の装置。 - 命令が記憶されたコンピュータ可読媒体であって、前記命令は、1つ以上のプロセッサによって実行される場合、1つ以上のプロセッサに、
デバイスのファームウェアの更新中に、前記デバイスの動作を維持するために、低減機能ファームウェアを実行することであって、前記低減機能ファームウェアは、更新されるファームウェアよりも前記デバイスに少ない機能を提供する、ことを行わせる、コンピュータ可読媒体。 - 前記低減機能ファームウェアは、検証された低減機能ファームウェアを含む、請求項16に記載のコンピュータ可読媒体。
- 前記低減機能ファームウェアは、ファームウェアストレージ内のフルファームウェアを上書きする更新されたバージョンの低減機能ファームウェアを含む、請求項16に記載のコンピュータ可読媒体。
- 前記低減機能ファームウェアは、1つ以上のセンサからの出力の低減測定、低減デバイス電力管理機能、限定された電力監視機能、および/または低減プラットフォーム遠隔測定収集および報告のうちの1つ以上を提供する、請求項16~18のいずれか一項に記載のコンピュータ可読媒体。
- 前記デバイスは、XPU、IPU(infrastructure processing unit)、CPU(central processing unit)、CPUソケット、GPU(graphics processing unit)、プロセッサ、アクセラレータデバイス、BMC(Board Management Controller)、ストレージコントローラ、メモリコントローラ、ディスプレイエンジン、周辺デバイス、Intel(登録商標)ManagementまたはME(Manageability Engine)、AMD PSP(Platform Security Processor)、TrustZone拡張付きARM(Advanced RISC Machines)コア、ネットワークインターフェースデバイス、PCH(Platform Controller Hub)、特定用途向け集積回路(ASIC)のうちの1つ以上を含む、請求項16~19のいずれか一項に記載のコンピュータ可読媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/389,158 | 2021-07-29 | ||
US17/389,158 US20210357202A1 (en) | 2021-07-29 | 2021-07-29 | Firmware updating |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023020861A true JP2023020861A (ja) | 2023-02-09 |
Family
ID=78512453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022057852A Pending JP2023020861A (ja) | 2021-07-29 | 2022-03-31 | ファームウェアの更新 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210357202A1 (ja) |
JP (1) | JP2023020861A (ja) |
CN (1) | CN115686558A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11513787B1 (en) * | 2021-06-14 | 2022-11-29 | EMC IP Holding Company LLC | Non-disruptive firmware upgrade of asymmetric hardware accelerator systems |
US11709667B2 (en) | 2021-06-14 | 2023-07-25 | EMC IP Holding Company LLC | Non-disruptive firmware upgrade of symmetric hardware accelerator systems |
US11907071B2 (en) * | 2022-05-09 | 2024-02-20 | Dell Products L.P. | Storage failover protocol for secure and seamless extended firmware load |
-
2021
- 2021-07-29 US US17/389,158 patent/US20210357202A1/en active Pending
-
2022
- 2022-03-31 JP JP2022057852A patent/JP2023020861A/ja active Pending
- 2022-06-24 CN CN202210729735.2A patent/CN115686558A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN115686558A (zh) | 2023-02-03 |
US20210357202A1 (en) | 2021-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200257517A1 (en) | Firmware update techniques | |
US12008359B2 (en) | Update of boot code handlers | |
US8595723B2 (en) | Method and apparatus for configuring a hypervisor during a downtime state | |
US20210357202A1 (en) | Firmware updating | |
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 | |
US10311236B2 (en) | Secure system memory training | |
CN114879828A (zh) | 具有持久性存储器存储装置的固件接口 | |
EP3910469A1 (en) | Interface and warm reset path for memory device firmware upgrades | |
US20210149587A1 (en) | Technologies to provide access to kernel and user space memory regions | |
US20210406091A1 (en) | Technologies to offload workload execution | |
US11803643B2 (en) | Boot code load system | |
WO2022066296A1 (en) | Memory device firmware update and activation without memory access quiescence | |
EP4002175A1 (en) | Seamless smm global driver update base on smm root-of-trust | |
US11144326B2 (en) | System and method of initiating multiple adaptors in parallel | |
CN112148336A (zh) | 计算系统固件的安全更新 | |
US9495177B2 (en) | Techniques for pre-OS image rewriting to provide cross-architecture support, security introspection, and performance optimization | |
US11106457B1 (en) | Updating firmware runtime components | |
US11550664B2 (en) | Early boot event logging system | |
US9778936B1 (en) | Booting a computing system into a manufacturing mode | |
US20210365559A1 (en) | Seamless system management mode code injection | |
US20200341776A1 (en) | Apparatus for initializing memory using a hardware engine for minimizing boot time | |
WO2023010265A1 (en) | Firmware update technologies | |
US20240160431A1 (en) | Technologies to update firmware and microcode | |
US20210089486A1 (en) | Information processing system and information processing method |