ARM双核锁步DCLS Lockstep技术研究(FPGA实现)
基于《Applying Dual-Core Lockstep in Embedded Processors to Mitigate Radiation-induced Soft Errors》文章总结
RISC-V双核锁步DCLS Lockstep技术参考之前文章:
RISC-V双核锁步DCLS Lockstep技术总结_远古架构师alanwu的博客-CSDN博客https://blog.csdn.net/heyuming20062007/article/details/123329537ARM+RISC-V异构双核锁步DCLS Lockstep技术参考之前文章:
ARM + RISC-V双核锁步DCLS Lockstep技术总结_远古架构师alanwu的博客-CSDN博客基于《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和Memorhttps://blog.csdn.net/heyuming20062007/article/details/123400073
一、ARM双核Lockstep架构
文中提出的ARM双核lockstep架构如下图所示,该架构中有两个CPU、两个BRAM、一个checker和一个DDR Memory。为了防止两个CPU同时竞争DDR中的资源,每个CPU均配置了一个最大64KB大小的BRAM。
所有的CPU输出的数据均缓存在该BRAM中,大小可根据应用程序情况配置。BRAM通过AXI总线互连,BRAM控制器用来处理AXI接口的通信。外部的DDR Memory存储了两个CPU的程序指令,尽管两个CPU运行的程序相同,但在DDR中各自存放两段不同物理地址的程序。除此之外,DDR还被用来存储checkpoint到达时的处理器内部信息,方便程序回卷。Checker用来验证对比CPU是否出错,如果出错需要通过中断及时通知两个CPU进行处理。由于cache使能将导致CPU0和CPU1输出不写穿到BRAM,从而无法保证系统的可靠性,因此该结构中的cache必须关闭使能。
二、程序执行过程
带有lockstep的程序流程如下图b所示,a为原始不带lockstep功能的程序。所有a中execution program将全部放入execution block中,中间通过VP(Verification Point)隔断。复位完成后,程序会对数据和寄存器进行初始化,然后会进入VP程序,此时程序会被stall住。VP阶段首先会发送程序的应用签名,该方法在应用程序上附加代码,通过计算发送给BRAM用于Checker对比。签名值是当前CPU状态和内部信息的表征,可以通过校验位、XOR掩码等方式计算得到,能够使用的处理器内部信息包括CPU内部寄存器:R0-R12;SP;LR;PC等。
使用中断机制来访问处理器内部信息,由于中断过程会将寄存器的值存储在堆栈中,这样中断服务程序可以方便的观察checkpoint时的寄存器数值差异。当CPU接收到中断后,将会执行下述步骤:
- 实际的执行程序会被中止;
- 处理器的寄存器数值保持到堆栈中,执行程序现场被保存;
- 中断服务程序被执行;
- 中断服务程序结束时,处理器从堆栈中恢复现场;
- 继续执行程序。
在VP阶段时,Checker产生中断进入中断服务程序,然后等待BRAM中的数据ready,随后完成两个BRAM中的应用签名对比或寄存器数值对比。如果对比没有错误,表示当前两个CPU运行一致,继续执行下一段程序直到checkpoint。如果对比错误,则Checker会产生错误异常中断,告知CPU回卷程序并恢复之前程序。在Checker对比完成后,Checker会将对比结果重新写回BRAM来解锁程序,让程序继续执行。
三、Checker模块
Checker使用RTL硬件实现,负责对比程序一致性和控制lockstep前进。为了识别是否有错误,Checker会比较两端CPU的所有输出。对比可以使用两种方法实现:一种是对比所有CPU输出到BRAM中的数据;另一种是只对比应用签名。如果使用前者,对比过程可能需要更多的硬件逻辑来实现,但能保证所有数据没有错误;如果使用后者,需要提前计算好应用签名,但能够有效的提高对比速率和降低硬件逻辑资源。
四、检查点和回卷操作
当Checker验证系统出错时,它会产生中断请求CPU访问BRAM,并修改CPU堆栈内容。根据是否允许访问DDR,将回卷过程分为两种:
- 只允许访问BRAM:处理器内容只保持在BRAM中,回卷时会将BRAM中的数值覆盖CPU内部寄存器。
- 可访问BRAM和DDR:CPU信息会同时存入BRAM和DDR中,回卷时首先从BRAM中读取信息覆盖CPU内部寄存器,如果多次回卷仍然无法通过该checkpoint,那么程序会启动去DDR读取信息。
如果程序连续出现两次回卷,且中间没有checkpoint,则表明checkpoint出现了错误。如果多次尝试失败,此时系统需要恢复到第一次保存的程序位置,从数据初始化完成后重新运行程序。如果还是不能解决问题,那么需要产生硬件复位重新初始化两边寄存器和程序数据。
五、设计总结
上图是整个过程的总结,程序的整个流程如上左图所示,其中VP阶段的具体流程如上右图所示。
ARM双核锁步DCLS Lockstep技术研究(FPGA实现)相关推荐
- ARM + RISC-V双核锁步DCLS Lockstep技术总结
基于<A Loosely-Coupled Arm and RISC-V Locksteping Technology>文章总结 一.lockstep技术分类 文中将lockstep技术总结 ...
- 商用DCLS双核锁步lockstep技术总结
目前市场上能够通过IOS26262等车规标准的双核锁步DCLS芯片主要有TI的Hercules系列.英飞凌AURIX系列和NXP S32系列等. 一.TI Hercules系列 Hercules是TI ...
- Codasip和IAR强强联手,共同演示用于RISC-V的双核锁步技术
IAR获得ISO 26262认证的工具支持基于屡获殊荣的CodasipL31内核的参考设计 Codasip和IAR共同宣布将强强联手为低功耗嵌入式汽车应用提供全新的创新支持,双方将联手为客户提供屡获殊 ...
- 上交所技术 基于FPGA技术的FAST行情解码研究
本文选自<交易技术前沿>第二十七期 (2017年6月). 钟浪辉1,陈敏1,陈坚1,刘啸林1,秦轶轩2,李道双2, 1上交所技术有限责任公司 2南京艾科朗克信息科技有限公司 E-mail ...
- 光伏并网pscad_光伏并网逆变器及其关键技术研究—张兴
欢迎加入技术交流QQ群(2000人):电力电子技术与新能源 905723370 高可靠新能源行业顶尖自媒体 在这里有电力电子.新能源干货.行业发展趋势分析.最新产品介绍.众多技术达人与您分享经验,欢迎 ...
- linux 挂iscisc存储,基于arm的嵌入式linux操作系统的移植研究-通信与信息系统专业论文.docx...
基于arm的嵌入式linux操作系统的移植研究-通信与信息系统专业论文 Classified Index: TP316.8 U.D.C: 621.38 Dissertation for the Mas ...
- 最先进的智能采茶机器人_智能采茶机器人关键技术研究
■我有技术 所属领域:新一代信息技术 单位名称:长沙学院 成果简介:该项目为湖南省科学技术厅科技计划一般项目,项目立项名称为"智能采茶机器人关键技术研究",项目编号为"2 ...
- 基于芯科Host-NCP解决方案的Zigbee 3.0 Gateway技术研究(-)-Z3GatewayHost应用
相关系列文章 基于芯科Host-NCP解决方案的Zigbee 3.0 Gateway技术研究(-)-Z3GatewayHost应用搭建 基于芯科Host-NCP解决方案的Zigbee 3.0 Gate ...
- 区块链技术研究热点有哪些
随着政府部门.金融机构.科技企业和资本市场的不断投入, 加速了区块链技术在实际应用中的落地,同时加剧了区块链技术 需要突破的技术瓶颈,具体表现在以下几个研究方向: 1.共识算法与性能 共识算法是区块链 ...
最新文章
- Spring Transactional还能导致生产事故?
- SQL查询入门(上篇)
- 读取word文件中的文本信息
- SVN更新项目A C D M G U R I的含义
- Django(四)数据库
- vs2012安装过程 1006
- 计算机网络硬件部件,计算机网络硬件由哪些部件组成?
- 5G 基站功耗,到底有多可怕?
- perl多进程实战之一
- python三天速成_python学习第三天
- wamp环境单独安装(windows下apache2.4、mysql5.5、php5.5的版本)
- H5视频会议,直播,通话,教学,支持Webrtc、rtmp、sip、rtsp转协议、IPCAM、白板、桌面共享、免插件、web全平台、视频融合系统研发笔记。...
- matlab测量平差实验报告,测量平差实习心得精选三篇
- matlab的稀疏表示分类,基于稀疏表示的分类方法
- 使用C++枚举WINDOWS计划任务-使用管理员启动获取全计划任务,否则获取部分计划任务
- python 召回率_使用sklearn获取精确性和召回率
- 黑马程序员UI设计学院公开课,10月18日开讲啦!
- android action pick,android – 无法使用ACTION_PICK意图选择特定图...
- 开维控制精灵 Ctrl js 华为手机群发短信
- Echarts 水波图实现
热门文章
- 【⏰亲】今天冬至,早些回家!
- 辗转相除法——求最大公约数(易懂详解)
- 熵(entropy)的定义
- http://nian.so/#网站的拓展工具编写
- Class 文件的魔数和文件版本号
- Python基础知识-pycharm版-对象
- ubuntu关机卡死
- unsupported dynamic reloc R_ARM_REL32 AND hidden symbol '__dso_handle' is not defined
- ADB卸载OPPO浏览器
- 介绍国产的PHP MVC框架:FleaPHP