為什么FPGA主頻比CPU慢蛮穿,但卻可以用來幫CPU加速?

姓名:呂紅霞毁渗;學(xué)號:20011210203;學(xué)院:通信工程學(xué)院

轉(zhuǎn)自https://mp.weixin.qq.com/s/BhrGtCGnA-6HS6KVtUwM5A

【嵌牛導(dǎo)讀】本文介紹了硬件加速CPU的原理

【嵌牛鼻子】硬件加速单刁,CPU灸异,F(xiàn)PGA

【嵌牛提問】FPGA是順序型還是并發(fā)型?

【嵌牛正文】

我們知道羔飞,F(xiàn)PGA的頻率一般只有幾百MHz肺樟,而CPU的頻率卻高達數(shù)GHz。那么逻淌,有不少網(wǎng)友心中就有一個疑問:“為什么FPGA主頻比CPU慢么伯,但卻可以用來幫CPU做加速?”。

今天卡儒,EDN就和大家系統(tǒng)性地討論下這個問題田柔。

將FPGA主頻與CPU相比不妥

在開始之前,首先要明確一點骨望,將FPGA的主頻與CPU比較硬爆,實際是風(fēng)馬牛不相及的問題。FPGA和CPU是兩種完全不同的器件擎鸠,前者是專用缀磕,是硬件編程,而后者是通用劣光,是軟件編程袜蚕。

表面上看,F(xiàn)PGA的時鐘頻率要低;對于通用計算任務(wù)绢涡,F(xiàn)PGA設(shè)計貌似不如CPU設(shè)計牲剃。但是實際上,單個FPGA的并行度卻比CPU要高得多垂寥。FPGA的行為是確定性的颠黎,用作硬件加速器沒有時間片另锋、線程或資源沖突的問題。它始終以完全相同的速度執(zhí)行一件事狭归。因此夭坪,如果需要低延遲,那么FPGA就可能是最佳選擇过椎。

FPGA并行計算機制

如知乎網(wǎng)友young cc所言室梅,雖然CPU主頻很高,但其是通用處理器疚宇,做某個特定運算(如信號處理亡鼠,圖像處理)可能需要很多個時鐘周期。而FPGA可以通過編程重組電路敷待,直接生成專用電路间涵。加上電路并行性,可能做這個特定運算只需要一個時鐘周期榜揖。

舉例來說勾哩,CPU主頻為3GHz,F(xiàn)PGA主頻為200MHz举哟。若做某個特定運算思劳,CPU需要30個時鐘周期,而FPGA只需一個妨猩,那么耗時情況是:

CPU:30/3GHz =10ns;

FPGA:1/200MHz =5ns潜叛。

可以看到,F(xiàn)PGA做這個特定運算速度比CPU塊壶硅,能幫助加速威兜。

另外,CPU的主頻是加過流水線之后的森瘪。比如是15級流水線牡属,則第一條指令執(zhí)行了15個時鐘周期后才能出結(jié)果。

但是扼睬,使用FPGA也不一定總能做加速逮栅。

例如,知乎網(wǎng)友Evan172就表示窗宇,使用FPGA做加速措伐,只是在某些強計算和數(shù)據(jù)處理的方面,因為其硬件電路并行運行和有很多DSP硬核資源供調(diào)用的特點军俊,可以工作得更出色侥加。

FPGA本身也只是輔助角色,起控制的還是CPU本身粪躬,所以FPGA并不能代替CPU担败,只是在完成一件大任務(wù)的過程中將某部分任務(wù)分解給FPGA可以更好地一起完成任務(wù)昔穴。在這過程中也會有額外的開銷產(chǎn)生,在某些場合提前,可能用了FPGA而效果更差也是有的吗货。

另外,通常說的使用FPGA加速比CPU和GPU省電狈网,是指在完成同樣的任務(wù)下宙搬,F(xiàn)PGA耗費的電力比起CPU和GPU更少一些。這是相對而言的拓哺,并不是說FPGA本身就一定省電勇垛。

一個有趣的例子:數(shù)組加法計算

知乎用戶doing舉了一個很有趣的例子。他指出士鸥,假設(shè)用FPGA完整實現(xiàn)了CPU闲孤,然后再跑軟件的話,的確比CPU慢烤礁。問題是FPGA不會那么干崭放,它會直指問題本質(zhì),解決問題鸽凶。

例如,有兩個數(shù)組建峭,其中有256個32位數(shù)〔=模現(xiàn)在要把它們對應(yīng)相加變成一個數(shù)組,用CPU寫最快大概是這個樣子:

r[0] = a[0] + b[0];

r[1] = a[1] + b[1];

...

r[255] = a[255] + b[255];

當(dāng)然也可能會這么寫(在分支預(yù)測準(zhǔn)確亿蒸,指令緩存不大的情況下可能更快):

for (int i = 0; i < 255; i++)

r[i] = a[i] + b[i];

對FPGA來說凑兰,也可以用上面相同的寫法,不同在于:

CPU是一個一個加法計算边锁,而FPGA排好邏輯電路姑食,在一個時鐘周期內(nèi)計算完畢。就算CPU主頻比FPGA快100倍也趕不上啊茅坛。話說后來CPU大量的增加SIMD指令音半,就有點這個意思,不過這相當(dāng)于提供庫函數(shù)贡蓖,沒那么靈活曹鸠。

