猶記得當(dāng)年讀書的時候,老師說單片機(jī)、ARM、DSP有互通之處,都是CPU,但聽老師講都聽不懂。
我該如何理解他們,并找出他們的異同呢?我們來看看行內(nèi)人的看法:
ICer,從事ARM CPU的SOC設(shè)計
按我的理解說幾句吧,希望能說薄一點。
首先,說CPU,中央處理器,本質(zhì)就是一個集成電路,實現(xiàn)的功能就是從一個地方(如rom)讀出一個指令,從一個地方(如ram)讀出數(shù)據(jù),然后根據(jù)指令的不同對數(shù)據(jù)做不同的處理(如相加),然后把結(jié)果存回某個地方(如ram)。不同架構(gòu)的cpu會有不同的指令,不同的存取方式,不同的速度,不同的效率,等等的差異。
然后,說單片機(jī)(通常意義所說的微控制器MCU),ARM(通常意義所說的高效能RISC),DSP(通常意義所說的通用數(shù)字信號處理器),這三個CPU分別是針對不同的應(yīng)用而產(chǎn)生的CPU。當(dāng)然這也不是絕對的,因為ARM現(xiàn)在出的CPU囊括了MCU(如M0),RISC(如A8),DSP(如M4)。
微控制器的目的主要是用作控制,他不需要多快的速度,如電飯鍋的控制器,只需要控制發(fā)熱元件的通斷,信號等的開關(guān)等,但是對成本要求很嚴(yán)格,所以一般做得比較簡單,4位,8位的很多。
高效能的RISC,常用于一些數(shù)據(jù)處理比較多的地方,最常見的莫過于現(xiàn)在的消費性電子產(chǎn)品了,手機(jī),pad,MP4等等,目前ARM的商業(yè)模式主要是賣內(nèi)核,集成到各家的SOC中間。他其實就是個通用的CPU,能干各種各樣的活,和Intel的CPU一樣。但是通用就有效能問題,在某些特殊場合,效能就顯得沒那么高了,如大量運算(譬如做FFT)的時候。這樣就有DSP的用武之地了。
DSP,數(shù)字信號處理器,只要是做數(shù)字信號處理的模塊都可以叫做一個DSP,如視頻解碼的IP核。但你老師所說的應(yīng)該是指通用的數(shù)字信號處理器,如Ti的TMS320C55x DSP。該CPU的長處就是在于運算,大量循環(huán)的計算,如連續(xù)1024個乘加。他的指令針對這種應(yīng)用有特殊的處理,相比RISC可以更快速高效地完成這類運算。
總的來說,學(xué)習(xí)CPU,首先就是要了解其指令集,然后了解去指令執(zhí)行的方式,然后針對具體的芯片了解其外圍電路,程序都是用C寫的,基本使用就沒啥問題了。
入門教材就不知道了,學(xué)好微機(jī)原理先吧。
qccc
一種設(shè)備能稱之為CPU,是因為它能夠融入到計算機(jī)的馮諾依曼體系中。馮諾依曼的計算機(jī)模型規(guī)定了計算機(jī)“運算器、存儲器、控制器、外存儲器、輸入和輸出設(shè)備”,而CPU的重要地位在于解決了運算問題,計算機(jī)的CPU能夠訪問存儲器的數(shù)據(jù)和指令進(jìn)行運算,從實現(xiàn)運算這一點的角度上看,無論是單片機(jī)、ARM、DSP都可以稱之為CPU。
單片機(jī)集成完整的馮諾依曼體系所規(guī)定的結(jié)構(gòu),是一個完整的計算機(jī)體系。實現(xiàn)特定的運算功能,應(yīng)用領(lǐng)域集中在工業(yè)自動化控制等專門化需求的運算領(lǐng)域。
ARM出品的芯片精髓在“R”,是RISC精簡指令集的意思,和傳統(tǒng)大型機(jī)以及PC微處理器采用的指令系統(tǒng)相比,RISC指令集根據(jù)80%的時候只用到了20%的處理器指令的狀況,使用了經(jīng)過精簡設(shè)計的指令系統(tǒng),使得整個處理器的設(shè)計可以更加簡潔,功耗、體積大大縮小,所以ARM在目前的手機(jī)、平板等職能移動設(shè)備上得到了廣泛應(yīng)用。隨著ARM處理能力的不斷增強(qiáng),加上其功耗小的特點,也不斷在擴(kuò)展其企業(yè)級服務(wù)器集群應(yīng)用的可能性,為企業(yè)降低能耗成本。
DSP是數(shù)字信號處理器,相較于普通計算機(jī)實現(xiàn)通用計算的特點,DSP只負(fù)責(zé)數(shù)字信號(視頻、音頻或者其他傳感器獲得數(shù)字信號)處理。在日常生活中,常見的DVD、藍(lán)光播放機(jī)、數(shù)字電視機(jī)頂盒、MP3、MP4等都廣泛使用了DSP,由于設(shè)計的專門化,所以可以在較低的成本下,使DSP執(zhí)行異常復(fù)雜的編碼、解碼等信號處理工作,而無需使用價格昂貴的通用處理器。
所以從廣義上講,單片機(jī)、ARM和DSP都可以算做CPU,但是這種說法并不嚴(yán)格,因為如今CPU往往指代的是兼容x86架構(gòu)的通用處理器,例如你電腦里的intel和amd出品的cpu。如果把單片機(jī)、ARM和DSP都稱作CPU,會在理解上產(chǎn)生偏差。
謝文洋,嵌入式愛好者
這些的確都能算CPU,前面大家已經(jīng)說過共同點了,我主要說說區(qū)別吧。主要區(qū)別在于用途不同造成了功能側(cè)重的區(qū)別。
比如單片機(jī)和低端ARM(如M3),更嚴(yán)謹(jǐn)?shù)恼f法應(yīng)該稱作Microcontroller 或 MCU(Micro Control Unit),中文一般叫“微控制器”。而CPU叫做“中央處理器”。一個Control 和 Process 還是有很大區(qū)別的。 微控制器不需要一般也不具備強(qiáng)大的計算能力,重點在于實現(xiàn)各種邏輯和非邏輯控制。
而DSP的(Digital Signal Processor), PROCESS表明它相比于通用單片機(jī)具有更為強(qiáng)大的處理,運算能力??梢詫崿F(xiàn)對數(shù)字信號的各種算法的處理。
舉一個簡單的例子。一個MP3可能由一塊普通MCU+一塊專用DSP 芯片組成。 其中普通MCU叫主控芯片,負(fù)責(zé)全局控制。諸如通過處理按鍵來響應(yīng)用戶的操作,控制屏幕輸出相關(guān)播放信息給用戶等等。而DSP只負(fù)責(zé)音頻文件的解碼。可見,全局的控制工作,邏輯比較繁瑣,比如顯示中各級菜單的實現(xiàn),這是MCU適合的工作。而音頻解碼需要強(qiáng)大的運算能力,普通MCU難以勝任,就需要DSP來進(jìn)行。
而ARM和單片機(jī),我個人認(rèn)為沒有特別嚴(yán)格意義的界限,主要看功能和需求的劃分。ARM本身已經(jīng)給我們劃分的很好了:”ARMv7架構(gòu)定義了三大分工明確的系列:‘A’系列面向尖端的基于虛擬內(nèi)存的操作系統(tǒng)和用戶應(yīng)用;‘R’系列針對實時系統(tǒng);‘M’系列對微控制器?!?所以諸如STM32之類的Cortex-M3芯片其實也可以理解做高端單片機(jī)的范疇。側(cè)重于控制,片內(nèi)集成,低功耗等指標(biāo)。相比傳統(tǒng)51,AVR。 Contrex-M系列的微控制器集成了更多的資源(如更高位的AD,更多的串口,以及I2C,SPI之類的外設(shè)總線)。而且32位相比傳統(tǒng)8位和16位的單片機(jī)也更有優(yōu)勢。
而消費類電子產(chǎn)品中的ARM顯然需要更為強(qiáng)大的運算功能。 這一塊我不太熟悉,就不多說了。
額,發(fā)現(xiàn)樓主還問了如何學(xué)習(xí)。其實很簡單,就是實踐。買一塊開發(fā)板實際動手做比什么都強(qiáng),有機(jī)會參與一些項目更好,自學(xué)現(xiàn)在網(wǎng)絡(luò)資源也非常豐富,不用擔(dān)心。可以從8位單片機(jī)學(xué)起,作為入門。雖然近些年大家都說51落伍了,但是作為單片機(jī)入門還是很好的,相對簡單,網(wǎng)上資源到處都是。你去買任何一個模塊幾乎都會給你提供51的例程。。。我現(xiàn)在就經(jīng)常拿51測試模塊,測試好了再改一下代碼用到stm32上。
總之,只看書是沒有用的。還是要多動手。寫寫代碼,燒燒程序,焊焊簡單的電路。你會收獲很多。
anning865
我也來說一下自己的理解。
首先,“嵌入式”這是個概念,準(zhǔn)確的定義沒有,各個書上都有各自的定義。但是主要思想是一樣的,就是相比較PC機(jī)這種通用系統(tǒng)來說,嵌入式系統(tǒng)是個專用系統(tǒng),結(jié)構(gòu)精簡,在硬件和軟件上都只保留需要的部分,而將不需要的部分裁去。所以嵌入式系統(tǒng)一般都具有便攜、低功耗、性能單一等特性。
然后,MCU、DSP、FPGA這些都屬于嵌入式系統(tǒng)的范疇,是為了實現(xiàn)某一目的而使用的工具。
MCU經(jīng)過這么多年的發(fā)展,早已不單單只有普林斯頓結(jié)構(gòu)的51了,性能也已得到了很大的提升。因為MCU必須順序執(zhí)行程序,所以適于做控制,較多地應(yīng)用于工業(yè)。而ARM本是一家專門設(shè)計MCU的公司,由于技術(shù)先進(jìn)加上策略得當(dāng),這兩年獨霸單片機(jī)市場。ARM的單片機(jī)有很多種類,從低端M0(小家電)到高端A8、A9(手機(jī)、平板電腦)都很吃香,所以也不是ARM的單片機(jī)一定要上系統(tǒng),關(guān)鍵看應(yīng)用場合。
DSP叫做數(shù)字信號處理器,它的結(jié)構(gòu)與MCU不同,加快了運算速度,突出了運算能力。可以把它看成一個超級快的MCU。低端的DSP,如C2000系列,主要是用在電機(jī)控制上,不過TI公司好像稱其為DSC(數(shù)字信號控制器)一個介于MCU和DSP之間的東西。高端的DSP,如C5000/C6000系列,一般都是做視頻圖像處理和通信設(shè)備這些需要大量運算的地方。
FPGA叫做現(xiàn)場可編程邏輯陣列,本身沒有什么功能,就像一張白紙,想要它有什么功能完全靠編程人員設(shè)計。如果你夠NB,你可以把它變成MCU,也可以變成DSP。由于MCU和DSP的內(nèi)部結(jié)構(gòu)都是設(shè)計好的,所以只能通過軟件編程來進(jìn)行順序處理,而FPGA則可以并行處理和順序處理,所以比較而言速度最快。
那么為什么MCU、DSP和FPGA會同時存在呢?那是因為MCU、DSP的內(nèi)部結(jié)構(gòu)都是由IC設(shè)計人員精心設(shè)計的,在完成相同功能時功耗和價錢都比FPGA要低的多。而且FPGA的開發(fā)本身就比較復(fù)雜,完成相同功能耗費的人力財力也要多。所以三者之間各有各的長處,各有各的用武之地。但是目前三者之間已經(jīng)有融合的態(tài)勢,ARM的M4系列里多加了一個精簡的DSP核,TI的達(dá)芬奇系列本身就是ARM+DSP結(jié)構(gòu),ALTERA和XINLIX新推出的FPGA都包含了ARM的核在里面。所以三者之間的關(guān)系是越來越像三基色的三個圓了。
一句話以蔽之“你中有我,我中有你”。
評論
查看更多