CN112148336A - 计算***固件的安全更新 - Google Patents
计算***固件的安全更新 Download PDFInfo
- Publication number
- CN112148336A CN112148336A CN202010211384.7A CN202010211384A CN112148336A CN 112148336 A CN112148336 A CN 112148336A CN 202010211384 A CN202010211384 A CN 202010211384A CN 112148336 A CN112148336 A CN 112148336A
- Authority
- CN
- China
- Prior art keywords
- controller
- firmware
- firmware module
- module
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- 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
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/082—Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/18—Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
一种***,包括相对于中央处理单元以带外方式操作的控制器,该控制器包括存储器和处理元件,该处理单元通过网络从计算***请求固件模块,并使固件模块被传递到存储控制器以用于安装在存储设备上。
Description
技术领域
本公开总体涉及计算***领域,并且更具体地,涉及更新计算***的固件。
背景技术
计算***可以包括实现计算***的功能的各种类型的固件。作为一个示例,计算***可以存储包括非易失性固件的基本输入/输出***(BIOS)(或类似固件,例如与可扩展固件接口(EFI)或统一EFI(UEFI)兼容的固件),该非易失性固件是在计算机***通电时运行的第一个软件,其在启动过程期间初始化和测试硬件,并为操作***和应用提供运行时服务(尽管在一些计算机***中,在启动完成后不再使用BIOS)。作为另一个示例,计算***可以存储设备固件,例如用于计算***的存储设备、网络控制器、图形处理单元或其他组件设备的固件。作为又一个示例,计算***可以存储微代码,微代码执行硬件级指令,以执行由处理器执行的更高层级指令。
附图说明
图1示出了根据某些实施例的耦合到云服务的计算***。
图2示出了根据某些实施例的带外(OOB)控制器。
图3示出了根据某些实施例的用于更新计算***固件的流程。
图4示出了根据某些实施例的用于更新计算***固件的第二流程。
图5示出了根据某些实施例的用于更新计算***固件的第三流程。
图6示出了根据某些实施例的包括多核处理器的计算***。
图7示出了根据某些实施例的片上***(SoC)。
在各个附图中,相同的参考标号和指示表示相同的元件。
具体实施方式
图1示出了根据某些实施例的耦合到云服务110的计算***100。计算***100包括各种存储设备106(例如,106A-106C),其存储固件,例如BIOS(例如,存储在BIOS分区116A和116B中)、微代码118和设备固件120。计算***100还包括存储控制器104(例如,104A-104C)、网络控制器108、中央处理单元(CPU)114、互连122和***存储器124。计算***100可以经由网络112耦合到云服务110。
传统上,固件更新解决方案取决于使用基于操作***(OS)的BIOS和微代码更新,其中,原始设备制造商(OEM)通过例如Windows更新(WU)或在操作***上运行的其他专有应用来传送更新模块,然后平台固件消费更新模块。该机制已经用在电话行业和个人计算行业。
在一些情形下,攻击或其他事件可能会损坏固件(例如,BIOS或微代码),使得计算***无法启动到操作***。这可能会阻止通过使用操作***获取和应用固件更新的传统方法应用固件补丁。在其他情形下,可能会损害通过操作***的网络连接性,从而阻止下载固件补丁。此外,通过操作***应用固件更新可能会中断正常操作并损害用户体验(例如,通过所需的用户批准和/或重新启动)。
本公开的各种实施例提供带外(OOB)控制器(例如,102),以通过网络(例如,从云服务110的计算***)接收固件模块,并使更新应用于一个或多个存储设备(例如,106A、106B或106C)。在各种实施例中,OOB控制器可以相对于CPU 114以带外方式操作。例如,OOB控制器102可以独立于(例如,不利用)CPU 114和操作***来起作用,使得即使CPU 114下电或计算***100无法启动BIOS和/或操作***,OOB控制器也可以执行其功能。例如,即使现有的BIOS或操作***不可启动,也可以执行固件更新。因此,即使磁盘或BIOS分区被损坏,OOB控制器102也能够将计算***100恢复到可启动状态。
在一些实施例中,固件更新可以由OOB控制器102在用户的隐式确认(不要求用户明确同意特定的固件更新)下执行。此外,由于更新是以带外方式发生的,因此该更新对于用户可能是感觉不到的,使得如果用户正在使用计算***,则固件更新不会中断用户的流程或从用户窃取CPU周期。在一些实施例中,当在OOB控制器102更新BIOS之后下一次启动计算***100时,计算***100可以自动切换到更新的BIOS分区(并且如果该更新被确定为有错误,则可以恢复回到先前的版本),从而提供容错能力。
计算***100可以包括一个或多个存储设备106,用于存储可更新的固件。存储设备106可以存储任何类型的固件。例如,存储设备106A将BIOS代码存储在分区116(例如,116A和116B)中,存储设备106B存储微代码118,而存储设备106C存储设备固件120。任何其他合适类型的固件,例如***固件或可管理性固件,可以由一个或多个存储设备106存储,并经由本文描述的方法更新。
在各种实施例中,存储设备106可以包括非易失性存储器。非易失性存储器是不需要电力来维持由该介质存储的数据的状态的存储介质。非易失性存储器的非限制性示例可以包括以下各项中的任一个或组合:固态存储器(例如,平面或3D NAND Flash存储器或NORFlash存储器);3D交叉点存储器;使用硫族化物相变材料(例如,硫族化物玻璃)的存储器设备;字节可寻址非易失性存储器设备;铁电存储器;硅-氧化物-氮化物-氧化物-硅(SONOS)存储器;聚合物存储器(例如,铁电聚合物存储器);铁电晶体管随机存取存储器(Fe-TRAM)ovonic存储器;纳米线存储器;电可擦除可编程只读存储器(EEPROM);其他各种类型的非易失性随机存取存储器(RAM)和磁存储存储器。
在各种实施例中,存储设备106或存储设备106和存储控制器104的组合可以是串行***接口(SPI)-NOR Flash设备、通用Flash存储(UFS)设备、嵌入式多媒体控制器(eMMC)设备、非易失性存储器Express(NVMe)设备、3D交叉点设备或其他合适的存储设备。
SPI-NOR Flash设备可以使用SPI接口进行通信,该SPI接口根据主从架构,以全双工模式利用同步串行通信。UFS设备可以利用实现全双工串行低压差分信令接口的高速串行接口(例如,由MIPI联盟开发的M-PHY接口)。eMMC设备可以指代包括集成在同一硅管芯上的Flash存储器和Flash存储器控制器二者的封装。NVMe设备可以是符合www.nvmexpress.org/specifications/上可用的规范中的一个或多个的任何合适的设备。在一些实施例中,3D交叉点设备可以包括具有无晶体管的可堆叠交叉点架构的存储,在该架构中,存储器单元位于字线和位线的交点处且是可单独寻址的,并且位存储是基于体电阻的变化。
在一些实施例中,一个或多个存储设备106可以实现重放保护存储块(RPMB)技术。RPMB实现通用协议和框架布局。代替经由标准块层访问RPMB分区,该分区是通过一组命令来访问,包括:WRITE、READ、GET_WRITE_COUNTER,因此适合用作安全存储。在一些实施例中,OOB控制器102可以使用RPMB在一个或多个存储设备106中(或者在关联的存储控制器104处)配给已知密钥,并且在向存储设备106发送固件模块之前,向设备查询密钥。
存储设备106可以经由存储控制器104通信地耦合到计算***100的其他组件。例如,存储控制器104A为存储设备106A提供接口,存储控制器104B为存储设备106B提供接口,存储控制器104C为存储设备106C提供接口。存储控制器104可以在计算***100的互连122与一个或多个存储设备106之间提供接口。
存储控制器104可以包括用于以下操作的逻辑:(例如,从CPU 114或OOB控制器102)接收请求,将请求转换为与关联的存储设备兼容的格式,使存储设备106执行请求,并将与请求关联的数据提供给计算***的其他组件(例如,CPU 114或其他组件)。在各种实施例中,存储控制器104也可以可操作以检测和/或校正在存储器操作期间遇到的错误。
在一些实施例中,存储控制器104可以执行密码功能,包括在将数据发送到存储设备106以存储在其上之前对数据进行加密和/或解密,以及在将从存储设备获取的数据提供给计算***100的另一组件之前对数据进行加密和/或解密。
在特定实施例中,单个存储控制器104可以是为计算机***100的多个不同存储设备106(其可以是相同类型的存储或可以是不同类型)提供接口和管理存储操作的存储控制器(并且因此可以向与之耦合的任何存储设备提供本文描述的存储设备控制器功能)。在这种实施例中,OOB控制器102可以将不同类型的多个存储设备106视为单个存储设备,并且OOB控制器102可以利用相同的命令集向聚合存储控制器发送请求,以在每一个存储设备处执行操作。
在各种实施例中,可以保护存储控制器104与其关联的存储设备106之间的物理链路。例如,可以对从存储控制器104传递到存储设备106的数据进行加密。作为另一示例,可以将数据(无论是否加密)与基于散列的消息认证码(HMAC)或其他合适的数据一起发送,以实现数据完整性和认证验证。
在其他实施例中,传递到存储设备的数据可以由另一组件或***(例如,OOB控制器102或云服务110)加密,然后在存储控制器104处接收,并且存储控制器104:将数据以其加密状态传递到存储设备106;对数据进行解密,然后将数据传递到存储设备106;或者对数据进行解密,接着对数据进行加密,然后将数据发送到存储设备106。在一些实施例中,存储设备106可以对数据进行解密,然后写入存储介质,或者可以将数据以加密状态存储在存储介质中。在各种实施例中,在将数据写入存储设备106的存储介质之前,存储设备106可以认证和/或完整性验证从存储控制器104接收的数据。
在各种实施例中,存储设备106可以包括多个分区。例如,在所描绘的实施例中,存储设备106A包括第一BIOS分区116A和第二BIOS分区116B。在特定实施例中,可以将更新的固件模块写入与存储固件模块的当前版本的第二分区不同的第一分区。在一些实施例中,当执行了更新时,验证该更新(例如,在下次启动或对更新的固件模块的其他访问期间),并且如果确定该更新是可操作的,则将更新的固件模块设定为计算***100所使用的固件的当前版本。更新的固件模块可以由任何合适的组件(例如,存储设备106、存储控制器104或CPU 114的寄存器)以任何合适的方式标记为当前版本。
在一些实施例中,在更新被验证为可操作之后,可以更新一个或多个其他分区,以存储现在被验证了的固件。因此,多个分区可以存储相同版本的固件模块,使得如果一个分区被损坏,则计算***100可以切换到另一分区的使用。在各种实施例中,不同的分区可以以不同的版本保持,以允许固件回滚(rollback)。在各种实施例中,OOB控制器102可以指定固件模块将被写入哪个分区。
可以以任何合适的方式来执行对固件模块是否损坏的确定。在一个实施例中,可以在存储器中加载固件模块,并计算固件模块的散列。可以将该散列与存储在某些其他存储中的散列进行比较。如果散列不匹配,则可以标记备用固件模块并将其用作当前版本。例如,在这种情况下,可以将备用固件模块的地址从某些其他存储写入寄存器中。在另一实施例中,可以发起固件模块的加载并且可以启动计时器。如果固件在计时器到期前可以发出铃声(例如,发送消息),则固件被验证为良好。然而,如果铃声不响,则可以重置计算***,并且可以切换固件。
OOB控制器102可以管理计算***100的固件模块的更新。OOB控制器102可以从云服务110拉出固件模块,或者云服务110可以将固件推送到OOB控制器102。在特定实施例中,一旦OOB控制器102接收到固件(或者以其他方式在计算***100处接收到固件),则控制器使固件安装在合适的存储设备106上(例如,通过将固件或固件位置传递到对应的存储控制器104)。
图2示出了根据某些实施例的OOB控制器102。在所描绘的实施例中,OOB控制器102包括处理元件202、存储器204、固件应用206、网络栈208和存储栈210。
在各种实施例中,OOB控制器102作为带外异步计算代理操作,其能够与计算***100的各种元件接口,而对CPU 114所执行的进程没有干扰或干扰最小。例如,OOB控制器102可以包括专用处理元件202(例如,处理器、微控制器或其他逻辑),其提供OOB控制器102的功能(例如,通过执行存储在存储器204中的软件指令,或者通过经由电路提供其他功能),由此节省了CPU 114的处理周期以用于其他操作。
在各种实施例中,OOB控制器102包括安全启动的固件,其具有针对永久性存储实施的保护和防回滚。例如,存储器204可以包括只读存储器(ROM)或其他安全存储器,其包括由处理元件202执行以至少部分地执行OOB控制器102的功能的指令。在另一示例中,OOB控制器102还可以包括安全机制(例如,熔丝),以提供防重放功能,从而防御拒绝服务(DoS)攻击。
在各个实施例中,除了以带外方式管理固件更新之外,OOB控制器102还可以执行不利用CPU 114的任何合适的功能。在特定实施例中,OOB控制器102可以是聚合安全引擎、可管理性引擎或卸载服务引擎。在各种实施例中,OOB控制器可以实现安全驱动器擦除、远程维护、遥测数据收集和远程连接中的一个或多个。在一个示例中,即使当CPU 114断电或操作***无响应时,OOB控制器102也可以使得对计算***100的控制成为可能。在一些实施例中,OOB控制器102可以通过互连122直接连接到计算***的一个或多个其他组件,例如存储控制器104或网络控制器108。
固件应用206可以提供OOB控制器102的一般固件管理功能,并且可以在其功能执行期间利用网络栈208和存储栈210。
在一个实施例中,当更新的固件模块可用时,OOB控制器102可以从云服务110接收推送通知。在另一实施例中,固件应用206可以周期性地轮询云服务110或其他实体,以确定固件更新是否可用。这种实施例可以特别地适合于其中实现了防火墙、代理、隔离区(demilitarized zone)(DMZ)或网络地址转换的计算环境,因为在这些网络中,来自云服务110的进入连接可能被阻止,但是从OOB控制器102到云服务110的外出连接可以被允许。
固件应用206可以与其他组件(例如,CPU 114或存储控制器104)协调,以确保在更新期间这些组件不访问待更新的固件。在特定实施例中,固件应用206可以托管信号量,其中,每个信号量结合对存储固件模块的特定分区的访问来使用。
固件应用206可以响应于任何合适的事件而确定将一个或多个固件模块下载到计算***100。例如,可以响应于来自云服务110的如下通知而发起下载:计算***100已经具有的更新的固件模块可用。作为另一示例,可以响应于如下通知而发起下载,该通知是响应于用户请求特定固件模块而生成的。作为另一示例,可以响应于如下通知而发起下载:特定固件模块不可操作或损坏(例如,如果BIOS不启动,则可以请求BIOS模块)。
固件应用206可以以任何合适的方式发起一个或多个固件模块的下载。在特定实施例中,固件应用206生成识别固件模块的消息,并将该消息发送到云服务。在一些实施例中,固件应用206可以生成不识别特定固件模块的消息,但是该消息可以指示计算***100准备好接收关于计算***100存储的固件模块更新了的任何固件模块。
在一个实施例中,所请求的固件模块被传送到OOB控制器102,并被缓冲在OOB控制器的存储器(例如,存储器204或其他存储器)中。在一些实施例中,可以将整个固件模块存储在OOB控制器102的存储器中,然后以一个或多个分段发送到相关的存储控制器104。在其他实施例中,OOB控制器的存储器存储所请求的固件模块的一部分,OOB控制器将该部分发送到相关的存储控制器104,然后OOB控制器可以存储所请求的固件模块的与已发送到存储控制器104的部分不同的部分。因此,OOB控制器102的存储器可以缓冲来自云服务110的固件模块的流传输,并且可以将固件模块流传输到存储控制器。这种实施例可以减少OOB控制器102利用的存储器量。在各种实施例中,OOB控制器102可以在将接收到的固件模块提供给存储控制器104之前,对该固件模块(或其分段)执行验证操作(例如,数据完整性和认证)。
在一些实施例中,OOB控制器102可以请求经由远程直接存储器访问(RDMA)过程将固件模块传送到计算***。在各种实施例中,可以利用任何合适的RDMA技术(例如,InfiniBand、互联网广域RDMA协议(iWarp)或聚合以太网上的RDMA(RoCE))将固件模块从云服务110传输到网络控制器108,然后,网络控制器108可以将固件模块发送到***存储器124。在各种实施例中,OOB控制器102可以执行任何合适的RDMA操作,例如在***存储器124中分配用户虚拟存储器(例如,经由malloc命令),向网络控制器108注册虚拟存储器,发起与云服务110的RDMA连接(例如,经由rdma_connect消息),在云服务110发布发送消息时发布接收消息以接收固件模块,在传送固件模块后发送rdma断连消息以断开与云服务110的连接,以及在存储模块104获取到固件模块之后释放***存储器124中的用户虚拟存储器。
在一些实施例中,OOB控制器102可以创建包括发送队列和接收队列的队列对。OOB控制器102可以例如通过使用verbs(动词)应用程序编程接口(API)将操作发布到这些队列。一旦完成verb,网络控制器108就可以通过将完成条目写入与OOB控制器的队列对关联的完成队列,来发出完成信号(尽管在一些实施例中,verbs不生成完成条目,但是使用其他合适的方法检测到完成)。
在检测到已经经由RDMA将固件模块发送到***存储器124后,OOB控制器102可以通过向存储控制器104发送存储控制器104用于获取固件模块的信息,来使固件模块被传递到存储控制器。例如,OOB控制器102可以向存储控制器104发送位置(例如,***存储器124内的物理存储器地址)、固件模块的大小或其他合适的标识信息。
在一些实施例中,OOB控制器102可以使固件模块被网络控制器108直接流传输到存储控制器104。在各种实施例中,OOB控制器102可以在流传输开始之前(例如,通过在发起流传输之前与云服务110交换证书)建立验证机制。OOB控制器102还可以在流传输开始之前向存储控制器104提供证书(例如,安全令牌),以允许存储控制器104进行验证。
在特定实施例中,固件应用206可以通过通知信道与CPU 114通信。例如,这种信道可以利用由OOB控制器102开放的中断或邮箱。在一些实施例中,通知信道是不安全的信道,并且因此不利用加密或完整性保护。通知信道可以用于发送通知,以控制对固件更新期间要写入的分区的访问。通知信道还可以由固件应用206用于通知CPU,固件已更新并且该分区再次可使用。在一些实施例中,通知信道可以被CPU用于向OOB控制器发送触发(例如,响应于启动BIOS失败或与固件模块关联的其他错误,或者响应于来自CPU的对特定固件模块的请求)。
网络栈208可以包括计算机联网协议套件的实现(例如,软件实现)。网络栈208可以实现协议模块的各种层,例如由开放***互连(OSI)模型定义的一个或多个层。在特定实施例中,网络栈208可操作以与云服务110建立安全信道(例如,传输层安全性(TLS)或类似连接),以发起将固件通过网络控制器108传送到计算***100。
存储栈210可以将数据从网络流传输到存储介质内部的合适区域。存储栈可以分割固件模块,合适地格式化分段,并且提供分段以便传输到存储控制器104。在各种实施例中,OOB控制器102利用通用格式,通过互连122传递目的地为不同类型的存储设备106的固件模块(然后各个存储控制器将数据转换为存储设备特定格式)。
在各种实施例中,OOB控制器102可以通过互连122(或其他合适的互连)与网络控制器108和一个或多个存储控制器104直接连接。在各种实施例中,在计算***100的组件之间建立受保护的信道,例如在OOB控制器102与存储控制器104之间,在OOB控制器102与网络控制器108之间,在网络控制器108与***存储器124之间,在***存储器124与存储控制器104之间,在网络控制器108与存储控制器104之间等。受保护的信道可以阻碍SoC内探听攻击。此外,受保护的信道可以阻止远程调试控件,该控件将允许远程调试者在攻击期间作为中间人(MITM)操作。
在一些实施例中,可以根据访问控制(例如,发起方的安全属性(SAI)或主id/从id方案)来建立受保护的信道。在一些实施例中,可以将安全属性分派给发起方(例如,尝试访问目标资源的组件),并用于确定发起方的访问权限(例如,读取、写入、无访问等)。在一些实施例中,采用读取和写入访问策略寄存器实现策略。例如,第一组读取和写入策略寄存器可以促进用于访问耦合到存储器构造的对象(例如,***存储器124)的访问控制。类似地,可以经由第二组读取和写入策略寄存器促进用于访问外部目标(例如,IO设备(例如,存储设备106))的访问控制。另外,控制策略寄存器可以用于确定哪个或哪些实体能够配置读取和写入策略寄存器。
由发起方发起的访问目标资源的事务可以包括安全属性,这些安全属性定义了与发起方关联的针对为目标资源定义的访问策略评估了的访问特权。在各种实施例中,安全属性包括角色、设备模式和***模式中的一个或多个。伴随事务的安全属性可以用作策略寄存器的索引。与源ID不同的是,安全属性信息不会在网桥处变换,而是一直保持到策略实施的点。
如果安全属性指示访问策略准许发起方对目标资源的访问,则该事务可以被允许继续进行。相反,如果发起方没有合适的安全属性(如经由与其访问消息一起转发的其安全属性信息识别的),则该事务将被拒绝,并且可以将对应的消息返回给发起方。
网络控制器108可以用于在计算***100与一个或多个网络112和耦合到网络112的一个或多个计算***(例如,云服务110)之间传递信令和/或数据。网络控制器108可以用于发送和接收网络业务,例如数据分组。在特定实施例中,网络控制器108可以使得能够在计算***100的任何合适的元件(例如,OOB控制器102、CPU 114的核或存储控制器104)与耦合到网络112的另一设备(例如,云服务110的其他计算***的元件,或者通过一个或多个网络耦合到网络112的其他远端节点)之间进行通信。在特定实施例中,网络控制器108可以包括WiFi控制器、以太网控制器、聚合WiFi和以太网控制器,或者其他合适的通信控制器。
网络112可以是任何合适的网络,或者使用一个或多个合适的联网协议操作的一个或多个网络的组合。网络可以代表用于接收和发送通过通信***传播的信息的分组的一系列节点、点和互连的通信路径。例如,网络可以包括一个或多个防火墙、路由器、交换机、安全电器、防病毒服务器或其他有用的网络设备。网络提供源和/或主机之间的通信接口,并且可以包括任何局域网(LAN)、无线局域网(WLAN)、城域网(MAN)、内联网、外联网、互联网、广域网(WAN)、虚拟专用网络(VPN)、蜂窝网络,或者促进网络环境中的通信的任何其他适合的架构或***。网络可以包括通过通信介质彼此耦合(并且通信)的任何数量的硬件元件或软件元件。
***存储器124可以存储CPU 114用于执行计算机***100的功能的数据。例如,与被执行的程序或CPU 114的一个或多个处理核访问的文件关联的数据可以被存储在***存储器124中。因此,***存储器124可以存储CPU 114执行的数据和/或指令序列。***存储器124可以专用于CPU 114,或者与计算机***100的其他组件共享。
***存储器124可以包括易失性或非易失性存储器(例如,本文描述的非易失性存储器或其他合适的非易失性存储器中的任一个)。易失性存储器是一种存储介质,它需要电力来维持该介质存储的数据的状态。易失性存储器的示例可以包括各种类型的随机存取存储器(RAM),例如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。可以在***存储器中使用的一种特定类型的DRAM是同步动态随机存取存储器(SDRAM)。在特定实施例中,***存储器124的DRAM符合联合电子设备工程委员会(JEDEC)颁布的标准,例如用于双倍数据速率(DDR)SDRAM的JESD79F,用于DDR2 SDRAM的JESD79-2F,用于DDR3 SDRAM的JESD79-3F,或用于DDR4 SDRAM的JESD79-4A(这些标准可在www.jedec.org获得)。在一些实施例中,***存储器124包括一个或多个存储器模块,例如双列直插式存储器模块(DIMM)。***存储器124可以包括任何合适类型的存储器,并且在各种实施例中不限于特定的速度或存储器技术。
存储器控制器126包括用于控制去往和来自***存储器124的数据流的逻辑(例如,硬件和/或软件)。存储器控制器126可以包括从***存储器124读取和写入***存储器124,以及对存储在***存储器124中的值刷新(例如,如果这些值存储在易失性存储器中)所需的逻辑。在操作期间,存储器控制器126可以选择***存储器124的一个或多个地址(例如,行和/或列地址)以进行读取或写入。存储器控制器126可以从CPU 114或I/O控制器(例如,网络控制器108)接收写入请求,并且可以将这些请求中指定的数据提供给***存储器124以便存储在其中。存储器控制器126还可以从***存储器124读取数据,并将读取的数据提供给I/O控制器或CPU 114。
云服务110可以包括可操作以存储固件并将固件传递到计算***100的任何合适的计算***或计算***组。在一些实施例中,当固件的更新版本可用时,云服务110可以通知OOB控制器102。在各种实施例中,云服务110可以跟踪安装在计算***100上的固件的版本,并且可以可操作以在一个或多个固件模块的更新版本可用时(或者响应于来自计算***100的请求,或者通过将消息推送到计算***100)通知计算***100。在一些实施例中,云服务110可操作以连接到OOB控制器102、网络控制器108或存储控制器104,以将固件模块流传输到OOB控制器102、网络控制器108或存储控制器104。
可以采取各种预防措施来保护从云服务110发送到计算***100的固件。例如,可以使用存储加密来保护网络控制器108与云服务110之间的虚拟链路。在一些实施例中,在计算***100从云服务110接受固件之前,OOB控制器102和云服务110相互进行认证。在特定实施例中,OOB控制器102的网络栈208与云服务110建立TLS会话,以获取固件。
CPU 114可以包括一个或多个处理核或其他处理元件。CPU 114还可以包括处理核所利用的一个或多个缓存,以及核与缓存之间的互连。
在各种实施例中,CPU 114可以执行也能够更新固件的一个或多个部分的操作***或OOB控制器102能够更新的操作***。例如,操作***可以从云服务110或其他源拉出更新,重启(以允许访问将存储该更新的存储介质),以及更新固件或操作***。因此,在一些实施例中,固件模块可以由CPU 114或OOB控制器102来更新。
CPU 114、OOB控制器102、存储控制器104、网络控制器108和存储器控制器126可以通过一个或多个互连构造或链路(例如,122)互连。在一个实施例中,互连122可以包括环形互连或其他总线,计算***100的各种组件通过该环形互连或其他总线连接。在各种实施例中,互连结构可以利用以下技术,例如***组件互连快速(PCIe)、以太网、OpenCAPITM、Gen-ZTM、超路径互连(UPI)、通用串行总线(USB)、用于加速器的缓存相干互连(CCIXTM)、Advanced Micro DeviceTM(AMDTM)的InfinityTM、通用通信接口(CCI)或QualcommTM的CentriqTM互连等。
在特定实施例中,存储控制器104被实现在与CPU 114、OOB控制器102和存储器控制器126相同的集成电路封装上。在其他实施例中,一个或多个存储控制器104可以位于电路板上,该电路板包括用于包含CPU 114、OOB控制器102和存储器控制器126的集成电路封装的接口。在各种实施例中,存储设备可以位于集成电路封装上,位于耦合到具有CPU的封装(例如,经由电路板)的不同的集成电路封装上,或者位于另一合适的设备中。在各种实施例中,所示的组件中的任何一个或多个可以位于芯片上(即,与CPU 114在同一芯片上)或芯片外。
图3示出了根据某些实施例的用于更新计算***固件的流程300。在302,云服务110通知OOB控制器102,固件更新可用。在特定实施例中,当云服务110被配给有更新的固件时,云服务110可以将该通知推送到OOB控制器102。在另一实施例中,OOB控制器102可以周期性地(直接地或通过另一组件)轮询云服务。OOB控制器可以关于特定固件模块轮询云服务110,或者可以一般性地关于多个固件模块中的任一个是否已被更新或可用来轮询云服务110。在被轮询后,云服务110可以确定是否有任何固件更新可用,并且如果更新可用,则将更新可用通知302发送到OOB控制器102。
在304,OOB控制器102向CPU发送请求,以停止访问待更新的固件。在一些实施例中,OOB控制器102可以在继续进行之前等待来自CPU 114的确认,或者可以在自OOB控制器102发送了请求起经过预定时间段之后恢复流程。
在其他实施例中,OOB控制器102可以发送请求,接着继续该流程,但是可以等待直到从CPU 114接收到固件没有正在被访问的确认,才将固件传送到存储控制器104。在其他实施例中,可以在OOB控制器102开始向存储控制器104传送固件模块前一刻,才将请求发送到CPU 114。
在306,OOB控制器102可以与云服务建立安全信道。在一些实施例中,该建立可以包括交换一个或多个加密密钥,该加密秘钥用于加密固件模块或为从云服务110发送到OOB控制器102的数据提供认证和数据完整性验证能力。在特定实施例中,在306建立TLS会话。
在308,将固件模块从云服务110传送到OOB控制器102。在310,OOB控制器102验证从云服务110接收的数据。在各种实施例中,验证可以包括:确认数据的来源和完整性。一旦数据被验证,在312将它发送到合适的存储控制器104。
在一个实施例中,OOB控制器102可以在将数据发送到存储控制器104之前对固件模块的数据进行解密。在另一实施例中,OOB控制器102可以对固件模块的数据进行解密,接着对数据进行加密,然后传输到存储控制器104(例如,使用与原来用于保护云服务110与OOB控制器102之间的数据的不同的密钥)。在又一实施例中,OOB控制器102可以将加密的数据传递到存储控制器104,而不对数据进行解密。
在一些实施例中,在从OOB控制器102向存储控制器104发送固件模块的任何数据之前,可以在OOB控制器102处接收整个固件模块。在其他实施例中,一旦在OOB控制器102处已经接收到一个或多个分段(例如,分组或数据的其他组成),但在接收到整个固件模块之前,OOB控制器102可以开始向存储控制器104发送固件模块的分段。这种实施例可以减少OOB控制器102所利用的缓冲存储量,并且使固件模块向存储设备106的传输更快。
在314,存储控制器104可以与关联的存储设备106建立安全信道。安全信道可以使得存储控制器104能够对固件模块的数据进行加密或以其他方式保护数据(例如,启用认证和数据完整性验证)。在特定实施例中,数据由HMAC签名。
在316,将固件模块从存储控制器104传送到存储设备106以便存储在其上。在318,数据由存储设备106验证,然后存储。该验证可以包括数据完整性的验证和消息的认证,例如经由与数据一起发送的HMAC或者经由任何其他合适的过程。固件模块可以由存储设备106以加密状态或未加密状态存储。在一些实施例中,固件模块可以存储在与存储固件的先前版本的分区或位置不同的分区或位置上。在其他实施例中,固件模块在存储了固件的先前版本的相同位置处改写固件的先前版本。
一旦固件模块已经被发送到存储设备106(或者在从存储设备接收到固件模块已经被验证或存储的指示之后),在320,存储控制器可以向OOB控制器102发送传送完成的通知。在接收到该通知后,在322,OOB控制器102通知CPU 114,它可以恢复对刚刚更新了的固件的访问。
图4示出了根据某些实施例的用于更新计算***固件的第二流程400。在各种实施例中,流程400中描绘的通信或操作可以具有流程300的类似通信或操作的任何特性,流程400的任何通信或操作可以在流程300中使用,或者流程300的任何通信或操作可以在流程400中使用。
在402,云服务110通知OOB控制器102,固件模块可用。在404,OOB控制器102向CPU114发送请求,以停止对待更新的固件的访问。
在406,OOB控制器102将对固件模块的请求发送到云服务110。在408,经由远程直接存储器访问(RDMA)过程将固件模块传送到***存储器124。在各种实施例中,可以利用任何合适的RDMA技术来将固件模块从云服务110传输到网络控制器108,然后,网络控制器108将固件模块发送到***存储器124。
在410,网络控制器108向OOB控制器102提供传送完成的指示。在特定实施例中,网络控制器108可以将完成条目写入完成队列,以用信号通知传送完成。在另一实施例中,网络控制器108可以通过互连122向OOB控制器102发送带有指示的消息。其他实施例可以包括用于向OOB控制器102通知传送完成的其他机制。
在412,OOB控制器102将固件模块的标识发送到存储控制器104。该标识包括允许存储控制器104从***存储器124获取固件模块的信息。例如,该标识可以包括***存储器124的地址,其标记固件模块的开始和固件模块的大小。
在414,将固件模块从***存储器124传送到存储控制器104。该传送可以响应于基于OOB控制器102发送到存储控制器104的固件标识而从存储控制器104发送到***存储器124的一个或多个读取请求。在各种实施例中,可以在传送固件模块之前,在存储控制器104与***存储器124之间建立安全信道。
在416,存储控制器104可以与关联的存储设备106建立安全信道。安全信道可以使得存储控制器104能够对固件模块的数据进行加密或以其他方式保护数据。在特定实施例中,数据由HMAC签名。在418,将固件从存储控制器104传送到存储设备106以便存储在其上。在420,数据由存储设备106验证,然后存储。
一旦固件模块已经被发送到存储设备106(或者在从存储设备接收到固件模块已经被验证或存储的指示之后),在422,存储控制器可以向OOB控制器102发送传送完成的通知。在接收到该通知后,在424,OOB控制器102通知CPU 114,它可以恢复对刚刚更新了的固件的访问。
图5示出了根据某些实施例的用于更新计算***固件的第三流程500。该流程可以由计算***100的任何合适的实体来执行,例如OOB控制器102。
在502,通过网络(例如,112)从计算***(例如,云服务110的计算***)请求固件模块。在504,使固件模块被传递到存储控制器(例如,104),以用于安装在存储设备(例如,106)上。
图3-图5中描述的流程仅表示在特定实施例中可能发生的操作或通信。在其他实施例中,可以在流程中执行附加的操作或通信。本公开的各种实施例预期用于实现本文描述的功能的任何合适的信令机制。在合适的情况下,图3-图5中所示的一些操作可以被重复、组合、修改或删除。另外,可以在不脱离特定实施例的范围的情况下,以任何合适的顺序执行操作。
图6-图7示出了本公开的各种方面可以操作的示例环境或可以用于执行本文所述的操作的各种组件。例如,CPU 114可以包括处理器600的一个或多个核601或602,或电路的其他合适的组合(在一些情况下,其可以包括具有用于执行本文所述的各种操作的指令的计算机可读介质)。作为另一示例,计算***100(或其一部分)可以由SoC700实现。
图6示出了根据某些实施例的包括多核处理器的计算***。处理器600包括任何处理器或处理设备,例如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、片上***(SOC)或其他执行代码的设备。在一个实施例中,处理器600包括至少两个核——核601和602,其可以包括非对称核或对称核(所示的实施例)。然而,处理器600可以包括任何数量的可以是对称或不对称的处理元件。
在一个实施例中,处理元件指代支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或任何其他能够保存处理器状态(例如,执行状态或架构状态)的元件。换句话说,在一个实施例中,处理元件指代能够独立地与代码(例如,软件线程、操作***、应用或其他代码)关联的任何硬件。物理处理器(或处理器插座)通常指代潜在地包括任何数量的其他处理元件(例如,核或硬件线程)的集成电路。
核通常指代位于集成电路上的能够维持独立架构状态的逻辑,其中,每个独立维持的架构状态与至少一些专用执行资源关联。与核相反,硬件线程通常指代位于集成电路上的能够维持独立架构状态的任何逻辑,其中,独立维持的架构状态共享对执行资源的访问。可以看出,当某些资源被共享而其他资源专用于架构状态时,硬件线程与核的命名之间的界线重叠。不过,操作***将核和硬件线程视为单独的逻辑处理器,其中,操作***能够单独调度每个逻辑处理器上的操作。
如图6所示,物理处理器600包括两个核——核601和602。这里,核601和602被认为是对称核,即具有相同配置、功能单元和/或逻辑的核。在另一实施例中,核601包括乱序处理器核,而核602包括有序处理器核。然而,可以从任何类型的核,例如原生核、软件管理的核、适于执行原生指令集架构(ISA)的核、适于执行转换的ISA的核、共同设计的核或其他已知的核中,单独地选择核601和602。在异构核环境(即,非对称核)中,可以利用一些形式的转换(例如,二进制转换)来在一个或两个核上调度或执行代码。为了进一步讨论,在核601中示出的功能单元在下面进一步详细描述,因为核602中的单元在所示实施例中以类似的方式操作。
如所描绘的,核601包括两个硬件线程601a和601b,它们也可以称为硬件线程槽601a和601b。因此,在一个实施例中,软件实体(例如,操作***)潜在地将处理器600视为四个单独的处理器,即,能够并发执行四个软件线程的四个逻辑处理器或处理元件。如上所述,第一线程与架构状态寄存器601a关联,第二线程与架构状态寄存器601b关联,第三线程可以与架构状态寄存器602a关联,第四线程可以与架构状态寄存器602b关联。这里,如上所述,每一个架构状态寄存器(601a、601b、602a和602b)可以被称为处理元件、线程槽或线程单元。如图所示,架构状态寄存器601a在架构状态寄存器601b中被复制,所以能够为逻辑处理器601a和逻辑处理器601b存储各个架构状态/上下文。在核601中,还可以为线程601a和601b复制其他较小的资源,例如分配器和重命名器块630中的指令指针和重命名逻辑。可以通过分区来共享一些资源,例如重排序/回退单元635中的重排序缓冲区、指令转换缓冲区(ITLB)620、加载/存储缓冲区和队列。其他资源,例如通用内部寄存器、页表基址寄存器、低层级数据缓存和数据TLB 615、执行单元640和无乱单元635的部分,潜在地是完全共享的。在一些实施例中,在核602中可以包括单独的ITLB 621、分配器和重命名器块631、重排序/回退单元636、调度/执行单元641和D-TLB 651。
处理器600常常包括其他资源,这些资源可以是完全共享的,通过分区共享的,或由处理元件专用/专用于处理元件。在图6中,示出了带处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意到,处理器可以包括或省略这些功能单元中的任一个,以及包括任何其他未示出的已知功能单元、逻辑或固件。如图所示,核601包括简化的代表性乱序(OOO)处理器核。但是,在不同的实施例中,可以利用有序处理器。OOO核包括用于预测要执行/采取的分支的分支目标缓冲区620以及用于存储指令的地址转换条目的I-TLB 620。
核601还包括耦合到预取单元620的解码模块625,用于解码预取的元素。在一个实施例中,预取逻辑包括分别与线程槽601a、601b关联的各个时序器。通常,核601与第一ISA关联,其定义/指定在处理器600上可执行的指令。通常,作为第一ISA的一部分的机器代码指令包括指令的用于引用/指定待执行的指令或操作的部分(被称为操作码)。解码逻辑625包括从指令的操作码中识别这些指令,并将解码的指令传递到流水线中,以用于按第一ISA定义的那样处理的电路。例如,如在下面更详细地讨论的,在一个实施例中,解码器625包括被设计成或适于识别特定指令(例如,事务指令)的逻辑。作为解码器625识别的结果,核601的架构采取特定的预定义的动作来执行与合适指令关联的任务。重要的是要注意,本文描述的任何任务、块、操作和方法可以响应于单个或多个指令而执行;其中一些指令可以是新指令或旧指令。注意,在一个实施例中,解码器626识别相同的ISA(或其子集)。替换地,在异构核环境中,解码器626识别第二ISA(第一ISA的子集或不同的ISA)。
在一个示例中,分配器和重命名器块630包括用于保留资源(例如,用于存储指令处理结果的寄存器堆)的分配器。然而,线程601a和601b潜在地能够乱序执行,其中,分配器和重命名器块630还保留其他资源,例如用于跟踪指令结果的重排序缓冲区。单元630还可以包括寄存器重命名器,用于将程序/指令引用寄存器重命名为处理器600内部的其他寄存器。重排序/回退单元635包括以下组件,例如上面提到的重排序缓冲区、加载缓冲区和存储缓冲区,用于支持乱序执行,以及稍候的乱序执行的指令的有序退回。
在一个实施例中,调度器和执行单元块640包括调度器单元,用于在执行单元上调度指令/操作。例如,在具有可用浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元关联的寄存器堆,用于存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其他已知的执行单元。
较低层级数据缓存和数据转换缓冲区(D-TLB)650耦合到执行单元640。数据缓存用于存储最近使用/操作的元素,例如数据操作数,这些元素潜在地以存储器一致性状态保存。D-TLB用于存储最近的虚拟/线性到物理地址的转换。作为特定示例,处理器可以包括页表结构,用于将物理存储器分成多个虚拟页。
这里,核601和602共享对更高层级或更远(further-out)缓存的访问,例如与片上接口610关联的第二级缓存。注意,更高层级或更远指代缓存层级增加或更远离执行单元。在一个实施例中,更高层级缓存是最后一级数据缓存(处理器600上的存储器层级结构中的最后一个缓存),例如第二级或第三级数据缓存。然而,更高层级缓存不受限制,因为它可以与指令缓存关联或包括指令缓存。相反,跟踪缓存(一种类型的指令缓存)可以耦合在解码器625之后,用于存储最近解码的跟踪。这里,指令潜在地指代宏指令(即,由解码器识别的通用指令),其可以被解码为多个微指令(微操作)。
在所描绘的配置中,处理器600还包括片上接口模块610和功率控制模块660。过去,下面将更详细描述的存储器控制器已经包括在计算***中,在处理器600外部。在这种情形下,片上接口610与处理器600外部的设备通信,例如***存储器675、芯片组(通常包括用于连接到存储器675的存储器控制器中枢和用于连接***设备的I/O控制器中枢)、存储器控制器中枢、北桥或其他集成电路。并且在这种情形下,总线605可以包括任何已知的互连,例如多跳总线、点对点互连、串行互连、并行总线、一致(例如,缓存一致)总线、分层协议架构、差分总线和Gunning收发机逻辑(GTL)总线。
存储器675可以专用于处理器600,或者与***中的其他设备共享。存储器675的类型的常见示例包括DRAM、SRAM、非易失性存储器(NV存储器)和其他已知的存储设备。注意,设备680可以包括耦合到存储器控制器中枢的图形加速器、处理器或卡,耦合到I/O控制器中枢的数据存储、无线收发机、Flash设备、音频控制器、网络控制器或其他已知的设备。
然而,近年来,随着更多的逻辑和设备被集成在单个管芯(例如,SOC)上,这些设备中的每个都可以并入处理器600。例如,在一个实施例中,存储器控制器中枢在与处理器600相同的封装和/或管芯上。这里,核的一部分(核上部分)610包括一个或多个控制器,用于与其他设备(例如,存储器675或图形设备680)接口。包括用于与这类设备接口的互连和控制器的配置通常称为核上(或非核)配置。作为示例,片上接口610包括用于片上通信的环形互连和用于片外通信的高速串行点对点链路605。但是,在SOC环境中,可以在单个管芯或集成电路上集成甚至更多的设备,例如网络接口、协处理器、存储器675、图形处理器680和任何其他已知的计算机设备/接口,用于提供具有高功能和低功耗的小形数。
在一个实施例中,处理器600能够执行编译器、优化和/或转换器代码677,用于编译、转换和/或优化应用代码676,以支持本文描述的装置和方法或与其接口。编译器通常包括程序或一组程序,用于将源文本/代码转换为目标文本/代码。通常,使用编译器对程序/应用代码进行编译是分多个阶段和遍(pass)完成的,用于将高级编程语言代码转换为低级机器或汇编语言代码。但是,单遍编译器仍然可以用于简单编译。编译器可以利用任何已知的编译技术,并执行任何已知的编译器操作,例如词法分析、预处理、解析、语义分析、代码生成、代码转换和代码优化。
大型编译器通常包含多个阶段,但是大多数情况下,这些阶段包含在两个通用阶段中:(1)前端,即通常在其中可以进行句法处理、语义处理以及一些转换/优化的地方,以及(2)后端,即通常在其中进行分析、转换、优化和代码生成的地方。一些编译器引用中间语言,其说明了编译器的前端和后端之间的轮廓的模糊。结果,对编译器的***、关联、生成或其他操作的引用可以在前面提到的阶段或遍中的任一个,以及编译器的任何其他已知阶段或遍中进行。作为说明性示例,编译器潜在地在编译的一个或多个阶段中***操作、调用、函数等,例如在编译的前端阶段***调用/操作,然后在转换阶段期间将调用/操作转换为较低级代码。注意,在动态编译期间,编译器代码或动态优化代码可以***这类操作/调用,以及优化代码以便在运行时期间执行。作为特定的说明性示例,可以在运行时期间动态地优化二进制代码(已编译的代码)。这里,程序代码可以包括动态优化代码、二进制代码或它们的组合。
与编译器类似,转换器(例如,二进制转换器)静态或动态地转换代码,以优化和/或转换代码。因此,对代码、应用代码、程序代码或其他软件环境的执行的引用可以指代:(1)动态或静态地执行编译器程序、优化代码优化器或转换器,以编译程序代码,维护软件结构,执行其他操作,优化代码或转换代码;(2)执行包括操作/调用的主程序代码,例如已优化/编译的应用代码;(3)执行与主程序代码关联的其他程序代码,例如库,以维护软件结构,执行其他软件相关的操作或优化代码;或(4)它们的组合。
图7示出了根据某些实施例的SoC 700。在该图中,描绘了根据本公开的片上***(SOC)设计的实施例。作为特定的说明性示例,SOC 700被包括在用户设备(UE)或其他计算***中。在一个实施例中,UE指代终端用户要用于通信的任何设备,例如手持电话、智能电话、平板计算机、超薄笔记本、具有宽带适配器的笔记本或任何其他类似的通信设备。UE通常连接到基站或节点,基站或节点本质上潜在地对应于GSM网络中的移动站(MS)。
这里,SOC 700包括2个核:706和707。核706和707可以符合指令集架构,例如基于CoreTM的处理器、Advanced Micro Devices公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计或其客户,以及它们的被许可方或采用方。核706和707耦合到与总线接口单元709和L2缓存710关联的缓存控制708,以与***700的其他部分通信。互连710包括片上互连,例如IOSF、AMBA或以上讨论的其他互连,其潜在地实现所描述的公开的一个或多个方面。
接口710向其他组件提供通信信道,例如用于与SIM卡接口的订户身份模块(SIM)730、用于保存启动代码以供核706和707执行以初始化和启动SOC 700的启动ROM 735、用于与外部存储器(例如,DRAM 760)接口的SDRAM控制器740、用于与非易失性存储器(例如,Flash 765)接口的Flash控制器745、用于与外设接口的外设控件750(例如,串行外设接口)、用于显示和接收输入(例如,触控输入)的视频编解码器720和视频接口725、用于执行图形相关计算的GPU 715等。这些接口中的任一个可以包括本文所述的公开的各方面。
此外,***示出了用于通信的外设,例如蓝牙模块770、3G调制解调器775、GPS 780和WiFi 785。注意,如上所述,UE包括用于通信的无线电。结果,并不需要所有这些外设通信模块。然而,在UE某种形式中,将包括用于外部通信的无线电。该***还示出了功率控制模块755。
设计可以经历从创建到仿真再到制造的各个阶段。表示设计的数据可以以多种方式表示设计。首先,如在仿真中有用的,可以使用硬件描述语言(HDL)或另一功能描述语言来表示硬件。另外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在一些阶段达到表示硬件模型中各种器件的物理位置的数据的层级。在使用常规的半导体制造技术的情况下,表示硬件模型的数据可以是指明用于生产集成电路的掩模的不同掩模层上的各种特征的存在与否的数据。在一些实现方式中,这种数据可以以数据库文件格式存储,例如图形数据***II(GDS II)、开放作品***交换标准(OASIS)或类似格式。
在一些实现方式中,基于软件的硬件模型以及HDL和其他功能描述语言对象可以包括寄存器传输语言(RTL)文件等。这类对象可以是机器可解析的,使得设计工具可以接受HDL对象(或模型),解析HDL对象以获取所描述硬件的属性,并从该对象确定物理电路和/或片上布局。设计工具的输出可以用于制造物理器件。例如,设计工具可以从HDL对象确定各种硬件和/或固件元件的配置,例如总线宽度、寄存器(包括大小和类型)、存储器块、物理链路路径、结构拓扑,以及为了实现在HDL对象中建模的***而将实现的其他属性。设计工具可以包括用于确定片上***(SoC)和其他硬件设备的拓扑和构造配置的工具。在一些情况下,HDL对象可以用作开发模型和设计文件的基础,制造设备可以使用这些模型和设计文件来制造所描述的硬件。实际上,可以将HDL对象本身提供为制造***软件的输入,以产生所描述的硬件。
在设计的任何表示中,可以以任何形式的机器可读介质存储数据。存储器或磁存储或光存储(例如,磁盘)可以是用于存储经由为了发送这种信息而调制或生成的光波或电波传输的信息的机器可读介质。当传输指示或携带代码或设计的电载波时,如果执行复制、缓冲或重传电信号,则产生新副本。因此,通信提供商或网络提供商可以至少暂时地在有形机器可读介质上存储体现本公开的实施例的技术的物品,例如编码成载波的信息。
一般来说,本文讨论的“服务器”、“客户端”、“计算***”、“平台”、“云服务”和“***”等通常可以包括可操作以接收、发送、处理、存储或管理与自动驾驶环境关联的数据和信息的电子计算设备。如本文所使用的,术语“计算机”、“处理器”、“处理器设备”、“处理元件”或“处理设备”旨在涵盖任何合适的处理装置,包括中央处理单元(CPU)、图形处理单元(GPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、张量处理器和其他矩阵算术处理器等。例如,可以使用多个计算设备和处理器(例如,包括多个服务器计算机的服务器池)来实现在环境内示为单个设备的元件。此外,计算设备中的任何、所有或一些可以适于执行任何操作***,包括Linux、UNIX、Microsoft Windows、Apple OS、Apple iOS、Google Android、Windows Server等,以及适于虚拟化特定操作***(包括定制和专有操作***)的执行的虚拟机。
本文描述或在附图中所示的任何流程、方法、过程(或其部分)或者各种组件中的任一个的功能,可以由任何合适的计算逻辑来执行,例如一个或多个模块、引擎、块、单元、模型、***或其他合适的计算逻辑。本文对“模块”、“引擎”、“块”、“单元”、“模型”、“***”或“逻辑”的引用可以指代执行一个或多个功能的硬件、固件、软件和/或它们的组合。作为示例,模块、引擎、块、单元、模型、***或逻辑可以包括与用于存储适于由微控制器或处理器执行的代码的非瞬时性介质关联的一个或多个硬件组件,例如微控制器或处理器。因此,在一个实施例中,对模块、引擎、块、单元、模型、***或逻辑的引用可以指代专门配置成识别和/或执行要保存在非瞬时性介质上的代码的硬件。此外,在另一实施例中,模块、引擎、块、单元、模型、***或逻辑的使用指代包括代码的非瞬时性介质,代码特别适于由微控制器或处理器执行以执行预定操作。并且如可以推断的,在又一实施例中,模块、引擎、块、单元、模型、***或逻辑可以指代硬件和非瞬时性介质的组合。在各种实施例中,模块、引擎、块、单元、模型、***或逻辑可以包括可操作以执行软件指令的微处理器或其他处理元件、分立逻辑(例如,专用集成电路(ASIC))、可编程逻辑器件(例如,现场可编程门阵列(FPGA))、包含指令的存储设备、逻辑设备的组合(例如,将在印刷电路板上找到的),或其他合适的硬件和/或软件。模块、引擎、块、单元、模型、***或逻辑可以包括一个或多个门或其他电路组件,它们可以由例如晶体管来实现。在一些实施例中,模块、引擎、块、单元、模型、***或逻辑可以完全体现为软件。软件可以体现为记录在非瞬时性计算机可读存储介质上的软件包、代码、指令、指令集和/或数据。固件可以体现为硬编码(例如,非易失性)在存储器设备中的代码、指令或指令集和/或数据。此外,被示为分开的逻辑边界通常变化并且潜在地重叠。例如,第一模块和第二模块(或多个引擎、块、单元、模型、***或逻辑)可以共享硬件、软件、固件或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。
可以经由存储在可由处理元件执行的机器可访问介质、机器可读介质、计算机可访问介质或计算机可读介质上的指令或代码来实现上述方法、硬件、软件、固件或代码集的实施例。机器可访问/可读介质包括以机器(例如,计算机或电子***)可读的形式提供(即,存储和/或传输)信息的任何机构。例如,非瞬时性机器可访问介质包括随机存取存储器(RAM)(例如,静态RAM(SRAM)或动态RAM(DRAM));ROM;磁或光存储介质;Flash存储器设备;电存储设备;光学存储设备;声存储设备;用于保存从瞬态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等,这些将与可以从中接收信息的非瞬时性介质区分开。
用于对逻辑进行编程以执行本公开的实施例的指令可以存储在***中的存储器内,例如DRAM、缓存、Flash存储器或其他存储。此外,这些指令可以经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机构,但不限于软盘、光盘、压缩盘只读存储器(CD-ROM)以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、Flash存储器,或者用于经由电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)通过互联网传输信息的有形机器可读存储。因此,计算机可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的有形机器可读介质。
在整个说明书中,对“一个实施例”或“实施例”的引用表示,结合该实施例描述的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,在整个说明书中各处出现的短语“在一个实施例中”或“在实施例中”不一定都指代同一实施例。此外,在一个或多个实施例中,可以以任何合适的方式组合特定的特征、结构或特性。
在前述说明书中,已经参考特定示例性实施例给出了具体实施方式。然而,将显而易见的是,在不脱离如所附权利要求书中阐述的本公开的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。因此,说明书和附图应被认为是说明性的而不是限制性的。此外,实施例和其他示例性语言的前述使用不一定指代相同的实施例或相同的示例,而是可以指代不同的实施例以及潜在地指代相同的实施例。
尽管本文描述和示出的***和解决方案中的一些已被描述为包含多个元件或与多个元件关联,但是在本公开的每个替换实现方式中可以并非使用明确示出或描述的所有元件。另外,本文描述的一个或多个元件可以位于***外部,而在其他情况下,某些元件可以包括在其他描述的元件以及所示的实现方式中未描述的其他元件中的一个或多个内或作为其一部分。此外,某些元件可以与其他组件组合,并且除了本文所述的那些目的之外还用于替换或附加的目的。
以下示例属于根据本说明书的实施例。示例1是一种***,包括相对于中央处理单元以带外方式操作的控制器,该控制器包括:存储器;和处理元件,用于:通过网络从计算***请求固件模块;以及使固件模块被传递到存储控制器以用于安装在存储设备上。
示例2可以包括示例1的主题,其中,使固件模块被传递到存储控制器以用于安装在存储设备上包括:将固件模块缓冲在存储器中,以及将固件模块从存储器发送到存储控制器。
示例3可以包括示例1-2中任一项所述的主题,其中,使固件模块被传递到存储控制器以用于安装在存储设备上包括:请求经由远程直接存储器访问(RDMA)将固件模块传送到耦合到中央处理单元的***存储器中;以及将固件模块在***存储器中的位置传递到存储控制器。
示例4可以包括示例1-3中任一项所述的主题,其中,控制器的处理元件用于:周期性地通过网络轮询计算***,以查询固件更新是否可用;从计算***接收固件更新可用的指示;以及响应于指示,从计算***请求固件模块。
示例5可以包括示例1-3中任一项所述的主题,其中,控制器的处理元件用于:响应于触发,通过网络从计算***请求固件模块。
示例6可以包括示例5所述的主题,其中,触发包括确定***的基本输入/输出***(BIOS)模块不可启动,并且其中,固件模块是用于替换不可启动的BIOS模块的BIOS模块。
示例7可以包括示例1-6中任一项所述的主题,其中,存储控制器用于:将固件模块存储在存储设备的第一分区上,第一分区与存储固件模块的先前版本的第二分区分开。
示例8可以包括示例1-7中任一项所述的主题,其中,控制器的处理元件用于:在使固件模块被传递到存储控制器以用于安装在存储设备上之前,命令中央处理单元停止对固件模块的先前版本的访问。
示例9可以包括示例1-8中任一项所述的主题,还包括中央处理单元和存储控制器。
示例10可以包括示例9所述的主题,还包括存储设备或与网络接口的网络控制器。
示例11是一种方法,包括:由相对于中央处理单元以带外方式操作的控制器通过网络从计算***请求固件模块;以及使固件模块被传递到存储控制器以用于安装在存储设备上。
示例12可以包括示例11所述的主题,其中,使固件模块被传递到存储控制器以用于安装在存储设备上包括:将固件模块缓冲在存储器中,并将固件模块从存储器发送到存储控制器。
示例13可以包括示例11-12中任一项所述的主题,其中,使固件模块被传递到存储控制器以用于安装在存储设备上包括:请求经由远程直接存储器访问(RDMA)将固件模块传送到耦合到中央处理单元的***存储器中;以及将固件模块在***存储器中的位置传递到存储控制器。
示例14可以包括示例11-13中任一项所述的主题,还包括:由控制器通过网络周期性地轮询计算***,以查询固件更新是否可用;从计算***接收固件更新可用的指示;以及响应于该指示,从计算***请求固件模块。
示例15可以包括示例11-13中任一项所述的主题,还包括:响应于触发,由控制器通过网络从计算***请求固件模块。
示例16可以包括示例15所述的主题,其中,触发包括确定基本输入/输出***(BIOS)模块不可启动,并且其中,固件模块是用于替换不可启动的BIOS模块的BIOS模块。
示例17可以包括示例11-16中任一项所述的主题,还包括:由存储控制器将固件模块存储在存储设备的第一分区上,该第一分区与存储固件模块的先前版本的第二分区分开。
示例18可以包括示例11-17中任一项所述的主题,还包括:在使固件模块被传递到存储控制器以用于安装在存储设备上之前,命令中央处理单元停止对固件模块的先前版本的访问。
示例19可以包括示例11-18中任一项所述的主题,其中,控制器耦合到中央处理单元和存储控制器。
示例20可以包括示例19所述的主题,其中,控制器耦合到与网络接口的网络控制器。
示例21是至少一种非瞬时性机器可读存储介质,其上存储有指令,指令在由机器执行时,使机器由相对于中央处理单元以带外方式操作的控制器通过网络从计算***请求固件模块;以及使固件模块被传递到存储控制器以用于安装在存储设备上。
示例22可以包括示例21所述的主题,其中,使固件模块被传递到存储控制器以用于安装在存储设备上包括:将固件模块缓冲在存储器中,以及将固件模块从存储器发送到存储控制器。
示例23可以包括示例21-22中任一项所述的主题,其中,使固件模块被传递到存储控制器以用于安装在存储设备上包括:请求经由远程直接存储器访问(RDMA)将固件模块传送到耦合到中央处理单元的***存储器中;以及将固件模块在***存储器中的位置传递到存储控制器。
示例24可以包括示例21-23中任一项所述的主题,该指令在由机器执行时使机器:周期性地通过网络轮询计算***,以查询固件更新是否可用;从计算***接收固件更新可用的指示;以及响应于该指示,从计算***请求固件模块。
示例25可以包括示例21-23中任一项所述的主题,该指令在由机器执行时使机器:响应于触发,通过网络从计算***请求固件模块。
示例26可以包括示例25所述的主题,其中,触发包括确定基本输入/输出***(BIOS)模块不可启动,并且其中,固件模块是用于替换不可启动的BIOS模块的BIOS模块。
示例27可以包括示例21-26中任一项所述的主题,该指令在由机器执行时使机器:将固件模块存储在存储设备的第一分区上,该第一分区与存储固件模块的先前版本的第二分区分开。
示例28可以包括示例21-27中任一项所述的主题,该指令在由机器执行时使机器:在使固件模块被传递到存储控制器以用于安装在存储设备上之前,命令中央处理单元停止对固件模块的先前版本的访问。
示例29可以包括示例21-28中任一项所述的主题,该指令在由机器执行时使机器:与中央处理单元和存储控制器进行通信。
示例30可以包括示例29所述的主题,该指令在由机器执行时使机器:与网络控制器通信以与网络接口。
应当理解,以上给出的示例是仅出于说明某些原理和特征的目的而提供的非限制性示例,并且不必限制或约束本文所述的概念的潜在实施例。例如,可以利用本文描述的特征和组件的各种组合来实现各种不同的实施例,包括通过本文描述的组件的各种实现方式所实现的组合。其他实现方式、特征和细节应当从本说明书的内容中理解。
Claims (22)
1.一种***,包括:
相对于中央处理单元以带外方式操作的控制器,所述控制器包括:
存储器;和
处理元件,用于:
通过网络从计算***请求固件模块;以及
使所述固件模块被传递到存储控制器,以用于安装在存储设备上。
2.根据权利要求1所述的***,其中,使所述固件模块被传递到所述存储控制器以用于安装在所述存储设备上包括:
将所述固件模块缓冲在所述存储器中,并将所述固件模块从所述存储器发送到所述存储控制器。
3.根据权利要求1-2中任一项所述的***,其中,使所述固件模块被传递到所述存储控制器以用于安装在所述存储设备上包括:
请求经由远程直接存储器访问(RDMA)将所述固件模块传送到耦合到所述中央处理单元的***存储器中;以及
将所述固件模块在所述***存储器中的位置传递到所述存储控制器。
4.根据权利要求1-3中任一项所述的***,其中,所述控制器的处理元件用于:
周期性地通过所述网络轮询所述计算***,以查询固件更新是否可用;
从所述计算***接收固件更新可用的指示;以及
响应于所述指示,从所述计算***请求所述固件模块。
5.根据权利要求1-3中任一项所述的***,其中,所述控制器的处理元件用于:
响应于触发,通过所述网络从所述计算***请求所述固件模块。
6.根据权利要求5所述的***,其中,所述触发包括确定所述***的基本输入/输出***(BIOS)模块不可启动,
并且其中,所述固件模块是用于替换不可启动的BIOS模块的BIOS模块。
7.根据权利要求1-6中任一项所述的***,所述存储控制器用于:
将所述固件模块存储在所述存储设备的第一分区上,所述第一分区与存储所述固件模块的先前版本的第二分区分开。
8.根据权利要求1-7中任一项所述的***,其中,所述控制器的处理元件用于:
在使所述固件模块被传递到所述存储控制器以用于安装在所述存储设备上之前,命令所述中央处理单元停止对所述固件模块的先前版本的访问。
9.根据权利要求1-8中任一项所述的***,还包括所述中央处理单元和所述存储控制器。
10.根据权利要求9所述的***,还包括所述存储设备或与所述网络接口的网络控制器。
11.一种方法,包括:
由相对于中央处理单元以带外方式操作的控制器通过网络从计算***请求固件模块;以及
使所述固件模块被传递到存储控制器以用于安装在存储设备上。
12.根据权利要求11所述的方法,其中,使所述固件模块被传递到所述存储控制器以用于安装在所述存储设备上包括:
将所述固件模块缓冲在存储器中,并将所述固件模块从所述存储器发送到所述存储控制器。
13.根据权利要求11-12中任一项所述的方法,其中,使所述固件模块被传递到所述存储控制器以用于安装在所述存储设备上包括:
请求经由远程直接存储器访问(RDMA)将所述固件模块传送给到耦合到所述中央处理单元的***存储器中;以及
将所述固件模块在所述***存储器中的位置传递到所述存储控制器。
14.根据权利要求11-13中任一项所述的方法,还包括:
由所述控制器周期性地通过所述网络轮询所述计算***,以查询固件更新是否可用;
从所述计算***接收固件更新可用的指示;以及
响应于所述指示,从所述计算***请求所述固件模块。
15.根据权利要求11-13中任一项所述的方法,还包括:
响应于触发,由所述控制器通过所述网络从所述计算***请求所述固件模块。
16.根据权利要求15所述的方法,其中,所述触发包括确定所述***的基本输入/输出***(BIOS)模块不可启动,
并且其中,所述固件模块是用于替换不可以启动的BIOS模块的BIOS模块。
17.根据权利要求11-16中任一项所述的方法,还包括:
由所述存储控制器将所述固件模块存储在所述存储设备的第一分区上,所述第一分区与存储所述固件模块的先前版本的第二分区分开。
18.根据权利要求11-17中任一项所述的方法,还包括:
在使所述固件模块被传递到所述存储控制器以用于安装在所述存储设备上之前,命令所述中央处理单元停止对所述固件模块的先前版本的访问。
19.根据权利要求11-18中任一项所述的方法,其中,所述控制器耦合到中央处理单元和所述存储控制器。
20.根据权利要求19所述的方法,其中,所述控制器耦合到与所述网络接口的网络控制器。
21.一种***,包括用于执行根据权利要求11-20中任一项所述的方法的模块。
22.根据权利要求21所述的***,其中,所述模块包括机器可读代码,所述机器可读代码在被执行时,使机器执行权利要求11-20中任一项所述的方法的一个或多个步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/457,324 US20190325139A1 (en) | 2019-06-28 | 2019-06-28 | Secure updating of computing system firmware |
US16/457,324 | 2019-06-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112148336A true CN112148336A (zh) | 2020-12-29 |
Family
ID=68237805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010211384.7A Pending CN112148336A (zh) | 2019-06-28 | 2020-03-24 | 计算***固件的安全更新 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190325139A1 (zh) |
EP (1) | EP3758326B1 (zh) |
CN (1) | CN112148336A (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200089939A (ko) * | 2019-01-18 | 2020-07-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그 동작 방법 |
CN115398389A (zh) * | 2020-05-11 | 2022-11-25 | 英特尔公司 | Os管理的bios模块 |
US11977638B2 (en) * | 2022-06-29 | 2024-05-07 | Ampere Computing Llc | Low-impact firmware update |
US20240070328A1 (en) * | 2022-08-25 | 2024-02-29 | Dell Products L.P. | System and method for hardware management through operation update |
CN116775085B (zh) * | 2023-08-17 | 2023-11-14 | 北京芯驰半导体科技有限公司 | 多核异构片上***更新方法、装置、芯片及交通设备 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6532500B1 (en) * | 2000-01-24 | 2003-03-11 | Dell Products L.P. | System and method to support out-band storage subsystem management via SCSI bus when operating power to a computer system is off |
US6675258B1 (en) * | 2000-06-30 | 2004-01-06 | Lsi Logic Corporation | Methods and apparatus for seamless firmware update and propagation in a dual raid controller system |
US20050044363A1 (en) * | 2003-08-21 | 2005-02-24 | Zimmer Vincent J. | Trusted remote firmware interface |
US7552217B2 (en) * | 2004-04-07 | 2009-06-23 | Intel Corporation | System and method for Automatic firmware image recovery for server management operational code |
US7809836B2 (en) * | 2004-04-07 | 2010-10-05 | Intel Corporation | System and method for automating bios firmware image recovery using a non-host processor and platform policy to select a donor system |
US7484084B1 (en) * | 2005-12-20 | 2009-01-27 | Netapp, Inc. | Use of a baseboard management controller to facilitate installation of firmware in a processing system |
US20070300051A1 (en) * | 2006-06-26 | 2007-12-27 | Rothman Michael A | Out of band asset management |
JP4940967B2 (ja) * | 2007-01-30 | 2012-05-30 | 富士通株式会社 | ストレージシステム、ストレージ装置、ファームウェアの活***換方法、ファームウェアの活***換プログラム |
US8924952B1 (en) * | 2012-06-27 | 2014-12-30 | Amazon Technologies, Inc. | Updating software utilizing multiple partitions |
GB2507596B (en) * | 2012-10-30 | 2014-09-17 | Barclays Bank Plc | Secure computing device and method |
US9497142B2 (en) * | 2012-11-30 | 2016-11-15 | T-Mobile Usa, Inc. | Triggering actions on a computing device |
KR20140099757A (ko) * | 2013-02-04 | 2014-08-13 | 삼성전자주식회사 | 전자장치 및 전자장치의 펌웨어 업그레이드 방법 |
US9240924B2 (en) * | 2013-09-13 | 2016-01-19 | American Megatrends, Inc. | Out-of band replicating bios setting data across computers |
US9448808B2 (en) * | 2013-11-26 | 2016-09-20 | American Megatrends, Inc. | BIOS update with service processor without serial peripheral interface (SPI) access |
KR20150074414A (ko) * | 2013-12-24 | 2015-07-02 | 현대자동차주식회사 | 펌웨어 업그레이드 방법 및 그 시스템 |
KR102139546B1 (ko) * | 2014-03-11 | 2020-07-30 | 삼성전자주식회사 | 펌웨어 검증 기능을 갖는 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법 |
WO2016076880A1 (en) * | 2014-11-14 | 2016-05-19 | Hewlett Packard Enterprise Development Lp | Secure update of firmware and software |
US10182304B2 (en) * | 2015-06-18 | 2019-01-15 | Gainspan Corporation | Updating firmware of IOT devices |
US10061596B2 (en) * | 2015-07-10 | 2018-08-28 | Dell Products L.P. | Systems and methods for loading firmware modules |
US9875093B2 (en) * | 2015-09-14 | 2018-01-23 | Quanta Computer Inc. | Rack server device firmware update using network switch |
US10223094B2 (en) * | 2016-09-30 | 2019-03-05 | Intel Corporation | Initializing a system on a chip |
US10146527B2 (en) * | 2016-10-12 | 2018-12-04 | Samsung Electronics Co., Ltd. | Method and apparatus for using BMC as proxy for NVME over fabrics device firmware upgrade |
US10331434B2 (en) * | 2016-12-21 | 2019-06-25 | Quanta Computer Inc. | System and method for remotely updating firmware |
US10936299B2 (en) * | 2017-04-28 | 2021-03-02 | Dell Products, L.P. | Automated intra-system persistent memory updates |
US10552613B2 (en) * | 2017-09-26 | 2020-02-04 | Intel Corporation | Secure firmware devices and methods |
US11144297B2 (en) * | 2018-01-22 | 2021-10-12 | Apple Inc. | Secure delivery of assets to a trusted device |
US11099831B2 (en) * | 2018-02-08 | 2021-08-24 | Micron Technology, Inc. | Firmware update in a storage backed memory system |
US11194588B2 (en) * | 2018-07-09 | 2021-12-07 | Dell Products L.P. | Information handling systems and method to provide secure shared memory access at OS runtime |
US10802717B2 (en) * | 2018-08-20 | 2020-10-13 | Dell Products L.P. | Systems and methods for efficient firmware inventory of storage devices in an information handling system |
US10922413B2 (en) * | 2018-09-27 | 2021-02-16 | Intel Corporation | Methods and apparatus to apply a firmware update to a host processor |
US11288124B2 (en) * | 2019-03-30 | 2022-03-29 | Intel Corporation | Methods and apparatus for in-field mitigation of firmware failures |
US11216269B2 (en) * | 2020-01-09 | 2022-01-04 | Dell Products L.P. | Systems and methods for update of storage resource firmware |
-
2019
- 2019-06-28 US US16/457,324 patent/US20190325139A1/en not_active Abandoned
-
2020
- 2020-03-17 EP EP20163540.6A patent/EP3758326B1/en active Active
- 2020-03-24 CN CN202010211384.7A patent/CN112148336A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3758326A1 (en) | 2020-12-30 |
EP3758326B1 (en) | 2022-02-23 |
US20190325139A1 (en) | 2019-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11416397B2 (en) | Global persistent flush | |
US20200257518A1 (en) | Device firmware update techniques | |
EP3758326B1 (en) | Secure updating of computing system firmware | |
KR101615908B1 (ko) | 고성능 인터커넥트 물리 계층 | |
JP6225154B2 (ja) | 共有メモリリンクの低電力エントリ | |
TWI610174B (zh) | 計算裝置及計算系統 | |
US10877806B2 (en) | Method and apparatus for securely binding a first processor to a second processor | |
CN107003971B (zh) | 用于高性能互连中的嵌入式流通道的方法、装置、*** | |
US10162770B2 (en) | Virtual machine migration in rack scale systems | |
WO2017030822A1 (en) | Platform migration of secure enclaves | |
US9858412B2 (en) | Secure trusted execution environment data store | |
US9311177B2 (en) | Mechanism to support reliability, availability, and serviceability (RAS) flows in a peer monitor | |
US20150006962A1 (en) | Memory dump without error containment loss | |
BR102014006218A2 (pt) | método, aparelho e sistema para a melhora dos tempos de retomada das portas raiz e dos pontos de extremidade integrados às portas raiz | |
US20210357202A1 (en) | Firmware updating | |
Nider et al. | The last cpu | |
US20220279057A1 (en) | Reliable transport protocol translation technologies | |
TW201432461A (zh) | 在受控代碼中實現的高流通量低延遲使用者模式驅動程式 | |
US20230089863A1 (en) | Executable passing using mailbox registers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |