| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> ARM + RISC-V双核锁步DCLS Lockstep技术总结 -> 正文阅读 |
|
[嵌入式]ARM + RISC-V双核锁步DCLS Lockstep技术总结 |
基于《A Loosely-Coupled Arm and RISC-V Locksteping Technology》文章总结 一、lockstep技术分类文中将lockstep技术总结成三类:系统级、分系统级和CPU级。系统级拥有两套不同的CPU、Caches和Memory,输入通过IO进入各自Memory和Caches,输出通过Checker比较结果;分系统级共享同一个Memory和IO,输入进入各自Cache,输出通过Checker比较结果;CPU级只有两套CPU内核,Cache和Memory均使用同一套。 ?二、ARM+RISC-V双核lockestep设计实现2.1 总体架构下图ARM+RISC-V双核lockstep实现架构,其中RISC-V使用了rocket chip五级流水,并添加了用于同步的xLockstep模块。上层软件将同一套程序通过两套编译器生成底层代码,分别分发给ARM和RISC-V,RISC-V在FPGA中实现。该架构不能完成指令级的错误纠正,只能实现错误检测和冗余备份功能。 xLockstep为该架构设计的重点,其内部结构如下图所示。该结构有四个接口:两个APB3总线和两个中断输出。结构内部有16个内部寄存器、1个timer、1个checker模块、1个FSM状态机和数据控制交互逻辑。所有寄存器均32bits位宽,2个状态寄存器为只读,具体寄存器含义如下。 2.2?内部寄存器
2.3 FSM状态机 FSM状态机如下图所示,主要包括六个状态:Start、Idle、Synchro、Checker、Resume和Error。 系统上电复位后进入Start状态,Start状态为复位后状态,所有数据清空。Start状态等待两个core置位bit_Enable,只有两个都置位才会进入Idle状态,其中一个清0均会跳入Start状态。 Idle状态下,系统会将Timeout寄存器中的数值更新到Timer中,并更新两个状态寄存器。系统会不停检查控制寄存器中的设置,并根据控制寄存器数值进行相应的处理。如果其中一个core将bit_synchroX位置1,那么状态机会进入Synchro状态,也就是说此时至少一个core达到了checkpoint的位置。 Synchro状态下,系统使能timer计数,如果在规定时间内另一个核也进入到checkpoint位置并拉高bit synchroX,则状态机进入Checker状态。如果未能在规定时间内进入checkpoint,那么超时标志拉高,状态进入Error状态。 Checker状态下,系统将使能checker模块工作,并比较所有处理器的输出。如果输出不一致,Checker将置位错误标志并进入Error状态,如果比较一致,则置位EndOfCheck标志,并进入Resume状态。 进入Error状态后,CPU需要处理当前的错误,并在处理完成后置位bit_ErrorSolve信号,并重新通过bit_SynchroX同步。如果错误修复ErrorFix的标志拉高且bit_SynchroX回0,系统进入Idle状态。在错误状态下,系统将会更新状态和错误寄存器,并拉高中断。 在Resume状态下,系统更新状态寄存器和中断。系统会保持该状态直到bit_SynchroX被清除并置位continue(与非bit_Synchro0和bit_Synchro1)。 2.4 Timer模块 Timer模块用于同步双核,内部包括一个计数器。如果计数器达到timeout预设值而另一个core还没有达到checkpoint,那么会产生超时error并进入Error状态。如果没有错误发生,timer会停止计数,系统进入下一个状态。下图是Timer模块的结构图以及状态机。 其内部结构较为简单,状态机主要包括三个状态:Reset、Count和Timeout。Reset状态下计数器值为0,并在enable使能后进入count状态开始计数工作。count状态下,计数器持续计数直到达到timeout或enable关闭(另一个核达到checkpoint)。timeout状态下置位超时错误标志,并等待enable关闭进入reset状态。 2.5 Checker模块 Checker模块每个周期比较4 x 32bits寄存器结果,下图是该模块的结构和内部状态机。Enable使能数据对比,DataSelX用于指示对比寄存器的数量,EndofCheck用于指示对比结束,ErrorDataX用于指示各个寄存器数据对比结果是否有误。 状态机从Idle状态开始,如果Enable有效则进入ErrorClean状态。Idle状态下输出EndOfChecker和SelectDataX清0,直到输入Enable有效。ErrorClean状态只维持一个时钟周期,并在下一周期直接进入Compare状态。Compare状态下,数据开始通过Data_Core0和Data_Core1一拍拍进入Checker,直到对比结束,EndofData有效进入End状态。End状态下,状态机等待Enable拉低。 三、软件实现 3.1 API xLockstep使用APB接口作为设备访问接口,主核和从核均通过各自的接口访问可见地址空间的寄存器。经过API封装后,上层应用程序可以轻松的访问内部寄存器。API封装的函数如下所示:
3.2 Framework 由于主从核的异构,以及指令集的不同,程序难以做到周期级的指令对比,采用松耦合的checkpoint对比方法,能够有效保证双核的同步和回卷,下图显示这种异构的双核对比过程。 主从核执行同一套程序,但只有主核的程序运行结果会输出。系统首先会开始双核的同步过程,如果同步成功,系统会保存处理器信息并执行程序代码。当双方程序均运行到checkpoint时,系统会比较两个处理器的输出,如果没有错误则继续到下一个checkpoint。如果在下次比较时,其中的一个核产生了错误并在对比过程中检查出来,那么系统将会回卷到上一次正确checkpoint,并重新运行程序。 checkpoint到达后,系统需要将主从核的内容存储保存。由于ARM和RISCV都采用了load-store架构,程序首先会将memory中的数据load到寄存器,执行指令并将结果写回memory。需要保存的处理器信息包括:寄存器数值、memory数值、stack堆栈内容,这些内容的保存对于回卷操作至关重要。saveContext()函数被调用后,首先会保存寄存器文件、Frame Pointer和Stack Pointer。当上述内容保存完成后,还会保存PC值。 保存寄存器和stack,需要清楚处理器内部寄存器和堆栈如何工作,ARM Cortex-M3包括17个寄存器:R0-R12通用,R13用于SP,R14用于LR,R15用于PC,PSR用于程序状态指示。另外,M3使用R7作为FP,在程序调用过程中,SP和FP均会变化,过程如下图所示: 假设此时程序在主函数中,FP指向0x20008000地址,SP指向0x20007000地址,当程序调用function()函数后,FP指向0x20006FFC并将上一个FP位置写入该地址,SP也会指向新的地址。 RISCV包括32个寄存器:X0常值0,X1用于返回地址,X2用于SP,X3-X27通用,X28-X31备用。当function call发生时,同样需要保存上述寄存器和stack中的内容。上述的不一致性需要考虑,因为对比数据需要从保存的数据中提取,在发生错误回卷时,也需要考虑恢复的内容。尽管RISCV和ARM采用了不同的指令集,但系统保存FP和SP的方式是相似的。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:42:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |