CN1592888A - 多节点计算机系统的枚举方法和装置 - Google Patents

多节点计算机系统的枚举方法和装置 Download PDF

Info

Publication number
CN1592888A
CN1592888A CNA028227379A CN02822737A CN1592888A CN 1592888 A CN1592888 A CN 1592888A CN A028227379 A CNA028227379 A CN A028227379A CN 02822737 A CN02822737 A CN 02822737A CN 1592888 A CN1592888 A CN 1592888A
Authority
CN
China
Prior art keywords
local
node
processor
bootstrapping
local node
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.)
Granted
Application number
CNA028227379A
Other languages
English (en)
Other versions
CN1324463C (zh
Inventor
玲·岑
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1592888A publication Critical patent/CN1592888A/zh
Application granted granted Critical
Publication of CN1324463C publication Critical patent/CN1324463C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了用于多节点计算机系统枚举的方法和装置。使用本地引导标记寄存器从一组本地节点处理器中选择本地自举处理器。本地自举处理器负责枚举本地节点元件。使用全局引导标记寄存器选择全局自举处理器,用于负责枚举系统组件。服务器管理设备监视枚举进度。

Description

多节点计算机系统的枚举方法和装置
技术领域
本发明涉及初始化复杂计算机系统的领域。更具体地说,本发明涉及用于以有效的方式来枚举复杂的多节点计算机系统的方法和装置。
背景技术
设计可靠的高可用性(HA)系统,用于使服务中断最小化,获得最大的正常运行时间,并减小意外停机的可能。HA系统可以用于辅助关键性服务,例如紧急呼叫中心和股票交易,以及用于军事应用的服务。HA系统一般以可靠性、可维护性(serviceability)和可用性(RAS)要求为基准。RAS性能一般要求HA系统有多于99.999%的时间是正常运行的。
服务器提供可能要求RAS性能的关键性服务,所述服务器可能是复杂计算机系统。获得最大正常运行时间的服务器一般设计有冗余,使得在系统中没有单点失效。如果执行任务的特定系统组件发生故障,那么另一个系统组件可用于完成该任务。一般将通常具有类似功能的独立的系统元件组称为节点。可靠性可能与系统使用的冗余量直接相关。因此,具有多个节点来执行特定功能的系统可能更可靠。
当复杂系统由于故障或计划的维护而关机时,如果系统启动程序是有效的并可以在短时间内初始化系统的许多节点,那么停机时间就可以被最小化。启动程序,也称作引导过程(boot process),一般包括枚举过程,用于识别系统资源并验证这些资源正在正常起作用。本发明包括用于有效的枚举过程的方法和装置。本发明通过向位于节点本地的处理器分派一部分枚举任务以及并行地执行一部分枚举任务,极大地减少了启动时间。
附图说明
图1A图示了多节点系统的一个实施例。
图1B示出了枚举多节点系统的一个实施例的流程图。
图2图示了节点的一个实施例。
图3A示出了引导节点的一个实施例的流程图。
图3B示出了节点元件枚举的一个实施例的流程图。
图4示出了多节点交换系统的详细的实施例。
图5图示了枚举多节点系统的一个详细实施例的流程图。
图6A图示了具有服务器管理设备的多节点系统的一个实施例。
图6B图示了用服务器管理设备监视节点枚举的一个实施例的流程图。
图7示出了HA多节点系统的一个实施例。
图8图示了用服务器管理设备监视系统枚举的一个实施例的流程图。
具体实施方式
图1A图示了用于实施本发明的多节点系统100的一个实施例。多节点系统100包括四个独立节点105。在实际的实施中,节点105的数量可以改变,并且可以不限于正好是四个。在一个实施例中,给定节点105可以是一组独立的系统元件,其可以包括至少一个处理器。一个或多个节点105可以通过接口线128直接接口到交换器110。交换器110可以被编程,以基于组件特定的标识或地址将分组发送到特定的系统组件。系统组件的例子可以是各个节点105,交换器110,输入/输出(I/O)桥120,以及一个或多个I/O设备125。交换器110辅助节点间的通信以及节点105与I/O桥120之间的通信。I/O桥120可以通过接口线128直接连接到交换器110以及I/O设备125。接口线128还可以是总线。I/O桥120为系统提供了对I/O设备125的通路。I/O设备125的例子包括打印机,磁盘驱动器,以及例如局域网(LAN)连接之类的到其他系统的网络连接。节点105能够通过经过交换器110发送和接收信息而与I/O设备125通信,所述交换器110经由接口线128将信息路由到I/O桥120。
在一个实施例中,I/O桥120是在用于个人计算机的某种Intel(加州Santa Clara的Intel公司)体系结构中使用的南桥的一部分。南桥包括最基本形式的I/O接口,包括通用串行总线(USB)、串行端口和音频。在另一个实施例中,I/O桥120可以是I/O控制中心的一部分,该I/O控制中心包括外围组件接口(PCI)在内,并且是Intel中心体系结构(IHA)的一部分。
图1B示出了枚举多节点系统的示例性流程图130,所述多节点系统例如是图1A的系统100。枚举一般是这样的过程:识别资源,测试资源以验证功能,产生具有关于资源的信息的枚举列表。在系统通电(方框140)之后,为各个节点选择本地自举处理器(方框150)。在一个实施例中,本地自举处理器可以负责识别和测试节点的本地资源。被称为本地元件的本地节点资源可以包括处理器和存储器设备。在为节点选择本地自举处理器(方框150)之后,各个节点由它们各自的本地自举处理器枚举(方框160)。在节点枚举(方框160)之后,可以选择全局自举处理器(方框170)。在一个实施例中,全局自举处理器可以负责枚举所有系统组件。系统组件的例子是节点、交换器和I/O桥。接下来,全局自举处理器枚举整个系统的组件(方框180)。在整个系统被枚举(方框180)之后,对系统的控制被转移给操作系统(OS)(方框190)。OS可以基于枚举列表中提供的信息,有效地对系统资源进行管理和分配任务。
在一个实施例中,流程130可以被用于通过在同一时间范围内并行地独立枚举节点(方框160)而极大地减少系统引导时间。对N个节点的并行节点枚举方案大约在枚举单个节点所花费的时间(T秒)内就可以完成。对N个节点的串行节点枚举方案(逐个节点执行节点枚举),即一个接一个的执行,可以在大约N×T秒内完成。复杂多节点系统可能具有许多节点,而并行枚举方案极大地提高了引导性能。例如具有50个节点的系统,使用并行节点枚举方案可以比使用串行节点枚举方案快50倍完成节点枚举。此外,因为可以为各个节点选择本地自举处理器,所以没有浪费时间在节点间执行仲裁以选择用于枚举所有节点的一个自举处理器。
图2图示了用于实施本发明的多处理器节点200的一个实施例。节点200具有四个本地处理器205。一个节点可以具有任意数量的元件,并且一个处理器节点可以具有任意数量的处理器205。多处理器节点200中的处理器可以通过芯片间连接210耦合起来。芯片间连接210提供处理器205之间的接口,以使处理器能进行通信。在一个实施例中,可以使用单独的接口来使处理器205能与节点200的其他元件通信。耦合到芯片间连接210的存储器控制器230是使处理器205能与例如本地节点存储器的其他元件通信的接口的一个例子。
在一个实施例中,芯片间连接210可以是前端总线(FSB),存储器控制器230可以是北桥控制器,两者都在用于个人计算机的某种Intel体系结构中使用。北桥通过FSB与处理器通信,并充当用于存储器、加速图形端口(AGP)和PCI的控制器。在另一个实施例中,芯片间连接210和存储器控制器230可以是IHA的一部分。IHA包括FSB和图形及AGP存储器控制中心,该中心类似于北桥,但具有更高的总线速度并且不包括PCI接口。
耦合到存储器控制器230的本地节点存储器的一个实施例可以是动态随机访问存储器(DRAM)240。另一个可以通过存储器控制器230访问的本地节点元件是存储在闪存250中的基本输入/输出系统软件(BIOS)1。BIOS 1闪存250包括用于枚举节点200的软件,并被耦合到存储器控制器230。在一个实施例中,BIOS 1闪存250可以不包括枚举整个系统所需的软件。在另一个实施例中,BIOS 1软件可以存储在只读存储器(ROM)中。节点200可以包括枚举节点200所需的所有元件。
节点200包括可以由本地节点处理器205访问的本地引导标记寄存器220。在一个实施例中,本地引导标记寄存器220可以被耦合到芯片间连接210。本地引导标记寄存器220可以被耦合到存储器控制器230。本地引导标记寄存器220可以被用于确定节点200中的哪个处理器是负责枚举节点200的本地自举处理器。本地引导标记寄存器220可以是下述寄存器,其缺省时处于零状态,并保持零状态直到其已被首次访问或读以后。
在本地引导标记寄存器220已经被读过一次之后,本地引导标记寄存器可以对所有随后的读都处于非零状态,除非本地引导标记寄存器220被复位。因此,从节点200的多个处理器205中选择本地自举处理器的有效方案可以是,使各个处理器205读本地引导标记寄存器220,并将从本地引导标记寄存器220中读到零状态的处理器205识别为本地自举处理器。这一方案避免了在多个节点处理器205之间确定哪一个是本地自举处理器的任何冗长的仲裁。本领域的技术人员应该理解,改变本地引导标记寄存器220的状态所需的访问(包括读和写)的数量,以及用于触发选择本地自举处理器的特定状态,在本发明的范围内可以采取多种组合。
在另一个实施例中,节点200可以包括本地计数器,而不包括本地引导标记寄存器220。当处理器205读计数器时,计数增加。本地自举处理器可以是从本地计数器读到特定计数的那个处理器205。对于本领域的技术人员来说将很清楚,可以用多种设备,特定逻辑电平,以及例如读、写和中断之类的访问,来选择一个处理器205作为本地自举处理器。
节点200可以是更大系统的许多组件中的一个。链路接口260提供了节点200与系统其他组件之间的接口。链路接口260可以在节点200刚通电时即被禁用。如果节点200与系统的所有其他组件之间的链路接口260在刚通电时即被禁用,那么节点200可以保持与更大系统的其余部分之间的隔离,直到链路接口260被允许(enable)。链路接口260可以在处理器节点被成功枚举时即被允许。因此,节点200只有在其正常起作用时才可能被接口到其他组件。成功的枚举可以是识别、测试和在枚举列表中列举资源的完成,这要求基本级别的功能。
图3A示出了引导节点的一个实施例的流程图300。在通电(方框310)之后,节点的链路接口被禁用(方框315)。在所示出的实施例中,链路接口可以通过访问寄存器来控制。例如,在通电(方框310)之后,可以通过写链路接口控制寄存器来禁用链路接口(方框315)。在另一个实施例中,链路接口可以在通电(方框310)后通过缺省而被禁用,而不需要任何动作来禁用链路接口(方框315)。在节点的链路接口被禁用(方框315)后,节点的各个元件运行内置自测试(BIST)(方框320)。在一个实施例中,BIST是用于验证基本功能的一组基本的测试。一般地,BIST是自带的测试,其可能不要求访问节点元件自身以外的信息,并且可能不要求本地节点元件之间的任何交互。在运行BIST(方框320)之后,节点中的处理器元件读本地引导标记寄存器(方框325)。在一个例子中,本地引导标记寄存器可以一直处于零状态直到第一次被读,并且在第一次被读之后一直保持在非零状态直到其被复位。因此,读本地引导标记寄存器的第一个节点处理器可以读到零状态,然后知道它将成为本地节点自举处理器。
在处理器读本地引导标记寄存器(方框325)之后,处理器确定本地引导标记寄存器是否处于零状态(方框330)。如果处理器是读本地引导标记寄存器(方框325)的第一个处理器,并且确定本地引导标记寄存器处于零状态(方框330),那么该处理器是本地节点自举处理器(方框340)。如果处理器确定本地引导标记寄存器没有处于零状态(方框330),则该处理器被禁止(方框335)。在一个实施例中,处理器可以通过进入休止状态(hibernation state)而被禁止(方框335)。休止状态是一种低功率状态。在另一个实施例中,处理器可以通过进入等待循环而被禁止(方框335)。接下来,本地节点自举处理器枚举节点(方框345)。在一个实施例中,本地节点自举处理器可以对节点中的所有元件执行全套的功能测试。在枚举节点(方框345)之后,本地节点自举处理器允许链路接口(方框350)。本领域的技术人员将知道,有多种方法用于从一组本地节点处理器中选择本地自举处理器。
图3B示出了节点元件枚举的一个实施例的流程图360。首先,本地节点自举处理器测试节点元件的功能(方框361)。例如,可以对一个存储器元件执行全套功能测试,来分析存储器元件中的存储器扇区。此外,还可以测试存储器与存储器控制器和其他设备间的交互。然后,确定该元件是否能完全起作用(方框365)。如果该元件能完全起作用,那么在枚举列表中将该节点元件列举为能完全起作用(方框370)。
在一个实施例中,枚举列表可以存储在闪存设备,例如图1的BIOS 1闪存250中。如果元件不能完全起作用,则该元件被本地节点自举处理器修剪(prune)(方框375)。修剪是挽救发生故障的节点元件或系统组件正工作的部分的过程。例如,如果一个节点元件是存储器设备,并且该存储器设备30%的存储器扇区有故障而70%的存储器扇区正常起作用,那么本地节点自举处理器可以确定该存储器设备仍旧是有用的,并识别正工作的扇区的地址。如果在元件的修剪过程(方框375)中,本地节点自举处理器确定该元件能部分地起作用(方框380),那么它可以将这个能部分地起作用的元件包括在枚举列表中(方框370)。
如果本地节点自举处理器确定该元件不能部分地起作用(方框380),那么该元件被从节点中去除(amputate)(方框385)。去除就是将节点元件或者系统组件禁用,使其不能再被访问。在一个实施例中,被去除的节点元件可以不被列举在枚举列表中。在另一个实施例中,被去除的元件可以被列举在枚举列表中,并被标明无法正常起作用。
图4示出了另一个多节点交换系统400的详细图示。交换系统400包括四个处理器节点405,不过多节点交换系统可以具有任意数量的处理器节点405。在一个实施例中,处理器节点405可以是图2中描述的处理器节点。多个处理器节点405可以通过各自的链路接口409而接口到交换器410。链路接口409使处理器节点405能与连接到交换器410的所有其他组件通信。I/O桥420在系统400中所有可以被链接到交换器410的组件与经由链路接口409直接链接到I/O桥420的各种设备之间提供了接口。直接链接到I/O桥420的设备的例子是磁盘驱动器440、打印机450、LAN连接460以及存储器设备470。在一个例子中,直接链接到I/O桥420的另一种设备可以是BIOS 2闪存430。在一个实施例中,BIOS 2闪存包括用于枚举整个系统400的软件。交换器410和I/O桥420之间的链路接口409可以在刚通电时即被允许。
交换器410包括全局引导标记寄存器415。全局引导标记寄存器415可以被用于选择全局自举处理器。全局自举处理器负责枚举系统400的组件,例如交换器410、I/O桥420以及多个节点405,而本地节点自举处理器负责枚举特定节点405的内部元件。在一个实施例中,全局引导标记寄存器415可以驻留在I/O桥420中。
图5图示了枚举多节点系统的一个详细实施例的流程图。一经通电(方框502),任何交换器和任何I/O桥之间的链路接口就都被允许,而任何节点和任何交换器之间的链路接口都被禁用(方框505)。接下来,枚举各个节点,然后节点间的链路接口可以被允许(方框510)。可以使用图3A和图3B中描述的方法来枚举节点。在一个实施例中,如果节点没有被成功枚举,那么节点链路接口仍旧被禁用,并且该节点被从系统中有效地去除。一旦节点枚举完成并且链路接口被允许(方框510),那么本地节点自举处理器竞争去读全局引导标记寄存器(方框515)。如果本地节点自举处理器是第一个读全局引导标记寄存器的,并确定该全局引导标记寄存器处于零状态(方框520),那么该本地节点自举处理器是全局自举处理器(方框535)。本领域的技术人员应该清楚,可以用多种设备,特定逻辑电平,以及例如读、写和中断之类的访问,来选择一个处理器作为本地自举处理器。
如果本地节点自举处理器不是第一个读全局引导标记寄存器的,并且确定全局引导标记寄存器没有处于零状态(方框520),那么本地节点自举处理器存储其本地节点的枚举结果(方框525)。在一个实施例中,本地节点枚举结果可以被存储在节点本地的BIOS 1闪存中。在另一个实施例中,本地节点枚举结果可以被存储在可以直接链接到I/O桥的BIOS 2闪存中。
在存储枚举结果(方框525)之后,本地节点自举处理器禁止(方框530)。在一个实施例中,本地节点自举处理器进入等待循环。在另一个实施例中,本地节点自举处理器进入休止状态。全局自举处理器等待所有的本地节点自举处理器完成对它们各自节点的枚举以及对枚举结果的存储(方框540)。如果所有的本地节点自举处理器已经完成对它们枚举结果的存储(方框530),那么全局自举处理器开始检查BIOS软件是否是最新版本(方框545)。在一个实施例中,全局自举处理器检查节点本地的BIOS 1软件。在另一个实施例中,全局自举处理器检查链接到I/O桥的BIOS 2软件。在又一个实施例中,全局自举处理器检查BIOS 1软件和BIOS 2软件两者。如果BIOS软件是最新的,那么全局自举处理器枚举整个系统(方框550)。系统枚举(方框550)一完成,对系统的控制就从全局自举处理器转移给OS(方框555)。如果BIOS软件被确定为不是最新版本(方框545),那么BIOS软件被更新(方框560),并且全局自举处理器发出系统复位(方框565)以重新启动整个引导过程。
图6A图示了具有服务器管理(SM)设备601的多节点系统600的另一个例子。在该实施例中,SM设备601可以是处理器。多节点系统600包括两个多处理器节点605。除了额外的本地状态寄存器610之外,节点605可以与图2中描述的节点相同。重新参照图2,本地状态寄存器610可以被耦合到芯片间连接210。在另一个实施例中,本地状态寄存器610可以被耦合到存储器控制器230。本地状态寄存器610可以由本地节点自举处理器在完成枚举过程的任务之后进行写入。SM设备601可以通过将SM设备601耦合到节点605的SM控制线615访问本地状态寄存器610,并监视节点枚举的进度。如果节点枚举的进度出现问题,那么SM设备601可以干预枚举过程。例如,由于引导过程中的温度变化,本地节点自举处理器可能开始枚举然后在枚举中途失败。
SM设备601可以确定存在由本地节点自举失败引起的枚举进度问题,例如枚举没有在预定时间内完成。在通过本地状态寄存器610监视枚举进度的同时,SM设备601可以认出枚举问题,并解决该问题或去除该节点。在一个实施例中,SM控制线615使SM设备601能访问节点的元件,使得SM设备601可以在存在枚举进度问题时修剪该节点。
图6B图示了用SM设备监视节点枚举的一个实施例的流程图640。SM设备等待直到节点枚举开始(方框650)。在一个实施例中,SM设备可以通过读本地状态寄存器来确定节点枚举已经开始。一旦节点枚举已经开始,SM设备就启动计时器(方框655)。在启动计时器(方框655)之后,SM设备通过读本地状态寄存器来监视节点枚举的进度(方框660)。在读本地状态寄存器(方框660)之后,SM设备确定是否存在枚举过程问题(方框665)。在一个实施例中,枚举过程问题可以由本地状态寄存器中的本地自举处理器指示。在另一个实施例中,SM设备基于在枚举任务的开始与该任务的完成之间经过了多少时间,来确定可能存在枚举进度问题。例如,SM设备可以具有一个预定的时限列表,所述时限是节点枚举的相继的任务的时限以及整个节点枚举过程的时限。使用计时器作为时间基准,SM设备可以因特定的枚举任务已经花费了比预定时限更长的时间,而确定存在枚举进度问题。
如果没有枚举进度问题(方框665),那么服务器管理设备继续监视枚举进度(方框660)。如果确定存在枚举进度问题(方框665),那么SM设备对节点执行修剪和/或去除(方框670)。在一个实施例中,SM设备去除通过本地状态寄存器而被指示为部分或全部有故障的节点元件。在另一个实施例中,如果存在枚举进度问题,则SM设备去除整个节点。
在修剪和去除(方框670)过程中,确定本地节点自举处理器能否起作用(方框675)。如果由SM设备执行修剪/去除(方框670)的结果是解决了枚举进度问题,并且本地节点自举处理器能起作用(方框675),则SM设备继续监视枚举进度(方框660)。如果本地节点自举处理器不能起作用,那么可以选择新的本地节点自举处理器(方框680)。在一个实施例中,可以由SM设备通过去除旧的本地节点自举处理器,并从其他节点处理器中选择一个作为本地节点自举处理器,来选择新的本地节点自举处理器。在另一个实施例中,SM设备可以复位节点的本地引导标记寄存器,并可以允许所有还未被去除的处理器来竞争访问本地引导标记寄存器,以根据图3A中描述的流程确定新的本地自举处理器。如果选择新的本地节点自举处理器(方框680)的结果是解决了枚举过程问题,那么SM设备继续监视枚举进度(方框660)。
图7示出了可靠的HA多节点系统700的一个实施例。所示出的实施例包括四个节点705,两个交换器710,和两个I/O桥730。可以理解,组件或设备的数量可以取决于系统的设计而改变。节点705和I/O桥730通过链路接口760接口到交换器710。SM设备740经由服务器管理控制线750与系统的组件耦合。在可替换的实施例中,SM设备可以与有限数量的系统组件耦合。系统700是可靠的,因为它没有单点失效。如果系统的任何一个组件失效,系统中至少存在一个可以执行同样的功能的其他组件。交换器710包括全局状态寄存器715和全局引导标记寄存器720。在一个实施例中,全局状态寄存器715可以由全局自举处理器进行写入,以指示系统枚举的状态。
在一个实施例中,系统700使用在图3A和图3B中描述的、包括图6B的SM节点枚举监视在内的流程来进行节点枚举过程。在节点枚举过程之后,系统700可以进行在图5中描述的组件枚举过程。与图6A中系统的SM控制非常相象,系统管理设备740可以被用于监视系统组件枚举的进度。在一个实施例中,服务器管理设备740通过全局状态寄存器715监视系统枚举进度,在整个系统枚举过程中全局状态寄存器715由全局自举处理器进行写入。在所示出的实施例中,全局状态寄存器715和全局引导标记寄存器720驻留在交换器710中。在另一个实施例中,全局状态寄存器715和全局引导标记寄存器720可以驻留在I/O桥730中。在又一个实施例中,全局状态寄存器715和全局引导标记寄存器720可以分别驻留在交换器710或I/O桥730中。在刚通电时,节点705和交换器710之间的链路接口760可以被禁用,而I/O桥730和交换器710之间的链路接口760可以被允许。
缺省时可以同时使用所有的交换器710。多个交换器710可以同时被用来通过交错(interleave)通信任务而对系统组件之间的通信进行路由,所述交错是一种分割任务并分派一些任务给不同的多个交换器710的方法。在另一个实施例中,可以在缺省时使用多个交换器710中的一个,而所有其他的交换器710只在缺省的交换器710失效时才能被激活。可以在缺省时只使用一个I/O桥730,或者,可以同时使用所有的I/O桥730。
图8图示了用服务器管理来监视系统组件枚举的一个实施例的流程图800。SM设备等待系统组件枚举开始(方框810)。在一个实施例中,SM设备通过读可以由全局自举处理器写入的全局状态寄存器,来确定系统枚举已经开始。如果系统枚举已经开始,那么SM设备启动计时器(方框815)。在启动计时器(方框815)之后,SM设备通过读全局状态寄存器来监视系统组件枚举的进度(方框820)。基于从全局状态寄存器中读取的内容,SM设备确定是否存在枚举进度问题(方框825)。如果没有枚举进度问题,那么SM设备继续监视系统组件枚举的进度(方框820)。如果存在枚举进度问题,那么SM设备执行修剪和去除(方框830)。在一个实施例中,从全局状态寄存器读取的信息指示系统的哪个组件有故障。在另一个实施例中,SM设备基于计时器和任务的预定时限来评估枚举任务花了多长时间,从而确定可能存在枚举进度问题。
在SM设备已经修剪和/或去除有故障的设备(方框830)之后,SM设备确定全局自举处理器是否起作用(方框835)。如果全局自举处理器没有正常起作用,那么选择新的全局自举处理器(方框850),并且可以去除旧的全局自举处理器。如果全局自举处理器在起作用,或者在选择新的全局自举处理器(方框850)之后,SM设备确定交换器是否起作用(方框840)。在一个实施例中,如果系统中的任何交换器都没有正常起作用,那么SM设备可以重新对正常起作用的任何交换器进行编程,来处理所有的通信流量(方框855),以绕过有故障的交换器,以有效地去除有故障的交换器。接下来,SM设备确定缺省的I/O桥是否正常起作用(方框845)。如果缺省的I/O桥没有正常起作用,那么缺省的I/O桥可以被去除,并且可以允许后备桥(方框860)。如果缺省桥在起作用或者后备桥已经代替了缺省桥,那么枚举继续,并且SM设备继续监视系统组件枚举的进度(方框820)。
本领域的技术人员应该理解,节点本身可以包含任意数量的元件,这些元件本身也是节点(称为子节点),并且枚举系统子节点、然后枚举节点、然后枚举系统组件的分级枚举过程处于本发明的范围内。注意,图1A、图4和图7的系统实施例是包含独立的系统组件组的节点,所述独立的系统组件组等同于具有类似功能的节点元件。这些不同的实施例可以是更大系统的一部分。例如,图1A的节点105可以包括图4或图7中示出的系统。因此,本发明适用于枚举节点内的节点,并可以递推地使用。
本领域的技术人员还应该理解,SM设备可以被用于监视节点中所有元件或一部分元件的枚举进度。或者,SM设备可以被用于监视系统中所有组件或一部分组件的枚举进度。
在可替换实施例中,本发明可以在分立的硬件或固件中实现。例如,本地和全局引导标记寄存器可以实现为存储器设备中的单元(location),其在通电时被设定为特定值,并在处理器第一次读该存储器单元后改变。
在以上描述中,参照其具体的示例性实施例描述了本发明。但很清楚,可以对其做出多种修改和改变,而不脱离所附权利要求给出的本发明更宽的精神和范围。本说明书和附图应被认为是说明性的而非限制性的。

Claims (30)

1.一种方法,包括:
从多个本地节点元件中选择第一部分本地节点元件,其中,所述多个本地节点元件处于有效状态并且未被枚举;
禁止其余部分的本地节点元件;以及
用所选择的第一部分本地节点元件来枚举所述多个本地节点元件。
2.如权利要求1所述的方法,其中,选择所述第一部分包括选择第一个对由所述多个本地节点元件共享的设备进行访问的部分。
3.如权利要求1所述的方法,其中,选择所述第一部分包括选择第一部分本地节点处理器元件。
4.如权利要求1所述的方法,其中,禁止所述其余部分包括将所述其余部分置于休止状态。
5.如权利要求1所述的方法,还包括在刚通电时即禁用本地节点与更大系统之间的链路接口,其中,所述更大系统包括多个节点,并且所述链路接口使信息能在所述本地节点与所述更大系统的组件之间传送。
6.如权利要求1所述的方法,其中,枚举所述多个本地节点元件还包括:
确定所述多个本地节点元件能否起作用;
去除完全无法起作用的本地节点元件,以禁用所述无法起作用的本地节点元件;
修剪能部分地起作用的本地节点元件,以只禁用所述能部分地起作用的本地节点元件中那些无法起作用的部分,并允许所述能部分地起作用的本地节点元件中那些能起作用的部分;以及
编制枚举结果列表,以列举节点中的本地资源和所述本地资源的功能。
7.如权利要求1所述的方法,还包括:
监视所述多个本地节点元件的枚举进度;
如果存在枚举进度问题,则从所述多个本地节点元件中选择第二部分本地节点元件;
如果存在枚举进度问题,则用所述第二部分本地节点元件来枚举所述多个本地节点元件。
8.如权利要求2所述的方法,其中,所述选择第一个对共享设备进行访问的部分包括选择第一个读共享寄存器的部分。
9.如权利要求5所述的方法,还包括在枚举所述本地节点之后,允许所述链路接口。
10.一种装置,包括:
节点,其中所述节点是多个本地节点元件;
第一本地自举元件,用于枚举所述多个本地节点元件,其中,所述第一本地自举元件是所述多个本地节点元件中的一个;以及
共享本地设备,用于选择所述多个本地节点元件中的哪一个是所述第一本地自举元件。
11.如权利要求10所述的装置,其中,节点包括多个节点,所述多个节点中的节点包括第一共享本地设备和第一本地自举元件,所述第一共享本地设备用于选择所述第一本地自举元件,所述第一本地自举元件用于枚举所述多个本地节点元件。
12.如权利要求10所述的装置,其中,在第一次访问所述共享设备之前,所述共享设备处于第一逻辑状态,而在第一次访问所述共享设备之后,所述共享设备基本上立即就处于不同的第二逻辑状态。
13.如权利要求10所述的装置,还包括服务器管理设备,用于监视本地节点枚举的进度,并且如果所述本地节点枚举的进度不符合预定要求,则所述服务器管理设备使得从所述多个本地节点元件中选择第二本地自举元件并去除所述第一本地自举元件。
14.如权利要求10所述的装置,其中,所述本地共享设备是寄存器,在由本地节点元件第一次读所述寄存器之前,所述寄存器具有第一逻辑状态,而在由本地节点元件第一次读所述寄存器之后,所述寄存器具有第二逻辑状态。
15.如权利要求11所述的装置,其中,对所述多个节点的枚举是由所述第一本地自举元件基本上同时在本地执行的。
16.如权利要求13所述的装置,其中,所述预定要求是时限。
17.一种在其上存储有指令序列的计算机可读介质,所述指令序列包括由处理器执行时将使所述处理器执行如下步骤的指令,所述步骤包括:
从多个本地节点元件中选择第一部分本地节点元件,其中,所述多个本地节点元件处于有效状态并且未被枚举;
禁止其余部分的本地节点元件;以及
用所述第一部分来枚举所述多个本地节点元件。
18.如权利要求17所述的计算机可读介质,还包括由处理器执行时将使所述处理器执行如下步骤的指令,所述步骤包括:
选择第一个对由所述多个本地节点元件共享的设备进行访问的部分,作为所述第一部分。
19.如权利要求17所述的计算机可读介质,还包括由处理器执行时将使所述处理器执行如下步骤的指令,所述步骤包括:
允许本地节点与更大系统之间的链路接口,其中,所述更大系统包括多个节点,并且所述链路接口使信息能在所述本地节点与所述更大系统的组件之间传送。
20.一种装置,包括:
多个处理器节点,其中,一个处理器节点包括多个本地元件;
I/O桥,该I/O桥耦合到多个I/O设备;
交换器,用于允许通过所述I/O桥在所述多个处理器节点与所述多个I/O设备之间进行通信;
多个节点链路接口,用于使所述节点和所述交换器之间能通信,其中,所述节点链路接口在刚通电时即被禁用;
多个第一本地自举处理器,用于枚举所述多个处理器节点中的处理器节点的本地元件,其中,所述处理器节点包括所述节点本地的第一本地自举处理器;
多个位于所述处理器节点内的本地共享设备,用于选择所述多个第一本地自举处理器,其中,所述各个处理器节点包括所述节点本地的本地共享设备;
第一全局自举处理器,用于枚举所述装置的组件;以及
可由所述各个处理器节点访问的全局共享设备,用于选择所述第一全局自举处理器。
21.如权利要求20所述的装置,其中,所述全局共享设备被耦合到所述交换器。
22.如权利要求20所述的装置,其中,所述全局共享设备被耦合到所述I/O桥。
23.如权利要求20所述的装置,还包括至少一个服务器管理设备,用于监视各个节点枚举的进度,并且对于所述多个节点中任何未在预定时间范围内完成所述节点枚举的节点,所述服务器管理设备使得从所述多个本地节点元件中选择第二本地自举处理器并去除所述第一本地自举处理器。
24.如权利要求20所述的装置,还包括至少一个服务器管理设备,用于监视系统组件枚举的进度,并且如果所述系统枚举没有在预定时间范围内完成,则所述服务器管理设备使得从所述多个系统组件中选择第二全局自举处理器并去除所述第一全局自举处理器。
25.如权利要求20所述的装置,其中,所述多个本地共享设备和所述全局共享设备各自在第一次访问所述共享设备之前具有第一逻辑状态,而在第一次访问所述共享设备之后基本上立即就具有不同的第二逻辑状态。
26.如权利要求20所述的装置,其中,所述多个节点中各个节点的所述多个第一本地自举处理器基本上是被同时选择的,并且所述多个第一本地自举处理器基本上同时枚举所述多个本地处理器节点元件。
27.如权利要求25所述的装置,其中,所述本地共享设备和所述全局共享设备是寄存器,在由处理器元件第一次读所述寄存器之前,所述寄存器具有为“0”的第一逻辑状态,而在由处理器元件第一次读所述寄存器之后,所述寄存器基本上立即就具有不为“0”的第二逻辑状态。
28.一种计算机系统,包括:
多个处理器;
本地存储器设备,用于存储BIOS指令和枚举结果;
芯片间连接设备,用于允许所述计算机系统中设备之间的通信;
引导标记寄存器,用于选择自举处理器;
自举处理器,用于枚举所述计算机系统中的设备;以及
链路接口,用于允许所述计算机系统和交换器之间的通信。
29.如权利要求28所述的计算机系统,其中,所述链路接口在刚通电时即被禁用,而在成功枚举之后被允许。
30.如权利要求28所述的计算机系统,其中,所述自举处理器是所述多个处理器中第一个读所述引导标记寄存器的处理器。
CNB028227379A 2001-11-14 2002-11-08 多节点计算机系统的枚举方法和装置 Expired - Fee Related CN1324463C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/992,725 2001-11-14
US09/992,725 US20030093510A1 (en) 2001-11-14 2001-11-14 Method and apparatus for enumeration of a multi-node computer system

Publications (2)

Publication Number Publication Date
CN1592888A true CN1592888A (zh) 2005-03-09
CN1324463C CN1324463C (zh) 2007-07-04

Family

ID=25538668

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028227379A Expired - Fee Related CN1324463C (zh) 2001-11-14 2002-11-08 多节点计算机系统的枚举方法和装置

Country Status (7)

Country Link
US (1) US20030093510A1 (zh)
EP (1) EP1444573A2 (zh)
KR (1) KR100633827B1 (zh)
CN (1) CN1324463C (zh)
AU (1) AU2002352572A1 (zh)
TW (1) TWI229266B (zh)
WO (1) WO2003042829A2 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100356325C (zh) * 2005-03-30 2007-12-19 中国人民解放军国防科学技术大学 大规模并行计算机系统分组并行启动方法
CN102508679A (zh) * 2011-11-01 2012-06-20 大唐移动通信设备有限公司 一种软件加载方法及装置
WO2012119406A1 (zh) * 2011-08-22 2012-09-13 华为技术有限公司 枚举输入输出设备的方法和设备
CN103530254A (zh) * 2013-10-11 2014-01-22 杭州华为数字技术有限公司 多节点系统的外部设备互联枚举方法和装置
CN116340270A (zh) * 2023-05-31 2023-06-27 深圳市科力锐科技有限公司 并发遍历枚举方法、装置、设备及存储介质

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7484125B2 (en) * 2003-07-07 2009-01-27 Hewlett-Packard Development Company, L.P. Method and apparatus for providing updated processor polling information
JP4945949B2 (ja) * 2005-08-03 2012-06-06 日本電気株式会社 情報処理装置、cpu、情報処理装置の起動方法およびプログラム
US7600109B2 (en) 2006-06-01 2009-10-06 Dell Products L.P. Method and system for initializing application processors in a multi-processor system prior to the initialization of main memory
US7856551B2 (en) * 2007-06-05 2010-12-21 Intel Corporation Dynamically discovering a system topology
US7925876B2 (en) * 2007-08-14 2011-04-12 Hewlett-Packard Development Company, L.P. Computer with extensible firmware interface implementing parallel storage-device enumeration
US8595405B2 (en) * 2008-02-18 2013-11-26 Hewlett-Packard Development Company, L.P. Systems and methods of communicatively coupling a host computing device and a peripheral device
CN101960435B (zh) * 2008-02-26 2015-01-14 惠普开发有限公司 用于执行主机枚举过程的方法和装置
US20090213755A1 (en) * 2008-02-26 2009-08-27 Yinghai Lu Method for establishing a routing map in a computer system including multiple processing nodes
US9442540B2 (en) * 2009-08-28 2016-09-13 Advanced Green Computing Machines-Ip, Limited High density multi node computer with integrated shared resources
US9311138B2 (en) * 2013-03-13 2016-04-12 Intel Corporation System management interrupt handling for multi-core processors
WO2015116096A2 (en) * 2014-01-30 2015-08-06 Hewlett-Packard Development Company, L.P. Multiple compute nodes
CN105335526A (zh) * 2015-12-04 2016-02-17 北京京东尚科信息技术有限公司 一种图片加载方法及装置
US10599442B2 (en) * 2017-03-02 2020-03-24 Qualcomm Incorporated Selectable boot CPU

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768542A (en) * 1994-06-08 1998-06-16 Intel Corporation Method and apparatus for automatically configuring circuit cards in a computer system
JP3447404B2 (ja) * 1994-12-08 2003-09-16 日本電気株式会社 マルチプロセッサシステム
US5524209A (en) * 1995-02-27 1996-06-04 Parker; Robert F. System and method for controlling the competition between processors, in an at-compatible multiprocessor array, to initialize a test sequence

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100356325C (zh) * 2005-03-30 2007-12-19 中国人民解放军国防科学技术大学 大规模并行计算机系统分组并行启动方法
WO2012119406A1 (zh) * 2011-08-22 2012-09-13 华为技术有限公司 枚举输入输出设备的方法和设备
US9280493B2 (en) 2011-08-22 2016-03-08 Huawei Technologies Co., Ltd. Method and device for enumerating input/output devices
CN102508679A (zh) * 2011-11-01 2012-06-20 大唐移动通信设备有限公司 一种软件加载方法及装置
CN103530254A (zh) * 2013-10-11 2014-01-22 杭州华为数字技术有限公司 多节点系统的外部设备互联枚举方法和装置
CN103530254B (zh) * 2013-10-11 2016-11-23 杭州华为数字技术有限公司 多节点系统的外部设备互联枚举方法和装置
CN116340270A (zh) * 2023-05-31 2023-06-27 深圳市科力锐科技有限公司 并发遍历枚举方法、装置、设备及存储介质
CN116340270B (zh) * 2023-05-31 2023-07-28 深圳市科力锐科技有限公司 并发遍历枚举方法、装置、设备及存储介质

Also Published As

Publication number Publication date
KR100633827B1 (ko) 2006-10-13
TWI229266B (en) 2005-03-11
WO2003042829A3 (en) 2004-04-15
WO2003042829A2 (en) 2003-05-22
KR20050058241A (ko) 2005-06-16
US20030093510A1 (en) 2003-05-15
CN1324463C (zh) 2007-07-04
TW200301427A (en) 2003-07-01
EP1444573A2 (en) 2004-08-11
AU2002352572A1 (en) 2003-05-26

Similar Documents

Publication Publication Date Title
CN1324463C (zh) 多节点计算机系统的枚举方法和装置
JP3910554B2 (ja) 論理パーティション・データ処理システムでのエラーまたはイベントを処理する方法、コンピュータ・プログラム、データ処理システム
JP3954088B2 (ja) 論理分割された(lpar)計算機でシステム・ファームウェア更新を安全に実行する機構
CN1308869C (zh) 用于无中断动态热插拔的系统与方法
US20060064523A1 (en) Control method for virtual machine
US7139940B2 (en) Method and apparatus for reporting global errors on heterogeneous partitioned systems
CN100409191C (zh) 用于管理多节点smp系统的方法和系统
US5764882A (en) Multiprocessor system capable of isolating failure processor based on initial diagnosis result
US20030200354A1 (en) Computer system and method that eliminates the need for an operating system
JP4270394B2 (ja) 論理パーティション・データ処理システムにおける不正なオペレーティング・システムのローディング及び実行を防ぐための方法及びシステム
US6971002B2 (en) Method, system, and product for booting a partition using one of multiple, different firmware images without rebooting other partitions
KR20050076747A (ko) 논리 파티션 데이터 처리 시스템에서 전력 소비를 감소시키는 방법 및 장치
US7877643B2 (en) Method, system, and product for providing extended error handling capability in host bridges
US7657734B2 (en) Methods and apparatus for automatically multi-booting a computer system
US7146515B2 (en) System and method for selectively executing a reboot request after a reset to power on state for a particular partition in a logically partitioned system
US8031637B2 (en) Ineligible group member status
US8032791B2 (en) Diagnosis of and response to failure at reset in a data processing system
JP2003173272A (ja) 情報処理システム,情報処理装置及び保守センタ
US6598105B1 (en) Interrupt arbiter for a computing system
US7103639B2 (en) Method and apparatus for processing unit synchronization for scalable parallel processing
CN101158920B (zh) 一种检测操作系统故障的方法和装置
US20060230307A1 (en) Methods and systems for conducting processor health-checks
US6915460B2 (en) Method, apparatus, and program for service processor surveillance with multiple partitions
CN118349398A (zh) 多核异构系统的异常恢复方法、装置、芯片及电子设备
JPS6315334A (ja) 並列処理装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070704

Termination date: 20101108