一种AMP模式下基于两次信息交互的多核处理器容错方法与流程

未命名 07-12 阅读:81 评论:0

一种amp模式下基于两次信息交互的多核处理器容错方法
技术领域
1.本发明涉及嵌入式多核处理器的冗余容错方法,尤其是涉及基于两次信息交换的嵌入式多核处理器在非对称多核(asymmetric multiprocessing,amp)模式下的冗余容错方法。


背景技术:

2.amp模式是指处理器中的每一个处理器核都拥有自己的操作系统或应用程序,拥有各自独立的内存空间。处理器核之间只有少量信息交互。在amp模式下,处理器各核运行的操作系统或应用程序可能是相同的,也可能是不同的,即各核的功能可能是相同的,也可能是不同的。
3.一般多核处理器包括双核、4核及更多的核。对于双核,通常确保可靠性和安全性的做法是采用双核锁步工作方式。两个核在一定同步策略约束下,分别运行同样的程序。对两个核的处理结果进行对比,只有两个核处理结果一致才会对外输出,否则就不会输出,以确保系统安全。其它多核处理器,超过4个核的一般会对处理器核进行分组,通常每组4核。对于4核处理器,一般采用三模冗余(triple module redundancy,tmr)技术或2x2锁步技术。tmr利用三取二进行表决,得到正确输出结果。也可以进一步采用如(tmr+1)的方式,即利用多出来的核作为替补,用来动态替换故障核。2x2锁步将处理器分为两组处理器核对,每一组处理器核均采用双核锁步工作方式。若其中一组输出不一致,则切到另外一组。
4.但是,基于双核锁步机制的容错方法不能区分是哪个核故障,一旦对比结果不同,这一组就得抛弃,处理器核的资源利用率低。虽然处理器不会输出错误结果而导致安全问题,但在组与组切换,或者系统回卷或复位恢复时,处理器的任务会被打断。tmr机制可以定位故障并以多出来的健康核代替故障核。但由于故障核出现的位置不可预知,tmr中处理器核动态替换的设计会使得系统变得比较复杂。核越多,系统复杂度越高,有可能引入其它可靠性问题。此外,tmr进行三取二表决的表决器是一个单点,一旦表决器出现问题,即使多核功能都正确,处理器也无法正常工作。


技术实现要素:

