• IC基础(七):FPGA为什么与ASIC频率差异巨大?


    为什么ASIC的频率可以达到GHz,而FPGA只能达到几百MHz?

    为什么实现同样的电路,ASIC 频率总是比 FPGA 要高?
    简单来看这是FPGA在要求“可重构”的特性时对速度做出的妥协。
     

    FPGA

    FPGA为了满足可重构的特性,被设计成了一个状的逻辑块矩阵电路,每个逻辑块里又有很多个相同的逻辑块,每个子逻辑块中有要实现任意电路的各种元素,比如LUT(逻辑查找表),用于组合逻辑的构成,和FF(flip-flop,即触发器)用于时序电路的构成。
    逻辑块之间是布线管道,其中有各种固定长短的线(segment)和连接这些线的开关(switch)
     

    ASIC

    一块ASIC电路要实现一个逻辑电路,只需按照你的电路设计图纸按原样把电路刻在芯片上,里面加法器就是我们在数电课本中看到的加法器,乘法器就是所熟知的乘法器,导线也是熟悉的不能再熟悉的没有中断的一根金属线而已。
     

    FPGA中的加法器和乘法器呢?

    加法器可能已经不是你知道的那个加法器了(当然高端FPGA都有加法器的hard logic这个另算),它已经被FPGA综合工具变成了一堆LUTs,没错,就是前面所说的这些逻辑元素。乘法器同理。

    FPGA中的导线呢?

    不是一根不间断的直导线了,它首先要从一个逻辑块出发,先经过一个进入布线管道,然后前面遇到了一个Switch Box(假设是Altera家的板子),也就是十字路口,经过十字路口中的开关跳转,它可能左拐了,然后又遇到一个SB,……几经周折,终于到了目的逻辑块的门口,又要经过一个开关,进入目的逻辑块和里面的逻辑元素相连,就这样构成一个可能再普通不过的加法器、乘法器,等等。

    所以FPGA为什么频率肯定没有ASIC高你现在一定清楚了。

    第一,实现同样的功能,FPGA需要更大的面积,在更大的面积的情况下,即使用纯导线,其导线总长度(或严格一点,critical path的导线长度)也要比ASIC的电路长。

    第二,其实也是最重要的一点,就是布线结构(routing architecture)非常复杂,一条导线从a到b,一般总要经过几个开关,而这些开关都是有延时的,这个延时非常大,是FPGA频率不得提高的主要原因。

    要使FPGA做到完全和ASIC速度一样快应该是不可能的,这是由它的可重构特性直接决定的。

    但折中的办法不是没有,比如我前面提到hard logic,就是把一些通常使用频次很高的逻辑电路直接以ASIC的方式嵌入到FPGA里面,比如加法器乘法器等等,一旦要用到它们,也就不用再像以前那样用好多个逻辑块来造它了,这样就减小了面积、提高了速度、降低了功耗。现在高端一点的FPGA里面不仅有这些加法乘法器的小玩意,还有存储器,DSP,微处理器等等。它们的目的都是相同的,就是为了在保证可重构特性的情况下,尽量拉近与ASIC电路的距离,提高性能。

  • 相关阅读:
    jdk动态代理底层实现
    spring-FactoryBean
    大型网站技术架构 核心原理与案例分析 pdf
    实战JAVA虚拟机 JVM故障诊断与性能优化 pdf
    《实战Java高并发程序设计》pdf
    mysql-注意点
    Json入门
    inflate, findViewById与setContentView的区别与联系
    提高编程能力的7条建议
    JDBC之一:JDBC快速入门
  • 原文地址:https://www.cnblogs.com/streetlive/p/13022032.html
Copyright © 2020-2023  润新知