一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

固件更新技术的制作方法

2022-06-25 07:27:44 来源:中国专利 TAG:

固件更新技术


背景技术:

1.计算设备利用固件进行硬件初始化、低级硬件管理并管理引导过程。除了平台固件之外,计算设备还可以包括用于控制器芯片、外围设备或其他组件的专用固件。固件典型地在运行时并结合引导被读取,但也可以结合专门的固件更新过程进行更新。
2.可以针对各种中央处理单元(cpu)固件引擎部署运行时固件补丁,以修复故障(错误)、引入较新的能力或恢复到先前的固件版本。虽然固件补丁中的一些要求系统重置,但一些补丁可以在运行时执行,而不导致cpu以及cpu的平台连同cpu的组件(例如,网络接口、存储器、存储装置、其他外围设备)的重置。
3.一种递送运行时cpu固件补丁的方式是通过对msr 0x79指令执行写入模型特定寄存器(wrmsr)。对于advanced micro devices公司(amd),可以将cpu固件补丁递送到msr 0xc0010020。当该指令正在操作时,系统隐含地处于暂停模式(stalled mode)。os控制将哪些固件映像部署到cpu。这种补丁递送机制会干扰操作系统(os)工作负载的正常运行时间。随着片上系统(soc)内的cpu固件和多个小管芯(dielet)、小芯片或集群的量的不断增加,使用这种方法可能引入不可接受的长的系统暂停时间。在数据中心中的多个系统接收固件补丁的情况下,固件补丁所花费的时间长度可能非常长。从客户的角度来看,该暂停时间被视为停机时间。从客户的角度来看,使os暂停运行可能会导致超时或服务质量(qos)问题。
4.如果os不可信,则控制将哪些固件映像部署到cpu的os可能是安全威胁。在裸机操作环境中,客户(csp)选择要运行的os,但os可能会选择运行错误的固件,并且客户的客户(租户)可能会受到这种错误固件选择的影响。
附图说明
5.图1描绘了示例系统。
6.图2a和图2b描绘了示例系统。
7.图3描绘了示例过程。
8.图4描绘了系统。
9.图5描绘了示例环境。
具体实施方式
10.各种实施例提供平台信任根(prot),该prot确定设备应该或不应该在运行时期间或在重新引导时运行哪个固件。各种实施例试图通过对设备固件进行修补(例如,更新、添加、改变或覆写)来减少固件更新期间的暂停时间。例如,固件补丁可以包括固件更新、配置表改变(例如,用于接收到的事务的规则)、访问控制列表(acl)更新或其他。各种实施例通过将固件映像写入暂存缓冲器(例如,闪速存储器区域或内部存储器)来提供具有固件映像的平台信任根(prot)更新固件。prot可以执行固件映像的特定于供应商的认证。设备的安全控制器(例如,cpu、gpu、网络接口、加速器、xpu)可以从暂存缓冲器获取固件映像、认证固件映像,并且如果固件映像被认证,则将固件映像递送到用于接收固件补丁的任何设备。在
一些示例中,可以通知os将一个或多个核心或设备的状态改变为较低功率状态(例如,c状态、cx状态、p状态、g1、g2、px状态、睡眠、深度睡眠),以允许基于微码或主机代理的修补。
11.各种实施例提供在运行时或重新引导时到设备的补丁部署,这些设备被供应商认证、批准并由prot测量。在各种实施例中,测量可以包括密码测量,例如,由一个或多个控制器对一个或多个映像(例如,固件)的散列。各种实施例提供补丁获取、验证、反回滚、认证、解密、解压缩和递送到目的地设备,这在针对从暂存缓冲器安装固件的请求之前发生。在一些示例中,os执行导致写入特定寄存器的命令,该命令导致设备从暂存缓冲器加载固件,并且该设备可以在运行时期间或在重新引导时执行加载的固件。在一些示例中,特定寄存器不是0x79或0xc0010020,而是不同的寄存器。
12.在一些示例中,固件安装可以在一段时间内暂停os的操作以从暂存缓冲器安装固件,而不是在以下各项操作中的一个或多个操作期间也暂停os的操作:补丁获取、验证、反回滚、认证、解密、解压缩和递送到目的地设备。切换到更新后的固件映像的目的地设备可以或可以不由os或设备中的其他组件管理,因为目的地设备(例如,固件加载程序)可以基于当前正在运行的服务,在适当的时间在暂存缓冲器处接受固件补丁。各种实施例可以应用于将固件回滚到先前版本。
13.图1描绘了示例系统。中央处理单元(cpu)102可以包括核心104-0至104-n。核心可以是能够执行指令的执行核心或计算引擎。核心可以访问其自己的高速缓存和只读存储器(rom),或者多个核心可以共享高速缓存或rom。核心可以是同构和/或异构设备。可以使用任何类型的处理器间通信技术,例如但不限于消息传递、处理器间中断(ipi)、处理器间通信等。核心可以以任何类型的方式连接,例如但不限于总线、环形或网格。核心可以支持一个或多个指令集(例如,x86指令集(具有已经随着较新版本被添加的一些扩展);mips technologies(加利福尼亚州,森尼韦尔市)的mips指令集;arm holdings(加利福尼亚州,森尼韦尔市)的arm指令集(具有可选的附加扩展,例如,neon)),包括本文描述的(多个)指令。除了或替代使用cpu,还可以使用xpu或xpu。xpu可以包括以下各项中的一个或多个:图形处理单元(gpu)、通用gpu(gpgpu)、现场可编程门阵列(fpga)、加速处理单元(apu)、加速器或其他处理器。
14.在一些实施例中,微控制器或处理器执行的os(未示出)可以执行命令以写入特定处理器或寄存器116中的核心寄存器,这使得引导控制器114从暂存缓冲器加载固件,并且设备可以在运行时期间执行加载的固件。在一些示例中,特定寄存器不是0x79或0xc0010020,而是不同的寄存器。在一些示例中,固件安装可以在一段时间内暂停os的操作以从暂存缓冲器安装固件,而不是在以下各项操作中的一个或多个操作期间也暂停os的操作:补丁获取、验证、反回滚、认证、解密、解压缩和递送到目的地设备。
15.cpu 102可以使引导控制器114从存储装置120访问固件码122,并将固件码110复制到存储器106。引导固件码或固件可以具有头文件,该头文件识别要由cpu 102复制什么引导码的映射。例如,固件码的.h文件可以具有要复制固件码的哪些段的闪存映像布局映射。当由处理器执行固件码时,处理器可以执行固件码以在引导过程(例如,上电启动)期间执行硬件初始化,并且为操作系统和程序提供运行时服务。
16.在一些实施例中,引导固件码或固件可以是以下各项中的一个或多个:基本输入/输出系统(bios)、通用可扩展固件接口(uefi)或引导加载程序。bios固件可以预先安装在
个人计算机的系统板上,或可以通过spi接口从引导存储装置(例如,闪速存储器)访问。在一些示例中,固件码可以存储在设备上,并且可以由一个或多个核心或cpu使用接口(例如,串行外围设备接口(spi)、增强型spi(espi)、系统管理总线(smbus)、i2c、或其他接口(例如,pcie或cxl))从设备访问。固件可以初始化并测试系统硬件组件,并从初始化并执行操作系统的存储器设备加载引导加载程序。在一些示例中,os可以是服务器或个人计算机、vmware vsphere、opensuse、rhel、centos、debian、ubuntu或任何其他操作系统。os和驱动程序可以在由texas以及其他公司销售或设计的cpu上执行。
17.在一些示例中,通用可扩展固件接口(uefi)可以替代bios或除了bios之外用于引导或重启核心或处理器。uefi是定义在操作系统与平台固件之间的软件接口的规范。uefi不仅可以通过从磁盘或存储装置引导,而且可以从特定磁盘或存储装置上特定位置中的特定引导加载程序引导,来从磁盘分区中读取条目。即使没有安装操作系统,uefi也可以支持远程诊断和修复计算机。可以针对uefi编写引导加载程序,并且引导加载程序可以是引导码固件可以执行的指令,并且引导加载程序用于引导(多个)操作系统。uefi引导加载程序可以是能够从uefi类型的固件读取的引导加载程序。
18.uefi封装是一种封装用于固件码更新的二进制映像的行业标准方式。但是在一些实施例中,uefi封装用于更新固件码的运行时组件。uefi封装可以包括具有可重定位的便携式可执行(pe)文件格式的可更新二进制映像,其用于基于coff(通用对象文件格式)的可执行文件或动态链接库(dll)文件。例如,uefi封装可以包括可执行(*.exe)文件。该uefi封装可以经由现有的os特定的技术(例如,用于azure的windows更新或用于linux的lvfs)作为smm映像部署到目标平台。
19.引导控制器114可以是能够管理固件码加载和存储到存储器106中的任何类型的控制器(例如,微控制器)。在一些示例中,引导控制器114可以使用以下协议中的一个或多个耦合到存储装置120:串行外围设备接口(spi)、增强型spi(espi)、pcie或其他接口。在一些示例中,存储装置120可以使用结构或网络连接到引导控制器114并且使用分组进行发送。如本文所描述的,固件码122在分发到cpu 102和潜在的其他设备之前可能已经由平台信任根认证。根据一些实施例,os或其他设备可以从暂存缓冲器(例如,存储器106)执行固件安装,而不是在以下各项操作中的一个或多个操作期间也暂停os的操作:补丁获取、验证、反回滚、认证、解密、解压缩和递送到目的地设备。
20.任何计算平台中的任何设备的固件或其他软件更新可以发生,并且设备可以包括以下各项中的一个或多个:网络接口控制器、xpu、基础设施处理单元(ipu)、板管理控制器(bmc)、cpu、cpu插座、存储控制器、存储器控制器、显示引擎、图形处理单元(gpu)、加速器设备或任何外围设备。使用pcie或cxl连接到平台的任何设备可以发生固件或其他软件更新。参见例如快速外围组件互连(pcie)基本规范1.0(2002),以及其较早版本、之后的版本及变型。参见例如快速计算链路(cxl)规范修订2.0、版本0.7(2019)以及其较早版本、之后的版本及变型。
21.在一些示例中,引导控制器114可以是限制固件的加载和执行的设备的一部分,该固件是利用平台密钥签名的。在一些示例中,引导控制器114可以包括以下各项中的任一
个:管理或可管理性引擎(me)、平台安全处理器(psp)、具有trustzone扩展的核心或限制对存储器或存储装置的区域的读取或写入的其他安全隔区(secure enclave)。安全隔区或信任域可以是存储器的区域或处理器或两者,除了指定和受限进程、虚拟机或容器之外的进程无法对其进行访问。
22.可以使用提供安全隔区来存储和访问固件或固件更新的多种方式,包括虚拟化、物理分区、信任域、安全隔区、sgx、tdx、amd存储器加密技术、amd安全存储器加密(sme)和安全加密虚拟化(sev)、apple secure enclave处理器或可信执行环境。加密或解密可以使用例如从intel公司商业可用的全存储器加密(tme)和多密钥全存储器加密(mktme)(如在日期为2017年12月17日的intel架构存储器加密技术规范版本1.1及之后的版本中所描述的)、组成tme和mktme的组件、tme和mktme操作的方式等。tme可以提供一种通过存储器接口加密数据的方案,由此存储器控制器对流出到存储器的数据进行加密或对从存储器流入的数据进行解密,并提供明文供处理器内部使用。
23.在一些示例中,tme是一种利用密钥对设备的整个存储器或存储器的一部分进行加密的技术。当经由基本i/o系统(bios)(或通用可扩展固件接口(uefi)或引导加载程序)配置启用tme时,tme可以为由外部存储器总线上的处理器访问的存储器提供加密。tme可以支持各种加密算法,并且在一个实施例中,tme可以使用针对存储装置的国家标准和技术协会(nist)加密标准,例如,具有128位密钥的高级加密系统(aes)xts算法。用于存储器加密的加密密钥是使用处理器中的强化随机数生成器生成的,并且永远不会暴露给软件。存储器中和外部存储器总线上的数据可以被加密,并且在处理器电路系统内部时以明文形式存在。这允许现有软件未经修改地运行,同时使用tme保护存储器。在某些场景中,不对存储器的一部分进行加密可能是有利的,因此tme允许bios(或uefi或引导加载程序)指定存储器的物理地址范围保持不被加密。在支持tme的系统上运行的软件具有对存储器中的被配置为不由tme加密的所有部分的完整的可见性。这可以通过读取处理器中的配置寄存器来实现。
24.在一些实施例中,tme可以支持多个加密密钥(multi-key tme(mktme)),并提供指定使用用于存储器的页的特定密钥的能力。这种架构允许处理器生成的密钥或租户提供的密钥,从而为客户提供完整的灵活性。vm和容器可以利用单独的加密密钥在存储器中彼此密码地隔离,这可以在多租户云环境中使用。vm和容器也可以被池化以共享单独的密钥,从而进一步扩展规模和灵活性。
25.示例隔区/信任域可以是可信执行环境(tee),该tee是提供安全特征(例如,隔离执行(保密性)、与tee一起执行的应用(和客体操作系统)的完整性以及其资产的保密性)的隔离执行环境。tee通过提供称为“隔区/信任域”的专门执行环境,来帮助防御针对栈的底层(包括主机操作系统、主机管理程序、设备、驱动程序和固件)的攻击。
26.示例隔区可以包括属于同一“可信”域的实体的逻辑集合,在实体之间具有安全通信。在吊舱(pod)内可以有多个隔区。隔区可以跨越多个吊舱。隔区可以包括一个或多个共享存储器域。隔区内的实体可以包含非共享的存储器区域。在隔区之间可能存在信任关系。隔区可以将存储器的部分暴露给其他隔区。
27.在一些示例中,任何处理器可以作为应用或作为虚拟执行环境的一部分来执行分组处理过程。分组处理过程可以执行对接收到的分组的处理,例如,以下各项操作中的一个或多个:确定分组是否有效(例如,正确的以太网类型、正确的校验和、正确的ip协议类型、有效的层4-7协议类型)、确定分组目的地(例如,下一跳、目的地队列)、匹配动作活动,或者分组处理过程可以执行以下各项中的一个或多个:ip过滤器检查、流表查找、访问控制列表(acl)、防火墙、匹配动作操作、使用转发表传出端口选择、分组解密、分组加密、拒绝服务器保护、分组计数、计费、业务管理/调节、业务整形/业务调度、分组标记/重新标记、层4-7的分组检查或业务负载平衡/负载分发。例如,分组处理过程可以执行数据平面开发套件(dpdk)或opendataplane(odp)兼容的分组处理。
28.分组可以包括报头和有效载荷。报头可以是介质访问控制(mac)源和目的地地址、以太网类型、互联网协议(ip)源和目的地地址、ip协议、传输控制协议(tcp)端口号、虚拟局域网(vlan)或多协议标签交换(mpls)标记。
29.分组处理过程可以使用网络功能虚拟化(nfv)、软件定义网络(sdn)、经虚拟化的网络功能(vnf)、演进分组核心(epc)或5g网络切片来执行分组处理。nfv的一些示例实现方式在欧洲电信标准协会(etsi)规范或开源nfv管理和编排(mano)(其来自etsi的开源mano(osm)组)中进行了描述。vnf可以包括在通用可配置硬件(例如,防火墙、域名系统(dns)、高速缓存或网络地址转换(nat))上执行并且可以在虚拟执行环境中运行的服务链或经虚拟化的任务序列。vnf可以链接在一起作为服务链。在一些示例中,epc是至少针对长期演进(lte)访问的3gpp指定的核心架构。5g网络切片可以在同一物理网络基础设施上提供对经虚拟化的且独立的逻辑网络的复用。
30.cpu或ipu的各种示例可以执行由微服务组成的应用,其中每个微服务在其自己的进程中运行并且使用协议(例如,http资源api、消息服务或grpc)进行通信。可以使用对微服务的集中式管理来独立部署这些服务。管理系统可以用不同的编程语言编写并使用不同的数据存储技术。微服务可以由以下各项中的一个或多个进行表征:使用细粒度接口(用于可独立部署的服务)、多语言编程(例如,用多种语言编写代码以捕获单个语言无法提供的附加功能和效率)、或轻量级容器或虚拟机部署、以及非集中式的持续微服务递送。
31.任何处理器可以执行经虚拟化的执行环境。经虚拟化的执行环境可以至少包括虚拟机或容器。虚拟机(vm)可以是运行操作系统和一个或多个应用的软件。vm可以由规范、配置文件、虚拟磁盘文件、非易失性随机存取存储器(nvram)设置文件和日志文件定义,并由主机计算平台的物理资源支持。vm可以是安装在软件上的os或应用环境,该vm模仿专用硬件。最终用户在虚拟机上的体验与他们在专用硬件上的体验相同。被称为管理程序的专用软件完全模拟pc客户端或服务器的cpu、存储器、硬盘、网络和其他硬件资源,从而使虚拟机能够共享资源。管理程序可以模拟彼此隔离的多个虚拟硬件平台,从而允许虚拟机在同一底层物理主机上运行和服务器操作系统。
32.容器可以是应用、配置和依赖关系的软件封装,因此应用在一个计算环境到另一计算环境上可靠地运行。容器可以共享安装在服务器平台上的操作系统并作为隔离的进程运行。容器可以是软件封装,其包含软件所需要的一切以运行例如系统工具、库和设置。容器没有像传统的软件程序那样被安装,这允许容器与其他软件和操作系统本身隔离。隔离可以包括特定容器而不是另一容器对可寻址存储器或存储装置的区域的许可访问。容器的
隔离特性提供了若干好处。首先,容器中的软件将在不同的环境中相同地运行。例如,包括php和mysql的容器可以在linux计算机和机器两者上相同地运行。第二,容器提供了附加的安全性,因为软件不会影响主机操作系统。虽然安装的应用可能更改系统设置并修改资源(例如,注册表),但容器可以仅修改容器内的设置。
33.图2a描绘了示例系统。在一些示例中,处理器202利用固件更新引擎204和设备信任根(drot)206来管理固件更新。在一些示例中,处理器202可以包括cpu或xpu。在一些示例中,drot 206可以与开放计算项目基金会(ocp)有源组件rot(ac rot)一致。
34.关于处理器202描述的用于更新固件的示例可以应用于设备240-0至240-n中的任一个,其中n是整数。本文描述了设备的各种示例,但不限于此。在一些示例中,处理器202可以通过接口连接到管理控制器(mc)220,并通过接口连接到平台信任根(prot)210。可以使用任何类型的接口,例如,i2c、i3c、espi、spi、smbus或其他接口。mc 220也可以通过以太网控制器使用网络连接到其他设备。
35.在一些示例中,mc 220可以包括基板管理控制器(bmc)。bmc可以代表数据中心管理员执行任务,例如,重启服务器、监视硬件故障、监视设备温度、监视冷却风扇速度、监视功率状态、监视操作系统(os)状态等。bmc可以监视传感器,并且可以向系统管理员发送关于任何参数异常(例如,参数不在预设限制内)的警报。
36.更新处理器202的固件的一些示例可以包括以下各项。在(1)处,可以在mc 220处从网络接收固件补丁。网络接口(未描绘)可以接收一个或多个分组,并且将在一个或多个分组中接收到的固件补丁提供给mc 220。在(2)处,mc 220可以将补丁写入闪速存储器230中。在(3)处,prot210可以通过执行网络和源验证来验证补丁。例如,可以对补丁执行散列以确定散列是否生成预期的值。验证可以包括确定与补丁相关联的证书或计算是否与预期的证书或值匹配。证书可以与x.509或其他标准(例如,简单产品密钥基础设施(spki)或良好隐私(pgp))兼容。x.509证书可以包括使用x.509公钥基础设施(pki)标准来验证公钥是否属于用户的数字证书。然而,如果认证失败(未示出),则可以拒绝补丁,并且向管理员发出警报以采取行动,并识别访问固件或更新用于认证的证书的潜在的恶意行为。验证可以包括使用密钥来解密补丁。例如,可以在各方具有用于建立共享秘密的椭圆曲线公钥-私钥对的情况下使用椭圆曲线diffie-hellman(ecdh)密钥协商协议。可以使用其他方案,例如,三重数据加密标准(3des)、高级加密标准(aes)、数字签名算法(dsa)、rivest-shamir-adleman(rsa)算法、椭圆曲线数字签名算法(ecdsa)或其他方案。可以检查监视列表或拒绝列表以查看固件更新是否对应于非许可的固件更新。
37.在(4)处,prot 210可以命令或请求drot 206从存储器230复制补丁。在(5)处,drot 206可以从存储器230(例如,闪速存储器)获取补丁并认证补丁。可以由drot 206应用与由prot 210执行的技术类似的技术来验证补丁。在一些示例中,drot 206使用与prot 210所使用的密钥不同的密钥来验证补丁。在一些示例中,由drot 206应用的密钥可以由设备的所有者提供。对于有效且经认证的补丁,drot 206可以导致将补丁分发到以下各项中的任一个:缓冲器208或者设备240-0至240-n中的一个或多个。在一些示例中,prot 210可以将经验证的补丁分发到设备240-0至240-n中的任一个,并且设备240-0至240-n中的任一个可以使用drot来验证补丁。然而,如果认证失败(未示出),则补丁可以由设备的特定drot拒绝,并且可以向管理员通知补丁失败。
38.在(6)处,drot 206可以向固件更新引擎204通知固件更新。在一些示例中,固件更新引擎204可以包括以下各项中的任一个:管理或可管理性引擎(me)、平台安全处理器(psp)、具有trustzone扩展的核心或限制对存储器或存储装置的区域的读取或写入的其他安全隔区。在(7)处,固件更新引擎204可以通知os存在可用的固件更新。在(8)处,os可以执行指令以使一个或多个核心读取补丁被存放在其中的缓冲器208,或者使一个或多个核心应用补丁。一个或多个核心可以是os在其上执行的核心或其他核心。例如,指令可以包括写入寄存器命令(例如,wrmsr 7f),该写入寄存器命令可以使核心将固件从缓冲器208(例如,本地sram)复制到寄存器7f,尽管可以使用其他寄存器。在一些示例中,缓冲器208可以由一个或多个核心串行或并行访问。此后,处理器202或设备240-0至240-n中的任一个可以在引导、重新引导时或在运行时期间执行更新后的固件。
39.指令的示例可以执行固件分发并且使设备应用分发的固件。指令可以在已经完成向设备分发固件补丁之后,使一个或多个设备安装固件更新,并通知设备应用来自缓冲器的更新后的固件。在设备安装了固件更新之后,os可以恢复操作。在一些示例中,指令不会导致固件分发并等待固件安装,而是导致从缓冲器执行固件。
40.在一些示例中,缓冲器208被实现为乒乓缓冲器(ping pong buffer),由此即使在第二固件被加载到缓冲器208之后也可以存储第一固件。例如,乒乓缓冲器可以包括第二缓冲器以存储近期添加的固件,同时保留先前存储和执行的固件。在(9)处,固件更新引擎204可以导致使用一个或多个核心来利用近期添加的第二固件而不是先前执行的固件。
41.注意,在一些示例中,设备240-0至240-n中的一个或多个可以执行(1)-(9)的过程中的任一个。
42.图2b描绘了示例系统。在该示例中,prot 210可以向设备240-0至240-n中的一个或多个中的任一个分发经验证的固件更新或补丁。注意,设备240-0至240-n中的一个或多个可以执行(5)-(9)的过程中的任一个。
43.图3描绘了示例过程。该过程可以在管理控制器、prot和cpu(或设备)已经建立了彼此的相互认证之后执行。可以通过使用本文描述的指令针对要接收固件更新的任何设备执行该过程。在302处,可以通过带外接口或可信的管理控制器驱动程序利用固件映像更新平台存储器。可以将该映像复制到专用于无缝固件的单个闪速存储器或冗余闪存内的区域。在一些示例中,闪速存储器可以集成到管理控制器中与管理控制器在同一管芯上。固件更新可以通过espi或网络(例如,以太网)发生。管理控制器可以向prot指示已经发生了闪存更新。
44.在304处,prot可以对被递送且更新的闪存映像执行认证。本文描述了各种认证和验证技术。在306处,prot可以测量设备映像并存储散列。在各种实施例中,测量可以包括密码测量,例如,由一个或多个控制器对一个或多个映像(例如,固件)的散列。在308处,prot或管理控制器可以向一个或多个设备的信任根指示从平台闪速存储器获取固件映像。
45.在310处,设备信任根(drot)可以从平台获取经验证的映像。在312处,drot可以执行反回滚检查以防止设备降级到其软件的较旧版本,该较旧版本例如由于安全问题尚未受到许可。在314处,drot可以认证并解密映像。本文描述了映像认证和解密的各种示例。如果310-314成功,则在316处,drot可以将补丁部署到要修补或更新的固件引擎。在318处,被修补的固件引擎可以切换到执行近期接收到的固件映像并向drot确认补丁完成。固件引擎还
可以向任何从属设备指示读取其能力向量以识别功能升级或降级。在320处,drot可以指示主机或其他设备,来通知固件更新已经发生。例如,固件更新可以是向上修订。drot可以通过发出中断来指示已经发生固件更新。这可以触发流,其中升级后的映像的安全版本号(svn)、修订id(revid)等、特定的能力向量被读取,这些信息可以用作运行其他流的信息。
46.图4描绘了系统。系统400可以使用各种实施例来更新或访问另一固件码。系统400包括处理器410,该处理器410为系统400提供处理、操作管理和指令的执行。处理器410可以包括任何类型的微处理器、中央处理单元(cpu)、图形处理单元(gpu)、加速处理单元(apu)、处理核心或其他处理硬件或处理器的组合,以为系统400提供处理。处理器410控制系统400的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(dsp)、可编程控制器、专用集成电路(asic)、可编程逻辑器件(pld)等,或者这些设备的组合。
47.在一个示例中,系统400包括耦合到处理器410的接口412,该接口412可以表示针对需要更高的带宽连接的系统组件(例如,存储器子系统420或图形接口440或加速器442)的更高速度接口或高吞吐量接口。接口412表示接口电路,该接口电路可以是独立组件或者集成到处理器管芯上。在存在图形接口440的情况下,该图形接口440与图形组件接合,以将视觉显示提供到系统400的用户。在一个示例中,图形接口440可以驱动向用户提供输出的高清晰度(hd)显示器。高清晰度可以指代具有大约100ppi(每英寸像素)或更大的像素密度的显示器,并且可以包括诸如全hd(例如,1080p)、视网膜显示、4k(超高清晰度或uhd)或其他格式之类的格式。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口440基于在存储器430中存储的数据或基于由处理器410执行的操作或两者来生成显示。在一个示例中,图形接口440基于在存储器430中存储的数据或基于由处理器410执行的操作或两者来生成显示。
48.加速器442可以是可以由处理器410访问或使用的可编程或固定功能卸载引擎。例如,加速器442中的加速器可以以本文所描述的方式提供顺序和推测解码操作、压缩(dc)能力、诸如公钥加密(pke)之类的密码服务、密码、散列/认证能力、解密或其他能力或服务。在一些实施例中,另外地或可替代地,加速器442中的加速器提供如本文所描述的现场选择控制器能力。在一些情况下,加速器442可以被集成到cpu插座(例如,到包括cpu并提供与cpu的电气接口的主板或电路板的连接器)中。例如,加速器442可以包括单核心或多核心处理器、图形处理单元、逻辑执行单元、单级或多级高速缓存、可用于独立执行程序或线程的功能单元、专用集成电路(asic)、神经网络处理器(nnp)、可编程控制逻辑以及诸如现场可编程门阵列(fpga)之类的可编程处理元件。加速器442可以提供多个神经网络、cpu、处理器核心、通用图形处理单元,或者可以使图形处理单元可供人工智能(ai)或机器学习(ml)模型使用。例如,ai模型可以使用或包括以下各项中的任一个或其组合:强化学习方案、q-学习方案、深度-q学习、或异步优势actor-critic(a3c)、组合神经网络、递归组合神经网络或其他ai或ml模型。可以使多个神经网络、处理器核心或图形处理单元可供ai或ml模型使用。
49.存储器子系统420表示系统400的主存储器,并且为要由处理器410执行的代码或要在执行例程中使用的数据值提供存储。存储器子系统420可以包括一个或多个存储器设备430,例如,只读存储器(rom)、闪速存储器、随机存取存储器(ram)的一种或多种变型(例如,dram),或其他存储器设备,或这些设备的组合。存储器430存储并托管操作系统(os)432
以及其他事物,以提供用于执行系统400中的指令的软件平台。另外地,应用434可以从存储器430在os 432的软件平台上执行。应用434表示具有其自己的操作逻辑以执行对一个或多个功能的执行的程序。进程436表示向os 432或一个或多个应用434或其组合提供辅助功能的代理或例程。os 432、应用434和进程436提供软件逻辑以提供用于系统400的功能。在一个示例中,存储器子系统420包括存储器控制器422,该存储器控制器422是用于生成命令并将命令发出到存储器430的存储器控制器。将理解的是,存储器控制器422可以是处理器410的物理部分或接口412的物理部分。例如,存储器控制器422可以是集成到具有处理器410的电路上的集成存储器控制器。
50.尽管没有具体示出,但是将理解的是,系统400可以包括设备之间的一条或多条总线或一个或多个总线系统,例如,存储器总线、图形总线、接口总线或其他总线。总线或其他信号线可以将组件通信地或电气地耦合在一起,或者将组件通信地且电气地耦合。总线可以包括物理通信线路、点对点连接、桥、适配器、控制器或其他电路系统或其组合。总线可以包括例如系统总线、外围组件互连(pci)总线、超传输或行业标准架构(isa)总线、小型计算机系统接口(scsi)总线、通用串行总线(usb)或电气和电子工程师协会(ieee)标准1394总线(火线)中的一个或多个。
51.在一个示例中,系统400包括接口414,该接口414可以耦合到接口412。在一个示例中,接口414表示接口电路,该接口电路可以包括独立组件和集成电路系统。在一个示例中,多个用户接口组件或外围组件或两者耦合到接口414。网络接口450向系统400提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口450可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、usb(通用串行总线)、或其他基于有线标准或无线标准的接口或专有接口。网络接口450可以将数据发送到位于相同数据中心或机架中的设备或远程设备,这可以包括发送存储在存储器中的数据。网络接口450可以从远程设备接收数据,这可以包括将接收到的数据存储在存储器中。可以结合网络接口450、处理器410和存储器子系统420使用各种实施例。
52.在一个示例中,系统400包括一个或多个输入/输出(i/o)接口460。i/o接口460可以包括用户通过其与系统400交互(例如,音频、字母数字、触觉/触摸或其他接合)的一个或多个接口组件。外围接口470可以包括上面未具体提到的任何硬件接口。外围设备通常指代依赖地连接到系统400的设备。依赖连接是其中系统400提供在其上执行操作并且用户与其进行交互的软件平台或硬件平台或两者的一种连接。
53.在一个示例中,系统400包括用于以非易失性方式存储数据的存储子系统480。在一个示例中,在某些系统实现方式中,存储装置480的至少某些组件可以与存储器子系统420的组件重叠。存储子系统480包括(多个)存储设备484,这些存储设备484可以是或包括用于以非易失性方式存储大量数据的任何常规介质,例如,一个或多个基于磁性、固态或光学的盘或其组合。存储装置484以持久状态保存代码或指令以及数据486(即,尽管到系统400的电力中断,但值仍被保留)。存储装置484通常可以被认为是“存储器”,但是存储器430典型地是用于向处理器410提供指令的执行或操作存储器。尽管存储装置484是非易失性的,但是存储器430可以包括易失性存储器(即,如果到系统400的电力被中断,则数据的值或状态是不确定的)。在一个示例中,存储子系统480包括用于与存储装置484接合的控制器482。在一个示例中,控制器482是接口414或处理器410的物理部分,或者可以包括处理器
410和接口414两者中的电路或逻辑。
54.易失性存储器是一种这样的存储器:如果到设备的电力被中断,则其状态(以及因此存储在其中的数据)是不确定的。动态易失性存储器可以涉及刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括dram(动态随机存取存储器)或诸如同步dram(sdram)之类的一些变型。如本文所描述的存储器子系统可以与多种存储器技术兼容,例如,ddr3(双倍数据速率版本3,由jedec(联合电子器件工程委员会)于2007年6月27日最初发布)、ddr4(ddr版本4,由jedec于2012年9月公布的初始规范)、ddr4e(ddr版本4)、lpddr3(低功率ddr版本3)、jesd209-3b(由jedec于2013年8月发布)、lpddr4(lpddr版本4)、jesd209-4(由jedec于2014年8月最初公布)、wio2(宽输入/输出版本2)、jesd229-2(由jedec于2014年8月最初公布)、hbm(高带宽存储器)、jesd325(由jedec于2013年10月最初公布)、lpddr5(目前由jedec正在讨论)、hbm2(hbm版本2,目前由jedec正在讨论),或其他存储器技术或这些存储器技术的组合,以及基于这样的规范的派生物或扩展的技术。
55.非易失性存储器(nvm)设备是一种这样的存储器:即使到设备的电力被中断,其状态也是确定的。在一些实施例中,nvm设备可以包括块可寻址存储器设备,例如,nand技术,或者更具体地,多阈值级nand闪速存储器(例如,单级单元(“slc”)、多级单元(“mlc”)、四级单元(“qlc”)、三级单元(“tlc”)或某种其他nand)。nvm设备还可以包括字节可寻址的就地写入三维交叉点存储器设备,或其他字节可寻址的就地写入nvm设备(也被称为持久性存储器),例如,单级或多级相变存储器(pcm)或具有开关的相变存储器(pcms)、使用硫族相变材料(例如,硫族玻璃)的nvm设备、电阻式存储器(包括金属氧化物基、氧空位基和导电桥随机存取存储器(cb-ram))、纳米线存储器、铁电随机存取存储器(feram、fram)、结合忆阻器技术的磁阻随机存取存储器(mram)、自旋移矩(stt)-mram、基于自旋电子磁结存储器的设备、基于磁性隧道结(mtj)的设备、基于dw(畴壁)和sot(自旋轨道转移)的设备、基于晶闸管的存储器设备或上述存储器中的任何存储器的组合或其他存储器。
56.电源(未描绘)向系统400的组件提供电力。更具体地,电源典型地与系统400中的一个或多个电源供应接合,以向系统400的组件提供电力。
57.在一个示例中,电源供应包括用于插入壁式插座的ac到dc(交流电到直流电)适配器。这样的ac电力可以是可再生能源(例如,太阳能)电源。在一个示例中,电源包括dc电源,例如,外部ac到dc转换器。在一个示例中,电源或电源供应包括无线充电硬件,以经由与充电场的接近度来充电。在一个示例中,电源可以包括内部电池、交流电供应、基于运动的电源供应、太阳能电源供应或燃料电池源。
58.在示例中,系统400可以使用处理器、存储器、存储装置、网络接口和其他组件的互连计算托架来实现。可以使用高速互连,例如:以太网(ieee802.3)、远程直接存储器访问(rdma)、infiniband、互联网广域rdma协议(iwarp)、快速udp互联网连接(quic)、融合以太网上的rdma(roce)、快速外围组件互连(pcie)、intel快速路径互连(qpi)、intel超路径互连(upi)、intel片上系统结构(iosf)、omnipath、快速计算链路(cxl)、超传输、高速结构、nvlink、高级微控制器总线架构(amba)互连、opencapi、gen-z、用于加速器的高速缓存一致互连(ccix)、3gpp长期演进(lte)(4g)、3gpp 5g及其变型。可以使用诸如结构上的nvme(nvme-of)或nvme的协议将数据复制或存储到经虚拟化的存储节点。
59.本文的实施例可以在各种类型的计算和联网装备(例如,交换机、路由器、机架和
刀片式服务器(例如,在数据中心和/或服务器场环境中所采用的那些))中实现。数据中心和服务器场中使用的服务器包括阵列式服务器配置,例如,基于机架的服务器或刀片式服务器。这些服务器经由各种网络配置进行通信互连,例如,将多组服务器划分为局域网(lan),该lan具有lan之间的适当的交换和路由设施,以形成私有的内联网。例如,云托管设施可以典型地采用具有大量服务器的大型数据中心。刀片包括单独的计算平台,该平台被配置为执行服务器类型的功能,即,“卡上服务器”。因此,刀片包括常规的服务器所共有的组件,包括提供用于耦合适当的集成电路(ic)和安装到板上的其他组件的内部布线(即,总线)的主印刷电路板(主板)。
60.各种实施例可以在支持使用有线或无线协议(例如,3gpp长期演进(lte)(4g)或3gpp 5g)的通信的基站、本地数据中心、异地数据中心、边缘网络元件、边缘服务器和交换机、雾网络元件和/或混合数据中心(例如,使用虚拟化、云和软件定义网络来跨物理数据中心和分布式多云环境递送应用工作负载的数据中心)中使用。
61.本文的实施例可以在各种类型的计算和联网装备(例如,交换机、路由器、机架和刀片式服务器(例如,在数据中心和/或服务器场环境中所采用的那些))中实现。数据中心和服务器场中使用的服务器包括阵列式服务器配置,例如,基于机架的服务器或刀片式服务器。这些服务器经由各种网络配置进行通信互连,例如,将多组服务器划分为局域网(lan),该lan具有lan之间的适当的交换和路由设施,以形成私有的内联网。例如,云托管设施可以典型地采用具有大量服务器的大型数据中心。刀片包括单独的计算平台,该平台被配置为执行服务器类型的功能,即,“卡上服务器”。因此,每个刀片包括常规的服务器所共有的组件,包括提供用于耦合适当的集成电路(ic)和安装到板上的其他组件的内部布线(即,总线)的主印刷电路板(主板)。
62.图5描绘了环境500,该环境500包括多个计算机架502,一个或多个机架包括机架顶部(tor)交换机504、吊舱管理器506和多个池化系统抽屉。各种实施例可以用于接收并验证固件码。通常,池化系统抽屉可以包括池化计算抽屉和池化存储抽屉。可选地,池化系统抽屉还可以包括池化存储器抽屉和池化输入/输出(i/o)抽屉。在所示的实施例中,池化系统抽屉包括池化计算抽屉508和atom
tm
池化计算抽屉510、池化存储抽屉512、池化存储器抽屉514和池化i/o抽屉516。池化系统抽屉中的任一个经由高速链路518(例如,40千兆位/秒(gb/s)或100gb/s以太网链路或100 gb/s硅光子(siph)光学链路或更高速度的链路)连接到tor交换机504。
63.多个计算机架502可以经由其tor交换机504互连(例如,互连到吊舱级交换机或数据中心交换机),如由到网络520的连接所示的。在一些实施例中,经由(多个)吊舱管理器506将计算机架502的组作为单独的吊舱进行管理。在一些实施例中,单个吊舱管理器用于管理吊舱中的所有机架。可替代地,分布式吊舱管理器可以用于吊舱管理操作。
64.环境500还包括用于管理环境的各个方面的管理接口522。该管理接口522包括管理机架配置,其中对应的参数被存储为机架配置数据524。
65.在一些示例中,本文描述的网络接口和其他实施例可以与基站(例如,3g、4g、5g等)、宏基站(例如,5g网络)、微微站(picostation,例如,ieee 802.11兼容的接入点)、毫微站(nanostation,例如,用于点对多点(ptmp)应用)结合使用。
66.各种示例可以使用硬件元件、软件元件或者两者的组合来实现。在一些示例中,硬
件元件可以包括设备、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、asic、pld、dsp、fpga、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片集等等。在一些示例中,软件元件可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、api、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。确定示例是否是使用硬件元件和/或软件元件实现的可以根据任何数量的因素(例如,期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和根据给定的实现方式的期望的其他设计或者性能约束)而变化。处理器可以是硬件状态机、数字控制逻辑、中央处理单元或任何硬件、固件和/或软件元件的一个或多个组合。
67.一些示例可以使用制品或者至少一种计算机可读介质来实现或被实现为制品或者至少一种计算机可读介质。计算机可读介质可以包括用于存储逻辑的非暂时性存储介质。在一些示例中,非暂时性存储介质可以包括能够存储电子数据的一种或者多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写入或可重写存储器等等。在一些示例中,逻辑可以包括各种软件元件,例如,软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、api、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。
68.根据一些示例,计算机可读介质可以包括用于存储或者维持指令的非暂时性存储介质,该指令在由机器、计算设备或者系统执行时使得该机器、计算设备或者系统执行根据所描述的示例的方法和/或操作。指令可以包括任何合适类型的代码,例如,源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。指令可以根据预定义的计算机语言、方式或者句法来实现,以用于指示机器、计算设备或者系统执行某些功能。指令可以使用任何适合的高级、低级、面向对象、视觉、编译和/或解释编程语言来实现。
69.至少一个示例的一个或多个方面可以由存储在至少一种机器可读介质上的表示处理器内的各种逻辑的代表性指令实现,该指令在由机器、计算设备或者系统读取时使得该机器、计算设备或者系统制造用于执行本文描述的技术的逻辑。被称为“ip核心”的这样的表示可以被存储在有形的机器可读介质上并且被供应到各种客户或者制造设施以加载到实际上制造逻辑或者处理器的制造机器中。
70.短语“一个示例”或“示例”的出现不一定全部指代相同的示例或实施例。本文描述的任何方面可以与本文所描述的任何其他方面或类似的方面组合,而不管这些方面是否是关于相同的附图或元素来描述的。附图中描绘的块功能的划分、省略或者包含并不暗指用于实现这些功能的硬件组件、电路、软件和/或元件将一定在实施例中被划分、省略或者包含。
71.一些示例可以使用表述“耦合”和“连接”以及其衍生词来描述。这些术语不一定旨在是彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可以指示两个或者更多个元件彼此直接物理或者电接触。然而,术语“耦合”也可以意味着两个或者更多个元件彼此不直接接触,但是仍然协同操作或者彼此交互。
72.本文中的术语“第一”、“第二”等并不表示任何次序、数量或重要性,而是用于将一
个元素与另一元素区分开。本文中的术语“一(a)”和“一个(an)”不表示对数量的限制,而是表示所引用的项目中的至少一个的存在。本文中参考信号使用的术语“使
……
生效”表示其中信号为活动的信号的状态,并且可以通过将任何逻辑电平(逻辑0或逻辑1)施加到信号来实现。术语“跟随”或“之后”可以指代紧跟或跟随在某种其他事件或多个事件之后。步骤的其他序列也可以根据替代实施例来执行。此外,可以取决于特定的应用来添加或移除附加的步骤。可以使用改变的任何组合,并且受益于本公开的本领域的普通技术人员将理解其许多变型、修改和替代实施例。
73.除非另有明确说明,否则诸如短语“x,y或z中的至少一个”之类的析取语言在上下文内被理解为通常用于表示项目、术语等,并且可以是x,y或z或者其任何组合(例如,x,y和/或z)。因此,这种析取语言通常不旨在并且不应该暗示某些实施例要求x中的至少一个、y中的至少一个或z中的至少一个各自存在。另外地,除非另有明确说明,否则诸如短语“x,y和z中的至少一个”之类的连接词语言也应该被理解为表示x,y,z或其任何组合,包括“x,y和/或z”。
74.下面提供了本文所公开的设备、系统和方法的说明性示例。这些设备、系统和方法的实施例可以包括下面描述的示例中的任何一个或多个以及其任何组合。
75.示例1包括一种计算机可读介质,包括存储在其上的指令,该指令如果由一个或多个处理器执行,则使一个或多个处理器进行以下操作:通过执行用于导致安装第二固件的指令来改变由设备执行的、存储在第一缓冲器中的固件,其中,在执行指令之前将第二固件复制到第一缓冲器。
76.示例2包括任何示例,其中,改变由设备执行的固件是响应于固件更新可用的指示而进行的,并且固件由设备在运行时期间或在重新引导时执行。
77.示例3包括任何示例,并且包括存储在其上的指令,该指令如果由一个或多个处理器执行,则使一个或多个处理器进行以下操作:在执行指令之前,使用设备信任根来验证第二固件。
78.示例4包括任何示例,其中,在执行指令之前将第二固件复制到第一缓冲器包括:应平台信任根的请求,将第二固件分发到一个或多个设备。
79.示例5包括任何示例,其中,指令使设备执行第二固件。
80.示例6包括任何示例,其中,指令包括操作系统执行的对特定处理器寄存器的写入,并且其中,该特定处理器寄存器用于导致执行第二固件。
81.示例7包括任何示例,其中,设备包括以下各项中的一个或多个:核心、网络接口控制器、基础设施处理单元(ipu)、微控制器、存储控制器或加速器。
82.示例8包括任何示例,并且包括一种方法,该方法包括:当设备执行第一固件时,执行导致安装第二固件的指令,其中,在执行指令之前将第二固件复制到缓冲器以供设备访问。
83.示例9包括任何示例,其中,执行导致安装第二固件的指令是响应于固件更新可用的指示而进行的。
84.示例10包括任何示例,并且包括:在执行指令之前,使用与设备相关联的信任根来验证第二固件。
85.示例11包括任何示例,并且包括:应平台信任根的请求,将第二固件分发到一个或
多个设备。
86.示例12包括任何示例,其中,指令使设备执行第二固件。
87.示例13包括任何示例,其中,指令包括操作系统执行的对特定处理器寄存器的写入,并且其中,该特定处理器寄存器用于导致执行第二固件。
88.示例14包括任何示例,其中,设备包括以下各项中的一个或多个:核心、网络接口控制器、基础设施处理单元(ipu)、微控制器、存储控制器或加速器。
89.示例15包括任何示例,并且包括一种装置,该装置包括:固件更新设备,该固件更新设备用于响应于指令而执行第二固件来代替执行第一固件,该指令使固件更新设备执行第二固件,其中,在执行指令之前将第二固件复制到缓冲器。
90.示例16包括任何示例,其中,固件更新设备包括以下各项中的一个或多个:管理或可管理性引擎(me)、平台安全处理器(psp)、具有trustzone扩展的核心或者安全隔区。
91.示例17包括任何示例,并且包括一个或多个处理器,其中,一个或多个处理器用于执行使固件更新设备执行第二固件的指令。
92.示例18包括任何示例,并且包括:设备信任根,其中,在执行指令之前,设备信任根用于验证第二固件。
93.示例19包括任何示例,并且包括:平台信任根,其中,平台信任根用于将第二固件分发到一个或多个设备。
94.示例20包括任何示例,其中,指令包括操作系统执行的对特定处理器寄存器的写入,并且其中,该特定处理器寄存器用于导致执行第二固件。
95.示例21包括任何示例,并且包括:耦合到固件更新设备的设备,其中,该设备包括以下各项中的一个或多个:核心、网络接口控制器、基础设施处理单元(ipu)、微控制器、存储控制器或加速器。
96.示例22包括任何示例,并且包括:通信地耦合到固件更新设备的服务器、机架或数据中心,其中,服务器、机架或数据中心包括用于执行第二固件的设备。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献