大规模并行计算机系统分组并行启动方法

文档序号:6526064阅读:254来源:国知局
专利名称:大规模并行计算机系统分组并行启动方法
技术领域
本发明涉及计算机系统的启动方法,尤其是大规模并行计算机系统中的多处理器并行启动方法。
背景技术
CC_NUMA(Cache Coherent Non Uniform Memory Access Architecture)是实现了Cache一致性协议的非均匀存储访问的分布式共享存储系统结构。在SGI公司发表的白皮书″ccNUMA Highly Scalable Server″中,对这一结构进行了较详细的说明。采用CC_NUMA结构的计算机系统通常由许多节点通过内部高速互连网络相互连接而成。节点是组成系统的基本单位,具有本地CPU和本地内存,也可以具有本地I/O资源,其它节点通过内部高速互连网络可以远程访问这些内存和I/O资源。Firmware(固件)是计算机系统加电或复位后至操作系统运行前这一期间控制计算机系统的系统软件,通常固化在非易失性存储器(如FlashROM)内。在系统启动时,Firmware指导整个系统的启动、配置和操作系统的引导。在这个过程中Firmware要和节点进行交互,从而获得全系统所有节点的启动信息和资源列表,并且掌握节点的启动状态和控制节点运行。
目前通常的做法是由每个节点保存的本地Firmware控制本节点模块的初始化、自检和配置。在所有节点启动之后,选择一个系统BSP(引导处理器Bootstrap Processor)节点。由该系统BSP节点收集系统信息和资源列表、配置整个系统,并且引导操作系统,然后把系统的控制权交给操作系统。Intel公司的“ItaniumProcessor Family System Abstraction Layer Specification”,对于Firmware的构成及其在单节点模块启动时的功能和作用作了详细说明。
当系统规模很大时,这种方法在选择系统BSP节点以及系统BSP节点收集构建系统资源信息表时,由于要依次与系统内所有节点进行通讯,随着系统规模的增长(节点数的增加),这一串行过程所需要的时间将会线性增加,因此将会遇到系统启动时间过长的问题,系统启动的效率有待提高。同时此方法对系统的升降级与重构不便,系统的可用性受限。

