0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用硬件加速实现的基本思维有哪些

FPGA自习室 ? 来源:FPGA自习室 ? 作者:FPGA自习室 ? 2021-06-30 15:37 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

很多图像算法不涉及对颜色的识别,仅需要识别灰度目标的变化即可,因此很多时候需要将彩色图像转换为灰度图像,在进行进一步的处理。彩色转灰度计算公式如下:Y=0.299*R + 0.587*G + 0.144*B,作者以05年的嵌入式系统计算,采用640*480的图像进行试验,一系列的图像优化如下(只是类比,不要太在意数据):

1)一维数组索引比三维快,因此先将RGB三维数组转成一维数组,再直接用上述公式进行计算,嵌入式系统计算时间为120秒;

2)由于Windows位图是ARGB8888的精度,因此计算结果仅需要8bit整形,可忽略小数,假定左右扩大1000倍去转定点计算,则新的公式如下:Y=(299R + 587*G + 144*B)/1000,此时嵌入式系统计算时间加快到45秒;

3)除法计算太慢,扩大2N次方可转移位操作,假定扩大4096倍转定点,则新的公式如下:Y=(R*1224+G*2404+B*467)>>12,计算进一步加快到30秒;

4)由于RGB的取值是固定的[0,255],因此公式中每一步运算其实都可以提前计算好,然后直接索引——查找表,这样将执行计算转换成了执行索引,此时再测试计算速度惊人的提升到了2秒;

5)接着作者再马力全开,采用2个ALU并行计算,并且将查找表从int型改成unsigned short型,以及函数声明为inline,减少CPU的调用开销,最后在嵌入式系统上将计算速度提升到了0.5秒。

以上为conquer 05年《让你的软件飞起来》中的相关数据,通过软件优化的提升,从最初的120S提升到了0.5S,将近240倍,足以见得一个优秀的软件工程师的重要性,也许IOS和Windows的性能差距那么大,也由此方面原因吧。

8dcbbfca-d8d3-11eb-9e57-12bb97331649.png

目前多媒体视频普遍到了2K/4K的分辨率,以4K视频为例,其运算量是640*480的30.7倍((4096*2304)/(640*480)≈30.7),那么0.5*30.7=15.35秒怎么做到实时视频处理/显示呢(60FPS下单帧16.667ms),差92000倍呢。PC采用GPU加速处理完成图形运算,但如果是终端产品,如果没有昂贵的CPU,也没有其他加速引擎,那简直天方夜谭。那么,此时主角该上场了——硬件加速器,让我们开始他的表演。
以4096*2304的4K60视频RGB转YUV为例,进行硬件思维的加速计算解说。不管是FPGA还是ASIC,以门级电路并行加速运算,时序逻辑每个时钟翻转完成一次计算。前面《让你的软件飞起来》中(2)已经完成了定点化,然后(3)采用乘法+移位的方式实现,(4)采用查找表再累加的方式实现。单从效率上考虑,两者计算一个像素的灰度均耗用3个CLK(乘法、累加、移位,或给RAM地址、读RAM数据,累加);但从资源上对比,前者占用3个乘法器和2个加法器,乘法器数量不多,但是综合速率受器件的限制,后者则需要3个19bit*256深度的RAM,占用了更多的面积,综合速率上也受到RAM的限制。两者都用了专用单元库,但采用硬件乘法器面积更小,且灵活性更强,工作量也更小(不用专门去生成),因此用硬件加速首选采用优化方式(3),具体实现流水线如下:

STEP1:采用三个乘法器,并行计算当前输入像素的RGB通道乘法,即R*1224,G*2404, B*467;

STEP2:将上述三个结果直接进行累加;同时计算下一个像素的STEP1操作;

STEP3:将累加后的结果向右移动12bit,取低8bit得到最后的结果;同时计算下一个像素的STEP1,STEP2。

8e206b9c-d8d3-11eb-9e57-12bb97331649.png

