CN117992126A - 一种基于软件lockstep的处理器协同工作方法及系统 - Google Patents

一种基于软件lockstep的处理器协同工作方法及系统 Download PDF

Info

Publication number
CN117992126A
CN117992126A CN202410405452.1A CN202410405452A CN117992126A CN 117992126 A CN117992126 A CN 117992126A CN 202410405452 A CN202410405452 A CN 202410405452A CN 117992126 A CN117992126 A CN 117992126A
Authority
CN
China
Prior art keywords
processor
lockstep
time
module
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202410405452.1A
Other languages
English (en)
Other versions
CN117992126B (zh
Inventor
罗腾利
王旭锴
廖新涛
沈洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Lingkong Electronic Technology Co Ltd
Original Assignee
Xian Lingkong Electronic Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xian Lingkong Electronic Technology Co Ltd filed Critical Xian Lingkong Electronic Technology Co Ltd
Priority to CN202410405452.1A priority Critical patent/CN117992126B/zh
Publication of CN117992126A publication Critical patent/CN117992126A/zh
Application granted granted Critical
Publication of CN117992126B publication Critical patent/CN117992126B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7889Reconfigurable logic implemented as a co-processor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Hardware Redundancy (AREA)

Abstract

本申请公开了一种基于软件lockstep的处理器协同工作方法及系统,该方法包括:对双处理器系统进行上电同步,将处理器的时钟作为对应计数器的时钟源进行同步增加;为周期任务分配时间窗口;其中,周期任务包括时间同步与lockstep任务;启动第一时间周期的时间同步窗口进行时间同步;其中,时间同步包括基于路径延时检测的结果进行时间修正;启动第二时间周期的lockstep任务窗口,每隔第二时间周期,获取对应时刻的处理器寄存器快照,并执行lockstep任务。解决了现有的lockstep技术没有考虑数据传输路径中的实时性问题。进而实现了对处理器任务进行同步,并周期性地进行时间同步,能够保证两个处理器执行任务的一致性。

Description

一种基于软件lockstep的处理器协同工作方法及系统
技术领域
本申请涉及计算机及其可靠性技术领域,尤其涉及一种基于软件lockstep的处理器协同工作方法及系统。
背景技术
lockstep(锁步核)技术是一项基于空间冗余的容错技术,其主要是通过多份与主处理器系统相同的硬件单元来实现两个处理器的相互监控,不间断地检查其操作功能的正确性,从而确保处理器的功能正确并可以检测错误,隔离错误,并在一定程度上进行错误恢复。
lockstep通过使用多个相同的处理器或核心在同一时间内处理相同的指令,能够保证计算结果的一致性和正确性,还能够发现系统错误,即使是短暂的错误,从而防止故障蔓延,保证系统可靠运行。进而实现信息处理的高完整性和高可靠性。
现有的lockstep技术,一般采用一个专用于实现lockstep逻辑的逻辑处理单元以及两个冗余的处理器或者三模冗余的处理器实现。无论是采用两个冗余的处理器还是三模冗余的处理器均没有考虑数据传输路径中的实时性问题。此外,这两种方式的硬件成本较高。
发明内容
本申请实施例通过提供一种基于软件lockstep的处理器协同工作方法及系统,解决了现有的lockstep技术没有考虑数据传输路径中的实时性问题。
第一方面,本申请实施例提供了一种基于软件lockstep的处理器协同工作方法,其特征在于,包括:对双处理器系统进行上电同步,将处理器的时钟作为对应计数器的时钟源进行同步增加;为周期任务分配时间窗口;其中,所述周期任务包括时间同步与lockstep任务;启动第一时间周期的时间同步窗口进行所述时间同步;其中,所述时间同步包括基于路径延时检测的结果进行时间修正;启动第二时间周期的lockstep任务窗口,每隔所述第二时间周期,获取对应时刻的处理器寄存器快照,并执行所述lockstep任务。
结合第一方面,在一种可能的实现方式中,所述将处理器的时钟作为对应计数器的时钟源进行同步增加,还包括:获取计数器的时间戳,并判断所述时间戳是否有效;若所述时间戳无效,则重新获取计数器的时间戳,直至所述时间戳有效。
结合第一方面,在一种可能的实现方式中,所述路径延时检测,包括:设置第一处理器的定时器,执行路径检测步骤;所述路径检测步骤,包括:由所述第一处理器向第二处理器发送路径检测报文,并记录发送时间戳;所述第二处理器接收到所述路径检测报文后将其返回所述第一处理器;若所述第一处理器接收到所述第二处理器返回的所述路径检测报文等待未超时,记录接收时间戳;根据所述发送时间戳与所述接收时间戳得到测试路径延时;执行预设次数的所述路径检测步骤,并将得到的所述预设次数个所述测试路径延时的均值作为第一路径延时;将所述第一处理器与所述第二处理器对调,并执行所述预设次数的所述路径检测步骤,将得到的所述预设次数的所述测试路径延时的均值作为第二路径延时。
结合第一方面,在一种可能的实现方式中,所述基于路径延时检测的结果进行时间修正,包括:迭代执行时间修正步骤直至第一时间戳与第二时间戳相等;所述时间修正步骤,包括:所述第一处理器获取第一定时器时间戳,并结合所述第一路径延时生成第一时间戳;将所述第一时间戳生成时间修正报文发送至所述第二处理器;所述第二处理器接收所述时间修正报文后,结合所述第二路径延时更新所述第一时间戳得到更新后的第一时间戳,并将其发送至所述第一处理器;所述第二处理器接收所述时间修正报文后,获取第二定时器时间戳,并结合所述第二路径延时生成第二时间戳,并将其发送至所述第一处理器;所述第一处理器根据所述第二时间戳与所述更新后的第一时间戳修正所述第一处理器的时间;将所述第一处理器与所述第二处理器对调,并执行所述时间修正步骤。
结合第一方面,在一种可能的实现方式中,所述第一处理器根据所述第二时间戳与所述更新后的第一时间戳修正所述第一处理器的时间,包括:所述第一处理器对所述第二时间戳与所述更新后的第一时间戳取均值得到延时均值;所述第一处理器基于所述延时均值修正所述第一处理器的时间。
结合第一方面,在一种可能的实现方式中,所述为周期任务分配时间窗口后,还包括:启动第三时间周期的关键任务窗口,在所述关键任务窗口内运行关键任务,并执行基于累加数的lockstep;和/或在所述关键任务完成后,执行基于调度器的lockstep。
结合第一方面,在一种可能的实现方式中,所述执行基于累加数的lockstep,包括:第一处理器定义全局变量,当所述第一处理器在所述关键任务窗口内进行lockstep时,所述全局变量加一;所述第一处理器将所述全局变量传递至第二处理器进行对比;若所述第一处理器与所述第二处理器的全局变量的累加值相等,则处理器的lockstep状态正常;否则,处理器的lockstep状态异常。
结合第一方面,在一种可能的实现方式中,所述执行基于调度器的lockstep,包括:通过处理器寄存器快照获取所述关键任务的上下文,得到寄存器上下文;通过所述寄存器上下文的程序计数器得到两个处理器的指令运行状态,并判断是否一致,得到运行状态判断结果;通过所述寄存器上下文的通用寄存器得到两个处理器的运行环境,并判断是否一致,得到运行环境判断结果;根据所述运行状态判断结果与所述运行环境判断结果确定执行所述关键任务时的处理器状态,若两个处理器状态一致,则处理器的lockstep状态正常;否则,处理器的lockstep状态异常。
结合第一方面,在一种可能的实现方式中,还包括:在所述lockstep任务过程中,在对端处理器发送数据后的预设接收时间内接收该数据,若所述预设接收时间内未收到的对端处理器发送的数据,则lockstep异常计数加一,当所述lockstep异常计数达到预设阈值时,判断为处理器的lockstep状态异常。
第二方面,本申请实施例提供了一种基于软件lockstep的处理器协同工作系统,其特征在于,包括时间同步模块、数据发送模块、数据接收模块、传输路径实时性检测模块、lockstep数据位对比模块、lockstep结果判定模块、处理器寄存器快照模块与累加数产生模块;
所述时间同步模块,被配置为:根据从所述数据接收模块所接收的对端处理器的时间戳修正本端处理器的计数器,以实现本端处理器与对端处理器的时间同步,并将本端处理器的时间戳传递至所述数据发送模块;
所述数据发送模块,被配置为:与所述数据接收模块构成数据传输通道,并为数据总线上发送的数据添加校验位;
所述数据接收模块,被配置为:与所述数据发送模块构成数据传输通道,并为数据总线上接收的数据添加校验位;
所述传输路径实时性检测模块,被配置为:在数据发送过程中启动数据接收检测计数器,并根据所述数据接收检测计数器所接收的数据检测lockstep异常;
所述处理器寄存器快照模块,被配置为:在lockstep任务与调度器调度点获取处理器的处理器寄存器快照,并将所述处理器寄存器快照传递至所述数据发送模块;
所述累加数产生模块,被配置为:在处理器执行任务过程中对lockstep进行累加计数,并将累加数传递至所述数据发送模块;
所述lockstep数据位对比模块,被配置为:根据接收的有效数据按照比特位与对应时刻发送的数据进行对比,并将对比结果传入所述lockstep结果判定模块;其中,所述有效数据包括所述处理器寄存器快照模块传入的所述处理器寄存器快照和/或所述累加数产生模块传入的所述累加数;
所述lockstep结果判定模块,被配置为:根据所述lockstep数据位对比模块传入的所述对比结果对处理器lockstep进行状态标记与状态确认。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请实施例通过上电同步,能够确保两个处理器以相同的时间基准开始运行;通过将处理器的时钟作为对应计数器的时钟源,能够实现对处理器处理任务的同步;通过路径时延检测,能够确定不同处理器的路径时延;通过时间修正能够消除处理器的时间偏移。有效解决了现有的lockstep技术没有考虑数据传输路径中的实时性问题。进而实现了对处理器任务进行同步,并周期性地进行时间同步,能够保证两个处理器执行任务的一致性。并且本申请通过软件系统实现lockstep,不需要额外的lockstep处理逻辑单元,能够节约成本。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种基于软件lockstep的处理器协同工作方法的流程图;
图2为本申请实施例提供的路径延时检测的流程图;
图3为本申请实施例提供的路径延时检测的实例图;
图4为本申请实施例提供的时间修正的流程图;
图5为本申请实施例提供的一种基于软件lockstep的处理器协同工作系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下对本申请实施例涉及的部分技术做出说明,以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了部分对公知功能和结构的描述。
图1是本申请实施例提供的一种基于软件lockstep的处理器协同工作方法的流程图,包括步骤101至步骤104。其中,图1仅为本申请实施例示出的一种执行顺序,并不代表一种基于软件lockstep的处理器协同工作方法的唯一执行顺序,在可实现最终结果的情况下,图1所示出的步骤可以被并列或颠倒执行。
步骤101:对双处理器系统进行上电同步,将处理器的时钟作为对应计数器的时钟源进行同步增加。具体地,启动双处理器系统后,对双处理器系统进行上电同步。系统上电后,对两个处理器同时供电,加载相同的系统镜像,确保上电之后两个处理器在相同条件下以相同的时间基准开始运行。
在本申请实施例中,计数器使用处理器的时钟作为时钟源,进行同步增加,对计数器进行周期同步即可达到对处理器处理周期任务的同步。
此外,在执行周期任务之前,先获取计数器的时间戳,并判断时间戳是否有效。若时间戳无效,则重新获取计数器的时间戳,直至时间戳有效。时间戳有效则执行步骤102。
步骤102:为周期任务分配时间窗口。其中,周期任务包括时间同步与lockstep任务。在本申请实施例中,按照处理器计数器的时间标尺,采用时间片窗口的方式为周期任务分配时间窗口。周期任务的周期时间同步在处理器周期运行过程中工作,确保在处理器运行过程中产生的时钟漂移能够及时得到修正,也避免了运行过程中时钟漂移引起的时钟误差积累。
在本申请实施例中,还可以启动第三时间周期的关键任务窗口,在关键任务窗口内运行关键任务,并执行基于累加数的lockstep。和/或在关键任务完成后,执行基于调度器的lockstep。示例性地,第三时间周期设置为20毫秒。
执行基于累加数的lockstep,具体如下:第一处理器定义全局变量,当第一处理器在关键任务窗口内进行lockstep时,全局变量加一。示例性地,此处的全局变量初始值为0,累加至10反转到0。换言之,此处全局变量的值为其实际累加值与10进行取模运算后的结果。第一处理器将全局变量传递至第二处理器进行对比。若第一处理器与第二处理器的全局变量的累加值相等,则处理器的lockstep状态正常。否则,处理器的lockstep状态异常。若出现处理器的lockstep状态异常,则处理器发出警报信息和/或停止工作。
执行基于调度器的lockstep,具体如下:通过处理器寄存器快照获取关键任务的上下文,得到寄存器上下文。关键任务的上下文包含了处理器的寄存器运行现场,能直观地反映处理器的运行状态。
通过寄存器上下文的程序计数器得到两个处理器的指令运行状态,并判断是否一致,得到运行状态判断结果。具体地,程序计数器是一个特殊的寄存器,用于存储处理器当前正在执行的指令的地址,通过比对两个处理器的程序计数器的值,可以判断两个处理器是否在执行相同的指令序列,即指令运行状态是否一致。如果两个程序计数器的值相同,则两个处理器在相同的执行点上。
通过寄存器上下文的通用寄存器得到两个处理器的运行环境,并判断是否一致,得到运行环境判断结果。具体地,通用寄存器用于存储处理器在执行任务时使用的各种数据。这些数据包含了处理器的运行环境状态信息,如变量值、中间计算结果等。通过比对两个处理器的通用寄存器的值,可以判断两个处理器的运行环境是否一致。如果通用寄存器的值相同,那么两个处理器在相同的运行环境中。
根据运行状态判断结果与运行环境判断结果确定执行关键任务时的处理器状态,若两个处理器状态一致,则处理器的lockstep状态正常。否则,处理器的lockstep状态异常。具体地,若两个处理器的运行状态判断结果与运行环境判断结果一致,即两个处理器状态一致,其运行状态与运行环境均相同,则表明两个处理器在同步执行任务。否则,处理器的lockstep状态异常。
步骤103:启动第一时间周期的时间同步窗口进行时间同步。其中,时间同步包括基于路径延时检测的结果进行时间修正。在本申请实施例中,第一时间周期示例性地设置为1毫秒,在处理器的运行速度下足够完成时间同步。路径延时检测的步骤如图2所示,包括步骤201至步骤208,具体如下。
步骤201:设置第一处理器的定时器,执行路径检测步骤。在本申请实施例中,为第一处理器设置的定时器用于路径检测报文接收等待的超时处理。路径检测步骤是对lockstep的数据传输路径延时进行检测,包括两个处理器的双向通信路径延时检测。路径检测步骤为步骤202至步骤205。
步骤202:由第一处理器向第二处理器发送路径检测报文,并记录发送时间戳。具体地,如图3所示,第一处理器发起路径检测,将路径检测报文发送给第二处理器,并记录此时的发送时间。其中,路径检测报文包括1字节的报头与两个4字节的报文体,报文体可以是第一时间戳与第二时间戳。
步骤203:第二处理器接收到路径检测报文后将其返回第一处理器。具体地,第二处理器接收到第一处理器的路径检测报文后将其直接返回。
步骤204:若第一处理器接收到第二处理器返回的路径检测报文等待未超时,记录接收时间戳。具体地,第一处理器等待接收第二处理器返回的路径检测报文时,判断是否等待超时。若接收到路径检测报文且没有等待超时,则此次路径测试有效,记录此时的接收时间戳。否则,重新执行路径检测步骤。
步骤205:根据发送时间戳与接收时间戳得到测试路径延时。具体地,通过发送时间戳与接收时间戳作差得到该次路径测试的测试路径延时。
步骤206:将得到的预设次数个测试路径延时的均值作为第一路径延时。在本申请实施例中,重复进行预设次数的路径检测步骤,得到预设次数个测试路径延时,将预设次数个测试路径延时的均值作为第一路径延时。第一路径时延为第一处理器到第二处理器再到第一处理器的路径延时。
需要注意的是,此处的预设次数大于或等于1,且预设次数的路径检测步骤为预设次数的有效路径测试,若第一处理器等待超时,则本次路径测试无效,不计入预设次数。示例性地,预设次数设置为10次。
步骤207:将第一处理器与第二处理器对调,执行路径检测步骤。将第一处理器与第二处理器对调,即让第二处理器按照第一处理器得到第一路径时延的步骤执行预设次数的路径检测步骤。
本领域技术人员应当理解,此处的将第一处理器与第二处理器对调并不是实际的调整处理器的位置,而是指两个处理器执行相同的步骤,已执行的处理器与未执行的处理器名称互换,执行重复步骤,直至两个处理器均执行了预设次数的路径检测步骤,分别得到第一路径延时与第二路径延时。
步骤208:得到的预设次数的测试路径延时的均值作为第二路径延时。具体地,求此时的第一处理器(原第二处理器)执行预设次数的路径检测步骤得到的预设次数个测试路径延时的均值,作为第二路径延时。
需要注意的是,第一路径延时与第二路径延时均为路径测试报文从本端处理器到对端处理器再回到本端处理器的路径延时,第一路径延时与第二路径延时的本端处理器与对端处理器正好相反。
此外,报文发送端发送延时与报文接收端接收延时运行于处理器中断上下文,需考虑中断延时,且处理器执行过程中指令具有多发射等特性,故在报文发送端与报文接收端设置处理器访问“栅栏”,即限制报文的发送频次,消除报文发送与接收期间处理器指令多发射引起的不确定性。
时间修正的过程如图4所示,包括步骤401至步骤408,具体如下。
步骤401:第一处理器获取第一定时器时间戳,并结合第一路径延时生成第一时间戳。具体地,第一处理器获取本端的第一定时器时间戳,结合第一处理器的第一路径延时生成第一时间戳。
示例性地,。式中,/>表示第一时间戳,/>表示第一定时器时间戳,/>表示第一路径延时。
步骤402:将第一时间戳生成时间修正报文发送至第二处理器。具体地,第一时间戳生成包含报头与报文体的时间修正报文发送至第二处理器。
步骤403:第二处理器接收时间修正报文后,结合第二路径延时更新第一时间戳得到更新后的第一时间戳,并将其发送至第一处理器。具体地,第二处理器接收到时间修正报文后,对其中的第一时间戳加上第二处理器的第二路径延时进行更新后,将其再次生成时间修正报文发送回第一处理器。
示例性地,。式中,/>表示更新后的第一时间戳,/>表示第一定时器时间戳,/>表示第一路径延时,/>表示第二路径延时。
步骤404:第二处理器接收时间修正报文后,获取第二定时器时间戳,并结合第二路径延时生成第二时间戳,并将其发送至第一处理器。具体地,第二处理器接收到时间修正报文后,获取本端的第二定时器时间戳,结合第二处理器的第二路径延时生成第二时间戳,将其生成时间修正报文发送至第一处理器。
示例性地,。式中,/>表示第二时间戳,/>表示第二定时器时间戳,/>表示第二路径延时。
步骤405:第一处理器根据第二时间戳与更新后的第一时间戳修正第一处理器的时间。在本申请实施例中,第一处理器对第二时间戳与更新后的第一时间戳取均值得到延时均值。第一处理器基于延时均值修正第一处理器的时间。
具体地,。式中,T表示延时均值,/>表示第一定时器时间戳,/>表示第一路径延时,/>表示第二路径延时,/>表示第二定时器时间戳。
步骤406:判断第一时间戳与第二时间戳是否相等。具体地,判断此时的第一时间戳与第二时间戳是否相等。若第一时间戳与第二时间戳相等,则执行步骤408,否则执行步骤407。
本领域技术人员应当意识到,在第一次执行此步骤时,第一时间戳为第一定时器时间戳结合第一路径延时生成的第一时间戳,第二时间戳为第二定时器时间戳结合第二路径延时生成的第二时间戳,此时的第一时间戳与第二时间戳均未进行修正。在第二次执行此步骤时,仅有一个处理器进行了时间修正。
在本申请实施例中,两个处理器可以轮流或同时进行时间修正,且每进行一次时间修正就执行一次此步骤,直至第一时间戳与第二时间戳相等。
步骤407:将第一处理器与第二处理器对调。具体地,将第一处理器与第二处理器对调,即让第二处理器按照第一处理器进行时间修正的步骤执行时间修正步骤。时间修正步骤为步骤401至步骤408。
本领域技术人员应当理解,此处的将第一处理器与第二处理器对调并不是实际的调整处理器的位置,而是指两个处理器执行相同的步骤,已执行的处理器与未执行的处理器名称互换,执行相同步骤,直至第一时间戳与第二时间戳相等。
步骤408:第一处理器与第二处理器时间同步。具体地,第一时间戳与第二时间戳相等时,即完成时间修正,此时第一处理器与第二处理器时间同步。
由于处理器数据的缓存及数据传输时竞争总线等因素的存在,导致第一路径延时与第二路径延时存在差异,本申请的时间修正消除了因双向路径延时差异引起的误差。
上述路径检测步骤与时间修正步骤均在时间同步窗口内执行。
需要注意的是,时间修正在上电同步阶段与周期任务运行阶段都会执行,区别在于上电同步阶段直接进行时间修正,周期任务运行阶段是在一定的时间窗口进行时钟修正,以保证一定的时间偏移余量。
本领域技术人员应当理解,第一处理器或第二处理器在接收到路径检测报文或时间修正报文后均会进行校验,以确保报文在传输过程中没有被损坏或篡改。
步骤104:启动第二时间周期的lockstep任务窗口,每隔第二时间周期,获取对应时刻的处理器寄存器快照,并执行lockstep任务。在本申请实施例中,第二时间周期示例性地设置为5毫秒。
需要注意的是,在本申请中,系统上电同步后,启动时间同步窗口、lockstep任务窗口及关键任务窗口的时间可以相同,也可以不同。且在一个周期任务中,lockstep任务与关键任务没有先后顺序之分。
此外,在lockstep任务过程中,在对端处理器发送数据后的预设接收时间内接收该数据,若预设接收时间内未收到的对端处理器发送的数据,则lockstep异常计数加一,当lockstep异常计数达到预设阈值时,判断为处理器的lockstep状态异常。本领域技术人员可根据实际需求或经验设置此处的预设阈值。示例性地,预设接收时间为100纳秒,预设阈值为10次。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。本实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照本实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
如图5所示,本申请实施例还提供一种基于软件lockstep的处理器协同工作系统500。该系统包括时间同步模块、数据发送模块、数据接收模块、传输路径实时性检测模块、lockstep数据位对比模块、lockstep结果判定模块、处理器寄存器快照模块与累加数产生模块,具体如下。
时间同步模块,被配置为:根据从数据接收模块所接收的对端处理器的时间戳修正本端处理器的计数器,以实现本端处理器与对端处理器的时间同步,并将本端处理器的时间戳传递至数据发送模块。具体地,时间同步模块是lockstep软件的基础,两个处理器在时间同步的基础之上进行lockstep。实时的时间同步在启动窗口和任务窗口进行,并将时间同步结果传递至数据发送模块。
数据发送模块,被配置为:与数据接收模块构成数据传输通道,并为数据总线上发送的数据添加校验位。具体地,数据发送模块用于将本端累加数产生模块、处理器寄存器快照模块以及时间同步模块的数据发送至对端的数据接收模块。此外,数据发送模块还可以通过传输路径实时性检测模块与对端的数据接收模块进行路径延时检测。
数据接收模块,被配置为:与数据发送模块构成数据传输通道,并为数据总线上接收的数据添加校验位。具体地,数据接收模块用于将自对端数据发送模块所接收的数据传递至本端的时间同步模块、传输路径实时性检测模块以及lockstep数据位对比模块。
本领域技术人员还可以将数据接收模块与数据发送模块集成在同一模块上,实现数据发送模块与数据接收模块的功能。
传输路径实时性检测模块,被配置为:在数据发送过程中启动数据接收检测计数器,并根据数据接收检测计数器所接收的数据检测lockstep异常。具体地,开启数据接收检测计数器,并为其设置预设接收时间,若在预设接收时间内没有接收到对端数据,则lockstep异常计数加一,当lockstep异常计数达到预设阈值时,判断为处理器的lockstep状态异常。本领域技术人员可根据实际需求或经验设置此处的预设阈值。示例性地,预设接收时间为100纳秒,预设阈值为10次。传输路径实时性检测模块还可以检测本端处理器将数据发送至对端处理器的路径延时。
处理器寄存器快照模块,被配置为:在lockstep任务与调度器调度点获取处理器的处理器寄存器快照,并将处理器寄存器快照传递至数据发送模块。具体地,处理器寄存器快照模块用于将在任务窗口或者任务调度器调度点获取的处理器寄存器快照传递至数据发送模块与lockstep数据位对比模块。处理器寄存器包括:通用寄存器、链接寄存器、浮点寄存器、程序计数器、栈位置寄存器、计数寄存器、状态寄存器等。通过获取处理器寄存器快照,可以直观反映该时刻处理器的运行状态。
累加数产生模块,被配置为:在处理器执行任务过程中对lockstep进行累加计数,并将累加数传递至数据发送模块。具体地,累加数产生模块采用自然数累加计数,用于在处理器任务执行过程中的lockstep,在任务执行过程中的关键环节,进行累加数计数的lockstep,并将计数的累加数传递至数据发送模块与lockstep数据位对比模块。
lockstep数据位对比模块,被配置为:根据接收的有效数据按照比特位与对应时刻发送的数据进行对比,并将对比结果传入lockstep结果判定模块。其中,有效数据包括处理器寄存器快照模块传入的处理器寄存器快照和/或累加数产生模块传入的累加数。此外,lockstep数据位对比的周期时间远远超出数据传输的延时时间,因此,数据传输的路径延时不会影响到对比结果。
lockstep结果判定模块,被配置为:根据lockstep数据位对比模块传入的对比结果对处理器lockstep进行状态标记与状态确认。其中,根据lockstep数据位对比模块传入的对比结果对处理器lockstep进行状态标记与状态确认,包括:若对比结果为不一致,则将处理器lockstep的状态标记为异常,并记录计数器时间戳。若对比结果为不一致且连续超过第三时间,则确认处理器lockstep的状态为异常。示例性地,此处的第三时间设置为20毫秒。
本申请所述装置中的部分模块可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
上述申请实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述方便,描述以上装置时以功能分为各种模块分别描述。在实施本申请实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,也可以将实现某功能的模块由多个子模块或子单元组合实现。
本申请中所述的方法、装置或模块可以以计算机可读程序代码方式实现控制器按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(英文:Application Specific Integrated Circuit;简称:ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
此外,在本发明的各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独存在,也可以两个或两个以上模块集成在一个模块中。
上述存储介质包括但不限于随机存取存储器(英文:Random Access Memory;简称:RAM)、只读存储器(英文:Read-Only Memory;简称:ROM)、缓存(英文:Cache)、硬盘(英文:Hard Disk Drive;简称:HDD)或者存储卡(英文:Memory Card)。所述存储器可以用于存储计算机程序指令。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的硬件的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,也可以通过数据迁移的实施过程中体现出来。该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施方式采用递进的方式描述,各个实施方式之间相同或相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。本申请的全部或者部分可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、移动通信终端、多处理器系统、基于微处理器的系统、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
以上实施例仅用以说明本申请的技术方案,而非对本申请限制;尽管参照前述实施例对本申请进行了详细的说明,本领域普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请技术方案的范围。

Claims (10)

1.一种基于软件lockstep的处理器协同工作方法,其特征在于,包括:
对双处理器系统进行上电同步,将处理器的时钟作为对应计数器的时钟源进行同步增加;
为周期任务分配时间窗口;其中,所述周期任务包括时间同步与lockstep任务;
启动第一时间周期的时间同步窗口进行所述时间同步;其中,所述时间同步包括基于路径延时检测的结果进行时间修正;
启动第二时间周期的lockstep任务窗口,每隔所述第二时间周期,获取对应时刻的处理器寄存器快照,并执行所述lockstep任务。
2.根据权利要求1所述的方法,其特征在于,所述将处理器的时钟作为对应计数器的时钟源进行同步增加,还包括:
获取计数器的时间戳,并判断所述时间戳是否有效;
若所述时间戳无效,则重新获取计数器的时间戳,直至所述时间戳有效。
3.根据权利要求1所述的方法,其特征在于,所述路径延时检测,包括:
设置第一处理器的定时器,执行路径检测步骤;
所述路径检测步骤,包括:
由所述第一处理器向第二处理器发送路径检测报文,并记录发送时间戳;
所述第二处理器接收到所述路径检测报文后将其返回所述第一处理器;
若所述第一处理器接收到所述第二处理器返回的所述路径检测报文等待未超时,记录接收时间戳;
根据所述发送时间戳与所述接收时间戳得到测试路径延时;
执行预设次数的所述路径检测步骤,并将得到的所述预设次数个所述测试路径延时的均值作为第一路径延时;
将所述第一处理器与所述第二处理器对调,并执行所述预设次数的所述路径检测步骤,将得到的所述预设次数的所述测试路径延时的均值作为第二路径延时。
4.根据权利要求3所述的方法,其特征在于,所述基于路径延时检测的结果进行时间修正,包括:
迭代执行时间修正步骤直至第一时间戳与第二时间戳相等;
所述时间修正步骤,包括:
所述第一处理器获取第一定时器时间戳,并结合所述第一路径延时生成第一时间戳;
将所述第一时间戳生成时间修正报文发送至所述第二处理器;
所述第二处理器接收所述时间修正报文后,结合所述第二路径延时更新所述第一时间戳得到更新后的第一时间戳,并将其发送至所述第一处理器;
所述第二处理器接收所述时间修正报文后,获取第二定时器时间戳,并结合所述第二路径延时生成第二时间戳,并将其发送至所述第一处理器;
所述第一处理器根据所述第二时间戳与所述更新后的第一时间戳修正所述第一处理器的时间;
将所述第一处理器与所述第二处理器对调,并执行所述时间修正步骤。
5.根据权利要求4所述的方法,其特征在于,所述第一处理器根据所述第二时间戳与所述更新后的第一时间戳修正所述第一处理器的时间,包括:
所述第一处理器对所述第二时间戳与所述更新后的第一时间戳取均值得到延时均值;
所述第一处理器基于所述延时均值修正所述第一处理器的时间。
6. 根据权利要求1所述的方法,其特征在于,所述为周期任务分配时间窗口后,还包括:
启动第三时间周期的关键任务窗口,在所述关键任务窗口内运行关键任务,并执行基于累加数的lockstep;和/或
在所述关键任务完成后,执行基于调度器的lockstep。
7.根据权利要求6所述的方法,其特征在于,所述执行基于累加数的lockstep,包括:
第一处理器定义全局变量,当所述第一处理器在所述关键任务窗口内进行lockstep时,所述全局变量加一;
所述第一处理器将所述全局变量传递至第二处理器进行对比;
若所述第一处理器与所述第二处理器的全局变量的累加值相等,则处理器的lockstep状态正常;否则,处理器的lockstep状态异常。
8.根据权利要求6所述的方法,其特征在于,所述执行基于调度器的lockstep,包括:
通过处理器寄存器快照获取所述关键任务的上下文,得到寄存器上下文;
通过所述寄存器上下文的程序计数器得到两个处理器的指令运行状态,并判断是否一致,得到运行状态判断结果;
通过所述寄存器上下文的通用寄存器得到两个处理器的运行环境,并判断是否一致,得到运行环境判断结果;
根据所述运行状态判断结果与所述运行环境判断结果确定执行所述关键任务时的处理器状态,若两个处理器状态一致,则处理器的lockstep状态正常;否则,处理器的lockstep状态异常。
9.根据权利要求1所述的方法,其特征在于,还包括:
在所述lockstep任务过程中,在对端处理器发送数据后的预设接收时间内接收该数据,若所述预设接收时间内未收到的对端处理器发送的数据,则lockstep异常计数加一,当所述lockstep异常计数达到预设阈值时,判断为处理器的lockstep状态异常。
10.一种基于软件lockstep的处理器协同工作系统,其特征在于,包括时间同步模块、数据发送模块、数据接收模块、传输路径实时性检测模块、lockstep数据位对比模块、lockstep结果判定模块、处理器寄存器快照模块与累加数产生模块;
所述时间同步模块,被配置为:根据从所述数据接收模块所接收的对端处理器的时间戳修正本端处理器的计数器,以实现本端处理器与对端处理器的时间同步,并将本端处理器的时间戳传递至所述数据发送模块;
所述数据发送模块,被配置为:与所述数据接收模块构成数据传输通道,并为数据总线上发送的数据添加校验位;
所述数据接收模块,被配置为:与所述数据发送模块构成数据传输通道,并为数据总线上接收的数据添加校验位;
所述传输路径实时性检测模块,被配置为:在数据发送过程中启动数据接收检测计数器,并根据所述数据接收检测计数器所接收的数据检测lockstep异常;
所述处理器寄存器快照模块,被配置为:在lockstep任务与调度器调度点获取处理器的处理器寄存器快照,并将所述处理器寄存器快照传递至所述数据发送模块;
所述累加数产生模块,被配置为:在处理器执行任务过程中对lockstep进行累加计数,并将累加数传递至所述数据发送模块;
所述lockstep数据位对比模块,被配置为:根据接收的有效数据按照比特位与对应时刻发送的数据进行对比,并将对比结果传入所述lockstep结果判定模块;其中,所述有效数据包括所述处理器寄存器快照模块传入的所述处理器寄存器快照和/或所述累加数产生模块传入的所述累加数;
所述lockstep结果判定模块,被配置为:根据所述lockstep数据位对比模块传入的所述对比结果对处理器lockstep进行状态标记与状态确认。
CN202410405452.1A 2024-04-07 2024-04-07 一种基于软件lockstep的处理器协同工作方法及系统 Active CN117992126B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410405452.1A CN117992126B (zh) 2024-04-07 2024-04-07 一种基于软件lockstep的处理器协同工作方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410405452.1A CN117992126B (zh) 2024-04-07 2024-04-07 一种基于软件lockstep的处理器协同工作方法及系统

Publications (2)

Publication Number Publication Date
CN117992126A true CN117992126A (zh) 2024-05-07
CN117992126B CN117992126B (zh) 2024-06-25

Family

ID=90890908

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410405452.1A Active CN117992126B (zh) 2024-04-07 2024-04-07 一种基于软件lockstep的处理器协同工作方法及系统

Country Status (1)

Country Link
CN (1) CN117992126B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1682195A (zh) * 2002-09-12 2005-10-12 西门子公司 同步或异步定时的处理单元的同步方法和电路装置
CN102246155A (zh) * 2008-12-10 2011-11-16 飞思卡尔半导体公司 多处理器数据处理系统中的错误检测
US20150193341A1 (en) * 2014-01-08 2015-07-09 Emerson Network Power - Embedded Computing, Inc. Method And System Of Synchronizing Processors To The Same Computational Point
CN109818826A (zh) * 2019-01-11 2019-05-28 西安电子科技大学工程技术研究院有限公司 一种网络路径延迟测量方法及其装置与时间同步系统
CN111104243A (zh) * 2019-12-26 2020-05-05 江南大学 一种低延迟的双模lockstep容软错误处理器系统
CN111385049A (zh) * 2018-12-29 2020-07-07 中兴通讯股份有限公司 一种时间校正方法、装置、系统及存储介质
CN111726189A (zh) * 2020-06-15 2020-09-29 哈工大机器人(合肥)国际创新研究院 基于时间戳标记电路的双核系统时钟同步方法及装置
CN111936972A (zh) * 2018-04-11 2020-11-13 Arm有限公司 事务中的异常处理
CN114020095A (zh) * 2021-11-17 2022-02-08 中国航空无线电电子研究所 一种基于时钟对齐与同步的双处理器锁步系统
CN114416435A (zh) * 2021-12-28 2022-04-29 中国科学院计算技术研究所 一种微处理器架构及微处理器故障检测方法
CN115694704A (zh) * 2022-10-28 2023-02-03 重庆长安汽车股份有限公司 一种时间同步方法、装置、设备及存储介质
CN115934449A (zh) * 2023-02-08 2023-04-07 合肥智芯半导体有限公司 一种寄存器的校验方法、装置及设备
CN116821038A (zh) * 2023-08-28 2023-09-29 英特尔(中国)研究中心有限公司 用于处理器的锁步控制装置和方法

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1682195A (zh) * 2002-09-12 2005-10-12 西门子公司 同步或异步定时的处理单元的同步方法和电路装置
CN102246155A (zh) * 2008-12-10 2011-11-16 飞思卡尔半导体公司 多处理器数据处理系统中的错误检测
US20150193341A1 (en) * 2014-01-08 2015-07-09 Emerson Network Power - Embedded Computing, Inc. Method And System Of Synchronizing Processors To The Same Computational Point
CN111936972A (zh) * 2018-04-11 2020-11-13 Arm有限公司 事务中的异常处理
CN111385049A (zh) * 2018-12-29 2020-07-07 中兴通讯股份有限公司 一种时间校正方法、装置、系统及存储介质
CN109818826A (zh) * 2019-01-11 2019-05-28 西安电子科技大学工程技术研究院有限公司 一种网络路径延迟测量方法及其装置与时间同步系统
CN111104243A (zh) * 2019-12-26 2020-05-05 江南大学 一种低延迟的双模lockstep容软错误处理器系统
CN111726189A (zh) * 2020-06-15 2020-09-29 哈工大机器人(合肥)国际创新研究院 基于时间戳标记电路的双核系统时钟同步方法及装置
CN114020095A (zh) * 2021-11-17 2022-02-08 中国航空无线电电子研究所 一种基于时钟对齐与同步的双处理器锁步系统
CN114416435A (zh) * 2021-12-28 2022-04-29 中国科学院计算技术研究所 一种微处理器架构及微处理器故障检测方法
CN115694704A (zh) * 2022-10-28 2023-02-03 重庆长安汽车股份有限公司 一种时间同步方法、装置、设备及存储介质
CN115934449A (zh) * 2023-02-08 2023-04-07 合肥智芯半导体有限公司 一种寄存器的校验方法、装置及设备
CN116821038A (zh) * 2023-08-28 2023-09-29 英特尔(中国)研究中心有限公司 用于处理器的锁步控制装置和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
常龙鑫;郭俊;洪广伟;虞致国;顾晓峰;: "一种面向RISC-V的检查点和回滚恢复容错方法", 电子与封装, no. 10, 20 October 2020 (2020-10-20) *

Also Published As

Publication number Publication date
CN117992126B (zh) 2024-06-25

Similar Documents

Publication Publication Date Title
US4937741A (en) Synchronization of fault-tolerant parallel processing systems
Bernick et al. NonStop/spl reg/advanced architecture
EP2884392A1 (en) Triple software redundancy fault tolerant framework architecture
Ropars et al. SPBC: Leveraging the characteristics of MPI HPC applications for scalable checkpointing
JP2005285120A (ja) ユーザプログラムを実行する複数のプロセッサにおける非同期割り込みにサービスを提供する方法およびシステム
JP2005285119A (ja) 非決定的プロセッサにおいてユーザプログラムを実行する方法およびシステム
CN111209343B (zh) 节点数据同步方法、装置、设备以及存储介质
US9459949B2 (en) Methods and apparatus to provide failure detection
JP2005285121A (ja) プロセッサ間で情報を交換する方法およびシステム
EP2157723A2 (en) Data retransmission method and system
Bouteiller et al. Reasons for a pessimistic or optimistic message logging protocol in MPI uncoordinated failure, recovery
US6363496B1 (en) Apparatus and method for reducing duration of timeout periods in fault-tolerant distributed computer systems
Alagappan et al. {Fault-Tolerance}, Fast and Slow: Exploiting Failure Asynchrony in Distributed Systems
CN115102653A (zh) 时间同步方法、装置、计算机设备和存储介质
CN117992126B (zh) 一种基于软件lockstep的处理器协同工作方法及系统
do Souto et al. Reliability evaluation of broadcast protocols for FlexRay
CA2435001C (en) Fault-tolerant computer system, re-synchronization method thereof and re-synchronization program thereof
CN112286727B (zh) 一种基于增量快照的时空隔离域快速恢复方法和系统
CN102508738B (zh) 一种多核处理器业务信息的备份方法、内核和备份内核
CN111355648B (zh) 一种基于同步时间窗的rtu双机冗余采集系统
CN107526658B (zh) 在包括多个电子计算机的航空电子系统中保证公共信号接收的方法
CN110990229A (zh) 一种系统信息采集方法及装置
Meyer et al. Hybrid Message Logging. Combining advantages of Sender-based and Receiver-based approaches
CN118093253B (zh) 一种多核锁步处理器多级快速错误恢复系统
CN118363798B (zh) 一种基于Lockstep模式的故障处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant