怎樣用linux做網(wǎng)站微信廣告投放推廣平臺(tái)
在開始前剛好我有一些資料,是我根據(jù)網(wǎng)友給的問題精心整理了一份「C語言的資料從專業(yè)入門到高級(jí)教程」,
點(diǎn)個(gè)關(guān)注在評(píng)論區(qū)回復(fù)“888”之后私信回復(fù)“888”,全部無償共享給大家!!!
用老石的一句話其實(shí)很好說明本質(zhì),cpu運(yùn)行時(shí)固定數(shù)據(jù)流,底層硬件在變化。而fpga運(yùn)行是固定底層硬件,數(shù)據(jù)流在硬件上流動(dòng)。我知道很多初學(xué)者看到這段并不能理解,不是說fpga是可以對(duì)硬件進(jìn)行編程的器件嗎?為什么運(yùn)行的時(shí)候底層硬件是固定的?
這其實(shí)跟他們處理數(shù)據(jù)的思路有關(guān),cpu是通過指令集去完成指定操作,而fpga實(shí)現(xiàn)功能的思路與數(shù)字硬件電路一樣,需要加法器,那我就用與非門搭建一個(gè)加法器,只不過fpga內(nèi)部就把與或非這些邏輯門用查找表這一個(gè)器件替代了,查找表本質(zhì)就是ram,這個(gè)ram只能通過綜合軟件進(jìn)行初始化,每次寫完程序后,使用vivado,quartus綜合,然后燒錄,燒錄的是什么?其實(shí)就是給這些查找表賦值,確定這些查找表的功能,有的查找表根據(jù)寫的代碼,可能是加法器,減法器,數(shù)據(jù)選擇器,比較器等等。當(dāng)工程燒錄進(jìn)fpga之后,那fpga內(nèi)的每個(gè)查找表的功能和連接方式其實(shí)就已經(jīng)確定了,其實(shí)fpga內(nèi)部的電路就已經(jīng)確定了,后續(xù)需要處理的數(shù)據(jù)只需要從輸入端流出到輸出端,就完成了相關(guān)了運(yùn)算,所以說fpga運(yùn)行是數(shù)據(jù)流在底層硬件上流動(dòng),因此速度就很快。
從而也得知編寫fpga本質(zhì)就是搭建數(shù)字電路,只不過使用查找表替換了與,或,非這些基本邏輯。比如在學(xué)數(shù)字電路的時(shí)候想要實(shí)現(xiàn)兩個(gè)加法運(yùn)算,怎么做?如果不考慮速度,那就按順序執(zhí)行。如果想電路簡(jiǎn)單,速度快,那是不是直接搭兩套加法器電路,每個(gè)電路完成一個(gè)加法運(yùn)算,最后把兩個(gè)電路計(jì)算結(jié)果使用一個(gè)數(shù)據(jù)選擇器選擇輸出就行了?這其實(shí)跟fpga的思路是一樣的,想速度快直接搭兩套完全相同的電路實(shí)現(xiàn)兩個(gè)運(yùn)算即可。
而單核cpu想要完成兩組運(yùn)算怎么辦?那就只有按順序一組一組的來了。cpu他需要取址,譯碼等操作,每次只能執(zhí)行一條指令,當(dāng)他取到需要運(yùn)算的數(shù)據(jù)后,如果要執(zhí)行加法運(yùn)算,就需要調(diào)用底層加法器,如果要執(zhí)行除法,就要調(diào)用除法器去完成,本質(zhì)是數(shù)據(jù)固定,根據(jù)運(yùn)算類型不同調(diào)用底層不同硬件去計(jì)算,所以速度相對(duì)較慢。
當(dāng)然現(xiàn)在cpu和fpga都已經(jīng)不是當(dāng)年那個(gè)簡(jiǎn)單的器件了,fpga內(nèi)部也早就不只有查找表,cpu內(nèi)部運(yùn)算也進(jìn)步了,但本質(zhì)的東西還是沒變。