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

吞吐量最优化设计

一、吞吐量最优化概念
1.dataflow
2.pipeline
3.unroll
4.throughput


二、吞吐量(Throughput)定义和指标
1.吞吐量作为设计的关键指标
优化吞吐量主要靠并行化和减少空闲时间周期。
2.流水线设计和数据流设计是提高throughput的关键方式
3.吞吐量(Throughput) 通常指设计单位时间内能处理的数据量或任务数
最直接的衡量指标是 启动间隔(Initiation Interval, II) ——即两次新输入之间所需的时钟周期数。理想的 II=1 意味着每个时钟周期都能接收新数据,吞吐量最高。


三、流水线化设计
1.流水线设计是将复杂的设计拆成多个简单的步骤或者阶段进行
多个处理阶段可以重叠进行,从而减少完成一个数据蔡启动下一个的串行等待;
2.pipeline的目标是要追求II=1
优化方式:
打破依赖:去除循环间的数据依赖(RAW 依赖)。例如用局部变量暂存中间结果,或改写算法避免迭代间数据复用。

load & store分离:将读写分成现态和次态分别处理,从而规避依赖;

数组分割 — #pragma HLS ARRAY_PARTITION:将大数组拆成多个小块或寄存器,增加存储器端口,保证流水线每个周期都能独立读写。

数组copy复用--将同一份数据内容拷贝赋值到多个数组中去使用

循环展开 — #pragma HLS UNROLL:部分或完全展开循环,以更多硬件资源换取并行性,减小 II。若完全展开,循环将变成全并行组合逻辑,吞吐量极高但面积暴增。

循环扁平化 — #pragma HLS LOOP_FLATTEN:将嵌套循环合并为单层循环,使最内层循环获得更大的流水线优化空间。

3.pipeline的目标只能到II=2
这个时候需要的方式,就是连续读取2个节拍数据,然后进行处理,这样即使II=2,但是同一个流程处理了两个并行度,最终II等效为1.


四、loop_tripcount设计

for(int i=0;i<100;i++){}

for(int i=0;i<100;i=i+2){}
vivado hls中loop_tripcount表示的含义,如果索引i按照1自增和i按照2自增,loop_tripcount应该是多少?

对于这两个循环:

**for(int i=0;i<100;i++){}
循环从i=0开始,每次i增加1,直到i<100
i的取值:0, 1, 2, …, 99
总共执行100次
loop_tripcount = 100
**for(int i=0;i<100;i=i+2){}
循环从i=0开始,每次i增加2,直到i<100
i的取值:0, 2, 4, …, 98
计算方法:(98-0)/2 + 1 = 49 + 1 = 50次
loop_tripcount = 50
因此:

第一个循环的loop_tripcount是100
第二个循环的loop_tripcount是50

// 对于 i++ 的循环
#pragma HLS loop_tripcount min=100 max=100 avg=100

// 对于 i=i+2 的循环
#pragma HLS loop_tripcount min=50 max=50 avg=50

五、吞吐量计算
1.HLS高层次综合中衡量的核心指标是
启动间隔II

时钟频率Frequency

2.基于II和数据率的计算公式
对于流式数据处理,吞吐量计算公式为:
Throughput = fclk/II;
其中,fclk综合后时序的时钟频率,单位是HZ;
II:两次新输入之间所需的最小时钟周期数,可从综合报告中直接读出。

若时钟频率 200 MHz,循环 II=2,则该循环的数据吞吐率为 100 MSamples/s。若优化为 II=1,则吞吐率翻倍至 200 MSamples/s。

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

相关文章:

  • 基于keras框架的MobileNetV2深度学习神经网络蔬菜分类识别系统源码
  • Smithbox入门指南:零基础掌握魂系列游戏修改神器
  • 如何轻松获取Sketchfab 3D模型资源:Firefox用户脚本实用指南
  • Xmind思维导图使用教程:从基础操作到高阶功能全解析
  • HarmonyOS应用实战-启示散页-76-清空数据别只删 Preferences:同步 AppStorage、缓存和恢复账本
  • 长春空气能采暖选购网点哪家专业:【芬尼】合规经营 - 18002239949
  • JazzIt常见问题解决:依赖安装、音乐播放失败等问题排查
  • 【AI法律文书写作实战指南】:20年律所技术总监亲授,3类高风险文书自动生成避坑清单
  • 终极指南:用yuzu模拟器在PC上畅玩Switch游戏
  • Supabase Kubernetes迁移指南:使用Migration资源管理数据库变更
  • 公司注销后小程序怎么办?2026年代办机构推荐与线上办理流程 - 跑政通
  • 为什么你学网安半年还是“只会复现”?解锁从复刻小白到独立挖洞的完整蜕变路线
  • 基于keras框架的LSTM深度学习神经网络手写字识别系统源码
  • Unity单例模式深度解析:从实现到架构的避坑指南
  • 大数据开发平台
  • 2026北京数字展厅设计公司哪家靠谱?数字展厅展馆选型指南
  • CSDN排名记录
  • arcconf的介绍,安装和使用方法
  • leetcode刷题(2):链表
  • Unity高效开发:构建可复用的脚本工具库架构与核心模块实现
  • 国产长芯微LPA620完全PIN-PIN替代AD620,参数对比分析
  • ansible安装部署及常用模块详解(超详细)
  • 09_大模型里的竞品分析怎么做_AnswerBit对比监控指南
  • 透明背景图制作全攻略:2026年手机电脑都会用到的实用方法 - 耶斯去水印
  • 华南数字产业人力服务:广州猎头公司、杭州猎头公司服务商参考 - 榜单推荐
  • WebUploader文件上传终极指南:5分钟实现高性能跨浏览器上传方案
  • 【ICLR 2023】时间序列预测实战Crossformer(附代码+数据集+详细讲解)
  • 如何快速诊断网络连接问题:3步使用NatTypeTester解决网络NAT类型难题
  • 拼多多营业执照更换机构推荐,2026年线上操作指南 - 跑政通
  • 深度学习调参实录:学习率0.001到0.0001的6小时血泪史与梯度诊断工具链