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