資料介紹
描述
在本周的部分中,一切都與性能有關(guān)。FPGA 的常見用途之一是提高速度和/或能源效率方面的性能。這部分是通過 1) 消除指令的解釋開銷,2) 消除中央內(nèi)存瓶頸,以及 3) 指令級并行性來實(shí)現(xiàn)的。
如果您是本系列的新手,您可能想返回到Hardware-as-Code Part I 。
示例 1 的性能
在第二部分中,我們生成了以下簡單功能的硬件實(shí)現(xiàn):
int16_t calc(int16_t x) {
return 7 * x - 15;
}
讓我們仔細(xì)看看這個函數(shù)作為在 CPU 上執(zhí)行的軟件和作為 FPGA 上的自定義硬件函數(shù)的性能。首先,考慮用于在 CPU 上執(zhí)行此功能的能量。典型的小型 CPU 將由以下功能硬件塊組成:
- 1.取指令
- 2.指令解碼
- 3. 內(nèi)存參數(shù)獲取
- 4.執(zhí)行指令
- 5. 寫回結(jié)果
其中前兩個被 FPGA 功能完全消除。這些純粹是 CPU 模型所需的解釋開銷。3 號和 4 號專用于中央存儲器模型所需的數(shù)據(jù)移動。FPGA 通常不需要外部存儲器,這將再次完全消除開銷。4 號是 CPU 中唯一實(shí)際執(zhí)行特定應(yīng)用功能的部分。然而,所有這些單元在整個程序執(zhí)行過程中都在不斷地消耗能量。此外,外部存儲器也消耗大量電力。
執(zhí)行時間呢?讓我們估計一下在小型 CPU 上執(zhí)行可能需要的周期數(shù):
- 將 x 加載到寄存器中(2 個周期)
- 將第一個常數(shù)加載到寄存器中(1 個周期)
- 乘法(1 個周期)
- 將第二個常數(shù)加載到寄存器中(1 個周期)
- 添加(1個周期)
- 將結(jié)果存儲到內(nèi)存(2 個周期)
總共8個周期!當(dāng)然,對于具有更大指令集和更復(fù)雜指令的 CPU,您可能可以使用更少的指令,但這些通常需要更多的周期。因此,假設(shè) 4-8 個周期。
現(xiàn)在對于 FPGA 實(shí)現(xiàn),我們有一個執(zhí)行乘法和加法的單周期電路。這就像有一個專門為這個應(yīng)用程序構(gòu)建的自定義指令。值通過寄存器傳遞,沒有內(nèi)存訪問。CPU 有時可以利用寄存器來傳遞值,但通常只有少數(shù)可用。此外,許多函數(shù)需要堆棧內(nèi)存來存儲局部變量和臨時值。
不服氣?讓我們稍微擴(kuò)展第一個例子來解決一個現(xiàn)實(shí)世界的問題,看看它是如何比較的。
機(jī)器學(xué)習(xí)分類示例
分類是機(jī)器學(xué)習(xí)執(zhí)行的一項非常常見的任務(wù)。分類任務(wù)是根據(jù)您擁有的一些數(shù)據(jù)將某事物分類為 2 個或更多類。例如,根據(jù)附在風(fēng)扇上的一些振動傳感器數(shù)據(jù),將其分類為工作或不工作(電機(jī)故障/螺旋槳卡?。?。
讓我們根據(jù)兩個測量值將一些數(shù)據(jù)簡單地分類為兩個類別。下圖顯示了許多具有已知類別的對象的測量數(shù)據(jù)。

每個點(diǎn)代表一個示例對象的兩個測量值,顏色代表該對象的已知類別。目標(biāo)是,根據(jù)一個新對象的兩個值(x,y),預(yù)測它是在橙色類還是藍(lán)色類中。從圖中可以看出,橙色的類對象都在綠線和藍(lán)線的左側(cè)。藍(lán)色類對象都在一條或兩條線的右側(cè)。
讓我們實(shí)現(xiàn)一個簡單的預(yù)測函數(shù),它只測試一個新點(diǎn)是否在兩條線的左側(cè):

此代碼也可從 git repo 獲得:文件夾中的https://github.com/sathibault/hac-examples.git 。poly-classify
繼續(xù)classify
在您的計算機(jī)和 FPGA 板上構(gòu)建和測試此功能(如果您需要查看它是如何完成的,請返回第 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ù)測的類為橙色。否則,預(yù)測類別為藍(lán)色。
我選擇這個例子是因?yàn)樗苋菀捉忉?,并且非常代表?dāng)今使用的非常成功的神經(jīng)網(wǎng)絡(luò)所需的計算。
指令級并行
除了消除中央內(nèi)存瓶頸和 CPU 的解釋開銷外,定制硬件還支持高級別的指令級并行性。對于第二個示例,為classify
函數(shù)生成的硬件如下所示:

