IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> RISC-V双核锁步DCLS Lockstep技术总结 -> 正文阅读

[嵌入式]RISC-V双核锁步DCLS Lockstep技术总结

基于《A Dual Lockstep Processor System-on-a-Chip?for Fast Error Recovery in Safety-Critical Applications》文章总结。

一、设计总结

  • 设计基于RISC-V 32IM ISA实现,修改内部5级流水;
  • 主核和从核程序流水错开1个cycle,防止同一周期主从核因外部电离脉冲导致同时错误;
  • 设计在流水线的访存、写回阶添加delay buffer和checker模块,用于纠正错误并防止错误操作从输出阶段写入IO和Memory中;
  • 如果主核和从核数据对比不一致,会产生异常错误,并将主核和从核同时回卷到错误之前正确的指令位置,如果错误数量超过一定阈值,则会触发系统复位;
  • 使用Dhrystones and Coremark benchmark测试,stuck-at faults纠错率达到100%;

二、具体实现

五级流水修改如下图所示,需要添加或修改PCM、VCVB、EHC、M和WB阶段Checker等模块内容;

  • ?PCM:管理PC地址分配和VCID分配,VCID为6bit同步控制码。

上电后PC从复位地址开始启动,Master A的复位地址为0x0,Slave B的复位地址为另一段镜像程序所在首地址。如果没有分支和条件跳转,PCA通过PCB获得下一个PC地址,PCB则通过上一个PCA+4获得地址。如果程序出现分支、跳转等,需要将指令译码ID阶段的跳转目的地址传回MUX3,并最终影响PCA。如果程序出现异常,系统同样需要将异常PC通过MUX3传递给PCA。VCID是6bit编码,后面介绍。

  • VCVB:检查VCID结果,确保节拍同步;

上图为VCVB的实现内容,将六个不同阶段的VCID前后异或,在将所有结果输入与非门,输出为VCID的异常标志,如果输出为高则表示当前出现错误或发生了异常。VCID的编码如下:

正常情况下,各个阶段VCID0和1交替出现。如果出现错误,比如访存阶段异常,那么会将该位VCID保持不变,经过异或后VCVB输出异常标志。如果需要插入气泡,则按照上述第3行到第8行的方式插入气泡。

上图是产生VCID异常的仿真结果。

  • M/WB checker:数据对比检测,检测主从核程序是否一致;

M阶段将数据写回Memory/IO中,WB阶段将数据写回系统寄存器。两个阶段均需要如下左图所示的结构,包括一个delay buffer和A/B异常buffer,用于存储主从核数据,一个写checker,用于对比主从核数据并产生写使能、错误异常和系统异常。写回阶段还需要添加如下右图所示结构,保证主从核写数据到系统寄存器和主核保持同步。

?放入delay buffer中的数据包括:控制信号、写地址、写数据、PC、PC+4和VCID。如果PC或控制信号不一致,checker会报系统异常,关闭写使能,并唤起异常处理。系统会将主从核的异常信息存储在A_EXC和B_EXC buffer中,A_EXC包括delay buffer中的内容,B_EXC包括EX/M阶段流水线寄存器。系统异常处理判断:1)如果是控制信号不匹配,则产生系统复位;2)如果PC不匹配,异常处理检查PC+4的值是否匹配,如果相同则继续,不相同则产生系统复位。

如果是PC和控制信号之外的对比不一致,那么checker会生成错误异常,并从PC异常buffer中存储的地址开始执行程序。该方法可以快速从错误中恢复,并添加错误计数,超过阈值数后直接系统复位。

下图是M阶段checker存储在buffer中的具体信息和对比结果,只有VWD_EN有效才允许写。

主核寄存器堆提供写回数据通路和数据传递通路。由于写回数据的延时,数据传递通路非常必要。下图是WB checker对比结果和异常信息。

  • EHC:控制异常程序并跳转执行;

如果是M checker产生错误异常,此时主核正在通过PCA预取下一条PC,EHC模块会将异常PC地址反馈给PCA,并在主从核插入气泡。一个周期后,通过PCA将异常PC传给PCB。

如果是WB checker产生的错误异常,此时主核正在通过PCB读取下一个PC值到PCA,EHC会通过MUX3使能,通过PCB存储异常PC值,并传递给PCA。

三、测试结果

测试过程在EX/M和M/WB阶段流水线寄存器注入错误,一般为单比特翻转,各个比特位均进行了测试,同时对寄存器数据进行了单比特污染。所有注入错误全部100%发现,下图是检测结果,包括控制信号、PC值、寄存器的错误注入,并给出所有成功检测到错误的case数量,以及最终报出的异常类型。

注意所有控制信号和PC均作为系统异常报出,寄存器作为错误异常报出。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:45:28  更:2022-03-10 22:47:14 
 
开发: 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:23:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码