HLS (High-Level Synthesis)对比PS运行速度

取决于你的算法复杂度、并行度以及数据搬运的效率。

对于简单的"向量加法",FPGA 甚至可能比 PS(ARM CPU)更慢 ;但对于"卷积、滤波、复杂数学运算",FPGA 会快出 10 倍到 100 倍

我们可以从以下三个维度来拆解这个"快"字:


1. 理论算力的对比:并行 vs 顺序

  • PS (Cortex-A9) :是串行执行的。即使有 NEON 协处理器,它一次也只能处理少量数据(SIMD)。如果你算 1024 个加法,CPU 需要跑一个循环,每个循环耗费几个时钟周期。
  • PL (FPGA) :是并行 执行的。在 HLS 中,如果你使用 #pragma HLS UNROLL,你可以同时调用 10 个甚至 100 个乘法器(DSP)在同一个时钟周期完成计算。

2. 实际案例对比(以图像卷积/滤波为例)

假设你正在处理一张 的图片进行高斯滤波:

平台 执行方式 耗时估计
PS (ARM A9) 嵌套循环,逐像素计算 ~100ms - 200ms
PL (HLS 优化) 行缓冲 (Line Buffer) + 流水线并行 ~2ms - 10ms
提升倍数 - 10x - 50x

为什么快这么多?

因为 FPGA 不需要像 CPU 那样不停地"取指令、译码、执行"。硬件电路一旦跑起来,数据就像水流一样流过计算单元,每个时钟周期都能吐出一个处理好的像素点。


3. 决定"快慢"的三个关键因素

在 Zynq-7020 上,如果你发现 FPGA 没比 PS 快,通常是因为以下原因:

A. 数据搬运开销(最大的坑)

正如你在代码中看到的,你需要 Xil_DCacheFlushRange(刷新缓存)。

  • CPU 算:数据就在 Cache 里,直接算。
  • FPGA 算:CPU 写数据 -> 刷新 Cache -> FPGA 从 DDR 读数据 -> 计算 -> FPGA 写回 DDR -> 丢弃 Cache -> CPU 读结果。

结论:如果算法太简单(比如仅仅是加法),搬运数据的时间会远远超过节省的计算时间。

B. 算法的复杂度
  • 简单运算:PS 占优。
  • 复杂运算(求平方根、三角函数、多层卷积):PL 占优。FPGA 可以通过消耗资源换取极低的指令周期。
C. 流水线 (Pipeline) 的深度

在 HLS 中,如果没有写好 PIPELINE 约束,FPGA 可能也是顺序执行的,主频又只有 100MHz-200MHz(远低于 A9 的 667MHz),这时候 FPGA 反而会输。


4. 什么时候该用 PL 运行?

满足以下条件之一,就应该把算法从 FreeRTOS 迁移到 PL:

  1. 实时性要求极高:比如电机控制,必须在几个微秒内做出反应,CPU 可能会被中断打断,但 FPGA 不会。
  2. 重复性计算量大:如视频流处理、FFT 变换、神经网络推理。
  3. 多通道同步:你需要同时处理 4 路传感器的原始数据。

总结建议

如果你只是做 C = A + B,在 PS 端做就好。如果你要做 1024 点的 FFT 或者 3x3 的图像卷积 ,PL 端通过 HLS 优化后,性能通常会有 20 倍以上 的质跃。

相关推荐
unicrom_深圳市由你创科技3 小时前
USB通信在FPGA上怎么实现?
fpga开发
GateWorld7 小时前
LCD显示技术完全指南:原理·制造·驱动·FPGA实现之基础二
fpga开发·lcd显示·minilvds·fpga点屏
禾刀围玉1 天前
基于FPGA的卷积神经网络实现-Step2 卷积模块设计
人工智能·fpga开发·cnn
fantasy_arch1 天前
fpga demo测试hello world
fpga开发
黑猫学长呀1 天前
存储宝典第6篇:测试机台的PE板和PPB板有什么区别?
测试工具·fpga开发·ssd·芯片测试·ate·存储芯片·测试机台
GateWorld1 天前
LCD显示技术完全指南:原理·制造·驱动·FPGA实现之基础一
fpga开发·lcd显示·fpga点亮屏幕·minilvds
Coder-hong2 天前
TopJTAG Probe连接zynq
fpga开发
Aaron15882 天前
RFSOC+VU13P/VU9P+GPU多通道同步一体化解决方案
人工智能·嵌入式硬件·算法·matlab·fpga开发·硬件架构·基带工程
ALINX技术博客2 天前
【黑金云课堂】FPGA技术教程Linux开发:串行通信接口与实时时钟模块
linux·fpga开发
Felven2 天前
国产ZYNQ multiboot功能介绍与实现
linux·fpga开发·multiboot·国产zynq