| |
|
开发:
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》文章总结。 一、设计总结
二、具体实现五级流水修改如下图所示,需要添加或修改PCM、VCVB、EHC、M和WB阶段Checker等模块内容;
上电后PC从复位地址开始启动,Master A的复位地址为0x0,Slave B的复位地址为另一段镜像程序所在首地址。如果没有分支和条件跳转,PCA通过PCB获得下一个PC地址,PCB则通过上一个PCA+4获得地址。如果程序出现分支、跳转等,需要将指令译码ID阶段的跳转目的地址传回MUX3,并最终影响PCA。如果程序出现异常,系统同样需要将异常PC通过MUX3传递给PCA。VCID是6bit编码,后面介绍。
上图为VCVB的实现内容,将六个不同阶段的VCID前后异或,在将所有结果输入与非门,输出为VCID的异常标志,如果输出为高则表示当前出现错误或发生了异常。VCID的编码如下: 正常情况下,各个阶段VCID0和1交替出现。如果出现错误,比如访存阶段异常,那么会将该位VCID保持不变,经过异或后VCVB输出异常标志。如果需要插入气泡,则按照上述第3行到第8行的方式插入气泡。 上图是产生VCID异常的仿真结果。
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对比结果和异常信息。
如果是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例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |