做項目實現某個feature時經常會考慮一個問題,硬件實現還是軟件實現,還是軟硬件結合。
要想回答好這個問題,就要理解硬件和軟件的各自的優劣勢。
優劣勢
軟件程序其實是運行在CPU上的,所有的程序都要分解為一條一條的機器指令去運行。CPU作為一種通用的架構,它最大的優勢自然也是通用,擅長復雜的邏輯和運算操作。但也因為其通用的架構,使得CPU在某些特定的應用場景性能不足,比如視頻渲染,不然也不會出現GPU。
FPGA則恰恰相反。FPGA非常擅長并行計算,同時能夠提供極低的延遲。但是卻不擅長復雜的邏輯和數學運算操作,比如調度算法,甚至某些看起來比較簡單的排序算法在FPGA上實現也比較麻煩。
軟硬件結合的經典設計
計算機系統中的地址翻譯可以看做一個經典設計。
地址翻譯是將虛擬地址轉換為物理地址。這個過程是通過查找表(頁表)的方式實現的。頁表中存儲著物理地址,那么要存儲哪些物理地址,哪個物理地址存儲在哪一個表項,是一個比較復雜的邏輯,這個過程是通過操作系統即軟件來實現的。當程序或者進程在運行期間需要訪問某一個地址,我們希望用最快的速度來實現地址翻譯,這個過程用到的便是硬件,硬件讀取頁表的內容獲得物理地址即可。
最后回到最初的問題,用硬件還是用軟件,一句話總結,復雜的對性能要求較低的交給軟件,簡單的性能要求高的交給硬件。
-
FPGA
+關注
關注
1630文章
21796瀏覽量
605258 -
硬件
+關注
關注
11文章
3380瀏覽量
66389 -
排序算法
+關注
關注
0文章
53瀏覽量
10092
原文標題:硬件(FPGA)vs 軟件
文章出處:【微信號:FPGA開發之路,微信公眾號:FPGA開發之路】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論