FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,F(xiàn)PGA 的基本結(jié)構(gòu)包括可編程輸入輸出單元,可配置邏輯塊,數(shù)字時鐘管理模塊等。為增進(jìn)大家對FPGA的認(rèn)識,本文將對FPGA以及FPGA的應(yīng)用予以介紹。如果你對FPGA或是對本文內(nèi)容具有興趣,不妨繼續(xù)往下閱讀哦。
一、FPGA
FPGA和GPU內(nèi)都有大量的計算單元,因此它們的計算能力都很強。在進(jìn)行神經(jīng)網(wǎng)絡(luò)運算的時候,兩者的速度會比CPU快很多。但是GPU由于架構(gòu)固定,硬件原生支持的指令也就固定了,而FPGA則是可編程的。其可編程性是關(guān)鍵,因為它讓軟件與終端應(yīng)用公司能夠提供與其競爭對手不同的解決方案,并且能夠靈活地針對自己所用的算法修改電路。
同樣是擅長并行計算的FPGA和GPU,誰能夠占領(lǐng)人工智能的高地,并不在于誰的應(yīng)用更廣泛,而是取決于誰的性能更好。在服務(wù)器端,有三個指標(biāo)可供對比:峰值性能、平均性能與功耗能效比。當(dāng)然,這三個指標(biāo)是相互影響的,不過還是可以分開說。
GPU上面成千上萬個核心同時跑在GHz的頻率上是非常壯觀的,最新的GPU峰值性能甚至可以達(dá)到10TFlops 以上。GPU的架構(gòu)經(jīng)過仔細(xì)設(shè)計,在電路實現(xiàn)上是基于標(biāo)準(zhǔn)單元庫而在關(guān)鍵路徑上可以用手工定制電路,甚至在必要的情形下可以讓半導(dǎo)體fab依據(jù)設(shè)計需求微調(diào)工藝制程,因此可以讓許多core同時跑在非常高的頻率上。
相對而言,F(xiàn)PGA首先設(shè)計資源受到很大的限制,例如GPU如果想多加幾個核心只要增加芯片面積就行,但FPGA一旦型號選定了邏輯資源上限就確定了。而且,F(xiàn)PGA里面的邏輯單元是基于SRAM查找表,其性能會比GPU里面的標(biāo)準(zhǔn)邏輯單元差很多。最后,F(xiàn)PGA的布線資源也受限制,因為有些線必須要繞很遠(yuǎn),不像GPU這樣走ASIC flow可以隨意布線,這也會限制性能。
FPGA可以根據(jù)特定的應(yīng)用去編程硬件,例如如果應(yīng)用里面的加法運算非常多就可以把大量的邏輯資源去實現(xiàn)加法器,而GPU一旦設(shè)計完就不能改動了,所以不能根據(jù)應(yīng)用去調(diào)整硬件資源。
目前機器學(xué)習(xí)大多使用SIMD架構(gòu),即只需一條指令可以平行處理大量數(shù)據(jù),因此用GPU很適合。但是有些應(yīng)用是MISD,即單一數(shù)據(jù)需要用許多條指令平行處理,這種情況下用FPGA做一個MISD的架構(gòu)就會比GPU有優(yōu)勢。
所以,對于平均性能,看的就是FPGA加速器架構(gòu)上的優(yōu)勢是否能彌補運行速度上的劣勢。如果FPGA上的架構(gòu)優(yōu)化可以帶來相比GPU架構(gòu)兩到三個數(shù)量級的優(yōu)勢,那么FPGA在平均性能上會好于GPU。
二、FPGA應(yīng)用
FPGA的一個新應(yīng)用是芯片開發(fā)時的邏輯功效驗證。過去數(shù)字芯片在設(shè)計開發(fā)時,每開發(fā)至一個階段就必須對已經(jīng)完成的電路進(jìn)行邏輯上、機制上的功效驗證,以了解設(shè)計是否有誤,關(guān)于此多是用計算機軟件程序來進(jìn)行邏輯推演(Simulation),不過用計算機程序來進(jìn)行驗證,其推演速度相當(dāng)慢,所以每一項驗證都要經(jīng)過漫長等待才能知道結(jié)果。
對此或許有人會說:可以使用更快速的計算機來加快驗證,但這其實是雞與蛋的問題,計算機效能提升其實是因為芯片效能愈來愈高,芯片效能愈來愈高原因可用摩爾定律來解釋,在摩爾定律下,芯片開發(fā)速度變快、同時也讓芯片更復(fù)雜,所以「計算機的更快速」與「芯片的更復(fù)雜」是連動的,使用了更快速的計算機,也意味著要推演、驗證更復(fù)雜設(shè)計的芯片,最根本的問題并還沒有真正解決。
不過,由于FPGA的電路密度、運作效能在近年來大幅提升,所以開始有人提議用FPGA來取代純計算機執(zhí)行的驗證軟件,如此推演速度就可以獲得大幅提升。舉例來說,IBM、Sony、Toshiba三家業(yè)者所共同合作開發(fā)的Cell芯片,當(dāng)芯片還在開發(fā)階段時就已經(jīng)使用FPGA來推演驗證,以加速了解設(shè)計上的正確性。更具體來說,就是將新芯片的邏輯電路加載到FPGA,讓FPGA充當(dāng)新芯片來執(zhí)行。
改采FPGA方式來驗證,其優(yōu)點不僅是加速驗證程序,也可以節(jié)省驗證成本,過去為了加速驗證,必須動用大量的計算機,讓眾多的計算機同時都執(zhí)行驗證程序,才能讓驗證速度提升,有時其計算機的用量甚至要用及整個運算機房內(nèi)的計算機,而今改成FPGA方式驗證后,計算機用量就可大幅減少。
要注意的是,由于芯片的電路愈來愈復(fù)雜,即便使用高階、大容量(邏輯閘)的FPGA,都很難單獨用一顆FPGA就仿真出整個新芯片,所以通常是同時用上多顆FPGA芯片,每顆FPGA芯片仿真部份的新芯片電路,然后再將多個FPGA芯片進(jìn)行串連,用多個芯片來同時仿真一顆新芯片。
另外,F(xiàn)PGA雖可以進(jìn)行芯片設(shè)計的功效驗證,但并不代表整個芯片的設(shè)計開發(fā)流程都可以加速,芯片電路設(shè)計的部份依舊需要工程師人工設(shè)計,只有功效驗證上可以獲得加速。再者,功效驗證完全正確后并不代表芯片就此設(shè)計完成(除非該芯片確定直接以FPGA方式出貨),后續(xù)在正式投產(chǎn)之前,還要經(jīng)過頻率收斂、電路化簡等其它實體電路特性的調(diào)修,這方面FPGA也無從給予幫助。
以上就是小編這次想要和大家分享的有關(guān)的FPGA的內(nèi)容,希望大家對本次分享的內(nèi)容已經(jīng)具有一定的了解。如果您想要看不同類別的文章,可以在網(wǎng)頁頂部選擇相應(yīng)的頻道哦。