緒論
在計算機與電子產(chǎn)品的世界中,我們習(xí)慣于通過兩種截然不同的方法實現(xiàn)計算:硬件以及軟件。計算機硬件,比如專用集成電路(ASIC),為關(guān)鍵任務(wù)提供了運算快速與資源高度優(yōu)化的方案。但是 ASIC 一旦設(shè)計與加工完成,這其中需要花費數(shù)以百萬美元的成本與大量努力,就只能永久性地配置為單一應(yīng)用的解決方案。計算機軟件可以靈活地改變應(yīng)用,可以進(jìn)行大量不同的計算任務(wù)。但是軟件相比 ASIC 硬件實現(xiàn),在性能、硅片面積效率以及功耗等方面的表現(xiàn)有數(shù)量級的差距。
現(xiàn)場可編程邏輯門陣列(FPGA)是一種真正意義上的革命性器件,融合了軟件與硬件各自的優(yōu)勢。FPGA 所實現(xiàn)的電路與專用硬件相似,提供遠(yuǎn)超軟件的功耗、面積以及性能。而且,能夠輕易并低成本地重新編程,以適應(yīng)范圍廣泛的、不同的計算任務(wù)。與專用計算硬件一樣,F(xiàn)PGA 能夠利用空間上分布于整個芯片的資源并行數(shù)以百萬計的運算,相較于軟件所基于的通用處理器,速度運算最高可以快上百倍。然而,與 ASIC 不同的是,這些運算任務(wù)是編程到 FPGA 器件中的,而不是像 ASIC 一樣是在生產(chǎn)中固化的。這意味著基于 FPGA 的系統(tǒng)可以多次編程或者重編程(reprogrammed)。
有時,重編程可用于修復(fù)系統(tǒng)的錯誤行為,或者用于添加新的功能。而有時,F(xiàn)PGA 也可通過重編程轉(zhuǎn)換為一個為新運算任務(wù)量身設(shè)計的計算引擎。利用在運行過程中的可重編程特性,單個 FPGA 芯片甚至能夠?qū)崿F(xiàn)多塊專用芯片的不同功能。
但確實,F(xiàn)PGA 實現(xiàn)軟硬件兩者的優(yōu)勢并不是沒有代價的。FPGA 幾乎具有軟件所有的靈活性優(yōu)勢以及可以使用軟件開發(fā)模型,并且具有接近硬件的高效率優(yōu)勢——但無論是相比軟件還是硬件,F(xiàn)PGA 實現(xiàn)還是有差距。相較于運行軟件的通用微處理器,F(xiàn)PGA 的性能與功耗效率最高可比前者要高上幾個數(shù)量級,但是高效的 FPGA 系統(tǒng)開發(fā)過程要復(fù)雜的多。通常來說,F(xiàn)PGA 只適合于處理以較長數(shù)據(jù)流為輸入的運算,比如信號處理、網(wǎng)絡(luò)以及其他數(shù)據(jù)流應(yīng)用。相較于 ASIC,F(xiàn)PGA 在面積、延遲以及性能方面有 5-25 倍的差距。然而, 單個 ASIC 設(shè)計需要數(shù)個月到幾年的時間,花費幾百萬美元,F(xiàn)PGA 開發(fā)則僅需幾天,成本在幾十至幾百美元之間。(譯注:通常這個說法適用于 FPGA 實現(xiàn)單一功能,而不是整個系統(tǒng),后者的開銷無疑會更高)對于那些不需要極高性能或者效率的系統(tǒng)來說,F(xiàn)PGA 實現(xiàn)是一個更吸引人的方案,因為 FPGA 方案開發(fā)更為簡單,并可通過可重編程特性輕松地修復(fù)缺陷與添加功能。對于許多任務(wù),尤其是對初學(xué)的電子開發(fā)者來說,F(xiàn)PGA 是一種理想的選擇。
圖 I.1 FPGA 內(nèi)部結(jié)構(gòu)抽象;邏輯塊(內(nèi)部大方塊)嵌入在通用布線結(jié)構(gòu)中
圖 I.1展示了 FPGA 的內(nèi)部構(gòu)造。其內(nèi)部由邏輯塊組成,邏輯塊嵌入在一個通用的布線結(jié)構(gòu)中。邏輯塊可實現(xiàn)基礎(chǔ)邏輯門(Gate),大量邏輯塊排列成陣列(Array),這就是 FPGA 中的 ‘G’ 和 ‘A’ 的由來。邏輯塊由處理單元與觸發(fā)器構(gòu)成,分別用于實現(xiàn)組合邏輯與時序邏輯。處理單元是一小塊存儲空間,可實現(xiàn)任意的五輸入或者六輸入的布爾函數(shù)。(譯注:處理單元即為查找表(LUT),輸入數(shù)量取決于具體器件)通用布線結(jié)構(gòu)支持邏輯塊端口間任意的連線,所以各個邏輯塊可以按開發(fā)者設(shè)想的順序連接。
得益于 FPGA 的通用性與靈活性,可以實現(xiàn)非常復(fù)雜的電路。目前的 FPGA 器件可以實現(xiàn)百萬門(譯注:電路中的組合邏輯電路規(guī)模等效于百萬個基礎(chǔ)邏輯門,如與非門)電路,工作頻率達(dá)到上百MHz(譯注:一般在300MHz以下)。為了提高電路的速度以及規(guī)模,F(xiàn)PGA 在邏輯塊陣列的基礎(chǔ)上增加了一些特別的單元,比如大規(guī)模的存儲塊(BRAM)、乘法器、快速進(jìn)位鏈(fast-carry)甚至加入整個微處理器單元。(譯注:還有以太網(wǎng)控制器、DDR控制器以及高速總線的串行收發(fā)器,這些單元都是固化電路,不可編程的)通過這些預(yù)先定義并固化在硅片上的額外單元,單片 FPGA 便有能力構(gòu)成整個完整的系統(tǒng)。
FPGA 中的邏輯以及布線單元的可重構(gòu)由編程節(jié)點控制(programming points),基于反熔絲(antifuse)、SRAM 或者 FLASH 技術(shù),一般來說 SRAM FPGA 對于可重構(gòu)計算是一個適宜的選擇,SRAM 也是目前商用 FPGA 的主流技術(shù)。在 SRAM FPGA 中,每個布線或者邏輯單元的功能都由存儲于 SRAM 介質(zhì)中的內(nèi)容決定。整個器件中的 SRAM 內(nèi)容可通過一個配置文件或者比特流(bitstream)進(jìn)行配置,編程為用戶定義的功能。因此,整個配置過程可以快速地進(jìn)行,并且不需要一些固化步驟。(譯注:SRAM 的寫入擦除均十分快速且易于進(jìn)行)開發(fā)者能夠很方便地在自己的工作臺上對器件進(jìn)行編程。哪怕 FPGA 器件已經(jīng)安裝于終端產(chǎn)品中,編程也十分容易進(jìn)行。這就是為什么 FPGA 會被稱為現(xiàn)場可編程(Field programmable)的原因,并區(qū)別于那些僅在生產(chǎn)時可編程的掩膜可編程(mask programmable)器件,這些器件的可編程只能在產(chǎn)線上通過相應(yīng)設(shè)備進(jìn)行,無法在客戶現(xiàn)場完成。
譯注:Field programmable 指產(chǎn)品出了問題,帶著電腦去用戶現(xiàn)場調(diào)試,干過這事兒都懂:苦差啊。
因為 FPGA 的定制只需要將相應(yīng)的內(nèi)容寫入到片上的存儲中,因此和編譯、然后將程序加載到計算機中運行這一軟件開發(fā)流程相似。FPGA 相對應(yīng)的流程是創(chuàng)建與 FPGA 電路對應(yīng)的比特流、然后將比特流寫入到器件中(可見圖 I.2)。盡管有多種建立 FPGA 電路的方法,可以借助工具將軟件代碼(譯注:HLS)、原理圖或者其他格式的數(shù)據(jù)轉(zhuǎn)換為電路。FPGA 開發(fā)者一般還是通過硬件描述語言(HDL,Hardware description language)來構(gòu)建一個應(yīng)用,比如 Verilog 和 VHDL。由 HDL 描述的電路經(jīng)過一系列步驟轉(zhuǎn)換為可映射至 FPGA 器件的邏輯,這些步驟包括:
邏輯綜合(logic synthesis),將高級語法以及行為級描述,轉(zhuǎn)換為邏輯門網(wǎng)表。
工藝映射(technology mapping ),將若干邏輯門為劃分至一個邏輯組,并將邏輯組高效地映射于 FPGA 的邏輯資源。
布局布線(placement & routing,P&R),將邏輯組指定至器件上某個具體的邏輯單元,并按照用戶定義連接各個邏輯單元之間的端口。
生成比特流(bitstream generation),將布局布線后的信息生成為一個二進(jìn)制文件,用于恰當(dāng)?shù)嘏渲闷骷壿媶卧c布線資源。
在設(shè)計編譯完成后,我們可以通過比特流將 FPGA 器件編程為對應(yīng)于某個計算應(yīng)用的平臺。一般通過主機上的處理器完成比特流的下載工作。或者可以將預(yù)先編程完成的存儲介質(zhì)連接至 FPGA 的配置管腳。無論如何,F(xiàn)PGA 在每次上電之后都需要讀取比特流進(jìn)行配置?;蛘咴谶\行時,用戶可以按需控制器件重新下載比特流進(jìn)行重配置。一旦 FPGA 配置完成,那么就會像一個具有特定功能的數(shù)字電路一樣工作。
因為 FPGA 同時具有軟件靈活性與硬件高性能兩項特性,F(xiàn)PGA 開發(fā)者的思路需要區(qū)別于純粹的軟件或者硬件開發(fā)者。軟件開發(fā)者一般開發(fā)串行執(zhí)行的程序,最大化利用微處理器的性能,來執(zhí)行一系列的指令
譯注:假設(shè)程序員只有一個單獨的處理核,并且目標(biāo)運算的指令數(shù)量固定。軟件程序員的目標(biāo)就是降低相同數(shù)量指令的執(zhí)行時間,換句話說,減少微處理器的等待時間。
但是在高質(zhì)量的 FPGA 設(shè)計開發(fā)中需要考慮空間的并行性,即使用芯片上的多路資源并行計算,盡可能地減少運算整體時間。
譯注:假設(shè)資源是無限的,對于目標(biāo)運算,F(xiàn)PGA開發(fā)者的目標(biāo)是盡可能實現(xiàn)指令的并行,將指令盡可能地分配到多個并行處理單元上。
對于 ASIC 等硬件開發(fā)人員來說,因為會從硬件電路實現(xiàn)出發(fā),所以在硬件設(shè)計中具有一定優(yōu)勢(譯注:在設(shè)計階段實現(xiàn)更好的 PPA,Performance/Power/Area)。但是 FPGA 的靈活特性能夠給開發(fā)者帶來 ASIC 或者其他固化器件設(shè)計中不存在的新機遇。FPGA 設(shè)計可以更快地進(jìn)行新功能的迭代和部署,甚至在現(xiàn)場重新編程。因此,F(xiàn)PGA 設(shè)計不需要 ASIC 開發(fā)那么大規(guī)模的設(shè)計團(tuán)隊,所需的驗證工作也會更少 。此外,F(xiàn)PGA 的動態(tài)可重編程特性使一些設(shè)計成為可能。比如,在運算過程中設(shè)計可以根據(jù)當(dāng)前的外部需求的動態(tài)改變重編程,動態(tài)地優(yōu)化自身的結(jié)構(gòu)?;蛘咄ㄟ^定時對自身功能進(jìn)行重構(gòu),在小型的器件上時分復(fù)用功能,實現(xiàn)規(guī)模更大的設(shè)計。但是有一點,F(xiàn)PGA 相比 ASIC 運行速度要低得多,并且容量也小得多,設(shè)計者需要細(xì)致地對設(shè)計進(jìn)行優(yōu)化,以契合目標(biāo)器件。
圖 I.2 典型的 FPGA 開發(fā)流程示意圖
FPGA 是一項擁有獨立機遇以及挑戰(zhàn)的器件,是一個非常靈活的硬件平臺。本書《可重構(gòu)計算:可重構(gòu)計算的原理與實踐》旨在介紹基于 FPGA 平臺的各個方面,這些方面可能是積極的,也有可能是面臨問題的,本書主要包括 6 個部分:
第一部分介紹硬件器件,包括 FPGA 以及那些為可重構(gòu)專門優(yōu)化的器件(章 1-4)
第二部分關(guān)注可重構(gòu)計算平臺的編程實現(xiàn),包括編程語言以及編程模型(章 5-12)
第三部分關(guān)注 FPGA 開發(fā)流程的軟件,包括圖 I.2 中每個步驟的詳情(章 13-20)
第四部分關(guān)注面向應(yīng)用的 FPGA 設(shè)計,討論范圍包括:如何最高效地利用器件的邏輯資源(章21-26)這部分可以認(rèn)為是 FPGA 開發(fā)者的最后一課了,因為學(xué)完的讀者應(yīng)該已經(jīng)完全掌握了 FPGA 開發(fā)與軟件編程、ASIC 設(shè)計之間的區(qū)別。
第五部分是一系列案例學(xué)習(xí),闡述了可編程器件在各領(lǐng)域的應(yīng)用(章27-35)
第六部分包括了一些進(jìn)階主題,比如可重構(gòu)計算的理論模型以及衡量標(biāo)準(zhǔn)。此外還包括了可重構(gòu)的缺陷、容錯(fault tolerance)等主題以及可重構(gòu)計算與納米技術(shù)之間潛在的協(xié)同作用。(章36-38)
在完成了所有 38 個章節(jié)的閱讀后,讀者會發(fā)現(xiàn) FPGA 當(dāng)前存在一些重大挑戰(zhàn)。但更重要的是,可重構(gòu)器件為計算科學(xué)帶來的獨特機遇與收益將遠(yuǎn)超為了克服這些挑戰(zhàn)所付出的努力。
原文標(biāo)題:可重構(gòu)計算:基于FPGA可重構(gòu)計算的理論與實踐
文章出處:【微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1646文章
22053瀏覽量
618769 -
計算
+關(guān)注
關(guān)注
2文章
453瀏覽量
39357 -
可編程邏輯
+關(guān)注
關(guān)注
7文章
526瀏覽量
44772
原文標(biāo)題:可重構(gòu)計算:基于FPGA可重構(gòu)計算的理論與實踐
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
FPGA可重構(gòu)設(shè)計的結(jié)構(gòu)基礎(chǔ)
FPGA的重構(gòu)方式
基于FPGA的可重構(gòu)系統(tǒng)結(jié)構(gòu)分析
【懸賞100塊】如何實現(xiàn)FPGA可重構(gòu)計算(Android平臺)
采用FPGA實現(xiàn)可重構(gòu)計算應(yīng)用
有什么FPGA可重構(gòu)方法可以對EPCS在線編程?
怎么實現(xiàn)基于FPGA可重構(gòu)智能儀器的設(shè)計?
怎么實現(xiàn)基于FPGA的動態(tài)可重構(gòu)系統(tǒng)設(shè)計?
基于對EPCS在線編程的FPGA可重構(gòu)方法
可重構(gòu)計算(Reconfigurable Computing)
可重構(gòu)技術(shù)分析及動態(tài)可重構(gòu)系統(tǒng)設(shè)計

基于FPGA硬件平臺的可重構(gòu)系統(tǒng)調(diào)度算法詳解

可重構(gòu)和自適應(yīng)計算:理論與應(yīng)用
可重構(gòu)計算:基于FPGA可重構(gòu)計算的理論與實踐 1.器件架構(gòu) 譯文(一)

評論