FPGA三模冗余TMR工具(二)
学术和商业领域有许多自动化的三模冗余TMR工具,本文介绍当前主流的基于寄存器传输级的三模冗余工具(Register-Transfer Level,RTL),基于重要软核资源的三模冗余工具,以及新兴的基于高层次综合的三模冗余工具(High Level Synthesis,HLS)。
>>>>>>>>>>>接上》》》》》》》》》》》》
FPGA三模冗余TMR工具(二)
2.基于HLS的工具
使用HLS进行FPGA开发,可以极大缩短开发周期,这对于设计周期冗长的TMR设计来说非常重要。Xilinx分析了使用CPU, GPU等标准专用处理器进行项目设计与使用FPGA平台进行项目设计的时间与性能对比,如下图所示,使用FPGA平台开发与标准专用处理器相同的应用无论是初始版本还是优化版本都具有更高的性能,然而采用RTL设计实现FPGA开发需要较长的开发时间,甚至超出了典型软件开发时间的允许范围。在采用HLS技术之后,FPGA开发的时间大大降低,甚至低于DSP和GPU。

此外,HLS还可以降低设计的资源利用率。Xilinx高层次综合工具Vitis HLS的前身AutoPi-lot曾将Sphere解码器的4000行C代码算法成功综合到Virtex5 FPGA上, 取得了比Xilinx的Sphere解码器IP更少的逻辑资源使用量。这个结果即便在现在看来也是非常出色的,它很好地证明了HLS有潜力取得比RTL级IP更为出色的性能,基于HLS的TMR工具有潜力降低TMR设计带来的巨额资源消耗。
HLS技术可以成为解决TMR技术在FPGA上的实现所面临的效率及实用性挑战的一种良好尝试。
2.1 TLegUp
TLegUp是新南威尔士大学研究的一款在高层次综合阶段实现TMR的工具,该工具基于多伦多大学开发的开源高层次综合工具LegUp,以C语言程序为输入,输出 Verilog的TMR设计。
该工具使用了上述的系统分级技术以及触发器状态同步技术。首先,TLegUp将输入的C程序通过LLVM(Low Level Virtual Machine)编译器转化为LLVM中间代码(Intermediate Representation,IR);之后从LLVM IR中创建更适合进行系统分级和查找反馈周期的数据流图(Data Flow Graph,DFG);然后使用最大流最小割算法将数据流图划分为大小基本相等的分级,并进行调度与绑定的操作;然后TLegUp会通过深度优先的策略来确定同步表决器的插入位置;在完成全部HLS操作和确定表决器的插入位置后,最后会将每个LLVM IR指令写入RTL块3次,并在先前被标记指令插入的表决器电路,生成TMR设计的 Verilog。
TLegUp中的关键技术在于表决器的插入,这里TLegUp使用上面所说的系统分级技术和状态同步技术的思想。通过表决器的插入,不仅可以将设计进行多级的分区,增加设计的容错性,同时还可以同步各个域之间的状态,防止错误的扩散。
精简表决器插入顶层模块输出端口,将电路的每个三模输出信号转换为单个输出信号。TLegUp生成的分级电路中,每个分级对应一个TMR组件,该组件具有3个功能相同的模块,分级表决器被插入到每个分级边界的输出信号之后,来防止错误的积累。此外,为了重新同步各域之间的状态,防止错误扩散,同步表决器插入到每个数据路径的循环部分; 而由于电路必须在每个时钟周期更新FSM寄存器,故FSM的下一个逻辑状态中也需要插入同步表决器进行同步。
该工具由于LegUp后续的商业化,失去了最新开源版本的更新支持,目前已经发展停滞,但是作为在HLS阶段插入TMR的“先锋”,该工具开辟了FPGA的TMR工具研究的新领域,为该方向的研究搭建了整体的研究框架。
2.2 C-TMR
德克萨斯大学达拉斯分校提出了一种新型的容错硬件加速器的设计方法,该方法为C程序实现TMR,以三模化后的C程序作为HLS工具的输入,从而能够为容错硬件提供更丰富的搜索空间,来探索面积、性能、可靠性的最优平衡。
该方法分两阶段进行,如下图所示,第1阶段对HLS的C语言行为输入描述Cin进行源到源的转换,并自动将TMR加入新的行为描述CTMR。第2阶段通过修改HLS工具的设计空间资源管理器,在成本函数中加入可靠性参数,对新生成的行为描述CTMR执行HLS空间探索,从而产生具有面积、性能、可靠性平衡的最优配置列表,最后生成可以容错的硬件电路。

