簡單談下FPGA是如何實現硬件加速的


CNN神經網絡算法剛出來的時候,就采用了FPGA作為物理機來實現,為何會率先采用FPGA作為算法加速器而非通用CPU,本文談談個人的理解。
首先明確FPGA與通用CPU的區別,CPU里設置流水線結構,而FPGA則是采用自定制的並行結構。就比如CPU最經典的5級流水線結構,一條指令的操作過程可以拆分為取指、譯碼、執行、訪存、寫回五個獨立的子指令,通過流水線架構,使5條流水線分別執行上述5個獨立指令,從而確保在每個時鍾周期內執行一條指令。而FPGA則是一片白紙,用戶可以自己需求增加同倍硬件資源,且增加的硬件資源可在同一時鍾下進行並行運算,實現處理能力的成本增長。
以一個簡單的c程序為例,
for(i=0;i<10;i++)
  x[i] = a[i] + b[i];

for循環下的加法運算,如果采用上述5級流水線架構的CPU,執行完一次 x=a+b運算需要一個時鍾周期(5級流水線完成5條子指令),那么整個算法執行完成需要10個硬件周期。而使用FPGA來做上述運算,一般地,FPGA會直接把上述算法直接復制十份,就如下圖所示

因為之前說過FPGA就是一張白紙,用戶可以自己按需求使用它的硬件資源,如果采用上圖所示的方法,則FPGA實現上述算法只需要一個硬件時鍾周期。即計算時間對比5級流水架構的CPU縮減至其1/10。
當然,根據用戶需要,可以采用5倍,2倍的硬件資源來做這部分的算法,而將多出來的硬件資源用於更加核心的算法部分。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM