速度和面積一直都是FPGA設(shè)計(jì)中非常重要的兩個(gè)指標(biāo)。所謂速度,是指整個(gè)工程穩(wěn)定運(yùn)行所能夠達(dá)到的最高時(shí)鐘頻率,它不僅和FPGA內(nèi)部各個(gè)寄存器的建立時(shí)間余量、保持時(shí)間余量有關(guān),也和FPGA與外部芯片接口信號(hào)的時(shí)序余量有關(guān);
當(dāng)然,由于FPGA的時(shí)鐘頻率通常很容易遇到瓶頸,所以有時(shí)我們更趨向于在特定時(shí)鐘頻率下,用單位時(shí)間內(nèi)的數(shù)據(jù)吞吐量指標(biāo)作為速度的衡量指標(biāo)。所謂面積,就是一個(gè)FPGA工程運(yùn)行所消耗的資源的多少。在FPGA資源相對(duì)單一匱乏的年代,工程師們可以簡(jiǎn)單的將邏輯資源等效為門數(shù)進(jìn)行衡量;
而今天隨著FPGA內(nèi)嵌越來越多的存儲(chǔ)器、乘法器、時(shí)鐘單元、高速走線或高速收發(fā)器等資源,F(xiàn)PGA資源所涵蓋的項(xiàng)目也越來越多。無論如何,設(shè)計(jì)者對(duì)這兩個(gè)參數(shù)的關(guān)注將會(huì)貫穿整個(gè)設(shè)計(jì)的始終。
速度和面積始終是一對(duì)矛盾的統(tǒng)一體。速度的提高往往需要以面積的擴(kuò)增為代價(jià),而節(jié)省面積也往往會(huì)造成速度的犧牲。因此,如何在滿足時(shí)序要求(速度)的前提下最大程度的節(jié)省邏輯資源(面積)是擺在每個(gè)設(shè)計(jì)者面前的一個(gè)難題。
如圖3.12所示,假定當(dāng)我們使用1倍的邏輯塊處理數(shù)據(jù),其時(shí)鐘頻率100Mhz,可以達(dá)到100Mbps的吞吐量。
圖3.12 1倍資源的數(shù)據(jù)吞吐量示意圖
而當(dāng)我們的需求有所改變,希望數(shù)據(jù)吞吐量達(dá)到300Mbps。你可能覺得,這不挺簡(jiǎn)單,如圖3.13所示,直接讓時(shí)鐘頻率調(diào)整到300MHz不就可以了。但凡有一定實(shí)踐經(jīng)驗(yàn)的工程師都要抗議了,一般的FPGA器件,除非你的邏輯功能非常簡(jiǎn)單,否則要跑到300MHz談何容易。
筆者用得比較多的是Xilinx中低端的Artix-7和Kintex-7系列的FPGA器件,通常也不太敢隨便使用超過200MHz的時(shí)鐘頻率。時(shí)鐘頻率不僅受限于器件本身的工藝,也和設(shè)計(jì)邏輯的復(fù)雜性密切相關(guān)。所以一般而言,通過直接提高時(shí)鐘頻率來提升系統(tǒng)數(shù)據(jù)吞吐量的方法只在原時(shí)鐘頻率較低的情況下可行,但原本時(shí)鐘頻率就偏高的情況下是不可行的。
圖3.13 3倍時(shí)鐘頻率的數(shù)據(jù)吞吐量示意圖
當(dāng)系統(tǒng)時(shí)鐘頻率已經(jīng)接近上限,或由于某些其它因素?zé)o法隨意提升的情況下,更一般的做法,如圖3.13所示,就是使用3倍的邏輯資源,即3倍的邏輯塊,這就是簡(jiǎn)單的以面積換速度(犧牲面積,換取速度)的思想,反之,就是速度換面積(犧牲速度,換取面積)的思想。
圖3.13 3倍資源的數(shù)據(jù)吞吐量示意圖
速度和面積互換原則也可以應(yīng)用在一般邏輯的性能優(yōu)化上。比如在FPGA開發(fā)工具中,通常也會(huì)提供一些預(yù)設(shè)好的綜合優(yōu)化策略,設(shè)計(jì)者可以在速度或面積等方面采取不同的綜合偏好,這樣就把整個(gè)代碼的優(yōu)化工作交由工具來實(shí)現(xiàn)。當(dāng)然,綜合工具只能在現(xiàn)有代碼基礎(chǔ)上做一些小范圍的修修改改,達(dá)到優(yōu)化的目的,一些大的性能優(yōu)化還是需要靠設(shè)計(jì)者自己的代碼實(shí)現(xiàn)。
以Xilinx的Vivado開發(fā)工具為例,如圖3.14所示,在Setting -> Synthesis頁(yè)面的Options ->Strategy選項(xiàng)中,默認(rèn)采取的綜合策略是一個(gè)速度和面積比較平衡的Vivado SynthesisDefaults策略。這里我們可以嘗試一下將默認(rèn)策略修改為Flow_PerfOptimized_high,然后看看編譯后的資源和時(shí)序性能發(fā)生了什么樣的變化。
圖3.14 Vivado綜合優(yōu)化選項(xiàng)
以一個(gè)圖像采集和顯示的實(shí)例工程(note10_prj001)進(jìn)行比對(duì)。如圖3.15所示,使用默認(rèn)策略的綜合消耗了5798個(gè)LUT。如圖3.16所示,使用高性能優(yōu)化策略的綜合則消耗了5878個(gè)LUT,多消耗了80個(gè)LUT。
圖3.15 默認(rèn)綜合策略的資源報(bào)告
圖3.16 高性能優(yōu)化策略的資源報(bào)告
再來看時(shí)序性能,我們挑選驅(qū)動(dòng)負(fù)載最大的兩個(gè)時(shí)鐘做比對(duì)。如圖3.17和圖3.18所示,可以看到,時(shí)鐘負(fù)載最大的clk_out2的建立時(shí)間余量(WNS)和保持時(shí)間余量(THS)都略微有所提升;但時(shí)鐘負(fù)載次之的clk_out3的兩個(gè)余量參數(shù)反而都略微下降了。
圖3.17 默認(rèn)總和策略的時(shí)鐘報(bào)告
圖3.18 高性能優(yōu)化策略的時(shí)鐘報(bào)告
由此看來,關(guān)于速度和面積互換的思想,綜合工具雖然提供了一些整體的代碼性能優(yōu)化手段,但是它對(duì)整體性能的提升充其量不過是個(gè)“小打小鬧”的級(jí)別,最主要的優(yōu)化其實(shí)還是要靠寫代碼的設(shè)計(jì)者。
審核編輯:劉清
-
FPGA設(shè)計(jì)
+關(guān)注
關(guān)注
9文章
428瀏覽量
26567 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7524瀏覽量
164138 -
時(shí)鐘
+關(guān)注
關(guān)注
11文章
1745瀏覽量
131661 -
乘法器
+關(guān)注
關(guān)注
8文章
206瀏覽量
37144 -
代碼
+關(guān)注
關(guān)注
30文章
4816瀏覽量
68863
原文標(biāo)題:經(jīng)典設(shè)計(jì)思想:速度面積互換原則
文章出處:【微信號(hào):FPGA快樂學(xué)習(xí),微信公眾號(hào):FPGA快樂學(xué)習(xí)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論