引言
減少FPGA的功耗可帶來許多好處,如提高可靠性、降低冷卻成本、簡化電源和供電方式、延長便攜系統(tǒng)的電池壽命等。無損于性能的低功耗設計 既需要有高功率效率的FPGA架構(gòu),也需要有能駕馭架構(gòu)組件的良好設計規(guī)范。
本文將介紹FPGA的功耗、流行的低功耗功能件以及影響功耗的用戶選擇方案,并探討近期的低功耗研究,以洞察高功率效率FPGA的未來趨勢。
1 功耗的組成部分
FPGA的功耗由兩部分組成:動態(tài)功耗和靜態(tài)功耗。信號給電容性節(jié)點充電時產(chǎn)生動態(tài)功耗。這些電容性節(jié)點可以是內(nèi)部邏輯塊、互連架構(gòu)中的布線導線、外部封裝引腳或由芯片輸出端驅(qū)動的板級跡線。FPGA的總動態(tài)功耗是所有電容性節(jié)點充電產(chǎn)生的組合功耗。
靜態(tài)功耗與電路活動無關,可以產(chǎn)生于晶體管漏電流,也可以產(chǎn)生于偏置電流??傡o態(tài)功耗是各晶體管漏電功耗及FPGA中所有偏置電流之和。動態(tài)功耗取決于有源電容一側(cè),因而可隨著晶體管尺寸的縮小而改善。然而,這卻使靜態(tài)功耗增加,因為較小的晶體管漏電流反而較大。因此靜態(tài)功耗占集成電路總功耗的比例日益增大。
如圖1所示,功耗很大程度上取決于電源電壓和溫度。降低FPGA電源電壓可使動態(tài)功耗呈二次函數(shù)下降,漏電功耗呈指數(shù)下降。升高溫度可導致漏電功耗呈指數(shù)上升。例如,把溫度從85℃升高至100℃可使漏電功耗增加25%。
圖1 電壓和溫度對功耗的影響
2 功耗分解
下面分析一下FPGA總功耗的分解情況,以便了解功耗的主要所在。FPGA功耗與設計有關,也就是說取決于器件系列、時鐘頻率、翻轉(zhuǎn)率和資源利用率。
以Xilinx Spartan-3 XC3S1000 FPGA為例,假定時鐘頻率為100MHz,翻轉(zhuǎn)率為12.5%,而資源利用率則取多種實際設計基準測試的典型值。
圖2所示為XC3S1000的活動功耗和待機功耗分解圖。據(jù)報告顯示,活動功耗是設計在高溫下活動時的功耗,包括動態(tài)和靜態(tài)功耗兩部分。待機功耗是設計空閑時的功耗,由額定溫度下的靜態(tài)功耗組成。CLB在活動功耗和待機功耗中占最主要部分,這不足為奇,但其他模塊也產(chǎn)生可觀的功耗。I/O和時鐘電路占全部活動功耗的1/3,如果使用高功耗的I/O標準,其功耗還會更高。
圖2 Spartan-3 XC3S1000 FPGA典型功耗分解圖
配置電路和時鐘電路占待機功耗近1/2,這在很大程度上是偏置電流所致。因此,要降低芯片的總功耗,就必須采取針對所有主要功耗器件的多種解決方案。[!--empirenews.page--]
3 低功耗設計
FPGA的設計中使用了多種功耗驅(qū)動的設計技術,以Xilinx Virtex系列為例,因為配置存儲單元可占到FPGA中晶體管數(shù)的1/3,所以在該系列中使用了一種低漏電流的“midox”晶體管來減少存儲單元的漏電流。為了減少靜態(tài)功耗,還全面采用了較長溝道和較高閾值的晶體管。動態(tài)功耗問題則用低電容電路和定制模塊來解決。DSP模塊中乘法器的功耗不到FPGA架構(gòu)所構(gòu)建乘法器的20%。鑒于制造偏差可導致漏電流分布范圍很大,可篩選出低漏電流器件,以有效提供核心漏電功耗低于60%的器件。
除了融入FPGA設計之外,還有許多設計選擇方案影響到FPGA的功耗。下面分析部分這類選擇方案。
3.1 功耗估計
功耗估計是低功耗設計中的一個關鍵步驟。雖然確定FPGA功耗的最準確方法是硬件測量,但功耗估計有助于確認高功耗模塊,可用于在設計階段早期制定功耗預算。
如圖1所示,某些外部因素對功耗具有呈指數(shù)的影響;環(huán)境的微小變化即可造成預估功耗的重大變化。使用功耗估計工具雖難以達到精準,但仍然可以通過確認高功耗模塊來為功耗優(yōu)化提供極好的指導。
3.2 電壓和溫度控制
如圖1所示,降低電壓和溫度均可顯著減少漏電流。電源電壓降低5% 就可降低功耗10%。通過改變電源配置,很容易調(diào)整電源電壓。目前的FPGA不支持大范圍電壓調(diào)整,推薦的電壓范圍通常是±5%。結(jié)溫可以用散熱器和氣流等冷卻方案來降低。溫度降低20℃可減少漏電功耗25%以上。降低溫度還可呈指數(shù)提高芯片的可靠性。研究表明,溫度降低20℃可使芯片總體壽命延長10倍。
3.3 懸掛和休眠模式
懸掛和休眠等模式可有效降低功耗。以Xilinx Spartan-3A FPGA為例,該器件提供兩種低功耗空閑狀態(tài)。在懸掛模式下,VCCAUX電源上的電路被禁用,以減少漏電功耗和消除偏置電流,這樣可降低靜態(tài)功耗40%以上。懸掛時仍保持芯片配置和電路狀態(tài)。將喚醒引腳置位即可退出懸掛模式。此過程用時不到1ms。
休眠模式允許關閉所有功率調(diào)節(jié)器,從而實現(xiàn)零功耗。若要重啟,必須重開電源并配置器件,此過程需要數(shù)十毫秒。切斷電源后,所有I/O均處于高阻抗狀態(tài)。如有I/O需要在休眠模式下主動激活,則必須保持對相應I/O組供電,這會消耗少量待機功率。
3.4 I/O標準方案
不同I/O標準的功耗水平相差懸殊。在犧牲速度或邏輯利用率的情況下,選擇低功耗I/O標準可顯著降低功耗。例如,LVDS是功耗大戶,其每對輸入的電流為3mA,每對輸出的電流為9mA。因此,從功耗角度來看,應該僅在系統(tǒng)技術規(guī)范要求或需要最高性能時才使用LVDS。
替代LVDS的一種功耗較低而性能較高的方案是HSTL或SSTL,但這二者仍要每輸入消耗3mA。如果可能,推薦換用LVCMOS輸入。此外,DCI標準是功耗大戶。當連接到RLDRAM等存儲器件時,請考慮在存儲器上使用ODT,而在FPGA上使用LVDCI,以減少功耗。
3.5 嵌入式模塊
嵌入式模塊是定制設計的,因此其體積和開關電容都比可編程邏輯的小。這些模塊的功耗是等效可編程邏輯的1/5~1/12。
用嵌入式模塊替代可編程架構(gòu)可顯著降低功耗。如果設計縮小并可裝入較小的器件,則使用嵌入式模塊可以降低靜態(tài)功耗。一個潛在的缺點是,使用大型嵌入式模塊可能無法更有效地實現(xiàn)非常簡單的功能。
3.6 時鐘生成器
在時鐘生成中考慮功耗因素可以減少功耗。數(shù)字時鐘管理器廣泛用于生成不同頻率或相位的時鐘。然而,DCM消耗的功率占VCCAUX不可小覷的一部分;因此,應盡可能限制使用DCM。通過使用多種輸出(如CLK2X、CLKDV 和CLKFX),一個DCM常??缮啥喾N時鐘。與為同一功能使用多個DCM相比,這是一種功耗較低的解決方案。
3.7 Block RAM的構(gòu)建
多個Block RAM常常可以組合起來構(gòu)成一個大型RAM。組合的方式可以對功耗意義重大。時序驅(qū)動的方法是并行訪問所有RAM。例如,可以用4個2k×9 RAM構(gòu)成一個2k×36 RAM。這個較大RAM的訪問時間與單個Block RAM相同;然而,其每次訪問的功耗卻相當于4個Block RAM的功耗之和。
一種低功耗的解決方案是用4個512×36b RAM 構(gòu)成同樣的2k×36b RAM。每次訪問都會預先解碼,以選擇訪問4個Block RAM之一。盡管預解碼延長了訪問時間,但較大RAM每次訪問的功耗卻與單個Block RAM大致相同。[!--empirenews.page--]
4 低功耗研究
4.1 降低電壓
降低電壓是減少功耗的最有效方式之一,而且隨之而來的性能下降對許多并不要求最高性能的設計來說是可以接受的。不過,目前FPGA的工作電壓范圍很小,在某些電壓敏感型電路上還不能使用。
在Xilinx研究實驗室,CLB電路被重新設計成能在降低許多的電壓下工作,以便在較低功耗情況下提供寬裕的性能權(quán)衡余地。例如,對于90nm工藝,電壓下降200mV可降低功耗40%,最高性能損失25%;電壓下降400mV可降低功耗70%,最高性能損失55%。
4.2 細粒度電源開關
可編程邏輯設計特有的開銷之一是并非所有片上資源都用于給定的設計??墒?,未使用的資源保持供電狀態(tài),并以漏電功耗的形式增加了總功耗。模塊級電源開關可分別關掉未使用模塊的供電。每個模塊通過一個電源開關耦接到電源。開關閉合時,該模塊工作。開關斷開時,該模塊從電源有效斷開,從而使漏電功耗降到1/50~1/100。電源開關的粒度可以小到單個CLB和Block RAM。在設計中,這些電源開關可以通過配置比特流進行編程,也可由用戶直接控制或通過訪問端口控制。實際設計的基準測試結(jié)果表明,細粒度電源開關可減少漏電功耗30%。
4.3 深睡眠模式
便攜電子產(chǎn)品的主要要求之一是器件空閑時功耗極低或無功耗。以Xilinx Spartan-3A FPGA為例,該芯片可通過進入休眠模式來達到此目的,這需要外部控制,蘇醒緩慢,且不能恢復FPGA狀態(tài)。設計動態(tài)控制上述細粒度電源開關,令其關閉所有內(nèi)部模塊供電,僅保留配置和電路狀態(tài)存儲組件為供電狀態(tài)。這樣形成的狀態(tài)是一種深睡眠模式,其漏電功耗為額定功耗的1%~2%,保存FPGA狀態(tài),退出此模式僅需數(shù)微秒。
4.4 異構(gòu)架構(gòu)
電路的最高時鐘頻率取決于其時序關鍵型路徑的延遲。非關鍵型路徑的速度可以較慢而不影響整體芯片性能。在大型系統(tǒng)中,可以有幾個速度關鍵型模塊(如處理器中的數(shù)據(jù)通路),其他模塊可以是非關鍵型(如緩存)。
當今的FPGA就功耗和速度而言是相同的;每個CLB 均有同樣的功耗和速度特性。異構(gòu)架構(gòu)可降低功耗,這種架構(gòu)包含一些低功耗(同時也較慢)的模塊,方法是在低功耗模塊中實現(xiàn)非關鍵型模塊。這樣做不影響整體芯片性能,因為時序關鍵型模塊并未損失性能。
創(chuàng)建異構(gòu)架構(gòu)的一種方法是,分配兩條核心供電軌,即一條高電壓軌(VDDH)和一條低電壓軌(VDDL)。FPGA的每個器件用嵌入式電源開關選擇這二者之一,并相應采用高速度或低功耗特性。設計的詳細時序確定之后,電壓選擇便告完成,所以只有非關鍵型模塊才應以VDDL供電。
創(chuàng)建異構(gòu)架構(gòu)的另一種方法是,將FPGA分成不同的區(qū),并將這些區(qū)分別預制為具有高速度和低功耗特性。可以用不同電源電壓、不同閾值或通過若干其他設計權(quán)衡條件來實現(xiàn)這些區(qū)。要避免性能下降,設計工具必須將設計的時序關鍵型器件映像成高速度區(qū),而將非關鍵型器件映射成低功耗區(qū)。
4.5 低擺幅信令
隨著FPGA容量增加,片上可編程互連的功耗越來越大。減少這種通信功耗的一種有效方法是使用低擺幅信令,其中導線上的電壓擺幅比電源電壓擺幅低得多?,F(xiàn)今,低擺幅信令常見于在高電容性導線(如總線或片外鏈接)上進行通信的情況。低擺幅驅(qū)動器和接收器比CMOS 緩沖器更復雜,所以占用更多芯片面積。但是,隨著片上互連逐漸成為總體功耗的較大組成部分,低擺幅信令的功耗優(yōu)勢將證明增加設計復雜性是值得的。當然,F(xiàn)PGA用戶不會看到內(nèi)部信號電壓的差異。
圖3所示為具有上述某些概念的FPGA架構(gòu),其可編程異構(gòu)架構(gòu)由高速度和低功耗兩個區(qū)組成。一個片上功耗模式控制器可管理各種降功耗模式,即深睡眠模式、懸掛模式和休眠模式。在架構(gòu)內(nèi)部,可以用專用的供電開關關掉每個邏輯塊的電源。通過布線架構(gòu)的通信信號流經(jīng)低擺幅驅(qū)動器和接收器,以降低互連功耗。
圖3 具有多種降低功耗解決方案的概念架構(gòu)
5 結(jié)論
除了目前用于現(xiàn)代FPGA設計的能源優(yōu)化方案,一些用戶設計決策也可以產(chǎn)生顯著的功耗效益??梢灶A見,未來的新技術中會有更大膽地遏制功耗的架構(gòu)解決方案,從而使新的FPGA應用成為可能。