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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

) x' d! L6 l" ]! w
转——为什么ASIC的频率可以达到GHz,而FPGA只能达到几百MHz?
% j6 Q9 K9 I- R" [4 K+ Q
为什么实现同样的电路,asic频率总是(几乎是一定)比FPGA要高?简单来看这是FPGA在要求“可重构”的特性时对速度做出的妥协。FPGA为了满足可重构的特性,被设计成了一个岛状的逻辑块矩阵电路,每个逻辑块里又有很多个相同的子逻辑块,每个子逻辑块中有要实现任意电路的各种元素,比如LUT(逻辑查找表),用于组合逻辑的构成,和FF(flip-flop,即触发器)用于时序电路的构成。逻辑块之间是布线管道,其中有各种固定长短的线(segment)和连接这些线的开关们(switch)。一块Asic电路要实现一个逻辑电路,只需按照你的电路设计图纸按原样把电路刻在芯片上,里面加法器就是你在数电课本中看到的加法器,乘法器就是你所熟知的乘法器,导线也是你熟悉的不能再熟悉的,没有中断的一根金属线而已。" Q4 q/ `& i6 G9 a& y
而FPGA呢?加法器可能已经不是你知道的那个加法器了(当然高端FPGA都有加法器的hard logic这个另算),它已经被FPGA综合工具变成了一堆LUTs,没错,就是前面所说的这些逻辑元素。乘法器同理。导线呢?不是一根不间断的直导线了,它首先要从一个逻辑块出发,先经过一个开关,进入布线管道,然后前面遇到了一个Switch Box(假设是Altera家的板子),也就是十字路口,经过十字路口中的开关跳转,它可能左拐了,然后又遇到一个SB,……几经周折,终于到了目的逻辑块的门口,又要经过一个开关,进入目的逻辑块和里面的逻辑元素相连,就这样构成一个可能再普通不过的加法器、乘法器,等等。
2 G& [7 q  N+ L/ @3 J( n4 B2 r所以FPGA为什么频率肯定没有Asic高你现在一定清楚了。第一,实现同样的功能,FPGA需要更大的面积,在更大的面积的情况下,即使用纯导线,其导线总长度(或严格一点,critical path的导线长度)也要比asic的电路长吧?第二,其实也是最重要的一点,就是布线结构(routing architecture)非常复杂,一条导线从a到b,一般总要经过几个开关,而这些开关都是有延时的,这个延时非常大,是FPGA频率不得提高的主要原因。
0 U2 B2 S% V0 m0 ]& H
. c7 h5 C+ Y6 K) j9 F! K  S
2 `3 @8 W  Z/ _/ e# e2 a5 Q5 O上图中粉色线为一整条等电平的“导线”,又臭又长。asic看到了肯定会嫌弃有没有啊……! }, U. \6 g. ^

* z  c# N2 D( f7 r 上图绿色方块是一个SB!粉色线还是刚刚那条“导线”。注意是“一条”导线哦。现在知道FPGA中导线们的十字路口有多复杂了吗?
" x+ f  S/ y/ }(工具用的是VPR [2],学术界的开放综合工具。商业工具看不到这么详细的routing arch)
" B- O6 w$ C  S1 w实际上,题主这个问题在06年已经被多伦多大学的课题组调研过了[1],他们的研究表明,对于一个只有组合和时序逻辑(没有memory等)的电路来说,平均下来,在FPGA上实现需要40倍于asic电路的面积,3~4倍的关键路径延时,和12倍的功耗。而这里面其实吧,大多数都是布线结构的锅。面积上,布线结构一般要占FPGA总面积的60~70%左右,延时上,这个数字只会更高。所以FPGA的布线结构和布局布线算法是一个FPGA领域中很重要的一个研究方向。; E6 a0 l5 l% B7 t
要使FPGA做到完全和asic速度一样快应该是不可能的,这是由它的可重构特性直接决定的。但折中的办法不是没有,比如我前面提到hard logic,就是把一些通常使用频次很高的逻辑电路直接以asic的方式嵌入到FPGA里面,比如加法器乘法器等等,一旦要用到它们,也就不用再像以前那样用好多个逻辑块来造它了,这样就减小了面积、提高了速度、降低了功耗。现在高端一点的FPGA里面不仅有这些加法乘法器的小玩意,还有存储器,DSP,微处理器等等。它们的目的都是相同的,就是为了在保证可重构特性的情况下,尽量拉近与asic电路的距离,提高性能。1 w. I3 Y& z# J8 }7 w7 p
为了提高速度,还有很多方法,比如用流水线对逻辑做分段等等,这里就不多说啦。题主还有什么问题还都可以问我~
7 K- m' e# l/ n' Y. |0 m0 M* `) S# p2 C0 `$ ]2 B

( H3 N" h& i  Y! T, X. Y( k- }+ B. d/ C$ k% v. r- M3 k4 G

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-29 03:31 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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