专利名称:用于对称多处理器互连的方法和设备以及多处理器的利记博彩app
用于对称多处理器互连的方法和设备以及多处理器 技术领域本申请主要涉及数据处理系统,具体地说,涉及一种用于对称多 处理器的方法和设备。更具体地说,本申请涉及一种用于自动管理对 称多处理器互连的计算机实现方法、设备以及计算机可用程序代码。
背景技术:
处理器是能够独立于其它处理器地执行线程、任务或其它进程的 独立处理单元或计算单元。处理器既可以包括单个核心,也可以包括 位于单个芯片上的两个或更多个核心。具有两个或更多个核心的处理器被称为多核微处理器。这里使用的处理器包括但不局限于中央处 理单元(CPU)、图形处理器、多核微处理器、或其它任何已知类型 或可用类型的处理器。具有两个或更多个独立处理器的计算机系统被称为多处理器。多 处理器上的各个处理器被插入其自身的处理器槽中,并且共享同一平 台接口,该平台接口将每个处理器连接到存储器、输入/输出端以及存 储资源。多处理器系统中的处理器共享地址总线、也被称为计算机总 线的数据总线、以及自同步总线。这些处理器还共享存储子系统。但 是,每个处理器都具有自己的存储器控制器、 一级(L1)援存以及二 级(L2)緩存。这里使用的多处理器系统是包括共享地址总线、数据 总线、自同步总线和/或存储子系统的所有独立处理器的计算机系统。对称多处理器系统是这样的多处理器,在该多处理器中,两个或 更多个相同的处理器与单个共享主存储器相连。对称多处理器以等同 方式对待多处理器中的所有处理器。相比之下,非对称多处理器仅将 特定任务分配给特定处理器。在对称多处理器中,非常重要的是,两个或更多个处理器能够在不干扰其它处理器性能的情况下存取共享存储器并且在公共数据集 上运行。因此,在多处理器初始化期间,对称多处理器系统中的所有 处理器都应该相互同步。同步是一个关于时间保持的问题。每个处理器都需要被同步,或 者与每一个其它处理器在时间上同步,以便协调同时在多处理器上执 行的线程或任务。换句话说,所有处理器都需要被设置成相同的时间。 这些处理器是通过向各个处理器发送数据分组而相互同步的。这些处理器能够使用该数据分组来与每一个其它处理器同步(sync)。处理器借助互连总线向多处理器上的其它处理器发送数据分组。 该互连总线是多处理器上的所有处理器之间的通信路径。换句话说, 互连总线借助两个或更多个处理器之间的链路或连接将独立的处理 器连接在一起。每个处理器都包含通过互连总线向其它处理器发送 数据的驱动器端口,以及通过互连总线接收来自其它处理器的数据的 接收端口。目前,每个多处理器平台都建有特定的互连网络,这些互连网络 被称为互连映射。该互连映射提供关于互连总线中的所有链路和连接 的信息。该互连映射由系统架构师创建并且在系统工作手册中提供。 系统工作手册是为多处理器系统的开发人员和测试人员编写的文档。 系统工作手册通常包含关于处理器芯片、多处理器系统的技术数据或 与计算机系统相关的任何其它技术数据。互连映射是在系统工作手册 中提供的,或者仅是由处理器芯片设计人员传达给固件编程人员的。 根据该互连映射,固件设计人员选择一路径映射。路径映射是处理器之间的预定通信路径。换句话说,在引导多处 理器系统时,路径映射提供用于在处理器初始化期间遍历每个处理器 的单个单向路径。该路径映射被用于对处理器进行初始化和同步。所述路径映射是硬编码在多处理器系统固件中的。该路径映射是根据互 连映射而产生的。但是,互连映射有时并不精确,并且包含了错误或不正确的信息。 此外,互连映射有时是无法在系统工作手册中或从任何其它来源#到的。在这种情况下,用户有时可以根据多处理器系统的原理图来解密 出或产生互连映射。但是,大多数工程师只能很有限地接触多处理器 系统的原理图。此外,对用户来说,根据原理图来手动解密互连映射 是耗时且麻烦的处理。与互连映射不同,路径映射是硬编码在系统固件中的。路径映射 在最初创建并且编码到固件中之后不会被更新或修改。此外,路径映 射只提供了在硬件中实际可用的多个可能路径中的单个路径。换句话 说,处理器之间可能有多条路径可用。但是,系统将仅使用被硬编码 在固件中的路径映射之中提供的 一条路径。如果路径映射中的互连链 路发生故障,那么系统无法在处理器之间传递地址、数据和/或同步分 组。这会导致无法修复的系统故障。由此,如果系统在初始化或运行 时遇到故障的互连,那么该系统将会停机并且不能恢复。发明内容示例性实施例提供了 一种用于管理对称多处理器互连的计算机 实现方法、设备以及计算机可用程序代码。在一个实施例中, 一处理 标识多处理器上的多个处理器中的各处理器之间的功能性通信连接, 以形成已标识的功能性通信连接。该处理根据该已标识的功能性通信 互连来映射所述多个处理器中的任意两个处理器之间的每个功能性 通信连接,从而形成互连矩阵。该处理使用该互连矩阵来创建路径映 射。该路径映射包含所述多个处理器之间的通信连接的序列。该处理 使用该路径映射对所述多个处理器进行初始化。
在所附权利要求中阐述了被认为是本发明特征的新颖特征。但 是,通过结合附图来参考下文中关于示例性实施例的详细描述,可以 最好地理解本发明自身、优选使用方式以及本发明的其它目的和优点,其中图1是可以实现示例性实施例的数据处理系统网络的图解表示;图2是可以实现示例性实施例的数据处理系统的框图;图3示出了可以根据示例性实施例来实现示例性实施例的多个方面的多处理器系统的示例图;图4是示出了根据示例性实施例的通过多处理器来标识功能性互连的数据流的框图;图5是示出了根据示例性实施例的互连矩阵和路径映射的框图; 图6是示出了根据示例性实施例的创建和更新互连矩阵的处理的流程图;图7是示出了根据示例性实施例的测试处理器之间连接的处理 的流程图;以及图8是示出了根据示例性实施例的产生路径映射以及另选路径 映射的处理的流程图。
具体实施方式
现在参考附图并且具体地参考图1至2,提供了可以实现示例性 实施例的数据处理环境的示例图。应该想到的是,图1至2仅是示例 性的,并非想要声称或暗示任何针对可以实现不同实施例的环境的限 制。可以对所描述的环境进行许多修改。现在参考附图,图1示出了可以实现示例性实施例的数据处理系 统网络的图解表示。网络数据处理系统100是可以实现实施例的计算 机网络。网络数据处理系统100包含网络102,该网络102是用于提 供在网络数据处理系统100内连接在一起的不同设备和计算机之间的 通信链路的介质。网络102可以包括诸如有线、无线通信链路或光纤 缆的连接。在所描述的示例中,服务器104和服务器106连同存储单元108 一起连接到网络102。此外,客户机110、 112和114也连接到网络 102。这些客户机IIO、 112和1H例如可以是个人计算机或网络计算 机。在所描述的示例中,服务器104向客户机110、 112和114提供 诸如引导文件、操作系统映像和应用的数据。在本示例中,客户机110、112和114是服务器104的客户机。网络数据处理系统100还可以包 括未被示出的另外的服务器、客户机以及其它设备。在所描述的示例中,网络数据处理系统100是因特网,其中网络 102代表的是全世界的使用传输控制协议/网际协议(TCP/IP )协议组 进行相互通信的网络和网关的集合。处于因特网中心的是主节点或主 计算机之间的高速数据通信线路的干线,该干线是由用于发送数据和 消息的数以千计的商业、政府、教育和其它计算机系统构成的。当然, 网络数据处理系统100还可被实现为多个不同类型的网络,例如内联 网、局域网(LAN)或广域网(WAN)。对图1来说,其目的是作 为示例而不是作为针对不同实施例的架构限制。现在参考图2,该图示出了可以实现示例性实施例的数据处理系 统的框图。数据处理系统200是诸如图1中的服务器104或客户机110 的示例,在该系统中可以设置用于执行示例性实施例的处理的计算机 可用代码或指令。在所描述的示例中,数据处理系统200使用了一种集中式架构 (hub architecture ),该架构包含北桥和存储器控制中心(MCH) 202;以及南桥和输入/输出(I/O )控制中心(ICH ) 204。处理器206、 主存储器206以及图形处理器210连接到北桥和存储器控制中心202。 例如,图形处理器210可以通过加速图形端口 (AGP)连接到MCH。在所描述的示例中,局域网(LAN)适配器212连接到南桥和 1/0控制中心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。操作系统在处理器206上运行,并且对图2的数据处理系统200 内的不同组件进行协调并提供控制。该操作系统可以是可买到的操作 系统,例如Microsoft Windows XP ( Microsoft和Windows是微 软公司在美国、其它国家或这两者中的商标)。诸如JavaTM编程系统 的面向对象编程系统可以与操作系统一起运行,并且向在数据处理系 统200上运行的Java程序或应用提供对操作系统的调用。Java和所 有基于Java的商标都是Sun Microsystems公司在美国、其它国家或 这两者中的商标。用于操作系统、面向对象编程系统以及应用或程序的指令位于诸 如硬盘驱动器226的存储设备中,并且可以加载到主存储器208中, 以便由处理器206来执行。这些示例性实施例的处理可以由处理器206 使用计算机实现的指令来执行,所述指令可以位于诸如主存储器208、 只读存储器224的存储器中,或者位于一个或多个外围设备中。图l至2中的硬件可以根据实施方式而改变。可使用其它内部硬 件或外围设备(例如闪存、等价的非易失性存储器或光盘驱动器等) 来补充或替换图l至2中示出的硬件。此外,可将这些示例性实施例 的处理应用于多处理器的数据处理系统。在一些示例性示例中,数据处理系统200可以是个人数字助理 (PDA),其通常配置有闪存,用以提供用于存储操作系统文件和/ 或用户生成数据的非易失性存储器。总线系统可以包括一个或多个总 线,例如系统总线、1/0总线以及PCI总线。当然,可以使用任何类 型的通信构造或架构来实现总线系统,该通信构造或架构提供了附于 所述构造或架构的不同组件或设备之间的数据传输。通信单元可以包 括一个或多个用于发送和接收数据的设备,例如调制解调器或网络适 配器。存储器例如可以是主存储器208或者是诸如在北桥和存储器控 制中心202中建立的高度緩存。处理单元可以包括一个或多个处理器 或CPU。图1至2中示出的示例以及上述示例并不是要暗示架构限制。例如,除了采用PDA的形式之外,数据处理系统200还可以是平板 式计算机、膝上型计算机或电话设备。现在转到图3,该图示出了可以根据示例性实施例来实现示例性 实施例的多个方面的多处理器系统的示例图。多处理器系统300是单 芯片的对称多处理器。非易失性随机存取存储器(NVRAM) 301是位于多处理器系统 300上的非易失性存储器。多处理器系统300包括多个处理器,诸如 处理器302、处理器303以及处理器304。虽然仅示出了三个处理器, 但是多处理器300可以包含任意数量的处理器。处理器302至304中 的每一个都被插入自己的处理器槽中。互连矩阵308是多个处理器中的任意两个处理器之间的每个功 能性通信连接的映射。互连矩阵是在系统初始化期间产生的,并且被 存储在诸如NVRAM 301的非易失性存储器中。当两个处理器之间的 连接发生故障时,该故障连接将被记录在错误日志中。如果错误日志 表明路径映射309中的连接是故障连接,则通过从互连矩阵308中去 除该故障连接来更新互连矩阵。路径映射309是位于多个处理器之间的用来在处理器之间传送 数据的通信连接的序列。路径映射309是基于互连矩阵308产生的。 如果路径映射309中的连接在初始化期间或者在运行时发生故障,那 么可以根据已更新的互连矩阵来更新路径映射309。已更新的路径映 射是旁路故障连接的替换路径映射。当两个处理器之间的连接发生故 障时,该故障连接被记录在错误日志中。如果错误日志表明路径映射 309中的连接是路径映射309中的故障连接,则在路径映射309中的 连接发生故障时,提供另选路径映射以便对系统进行初始化。在这些示例中,每个处理器包含一个协处理器单元(SPU) 310、 311或312,这些协处理器单元具有自己的本地存储(LS)区域313、 314或315以及专用的存储器流控制器(MFC) 305、 306或307,这 些存储器流控制器具有相关联的存储器管理单元(MMU) 316、 317 或318,用以保持和处理存储器保护及存取许可信息。再一次地,虽然在这里举例显示的是协处理器单元,但是多处理器中的任何类型的 处理器单元都可以得到支持。多处理器系统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。各个协处理器单元310、 311或312具有相应的本地存储区域 313、 314或315以及协执行单元(SXU ) 354、 355或356。各个单独 的协处理器单元310、 311或312可以执行仅来自其相关联的本地存 储区域313、 314或315内的指令(包括数据加载和存储操作)。因 此,与系统中别处的存储之间的所有必要数据传送都是借助专用于协 处理器单元310、 311、 312的存储器流控制器305、 306和307通过 使用存储器流控制器的直接存储器存取操作来执行的。在协处理器单元310、 311或312上运行的程序仅使用本地存储 地址来引用自己的本地存储区域313、 314或315。但是,各协处理器 单元的本地存储区域313、 314或315还分配有整个系统的存储器映 射内的一真实地址(RA)。这使特许软件可将本地存储区域映射到 进程的有效地址(RA),以帮助在一个协处理器单元的本地存储器 与另一个协处理器单元的本地存储器之间进行直接存储器存取传送。主存储器由系统中的处理器302、 303和304以及I/O设备共享。 保持在该存储级中的所有信息对于系统中的所有处理器和设备都是 可见的。协处理器单元的程序通过利用适当的有效地址和本地存储地址产生直接存储器存取数据传送命令并将该命令置于其存储器流控制器(MFC) 305、 306或307的命令队列中以供执行,来访问主存 储器。在被执行时,所需数据被在其自身的本地存储区域与主存储器 之间进行传送。代理命令队列通常用于在启动协处理器单元之前将程 序存储在本地存储器中。代理命令还可以用于上下文存储操作。协处理器单元310、311或312以及存储器流控制器(MFC)305、 306和307通过具有容量的单向通道而相互通信。该通道接口传送的 是往来于存储器流控制器305、 306、 307以及协处理器单元310、 311、 312的消息。总线接口单元339、 340和341将存储器流控制器305、 306和307连接到单元互连总线(EIB ) 319。存储器流控制器305、 306和307为协处理器单元310、 311和 312提供了两个主要功能。存储器流控制器305、 306和307在协处理 器单元310、 311或312的本地存储(LS )区域313、 314和315与主 存储器之间移动数据。此外,存储器流控制器305、 306和307还在 协处理器单元310、 311、 312与系统中的其它设备之间提供同步功能。存储器流控制器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),该队列包括存储器流控制器 协处理器单元命令队列(MFCSPUQ)以及存储器流控制器代理命令 队列(MFCPrxyQ)。在虚拟模式中,存储器管理单元316、 317和318提供了地址变 换和存储器保护功能,以便处理来自直接存储器存取控制器336、 337 和338的有效地址变换请求并送回已变换地址。原子单元342、 343和344提供了与系统中的其它处理单元保持 同步所需的数据緩存等级。保持了与系统中的其它緩存的相关性。原 子式的直接存储器存取命令为协处理器单元提供了请求与其它单元同步的手段。总线接口单元339、 340和341的主要功能是向处理器302、 303 和304提供与单元互连总线对接的接口 。单元互连总线319提供了多 处理器系统300上的所有处理器与附于该单元互连总线319的外部接 口控制器之间的通信路径。存储器接口控制器320提供了单元互连总线319与一个或多个极 端数据速率的I/O单元存储器通道321、 322之间的接口。极端数据 速率(XDRTM)动态随机存取存储器(DRAMTM)是由Rambus提供 的高速且高度串行的存储器。该极端数据速率动态随机存取存储器是 使用Rambus提供的宏来存取的,在本文中这种宏被称为极端数据速 率I/O单元存储器通道321和322。存储器接口控制器320是单元互连总线319上的从设拟slave )。 存储器接口控制器320在其与所支持中心中的存储器相对应的已配置 地址范围中应答命令。总线接口控制器324和325管理从单元互连总线319到两个外部 设备中的任一个的片上或片外数据传送。I/O接口控制器326对源自 1/0接口设备并且以相关单元互连总线319为目的地的命令进行处理。 I/O接口设备可以是附于I/O接口的任何设备,诸如附着了多个I/O 设备的I/O桥接芯片或者以非相关方式进行访问的另 一个多处理器。 I/O接口控制器326还会截取以位于I/O桥接芯片或非相关多处理器 系统300之中或之后的存储器映射寄存器为目的地的、对单元互连总 线319的存取,并且将其引导到正确的1/0接口。 1/0接口控制器326 还包括内部中断控制器(IIC )349以及1/0地址变换单元(I/O TRANS ) 350。虽然描述了如何实现不同组件的具体示例,但是这些示例并不意 味着对可以使用示例性实施例的各方面的架构进行限制。这些示例性实施例使我们认识到需要快速精确地为每一个多处 理器平台自动产生互连矩阵。此外,这些示例性实施例使我、们认识到 需要在互连总线中的链路或连接发生故障或者由于其它原因而变得无法工作时更新或修改互连矩阵。因此,这些示例性实施例提供了一 种用于管理多处理器互连的计算机实现方法、设备和计算机程序产ff口 》在一个实施例中, 一处理会在输出文件中标识多处理器上的多个 处理器中的各处理器之间的功能性通信连接。通信连接是两个处理器 之间的总线上的路径或链路。通信连接允许一个处理器借助链路向另 一个处理器发送数据。功能性通信连接是进行工作从而使处理器能够 借助通信连接向另一个处理器发送数据的通信连接。如果通信连接因 为任何原因而被禁用使得数据无法再沿着该链路进行传送,那么该通 信连接是无功能或发生故障的通信连接。该处理根据输出文件产生互连矩阵。互连矩阵是多个处理器中任 意两个处理器之间的每个功能性通信连接的映射。该处理根据互连矩 阵来创建路径映射。路径映射是多个处理器之间的通信连接的序列。 该处理根据路径映射来初始化所述多个处理器。响应于确定了所述多 个处理器中的两个处理器之间的连接发生故障从而形成故障连接,该 处理从互连矩阵中去除该故障连接。图4是示出了根据示例性实施例的通过多处理器来标识功能性 互连的数据流的框图。多处理器400是具有两个或更多个处理器的设 备。多处理器400中的处理器是封装在分立的集成电路封装中的处理 器。多处理器中的各分立处理器可以包括单个处理器核心,也可以包 括单个集成电路封装中的多个处理器核心。控制器401是用于管理多处理器互连的软件组件。控制器401 将多处理器上的多个处理器中的各处理器之间的功能性通信连接标 识在输出文件中。控制器401将多处理器400上的一组处理器中的一 个处理器指定为主设备处理器402。控制器401通过在处理器上的寄 存器中设置标记来进行所述指定。为了测试主设备处理器与多处理器 系统上的所有其它处理器之间的互连,多处理器系统中的每个处理器 被相继指定为主设备处理器,直至每一个处理器都曾被指定为主设备 处理器为止。控制器401将多处理器400上的所有其它处理器指定为接收机处理器,例如接收处理器404和406。控制器401通过设置寄存器(例如寄存器408),将一处理器指 定为主设备处理器402。同样,控制器401通过设置处理器上的寄存 器,将一处理器指定为接收机处理器,其中所述寄存器例如是接收机 处理器404上的寄存器410或接收机处理器406上的寄存器412。接收端口414、 416和418是用于接收来自另一个处理器的数据 分组的端口。在这个示例性示例中,接收端口 414、 416和418包括 三个(3)接收端口。发送端口 420、 422和424是用于向另一个处理 器发送数据分组的驱动器端口。控制器401通过指定向所有其它接收机处理器发送数据分组的 主设备处理器来测试各处理器之间的连接。控制器401发起借助互连 总线430的数据分组传输,所述数据分组例如为从主设备处理器402 上的发送端口 420到所有接收机处理器404和406的数据分组426和 428。互连总线430是允许多处理器400上的处理器相互通信的互连网 络。互连总线430由主设备处理器402用来向多处理器400上的其它 处理器传送数据分组426和428。然后,控制器401通过打开各接收端口并且确定给定接收机端口 是否接收到数据分组426或428,由此标识主设备处理器402与给定 接收机之间的功能性连接。如果接收到了所述数据分组,那么主设备 处理器402与给定接收机端口之间的连接是功能性连接。控制器401命令接收机处理器404打开给定接收端口 416,以便 确定给定接收机端口 416是否接收到主设备处理器402发送的数据分 组426。如杲控制器401确定给定接收端口接收到了数据分组426, 那么控制器401将在输出文件中将主设备处理器与给定接收端口之间 的连接标识为功能性连接,该输出文件例如是存储器429中的曰志 427。在这个示例性示例中,存储器429是非易失性存储器,例如非 易失随机存取存储器(NVRAM)。但是,该存储器可以是用于存储 数据的任何类型的已知或可用数据存储设备。如果接收端口没有接收到数据分组426,那么主设备处理器402 与给定接收端口之间的连接不是功能性连接。也可将无功能性连接记 录在诸如日志427的输出文件中。控制器401继续该处理,直至为了确定主设备处理器402与给定 接收端口之间的各个连接是否为功能性连接而打开了每一个接收机 处理器上的每一个接收端口为止。然后,控制器401将下一个处理器 指定为主设备处理器。在这个示例中,接收机处理器404被指定为主 设备处理器,而主设备处理器402被指定为接收机。处理器404借助 互连总线430将数据分组发送到所有其它处理器,以便确定接收机处 理器404与各处理器上的给定接收端口之间的连接是否为功能性连 接。该处理继续进行,直至多处理器400上的每一个处理器都曾被指 定为主设备处理器为止。因此,控制器401循环地将下一个处理器指定为主设备处理器并 将所有其它处理器指定为接收机处理器,并且标识主设备处理器与接 收机处理器之间的所有功能性连接,直到所述多个处理器中的每个处 理器都曾被指定为主设备处理器为止。控制器401将所有功能性连接 标识在诸如日志427的输出文件中。控制器401根据日志427产生互连矩阵432。互连矩阵432是多 处理器400上的任意两个处理器之间的每一个功能性通信连接的映 射。然后,控制器401根据互连矩阵432来创建路径映射434。路径 映射434是处理器之间的通信连接的序列。路径映射434阐述了借助 互连总线430发送数据以及使处理器同步的路径或路由。路径映射434 是处理器之间的一组可能路径中的单个路径。控制器401根据路径映 射434来初始化多处理器400上的处理器。如果两个处理器之间的连接在初始化期间或在运行时发生故障, 那么将该故障连接记录在错误日志中。根据错误日志,控制器401将 从互连矩阵432中去除故障连接。由此,控制器401动态且自动地将 互连矩阵432更新为反映新的故障连接。如果故障连接是路径映射434中的连接,那么控制器401根据已更新的互连矩阵来产生另选路径映射。该另选路径映射将会旁路故障连接。该另选路径映射被存储在存储器429中,用于替换路径映射434。如果故障连接是在处理器初始化期间出现故障的,那么控制器 401会在初始化期间产生另选路径映射,并使用该另选路径映射来继 续执行处理器的初始化。由此,即^使路径映射中的连接在初始化期间 发生故障,这些示例性实施例也会动态地提供旁路故障连接的另选路 径映射,以使初始化处理得以继续。根据这个示例性实施例,只有在控制器401因为互连矩阵432 中剩余的功能性连接不足而不能产生另选路径映射的情况下,初始化 才会停止。在这种情况下,系统将会停机并且在修复或替换故障连接 之前无法进行初始化。如果故障连接是在运行时出现故障的,那么控制器401将更新互 连矩阵432,并且产生另选路径映射。但是,由于该故障连接,该系 统必须停机并重启。当系统重新进行初始化时,使用该另选路径映射 来初始化处理器以及旁路故障连接。这样一来,即使路径映射中的连 接在运行时发生故障,系统也能够重新初始化。图5是示出了才艮据示例性实施例的互连矩阵和路径映射的框图。 互连矩阵500是用于多处理器502的互连矩阵。多处理器502是一多 处理器,例如图3中的多处理器300和图4中的多处理器400。处理 器A 504、处理器B 506、处理器C 508以及处理器D 510是诸如图4 中的处理器402、 404和406的处理器。处理器504至510通过借助 互连总线从发送端口向接收端口传送数据而进行相互通信。互连矩阵500包含多处理器502上的处理器之间的所有功能性连 接。例如,互连矩阵500包括处理器A与B之间的连接512、处理器 B与C之间的连接514、处理器C与D之间的连接516以及处理器C 与B之间的连接518。这些连接512至518是两个处理器之间的单向 连接。路径映射520是根据互连矩阵500产生的路径映射。路径映射 520是用于遍历多处理器502中的每个处理器的连接序列。在本示例中,路径映射502并未使用互连矩阵500中的每个连接。在本示例中, 路径映射使用了连接512至516。因此,如果处理器C与B之间的连 接518发生故障,那么路径映射520将不会受到影响。但是,互连矩 阵500需要进行更新,以便去除故障连接518。现在参考图6,示出了例示根据示例性实施例的创建和更新互连 矩阵的处理的流程图。在图6所示的这个示例性示例中,该处理是由 用于管理互连的软件组件执行的,所述软件组件例如为图4中的控制 器401。该处理通过在系统初始化期间创建互连矩阵从而开始(步骤 602)。该处理将互连矩阵存储在诸如NVRAM的非易失性存储器中 (步骤604)。该处理将确定连接是否发生了故障(步骤606)。如 果连接没有发生故障,那么该处理在此后终止。换句话说, 一旦产生 了互连矩阵,那么除非在产生该互连矩阵之后有连接发生故障,否则 该互连矩阵不会被重新产生、变更、修改或更新。返回到步骤606,如果连接发生故障,那么该处理将从互连矩阵 中去除故障连接(步骤608)。将经修改的互连矩阵存储在非易失性 存储器中(步骤610),此后该处理终止。图7是示出了根据示例性实施例的测试处理器之间的连接的处 理的流程图。在图7所示的这个示例性示例中,该处理是由用于管理 互连的软件组件执行的,所述软件组件例如为图4中的控制器401。该处理通过对多处理器进行初始化直到互连初始化而开始(步骤 702)。该步骤发生在系统引导处理期间。该处理将选择一个处理器, 并且创建所选处理器的寄存器值的备份(步骤704)。该处理将所选 处理器设置成主设备处理器,并将所有其它处理器设置成接收机处理 器(步骤706)。该处理命令主设备处理器在所有的主设备处理器的 驱动总线或发送端口上发出数据分组(步骤708)。该处理命令主设备处理器对其自身进行检测(步骤710)。在将 一处理器指定为主设备处理器时,该主设备处理器通过表施出该主设 备处理器已经检测到其自身来作出确认。 一旦主设备处理器检测到其自身,那么该主设备处理器可以向多处理器中的所有其它处理器发送 数据分组。该处理选择一接收机处理器(步骤712)。该处理打开该选定接 收机处理器上的一接收端口 (步骤714)。该处理将确定主设备处理 器是否通过所打开的端口检测到了该接收机处理器(步骤716)。如 果该处理检测到了所打开的端口,那么该处理将与主设备处理器相连 的接收机处理器的该端口写入输出文件,作为一功能性连接。如果在步骤716中该处理没有检测到所打开的端口 ,或者在步骤 718中该处理将功能性连接写入输出文件之后,该处理将确定是否还 有未打开的接收端口 (步骤720)。如果还有任何未打开的接收端口, 那么该处理将打开下一个接收端口 (步骤722),并且循环地持续执 行步骤716至722,直至打开并测试了给定接收机处理器上的所有接 收端口为止。一旦在步骤720中打开并测试了所有接收端口 ,那么该处理将确 定是否还有未测试的接收机处理器(步骤724)。换句话说,该处理 将确定是否多处理器上的每个接收机处理器已打开了每个接收机接 收端口。如果为"否,,的话,那么还有未测试的接收机处理器,并且该 处理将选择下一个接收机处理器(步骤726)并且循环执行步骤714 至724,直至打开并测试了每个接收机处理器上的每个接收端口为止。返回到步骤724,如果所有接收机处理器都已被测试,那么该处 理将确定是否每个处理器都曾被指定为主设备处理器(步骤728)。 如果不是每个处理器都曾被指定为主设备处理器,那么该处理将选择 下一个处理器(步骤730)并且循环地继续执行步骤708至728,直 到为了测试该处理器与多处理器上的其它接收机处理器之间的连接 而将每个处理器充当了一轮主设备处理器为止。当在步骤728中所有处理器都曾被指定为主设备处理器时,该处 理根据输出文件产生互连矩阵(步骤732 ),此后该处理终止。该互 连矩阵包含多处理器上的每个处理器之间的所有功能性连無。现在转到图8,示出了根据示例性实施例的产生路径映射和另选路径映射的处理的流程图。在图8所示的这个示例性示例中,该处理 是由用于管理互连的软件组件执行的,所述软件组件例如为图4中的 控制器401。
该处理通过检索多处理器的互连矩阵而开始(步骤802)。该处 理检查互连错误日志(步骤804 )。该错误日志指示是否有任何连接 发生故障。
该处理将确定在错误日志中是否存在任何故障互连(步骤806 )。 如果不存在故障互连,那么该处理根据互连矩阵产生路径映射(步骤 808 )。该处理基于该路径映射对互连进行初始化(步骤810 )。然后, 该处理将确定在初始化期间是否有任何互连发生故障(步骤812)。
如果在步骤812中在初始化期间互连发生故障或者在步骤806 中检测到了故障互连,那么该处理将故障连接记录在互连错误日志中 (步骤814),并且从互连矩阵中去除该故障互连(步骤816)。
如果该故障连接不是互连路径中的连接,那么仍可使用原始路径 映射来完成处理器的初始化。但是,如果该故障连接是互连路径中的 连接,那么该处理将确定是否还有足够互连可用于产生另选路径映射 (步骤818)。
如果还有足够的互连,那么该处理使用替换路径来产生路径映射 (步骤820)。该处理将记录互连故障(步骤822),并且使用该替 换路径来初始化所述多处理器,此后该处理终止。该处理将多处理器 上的各处理器之间的功能性通信连接标识在输出文件中。该处理将根 据该输出文件来产生互连矩阵。
现在返回到步骤818,如果没有可用于产生另选路径映射的足够 互连,那么该处理将记录互连故障(步骤822),此后该处理终止。
互连矩阵是多个处理器中的任意两个处理器之间的每个功能性 连接的映射。所述处理根据互连矩阵来产生路径映射。路径映射是处 理器之间的通信连接的序列。该处理根据路径映射来对处理器进行初 始化。响应于确定两个处理器之间的连接发生了故障从而形成故障连 接,该处理从互连矩阵中去除该故障连接。这些示例性实施例将遍历系统中的所有处理器。该处理将每个处 理器相继设置成连接主设备。系统中的每个处理器一次打开它的一个 端口,以确定在该处理器与主设备之间是否存在直接连接。由此,处 理器之间的所有可用连接都会被探测并被写入到 一输出文件中,以供 在产生互连矩阵和路径映射时使用。此外,如果有连接发生故障,那 么可以产生另选路径映射。就在芯片间获取地址、数据和同步分组而 言,该系统具有多于一个的选项。
这些示例性实施例通过提供在系统初始化时建立互连矩阵和路 径映射的算法,而取代了对于静态处理器总线映射的需要。与得到固 件中每个系统平台的映射相比,这种解决方案可以产生更小的软件编 译版本。小的软件编译版本有助于更快的加栽以及系统初始化。此外, 在解密路径映射和互连矩阵时,工作手册或原理图并不是必需的。
通过使用在系统的初始化阶段创建的互连映射,该系统将使用另 选路径之一来完成系统的初始化。此外,该系统可以在中断较少或者 在没有中断的情况下继续初始化处理,直至系统完全被初始化并继续 到运行时为止。这与在连接发生故障时无法初始化的当前系统相比是 有优势的。
附图中的流程图和框图示出了根据不同实施例的系统、方法和计 算机程序产品的一些可能实现的架构、功能和操作。在这点上,流程 图或框图中的每一个方框可以代表代码模块、代码段或代码部分,其 包含用于实现特定逻辑功能的一个或多个可执行指令。此外还应该指 出的是,在一些另选实施方式中,方框中指明的功能可以不按照图中 指出的顺序发生。例如,两个连续显示的方框实际上可以基本并发地 执行,或者这些方框有时也可以按照相反的顺序执行,这取决于所涉 及的功能。
本发明可以釆用纯硬件实施例、纯软件实施例或包含软硬件部件 两者的实施例的形式。在一优选实施例中,本发明是以软4实现的, 该软件包括但不局限于固件、驻留软件、微代码等。
此外,本发明可以采用计算机程序产品的形式,所述计算机程序产品可以从提供了供计算机或任何指令执行系统使用或与之结合使 用的程序代码的计算机可用或计算机可读介质中得到。出于描述目 的,计算机可用或计算机可读介质可以是任何有形装置,该装置可以 包含、存储、传达、传播或传送供指令执行系统、装置或设备使用或 与之结合使用的程序。
所述介质可以是电子的、磁的、光学的、电磁的、红外的或半导 体的系统(或者装置或设备),或者是传播介质。计算机可读介质的 示例包括半导体或固态存储器、磁带、可拆卸计算机磁盘、随机存取
存储器(RAM)、只读存储器(ROM)、刚性磁盘以及光盘。光盘 的当前示例包括紧凑型盘-只读存储器(CD-ROM)、紧凑型盘-读/ 写(CD國R/W)以及DVD。
适合存储和/或执行程序代码的数据处理系统包括直接或通过系 统总线间接连接到存储器部件的至少一个处理器。该存储器部件可以 包括在实际执行程序代码期间使用的本地存储器,大容量存储器以及 緩冲存储器,所述緩沖存储器提供了至少某些程序代码的临时存储, 以便减少在执行期间必须从大容量存储器中取回代码的次数。
输入/输出或I/O设备(包括但不局限于键盘、显示器、定点设 备等)可以直接或者通过中间1/0控制器连接到系统。
网络适配器也可以连接到系统,以使数据处理系统能够通过中间 的私有或公共网络连接到其它数据处理系统、远程打印机或存储设 备。调制解调器、电缆调制解调器以及以太网卡只是几个当前可用的 网络适配器类型。
出于例示和说明目的,已经给出了对示例性实施例的描述,这些 描述不是想要穷举性或者将本发明局限于所公开的形式。对本领域普 通技术人员来说,许多修改和变型将是显而易见的。在这里选择并描 述这些实施例是为了最好地解释本发明的原理和实际应用,并使本领
改的本发明的不同实施例。
权利要求
1.一种用于管理对称多处理器互连的计算机实现方法,该计算机实现方法包括标识多处理器上的多个处理器中的各处理器之间的功能性通信连接,以形成已标识功能性通信连接;根据该已标识功能性通信连接,映射所述多个处理器中的任意两个处理器之间的每个功能性通信连接,以形成互连矩阵;使用该互连矩阵来创建路径映射,其中该路径映射包括所述多个处理器之间的通信连接的序列;以及使用该路径映射对所述多个处理器进行初始化。
2. 如权利要求1所述的计算机实现方法,还包括 响应于标识出故障连接,从互连矩阵中去除该故障连接,其中故障连接是所述多个处理器中的两个处理器之间的已经发生了故障的 连接。
3. 如权利要求1所述的计算机实现方法,还包括 将已标识功能性通信连接存储在输出文件中。
4. 如权利要求2所述的计算机实现方法,其中从互连矩阵中去 除故障连接的步骤形成了已更新互连矩阵,并且该方法还包括响应于确定出该故障连接是路径映射中的连接,根据该已更新互 连矩阵来产生另选路径映射,其中该另选路径映射旁路该故障连接。
5. 如权利要求4所述的计算机实现方法,其中该故障连接是在 初始化期间发生故障的连接,并且该方法还包括根据该另选路径映射,继续对所述多个处理器进行初始化。
6. 如权利要求4所述的计算机实现方法,其中该故障连接是在 运行时间期间发生故障的连接,并且该方法还包括重新引导该系统;以及根据该另选路径映射,对所述多个处理器进行初始化。
7. 如权利要求4所述的计算机实现方法,还包括只有在因剩余的功能性互连不足而无法产生另选路径映射的情 况下,才将系统指定为不能进行初始化。
8. 如权利要求1所述的计算机实现方法,其中标识各处理器之 间的功能性通信连接的步骤还包括将所述多个处理器中的一个处理器指定为主设备,并将所述多个 处理器中的所有其它处理器指定为接收机处理器;发起从主设备上的一组发送端口到所有接收机处理器的数据分 组传输;以及打开每个接收机处理器上的一组接收端口 ,以确定主设备与该接 收机之间的每个连接是否为功能性连接;以及 将所有功能性连接标识在输出文件中。
9. 如权利要求8所述的计算机实现方法,还包括 响应于确定出并不是所述多个处理器中的每个处理器都未曾被指定为主设备,循环地将下一个处理器指定为主设备,并将所有其它 处理器指定为接收机处理器;以及标识主设备与接收机处理器之间的所有功能性连接,直至所述多 个处理器中的每个处理器都曾被指定为主设备为止。
10. 如权利要求8所述的计算机实现方法,其中打开每个接收机 处理器上的 一组接收机端口的步骤还包括打开接收机处理器上的该组接收机端口中的给定接收机端口 ; 确定该给定接收机端口是否接收到主设备发送的数据分组;以及 响应于确定出该给定接收机端口接收到该数据分组,在输出文件 中将主设备与该给定接收机端口之间的连接标识为功能性连接。
11. 如权利要求10所述的计算机实现方法,还包括 响应于确定出尚未打开的该组接收机端口中的每个接收机端口 ,循环地打开每个接收机端口,并且确定已打开的接收机端口是否接收 到该数据分组,其中如果该已打开的接收机端口接收到该数据分组, 那么在输出文件中将主设备与该已打开的接收机端口之间的连接标 识为功能性连接。
12. 如权利要求1所述的计算机实现方法,其中互连矩阵和路径 映射被保存在非易失性存储器中。
13. —种用于管理对称多处理器互连的设备,该设备包括 计算设备,该计算设备包括总线;与总线相连的存储设备,其中该存储设备包含计算机可用 的程序产品;以及多个处理器,其中所述多个处理器中的至少一个处理器执 行该计算机可用程序代码,以将多处理器上的多个处理器中的各 处理之间的功能性通信连接标识在输出文件中;根据该输出文件 来产生互连矩阵,其中互连矩阵是多个处理器中的任意两个处理 器之间的每个功能性通信连接的映射;根据该互连矩阵来创建路 径映射,其中路径映射是多个处理器之间的通信连接的序列;以 及根据该路径映射对所述多个处理器进行初始化。
14. 如权利要求13所述的设备,其中该处理器还执行计算机可 用程序代码,以响应于确定出所述多个处理器中的两个处理器之间的 连接已经发生故障,而从互连矩阵中去除该故障连接。
15. —种多处理器,该多处理器包括 互连总线;多个处理器; 存储器;以及控制器,其中该控制器将所述多个处理器中的各处理器之间的功 能性通信连接标识在该存储器中的输出文件中;根据该输出文件来产 生互连矩阵,其中互连矩阵是多个处理器中的任意两个处理器之间的 每个功能性通信连接的映射;根据该互连矩阵来创建路径映射,其中 路径映射是多个处理器之间的通信连接的序列;以及根据该路径映射 对所述多个处理器进行初始化。
16. 如权利要求15所述的多处理器,其中响应于确定出两个处 理器之间的连接已经发生故障,该控制器从互连矩阵中去除故障连接,从而形成已更新的互连矩阵,并且其中响应于确定出该故障连接 是路径映射中的连接,该控制器根据该已更新的互连矩阵来产生另选 路径映射,其中该另选路径映射旁路该故障连接。
全文摘要
本发明涉及用于对称多处理器互连的方法和设备以及多处理器。提供了一种用于管理对称多处理器互连的计算机实现方法、设备以及计算机程序产品。该处理标识多处理器上的多个处理器中的各处理器之间的功能性通信连接,以形成已标识功能性通信连接。该处理根据该已标识功能性通信连接来映射所述多个处理器中的任意两个处理器之间的每个功能性通信连接,从而形成互连矩阵。该处理使用该互连矩阵来创建路径映射。该路径映射包含所述多个处理器之间的通信连接的序列。该处理使用该路径映射对所述多个处理器进行初始化。
文档编号G06F15/163GK101221551SQ200810002268
公开日2008年7月16日 申请日期2008年1月8日 优先权日2007年1月9日
发明者乔治·N.·亚尼兹, 马克·D.·麦克劳林, 鲁埃·A.·阿布-埃马拉 申请人:国际商业机器公司