首先什么是Lockstep,直译过来就是“步调一致”,Lockstep由本来是由军事语境引入,用来表示齐步行军,队伍中的所有人都执行一致的动作步伐,而后引入计算机领域,应该是用于计算机容错系统,即“使用相同的、冗余的硬件组件在同一时间内处理相同的指令,从而保持多个CPU或内存精确的同步”。
LockStep Core我们现在叫锁步核,分为Master Core 和 Checker Core,它们使用相同的输入数据,执行相同的操作,并且使用硬件比较器逐周期比较Master CPU 和Checker CPU 的输出。工作原理图如下:
-
Master core和Checker core的输入是相同的
-
在Checker core输入的位置插入n个cycle的延时,通常n设置为2
-
Master Core的输出为a[i], Checker Core的输出为b[i],两个核的算法一致
-
a[i]进行一次“非”操作,也就是对其进行一次反转,然后插入n个cycle的延时,得到x[i]
-
最后x[i]和y[i]进行一次同或操作,得到cmp[i]。
-
如果cmp[i]等于1,说明lockstep出现错误,如果cmp[i]等于0,说明lockstep检查正常。
相同点:
-
两个核输入相同
-
处理算法逻辑相同(硬件)
不同点:
-
Checker Core在输入端做了延时,Master Core在输出端做了延时,但是延时时间是相等的
-
Master Core做了反转,Checker Core没有做反转,这样做是为了防止共模干扰。
所以在正常情况下,x[i]和y[i]必然是严格相反的,这样按位同或的输出值必然是0,这就证明了此时两个CPU都是正常工作的。故障通常需要连接到SMU的Alarm的寄存器上,当LockStep故障发生时,通过SMU触发系统reset。
而且LockStep是纯硬件电路的冗余与保护,所以不会影响软件运行。
在什么时候会使用锁步核?
一般在功能安全等级为ASIL C 和 ASIL D的情况下,会使能锁步核。
0