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

用于裸机云的安全且高效微码(uCode)热升级的制作方法

2022-06-16 06:42:18 来源:中国专利 TAG:

用于裸机云的安全且高效微码(ucode)热升级


背景技术:

1.云托管服务和应用的使用在过去十年中呈爆炸式增长,并继续以指数速度增长。云托管服务和应用通常在容纳数千个计算平台(例如,服务器、刀片服务器、服务器模块、微型服务器等)的大型数据中心中实现。通常,这些平台被配置为虚拟化执行,该虚拟化执行用于托管虚拟机和“容器”、或者在其中运行软件应用的类似物。
2.每个平台包括物理硬件、固件(也称为bios-基本输入输出系统)和软件。平台的信任根是平台硬件和固件,虽然不太容易受到恶意行为者的影响,但软件仍然可能构成风险。出于安全和其他原因(例如,性能),可能需要更新平台固件。
3.历史上,个人计算机(pc)平台中的bios是安装在只读存储器(rom) 中的单片代码块,其中,通过更换bios rom芯片来更新bios。随后, bios安装在eeprom(电可擦除可编程只读存储器)中,并且可以通过固件更新(完全)更换。大约在1998年,英特尔公司开始开发称为可扩展固件接口(efi)的模块化固件架构。2005年,unified efi论坛作为一个全行业组织成立,以促进采用和继续开发efi规范。使用efi 1.10规范为起点,这个发布的行业组织开始发布固件规范,更名为unified efi(uefi)。 uefi固件主导着当今的平台架构。uefi固件具有模块化架构,模块化架构包括向其添加模块的核心块,其中核心块首先被引导,并且被引导的代码用于在平台引导期间加载模块。此外,今天的大多数固件存储在闪存中 (有时称为bios闪存,并且称为持久性闪存),而不是eeprom。更一般地,平台固件可以存储在非易失性存储设备中,其包括但不限于闪存和 eeprom。
4.在一些平台架构下,引导加载程序可用于加载平台固件。例如,引导加载程序用于移动设备和一些服务器平台。
5.传统上,ucode更新可以通过引导时加载(如果ucode更新对应于在引导操作系统之前加载的预引导ucode)或通过操作系统执行时加载(称为热升级或运行时ucode更新)来加载到cpu(中央处理单元,又名处理器) 中。云环境对系统固件升级所导致的系统停机是敏感的,并且如果ucode 更新不依赖于平台硬件和操作系统的引导阶段,则云服务提供商偏好用于在运行时通过操作系统实用程序(utility)加载ucode补丁的热升级方法。
6.云服务提供商为租户提供多种选择,包括:虚拟化环境,服务提供商在虚拟化环境下提供操作系统和管理程序或vmm(虚拟机监视器)(在其上运行租户管理的虚拟机(vm));以及“裸”机平台,在“裸”机平台下云服务提供商租用运行租户vm的硬件(在没有由服务提供商提供的主机操作系统的情况下)。裸机(bare metal)云环境100的示例在图1中示出,其包括云服务提供商环境102和租户环境104。云服务提供商环境102包括受管平台106,受管平台106包括一个或多个主机cpu 108和bios spi(串行外围接口)闪存110。云服务提供商环境102还包括bios固件(fw) 112。
7.租户环境104包括主机操作系统114,一个或多个应用116在主机操作系统114上运行。为了说明的目的,租户环境被进一步描述为包括ucode 热升级实用程序118,其将被用于支持在非裸机的虚拟环境的操作运行时期间的ucode热升级。在裸机环境100下,主机操作系统114由单个租户而非云服务提供商拥有。这使得云服务提供商使用用于租户拥有的
操作系统环境的热升级方法来促进ucode更新变得复杂得多,例如对于租户环境104 所示出的。特别是,在裸机云环境100中,ucode热升级实用程序118不能使用的带内方法对ucode进行升级。
附图说明
8.本发明的前述方面和许多伴随的优点将变得更容易理解,因为通过参考以下详细描述(当结合附图考虑时)将变得更好理解,其中除非另有说明,否则贯穿各个视图相同的附图标记指代相同的部分:
9.图1是图示了采用裸机云环境的云服务提供商环境包括托管租户环境的受管裸机平台、并且进一步图示了带内ucode热升级方法不适用于这样的环境的示意图;
10.图2是图示根据一个实施例针对裸机云环境实施的带外ucode热升级方法的示意图;
11.图3是根据一个实施例的ucode胶囊包(capsule package)的图;
12.图4是示出了封装过程的实施例的图,该封装过程产生不同的ucode 胶囊包格式,包括具有和不具有包括签名证书的认证信息的格式;
13.图5是图示根据一个实施例的用于在主机os运行时期间使用带外控制器升级一个或多个cpu上的ucode的ucode热升级方法的实施例的示意图;
14.图6是示出根据一个实施例的用于实现ucode热升级方法的操作和逻辑的流程图;
15.图7是示出根据一个实施例的在ucode热升级期间执行的消息/信号流和相关联操作的流程图;
16.图8是示出根据一个实施例的ucode热升级过程的高级视图的框图;以及
17.图9是示例性裸机平台架构的示意图,在该架构上可以实现本文公开的实施例。
具体实施方式
18.这里描述了用于裸机云部署的微代码(ucode)热升级方法和被配置为实现该方法的相关联装置的实施例。在以下描述中,阐述了许多具体细节以提供对本发明实施例的透彻理解。然而,相关领域的技术人员将认识到,本发明可以在没有一个或多个具体细节的情况下来实施,或者使用其他方法、组件、材料等来实施。在其他情况下,为了避免混淆本发明的方面,未详细示出或描述公知的结构、材料或操作。
19.在整个说明书中对“一个实施例”或“实施例”的引用是指结合实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,在本说明书各处出现的短语“在一个实施例中”或“在实施例中”不一定都指代相同的实施例。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。
20.为清楚起见,本文图中的各个组件也可以通过它们在图中的标签来指代,而不是通过特定的附图标记。此外,可以用参考数字后跟“(typ)”(表示“典型”)来示出涉及特定类型组件(与特定组件相对)的附图标记。应当理解,这些组件的配置将是可能存在但为了简单和清楚而未在附图中示出的类似组件或未用单独的附图标记标记的类似组件中典型的。相反,“(typ)”不应被解释为表示组件、元素等通常用于其公开的功能、实现、目的等。
21.根据在此公开的实施例的方面,提供了一种ucode热升级方法,其通过例如但不限
于基板管理控制器(bmc)的带外控制器将ucode补丁应用到一个或多个cpu。一方面,该创新定义了一种中断服务,例如smi(系统管理中断)服务,以在运行时将ucode补丁升级到裸机管理的平台中的一个或多个cpu。ucode补丁由bmc接收并缓存在bmc板载的存储器中。然后,bmc触发smi处理程序以执行ucode更新服务以执行ucode热升级。
22.该创新使云服务提供商能够将ucode热补丁部署到裸机服务器,以进行持久存储和实时补丁,而不接触租户操作系统环境。这种方法显著降低了云客户在裸机环境中部署ucode补丁的复杂性和成本。该方法对主机操作系统和租户的应用是透明的(意味着独立于主机os执行),并且帮助云服务提供商在为主机裸机系统部署固件补丁的同时改善租户的用户体验,而不会显式中断租户的应用。
23.图2中示出了为裸机云环境200部署的方法的概述。裸机云环境200 包括云服务提供商环境202和租户环境204。云服务提供商环境202包括受管平台206,受管平台206包括一个或多个主机cpu 208。云服务提供商环境202还包括bios固件212和基板管理控制器(bmc)213,bmc 213包括bmc固件215和bmc存储器缓冲器217。在一个实施例中,存储器缓冲器是共享存储器缓冲器,其在bmc和主机之间共享。在另一个实施例中, bmc存储器缓冲器217的全部或一部分是视频帧缓冲器。租户环境204包括其上运行一个或多个应用216的主机操作系统214。在一些部署中,应用 216可以包括托管一个或多个vm的类型2管理程序或vmm,其中,在每个vm上运行相应的操作系统。
24.如图2进一步所示,ucode热升级实用程序220用于通过使用bmc 213 执行带外ucode热升级。如下文更详细描述和说明的,bmc固件将在主机cpu 208上启动smi服务,这将暂时暂停在受管平台206上运行的应用(包括租户环境204中的主机os 214和应用216)的操作,以使ucode补丁能够安装在一个或多个主机cpu 208中以升级那些cpu中的ucode。
25.在一些实施例中,ucode补丁被封装成胶囊格式,并且使用胶囊固件更新接口来更新ucode区域。胶囊格式ucode映像可以通过离线阶段或在线阶段构建,以支持灵活的完整性校验方法。胶囊格式和封装方案的示例在图4和图5中示出。在一个实施例中,胶囊格式符合由适用的uefi规范定义的胶囊格式。
26.如图3所示,ucode胶囊包300包括uefi胶囊报头302、固件管理协议(fpm)字段304、认证信息(authinfo)字段306和包含ucode固件卷(firmware volume)310的有效载荷308。在一个实施例中,ucode补丁被某个系统实用程序封装成标准胶囊格式(例如,ucode胶囊包300),以确保相同cpu sku(库存单元-即,相同cpu部件)的ucode胶囊包是跨不同平台供应商的bios实施方式合规的(compliant)。
27.在bios中定义了smi(系统管理中断)处理程序以解析来自胶囊映像的ucode补丁。通常,ucode胶囊包300可以由来自oem/odm/平台供应商的离线工具或由来自云客户的在线工具动态生成,这些在线工具被配置为支持灵活的发布和可变的安全校验要求。为了支持更新映像的完整性校验,可以向authinfo字段306中添加签名;此签名是使用来自oem/odm/ 平台供应商或来自云客户的平台凭据创建的。对于这种情况(采用签名),在一个实施例中,smi处理程序被配置为通过用内部平台凭证验证该签名来校验bios更新映像的完整性。
28.在一些情况下,给定的ucode发布将包括多个ucode补丁,这些补丁被配置为在同一cpu模型上实现,同时支持不同的步进级别。例如,cpu 的步进级别可能包括a0、a1、a2等。在变化更显著的情况下,步进级别可能使用下一个字母,例如b0,然后是b1、b2等。用于给定
步进级别的 cpu型号的ucode补丁可能与用于另一个步进级别的该cpu型号的ucode 补丁不同,因此更新包中可以包括多个ucode补丁。
29.通常,oem/odm(原始装备制造商或原始设备制造商)可以创建具有多个ucode补丁的ucode更新包以支持ucode更新包所针对的cpu模型或产品(例如,刀片服务器、服务器模块等)的多个步进级别。例如,平台供应商可能会在几年内制造和销售使用相同cpu型号的给定刀片服务器,而在此期间cpu型号的步进版本将发生变化。因此,用于刀片服务器的 ucode更新可能需要多个补丁。
30.在云运营商的情况下,一些ucode更新包可能更有针对性地仅在具有特定步进级别的cpu模型上实现。在这种情况下,ucode更新包可能只包括单个ucode补丁。在其他情况下,云运营商可能生成带有多个ucode补丁的ucode更新包。
31.如图4所示,封装过程从一个或多个ucode补丁400开始,这些补丁被封装成ucode胶囊格式402,ucode胶囊格式402包括ucode固件卷404。如果需要来自oem或odm的平台签名,则生成用oem/odm证书签名的 ucode胶囊格式406,包括authinfo字段408(包含证书)和ucode固件卷 404。如果需要来自云客户的签名,则生成用云客户证书签名的ucode胶囊格式410,包括authinfo字段412(包含证书)和ucode固件卷404。如果不需要平台签名,则可以按原样提供ucode胶囊包402。
32.使用带外控制器在运行时期间更新cpu中的ucode
33.图5示出了图示用于在主机os运行时期间使用带外控制器更新一个或多个主机cpu 208中的ucode的ucode热升级方法的实施例的图500。bmc 缓冲器217的全部或一部分包括其中缓冲ucode补丁506的存储器映射输入-输出(mmio)范围504。在一个实施例中,bmc 213经由外围组件互连快速(pcie)接口/链路508连接到一个或多个主机cpu 208。bmc 213 进一步被示为包括ucode热升级代理510,在一个实施例中ucode热升级代理510是通过执行bmc固件215来实现的。
34.在执行ucode热升级之前,bmc代理510使用内部平台凭证验证ucode 更新包的完整性。例如,如上文所讨论和图4所示,ucode胶囊格式410 用包括authinfo字段412的云客户证书进行签名。该证书可以根据存储在平台内部(例如,在安全的模块等(例如,可信平台模块(tpm))中)的凭证进行验证。
35.bios固件中的smi服务被定义为对于一个或多个cpu 208实现ucode 热升级过程,如图6的流程图600所示并进一步参考图5、图7的消息流程图以及图8的框图。在块602中,bmc使用带外通道接收ucode补丁并将ucode补丁缓冲在内部存储器缓冲器中。在一个实施例中,ucode补丁是从通过带外信道连接到bmc的远程管理顾问发送的。在一个实施例中,内部存储器缓冲器是视频帧缓冲器,其重新用于缓冲ucode补丁,如图8中的视频帧缓冲器800所示。在块804中,ucode热升级代理510以上面讨论的方式验证ucode补丁。如果ucode补丁被认为有效,则过程继续,否则过程结束。
36.在块606中,bmc将内部存储器缓冲器暴露为pcie存储器mmio范围。在一个实施例中,bmc经由pcie接口(例如,pcie接口/链路508) 连接到主机cpu。bmc作为pcie端点设备呈现给主机cpu。pcie端点设备可以使用标准pcie机制将内部存储器资源暴露为mmio范围,如块606 中的情况。
37.在块608中,bmc在主机cpu 802(图8)上触发smi,之后在块610 中进入smi处理程
序。在块612中,smi处理程序识别smi是ucode补丁更新smi。在块614中,处理切换到从bmc缓冲器读取ucode映像并执行 ucode更新命令的目标cpu。如决策块616所描绘的,重复执行ucode更新命令以更新一个或多个枚举cpu插槽(enumerated cpu socket)中的 ucode。完成后,在块618中,smi处理程序退出。
38.图7示出了描绘在bmc 513上的ucode热升级代理、smi处理程序212 (bios中)和主机操作系统214之间交换的消息的消息流程图700。在第一操作“1”中,ucode补丁被接收并存储在bmc上的内部存储器缓冲器中。在第二操作“2”中,ucode热升级代理触发ucode更新smi服务(由 smi处理程序212实现)。进入smi处理程序将cpu的执行切换到系统管理模式(smm),这会暂停主机os 214(以及由主机操作系统214托管的任何应用)的执行。如第三操作“3”所描绘的,ucode更新smi服务在短时间范围内执行,以使用ucode补丁更新一个或多个cpu上的ucode。完成后,smi处理程序212向ucode热升级代理发出对ucode更新完成状态的通知。(实质上)并行地,smi处理程序212还用ucode升级事件和版本信息更新主机os 214。
39.在更新包中包括多个步进版本ucode补丁的一些实施例中,smi bios 代码可以被配置为仅针对那些具有与处理器的步进版本匹配的步进版本的 ucode补丁进行过滤。在这种方法下,ucode更新包的提供者可以构建和发送出具有多个步进版本的更新包,而不必知道要更新ucode的每个处理器所实现的特定步进版本。
40.图9示出了裸机云平台架构900的实施例,裸机云平台架构900对应于适用于实现这里描述的实施例的各方面的裸机平台。架构900在图的下部包括硬件层(硬件层包括平台硬件902),并且包括软件层(软件层包括在主机存储器904中运行的软件组件)。一方面,架构900被配置为实现以上所讨论的ucode补丁热升级方法。
41.平台硬件902包括具有片上系统(soc)架构的处理器906,该架构包括具有m个处理器核心910的中央处理单元(cpu)908,每个核心都耦合到1级和2级(l1/l2)高速缓存912。处理器核心和l1/l2高速缓存中的每一个都连接到互连914,存储器接口916和最后一级高速缓存(llc)918 中的每一个都耦合到互连914,以形成一致的存储器域。存储器接口用于访问主机存储器904,其中通过在处理器核心910上执行相关联的软件指令来加载和运行各种软件组件。
42.处理器906还包括输入/输出(i/o)互连层次结构,其包括一个或多个级别的互连电路和接口,为了简单起见,这些互连电路和接口集体地描绘为i/o互连和接口920。各种组件和外围设备通过相应的接口(未全部单独示出)耦合到处理器906,包括网络接口922和bmc 924,bmc 924包括 bmc固件926和bmc缓冲器928。在所示实施例中,bmc 924经由pci 接口929耦合到soc 906。网络接口922连接到网络930。在一些实施例中, bmc 924连接到与网络930分开的管理网络931。在其他实施例中,bmc924使用内置或单独的网络接口(均未示出)连接到网络930,或bmc 924 被配置为与通过网络接口922耦合到网络930的外部实体进行通信。
43.平台硬件902还包括其中存储了软件组件934的具有控制器932的磁盘驱动器或固态磁盘(ssd)。可选地,用于实现本文实施例的软件方面的全部或部分软件组件可以通过网络接口922访问的网络930加载。
44.在平台初始化期间,当前或新的ucode映像和各种uefi模块(未单独示出)被加载
到主机存储器904中并被引导,之后是各种软件组件的加载和初始化。软件组件包括主机操作系统和vmm 936(其将位于主机操作系统上方但未单独示出),vmm 936用于托管n个虚拟机(vm)vm 1、vm2
……
vm n,每个虚拟机都包含一个操作系统938,在操作系统938上运行一个或多个应用940。可以以类似方式实现采用容器的平台架构,例如类型的容器。此外,还可以使用仅运行操作系统的单个实例(例如,直接在主机操作系统936上运行的应用)的非虚拟化计算平台。
45.如图9进一步所示,包括主机操作系统/vmm 936及以上的主机存储器 904中的软件组件是租户环境942的一部分。同时,被描绘为裸机抽象层 944的软件组件是云服务提供环境的一部分。通常,云服务提供商环境将提供用于支持对云服务提供商所使用的主机存储器904的部分和租户环境942 的单独访问的机制。在一些实施例中,裸机云平台硬件和裸机抽象层是可信计算基础(tcb)的一部分。
46.对于多插槽裸机云平台,平台架构将有点类似于图9中所示的平台架构,但具有多个处理器(cpu)(每个处理器(cpu)位于其自己的插槽中) 以及连接插槽的插槽到插槽互连。
47.如这里所使用的,“运行时”和“操作系统运行时”是指在主机操作系统引导之后平台的操作阶段。因此,当主机操作系统在带外热升级过程期间暂停时,主机操作系统在该过程中仍处于运行时。而且,当主机操作系统暂停时,不知道在裸机平台上的cpu正在执行任何操作,并且这里的实施例提供的带外热升级过程对主机操作系统是透明的。
48.如这里所使用的,“带外”是指不采用由操作系统所提供的通信设施(例如,网络软件栈)的通信信道。结果,带外通信单独地且与涉及主机操作系统的租户环境中的通信分开实现。
49.除了将ucode补丁应用于cpu之外,本文公开的教导和原理还可应用于其他处理单元(统称为xpu),包括图形处理器单元(gpu)或通用gpu (gp-gpu)、张量处理单元(tpu)、数据处理器单元(dpu)、人工智能 (ai)处理器或ai推理单元和/或其他加速器、fpga和/或其他可编程逻辑(用于计算目的)等中的一个或多个。虽然此处的图中的一些示出了cpu 的使用,但这仅是示例性的而非限制性的。通常,可以使用任何类型的xpu 代替所示实施例中的cpu。此外,如在所附权利要求中使用的,cpu和所有形式的xpu包括处理单元。
50.尽管已经参考特定实施方式描述了一些实施例,但是根据一些实施例,其他实施方式也是可能的。此外,附图中所示和/或本文描述的元素或其他特征的布置和/或顺序不需要以所示出和描述的特定方式布置。根据一些实施例,许多其他布置是可能的。
51.在图中所示的每个系统中,在一些情况下,元素可以军具有相同的附图标记或不同的附图标记,以表明所表示的元素可以不同和/或相似。然而,元素可以足够灵活以具有不同的实施方式并且与在此示出或描述的系统中的一些或全部一起工作。图中所示的各种元素可以相同或不同。哪个被称为第一元素并且哪个被称为第二元素是任意的。
52.在说明书和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应当理解,这些术语并非旨在作为彼此的同义词。相反,在特定实施例中,“连接”可用于指示两个或更多个元素彼此直接物理或电接触。“耦合”可能意味着两个或更多个元素直接物理接触或电接触。然而,“耦合”也可能意味着两个或更多个元素彼此不直接接触,但仍彼此合作或相互作用。此外,“通信耦合”意味着可能彼此直接接触或不直接接触的两个或更多个元
素被使得能够彼此通信。例如,如果组件a连接到组件b,而组件b又连接到组件c,则组件a可以使用组件b作为中间组件通信地耦合到组件c。
53.一个实施例是本发明的实现方式或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用意味着结合实施例描述的特定特征、结构或特性被包括在至少一些实施例中,但是不一定是本发明的所有实施例。各种出现的“实施例”、“一个实施例”或“一些实施例”不一定都是指相同的实施例。
54.并非本文描述和图示的所有组件、特征、结构、特性等都需要被包括在一个或多个特定实施例中。例如,如果说明书阐明组件、特征、结构或特性“可以”、“可能”、“能够”或“可”被包括,则不需要包括该特定组件、特征、结构或特性。如果说明书或权利要求提及“一”或“一个”元素,这并不意味着只有一个元素。如果说明书或权利要求提及“附加”元素,则不排除存在多个附加元素。
55.前面详细描述中的斜体字母,例如

