CN115586998A - 基于主核控制流信息的处理器运行差错检测方法及系统 - Google Patents
基于主核控制流信息的处理器运行差错检测方法及系统 Download PDFInfo
- Publication number
- CN115586998A CN115586998A CN202211289563.8A CN202211289563A CN115586998A CN 115586998 A CN115586998 A CN 115586998A CN 202211289563 A CN202211289563 A CN 202211289563A CN 115586998 A CN115586998 A CN 115586998A
- Authority
- CN
- China
- Prior art keywords
- control flow
- core
- instruction
- load
- address
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提出一种基于主核控制流信息的处理器运行差错检测方法及系统,包括:在主核运行的过程中将程序段的控制流信息以控制流表的形式保存下来,以在检查核运行的过程中,使用该控制流信息来指导检查核的分支预测,来提高检查核的运行效率。对于程序段,主核与检查核应该有相同的控制流,因此有使用主核控制流信息指导检查核分支预测有100%的分支预测准确率,能够消除分支预测失败的开销,从而提高检查核的性能。
Description
技术领域
本发明属于微处理器可靠性设计领域,使用主核的控制流信息指导检查核分支预测,提高检查核性能,降低差错检测延时。
背景技术
汽车半导体和车载信息产业革命以来,每辆汽车上的电子控制单元(ECU)越来越多,对汽车电子可靠性的要求也越来越高。但是汽车芯片面临着高温、高湿等严峻复杂的工作环境,使得车载处理器与一般电子系统相比更加频繁地产生差错,使汽车芯片的可靠性面临严峻的考验。双核锁步通过两个处理器核运行相同的程序,并对两个核的输出进行比较来检测,有成倍的面积、功耗开销,由于其较高的差错检测速度和差错覆盖率能够满足汽车芯片可靠性的要求。相比于上述双核锁步同构的设计,异构并行差错检测通过使用一系列低性能的检查核并行重复运行高性能主核的程序段进行差错检测。为了提高性能,芯片的面积和功耗呈超线性增长,这些低性能核的面积、功耗之和小于高性能核,能够以较低的功耗、面积开销,实现与双核锁步近似的差错覆盖率。
使用多个低功耗的顺序核(检查核)并行运行高性能乱序核(主核)的程序段,来实现主核运行时的差错检测。该方法将主核运行的程序分为多个程序段,将各个程序段分配给不同的检查核重复运行。每个检查核均为小核,其性能低于主核性能,但由于多个检查核能够并行运行,其总体性能可以匹配主核的性能。在顺序处理器中,通常会使用简单的分支预测器,通常包括转移目标缓冲器(BTB)、模式历史表(PHT)、返回地址栈(RAS),分支预测器需要根据之前分支指令的分支结果来对分支目标进行预测。由于每个检查核每次分配的程序段之间都不是连续的,这将降低分支预测的准确性,高错误率的分支预测会降低检查核的性能。
发明内容
由于主核运行完程序段,检查核才开始运行,在检查核运行程序段之前实际已经可以知道程序段的控制流信息,因此可以使用主核的控制流信息来指导检查核的分支预测,加快差错检测,提高检查核运行的性能。
具体来说,本发明针对上述异构并行差错检测中检查核分支预测准确率低,从而降低检查核性能的问题,提出一种基于主核控制流信息的处理器运行差错检测方法,其中包括:
步骤1、获取具有主核以及检查核的处理系统,且该主核与该检查核有相同的指令集架构;
步骤2、提取该主核运行程序段产生的加载存储日志和控制流,该加载存储日志包括加载指令对应的加载地址和加载数据,该控制流表包括控制流指令对应的目标地址和程序计数器值;
步骤3、程序段开始运行时将主核的状态复制给检查核,使该检查核以与该主核相同的状态开始运行,在该检查核运行该程序段的过程中,对于加载指令,直接访问该加载存储日志,获取加载数据作为加载结果,并判断该加载结果的地址是否和该加载存储日志中加载地址相同,若不同则表示产生差错;对于分支预测,该检查核直接访问该控制流表,获取当前控制流指令的目标地址作为分支预测结果,并判断该分支预测结果是否和该控制流表中当前控制流指令对应的目标地址相同,若不同则表示发生差错;当该检查核结束运行该程序段,判断该检查核结束运行该程序段时的状态是否和该主核结束运行该程序段时的状态相同,若不同则表示发生差错。
所述的基于主核控制流信息的处理器运行差错检测方法,其中该步骤3中程序段的生成过程包括:当主核运行待执行程序时,每当提交加载指令,将加载地址与加载数据保存到当前检查核对应的该加载存储日志中,当加载存储日志装满时,则将主核当前状态作为检查点划分程序段;每当提交控制流指令时,则将控制流指令的程序计数器值和目标地址保存到该控制流表中,当该控制流表装满时,则将主核当前状态作为检查点划分程序段。
所述的基于主核控制流信息的处理器运行差错检测方法,其中该步骤3包括:
每当该主核提交控制流指令时,将其程序计数器与目标地址值加入对应的检查核的控制流指令目标队列;该检查核每次取指时,比较控制流指令目标队列的头指针所指项的程序计数器值与取值单元的程序计数器值,相等则将目标地址作为分支预测结果给取指单元,作为取指单元下一次取指的地址,将控制流指令目标队列的指针后移。
本发明还提出了一种基于主核控制流信息的处理器运行差错检测系统,其中包括:
初始模块,用于获取具有主核以及检查核的处理系统,且该主核与该检查核有相同的指令集架构;
控制流提取模块,用于提取该主核运行程序段产生的加载存储日志和控制流,该加载存储日志包括加载指令对应的加载地址和加载数据,该控制流表包括控制流指令对应的目标地址和程序计数器值;
检测模块,用于在程序段开始运行时将主核的状态复制给检查核,使该检查核以与该主核相同的状态开始运行,在该检查核运行该程序段的过程中,对于加载指令,直接访问该加载存储日志,获取加载数据作为加载结果,并判断该加载结果的地址是否和该加载存储日志中加载地址相同,若不同则表示产生差错;对于分支预测,该检查核直接访问该控制流表,获取当前控制流指令的目标地址作为分支预测结果,并判断该分支预测结果是否和该控制流表中当前控制流指令对应的目标地址相同,若不同则表示发生差错;当该检查核结束运行该程序段,判断该检查核结束运行该程序段时的状态是否和该主核结束运行该程序段时的状态相同,若不同则表示发生差错。
所述的基于主核控制流信息的处理器运行差错检测系统,其中该检测模块中程序段的生成过程包括:当主核运行待执行程序时,每当提交加载指令,将加载地址与加载数据保存到当前检查核对应的该加载存储日志中,当加载存储日志装满时,则将主核当前状态作为检查点划分程序段;每当提交控制流指令时,则将控制流指令的程序计数器值和目标地址保存到该控制流表中,当该控制流表装满时,则将主核当前状态作为检查点划分程序段。
所述的基于主核控制流信息的处理器运行差错检测系统,其中该检测模块用于:
每当该主核提交控制流指令时,将其程序计数器与目标地址加入对应的检查核的控制流指令目标队列;该检查核每次取指时,比较控制流指令目标队列的头指针所指项的程序计数器值与取值单元的程序计数器值,相等则将目标地址作为分支预测结果给取指单元,作为取指单元下一次取指的地址,将控制流指令目标队列的指针后移。
本发明还提出了一种存储介质,用于存储执行所述任意一种基于主核控制流信息的处理器运行差错检测方法的程序。
本发明还提出了一种数据处理装置,包括存储介质,当该数据处理装置的处理器调取并执行该计算机可读存储介质中的计算机可执行指令时,该数据处理装置执行共享主核控制流信息的异构并行差错检测。
本发明还提出了一种客户端,用于所述的任意一种基于主核控制流信息的处理器运行差错检测系统。
由以上方案可知,本发明的优点在于:
本发明提出的一种使用主核控制流信息指导检查核分支预测的方法,以加快检查核的运行性能,减少所需要的检查核数量。
本发明按照顺序将主核提交的控制流指令的地址与其目标地址保存在控制流表中,在检查核运行过程中,通过访问控制流表来指导其分支预测,使得检查核有100%的分支预测准确率,消除了分支预测失败花销,从而提高了检查核的性能,可以使用更少的检查核,来匹配主核的吞吐量。并且通过对预测的控制流指令目标与能够对控制流进行检查,减少差错检测所需要的延时。
附图说明
图1为差错检测结构图;
图2为主核控制流信息指导检查核分支预测过程图;
图3是本发明的异构并行差错检测方法流程图;
图4是本发明的数据处理装置示意图。
具体实施方式
在乱序处理器中,每个指令能够乱序执行,但是却按照预定的控制流的顺序进行提交,因此只需按照主核提交指令的顺序,保存每一条分支、跳转指令的程序计数器PC(用于表示该条指令的地址)和其目标,就可以将正确的控制流信息保存下来。对于一个程序段,当主核程序段运行结束,检查核才开始检查该程序段,在检查核开始检查之前已知该程序段的控制流信息。因此本发明可以在主核运行的过程中将程序段的控制流信息保存下来,以在检查核运行的过程中,使用该控制流信息来指导检查核的分支预测,来提高检查核的运行效率。对于某个程序段,主核与检查核应该有相同的控制流,因此有使用主核控制流信息指导检查核分支预测有100%的分支预测准确率,能够消除分支预测失败的开销,从而提高检查核的性能。
为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
提出的异构并行差错检测系统的整体结构如图1所示。主要由一个高性能的乱序主核,多个低性能顺序检查核、加载转发单元、加载存储日志、控制流表组成。重排序缓冲存储的是按顺序存储各条指令相关的控制信息,包括指令的类型,PC(程序计数器),跳转的目的地址,指令是否已经执行完成写回等信息。
主核与检查核有相同的指令集架构。主核运行正常的程序,并将程序划分为多个程序段,交于检查核重复运行,进行差错检测,各个检查核有其单独的L0指令缓存,以及和其他检查核共享的L1指令缓存,L1指令缓存与主核的L2缓存相连接,从主核的L2缓存中获取所需的指令。
加载转发单元用于将主核的加载指令取到的数据进行复制,当加载指令提交时,将其与加载存储队列中的数据进行比较,以防止将加载指令的错误传输到检查核中。具体来说,对于一条加载指令,正常的情况下,加载指令在执行的过程中,会从数据缓存中获取对应的数据,并将其保存在加载队列中。而本发明会将其从数据缓存中的数据同时保存在加载转发单元中。当指令提交时,我们需要将该条指令在加载队列中的数据拿出来,与加载转发单元中的数据进行比较,当两个数据相同时,则将其保存再加载存储日志中。从而保证加载存储日志中加载的数据的正确性。因此加载转发单元首先保存指令从缓存中获取的数据,当指令提交时,获得对应指令的序列号,根据序列号获取保存的对应的指令的数据,并将其与加载队列中的数据进行比较,从而保证加载存储日志中加载的数据的正确性。
对于加载指令,当其发射之后,加载执行单元会向数据缓存发送读请求,数据缓存会将对应地址的数据返回给处理器,保存在加载存储队列中。对于存储指令,当其需要存储的数据准备好之后,会发射该存储指令,当指令发射时,会将所需要存储的数据保存在加载存储队列中。
加载存储日志用于保存主核提交的加载、存储指令对应的地址与数据。各个检查核有其独立的分区,能够并行访问,检查核在运行的过程中,对于加载、存储指令直接访问加载存储日志,对数据、地址进行比较以实现差错检测。
控制流表用于保存主核提交的每条控制流指令的地址与其目标地址,每个检查核有其独立的分区以实现并行访问,在检查核运行的过程中,使用主核的控制流信息来指导检查核的分支预测。控制流指令包括:跳转指令、分支指令、调用指令和返回指令。
主核运行正常的程序,并将程序划分为多个程序段分别交给各个检查核重复运行以实现差错检测,由于检查核性能较低,存在多个检查核并行运行的过程,因此多个检查核的吞吐量能够匹配主核,其运行过程如图2所示。每一个程序段都为其分配一个检查核,在程序段的开始,将当前的状态复制给检查核,使得检查核能够以相同的状态开始运行。在程序段的结束,也将当前状态复制给检查核,用于检查核对该程序段运行结束后对状态进行检查,令当前检查核开始运行,并为新的程序段分配一个新的检查核。
当主核运行时,每当提交加载、存储指令,需要将加载、存储的地址与数据保存到当前检查核对应的加载存储日志分区中,假如当前的加载存储日志分区装满时,则将当前状态作为检查点划分程序段。每当提交控制流指令时,则将该指令的程序计数器值和其目标地址保存到控制流表中,假如当前的控制流表分区装满,则将当前状态作为检查点划分程序段。其中分区的大小是人为设定的,由于每个检查核有单独的分区,分区设置过大会导致过大的存储面积开销,所以需要根据能够接受的存储面积开销决定。
对于每个程序段,检查核的运行分为3个阶段1)在程序段的开始,将主核程序计数器、通用寄存器、状态寄存器等状态,复制给检查核,使得检查核能够以与主核相同的状态开始运行;2)在检查核运行的过程中,对于加载指令,直接访问加载存储日志,获取所需要的数据,并对地址进行比较,不同则表示产生差错。对于存储指令,对加载存储日志中的数据与地址进行比较,不同则表示产生差错。对于分支预测,检查核直接访问控制流表,获取各条控制流指令的目标地址作为分支预测的结果,并在指令运行的过程中,对分支预测的结果进行验证,当发现分支预测失败时,则表示发生差错。3)当程序段运行结束,则将检查核的状态与复制的程序段尾的状态进行比较,不同则表示产生差错。
其中,程序计数器表示处理器当前执行状态下一条指令所对应的地址,使得处理器能一条接一条地执行指令。数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。状态寄存器用于存放指令执行结果的各种状态信息或者控制信息等。处理器的检查点状态即由上述寄存器内容组成。
在主核在运行时进行分支预测,会根据程序计数器的值对该条指令是否是控制流指令,若是,则会对该指令的目标地址进行预测,下一次取指令会从预测的地址进行取指。取到的指令会放入到重排序缓冲中,假如分支预测失败,则会将重排序缓冲中对应的指令删去。所以主核提交指令的顺序永远都是正确的顺序。与之相同,检查核在取指的过程中也会有相应的分支预测的情况。
对于检查核中的加载指令,需要使得它相比较于主核中的加载指令有相同的加载的数据,使得检查核与主核能够运行相同的程序段。故直接从加载存储日志中获取数据相比较于令检查核从缓存中获取数据,这种方式对主核的性能的影响较小。与此同时这也能够加快检查核运行程序段的速度。
接下来结合实例介绍使用主核控制流信息指导检查核进行差错检测的过程。
使用主核控制流信息指导检查核分支预测的过程如图2所示。控制流表每一项由控制流指令的程序计数器地址(程序计数器值)和其目标地址组成。每当主核提交控制流指令时,将其程序计数器与目标地址加入对应的检查核的控制流指令目标队列。对于检查核,删除其原来的分支预测单元,通过访问控制流表来代替分支预测,检查核每次取指时,比较队头指针所指项的程序计数器值与取值单元的程序计数器值,相等则将目标地址的值作为分支预测的结果给取指单元,作为取指单元下一次取指的地址,将控制流指令目标队列的指针后移,并不断重复以上操作。对于每条控制流指令,每当其在检查核执行完,比较计算的目标地址与预测的目标地址,不同则说明产生差错,以此实现针对控制流的差错检测。从而减少差错检测的延时。
当检测发现差错时,可使用检查点技术,将主核的状态恢复到前一个检查点状态。也可以对主核进行重启,使其重新运行程序。也可以使用中断处理程序,使用中断处理程序来对差错进行处理。
具体来说,如图3所示,本发明的共享主核控制流信息的异构并行差错检测方法具体包括:
步骤S1,将待执行程序划分为多个程序段,获取每个程序段需要执行的指令,以及控制这些指令运行顺序的控制流指令;
步骤S2,主核依照控制流顺序执行所有该程序指令,获得主核执行信息并生成控制流信息;
步骤S3,在程序段的开始,将主核程序计数器、通用寄存器、状态寄存器等状态,复制给检查核,使得检查核能够以与主核相同的状态开始运行;
步骤S4,检查核分别执行各程序段的程序指令,获取各程序段的检查核执行信息,并与该控制流信息对照,以对主核在各程序段的运行状态进行差错检测;
以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。
本发明还提出了一种基于主核控制流信息的处理器运行差错检测系统,其中包括:
初始模块,用于获取具有主核以及检查核的处理系统,且该主核与该检查核有相同的指令集架构;
控制流提取模块,用于提取该主核运行程序段产生的加载存储日志和控制流,该加载存储日志包括加载指令对应的加载地址和加载数据,该控制流表包括控制流指令对应的目标地址和程序计数器值;
检测模块,用于在程序段开始运行时将主核的状态复制给检查核,使该检查核以与该主核相同的状态开始运行,在该检查核运行该程序段的过程中,对于加载指令,直接访问该加载存储日志,获取加载数据作为加载结果,并判断该加载结果的地址是否和该加载存储日志中加载地址相同,若不同则表示产生差错;对于分支预测,该检查核直接访问该控制流表,获取当前控制流指令的目标地址作为分支预测结果,并判断该分支预测结果是否和该控制流表中当前控制流指令对应的目标地址相同,若不同则表示发生差错;当该检查核结束运行该程序段,判断该检查核结束运行该程序段时的状态是否和该主核结束运行该程序段时的状态相同,若不同则表示发生差错。
所述的基于主核控制流信息的处理器运行差错检测系统,其中该检测模块中程序段的生成过程包括:当主核运行待执行程序时,每当提交加载指令,将加载地址与加载数据保存到当前检查核对应的该加载存储日志中,当加载存储日志装满时,则将主核当前状态作为检查点划分程序段;每当提交控制流指令时,则将控制流指令的程序计数器值和目标地址保存到该控制流表中,当该控制流表装满时,则将主核当前状态作为检查点划分程序段。
所述的基于主核控制流信息的处理器运行差错检测系统,其中该检测模块用于:
每当该主核提交控制流指令时,将其程序计数器与目标地址值加入对应的检查核的控制流指令目标队列;该检查核每次取指时,比较控制流指令目标队列的头指针所指项的程序计数器值与取值单元的程序计数器值,相等则将目标地址作为分支预测结果给取指单元,作为取指单元下一次取指的地址,将控制流指令目标队列的指针后移。
本发明还提出了一种存储介质,用于存储执行所述任意一种基于主核控制流信息的处理器运行差错检测方法的程序。
如图4所示,本发明还提出了一种数据处理装置,包括存储介质,当该数据处理装置的处理器调取并执行该计算机可读存储介质中的计算机可执行指令时,该数据处理装置执行共享主核控制流信息的异构并行差错检测。
本发明的计算机可读存储介质存储有计算机可执行指令,计算机可执行指令被数据处理装置的处理器执行时,实现上述共享主核控制流信息的异构并行差错检测方法。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器、FPGA、ASIC等)完成,所述程序可以存储于可读存储介质中,如只读存储器、磁盘或光盘等。上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本发明实施例不限制于任何特定形式的硬件和软件的结合。
本发明还提出了一种客户端,用于所述的任意一种基于主核控制流信息的处理器运行差错检测系统。
综上所述,本发明提出了一种使用主核程序流信息指导检查核分支预测的方法,能够提高检查核差错检测的性能,减少所需要的检查核数量,减少差错检测的延时。
Claims (9)
1.一种基于主核控制流信息的处理器运行差错检测方法,其特征在于,包括:
步骤1、获取具有主核以及检查核的处理系统,且该主核与该检查核有相同的指令集架构;
步骤2、提取该主核运行程序段产生的加载存储日志和控制流,该加载存储日志包括加载指令对应的加载地址和加载数据,该控制流表包括控制流指令对应的目标地址和程序计数器值;
步骤3、程序段开始运行时将主核的状态复制给检查核,使该检查核以与该主核相同的状态开始运行,在该检查核运行该程序段的过程中,对于加载指令,直接访问该加载存储日志,获取加载数据作为加载结果,并判断该加载结果的地址是否和该加载存储日志中加载地址相同,若不同则表示产生差错;对于分支预测,该检查核直接访问该控制流表,获取当前控制流指令的目标地址作为分支预测结果,并判断该分支预测结果是否和该控制流表中当前控制流指令对应的目标地址相同,若不同则表示发生差错;当该检查核结束运行该程序段,判断该检查核结束运行该程序段时的状态是否和该主核结束运行该程序段时的状态相同,若不同则表示发生差错。
2.如权利要求1所述的基于主核控制流信息的处理器运行差错检测方法,其特征在于,该步骤3中程序段的生成过程包括:当主核运行待执行程序时,每当提交加载指令,将加载地址与加载数据保存到当前检查核对应的该加载存储日志中,当加载存储日志装满时,则将主核当前状态作为检查点划分程序段;每当提交控制流指令时,则将控制流指令的程序计数器值和目标地址保存到该控制流表中,当该控制流表装满时,则将主核当前状态作为检查点划分程序段。
3.如权利要求1所述的基于主核控制流信息的处理器运行差错检测方法,其特征在于,该步骤3包括:
每当该主核提交控制流指令时,将其程序计数器与目标地址加入对应的检查核的控制流指令目标队列;该检查核每次取指时,比较控制流指令目标队列的头指针所指项的程序计数器值与取值单元的程序计数器值,相等则将目标地址作为分支预测结果给取指单元,作为取指单元下一次取指的地址,将控制流指令目标队列的指针后移。
4.一种基于主核控制流信息的处理器运行差错检测系统,其特征在于,包括:
初始模块,用于获取具有主核以及检查核的处理系统,且该主核与该检查核有相同的指令集架构;
控制流提取模块,用于提取该主核运行程序段产生的加载存储日志和控制流,该加载存储日志包括加载指令对应的加载地址和加载数据,该控制流表包括控制流指令对应的目标地址和程序计数器值;
检测模块,用于在程序段开始运行时将主核的状态复制给检查核,使该检查核以与该主核相同的状态开始运行,在该检查核运行该程序段的过程中,对于加载指令,直接访问该加载存储日志,获取加载数据作为加载结果,并判断该加载结果的地址是否和该加载存储日志中加载地址相同,若不同则表示产生差错;对于分支预测,该检查核直接访问该控制流表,获取当前控制流指令的目标地址作为分支预测结果,并判断该分支预测结果是否和该控制流表中当前控制流指令对应的目标地址相同,若不同则表示发生差错;当该检查核结束运行该程序段,判断该检查核结束运行该程序段时的状态是否和该主核结束运行该程序段时的状态相同,若不同则表示发生差错。
5.如权利要求4所述的基于主核控制流信息的处理器运行差错检测系统,其特征在于,该检测模块中程序段的生成过程包括:当主核运行待执行程序时,每当提交加载指令,将加载地址与加载数据保存到当前检查核对应的该加载存储日志中,当加载存储日志装满时,则将主核当前状态作为检查点划分程序段;每当提交控制流指令时,则将控制流指令的程序计数器值和目标地址保存到该控制流表中,当该控制流表装满时,则将主核当前状态作为检查点划分程序段。
6.如权利要求4所述的基于主核控制流信息的处理器运行差错检测系统,其特征在于,该检测模块用于:
每当该主核提交控制流指令时,将其程序计数器与目标地址加入对应的检查核的控制流指令目标队列;该检查核每次取指时,比较控制流指令目标队列的头指针所指项的程序计数器值与取值单元的程序计数器值,相等则将目标地址的值作为分支预测结果给取指单元,作为取指单元下一次取指的地址,将控制流指令目标队列的指针后移。
7.一种存储介质,用于存储执行如权利要求1到3所述任意一种基于主核控制流信息的处理器运行差错检测方法的程序。
8.一种数据处理装置,包括如权利要求7所述的存储介质,当该数据处理装置的处理器调取并执行该计算机可读存储介质中的计算机可执行指令时,该数据处理装置执行共享主核控制流信息的异构并行差错检测。
9.一种客户端,用于权利要求4到6所述的任意一种基于主核控制流信息的处理器运行差错检测系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211289563.8A CN115586998A (zh) | 2022-10-20 | 2022-10-20 | 基于主核控制流信息的处理器运行差错检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211289563.8A CN115586998A (zh) | 2022-10-20 | 2022-10-20 | 基于主核控制流信息的处理器运行差错检测方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115586998A true CN115586998A (zh) | 2023-01-10 |
Family
ID=84780350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211289563.8A Pending CN115586998A (zh) | 2022-10-20 | 2022-10-20 | 基于主核控制流信息的处理器运行差错检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115586998A (zh) |
-
2022
- 2022-10-20 CN CN202211289563.8A patent/CN115586998A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5421022A (en) | Apparatus and method for speculatively executing instructions in a computer system | |
US9298497B2 (en) | Computer processor providing exception handling with reduced state storage | |
US4982402A (en) | Method and apparatus for detecting and correcting errors in a pipelined computer system | |
KR101546033B1 (ko) | Smt 기계에서 비교 및 전달 명령어를 사용한 안정적 실행 | |
CN109891393B (zh) | 使用检查器处理器的主处理器错误检测 | |
JP2597811B2 (ja) | データ処理システム | |
US5420990A (en) | Mechanism for enforcing the correct order of instruction execution | |
US5428807A (en) | Method and apparatus for propagating exception conditions of a computer system | |
US5297281A (en) | Multiple sequence processor system | |
JPH07302200A (ja) | 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。 | |
US20020010851A1 (en) | Emulated branch effected by trampoline mechanism | |
CN1993679A (zh) | 执行计算机程序的方法、操作系统和计算设备 | |
US10303566B2 (en) | Apparatus and method for checking output data during redundant execution of instructions | |
CN1902581A (zh) | 使用推测性存储器支持来管理用于冗余多线程系统中故障检测的外部存储器更新 | |
US6704861B1 (en) | Mechanism for executing computer instructions in parallel | |
US7584464B2 (en) | Software processing method and software processing system | |
CN115586998A (zh) | 基于主核控制流信息的处理器运行差错检测方法及系统 | |
CN107423029B (zh) | 计算单元 | |
US20100011183A1 (en) | Method and device for establishing an initial state for a computer system having at least two execution units by marking registers | |
CN116225810A (zh) | 用于双核锁步的周期故障检测修复架构和检测修复方法 | |
US20210124635A1 (en) | Multicore system | |
US20040064756A1 (en) | Method and apparatus for improving reliability in computer processors by re-executing instructions | |
CN115599582A (zh) | 控制运行时钟周期的处理器运行差错检测方法及系统 | |
US20040019773A1 (en) | Illegal instruction processing method and processor | |
US11847457B1 (en) | System for error detection and correction in a multi-thread processor |
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 |