5.本发明的技术解决问题是:克服现有技术的不足,提供了一种amp模式下基于两次信息交互的多核处理器容错方法,消除单点隐患,降低系统设计复杂度,提高容错效率。
6.本发明的技术解决方案是:
7.一种amp模式下基于两次信息交互的多核处理器容错方法,包括:
8.(1)进入表决前完成处理,处理结果写入共享存储区域;
9.在处理阶段,核i完成处理任务,将其处理结果result[i]写入共享存储区域核i所属区域,其中,i=0,1,...,n-1。
[0010]
(2)进入表决,t1阶段获取其它核的处理结果;
[0011]
核i从共享存储区域读取其它核存放的处理结果result[0],result[1],...,
result[i-1],result[i+1],...,result[n-1],结合自身的处理结果result[i],构成所有处理器核的处理结果集d[i]:
[0012]
d[i]={result[0],result[1],...,result[i],...,result[n-1]}。
[0013]
(3)t2阶段,进行第一次表决,对获取的处理结果信息进行表决,以确定正确的输出结果和对故障核的初步判断;
[0014]
核i对其得到的处理结果集d[i]内的数据进行n取m表决;其中,m为最少非故障核的数量,故障核数量即只要出故障的处理器核数量不超过表决就能得到正确的处理结果final_data[i],并且可以保证表决结果的一致性,即最终正确结果:
[0015]
final_data=final_data[0]=final_data[1]=...=final_data[n-1];
[0016]
在得到正确处理结果final_data的同时,由于取回来的数据与各处理器核对应,因此核i所进行的表决还可以识别出是哪一个或哪几个核发生了故障,从而得到核i对所有核健康状态的判断:health[i]={0,0,...,0};其中,health[i]共有n个元素,分别代表n个核的健康状态,健康状态标志:0表示正常,1表示故障;
[0017]
核i将自己的判断health[i]写入对应的共享存储区域。
[0018]
(4)t3阶段,获取核健康状态信息;
[0019]
核i从共享存储区域读取其它核存放的判断结果
[0020]
health[0],health[1],...,health[i-1],health[i+1],...,health[n-1],结合其自身的判断health[i],得到所有处理器核的判断集:
[0021]
h[i]={health[0],health[1],...,health[i],...,health[n-1]}。
[0022]
(5)t4阶段,进行第二次表决,对各核的判断进行表决,以在多核间达成共识,确定故障核以及当班处理器核;
[0023]
核i对其得到的判断集h[i]内的数据进行n取m表决,其中,m为最少非故障核的数量,故障核数量即只要出故障的处理器核数量不超过表决就能得到正确的判断结果,即对所有处理器核健康状态的正确认识final_health[i]={0,0,...,0},并且可以保证各核表决结果的一致性,即:
[0024]
final_health=final_health[0]=final_health[1]=...=
[0025]
final_health[n-1];
[0026]
核i根据final_health和优先级确定应该输出正确处理结果的当班核的编号k,k=0,1,...,n-1,并且可以保证各核确定结果的一致性;
[0027]
(6)在表决完成后,由表决结果确定的处理器核负责对外通信,即核k输出正确处理结果,随后进入下一次循环。
[0028]
进一步的,处理器共有n》2个核,各核编号分别为0,1,2,...,n-1,编号为i的处理器核称为核i;各核通过处理器内部总线互联,同时内部总线也挂载着存储器及处理器与外部通信的i/o接口;处理器核通过内部总线对存储器与i/o接口进行读写访问。
[0029]
进一步的,在存储器内存空间里开辟一块共享存储区域,每一个核都在其中拥有
一块自己的区间,用以存储各自的处理输出和判断信息,且可以读取整个共享存储空间的数据;所有的处理器核都可通过对共享存储区域的访问来实现相互间的信息交换。
[0030]
进一步的,amp模式下,各核执行相同的任务。每个核上的任务均划分为处理、表决、输出三个阶段,各处理器核在同步机制约束下,同时进入处理、表决、输出阶段;处理阶段同样的输入,执行同样的任务,理论上得到同样的处理结果。表决划分为四个子阶段:t1、t2、t3、t4,分别进行处理数据交换、处理数据表决、判断信息交换、判断表决。
[0031]
进一步的,按照各核编号从小到大的顺序设置优先级,编号越小,优先级越高;即核0优先级最高,核n-1优先级最低,只要核0健康,对外输出都由核0进行。
[0032]
本发明与现有技术相比的有益效果是:
[0033]
(1)本发明在amp模式下程序编写时设计有表决阶段,并预设处理器核的输出优先级顺序。
[0034]
(2)本发明进入表决阶段后通过两次表决和信息交换,增加故障核判据,更加准确地识别故障核位置。
[0035]
(3)本发明每一个核都可获得其它处理器核的处理结果,每一个核各自独立进行表决。第一次交换处理信息并表决,以确定正确的输出结果和对故障核的初步判断。第二次交换判断信息并表决,以在多核间达成共识:哪个核故障,应该由哪个处理器核当班。
[0036]
(4)在表决完成后,由表决结果确定的处理器核负责对外通信,输出处理结果。通过上述过程,消除单点隐患,降低系统设计复杂度,提高容错效率。
[0037]
(5)本发明容错方法消除了表决单点隐患。本发明没有单独的表决器,表决在每个处理器核内部进行,消除了表决器单点故障造成表决失效的隐患,提高了系统可靠性。
[0038]
(6)本发明容错方法提高了故障处理器核定位准确度。通过两次信息交换,增加了故障核的判据,可以更为准确地确定故障核位置。
[0039]
(7)本发明容错方法提高了处理器系统容错效率。通过共享存储空间交换信息,系统设计复杂度低,信息交互速度快,资源利用率高。
附图说明
[0040]
图1为多核处理器内部架构示意框图;
[0041]
图2为多核同步状态示意图;
[0042]
图3为核i的表决阶段示意图。
具体实施方式
[0043]
下面结合附图对本发明的具体实施方式进行进一步的详细描述。
[0044]
本发明在amp模式下程序编写时设计有表决阶段,并预设处理器核的输出优先级顺序。进入表决阶段后通过两次表决和信息交换,增加故障核判据,更加准确地识别故障核位置。每一个核都可获得其它处理器核的处理结果,每一个核各自独立进行表决。第一次交换处理信息并表决,以确定正确的输出结果和对故障核的初步判断。第二次交换判断信息并表决,以在多核间达成共识:哪个核故障,应该由哪个处理器核当班。在表决完成后,由表决结果确定的处理器核负责对外通信,输出处理结果。通过上述过程,消除单点隐患,降低系统设计复杂度,提高容错效率。
[0045]
设处理器共有n个核(n》2),各核编号分别为(0,1,2,...,n-1),编号为i的处理器核称为核i。多核处理器架构如图1所示。各核通过处理器内部总线互联,同时内部总线也挂载着存储器及处理器与外部通信的i/o接口。处理器核可以通过内部总线对存储器与i/o接口进行读写访问。在存储器内存空间里开辟一块共享存储区域。每一个核都在其中拥有一块自己的区间,用以存储各自的处理输出和判断等信息,且可以读取整个共享存储空间的数据。所有的处理器核都可以通过对共享存储区域的访问来实现相互间高速快捷的信息交换,不需要额外设计专用通信通道。对存储区域还可以增加校验等保护措施,提高可靠性。
[0046]
多核处理器架构示意如图1所示。
[0047]
amp模式下,各核执行相同的任务。每个核上的任务均划分为处理、表决、输出三个阶段,如图2所示。各处理器核在同步机制约束下,同时进入处理、表决、输出阶段。处理阶段同样的输入,执行同样的任务,理论上得到同样的处理结果。表决划分为四个子阶段:t1、t2、t3、t4,分别进行处理数据交换、处理数据表决、判断信息交换、判断表决。如图3所示。在这一阶段得到正确的处理结果及进行对外输出的处理器核。在输出阶段由该核对外输出。之后,进入下一次处理、表决、输出的循环。
[0048]
假设,按照各核编号从小到大的顺序设置优先级,编号越小,优先级越高。即核0优先级最高,核(n-1)优先级最低。只要核0健康,对外输出都由核0进行。
[0049]
本发明提出的amp模式下基于两次信息交互的多核处理器容错方法,具体步骤如下:
[0050]
(1)(进入表决前)完成处理,处理结果写入共享存储区域
[0051]
在处理阶段,核i(i=0,1,...,n-1)完成处理任务,将其处理结果result[i](i=0,1,...,n-1)写入共享存储区域核i所属区域。
[0052]
(2)进入表决,t1阶段获取其它核的处理结果
[0053]
核i从共享存储区域读取其它核存放的处理结果result[0],result[1],...,result[i-1],result[i+1],...,result[n-1],结合自身的处理结果result[i],构成所有处理器核的处理结果集:
[0054]
d[i]={result[0],result[1],...,result[i],...,result[n-1]}。
[0055]
(3)t2阶段,第一次表决,对获取的处理结果信息进行表决
[0056]
核i都对其得到的处理结果集d[i]内的数据进行n取m表决。其中,m为最少非故障核的数量。故障核数量即只要出故障的处理器核数量不超过表决就能得到正确的处理结果final_data[i],并且可以保证表决结果的一致性,即最终正确结果:
[0057]
final_data=final_data[0]=final_data[0]=...=final_data[n-1]。
[0058]
在得到正确处理结果final_result的同时,由于取回来的数据与各处理器核对应的,因此核i所进行的表决还可以识别出是哪一个或哪几个核发生了故障,从而得到核i对所有核健康状态的判断:health[i]={0,0,...,0}。其中,health[i]共有n个元素,分别代表n个核的健康状态。健康状态标志:0表示正常,1表示故障。
[0059]
然后,核i将自己的判断health[i]写入对应的共享存储区域。
[0060]
(4)t3阶段,获取核健康状态信息
[0061]
核i从共享存储区域读取其它核存放的判断结果health[0],health[1],...,health[i-1],health[i+1],...,health[n-1],结合其自身的判断health[i],得到所有处理器核的判断集:
[0062]
h[i]={health[0],health[1],...,health[i],...,health[n-1]}。
[0063]
(5)t4阶段,第二次表决,对各核的判断进行表决
[0064]
核i都对其得到的判断集h[i]内的数据进行n取m表决。其中,m为最少非故障核的数量。故障核数量即只要出故障的处理器核数量不超过表决就能得到正确的判断结果,即对所有处理器核健康状态的正确认识final_health[i]={0,0,...,0},并且可以保证各核表决结果的一致性,即:
[0065]
final_health=final_health[0]=final_health[1]=...=
[0066]
final_health[n-1]。
[0067]
由于优先级预先设定,在知道final_health后,核i就可以结合优先级确定应该输出正确处理结果的当班核的编号k(k=0,1,...,n-1),并且可以保证各核确定结果的一致性。
[0068]
(6)(退出表决)进入输出
[0069]
核k输出正确处理结果。随后进入下一次循环。
[0070]
本发明中,处理器核的故障一般有三种类型:
[0071]
1)是在处理过程中,处理器核受外部环境影响,如:寄存器被翻转,运算中间数据出错导致处理结果错误;
[0072]
2)是处理结果正常,在写入共享存储区域的过程中或在写入后数据出错;
[0073]
3)是处理器核跑飞或挂起,无法在规定时间内完成在相关区域的写操作。
[0074]
只要满足故障处理器核数量不超过的条件,三种错误都会在t2、t4阶段进行表决时被屏蔽掉,不会对影响得到正确处理结果。
[0075]
实施例:
[0076]
polarfire soc内含5个risc-v处理器核。以polarfire soc为例,说明amp模式下基于两次信息交互的容错方法具体实施。
[0077]
polarfire soc处理器子系统(microprocessor sub-sysyem,mss)地址范围为:0x0000 0000-0x1fff ffff。其中,地址0x1000 0000-0x1fff ffff为保留备用区。将这块地址空间作为共享存储区域,并划分5个区域,分别用于存储5个处理器核的信息。如下表所示。
[0078]
表1共享存储空间划分
[0079][0080]
核的数量n=5。核的优先级从高到低的顺序为:核0、核1、核2、核3、核4。5个核运行同样功能的程序:循环进行2个32x 32矩阵的乘法运算。
[0081]
具体实施过程:
[0082]
(1)(进入表决阶段前)完成处理,结果写入共享存储空间
[0083]
核0-4各自运算完后,分别将运算结果,以表1分配的地址为基地址,偏移地址0x00,写入各自对应的空间。如:
[0084]
核0将运算结果result[0]写入0x1000 0000;
[0085]
核1将运算结果result[1]写入0x1000 0010;
[0086]
核2将运算结果result[2]写入0x1000 0020;
[0087]
核3将运算结果result[3]写入0x1000 0030;
[0088]
核4将运算结果result[4]写入0x1000 0040。
[0089]
(2)进入表决阶段,t1,读取其它核处理结果
[0090]
各核分别读取其它核的信息。如:核0从共享存储空间读取其它核的运算结果,得到处理结果集:
[0091]
d[0]={result[0],result[1],result[2],result[3],result[4]}。
[0092]
同理,核1-核4也分别得到各自的处理结果集d[1]-d[4]。
[0093]
(3)t2,第一次表决,表决处理结果
[0094]
各核分别对处理结果集进行表决。如:核0对d[0]中的信息进行表决。只要故障核数量少于2个,就可以通过表决得到正确的处理结果final_data[0]。表决矩阵如下表所示。
[0095]
表2表决矩阵
[0096] 核0核1核2核3核4核0-相等相等相等相等核1
ꢀ‑
相等相等相等核2
ꢀꢀ‑
相等相等核3
ꢀꢀꢀ‑
相等核4
ꢀꢀꢀꢀ‑
[0097]
根据表决矩阵,核0除得到正确表决结果外,还可同时得知出现故障的处理器核的编号,从而得到核0对所有核健康状态的判断:
[0098]
health[0]={0,0,0,0,0},
[0099]
并将信息health[0]写到0x1000 0008。
[0100]
同理,核1-核4也分别对d[1]-d[4]中的信息进行表决,得到各自的正确结果final_data[1]-final_data[4]。同时,得到各自的health[1]-health[4],并将信息分别写到0x1000 0018、0x1000 0028、0x1000 0038、0x1000 0048。
[0101]
(4)t3,获取各核判断结果
[0102]
各核分别读取其它核的判断结果。如:核0从共享存储空间读取其它核的判断结果,得到判断结果集:
[0103]
h[0]={health[0],health[1],health[2],health[3],health[4]}。
[0104]
同理,核1-核4也分别获取到各自的判断结果集h[1]-h[4]。
[0105]
(5)t4,第二次表决,表决判断结果
[0106]
各核分别对判断结果集进行表决。如:核0对h[0]中的信息进行表决。只要故障核数量少于2个,就可以通过表决得到正确的核健康状态的判断结果:
[0107]
final_health[0]={0,0,0,0,0}。
[0108]
然后,核0结合优先级顺序,得出当前当班核编号:0。
[0109]
同理,核1-核4也分别对各自的判断结果集h[1]-h[4]进行表决,得到各自对核健康状态的判断结果,并可一致得出当前当班核编号:0。
[0110]
(6)(退出表决)进入输出
[0111]
由当前当班核核0负责将表决得到的最终处理结果final_data输出,结束本循环的过程。进入下一循环。
[0112]
由于核0优先级最高,只要核0正常,负责输出的都是核0。
[0113]
如果核0故障,则final_health=final_health[0]=final_health[1]=final_health[2]=final_health[3]=final_health[4]={1,0,0,0,0}。那么按照优先级,第一个备选就是核1。以后依次顺排。
[0114]
当处理器核的故障类型是1)或2)时,仅是中间数据错误或存放数据错误,故障核能够正常运行,是可以通过表决知道自己的结果有问题这个结论的。此时根据表决结果,故障核不会去对i/o进行操作。当处理器核的故障类型为3),跑飞或挂起时,此时故障核无法正常控制i/o。因此三种故障类型均不影响当班核的表决结果,也不会影响当班核输出表决的正确处理结果。
[0115]
本发明未详细说明部分属本领域技术人员公知常识。

