通过边带处理器的计算机系统通信的制作方法



1.本公开总体上涉及计算机系统操作,更具体地,涉及计算机系统的组件之间的通信,以便于软件和固件的安装。


背景技术:



2.多用户实体可以依靠企业计算系统来为用户提供计算基础设施。企业计算系统可以包括一个或多个提供服务器计算能力的计算机系统和一个或多个为这些用户提供服务的数据库。每个计算机系统通常包括主板,在该主板上安装有处理器,并且在某些情况下,还安装有一个或多个外围设备或其他设备。处理器为计算机系统提供计算能力,并且所述一个或多个外围设备可以包括例如图形协处理器、音频协处理器、网络接口、存储接口等。处理器执行操作系统(os)来管理也在计算机系统上执行的各种进程,以及管理数据输入、数据输出、数据存储和影响耦合到处理器的电路的其他任务。以类似的方式,各种外围设备可以利用管理由外围设备执行的操作的驱动程序。
3.用于特定实体的企业计算系统可以使用从单个计算机系统到数百甚至数千个计算机系统(例如,在服务器数据中心中耦合在一起)的任何地方来实现。随着时间的推移,os和/或驱动程序可能会有更新的版本,以实现新的特征、修复已知的错误、增加计算带宽等。在计算机系统上安装新的os和/或驱动程序可能需要使计算机系统离线,使得它不对特定实体提供的服务做出贡献。这样的停机时间可能会使实体因计算机系统停机时无法提供服务而损失收入和/或效率。本文讨论的技术描述了用于执行所有种类的计算机系统的更快更新和管理的改进方法,这些技术在较大的企业计算环境中可能特别有益。
附图说明
4.图1图示了包括边带处理器的计算机系统的实施例的框图。
5.图2示出了边带处理器使用的命令协议的实施例的框图。
6.图3描绘了包括能够更新操作系统的边带处理器的计算机系统的实施例的框图。
7.图4图示了包括能够更新一个或多个外围设备的驱动程序的边带处理器的计算机实施例的框图。
8.图5示出了计算机系统的主板的实施例的框图,该主板包括能够更新操作系统和一个或多个外围设备的驱动程序的边带处理器。
9.图6包括描绘包括活动进程的更新操作系统的安装的框图。
10.图7包括描绘包括活动外围设备的更新操作系统的另一安装的框图。
11.图8图示了计算机系统的实施例的框图,该框图示出了更新操作系统和驱动程序的命令流。
12.图9描绘了用于在计算机系统上实现边带命令协议的方法的实施例的流程图。
13.图10示出了用于更新安装在实现边带命令协议的计算机系统上的处理器的操作系统的方法的实施例的流程图。
14.图11示出了用于更新安装在实现边带命令协议的计算机系统上的外围设备的驱动程序的方法的实施例的流程图。
15.图12是示出根据一些实施例的示例计算机系统的框图。
具体实施方式
16.为了提高监视包括在计算机系统中的计算机系统状态的速度和效率,一些计算机系统的主板可以包括边带处理器。这样的边带处理器可以为给定的主板提供各种类型的信息,例如操作温度、电源信号的电压等级、安装在主板上或耦合到主板的外围设备的操作状态、耦合到主板的易失性和非易失性存储器的存储器使用以及其他类似类型的数据。边带处理器通过向各种寄存器和/或存储器发送存储器读取请求来收集各种类型的信息。在各种实施例中,系统管理员可以访问该边带处理器。
17.系统管理员可能需要或期望更新一个或多个计算机的操作系统(os)的版本,或者更新所述一个或多个计算机中包括的特定设备的驱动程序。这样的更新可以启用新特征、修复已知缺陷、增加计算带宽等等。实现这样的更新的传统方法可能需要使正在更新的计算机离线相当长的时间。在某些情况下,更新可能需要系统管理员亲自操作正在被更新的计算机,或者利用计算机的主网络通道,从而在传送新的os和/或驱动程序时减少计算机的通信带宽。
18.发明人已认识到,除了监视计算机系统的操作条件之外,修改后的边带处理器可以用于与计算机系统交换附加信息,包括例如使用边带处理器下载计算机系统的os软件和/或驱动程序固件。本文公开了用于实现边带处理器的修改后的命令协议的技术,该协议允许对耦合到与边带处理器相同的计算机系统的处理器、存储器和外围设备进行读和写访问。这样的命令协议可以允许边带处理器发出命令系列来监视计算机系统的多个操作条件。响应于接收到要发送到特定设备(例如,存储器电路或外围设备)的数据,边带处理器可以修改一个或多个命令系列,以包括用于将至少部分接收到的数据存储到与特定设备相关联的特定地址的第二命令。然后,边带处理器可以发送修改后的命令来执行命令系列中的原始命令以及第二命令,以存储所述部分接收到的数据。
19.在各种实施例中,这样的命令协议可以允许为处理器安装更新版本的操作系统(os)和/或为外围设备安装更新版本的驱动程序,同时允许处理器和外围设备在至少部分(例如,全部或基本全部)安装期间操作。在下面讨论的示例中,在处理器继续操作的同时,边带处理器可以接收更新版本的os。边带处理器可以将更新版本安装到存储器的部分中,该部分与安装了os的当前版本的不同部分分离。处理器继续执行当前os,同时边带处理器发送命令,以将更新版本的os安装到存储器的不同部分。在安装了更新版本之后,边带处理器可以向处理器发送命令,使得处理器停止执行当前版本,并开始执行更新版本的os。这可以在不执行计算机系统的完全重启的情况下完成。在一些实施例中,可以执行计算机系统的部分重启,以初始化计算机系统的一个或多个电路。然而,这样的部分重启可以在比完全重启更短的时间内执行。
20.类似地,可以安装外围设备的更新版本的驱动程序。例如,边带处理器可以接收更新版本的驱动程序。为了安装更新版本的驱动程序,边带处理器向处理器发送通知,指示已准备好安装更新版本,并使处理器暂停使用外围设备。边带处理器然后可以发送命令,以安
装更新版本的驱动程序,同时暂停外围设备的使用,但是处理器继续操作。在安装了更新版本的驱动程序之后,边带处理器向处理器发送已安装了更新版本的驱动程序的通知。作为响应,处理器可以恢复外围设备的使用。
21.下面给出了边带控制器的命令协议的实施例。此外,提供了利用该边带命令协议的系统的示例,包括为计算机系统更新os的实施例。给出了另一实施例,其中,更新了计算机系统中外围设备的驱动程序。还给出了图示如何处理两种情况(os更新和驱动程序更新)的另一实施例。示出了图示系统存储器使用的两种情况,以及命令和响应流进出边带处理器的示例。示出了用于执行所公开的技术的方法的几个实施例。此外,给出了可以在其上实现所公开的技术的计算机系统的一个示例。
22.边带命令协议
23.图1示出了计算系统的实施例的框图。如图所示,计算机系统100包括主中央处理单元(cpu)103、控制器中枢110、系统存储器120、边带处理器130、网络接口控制器140以及外围设备160a和160b(统称为外围设备160)。计算机系统100可以是任何合适类型的计算机系统,例如台式计算机、膝上型计算机、机架式服务器计算机、企业计算机系统中的工作站等。
24.如图所示,主cpu 103执行可以经由系统存储器120或耦合到计算机系统100的其他存储器访问的操作系统和其他软件进程。主cpu 103是包括一个或多个处理核心的中央处理单元(cpu),每个处理核心被配置为支持相应的指令集架构(isa),例如intel x86或armv8。主cpu 103被配置为与控制器中枢110和系统存储器120对接。在一些实施例中,主cpu 103使用硬件插口耦合到主板,该硬件插口被配置为将cpu集成电路(ic)耦合到计算机系统100。例如,这样的插口可以是基板栅格阵列(lga)插口,例如lga 1150、lga 1151或sp3插口。该插口允许主cpu 103被物理安装到计算机系统100中。
25.在所示的实施例中,控制器中枢110提供主cpu 103和在计算机系统100上包括的外围设备160之间的接口。例如,控制器中枢110可以包括一个或多个外围组件快速互连(pcie)总线接口,用于与兼容的外围设备160通信。计算机系统100可以包括任何合适数量的pcie插口,允许多达对应数量的pcie兼容外围设备被物理安装在计算机系统100中,经由控制器中枢110进行通信。控制器中枢110可以支持附加的接口标准,例如通用串行总线(usb)、以太网、串行at附件(sata)等。在一些实施例中,控制器中枢110的一些或全部功能可以包括在主cpu 103中。在其他实施例中,控制器中枢110的功能可以分成两个或更多个ic,例如北桥控制器和南桥控制器。
26.主cpu 103使用系统存储器120来存储与os相关联的指令和其他数据以及由主cpu 103执行的其他进程。系统存储器120包括易失性存储器,例如静态随机存取存储器(sram)和/或动态随机存取存储器(dram)。在一些实施例中,系统存储器120可以包括虚拟ram,例如可以使用非易失性存储器实现的虚拟ram,例如硬盘驱动程序、固态驱动程序、嵌入式闪速存储器等。系统存储器120的一些或全部可以包括在与主cpu103不同的电路板上,然后使用例如双列直插式存储器模块插口安装到计算机系统100中。
27.如图所示,外围设备160包括通过卸载可能由主cpu 103执行的任务和/或执行主cpu 103或系统内的其他硬件可能无法执行的附加任务来增加计算机系统100的能力的设备。在各种实施例中,外围设备160可以对应于任何合适类型的设备,例如图形协处理器、音
频协处理器、网络接口、无线接口等。外围设备160可以在计算机系统100的制造期间安装,或者在制造之后安装,例如,通过使用包括在计算机系统100的主板中的插口。尽管示出了两个外围设备,但是计算机系统100中可以包括任何合适数量(例如受可用pcie插口数量的限制)的外围设备。
28.根据各种实施例,边带处理器130是包括在计算机系统100中的处理器,用于监视安装在计算机系统100中的各种电路的操作,并向例如系统管理员使用的计算机系统发送状态信息。在各种实施例中,边带处理器130可以被实现为微控制器或其他类型的片上系统处理器,并且在一些实施例中,可以是主板管理控制器。如图所示,边带处理器130包括与主cpu 103使用的网络连接分离的网络接口控制器140。网络接口控制器140允许边带处理器130与系统管理员通信,使系统管理员能够请求特定状态信息,并允许边带处理器130响应所请求的信息。边带处理器130能够监视例如以下任何一项或多项:计算机系统100的操作温度、一个或多个电源节点的电压等级、主cpu 103的当前工作负荷、正在通过外围设备160的数据流量、当前可用的系统存储器120的量等。
29.为了执行监视操作,边带处理器130可以向控制器中枢110发出来自第一组命令的命令系列,包括例如命令113。第一组的这些命令可以使控制器中枢110访问计算机系统100上的各种电路,以得到由边带处理器130监视的操作条件。第一组命令中的每一个可以包括要被访问的电路的标识符(例如,pcie地址)、命令类型(例如,读或写)、要被读或写的存储器位置的地址或寄存器id、要被写的数据(在写命令的情况下)等中的任何一个或多个。在一些实施例中,该命令结构可以由第三方实体(例如计算机系统100的制造商,或者计算机系统100所使用的主板的制造商)确定。计算机系统100的用户(例如系统管理员)可访问的第一组命令可以限于包括在计算机系统100中的特定电路,并且在一些实施例中,限于给定电路内的特定地址。
30.在一些实施例中,边带处理器130被配置为在发送第二命令之前等待来自控制器中枢110的对第一组命令中的第一命令的响应。因此,为了获得电源的当前操作温度和当前电压等级,边带处理器130发送第一命令以确定当前操作温度,然后在发送第二命令以确定电源的电压等级之前等待具有当前操作温度的第一响应。
31.在其他实施例中,边带处理器130可以发送第一组中的一个以上的命令,而不等待其间的响应。在这样的实施例中,控制器中枢110被配置为以与从边带处理器130接收命令的顺序相对应的顺序发送对命令的响应。例如,如果边带处理器130发送确定当前操作温度的第一命令,接着发送确定电源电压等级的第二命令,然后发送确定系统存储器使用的当前等级的第三命令,则控制器中枢110发送具有当前操作温度的第一响应,接着发送具有电源电压等级的第二响应,然后发送具有当前系统存储器使用的第三响应。
32.为了更灵活地提供更宽范围的命令,并且为了在制造计算机系统100期间和之后开放对安装在计算机系统100中的电路的访问,如图所示,边带处理器130还被配置为使用修改后的命令(例如修改后的命令114)向控制器中枢110发送第二组命令,包括对系统存储器120中的存储位置、对外围设备160中包括的寄存器和/或存储器、以及在一些实施例中对主cpu 103中的至少部分寄存器进行读写的命令。
33.边带处理器130利用命令协议,该协议允许发送第二组命令,而不在连续命令之间等待来自控制器中枢110的响应。利用该命令协议,边带处理器130被配置为经由通信总线
117发送第一组命令中的命令系列(包括例如命令113),以监视计算机系统100的一个或多个操作条件。这命令系列可以例如允许边带处理器130执行主板管理控制器的功能,从而收集与操作条件相关的信息,例如操作温度、主板上的一个或多个电源节点的电压等级、关于外围设备160、系统存储器120和/或主cpu 103的状态的信息以及其他类似类型的信息。
34.如图所示,边带处理器130还被配置为经由网络接口控制器140接收所述一个或多个外围设备160中的特定一个(例如,外围设备160a)的数据180。数据180对应于适用于外围设备160a的各种类型的信息中的任何一种。数据180可以是用于将外围设备置于特定操作状态的配置信息,可以是用于操作外围设备160a的新驱动程序(部分或全部),可以是要由外围设备160a处理的信息,可以包括从外围设备160a请求信息的命令,等等。如图所示,边带处理器130经由网络接口控制器140从例如系统管理员、程序员或其他可以访问网络接口控制器140的用户接收数据180。例如,如果数据180太大而不能被包括在第二组命令的单个命令中,则数据180可以被细分成多个部分。因此,每个部分的大小都适合用一个命令进行传送。
35.修改命令系列中的未决的特定命令,以包括第二组命令中的辅助命令。如图所示,修改后的命令114包括标记为a和b的命令。命令114a可以是第一组的未决的特定命令,而命令114b是第二组的辅助命令。当向控制器中枢110发送命令系列中的给定命令时,边带处理器130可以使第一组的一个或多个后续命令(包括未决的特定命令114a)在接口电路中生成并排队,以通过通信总线117传输。为了包括辅助命令114b,边带处理器130使用例如直接存储器存取电路(dma)在发送未决的特定命令114a期间将辅助命令114b发送到接口电路。在被并入修改后的命令114之后,辅助命令114b包括与外围设备160a相关联的地址和至少部分数据180。
36.边带处理器130还被配置为在特定命令114a已被修改成包括辅助命令114b之后,使用特定命令协议经由通信总线117向控制器中枢110发送修改后的命令114。控制器中枢110接收修改后的命令114,并执行特定命令114a和辅助命令114b。特定命令114a和辅助命令114b可以在计算机系统100的不同部分上独立执行。在这样的情况下,边带处理器130可以在第一时间从控制器中枢110接收对特定命令114a的第一响应。在第一时间之后的第二时间,边带处理器130可以从控制器中枢110接收对辅助命令114b的第二响应。由于第一组命令涉及获得关于操作条件的信息,因此第一组命令通常可以比第二组命令更快地执行,这通常涉及将数据传送到计算机系统100中的特定设备(例如,系统存储器120、外围设备160等)。由于执行时间的差异,可以在不同的时间点接收到与第一组命令和第二组命令中的命令相关联的响应。
37.为了保持可能需要更长时间执行的第二组命令的可追溯性,在一些实施例中,边带处理器130在辅助命令114b中包括标识值,例如相对于其他发送的辅助命令的序列号。控制器中枢110被配置为将该标识值包括在发送给边带处理器130的关于所执行的辅助命令的响应中。边带处理器130还被配置为使用标识值来确定在第二时间接收的第二响应对应于辅助命令114b。例如,边带处理器130可以保存表,该表具有对应于已发送(但尚未接收到响应)的命令的条目。在接收到对应于特定条目的响应之后,可以清除相应的条目。
38.在一些实施例中,为了将数据180传送到外围设备160a,辅助命令114b使得数据180的该部分被存储在系统存储器120中。不是将数据180直接传送到外围设备160a,而是首
先使用第二组命令中的一个或多个命令将数据180传送到系统存储器120。在至少部分数据180已被存储在系统存储器120中之后,边带处理器130被进一步配置为使得外围设备160a从系统存储器120复制数据180的该部分。为了实现这一点,边带处理器130可以修改第一组命令中的未决的不同命令,以包括第二组命令中的不同辅助命令。然后,边带处理器130可以使用特定命令协议,经由通信总线117向控制器中枢110发送修改后的不同命令。控制器中枢110还被配置为执行修改后的不同命令,这使得外围设备160a从系统存储器120复制数据180的该部分。
39.在一些实施例中,在外围设备160a从系统存储器120复制任何数据180之前,可以将全部数据180复制到系统存储器120中。在一些实施例中,由于例如缺少边带处理器130经由通信总线117对外围设备160a的访问,数据180可以经由系统存储器120被传送到外围设备160a。在其他实施例中,将全部数据180传送到系统存储器120中,然后使外围设备160a从系统存储器120中复制数据180,可以减少用于传送数据的时间量,和/或可以允许外围设备160a在接收数据180之前完成其他任务。
40.控制器中枢110对第二组命令的执行可以不利用主cpu 103的带宽。如图所示,控制器中枢110能够将数据存储到系统存储器120和/或外围设备160中,而不干扰主cpu的正常操作。例如,主cpu 103可以执行操作系统(os)的处理和/或执行与其他应用相关的处理。除了下面关于图3描述的(例如关于os更新)之外,这些进程的执行可以不被第一组命令和第二组命令中的命令的执行中断。
41.注意,使用如上所述的命令协议可以允许访问包括在计算机系统100中的各种设备,而不干扰计算机系统100的正常操作。当计算机系统100继续为一个或多个用户执行任务时,可以执行用于管理计算机系统100的某些任务。例如,可以重新配置计算机系统100上的设备,或者更新驱动程序固件。可以将附加的软件进程加载到系统存储器中,以供主cpu 103稍后执行,包括例如对操作系统的更新(下面关于图3提供细节)。因此,可以在减少计算机系统停机时间的情况下执行这样的计算机管理任务,从而提高计算机系统的性能效率。此外,计算机管理任务可以通过利用耦合到边带处理器的网络接口远程执行。这样的远程利用可以允许系统管理员从中央位置管理各种位置的计算机系统,从而提高系统管理员的生产率。
42.还应注意,图1的实施例仅仅是演示所公开概念的示例。在其他实施例中,所示的计算机系统可以包括元件的不同组合,包括附加元件。例如,可以包括两个以上的外围设备,例如网络接口卡、电源管理电路、时钟源等。
43.图1的计算机系统描绘了能够允许在边带处理器和安装在计算机系统中的各种设备之间共享信息的特定命令协议。可以使用各种技术来实现命令协议。在图2中,图示了命令协议的实施例的细节。
44.转到图2,示出了描绘修改之前和修改之后的第一组命令的示例的表格。图2包括命令113(其描绘了未修改的第一组命令)以及修改后的命令114(其描绘了添加了第二组辅助命令之后的命令)。
45.如图所示,命令113包括五个部分:帧开始216、第一组命令218、第一命令的地址222、与命令218相关联的数据224和帧结束226。帧开始216包括一个或多个位来指示新命令的开始。对于所有的命令,这一个或多个位可以具有相同的值。类似地,帧结束226包括具有
特定值的一个或多个位,以指示当前命令的结束。命令218包括表示用于监视计算机系统100的操作条件的第一组命令中的特定命令的多个位。有效命令218可以包括读命令、写命令和控制命令。在一些实施例中,多个版本的读命令和写命令可以用于指示不同大小的操作数,例如字节、整数(例如,16位)、字(例如,32位)、双整数(例如,64位)等。控制命令可以用于使目标设备暂停或恢复操作、跳转到固件中的特定位置、进入特定模式,等等。地址222可以标识命令218可在其上操作的特定目标设备。在各种实施例中,地址222可以包括系统存储器地址、总线地址(例如,pcie设备地址)、目标设备内的存储器位置的地址等中的任何一个或多个。如果需要或期望,数据224包括命令218的任何操作数。例如,如果命令218是写命令,那么数据224可以包括要被写的一个或多个字节的数据。如果命令218使目标设备改变操作模式,则数据224可以指示目标设备应该进入的特定模式。
46.如上所述,边带处理器130可以向控制器中枢110发送命令系列113,以监视计算机系统100中的操作条件。这些命令113中的一个或多个可以在边带处理器130中排队,一旦通信总线117可用,就会被发送到控制器中枢110。在边带处理器130接收到要传送到例如外围设备160a的数据180之后,边带处理器准备要经由第二组命令中的一个或多个命令发送的数据180。为了发送第二组辅助命令,边带处理器130标识待通过通信总线117发出的命令113。该标识的命令113然后被修改以添加辅助命令,从而创建修改后的命令114。
47.如图所示,如上所述,修改后的命令114包括命令113的所有部分。向所标识的命令113添加五个附加部分,以创建修改后的命令114。这五个部分包括大小232、第二组命令中的命令234、对应于命令234的地址236、序列号242和对应于命令234的数据238。
48.如图所示,大小232包括对应于辅助命令大小的多个位。在各种实施例中,大小232可以指辅助命令的总大小,仅指辅助命令中包括的数据量,或者这些部分的任何其他合适组合的大小。命令234包括表示用于在计算机系统100上包括的各种设备之间传送数据的第二组命令中的特定命令的多个位。类似于命令218,有效命令234可以包括读命令、写命令和控制命令。与地址222类似,地址236标识计算机系统100中命令234所指向的特定设备(例如,外围设备160a)。注意,地址222和地址236可以彼此独立地确定,因此命令218和命令234可以指向计算机系统100中的两个不同的设备。
49.第二数据238包括要发送给外围设备160a的至少部分数据180。第二组命令的写命令可以限于特定字节数的数据。因此,如果数据180大于该特定数,则可以将其分成多个数据部分,每个数据部分包括在相应的辅助命令中。因此,第二数据238可以表示这些部分之一。在一些实施例中,边带处理器130可以被配置为压缩数据180的至少一些部分,以将更多的数据180包括到第二数据238中。
50.序列号242包括确定命令234在用于传送完整数据集180的第二组的命令系列中的顺序的多个位。例如,如果数据180足够大,需要十个辅助命令来将数据180的全部字节传送到外围设备160a,那么序列号242可以是1-10、0-9等范围内的值。在一些实施例中,可以包括附加值来标识特定的一组辅助命令。例如,如果在数据180被发送到例如系统存储器120之前接收到不同的数据集,则第一组辅助命令可以具有例如100、101、102等序列号。向外围设备160a传送数据180的第二组辅助命令可以具有例如200、201、202等序列号。
51.在其他实施例中,序列号242可以包括相应命令234的优先级的指示。例如,数据180可以包括外围设备160a的程序指令和数据值。程序指令可以被赋予较高的优先级,然后
可以由相应的序列号242来指示。在一些实施例中,可以基于序列中的位置来指示优先级,例如,较低的值具有较高的优先级。在其他实施例中,为了提高将要发送的修改后的命令的优先级,使其高于已发送的命令的优先级,序列号242可以包括特定值,例如在开头或结尾添加特定数字(例如在开头添加“9”,例如9200、9201、9203
……
)。
52.在一些实施例中,序列号242可以被实现为时间戳。例如,特定序列号242可以指示从生成相应的修改后的命令114的特定时间点开始的时钟周期数。时间点可以基于接收与修改后的命令系列114相关联的相应数据集、计算机系统100和/或边带处理器130最后一次被引导或复位的时间点、一天中的时间的指示等。
53.作为如何使用序列号242的示例,边带处理器130向控制器中枢110发送修改后的命令系列114,该命令系列具有包括的每个辅助命令的相应序列号242。在包括在每个修改后的命令114中的相应一个辅助命令完成之后,控制器中枢110将响应发送回边带处理器130。来自控制器中枢110的给定响应可以包括对应的序列号242,从而指示发送的修改后的命令114中的哪个对应于给定响应。
54.如上所述,第二数据238可以被压缩以将更多的数据包括到一个修改后的命令114中。在一些实施例中,边带处理器130可以替代性地或附加地被配置为压缩至少部分辅助命令。例如,辅助命令的五个元素在生成之后可以被压缩以减小修改后的命令114的总体大小。在其他实施例中,辅助命令的部分可以与原始未决的命令的类似部分组合。例如,命令234可以与命令218组合。用于将命令218与命令234组合编码的位数可以少于单独保持这两个命令的位数。
55.注意,图2仅仅是一个示例。尽管命令113和修改后的命令114被示为具有特定部分,但是在其他实施例中,这些部分可以以不同的顺序排列,并且可以包括不同的部分组合(例如,在一些实施例中,可以添加一个或多个附加部分,或者可以省略一个或多个示出的部分)。在一些实施例中,修改后的命令的一个或多个部分可以被压缩和/或与原始命令113的部分组合,以减少修改后的命令114中包括的位数。
56.图1的主板和图2的协议图示了如何实现与计算机系统中的设备共享信息的边带技术。这种边带技术可以用来执行各种功能。一个这样的功能的细节如图3所示。
57.更新操作系统
58.转到图3,示出了计算机系统100的另一实施例的框图。图3的计算机系统100包括先前关于图1描述的元件,包括主cpu 103、控制器中枢110、系统存储器120、边带处理器130和网络接口控制器140。当前os325被示为存储在系统存储器120中,供主cpu 103使用。网络接口控制器140通信耦合到网络350。从网络350接收更新的os 327,以安装在系统存储器120中。如本文所使用的,将os“安装”到系统存储器中包括将os的一个或多个指令和相关数据复制到系统存储器中,使得耦合到系统存储器的处理器可以执行复制的指令来实现os的特征。
59.如先前描述的,主cpu 103被配置为从耦合到主cpu 103的系统存储器120执行当前os 325。主cpu 103可以访问系统存储器120,并且能够读取包括在当前os 325中的指令,以及可以存储在系统存储器120中的其他程序。
60.控制器中枢110被配置为在主cpu 103和包括在计算机系统100中的一个或多个外围设备之间提供接口。一个这样的外围设备是边带处理器130。如图所示,控制器中枢110管
理这些外围设备之间的通信,允许主cpu 103利用更多的带宽来执行当前os 325,而不是使用部分带宽来与外围设备交互。
61.边带处理器130被配置为监视计算机系统100中的主cpu 103和外围设备的各种条件和状态。如图所示,边带处理器130被配置为经由网络接口控制器140与例如网络350中的系统管理员的工作站通信。使用边带处理器130,系统管理员能够监视计算机系统100的操作,并识别是否存在任何妨碍正常操作的问题。
62.当主cpu 103执行当前os 325时,边带处理器130被配置为接收用于更新的os 327的指令。更新的os 327可以包括用于当前os 325的补丁,以例如纠正错误,或者可以是具有增强和/或新特征的全新版本。更新的os 327可以作为一个或多个文件被接收以安装在系统存储器120中。为了安装更新的os 327,边带处理器130向控制器中枢110发送修改后的命令系列314,以将接收到的指令安装到系统存储器120的一个或多个区域中。系统存储器120包括一种或多种类型的存储器,并且每种类型包括一个或多个可以被同时写入的存储体。因此,边带处理器130还被配置为生成修改后的命令314中的特定一个,以包括更新的os 327的接收到的指令的对应部分。一些或全部修改后的命令314包括更新的os 327的相应部分。每个部分可以存储在系统存储器120的不同存储体中,在一些实施例中,允许对系统存储器120的同时写入,从而减少完成安装的时间量。
63.基于修改后的命令314的特定命令,控制器中枢110被配置为将相应部分存储到系统存储器120的所述一个或多个区域中。控制器中枢110可以以与接收到的顺序不同的顺序完成修改后的命令314。由于在安装更新的os 327时,主cpu 103主动执行来自系统存储器120的当前os 325,所以在共享对存储器的访问时,系统存储器120的一些部分可能比其他部分需要更长的时间来访问。由于访问系统存储器120的不同部分的延迟,修改后的命令314即使由控制器中枢110以它们被接收的顺序处理,也可以以不同的顺序完成。控制器中枢110可以对修改后的命令314重新排序,以将更新的os 327的部分优先存储到当前可访问的存储器位置。例如,系统存储器120可以包括可以同时访问的存储器的四个存储体。如果四个存储体中的两个当前正忙于完成主cpu 103的存储器命令,则控制器中枢110可以处理被寻址到另外两个存储体中的位置的修改后的命令314中的多个。
64.如图所示,控制器中枢110响应于完成给定命令,向边带处理器130发送对修改后的命令314的给定命令的给定响应。给定响应可以指示给定命令是否有错地完成,或者可以简单地提供给定命令已被处理的指示。控制器中枢110在给定响应中包括值,该值提供了修改后的命令314中的哪个对应于给定命令的指示。边带处理器130被配置为标识对应于给定响应的修改后的命令系列314中的给定命令。例如,边带处理器130可以发送修改后的命令系列314,每个命令具有相应的标识值。来自控制器中枢110的给定响应包括相应的标识值,从而指示修改后的命令314中的哪个对应于给定命令。
65.在一些实施例中,标识值可以是基于边带处理器130发送给定命令的顺序分配给该命令的索引值。例如,如果修改后的命令314包括100个单独的命令,则每个修改后的命令314可以按照它们被发送的顺序从1-100(或0-99,或任何其他合适的索引约定)进行编号。在其他实施例中,索引值可以包括关于给定命令的附加信息,例如更新的os 327的哪部分被包括在给定命令中的指示。可以包括其他信息,例如,命令的优先级、命令的类型(例如,存储器访问或控制命令)、指示给定命令何时生成的时间戳等。
66.在一些实施例中,边带处理器130配置更新的os 327以对应于计算机系统100的当前状态(例如,设置更新的os以允许继续执行已由先前的os版本执行的一个或多个程序)。当主cpu 103执行当前os 325时,包括在计算机系统100中的各种外围设备可以被置于各种操作状态。一些外围设备可以被启用并完全操作,一些外围设备可以被置于降低功率状态,而其他外围设备可以被断电。为了准备由主cpu 103执行的更新的os327,边带处理器130可以确定这些外围设备的一个或多个状态,并且存储或修改与更新的os 327相关联的值和/或指令,以反映当前状态。例如,图形控制器可以安装在计算机系统100上,并由主cpu 103响应当前os325中包括的指令而使用。边带处理器130修改与更新的os 327相关联的值,以指示图形处理器的当前状态,例如特定显示模式、要显示的下一个图像帧的位置等。
67.在控制器中枢110已处理了全部修改后的命令314并向边带处理器130发送了适当的响应之后,边带处理器130向主cpu 103发送指示,指示安装了更新的os 327。在一些实施例中,该指示使得主cpu 103在不重启的情况下从执行当前os 325切换到执行更新的os 327。通过将更新的os 327配置为对应于计算机系统100的当前状态,主cpu 103能够将执行从当前os 325切换到更新的os 327,而不执行计算机系统100的重启。例如,linux kexec命令可以用于使主cpu 103切换,而不重启。这样的命令可以使用更新的os 327启动新的内核。kexec命令还可以使与当前os 325相关联的正在执行的进程能够与更新的os 327相关联地恢复,而不重启。
68.使用所公开的边带技术来访问计算机系统中设备的存储器位置可以使得更新版本的os能够安装在计算机系统上,而不执行完全重启。如本文所使用的,“完全重启”指的是退出全部打开的进程并在初始化状态下重启os,例如,os表现得好像除了典型的启动序列之外没有进程被启动。例如,在完全重启之后,os可以假设计算机系统中的全部其他电路都处于复位状态,并且没有从os内启动任何进程。计算机系统的完全重启可能使计算机系统停机(例如,无法提供在线服务)几分钟。在支持大量用户的企业系统中,任何每秒执行大量操作的类似系统,几分钟的停机时间都可能对效率产生不期望的影响。例如,如果一万个企业计算机系统需要os升级,那么停机时间可能会非常长,以至于必须(临时或永久地)向企业添加额外的计算机系统来适应升级期间的计算需求(并且因此也可能由于停机时间期间的收入损失而带来成本)。
69.通过使用所描述的边带技术,系统管理员可以有效地远程安装更新版本的os,并且避免了相关联的停机时间的完全重启。在一些实施例中,当处理器从os的当前版本切换到更新版本时,仍然可能会发生一些有限的停机时间。例如,可以执行部分重启来初始化一些不能被边带处理器修改的操作状态。例如,通过例如将文件描述符从os的当前版本复制到更新版本的os,一些活动进程可以退出,而其他进程保持活动。然而,这样的部分重启可能导致比完全重启短得多的停机时间,例如,几分之一秒或几秒,而不是几分钟或更长的延迟。关于从os的当前版本切换到更新版本的os的附加细节将在本公开的后面讨论。
70.注意,图3的示例用于描述所公开的技术。设想了所示计算机系统的变型。例如,尽管示出了两个修改后的命令314,但是在其他实施例中,边带处理器可以发送任何合适数量的命令来使控制器中枢110安装更新的os。如前所述,在一些实施例中,控制器中枢110可以包括在与主cpu103相同的ic中。
71.图3描述了使用所公开的边带技术来更新os。边带技术也可以用于执行其他功能。
图4图示了另一个涉及外围设备驱动程序的这样的功能。
72.更新驱动程序固件
73.前进到图4,示出了计算机系统100的另一实施例的框图。以类似于图3所描绘的方式,图4的计算机系统100包括先前关于图1和图3描述的元件,包括主cpu 103、控制器中枢110、边带处理器130、网络接口控制器140和网络350。计算机系统100还包括外围设备160a-160c(统称为外围设备160)。从网络350接收更新的驱动程序467,用于安装在外围设备160b中。
74.如图所示,主cpu 103被配置为执行一个或多个进程。这些进程可以与操作系统相关联和/或与由主cpu 103执行的其他程序相关联。当执行一个或多个进程时,可以利用所述一个或多个外围设备160。
75.如图所示,外围设备160被配置为利用相应的驱动程序来执行一个或多个操作。在各种实施例中,外围设备160可以对应于任何合适类型的设备,例如图形协处理器、音频协处理器、网络接口、无线接口等,并且可以在计算机系统100的制造期间安装,或者在制造之后安装,例如通过使用包括在计算机系统100的主板中的插口。相应的驱动程序使得每个外围设备160能够执行与每个设备相关联的操作。例如,图形协处理器的驱动程序可以使图形协处理器能够接收图像帧,处理特定显示器的图像帧,并发送要在特定显示器上显示的帧。这样的驱动程序可以具有不时可用的更新,这些更新纠正错误、增强可用特征、启用新特征、和/或提供来自当前驱动程序的其他期望的改变。
76.控制器中枢110和边带处理器130执行如先前描述的任务。此外,边带处理器被配置为在主cpu 103执行所述一个或多个进程时,接收更新的驱动程序467以替换当前驱动程序465。如图所示,更新的驱动程序467将替换当前安装在外围设备160b中的当前驱动程序465。如图所示,外围设备160b包括用于存储驱动程序的存储器,例如非易失性闪速存储器。在其他实施例中,如下面将公开的,计算机系统100可以包括用于存储任何一个或多个外围设备160的驱动程序的非易失性存储器。
77.边带处理器130经由耦合到边带处理器130的网络接口控制器140从网络350接收包括在更新的驱动程序467中的指令。例如,使用耦合到网络350的计算机系统的系统管理员可以安排将更新的驱动程序467发送到计算机系统100,以在特定日期和时间安装,或者在边带处理器130不忙于其他任务时安装。
78.在外围设备160b中安装更新的驱动程序467之前,边带处理器130通知主cpu 103更新的驱动程序467可用于安装。在一些实施例中,发送通知包括经由一个或多个命令向控制器中枢110发送通知。这一个或多个命令使得控制器中枢110向主cpu 103发送通知。边带处理器130从主cpu103(例如,经由控制器中枢110)接收外围设备160b的使用已暂停的确认。暂停使用外围设备160b后,可以允许边带处理器开始安装更新的驱动程序467。
79.在示例中,为了安装更新的驱动程序467,边带处理器130发送修改后的命令414。如图所示,边带处理器130向控制器中枢110发送修改后的命令414,这又使得控制器中枢110将更新后的驱动程序467安装到外围设备160中包括的非易失性存储器中。如上关于图3所述,边带处理器130可以生成修改后的命令414,以包括更新驱动程序467的接收到的指令的相应部分。一些或全部修改后的命令414可以包括更新的驱动程序467的对应部分。此外,边带处理器130在至少一些修改后的命令414中包括标识值。响应于完成修改后的命令414
中给定的一个,控制器中枢110可以向边带处理器130发送指示已执行给定命令的响应,该响应包括标识值。
80.在已执行了修改后的命令414之后,边带处理器130通知外围设备160b安装了更新的驱动程序467。响应于该指示,外围设备160b被配置为利用更新的驱动程序467来执行与该设备相关联的所述一个或多个操作。在一些实施例中,为了便于与外围设备160b通信,边带处理器130编译用于外围设备160b的通信过程,然后将编译的通信过程发送给外围设备160b。使用编译的通信过程,边带处理器130例如经由控制器中枢110向外围设备160b发送一个或多个命令。这一个或多个命令使得外围设备160b使用更新的驱动程序467。
81.在安装更新版本的驱动程序期间,外围设备160b可能不可用。然而,外围设备160中的其他设备可以保持可供主cpu 103使用。在更新的驱动程序467的安装完成之后,外围设备160b可以在不执行系统重启的情况下可用。在其他实施例中,可以执行软重启以将外围设备置于已知状态。
82.类似于前面的描述,使用所公开的边带技术来访问计算机系统的设备的存储器位置可以使得能够为计算机系统中包括的外围设备安装更新版本的驱动程序,而不需要执行计算机系统的完全重启。如上所述,计算机系统的完全重启可能使计算机系统停机一段不期望的时间。通过使用所描述的边带技术,系统管理员可以有效地远程安装更新版本的驱动程序,并且避免相关联的停机时间的完全重启。
83.注意,图4仅仅是计算机系统的一个示例。在其他示例中,可以包括不同数量的外围设备。在一些实施例中,可以包括附加的处理器。尽管示出了一个网络接口,但是可以包括附加的网络接口,并用于连接到不同于所示网络350的网络。
84.图3和图4及其描述图示了使用所公开的边带技术在计算机系统中更新os或驱动程序的实施例。这样的计算机系统的主板的实施例如图5所示,其中,os和驱动程序可以同时更新。
85.组合能力
86.现在转到图5,示出了包括在支持所公开的边带技术的计算机系统中的主板的实施例。主板500包括图1、图3和图4所示的元件,例如主cpu 103、控制器中枢110、系统存储器120、边带处理器130、网络接口控制器140、网络350和外围设备160。主板500还包括处理器插口501、存储器插口522、外围设备插口562、网络接口控制器545和非易失性存储器570。网络接口控制器140耦合到局域网550,而网络接口545耦合到广域网555。
87.主板500可以用于实现图1、图3和图4的计算机系统100。计算机系统的各种实施例利用例如主板500等主板来提供一种机制,以将特定处理器(例如主cpu 103)耦合到包括在计算机系统中的其他电路。如图所示,主板500包括处理器插口501,处理器插口501被配置为接收主cpu 103,主cpu 103又被配置为执行来自系统存储器120的当前os 325。主板500还包括具有一个或多个插口的存储器插口522,这些插口被配置为接收包括在系统存储器120中的相应存储器模块。存储器插口522可以包括一个或多个双列直插式存储器模块(dimm)插口,这些插口被配置为接收符合dimm标准的存储器模块电路板。外围设备插口562被包括在主板500上以接收一个或多个外围设备,这些外围设备可以为计算机系统100启用附加特征和/或可以从主cpu 103卸载处理功能,从而增加主cpu 103执行附加任务和/或更复杂任务的带宽量。外围设备插口562可以包括例如一个或多个外围组件快速互连(pcie)
插口。
88.如图所示,非易失性存储器570包括在主板500上,并且可以用于存储主板500重启时的启动代码。如图所示,非易失性存储器570还用于存储驱动程序软件,包括当前驱动程序465和更新的驱动程序467。在一些实施例中,非易失性存储器570可以包括两个或更多个存储设备,例如嵌入式多媒体卡(emmc)。在这样的实施例中,一个emmc可以用于存储启动代码(例如,基本输入/输出系统或“bios”代码),一个emmc用于存储一个或多个外围设备的驱动程序代码。
89.如图所示,控制器中枢110被配置为提供处理器插口501和外围设备插口562之间的接口。以与先前描述类似的方式,控制器中枢110还被配置为从边带处理器130接收修改后的命令314和414,并且基于接收到的修改后的命令314和414,安装更新后的os 327和更新后的驱动程序467。如图所示,控制器中枢110将更新的os 327安装到系统存储器120的os地址575处。os地址575可以通过各种技术来确定,例如由负责更新的os 327的系统管理员来分配,由主cpu 103基于当前os 325的地址来分配,由边带处理器130基于对系统存储器120的当前状态的分析来分配等。使用如上关于图3所述的边带技术安装更新的os 327。为了使主cpu 103执行更新的os 327,边带处理器130可以向控制器中枢110发送命令,以使控制器中枢110修改存储在非易失性存储器570中的bios代码,以包括更新的os 327的os地址577。
90.除了更新的os 327,控制器中枢110可以安装更新的驱动程序467。如上关于图4所述,更新的驱动程序467被安装到外围设备160b中。在图5的实施例中,更新的驱动程序467被安装到非易失性存储器570中。用于将更新的驱动程序467安装到非易失性存储器570中的边带技术可以与以上关于图4描述的基本相同。
91.在一些实施例中,更新的os 327和更新的驱动程序467的安装可以串行执行,其中任一安装都可首先开始。在其他实施例中,安装的部分可以重叠,并且在某些情况下,整个安装可以同时执行。例如,当更新的os被安装到系统存储器120中时,更新的驱动程序467的安装可以被完整地执行,反之亦然。
92.如图所示,网络接口控制器545是用于将主cpu 103(例如,经由控制器中枢110)耦合到广域网555的网络接口卡(nic)。网络接口控制器545可以在主板500上实现,或者可以在安装在主板500上或者例如使用网卡插口耦合到主板500的单独电路板上实现。在一些实施例中,网络接口控制器545可以包括一个以上的电路,例如以太网卡,该以太网卡安装在主板500上,并且耦合到提供对互联网的访问的有线和/或无线路由器。
93.以类似的方式,网络接口控制器140可以是用于将边带处理器130耦合到局域网550的nic(在主板500上实现或者作为单独的设备安装,例如利用网卡插口)。局域网550可以是在房间内、建筑物内或包括多个建筑物的校园内实现的网络。例如,局域网550可以是一个或多个系统管理员用来管理包括计算机系统100(计算机系统100又包括主板500)的企业计算机系统的操作和维护的可信安全区域的部分。这样的可信安全区域可以限制对边带处理器130的访问,以帮助防止对边带处理器130的未经授权的访问。在一些实施例中,局域网550也可以提供对广域网555的访问。在其他实施例中,网络接口控制器140可以能够绕过局域网550并直接访问广域网555。
94.如图所示,边带处理器130经由网络接口控制器140接收用于更新的os 327的指令
和用于更新的驱动程序467的单独指令,网络接口控制器140耦合到边带处理器130并且与主cpu 103使用的网络接口控制器545分离。使用单独的网络接口(例如网络接口控制器140)来提供更新的os软件和更新的驱动程序代码,可以通过避免使用未经授权的用户可以访问的广域网,向系统管理员提供更安全的方法来提供代码更新。此外,使用单独的网络接口控制器140还可以避免将流量添加到由主cpu 103使用的网络接口控制器545上。在一些实施例中,主板500可以包括在向多个用户提供在线服务的服务器计算机中。在这样的实施例中,网络接口控制器545可能被大量使用,如果os和/或驱动程序更新也被提供在网络接口控制器545上,则可能导致性能瓶颈。
95.注意,图5的实施例仅仅是示例。为了清楚起见,仅示出了用于演示所公开的概念的元件。在其他实施例中,可以包括附加的或不同的元件组合,例如不同数量的外围设备和/或附加的处理器。
96.图3图示了能够使用所公开的边带通信技术更新操作系统的计算机系统的实施例。在图6中,公开了关于这样的计算机系统如何从当前os切换到更新的os的附加细节。
97.系统存储器使用示例
98.现在转到图6,图示了描绘当前安装的os和更新的os的实施例的系统存储器的框图。如图所示,系统存储器120对应于包括在图1、图3和图4的计算机系统100以及图5的主板500中的系统存储器120。当前os325和更新的os 327已安装在系统存储器120中。此外,主cpu 103在执行当前os 325的同时,还可以执行当前存储在系统存储器120中的进程630和640。参考图3和图6,公开了从当前os 325的执行切换到更新的os 327的过程。
99.使用所公开的边带技术来访问计算机系统100中的设备的存储器位置,边带处理器130将更新的os 327安装到系统存储器120的一个或多个区域中,同时主cpu 103继续执行当前os 325。当执行更新的os 327的安装时,主cpu 103可以进一步执行与进程630和640相关联的指令。为了将主cpu 103从执行当前os 325切换到执行更新os 327,更新os 327被进一步修改以支持进程630和640的执行。
100.为了支持进程630和640的执行,边带处理器130可以发送命令,该命令使得将与进程630和640相关联的信息(包括文件描述符636和646)复制到安装了更新的os 327的系统存储器120的所述一个或多个区域中。如图所示,进程630和640各自具有包括在当前os 325中的与这两个进程的执行相关的几条信息。返回指针632和642、变量634和644以及文件描述符636和646是这样的信息的示例。返回指针632和642可以对应于在相应的进程630或640完成之后主cpu 103将要访问的返回地址。变量634和644可以包括分别由进程630和640以及由主cpu 103执行的其他进程使用的一个或多个全局变量。文件描述符636和646包括进程630或640从其接收信息和/或进程630或640向其发送信息的文件或其他系统地址的一个或多个指示。文件描述符636和646可以包括由进程630或640读和/或写的文件名。文件描述符636和646还可以包括信息被发送到的打印机和/或显示器的指示,以及从其接收信息的输入设备的指示。
101.在主cpu 103切换到执行更新的os 327之前,可以将返回指针632和642、变量634和644、文件描述符636和646以及与进程630和640相关联的其他信息中的任何一个或多个复制到系统存储器120中与更新的os 327相关联的位置。使用发送到控制器中枢110的命令,边带处理器130可以标识有效进程,例如在当前os 325的前台或后台保持可操作的进
程,进一步标识与有效进程相关联的信息,然后将相关联的数据复制到与更新的os 327相关联的存储器区域。在更新的os 327已被修改之后,边带处理器130然后可以向主cpu 103发送指示,使得主cpu 103执行更新的os 327。在一些实施例中,边带处理器130可以利用kexec命令(例如,在linux
tm
环境中,或者在unix环境中利用exec命令)来使主cpu 103切换到更新的os 327。更新的os 327然后可以使用先前由当前os 325使用的文件描述符636和646以及进程630和640。
102.注意,图6的系统存储器是用于演示所公开的概念的示例。在其他实施例中,可以包括不同数量的进程。在一些实施例中,可以包括与进程相关联的不同信息集,并将其复制到更新的os。
103.图6描述了与从os的当前版本复制到更新版本的os的进程相关联的信息。在一些实施例中,为了切换到更新版本的os,可以用与安装在计算机系统中的外围设备的操作相关联的信息来修改更新版本的os。图7图示了这样的实施例。
104.现在前进到图7,示出了描绘当前安装的os和更新的os的实施例的系统存储器的框图。以类似于图6所示的方式,系统存储器120对应于包括在图1、图3和图4的计算机系统100以及图5的主板500中的系统存储器120。当前os 325和更新的os 327已安装在系统存储器120中。此外,外围设备750和760包括在计算机系统100中。与当前os 325相关联的各种存储器位置包括与外围设备750和760的使用相关联的值。参考图3和图7,公开了用于从当前os 325的执行切换到更新的os 327同时保持外围设备750和760的操作的过程。
105.当主cpu 103执行当前os 325时,边带处理器130使用所公开的边带技术将更新的os 327安装到系统存储器120的一个或多个区域中。如图所示,将主cpu 103从执行当前os 325切换到执行更新的os 327包括将与外围设备750和760相关联的值传送到更新的os 327。外围设备750和760可以独立地包括一个或多个寄存器和/或缓冲器。这些寄存器和缓冲器可以在分别包括在外围设备750和760中的电路中实现,和/或可以包括在用于操作外围设备的驱动软件中。在一些实施例中,当前os 325保持这些寄存器和缓冲器的最后已知值的本地副本。这些寄存器和缓冲器包括控制寄存器752和762、状态寄存器754和764以及缓冲器756和766。当前os 325可以使用控制寄存器752和762来操作外围设备750和760。例如,在一些实施例中,外围设备750可以是用于与其他计算机系统通信的网络接口卡(nic)。因此,控制寄存器752可以允许主cpu 103为特定数据速率(例如,480mbps或1.0gbps等)、特定通信协议(例如,802.11a或802.11n等)配置nic,以选择特定电源模式(例如,始终开启、空闲时休眠等),以及其他这样的设置。以类似的方式,状态寄存器754可以指示nic的特定条件,例如空闲通信信道、数据分组传输的完成、数据分组的接收等。缓冲器756可以包括传输缓冲器和接收缓冲器,分别用于在发送和接收之前存储数据分组。
106.在这样的实施例中,从当前os 325切换到更新的os 327包括在安全状态下停止主cpu 103,确定外围设备750和760的当前状态,然后修改更新的os 327的指令以对应于外围设备750和760的当前状态。例如,边带处理器130可以发送使主cpu 103暂停操作的命令。在一些实施例中,暂停操作允许边带处理器130确定外围设备750和760的当前状态。边带处理器130可以通过向控制器中枢110发送命令,直接从外围设备和/或从与当前os 325相关联的系统存储器120读取寄存器和缓冲器。在读取寄存器和缓冲器中的值之后,边带处理器130可以将这些值复制到系统存储器120的与更新的os 327相关联的区域中,和/或可以修
改更新的os 327的一些指令,以对应于外围设备750和760的当前状态。
107.注意,图7的实施例是一个示例。在其他实施例中可以包括不同数量的外围设备。在一些实施例中,可以包括用于每个外围设备的不同组的寄存器和缓冲器。
108.图1-5描述了用于实现对计算机系统的边带通信的系统和技术。图8图示了当更新os版本和驱动程序版本时命令流如何发生的示例。
109.命令和响应流程
110.转到图8,图示了支持边带命令的计算机系统的实施例。计算机系统100包括对用于更新外围设备驱动程序和os版本的命令流的描绘。计算机系统100包括先前描述的元件,包括边带处理器130、控制器中枢110、系统存储器120和非易失性存储器570。边带处理器130向控制器中枢110发送命令系列813和命令系列814。命令系列813包括用于安装更新的os 327的三个命令(os1、os2和os 3),而命令系列814包括用于为外围设备(dr4、dr5和dr6)安装更新的驱动程序467的三个命令。
111.根据实施例,边带处理器130经由网络接口控制器140从例如系统管理员接收更新的os 327和更新的驱动程序467。边带处理器130通过生成每个命令系列的特定命令来准备命令系列813和814,以包括相应的接收到的指令的相应部分。例如,命令os2可以使控制器中枢110将更新的os 327的相应部分存储到系统存储器120的一个或多个区域中。类似地,命令dr5可以使控制器中枢110将更新的驱动程序467的相应部分存储到非易失性存储器570的与和更新的驱动程序467相关的特定外围设备相关联的部分中。
112.生成每个命令系列可以包括为每个系列的每个命令设置相应的标识值。如图所示,命令系列813中的每一个都用不同的数字1、2和3来索引。类似地,命令系列814中的每一个都用不同的数字4、5和6来索引。尽管在本示例中使用了整数值,但是可以利用任何合适的方法来生成标识值。例如,可以使用字母字符以及复合标识符。在一些实施例中,第一值可以表示特定命令序列,第二值表示该序列中的特定命令,例如,a1、a2和a3用于命令os1、os2和os3,b1、b2、b3用于命令dr4、dr5和dr6。边带处理器130将生成的命令发送到控制器中枢110。在一些实施例中,边带处理器可以在发送命令系列814的第一命令之前发送命令系列813的全部命令。在其他实施例中,边带处理器130可以认识到命令系列813可能需要一些时间来完成传输,从而会重叠地进行命令的传输,使得命令系列814的一个或多个命令在命令系列813的最后一个命令被发送之前被发送。
113.在接收到命令系列813中的一个或多个命令之后,控制器中枢110对接收到的命令进行解码,并准备好命令系列815以发送到系统存储器120。在一些实施例中,边带处理器130和控制器中枢110之间的命令结构可以不同于控制器中枢110和耦合到控制器中枢110的各种存储器或设备之间的命令结构。例如,从控制器中枢110发送到系统存储器120的命令系列815包括六个命令,而对应的命令系列813包括三个命令。
114.为了处理命令系列813,控制器中枢110为命令系列815的每个命令生成一个或多个命令。如图所示,控制器中枢110生成命令os1a和os1b来执行命令系列813中的命令os1。生成命令os2a来执行系列813的命令os2。生成命令os3a、os3b和os3c来执行系列813的命令os3。命令系列815的命令可以将更新的os 327的部分指令存储到系统存储器120中的相应位置,和/或可以包括与存储更新的os 327相关的系统存储器120的控制命令。
115.为了减少执行命令系列815的时间量,控制器中枢110可以以不同于接收命令的顺
序来处理命令。如图所示,边带处理器被配置为以第一顺序向控制器中枢110发送命令系列813:os1,os2,然后是os3。然而,控制器中枢110可以以与接收命令系列813的顺序不同的顺序来完成命令系列815。在本示例中,os1a首先被发送到系统存储器120,随后是os2a、os3a、os1b、os3b和os3c。因此,可以按照先os2,接着是os1,然后是os3的顺序完成命令系列813。此外,在接收到命令系列814之后,控制器中枢110生成单个命令816(dr456)以将更新的驱动程序467存储在非易失性存储器570中。控制器中枢110可以在完成命令系列815之前将dr456发送到非易失性存储器570。如图所示,命令dr456在命令os1b之后和命令os3c之前完成,使得系列813和814的命令以os2、os1、dr4、dr5、dr6、然后os3的顺序完成。
116.根据实施例,在给定命令已完成处理之后,控制器中枢110向边带处理器130发送对应的命令响应817。命令响应817可以提供由边带处理器130发送的对应命令已完成的指示。在一些情况下,命令响应817中的特定一个可以包括附加信息,例如对应的命令是否成功完成。在一些情况下,来自边带处理器130的命令可以包括对数据或其他信息的请求(例如,给定命令或命令系列的状态,或者对校验和或可以用于确认先前发送的命令成功完成的其他值的请求)。
117.如图所示,边带处理器130接收对应于命令系列813和814中的多个的命令响应817。控制器中枢110在每个命令响应817中包括标识命令系列中的相应一个的特定标识值。例如,控制器中枢110可以在给定的命令响应817中包括与边带处理器130在命令系列813和814中的相应一个中使用的索引值相同的索引值,例如将“2”加到对应于命令os2的命令响应中。
118.边带处理器130从控制器中枢110接收给定的一个命令响应817,并确定对应于给定命令响应的命令系列813或814中相应的一个。为了确定对应于接收到的命令响应的相应命令,边带处理器130可以将所包括的索引值与用于相应命令的索引值进行匹配。因此,边带处理器130可以被配置为保持发送的命令及其相应索引值的列表,至少直到接收到指示发送的命令已被成功执行的对应响应。
119.注意,图8的计算机系统是如何执行从边带处理器到控制器中枢的命令流的一个示例。图8仅仅描绘了用于演示所公开的概念的元件。其他实施例可以包括由边带处理器130发送的命令的不同数量的目的地。例如,在一些实施例中,更新的驱动程序可以被发送到外围设备(而不是非易失性存储器570或者除了非易失性存储器570之外)。
120.图1-8图示了实现用于处理与计算机系统管理相关的命令的边带通信技术的计算机系统的框图。这样的系统可以使用各种方法来执行所公开的任务。图9-11图示了三种这样的方法。
121.示例性方法
122.转到图9,图示了用于在计算机系统中实现边带命令协议的方法的实施例的流程图。方法900可以由计算机系统执行,例如图1、图3-5和图8中的计算机系统100。更具体地,方法900可以由计算机系统100中的边带处理器130通过例如访问其上存储有程序指令的非暂时性计算机可读介质来执行,所述程序指令可由边带处理器130执行以引起关于图9描述的操作。同时参考图1和图9,方法900从方框910开始。
123.方法900包括在框910,由边带处理器130使用第一组命令来监视计算机系统100的多个操作条件,其中,第一组命令是利用特定命令协议通过通信总线117发送的。利用第一
组命令,边带处理器130能够监视例如以下的任何一个或多个:计算机系统100的操作温度、一个或多个电源节点的电压等级、主cpu 103的当前工作负荷、正在通过外围设备160的数据流量、当前可用的系统存储器120的量等。为了监视操作条件,边带处理器130利用第一组命令,当由控制器中枢110执行时,该第一组命令导致表示各种操作条件的值被控制器中枢110接收,控制器中枢110又将接收到的值发送到边带处理器130。第一组命令中的各个命令由边带处理器130串行发送到控制器中枢110。然后,可以按照与发送命令的顺序相对应的顺序,从控制器中枢110接收包括表示相应操作条件的值的响应。
124.在框920,方法900还包括由边带处理器130接收计算机系统100中的特定设备(例如,外围设备160a)的数据180。边带处理器130经过修改,从而除了支持第一组命令外,还支持第二组命令。边带处理器的这种修改可以由计算机系统100的制造商、计算机系统100中包括的主板的制造商、拥有和/或操作计算机系统100的实体或者任何其他有资格的实体来执行。如上参考图1所述,第二组命令可以增加边带处理器130访问计算机系统100中包括的各种设备的存储器和/或寄存器的能力。用于监视计算机系统100的操作条件的第一组命令可以提供访问各种设备的存储器和寄存器的有限能力。在一些实施例中,第一组命令可以限于访问与制造商安装在计算机系统100中包括的主板上的设备相关联的特定组值。通过修改边带处理器130来执行第二组命令,边带处理器130可以访问计算机系统100中的大量设备,并且还可以更多地访问这些设备中包括的存储器位置。
125.接收到的数据180可以包括比第二组命令中的单个命令中能够包括的数据更多的数据。在这样的情况下,边带处理器130可以将数据180分成多个部分,每个部分被包括在第二组的一个命令中。除了将数据180分成多个部分之外,或者代替将数据180分成多个部分,边带处理器130可以压缩数据180的全部或部分,作为将更多数据包括到第二组命令中的技术。
126.边带处理器130可以经由网络接口控制器140从系统管理员接收数据180。网络接口控制器140可以是不同于主cpu 103所使用的网络接口卡。因此,系统管理员能够从远程位置向计算机系统100的一个或多个设备发送数据。这可以进一步允许系统管理员在位于各个远程位置的计算机系统上执行类似的任务。
127.在框930,方法900包括由边带处理器130修改第一组命令中的第一命令,以包括第二组命令中的第二命令,其中,第二命令包括与外围设备160a相关联的地址和至少部分数据180。方法900包括向外围设备160a发送数据180,而不干扰边带处理器130的监视操作。边带处理器130的主要功能可以是监视计算机系统100的操作条件。因此,第二组命令中的命令的执行可以以不妨碍第一组命令的执行的方式来执行。为了执行第二组命令,边带处理器130利用第一组命令,修改第一组的未决的第一命令以包括与第二组命令相关联的信息,作为单个命令发送到控制器中枢110,并利用用于第一组命令中的命令的现有通信协议。可以使用如上关于图2所述的技术来修改第一命令以包括第二命令。
128.在一些实施例中,修改第一命令以包括第二命令包括使用边带处理器130的直接存储器存取电路(dma)。例如,未决的第一命令可以在边带处理器130的接口电路中排队。该接口电路可以对经由通信总线117发送到控制器中枢110的命令进行排队。边带处理器130使用dma将与第二命令相关联的数据与第一命令一起发送到接口电路的队列中,以修改第一命令从而包括第二命令的方式存储第二命令的数据。然后,接口电路可以将修改后的第
一命令视为单个命令。在一些实施例中,边带处理器可以在修改第一命令之前或同时进一步压缩至少部分第二命令。
129.在框940,方法900包括由边带处理器130使用特定命令协议通过通信总线117向控制器中枢110发送修改后的命令114。如上所述,边带处理器130的接口电路可以经由特定通信总线发送修改后的第一命令。所描述的边带技术可以将主cpu 103排除在修改后的第一命令的处理之外,从而减少或避免由于从边带处理器130向外围设备160a传送数据180而对计算机系统100的用户造成的性能影响。
130.在一些实施例中,第二命令使得数据180的该部分被存储在计算机系统100的系统存储器120中。在这样的实施例中,方法900可以包括由边带处理器130使用刚刚描述的技术修改第一组命令中的第三命令,以包括第二组命令中的第四命令。然后,边带处理器130可以使用特定命令协议通过通信总线117将修改后的第三命令发送给控制器中枢110。当执行该第四命令时,可以使外围设备160a从系统存储器120复制数据180的该部分。
131.在执行第一命令之后,控制器中枢110在第一时间向边带处理器130发送对第一命令的第一响应。类似地,在第一时间之后的第二时间执行第二命令之后,控制器中枢110向边带处理器130发送对第二命令的第二响应。边带处理器130可以通过使用包括在第二响应中的对应于第二命令的标识值来确定第二响应对应于第二命令。
132.注意,方法900是用于实现边带命令协议的方法的一个示例。该方法可以返回到框910,边带处理器130继续监视所述一个或多个操作条件。响应于接收到计算机系统100中特定设备的另一组数据,可以重复方法900的剩余部分。尽管方法900的描述中包括四个框,但是可以执行任何合适数量的框。例如,在其他实施例中,用于将数据180分成多个部分和/或压缩数据180的附加框可以作为单独的框被包括在内。
133.前进到图10,示出了使用边带命令协议来更新计算机系统的操作系统的方法的实施例的流程图。方法1000可以由计算机系统(例如,图1、图3-5和图8中的计算机系统100)来执行。以与上述类似的方式,计算机系统100可以访问其上存储有程序指令的非临时性计算机可读介质,这些程序指令可由计算机系统100执行,以引起关于图10描述的操作。在一些实施例中,方法1000可以利用方法900的一个或多个操作来执行的至少部分所描述的操作。同时参考图3和图10,方法1000的操作开始于方框1010。
134.在框1010,方法1000包括由计算机系统100的主cpu 103执行来自耦合到主cpu 103的系统存储器120的当前os 325。主cpu 103可以访问系统存储器120,并且能够读取包括在当前os 325中的指令,以及可以存储在系统存储器120中的其他程序。当前os 325可以对应于任何合适的操作系统,例如windows
tm
或linux
tm

