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