RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

電子工程師 ? 來源:FPGA技術(shù)江湖 ? 作者:EDN電子技術(shù)設(shè)計(jì) ? 2020-11-20 09:56 ? 次閱讀

我們知道,FPGA的頻率一般只有幾百M(fèi)Hz,而CPU的頻率卻高達(dá)數(shù)GHz。那么,有不少網(wǎng)友心中就有一個(gè)疑問:“為什么FPGA主頻比CPU慢,但卻可以用來幫CPU做加速?”。

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

將FPGA主頻與CPU相比不妥

在開始之前,首先要明確一點(diǎn),將FPGA的主頻與CPU比較,實(shí)際是風(fēng)馬牛不相及的問題。FPGA和CPU是兩種完全不同的器件,前者是專用,是硬件編程,而后者是通用,是軟件編程。

不同體系結(jié)構(gòu)性能和靈活性的比較。(圖片來源:《如何評(píng)價(jià)微軟在數(shù)據(jù)中心使用 FPGA 代替?zhèn)鹘y(tǒng) CPU 的做法?》)

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

計(jì)算密集型任務(wù),CPU、GPU、FPGA、ASIC 的數(shù)量級(jí)比較(以16位整數(shù)乘法為例,數(shù)字僅為數(shù)量級(jí)的估計(jì))(圖片來源:《如何評(píng)價(jià)微軟在數(shù)據(jù)中心使用 FPGA 代替?zhèn)鹘y(tǒng) CPU 的做法?》)

FPGA并行計(jì)算機(jī)制

如知乎網(wǎng)友young cc所言,雖然CPU主頻很高,但其是通用處理器,做某個(gè)特定運(yùn)算(如信號(hào)處理,圖像處理)可能需要很多個(gè)時(shí)鐘周期。而FPGA可以通過編程重組電路,直接生成專用電路。加上電路并行性,可能做這個(gè)特定運(yùn)算只需要一個(gè)時(shí)鐘周期。

舉例來說,CPU主頻為3GHz,F(xiàn)PGA主頻為200MHz。若做某個(gè)特定運(yùn)算,CPU需要30個(gè)時(shí)鐘周期,而FPGA只需一個(gè),那么耗時(shí)情況是:

CPU:30/3GHz =10ns;

FPGA:1/200MHz =5ns。

可以看到,F(xiàn)PGA做這個(gè)特定運(yùn)算速度比CPU快,能幫助加速。

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

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

例如,知乎網(wǎng)友Evan172就表示,使用FPGA做加速,只是在某些強(qiáng)計(jì)算和數(shù)據(jù)處理的方面,因?yàn)槠溆布娐凡⑿羞\(yùn)行和有很多DSP硬核資源供調(diào)用的特點(diǎn),可以工作得更出色。

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

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

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

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

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

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

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

...

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

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

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

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

對(duì)FPGA來說,也可以用上面相同的寫法,不同在于:

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

FPGA并行是真并行,CPU完全沒得比。CPU如果想并行最多也就是讓多個(gè)核并行,但是對(duì)于大部分算法實(shí)現(xiàn)來說,如上例,多個(gè)核之間的同步調(diào)度開銷遠(yuǎn)遠(yuǎn)大于計(jì)算開銷,就算多個(gè)核之間的調(diào)用開銷可以做的很小,一般CPU也就那幾個(gè)核,而FPGA只要門足夠,想并行幾路就可以并行幾路。

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

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

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

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

有人可能認(rèn)為,再大的問題(算力)都可以通過堆CPU核心來解決。那么,假設(shè)有一臺(tái)強(qiáng)大的48核服務(wù)器,即使使用非常高端的FPGA,也很難達(dá)到相同的吞吐量。而且,F(xiàn)PGA硬件設(shè)計(jì)還需要由強(qiáng)大的團(tuán)隊(duì)來完成,非常燒錢。

