用于提高锁步核可用性的系统和方法

文档序号:6539680阅读:1736来源:国知局
用于提高锁步核可用性的系统和方法
【专利摘要】一种用于提高锁步核可用性的系统和方法提供:将主CPU核的状态写入到状态缓冲器,由主CPU核执行任务的一个或多个指令以生成针对每个被执行的指令的第一输出,以及由校验器CPU核执行任务的一个或多个指令以生成针对每个被执行的指令的第二输出。所述方法进一步包括:将第一输出与第二输出相比较,并且如果第一输出不匹配于第二输出,则生成一个或多个控制信号,以及基于所述一个或多个控制信号的生成,将主CPU核的状态从状态缓冲器加载到主CPU核和校验器CPU核。
【专利说明】用于提高锁步核可用性的系统和方法
【技术领域】
[0001]本公开的某些实施例涉及在计算系统和方法中提供诊断覆盖。更具体地,本公开的某些实施例涉及在提高锁步(lockstep) CPU核可用性的同时在嵌入式安全相关系统及其中的方法中提供诊断覆盖。
【背景技术】
[0002]用在嵌入式安全相关系统中的中央处理单元(CPU)通常包括独立且一致地运行相同指令和数据序列的一对CPU核。所述核的输出被实时比较,并且如果存在通常指示错误的不匹配的话,则能够采取适当的动作来处理所述错误。然而,到由于检测到两个CPU核的输出之间的差异而已经确定两个CPU核之间的状态差异的时候,任一 CPU核的当前内部状态可能已经显著偏离于CPU核相关错误发生时的内部状态。
[0003]传统的嵌入式安全相关系统通过将整个系统置于重置状态中然后重新启动整个系统,解决了这些CPU核相关错误。更具体地,在传统的系统中,系统管理器逻辑模块一般接收核相关错误,然后不仅重置该对CPU核,还重置与该系统关联的所有组件。然而,该过程一般花费相当长的时间段,在所述时间段期间,系统不可用于例如处理指令和数据或者I/o功能。例如,系统可能在几十毫秒内不可用,这不是对安全相关控制器来说期望的情形。
[0004]其他更复杂的系统可以与用于禁用出故障的核的多数表决系统相结合使用三个或更多CPU核。然而,尽管此类系统可以提供更高的CPU核可用性,但是此类可用性以附加的面积、功率和/或成本为代价。
[0005]将期望的是,在仍然提供对CPU核处理错误的高效且健壮的检测和校正的同时,在嵌入式安全相关系统中给处理数据和指令集的任务提供更高百分比的CPU核可用性。

【发明内容】

[0006]根据本公开的实施例,一种锁步系统包括:主CPU核,其被配置成接收并执行任务的一个或多个指令以生成针对每个被执行的指令的第一输出;校验器CPU核,其被配置成接收并执行所述一个或多个指令以生成针对每个被执行的指令的第二输出;状态缓冲器,其被耦合到主CPU核和校验器CPU核并且被配置成存储主CPU核的状态;以及比较器,其被耦合到主CPU核和校验器CPU核并且被配置成接收针对每个被执行的指令的第一输出和第二输出,将第一输出与第二输出相比较并且如果第一输出不匹配于第二输出,贝1J生成一个或多个控制信号。在一个实施例中,主CPU核和校验器CPU核进一步被配置成接收所述一个或多个控制信号并从状态缓冲器加载所存储的CPU核状态。
[0007]根据本公开的另外的实施例,一种用于提高锁步核可用性的方法包括:将主CPU核的状态写入到状态缓冲器,由主CPU核执行任务的一个或多个指令以生成针对每个被执行的指令的第一输出,由校验器CPU核执行所述任务的所述一个或多个指令以生成针对每个被执行的指令的第二输出,将第一输出与第二输出相比较,并且如果第一输出不匹配于第二输出,则生成一个或多个控制信号,以及基于所述一个或多个控制信号的生成将主CPU核的状态从状态缓冲器加载到主CPU核和校验器CPU核。
[0008]本公开的这些和其他优势、方面和新特征以及其图示实施例的细节将从下面的描述和附图中更充分地理解。
【专利附图】

