一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种错误检测方法及相关装置与流程

2022-05-06 06:28:54 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种错误检测方法及相关装置。


背景技术:

2.在计算机领域,数据处理装置可能会发生随机性的硬件故障,例如由集成电路中的短路或断路引起的永久性故障,或由暴露于自然辐射或粒子撞击引起的诸如位翻转之类的临时故障。
3.在某些安全性要求较高的应用领域中,例如安全性至关重要的汽车领域,为了确保功能安全,可以为处理器提供错误检测机制,以检测硬件错误并确保在发生硬件错误的情况下执行安全操作。
4.目前,相关技术中通过由处理器周期性的执行软件测试库(software test library,stl)中的测试模式(test pattern)来检测逻辑电路的错误。然而,由于stl中包括有较多的测试模式,处理器周期性地执行stl中的测试模式会导致处理器的负载较大,即处理器需要花费较多的时间来检测错误,从而影响了处理器的工作效率。


技术实现要素:

5.本技术提供了一种错误检测方法及相关装置,在执行错误检测的过程中,通过确定目标任务的调度表,来执行该调度表中所包括的测试模式。由于该调度表中仅包括用于检测目标逻辑电路的测试模式,该目标逻辑电路用于执行目标任务,因此基于该调度表来检测错误,能够避免执行软件测试库中的所有测试模式,从而降低了处理器的负载,有效地提高了处理器的工作效率。
6.本技术第一方面提供一种错误检测方法,应用于具有安全性要求领域中的终端,例如车载终端或航空航天中的控制终端。该方法包括:终端获取目标任务的调度表,该调度表可以是预置于终端中的或者由终端预先生成的,该目标任务例如可以为进程或者线程。该调度表包括至少一个测试模式,基于该至少一个测试模式,可以检测在执行目标任务时所依赖的目标逻辑电路的错误。最后,终端根据调度表,执行至少一个测试模式,以实现目标逻辑电路的错误检测。
7.本方案中,终端在执行错误检测的过程中,通过确定目标任务的调度表,来执行该调度表中所包括的测试模式。由于该调度表中仅包括用于检测目标逻辑电路的测试模式,该目标逻辑电路用于执行目标任务,因此基于该调度表来检测错误,能够避免执行软件测试库中的所有测试模式,从而降低了处理器的负载,有效地提高了处理器的工作效率。
8.在一些可能的实现方式中,该目标任务为运行中的任务。由于在终端运行目标任务的过程中,如果目标任务运行过程中需要使用到的逻辑电路发生了错误,那么终端运行该目标任务时可能会由于逻辑电路的错误而产生安全风险。因此,基于该目标任务的调度表来执行测试模式,可以实现需要使用到的逻辑电路的错误检测,避免安全风险的产生。对于其他的逻辑电路,由于当前终端并没有执行相应的任务,即不需要使用到其他的逻辑电
路,即便这部分逻辑电路发生了错误,也不会产生安全风险。这样,基于当前正在运行的任务的调度表来检测错误,能够在每次执行错误检测时只是检测单个任务的调度表中的测试模式,避免执行软件测试库中的所有测试模式,从而降低了处理器的负载,有效地提高了处理器的工作效率。在一些可能的实现方式中,终端可以在执行错误检测之前,可以预先生成待运行的任务对应的调度表。具体地,该方法还可以包括:终端获取目标任务的机器指令码集合,由于目标任务可以为进程或者线程,因此例如可以基于目标任务的可执行文件来获取相应的机器指令码集合,该机器指令码集合包括多个机器指令码(也称为机器码)。终端根据预置的第二映射关系确定机器指令码集合对应的至少一个指令类型,该第二映射关系包括机器指令码与指令类型之间的映射关系,在该映射关系中,一个机器指令码唯一对应一个指令类型。终端根据预置的第一映射关系确定至少一个指令类型对应的至少一个测试模式,该至少一个测试模式用于检测至少一个指令类型对应的逻辑电路的错误该第一映射关系包括指令类型与测试模式之间的映射关系,且在该映射关系中,一个指令类型可以对应一个或多个测试模式。终端再根据至少一个测试模式生成调度表。
9.也就是说,终端在获取到目标任务的机器指令码集合之后,基于预置的第二映射关系确定机器指令码集合对应的指令类型,以及基于第一映射关系确定指令类型对应的测试模式,从而得到目标任务对应的测试模式。
10.本方案中,终端基于预置的映射关系可以生成待运行任务对应的调度表,可以确保终端在获取到新的任务的情况下,能够生成该任务对应的调度表,保证了方案的可实现性。
11.在一些可能的实现方式中,该方法还可以包括:终端根据多个机器指令码分别对应的指令类型,确定至少一个指令类型中指令类型的执行次数。简单来说,终端可以统计每个指令类型所对应的机器指令码的个数,并将指令类型对应的机器指令码的个数确定为该指令类型的执行次数。根据该执行次数,终端可以确定至少一个测试模式中测试模式的执行顺序,以生成还包括有测试模式的执行顺序的调度表。即终端可以基于执行次数对测试模式进行降序排列,测试模式所对应的指令类型的执行次数越大,则该测试模式的执行顺序越靠前;反之,测试模式所对应的指令类型的执行次数越小,则该测试模式的执行顺序越靠后。
12.由于每次使用逻辑电路都可能导致逻辑电路发生错误,那么逻辑电路发生错误的几率相同的情况下,逻辑电路的使用次数越多,则逻辑电路发生错误的几率越高。即,同一指令类型的执行次数越多,逻辑电路的使用次数也越多,则逻辑电路发生错误的几率越高。因此,本实施例中基于目标任务的机器指令码所对应的指令类型的执行次数,来确定调度表中的测试模式的执行顺序,可以使得终端能够基于逻辑电路发生错误的几率来确定检测逻辑电路的顺序,即先检测发生错误几率更高的逻辑电路,从而缩短错误检测时间,提高错误检测的效率。
13.本方案中,终端通过在生成任务对应的调度表的过程中,基于任务对应的指令类型的执行次数来确定测试模式的执行顺序,能够缩短错误检测时间,提高错误检测的效率。
14.在一些可能的实现方式中,该调度表可以是预置于终端中或终端预先生成的,该调度表中的至少一个测试模式是基于第一映射关系和至少一个指令类型确定的,第一映射关系包括指令类型与测试模式之间的映射关系,至少一个指令类型是基于第二映射关系和
目标任务的机器指令码集合确定的,第二映射关系包括机器指令码与指令类型之间的映射关系,机器指令码集合包括多个机器指令码。
15.在一些可能的实现方式中,调度表还指示了至少一个测试模式的执行顺序,执行顺序是基于目标任务的机器指令码集合对应的至少一个指令类型的执行次数确定的。
16.在一些可能的实现方式中,在终端中存在有较多待运行的任务时,终端可以生成大量的调度表。因此,该方法还可以包括:终端生成第三映射关系,第三映射关系包括目标任务与调度表之间的映射关系。这样,在终端执行错误检测时,可以根据目标任务与第三映射关系确定调度表,保证了终端能够在执行错误检测的过程中快速确定目标任务所对应的调度表,提高执行错误检测的效率。
17.在一些可能的实现方式中,该调度表存储于共享内存中,共享内存被配置为存储一个或多个任务对应的调度表,且该共享内存可被多个处理器访问。在终端通过预留共享内存的方式为调度表提供配置区域的情况下,终端中的多个处理器均可以访问该共享内存中的调度表。这样,终端中的多个处理器均可以基于各自所执行的任务,单独地执行相应的错误检测。通过预留共享内存来为调度表提供配置区域,避免了为每个处理器单独提供调度表的配置区域,节省了存储资源的开销。
18.在一些可能的实现方式中,终端根据调度表,执行至少一个测试模式具体可以包括:终端根据该执行顺序,将至少一个测试模式写入排序寄存器;根据排序寄存器中的执行顺序执行测试模式,并将测试模式的执行结果写入状态寄存器。通过以硬件的方式来实现调度表中的测试模式的有序调度,可以提高测试模式调度的效率。
19.本技术第二方面提供一种终端,该终端包括:处理单元和获取单元;该获取单元用于获取目标任务的调度表,调度表用于指示至少一个测试模式,至少一个测试模式用于检测目标逻辑电路的错误,目标逻辑电路为用于执行目标任务的逻辑电路;该处理单元用于根据调度表,执行至少一个测试模式,以检测目标逻辑电路的错误。
20.在一些可能的实现方式中,目标任务为运行中的任务。
21.在一些可能的实现方式中,调度表中的至少一个测试模式是基于第一映射关系和至少一个指令类型确定的,第一映射关系包括指令类型与测试模式之间的映射关系,至少一个指令类型是基于第二映射关系和目标任务的机器指令码集合确定的,第二映射关系包括机器指令码与指令类型之间的映射关系,机器指令码集合包括多个机器指令码。
22.在一些可能的实现方式中,调度表还指示了至少一个测试模式的执行顺序,执行顺序是基于目标任务的机器指令码集合对应的至少一个指令类型的执行次数确定的。
23.在一些可能的实现方式中,该终端还包括:获取单元;该获取单元,用于获取目标任务的机器指令码集合,机器指令码集合包括多个机器指令码;处理单元还用于:根据第二映射关系确定机器指令码集合对应的至少一个指令类型,第二映射关系包括机器指令码与指令类型之间的映射关系;根据第一映射关系确定至少一个指令类型对应的至少一个测试模式,第一映射关系包括指令类型与测试模式之间的映射关系,至少一个测试模式用于检测至少一个指令类型对应的逻辑电路的错误;根据至少一个测试模式生成调度表。
24.在一些可能的实现方式中,处理单元还用于:根据多个机器指令码分别对应的指令类型,确定至少一个指令类型中指令类型的执行次数;根据执行次数,确定至少一个测试模式中测试模式的执行顺序;根据至少一个测试模式以及执行顺序,生成调度表。
25.在一些可能的实现方式中,处理单元还用于:生成第三映射关系,第三映射关系包括目标任务与调度表之间的映射关系;根据目标任务与第三映射关系,确定调度表。
26.在一些可能的实现方式中,调度表存储于共享内存中,共享内存被配置为存储一个或多个任务的调度表,且共享内存可被多个处理器访问。
27.在一些可能的实现方式中,处理单元还用于:根据执行顺序,将至少一个测试模式写入排序寄存器;根据排序寄存器中的执行顺序执行测试模式,并将测试模式的执行结果写入状态寄存器。
28.在一些可能的实现方式中,目标任务包括进程或线程。
29.本技术第三方面提供一种终端,该终端包括:处理器;该处理器读取存储器中的计算机可读指令以使终端实现如第一方面任意一种实现方式的方法。
30.本技术第四方面提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如第一方面任意一种实现方式的方法。
31.本技术第五方面提供一种计算机程序产品,当其在计算机上运行时,使得计算机执行如第一方面任意一种实现方式的方法。
32.本技术第六方面提供一种芯片,包括一个或多个处理器。处理器中的部分或全部用于读取并执行存储器中存储的计算机程序,以执行上述任一方面任意可能的实现方式中的方法。可选地,该芯片该包括存储器,该存储器与该处理器通过电路或电线与存储器连接。进一步可选地,该芯片还包括通信接口,处理器与该通信接口连接。通信接口用于接收需要处理的数据和/或信息,处理器从该通信接口获取该数据和/或信息,并对该数据和/或信息进行处理,并通过该通信接口输出处理结果。该通信接口可以是输入输出接口。本技术提供的方法可以由一个芯片实现,也可以由多个芯片协同实现。
附图说明
33.图1a为本技术实施例提供的一种feti和fhti的示意图;
34.图1b为本技术实施例提供的一种终端101的结构示意图;
35.图2为本技术实施例提供的一种错误检测方法200的流程示意图;
36.图3a为本技术实施例提供的一种调度表生成方法300的流程示意图;
37.图3b为本技术实施例提供的另一种调度表生成的流程示意图;
38.图3c为本技术实施例提供的另一种调度表生成的流程示意图;
39.图4为本技术实施例提供的一种排序寄存器和状态寄存器的结构示意图;
40.图5为本技术实施例提供的执行错误检测的对比示意图;
41.图6为本技术实施例提供的不同方案中fdti的对比示意图;
42.图7(a)为本技术实施例提供的存在错误时不同方案中fdti对比示意图;
43.图7(b)为本技术实施例提供的不同方案中错误检测的总耗时对比示意图;
44.图8为本技术实施例提供的一种终端800的结构示意图。
具体实施方式
45.下面结合附图,对本技术的实施例进行描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场
景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
46.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本技术中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。
47.在计算机领域,数据处理装置可能会发生随机性的硬件故障,例如由集成电路中的短路或断路引起的永久性故障,或由暴露于自然辐射或粒子撞击引起的诸如位翻转之类的临时故障。
48.随着数据处理装置在大量的领域中广泛应用,为避免由于数据处理装置所发生的硬件故障而带来的损失,人们提出了“功能安全”的概念。功能安全是指不存在由于电子系统故障引起的不可接受的风险,其最终目标是防止由于电子系统故障而造成人员伤亡或带来巨大的财产损失。
49.在安全性要求较高的领域中,例如航空航天、交通运输以及医疗等领域,为满足功能安全的要求,均具有相应的安全机制。这些安全机制都必须保证系统在检测到错误后达到安全状态,以防止造成危害。例如,在汽车领域中,典型的安全风险通常是由防抱死系统或动力转向系统的电子控制单元发生错误而引起的。在防抱死系统或动力转向系统的电子控制单元发生错误的情况下,可能会导致汽车发生致命的碰撞。为保证系统能够达到安全状态以防止安全风险事件的发生,需要及时检测到已发生的错误并处理这些错误。
50.简单来说,当系统发生错误时,安全机制必须检测到系统所发生的错误并及时处理该错误,确保系统能够在产生危险之前达到安全状态。通常,从错误发生到检测到错误的时间间隔称为错误检测时间(fault detection time interval,fdti);从检测到错误到系统达到安全状态的间隔则称为错误处理时间(fault handle time interval,fhti)。示例性地,可以参阅图1a,图1a为本技术实施例提供的一种fdti和fhti的示意图。为避免产生危险,在系统发生错误之后,系统必须在一定的期限内达到安全状态,即fdti和fhti之和必须小于或等于某一时间阈值。因此,为了保证能够有足够长的fhti来处理错误,以确保能够顺利地处理错误,尽可能地缩短fdti则显得至关重要。
51.目前,相关技术中实现错误检测的一种方法为双核锁步(dual-core lockstep,dcls)。dcls的实现方法是:两个处理器运行同样的程序,并将两个处理器的输出结果输入至一个比较逻辑中,以比较两个处理器的输出结果是否相同。如果两个处理器的输出结果相同,则可以确定没有发生错误;如果两个处理器的输出结果不相同,则可以确定处理器发生了错误。这种错误检测的方式虽然能够有效地检测到错误,但是需要用到两个处理器来运行相同的程序,具有成本高和灵活性差的缺点。
52.因此,相关技术中提供了另一种基于软件的错误检测方法。该错误检测方法为通过由处理器周期性执行stl中的测试模式来检测逻辑电路的错误,相比于dcls,该错误检测
方法的成本较低且灵活性较高。然而,由于系统中往往具有较多的逻辑电路,为实现所有逻辑电路的错误检测,stl中通常包括有较多的测试模式。因此,处理器周期性地执行stl中的测试模式会导致处理器的负载较大,即处理器需要花费较多的时间来检测错误,从而影响了处理器的工作效率。
53.有鉴于此,本技术实施例提供了一种错误检测方法,该错误检测方法可以应用于终端中。终端在执行错误检测的过程中,通过确定当前运行的任务所对应的调度表,来执行该调度表中所包括的测试模式。由于该调度表中仅包括与该任务的机器指令码所对应的测试模式,因此终端基于该调度表来检测错误,能够避免执行软件测试库中的所有测试模式,从而降低了处理器的负载,有效地提高了处理器的工作效率。
54.本技术实施例所涉及的终端可以为具有安全性要求的领域中用于数据处理的设备。目前,一些终端的举例为:交通运输中的车载终端、航空航天中的控制终端、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等。
55.可以参阅图1b,图1b为本技术实施例提供的一种终端101的结构示意图。
56.如图1b所示,终端101包括处理器103,处理器103和系统总线105耦合。处理器103可以是一个或者多个处理器,其中每个处理器都可以包括一个或多个处理器核。显示适配器(video adapter)107,显示适配器可以驱动显示器109,显示器109和系统总线105耦合。系统总线105通过总线桥111和输入输出(i/o)总线耦合。i/o接口115和i/o总线耦合。i/o接口115和多种i/o设备进行通信,比如输入设备117(如:触摸屏等),多媒体盘(media tray)121,(例如,只读光盘(compact disc read-only memory,cd-rom),多媒体接口等)。收发器123(可以发送和/或接收无线电通信信号),摄像头155(可以捕捉静态和动态数字视频图像)和外部usb端口125。其中,可选地,和i/o接口115相连接的接口可以是usb接口。
57.其中,处理器103可以是任何传统处理器,包括精简指令集计算(reduced instruction set computing,risc)处理器、复杂指令集计算(complex instruction set computing,cisc)处理器或上述的组合。可选地,处理器可以是诸如asic的专用装置。
58.终端101可以通过网络接口129和软件部署服务器149通信。示例性的,网络接口129是硬件网络接口,比如,网卡。网络127可以是外部网络,比如因特网,也可以是内部网络,比如以太网或者虚拟私人网络(virtual private network,vpn)。可选地,网络127还可以是无线网络,比如wifi网络,蜂窝网络等。
59.硬盘驱动器接口131和系统总线105耦合。硬件驱动接口和硬盘驱动器133相连接。系统内存135和系统总线105耦合。运行在系统内存135的数据可以包括终端101的操作系统(os)137、应用程序143和调度表。
60.操作系统包括shell 139和内核(kernel)141。shell 139是介于使用者和操作系统的内核间的一个接口。shell是操作系统最外面的一层。shell管理使用者与操作系统之间的交互:等待使用者的输入,向操作系统解释使用者的输入,并且处理各种各样的操作系统的输出结果。
61.内核141由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。
内核141直接与硬件交互,操作系统内核通常运行进程,并提供进程间的通信,提供cpu时间片管理、中断、内存管理和io管理等等。
62.示例性地,在终端101为车载终端的情况下,应用程序143包括控制汽车驾驶相关的程序,比如,管理自动驾驶的汽车和路上障碍物交互的程序,控制自动驾驶汽车路线或者速度的程序,控制自动驾驶汽车和路上其他自动驾驶汽车交互的程序。在一个实施例中,在需要执行应用程序143时,终端101可以从软件部署服务器149下载应用程序143。在一个实施例中,在终端101从软件部署服务器149下载应用程序143时,终端101也可以从软件部署服务器149下载与该应用程序143对应的调度表。
63.传感器153和终端101关联。传感器153用于探测终端101周围的环境。举例来说,传感器153可以探测动物,汽车,障碍物和人行横道等,进一步传感器153还可以探测上述动物,汽车,障碍物和人行横道等物体周围的环境,比如:动物周围的环境,例如,动物周围出现的其他动物,天气条件,周围环境的光亮度等。可选地,如果终端101位于自动驾驶的汽车上,传感器可以是雷达系统等。
64.以上介绍了本技术实施例所提供的错误检测方法的应用场景,以下将详细介绍该错误检测方法的执行过程。
65.可以参阅图2,图2为本技术实施例提供的一种错误检测方法200的流程示意图。如图2所示,该错误检测方法200包括以下的步骤。
66.步骤201,获取目标任务的调度表,调度表用于指示至少一个测试模式,至少一个测试模式用于检测目标逻辑电路的错误,目标逻辑电路为用于执行目标任务的逻辑电路。
67.本实施例中,在终端正常运行的过程中,终端可以周期性地执行该错误检测方法200,例如每隔30毫秒或50毫秒执行一次该错误检测方法200,以确保能够及时检测到已发生的错误。
68.在一个可能的实施例中,该目标任务可以为终端中正在运行的任务,例如可以为终端中正在运行的进程或线程。终端确定目标任务的方式可以是通过获取当前正在运行的任务的标识(identifier,id)或者基于当前正在运行的任务对应的数据结构来确定目标任务,例如基于线程id确定当前正在运行的任务具体是哪一个线程。示例性地,在目标任务为进程的情况下,该目标任务例如可以为车辆视频检查进程、车速计算进程、雷达检测进程、车辆防抱死进程或胎压检测进程等进程。
69.本实施例中,对于终端中可运行的任意一个任务,均可以具有对应的调度表。这些调度表例如可以是预置于终端中的,也可以是由终端基于任务的机器指令码所生成的。因此,终端可以在多个调度表中确定目标任务所对应的调度表,例如在目标任务为进程的情况下,终端可以基于进程id确定与其对应的调度表。
70.在目标任务所对应的调度表中,可以包括有至少一个测试模式,该至少一个测试模式与目标任务的机器指令码对应,该至少一个测试模式用于检测目标逻辑电路的错误。其中,该至少一个测试模式与目标任务的机器指令码对应是指基于该至少一个测试模式,可以实现执行目标任务的机器指令码时所依赖的目标逻辑电路的错误检测。
71.简单来说,终端在执行机器指令码时,需要依赖于终端中的逻辑电路,即基于逻辑电路来执行机器指令码。因此,在确定了目标任务的机器指令码对应的至少一个测试模式的情况下,对于终端执行该目标任务的机器指令码时所使用到的逻辑电路,均可以基于该
至少一个测试模式来实现错误的检测。
72.可以理解的是,在终端运行目标任务的过程中,如果目标任务运行过程中需要使用到的逻辑电路发生了错误,那么终端运行该目标任务时可能会由于逻辑电路的错误而产生安全风险。因此,基于该目标任务对应的调度表来执行测试模式,可以实现需要使用到的逻辑电路的错误检测,避免安全风险的产生。对于其他的逻辑电路,由于当前终端并没有执行相应的任务,即不需要使用到其他的逻辑电路,因此即便这部分逻辑电路发生了错误,也不会产生安全风险。
73.在一个可能的实施例中,调度表中的至少一个测试模式是基于第一映射关系和至少一个指令类型确定的,第一映射关系包括指令类型与测试模式之间的映射关系,至少一个指令类型是基于第二映射关系和目标任务的机器指令码集合确定的,第二映射关系包括机器指令码与指令类型之间的映射关系,机器指令码集合包括多个机器指令码。
74.在一个可能的实施例中,目标任务对应的调度表还可以指示至少一个测试模式的执行顺序,该执行顺序是基于目标任务的机器指令码所对应的指令类型的执行次数确定的。
75.一个任务通常包括有多个机器指令码,不同的机器指令码可能属于不同的指令类型,也可能属于相同的指令类型。指令类型相同的机器指令码通常依赖于相同的逻辑电路来执行,指令类型不同的机器指令码则依赖于不同的逻辑电路来执行。那么,在目标任务包括有指令类型相同的多个机器指令码的情况下,终端在执行该目标任务的过程中,需要使用到多次该指令类型所对应的逻辑电路。也就是说,在每次使用逻辑电路都可能导致逻辑电路发生错误,且逻辑电路发生错误的几率相同的情况下,逻辑电路的使用次数越多,则逻辑电路发生错误的几率越高。换句话说,同一指令类型的执行次数越多,逻辑电路的使用次数也越多,则逻辑电路发生错误的几率越高。因此,本实施例中可以基于目标任务的机器指令码所对应的指令类型的执行次数,来确定调度表中的测试模式的执行顺序。即指令类型的执行次数越多,那么该指令类型对应的测试模式的执行顺序越靠前,以便于终端能够基于逻辑电路发生错误的几率来确定检测逻辑电路的顺序,从而缩短错误检测时间,提高错误检测的效率。
76.例如,假设目标任务包括6个机器指令码,该6个机器指令码中分别有3个属于指令类型1的机器指令码、2个属于指令类型0的机器指令码以及1个属于指令类型2的机器指令码。那么,指令类型0、指令类型1以及指令类型2的执行次数分别为2、3、1。其中,目标任务对应的调度表包括有分别与指令类型0、指令类型1和指令类型2对应的测试模式a、测试模式b以及测试模式c,该调度表还可以包括有上述三个测试模式的执行顺序,该测试模式的执行顺序是基于测试模式对应的指令类型的执行次数确定的。即测试模式的执行顺序为:测试模式b-测试模式a-测试模式c。这样,终端在执行错误检测的过程中,可以基于该执行顺序依次执行测试模式b、测试模式a和测试模式c。
77.步骤202,根据调度表,执行至少一个测试模式,以检测目标逻辑电路的错误。
78.在获取到调度表之后,终端依次执行调度表所指示的一个或多个测试模式。并且,在执行完毕调度表所指示的测试模式后,终端可以确定当前执行错误检测的周期结束,终端可以在间隔一定的时间之后再次执行该错误检测方法200。此外,在调度表还包括测试模式的执行顺序的情况下,终端还可以是基于调度表所指示的执行顺序依次执行调度表中的
一个或多个测试模式。
79.本实施例中,终端在执行错误检测的过程中,通过获取目标任务的调度表,来执行该调度表中所包括的测试模式。由于该调度表中仅包括用于检测目标逻辑电路的测试模式,因此终端基于该调度表来检测错误,能够避免执行软件测试库中的所有测试模式,从而降低了处理器的负载,有效地提高了处理器的工作效率。此外,在调度表还包括有基于指令类型的执行次数所确定的测试模式的执行顺序时,终端基于该执行顺序来执行测试模式,能够实现基于逻辑电路发生错误的几率来确定检测逻辑电路的顺序,从而缩短错误检测时间,提高错误检测的效率。
80.以上介绍了终端基于目标任务对应的调度表执行相应的测试模式,以实现错误检测的过程,以下将详细介绍终端生成调度表的过程。
81.可以参阅图3a,图3a为本技术实施例提供的一种调度表生成方法300的流程示意图。如图3a所示,该调度表生成方法300包括以下的步骤。
82.步骤301,获取目标任务的机器指令码集合,机器指令码集合包括多个机器指令码。
83.本实施例中,终端在执行错误检测之前,可以预先生成终端中待运行的任务所对应的调度表,以便于终端在执行错误检测的过程中能够获取到目标任务所对应的调度表。
84.应理解,在终端执行错误检测之前,上述的目标任务为终端中的一个待运行的任务,终端可以通过获取目标任务的可执行文件来获取目标任务的机器指令码集合。示例性地,在目标任务为应用程序时,终端中安装有该应用程序,该应用程序的可执行文件例如可以为“.exe格式文件”、“.sys格式文件”、“.com格式文件”等类型文件,终端基于该应用程序的可执行文件可以获得该应用程序对应的机器指令码集合。
85.一般来说,对于目标任务而言,该目标任务的可执行文件通常包括多个机器指令码,即该机器指令码集合中包括多个机器指令码,终端通过执行该多个机器指令码来实现目标任务的运行。
86.步骤302,根据第二映射关系确定机器指令码集合对应的至少一个指令类型,该第二映射关系包括机器指令码与指令类型之间的映射关系。
87.可以理解的是,对于任意一个机器指令码,均有对应的指令类型,即可以将任一个机器指令码归类为某一指令类型。其中,指令类型例如可以包括数据传送类指令、定点算术运算类指令、按位运算类指令、程序控制类指令等类型。由于不同的机器指令码可以对应于同一个指令类型,也可以是对应于不同的指令类型,因此基于机器指令码集合中的每个机器指令码可以确定至少一个指令类型。
88.在终端中可以预置有第二映射关系,该第二映射关系包括了机器指令码与指令类型之间的映射关系,基于该第二映射关系可以确定机器指令码集合中的每个机器指令码所对应的指令类型。具体地,该第二映射关系的一种可能的示例如表1所示:
89.表1
90.机器指令码0指令类型0机器指令码1、机器指令码2指令类型1
……
机器指令码m指令类型n
91.由表1可知,对于任意一个机器指令码,均有唯一对应的一个指令类型;而对于一个指令类型,则可以对应有一个或多个机器指令码。这样,终端基于机器指令码集合所确定的指令类型的个数等于或者小于机器指令码集合中机器指令码的个数。在指令类型的个数小于机器指令码的个数的情况下,存在有多个机器指令码对应于相同的指令类型,即指令类型的执行次数则为其对应的机器指令码的个数。
92.具体地,该第二映射关系可以是基于终端中的处理器对应的指令集手册来建立的。一般来说,在计算机领域中,指示计算机硬件执行某种运算、处理功能的命令称为指令,该指令的表现方式可以为上述的机器指令码。指令是计算机运行的最小的功能单位,而硬件的作用是完成每条指令规定的功能。终端上全部指令的集合即为该终端的指令集,是终端上全部功能的体现。通常,一个终端上的指令集反映了该终端的全部功能,终端的类型不同,其指令集也可能是不相同的,因而功能也不同。指令集的设置和终端的硬件电路密切相关,而指令集手册则可以指示终端能够执行的指令集,以及指令集与终端中的硬件电路之间的关系。基于指令集手册,可以确定指令与硬件电路之间的关系,以及确定指令集中的每个指令所属的指令类型,从而建立机器指令码与指令类型之间的映射关系。
93.步骤303,根据第一映射关系确定至少一个指令类型对应的至少一个测试模式,第一映射关系包括指令类型与测试模式之间的映射关系,至少一个测试模式用于检测至少一个指令类型对应的逻辑电路的错误。
94.由于每种类型的指令都可以执行在某一个逻辑电路中,且每种类型的指令所对应的逻辑电路是固定的。因此,可以认为在确定了某一个机器指令码对应的指令类型之后,即可唯一确定用于执行该机器指令码的逻辑电路。那么,在确定了机器指令码集合对应的至少一个指令类型之后,通过确定该至少一个指令类型对应的测试模式,即可基于所确定的测试模式实现目标任务所使用到的逻辑电路的检测。
95.在终端中可以预置有第一映射关系,该第一映射关系包括了指令类型与测试模式之间的映射关系,基于该第一映射关系可以每个指令类型所对应的测试模式。具体地,该第一映射关系的一种可能的示例如表2所示:
96.表2
97.指令类型0测试模式组0指令类型1测试模式组1
……
指令类型n测试模式组n
98.由表2可知,对于任意一种指令类型,均有对应的测试模式组,每个测试模式组中可以包括有一个或多个测试模式,即任意一种指令类型均有对应的一个或多个测试模式。并且,每种测试模式均是用于检测特定的逻辑电路。因此,在终端确定了机器指令码所属的指令类型之后,则可以基于指令类型确定需要执行的测试模式。
99.具体地,该第一映射关系可以是基于stl的设计文档得到的。示例性地,基于stl的设计文档,可以确定stl中所包括的所有测试模式的相关信息,例如确定测试模式所检测的逻辑电路。这样,在确定了测试模式所检测的逻辑电路以及指令类型需要使用到的逻辑电路的情况下,则可以建立第一映射关系,以建立逻辑电路相同的指令类型与测试模式之间的映射关系。
100.步骤304,根据至少一个测试模式生成调度表。
101.在一个可能的实施例中,终端可以是只基于确定得到的至少一个测试模式生成该调度表,即得到的调度表中只包括该至少一个测试模式,而没有指定测试模式之间的执行顺序。
102.在另一个可能的实施例中,终端还可以确定该至少一个测试模式的执行顺序,并基于该执行顺序生成调度表,以使得调度表中还可以包括测试模式之间的执行顺序。
103.示例性地,在根据第二映射关系确定了多个机器指令码对应的指令类型之后,终端可以根据多个机器指令码分别对应的指令类型,确定该至少一个指令类型中的每个指令类型的执行次数。简单来说,终端可以统计每个指令类型所对应的机器指令码的个数,并将指令类型对应的机器指令码的个数确定为该指令类型的执行次数。根据执行次数,终端可以确定该至少一个测试模式中测试模式的执行顺序。由于每个测试模式均有唯一对应的指令类型,且每个指令类型均有其对应的执行次数,则终端可以基于测试模式对应的指令类型的执行次数来确定测试模式的执行顺序。即终端可以基于执行次数对测试模式进行降序排列,测试模式所对应的指令类型的执行次数越大,则该测试模式的执行顺序越靠前;反之,测试模式所对应的指令类型的执行次数越小,则该测试模式的执行顺序越靠后。最后,终端可以根据该至少一个测试模式以及执行顺序,生成包括有测试模式的执行顺序的调度表,以使得终端在执行错误检测时,能够基于调度表中所指示的执行顺序依次执行测试模式。
104.以上步骤301-304描述了终端基于目标任务生成对应的调度表的过程,在实际应用中,终端可以是在获取到待运行的多个任务之后,基于类似的流程,分别确定该多个任务对应的调度表,从而使得终端中可以保存有每个任务对应的调度表。这样一来,终端在执行任意一个任务时,均可以查找得到该任务所对应的调度表,以实现该任务对应的错误检测。
105.可以理解的是,在终端中存在有较多待运行的任务时,终端可以生成大量的调度表。因此,为了使得终端能够在执行错误检测的过程中快速确定目标任务所对应的调度表,终端在生成每个任务对应的调度表之后,还可以建立任务与调度表之间的映射关系。示例性地,终端可以生成第三映射关系,该第三映射关系包括待运行的任务与调度表之间的映射关系。终端在新生成任意一个调度表之后,终端可以更新该第三映射关系,以增加新生成的调度表与任务之间的映射关系,从而使得终端所生成的第三映射关系能够包括终端中的每个待运行任务与其对应的调度表之间的映射关系。
106.在一个可能的实施例中,终端可以在生成调度表之后,为每个新生成的调度表分配一个唯一的id,并且建立任务id与调度表id之间的映射关系,以得到第三映射关系。这样一来,终端可以基于任务id以及第三映射关系,快速确定对应的调度表id,并基于该调度表id查找得到对应的调度表。具体地,该第三映射关系的一种可能的示例如表3所示:
107.表3
108.任务0调度表0任务1调度表1
……
任务n调度表n
109.此外,终端也可以是在新生成调度表之后,为该新生成的调度表分配相应的地址
空间,以得到存储该调度表的地址空间。这样,终端可以建立任务id与调度表的地址空间之间的映射关系,以得到第三映射关系。也就是说,终端可以基于任务id与该第三映射关系,快速确定与之对应的调度表的地址空间,从而能够在该地址空间查找得到对应的调度表。
110.可以参阅图3b,图3b为本技术实施例提供的另一种调度表生成的流程示意图。如图3b所示,终端可以获取到位于终端中的任务1、任务2

