为什么 CPU 等的频率可以达到 GHz 级,但一般的 FPGA 芯片的频率只能在百 MHz 级呢?
2017-02-15 11:56
429 查看
为什么 CPU 等的频率可以达到 GHz 级,但一般的 FPGA 芯片的频率只能在百 MHz 级呢?
添加评论 分享
默认排序按时间排序
9 个回答
28赞同反对,不会显示你的姓名
刘涛 盲目进入手游开发,痛苦摸索中...
...
28 人赞同
个人理解,欢迎讨论。我认为这是由FPGA的结构特点决定的:
1、芯片支持的频率高低是由内部寄存器与寄存器之间的走线延迟决定的;
2、FPGA是可编程器件,布线资源是要尽量设计成可通用,所以其走线延迟会比较大,也是速度上不去的原因,CPU是ANSIC ,其布线资源是定制的,所以可以更高频率;
3、现在有一些FPGA器件支持接口上的高速,内部通过串并转换到低速处理;
发布于 2012-06-19 9
条评论 感谢
分享
收藏 • 没有帮助 • 举报 • 作者保留权利
17赞同
反对,不会显示你的姓名
知乎用户 思辨/我就看看
17 人赞同
给刘涛的答案补一个各个Cell之间的连接示意图。FPGA为了能保证内部Cell之间的连通性的,所以走线复杂,走线上的延迟较大。【昨天考试刚扫了眼PPT。。。】
发布于 2015-01-08 1
条评论 感谢
分享
收藏 • 没有帮助 • 举报 • 作者保留权利
8赞同
反对,不会显示你的姓名
知乎用户 数字IC设计工程师,微电子学博士,微信公…
8 人赞同
刘涛和ICer的答案很好地回答了问题,我再补充一小点:
FPGA中的DSP资源、时钟资源等往往在固定的位置,而有时候,需要用到这些的资源的逻辑电路的布局位置可能距离这些资源的位置很远,导致了线延迟非常大,尽管逻辑本身的延迟很小。ASIC的优点就在于,在布局布线的时候,可以根据实际timing的需求任意摆放IP、memory等的位置,在一定程度上降低了线延迟。这也是Xilinx公司推出Planahead工具的原因,事实上,在使用Planahead分析timing的时候,可以发现大部分timing violations都是由线延迟导致的。
编辑于 2015-01-09 4
条评论 感谢
分享
收藏 • 没有帮助 • 举报 • 作者保留权利
7赞同
反对,不会显示你的姓名
JonsonXP 可重编程架构研究,FPGA,CAD开发
7 人赞同
使用CPU和使用FPGA是不同的思维方式。CPU是通用处理器,追求一个时钟频率做单一操作,通过提高主频来加速性能。而用FPGA设计专用电路可以在一个时钟周期实现更多操作,虽然主频降低但性能提高。
发布于 2012-09-14 添加评论 感谢
分享
收藏 • 没有帮助 • 举报 • 作者保留权利
23赞同
反对,不会显示你的姓名
知乎用户 SOC
23 人赞同
提问者所说的CPU和FPGA都是ASIC,CPU是有固定的逻辑组成,各个逻辑之间的时延关系在一定条件下都是确定的,在设计之初就会考虑进来。FPGA是由大量重复的逻辑组成,但各个逻辑可以多次配置,以实现不同的逻辑功能。提问者所说的FPGA速度是指在FPGA内部实现某个具体的逻辑功能之后,其同步电路的时钟最快能到多少。
CPU的速度是在制造之前就基本确定了,同样FPGA的最高速度在其制造之前也是确定的,但提问者所说的FPGA的速度,是在FPGA实现某个具体功能速度的时候确定的,如将一个CPU的core在FPGA上实现,就需要将CPU的逻辑映射到FPGA内部的逻辑中,在这个过程FPGA 实现工具会计算其使用的cell,连线配置情况,然后再进行优化,使其速度最优,但这个速度就会由具体的设计决定,如两个触发器之间,如果逻辑比较复杂,其时延就会比较长,整体的同步时钟频率就不能跑太高,否则逻辑功能就是不正常。除了逻辑资源,连线在FPGA中也是一种资源,因为硬件是固定的,连线的功能是根据配置信息决定的。故当资源利用比较多的时候,走线资源就变成瓶颈,走线的延时影响将会越来越大,所以经常会遇到资源利用率超过90%的时候,综合频率会急剧下降。
总的而言,cpu是一个功能确定的东东,而fpga是一个可配置平台,其功能未定。专用的东东可定向优化,通用的东东则只能照顾大多数情况。
题外话,现在fpga也会有固化一个CPU在里面的情况,这样就能兼顾CPU的高速和FPGA的功能可重构。
发布于 2012-09-18 添加评论 感谢
分享
收藏 • 没有帮助 • 举报 • 作者保留权利
1赞同
反对,不会显示你的姓名
david
fu 软件工程师
1 人赞同
这就是ASIC和PLD的差别,前者是纯粹的功能,但是是固定的,后者存在很多冗余,但是无限可能。
还有就是硅工艺的差别,跑几个G的CPU的发热量和几百兆的FPGA的发热量不是几个级别。
编辑于 2015-08-04 添加评论 感谢
分享
收藏 • 没有帮助 • 举报 • 作者保留权利
1赞同
反对,不会显示你的姓名
谢盼 码农/水货硬件工程师
1 人赞同
频率高时钟约束难满足,当然这不是频率不高的原因。fpga定制运算加上资源约束内你想要的并行,运算能力和吞吐已经甩很多所谓的ghz通用处理器几条街了
发布于 2015-01-09 添加评论 感谢
分享
收藏 • 没有帮助 • 举报 • 作者保留权利
0赞同
反对,不会显示你的姓名
知乎用户
题主只询问了cpu可以达到GHz级别,而fpga只有几百兆。那么题主是否意识到跑多高频率不重要。重要的是可以处理多高的带宽。达到什么样的性能。举个简单的例子:1GHz 64位cpu它的处理性能是多少呢?那如果fpga跑250MHz.数据位宽为512bit呢。那谁的处理性能高呢?
发布于 2016-02-12 添加评论 感谢
分享
收藏 • 没有帮助 • 举报 • 作者保留权利
6赞同
反对,不会显示你的姓名
沈晟 心动网络CTO,射手影音|射手网创始人,品…
6 人赞同
成本决定了线宽
线宽决定了发热
发热限制了频率
一般FPGA应用散热环境都不好
所以工作频率都在1G以下
相关文章推荐
- 为什么ASIC的频率可以达到GHz,而FPGA只能达到几百MHz?
- 为什么CPU主频一般都比FPGA快,但是却说FPGA可以帮助CPU加速?
- wince在运行的时候是否可以修改CPU频率?
- 深入理解CPU和异构计算芯片GPU/FPGA/ASIC (下篇)
- 局部内部类为什么只能访问final局部变量,对于成员变量却可以随便访问?
- java源文件当中可以有多个类,但是为什么只能有一个public类呢?
- 深入理解 CPU 和异构计算芯片 GPU/FPGA/ASIC
- 为什么2年后,你的同事可以拿10000,而你只能拿5000(转载)
- 在GPU核函数中,为什么数值型变量可以和数组型变量相互赋值, CPU中不可以
- 我的e2140cpu在硬件里为什么只能 看到一个1.6的cpu啊
- java中设置日期格式的方式一般用SimpleDateFormat("YY-MM-dd")就可以了,但为什么有的 SimpleDateFormat("YY-MM-dd",locale.getDefau
- FPGA,DSP,CPU,基带芯片,射频芯片
- 为什么Java语言中,类与类之间只能单根继承,类与接口可以多重实现,接口与接口却多根继承
- java源文件当中可以有多个类,但是为什么只能有一个public类呢?而当这个类被修饰为public的话,为什么源文件名必须要与类名相同呢?
- 为什么CPU时钟频率在过去5年里没有增加?
- 在MTK芯片上如何控制CPU的核心数和频率--MTK PerfService
- CPU、MCU、FPGA、SoC……这些芯片究竟是啥?
- 只有2~3年左右的开发经验,为什么年薪就可以达到50万+?
- 在网络7层协议中,如果想使用UDP协议达到TCP协议的效果,可以在哪层做文章?(QQ 为什么采用 UDP 协议,而不采用 TCP 协议实现?)
- 为什么在C++中对赋值号“=”的重载只能使用成员函数而不可以使用友元函数?求高手、大神帮我解答!