以流水线式循环操作完一副完整的图像,如果是输入到下一级算法处理,则整体的延时仅为3个CLK,因为三个时钟后得到灰度图像的1个像素,立马可以进行下一级运算;如果图像写回缓存,我们再来精算一下:以主频250MHz为例(事实上28nm ASIC跑500MHz甚至1GHz都不是问题,FPGA 45nm的250MHz也没有问题),则需要(4096*2304+2)*4ns=37.75ms>16.667ms。

8e46f8e8-d8d3-11eb-9e57-12bb97331649.png

直接流水线实现,貌似这还不够满足我们实时的需求,毕竟很多运算需要从内存中来,回到内存中去,还得给别的算法预留时间,彩色转灰度这只是算法的第一步而已,复杂的还没来呢。那我们继续想办法突变限制,充分利用硬件加速,挑战不可能。既然采用门级电路,那不存在线程的约束,然而我们已经采用了流水线并行计算灰度值,那进一步想是否可以同时计算n个像素的灰度值呢?答案是肯定的,如下图所示:

8e840436-d8d3-11eb-9e57-12bb97331649.png

假设DDR控制器位宽是256bit,则一次性可以读取32个pixel的数据,32个像素同时计算需要96个乘法器,64个加法器,这些资源的需求甚至对低端的FPGA都不是问题,对于ASIC来说没有太大的面积影响。因此还是在主频250MHz,DDR控制器带宽256bit条件下,我们处理一副4096*2304彩转灰图像的时间为:37.35/32≈1.17ms<16.667ms,采用并行运算提升32倍效率后,4K图像仅需要1.17ms,完全能够满足实时性,甚至还给后续算法预留了90%以上的时间,可以满足系统的需求。

综上,采用硬件加速实现的几种基本思维,总结如下:

1)浮点转定点,硬件乘法+移位实现加速;

2)资源够的前提下,充分利用并行计算,在单位时间提升计算量;

3)充分利用流水线特性,算法采用Pipeline的方式进行计算,能不回内存就不回内存,能用localbuffer就用localbuffer;

4)尽量少用CPU参与计算,硬件自动完成状态跳转,除非最终结果浮点等复杂的运算;

文章出处:【微信公众号:FPGA自习室】

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1646

    文章

    22096

    浏览量

    620599
  • 控制器
    +关注

    关注

    114

    文章

    17252

    浏览量

    185411
  • 分辨率
    +关注

    关注

    2

    文章

    1084

    浏览量

    42818

原文标题:图像处理硬件加速引擎——不断突破限制(下)

