找回密码
 注册
关于网站域名变更的通知
查看: 723|回复: 1
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-28 10:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
* m8 T( A7 ~* {6 I7 d2 T+ _$ e% f
转——为什么ASIC的频率可以达到GHz,而FPGA只能达到几百MHz?

' ?. @. \) a9 }0 f  y6 Z为什么实现同样的电路,asic频率总是(几乎是一定)比FPGA要高?简单来看这是FPGA在要求“可重构”的特性时对速度做出的妥协。FPGA为了满足可重构的特性,被设计成了一个岛状的逻辑块矩阵电路,每个逻辑块里又有很多个相同的子逻辑块,每个子逻辑块中有要实现任意电路的各种元素,比如LUT(逻辑查找表),用于组合逻辑的构成,和FF(flip-flop,即触发器)用于时序电路的构成。逻辑块之间是布线管道,其中有各种固定长短的线(segment)和连接这些线的开关们(switch)。一块Asic电路要实现一个逻辑电路,只需按照你的电路设计图纸按原样把电路刻在芯片上,里面加法器就是你在数电课本中看到的加法器,乘法器就是你所熟知的乘法器,导线也是你熟悉的不能再熟悉的,没有中断的一根金属线而已。
: K! Z+ W3 b2 p, p' ?( T而FPGA呢?加法器可能已经不是你知道的那个加法器了(当然高端FPGA都有加法器的hard logic这个另算),它已经被FPGA综合工具变成了一堆LUTs,没错,就是前面所说的这些逻辑元素。乘法器同理。导线呢?不是一根不间断的直导线了,它首先要从一个逻辑块出发,先经过一个开关,进入布线管道,然后前面遇到了一个Switch Box(假设是Altera家的板子),也就是十字路口,经过十字路口中的开关跳转,它可能左拐了,然后又遇到一个SB,……几经周折,终于到了目的逻辑块的门口,又要经过一个开关,进入目的逻辑块和里面的逻辑元素相连,就这样构成一个可能再普通不过的加法器、乘法器,等等。4 D! y# l% J$ L7 A
所以FPGA为什么频率肯定没有Asic高你现在一定清楚了。第一,实现同样的功能,FPGA需要更大的面积,在更大的面积的情况下,即使用纯导线,其导线总长度(或严格一点,critical path的导线长度)也要比asic的电路长吧?第二,其实也是最重要的一点,就是布线结构(routing architecture)非常复杂,一条导线从a到b,一般总要经过几个开关,而这些开关都是有延时的,这个延时非常大,是FPGA频率不得提高的主要原因。5 `  C) }9 m3 B" ^$ @

& f3 B% F1 b, g& L 8 I+ m4 {& D, s$ ^6 S
上图中粉色线为一整条等电平的“导线”,又臭又长。asic看到了肯定会嫌弃有没有啊……
* j  u- d7 M0 G0 E, h0 R8 u
* {8 l7 B) p  B$ K1 F 上图绿色方块是一个SB!粉色线还是刚刚那条“导线”。注意是“一条”导线哦。现在知道FPGA中导线们的十字路口有多复杂了吗?5 ~0 H! |- ^7 P6 ?6 o
(工具用的是VPR [2],学术界的开放综合工具。商业工具看不到这么详细的routing arch)% f2 q1 `3 v5 v+ n5 U
实际上,题主这个问题在06年已经被多伦多大学的课题组调研过了[1],他们的研究表明,对于一个只有组合和时序逻辑(没有memory等)的电路来说,平均下来,在FPGA上实现需要40倍于asic电路的面积,3~4倍的关键路径延时,和12倍的功耗。而这里面其实吧,大多数都是布线结构的锅。面积上,布线结构一般要占FPGA总面积的60~70%左右,延时上,这个数字只会更高。所以FPGA的布线结构和布局布线算法是一个FPGA领域中很重要的一个研究方向。
* o! k8 ?; H  H" s8 ]要使FPGA做到完全和asic速度一样快应该是不可能的,这是由它的可重构特性直接决定的。但折中的办法不是没有,比如我前面提到hard logic,就是把一些通常使用频次很高的逻辑电路直接以asic的方式嵌入到FPGA里面,比如加法器乘法器等等,一旦要用到它们,也就不用再像以前那样用好多个逻辑块来造它了,这样就减小了面积、提高了速度、降低了功耗。现在高端一点的FPGA里面不仅有这些加法乘法器的小玩意,还有存储器,DSP,微处理器等等。它们的目的都是相同的,就是为了在保证可重构特性的情况下,尽量拉近与asic电路的距离,提高性能。6 g, D" y2 f' i. _0 n
为了提高速度,还有很多方法,比如用流水线对逻辑做分段等等,这里就不多说啦。题主还有什么问题还都可以问我~8 v; T! x/ v: {% A- W  B- C

5 N9 z7 [( i  o2 G6 `
8 L1 k9 }" s8 X  f/ ~; J% P* A& a- n+ s

该用户从未签到

2#
发表于 2019-3-28 15:18 | 只看该作者
讲的很不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-9 01:14 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表