資料介紹
描述
在本周的部分中,一切都與性能有關(guān)。FPGA 的常見(jiàn)用途之一是提高速度和/或能源效率方面的性能。這部分是通過(guò) 1) 消除指令的解釋開(kāi)銷,2) 消除中央內(nèi)存瓶頸,以及 3) 指令級(jí)并行性來(lái)實(shí)現(xiàn)的。
如果您是本系列的新手,您可能想返回到Hardware-as-Code Part I 。
示例 1 的性能
在第二部分中,我們生成了以下簡(jiǎn)單功能的硬件實(shí)現(xiàn):
int16_t calc(int16_t x) {
return 7 * x - 15;
}
讓我們仔細(xì)看看這個(gè)函數(shù)作為在 CPU 上執(zhí)行的軟件和作為 FPGA 上的自定義硬件函數(shù)的性能。首先,考慮用于在 CPU 上執(zhí)行此功能的能量。典型的小型 CPU 將由以下功能硬件塊組成:
- 1.取指令
- 2.指令解碼
- 3. 內(nèi)存參數(shù)獲取
- 4.執(zhí)行指令
- 5. 寫回結(jié)果
其中前兩個(gè)被 FPGA 功能完全消除。這些純粹是 CPU 模型所需的解釋開(kāi)銷。3 號(hào)和 4 號(hào)專用于中央存儲(chǔ)器模型所需的數(shù)據(jù)移動(dòng)。FPGA 通常不需要外部存儲(chǔ)器,這將再次完全消除開(kāi)銷。4 號(hào)是 CPU 中唯一實(shí)際執(zhí)行特定應(yīng)用功能的部分。然而,所有這些單元在整個(gè)程序執(zhí)行過(guò)程中都在不斷地消耗能量。此外,外部存儲(chǔ)器也消耗大量電力。
執(zhí)行時(shí)間呢?讓我們估計(jì)一下在小型 CPU 上執(zhí)行可能需要的周期數(shù):
- 將 x 加載到寄存器中(2 個(gè)周期)
- 將第一個(gè)常數(shù)加載到寄存器中(1 個(gè)周期)
- 乘法(1 個(gè)周期)
- 將第二個(gè)常數(shù)加載到寄存器中(1 個(gè)周期)
- 添加(1個(gè)周期)
- 將結(jié)果存儲(chǔ)到內(nèi)存(2 個(gè)周期)
總共8個(gè)周期!當(dāng)然,對(duì)于具有更大指令集和更復(fù)雜指令的 CPU,您可能可以使用更少的指令,但這些通常需要更多的周期。因此,假設(shè) 4-8 個(gè)周期。
現(xiàn)在對(duì)于 FPGA 實(shí)現(xiàn),我們有一個(gè)執(zhí)行乘法和加法的單周期電路。這就像有一個(gè)專門為這個(gè)應(yīng)用程序構(gòu)建的自定義指令。值通過(guò)寄存器傳遞,沒(méi)有內(nèi)存訪問(wèn)。CPU 有時(shí)可以利用寄存器來(lái)傳遞值,但通常只有少數(shù)可用。此外,許多函數(shù)需要堆棧內(nèi)存來(lái)存儲(chǔ)局部變量和臨時(shí)值。
不服氣?讓我們稍微擴(kuò)展第一個(gè)例子來(lái)解決一個(gè)現(xiàn)實(shí)世界的問(wèn)題,看看它是如何比較的。
機(jī)器學(xué)習(xí)分類示例
分類是機(jī)器學(xué)習(xí)執(zhí)行的一項(xiàng)非常常見(jiàn)的任務(wù)。分類任務(wù)是根據(jù)您擁有的一些數(shù)據(jù)將某事物分類為 2 個(gè)或更多類。例如,根據(jù)附在風(fēng)扇上的一些振動(dòng)傳感器數(shù)據(jù),將其分類為工作或不工作(電機(jī)故障/螺旋槳卡住)。
讓我們根據(jù)兩個(gè)測(cè)量值將一些數(shù)據(jù)簡(jiǎn)單地分類為兩個(gè)類別。下圖顯示了許多具有已知類別的對(duì)象的測(cè)量數(shù)據(jù)。
每個(gè)點(diǎn)代表一個(gè)示例對(duì)象的兩個(gè)測(cè)量值,顏色代表該對(duì)象的已知類別。目標(biāo)是,根據(jù)一個(gè)新對(duì)象的兩個(gè)值(x,y),預(yù)測(cè)它是在橙色類還是藍(lán)色類中。從圖中可以看出,橙色的類對(duì)象都在綠線和藍(lán)線的左側(cè)。藍(lán)色類對(duì)象都在一條或兩條線的右側(cè)。
讓我們實(shí)現(xiàn)一個(gè)簡(jiǎn)單的預(yù)測(cè)函數(shù),它只測(cè)試一個(gè)新點(diǎn)是否在兩條線的左側(cè):
此代碼也可從 git repo 獲得:文件夾中的https://github.com/sathibault/hac-examples.git 。poly-classify
繼續(xù)classify
在您的計(jì)算機(jī)和 FPGA 板上構(gòu)建和測(cè)試此功能(如果您需要查看它是如何完成的,請(qǐng)返回第 II 部分)。您應(yīng)該看到如下輸出:
poly-classify>.\program
classify(7, 82) = 1
classify(5, 100) = 1
classify(10, 70) = 0
classify(15, 100) = 0
輸出 1 表示該點(diǎn)位于兩條線的左側(cè),預(yù)測(cè)的類為橙色。否則,預(yù)測(cè)類別為藍(lán)色。
我選擇這個(gè)例子是因?yàn)樗苋菀捉忉專⑶曳浅4懋?dāng)今使用的非常成功的神經(jīng)網(wǎng)絡(luò)所需的計(jì)算。
指令級(jí)并行
除了消除中央內(nèi)存瓶頸和 CPU 的解釋開(kāi)銷外,定制硬件還支持高級(jí)別的指令級(jí)并行性。對(duì)于第二個(gè)示例,為classify
函數(shù)生成的硬件如下所示:
如您所見(jiàn),每個(gè)方程都有自己專用的乘法器和加法器。盡管相對(duì)于第一個(gè)示例,我們所做的工作量增加了四倍,但整個(gè)函數(shù)仍然在一個(gè)周期內(nèi)執(zhí)行!通常對(duì)應(yīng)于 CPU 上的許多指令并按順序執(zhí)行的功能可以并行執(zhí)行。試著估計(jì)一下我的指令/周期這個(gè)函數(shù)在 CPU 上需要多少。
我真的在強(qiáng)調(diào) CPU 方法的負(fù)面影響,但對(duì)于 FPGA 來(lái)說(shuō),這并不全是玫瑰。我們可以在速度和功耗方面取得一些顯著的進(jìn)步,但缺點(diǎn)是它占用了物理空間。上圖中的每個(gè)模塊都占用了 FPGA 上的空間。隨著函數(shù)的增長(zhǎng),它將占用的空間量也會(huì)增加,并且可用的空間有限。雖然空間也可能是微控制器程序存儲(chǔ)器的一個(gè)問(wèn)題,但 FPGA 的空間限制通常更加有限。我們將在下一期中更詳細(xì)地研究空間使用情況。
下一步
到目前為止,我們一直在研究簡(jiǎn)單的直線代碼示例。下一次,我們將看看循環(huán)和數(shù)組的使用。
連接
在我發(fā)布新的分期付款時(shí),請(qǐng)關(guān)注我以保持最新狀態(tài)。還有一個(gè) Discord 服務(wù)器(公共聊天平臺(tái)),用于您在https://discord.gg/3sA7FHayGH上可能有的任何評(píng)論、問(wèn)題或討論
- 用于高頻接收器和發(fā)射器的鎖相環(huán)——第三部分
- SensorTile.box第三部分:編程模式(Pro mode)介紹
- 硬件即代碼第五部分:FPGA內(nèi)部
- 硬件即代碼第四部分:嵌入式RAM
- 用于激活設(shè)備的可編程定時(shí)器-第三部分
- 《基于運(yùn)算放大器和模擬集成電路的電路設(shè)計(jì)》第三版 0次下載
- LTC2387驅(qū)動(dòng)程序第三部分
- 接地和去耦:現(xiàn)在就開(kāi)始學(xué)習(xí)基礎(chǔ)知識(shí), 為日后鋪平道路!第三部分:去耦續(xù)篇資料下載
- 《電動(dòng)汽車傳導(dǎo)充電系統(tǒng)》國(guó)家標(biāo)準(zhǔn)第三部分直流充電接口資料免費(fèi)下載 34次下載
- 2012年P(guān)SoC數(shù)?;旌显O(shè)計(jì)培訓(xùn)_第三部分 8次下載
- MATLAB信號(hào)處理詳解_部分3 10次下載
- 開(kāi)關(guān)電源設(shè)計(jì)(第3版)第三部分 0次下載
- 嵌入式系統(tǒng)硬件與軟件架構(gòu)(英文版) 0次下載
- ADC和DAC基礎(chǔ) (共五部分,完整版) 0次下載
- 《電子電氣產(chǎn)品中六價(jià)鉻的測(cè)定 第三部分:二苯碳酰二肼分光光度
- 連接器電鍍的問(wèn)題解答 548次閱讀
- 如何利用相位噪聲分析程序和傳遞函數(shù)來(lái)降低鎖相環(huán)的輸出相位噪聲? 1333次閱讀
- INGCHIPS BLE芯片如何獲得最大吞吐量 684次閱讀
- 什么是機(jī)器學(xué)習(xí) 386次閱讀
- 交流電壓信號(hào)調(diào)理電路分析 2402次閱讀
- 射頻功率的測(cè)量和控制(第三部分) 1024次閱讀
- 為數(shù)字通信系統(tǒng)選擇混合信號(hào)元件IV:接收器架構(gòu)注意事項(xiàng) 717次閱讀
- 什么是控制系統(tǒng)以及如何設(shè)計(jì)DC-DC轉(zhuǎn)換器的控制回路 1979次閱讀
- 實(shí)時(shí)數(shù)據(jù)體系建設(shè)的總體方案的三部分 6598次閱讀
- 光敏電阻型號(hào)命名方法 4426次閱讀
- 單片機(jī)中PWM的工作原理解析 3.2w次閱讀
- 關(guān)于人工智能領(lǐng)域最新的報(bào)告分析 4701次閱讀
- ECAD/ MCAD協(xié)同對(duì)PCB的作用及發(fā)展 5457次閱讀
- 從充電基礎(chǔ)設(shè)施建設(shè)狀況、充電費(fèi)用和充電方式三部分來(lái)簡(jiǎn)要介紹 6995次閱讀
- Google Dremel數(shù)據(jù)模型講解 4152次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多