一种主备控制器倒换的实现方法及设备
技术领域
本发明涉及通信技术领域,尤其涉及一种主备控制器倒换的实现方法及设备。
背景技术
PCI(Peripheral Component Interconnect,外部器件互连)Express(扩展)总线是串行总线,进行点对点传输,每对传输线路独享带宽。PCI Express总线***中有一个RC(Root Complex,根复用器),用于连接CPU(CentralProcessing Unit,中央处理单元)和Memory(存储器)及PCI Express总线,一个RC可以支持一个或者多个PCI Express端口,每个端口定义一个独立的层次域,每个层次域可以由单个端点器件、或者一个包含交换装置和多个端点器件的子层次域组成。RC代表CPU产生事务请求,发起配置请求,生成存储器和I/O(Input/Output,输入/输出)请求和锁定事务请求。如图1所示,为一个通用的PCI Express总线***示意图,RC通过PCI Express总线与PCIExpress端点或PCI Express桥直接连接,也可以通过交换装置与PCI Express端点或Legacy端点连接,该交换装置是由一些逻辑上的虚拟PCI-to-PCI桥器件组成,利用类似PCI桥的基于Memory、I/O和配置的地址进行路由,在不同端口之间进行数据传输,可以支持从任意一个入端口向任意一个出端口按照地址路由、ID路由或者是隐含路由传输所有PCI Express标准要求的事务数据报文。
在高可靠性应用的场合通常使用主备用工作方式,即在***结构上采用资源冗余的方法配置超过一个(最常见的为两个)功能相同的部件来完成一个功能的容错策略,正常工作时***内只有一个部件完成相应功能,称为主用;其他部件处于备用状态,称为备用。当主用部件发生故障时备用部件自动成为主用继续工作,保证***的稳定运行。
现有技术在PCI Express总线***中支持双主控的方法,一般是通过NT(非透明)端口的方法实现。由于PCI Express***中,RC为***的根节点,可以实现对于***层次、设备的透明化控制与管理。需要在当前主用CPU的RC(通常RC集成在CPU内部)发生故障或主用CPU***的其他部分发生故障的情况下,能够切换到备用状态的正常RC,通过该RC端口的CPU实现备用***正常工作。对于支持双主控的PCI Express总线***中,由于需要主备***通过非透明桥的方式,利用交换装置传递信息等,所以备用CPU的RC也需要连接到交换装置上。例如图2的现有***中,一般不存在主备用处理器之间的备份通道和心跳通道,所以也需要备用RC连接到交换装置上。
这种双主控***的方法需要处于***核心的PCI Express交换装置在与备用RC连接的端口上支持NT功能,以便实现在交换装置上能够同时连接到两个支持RC的主控***并实现地址空间的隔离。现有技术中一种实现方法如图2所示,两个CPU中有一个连接到交换装置的NT(No Transparent Port,非透明桥)端口作为备用CPU,另一个连到交换装置的上行端口作为主用CPU。其中的主用CPU作为当前的有效的RC来配置和引导***,处理中断和错误,主备两个CPU可以通过交换装置以及其中的NT实现对以交换装置内部控制寄存器访问,动态控制连接到交换装置的上行端口和NT端口,从而实现根联合体的切换。
图2中非透明桥不仅实现两个RC***的地址空间隔离,还需要交换装置能够支持连接到上行端口的RC处理器***和连接到NT端口的RC处理器***,在正常工作情况下都能够通过各自连接的PCI Express链路实现对于交换装置内部控制用寄存器的访问和改写等。这样,对于主备用的***,连接于NT端口上的备用RC在监视到主用处理器***故障或者是不正常的情况下,需要通过自己和PCI Express交换装置连接的链路控制原来和主用RC连接的端口更改为NT端口,而和自身链路连接的端口切换为正常上行端口。这里的切换过程通过软件控制端口状态实现。
然而,上述实现方式需要交换装置支持NT功能,而当前的交换装置主要面向PC、Server(服务器)开发,交换装置通常不具有NT,如果要增加NT将加大开发成本,且实现比较复杂。
发明内容
本发明提供了一种主备控制器倒换的实现方法及设备,以解决现有技术中PCI Express交换装置需要支持双处理器时,一般需要非透明桥功能而引起的器件实现复杂的问题。
本发明提供了一种主备控制器倒换***,包括:交换装置和至少两个控制装置,所述控制装置互为主备用,且分别具有接入PCIE链路功能的根复用器,所述交换装置具体包括:交换模块、开关模块和开关控制模块;
所述交换模块包括至少两个上行端口,分别通过所述开关模块与对应的控制装置的根复用器连接;
所述开关控制模块,与所述开关模块连接,用于主用控制装置工作时,控制与所述主用控制装置的根复用器连接的开关模块导通,与备用控制装置的根复用器连接的开关模块截止;备用控制装置工作时,控制与主用控制装置的根复用器连接的开关模块截止,与备用控制装置的根复用器连接的开关模块导通。
还包括多路开关模块,连接于所述控制装置和交换装置之间,用于实现主用控制装置控制所述开关控制模块,或备用控制装置控制所述开关控制模块。
所述多路开关模块具体包括:
主用控制信号通道,用于将主用控制装置的控制信号发送到所述交换装置;
备用控制信号通道,用于将备用控制装置的控制信号发送到所述交换装置;
通道切换子模块,用于根据控制装置的激活信号进行所述主用控制信号通道和备用控制信号通道之间的切换。
所述开关控制模块具体包括:
总线端口子模块,用于接收来自主用控制装置或备用控制装置的总线信号,控制所述开关模块导通或截止;或
控制管脚端口子模块,用于接收来自主用控制装置或备用控制装置的管脚电平控制信号,控制所述开关模块导通或截止。
所述主用控制装置和所述备用控制装置之间包括:
备份通道,用于将主用控制装置的数据备份到备用控制装置;
心跳通道,用于对主用控制装置进行故障检测。
所述总线信号包括:内部集成电路I2C总线或***管理总线SMBus。
本发明还提供了一种交换装置,应用于包括至少两个控制装置的***中,所述控制装置互为主备用,且分别具有接入PCIE链路功能的根复用器,所述交换装置具体包括:交换模块、开关模块和开关控制模块;
所述交换模块包括至少两个上行端口,分别通过所述开关模块与对应的控制装置的根复用器连接;
所述开关控制模块,与所述开关模块连接,用于主用控制装置工作时,控制与所述主用控制装置的根复用器连接的开关模块导通,与备用控制装置的根复用器连接的开关模块截止;备用控制装置工作时,控制与主用控制装置的根复用器连接的开关模块截止,与备用控制装置的根复用器连接的开关模块导通。
所述开关控制模块具体包括:
总线端口子模块,用于接收来自主用控制装置或备用控制装置的总线信号,控制所述开关模块导通或截止;或
控制管脚端口子模块,用于接收来自主用控制装置或备用控制装置的管脚电平控制信号,控制所述开关模块导通或截止。
本发明还提供了一种主备控制器倒换的实现方法,应用于包括至少两个控制装置的***中,所述控制装置互为主备用,且分别具有接入PCIE链路功能的根复用器,所述方法包括以下步骤:
备用控制装置检测主用控制装置是否出现故障,所述故障包括发生复位或心跳信息回答超时;
如果出现,则通过控制信号控制与主用控制装置的根复用器连接的PCIE链路截止、与备用控制装置的根复用器连接的PCIE链路导通。
所述备用控制装置检测主用控制装置是否出现故障具体包括:
通过心跳通道向主用控制装置发送检测消息;
如预设周期内没有收到响应,则判断所述主用控制装置出现故障。
所述备用控制装置检测主用控制装置是否出现故障之前还包括:
通过备份通道将主用控制装置的数据备份到备用控制装置。
所述备用控制装置检测主用控制装置是否出现故障之后还包括,通过连接于交换装置和控制装置之间的多路开关模块实现主用控制装置/备用控制装置与所述交换装置连接,具体包括:
根据控制装置的激活信号将主用控制装置的控制信号发送到所述交换装置;或将备用控制装置的控制信号发送到所述交换装置;
所述控制与主用控制装置的根复用器连接的PCIE链路截止、与备用控制装置的根复用器连接的PCIE链路导通具体包括:
通过总线信号控制所述交换设备的开关模块导通或截止;或
通过控制管脚电平信号控制所述交换设备的开关模块导通或截止。
与现有技术相比,本发明实施例具有以下优点:
本发明的实施例中,通过在交换装置中实现PCI Express链路切换,并同时和主备控制器的主备倒换控制电路结合,可以简单的实现双控制器***中主备用功能的RC倒换,达到不使用交换装置内部非透明桥进行双主控***的主备倒换的目的,可以降低对于交换装置的设计要求,简化***设计,降低***成本。
附图说明
图1是现有技术中PCI Express总线***示意图;
图2是现有技术中通过非透明桥实现双主控***结构图;
图3是本发明中一种交换装置结构图;
图4是本发明中另一种交换装置结构图;
图5是本发明中一种主备倒换***结构图。
具体实施方式
本发明提供了一种主备控制器倒换***,包括:交换装置、多路开关模块和至少两个控制装置,控制装置互为主备用,且分别具有接入PCIE链路功能的根复用器。其中,交换装置具体包括:交换模块、开关模块和开关控制模块;交换模块包括至少两个上行端口和多个下行端口,上行端口分别通过开关模块与对应的控制装置的根复用器连接,下行端口与下游设备连接;开关控制模块,与开关模块连接,用于主用控制装置工作时,控制与主用控制装置的根复用器连接的开关模块导通,与备用控制装置的根复用器连接的开关模块截止;备用控制装置工作时,控制与主用控制装置的根复用器连接的开关模块截止,与备用控制装置的根复用器连接的开关模块导通。
多路开关模块,连接于控制装置和交换装置之间,用于实现主用控制装置控制开关控制模块,或备用控制装置控制开关控制模块。该多路开关模块具体包括:主用控制信号通道,用于将主用控制装置的控制信号发送到交换装置;备用控制信号通道,用于将备用控制装置的控制信号发送到交换装置;通道切换子模块,用于根据控制装置的激活信号进行主用控制信号通道和备用控制信号通道之间的切换。
开关控制模块具体包括:总线端口子模块,用于接收来自主用控制装置或备用控制装置的总线信号,控制开关模块导通或截止;或控制管脚端口子模块,用于接收来自主用控制装置或备用控制装置的管脚电平控制信号,控制开关模块导通或截止。
另外,上述描述中,虽然开关模块或开关控制模块与交换装置集成为一体,但实际应用中也可以将开关模块和开关交换模块独立于交换装置设计。
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述:
本发明实施例,首先PCI Express交换装置内部的各个PCI Express总线端口不需要再支持非透明桥功能,将PCI Express总线端口连接到支持上行端口可选的交换装置上。并且该交换装置要求能够通过一般的控制总线如I2C(Inter-Integrated Circuit,内部集成电路)/SMBus(System Management Bus,***管理总线,通过一条由两条线组成的总线来控制主板上的设备并收集相应的信息)或者是控制引脚实现上行端口的切换。一种PCI Express总线交换装置的实现功能如图3所示,该交换装置需要实现一个I2C或者SMBus总线的Slave(从)模式的端口,通过该Slave模式的I2C或者SMBus总线可以和一般CPU的作为Maste(主)模式的I2C或者SMBus总线直接连接。CPU可以通过这个端口控制交换装置内部的交换模块中的功能以及进行上行端口切换。
图3实现内部数据交换的交换模块为交换装置的核心,该交换模块可以支持P0、P1、P2、......、Pn个PCI Express端口。每个端口对应一条独立的PCI Express总线链路。如图3示,在器件的P0、P1端口为上行端口,连接到内部交换模块之前都通过一个可控的电子开关(例如:开关二极管、继电器等)。这样最终P0、P1端口是否连接到内部交换模块受电子开关影响,而电子开关的控制通过I2C/SMBus总线端口或者是控制引脚实现。
当然上述的在P0、P1端口上增加的电子开关也可以不限于这样两个端口。对于内部交换模块的每个端口如果都可以可选的设置为上行端口,那么每个端口的内部连接上都可以设置这样的电子开关。由于电子开关在器件内部实现的简单性,会极大的简化器件设计,减低成本。
另外,交换装置也可以提供一般的控制用引脚,通过该控制用引脚也可以实现器件内部的上行端口切换,如图4所示。
采用图3或图4交换装置的主备倒换***如图5所示,主备用的两个CPU***均提供RC功能。这样两个主控CPU***均可以通过各自和***核心的交换装置的链路链接实现对于下游设备2~n的控制、管理和数据收发。图5交换装置内部的P0、P1端口上对应的电子开关在任何一个时刻只能一个为连通状态,而另外一个为断开状态。两个CPU***还提供一个I2C或者是SMBus总线的端口,这样两个处理器***来的总线同时连接到一个多路电子开关。
初始状态时,主用CPU工作,P0端口的电子开关连通,P1端口的电子开关断开。主用CPU***在主用状态下工作时,通过上述多路电子开关将对应自己处理器***的I2C/SMBus总线端口连接到交换装置的Slave I2C/SMBus总线端口。上述多路电子开关的切换控制通过主用CPU***发出的ACT_A信号和备用CPU***发出的ACT_B信号控制。这样两个信号的状态是互斥的,即任何情况下只能有一个信号有效,主用CPU***正常工作则ACT_A信号有效,ACT_B信号无效,保证主用CPU通过该多路电子开关与交换装置的P0端口连通。
***正常工作情况下,主用CPU***硬件上会监测自己***的状态。一旦主用CPU***因为一些原因不能正常工作,如触发看门狗电路动作引起复位,该复位信号会无效主用CPU***的ACT_A信号,同步传递给备用CPU***;备用CPU***如果确认主用CPU***故障,而且本备用***需要升级为主用***,则有效本***的ACT_B信号,升级为主用CPU***。同时备用CPU***会通过自己的I2C/SMBus总线端口以及切换后的多路开关对于交换装置进行控制,使得交换装置的上行端口由P0切换到P1,即P0端口的电子开关断开,P1端口的电子开关连通。上述主备倒换的实现方法也适用于通过主用主控***软件命令行控制的方式主动发起的主备倒换。
上述备用CPU***检测主用CPU***的方式是通过在主备用CPU之间增加传送状态信息的备份通道和心跳信息实现,其中两个CPU***通过备用通道实现主用CPU***的状态、信息等向备用CPU***的备份。通过这种备份通道可以实现主备用***的平滑切换。其中,心跳通道用于定时传递两个***的工作状态指示,主要是使得备用CPU***能够定时、不断的检测主用CPU***的状态。一旦备用CPU***检测到长时间不能接收到主用CPU***发送来的心跳信息,则认为主用CPU***故障,本CPU***发起倒换复位主用CPU***,使得主用CPU***释放ACT_A信号,并有效自己的ACT_B信号和I2C/SMBus总线端口,实现对于交换装置的控制,切换自己为主用CPU***。
图4所示的***中备份通道和心跳通道一般为以太网互连端口,也可以将两个主备CPU***的备份通道和心跳通道合并为一个以太网互连通道。本***相对于图2的另外一个优点在于,两个主备用CPU***之间的信息传递不再只依靠交换装置和连接于P0、P1端口的这样一套物理通道,而是实现了分离的数据通道和状态通道以及心跳通道。而通过以太网互连实现的状态通道和信息通道性对PCI Express***,也有***简单和可靠性高的特点。
上述通过I2C/SMBus总线实现交换装置上行端口切换的方法也可以变换为采用主备用处理器***的ACT_A或者ACT_B信号控制交换装置的控制引脚的方法实现。这种实现方法可以不需要图5的两个处理器I2C/SMBus总线,只需要将上述ACT_A或者是ACT_B信号按照主备用***的主用工作状态连接到交换装置的控制引脚。
本发明还提供了一种主备控制器倒换的实现方法,应用于包括至少两个控制装置的***中,所述控制装置互为主备用,且分别具有接入PCIE链路功能的根复用器,所述方法包括以下步骤:
步骤s101,通过连接于交换装置和控制装置之间的多路开关模块实现主用控制装置/备用控制装置与所述交换装置连接,具体包括:根据控制装置的激活信号将主用控制装置的控制信号发送到所述交换装置;或将备用控制装置的控制信号发送到所述交换装置。然后,备用控制装置检测主用控制装置是否出现故障;具体包括:通过心跳通道向主用控制装置发送检测消息;如预设周期内没有收到响应,则判断所述主用控制装置出现故障。所述备用控制装置检测主用控制装置是否出现故障之前还包括:-通过备份通道将主用控制装置的数据备份到备用控制装置。
步骤s102,如果出现,则通过控制信号控制与主用控制装置的根复用器连接的PCIE链路截止、与备用控制装置的根复用器连接的PCIE链路导通。具体过程包括:通过总线信号控制所述交换设备的开关模块导通或截止;或通过控制管脚电平信号控制所述交换设备的开关模块导通或截止。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。