技术特征:
1.一种amp模式下基于两次信息交互的多核处理器容错方法,其特征在于包括:(1)进入表决前完成处理,处理结果写入共享存储区域;(2)进入表决,t1阶段获取其它核的处理结果;(3)t2阶段,进行第一次表决,对获取的处理结果信息进行表决,以确定正确的输出结果和对故障核的初步判断;(4)t3阶段,获取核健康状态信息;(5)t4阶段,进行第二次表决,对各核的判断进行表决,以在多核间达成共识,确定故障核以及当班处理器核;(6)在表决完成后,由表决结果确定的处理器核负责对外通信,输出处理结果。2.根据权利要求1所述的一种amp模式下基于两次信息交互的多核处理器容错方法,其特征在于:处理器共有n>2个核,各核编号分别为0,1,2,...,n-1,编号为i的处理器核称为核i;各核通过处理器内部总线互联,同时内部总线也挂载着存储器及处理器与外部通信的i/o接口;处理器核通过内部总线对存储器与i/o接口进行读写访问。3.根据权利要求2所述的一种amp模式下基于两次信息交互的多核处理器容错方法,其特征在于:在存储器内存空间里开辟一块共享存储区域,每一个核都在其中拥有一块自己的区间,用以存储各自的处理输出和判断信息,且可以读取整个共享存储空间的数据;所有的处理器核都可通过对共享存储区域的访问来实现相互间的信息交换。4.根据权利要求3所述的一种amp模式下基于两次信息交互的多核处理器容错方法,其特征在于:amp模式下,各核执行相同的任务。每个核上的任务均划分为处理、表决、输出三个阶段,各处理器核在同步机制约束下,同时进入处理、表决、输出阶段;处理阶段同样的输入,执行同样的任务,理论上得到同样的处理结果。表决划分为四个子阶段:t1、t2、t3、t4,分别进行处理数据交换、处理数据表决、判断信息交换、判断表决。5.根据权利要求4所述的一种amp模式下基于两次信息交互的多核处理器容错方法,其特征在于:按照各核编号从小到大的顺序设置优先级,编号越小,优先级越高;即核0优先级最高,核n-1优先级最低,只要核0健康,对外输出都由核0进行。6.根据权利要求5所述的一种amp模式下基于两次信息交互的多核处理器容错方法,其特征在于:所述进入表决前完成处理,处理结果写入共享存储区域,具体为:在处理阶段,核i完成处理任务,将其处理结果result[i]写入共享存储区域核i所属区域,其中,i=0,1,...,n-1。7.根据权利要求6所述的一种amp模式下基于两次信息交互的多核处理器容错方法,其特征在于:所述进入表决,t1阶段获取其它核的处理结果,具体为:核i从共享存储区域读取其它核存放的处理结果result[0],result[1],...,result[i-1],result[i+1],...,result[n-1],结合自身的处理结果result[i],构成所有处理器核的处理结果集d[i]:d[i]={result[0],result[1],...,result[i],...,result[n-1]}。8.根据权利要求7所述的一种amp模式下基于两次信息交互的多核处理器容错方法,其特征在于:所述t2阶段,进行第一次表决,对获取的处理结果信息进行表决,具体为:核i对其得到的处理结果集d[i]内的数据进行n取m表决;其中,m为最少非故障核的数量,故障核数量即只要出故障的处理器核数量不超过表
决就能得到正确的处理结果final_data[i],并且可以保证表决结果的一致性,即最终正确结果:final_data=final_data[0]=final_data[1]=...=final_data[n-1];在得到正确处理结果final_data的同时,由于取回来的数据与各处理器核对应,因此核i所进行的表决还可以识别出是哪一个或哪几个核发生了故障,从而得到核i对所有核健康状态的判断:health[i]={0,0,...,0};其中,health[i]共有n个元素,分别代表n个核的健康状态,健康状态标志:0表示正常,1表示故障;核i将自己的判断health[i]写入对应的共享存储区域。9.根据权利要求7所述的一种amp模式下基于两次信息交互的多核处理器容错方法,其特征在于:所述t3阶段,获取核健康状态信息,具体为:核i从共享存储区域读取其它核存放的判断结果health[0],health[1],...,health[i-1],health[i+1],...,health[n-1],结合其自身的判断health[i],得到所有处理器核的判断集:h[i]={health[0],health[1],...,health[i],...,health[n-1]}。10.根据权利要求7所述的一种amp模式下基于两次信息交互的多核处理器容错方法,其特征在于:所述t4阶段,进行第二次表决,对各核的判断进行表决,具体为:核i对其得到的判断集h[i]内的数据进行n取m表决,其中,m为最少非故障核的数量,故障核数量n≥4;即只要出故障的处理器核数量不超过表决就能得到正确的判断结果,即对所有处理器核健康状态的正确认识final_health[i]={0,0,...,0},并且可以保证各核表决结果的一致性,即:final_health=final_health[0]=final_health[1]=...=final_health[n-1];核i根据final_health和优先级确定应该输出正确处理结果的当班核的编号k,k=0,1,...,n-1,并且可以保证各核确定结果的一致性;在表决完成后,核k输出正确处理结果,随后进入下一次循环。

技术总结
本发明涉及一种AMP模式下基于两次信息交互的多核处理器容错方法,在AMP模式下程序编写时设计有表决阶段,并预设处理器核的输出优先级顺序。进入表决阶段后通过两次表决和信息交换,增加故障核判据,更加准确地识别故障核位置。每一个核都可获得其它处理器核的处理结果,每一个核各自独立进行表决。第一次交换处理信息并表决,以确定正确的输出结果和对故障核的初步判断。第二次交换判断信息并表决,以在多核间达成共识:哪个核故障,应该由哪个处理器核当班。在表决完成后,由表决结果确定的处理器核负责对外通信,输出处理结果。通过上述过程,消除单点隐患,降低系统设计复杂度,提高容错效率。高容错效率。高容错效率。


技术研发人员:李杰 沈锐 曾祥云 孙艳丽 宋宇超 靳尧凯 王启久 王俊峰
受保护的技术使用者:赛思倍斯(绍兴)智能科技有限公司
技术研发日:2023.03.27
技术公布日:2023/7/7
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