该方案目前还没有形成完整的工具,但是其对于C行为描述的TMR直接插入与当前基于RTL描述的TMR工具的发展相呼应,是超前而又合理的研究思路。
在高层次综合阶段插入TMR,可以大幅缩短TMR电路复杂而冗长的设计周期,并且提供流水线设计的机会减轻TMR设计带来的负面时序影响,还可以对设计进行HLS空间探索,从而产生面积、性能、可靠性最均衡的硬件电路,是探索快速便捷、适用广泛的TMR工具的新方向。
3.基于软核的工具
软核是使用FPGA的逻辑和资源搭建的CPU系统,具有一定的灵活性,Xilinx的MicroBlaze就是常见的软核,由于是使用FPGA的通用逻辑搭建的CPU,因此也会受到单粒子效应的干扰,并且由于其CPU的特殊地位,当受到干扰时,对系统造成的影响也更致命。
Xilinx在其推出的FPGA设计套件Vivado中也加入了MicroBlaze TMR子系统的IP,旨在提高其软核处理器MicroBlaze的可靠性。MicroBlaze是一种经过优化专门实现在FPGA中的RISC软核处理器,具有使用生成脚本的高度可定制的特性,MicroBlaze TMR子系统包含TMR Manager,TMRVoter,TMR Comparator,TMR Inject和TMRSEM5个IP,如下图所示,是Xilinx开发的一个IP集合,用来自动管理和屏蔽影响MicroBlaze软核的故障。

MicroBlaze子系统属于容错-故障安全类型,它会在第1次故障后继续工作而不会停止,并将检 测到第2次故障。TMR Manager是TMR子系统IP中的核心组件,它通过持续分析比较器状态来监控故障的出现,如果其中一个出现不匹配,就会断言一个特殊的Break中断信号,并强制出现故障的MicroBlaze子模块开始恢复过程,剩下的两个正常软核将以锁步状态运行,比较器将持续比较它们的输出,如果发生不匹配,则进入崩溃状态,停止MicroBlaze TMR子系统。
MicroBlaze TMR子系统为软核提供了功能完备的TMR保护策略,但是它仅针对MicroBlaze提供TMR优化,使用范围过于单一局限,是一种针对特殊重要资源的局部保
相关文章:
FPGA三模冗余TMR工具(二)
学术和商业领域有许多自动化的三模冗余TMR工具,本文介绍当前主流的基于寄存器传输级的三模冗余工具(Register-Transfer Level,RTL),基于重要软核资源的三模冗余工具,以及新兴的基于高层次综合的三模冗余工具…...
springboot499基于javaweb的城乡居民基本医疗信息管理系统(论文+源码)_kaic
摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古…...
MF248:复制工作表形状到Word并调整多形状位置
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…...
微信流量主挑战:用户破16!新增文档转换(新纪元3)
朋友们,报告好消息!我的小程序用户数量已经涨到16个了!没错,真没拉朋友圈亲戚好友来撑场子,全靠实力(和一点点运气)吸引了16位陌生小伙伴光临!这波进步,连我自己都感动了…...
SelectionArea 实现富文本
使用 SelectionArea Text.rich TextSpan WidgetSpan实现富文本。 前置知识点学习 SelectionArea SelectionArea 是 Flutter 中的一个组件,用于管理文本的选择功能。它允许用户在应用中选择和复制文本,这是在支持文本选择的应用程序中常见的功能。Se…...
upload-labs关卡记录17
该关卡,依旧是上传图片马到服务器,然后借助文件包含漏洞来运行一句话木马,这里还是老样子,先上传我们之前制作的图片马: 上传成功后,复制链接然后通过文件包含漏洞来尝试,发现不可行:…...
【Next.js】002-路由篇|App Router
【Next.js】002-路由篇|App Router 文章目录 【Next.js】002-路由篇|App Router一、前言二、文件系统(file-system)1、说明2、演练创建代码运行访问让 Cursor 分析错误别偷懒,还是探究一下 Pages Router 方式吧创建代码运行并访问项目/about …...
如何在 Ubuntu 22.04 上使用 systemctl 管理 systemd 服务教程
简介 Systemd 是许多现代 Linux 发行版提供核心功能的默认服务管理器,而 systemctl 是用户与 systemd 服务交互的方式。这使得 systemctl 成为 Linux 管理员工具箱中重要的一部分。 在本文中,我们将探讨如何使用 systemctl 在使用 systemd 的系统上执行…...
Springboot关于格式化记录
日期格式化 返回前端日期需要格式化 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.2</version> </dependency>JsonFormat(pattern "yyyy-MM-dd…...
Android 自定义shell命令
模拟触摸、按键等操作,直接在命令行输入对应命令即可。命令行如何识别并操作此命令,执行操作的是shell程序,还是java程序?是不是可以添加自定义的命令? 以下在Android13的代码中分析input命令 Android系统中使用了一…...
Unity游戏环境交互系统
概述 交互功能使用同一个按钮或按钮列表,在不同情况下显示不同的内容,按下执行不同的操作。 按选项个数分类 环境交互系统可分为两种,单选项交互,一般使用射线检测;多选项交互,一般使用范围检测。第一人…...
TOP K问题:利用堆排序找出数组中最小的k个数
设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。 找小的数需要建大堆来解决,首先将数组中前K个数建成一个大堆,将从k1个数直到数组结束的所有数与堆顶的数进行比较,如果比堆顶的数小,则替换堆顶的数…...
《信息传播:人工智能助力驱散虚假信息阴霾》
在信息爆炸的时代,虚假信息和谣言如同脱缰野马,肆意传播,对社会秩序和公众生活造成了严重影响。人工智能作为一种强大的技术工具,正逐渐成为信息传播的有力助手,为防止虚假信息和谣言扩散提供了新的途径。 虚假信息和…...
数据权限和角色权限区别
1、概念 角色权限(Role-Based Access Control, RBAC)和数据权限(Data Access Control)是两种不同的权限管理策略,它们在权限控制的侧重点和应用场景上有所区别: 角色权限(RBACÿ…...
Flink的多流转换(分流-侧输出流、合流-union、connect、join)
在实际应用中,我们可能要将多个不同来源的数据连接合并在一起进行处理,也有可能要将一条流拆分成多条流进行处理,这就涉及到了Flink的多流转换问题。简单来说,就是分流和合流两大操作,分流主要通过侧输出流实现&#x…...
DirectUI属性表
<?xml version"1.0" encoding"UTF-8"?> <Controls><Window parent""><Attribute name"size" default"0,0" type"SIZE" comment"窗口的初始化大小,如(800,600)"/><Attribu…...
RBAC权限控制
1、Spring Security 是一个功能强大的Java安全框架,它提供了全面的安全认证和授权的支持。 2 SpringSecurity配置类(源码逐行解析) Spring Security的配置类是实现安全控制的核心部分 开启Spring Security各种功能,以确保Web应…...
STM32高级物联网通信之以太网通讯
目录 以太网通讯基础知识 什么是以太网 互联网和以太网的区别 1)概念与范围 (1)互联网 (2)以太网 2)技术特点 (1)互联网 (2)以太网 3)应用场景 (1)互联网 (2)以太网 以太网的层次 1)物理层 2)数据链路层 OSI 7层模型 TCPIP 4层模型 一些常见…...
【小程序】全局配置window和tabBar
目录 全局配置 1. 全局配置文件及常用的配置项 全局配置 - window 1. 小程序窗口的组成部分 2. 了解 window 节点常用的配置项 编辑 3. 设置导航栏的标题 4. 设置导航栏的背景色 5. 设置导航栏的标题颜色 6. 全局开启下拉刷新功能 7. 设置下拉刷新时窗口的背景色 …...
详解VHDL如何编写Testbench
1.概述 仿真测试平台文件(Testbench)是可以用来验证所设计的硬件模型正确性的 VHDL模型,它为所测试的元件提供了激励信号,可以以波形的方式显示仿真结果或把测试结果存储到文件中。这里所说的激励信号可以直接集成在测试平台文件中,也可以从…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
