在背靠背非透明桥中进行系统间协议交换的方法和装置的制作方法

文档序号:4978654阅读:212来源:国知局
专利名称:在背靠背非透明桥中进行系统间协议交换的方法和装置的制作方法
技术领域
本发明的实施例总体上涉及分布式多处理器架构,并且具体地,涉及具有背靠背非透明桥的双主机系统。
背景技术
外围组件互连(PCI)是1992年开发的第二代并行总线架构,用以替代工业标准架 构(ISA)总线。在PCI标准中,所有设备共享同一双向32位(或64位)并行信号路径。相 对于ISA总线,PCI总线具有许多优点,包括处理器无关、缓冲隔离、总线控制以及真正的 即插即用工作方式。PCI Express(PCIe)是第三代通用串行I/O互连,被设计来替代PCI总 线。PCI Express围绕称为通道(lane)的点对点串行链路来构建,而并非一种总线。PCI Express的点对点串行链路架构非常适合于通过分布式多处理器架构模型来 进行分布式处理。分布式处理器通常被优化,以实现数据分组处理功能。与严重依赖高速 缓存来提升性能的通用中央处理单元(CPU)不同,分布式处理器消除了分组处理的局部性 (locality)以及对高性能I/O的需求,这种对高性能I/O的需求迫使设计者提出新颖的架 构以减小处理时延而同时仍能以高数据率来对分组进行处理。


通过参考用来说明本发明的实施例的以下描述和附图,可以最清楚地理解本发 明。图1是具有一个非透明桥的双主机系统的示意图(根联合体-NTB-根联合体)。图2示意性地说明了图1的非透明桥的配置(NTB主要和次要配置空间)。图3是具有两个背靠背非透明桥的双主机系统的示意图(背靠背根联合体到 NTB端点)。图4示意性地说明了图3的非透明桥的配置(ΜΜΙ/0背靠背通信)。图5示出根据本发明的实施例的寄存器关系。图6示出根据本发明的实施例的寄存器关系。
具体实施例方式如本说明书和权利要求书中所使用的,除非在上下文中清楚指出,否则单数形式 的“一”、“一个”和“所述”包括复数形式的引用。“协议”是规定在至少两个NTB子系统之间 交换的消息的格式、语法和顺序的一组规则。“根联合体(root complex) “ ( “RC”)是PCI Express设备,其将处理器(或中央处理单元(CPU))和存储器连接到PCI Express交换结 构。根联合体代表处理器来生成事务请求。“门铃寄存器(doorbell register) ”是通常为 16位的普通寄存器,其可以被两个NTB子系统的控制软件用来定义一种协议。门铃寄存器 用作中断生成机构,向双主机系统中的一个主机提醒相对的另一主机的操作。“便笺式寄存 器”是一组通常为32位的普通寄存器,其可以用于跨系统的通信和存储与这些通信相关的数据。PCI Express非透明桥(NTB)通过充当双主机系统之间的网关,来帮助实现分布式多处理器架构模型的扩展。图1是说明具有单个非透明桥104的双主机系统的布置的示 意图。图2说明了图1的双主机系统的非透明桥104的配置。图1中说明的双主机系统包 括通过单个非透明桥104连接的主要(primary)主机系统100A和备份(backup)主机系 统100B。主要主机系统100A包括主要根联合体103A中的主要处理器102A,而备份主机系 统100B包括次要(secondary)根联合体103B中的次要处理器102B。非透明桥104包括 主要侧106、次要侧108,以及具有影子寄存器(shadowregister) 112的存储器映射输入/ 输出(ΜΜΙ/0)空间110。在枚举后,非透明桥104在每个主机系统100AU00B上表现为PCI Express 端点(EP)。主要主机系统100A和备份主机系统100B通常借助一协议来通过单个非透明桥 104上的匪I/O空间110中的门铃寄存器(未示出)和一组便笺式寄存器(未示出)进行 相互通信。主要主机系统100A和次要主机系统100B使用软件(通常为设备驱动程序) 来向彼此发送消息。一种消息可以是心跳消息(heartbeat message),其指示在主机系统 100A、100B上运行的软件的良好状态。S卩,主机系统100A、100B之一未能成功接收心跳消 息将指示在相对的另一主机系统100A、100B上发生灾难性故障。典型地,心跳消息通过设 备驱动程序来传输,该设备驱动程序将心跳协议消息写入便笺式寄存器,并随后写入门铃 寄存器,以引发将一中断传输给另一主机。即,该中断向主机系统100AU00B通知心跳消息 的可用性。除了简单的心跳消息,该协议还可以包括其他类型的消息,例如实现失效备援 (failover)、移动窗口、加载软件等。图3说明了根据本发明的一个实施例的具有背靠背配置(RC—NTB—NTB—RC) 的两个非透明桥104A、104B的双主机系统。和图1中所说明的双主机系统相同,该双主机 系统包括具有主要处理器102A与主要根联合体103A的主要主机100A,以及具有次要处理 器102B与次要根联合体103B的备份主机100B。然而,图3中所说明的双主机系统包括两 个非透明桥104A、104B。图3的双主机系统的非透明桥104A、104B的配置在图4中说明。第一非透明桥 104A包括第一主要侧106A、第一次要侧108A、以及具有第一影子寄存器112A的第一存储器 映射输入/输出(ΜΜΙ/0)空间110A。第二非透明桥104B包括第二主要侧106B、第二次要 侧108B、以及具有第二影子寄存器112B的第二存储器映射输入/输出(ΜΜΙ/0)空间110B。 第一影子寄存器112A包括门铃寄存器114A和便笺式寄存器116A,而第二影子寄存器112B 包括门铃寄存器114B和便笺式寄存器116B。本实施例还包括在第一影子寄存器112A与第 二影子寄存器112B之间的代理分组生成机构120。下面更详细地解释代理分组生成机构 120。第一和第二非透明桥104A、104B的背靠背配置消除了当主要系统100A和备份系 统100B未同时启动时出现的总线枚举问题。然而,当非透明桥104A、104B被背靠背地放置 时,可能增加软件的复杂性。每个主机系统100AU00B的枚举软件在非透明桥端点处停止, 导致在两个主机系统100AU00B的次要侧108A、108B之间创建一个不可访问的次要空间。 因此,主要主机系统100A不知道次要主机系统100B的非透明桥的门铃寄存器114B和便笺 式寄存器116B。反过来也是这样。尽管数据可以通过该PCIe的不可访问次要空间在主要主机系统IOOA和次要主机系统100B之间移动,但是中断无法从一个系统到达另一个系统。本发明的实施例通过在两个主机系统100AU00B的次要侧108A、108B之间创建代 理分组生成机构120来解决这个问题。代理分组生成机构120使主机系统100AU00B之一 能够将PCIe中断生成分组经过ΜΜΙ/0不可访问区域发送到相对的非透明桥104A、104B内, 从而为每个主机系统100A、100B有效地给出进入另一系统的匪I/O空间110A、110B的隧 道。可以通过对便笺式寄存器116A、116B以及中断生成门铃寄存器114A、114B进行访问和 写入,来生成中断。可以借助图4来解释根据本发明的一个实施例的一种方法。代理分组生成机构 120使每个背靠背非透明桥104A、104B能够协商背靠背影子寄存器112A、112B的所有权。 一旦看到第一非透明桥104A中的背靠背影子“设置(set) ”门铃寄存器114A内状态的断言 变化,第一非透明桥104A中的逻辑就创建邮寄(posted)存储器写分组(代理分组),该邮 寄存储器写分组在其有效载荷内包含有背靠背影子寄存器112A的内容。此外,第一非透明 桥104A发送该邮寄存储器写分组,该分组跨过不可访问次要空间。第二非透明桥104B将 该邮寄存储器写分组作为自己的分组来对其进行解码,并随后据此更新它的本地影子门铃 寄存器114B。第二非透明桥104B感测背靠背影子“设置”门铃寄存器114B的状态变化,并 根据所选的中断机制来生成上游中断(例如,MSI/MSI-X或INTx)。除了代理分组生成机构 120之外,本发明的实施例还包括附加的寄存器。图5和6中说明了这些附加寄存器的实 例,并在下面的实例中对它们进行更详细的解释。实例心跳协议在本发明的实施例中,将心跳协议从主要主机系统100A传送到备份主机系统 IOOB0典型的心跳协议允许主要主机系统100A向备份主机系统B通知其“在运行并且状 态良好”。换言之,在它们之间存在正常的链路。尽管下面的实例说明的是从主要主机系统 100A到备份主机系统100B的心跳,但是该心跳协议可以是双向的。即,该心跳协议可以被 配置为向/从主要主机系统100A和备份主机系统100B发送/接收心跳消息。在该方法的第一步骤中,主要主机系统100A设置第一门铃寄存器114A中的一个 或更多商定位(agreed upon bit)。当主要主机系统100A上的硬件感测到已经设置了第一 门铃寄存器114A时,它创建邮寄存储器写分组(中断代理分组)。第一非透明桥104A然后 将该邮寄存储器写分组跨越不可访问次要空间发送到备份主机系统100B上的第二非透明 桥104B。由第二非透明桥104B的次要侧106B通过主机系统100B中的第二非透明桥104B 的SBOIBASE窗口来接收该事务。备份主机系统100B中的第二非透明桥104B内的硬件然后将该邮寄存储器写分组 作为自己的分组来对其进行解码,并且设置备份主机系统100B的第二非透明桥104B中的 主要门铃寄存器114B内的等同位(equivalentbits)。一旦看到主要门铃寄存器114B被设 置,第二非透明桥104B就基于INTx或MSI或MSI-X是否有效并且未被屏蔽来生成上游中 断。可以例如以预定周期率(例如每1秒)来设置该中断。卸载协议 在卸载协议中,主要主机系统100A希望将一些分组处理卸载到备份主机系统 IOOB0总的来说,卸载协议包括三个主要步骤,每个主要步骤通常包含多个子步骤。主要步骤包括(1)把要继续处理的分组从主要主机系统IOOA发送到备份主机系统100B ; (2)把 包含关于这些分组的各种信息的消息从主要主机系统100A发送到备份主机系统100B,关 于这些分组的信息例如有这些分组已经加载到存储器内的位置、分组长度、要进行的处理 的类型等;以及(3)把中断代理分组从主要主机系统100A发送到备份主机系统100B,来向 备份主机系统100B告知存在要进行的处理。发送要继续处理的分组首先,主要主机系统100A把卸载分组写入主要主机系统100A中的第一非透 明桥的主要BAR 2/3窗口。第一非透明桥104A然后将这些分组转换到商定基地址 PBAR2XLAT并发送这些分组。备份主机系统100B中的第二非透明桥104B在相同基地址 SB23BASE(PBAR2XLAT = SB23BASE)处接收这些分组。这些分组然后被使用SBAR2XLAT转换 到备份主机系统100B的域中,并被发送给系统存储器。发送详述了事务已经加载到存储器内的位置、事务长度、要进行的处理的类型等 的消息主要主机系统100A把商定消息写入主要主机系统100A的第一非透明桥104A中 的第一便笺式寄存器116A内。一旦感测到对便笺式寄存器116A的写入,非透明桥104A中 的硬件就通过背靠背BAR0XLAT来调度以备份主机系统100B中的便笺式寄存器116B为目 标的邮寄存储器写分组。在不可访问次要空间的相对侧上的第二非透明桥104B的次要侧, 通过备份主机系统100B中的第二非透明桥104B的SB01BASE窗口来接收该消息。备份主 机系统100B的非透明桥104B中的硬件将该邮寄存储器写分组作为自己的分组来对其进行 解码,并设置备份主机系统100B中的非透明桥104B内的期望的便笺式寄存器116B的位。发送中断代理分组来向备份主机系统100B告知存在要进行的处理主要主机系统100A设置背靠背门铃寄存器116A中的所选位。主要主机系统100A 上的硬件感测到该背靠背门铃寄存器已经被设置,并创建邮寄存储器写分组,并将其跨越 不可访问次要空间发送到备份主机系统100B上的第二非透明桥104B。非透明桥104B的 次要侧108B通过备份主机系统100B中的非透明桥104B的SB01BASE窗口来接收该邮寄存 储器写分组。第二非透明桥104B中的硬件将该邮寄存储器写分组作为自己的分组来对其 进行解码,并设置主要门铃存储器114B中的等同位。一旦看到主要门铃寄存器104B的位 被设置,第二非透明桥104B中的硬件就基于INTx或MSI或MSI-X是否有效并且未被屏蔽 来生成上游中断。备份主机系统100B中的中断服务例程对该中断进行解码,并读取备份主 机系统100B上的非透明桥104B中的便笺式寄存器116B内的消息。该消息包含诸如要继 续处理的事务的位置和长度这样的信息,并且可以包含处理该请求所需的任何其他相关信 息。可选地,当完成此操作时,可以将确认分组发送回主要主机系统100A。本文所描述的本发明的各种实施例简化了具有背靠背非透明桥的双主机系统中 的软件的许多问题。在没有代理分组生成机构120的情况下,围绕隧道问题的方案将包括 一种高度专属的软件方案,即,复制每个系统的存储器中的门铃寄存器114A、114B和便笺 式寄存器116A、116B组的原始功能和意图。驱动程序间的通信将需要复杂的协议。其结果 是复杂性增加、出现异步通信问题、软件复用性和扩展性降低,以及调试周期更长。而在使 用代理分组生成机构120的情况下,设备驱动程序的开发者能够更容易设计这样的协议, 通过该协议,可以跨越背靠背非透明桥104A、104B来传送心跳消息和便笺式数据。示例性的协议消息有利地包括但不限于主机失效备援应用、日志、检查点数据、以及卸载计算 (例如,加密)。 尽管已经根据本发明的数个实施例描述了本发明,但是本领域技术人员将认识至IJ,本发明并不限于所描述的本发明的这些实施例,而是可以用落入所附权利要求书的精 神和范围内的修改与变化来实践本发明。因此,本说明书被认为是说明性而非限制性的。
权利要求
一种数据处理系统,包括第一主机,包括第一非透明桥;第二主机,包括第二非透明桥,其中,所述第一非透明桥和所述第二非透明桥被背靠背地配置;以及代理分组生成机构,位于所述第一非透明桥和所述第二非透明桥之间。
2.根据权利要求1所述的数据处理系统,其中,所述第一非透明桥包括第一主要侧和 第一次要侧,所述第二非透明桥包括第二主要侧和第二次要侧,并且所述代理分组生成机 构位于所述第一次要侧和所述第二次要侧之间。
3.根据权利要求2所述的系统,其中,所述代理分组生成机构使第一主要主机系统100 和所述第二主机能够向彼此发送中断生成分组。
4.根据权利要求3所述的系统,其中,所述第一非透明桥包括第一存储器映射输入-输 出(ΜΜΙ/0)区域,并且所述第二非透明桥包括第二 ΜΜΙ/0区域,其中,所述中断生成分组在 所述第一 ΜΜΙ/0区域和所述第二 ΜΜΙ/0区域之间传输。
5.根据权利要求4所述的系统,其中,所述第一ΜΜΙ/0区域包括多个第一影子寄存器, 所述第二 ΜΜΙ/0区域包括多个第二影子寄存器,并且所述中断生成分组在所述第一影子寄 存器和所述第二影子寄存器之间传输。
6.根据权利要求1所述的系统,其中,所述代理分组生成机构用于发送心跳消息、日志 消息或检查点数据消息。
7.根据权利要求5所述的系统,其中,所述第一影子寄存器包括第一门铃寄存器和第 一便笺式寄存器中的至少一个,所述第二影子寄存器包括第二门铃寄存器和第二便笺式寄 存器中的至少一个。
8.根据权利要求3所述的系统,其中,所述中断生成分组包括邮寄存储器写分组。
9.根据权利要求7所述的系统,其中,所述第一非透明桥用于一旦看到所述第一影子 寄存器中的门铃寄存器内的状态的断言变化,就创建代理分组并将所述代理分组发送给所 述第二非透明桥,其中所述代理分组包含邮寄存储器写分组的有效载荷。
10.根据权利要求9所述的系统,其中,所述第二非透明桥用于将所述邮寄存储器写分 组作为自己的分组来对其进行解码,并更新所述第二影子寄存器。
11.根据权利要求10所述的系统,其中,所述第二非透明桥还用于感测所述第二影子 寄存器中的第二门铃寄存器的状态变化,并生成上游中断。
12.一种连接多个主机的方法,包括用代理分组机构来连接第一主机的第一非透明桥和第二主机的第二非透明桥,其中,所述第一非透明桥和所述第二非透明桥具有背靠背配置。
13.根据权利要求12所述的方法,还包括将分组从所述第一主机发送到所述第二主机。
14.根据权利要求13所述的方法,其中,所述代理分组包括中断。
15.根据权利要求14所述的方法,其中,所述分组包括心跳消息、日志消息或检查点数 据消息。
16.根据权利要求14所述的方法,其中,所述第一非透明桥包括包含第一影子寄存器 的第一 ΜΜΙ/0,所述第二非透明桥包括包含第二影子寄存器的第二 ΜΜΙ/0,并且所述分组从所述第一影子寄存器传输到所述第二影子寄存器。
17.根据权利要求13所述的方法,还包括发起协议。
18.根据权利要求16所述的方法,还包括设置所述第一影子寄存器中的设置寄存器的状态的断言变化;以及 写入包含所述第一影子寄存器中的有效载荷的邮寄写分组。
19.根据权利要求18所述的方法,还包括在所述第二非透明桥中对所述邮寄存储器 写分组进行解码,并更新所述第二影子寄存器。
20.根据权利要求19所述的方法,还包括感测所述第二影子寄存器中的第二设置寄 存器的状态变化,并生成上游中断。
全文摘要
一种具有背靠背非透明桥和代理分组生成机构的双主机系统及方法。该代理分组生成机构使主机能够向彼此发送中断生成分组。
文档编号G06F15/163GK101814060SQ20091025307
公开日2010年8月25日 申请日期2009年9月25日 优先权日2008年9月25日
发明者J·米切尔, K·戴维斯, M·沙利文, P·泰米斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1