一個(gè)故事理解流水線、并行、緩存、內(nèi)存、存儲(chǔ)
蛋蛋花了一天給小蛋蛋做了一個(gè)玩具汽車,沒想到做的太好了,同學(xué)們都來買。蛋蛋一個(gè)人忙不過來,就一家人合作生產(chǎn)。蛋蛋負(fù)責(zé)把原料分類擺放在桌上,小蛋蛋擰螺絲組裝,蛋媽把玩具放到包裝盒里。三個(gè)人采用流水線的方式,每個(gè)人都沒閑著,生產(chǎn)效率大為提高,一天能造50個(gè)玩具。
隔壁老王看到蛋蛋做玩具賺錢了,也一家三口加入造玩具大軍,慢慢整個(gè)小區(qū)家家冒煙,戶戶生產(chǎn)。五十家人采用并行工作的方式,一天能造2500個(gè)玩具。
本來,蛋蛋家里的工作臺(tái)旁邊有個(gè)箱子,叫做緩存。把玩具生產(chǎn)的原料和生產(chǎn)好的玩具放在自己家里,離得又近又速度快。
小區(qū)里家家冒煙后,原料供應(yīng)和玩具運(yùn)輸需求量大增。居民們?cè)谛^(qū)中央建了一個(gè)倉(cāng)庫(kù),叫做內(nèi)存,里面放了很多原料和玩具,看門大爺每天推著手推車到每家每戶去送原料,收玩具,人們給他起了個(gè)外號(hào)——總線。
鎮(zhèn)長(zhǎng)看到蛋蛋家園小區(qū)交的玩具稅日漸增長(zhǎng),為了增加收入,決定建設(shè)玩具小鎮(zhèn),于是鎮(zhèn)上每個(gè)小區(qū)都開始生產(chǎn)玩具,玩具生產(chǎn)規(guī)模日漸擴(kuò)大。鎮(zhèn)中心建了一個(gè)大倉(cāng)庫(kù),集中存放原料和玩具,倉(cāng)庫(kù)太大了,如果一個(gè)個(gè)領(lǐng)取太不方便,所以每次提貨或者送貨必須以500個(gè)為單位批量領(lǐng)取,這個(gè)大倉(cāng)庫(kù)叫做硬盤。
在我們的計(jì)算機(jī)中,CPU采用流水線的方式工作,把一個(gè)任務(wù)分成十幾個(gè)步驟,用十幾級(jí)流水線計(jì)算,速度增長(zhǎng)了十幾倍。多核CPU就是并行工作,又能把計(jì)算速度提升幾倍。計(jì)算速度快了之后,對(duì)數(shù)據(jù)的讀寫速度要求變高,所以,現(xiàn)代CPU設(shè)計(jì)了先進(jìn)的緩存系統(tǒng),可以說,對(duì)現(xiàn)代通用CPU來說,緩存才是核心。
可是對(duì)某些應(yīng)用來說,CPU有點(diǎn)走歪了,它擅長(zhǎng)的是用高頻率把順序執(zhí)行的任務(wù)分解成很多級(jí)流水線高速執(zhí)行,但是對(duì)于深度學(xué)習(xí)等計(jì)算,需要的是大量的并行計(jì)算,這時(shí)候,CPU的核心數(shù)成了限制。
FPGA的并行性
蛋蛋設(shè)計(jì)了一個(gè)復(fù)雜的機(jī)器叫CPU,它能一條條讀取并執(zhí)行蛋蛋寫好的指令,把任務(wù)分解成很多級(jí)流水線,生產(chǎn)出各種各樣復(fù)雜的玩具。
玩具市場(chǎng)總是有新的流行風(fēng)尚,最近突然樂高玩具開始大火,每一個(gè)積木都長(zhǎng)得差不多,但是很多的積木就可以搭出復(fù)雜的形狀?,F(xiàn)在的家長(zhǎng)都希望寓教于玩,讓孩子玩游戲也能動(dòng)腦筋,蛋蛋看到了這個(gè)趨勢(shì),也想生產(chǎn)樂高積木??墒撬l(fā)現(xiàn)復(fù)雜的機(jī)器CPU的生產(chǎn)效率太低了,他需要的是同時(shí)大批量幾百上千個(gè)機(jī)器并行生產(chǎn),而CPU最多只能同時(shí)生產(chǎn)十幾個(gè)。所以,蛋蛋又鉆研了一段時(shí)間,研制出新的機(jī)器——FPGA。這臺(tái)機(jī)器里面有幾千個(gè)小引擎,按照蛋蛋設(shè)定好的任務(wù),大家熱火朝天地生產(chǎn)自己的小積木。
我們上大學(xué)學(xué)習(xí)的C語言是給CPU編程的語言,它的特點(diǎn)就是寫一個(gè)main函數(shù),里面有很多內(nèi)容,程序啟動(dòng)后,從頭按順序執(zhí)行到結(jié)尾。這是因?yàn)橹挥幸粋€(gè)CPU在運(yùn)行,程序會(huì)轉(zhuǎn)化為指令讓CPU一條條執(zhí)行。
FPGA是并行計(jì)算機(jī),它的基礎(chǔ)編程語言叫做Verilog,在這種語言中,每一段程序,都會(huì)轉(zhuǎn)化為FPGA芯片里面的一個(gè)小計(jì)算引擎,大家并行執(zhí)行,熱火朝天的干自己的活。
FPGA和CPU如何搭配
FPGA作為可重構(gòu)計(jì)算引擎,一般要和CPU搭配使用。如下圖,可重構(gòu)計(jì)算引擎要么直接和CPU緊密相連,要么和緩存相連,前者叫緊耦合,后者叫松耦合。還有一種情況下,F(xiàn)PGA是作為協(xié)處理器coprocessor連到內(nèi)存總線上,和CPU共享內(nèi)存。
如下圖,F(xiàn)PGA作為協(xié)處理器,CPU把指令寫入內(nèi)存,F(xiàn)PGA從內(nèi)存讀取指令執(zhí)行,并把計(jì)算結(jié)果寫入內(nèi)存。這種模式的優(yōu)點(diǎn)是簡(jiǎn)單易行,協(xié)處理器和CPU分離。瓶頸在于共享內(nèi)存,限制了性能,同時(shí)由于通過內(nèi)存交互,CPU和FPGA之間通信延遲變長(zhǎng)了。所以適合于FPGA能獨(dú)立執(zhí)行的加速任務(wù),比如視頻編解碼、數(shù)據(jù)加解密等。
下圖是一個(gè)松耦合的例子。CPU(ARC)和可重構(gòu)計(jì)算邏輯放在一顆芯片里面,CPU可以直接訪問可重構(gòu)計(jì)算引擎,而且共享內(nèi)存,可重構(gòu)計(jì)算引擎可以通過DMA方式直接讀寫內(nèi)存。同時(shí),我們看到可重構(gòu)計(jì)算引擎有自己的數(shù)據(jù)讀寫接口,所以可以脫離CPU獨(dú)立工作,打工創(chuàng)業(yè)兩不誤。
再來看一個(gè)緊耦合的例子。如下圖,CPU FU是一般CPU的基本計(jì)算單元,例如ALU、乘法器、浮點(diǎn)處理器等,RFU跟這些基本單元一樣,放在芯片里面,而且可以直接被CPU的寄存器控制,還能訪問緩存中的數(shù)據(jù)。
總結(jié)一下,協(xié)處理器相當(dāng)于外地當(dāng)官的,只能接受皇帝的命令工作。松耦合就是京城里的官員,可以定期去皇宮跟皇帝嘮嘮嗑。緊耦合已經(jīng)到了外戚和太監(jiān)的地步,能在皇宮里經(jīng)常值班。
松耦合和緊耦合都要在芯片里面放可重構(gòu)計(jì)算引擎,成本比較高,但是效率也很高。相當(dāng)于CPU里面有個(gè)FPGA,隨時(shí)可以編程讓它做不同的計(jì)算。處理視頻時(shí),配置成視頻編解碼邏輯,做AI計(jì)算時(shí)配置成深度學(xué)習(xí)計(jì)算器,一個(gè)芯片既有CPU,又有可以配置的硬件計(jì)算引擎。
-
FPGA
+關(guān)注
關(guān)注
1630文章
21800瀏覽量
606272 -
cpu
+關(guān)注
關(guān)注
68文章
10908瀏覽量
213110 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5516瀏覽量
121586
原文標(biāo)題:阿呆讀可重構(gòu)計(jì)算2:FPGA如何克服CPU的缺陷?
文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
FPGA真的能取代CPU和GPU嗎?
FPGA、CPU、DSP的競(jìng)爭(zhēng)與融合
三步教你如何DIY電腦主板和CPU的搭配
FPGA與CPU有什么關(guān)系_FPGA與CPU的聯(lián)系
簡(jiǎn)單了解CPU和內(nèi)存搭配規(guī)律
FPGA為什么比CPU和GPU快
如何才能合理的搭配CPU和主板
使用FPGA實(shí)現(xiàn)CPU設(shè)計(jì)的畢業(yè)論文總結(jié)
![使用<b class='flag-5'>FPGA</b>實(shí)現(xiàn)<b class='flag-5'>CPU</b>設(shè)計(jì)的畢業(yè)論文總結(jié)](https://file.elecfans.com/web1/M00/C3/BE/pIYBAF8n4KqAYploAALoTEZnX-A339.png)
如何使用CPU配置FPGA的詳細(xì)資料說明
![如何使用<b class='flag-5'>CPU</b>配置<b class='flag-5'>FPGA</b>的詳細(xì)資料說明](https://file.elecfans.com/web1/M00/C4/0A/o4YBAF81DdWAT51LAAF2dXMHb-A503.png)
如何使用FPGA實(shí)現(xiàn)八位RISC CPU的設(shè)計(jì)
![如何使用<b class='flag-5'>FPGA</b>實(shí)現(xiàn)八位RISC <b class='flag-5'>CPU</b>的設(shè)計(jì)](https://file.elecfans.com/web1/M00/C4/6F/o4YBAF88-EqAVSptAADM9wv64S8786.png)
為什么FPGA主頻比CPU慢,但卻可以用來幫CPU做加速
FPGA+GPU+CPU國(guó)產(chǎn)化人工智能平臺(tái)
![<b class='flag-5'>FPGA+GPU+CPU</b>國(guó)產(chǎn)化人工智能平臺(tái)](https://file.elecfans.com/web2/M00/25/DF/poYBAGG4Qq-Acg_lAAAU6_gxx6g420.jpg)
評(píng)論