135.方法1000还包括在框1020,由计算机系统100的边带处理器130经由网络350接收用于更新版本的os(更新的os 327)的指令。更新的os327可以是具有不同特征的全新操作系统,可以是具有新的和/或增强的特征的当前os 325的新版本,或者可以是当前os 325中的错误修复的补丁。在某些情况下,例如,更新的os 327可以是当前os 325的旧版本的回滚,以解决当前os 325的操作问题。更新的os 327可以作为一个或多个文件被接收以安装在系统存储器120中。
136.在框1030,方法1000还包括,当主cpu 103执行当前os 325时,由边带处理器130向控制器中枢110发送修改后的命令系列314,该命令使得控制器中枢110将接收到的指令存
储到系统存储器120的一个或多个区域中。为了安装更新的os 327,边带处理器130向控制器中枢110发送修改后的命令314。如上所述,一些或全部修改后的命令314可以包括更新的os 327的对应部分。每个部分可以存储在系统存储器120的不同存储体中,在一些实施例中,允许对系统存储器120的同时写入,从而减少完成安装的时间量。如关于图8所示,修改后的命令314使控制器中枢110执行包括将更新的os 327安装到系统存储器120的与更新的os 327相关联的所述一个或多个区域中的动作。
137.在框1040,方法1000还包括由边带处理器130使主cpu 103在不重启的情况下,从执行当前os 325切换到执行更新的os 327。在控制器中枢110已向边带处理器130发送指示全部修改后的命令314已完成的响应之后,边带处理器130向主cpu 103发送指示,指示已安装了更新的os327。响应于该指示,主cpu 103可以在不重启的情况下从执行当前os325切换到执行更新的os 327。如上所述,主cpu 103能够从执行当前os 325切换到执行更新的os 327,而不执行计算机系统100的重启。例如,linux kexec命令可以用于使主cpu 103切换到更新的os 327,而无不重启。kexec命令还可以使得与当前os 325相关联地执行的进程能够改为与更新的os 327相关联地执行,而不执行重启。
138.注意,图10所示的方法是一个示例。方法1000可以在框1040的操作完成之后结束,或者可以重复安装另一更新版本的os。尽管以顺序示出,但是方法1000的两个或更多操作可以以不同的顺序或重叠的方式执行。例如,可以继续执行框1020的操作(例如,可以继续接收用于更新版本的os的指令),同时启动框1030的操作(例如,发送用于安装更新版本的os的命令)。
139.现在转到图11,示出了使用边带命令协议来更新外围设备的驱动程序的方法的实施例的流程图。方法1100可以由例如图1、图3-5和图8中的计算机系统100等计算机系统以例如上面公开的方式来执行。例如,计算机系统100可以访问其上存储有程序指令的非暂时性计算机可读介质,该程序指令可由计算机系统100执行,以引起关于图11描述的操作。以与针对方法1000描述的方式类似的方式,方法1100可以利用方法900的一个或多个操作来执行至少部分所描述的操作。同时参考图5和图11,方法1100从方框1110开始。
140.在框1110,方法1100包括由计算机系统100的主cpu 103执行一个或多个进程。所执行的进程可以与当前os 325相关联和/或与由主cpu103执行的其他程序相关联。例如,主cpu 103可以执行图6所示的进程630和640。当执行一个或多个进程时,主cpu 103也可以利用所述一个或多个外围设备160。
141.在框1120,方法1100包括由主cpu 103使用耦合到计算机系统100的外围设备160中的特定一个,其中,外围设备160利用特定版本的相应驱动程序。相应的驱动程序使得每个外围设备160能够执行与每个设备相关联的操作。这样的驱动程序可以不时地更新。这些更新(例如更新的驱动程序467)纠正错误,增强可用特征,启用新特征,和/或提供来自例如当前驱动程序465等当前驱动程序的其他期望的改变。
142.方法1100还包括在框1130,由包括在计算机系统100中的边带处理器130经由局域网550接收更新的驱动程序467以替换当前驱动程序465的指令。如图所示,更新的驱动程序467将替换当前安装的由外围设备160之一(例如外围设备160c)使用的当前驱动程序465。如图所示,计算机系统100包括非易失性存储器570,用于存储任何一个或多个外围设备160的驱动程序。边带处理器130可以经由网络接口控制器140从局域网550接收包括在更新的
驱动程序467中的指令。例如,使用耦合到局域网550的计算机系统的系统管理员可以将更新的驱动程序467发送到计算机系统100进行安装。
143.在框1140,方法1100包括由边带处理器130使主cpu 103暂停使用外围设备160c。边带处理器130可以通过例如经由一个或多个命令向控制器中枢110发送通知来通知主cpu 103更新的驱动程序467可用于安装。这一个或多个命令可以使控制器中枢110向主cpu 103发送通知。边带处理器130从主cpu 103(例如,经由控制器中枢110)接收外围设备160c的使用已暂停的确认。响应于接收到该确认,边带处理器可以开始安装更新的驱动程序467。
144.在框1150,方法1100还包括,当主cpu 103执行所述一个或多个进程时,由边带处理器130发送修改后的命令系列414,以安装用于更新的驱动程序467的指令。边带处理器130向控制器中枢110发送修改后的命令414,这又使得控制器中枢110将更新后的驱动程序467安装到非易失性存储器570中。以如上关于图8所述的方式,边带处理器130可以生成修改后的命令414,以包括更新驱动程序467的接收到的指令的相应部分。一些或全部修改后的命令414可以包括更新的驱动程序467的对应部分。如前所述,标识值可以被包括在至少一些修改后的命令414中,并且来自控制器中枢110的响应可以包括该标识值,使得边带处理器130可以标识与来自控制器中枢110的给定响应相对应的修改后的命令414中的特定一个。
145.边带处理器130还可以在执行了修改后的命令414之后,通知外围设备160c安装了更新的驱动程序467。响应于该通知,外围设备160c可以利用更新的驱动程序467来执行与该设备相关联的所述一个或多个操作。在一些实施例中,为了与外围设备160c通信,边带处理器130编译通信过程,然后将编译的通信过程发送到外围设备160c,从而实现通信。在一些实施例中,使用编译的通信过程,边带处理器130经由控制器中枢110向外围设备160c发送一个或多个命令。这一个或多个命令使得外围设备160c使用更新的驱动程序467。
146.在框1160,方法1100还包括边带处理器130通知主cpu 103外围设备160c可供使用。在安装更新的驱动程序467期间,外围设备160c可能不可用。在一些实施例中,外围设备160中的其他外围设备可以保持可供主cpu 103使用。在更新的驱动程序467的指令已被安装在非易失性存储器570中之后,外围设备160c可供使用。在一些实施例中,在不执行系统重启的情况下安装更新的驱动程序467,而在其他实施例中,执行部分重启以将外围设备160c置于已知状态。在外围设备160c被确定为可用之后,边带处理器130向主cpu 103发送外围设备160c可供使用的通知(例如,经由发送到控制器中枢110的命令)。
147.注意,图11的方法1100仅仅是演示所公开的概念的示例。在一些实施例中,方法1100可以重复安装另一更新版本的驱动程序。在一些实施例中,方法1100的两个或多个操作可以以不同的顺序或重叠的方式执行。例如,在执行框1140的操作的同时,可以继续执行框1130的操作,从而允许边带处理器发送请求,请求处理器暂停外围设备的使用,同时继续接收更新版本的驱动程序的指令。
148.示例性计算机系统
149.现在参考图12,描绘了示例计算机系统1200的框图,该示例计算机系统可以实现一个或多个计算设备,例如图1、图3-5和图8中的计算机系统100。计算机系统1200包括经由互连1280(例如,系统总线)耦合到系统存储器1240和i/o接口1260的处理器子系统1220。i/o接口1260耦合到一个或多个i/o设备1270。计算机系统1200可以是各种类型的设备中的任
何一种,包括但不限于服务器计算机系统、个人计算机系统、台式计算机、膝上型或笔记本计算机、大型计算机系统、在数据中心设施中操作的服务器计算机系统、平板计算机、手持计算机、工作站、网络计算机等。尽管为了方便起见,在图12中示出了单个计算机系统1200,但是计算机系统1200也可以被实现为一起操作的两个或更多个计算机系统。
150.处理器子系统1220可以包括一个或多个处理器或处理单元(例如主cpu 103),并且在一些实施例中,可以包括图1、图3、图4-5的边带处理器130。在计算机系统1200的各种实施例中,处理器子系统1220的多个实例可以耦合到互连1280。在各种实施例中,处理器子系统1220(或1220内的每个处理器单元)可以包含缓存或其他形式的在板存储器。
151.系统存储器1240可用于存储可由处理器子系统1220执行的程序指令,以使计算机系统1200执行本文描述的各种操作。在一些实施例中,系统存储器1240对应于或包括图1、图3和图5-8的系统存储器120。系统存储器1240可以使用不同的物理、非暂时性存储介质来实现,例如硬盘存储、软盘存储、可移动磁盘存储、闪速存储器、随机存取存储器(ram-sram、edo ram、sdram、ddr sdram、rambus ram等)、只读存储器(prom、eeprom等),等等。计算机系统1200中的存储器不限于例如系统存储器1240的主存储。更确切地说,计算机系统1200还可以包括其他形式的存储,例如处理器子系统1220中的缓冲存储器和i/o设备1270(例如,硬盘驱动程序、存储阵列等)上的辅助存储。在一些实施例中,这些其他形式的存储也可以存储可由处理器子系统1220执行的程序指令。
152.如所示,i/o接口1260可以是被配置为耦合到其他设备并与之通信的各种类型的接口中的任何一种。在一些实施例中,i/o接口1260对应于图1、图3-5和图8的控制器中枢110。i/o接口1260可以经由一个或多个对应的总线或其他接口耦合到一个或多个i/o设备1270。i/o设备1270的示例包括存储设备(硬盘驱动程序、光驱、可移动闪存驱动程序、存储阵列、san或其相关联的控制器)、网络接口设备(例如,如图5所示的网络接口控制器140和545)或其他设备(例如,图形、用户接口设备等)。在一个实施例中,i/o设备1270包括网络接口设备(例如,被配置为通过wifi、蓝牙、以太网等进行通信),并且计算机系统1200经由网络接口设备耦合到网络。
153.本技术主题的实现包括但不限于以下示例1至40。
154.1.一种方法,包括:
155.由计算机系统的处理器执行来自耦合到所述处理器的系统存储器的特定操作系统(os);
156.由计算机系统的边带处理器经由网络接收用于更新版本的os的指令;
157.当处理器执行特定os时,由边带处理器向控制器中枢发送命令系列,使控制器中枢将接收到的指令存储到系统存储器的一个或多个区域中;以及
158.由所述边带处理器使所述处理器在不重启的情况下从执行所述特定os切换到执行所述更新版本的os。
159.2.根据示例1所述的方法,其中,使处理器执行更新版本的os包括修改非易失性引导存储器以包括更新版本的os的地址。
160.3.根据示例1所述的方法,其中,在不重启的情况下使处理器切换包括使用linux kexec命令。
161.4.根据示例1所述的方法,还包括由更新版本的os使用特定os先前使用的文件描
述符和进程。
162.5.根据示例1所述的方法,其中,使处理器执行更新版本的os包括:
163.在安全状态下停止处理器;
164.确定包括在计算机系统中的外围设备的当前状态;以及
165.修改用于更新版本的os的指令以对应于外围设备的当前状态。
166.6.根据示例1所述的方法,还包括生成所述命令系列中的特定命令,以包括接收到的指令的相应部分,其中,所述特定命令使所述控制器中枢将所述相应部分存储到所述系统存储器的一个或多个区域中。
167.7.根据示例1所述的方法,其中,发送所述命令系列以存储接收到的指令包括发送所述命令系列以及每个命令相应的标识值;以及
168.由所述边带处理器接收对所述命令系列中的多个的响应,其中,特定响应包括标识所述命令系列中的相应一个命令的相应标识值。
169.8.根据示例1所述的方法,其中,接收用于更新版本的os的指令包括经由网络接口卡接收指令,所述网络接口卡耦合到边带处理器并且与处理器使用的网络接口卡分离。
170.9.一种其上存储有指令的非暂时性计算机可读介质,所述指令可由包括在计算机系统中的边带处理器执行,以执行操作,所述操作包括:
171.同时,包括在计算机系统中的处理器执行特定操作系统(os):
172.接收更新版本的os的指令;以及
173.发送命令系列以将接收到的指令存储到耦合到处理器的系统存储器的一个或多个区域中;
174.配置更新版本的os以对应于计算机系统的当前状态;以及
175.使得处理器执行来自系统存储器的所述一个或多个区域的更新版本的os。
176.10.根据示例9所述的非暂时性计算机可读介质,其中,发送所述命令系列包括向控制器中枢发送所述命令系列,其中,所述命令系列被配置为使得所述控制器中枢将接收到的指令存储到所述系统存储器的所述一个或多个区域中。
177.11.根据示例10所述的非暂时性计算机可读介质,还包括生成所述命令系列中的特定命令以包括接收到的指令的相应部分,其中,所述特定命令被配置为使得所述控制器中枢将所述相应部分存储到所述系统存储器的一个或多个区域中。
178.12.根据示例10所述的非暂时性计算机可读介质,还包括:
179.从控制器中枢接收给定的响应;以及
180.确定对应于给定响应的命令系列中的相应一个。
181.13.根据示例9所述的非暂时性计算机可读介质,还包括采集计算机系统的一个或多个外围设备的操作状态。
182.14.根据示例13所述的非暂时性计算机可读介质,其中,配置更新版本的os包括修改更新版本的os的一个或多个指令以对应于所述一个或多个外围设备的操作状态。
183.15.一种装置,包括:
184.一种主板系统,包括:
185.处理器插口,其被配置为接收处理器,所述处理器被配置为从耦合到所述处理器插口的系统存储器执行特定操作系统(os);
186.控制器中枢,其被配置为在处理器插口和一个或多个外围插口之间提供接口,所述一个或多个外围插口被配置为接收相应的外围设备;以及
187.包括在主板系统中的边带处理器,其被配置为:
188.当处理器执行特定os时:
189.接收更新版本的os的指令;
190.向控制器中枢发送命令系列,以将接收到的指令安装到系统存储器的一个或多个区域中;以及
191.向处理器插口发送安装了更新版本的os的指示。
192.16.根据示例15所述的装置,还包括耦合到所述边带处理器的网络接口控制器,其中,所述边带处理器还被配置为经由所述网络接口控制器接收用于所述更新版本的os的指令。
193.17.根据示例16所述的装置,还包括耦合到处理器插口的不同的网络接口控制器。
194.18.根据示例15所述的装置,其中,所述处理器还被配置为响应于所述指示,执行所述更新版本的os。
195.19.根据示例15所述的装置,其中,所述边带处理器还被配置为生成所述命令系列中的特定命令,以包括接收到的指令的相应部分;以及
196.其中,所述控制器中枢还被配置为基于所述特定命令,将所述相应部分存储到所述系统存储器的所述一个或多个区域中。
197.20.根据示例15所述的装置,其中,所述控制器中枢还被配置为:
198.以不同于接收所述系列命令的顺序完成所述系列命令;以及
199.响应于完成给定命令,向边带处理器发送对所述系列给定命令的给定响应;并且
200.其中,所述边带处理器还被配置为标识与给定响应相对应的命令系列中的给定命令。
201.21.一种方法,包括:
202.由计算机系统的处理器执行一个或多个进程;
203.由处理器使用耦合到计算机系统的外围设备,其中,外围设备利用特定版本的驱动程序;
204.由包括在计算机系统中的边带处理器经由网络接收更新版本的驱动程序的指令,以替换特定版本的驱动程序;
205.由边带处理器使处理器暂停外围设备的使用;
206.当处理器执行所述一个或多个进程时,由边带处理器发送命令系列,以安装用于更新版本的驱动程序的指令;以及
207.由边带处理器通知处理器外围设备可供使用。
208.22.根据实施例21所述的方法,还包括:
209.由边带处理器编译用于外围设备的通信过程;以及
210.将编译的通信过程发送到外围设备。
211.23.根据实施例22所述的方法,还包括由边带处理器使用编译的通信过程向外围设备发送一个或多个命令,其中,所述一个或多个命令使得外围设备使用更新版本的驱动程序。
212.24.根据实施例21所述的方法,还包括:
213.由控制器中枢从边带处理器接收命令系列;以及
214.由所述控制器中枢基于所述命令系列将所述更新版本的驱动程序的指令存储到包括在所述外围设备中的非易失性存储器中。
215.25.根据实施例24所述的方法,其中,使处理器暂停外围设备的使用并通知处理器外围设备可供使用包括由边带处理器经由控制器中枢向处理器发送命令。
216.26.根据示例21所述的方法,其中,在安装更新版本的驱动程序的指令期间,外围设备不可用;并且
217.其中,在更新版本的驱动程序的指令的安装完成之后,外围设备可用,而不进行系统重启。
218.27.根据示例21所述的方法,其中,经由网络接收用于更新版本的驱动程序的指令包括经由网络接口卡接收指令,所述网络接口卡耦合到边带处理器并且与处理器使用的网络接口卡分离。
219.28.根据实施例21所述的方法,其中,发送所述命令系列包括:为所述命令系列中的每个命令设置相应的标识值;以及
220.由所述边带处理器接收对所述命令系列中的多个的响应,其中,特定响应包括标识所述命令系列中的相应一个命令的特定标识值。
221.29.一种非暂时性计算机可读介质,其上存储有指令,所述指令可由包括在计算机系统中的边带处理器执行,以执行操作,所述操作包括:
222.当计算机系统的处理器执行特定操作系统(os)时:
223.经由网络接收更新版本的驱动程序,以替换为计算机系统的外围设备而安装的特定版本的驱动程序;
224.发送命令系列,以安装更新版本的驱动程序;以及
225.通知外围设备更新版本的驱动程序可供使用。
226.30.根据示例29所述的非暂时性计算机可读介质,还包括:
227.通知处理器更新版本的驱动程序可用于安装;以及
228.从处理器接收外围设备的使用已暂停的确认。
229.31.根据示例29所述的非暂时性计算机可读介质,还包括:
230.编译用于外围设备的通信过程;
231.将编译的通信过程发送到外围设备;以及
232.使用编译的通信过程向外围设备发送一个或多个命令,其中,所述一个或多个命令使得外围设备使用更新版本的驱动程序。
233.32.根据示例29所述的非暂时性计算机可读介质,其中,发送所述命令系列包括向控制器中枢发送所述命令系列,其中,所述命令系列被配置为使得所述控制器中枢安装所述更新版本的驱动程序。
234.33.根据示例32所述的非暂时性计算机可读介质,还包括:
235.从控制器中枢接收给定的响应;以及
236.确定对应于给定响应的命令系列中的相应一个。
237.34.根据示例33所述的非暂时性计算机可读介质,其中,确定相应的一个包括在发
送之前将相应的标识值添加到所述系列的至少一些命令,其中,所述给定响应包括标识与所述给定响应相对应的命令系列中的相应一个的给定标识值。
238.35.一种装置,包括:
239.主板系统,所述主板系统包括:
240.处理器插口,其被配置为接收被配置为执行一个或多个进程的处理器;
241.非易失性存储器;
242.外围设备插口,其被配置为接收外围设备,所述外围设备被配置为从非易失性存储器利用特定版本的驱动程序来执行一个或多个操作;以及
243.边带处理器,其被配置为:
244.当处理器执行所述一个或多个进程时:
245.接收更新版本的驱动程序以替换特定版本的驱动程序;
246.发送命令系列,以将更新版本的驱动程序安装到非易失性存储器中;以及
247.向外围设备插口发送安装了更新版本的驱动程序的指示。
248.36.根据示例35所述的装置,还包括控制器中枢,所述控制器中枢被配置为:
249.提供处理器插口和外围设备插口之间的接口;
250.从边带处理器接收命令系列;以及
251.基于接收到的命令,将更新版本的驱动程序安装到非易失性存储器中。
252.37.根据示例36所述的装置,其中,所述边带处理器还被配置为以第一顺序向所述控制器中枢发送所述命令系列;并且
253.其中,所述控制器中枢还被配置为:
254.以不同于接收所述系列命令的顺序完成所述系列命令;以及
255.响应于特定命令的完成,向边带处理器发送对所述系列的特定命令的特定响应;并且
256.其中,所述边带处理器还被配置为标识对应于特定响应的特定命令。
257.38.根据示例35所述的装置,还包括用于将网络接口控制器耦合到所述边带处理器的网络插口,其中,所述边带处理器还被配置为经由安装在所述网络插口中的网络接口控制器接收所述更新版本的驱动程序。
258.39.根据示例38所述的装置,还包括不同的网络插口,用于将不同的网络接口控制器耦合到所述处理器插口。
259.40.根据示例35所述的装置,其中,所述外围设备还被配置为响应于所述指示,利用所述更新版本的驱动程序来执行所述一个或多个操作。
260.本公开包括对“实施例”的引用,这些实施例是所公开概念的非限制性实现。对“实施例”、“一个实施例”、“特定实施例”、“一些实施例”、“各种实施例”等的引用不一定指相同实施例。设想了大量可能的实施例,包括详细描述的具体实施例,以及落入本公开的精神或范围内的修改或替代方案。并非全部的实施例都必然表现出本文所述的任何或全部潜在优点。
261.除非另有说明,否则特定实施例并不旨在将基于本公开起草的权利要求的范围限于所公开的形式,即使仅描述了关于特定特征的单个示例。因此,在没有任何相反陈述的情况下,所公开的实施例旨在说明而非限制。本技术旨在涵盖受益于本公开内容的本领域技
术人员显而易见的这样的替代、修改和等同方案。
262.特定的特征、结构或特性可以以与本公开一致的任何合适的方式组合。因此,本公开旨在包括本文公开的任何特征或特征组合(明确地或隐含地),或其任何概括。因此,在本技术(或要求其优先权的申请)的审查期间,可以对任何这样的特征组合提出新的权利要求。特别地,参考所附权利要求,从属权利要求的特征可以与独立权利要求的特征相组合,并且相应独立权利要求的特征可以以任何适当的方式相组合,而不仅仅是按照所附权利要求所列举的具体组合。
263.例如,虽然所附的从属权利要求被起草为使得每个从属权利要求都从属于单个其他权利要求,但是也设想了附加的从属关系,包括以下内容:权利要求4可以从属于权利要求1-3中的任何一项);权利要求5可以从属于其前述权利要求中的任何一项,等等。在适当的情况下,还设想以一种法定类型(例如,装置)起草的权利要求暗示另一种法定类型(例如,方法)的对应权利要求。
264.由于本公开是法律文件,各种术语和短语可能会受到行政和司法解释的制约。特此公告,以下段落以及整个公开中提供的定义将用于确定如何解释基于本公开起草的权利要求。
265.对“一”、“一个”和“该”等单数形式的引用意在表示“一个或多个”,除非上下文另有明确规定。因此,在权利要求中引用“项”并不排除该项的其他实例。
266.本文使用的“可以”一词是许可意义上的(即有可能、能够),而不是强制意义上的(即必须)。
267.术语“包括”及其形式是开放式的,意思是“包括但不限于”。
268.当术语“或”在本公开中关于选项列表使用时,除非上下文另有规定,否则它通常将被理解为在包括的意义上使用。因此,对“x或y”的叙述等同于“x或y,或两者都有”,涵盖x但不包括y、y但不包括x、以及x和y两者。另一方面,例如“x或y之一,但不是两者”等短语清楚地表明“或”是在排他的意义上使用的。
[0269]“w、x、y或z,或其任意组合”或“w、x、y和z中的至少一个”的叙述旨在涵盖涉及从单个元素到集合中全部元素的全部可能性。例如,给定集合[w、x、y、z],这些短语涵盖该集合的任何单个元素(例如,w,但不包括x、y或z),任何两个元素(例如,w和x,但不包括y或z),任何三个元素(例如,w、x和y,但不包括z),以及全部四个元素。短语“w、x、y和z中的至少一个”因此指的是集合[w、x、y、z]中的至少一个元素,从而涵盖了该选项列表中的全部可能的组合。该短语不应被解释为要求存在至少一个w的实例、至少一个x的实例、至少一个y的实例和至少一个z的实例。
[0270]
在本公开中,各种“标记”可以修饰名词。除非上下文另有规定,否则用于特征的不同标记(例如,“第一电路”、“第二电路”、“特定电路”、“给定电路”等)指该特征的不同实例。当应用于特定特征时,标记“第一”、“第二”和“第三”并不意味着任何类型的排序(例如,空间、时间、逻辑等),除非另有说明。
[0271]
在本公开中,不同的实体(可以不同地称为“单元”、“电路”、其他部件等)可以被描述或要求为“被配置”成执行一个或多个任务或操作。“被配置为[执行一个或多个任务]的[实体]”这一表述在本文中用于指代结构(即,一些物理的东西)。更具体地,该表述用于指示该结构被布置成在操作期间执行所述一个或多个任务。结构可以说是被“被配置为”执行
一些任务,即使该结构当前没有被操作。因此,被描述或叙述为“被配置为”执行某个任务的实体指的是物理的东西,例如设备、电路、存储可执行以实现该任务的程序指令的存储器等。这个短语在本文中不是用来指无形的东西。
[0272]
术语“被配置为”并不意味着“可配置为”。例如,未编程的fpga不会被认为是“被配置为”执行某些特定功能。然而,这种未编程的fpga可以是“可配置”来执行该功能的。
[0273]
在所附权利要求中叙述的结构被“配置为”执行一个或多个任务明确地旨在不为该权利要求元素援引35u.s.c.
§
112(f)。如果申请人希望在审查期间援引第112(f)条,其将使用“用于[执行功能]的手段”结构叙述权利要求要素。
[0274]
短语“基于”用于描述影响确定的一个或多个因素。该术语不排除其他因素可能影响所述确定的可能性。也就是说,确定可以仅基于指定的因素或者基于指定的因素以及其他未指定的因素。考虑短语“基于b确定a”。该短语指定b是用于确定a的因素或者影响a的确定的因素。该短语不排除a的确定也可以基于一些其他因素,例如c。该短语还旨在涵盖仅基于b确定a的实施例。如本文所用,短语“基于”与短语“至少部分基于”同义。
[0275]
短语“响应于”描述触发效应的一个或多个因素。该短语并不排除其他因素可能影响或触发该效应的可能性。也就是说,效应可以仅仅响应于那些因素,或者可以响应于指定的因素以及其他未指定的因素。考虑短语“响应于b而执行a”。该短语指定b是触发a的执行的因素。该短语不排除执行a也可以是响应于某个其他因素,例如c。该短语也旨在涵盖a仅响应于b而执行的实施例。