m’、

n’等用于描述整数,并且具体字母的使用不限于具体实施例。此外,可以在不同的权利要求中使用相同的字母来表示不同的整数,或者可以使用不同的字母。此外,详细描述中特定字母的使用可能与在详细描述中属于相同主题的权利要求中使用的字母相匹配,也可能不匹配。
56.如上所述,可以通过对应的软件和/或固件组件和应用来促进本文实施例的各个方面。因此,本发明的实施例可用作或支持软件程序、软件模块和/或固件(bios),其在某种形式的处理器、处理核心或嵌入式逻辑、在处理器或核心上运行的虚拟机上执行,或以其他方式在非暂时性计算机可读或机器可读存储介质上或内被实施或实现。非暂时性计算机可读或机器可读存储介质包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制。例如,非暂时性计算机可读或机器可读存储介质包括以计算机或计算机器(例如,计算设备、电子系统等)可访问的形式提供(即,存储和/或传输)信息的任何机制,例如可记录/不可记录介质(例如,只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质、光存储介质、闪存设备等)。内容可以是直接可执行的(“对象”或“可执行”形式)、源代码或差异代码(“增量”或“补丁”代码)。非暂时性计算机可读或机器可读存储介质还可包括可从其下载内容的存储装置或数据库。非暂时性计算机可读或机器可读存储介质还可包括在销售或交付时具有存储在其上的内容的设备或产品。因此,交付具有存储内容的设备或提供用于通过通信介质下载的内容可以被理解为提供包括具有这里描述的此类内容的非暂时性计算机可读或机器可读存储介质的制品。
57.如本文所用,由术语
“……
中的至少一个”连接的项目列表可表示所列术语的任何组合。例如,短语“a、b或c中的至少一个”可以表示a; b;c;a和b;a和c;b和c;或a、b和c。
58.本发明的图示实施例的以上描述(包括摘要中所描述的内容)并非旨在穷举或将本发明限制为所公开的精确形式。虽然本文为了说明的目的描述了本发明的特定实施例和示例,但是如相关领域的技术人员将认识到的,在本发明的范围内各种等同修改是可能的。
59.根据以上详细描述,可以对本发明进行这些修改。在所附权利要求中使用的术语不应被解释为将本发明限制在说明书和附图中公开的特定实施例。相反,本发明的范围完全由所附权利要求确定,这些权利要求将根据权利要求解释的既定原则来解释。
再多了解一些

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

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

相关文献