FPGA的并行是真并行,CPU完全沒得比斥铺。CPU如果想并行最多也就是讓多個核并行彻桃,但是對于大部分算法實現(xiàn)來說,如上例晾蜘,多個核之間的同步調(diào)度開銷遠遠大于計算開銷邻眷,就算多個核之間的調(diào)用開銷可以做的很小眠屎,一般CPU也就那幾個核,而FPGA只要門足夠肆饶,想并行幾路就可以并行幾路改衩。

所以在做可并行的計算密集型任務(wù)時,比如信號處理抖拴,網(wǎng)絡(luò)傳輸?shù)鹊菷PGA可以幫上忙;但是如果做常見的以串行為主的任務(wù)燎字,F(xiàn)PGA的確遠遠比不上CPU。如果要類比的話阿宅,有點像似GPU和CPU之間的關(guān)系候衍。

“當(dāng)年寫Verilog的時候,我就想如果CPU里面自帶一塊FPGA洒放,應(yīng)用程序程序可以在初始化期間直接燒一段代碼下去蛉鹿,那豈不是很爽。后來往湿,有了能寫shader的3D顯卡...”

為什么FPGA成為數(shù)據(jù)中心尖端技術(shù)?

最后再討論一個話題妖异,就是為什么FPGA一直是數(shù)據(jù)中心領(lǐng)域最尖端的技術(shù)?

有人可能認(rèn)為,再大的問題(算力)都可以通過堆CPU核心來解決领追。那么他膳,假設(shè)有一臺強大的48核服務(wù)器,即使使用非常高端的FPGA绒窑,也很難達到相同的吞吐量棕孙。而且,F(xiàn)PGA硬件設(shè)計還需要由強大的團隊來完成些膨,非常燒錢蟀俊。

這時,如果把機會成本和能源效率兩者考慮進去订雾,好處就開始顯現(xiàn)出來了肢预。

首先來看能源效率。假設(shè)這臺48核服務(wù)器的功耗為400W并且發(fā)熱嚴(yán)重洼哎,那么就會對數(shù)據(jù)中心運營不利——能耗和散熱是數(shù)據(jù)中心運營的兩項最大支出烫映。而將FPGA連接起來只執(zhí)行一項任務(wù),就可以實現(xiàn)很高的能效而開銷極低谱净。通過正確的設(shè)計窑邦,可以在實現(xiàn)低功耗的同時獲得高吞吐量。

其次壕探,機會成本(這個問題不太明顯)冈钦。系統(tǒng)中的CPU內(nèi)核數(shù)量就那么多。購買新的內(nèi)核并且安裝需要花很長時間李请,而且最好是將通用CPU內(nèi)核保留用于通用任務(wù)(例如虛擬機訂閱)瞧筛。每個CPU核賣不出去就會燒錢厉熟。

當(dāng)有任務(wù)大量占用CPU時間(例如AI推理)時,F(xiàn)PGA就成為了不錯的選擇较幌。

一個有關(guān)微軟Project Catapult項目當(dāng)中FPGA的趣事

當(dāng)年揍瑟,微軟必應(yīng)團隊在其Project Catapult項目中發(fā)現(xiàn),在啟用FPGA時乍炉,CPU的總體利用率實際上略有上升绢片。所有的人都感到困惑,因為從直覺來看FPGA應(yīng)該要減少CPU負載岛琼。但是后來他們發(fā)現(xiàn)底循,數(shù)據(jù)中心的業(yè)務(wù)流量達到了原來的2倍!由于效率提高,流量實現(xiàn)了兩倍的負載均衡槐瑞。由此可見FPGA的強大之處熙涤。

總結(jié)

維基百科的相關(guān)詞條提到兩點:FPGA的優(yōu)勢在于其并行特性,有時對于某些應(yīng)用而言可以使速度明顯變快;可以使用FPGA來對算法中的某些部分加速困檩,也可以在FPGA和通用處理器之間共享部分計算祠挫。

綜上,F(xiàn)PGA有兩個優(yōu)點:FPGA并行度遠超CPU;CPU是通用電路悼沿,F(xiàn)PGA是定制電路等舔。但是也有兩個缺點:開發(fā)周期長;并不是所有東西都適合FPGA。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末糟趾,一起剝皮案震驚了整個濱河市软瞎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拉讯,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鳖藕,死亡現(xiàn)場離奇詭異魔慷,居然都是意外死亡,警方通過查閱死者的電腦和手機著恩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門院尔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人喉誊,你說我怎么就攤上這事邀摆。” “怎么了伍茄?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵栋盹,是天一觀的道長。 經(jīng)常有香客問我敷矫,道長例获,這世上最難降的妖魔是什么汉额? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮榨汤,結(jié)果婚禮上蠕搜,老公的妹妹穿的比我還像新娘。我一直安慰自己收壕,他們只是感情好妓灌,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蜜宪,像睡著了一般虫埂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上端壳,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天告丢,我揣著相機與錄音,去河邊找鬼损谦。 笑死岖免,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的照捡。 我是一名探鬼主播颅湘,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼栗精!你這毒婦竟也來了闯参?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤悲立,失蹤者是張志新(化名)和其女友劉穎鹿寨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體薪夕,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡脚草,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了原献。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馏慨。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖姑隅,靈堂內(nèi)的尸體忽然破棺而出写隶,到底是詐尸還是另有隱情,我是刑警寧澤讲仰,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布慕趴,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏秩贰。R本人自食惡果不足惜霹俺,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毒费。 院中可真熱鬧丙唧,春花似錦、人聲如沸觅玻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽溪厘。三九已至胡本,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間畸悬,已是汗流浹背侧甫。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蹋宦,地道東北人披粟。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像冷冗,于是被迫代替她去往敵國和親守屉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容