发明内容
本发明要解决的技术问题是针对基于CC_NUMA结构的大规模并行计算机系统启动时间过长的问题提出一种分组并行启动方法,缩短系统规模很大时的启动时间,提高系统的启动效率,同时有效地实现系统的升降级与重构,提高系统的可用性。
本发明的技术方案是根据计算机系统的规模对所有节点进行分组,在各节点设计一种节点控制器NC控制所有节点在系统Firmware中分阶段并行地进行BSP的选择和节点初始化和配置工作。
具体方法是将CC_NUMA系统的所有节点分为m组,每组n个节点,系统共有m×n个节点;假设系统有x个节点,以n个节点为一组(共分m组,x=m×n)进行分组并行启动,系统中以多大粒度进行分组根据系统具体规模而定,分组原则是组内节点数目与组的数目之和最小,即n+m值为最小。如256个节点时按16×16进行分组。系统的分组也可以根据实际需要使用人工指定的方式。。每个节点首先选择一个节点引导处理器BSP负责本节点的初始化操作和配置工作,并形成节点内部资源表(包含节点内部CPU、内存、I/O资源等信息)存放在节点本地内存内,该过程在所有的节点上都同时进行。然后在每一组n个BSP中再选择一个组内引导处理器LBSP(Local Bootstrap Processor),LBSP在BSP工作的基础上完成组内的初始化和配置工作,将组内n个节点的节点内部资源表整合成一个组内资源表(包含组内所有节点的CPU、内存、I/O资源等信息)存放在LBSP节点的内存内。m个组内LBSP的选择在不同组之间是并行进行的。最后在m个LBSP中选择一个系统全局GBSP(Global Bootstrap Processor),完成CC_NUMA系统的全局性初始化和配置工作,负责将m个组的组内资源表进行整合,形成系统资源表(包含系统所有节点的CPU、内存、I/O资源等信息)存放在GBSP所在的节点内存内,并引导操作系统。
本发明节点控制器NC由微处理器接口模块、存储器接口模块、IO接口模块、互连接口模块组成,微处理器接口模块包含用于节点启动控制的多处理器引导控制寄存器和节点号寄存器。微处理器接口既与处理器的接口即CPU总线相连(CPU总线上挂接CPU),又与FlashROM相连,Firmware存放在FlashROM内。当节点加电或复位时,CPU总线上的所有CPU同时从FlashROM内读取指令并执行。存储器接口模块与存储器总线相连,节点内部CPU通过该模块访问节点内部存储器即本地存储器,其它节点通过节点间的互连通路(即内部高速互连网络)实现对此节点存储器的访问。IO接口模块用于挂接IO总线和IO设备,具有本地(本节点CPU访问)和远程(其它节点对其进行访问)访问能力。互连接口模块实现与系统内部高速互连网络的连接,通过该模块本节点CPU可以访问其它节点上的资源,其它节点也可以访问此节点上的资源。
多处理器引导控制寄存器主要用于本地多处理器的启动与引导控制。它由BSP选择标志、AP唤醒CPU号、BSP定时更换标志、AP自检正常标志、AP唤醒标志、BSP标识组成,用于节点内部BSP的选择。当节点内CPU的个数变化时,则扩充AP唤醒CPU号以相适应。
节点号寄存器存放本节点的节点号。
采用本发明进行启动分三个步骤1.选择节点内部引导处理器BSP;2.选择组内引导处理器LBSP;3.选择全局引导处理器GBSP。
选择节点内部引导处理器BSP的方法是由Firmware通过多处理器引导控制寄存器进行节点内部引导处理器BSP的选择。节点内部每个状态正常的处理器都平等参与BSP的选择,它们在对自身进行第一阶段的简单初始化后(大部分的初始化和自检操作留在BSP选择完成之后的第二阶段初始化和自检过程进行),首先读取多处理器引导控制寄存器的BSP选择标志并判断节点内部是否已经有其它处理器成为BSP,如果没有,则该BSP选择标志将置为有效,表示BSP选择已经完成,自己成为BSP。如果其它处理器已被选择为BSP,则成为应用处理器AP(Application Processor)。应用处理器是系统在Firmware阶段中处于等待状态的处理器,只有在操作系统引导完成后才正常工作。应用处理器反复查看多处理器引导控制寄存器的唤醒标志,随时可以被BSP唤醒进行下一步的工作。
为提高系统的可用性,本发明为节点提供系统降级运行的能力。降级运行是指当某个或某些处理器出现故障时,在不包含这些故障处理器的时候系统仍然能够正常工作,但系统的处理器数目将会减少。在BSP处理器进行第二阶段初始化和自检测试时,如果失败将不能再充当BSP,且不能进入系统,此时使用BSP更换机制将另一个应用处理器AP当作节点BSP。如果所有的处理器都不能通过第二阶段的初始化和自检,则自动复位该节点或者该节点不进入系统。
BSP更换机制由多处理器引导控制寄存器提供的BSP定时更换标志来实现。一旦原来的BSP不能通过第二阶段自检测试,该BSP更换机制将另一个应用处理器AP作为BSP,实现系统的降级运行(原来的BSP不进入系统)。为实现这种机制,当BSP在进行第二阶段的处理器初始化和自检操作时,将多处理器引导控制寄存器中的BSP定时更换标志设为有效。在正常完成第二阶段的处理器初始化和自检操作后,将该标志清除。所有的应用处理器AP在循环等待过程中,始终监视该标志,当该标志有效时,开始计时。当该标志被清时计时停止。如果计时到一定时间后该标志还没有被清,则认为BSP的第二阶段自检测试失败。此时应用处理器AP将跳出循环,余下的处理器竞争成为BSP。如果所有处理器都不能通过第二次自检,BSP定时更换标志就始终为有效,系统内其他节点可以认为该节点启动已失败,采用适当的手段对该失败节点进行复位,或者该节点不进入系统,系统将降级运行。
当系统运行到某个阶段时,BSP需要唤醒应用处理器AP并检测应用处理器是否能正常启动。利用多处理器引导控制寄存器中设置的AP自检正常标志位,当BSP第一次唤醒应用处理器进行第二阶段处理器自检操作时,将该标志位清除。应用处理器正常完成第二阶段自检操作后将该标志置为有效。如果在等待一段时间之后还没有被置有效,则认为该应用处理器自检失败,系统将降级运行。
自加电或复位开始,系统内所有节点同时进行节点内部BSP的选择和本节点的初始化工作,节点内部BSP还负责搜集本节点的资源信息形成节点内部资源表存放在节点本地内存内。一旦BSP完成了这些工作,便开始进入组内LBSP的选择过程。
组内引导处理器LBSP的选择方法是系统的所有节点都有一个唯一的用于标识自己的节点ID号。组内LBSP选择按照节点ID号最小(或最大)优先的原则,即在组内所有正常的节点中选择一个ID号最小(或最大)的节点作为组内LBSP节点,该节点的节点内部BSP便是组内LBSP。为支持分组启动,在本地共享存储区域(节点本地内存,其它节点通过内部高速互连网络可以对其进行远程访问)建立一个节点分组并行启动节点状态字,该节点状态字包含的信息有节点号和节点状态。节点号中包含的信息有SB表示该节点是否是系统全局GBSP节点(系统全局GBSP所在节点)、GN表示该节点所属的组号(系统在对节点进行分组时,每组分配一个用于标识该组的唯一的组号)、GB表示该节点是否是组内LBSP节点(LBSP所在节点)、NN表示该节点在组内的编号(组内的每一个节点都分配一个用于标识该节点的在该组内唯一的编号)。RV为保留位,用于系统规模的扩充。节点状态包含的信息有C表示该节点是否已经完成系统全局GBSP的选择操作。S表示该节点目前运行在哪个阶段(竞争节点内部BSP、竞争组内BSP、竞争系统BSP)。CS用于记录节点内各处理器的状态。BSP的每位分别对应节点内的每个处理器,用于表示该处理器是否是节点内部BSP。CPU分别对应每个处理器,表示节点内处理器自检是否正常。
在节点BSP启动完成后,每个节点在本地共享存储区域初始化一个n位的用于选择LBSP的选择状态字(n为组内节点数目)。选择状态字的每一位均对应一个组内节点,初始值为0,这些操作在节点内部BSP选择完成后立即完成。节点完成本地初始化后,首先检查自己的选择状态字是否已经被改写,如果已经被改写,说明已有其它节点成为组内LBSP,就进入集合点(进入操作系统前的循环等待程序),等待GBSP节点唤醒;如果还没有,则将自己所对应的位置1,其他置0,表示自己准备好成为LBSP节点。
每个节点在自身初始化后开始依次读自己的前续节点的节点状态字(以n个节点为一组为例,如果读到0号节点,则从n-1号节点开始继续往前读),首先查看是否已经完成组内LBSP的选择。如果已经完成选择,那么查询谁是组内LBSP节点,并发出要求加入该组的请求(即系统升级,系统在原来的基础上增加若干节点或增加若干CPU)。如果还没有完成选择则继续后面的过程。如果所读节点ID号小于(采用最小ID优先原则时)或大于(采用最大ID优先原则时)自己的ID号而且已经写了选择状态字来竞争LBSP节点(不一定是所读节点在竞争,有可能是其他节点写的)就退出竞争进入集合点(即进入操作系统前的循环等待程序),等待GBSP节点唤醒。如果发现所读的状态字为全0(全0表示该节点还没有启动完成),就用自己的选择状态字覆盖它,继续读前面的节点。如果发现所读节点号大于(采用最小ID优先原则时)或小于(采用最大ID优先原则时)自己,也用自己的选择状态字覆盖它。最后,只有一个节点遍历所有节点成为LBSP节点,并且此时所有已完成启动的节点的选择状态字都是一致的。
本发明采用这种策略可以保证只有一个节点成为组内LBSP节点以采用最小ID优先的原则为例,如果有两个节点A和B都认为自己是LBSP,假设A<B。那么B在往前读节点选择状态字时如果A已经启动完成,则A开始竞争,B会放弃竞争组内LBSP节点;如果A没有启动完成,那么B会写A的选择状态字,A在开始竞争时会发现有节点在自己之前从而退出竞争。所以只可能有一个节点最后成为组内LBSP节点。
选出组内LBSP节点之后,该节点应立即写组内各个节点的节点状态字的组内LBSP选择完成标志,表示该过程结束。由于各节点的启动时间不完全一致(有快有慢),因此为了同步的需要,该LBSP节点应当等待一段时间(根据实际情况确定等待时间),再开始收集各节点的节点内部资源表并整合成组内资源表(包含组内所有的CPU、组内所有的内存、组内所有的I/O资源信息)存放在LBSP节点的内存内。
本发明的系统全局引导处理器GBSP的选择方法是当组内完成LBSP选择工作并搜集本组内的资源信息后,开始进入系统全局GBSP选择阶段。系统全局GBSP选择由各组的组内LBSP节点参加竞争,采用的方法和组内LBSP节点基本一致,采取的原则也是最小(或最大)ID优先的原则。不同点为,在进行竞争之前,需要了解其他各组哪个节点是LBSP节点。这通过读该组内节点的节点状态字来获得。首先通过组内节点的节点状态字的S了解该组是否已经完成了组内LBSP节点的选择,然后通过查寻该节点的选择状态字的GB,相应位为有效的节点就是组内LBSP节点。最后得到的系统GBSP对各组LBSP形成的资源表进行整合,形成系统资源表(包含全系统所有的CPU、所有的内存、所有的I/O资源信息)存放在GBSP所在的节点内存内。
采用本发明进行分组并行启动具体过程是1)加电或复位时,每个节点的所有CPU同时执行本地Firmware,进行第一阶段处理器初始化和自检操作。
2)完成第一阶段处理器初始化和自检操作后,选出节点内部BSP,其它处理器成为应用处理器AP并进入集合点(一段循环等待程序,等待进入第二阶段初始化和自检)等待唤醒。
3)节点内部BSP在本节点内存初始化和完成第二阶段初始化和自检后唤醒节点内的其它应用处理器AP进行第二阶段自检,AP自检返回后进入第二个集合点(一段循环等待程序,等待进入操作系统)等待唤醒。
4)节点内部BSP根据所有处理器自检情况、节点配置和初始化情况建立节点内部资源表。
5)节点内部BSP对CC_NUMA系统内部高速互连网络初始化,此时节点内的启动已经完成。所有已经成功启动的节点可以通过高速互连网络共享节点内的资源。
6)节点内部BSP根据自己的状态在节点状态字中赋值,并在组内选择组内LBSP节点。组内LBSP节点查找收集组内节点内部资源表并进行整合,建立组内组内资源表。此时所有的非组内控制节点的节点BSP在选择组内LBSP节点之后进入第二个集合点等待唤醒。
7)由组内LBSP节点选出系统全局GBSP,此时非系统GBSP的所有组内LBSP都进入集合点等待唤醒,由系统全局GBSP独立引导系统。
8)系统全局GBSP收集各个组内LBSP节点形成的组内资源表,形成系统资源表。
9)系统全局GBSP运行操作系统加载程序,引导操作系统。
采用本发明可以达到以下的技术效果1)由于所有节点内部BSP的选择和节点内部初始化和配置工作相互独立,且所有组内LBSP的选择和组内的初始化和配置工作在各组之间相互独立,其过程均是并行的,当系统规模非常大时,采用本发明时,启动的效率得到十分明显的提高。对于大规模并行系统,例如256个节点,BSP顺序地对所有的节点进行唤醒或者读取该节点的资源表,这种操作需要的时间约为256T(假设BSP与一个节点交互所需要的时间为1T)。而在分组的结构下(16个节点为一组),由组内LBSP形成资源表的时间为16T,系统GBSP从各组内LBSP获得信息需要的时间也是16T,总共是32T,因此启动时间大大减少。
2)支持系统升降级运行,有利于提高系统可用性。当处理器有故障而不能通过自检时,将在节点BSP的选择过程中被淘汰,不会进入系统。当某个节点出现故障时,该节点不参与组内LBSP的选择,也不会进入系统。当故障CPU或节点恢复后,可以正常参加节点内部BSP和组内LBSP的选择。对于节点失效或者是升级,Firmware可以代替操作系统重新建立节点状态表,在更新整个系统的相关表格后再通知操作系统,使正常节点可以继续在操作系统的控制下安全运行。
3)支持系统结构的可扩展。采用本发明不会因为系统规模的扩大而显著影响系统的启动速度,在分组形式下,增加的节点与原有的节点的启动过程是并行进行的;同时由于采用了分组方式,当系统规模变化时不需要对系统Firmware进行修改,只需对系统规模进行配置就可以实现。Firmware在启动时根据存放在非易失性存储器(如FlashROM)内的配置表(包含系统节点数目、组内节点数目、分组数目等信息)分别选择LBSP和GBSP,当系统规模变化时,只需修改配置表中的系统节点数目、组内节点数目和分组数目,其BSP、LBSP和最终的GBSP的选择过程没有变化。