技术特征:


1.一种方法,包括:由边带处理器使用第一组命令来监视计算机系统的多个操作条件,其中,所述第一组命令是利用特定命令协议通过特定通信总线发送的;由所述边带处理器接收所述计算机系统中的特定设备的数据,其中,所述边带处理器已被修改以支持第二组命令;由所述边带处理器修改所述第一组命令中的第一命令,以包括所述第二组命令中的第二命令,其中,所述第二命令包括与所述特定设备相关联的地址和至少部分所述数据;以及由所述边带处理器使用所述特定命令协议通过所述特定通信总线向控制器中枢发送修改后的第一命令。2.根据权利要求1所述的方法,还包括:在第一时间,所述边带处理器从所述控制器中枢接收对所述第一命令的响应;以及在所述第一时间之后的第二时间,所述边带处理器从所述控制器中枢接收对所述第二命令的响应。3.根据权利要求2所述的方法,其中,所述第二命令包括标识值,并且其中,接收对所述第二命令的响应包括使用所述标识值确定所述响应对应于所述第二命令。4.根据权利要求1所述的方法,还包括经由接口电路向所述特定通信总线发送所述第一命令,其中,修改所述第一命令以包括所述第二命令包括在发送所述第一命令期间使用所述边带处理器的直接存储器存取电路向所述接口电路发送所述第二命令。5.根据权利要求1所述的方法,还包括由所述边带处理器压缩至少部分所述第二命令。6.根据权利要求1所述的方法,其中,所述第二命令使得所述特定设备的部分所述数据被存储在所述计算机系统的系统存储器中。7.根据权利要求6所述的方法,还包括由所述边带处理器通过以下方式向所述特定设备发送接收到的数据:由所述边带处理器修改所述第一组命令中的第三命令,以包括所述第二组命令中的第四命令,其中,所述第四命令使得所述特定设备从所述系统存储器复制部分所述数据;以及由所述边带处理器使用所述特定命令协议通过所述特定通信总线向所述控制器中枢发送修改后的第三命令。8.根据权利要求1所述的方法,其中,所述计算机系统的主中央处理单元(cpu)被排除在对修改后的第一命令的处理之外。9.根据权利要求8所述的方法,其中,接收所述特定设备的数据包括由所述边带处理器经由不同于所述主cpu使用的第二网络接口卡的第一网络接口卡从系统管理员接收所述数据。10.一种装置,包括:通信总线,被配置为支持特定命令协议;控制器中枢,耦合到主中央处理单元(cpu)和一个或多个外围设备,其中,所述控制器中枢耦合到所述通信总线,并且被配置为使用所述特定命令协议接收第一组命令;边带处理器,耦合到所述通信总线,并且被配置为:经由所述通信总线发送所述第一组命令中的命令系列,以监视所述装置的一个或多个操作条件;
经由网络接口接收所述一个或多个外围设备中的特定外围设备的数据;修改所述系列命令中的未决的特定命令,以包括第二组命令中的辅助命令,其中,所述辅助命令包括与所述特定外围设备相关联的地址和至少部分所述数据;以及使用所述特定命令协议,经由所述通信总线向所述控制器中枢发送修改后的命令。11.根据权利要求10所述的装置,其中,所述边带处理器还被配置为:在第一时间,从所述控制器中枢接收对所述特定命令的第一响应;以及在所述第一时间之后的第二时间,从所述控制器中枢接收对所述辅助命令的第二响应。12.根据权利要求11所述的装置,其中,所述边带处理器还被配置为:在所述辅助命令中包括标识值;以及使用所述标识值确定所述第二响应对应于所述辅助命令。13.根据权利要求10所述的装置,还包括系统存储器,其中,所述辅助命令使得所述部分所述数据被存储在所述系统存储器中。14.根据权利要求13所述的装置,其中,所述边带处理器还被配置为:修改所述第一组命令中的未决的不同命令,以包括所述第二组命令中的不同辅助命令,其中,所述不同辅助命令使得所述特定外围设备从所述系统存储器复制部分所述数据;以及使用所述特定命令协议,经由所述通信总线向所述控制器中枢发送修改后的不同命令。15.根据权利要求13所述的装置,其中,部分所述数据被存储在所述系统存储器中,而不利用所述主cpu的带宽。16.一种非暂时性计算机可读介质,其上存储有指令,所述指令能够由包括在计算机系统中的边带处理器执行,以执行操作,所述操作包括:使用第一组命令监视所述计算机系统的多个操作条件,其中,所述第一组命令是利用特定命令协议通过通信总线发送的;接收所述计算机系统中的特定设备的数据;修改所述第一组命令中的第一命令,以包括不同于所述第一组命令的第二组命令中的第二命令,其中,所述第二命令使得向所述特定设备发送至少部分所述数据;以及使用所述特定命令协议通过所述通信总线经由接口电路向控制器中枢发送修改后的第一命令。17.根据权利要求16所述的非暂时性计算机可读介质,还包括:在第一时间,从所述控制器中枢接收对所述第一命令的响应;以及在所述第一时间之后的第二时间,从所述控制器中枢接收对所述第二命令的响应。18.根据权利要求16所述的非暂时性计算机可读介质,其中,修改所述第一命令以包括所述第二命令包括在发送所述第一命令期间向所述接口电路发送所述第二命令。19.根据权利要求16所述的非暂时性计算机可读介质,还包括生成所述第二命令以使得部分所述数据被存储在所述计算机系统的系统存储器中。20.根据权利要求19所述的非暂时性计算机可读介质,还包括:修改所述第一组命令中的第三命令,以包括所述第二组命令中的第四命令,其中,所述
第四命令使得所述特定设备从所述系统存储器复制部分所述数据;以及使用所述特定命令协议,经由所述通信总线向所述控制器中枢发送修改后的第三命令。

技术总结


公开了涉及一种方法的技术,该方法包括由边带处理器使用第一组命令来监视计算机系统的多个操作条件。利用特定命令协议通过特定通信总线发送第一组命令。此外,可以修改边带处理器以支持第二组命令。边带处理器可以接收计算机系统中特定设备的数据。边带处理器可以修改第一组命令中的第一命令,以包括第二组命令中的第二命令。该第二命令可以包括与特定设备相关联的地址和至少部分所述数据。然后,边带处理器可以使用特定命令协议通过特定通信总线向控制器中枢发送修改后的第一命令。线向控制器中枢发送修改后的第一命令。线向控制器中枢发送修改后的第一命令。


技术研发人员:

亚伯拉罕

受保护的技术使用者:

贝宝公司

技术研发日:

2021.09.01

技术公布日:

2023/3/28

本文发布于:2024-09-24 02:27:31,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/83628.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:命令   边带   所述   处理器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议