任务n等n个任务;然后,终端分别对这些任务执行机器指令码扫描,以确定每个任务对应的机器指令码。基于每个任务的机器指令码,终端可以在stl中挑拣与每个任务的机器指令码对应的测试模式,并且对这些挑拣得到的测试模式进行排序,从而得到每个任务的调度表,即任务1的调度表1、任务2的调度表2

任务n的调度表n。
111.可以参阅图3c,图3c为本技术实施例提供的另一种调度表生成的流程示意图。如图3c所示,图3c以处理芯片为hi1951 taishan为例,对生成调度表的过程进行介绍。其中,hi1951 taishan为华为公司的一种处理芯片,该处理芯片中可以包括多个处理器,能够并行地执行不同的任务。如图3c所示,首先,可以基于hi1951 taishan的处理器架构指令集,确定机器指令码与指令类型之间的映射关系,得到映射表a;以及,基于hi1951 taishan的测试模式设计方案,确定指令类型与测试模式之间的映射关系,得到映射表b。然后,基于映射表a和目标任务的可执行文件,指令扫描器可以确定得到可执行文件中每个机器指令码对应的指令类型,从而得到可执行文件对应的所有指令类型。在得到可执行文件对应的所有指令类型之后,可以基于映射表b确定这些指令类型分别对应的测试模式,并且根据指令类型的执行次数给这些测试模式进行排序。即在stl中挑拣并排序测试模式,以得到目标任务对应的调度表。
112.以上介绍了终端基于任务的机器指令码集合生成调度表的过程,以下将详细介绍在生成调度表之后,终端如何配置调度表的过程。
113.在一个可能的实施例中,终端可以通过预留共享内存的方式,为调度表提供配置区域。
114.示例性地,终端可以通过设备树二进制(device tree binary,dtb)配置预留部分内存空间作为共享内存,并得到该共享内存的引用句柄,该引用句柄包括该共享内存的地址、大小以及访问权限等配置信息。终端在生成调度表之后,终端可以为该调度表在该共享内存中分配一个地址空间,并将调度表存储至该共享内存中的地址空间。此外,终端还可以基于该地址空间生成该调度表的配置信息,例如生成地址空间的索引与调度表id之间的映射关系,以使得终端在执行错误检测时,能够基于调度表id确定地址空间的索引,从而在该地址空间查找到该调度表。
115.在终端通过预留共享内存的方式为调度表提供配置区域的情况下,终端中的多个处理器均可以访问该共享内存中的调度表。这样,终端中的多个处理器均可以基于各自所执行的任务,单独地执行相应的错误检测。通过预留共享内存来为调度表提供配置区域,避免了为每个处理器单独提供调度表的配置区域,节省了存储资源的开销。
116.在另一个可能的实施例中,终端可以通过硬件的方式来实现调度表的调度。
117.示例性地,在终端的处理器中可以预先设计有两个用于调度调度表的寄存器,分别为排序寄存器和状态寄存器。在终端执行错误检测的过程中,终端确定目标任务对应的调度表之后,终端可以根据该调度表中的测试模式的执行顺序,将调度表中的测试模式有
序地写入排序寄存器。然后,终端可以根据排序寄存器中的执行顺序执行测试模式,并将测试模式的执行结果写入状态寄存器。
118.示例性地,可以参阅图4,图4为本技术实施例提供的一种排序寄存器和状态寄存器的结构示意图。如图4所示,排序寄存器和状态寄存器均为64比特(bit)的寄存器。在排序寄存器中,64bit分成为16个4bit,每4bit可以用于表示一组测试模式的id。终端可以根据调度表中的测试模式的执行顺序,将调度表中的测试模式有序地写入排序寄存器中,并且在执行错误检测时,根据排序寄存器中的执行顺序有序地执行测试模式。
119.在状态寄存器中,状态寄存器的64bit被分为多个部分。其中,bit[2:0]表示测试状态,其值为0时表示未开始测试;其值为1时表示完成测试;其值为2时表示测试进行中。bit[4:3]表示测试结果,其值为0时表示测试通过;其值为1时表示测试失败。bit[30:5]表示预留位,用于预留一定的位数,以便于后续拓展。bit[47:31]表示测试模式id,用于表示当前正在执行的测试模式的id。bit[54:48]表示当前测试模式所检测的硬件模块,例如可以指示某一逻辑电路。
[0120]
以上介绍了终端如何执行错误检测的过程,为便于理解,以下将结合例子详细介绍终端执行上述的错误检测方法所带来的有益效果。
[0121]
假设,终端中的stl包括有20个测试模式,分别为测试模式1-测试模式20。终端中还包括有任务a和任务b两个待运行的任务,并且基于本实施例所提供的错误检测方法确定任务a对应的测试模式为测试模式1-测试模式12,任务b对应的测试模式为测试模式10-测试20。
[0122]
可以参阅图5,图5为本技术实施例提供的执行错误检测的对比示意图。如图5中(a)所示,相关技术中执行错误检测的过程具体为:在终端正常运行的过程中,终端先执行任务a,然后再执行任务b。在间隔终端开始执行任务a一定时间间隔之后,终端开始执行stl所包括的20个测试模式,即测试模式1-测试模式20。在执行完该20个测试模式之后,终端继续执行任务a,直至任务a执行完毕,并继续执行任务b。在终端执行任务b的过程中,距离上一次执行测试模式一定时间间隔之后,终端继续执行该20个测试模式。也就是说,无论当前终端正在执行的是什么任务,终端都需要周期性地执行完20个测试模式,需要占用处理器过长的时间来执行测试模式。
[0123]
如图5中(b)所示,本方案中执行错误检测的过程具体为:在终端正常运行的过程中,终端同样是先执行任务a,然后再执行任务b。在间隔终端开始执行任务a一定时间间隔之后,终端开始执行任务a所对应的12个测试模式,即测试模式1-测试模式12。在执行完该12个测试模式之后,终端继续执行任务a,直至任务a执行完毕,并继续执行任务b。在终端执行任务b的过程中,距离上一次执行测试模式一定时间间隔之后,终端则执行任务b对应的10个测试模式,即测试模式10-测试20。也就是说,终端可以根据当前正在执行的任务来选择需要执行的测试模式,而并非是执行stl中所有的测试模式,从而缩短了终端每次执行测试模式的时间。
[0124]
此外,假设终端在执行任务a的过程中发生了错误,且发生错误的逻辑电路为终端执行任务a时使用次数较多的逻辑电路,用于检测该逻辑电路的测试模式为测试模式12。那么,在相关技术中,终端基于测试模式1-20的顺序依次执行测试模式,一共执行了12个测试模式(即测试模式1-12)才能够检测到发生错误的逻辑电路,错误检测时间较长。然而,在本
方案中,由于测试模式12对应的逻辑电路为任务a中使用次数较多的逻辑电路,因此,测试模式12的执行顺序比较靠前,终端基于调整后的执行顺序,能够快速检测到发生错误的逻辑电路。具体地,可以参阅图6,图6为本技术实施例提供的不同方案中fdti的对比示意图。由图6可知,相对于相关技术,本方案中基于调整后的执行顺序来执行测试模式,能够有效地缩短错误检测时间。
[0125]
此外,本实施例还提供了在逻辑电路存在错误的情况下,采用相关技术和本方案进行错误检测时的fdti对比;以及在逻辑电路不存在错误的情况下,采用相关技术和本方案进行错误检测时的总耗时对比。可以参阅图7(a),图7(a)为本技术实施例提供的存在错误时不同方案中fdti对比示意图。由图7(a)可知,在逻辑电路存在错误的情况下,采用相关技术检测错误耗时接近0.7毫秒,而采用本方案检测错误耗时则不到0.4毫秒,有效地缩短了错误检测时间。可以参阅图7(b),图7(b)为本技术实施例提供的不同方案中错误检测的总耗时对比示意图。由图7(b)可知,在逻辑电路不存在错误的情况下,采用相关技术检测错误总耗时接近4.5毫秒,而采用本方案检测错误总耗时则不到3.5毫秒,能够有效地缩短了错误检测时间,降低了处理器的负载。
[0126]
在图1至图7(b)所对应的实施例的基础上,为了更好的实施本技术实施例的上述方案,下面还提供用于实施上述方案的相关设备。具体可以参阅图8,图8为本技术实施例提供的一种终端800的结构示意图,该终端800包括:处理单元801和获取单元802。该获取单元802用于获取目标任务的调度表,调度表用于指示至少一个测试模式,至少一个测试模式用于检测目标逻辑电路的错误,目标逻辑电路为用于执行目标任务的逻辑电路;该处理单元801用于根据调度表,执行至少一个测试模式,以检测目标逻辑电路的错误。
[0127]
在一些可能的实现方式中,目标任务为运行中的任务。
[0128]
在一些可能的实现方式中,调度表中的至少一个测试模式是基于第一映射关系和至少一个指令类型确定的,第一映射关系包括指令类型与测试模式之间的映射关系,至少一个指令类型是基于第二映射关系和目标任务的机器指令码集合确定的,第二映射关系包括机器指令码与指令类型之间的映射关系,机器指令码集合包括多个机器指令码。
[0129]
在一些可能的实现方式中,调度表还指示了至少一个测试模式的执行顺序,执行顺序是基于目标任务的机器指令码集合对应的至少一个指令类型的执行次数确定的。在一些可能的实现方式中,该终端还包括:获取单元802;该获取单元802,用于获取目标任务的机器指令码集合,机器指令码集合包括多个机器指令码;处理单元801还用于:根据第二映射关系确定机器指令码集合对应的至少一个指令类型,第二映射关系包括机器指令码与指令类型之间的映射关系;根据第一映射关系确定至少一个指令类型对应的至少一个测试模式,第一映射关系包括指令类型与测试模式之间的映射关系,至少一个测试模式用于检测至少一个指令类型对应的逻辑电路的错误;根据至少一个测试模式生成调度表。
[0130]
在一些可能的实现方式中,处理单元801还用于:根据多个机器指令码分别对应的指令类型,确定至少一个指令类型中指令类型的执行次数;根据执行次数,确定至少一个测试模式中测试模式的执行顺序;根据至少一个测试模式以及执行顺序,生成调度表。
[0131]
在一些可能的实现方式中,处理单元801还用于:生成第三映射关系,第三映射关系包括目标任务与调度表之间的映射关系;根据目标任务与第三映射关系,确定调度表。
[0132]
在一些可能的实现方式中,调度表存储于共享内存中,共享内存被配置为存储一
个或多个任务的调度表,且共享内存可被多个处理器访问。
[0133]
在一些可能的实现方式中,处理单元801还用于:根据执行顺序,将至少一个测试模式写入排序寄存器;根据排序寄存器中的执行顺序执行测试模式,并将测试模式的执行结果写入状态寄存器。
[0134]
在一些可能的实现方式中,目标任务包括进程或线程。
[0135]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0136]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0137]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0138]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0139]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献