专利名称:一种热备份冗余系统的通讯与同步数据交互方法
技术领域:
本发明涉及一种数据交互方法,特别是一种在热备份多机冗余系统中所采 用的通讯与同步数据交互方法。
背景技术:
在热备份多机冗余系统中,系统通常需要对单机的数据内容和时序达成一
致,比如单机专有的传感器数据如何,何时达成一致;比如单机的状态数据如 何,状态数据何时达成一致等等。系统中的每对单机需要通过交互数据才能达 到内容一致,通过同步交互才能达到时序一致,即热备份冗余系统中的单机有 一致内容的数据,并且不同单机一致内容的数据是在一定时间门限内所达成的, 4目关内容可参见文献Abler, T.' A Network Element Based Fault Tolerant Processor, MS Thesis, Massachusetts Institute of Technology, Cambridge: MA, May 1988。
目前,在通常的多机冗余系统中,通讯数据和同步数据是分别进行处理的, 对于通讯数据通常采用专门的通讯通道,不和同步通道合用。而对于同步策略 则通常釆用时钟同步和任务同步。
对于时钟同步,系统需要传播高速容错时钟信号,它的实现随着系统规才莫 的增长而难度变大。另外,时钟同步方法需要冗余处理器的时钟是确定的,也 就是说冗余处理器在给定数目的时钟周期内必须执行完全相同条指令。这个限 制通常需要剔除可能存在于同步部件内的所有的异步和不确定性,另外,时钟 同步一般需要利用专用的硬件装置实现,因此实现复杂,而且采用时钟级的微 同步显然是不能满足硬件软件多样性设计要求的。
对于任务同步,系统需要利用软件来实现多机的同步, 一般利用应用代码 自然产生的断点作为同步事件。单机间通过软件信息的发送和接收来保证同步,单机在断点处发送消息给对方,然后等待接收对方发送给自己的消息;在接收 消息时,单机全部通过软件操作来保证同步。由于各单机间无时钟级同步操作 过程,需要软件参与管理与控制全部同步操作过程,因此软件任务同步实现的 效率较低,并且难以做到对应用程序员完全透明。
发明内容
本发明的技术解决问题是克服现有技术的不足之处,提供了一种数据交 互效率高、同步性好、实现简单的热备份冗余系统的通讯与同步数据交互方法。
本发明的4支术解决方案是 一种热备份冗余系统的通讯与同步数据交互方 法,步骤如下
(1 )设冗余系统中有M个单机,M个单机中任意两个单机之间 通过独立的物理通道进行数据交互,所述数据包括通讯数据和同步数据,通讯 数据使用专门的发送緩冲区发送;
(2) 若单机的通讯数据发送緩沖区非空,则读取通讯数据发送緩冲区的通 讯数据发送给对方单机,同时还将所述通讯数据回环给自己,并等待接收对方 单机发送给自己的通讯数据,直至通讯数据緩冲区内的通讯数据全部发送完毕;
(3) 若单机的通讯数据发送緩沖区为空,则不进行通讯数据交互,将同步 数据发送给对方单机,同时还将所述同步数据回环给自己,并等待接收对方单 机发送给自己的同步数据,在发送同步数据的同时启动第一计数器和第二计数 器;
(4) 当单机接收到回环给自己的同步数据时停止第一计数器,当单机接收 到对方单机发送给自己的同步数据时停止第二计数器;
(5) 若在第一计数器溢出时未收到回环给自己的同步数据,或者在第二计 数器溢出时未收到对方单机发送给自己的同步数据则根据通讯数据发送緩冲区 是否为空执行步骤(2)或步骤(3);
(6) 若第一计数器和第二计数器均已停止计数,则在在后一个计数器停止 计数时刻产生同步脉冲,提示两单机同步,第一计数器和第二计数器的计数差值即为两单机的同步状态;
(7)重复步骤(2) (6),若在上一次同步数据交互时步骤(6)中第二 计数器的值大于第一计数器的值,则在本次同步凄t据交互时步骤(3)中将同步 数据发送给对方单机之前等待T1时间,T1为上一次同步数据交互时步骤(6) 中第二计数器与第一计数器的差值;若在上一次同步凄t据交互时步骤(6)中第 二计数器的值小于第一计数器的值,则在本次同步数据交互时步骤(3)中立即 将同步数据发送给对方单机。
所述M个单机中任意两个单机之间通过独立的物理通道进行数据交互的方 式为异步串行通讯方式。
本发明与现有技术相比的有益效果是
(1 )本发明方法将M个单机划分为iV对同时进行同步数据的交互,通讯数 据和同步数据共用统一的物理通道,实现简单,可节省大量的硬件资源;交互 时优先发送通讯数据,当通讯数据发送緩沖区为空时才发送同步数据,可自主 进行通讯数据和同步数据交互模式的切换,与应用软件任务同步相比,提高了 单机间的同步频率,可以使整个系统在较短的时间内达到同步,提高了整个系 统的数据交互效率;
(2 )对回环同步数据的接收时刻与对方发送的同步数据的接收时刻进行比 较,并只在对方发送的同步数据滞后于回环的同步数据时调整等待计数器进行 数据同步,使得等待计数器的设置更为直接有效,从而提高了整个系统的同步 性;
(3)通过异步串行通讯方式进^f亍同步,消除了时钟同步所需要的复杂锁相 环电路,克服了在大规模冗余系统间传播高速容错时钟信号的困难,而且克服 了时钟同步方法需要相同硬件的限制,系统中的各个单机可以采用硬件软件多 样性设计。
图1为本发明方法的流程框图;图2为本发明实施例中两台单机进行通讯与同步数据交互的示意图。
具体实施例方式
假设冗余系统中有M个单机,当然M还可以取大于4的值,但 由于此时系统规模庞大,各单机之间无论是硬件连接还是通讯方式都更加的复 杂,若要完成各单机之间的数据同步需要花费较长时间,系统吞吐率受限,在 此条件下本发明方法虽然仍旧适用,但其同步效率会受到影响,因此将使用本 发明方法的冗余系统的单机数量限制在2、 3和4。
M个单机通过独立的物理通道实现全连接,其中的任意两个单机之间都进 行数据交互,交互的数据包括通讯数据和同步数据,通讯数据的发送和接收均 可采用緩冲区来实现。
如图1所示,为本发明方法的流程框图。若监测到通讯数据发送緩沖区非 空,则读取发送緩沖区的最先1个字节数据,按照约定的串行通讯帧格式,写 入移位寄存器,串行通讯数据发送给对方单机。同时还将所述串行通讯数据回 环给自己(自己发送给自己),并等待接收对方单冲几发送给自己的通讯数据,将 回环数据与接收数据比较后,将比较结果和接收数据写入接收緩沖区,并通知
处理器读取,供处理器使用。当前1个字节数据全部移位完成并发送完毕后, 继续读取发送緩冲区的最先1个字节,重复上述过程,直至读空通讯数据发送 緩沖区。
若监测到通讯数据发送緩冲区为空,则不进行通讯数据交互,而是将预先 设定好的同步数据(譬如0x55)发送给对方单机,同时还将所述同步数据回环 给自己,发送同步数据时,采用与交互通讯数据不同的帧格式(譬如校验方式),
讯数据。
在发送同步数据时,启动两个计数器,分别记录回环给自己的同步数据的 时间,以及对方单机发送给自己同步数据的时间。通过比较两个计数器的记录 时间以及二者的时间差,单机可以明确与对方单机的同步时差关系。在某一轮同步数据交互时,若单机先接收到自己的回环同步数据,后接收 到对方发送来的同步数据,那么单机先延迟相应的时间(该时间应为后接收到 对方发送来的同步数据时刻减去先接收到自己的回环同步数据时刻的差值)后, 再进行下一次同步数据交互,经过如此反复多轮同步数据交互,两个计数器的 时差会变得很小并稳定下来,两单机达到较佳的同步状态。若单机先接收到对 方发送来的同步数据,后接收到自己回环的同步数据,那么单机不再经过任何 延迟,而是直接进行下一次同步数据交互。
当然,在上述过程中有可能出现计数器溢出的情况,此时应将两个计数器 同时清零后重新进行下一次的同步数据交互。
在数据交互过程中,既可以采用同步串行通讯方式,也可以采用异步串行
关系的高速容错时钟,实现复杂,因此本发明方法采用较为简单的异步串行通
i礼方式。
实施例
如图2所示,为M-2时两台单机之间采用本发明的通讯与同步数据交互方 法进行数据交互的示意图。对于^ = 3,4的情况,系统可分解考虑W对单^l的同 步,其中A^c2m。
如图2所示,对于此对单机(单机A和单机B)中的每一个单机,均包含 一个处理单元(包括中央处理器、存储器等)和一个通讯单元(包括异步串行 通讯控制器和同步控制逻辑),其中处理单元是执行应用程序、调度和重构任务
的计算机,通讯单元是实现同步、教:据交互和同步表决等相关功能的硬件。
通讯单元分成三个部分处理单元/通讯单元接口部分、同步控制部分和通 讯控制器部分。其中接口部分提供在处理单元和通讯单元之间有效和有序传递 不同大小的信息,同时还提供处理单元和通讯单元间的流控制以保证不覆盖有 效信息, 一般可以采用双端口存储器或FIFO (先入先出)实现;同步控制部分 提供通讯数据与同步数据的切换控制,以及同步交互控制处理能力,并提供两个通讯单元的的同步机制;通信链路部分提供本地通讯单元和另 一个通讯单元 交互途径,以及其自身回环交互的串行通讯转换与串行通道。
A单机和B单机完成复位与初始化后,由于同步数据交互的起始不一致, 因此它们是通过多次同步数据交互才能完成相互的渐近同步过程,达到较佳的 同步状态。对于整个冗余系统而言,当系统中任意一对单机之间都有较佳的同 步状态后,整个系统也将处于较佳的同步状态。
采用此结构的A单机和B单机,其总的同步策略基本操作如下通讯单元 通过多轮同步数据交互后,可以实现与对方单机通讯单元的紧密同步,A单机 和B单机的处理单元通过读取同步状态以及接收同步脉冲,可以实现较为水^t 的同步。处理单元通过处理单元/通讯单元接口,把通讯单元看作存储器映射、 带緩沖器的I/O设备;如果处理单元希望通过通讯单元与其它单机执行数据交 互,它只需写数据到通讯单元的数据发送緩沖区,然后处理单元在一定时限内 可以通过数据接收緩冲区读取对方单机的发送过来的相应通讯数据;通过多轮 上述同步操作,A单机和B单机可以实现数据内容和时序的相互一致。
冗余系统在同步方面采用分层同步的方式,A单机和B单机的处理单元间 采用功能同步方案,允许处理器(CPU )以它们自己的速度运行代码一段时间, 然后在代码的指定点发送信息等待对方处理器追赶上来以获得同步。A单机的 处理器运行到代码的某些指定点时发送信息给B单机的处理器,在发送信息后 A单机处理器停止执行直到接收B单机处理器返回的这条信息,此时A单机的 处理器知道B处理器已经达到这个相同的点,然后就可以继续执行。采用功能 同步方案使得A单机处理器和B单机处理器可以在计算具备一定结果后进行同 步。A单机和B单机的通讯单元间采用筒单的异步串行通讯帧同步方案,保证 通讯单元在相同的时刻收、发异步串行通讯同步帧,产生同步脉冲与同步状态 分别供A单机和B单机处理器使用。通过定义一个异步串行通讯帧为信息传输 单位,A单机和B单机可以比较接收到自身回环,以及对方同步帧的时间,并 可以基于这个比较结果,调整自己发送下一条同步数据帧的等待时间从而使A单机和B单机的通讯单元同步。由于异步串行通讯帧传送简单,因此A单机和 B单机通讯单元间同步频率快,A单机和B单机间同步后的偏差小(双方产生 同步脉冲的时刻,以及间隔趋于一致),可以实现紧密同步。单机间的同步数据 可以预先设定,设定后同步数据帧一直是相同的。 A单机和B单机的一轮同步操作流程为
A单机向B单机发送同步数据时刻,启动两个定时计数器(第一计数器 和第二计数器),通过回环通道,等待接收自己发出的同步数据,同时等待B 单机发送给自己的同步数据,当收到自己发出的同步数据后停止第 一计数器, 收到对方发出的同步数据后停止第二计数器,完成一次同步才喿作,并记录两个 计数器的时差,作为下一次同步操作的时延依据。
B单机B单机的搡作和A单机的操作流程一致,发送同步数据后,启动 两个定时计数器,通过回环通道,等待接收自己发出的同步数据,同时等待A 单机发给自己的同步数据,当收到自己发出的同步数据后停止第一计数器,收 到对方发出的同步数据后停止第二计数器,完成一次同步才喿作,并记录两个计 数器时差,作为下一次同步操作的时延依据。
假设在本轮操作中,A单机的同步数据先发,那么在进行下一轮同步数据 交互时,A单机推迟发出同步数据的时刻,B单机在完成上一轮同步数据交互 后,立即进行下一轮同步数据交互。在多次上述同步数据交互过程中,A单机、 B单机各自配置的两个计数器值逐渐接近,直至达到较为稳定的同步,当A单 机、B单机在回环、对方同步数据都就绪时产生同步脉冲,处理器依据一定时 间范围内的同步脉沖个数,可以判断系统是否达成同步。
本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。
权利要求
1、一种热备份冗余系统的通讯与同步数据交互方法,其特征在于步骤如下(1)设冗余系统中有M个单机,4≥M≥2,M个单机中任意两个单机之间通过独立的物理通道进行数据交互,所述数据包括通讯数据和同步数据,通讯数据使用专门的发送缓冲区发送;(2)若单机的通讯数据发送缓冲区非空,则读取通讯数据发送缓冲区的通讯数据发送给对方单机,同时还将所述通讯数据回环给自己,并等待接收对方单机发送给自己的通讯数据,直至通讯数据缓冲区内的通讯数据全部发送完毕;(3)若单机的通讯数据发送缓冲区为空,则不进行通讯数据交互,将同步数据发送给对方单机,同时还将所述同步数据回环给自己,并等待接收对方单机发送给自己的同步数据,在发送同步数据的同时启动第一计数器和第二计数器;(4)当单机接收到回环给自己的同步数据时停止第一计数器,当单机接收到对方单机发送给自己的同步数据时停止第二计数器;(5)若在第一计数器溢出时未收到回环给自己的同步数据,或者在第二计数器溢出时未收到对方单机发送给自己的同步数据则根据通讯数据发送缓冲区是否为空执行步骤(2)或步骤(3);(6)若第一计数器和第二计数器均已停止计数,则在在后一个计数器停止计数时刻产生同步脉冲,提示两单机同步,第一计数器和第二计数器的计数差值即为两单机的同步状态;(7)重复步骤(2)~(6),若在上一次同步数据交互时步骤(6)中第二计数器的值大于第一计数器的值,则在本次同步数据交互时步骤(3)中将同步数据发送给对方单机之前等待T1时间,T1为上一次同步数据交互时步骤(6)中第二计数器与第一计数器的差值;若在上一次同步数据交互时步骤(6)中第二计数器的值小于第一计数器的值,则在本次同步数据交互时步骤(3)中立即将同步数据发送给对方单机。
2、根据权利要求1所述的一种热备份冗余系统的通讯与同步数据交互方 法,其特征在于所述M个单机中任意两个单机之间通过独立的物理通道进行 数据交互的方式为异步串行通讯方式。
全文摘要
一种热备份冗余系统的通讯与同步数据交互方法,通讯数据和同步数据采用同一物理通道进行发送和接收,交互时优先发送通讯数据,若通讯数据发送缓冲区非空则发送通讯数据,若通讯数据发送缓冲区为空则发送同步数据,通讯数据和同步数据的交互模式可以自动切换,提高了冗余系统的数据交互效率。在进行数据同步时,对回环同步数据接收时刻与对方发送同步数据的接收时刻进行比较,并只在对方发送的同步数据滞后于回环的同步数据时调整等待计数器进行数据同步,提高了整个系统的同步性。本发明方法实现简单,可节省大量的硬件资源。
文档编号H04L1/22GK101588266SQ20091008766
公开日2009年11月25日 申请日期2009年6月30日 优先权日2009年6月30日
发明者波 刘, 李任欣, 肖爱斌 申请人:北京控制工程研究所