图1是CC_NUMA系统结构图;图2是采用本发明的CC_NUMA系统节点内部结构框图;图3是采用本发明对节点进行分组的示意图;图4是采用本发明的CC_NUMA系统中节点控制器NC的逻辑结构图;图5是本发明的系统Firmware启动与引导流程图;图6是本发明节点控制器多处理器引导控制寄存器格式;图7是本发明分组并行启动节点状态字格式。
具体实施例方式
图1是CC_NUMA系统结构图。采用CC_NUMA结构的计算机系统通常由许多节点通过内部高速互连网络相互连接而成。节点是组成系统的基本单位,具有本地CPU和本地内存,也可以具有本地I/O资源,其它节点通过内部高速互连网络可以远程访问这些内存和I/O资源。组成系统的节点包括处理节点和I/O节点。处理节点主要负责计算任务,其上运行用户应用。IO节点采用处理节点相同结构,除了参与计算任务外,还承担系统输入输出任务。各节点采用分布共享存储结构,所有节点下的存储器统一编址,并实现全系统的Cache一致性。
图2是采用本发明的CC_NUMA系统节点内部结构框图。节点内部多个处理器以共享总线的形式形成一个SMP(对称多处理器SymmetricMultiProcessor)系统。其中NC为节点控制器。MEM为节点本地内存,其他节点可以通过内部高速互连网络进行远程访问。IO为IO控制器,当IO控制器外挂IO总线及设备时,便构成了IO节点。NI为内部高速互连网络接口,节点通过NI与系统内部高速互连网络相连构成CC_NUMA系统。负责节点初始启动和配置的Firmware存放在FlashROM里,直接挂在NC下。每个节点都有一个相同的Firmware,Firmware首先完成节点内部的初始化和配置工作并形成节点内部资源表(资源表包含了CPU、内存、I/O资源等信息),然后在节点组内进行组内LBSP的选择并形成组内资源表,最后在所有的组内LBSP之间选择一个系统全局GBSP,形成系统资源表,并引导操作系统。
图3是采用本发明对节点进行分组的示意图。CC_NUMA系统的所有节点分为m组,每组n个节点,系统共有m×n个节点。每个节点首先选择一个节点引导处理器BSP,并在节点本地内存内形成节点内部资源表,该过程在所有的节点上都是同时进行的。每一组然后在n个BSP中再选择一个组内LBSP,LBSP将组内n个节点的节点内部资源表整合成一个组内资源表,存放在LBSP所在节点的本地内存内。m个组内LBSP的选择在不同组之间是并行进行的。最后在m个LBSP中选择一个系统全局GBSP,GBSP负责将m个组的组内资源表进行整合,在GBSP所在节点的内存内形成系统资源表,并负责引导操作系统。
图4是本发明节点控制器NC的逻辑结构图。节点控制器由微处理器接口模块、存储器接口模块、IO接口模块、互连接口模块组成,微处理器接口模块包含用于节点启动控制的多处理器引导控制寄存器和节点号寄存器。微处理器接口既与处理器的接口即CPU总线相连(CPU总线上可挂接1~4个CPU),又与FlashROM相连,Firmware存放在FlashROM内。当节点加电或复位时,CPU总线上的所有CPU同时从FlashROM内读取指令并执行。存储器接口模块与存储器总线相连,节点内部CPU通过该模块访问节点内部存储器即本地存储器,其它节点通过节点间的内部高速互连网络实现对此节点存储器的访问。IO接口模块用于挂接IO总线和IO设备,具有本地(本节点CPU访问)和远程(其它节点对其进行访问)访问能力。互连接口模块实现与系统内部高速互连网络的连接,通过该模块本节点CPU可以访问其它节点上的资源,其它节点也可以访问此节点上的资源。多处理器引导控制寄存器主要用于本地多处理器的启动与引导控制。节点号寄存器存放本节点的节点号。
图5是使用本发明进行系统Firmware启动与引导的流程图。当系统加电或复位时,每个节点的所有CPU同时执行本地Firmware,每个CPU首先执行一段简单的CPU初始化和自检程序,即CPU进行第一阶段初始化和自检,然后节点内的所有CPU开始根据节点内部BSP选择机制进行节点内部BSP的选择工作。未成为节点内部BSP的其它正常处理器成为应用处理器AP,在集合点1(一段循环等待程序,应用处理器在此等待进行CPU第二阶段初始化和自检)开始循环等待BSP对其唤醒。未正常通过第一阶段初始化和自检的处理器不进入系统。成为节点内部BSP的处理器开始对节点本地内存进行自检初始化操作,随后进入CPU第二阶段初始化和自检程序。节点内部BSP从第二阶段初始化和自检程序正常返回时,将唤醒其它处于集合点1的应用处理器进入CPU第二阶段初始化和自检程序。若节点内部BSP不能正常从第二阶段初始化和自检程序返回,应用处理器将替代成为节点内部BSP。应用处理器正常完成CPU第二阶段初始化和自检之后,将进入集合点2(进入操作系统前的循环等待程序)等待系统进入操作系统时被唤醒。未通过第二阶段初始化和自检的CPU将不进入系统。节点内部BSP在唤醒应用处理器之后,对节点内部其它资源包括内部高速互连网络接口以及内存和I/O资源进行初始化操作,形成节点内部资源表。至此,节点内部BSP就可以与组内其它节点的BSP进行组内BSP(即LBSP)的选择工作。上述过程对于全系统所有节点都是同时进行的。组内所有节点的节点内部BSP按照组内LBSP选择机制选择一个组内BSP(LBSP),未成为LBSP的节点内部BSP成为应用处理器进入集合点2等待操作系统唤醒。组内LBSP将对组内各节点的资源表进行整合,形成组内资源表,随后将进入系统全局BSP(即GBSP)的选择阶段。系统内所有各组的LBSP的选择和组内资源表的整合都是并行进行的,当系统规模很大时,可以显著提高系统启动的速度。所有各组的LBSP根据系统全局BSP的选择机制选择一个全局BSP即GBSP,未成为GBSP的LBSP将成为应用处理器进入集合点2等待操作系统唤醒。系统GBSP将各组形成的组内资源表进行整合,形成系统全局资源表。GBSP负责运行操作系统加载程序,加载操作系统并将所有的应用处理器唤醒,进入操作系统的应用处理器集合点(操作系统内的循环等待程序)。至此,系统的控制权全部交给了操作系统。
图6是节点控制器多处理器引导控制寄存器示意图,该寄存器有16位(当节点内部CPU个数增加时,可根据需要进行扩充),由BSP选择标志(bit15)、AP唤醒CPU号(bit12、bit13两位)、BSP定时更换标志(bit8)、AP自检正常标志(bit5)、AP唤醒标志(bit4)、BSP标识(bit0、bit1两位)组成,用于节点内部BSP的选择。当节点内CPU的个数变化时,AP唤醒CPU号应相应扩充。其操作过程为1)节点加电或复位时,节点内所有处理器将读取该寄存器的BSP选择标志(bit15),该标志位具有读后置1的特性。节点内部BSP的选择按照谁快谁优先的原则进行。第一个读该寄存器的处理器将成为节点内部BSP,此时BSP选择标志位置1,其它处理器读取该标志时认为BSP选择已经完成,因此成为应用处理器AP。成为节点内部BSP的处理器将自己的CPU标识号写入该寄存器的BSP标识(bit0、bit1两位)内;2)节点内部BSP在进入CPU第二阶段初始化和自检程序之前,将BSP定时更换标志(bit8)置1,应用处理器在进入CPU第二阶段初始化和自检之前的集合点循环等待过程中监视该标志,当该标志为1时开始计时。BSP正常完成第二阶段初始化和自检之后将该标志清0,应用处理器停止计时。如果BSP不能正常从第二阶段初始化和自检程序返回,应用处理器计时到一定时间后如果该标志仍为1,则认为原来的BSP未能通过第二阶段的初始化和自检,这时应用处理器将替代原来的BSP成为节点内部BSP,同时将自己的CPU标识号写入该寄存器的BSP标识内,BSP定时更换标志也被清0。
3)节点内部BSP在唤醒其它应用处理器进入CPU的第二阶段初始化和自检程序时,将被唤醒的CPU标识号写入该寄存器的AP唤醒CPU号内(bit12、bit13两位),同时将AP唤醒标志(bit4)置1,将AP自检正常标志(bit5)清0。处于集合点的应用处理器首先判断AP唤醒标志是否为1,然后查看AP唤醒CPU号判断被唤醒的是否是自己,如果两者都是,则清除AP唤醒标志并进入第二阶段初始化和自检程序。应用处理器AP在正常完成第二阶段初始化和自检之后,将AP自检正常标志置1,表示自检正常完成。当BSP在唤醒应用处理器之后,如果超过一定时间AP自检正常标志仍为0,则认为该应用处理器的第二阶段初始化和自检未通过。节点内部BSP将依次唤醒所有的应用处理器进行第二阶段的初始化和自检。
图7是节点分组并行启动节点状态字。在分组并行启动中,系统中每个节点都有一个32位节点状态字。其中bit0~bit15为节点号,bit16~bit31为该节点状态。节点号中包含的信息有SB(bit14~bit15)表示该节点是否是系统全局GBSP节点(系统全局GBSP所在节点)、GN(bit8~bit11)表示该节点所属的组号(系统在对节点进行分组时,每组分配一个用于标识该组的唯一的组号)、GB(bit6~bit7)表示该节点是否是组内LBSP节点(组内LBSP所在节点)、NN(bit0~bit4)表示该节点在组内的编号(组内的每一个节点都分配一个用于标识该节点的在该组内唯一的编号)。RV(bit4~bit5、bit12~bit13)为保留位,可用于系统规模的扩充。节点状态(bit16~bit31)包含的信息有C(bit31)表示该节点是否已经完成系统全局GBSP的选择操作,未完成为0,完成为1。S(bit28~bit30)表示该节点目前运行在哪个阶段(竞争节点内部BSP、竞争组内BSP、竞争系统BSP)。CS(bit24~bit27)用于记录节点内各处理器的状态(等待唤醒为0,否则为1)。BSP(bit20~bit23)的四位分别对应节点内的每个处理器,用于表示该处理器是否是节点内部BSP(对应BSP的位置为1,否则为0)。CPU(bit16~bit19)表示节点内处理器自检结果,分别对应每个处理器,自检正常为1,否则为0。
本发明已应用于国防科技大学计算机学院自行研制的高性能大规模并行计算机系统,该系统每个节点有4个CPU,NC选用Xilinx公司的FPGA芯片实现,节点控制器多处理器引导控制寄存器为16位,节点分组并行启动节点状态字为32位。已经过验证并取得了很好的效果。本发明并不局限于具体的硬件平台,对于采用CC_NUMA结构的大规模并行计算机系统具有通用性。
权利要求
1.一种大规模并行计算机系统分组并行启动方法,其特征在于根据计算机系统的规模对所有节点进行分组,在各节点设计一种节点控制器NC控制所有节点在系统Firmware中分阶段并行地进行BSP的选择和节点初始化和配置工作,启动时分三步,即选择节点内部引导处理器BSP;选择组内引导处理器LBSP;选择全局引导处理器GBSP。
2.如权利要求1所述的大规模并行计算机系统分组并行启动方法,其特征在于对所有节点进行分组的方法是将CC_NUMA系统的所有节点分为m组,每组n个节点,系统共有m×n个节点,系统中以多大粒度进行分组根据系统具体规模而定,分组原则是组内节点数目与组的数目之和最小,即n+m值为最小;系统的分组也可以根据实际需要使用人工指定的方式;每个节点首先选择一个节点引导处理器BSP负责本节点的初始化操作和配置工作,并形成包含节点内部CPU、内存、I/O资源信息的节点内部资源表存放在节点本地内存内,该过程在所有的节点上都同时进行;然后在每一组n个BSP中再选择一个组内引导处理器LBSP,LBSP在BSP工作的基础上完成组内的初始化和配置工作,将组内n个节点的节点内部资源表整合成一个包含组内所有节点的CPU、内存、I/O资源信息的组内资源表存放在LBSP节点的内存内;m个组内LBSP的选择在不同组之间是并行进行的;最后在m个LBSP中选择一个系统全局GBSP,完成CC_NUMA系统的全局性初始化和配置工作,负责将m个组的组内资源表进行整合,形成包含系统所有节点的CPU、内存、I/O资源信息的系统资源表存放在GBSP所在的节点内存内,并引导操作系统。
3.如权利要求1所述的大规模并行计算机系统分组并行启动方法,其特征在于所述节点控制器NC由微处理器接口模块、存储器接口模块、IO接口模块、互连接口模块组成,微处理器接口模块包含用于节点启动控制的多处理器引导控制寄存器和节点号寄存器;微处理器接口既与处理器的接口即CPU总线相连,又与FlashROM相连,Firmware存放在FlashROM内;当节点加电或复位时,CPU总线上的所有CPU同时从FlashROM内读取指令并执行;存储器接口模块与存储器总线相连,节点内部CPU通过该模块访问节点内部存储器即本地存储器,其它节点通过节点间的互连通路即内部高速互连网络实现对此节点存储器的访问;IO接口模块用于挂接IO总线和IO设备,具有本地即本节点CPU访问和远程即其它节点对其进行访问的能力;互连接口模块实现与系统内部高速互连网络的连接,通过该模块本节点CPU可以访问其它节点上的资源,其它节点也可以访问此节点上的资源。
4.如权利要求1或3所述的大规模并行计算机系统分组并行启动方法,其特征在于所述多处理器引导控制寄存器主要用于本地多处理器的启动与引导控制,它由BSP选择标志、AP唤醒CPU号、BSP定时更换标志、AP自检正常标志、AP唤醒标志、BSP标识组成,用于节点内部BSP的选择,当节点内CPU的个数变化时,则扩充AP唤醒CPU号以相适应;所述节点号寄存器存放本节点的节点号。
5.如权利要求1所述的大规模并行计算机系统分组并行启动方法,其特征在于为支持分组启动,在本地共享存储区域建立一个节点分组并行启动节点状态字,该节点状态字包含的信息有节点号和节点状态,节点号中包含的信息有SB表示该节点是否是系统全局GBSP节点、GN表示该节点所属的组号、GB表示该节点是否是组内LBSP节点、NN表示该节点在组内的编号;RV为保留位,用于系统规模的扩充;节点状态包含的信息有C表示该节点是否已经完成系统全局GBSP的选择操作;S表示该节点目前运行在哪个阶段;CS用于记录节点内各处理器的状态;BSP的每位分别对应节点内的每个处理器,用于表示该处理器是否是节点内部BSP;CPU分别对应每个处理器,表示节点内处理器自检是否正常。
6.如权利要求1或2所述的大规模并行计算机系统分组并行启动方法,其特征在于本发明选择节点内部引导处理器BSP的方法是6.1由Firmware通过多处理器引导控制寄存器进行节点内部引导处理器BSP的选择;节点内部每个状态正常的处理器都平等参与BSP的选择,它们在对自身进行第一阶段的简单初始化后,首先读取多处理器引导控制寄存器的BSP选择标志并判断节点内部是否已经有其它处理器成为BSP,如果没有,则该BSP选择标志将置为有效,表示BSP选择已经完成,自己成为BSP;如果其它处理器已被选择为BSP,则成为应用处理器AP;应用处理器是系统在Firmware阶段中处于等待状态的处理器,只有在操作系统引导完成后才正常工作;应用处理器反复查看多处理器引导控制寄存器的唤醒标志,随时可以被BSP唤醒进行下一步的工作;6.2为提高系统的可用性,本发明为节点提供系统降级运行的能力;在BSP处理器进行第二阶段初始化和自检测试时,如果失败将不能再充当BSP,且不能进入系统,此时使用BSP更换机制将另一个应用处理器AP当作节点BSP;如果所有的处理器都不能通过第二阶段的初始化和自检,则自动复位该节点或者该节点不进入系统;BSP更换机制由多处理器引导控制寄存器提供的BSP定时更换标志来实现;一旦原来的BSP不能通过第二阶段自检测试,BSP更换机制将另一个应用处理器AP作为BSP,实现系统的降级运行即原来的BSP不进入系统;为实现这种机制,当BSP在进行第二阶段的处理器初始化和自检操作时,将多处理器引导控制寄存器中的BSP定时更换标志设为有效;在正常完成第二阶段的处理器初始化和自检操作后,将该标志清除;所有的应用处理器AP在循环等待过程中,始终监视该标志,当该标志有效时,开始计时,当该标志被清时计时停止;如果计时到一定时间后该标志还没有被清,则认为BSP的第二阶段自检测试失败;此时应用处理器AP将跳出循环,余下的处理器竞争成为BSP;如果所有处理器都不能通过第二次自检,BSP定时更换标志就始终为有效,系统内其他节点可以认为该节点启动已失败,采用适当的手段对该失败节点进行复位,或者该节点不进入系统,系统将降级运行;6.3当系统运行到某个阶段时,BSP需要唤醒应用处理器AP并检测应用处理器是否能正常启动;利用多处理器引导控制寄存器中设置的AP自检正常标志位,当BSP第一次唤醒应用处理器进行第二阶段处理器自检操作时,将该标志位清除;应用处理器正常完成第二阶段自检操作后将该标志置为有效;如果在等待一段时间之后还没有被置有效,则认为该应用处理器自检失败,系统将降级运行;6.4自加电或复位开始,系统内所有节点同时进行节点内部BSP的选择和本节点的初始化工作,节点内部BSP还负责搜集本节点的资源信息形成节点内部资源表存放在节点本地内存内。
7.如权利要求1或2所述的大规模并行计算机系统分组并行启动方法,其特征在于选择组内引导处理器LBSP的方法是7.1组内LBSP选择按照节点ID号最小或最大优先的原则,即在组内所有正常的节点中选择一个ID号最小或最大的节点作为组内LBSP节点,该节点的节点内部BSP便是组内LBSP;7.2在节点BSP启动完成后,每个节点在本地共享存储区域初始化一个n位的用于选择LBSP的选择状态字,选择状态字的每一位均对应一个组内节点,初始值为0,这些操作在节点内部BSP选择完成后立即完成;节点完成本地初始化后,首先检查自己的选择状态字是否已经被改写,如果已经被改写,说明已有其它节点成为组内LBSP,就进入集合点,等待GBSP节点唤醒;如果还没有,则将自己所对应的位置1,其他置0,表示自己准备好成为LBSP节点;7.3每个节点在自身初始化后开始依次读自己的前续节点的节点状态字,首先查看是否已经完成组内LBSP的选择;如果已经完成选择,则查询谁是组内LBSP节点,并发出要求加入该组的请求;如果还没有完成选择则继续后面的过程;采用最小ID优先原则时如果所读节点ID号小于,或,采用最大ID优先原则时如果所读节点ID号大于自己的ID号,而且已经写了选择状态字来竞争LBSP节点就退出竞争进入集合点,等待GBSP节点唤醒;如果发现所读的状态字为全0,就用自己的选择状态字覆盖它,继续读前面的节点;采用最小ID优先原则时如果发现所读节点号大于,或,采用最大ID优先原则时如果发现所读节点号小于自己,也用自己的选择状态字覆盖它;最后,只有一个节点遍历所有节点成为LBSP节点,并且此时所有已完成启动的节点的选择状态字都是一致的;7.4选出组内LBSP节点之后,该节点立即写组内各个节点的节点状态字的组内LBSP选择完成标志,表示该过程结束;由于各节点的启动时间不完全一致,为了同步的需要,该LBSP节点应当等待一段时间再开始收集各节点的节点内部资源表并整合成组内资源表存放在LBSP节点的内存内。
8.如权利要求1或2所述的大规模并行计算机系统分组并行启动方法,其特征在于选择全局引导处理器GBSP的方法是系统全局GBSP选择由各组的组内LBSP节点参加竞争,采用的方法和组内LBSP节点基本一致,采取的原则也是最小或最大ID优先的原则;不同点为,在进行竞争之前,需要了解其他各组哪个节点是LBSP节点,这通过读该组内节点的节点状态字来获得首先通过组内节点的节点状态字的S了解该组是否已经完成了组内LBSP节点的选择,然后通过查寻该节点的选择状态字的GB,相应位为有效的节点就是组内LBSP节点;最后得到的系统GBSP对各组LBSP形成的资源表进行整合,形成系统资源表存放在GBSP所在的节点内存内。
9.如权利要求1所述的大规模并行计算机系统分组并行启动方法,其特征在于采用本发明进行分组并行启动具体过程是9.1加电或复位时,每个节点的所有CPU同时执行本地Firmware,进行第一阶段处理器初始化和自检操作;9.2完成第一阶段处理器初始化和自检操作后,选出节点内部BSP,其它处理器成为应用处理器AP并进入集合点(一段循环等待程序,等待进入第二阶段初始化和自检)等待唤醒;9.3节点内部BSP在本节点内存初始化和完成第二阶段初始化和自检后唤醒节点内的其它应用处理器AP进行第二阶段自检,AP自检返回后进入第二个集合点(一段循环等待程序,等待进入操作系统)等待唤醒;9.4点内部BSP根据所有处理器自检情况、节点配置和初始化情况建立节点内部资源表;9.5节点内部BSP对CC_NUMA系统内部高速互连网络初始化,此时节点内的启动已经完成。所有已经成功启动的节点可以通过高速互连网络共享节点内的资源,9.6节点内部BSP根据自己的状态在节点状态字中赋值,并在组内选择组内LBSP节点。组内LBSP节点查找收集组内节点内部资源表并进行整合,建立组内组内资源表。此时所有的非组内控制节点的节点BSP在选择组内LBSP节点之后进入第二个集合点等待唤醒;9.7由组内LBSP节点选出系统全局GBSP,此时非系统GBSP的所有组内LBSP都进入集合点等待唤醒,由系统全局GBSP独立引导系统;9.8系统全局GBSP收集各个组内LBSP节点形成的组内资源表,形成系统资源表;9.9系统全局GBSP运行操作系统加载程序,引导操作系统。
全文摘要
本发明公开了一种大规模并行计算机系统分组并行启动方法,要解决的技术问题是缩短基于CC_NUMA结构的大规模并行计算机系统规模很大时的启动时间。技术方案是根据计算机系统的规模对所有节点进行分组,在各节点设计一种节点控制器NC控制所有节点在系统Firmware中分阶段并行地进行BSP的选择和节点初始化和配置工作,启动时分三步,即选择节点内部引导处理器BSP;选择组内引导处理器LBSP;选择全局引导处理器GBSP。采用本发明可以降低系统启动时间,提高系统可用性,便于系统结构的扩展。
文档编号G06F9/445GK1664784SQ200510031390
公开日2005年9月7日 申请日期2005年3月30日 优先权日2005年3月30日
发明者蒋句平, 刘勇鹏, 刘光明, 田宝华, 苏湘玉, 屈晚霞, 郑明玲, 胡漪逸, 陈旭 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1