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 倍以上 的质跃。

相关推荐
chenlance2 小时前
基于FPGA的激光器多通道数据采集与波形控制系统设计
fpga开发
9527华安5 小时前
FPGA实现GTP高速收发器2路视频传输,基于aurora 8b10b编解码架构,提供4套工程源码和技术支持
图像处理·fpga开发·aurora·高速收发器·8b10b·derdes
cjie2215 小时前
lanczos插值引起的振铃现象
计算机视觉·fpga开发
liuluyang5305 小时前
Verilog 中 wire 与 wor 的区别详解
fpga开发·verilog
GateWorld1 天前
LCD显示技术完全指南:原理·制造·驱动·FPGA实现之点屏五 miniLVDS
fpga开发·lcd显示·fpga点亮屏幕·minilvds
nuoxin1142 天前
WILX1200HC-5TG144I替代 LCMXO2-1200HC-5TG144I(富利威)
人工智能·嵌入式硬件·fpga开发·电脑·硬件工程·dsp开发
Bahair_2 天前
【FPGA】使用fdatool设计滤波器系数,使用FIR Compiler导入系数联合滤波
fpga开发
qq_411262422 天前
硬件是ESP32-P4连接LAN8720A,正常初始化之后,设备DHCP失败
stm32·单片机·fpga开发
第二层皮-合肥2 天前
【数据采集专栏】时钟同步(有时钟卡方案)
fpga开发
XINVRY-FPGA2 天前
XCKU035-2FBVA676I AMD Xilinx Kintex UltraScale FPGA
arm开发·嵌入式硬件·网络安全·fpga开发·硬件工程·信号处理·fpga