為什麼 CPU 等的頻率可以達到 GHz 級,但一般的 FPGA 晶元的頻率只能在百 MHz 級呢?


個人理解,歡迎討論。我認為這是由FPGA的結構特點決定的:

1、晶元支持的頻率高低是由內部寄存器與寄存器之間的走線延遲決定的;

2、FPGA是可編程器件,布線資源是要盡量設計成可通用,所以其走線延遲會比較大,也是速度上不去的原因,CPU是ANSIC ,其布線資源是定製的,所以可以更高頻率;

3、現在有一些FPGA器件支持介面上的高速,內部通過串並轉換到低速處理;


給劉濤的答案補一個各個Cell之間的連接示意圖。FPGA為了能保證內部Cell之間的連通性的,所以走線複雜,走線上的延遲較大。【昨天考試剛掃了眼PPT。。。】


劉濤和ICer的答案很好地回答了問題,我再補充一小點:

FPGA中的DSP資源、時鐘資源等往往在固定的位置,而有時候,需要用到這些的資源的邏輯電路的布局位置可能距離這些資源的位置很遠,導致了線延遲非常大,儘管邏輯本身的延遲很小。ASIC的優點就在於,在布局布線的時候,可以根據實際timing的需求任意擺放IP、memory等的位置,在一定程度上降低了線延遲。這也是Xilinx公司推出Planahead工具的原因,事實上,在使用Planahead分析timing的時候,可以發現大部分timing violations都是由線延遲導致的。


使用CPU和使用FPGA是不同的思維方式。CPU是通用處理器,追求一個時鐘頻率做單一操作,通過提高主頻來加速性能。而用FPGA設計專用電路可以在一個時鐘周期實現更多操作,雖然主頻降低但性能提高。


提問者所說的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的功能可重構。


這就是ASIC和PLD的差別,前者是純粹的功能,但是是固定的,後者存在很多冗餘,但是無限可能。

還有就是硅工藝的差別,跑幾個G的CPU的發熱量和幾百兆的FPGA的發熱量不是幾個級別。


頻率高時鐘約束難滿足,當然這不是頻率不高的原因。fpga定製運算加上資源約束內你想要的並行,運算能力和吞吐已經甩很多所謂的ghz通用處理器幾條街了


題主只詢問了cpu可以達到GHz級別,而fpga只有幾百兆。那麼題主是否意識到跑多高頻率不重要。重要的是可以處理多高的帶寬。達到什麼樣的性能。舉個簡單的例子:1GHz 64位cpu它的處理性能是多少呢?那如果fpga跑250MHz.數據位寬為512bit呢。那誰的處理性能高呢?


成本決定了線寬

線寬決定了發熱

發熱限制了頻率

一般FPGA應用散熱環境都不好

所以工作頻率都在1G以下


推薦閱讀:

為何尼康在晶元光刻機市場競爭不過ASML?
為什麼NAND快閃記憶體工藝越先進,壽命反而越短?
高頻天線的發展趨勢是怎樣的?

TAG:中央處理器CPU | 現場可編輯邏輯門陣列FPGA | 晶元集成電路 |