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
    +关注

    关注

    1624

    文章

    21597

    浏览量

    601009
  • 控制器
    +关注

    关注

    112

    文章

    16064

    浏览量

    176919
  • 分辨率
    +关注

    关注

    2

    文章

    1028

    浏览量

    41853

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    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>器的直流/直流转换器解决方案

    PSoC 6 MCUBoot和mbedTLS是否支持加密硬件加速

    。 使用 MCUBoot 验证两个应用程序时,运行时间大约需要五秒钟。 在 README.md 的 \"安全 \"一栏中写道 与软件实现相比,硬件加速加密技术将启动时间缩短了四倍多
    发表于 05-29 08:17

    新思科技硬件加速解决方案技术日在成都和西安站成功举办

    近日,【新思科技技术日】硬件加速验证解决方案专场成都站和西安站顺利举行,来自国内领先的系统级公司、芯片设计公司以及高校的250多名开发者们积极参与。
    的头像 发表于 04-19 17:35 408次阅读

    Elektrobit利用其首创的硬件加速软件优化汽车通信网络的性能

    Elektrobit今日宣布推出 EB zoneo GatewayCore——首款支持、配置和集成现代微控制器新一代硬件加速器的软件产品,可应用于先进的汽车电子/电气架构(基于被广泛采用
    的头像 发表于 04-17 09:51 309次阅读

    用DE1-SOC进行硬件加速的2D N-Body重力模拟器设计

    该项目的目标是创建一个用DE1-SOC进行硬件加速的2D N-Body重力模拟器。
    的头像 发表于 04-09 11:08 470次阅读
    用DE1-SOC进行<b class='flag-5'>硬件加速</b>的2D N-Body重力模拟器设计

    330-基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U PXIe接口卡 图形图像硬件加速

    标签: Net FPGA , XC7K325T板卡 , XC7K325T处理板 , 软件无线电处理平台 , 图形图像硬件加速
    的头像 发表于 03-04 14:14 542次阅读
    330-基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U PXIe接口卡 图形图像<b class='flag-5'>硬件加速</b>器

    【国产FPGA+OMAPL138开发板体验】(原创)7.硬件加速Sora文生视频源代码

    信号 text_ready <= 0; end // 文本处理与视频生成(占位符,调用硬件加速器或实现相应算法) if (text_processing &&
    发表于 02-22 09:49

    音视频解码器硬件加速实现更流畅的播放效果

    思想是利用专门的硬件资源,如GPU或专用的解码芯片,来分担原本由CPU承担的解码任务。这种方式不仅可以大幅提高解码速度,还能降低CPU的负载,从而实现更流畅的播放效果。 硬件加速的优势 高效性能 :
    的头像 发表于 02-21 14:40 855次阅读
    音视频解码器<b class='flag-5'>硬件加速</b>:<b class='flag-5'>实现</b>更流畅的播放效果

    加速计算卡与AI显卡什么区别?

    加速计算卡与AI显卡什么区别? 加速计算卡与AI显卡是两种不同的硬件设备,它们在设计和功能上有显著区别。本文将详细介绍这两种设备的区别,包括它们的定义、原理、应用和性能等方面。 一、
    的头像 发表于 01-09 14:10 1185次阅读

    KubeCASH:基于软硬件融合的容器管理平台

    Kubernetes(K8S)虽然强大,但也有劣势,劣势在于K8S主要基于CPU平台。有的朋友可能会说,不是CDI吗,可以实现硬件加速器的支持。但其实CDI能做的事情非常有限,CRI、CNI
    的头像 发表于 01-08 10:16 1136次阅读
    KubeCASH:基于软<b class='flag-5'>硬件</b>融合的容器管理平台

    在Sigma 300里面使用硬件加速器slew,slew mode为RC type时不同的time constant的值什么用?

    请问下在Sigma 300里面使用硬件加速器slew,slew mode为RC type时,对应的time constant 与数据从当前值到目标值得时间什么关系,或者说不同的time constant的值什么用? 谢谢,
    发表于 11-29 07:25