【附图说明】
[0009]图1是根据本公开的实施例的锁步系统的示意图;
图2是根据本公开的实施例的提高锁步核可用性的方法动作的流程图;
图3是根据本公开的另一个实施例的提高锁步核可用性的方法动作的流程图;
图4是根据本公开的另一个实施例的提高锁步核可用性的方法动作的流程图;以及 图5是根据本公开的另一个实施例的提高锁步核可用性的方法动作的流程图。
【具体实施方式】
[0010]图1是根据本公开的实施例的锁步系统100的示意图。该锁步系统包括主CPU核102、校验器CPU核104、比较器106、状态缓冲器108和总线/高速缓存/存储器模块110。如所示的那样,主CPU核102包括主CPU核状态控制逻辑112a,并且校验器CPU核104包括校验器CPU核状态控制逻辑112b。在一个实施例中,主CPU核状态控制逻辑112a和校验器(PU核状态控制逻辑112b包括被实现为硬件、固件或软件的相同的逻辑,然而本公开的范围包括状态控制逻辑112a和112b的不相同的实现方式,以适应例如主和校验器CPU核102和104的不相同的版本,其可能例如需要具有不同时间延迟的状态控制逻辑112a和112b。为了描述简单的目的,主CPU核状态控制逻辑112a和校验器CPU核状态控制逻辑112b可以共同称为状态控制逻辑112。
[0011]总线/高速缓存/存储器模块110包括耦合到主CPU核102和校验器CPU核104的一个或多个总线线路、高速缓存和存储器,并被配置成可寻址的且存储对主CPU核102和校验器CPU核106来说可访问的数据和/或程序(例如,CPU指令的序列)。本公开的范围包括所有类型的总线线路、高速缓存和存储器。例如,总线线路可以不仅包括电线、具有多个连接的通路或迹线,还包括提供相同功能的任何类型的物理装置。
[0012]存储器可以包括被配置成暂时或永久地存储程序或数据的任何物理存储设备。本公开的范围包括但不限于诸如闪存和R0M/PR0M/EPR0M/EEPR0M存储器之类的非易失性存储器和诸如DRAM和SRAM之类的易失性存储器。
[0013]状态缓冲器108可以包括被配置成可寻址的且存储主CPU核102的状态的任何物理存储设备。在本公开的一个实施例中,状态缓冲器108可以是(直接地或经由总线系统)连接到CPU核102和104的专用存储器或者预先存在的存储器的部分。在后者的情况下,地址指针可以被保持在主CPU核102内以标识存储器中状态缓冲器108的位置。在此类情况下,指针值可以被保持在被特别设计成容忍软错误的寄存器阵列(未示出)内。在下文中更详细地讨论软错误。在一个实施例中,寄存器阵列可以包括软错误容忍触发器(flip-flop)。软错误容忍触发器可以被扩展成包括例如被主CPU核102的状态控制逻辑112a使用以从状态缓冲器108加载CPU状态的序列逻辑。
[0014]在本公开的一个实施例中,状态缓冲器108的内容是错误校正码(ECC)保护的。例如,ECC可以使用算法来计算描述要被存储在状态缓冲器108中的数据单元的位序列的代码,并且所述代码与数据单元一起被存储在状态缓冲器108中。当请求读取数据单元时,再次使用相同的算法来计算用于所存储且将要被读取的数据单元的代码(例如,字)。将新生成的代码与当数据单元被存储时所生成的代码相比较,并且如果代码相匹配,则将数据单元确定为无错误。如果代码不匹配,则可以通过两个代码的比较来确定丢失的或错误的位,并且然后可以供应或校正一个或多个位。
[0015]主CPU核102可以包括读取和执行程序的本领域技术人员已知的任何类型的微处理器。所述程序可以包括CPU指令,所述CPU指令中的一些操纵从总线/高速缓存/存储器模块110接收的数据。在一个实施例中,校验器CPU核104在结构和功能上与主CPU核102相同,并且在另一个实施例中,校验器CPU核104仅在功能上与主CPU核102相同。主CPU核102和校验器CPU核104可以共同称为锁步CPU核。在操作中,锁步CPU核可以完全一致地(即,在由两个CPU核对一个或多个指令的执行之间没有时间偏移)或一致地(即,有时间偏移)独立运行(即,执行)相同的指令和数据序列。
[0016]在本公开的一个实施例中,锁步系统100包括一个或多个延迟器114a、114b、114c和114d。延迟器114a和114b对去往校验器CPU核104的指令的输入进行延迟,由此在当指令被两个CPU核执行的时候之间产生时间偏移,并且延迟器114c和114d对来自主CPU核102的输出进行延迟,以使得比较器106可以比较来自与相同指令的执行关联的两个CPU核的输出。如所示的那样,延迟器114a-114d是根据一个实施例的锁步系统100的可选特征。
[0017]在本公开的一个实施例中,状态控制逻辑112a和112b分别控制CPU核102和104的操作,包括暂停CPU核任务执行、重新启动CPU核任务执行、将主CPU核102 (和在另一个实施例中校验器CPU核104)的当前状态写入(即,保存)到状态缓冲器108、和/或从状态缓冲器108将所保存的CPU核状态读取(即,加载)到主CPU核102和校验器CPU核104。例如,在一个实施例中,状态控制逻辑112a被配置成实现周期性地对主CPU核102的状态进行采样以及将所采样的状态(也称为当前状态)写入到状态缓冲器108。
[0018]在一个实施例中,状态控制逻辑112a本身周期性地对主CPU核102的状态进行采样,并将所采样的状态写入到状态缓冲器108。在另一个实施例中,状态控制逻辑112a周期性地生成控制信号,所述控制信号指示一个或多个其他逻辑单元(未示出)进行采样并将采样状态写入到状态缓冲器108。在另一个实施例中,状态控制逻辑112a对主CPU核102的状态进行采样,或基于触发事件生成指示一个或多个其他逻辑单元对状态进行采样的控制信号。例如,触发事件可以是任务执行的开始,或一个或多个特定触发器的状态,或系统的一个或多个电路组件的一个或多个节点的状态,该一个或多个电路组件包括总线/高速缓存/存储器110、主CPU核102和校验器CPU核104的组件。为了该描述的目的,在一个实施例中,任务可以被定义为特定算法,或可替代地被定义为一个软件单元。
[0019]比较器106包括由硬件、固件或软件实现的比较逻辑。比较器106被配置成接收并比较来自主CPU核102和校验器CPU核104的输出。在一个实施例中,如果比较器106确定从两个CPU核所接收到的输出不同(即,不精确匹配),则比较器106生成一个或多个控制信号,所述控制信号被传递到主CPU核102的状态控制逻辑112a和校验器CPU核104的状态控制逻辑112b。
[0020]在一个实施例中,锁步系统100被嵌入在安全相关系统中,例如,被嵌入在下述系统中:其中,出于安全相关的原因,在程序或任务的执行中软和/或硬错误的检测是重要的。软错误可以例如由诸如宇宙辐射、放射性衰变或功率供应变化之类的瞬变事件引起,所述瞬变事件导致瞬变信号或状况发生在例如CPU核102和104和/或总线/高速缓存/存储器模块110中。相反地,硬错误可以由例如由于电离辐射或处理(即,制造)不一致性而引起的破损的存储单元或电路组件(诸如,晶体管)导致。典型地,由瞬变事件引起的软错误具有2毫秒或更少量级的生存时间,而硬错误由静态的错误状况引起,由此具有理论上无限的生存时间。
[0021]图2是图示根据本公开的实施例的提高锁步核可用性的方法200的流程图。在201处,任务开始。在一个实施例中,当由主CPU核102对先前任务的执行已经结束时,或者当主CPU核102接收到开始执行(新)任务的请求时,任务可以开始。
[0022]在202处,主CPU核102的状态控制逻辑112a将主CPU核102的当前状态保存(即,写入)到状态缓冲器108。在本公开的一个实施例中,例如,状态控制逻辑112a生成一个或多个信号,所述信号使主CPU核102的各种电路组件的电压和/或电流值(或数字高值和低值)被写入到状态缓冲器108。可以直接从电路组件的各个节点采样(即,读取)各种电路组件的值,或者可以从主CPU核102的本地寄存器(未示出)读取各种电路组件的值。
[0023]在204处,由主CPU核102从总线/高速缓存/存储器模块110接收包括所述任务的指令集中的第一指令,并且由校验器CPU核104接收第一指令(被延迟或未被延迟)以开始执行所述任务。在本公开的一个实施例中,所述任务可以被定义为特定算法或单个软件单兀。
[0024]在206处,锁步核(即,主和校验器CPU核102和104)执行所述任务。锁步核可以一致地或完全一致地独立执行包括所述任务的一个或多个指令。此外,比较器106针对每个被执行的指令将主CPU核102的输出(或延迟的输出)与校验器CPU核104的输出相比较。如果比较器106确定输出针对一个或多个被执行的指令中的每一个而匹配,则任务的执行在208处结束。在一个实施例中,锁步核之一或这两个锁步核可以执行NOP (无操作)指令,并且因此,一个或多个核的输出将与先前的输出相同(即,输出的状态不改变)。例如,主CPU核102和/或校验器CPU核104可以执行一个或多个指令以生成针对每个被执行的指令的输出,其中一个或多个所生成的输出(或连续生成的输出)包括相同的输出状态。
[0025]然而,如果在210处,对于特定的被执行的指令而言,在任务执行期间,比较器106检测到错误(即,确定输出不匹配),那么在一个实施例中,比较器106生成一个或多个控制信号以用于控制主CPU核状态控制逻辑112a和/或校验器CPU核状态控制逻辑112b。在另一个实施例中,锁步系统100包括耦合到比较器106的可选的控制寄存器116(图1)。控制寄存器116被配置成从比较器106接收错误信号并生成一个或多个控制信号以用于控制主CPU核状态控制逻辑112a和/或校验器CPU核状态控制逻辑112b。
[0026]不论所述一个或多个控制信号的源如何,在212处,状态控制逻辑112a和112b接收所述一个或多个控制信号。所述一个或多个控制信号触发状态控制逻辑112a和112b来分别停止主CPU核102和校验器CPU核104对指令的执行。在一个实施例中,状态控制逻辑112a然后将读取信号发送到状态缓冲器108,使所存储的CPU状态被加载到主CPU核102和校验器CPU核104内。所述方法然后在204处继续。
[0027]总而言之,在开始执行任务之前,将主CPU核102的已知良好状态(即,无错误状态)写入到状态缓冲器108。如果在执行任务期间检测到锁步错误,则中止任务执行并且然后将已知良好状态加载到CPU核102和104 二者,本质上重新初始化核状态。换句话说,核状态被“卷绕回”到在任务开始处已知的主CPU核的状态,并且指令序列被重新执行。通过仅当(经由分析主CPU核102及其关联的校验器CPU核104的输出)检测到处理错误时重新卷绕主CPU核102 (及其关联的校验器CPU核104),来避免整个处理系统(B卩,例如包括多于单个主CPU核的处理系统)的重置,由此提高对主CPU核102 (或多个CPU核)处理任务来说可用的时间的百分比。因而,对专用于执行指令集的计算操作来说可用的总时间的百分比被增加,即使当在存在高度个体化的CPU核状态破损的情况下计算可验证地正确的结果时。
[0028]如果CPU核状态破损是由于在执行任务期间单个事件搅乱而引起的(B卩,发生具有小于大约2ms的生存时间的软错误),那么假定不发生另一个单个软错误事件,则由已知良好CPU状态的加载(也被称为重新加载)和任务的重复执行导致的CPU输出将无错误,并且,由于核状态将保持一致(或完全一致),因此锁步核能够在锁定操作中继续。
[0029]然而,如果错误是由于任何其他失效而引起的(例如,发生硬错误),那么重新加载已知良好CPU状态和重复执行任务不会导致无错误的CPU输出。因而,为了防止锁步核102和104进入无尽的循环,锁步系统100可以可选地包括计数器或状态机(未示出),所述计数器或状态机被配置成限制当执行相同操作序列(即,例如包括特定任务的相同指令集)时接续CPU状态重新加载的数目。
[0030]图3是图示根据本公开的另一个实施例的提高锁步核可用性的方法300的流程图。典型地,CPU核内的状态可以被分类为动态的或伪静态的,其中动态状态是在任务内改变的状态,而伪静态状态是在执行任务期间保持恒定或可在任务之间保持恒定(即,在执行一个或多个任务期间保持恒定)的状态。CPU核的状态可以同时包括这两种类型的状态。为了减少在任务开始处将CPU状态保存到状态缓冲器108所花费的时间,CPU状态的伪静态状态分量仅当其已经改变时才被写入到状态缓冲器108。相反地,CPU状态的动态状态分量在每个任务的开始处被写入到状态缓冲器108。在一个实施例中,当比较器106检测到错误时,伪静态和动态状态二者被重新加载到锁步核102和104内。
[0031]如图3中所示,在301处,第一任务开始。在一个实施例中,当先前任务的执行已经结束时,或者当主CPU核102接收到开始第一任务的执行的请求时,第一任务可以开始。
[0032]在302处,假定关联于第一任务的主CPU核102的伪静态状态(也被称为当前伪静态状态)与关联于先前任务的主CPU核102的伪静态状态不同,则主CPU核102的状态控制逻辑112a将主CPU核102的当前伪静态状态保存到状态缓冲器108。
[0033]在304处,主CPU核102的状态控制逻辑112a将与第一任务关联的主CPU核102的动态状态(也被称为当前动态状态)保存到状态缓冲器108。
[0034]在306处,由主CPU核102从总线/高速缓存/存储器模块110接收包括第一任务的指令集中的第一指令,并且由校验器CPU核104接收第一指令(被延迟或未被延迟)以开始执行第一任务。
[0035]在308处,锁步核执行第一任务。动作308-314与图2的动作206-212相同,除了在发生如比较器106所检测到的错误时,状态控制逻辑112a将读取信号发送到状态缓冲器108,使所存储的伪静态CPU状态和所存储的动态CPU状态二者被加载到主CPU核102和校验器CPU核104内。
[0036]在316处,第二任务开始。当第一任务的执行已经结束时,或者当主CPU核102接收到开始第二任务的执行的请求时,第二任务可以开始。
[0037]在318处,主CPU核102的状态控制逻辑112a将与第二任务关联的主CPU核102的动态状态保存到状态缓冲器108。在该示例实施例中,假定关联于第二任务的伪静态状态与关联于第一任务的伪静态状态相同,因而主CPU核102的状态控制逻辑112a不将与第二任务关联的主CPU核102的伪静态状态保存到状态缓冲器108。所述方法在320处继续。关于第二任务的动作320-328与关于第一任务的动作306-314相同。
[0038]图4是图示根据本公开的另一个实施例的提高锁步核可用性的方法400的流程图。许多应用包含安全和非安全任务二者。非安全任务是其中可以容忍CPU核的输出中的错误的任务。根据本公开的实施例,为了节省功率并通过减少存储和重新加载CPU核状态时耗费的总时间量来提高主CPU核102在处理指令时的总体可用性,当运行(B卩,执行)非安全任务时,可以禁用校验器CPU核104、比较器106和控制寄存器116(当存在时)。然而,禁用比较器106和校验器CPU核104要求:当稍后要执行安全任务时,将不一致的校验器CPU核104带回到与主CPU核102的锁步中。
[0039]上文结合图1-3描述的系统和方法使锁步CPU核能够在检测到任一 CPU核中的错误之后从已知良好CPU核状态重新启动。如下文将关于图4描述的那样,这些相同的系统和方法也能够被用于重新同步和重新启动先前已经被禁用的锁步系统。
[0040]如图4中所示,在401处,非安全任务开始。在一个实施例中,当先前任务的执行已经结束时,或者当主CPU核102接收到开始执行非安全任务的请求时,非安全任务可以开始。
[0041]在402处,主CPU核102的状态控制逻辑112a将主CPU核102的当前状态保存到状态缓冲器108。
[0042]在404处,基于识别当前任务是非安全任务,主CPU核102的状态控制逻辑112a将禁用控制信号发送到比较器106和校验器CPU核104的状态控制逻辑112b。比较器106和状态控制逻辑112b的预编程的逻辑可以利用禁用控制信号以例如分别关断晶体管、开关、电源和/或比较器106和校验器CPU核104的其他电路组件。在另一个实施例中,主CPU核102将表示当前任务是非安全任务的控制信号(S卩,非安全任务控制信号)发送到控制寄存器116,并且作为响应,控制寄存器116生成禁用控制信号并将禁用控制信号发送到比较器106和校验器CPU核104的状态控制逻辑112b。
[0043]在406处,通过由主CPU核102从总线/高速缓存/存储器模块110接收包括非安全任务的指令集中的第一指令来开始非安全任务。在408处,主CPU核102执行非安全任务。在410处,非安全任务的执行结束。
[0044]在412处,安全任务开始。当主CPU核102接收到开始执行安全任务的请求时,可以开始安全任务。
[0045]在414处,基于识别新任务的开始是安全任务,主CPU核102的状态控制逻辑112a将启用控制信号发送到比较器106和校验器CPU核104的状态控制逻辑112b。比较器106和状态控制逻辑112b的预编程的逻辑可以利用启用控制信号以分别通过接通先前已经在404处关断的晶体管、开关、电源和/或比较器106和校验器CPU核104的其他电路组件来启用锁步操作。在另一个实施例中,主CPU核102将表示当前任务是安全任务的控制信号(即,安全任务控制信号)发送到控制寄存器116,并且作为响应,控制寄存器116生成启用控制信号并将启用控制信号发送到比较器106和校验器CPU核104的状态控制逻辑112b。
[0046]在416处,主CPU核102的状态控制逻辑112a基于识别新任务的开始是安全任务,将读取信号发送到状态缓冲器108,使所存储的CPU状态被加载到主CPU核102和校验器CPU核104内。所述方法在418处继续。关于安全任务的执行,动作418-426与图2中所示的动作204-212相同。
[0047]许多系统使用操作系统来分派任务到特定核实例(即,特定的CPU核)。如前面在上文中所讨论的那样,本公开的实施例包括在发生触发事件(诸如锁步错误)时重新加载所存储的主CPU核状态的全部或子集。
[0048]本公开的另一个实施例提供了对CPU核的完整上下文的切换。特定CPU核的上下文可以包括多于当前基于任务的CPU核状态,并可以包括例如程序计数器状态、寄存器文件状态、存储保护系统状态和时间保护系统状态中的一个或多个,其中程序计数器、寄存器文件、存储保护系统和时间保护系统都与特定CPU核的操作相关联。在这点上,CPU核的完整上下文也可以被称为机器上下文。
[0049]在一个实施例中,针对CPU核完整上下文切换的触发(即,机器上下文的切换)可以是操作系统事件,并且新CPU核完整上下文(即,新机器上下文)可以被锁步系统100加载以不仅设置(即,初始化)与执行特定任务关联的主CPU核状态(和校验器CPU核状态),还设置与主CPU核102的操作关联的所有设备和/或系统的状态。然而,本公开的范围包括使用任何事件作为触发,诸如,作为示例,基于多个主CPU核(例如,其被并行运行,并执行应用于不同数据的相同任务或者相同程序的不同任务)的共同状态具有一个或多个预定值或大于一个或多个预定(或可编程的)阈值的值的触发。
[0050]因而,用于基于触发事件来切换机器上下文的系统或方法的实现方式可以通过避免全操作系统任务分派循环的传统实现方式来提高锁步核可用性。与传统实现方式相反,一个任务可以通过保存机器上下文状态并提供机器上下文重新加载来链住另一个任务。该过程有效地使每个所存储的机器上下文状态能够作为独立的软件线程,其中基于时间的轮询(或任何其他可行的)调度器被配置成周期性地(或基于事件而非周期性地)保存一个机器上下文状态(即,线程)并加载另一个新的(或部分完整的)线程。
[0051]图5是图示根据本公开的另一个实施例的提高锁步核可用性的方法500的流程图。动作501、502和504与图2中所示的动作201、202和204相同,除了动作502将机器上下文状态(而不是仅CPU状态)保存到状态缓冲器108。
[0052]如果在506处在执行任务期间比较器106确定主CPU核102和校验器CPU核104的输出针对任务的一个或多个被执行的指令中的每一个而匹配,并且如果未发生用于切换与执行任务的主CPU核102关联的机器上下文状态的触发事件,那么所述任务和所述方法在508处结束,否则所述方法在510处继续。
[0053]在510处,如果在发生机器上下文状态触发事件之前,比较器106确定主CPU核102和校验器CPU核104的输出针对被执行的指令而不匹配,那么所述方法在512处继续,否则所述方法在514处继续。动作512与图2中图示的动作210和212类似。在512处,比较器106生成控制信号并且状态控制逻辑112a利用所述控制信号来使所存储的CPU状态(作为所存储的机器上下文状态的分量)被加载到主CPU核102和校验器CPU核104内,并且所述方法在504处继续。
[0054]在514处,在主CPU核102和校验器CPU核104的输出的比较中发生不匹配之前,机器上下文状态触发事件已经必要地发生。因而,在514处,机器内容状态触发事件使状态控制逻辑112a和112b分别停止由主CPU核102和校验器CPU核104对当前任务的指令的执行。状态控制逻辑112a然后将来自第二状态缓冲器(未示出)的与新任务关联的新机器上下文状态写入到状态缓冲器108,然后将来自状态缓冲器108的新机器上下文状态加载到锁步CPU核102和104以及与主CPU核102的操作关联的一个或多个设备和/或系统。第二状态缓冲器可以或可以不与第二主核CPU(未示出)关联。在516处,锁步核102和104开始执行与新机器上下文状态关联的新任务。
[0055]例如,由于在其中嵌入有一个或多个锁步系统100的计算系统可以具有包括主和辅CPU核的多于一个CPU核,因此如上所说明的本公开的实施例提供:当在执行任务的指令的过程中在来自第一锁步CPU核的输出的比较中检测到错误时,将与第一锁步CPU核的第一 CPU核关联的所保存的CPU状态重新加载到第二 CPU核,所述第二 CPU核然后执行任务的指令。在该实施例中,锁步系统100实现任务的传送以及在核之间对CPU核状态的动态重新加载。传送任务的能力提供:从不正确操作CPU核中移除任务,在核之间动态地共享CPU负载,在核上多次运行一个任务(例如,以便检测单个事件搅乱),并从核的集群中的一个或多个核中移除任务,以通过关闭或降低集群中的一个或多个核的性能来节省功率。
[0056]尽管已经参考某些实施例描述了本公开,但是本领域技术人员将理解的是,在不背离本公开的范围的情况下可以做出各种改变以及可以用等同物进行替代。例如,尽管在一个实施例中,主CPU核状态控制逻辑被配置成基于在由主CPU核执行一个或多个指令期间触发事件的发生将主CPU核的状态写入到状态缓冲器,但是本公开的范围包括以下实施例,其中校验器CPU核状态控制逻辑被配置成基于在由校验器CPU核执行一个或多个指令期间触发事件的发生将校验器CPU核或主CPU核的状态写入到状态缓冲器,以及本公开的范围包括以下实施例,其中主CPU核状态控制逻辑和校验器CPU核状态控制逻辑二者都被配置成基于在由校验器CPU核或主CPU核执行一个或多个指令期间触发事件的发生将主CPU核的状态(或其相应的核的状态)写入到状态缓冲器。
[0057]此外,在不背离其范围的情况下,可以做出许多修改以对本公开的教导适配特定的情形或材料。因此,意图在于,本公开不被限制到所公开的特定实施例,而是本公开将包括落入所附权利要求的范围内的所有实施例。
【权利要求】
1.一种锁步系统,包括: 主CPU核,其被配置成接收任务,所述任务包括一个或多个指令,其中所述主CPU核进一步被配置成执行所述一个或多个指令以生成针对每个被执行的指令的第一输出; 校验器CPU核,其被配置成接收所述任务并执行所述一个或多个指令以生成针对每个被执行的指令的第二输出; 状态缓冲器,其被耦合到主CPU核和校验器CPU核,所述状态缓冲器被配置成存储主(PU核的状态;以及 比较器,其耦合到主CPU核和校验器CPU核,所述比较器被配置成接收针对每个被执行的指令的第一输出和第二输出,将第一输出与第二输出相比较,并且如果第一输出不匹配于第二输出,则生成一个或多个控制信号, 其中,主CPU核和校验器CPU核进一步被配置成接收所述一个或多个控制信号并响应于此从状态缓冲器加载所存储的CPU核状态。
2.根据权利要求1所述的锁步系统,进一步包括:总线/高速缓存/存储器模块,其被耦合到主CPU核和校验器CPU核,其中主CPU核和校验器CPU核进一步被配置成从总线/高速缓存/存储器模块接收任务。
3.根据权利要求2所述的锁步系统,进一步包括:串联耦合在总线/高速缓存/存储器模块和校验器CPU核之间的一个或多个第一延迟器;以及串联耦合在主CPU核和比较器之间的一个或多个第二 延迟器。
4.根据权利要求1所述的锁步系统,其中主CPU核包括:主CPU核状态控制逻辑,其被配置成在由主CPU核执行所述一个或多个指令之前将主CPU核的状态写入到状态缓冲器。
5.根据权利要求1所述的锁步系统,其中主CPU核包括:主CPU核状态控制逻辑,其被配置成基于在由主CPU核执行所述一个或多个指令期间触发事件的发生,将主CPU核的状态写入到状态缓冲器。
6.根据权利要求1所述的锁步系统,其中主CPU核包括主CPU核状态控制逻辑,所述主CPU核状态控制逻辑被配置成在接收到所述一个或多个控制信号时停止由主CPU核执行所述一个或多个指令,并且校验器CPU核包括校验器CPU核状态控制逻辑,所述校验器CPU核状态控制逻辑被配置成在接收到所述一个或多个控制信号时停止由校验器CPU核执行所述一个或多个指令。
7.根据权利要求6所述的锁步系统,其中主CPU核状态控制逻辑进一步被配置成基于接收到所述一个或多个控制信号来生成读取信号,以用于将所存储的CPU核状态从状态缓冲器加载到主CPU核和校验器CPU核。
8.根据权利要求1所述的锁步系统,其中主CPU核和校验器CPU核一致地执行所述一个或多个指令。
9.一种用于提高锁步核可用性的方法,包括: 将主CPU核的状态写入到状态缓冲器; 由主CPU核执行任务的一个或多个指令以生成针对每个被执行的指令的第一输出; 由校验器CPU核执行所述任务的所述一个或多个指令以生成针对每个被执行的指令的第二输出; 由比较器将第一输出与第二输出相比较,并且如果第一输出不匹配于第二输出,贝1J生成一个或多个控制信号;以及 基于所述一个或多个控制信号的生成,将主CPU核的状态从状态缓冲器加载到主CPU核和校验器CPU核。
10.根据权利要求9所述的用于提高锁步核可用性的方法,进一步包括由主CPU核和校验器CPU核从总线/高速缓存/存储器模块接收所述一个或多个指令。
11.根据权利要求10所述的用于提高锁步核可用性的方法,进一步包括对由校验器CPU核接收到的一个或多个指令进行延迟以及对主CPU核的第一输出进行延迟。
12.根据权利要求9所述的用于提高锁步核可用性的方法,进一步包括在由主CPU核执行所述一个或多个指令之前将主CPU核的状态写入到状态缓冲器。
13.根据权利要求12所述的用于提高锁步核可用性的方法,其中主CPU核的状态包括伪静态状态和动态状态,并且其中将主CPU核的状态写入到状态缓冲器进一步包括: 在由主CPU核执行所述任务的所述一个或多个指令之前将动态状态写入到状态缓冲器;以及 仅在执行所述任务的所述一个或多个指令前的主CPU核的伪静态状态与执行先前任务的一个或多个指令前的主CPU核的伪静态状态不同的情况下将伪静态状态写入到状态缓冲器。
14.根据权利要求9所述的用于提高锁步核可用性的方法,进一步包括基于在由主CPU核执行所述一个或多个指令 期间触发事件的发生将主CPU核的状态写入到状态缓冲器。
15.根据权利要求9所述的用于提高锁步核可用性的方法,进一步包括基于由主CPU核接收到所述一个或多个控制信号来停止由主CPU核执行所述一个或多个指令和由校验器CPU核执行所述一个或多个指令。
16.根据权利要求15所述的用于提高锁步核可用性的方法,进一步包括基于由主CPU核接收到所述一个或多个控制信号来生成读取信号以用于将主CPU核的状态从状态缓冲器加载到主CPU核和校验器CPU核。
17.根据权利要求9所述的用于提高锁步核可用性的方法,其中主CPU核和校验器CPU核一致地执行所述一个或多个指令。
18.根据权利要求9所述的用于提高锁步核可用性的方法,其中由主CPU核执行所述任务的所述一个或多个指令、由校验器CPU核执行所述任务的所述一个或多个指令、比较和加载被重复,直到针对每个被执行的指令的第一输出匹配于针对每个被执行的指令的第二输出、或者预定的时间段已经流逝、或者动作被重复预定次数为止。
19.根据权利要求9所述的用于提高锁步核可用性的方法,其中所述任务是安全任务,并且其中所述方法进一步包括: 在将主CPU核的状态写入到状态缓冲器之后以及在由主CPU核执行所述安全任务的一个或多个指令之前: 禁用校验器CPU核和比较器; 由主CPU核执行非安全任务; 启用校验器CPU核和比较器;以及 将主CPU核的状态从状态缓冲器加载到主CPU核和校验器CPU核。
20.一种用于提高锁步核可用性的方法,包括:将与第一任务关联的第一机器上下文状态写入到状态缓冲器,所述第一机器上下文状态包括主CPU核的第一状态和与主CPU核的操作关联的逻辑单元和/或硬件单元的一个或多个第一状态; 由主CPU核执行所述第一任务的一个或多个指令以生成针对每个被执行的指令的第一输出; 由校验器CPU核执行所述第一任务的所述一个或多个指令以生成针对每个被执行的指令的第二输出; 由比较器将第一输出与第二输出相比较,并且如果第一输出不匹配于第二输出,贝1J生成一个或多个控制信号; 基于所述一个或多个控制信号的生成,将主CPU核的第一状态从状态缓冲器加载到主CPU核和校验器CPU核; 重复由主CPU核执行所述第一任务的所述一个或多个指令、由校验器CPU核执行所述第一任务的所述一个或多个指令、比较和加载,直到针对每个被执行的指令的第一输出匹配于针对每个被执行的指令的第二输出、预定的时间段已经流逝、该重复已经发生预定次数或者机器上下文触发事件发生为止;以及在机器上下文触发事件发生的情况下: 将与第二任务关联的第二机器上下文状态从第二状态缓冲器写入到所述状态缓冲器,其中第二机器上下文状态包括主CPU核的第二状态以及与主CPU核的操作关联的逻辑单元和/或硬件单元的一个 或多个第二状态;以及 将第二机器上下文状态从所述状态缓冲器加载到主CPU核和校验器CPU核。
21.根据权利要求20所述的用于提高锁步核可用性的方法,其中在机器上下文触发事件发生的情况下,所述方法进一步包括: 由主CPU核执行所述第二任务的一个或多个指令以生成针对每个被执行的指令的第一第二任务输出; 由校验器CPU核执行所述第二任务的所述一个或多个指令以生成针对每个被执行的指令的第二第二任务输出; 由比较器将第一第二任务输出与第二第二任务输出相比较,并且如果第一第二任务输出不匹配于第二第二任务输出,则生成一个或多个第二控制信号; 基于第二一个或多个控制信号的生成,将主CPU核的第二状态从所述状态缓冲器加载到主CPU核和校验器CPU核;以及 重复由主CPU核执行所述第二任务的所述一个或多个指令、由校验器CPU核执行所述第二任务的所述一个或多个指令、将第一第二任务输出与第二第二任务输出相比较、以及从所述状态缓冲器加载主CPU核的第二状态,直到针对每个被执行的指令的第一第二任务输出匹配于针对每个被执行的指令的第二第二任务输出、第二预定的时间段已经流逝、该重复已经发生预定次数或者另一个机器上下文触发事件发生为止。
22.根据权利要求20所述的用于提高锁步核可用性的方法,其中机器上下文触发事件包括以下各项之一:操作系统事件;或者具有一个或多个预定值的多个主CPU核的一个或多个状态。
23.根据权利要求20所述的用于提高锁步核可用性的方法,其中与主CPU核的操作关联的逻辑单元和/或硬件单元的一个或多个第一状态包括程序计数器状态、寄存器文件状态、存储保护系统状态和时间保护系统状态中的一个或多个。
24.一种用于提高锁步核可用性的系统,包括: 用于将主CPU核的状态写入到状态缓冲器的装置; 用于由主CPU核执行任务的一个或多个指令以生成针对每个被执行的指令的第一输出的装置; 用于由校验器CPU核执行所述任务的所述一个或多个指令以生成针对每个被执行的指令的第二输出的装置; 用于将第一输出与第二输出相比较的装置,以及在第一输出不匹配于第二输出的情况下用于生成一个或多个控制信号的装置;以及 用于基于所述一个或多个控制信号的生成将主CPU核的状态从状态缓冲器加载到主CPU核和校验器CPU核 的装置。
【文档编号】G06F11/16GK104035843SQ201410080143
【公开日】2014年9月10日 申请日期:2014年3月6日 优先权日:2013年3月6日
【发明者】S.布鲁尔顿, N.S.哈斯蒂 申请人:英飞凌科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1