這時(shí),如果把機(jī)會(huì)成本和能源效率兩者考慮進(jìn)去,好處就開始顯現(xiàn)出來了。

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

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

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

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

當(dāng)年,微軟必應(yīng)團(tuán)隊(duì)在其Project Catapult項(xiàng)目中發(fā)現(xiàn),在啟用FPGA時(shí),CPU的總體利用率實(shí)際上略有上升。所有的人都感到困惑,因?yàn)閺闹庇X來看FPGA應(yīng)該要減少CPU負(fù)載。但是后來他們發(fā)現(xiàn),數(shù)據(jù)中心的業(yè)務(wù)流量達(dá)到了原來的2倍!由于效率提高,流量實(shí)現(xiàn)了兩倍的負(fù)載均衡。由此可見FPGA的強(qiáng)大之處。

結(jié)語

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

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

責(zé)任編輯:xj

原文標(biāo)題:為什么FPGA主頻比CPU慢,卻可以幫其加速?

文章出處:【微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21729

    瀏覽量

    602982
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10854

    瀏覽量

    211574
  • 主頻
    +關(guān)注

    關(guān)注

    1

    文章

    19

    瀏覽量

    9037

原文標(biāo)題:為什么FPGA主頻比CPU慢,卻可以幫其加速?

文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    音頻子系統(tǒng)主要是用來做什么的,可以用來PCM編碼器嗎?

    請(qǐng)問,音頻子系統(tǒng)主要是用來做什么的,可以用來PCM編碼器嗎?支持PCM編碼輸出嗎?
    發(fā)表于 11-07 07:38

    如何限制容器可以使用的CPU資源

    默認(rèn)情況下容器可以使用的主機(jī) CPU 資源是不受限制的。和內(nèi)存資源的使用一樣,如果不對(duì)容器可以使用的 CPU 資源進(jìn)行限制,一旦發(fā)生容器內(nèi)程序異常使用
    的頭像 發(fā)表于 10-24 17:04 ?216次閱讀
    如何限制容器<b class='flag-5'>可以</b>使用的<b class='flag-5'>CPU</b>資源

    CPU主頻是什么意思

    CPU主頻,作為計(jì)算機(jī)處理器性能的一個(gè)重要指標(biāo),承載著豐富的技術(shù)內(nèi)涵與實(shí)際應(yīng)用價(jià)值。以下是對(duì)CPU主頻的詳細(xì)解析,包括其定義、用途、技術(shù)原理、影響因素以及在多個(gè)領(lǐng)域的實(shí)際應(yīng)用。
    的頭像 發(fā)表于 09-26 15:50 ?1502次閱讀

    CPU時(shí)鐘周期與主頻的關(guān)系和區(qū)別

    CPU時(shí)鐘周期與主頻是計(jì)算機(jī)體系結(jié)構(gòu)中兩個(gè)緊密相連且至關(guān)重要的概念,它們之間既存在關(guān)系又有所區(qū)別。以下將詳細(xì)闡述CPU時(shí)鐘周期與主頻的關(guān)系和區(qū)別。
    的頭像 發(fā)表于 09-26 15:46 ?1614次閱讀

    CPU生產(chǎn)工藝圖解

    共讀好書 CPU是現(xiàn)代計(jì)算機(jī)的核心部件,又稱為“微處理器”。對(duì)于PC而言,CPU的規(guī)格與頻率常常被用來作為衡量一臺(tái)電腦性能強(qiáng)弱重要指標(biāo)。Intelx86架構(gòu)已經(jīng)經(jīng)歷了二十多個(gè)年頭,而x86架構(gòu)
    的頭像 發(fā)表于 07-26 18:07 ?576次閱讀
    <b class='flag-5'>CPU</b>生產(chǎn)工藝圖解

    由于接口不夠,SDIO接口可以用CPUFPGA之間進(jìn)行通信嗎

    由于接口不夠,SDIO接口可以用CPUFPGA之間進(jìn)行通信嗎
    發(fā)表于 04-23 10:56

    EVENTOUT這個(gè)功能可以用來IO,PWM輸出嗎?

    如題,EVENTOUT這個(gè)功能可以用來IO,PWM輸出嗎?
    發(fā)表于 04-15 07:10

    請(qǐng)問DMA控制器可以減輕CPU負(fù)擔(dān)嗎?

    直接存儲(chǔ)器訪問 ( DMA )控制器,可以在內(nèi)存和/或外設(shè)之間傳輸數(shù)據(jù),而不需要 CPU 參與每次傳輸。合理利用 DMA 控制器,可以減輕CPU的負(fù)擔(dān)。
    的頭像 發(fā)表于 03-28 09:41 ?703次閱讀
    請(qǐng)問DMA控制器<b class='flag-5'>可以</b>減輕<b class='flag-5'>CPU</b>負(fù)擔(dān)嗎?

    什么是cpu主頻和外頻,它們之間關(guān)系如何

    CPU主頻和外頻是計(jì)算機(jī)中兩個(gè)重要的頻率指標(biāo),它們分別代表了CPU內(nèi)部和與外部組件之間的數(shù)據(jù)傳輸速率。這兩個(gè)頻率指標(biāo)之間有著密切的關(guān)系,對(duì)計(jì)算機(jī)的性能和穩(wěn)定性有著重要的影響。 首先,我們來具體了解
    的頭像 發(fā)表于 02-03 16:50 ?4118次閱讀

    為什么GPUCPU更快?

    GPUCPU更快的原因并行處理能力:GPU可以同時(shí)處理多個(gè)任務(wù)和數(shù)據(jù),而CPU通常只能一次處理一項(xiàng)任務(wù)。這是因?yàn)镚PU的架構(gòu)使得它可以同時(shí)
    的頭像 發(fā)表于 01-26 08:30 ?2393次閱讀
    為什么GPU<b class='flag-5'>比</b><b class='flag-5'>CPU</b>更快?

    西門子S7-300(CPU315)整流系統(tǒng)的PID控制

    電子發(fā)燒友網(wǎng)站提供《西門子S7-300(CPU315)整流系統(tǒng)的PID控制.pdf》資料免費(fèi)下載
    發(fā)表于 01-14 09:43 ?0次下載

    FPGA可以用來數(shù)字電源嗎?

    請(qǐng)問: FPGA可以用來數(shù)字電源嗎?有參考設(shè)計(jì)案例嗎? FPGA和DSP數(shù)字電源的優(yōu)缺點(diǎn)是什么?
    發(fā)表于 01-08 22:24

    淺談多CPU、多核CPU、超線程技術(shù)、SMP

    Local APIC: APIC全稱是Advanced Programmable Interrupt Controller,翻譯過來就是高級(jí)可編程中斷控制器,用來處理CPU中斷。
    的頭像 發(fā)表于 01-06 10:38 ?2575次閱讀
    淺談多<b class='flag-5'>CPU</b>、多核<b class='flag-5'>CPU</b>、超線程技術(shù)、SMP

    法拉電容是不是可以用來電池用

    法拉電容是不是可以用來電池用? 很抱歉,我不認(rèn)為法拉電容可以直接用來制造電池。法拉電容和電池雖然都是儲(chǔ)存能量的裝置,但是它們的工作原理和結(jié)構(gòu)有著明顯的區(qū)別。 首先,我們需要了解法拉電
    的頭像 發(fā)表于 12-29 13:42 ?3021次閱讀

    如何能夠?qū)崿F(xiàn)通用FPGA問題?

    FPGA 是一種偽通用計(jì)算加速器,與 GPGPU(通用 GPU)類似,FPGA 可以很好地卸載特定類型的計(jì)算。從編程角度上講,FPGA
    發(fā)表于 12-29 10:29 ?459次閱讀
    RM新时代网站-首页