当前位置: 首页 > news >正文

高层次综合设计模式

一、设计模式
1.吞吐量的关键模式之一是生产者-消费者模式(任务级别的流水线打拍)
dataflow指令或者hls::task
2.流水线模式(指令级流水线打拍)
pipeline指令
3.串流数据范例

二、三种设计模式混合使用

1.大部分情况优化的焦点是函数和循环。
2.要为 FPGA 平台编写优秀软件,就需要了解这三个范例:生产者使用者、串流数据和流水打拍。

三、任务模型和架构
1.数据驱动的任务
纯数据驱动,不需要和外部存储器进行任何交互,函数可以并行执行,没有数据依赖关系,这种情况下使用
数据驱动任务模式是比较合适的。这种模式下的设计是free-run始终运行的,不需要进行任何控制,只是需要
对数据样本做出响应即可。


2.控制驱动的任务
如果应用需要和外部存储器进行交互,并且执行的任务存在数据依赖关系,那么适合使用控制驱动任务的模型。


3.单一设计内混用控制驱动任务与数据驱动任务

四、数据驱动的任务级别并行度
在 Vitis HLS 工具中实现数据驱动的 TLP 会使用简单的类来进行任务建模 (hls::task) 和通道建模 (hls::stream/
hls::stream_of_blocks);虽然 Vitis HLS 支持对顶层函数使用 hls::tasks,但对于顶层函数中的接口,则无法使用
hls::stream_of_blocks。

#include "test.h"
void splitter(hls::stream<int> &in, hls::stream<int> &odds_buf,
hls::stream<int> &evens_buf) {
int data = in.read();
if (data % 2 == 0)
evens_buf.write(data);
else
odds_buf.write(data);
}
void odds(hls::stream<int> &in, hls::stream<int> &out) {
out.write(in.read() + 1);
}
void evens(hls::stream<int> &in, hls::stream<int> &out) {
out.write(in.read() + 2);
}
void odds_and_evens(hls::stream<int> &in, hls::stream<int> &out1,
hls::stream<int> &out2) {
hls_thread_local hls::stream<int> s1; // channel connecting t1 and
t2
hls_thread_local hls::stream<int> s2; // channel connecting t1 and t3
// t1 infinitely runs function splitter, with input in and outputs s1
and s2
hls_thread_local hls::task t1(splitter, in, s1, s2);
// t2 infinitely runs function odds, with input s1 and output out1
hls_thread_local hls::task t2(odds, s1, out1);
// t3 infinitely runs function evens, with input s2 and output out2
hls_thread_local hls::task t3(evens, s2, out2);
}

http://www.jsqmd.com/news/708935/

相关文章:

  • LLM策略合成在多智能体协作中的应用与优化
  • 保姆级教程:在Ubuntu上搞定NXP i.MX8的Yocto工具链(fsl-imx-wayland 4.14-sumo)
  • 想知道艺赛旗RPA学习成本高吗、市场占有率如何,能提高多少工作效率 - 工业设备
  • 微型隔膜气泵厂家怎么选?看懂这一家,你就不再迷茫 - 企师傅推荐官
  • Draw Call 优化
  • 除了写代码,程序员最该投资的3项“软技能”
  • 5个高效数据提取的最佳实践方案:Web Scraper Chrome扩展深度指南
  • 掌握 FloPy:Python 地下水流建模的完整指南
  • 终极macOS视频预览解决方案:QuickLookVideo让你的Finder支持30+视频格式
  • 多模态控制图像生成:统一框架设计与应用实践
  • 告别算法内卷:留学生如何切入硅谷与欧洲 EdTech (AI Tutor) 的千亿蓝海
  • Windows电脑如何直接安装安卓应用:APK安装器终极使用指南
  • 如何用3步完成Evernote数据自主管理:完整本地备份终极方案
  • Portarium:自托管服务统一入口与反向代理部署实战
  • 终极指南:如何一键扩展Android Auto功能,无需Root手机
  • 企业级AI动态经济模拟架构与融资决策算法解析
  • 【2026唯一认证配置手册】:NVIDIA Container Toolkit v1.15兼容表+CUDA 12.6动态绑定方案,官方未公开的3个隐藏flag
  • 前端工程化最佳实践
  • 2026年4月福建应急发电机采购指南:淘工控硬实力解析与优选推荐 - 2026年企业推荐榜
  • 2026年昆明短视频运营与AI搜索优化:本地企业全网营销获客完全指南 - 企业名录优选推荐
  • C语言实现PLCopen Part 3兼容性开发:从零构建符合IEC 61131-3标准的可移植运行时引擎
  • 10个Illustrator脚本工具:让设计效率提升10倍的秘密武器
  • 数据安全中的加密计算与隐私保护技术
  • 手把手教你用LDRA Testbed配置MISRA-C-2012检查,让代码合规更高效
  • 2小时,我搭了一套采购+库存一体化系统!
  • E7Helper:为《第七史诗》玩家设计的智能自动化助手
  • 四川地区赛事物料租赁服务商选择参考 - 深度智识库
  • Go 模块依赖管理策略
  • Windows 10安卓子系统反向移植:无需Win11的完整Android应用生态解决方案
  • 保姆级避坑指南:在Ubuntu 21.04上搞定USRP X410与Gnuradio 3.9的完整配置流程