用于对称多处理器互连的方法和设备以及多处理器转让专利

申请号 : CN200810002268.3

文献号 : CN101221551B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 乔治·N.·亚尼兹鲁埃·A.·阿布-埃马拉马克·D.·麦克劳林

申请人 : 国际商业机器公司

摘要 :

本发明涉及用于对称多处理器互连的方法和设备以及多处理器。提供了一种用于管理对称多处理器互连的计算机实现方法、设备以及计算机程序产品。该处理标识多处理器上的多个处理器中的各处理器之间的功能性通信连接,以形成已标识功能性通信连接。该处理根据该已标识功能性通信连接来映射所述多个处理器中的任意两个处理器之间的每个功能性通信连接,从而形成互连矩阵。该处理使用该互连矩阵来创建路径映射。该路径映射包含所述多个处理器之间的通信连接的序列。该处理使用该路径映射对所述多个处理器进行初始化。

权利要求 :

1.一种用于管理对称多处理器互连的计算机实现方法,该计算机实现方法包括:标识多处理器上的多个处理器中的各处理器之间的功能性通信连接,以形成已标识功能性通信连接;

将已标识功能性通信连接存储在输出文件中;

根据所述输出文件来产生互连矩阵,其中所述互连矩阵是所述多个处理器中的任意两个处理器之间的每个功能性通信连接的映射;

使用该互连矩阵来创建路径映射,其中该路径映射包括所述多个处理器之间的通信连接的序列;以及使用该路径映射对所述多个处理器进行初始化。

2.如权利要求1所述的计算机实现方法,还包括:响应于标识出故障连接,从互连矩阵中去除该故障连接,其中故障连接是所述多个处理器中的两个处理器之间的已经发生了故障的连接。

3.如权利要求2所述的计算机实现方法,其中从互连矩阵中去除故障连接的步骤形成了已更新互连矩阵,并且该方法还包括:响应于确定出该故障连接是路径映射中的连接,根据该已更新互连矩阵来产生另选路径映射,其中该另选路径映射旁路该故障连接。

4.如权利要求3所述的计算机实现方法,其中该故障连接是在初始化期间发生故障的连接,并且该方法还包括:根据该另选路径映射,继续对所述多个处理器进行初始化。

5.如权利要求3所述的计算机实现方法,其中该故障连接是在运行时间期间发生故障的连接,并且该方法还包括:重新引导该系统;以及

根据该另选路径映射,对所述多个处理器进行初始化。

6.如权利要求3所述的计算机实现方法,还包括:只有在因剩余的功能性通信连接不足而无法产生另选路径映射的情况下,才将系统指定为不能进行初始化。

7.如权利要求1所述的计算机实现方法,其中标识各处理器之间的功能性通信连接的步骤还包括:将所述多个处理器中的一个处理器指定为主设备,并将所述多个处理器中的所有其它处理器指定为接收机处理器;

发起从主设备上的一组发送端口到所有接收机处理器的数据分组传输;以及打开每个接收机处理器上的一组接收机端口,以确定主设备与该接收机之间的每个连接是否为功能性通信连接;以及将所有功能性通信连接标识在输出文件中。

8.如权利要求7所述的计算机实现方法,还包括:响应于确定出并不是所述多个处理器中的每个处理器都曾被指定为主设备,循环地将下一个处理器指定为主设备,并将所有其它处理器指定为接收机处理器;以及标识主设备与接收机处理器之间的所有功能性通信连接,直至所述多个处理器中的每个处理器都曾被指定为主设备为止。

9.如权利要求7所述的计算机实现方法,其中打开每个接收机处理器上的一组接收机端口的步骤还包括:打开接收机处理器上的该组接收机端口中的给定接收机端口;

确定该给定接收机端口是否接收到主设备发送的数据分组;以及响应于确定出该给定接收机端口接收到该数据分组,在输出文件中将主设备与该给定接收机端口之间的连接标识为功能性通信连接。

10.如权利要求9所述的计算机实现方法,还包括:响应于确定出尚未打开的该组接收机端口中的每个接收机端口,循环地打开每个接收机端口,并且确定已打开的接收机端口是否接收到该数据分组,其中如果该已打开的接收机端口接收到该数据分组,那么在输出文件中将主设备与该已打开的接收机端口之间的连接标识为功能性通信连接。

11.如权利要求1所述的计算机实现方法,其中互连矩阵和路径映射被保存在非易失性存储器中。

12.一种用于管理对称多处理器互连的计算机实现设备,该计算机实现设备包括:用于标识多处理器上的多个处理器中的各处理器之间的功能性通信连接,以形成已标识功能性通信连接的装置;

用于将已标识功能性通信连接存储在输出文件中的装置;

用于根据所述输出文件来产生互连矩阵的装置,其中所述互连矩阵是所述多个处理器中的任意两个处理器之间的每个功能性通信连接的映射;

用于使用该互连矩阵来创建路径映射的装置,其中该路径映射包括所述多个处理器之间的通信连接的序列;以及用于使用该路径映射对所述多个处理器进行初始化的装置。

13.如权利要求12所述的设备,还包括:

用于响应于标识出故障连接,从互连矩阵中去除该故障连接的装置,其中故障连接是所述多个处理器中的两个处理器之间的已经发生了故障的连接。

14.如权利要求13所述的设备,其中所述从互连矩阵中去除故障连接的装置形成了已更新的互连矩阵,并且所述设备还包括:用于响应于确定出该故障连接是路径映射中的连接,根据该已更新的互连矩阵来产生另选路径映射的装置,其中该另选路径映射旁路该故障连接。