文章出处:【微信号:FPGA_Study,微信公众号:FPGA自习室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RISC-V 的平台思维和生态思维

    RISC-V 的平台思维时指出,平台思维指的是硬件(CPU、加速器、总线等)、固件和软件的整体集成。标准化 ISA 配置文件是必要的
    发表于 07-17 14:04 ?3930次阅读

    基于FPGA的压缩算法加速实现

    本设计中,计划实现对文件的压缩及解压,同时优化压缩中所涉及的信号处理和计算密集型功能,实现对其的加速处理。本设计的最终目标是证明在充分并行化的硬件体系结构 FPGA 上
    的头像 发表于 07-10 11:09 ?1519次阅读
    基于FPGA的压缩算法<b class='flag-5'>加速</b><b class='flag-5'>实现</b>

    国际首创新突破!中国团队以存算一体排序架构攻克智能硬件加速难题

    2025 年 6 月 25 日,北京大学团队在智能计算硬件方面取得领先突破,国际上首次实现了基于存算一体技术的高效排序硬件架构 (A fast and reconfigurable
    的头像 发表于 07-02 16:50 ?273次阅读
    国际首创新突破!中国团队以存算一体排序架构攻克智能<b class='flag-5'>硬件加速</b>难题

    新思科技硬件加速验证技术日即将来袭

    在AI、HPC、智能汽车高速迭代的驱动下,全球半导体行业正面临千亿门级芯片设计复杂度与上亿行代码级系统验证的双重压力。如何加快从芯片到系统的全面验证与实现,已成为定义下一代芯片创新的核心命题。
    的头像 发表于 05-08 10:09 ?444次阅读

    2D图形渲染缓慢怎么加快?

    到 glReadPixels (慢!):没有可用的 GL 实现” 搜索表明这可能是因为未启用硬件加速。 有谁知道如何检查是否启用了硬件加速?或者,如果我可能缺少一些应该包含的 Yocto 软件包? 谢谢。
    发表于 04-02 06:46

    开关电源芯片CY3783A的工作原理

    芯片的快速启动,是通过硬件加速、电路优化和软件协同设计实现的,可以缩短系统上电至稳定运行的时间。
    的头像 发表于 03-07 17:14 ?610次阅读

    数据中心中的FPGA硬件加速

    ? 再来看一篇FPGA的综述,我们都知道微软包括国内的云厂商其实都在数据中心的服务器中部署了FPGA,所以这篇论文就以数据中心的视角,来看下FPGA这个硬件加速器。 还是一样,想要论文原文的可以私信
    的头像 发表于 01-14 10:29 ?767次阅读
    数据中心中的FPGA<b class='flag-5'>硬件加速</b>器

    《CST Studio Suite 2024 GPU加速计算指南》

    许可证模型的加速令牌或SIMULIA统一许可证模型的SimUnit令牌或积分授权。 4. GPU计算的启用 - 交互式模拟:通过加速对话框启用,打开求解器对话框,点击“加速”按钮,打开“硬件
    发表于 12-16 14:25

    支持5点手写硬件加速视频演示-VS680与智慧教室解决方案

    硬件
    深蕾半导体
    发布于 :2024年12月03日 16:01:19

    基于Xilinx XCKU115的半高PCIe x8 硬件加速

    基于Xilinx XCKU115的半高PCIe x8 硬件加速卡,支持2x72bit(数据位宽64bit+ECC)DDR4存储,数据传输速率 2400Mb/s。DDR4单簇容量4GB,两组总容量为8GB
    的头像 发表于 11-14 11:30 ?885次阅读
    基于Xilinx XCKU115的半高PCIe x8 <b class='flag-5'>硬件加速</b>卡

    FPGA加速深度学习模型的案例

    FPGA(现场可编程门阵列)加速深度学习模型是当前硬件加速领域的一个热门研究方向。以下是一些FPGA加速深度学习模型的案例: 一、基于FPGA的AlexNet卷积运算加速 项目名称
    的头像 发表于 10-25 09:22 ?1342次阅读

    RISC-V跑AI算法能加速吗?

    现在好多ARM单片机都带机器学习加速,RISC-V有这方面的硬件加速吗?
    发表于 10-10 22:14

    TDA4VM上的硬件加速运动恢复结构算法

    电子发烧友网站提供《TDA4VM上的硬件加速运动恢复结构算法.pdf》资料免费下载
    发表于 09-24 11:39 ?0次下载
    TDA4VM上的<b class='flag-5'>硬件加速</b>运动恢复结构算法

    AM62A SoC通过硬件加速视觉处理改进条形码读取器

    电子发烧友网站提供《AM62A SoC通过硬件加速视觉处理改进条形码读取器.pdf》资料免费下载
    发表于 09-04 09:52 ?0次下载
    AM62A SoC通过<b class='flag-5'>硬件加速</b>视觉处理改进条形码读取器

    适用于数据中心应用中的硬件加速器的直流/直流转换器解决方案

    电子发烧友网站提供《适用于数据中心应用中的硬件加速器的直流/直流转换器解决方案.pdf》资料免费下载
    发表于 08-26 09:38 ?0次下载
    适用于数据中心应用中的<b class='flag-5'>硬件加速</b>器的直流/直流转换器解决方案