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