为什么 CPU 等的频率可以达到 GHz 级,但一般的 FPGA 芯片的频率只能在百 MHz 级呢?
添加评论
分享
默认排序
按时间排序
9 个回答
个人理解,欢迎讨论。我认为这是由FPGA的结构特点决定的:
1、芯片支持的频率高低是由内部寄存器与寄存器之间的走线延迟决定的;
2、FPGA是可编程器件,布线资源是要尽量设计成可通用,所以其走线延迟会比较大,也是速度上不去的原因,CPU是ANSIC ,其布线资源是定制的,所以可以更高频率;
3、现在有一些FPGA器件支持接口上的高速,内部通过串并转换到低速处理;
1、芯片支持的频率高低是由内部寄存器与寄存器之间的走线延迟决定的;
2、FPGA是可编程器件,布线资源是要尽量设计成可通用,所以其走线延迟会比较大,也是速度上不去的原因,CPU是ANSIC ,其布线资源是定制的,所以可以更高频率;
3、现在有一些FPGA器件支持接口上的高速,内部通过串并转换到低速处理;
刘涛和ICer的答案很好地回答了问题,我再补充一小点:
FPGA中的DSP资源、时钟资源等往往在固定的位置,而有时候,需要用到这些的资源的逻辑电路的布局位置可能距离这些资源的位置很远,导致了线延迟非常大,尽管逻辑本身的延迟很小。ASIC的优点就在于,在布局布线的时候,可以根据实际timing的需求任意摆放IP、memory等的位置,在一定程度上降低了线延迟。这也是Xilinx公司推出Planahead工具的原因,事实上,在使用Planahead分析timing的时候,可以发现大部分timing violations都是由线延迟导致的。
FPGA中的DSP资源、时钟资源等往往在固定的位置,而有时候,需要用到这些的资源的逻辑电路的布局位置可能距离这些资源的位置很远,导致了线延迟非常大,尽管逻辑本身的延迟很小。ASIC的优点就在于,在布局布线的时候,可以根据实际timing的需求任意摆放IP、memory等的位置,在一定程度上降低了线延迟。这也是Xilinx公司推出Planahead工具的原因,事实上,在使用Planahead分析timing的时候,可以发现大部分timing violations都是由线延迟导致的。
提问者所说的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的功能可重构。
CPU的速度是在制造之前就基本确定了,同样FPGA的最高速度在其制造之前也是确定的,但提问者所说的FPGA的速度,是在FPGA实现某个具体功能速度的时候确定的,如将一个CPU的core在FPGA上实现,就需要将CPU的逻辑映射到FPGA内部的逻辑中,在这个过程FPGA 实现工具会计算其使用的cell,连线配置情况,然后再进行优化,使其速度最优,但这个速度就会由具体的设计决定,如两个触发器之间,如果逻辑比较复杂,其时延就会比较长,整体的同步时钟频率就不能跑太高,否则逻辑功能就是不正常。除了逻辑资源,连线在FPGA中也是一种资源,因为硬件是固定的,连线的功能是根据配置信息决定的。故当资源利用比较多的时候,走线资源就变成瓶颈,走线的延时影响将会越来越大,所以经常会遇到资源利用率超过90%的时候,综合频率会急剧下降。
总的而言,cpu是一个功能确定的东东,而fpga是一个可配置平台,其功能未定。专用的东东可定向优化,通用的东东则只能照顾大多数情况。
题外话,现在fpga也会有固化一个CPU在里面的情况,这样就能兼顾CPU的高速和FPGA的功能可重构。