说明书 :

用于对称多处理器互连的方法和设备以及多处理器

技术领域

[0001] 本申请主要涉及数据处理系统,具体地说,涉及一种用于对称多处理器的方法和设备。更具体地说,本申请涉及一种用于自动管理对称多处理器互连的计算机实现方法、设备以及计算机可用程序代码。

背景技术

[0002] 处理器是能够独立于其它处理器地执行线程、任务或其它进程的独立处理单元或计算单元。处理器既可以包括单个核心,也可以包括位于单个芯片上的两个或更多个核心。具有两个或更多个核心的处理器被称为多核微处理器。这里使用的处理器包括但不局限于:中央处理单元(CPU)、图形处理器、多核微处理器、或其它任何已知类型或可用类型的处理器。
[0003] 具有两个或更多个独立处理器的计算机系统被称为多处理器。多处理器上的各个处理器被插入其自身的处理器槽中,并且共享同一平台接口,该平台接口将每个处理器连接到存储器、输入/输出端以及存储资源。多处理器系统中的处理器共享地址总线、也被称为计算机总线的数据总线、以及自同步总线。这些处理器还共享存储子系统。但是,每个处理器都具有自己的存储器控制器、一级(L1)缓存以及二级(L2)缓存。这里使用的多处理器系统是包括共享地址总线、数据总线、自同步总线和/或存储子系统的所有独立处理器的计算机系统。
[0004] 对称多处理器系统是这样的多处理器,在该多处理器中,两个或更多个相同的处理器与单个共享主存储器相连。对称多处理器以等同方式对待多处理器中的所有处理器。相比之下,非对称多处理器仅将特定任务分配给特定处理器。
[0005] 在对称多处理器中,非常重要的是,两个或更多个处理器能够在不干扰其它处理器性能的情况下存取共享存储器并且在公共数据集上运行。因此,在多处理器初始化期间,对称多处理器系统中的所有处理器都应该相互同步。
[0006] 同步是一个关于时间保持的问题。每个处理器都需要被同步,或者与每一个其它处理器在时间上同步,以便协调同时在多处理器上执行的线程或任务。换句话说,所有处理器都需要被设置成相同的时间。这些处理器是通过向各个处理器发送数据分组而相互同步的。这些处理器能够使用该数据分组来与每一个其它处理器同步(sync)。
[0007] 处理器借助互连总线向多处理器上的其它处理器发送数据分组。该互连总线是多处理器上的所有处理器之间的通信路径。换句话说,互连总线借助两个或更多个处理器之间的链路或连接将独立的处理器连接在一起。每个处理器都包含:通过互连总线向其它处理器发送数据的驱动器端口,以及通过互连总线接收来自其它处理器的数据的接收端口。
[0008] 目前,每个多处理器平台都建有特定的互连网络,这些互连网络被称为互连映射。该互连映射提供关于互连总线中的所有链路和连接的信息。该互连映射由系统架构师创建并且在系统工作手册中提供。系统工作手册是为多处理器系统的开发人员和测试人员编写的文档。系统工作手册通常包含关于处理器芯片、多处理器系统的技术数据或与计算机系统相关的任何其它技术数据。互连映射是在系统工作手册中提供的,或者仅是由处理器芯片设计人员传达给固件编程人员的。根据该互连映射,固件设计人员选择一路径映射。
[0009] 路径映射是处理器之间的预定通信路径。换句话说,在引导多处理器系统时,路径映射提供用于在处理器初始化期间遍历每个处理器的单个单向路径。该路径映射被用于对处理器进行初始化和同步。所述路径映射是硬编码在多处理器系统固件中的。该路径映射是根据互连映射而产生的。
[0010] 但是,互连映射有时并不精确,并且包含了错误或不正确的信息。此外,互连映射有时是无法在系统工作手册中或从任何其它来源得到的。在这种情况下,用户有时可以根据多处理器系统的原理图来解密出或产生互连映射。但是,大多数工程师只能很有限地接触多处理器系统的原理图。此外,对用户来说,根据原理图来手动解密互连映射是耗时且麻烦的处理。
[0011] 与互连映射不同,路径映射是硬编码在系统固件中的。路径映射在最初创建并且编码到固件中之后不会被更新或修改。此外,路径映射只提供了在硬件中实际可用的多个可能路径中的单个路径。换句话说,处理器之间可能有多条路径可用。但是,系统将仅使用被硬编码在固件中的路径映射之中提供的一条路径。如果路径映射中的互连链路发生故障,那么系统无法在处理器之间传递地址、数据和/或同步分组。这会导致无法修复的系统故障。由此,如果系统在初始化或运行时遇到故障的互连,那么该系统将会停机并且不能恢复。

发明内容

[0012] 示例性实施例提供了一种用于管理对称多处理器互连的计算机实现方法、设备以及计算机可用程序代码。在一个实施例中,一处理标识多处理器上的多个处理器中的各处理器之间的功能性通信连接,以形成已标识的功能性通信连接。该处理根据该已标识的功能性通信互连来映射所述多个处理器中的任意两个处理器之间的每个功能性通信连接,从而形成互连矩阵。该处理使用该互连矩阵来创建路径映射。该路径映射包含所述多个处理器之间的通信连接的序列。该处理使用该路径映射对所述多个处理器进行初始化。

附图说明

