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

作者:岑川
链接:https://www.zhihu.com/question/51179323/answer/124680433
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

为什么实现同样的电路,asic频率总是(几乎是一定)比FPGA要高?简单来看这是FPGA在要求“可重构”的特性时对速度做出的妥协。FPGA为了满足可重构的特性,被设计成了一个岛状的逻辑块矩阵电路,每个逻辑块里又有很多个相同的子逻辑块,每个子逻辑块中有要实现任意电路的各种元素,比如LUT(逻辑查找表),用于组合逻辑的构成,和FF(flip-flop,即触发器)用于时序电路的构成。逻辑块之间是布线管道,其中有各种固定长短的线(segment)和连接这些线的开关们(switch)。一块Asic电路要实现一个逻辑电路,只需按照你的电路设计图纸按原样把电路刻在芯片上,里面加法器就是你在数电课本中看到的加法器,乘法器就是你所熟知的乘法器,导线也是你熟悉的不能再熟悉的,没有中断的一根金属线而已。

而FPGA呢?加法器可能已经不是你知道的那个加法器了(当然高端FPGA都有加法器的hard logic这个另算),它已经被FPGA综合工具变成了一堆LUTs,没错,就是前面所说的这些逻辑元素。乘法器同理。导线呢?不是一根不间断的直导线了,它首先要从一个逻辑块出发,先经过一个开关,进入布线管道,然后前面遇到了一个Switch Box(假设是Altera家的板子),也就是十字路口,经过十字路口中的开关跳转,它可能左拐了,然后又遇到一个SB,……几经周折,终于到了目的逻辑块的门口,又要经过一个开关,进入目的逻辑块和里面的逻辑元素相连,就这样构成一个可能再普通不过的加法器、乘法器,等等。

所以FPGA为什么频率肯定没有Asic高你现在一定清楚了。第一,实现同样的功能,FPGA需要更大的面积,在更大的面积的情况下,即使用纯导线,其导线总长度(或严格一点,critical path的导线长度)也要比asic的电路长吧?第二,其实也是最重要的一点,就是布线结构(routing architecture)非常复杂,一条导线从a到b,一般总要经过几个开关,而这些开关都是有延时的,这个延时非常大,是FPGA频率不得提高的主要原因。

<img src="https://pic2.zhimg.com/50/1ebba50919599274f79a74fa59ac3c55_b.jpg" data-rawwidth="1630" data-rawheight="1612" class="origin_image zh-lightbox-thumb" width="1630" data-original="https://pic2.zhimg.com/1ebba50919599274f79a74fa59ac3c55_r.jpg">
上图中粉色线为一整条等电平的“导线”,又臭又长。asic看到了肯定会嫌弃有没有啊……

<img src="https://pic3.zhimg.com/50/ab476e7198a716aaded841478d91053c_b.jpg" data-rawwidth="1654" data-rawheight="1578" class="origin_image zh-lightbox-thumb" width="1654" data-original="https://pic3.zhimg.com/ab476e7198a716aaded841478d91053c_r.jpg"> 上图绿色方块是一个SB!粉色线还是刚刚那条“导线”。注意是“一条”导线哦。现在知道FPGA中导线们的十字路口有多复杂了吗?

(工具用的是VPR [2],学术界的开放综合工具。商业工具看不到这么详细的routing arch)

实际上,题主这个问题在06年已经被多伦多大学的课题组调研过了[1],他们的研究表明,对于一个只有组合和时序逻辑(没有memory等)的电路来说,平均下来,在FPGA上实现需要40倍于asic电路的面积,3~4倍的关键路径延时,和12倍的功耗。而这里面其实吧,大多数都是布线结构的锅。面积上,布线结构一般要占FPGA总面积的60~70%左右,延时上,这个数字只会更高。所以FPGA的布线结构和布局布线算法是一个FPGA领域中很重要的一个研究方向。

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

为了提高速度,还有很多方法,比如用流水线对逻辑做分段等等,这里就不多说啦。题主还有什么问题还都可以问我~

Ref:
[1]. I. Kuon and J. Rose, “Measuring the gap between FPGAs and ASICs,” inProceedings of the Internation Symposium on Field Programmable Gate Arrays (FPGA ’06), Monterey,California, USA, ACM Press, New York, NY, Feb. 22–24, 2006, pp. 21–30.
[2]. J. Rose, J. Luu, C. Yu, O. Densmore, J. Goeders,A. Somerville, K. Kent, P. Jamieson, and J. Anderson.The VTR Project: Architecture and CAD for FPGAsfrom Verilog to Routing. In ACM/SIGDA Int.Symposium on Field-Programmable Gate Arrays,pages 77–86, 2012.
[3]. V. Betz, J. Rose, A. Marquardt, “Architecture & CAD For Deep-Submicron FPGAs”, Kluwer Academic Publishers, 1999.
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA(现场可编程门阵列)和ASIC(专用集成电路)是数字电路设计中常见的两种实现方式,它们在概念上有以下区别: 1. 可编程性:FPGA是可编程的数字电路芯片,可以通过编程实现不同的数字电路功能,具有灵活性和可重构性;而ASIC是定制的数字电路芯片,需要经过设计和制造的过程,功能固定不可更改。 2. 应用范围:FPGA适用于中等规模的数字系统,可以实现各种数字逻辑功能,并且可以在设计完成后进行修改和重新编程;ASIC适用于大规模、高性能的数字系统,可以实现复杂的数字电路功能,具有高性能和低功耗的优点,但需要长时间的设计和制造过程。 3. 成本:FPGA的成本相对较低,适用于中小规模的数字系统,而ASIC的成本较高,适用于大规模数字系统,但成本随设计和制造的复杂度而增加。 4. 时序和功耗:FPGA的时序和功耗相对ASIC要差一些,这主要是由于FPGA采用的是可编程逻辑单元(PLC)实现数字电路功能,而ASIC采用的是专用电路单元(gate)实现数字电路功能。 综上所述,FPGAASIC在概念上的区别是:FPGA是可编程的数字电路芯片,适用于中等规模的数字系统,具有灵活性和可重构性;ASIC是定制的数字电路芯片,适用于大规模、高性能的数字系统,具有高性能和低功耗的优点,但需要长时间的设计和制造过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值