专利名称:容错计算机及其控制方法
技术领域:
本发明涉及一种具有双工系统的容错计算机,以及控制这种容错计算机的方法。
背景技术:
近年来,计算机越来越多的功能使得计算机的使用领域更加广泛。这种计算机需要甚至在发生故障的情况下也能继续操作。例如,满足这一要求的一个解决办法是如在日本特开专利公开No.1998-177498中所公开的容错技术。
构建在容错技术上的容错计算机具有双工系统,每一个双工系统都包括有CPU子系统和IO子系统。容错计算机通过比较双工系统以确定各系统是否相互同步地操作,来检测错误的发生。
具有双工系统的容错计算机采用锁步系统,用于基于共用内部时钟来彼此同步地操作两个CPU子系统。一些容错计算机具有用于在两个IO子系统之间进行通信的高速接口,该接口采用与内部时钟异步地操作的串行链路。当IO子系统之一访问那些容错计算机的两个CPU子系统时,CPU子系统中的一个仅通过内部路径访问,而另一个CPU子系统则通过高速接口来访问。因此,为了实现对两个CPU子系统的同步访问,内部时钟和高速接口的时钟需要相互同步。
通常,通过在一定循环周期之内的给定时间用内部时钟替换高速接口的时钟,来实现双工系统的CPU子系统和IO子系统之间的同步通信时序。
不过,容错计算机存在的一个问题是,虽然两个系统是基于相同的时钟来操作的,但是由于系统中时钟线的歪斜和PLL特性,这两个系统易于发生相位偏移。该问题会导致另一缺点,即在接收系统中存在静态不确定参数。
由于操作系统的内部时钟和高速接口的时钟彼此不同,因此通过使用由全程计数器产生的联动来获取同步。不过,除非全程计数器和其他组件稳定,否则不能产生联动,并且接收系统不得不执行异步的数据通信,直到产生了联动为止。
发明内容
因此,本发明的目的是提出一种能够可靠地实现双工系统之间的同步并且即使其计数器彼此独立地操作也能使双工系统同步的容错计算机,以及控制这种容错计算机的方法。
根据本发明,容错计算机具有双工系统,每一个双工系统都包括CPU子系统,用于控制对CPU和存储单元的访问;以及IO子系统,用于控制从外部电路输入到IO子系统以及从IO子系统输出到外部电路的数据。分配有传输时间的数据从IO子系统中的一个传输到另一个IO子系统,并且由另一个IO子系统异步地接收。另一个IO子系统记录数据的接收时间,并且使用分配给数据的传输时间来计算理想接收时间。另一个IO子系统相对于一个IO子系统的时钟偏移是根据计算的理想接收时间和记录的接收时间来计算的。之后,基于计算的时钟偏移来改变另一个IO子系统中的计数器,并且使用改变的计数器来接收数据。
如上所述,将传输时间分配给在双工系统之间传输的数据,并且根据传输时间来计算理想接收时间。根据理想接收时间和实际接收时间来计算时钟偏移,并且基于计算的时钟偏移来改变时钟。因此,可以可靠地使双工系统相互同步。即使系统的计数器相互独立地操作,双工系统也可以相互同步。
下面参考示出了本发明例子的附图进行讲述,将使本发明的上述和其他目的、特征和优点更加清楚。
图1为框图,示出了根据本发明实施例的容错计算机;图2为图1所示的串行IO I/F控制器的框图;图3为时序图,示出了图1和图2所示的容错计算机的操作;图4为流程图,示出了控制图1和图2所示的容错计算机的方法的第一阶段中的处理;图5示出了图1和图2所示的容错计算机中改变联动计数器的处理;图6为流程图,示出了控制图1和图2所示的容错计算机的方法的第二阶段中的处理;图7为流程图,示出了控制图1和图2所示的容错计算机的方法的第三阶段中的处理;以及图8为流程图,示出了控制图1和图2所示的容错计算机的方法在第四阶段中的处理。
具体实施例方式
图1示出了根据本发明实施例的容错计算机的框图。如图1所示,容错计算机具有一对双工系统,包括有一对主存储单元1a、1b,一对CPU 2a、2b,以及用于访问主存储单元1a、1b和CPU 2a、2b的一对系统3a、3b。系统3a、3b通过交叉链路4相互连接。系统3a、3b具有各IO I/F控制器70a、70b,用于在数据被输入到外部电路以及从外部电路输出数据时控制数据;各缓冲器51a、51b,用于暂时存储从IO I/F控制器70a、70b传输到CPU 2a、2b的数据;各缓冲器52a、52b,用于暂时存储从CPU 2a、2b传输到IO I/F控制器70a、70b的数据;各串行IO I/F控制器80a、80b,用于通过交叉链路4来控制系统3a、3b之间的数据传输;以及各IO访问比较器60a、60b,用于对从CPU 2a、2b到IO I/F控制器70a、70b的访问和从另一个系统3a、3b经由串行IO I/F控制器80a、80b到IO I/F控制器70a、70b的访问进行相互比较。系统3a、3b的这些组件被称为IO子系统,并且使用各系统3a、3b的联动计数器基于时钟来操作。系统3a、3b还具有各存储器总线控制器10a、10b,用于在向主存储单元1a、1b写入数据和从主存储单元1a、1b读出数据时控制数据;各CPU总线控制器20a、20b,用于控制对CPU 2a、2b的访问;各寄存器30a、30b;以及各路由器40a、40b,其包含有用于在CPU总线控制器20a、20b,寄存器30a、30b,缓冲器51a、51b,52a、52b以及串行IO I/F控制器80a、80b之间切换访问控制的各入站缓冲器41a、41b。系统3a、3b的这些组件被称为CPU子系统,并且根据锁步系统基于共用内部时钟来同步地操作。
这样构造的容错计算机的操作如下通过IO访问比较器60a、60b,对从CPU 2a、2b到IO I/F控制器70a、70b的访问和从另一个系统3a、3b经由串行IO I/F控制器80a、80b到IO I/F控制器70a、70b的访问进行相互比较。基于比较的访问来检测系统3a、3b的错误。在一定循环周期之内的给定时间用CPU子系统的内部时钟来替换交叉链路4的时钟,从而使CPU子系统和IO子系统之间的通信时序同步。由于系统3a、3b中,时钟线从产生作为内部时钟的中心时钟的时钟源的偏移以及PLL的特性,系统3a、3b易于发生相位彼此偏移。不过,串行IO I/F控制器80a、80b能够实现系统3a、3b之间的同步。下面来讲述串行IO I/F控制器80a、80b的细节及其操作。
图2示出了图1所示的串行IO I/F控制器80a、80b的框图。
如图2所示,串行IO I/F控制器80a、80b具有各宏传输器81a、81b,用于传输表示从IO I/F控制器70a、70b到系统3a、3b的访问的访问数据;各宏接收器82a、82b,用于通过交叉链路4接收从另一个系统3a、3b的宏传输器81a、81b传输来的访问数据;以及PLL 83a、83b,用于使用系统3a、3b中的中心时钟和联动寄存器来产生用于宏传输器81a、81b的操作时钟。当宏传输器81a、81b要传输访问数据时,宏传输器81a、81b将传输时的计数值嵌入到访问数据包中,然后传输访问数据。当宏接收器82a、82b已经接收访问数据包时,对于领先的包,宏接收器82a、82b在联动计数器的一个循环周期中记录接收时的计数值和数据提取时刻的计数值,作为接收时间,其中联动计数器用于使至少系统3a、3b同步。
下面来讲述控制如此构造的容错计算机的方法,其中该容错计算机将包从系统3a传输到系统3b并且改变系统3b中的联动计数器从而使系统3a、3b相互同步。
图3为时序图,示出了图1和图2所示的容错计算机的操作,图4为流程图,示出了控制图1和图2所示的容错计算机的方法的第一阶段中的处理。
在系统3a中,基于系统3a中的中心时钟和传输联动寄存器将包D2~D4从CPU子系统传输到宏传输器81a。在本实施例中,设定系统3a、3b的每一个中的联动寄存器,使其具有由作为内部时钟的中心时钟的16个时钟脉冲组成的一个循环周期,并且在这样的一个循环周期内容纳了3个包。具体地,系统3a、3b的每一个中的联动寄存器起到确定一个循环周期内的时序的作用。在传输侧,在联动寄存器被设定为“1”时,数据被传输到宏传输81a、81b,而在接收侧,在联动寄存器被设定为“0”时,从宏接收器82a、82b传输数据。由于联动寄存器确定由中心时钟的16个时钟脉冲组成的一个循环周期内的时序,因此由联动寄存器确定的循环周期表现为中心时钟的整数倍。此外,由于交叉链路4的时钟是根据中心时钟和联动寄存器产生的,因此由联动寄存器确定的循环周期也表现为交叉链路4的时钟的整数倍。
在图4所示的步骤1中,将来自宏传输器81a的传输时间C1a嵌入到被传输到宏传输器81a的包D2~D4的每一个中。在步骤2中,以基于由PLL 83a产生的操作时钟的时序来传输包D2~D4。此时,系统3a、3b中的联动计数器相互独立地操作,并且系统3a、3b以异步的模式来接收包。PLL 83a使用系统3a中的中心时钟和传输联动寄存器来产生用于宏传输器81a的操作时钟。
在步骤3中,从宏传输器81a传输的包D2~D4是通过系统3b的宏接收器82b经由交叉链路4来接收的。此时,记录包D2的接收时间C2b。
在步骤4中,宏接收器82b根据如下所示的公式(1),通过嵌入在接收的包D2中的传输时间C1a、在系统3a、3b之间的飞行时间Tfp、以及异步处理和同步处理之间的差异Dif来计算理想接收时间C2a。系统3a、3b之间的飞行时间Tfp指的是系统3a、3b以同步模式操作时,在它们之间传输数据所需的时间,并且由系统3a、3b预先设定。
C2a=C1a+Tfp-Dif…(1)在步骤5中,从计算的理想接收时间C2a中减去实际包接收时间C2b,从而计算时钟偏移。
在步骤6中,交叉链路4暂时断开。在步骤7中,根据在步骤5中计算的时钟偏移来改变宏接收器82b中的接收联动计数器。
图5示出了图1和图2所示的容错计算机中改变联动计数器的处理。
如图5所示,接收包的宏接收器82b中的接收联动计数器是根据传输包的宏传输器81a中的传输联动计数器和飞行时间确定的。根据在步骤5中计算的时钟偏移,接收联动计数器被偏移多个时钟脉冲。
当宏接收器82b中的接收联动计数器改变时,在步骤8中再次连接交叉链路4。宏接收器82b基于改变的接收联动计数器来以联动模式接收包。
图6为流程图,示出了控制图1和图2所示的容错计算机的方法的第二阶段中的处理。
在第二阶段中,宏接收器82b以联动模式来接收包,并且宏接收器82a以异步模式来接收包。
在步骤11中,将来自宏传输器81b的传输时间C3b嵌入到要由宏传输器81b传输到系统3a的包中。在步骤12中,该包是以基于传输联动计数器的时序传输的。
在步骤13中,从宏传输器81b传输的包是通过系统3a的宏接收器82a经过交叉链路4接收的。此时,记录接收的包的接收时间C4b。包是以异步模式通过宏接收器82a接收的。
在步骤14中,宏接收器82a根据如下所示的公式(2),通过嵌入在接收的包中的传输时间C3b、在系统3a中的飞行时间Tfp、以及异步处理和同步处理之间的差异Dif来计算理想接收时间C4a。
C4a=C3b+Tfp-Dif…(2)在步骤15中,从实际包接收时间C4b中减去计算的理想接收时间C4a,从而计算时钟偏移。在步骤16中,确定是否存在时钟偏移。如果判断出不存在时钟偏移,则在步骤17中交叉链路4被暂时断开。在步骤18中,将宏接收器82a改变到联动模式。之后,在步骤19中再次连接交叉链路4。
如果在步骤15中判断出存在时钟偏移,则控制方法进行到如下所述的第三阶段。
图7为流程图,示出了控制图1和图2所示的容错计算机的方法的第三阶段中的处理。
如果判断出在图6所示的步骤15中存在时钟偏移,则在步骤21中,宏接收器82a在一个循环周期内接收包。在步骤22中,以与上述相同的方式来计算接收的包的理想接收时间。在本实施例中,设定系统3a、3b的每一个中的联动寄存器,使其具有16个时钟脉冲组成的一个循环周期,并且在这样的一个循环周期内容纳3个包。因此,宏接收器82a在一个循环周期内接收三个连续的包。来自宏传输器81b的3个包的传输时间C8b、C9b和C10b可以根据在领先的包中嵌入的传输时间C8b和宏传输器81b中的传输联动寄存器来计算。3个包的理想接收时间C5b、C6b和C7b是根据以下公式(3)~(5)来计算的C5b=C8b+Tfp-Dif…(3)C6b=C9b+Tfp-Dif…(4)C7b=C10b+Tfp-Dif …(5)在步骤23中,基于宏接收器82a中的3个包的计算的理想接收时间C5b、C6b、C7b和实际接收时间C5a、C6a、C7a,确定系统3a中的联动计数器和系统3b中的联动计数器之间的偏移是否落在允许范围中。
如图3所示,用于联动计数器偏移的允许范围R为这样的范围,即如果联动计数器在允许范围R之内偏移,则该范围允许数据被提取。预先确定允许范围R,并且设定为表。
如果判断出联动计数器偏移在允许范围R中,则在步骤24中交叉链路4被暂时断开。在步骤25中,宏接收器82a改变到联动模式。之后,在步骤26中再次连接交叉链路4。
如果判断出联动计数器偏移落在允许范围R之外,则控制方法进行到如下所述的第四阶段。如果判断出联动计数器偏移在允许范围R中并且很大,则控制方法也进行到第四阶段。
图8为流程图,示出了控制图1和图2所示的容错计算机的方法在第四阶段中的处理。
如果判断出联动计数器偏移落在允许范围R之外,则在步骤31中,宏接收器82a对实际接收时间C5a和理想接收时间C5b进行相互比较。
如果在步骤32中判断出理想接收时间C5b早于实际接收时间C5a,则判断出系统3b的计数器是领先的,并且在步骤33中将如下信息传输到系统3b,该信息表示系统3b中的计数器是领先的。
然后,在步骤34中,系统3b的串行IO I/F控制器80b断开交叉链路4。在步骤35中,通过宏接收器82b的接收改变到异步模式。
之后,在步骤36中,系统3b中的联动计数器变成滞后。系统3b中的联动计数器在接收联动计数器的偏移的允许范围内变化。结果,在第三阶段中,连续的包从宏传输器81a被传输到宏接收器82b,并且计算一个循环周期中的允许范围。
然后,控制方法进行到用于计数器同步的第二阶段。
如果在步骤32中判断出理想接收时间C5b迟于实际接收时间C5a,则判断出系统3b的计数器是滞后的,并且在步骤37中将如下信息传输到系统3b,该信息表示系统3b中的计数器是滞后的。
然后,在步骤38中,系统3b的串行IO I/F控制器80b断开交叉链路4。在步骤39中,通过宏接收器82b的接收改变到异步模式。
之后,在步骤40中,系统3b中的联动计数器变成滞后。
在本实施例中,预先确定用于联动计数器偏移的允许范围R,并且设定为表。不过,允许范围R可以在包的传输和接收时被动态地确定。
虽然使用专有名词对本发明的优选实施例进行了讲述,但是这种讲述只是用于解释目的,并且应该知道,在不偏离权利要求的精神和范围的情况下可以对其进行修订和更改。
权利要求
1.一种容错计算机,包括双工系统;所述双工系统的每一个都包括CPU子系统,其基于所述双工系统的共用时钟来操作,用于控制对CPU和存储单元的访问;以及IO子系统,其异步地操作或者基于IO子系统中的计数器的时钟来操作,用于控制从外部电路输入到所述CPU子系统以及从所述CPU子系统输出到外部电路的数据;所述IO子系统包括传输装置,用于为要传输到成对的IO子系统的数据分配传输时间,并且将数据传输到成对的IO子系统;以及接收装置,用于异步地接收从成对的IO子系统传输的数据,并且记录接收的数据的接收时间;其中相对于成对的IO子系统的时钟偏移是根据理想接收时间和根据所述接收装置记录的接收时间来计算的,其中理想接收时间是使用分配给由所述接收装置接收的数据的传输时间来计算的,IO子系统中的计数器是基于计算的时钟偏移来改变的,并且使用改变的计数器来接收数据。
2.如权利要求1所述的容错计算机,其中所述IO子系统相对于至少所述计数器的一个循环周期中的每一个数据来计算所述时钟偏移,并且改变IO子系统中的计数器,以使计算的时钟偏移保持在预定允许范围中。
3.一种控制具有双工系统的容错计算机的方法,其中每一个双工系统都包括CPU子系统,用于控制对CPU和存储单元的访问;以及IO子系统,用于控制从外部电路输入到所述CPU子系统以及从所述CPU子系统输出到外部电路的数据,所述CPU子系统基于所述双工系统的共用时钟来操作,并且所述IO子系统异步地操作或者基于IO子系统中的计数器的时钟来操作,用于控制输入到所述CPU子系统和从所述CPU子系统输出的数据,所述方法包括如下步骤将分配有传输时间的数据从IO子系统中的一个传输到另一个IO子系统;与所述另一个IO子系统异步地接收从所述一个IO子系统传输的数据;在所述另一个IO子系统中记录所述数据的接收时间;使用分配给由所述另一个IO子系统接收的数据的传输时间,来计算理想接收时间;根据所述理想接收时间和由所述另一个IO子系统记录的接收时间,来计算在所述另一个IO子系统中相对于所述一个IO子系统的时钟偏移;基于计算的时钟偏移来改变所述另一个IO子系统中的计数器;并且使用所述计数器由所述另一个IO子系统来接收数据。
4.如权利要求3所述的方法,进一步包括如下步骤计算相对于至少所述计数器的一个循环周期中的每一个数据的所述时钟偏移;并且改变所述另一个IO子系统中的计数器,以将计算的时钟偏移保持在预定允许范围中。
全文摘要
一种容错计算机具有双工系统,每一个双工系统都包括CPU子系统,用于控制对CPU和存储单元的访问;以及IO子系统,用于控制从外部电路输入到IO子系统以及从IO子系统输出到外部电路的数据。分配有传输时间的数据从IO子系统中的一个传输到另一个IO子系统,并且由另一个IO子系统异步地接收。另一个IO子系统记录数据的接收时间,并且使用分配给数据的传输时间来计算理想接收时间。另一个IO子系统中相对于一个IO子系统的时钟偏移是根据计算的理想接收时间和记录的接收时间来计算的。之后,基于计算的时钟偏移来改变另一个IO子系统中的计数器,并且使用改变的计数器来接收数据。
文档编号G06F13/38GK1794194SQ200510022908
公开日2006年6月28日 申请日期2005年12月21日 优先权日2004年12月21日
发明者新野龙太 申请人:日本电气株式会社