這是筆者去年某個(gè)時(shí)間節(jié)點(diǎn)的感悟,由于工作繁忙,寫完后擱置一邊了。而對(duì)于“設(shè)計(jì)最優(yōu)化”這個(gè)議題,筆者也一直深感功力不夠,不敢多做闡釋。但是,不管怎樣,若能每隔幾年都好好做些反思回顧,讓自己對(duì)“設(shè)計(jì)最優(yōu)化”的認(rèn)知再做一些提升,也算是給當(dāng)下的自己一個(gè)“設(shè)計(jì)最優(yōu)化”吧?;诖?,把去年的文章略作梳理,分享給大家。
之所以想寫點(diǎn)什么,是基于近期的一些工作觸動(dòng)。兩年前,由于公司人力資源的需要,筆者從當(dāng)時(shí)基本穩(wěn)定的FPGA設(shè)計(jì)中抽出身來,大部分的精力投入到了產(chǎn)品的算法開發(fā)中。而在那個(gè)當(dāng)兒,正好做了一個(gè)算法的FPGA實(shí)現(xiàn)評(píng)估,整個(gè)設(shè)計(jì),包括代碼、仿真基本做完了。在當(dāng)時(shí),目標(biāo)是用有限的FPGA資源實(shí)現(xiàn)一個(gè)復(fù)雜的圖像處理算法,可以說是絞盡腦汁做了很多實(shí)際的FPGA設(shè)計(jì)優(yōu)化。
時(shí)過境遷,經(jīng)過兩年算法的學(xué)習(xí)研究和工程實(shí)踐后,基于系統(tǒng)最優(yōu)化的一些考慮,又重新回到原點(diǎn),需要再次評(píng)估和實(shí)現(xiàn)當(dāng)年那個(gè)圖像處理算法的FPGA版本。而當(dāng)重新審查當(dāng)年的那些設(shè)計(jì)代碼時(shí),忽然感受到當(dāng)時(shí)一些設(shè)計(jì)細(xì)節(jié)做得尤為精妙,雖然大多數(shù)方法其實(shí)是一些經(jīng)典的通用的優(yōu)化方法——用加法和流水線設(shè)計(jì)減少乘法器數(shù)量;用移位比較以及流水線的方式定制化一個(gè)資源占用率極低的除法器;用查找表實(shí)現(xiàn)指數(shù)運(yùn)算;甚至嘗試過自己實(shí)現(xiàn)開根號(hào)的邏輯源碼……當(dāng)然,我并不是覺得這些設(shè)計(jì)已經(jīng)登峰造極,做到設(shè)計(jì)最佳了。反而,讓我重新思考FPGA的設(shè)計(jì)最優(yōu)化問題。做算法的經(jīng)歷,讓我感受到了CPU的強(qiáng)大算力;但是一些實(shí)時(shí)應(yīng)用場(chǎng)景下,又讓我感受到了CPU在面對(duì)一個(gè)復(fù)雜和大計(jì)算量的算法時(shí)的力不從心。做FPGA的經(jīng)歷,讓我即便是在寫著跑在CPU上的代碼,也處心積慮的考慮速度性能問題——能用加法或移位就絕不用乘法、能用乘法就絕不用除法、能查表的就絕不直接進(jìn)行指數(shù)或根號(hào)等復(fù)雜的運(yùn)算……總而言之,不做一次多余的或不必要的復(fù)雜的運(yùn)算。
對(duì)于FPGA的工程實(shí)現(xiàn)而言,設(shè)計(jì)本身并沒有絕對(duì)的最優(yōu)化。對(duì)于一些沒有實(shí)用性要求的研究或評(píng)估,對(duì)于FPGA的器件資源、實(shí)時(shí)的速度性能或許不會(huì)太在意。但是對(duì)于必須產(chǎn)品化的工程實(shí)現(xiàn)來說,目標(biāo)通常是在FPGA器件的資源有限制、吞吐量有要求的情況下完成既定功能。FPGA的資源,通常包括FPGA內(nèi)部的邏輯資源、乘法器資源、片內(nèi)存儲(chǔ)器資源、布局布線資源以及其它諸如時(shí)鐘、高速接口等專用資源。FPGA的數(shù)據(jù)吞吐量,通常表現(xiàn)為FPGA在單位時(shí)間內(nèi)的平均處理能力或瞬時(shí)最大處理能力,這可能涉及FPGA片內(nèi)或片外存儲(chǔ)器的讀寫訪問速度、滿足必須的并行運(yùn)算處理所需的資源可用性、達(dá)到設(shè)計(jì)目標(biāo)的最低FPGA時(shí)鐘頻率的時(shí)序性能等。
由此看來,F(xiàn)PGA的設(shè)計(jì)最優(yōu)化,并不意味著最高的絕對(duì)精度、最快的處理速度或最大的數(shù)據(jù)吞吐量,也不意味著最高的資源利用率或最低的實(shí)現(xiàn)資源……純粹的研究或評(píng)估,或許可以只關(guān)注某一方面的最佳性能;但對(duì)于FPGA的產(chǎn)品實(shí)現(xiàn)而言,在眾多的限制條件下,各方面性能達(dá)到一個(gè)動(dòng)態(tài)平衡,讓我們的目標(biāo)FPGA器件物盡其用,或許才是我們這些務(wù)實(shí)的工程師所追求的“最優(yōu)化設(shè)計(jì)”。
責(zé)任編輯:彭菁
-
FPGA設(shè)計(jì)
+關(guān)注
關(guān)注
9文章
428瀏覽量
26509 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7484瀏覽量
163762 -
圖像處理
+關(guān)注
關(guān)注
27文章
1289瀏覽量
56722
原文標(biāo)題:設(shè)計(jì)最優(yōu)化
文章出處:【微信號(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)論