如您所見,每個方程都有自己專用的乘法器和加法器。盡管相對于第一個示例,我們所做的工作量增加了四倍,但整個函數(shù)仍然在一個周期內(nèi)執(zhí)行!通常對應(yīng)于 CPU 上的許多指令并按順序執(zhí)行的功能可以并行執(zhí)行。試著估計一下我的指令/周期這個函數(shù)在 CPU 上需要多少。
我真的在強(qiáng)調(diào) CPU 方法的負(fù)面影響,但對于 FPGA 來說,這并不全是玫瑰。我們可以在速度和功耗方面取得一些顯著的進(jìn)步,但缺點(diǎn)是它占用了物理空間。上圖中的每個模塊都占用了 FPGA 上的空間。隨著函數(shù)的增長,它將占用的空間量也會增加,并且可用的空間有限。雖然空間也可能是微控制器程序存儲器的一個問題,但 FPGA 的空間限制通常更加有限。我們將在下一期中更詳細(xì)地研究空間使用情況。
下一步
到目前為止,我們一直在研究簡單的直線代碼示例。下一次,我們將看看循環(huán)和數(shù)組的使用。
連接
在我發(fā)布新的分期付款時,請關(guān)注我以保持最新狀態(tài)。還有一個 Discord 服務(wù)器(公共聊天平臺),用于您在https://discord.gg/3sA7FHayGH上可能有的任何評論、問題或討論
- 用于高頻接收器和發(fā)射器的鎖相環(huán)——第三部分
- SensorTile.box第三部分:編程模式(Pro mode)介紹
- 硬件即代碼第五部分:FPGA內(nèi)部
- 硬件即代碼第四部分:嵌入式RAM
- 用于激活設(shè)備的可編程定時器-第三部分
- 《基于運(yùn)算放大器和模擬集成電路的電路設(shè)計》第三版 0次下載
- LTC2387驅(qū)動程序第三部分
- 接地和去耦:現(xiàn)在就開始學(xué)習(xí)基礎(chǔ)知識, 為日后鋪平道路!第三部分:去耦續(xù)篇資料下載
- 《電動汽車傳導(dǎo)充電系統(tǒng)》國家標(biāo)準(zhǔn)第三部分直流充電接口資料免費(fèi)下載 35次下載
- 2012年P(guān)SoC數(shù)?;旌显O(shè)計培訓(xùn)_第三部分 8次下載
- MATLAB信號處理詳解_部分3 10次下載
- 開關(guān)電源設(shè)計(第3版)第三部分 0次下載
- 嵌入式系統(tǒng)硬件與軟件架構(gòu)(英文版) 0次下載
- ADC和DAC基礎(chǔ) (共五部分,完整版) 0次下載
- 《電子電氣產(chǎn)品中六價鉻的測定 第三部分:二苯碳酰二肼分光光度
- 連接器電鍍的問題解答 710次閱讀
- 如何利用相位噪聲分析程序和傳遞函數(shù)來降低鎖相環(huán)的輸出相位噪聲? 1927次閱讀
- INGCHIPS BLE芯片如何獲得最大吞吐量 934次閱讀
- 什么是機(jī)器學(xué)習(xí) 475次閱讀
- 交流電壓信號調(diào)理電路分析 2870次閱讀
- 射頻功率的測量和控制(第三部分) 1195次閱讀
- 為數(shù)字通信系統(tǒng)選擇混合信號元件IV:接收器架構(gòu)注意事項 921次閱讀
- 什么是控制系統(tǒng)以及如何設(shè)計DC-DC轉(zhuǎn)換器的控制回路 3036次閱讀
- 實(shí)時數(shù)據(jù)體系建設(shè)的總體方案的三部分 6771次閱讀
- 光敏電阻型號命名方法 4616次閱讀
- 單片機(jī)中PWM的工作原理解析 3.2w次閱讀
- 關(guān)于人工智能領(lǐng)域最新的報告分析 4836次閱讀
- ECAD/ MCAD協(xié)同對PCB的作用及發(fā)展 5595次閱讀
- 從充電基礎(chǔ)設(shè)施建設(shè)狀況、充電費(fèi)用和充電方式三部分來簡要介紹 7115次閱讀
- Google Dremel數(shù)據(jù)模型講解 4348次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費(fèi)
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費(fèi)
- 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費(fèi)
- 4網(wǎng)絡(luò)安全從業(yè)者入門指南
- 2.91 MB | 1次下載 | 免費(fèi)
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費(fèi)
- 6海川SM5701規(guī)格書
- 1.48 MB | 次下載 | 免費(fèi)
- 7H20PR5電磁爐IGBT功率管規(guī)格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護(hù)等級說明
- 0.08 MB | 次下載 | 免費(fèi)
本月
- 1貼片三極管上的印字與真實(shí)名稱的對照表詳細(xì)說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設(shè)計指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍(lán)牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費(fèi)
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論