[0013] 在所附权利要求中阐述了被认为是本发明特征的新颖特征。但是,通过结合附图来参考下文中关于示例性实施例的详细描述,可以最好地理解本发明自身、优选使用方式以及本发明的其它目的和优点,其中:
[0014] 图1是可以实现示例性实施例的数据处理系统网络的图解表示;
[0015] 图2是可以实现示例性实施例的数据处理系统的框图;
[0016] 图3示出了可以根据示例性实施例来实现示例性实施例的多个方面的多处理器系统的示例图;
[0017] 图4是示出了根据示例性实施例的通过多处理器来标识功能性互连的数据流的框图;
[0018] 图5是示出了根据示例性实施例的互连矩阵和路径映射的框图;
[0019] 图6是示出了根据示例性实施例的创建和更新互连矩阵的处理的流程图;
[0020] 图7是示出了根据示例性实施例的测试处理器之间连接的处理的流程图;以及[0021] 图8是示出了根据示例性实施例的产生路径映射以及另选路径映射的处理的流程图。

具体实施方式

[0022] 现在参考附图并且具体地参考图1至2,提供了可以实现示例性实施例的数据处理环境的示例图。应该想到的是,图1至2仅是示例性的,并非想要声称或暗示任何针对可以实现不同实施例的环境的限制。可以对所描述的环境进行许多修改。
[0023] 现在参考附图,图1示出了可以实现示例性实施例的数据处理系统网络的图解表示。网络数据处理系统100是可以实现实施例的计算机网络。网络数据处理系统100包含网络102,该网络102是用于提供在网络数据处理系统100内连接在一起的不同设备和计算机之间的通信链路的介质。网络102可以包括诸如有线、无线通信链路或光纤缆的连接。
[0024] 在所描述的示例中,服务器104和服务器106连同存储单元108一起连接到网络102。此外,客户机110、112和114也连接到网络102。这些客户机110、112和114例如可以是个人计算机或网络计算机。在所描述的示例中,服务器104向客户机110、112和114提供诸如引导文件、操作系统映像和应用的数据。在本示例中,客户机110、112和114是服务器104的客户机。网络数据处理系统100还可以包括未被示出的另外的服务器、客户机以及其它设备。
[0025] 在所描述的示例中,网络数据处理系统100是因特网,其中网络102代表的是全世界的使用传输控制协议/网际协议(TCP/IP)协议组进行相互通信的网络和网关的集合。处于因特网中心的是主节点或主计算机之间的高速数据通信线路的干线,该干线是由用于发送数据和消息的数以千计的商业、政府、教育和其它计算机系统构成的。当然,网络数据处理系统100还可被实现为多个不同类型的网络,例如内联网、局域网(LAN)或广域网(WAN)。对图1来说,其目的是作为示例而不是作为针对不同实施例的架构限制。
[0026] 现在参考图2,该图示出了可以实现示例性实施例的数据处理系统的框图。数据处理系统200是诸如图1中的服务器104或客户机110的示例,在该系统中可以设置用于执行示例性实施例的处理的计算机可用代码或指令。
[0027] 在所描述的示例中,数据处理系统200使用了一种集中式架构(hub architecture),该架构包含:北桥和存储器控制中心(MCH)202;以及南桥和输入/输出(I/O)控制中心(ICH)204。处理器206、主存储器208以及图形处理器210连接到北桥和存储器控制中心202。例如,图形处理器210可以通过加速图形端口(AGP)连接到MCH。
[0028] 在所描述的示例中,局域网(LAN)适配器212连接到南桥和I/O控制中心204,并且音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、通用串行总线(USB)端口和其它通信端口232、以及PCI/PCIe设备234通过总线238连接到南桥和I/O控制中心204,而硬盘驱动器(HDD)226和CD-ROM驱动器230通过总线240连接到南桥和I/O控制中心204。PCI/PCIe设备例如可以包括以太网适配器、外接卡以及用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe不使用该控制器。ROM 224例如可以是闪速二进制输入/输出系统(BIOS)。硬盘驱动器226和CD-ROM驱动器230例如可以使用集成驱动器电子设备(IDE)或串行先进技术连接(SATA)接口。超级I/O(I/O)设备236可以连接到南桥和I/O控制中心204。
[0029] 操作系统在处理器206上运行,并且对图2的数据处理系统200内的不同组件进行协调并提供控制。该操作系统可以是可买到的操作系统,例如Microsoft WindowsTMXP(Microsoft和Windows是微软公司在美国、其它国家或这两者中的商标)。诸如Java编程系统的面向对象编程系统可以与操作系统一起运行,并且向在数据处理系统200上运行的Java程序或应用提供对操作系统的调用。Java和所有基于Java的商标都是Sun Microsystems公司在美国、其它国家或这两者中的商标。
[0030] 用于操作系统、面向对象编程系统以及应用或程序的指令位于诸如硬盘驱动器226的存储设备中,并且可以加载到主存储器208中,以便由处理器206来执行。这些示例性实施例的处理可以由处理器206使用计算机实现的指令来执行,所述指令可以位于诸如主存储器208、只读存储器224的存储器中,或者位于一个或多个外围设备中。
[0031] 图1至2中的硬件可以根据实施方式而改变。可使用其它内部硬件或外围设备(例如闪存、等价的非易失性存储器或光盘驱动器等)来补充或替换图1至2中示出的硬件。此外,可将这些示例性实施例的处理应用于多处理器的数据处理系统。
[0032] 在一些示例性示例中,数据处理系统200可以是个人数字助理(PDA),其通常配置有闪存,用以提供用于存储操作系统文件和/或用户生成数据的非易失性存储器。总线系统可以包括一个或多个总线,例如系统总线、I/O总线以及PCI总线。当然,可以使用任何类型的通信构造或架构来实现总线系统,该通信构造或架构提供了附于所述构造或架构的不同组件或设备之间的数据传输。通信单元可以包括一个或多个用于发送和接收数据的设备,例如调制解调器或网络适配器。存储器例如可以是主存储器208或者是诸如在北桥和存储器控制中心202中建立的高度缓存。处理单元可以包括一个或多个处理器或CPU。图1至2中示出的示例以及上述示例并不是要暗示架构限制。例如,除了采用PDA的形式之外,数据处理系统200还可以是平板式计算机、膝上型计算机或电话设备。
[0033] 现在转到图3,该图示出了可以根据示例性实施例来实现示例性实施例的多个方面的多处理器系统的示例图。多处理器系统300是单芯片的对称多处理器。
[0034] 非易失性随机存取存储器(NVRAM)301是位于多处理器系统300上的非易失性存储器。多处理器系统300包括多个处理器,诸如处理器302、处理器303以及处理器304。虽然仅示出了三个处理器,但是多处理器300可以包含任意数量的处理器。处理器302至304中的每一个都被插入自己的处理器槽中。
[0035] 互连矩阵308是多个处理器中的任意两个处理器之间的每个功能性通信连接的映射。互连矩阵是在系统初始化期间产生的,并且被存储在诸如NVRAM 301的非易失性存储器中。当两个处理器之间的连接发生故障时,该故障连接将被记录在错误日志中。如果错误日志表明路径映射309中的连接是故障连接,则通过从互连矩阵308中去除该故障连接来更新互连矩阵。
[0036] 路径映射309是位于多个处理器之间的用来在处理器之间传送数据的通信连接的序列。路径映射309是基于互连矩阵308产生的。如果路径映射309中的连接在初始化期间或者在运行时发生故障,那么可以根据已更新的互连矩阵来更新路径映射309。已更新的路径映射是旁路故障连接的替换路径映射。当两个处理器之间的连接发生故障时,该故障连接被记录在错误日志中。如果错误日志表明路径映射309中的连接是路径映射309中的故障连接,则在路径映射309中的连接发生故障时,提供另选路径映射以便对系统进行初始化。
[0037] 在这些示例中,每个处理器包含一个协处理器单元(SPU)310、311或312,这些协处理器单元具有自己的本地存储(LS)区域313、314或315以及专用的存储器流控制器(MFC)305、306或307,这些存储器流控制器具有相关联的存储器管理单元(MMU)316、317或318,用以保持和处理存储器保护及存取许可信息。再一次地,虽然在这里举例显示的是协处理器单元,但是多处理器中的任何类型的处理器单元都可以得到支持。
[0038] 多处理器系统300实现了单元互连总线(EIB)319以及其它I/O结构,以便为内部和外部数据流提供便利。单元互连总线319充当处理器302、303和304的主总线。此外,单元互连总线319还与专用于片外存取的其它接口控制器对接。这些接口控制器包括:用于提供两个极端数据速率的I/O(XIO)存储器通道321和322的存储器接口控制器(MIC)320,以及用于为多处理器系统300提供两个高速外部I/O通道和内部中断控制的宽带引擎接口(BEI)单元323。多处理器接口单元323被实现为总线接口控制器(BIC0和BIC1)324、325以及I/O接口控制器(IOC)326。与RRAC接口的一极相连的这两个高速外部I/O通道为多处理器系统300提供了灵活输入和输出(FLexIO_0和FLexIO_1)353。
[0039] 各个协处理器单元310、311或312具有相应的本地存储区域313、314或315以及协执行单元(SXU)354、355或356。各个单独的协处理器单元310、311或312可以执行仅来自其相关联的本地存储区域313、314或315内的指令(包括数据加载和存储操作)。因此,与系统中别处的存储之间的所有必要数据传送都是借助专用于协处理器单元310、311、312的存储器流控制器305、306和307通过使用存储器流控制器的直接存储器存取操作来执行的。
[0040] 在协处理器单元310、311或312上运行的程序仅使用本地存储地址来引用自己的本地存储区域313、314或315。但是,各协处理器单元的本地存储区域313、314或315还分配有整个系统的存储器映射内的一真实地址(RA)。这使特许软件可将本地存储区域映射到进程的有效地址(RA),以帮助在一个协处理器单元的本地存储器与另一个协处理器单元的本地存储器之间进行直接存储器存取传送。
[0041] 主存储器由系统中的处理器302、303和304以及I/O设备共享。保持在该存储级中的所有信息对于系统中的所有处理器和设备都是可见的。协处理器单元的程序通过利用适当的有效地址和本地存储地址产生直接存储器存取数据传送命令并将该命令置于其存储器流控制器(MFC)305、306或307的命令队列中以供执行,来访问主存储器。在被执行时,所需数据被在其自身的本地存储区域与主存储器之间进行传送。代理命令队列通常用于在启动协处理器单元之前将程序存储在本地存储器中。代理命令还可以用于上下文存储操作。
[0042] 协处理器单元310、311或312以及存储器流控制器(MFC)305、306和307通过具有容量的单向通道而相互通信。该通道接口传送的是往来于存储器流控制器305、306、307以及协处理器单元310、311、312的消息。总线接口单元339、340和341将存储器流控制器305、306和307连接到单元互连总线(EIB)319。
[0043] 存储器流控制器305、306和307为协处理器单元310、311和312提供了两个主要功能。存储器流控制器305、306和307在协处理器单元310、311或312的本地存储(LS)区域313、314和315与主存储器之间移动数据。此外,存储器流控制器305、306和307还在协处理器单元310、311、312与系统中的其它设备之间提供同步功能。
[0044] 存储器流控制器305、306和307的实现具有四个功能单元:直接存储器存取控制器(DMAC)336、337和338,存储器管理单元(MMU)316、317和318,原子单元(ATO)342、343和344,替换管理表(RMT)345、346和347,以及总线接口单元(BIU)339、340和341。直接存储器存取控制器336、337和338保持并处理存储器流控制器命令队列(MFC CMDQ),该队列包括存储器流控制器协处理器单元命令队列(MFC SPUQ)以及存储器流控制器代理命令队列(MFC PrxyQ)。
[0045] 在虚拟模式中,存储器管理单元316、317和318提供了地址变换和存储器保护功能,以便处理来自直接存储器存取控制器336、337和338的有效地址变换请求并送回已变换地址。
[0046] 原子单元342、343和344提供了与系统中的其它处理单元保持同步所需的数据缓存等级。保持了与系统中的其它缓存的相关性。原子式的直接存储器存取命令为协处理器单元提供了请求与其它单元同步的手段。
[0047] 总线接口单元339、340和341的主要功能是向处理器302、303和304提供与单元互连总线对接的接口。单元互连总线319提供了多处理器系统300上的所有处理器与附于该单元互连总线319的外部接口控制器之间的通信路径。
[0048] 存储器接口控制器320提供了单元互连总线319与一个或多个极端数据速率的TMI/O单元存储器通道321、322之间的接口。极端数据速率(XDR )动态随机存取存储器TM
(DRAM )是由Rambus提供的高速且高度串行的存储器。该极端数据速率动态随机存取存储器是使用Rambus提供的宏来存取的,在本文中这种宏被称为极端数据速率I/O单元存储器通道321和322。
[0049] 存储器接口控制器320是单元互连总线319上的从设备(slave)。存储器接口控制器320在其与所支持中心中的存储器相对应的已配置地址范围中应答命令。
[0050] 总线接口控制器324和325管理从单元互连总线319到两个外部设备中的任一个的片上或片外数据传送。I/O接口控制器326对源自I/O接口设备并且以相关单元互连总线319为目的地的命令进行处理。I/O接口设备可以是附于I/O接口的任何设备,诸如附着了多个I/O设备的I/O桥接芯片或者以非相关方式进行访问的另一个多处理器。I/O接口控制器326还会截取以位于I/O桥接芯片或非相关多处理器系统300之中或之后的存储器映射寄存器为目的地的、对单元互连总线319的存取,并且将其引导到正确的I/O接口。I/O接口控制器326还包括内部中断控制器(IIC)349以及I/O地址变换单元(I/O TRANS)350。
[0051] 虽然描述了如何实现不同组件的具体示例,但是这些示例并不意味着对可以使用示例性实施例的各方面的架构进行限制。
[0052] 这些示例性实施例使我们认识到需要快速精确地为每一个多处理器平台自动产生互连矩阵。此外,这些示例性实施例使我们认识到需要在互连总线中的链路或连接发生故障或者由于其它原因而变得无法工作时更新或修改互连矩阵。因此,这些示例性实施例提供了一种用于管理多处理器互连的计算机实现方法、设备和计算机程序产品。
[0053] 在一个实施例中,一处理会在输出文件中标识多处理器上的多个处理器中的各处理器之间的功能性通信连接。通信连接是两个处理器之间的总线上的路径或链路。通信连接允许一个处理器借助链路向另一个处理器发送数据。功能性通信连接是进行工作从而使处理器能够借助通信连接向另一个处理器发送数据的通信连接。如果通信连接因为任何原因而被禁用使得数据无法再沿着该链路进行传送,那么该通信连接是无功能或发生故障的通信连接。
[0054] 该处理根据输出文件产生互连矩阵。互连矩阵是多个处理器中任意两个处理器之间的每个功能性通信连接的映射。该处理根据互连矩阵来创建路径映射。路径映射是多个处理器之间的通信连接的序列。该处理根据路径映射来初始化所述多个处理器。响应于确定了所述多个处理器中的两个处理器之间的连接发生故障从而形成故障连接,该处理从互连矩阵中去除该故障连接。
[0055] 图4是示出了根据示例性实施例的通过多处理器来标识功能性互连的数据流的框图。多处理器400是具有两个或更多个处理器的设备。多处理器400中的处理器是封装在分立的集成电路封装中的处理器。多处理器中的各分立处理器可以包括单个处理器核心,也可以包括单个集成电路封装中的多个处理器核心。
[0056] 控制器401是用于管理多处理器互连的软件组件。控制器401将多处理器上的多个处理器中的各处理器之间的功能性通信连接标识在输出文件中。控制器401将多处理器400上的一组处理器中的一个处理器指定为主设备处理器402。控制器401通过在处理器上的寄存器中设置标记来进行所述指定。为了测试主设备处理器与多处理器系统上的所有其它处理器之间的互连,多处理器系统中的每个处理器被相继指定为主设备处理器,直至每一个处理器都曾被指定为主设备处理器为止。控制器401将多处理器400上的所有其它处理器指定为接收机处理器,例如接收机处理器404和406。
[0057] 控制器401通过设置寄存器(例如寄存器408),将一处理器指定为主设备处理器402。同样,控制器401通过设置处理器上的寄存器,将一处理器指定为接收机处理器,其中所述寄存器例如是接收机处理器404上的寄存器410或接收机处理器406上的寄存器412。
[0058] 接收端口414、416和418是用于接收来自另一个处理器的数据分组的端口。在这个示例性示例中,接收端口414、416和418包括三个(3)接收端口。发送端口420、422和424是用于向另一个处理器发送数据分组的驱动器端口。
[0059] 控制器401通过指定向所有其它接收机处理器发送数据分组的主设备处理器来测试各处理器之间的连接。控制器401发起借助互连总线430的数据分组传输,所述数据分组例如为从主设备处理器402上的发送端口420到所有接收机处理器404和406的数据分组426和428。
[0060] 互连总线430是允许多处理器400上的处理器相互通信的互连网络。互连总线430由主设备处理器402用来向多处理器400上的其它处理器传送数据分组426和428。
[0061] 然后,控制器401通过打开各接收端口并且确定给定接收机端口是否接收到数据分组426或428,由此标识主设备处理器402与给定接收机之间的功能性连接。如果接收到了所述数据分组,那么主设备处理器402与给定接收机端口之间的连接是功能性连接。
[0062] 控制器401命令接收机处理器404打开给定接收端口416,以便确定给定接收机端口416是否接收到主设备处理器402发送的数据分组426。如果控制器401确定给定接收端口接收到了数据分组426,那么控制器401将在输出文件中将主设备处理器与给定接收端口之间的连接标识为功能性连接,该输出文件例如是存储器429中的日志427。在这个示例性示例中,存储器429是非易失性存储器,例如非易失随机存取存储器(NVRAM)。但是,该存储器可以是用于存储数据的任何类型的已知或可用数据存储设备。
[0063] 如果接收端口没有接收到数据分组426,那么主设备处理器402与给定接收端口之间的连接不是功能性连接。也可将无功能性连接记录在诸如日志427的输出文件中。
[0064] 控制器401继续该处理,直至为了确定主设备处理器402与给定接收端口之间的各个连接是否为功能性连接而打开了每一个接收机处理器上的每一个接收端口为止。然后,控制器401将下一个处理器指定为主设备处理器。在这个示例中,接收机处理器404被指定为主设备处理器,而主设备处理器402被指定为接收机。处理器404借助互连总线430将数据分组发送到所有其它处理器,以便确定接收机处理器404与各处理器上的给定接收端口之间的连接是否为功能性连接。该处理继续进行,直至多处理器400上的每一个处理器都曾被指定为主设备处理器为止。
[0065] 因此,控制器401循环地将下一个处理器指定为主设备处理器并将所有其它处理器指定为接收机处理器,并且标识主设备处理器与接收机处理器之间的所有功能性连接,直到所述多个处理器中的每个处理器都曾被指定为主设备处理器为止。控制器401将所有功能性连接标识在诸如日志427的输出文件中。
[0066] 控制器401根据日志427产生互连矩阵432。互连矩阵432是多处理器400上的任意两个处理器之间的每一个功能性通信连接的映射。然后,控制器401根据互连矩阵432来创建路径映射434。路径映射434是处理器之间的通信连接的序列。路径映射434阐述了借助互连总线430发送数据以及使处理器同步的路径或路由。路径映射434是处理器之间的一组可能路径中的单个路径。控制器401根据路径映射434来初始化多处理器400上的处理器。
[0067] 如果两个处理器之间的连接在初始化期间或在运行时发生故障,那么将该故障连接记录在错误日志中。根据错误日志,控制器401将从互连矩阵432中去除故障连接。由此,控制器401动态且自动地将互连矩阵432更新为反映新的故障连接。
[0068] 如果故障连接是路径映射434中的连接,那么控制器401根据已更新的互连矩阵来产生另选路径映射。该另选路径映射将会旁路故障连接。该另选路径映射被存储在存储器429中,用于替换路径映射434。
[0069] 如果故障连接是在处理器初始化期间出现故障的,那么控制器401会在初始化期间产生另选路径映射,并使用该另选路径映射来继续执行处理器的初始化。由此,即使路径映射中的连接在初始化期间发生故障,这些示例性实施例也会动态地提供旁路故障连接的另选路径映射,以使初始化处理得以继续。
[0070] 根据这个示例性实施例,只有在控制器401因为互连矩阵432中剩余的功能性连接不足而不能产生另选路径映射的情况下,初始化才会停止。在这种情况下,系统将会停机并且在修复或替换故障连接之前无法进行初始化。
[0071] 如果故障连接是在运行时出现故障的,那么控制器401将更新互连矩阵432,并且产生另选路径映射。但是,由于该故障连接,该系统必须停机并重启。当系统重新进行初始化时,使用该另选路径映射来初始化处理器以及旁路故障连接。这样一来,即使路径映射中的连接在运行时发生故障,系统也能够重新初始化。
[0072] 图5是示出了根据示例性实施例的互连矩阵和路径映射的框图。互连矩阵500是用于多处理器502的互连矩阵。多处理器502是一多处理器,例如图3中的多处理器300和图4中的多处理器400。处理器A 504、处理器B 506、处理器C 508以及处理器D 510是诸如图4中的处理器402、404和406的处理器。处理器504至510通过借助互连总线从发送端口向接收端口传送数据而进行相互通信。
[0073] 互连矩阵500包含多处理器502上的处理器之间的所有功能性连接。例如,互连矩阵500包括处理器A与B之间的连接512、处理器B与C之间的连接514、处理器C与D之间的连接516以及处理器C与B之间的连接518。这些连接512至518是两个处理器之间的单向连接。
[0074] 路径映射520是根据互连矩阵500产生的路径映射。路径映射520是用于遍历多处理器502中的每个处理器的连接序列。在本示例中,路径映射502并未使用互连矩阵500中的每个连接。在本示例中,路径映射使用了连接512至516。因此,如果处理器C与B之间的连接518发生故障,那么路径映射520将不会受到影响。但是,互连矩阵500需要进行更新,以便去除故障连接518。
[0075] 现在参考图6,示出了例示根据示例性实施例的创建和更新互连矩阵的处理的流程图。在图6所示的这个示例性示例中,该处理是由用于管理互连的软件组件执行的,所述软件组件例如为图4中的控制器401。
[0076] 该处理通过在系统初始化期间创建互连矩阵从而开始(步骤602)。该处理将互连矩阵存储在诸如NVRAM的非易失性存储器中(步骤604)。该处理将确定连接是否发生了故障(步骤606)。如果连接没有发生故障,那么该处理在此后终止。换句话说,一旦产生了互连矩阵,那么除非在产生该互连矩阵之后有连接发生故障,否则该互连矩阵不会被重新产生、变更、修改或更新。
[0077] 返回到步骤606,如果连接发生故障,那么该处理将从互连矩阵中去除故障连接(步骤608)。将经修改的互连矩阵存储在非易失性存储器中(步骤610),此后该处理终止。
[0078] 图7是示出了根据示例性实施例的测试处理器之间的连接的处理的流程图。在图7所示的这个示例性示例中,该处理是由用于管理互连的软件组件执行的,所述软件组件例如为图4中的控制器401。
[0079] 该处理通过对多处理器进行初始化直到互连初始化而开始(步骤702)。该步骤发生在系统引导处理期间。该处理将选择一个处理器,并且创建所选处理器的寄存器值的备份(步骤704)。该处理将所选处理器设置成主设备处理器,并将所有其它处理器设置成接收机处理器(步骤706)。该处理命令主设备处理器在所有的主设备处理器的驱动总线或发送端口上发出数据分组(步骤708)。
[0080] 该处理命令主设备处理器对其自身进行检测(步骤710)。在将一处理器指定为主设备处理器时,该主设备处理器通过表现出该主设备处理器已经检测到其自身来作出确认。一旦主设备处理器检测到其自身,那么该主设备处理器可以向多处理器中的所有其它处理器发送数据分组。
[0081] 该处理选择一接收机处理器(步骤712)。该处理打开该选定接收机处理器上的一接收端口(步骤714)。该处理将确定主设备处理器是否通过所打开的端口检测到了该接收机处理器(步骤716)。如果该处理检测到了所打开的端口,那么该处理将与主设备处理器相连的接收机处理器的该端口写入输出文件,作为一功能性连接。
[0082] 如果在步骤716中该处理没有检测到所打开的端口,或者在步骤718中该处理将功能性连接写入输出文件之后,该处理将确定是否还有未打开的接收端口(步骤720)。如果还有任何未打开的接收端口,那么该处理将打开下一个接收端口(步骤722),并且循环地持续执行步骤716至722,直至打开并测试了给定接收机处理器上的所有接收端口为止。
[0083] 一旦在步骤720中打开并测试了所有接收端口,那么该处理将确定是否还有未测试的接收机处理器(步骤724)。换句话说,该处理将确定是否多处理器上的每个接收机处理器已打开了每个接收机接收端口。如果为“否”的话,那么还有未测试的接收机处理器,并且该处理将选择下一个接收机处理器(步骤726)并且循环执行步骤714至724,直至打开并测试了每个接收机处理器上的每个接收端口为止。
[0084] 返回到步骤724,如果所有接收机处理器都已被测试,那么该处理将确定是否每个处理器都曾被指定为主设备处理器(步骤728)。如果不是每个处理器都曾被指定为主设备处理器,那么该处理将选择下一个处理器(步骤730)并且循环地继续执行步骤708至728,直到为了测试该处理器与多处理器上的其它接收机处理器之间的连接而将每个处理器充当了一轮主设备处理器为止。
[0085] 当在步骤728中所有处理器都曾被指定为主设备处理器时,该处理根据输出文件产生互连矩阵(步骤732),此后该处理终止。该互连矩阵包含多处理器上的每个处理器之间的所有功能性连接。
[0086] 现在转到图8,示出了根据示例性实施例的产生路径映射和另选路径映射的处理的流程图。在图8所示的这个示例性示例中,该处理是由用于管理互连的软件组件执行的,所述软件组件例如为图4中的控制器401。
[0087] 该处理通过检索多处理器的互连矩阵而开始(步骤802)。该处理检查互连错误日志(步骤804)。该错误日志指示是否有任何连接发生故障。
[0088] 该处理将确定在错误日志中是否存在任何故障互连(步骤806)。如果不存在故障互连,那么该处理根据互连矩阵产生路径映射(步骤808)。该处理基于该路径映射对互连进行初始化(步骤810)。然后,该处理将确定在初始化期间是否有任何互连发生故障(步骤812)。
[0089] 如果在步骤812中在初始化期间互连发生故障或者在步骤806中检测到了故障互连,那么该处理将故障连接记录在互连错误日志中(步骤814),并且从互连矩阵中去除该故障互连(步骤816)。
[0090] 如果该故障连接不是互连路径中的连接,那么仍可使用原始路径映射来完成处理器的初始化。但是,如果该故障连接是互连路径中的连接,那么该处理将确定是否还有足够互连可用于产生另选路径映射(步骤818)。
[0091] 如果还有足够的互连,那么该处理使用替换路径来产生路径映射(步骤820)。该处理将记录互连故障(步骤822),并且使用该替换路径来初始化所述多处理器,此后该处理终止。该处理将多处理器上的各处理器之间的功能性通信连接标识在输出文件中。该处理将根据该输出文件来产生互连矩阵。
[0092] 现在返回到步骤818,如果没有可用于产生另选路径映射的足够互连,那么该处理将记录互连故障(步骤822),此后该处理终止。
[0093] 互连矩阵是多个处理器中的任意两个处理器之间的每个功能性连接的映射。所述处理根据互连矩阵来产生路径映射。路径映射是处理器之间的通信连接的序列。该处理根据路径映射来对处理器进行初始化。响应于确定两个处理器之间的连接发生了故障从而形成故障连接,该处理从互连矩阵中去除该故障连接。
[0094] 这些示例性实施例将遍历系统中的所有处理器。该处理将每个处理器相继设置成连接主设备。系统中的每个处理器一次打开它的一个端口,以确定在该处理器与主设备之间是否存在直接连接。由此,处理器之间的所有可用连接都会被探测并被写入到一输出文件中,以供在产生互连矩阵和路径映射时使用。此外,如果有连接发生故障,那么可以产生另选路径映射。就在芯片间获取地址、数据和同步分组而言,该系统具有多于一个的选项。
[0095] 这些示例性实施例通过提供在系统初始化时建立互连矩阵和路径映射的算法,而取代了对于静态处理器总线映射的需要。与得到固件中每个系统平台的映射相比,这种解决方案可以产生更小的软件编译版本。小的软件编译版本有助于更快的加载以及系统初始化。此外,在解密路径映射和互连矩阵时,工作手册或原理图并不是必需的。
[0096] 通过使用在系统的初始化阶段创建的互连映射,该系统将使用另选路径之一来完成系统的初始化。此外,该系统可以在中断较少或者在没有中断的情况下继续初始化处理,直至系统完全被初始化并继续到运行时为止。这与在连接发生故障时无法初始化的当前系统相比是有优势的。
[0097] 附图中的流程图和框图示出了根据不同实施例的系统、方法和计算机程序产品的一些可能实现的架构、功能和操作。在这点上,流程图或框图中的每一个方框可以代表代码模块、代码段或代码部分,其包含用于实现特定逻辑功能的一个或多个可执行指令。此外还应该指出的是,在一些另选实施方式中,方框中指明的功能可以不按照图中指出的顺序发生。例如,两个连续显示的方框实际上可以基本并发地执行,或者这些方框有时也可以按照相反的顺序执行,这取决于所涉及的功能。
[0098] 本发明可以采用纯硬件实施例、纯软件实施例或包含软硬件部件两者的实施例的形式。在一优选实施例中,本发明是以软件实现的,该软件包括但不局限于固件、驻留软件、微代码等。
[0099] 此外,本发明可以采用计算机程序产品的形式,所述计算机程序产品可以从提供了供计算机或任何指令执行系统使用或与之结合使用的程序代码的计算机可用或计算机可读介质中得到。出于描述目的,计算机可用或计算机可读介质可以是任何有形装置,该装置可以包含、存储、传达、传播或传送供指令执行系统、装置或设备使用或与之结合使用的程序。
[0100] 所述介质可以是电子的、磁的、光学的、电磁的、红外的或半导体的系统(或者装置或设备),或者是传播介质。计算机可读介质的示例包括半导体或固态存储器、磁带、可拆卸计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘以及光盘。光盘的当前示例包括紧凑型盘-只读存储器(CD-ROM)、紧凑型盘-读/写(CD-R/W)以及DVD。
[0101] 适合存储和/或执行程序代码的数据处理系统包括直接或通过系统总线间接连接到存储器部件的至少一个处理器。该存储器部件可以包括在实际执行程序代码期间使用的本地存储器,大容量存储器以及缓冲存储器,所述缓冲存储器提供了至少某些程序代码的临时存储,以便减少在执行期间必须从大容量存储器中取回代码的次数。
[0102] 输入/输出或I/O设备(包括但不局限于键盘、显示器、定点设备等)可以直接或者通过中间I/O控制器连接到系统。
[0103] 网络适配器也可以连接到系统,以使数据处理系统能够通过中间的私有或公共网络连接到其它数据处理系统、远程打印机或存储设备。调制解调器、电缆调制解调器以及以太网卡只是几个当前可用的网络适配器类型。
[0104] 出于例示和说明目的,已经给出了对示例性实施例的描述,这些描述不是想要穷举性或者将本发明局限于所公开的形式。对本领域普通技术人员来说,许多修改和变型将是显而易见的。在这里选择并描述这些实施例是为了最好地解释本发明的原理和实际应用,并使本领域普通技术人员能够理解带有与所构想的特定用途相适应的不同修改的本发明的不同实施例。