做項目實現(xiàn)某個feature時經(jīng)常會考慮一個問題,硬件實現(xiàn)還是軟件實現(xiàn),還是軟硬件結(jié)合。
要想回答好這個問題,就要理解硬件和軟件的各自的優(yōu)劣勢。
優(yōu)劣勢
軟件程序其實是運行在CPU上的,所有的程序都要分解為一條一條的機器指令去運行。CPU作為一種通用的架構(gòu),它最大的優(yōu)勢自然也是通用,擅長復(fù)雜的邏輯和運算操作。但也因為其通用的架構(gòu),使得CPU在某些特定的應(yīng)用場景性能不足,比如視頻渲染,不然也不會出現(xiàn)GPU。
FPGA則恰恰相反。FPGA非常擅長并行計算,同時能夠提供極低的延遲。但是卻不擅長復(fù)雜的邏輯和數(shù)學運算操作,比如調(diào)度算法,甚至某些看起來比較簡單的排序算法在FPGA上實現(xiàn)也比較麻煩。
軟硬件結(jié)合的經(jīng)典設(shè)計
計算機系統(tǒng)中的地址翻譯可以看做一個經(jīng)典設(shè)計。
地址翻譯是將虛擬地址轉(zhuǎn)換為物理地址。這個過程是通過查找表(頁表)的方式實現(xiàn)的。頁表中存儲著物理地址,那么要存儲哪些物理地址,哪個物理地址存儲在哪一個表項,是一個比較復(fù)雜的邏輯,這個過程是通過操作系統(tǒng)即軟件來實現(xiàn)的。當程序或者進程在運行期間需要訪問某一個地址,我們希望用最快的速度來實現(xiàn)地址翻譯,這個過程用到的便是硬件,硬件讀取頁表的內(nèi)容獲得物理地址即可。
最后回到最初的問題,用硬件還是用軟件,一句話總結(jié),復(fù)雜的對性能要求較低的交給軟件,簡單的性能要求高的交給硬件。
更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<