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模型,它为所测试的元件提供了激励信号,可以以波形的方式显示仿真结果或把测试结果存储到文件中。这里所说的激励信号可以直接集成在测试平台文件中,也可以从…...

实战二:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...

YOLO11解决方案之分析
概述 Ultralytics提供了一系列的解决方案,利用YOLO11解决现实世界的问题,包括物体计数、模糊处理、热力图、安防系统、速度估计、物体追踪等多个方面的应用。 Ultralytics提供了三种基本的数据可视化类型:折线图(面积图…...
详细讲解Flutter GetX的使用
Flutter GetX 框架详解:状态管理、路由与依赖注入 GetX 是 Flutter 生态中一款强大且轻量级的全功能框架,集成了状态管理、路由管理和依赖注入三大核心功能。其设计理念是简洁高效,通过最小的代码实现最大的功能,特别适合快速开发…...
oracle 归档日志与RECOVERY_FILE_DEST 视图
1. RECOVERY_FILE_DEST 视图的作用 RECOVERY_FILE_DEST 是 Oracle 数据库用于 管理快速恢复区(Fast Recovery Area, FRA) 的一个视图。FRA 是 Oracle 提供的一种集中存储恢复相关文件(如归档日志、备份文件、闪回日志等)的区域。…...

【超详细】英伟达Jetson Orin NX-YOLOv8配置与TensorRT测试
文章主要内容如下: 1、基础运行环境配置 2、Torch-GPU安装 3、ultralytics环境配置 4、Onnx及TensorRT导出详解 5、YOLOv8推理耗时分析 基础库版本:jetpack5.1.3, torch-gpu2.1.0, torchvision0.16.0, ultralytics8.3.146 设备的软件开发包基础信息 需…...

FreeRTOS任务之深入篇
目录 1.Tick1.1 Tick的概念1.2 Tick与任务调度1.3 Tick与延时函数 2.任务状态2.1 运行状态 (Running)2.2 就绪状态 (Ready)2.3 阻塞状态 (Blocked)5.4 暂停状态 (Suspended)2.5 特殊状态:删除状态 (Deleted)5.6 任务状态转换2.7 实验 3.Delay函数3.1 两个函数3.2 实…...
Lifecycle 核心原理面试回答
1. 核心目标与设计思想 解耦生命周期管理: 将 Activity/Fragment 的生命周期回调逻辑从视图控制器中剥离,让业务组件(如 Presenter, Repository 封装)能独立感知生命周期。 状态驱动: 将离散的生命周期事件 (ON_CREAT…...
Elasticsearch + Milvus 构建高效知识库问答系统《一》
🔍 Elasticsearch Milvus 构建高效知识库问答系统(RAG 技术实战) 📌 目录 背景介绍Elasticsearch 在知识库检索中的作用Milvus 在知识库检索中的作用混合检索:Elasticsearch Milvus完整代码实现部署建议与优化方向…...

解决uniapp开发app map组件最高层级 遮挡自定义解决底部tabbar方法
subNvue,是 vue 页面的原生子窗体,把weex渲染的原生界面当做 vue 页面的子窗体覆盖在页面上。它不是全屏页面,它给App平台vue页面中的层级覆盖和原生界面自定义提供了更强大和灵活的解决方案。它也不是组件,就是一个原生子窗体。 …...
Python爬虫实战:研究mechanize库相关技术
1. 引言 随着互联网数据量的爆炸式增长,网络爬虫已成为数据采集和信息挖掘的重要工具。Python 作为一种功能强大且易于学习的编程语言,拥有丰富的爬虫相关库,如 Requests、BeautifulSoup、Scrapy 等。Mechanize 库作为其中的一员,特别擅长处理复杂的表单提交和会话管理,为…...