• 简单谈下FPGA是如何实现硬件加速的


    CNN神经网络算法刚出来的时候,就采用了FPGA作为物理机来实现,为何会率先采用FPGA作为算法加速器而非通用CPU,本文谈谈个人的理解。
    首先明确FPGA与通用CPU的区别,CPU里设置流水线结构,而FPGA则是采用自定制的并行结构。就比如CPU最经典的5级流水线结构,一条指令的操作过程可以拆分为取指、译码、执行、访存、写回五个独立的子指令,通过流水线架构,使5条流水线分别执行上述5个独立指令,从而确保在每个时钟周期内执行一条指令。而FPGA则是一片白纸,用户可以自己需求增加同倍硬件资源,且增加的硬件资源可在同一时钟下进行并行运算,实现处理能力的成本增长。
    以一个简单的c程序为例,
    for(i=0;i<10;i++)
      x[i] = a[i] + b[i];

    for循环下的加法运算,如果采用上述5级流水线架构的CPU,执行完一次 x=a+b运算需要一个时钟周期(5级流水线完成5条子指令),那么整个算法执行完成需要10个硬件周期。而使用FPGA来做上述运算,一般地,FPGA会直接把上述算法直接复制十份,就如下图所示

    因为之前说过FPGA就是一张白纸,用户可以自己按需求使用它的硬件资源,如果采用上图所示的方法,则FPGA实现上述算法只需要一个硬件时钟周期。即计算时间对比5级流水架构的CPU缩减至其1/10。
    当然,根据用户需要,可以采用5倍,2倍的硬件资源来做这部分的算法,而将多出来的硬件资源用于更加核心的算法部分。
  • 相关阅读:
    shell test -n -z
    java -d64
    shell export
    topngroupcollector
    stat 查看文件修改时间
    随机30道小学计算题02(修改)
    设计四则运算2程序单元测试用例
    学习进度02
    随机30道小学计算题02
    随机30道小学计算题01
  • 原文地址:https://www.cnblogs.com/johor-yangmumu/p/14824522.html
Copyright © 2020-2023  润新知