曾有一段時(shí)間,,微處理器(MPU)與微控制器(MCU)是截然不同的兩種設(shè)備,,微控制器完成”控制“相關(guān)的任務(wù),,根據(jù)外界信號(hào)刺激產(chǎn)生反應(yīng),,微處理器主要執(zhí)行處理功能,,對(duì)數(shù)據(jù)處理和計(jì)算能力的要求較高,。但如今由于內(nèi)存架構(gòu)的變化,,兩者之間的界限正在變得模糊,。
事實(shí)上,,可以通過多種方式區(qū)分微處理器和微控制器,只是業(yè)界尚未對(duì)他們的區(qū)分標(biāo)準(zhǔn)達(dá)成共識(shí),。不過已經(jīng)有一些人得出結(jié)論,,目前兩者之間的準(zhǔn)確區(qū)分都已經(jīng)不再重要了。
”近年來,,MCU和MPU之間的區(qū)別變得越來越模糊,。“西門子業(yè)務(wù)部門的嵌入式軟件技術(shù)專家Colin Walls說,,”最初,,MCU在一個(gè)芯片上集成了CPU、內(nèi)存和外圍設(shè)備,,如今大多數(shù)MCU依然如此,,但因?yàn)镸CU具有足夠強(qiáng)大的功能來支持更復(fù)雜的應(yīng)用程序,附加外部存儲(chǔ)器的MCU也變得常見,?!?/p>
1
計(jì)算芯片的兩個(gè)市場(chǎng)
曾經(jīng)有一段時(shí)間,計(jì)算芯片分為兩個(gè)截然不同的市場(chǎng),,大部分芯片設(shè)備主要針對(duì)主流計(jì)算,,性能是最主要的考慮因素,,這些單片微型計(jì)算機(jī)被稱之為”微處理器“,為個(gè)人計(jì)算機(jī)和更大的系統(tǒng)提供動(dòng)力,。
如今我們可以在各種類型的筆記本電腦,、臺(tái)式機(jī)和服務(wù)器中看到它們,值得注意的是,,它們是通用引擎,,旨在運(yùn)行事先未知的任何數(shù)量的程序,主內(nèi)存是DRAM,,非易失性存儲(chǔ)是硬盤驅(qū)動(dòng)器或固態(tài)硬盤,。
在不那么主流的嵌入式計(jì)算世界里,需要適度計(jì)算能力和專門用途,,設(shè)計(jì)好的程序可能在固件中運(yùn)行,,以便讓整個(gè)系統(tǒng)(包括程序和所有系統(tǒng))在出貨之前得以驗(yàn)證,內(nèi)存需求將受到更多限制,,可以將用于存儲(chǔ)代碼的SRAM和非易失性內(nèi)存與CPU集成到同一塊芯片上,,關(guān)鍵一點(diǎn),實(shí)時(shí)響應(yīng)通常很重要,。
嵌入式計(jì)算機(jī)也傾向于在有特殊I/O需求的環(huán)境中使用,,一些可能是在驅(qū)動(dòng)電動(dòng)機(jī),另一些可能是在處理聲音或讀取傳感器,。將專用外圍設(shè)備接口硬件集成到同CPU和內(nèi)存相同的芯片上十分有效,,這會(huì)產(chǎn)生具有不同特性的各種芯片。
總的來說,,CPU與SRAM,、非易失性存儲(chǔ)器和專用外設(shè)集成在一起的被稱之為”微控制器“。
微處理器發(fā)展至今已經(jīng)多達(dá)64位,,而微控制器依然是8位居多,,但在這中間發(fā)生了一些變化,使得兩者之間的區(qū)別更加模糊,。
集成式閃存是MCU的重要特征,,不過這類閃存尚未在擁有最先進(jìn)節(jié)點(diǎn)的微控制器上使用,因此許多以微控制器形式銷售的設(shè)備都使用外部閃存而不是嵌入式閃存,,此外還使用外部DRAM,。
實(shí)際上,一個(gè)稱之為”shadowing“的過程可以從外部閃存中獲取代碼,,并將其復(fù)制到DRAM中,,然后從中執(zhí)行代碼,而且為了提高性能,緩存也可以包括在內(nèi),。這使得CPU/內(nèi)存子系統(tǒng)與MPU幾乎沒有區(qū)別,。
那么現(xiàn)在的MCU就是MPU嗎?不再有區(qū)別了嗎,?
2
當(dāng)下可區(qū)分MCU與MPU的因素
如今的MCU和MPU十分相似,但依然在很多方面有一些細(xì)微的區(qū)別,,這包括CPU功能,、位數(shù)、操作系統(tǒng),、時(shí)序要求,、核心數(shù)量等方面。
在CPU功能方面,,如果CPU具有復(fù)雜的流水線,,具有預(yù)測(cè)執(zhí)行和其他超標(biāo)量功能,則可以將其視為MPU,,但是轉(zhuǎn)變的確切位置并沒有明確界定,。
在位數(shù)上,8位設(shè)備更有可能被視為MCU,,64位設(shè)備很可能被視為MPU,。不過最早的卻是MPU是4位,這更像是歷史問題,,而不是決定性的特征,。
也可以根據(jù)計(jì)算機(jī)可運(yùn)行的操作系統(tǒng)進(jìn)行分類,如果它運(yùn)行Linux,,則可以將其稱為MPU,。如果它僅允許較小的實(shí)時(shí)操作系統(tǒng),甚至只運(yùn)行裸機(jī),,則可以將其稱為MCU,,這為能夠運(yùn)行的Linux的設(shè)備留出了許多中間地帶。在時(shí)序方面,,MCU通常用于需要硬或軟實(shí)時(shí)響應(yīng)的應(yīng)用程序,,MPU通常不能用于這一目的。
一般也將多核處理器視為MPU,,尤其是在內(nèi)核相同且管理對(duì)稱的情況下,。不過專用設(shè)備可能具有多個(gè)處理器,有些專用于諸如數(shù)字信號(hào)之類特定任務(wù)的處理器也會(huì)被認(rèn)為是MCU,,因此通過核心數(shù)目判斷是MPU還是MCU并不是一個(gè)準(zhǔn)確的依據(jù),。
從使用目的來看,可以認(rèn)為通用設(shè)備是MPU,單用途設(shè)備是MCU,,但這實(shí)際上只關(guān)乎設(shè)備的使用方式,,如果在不明確使用目的的情況下使用任何設(shè)備,那時(shí)候如何稱呼這一設(shè)備呢,?
通常全功能MPU不會(huì)具有專用外圍設(shè)備,,這在很大程度上是因?yàn)樗鼈兪峭ㄓ玫模皇敲嫦蛱囟☉?yīng)用,,因此你可能會(huì)認(rèn)為只要有這樣的外圍設(shè)備,,就是MCU,但是事實(shí)并非如此,,缺少外圍設(shè)備也并不意味著就是MPU,。
從上面的分析來看,每個(gè)特征因素都會(huì)存在缺陷,,結(jié)果無法令人滿意,,那么行業(yè)專家又是怎么認(rèn)為的呢?
3
MCU和MPU已成過時(shí)的術(shù)語
Cadence IP集團(tuán)產(chǎn)品行銷總監(jiān)Marc Greenberg對(duì)此表示:”我不知道MCU與MPU之間的區(qū)別是否存在某些官方的定義,,經(jīng)過簡(jiǎn)單的檢索似乎表明,,裸片上存在NVM的為MCU,但各種MPU上都有NVM的某些位,,MPU也可能在同一片裸片上具有MCU,,那又是什么呢?最小的無緩存處理器可能仍具有一些寄存器和SRAM,,用RTL編碼的定序器與從ROM執(zhí)行的通用處理器真的有區(qū)別嗎,?顯然MCU和MPU之間的區(qū)別有些隨意,這意味著這一界限并不明確甚至可以隨心所欲,。當(dāng)我想到MPU時(shí),,我想到的是用于控制通用計(jì)算機(jī)的設(shè)備,例如臺(tái)式機(jī),、服務(wù)器,、平板電腦等?!?/p>
Cadence高級(jí)工程師Grant Martin認(rèn)為:”根據(jù)維基百科的解釋,,MCU是在單個(gè)金屬氧化物半導(dǎo)體集成電路芯片上的小型計(jì)算機(jī),MPU是一種計(jì)算機(jī)處理器,,在MOSFET結(jié)構(gòu)的單個(gè)或多個(gè)集成電路上結(jié)合了中央處理單元的功能,。“
”如果深入研究,,MPU具有CPU的功能,,因此它是計(jì)算機(jī)處理器,而MCU則是更完整的計(jì)算機(jī),這意味著MCU內(nèi)包含MPU,,這與常識(shí)相反,。具有多個(gè)處理器核心的16路服務(wù)器處理器是否不再是MPU?而是一種多核異構(gòu)SoC,?“
”例如,,一部手機(jī)可能包括多個(gè)應(yīng)用程序處理內(nèi)核,用于音頻,、視頻,、圖像處理的多個(gè)DSP,一個(gè)或兩個(gè)用于在屏幕上呈現(xiàn)圖像的GPU以及一個(gè)僅用于娛樂目的的神經(jīng)網(wǎng)絡(luò)處理單元——MCU,。從我的角度來看,行業(yè)應(yīng)該放棄這些過時(shí)的術(shù)語,,使用更精確更具描述性的術(shù)語,。“Grant Martin繼續(xù)說,。
西門子業(yè)務(wù)部門Mentor的高級(jí)產(chǎn)品經(jīng)理Jeff Hancock則認(rèn)為:”從系統(tǒng)軟件的角度來看,,MCU有望適用于直接解釋和控制硬件傳感器和執(zhí)行器的應(yīng)用。這種訪問通常涉及一致且可靠的指令時(shí)序,,這與通用MPU的需求相矛盾,。通用MPU旨在優(yōu)化吞吐量,而MCU通常會(huì)優(yōu)化延遲,。因此,,如果是需要處理大型數(shù)據(jù)庫,MPU更合適,,如果是要精細(xì)的機(jī)電控制,,那么MCU更合適。
Jeff Hancock還說:“外部存儲(chǔ)器和緩存肯定讓MCU的標(biāo)準(zhǔn)有所變化,,但這距離將MCU等同于MPU還有很長(zhǎng)的路要走,。特別是并不是所有MCU中的所有處理單元都專門使用外部存儲(chǔ)器,也可以使用隔離的子系統(tǒng)構(gòu)建系統(tǒng),,這些子系統(tǒng)允許關(guān)鍵的工作負(fù)載和不太關(guān)鍵的應(yīng)用程序級(jí)系統(tǒng)并行繼續(xù),。”
“從軟件工程師的角度看,,這是一個(gè)有趣的挑戰(zhàn),,在不連續(xù)的地方可能有兩個(gè)內(nèi)存區(qū)域,集成式內(nèi)存雖小,,但速度更快,,因此最好留給對(duì)速度有高要求的代碼,例如實(shí)時(shí)操作系統(tǒng)。這意味著開發(fā)工具必須足夠靈活以將代碼正確地映射到存儲(chǔ)器上,,而RTOS必須足夠小適合片上存儲(chǔ)器,。”西門子業(yè)務(wù)部門的嵌入式軟件技術(shù)專家Walls補(bǔ)充到,。
Tortuga Logic的高級(jí)硬件安全工程師Nicole Fern表示:“過去,,MCU與嵌入式系統(tǒng)相關(guān)聯(lián)。在嵌入式系統(tǒng)中,,低成本和低功耗的要求比性能更為重要,。但是隨著移動(dòng)計(jì)算和IoT邊緣計(jì)算的出現(xiàn),許多嵌入式系統(tǒng)現(xiàn)在需要復(fù)雜的處理,,這樣就產(chǎn)生了面向嵌入式領(lǐng)域看起來更像MPU的MCU產(chǎn)品,,為帶有外部存儲(chǔ)器和高速緩存的器件提供了更高的性能和可配置性。這種情況下,,術(shù)語MCU和MPU之間的差異僅取決于是否集成CPU系統(tǒng),。”
Arm的低功耗IoT業(yè)務(wù)高級(jí)總監(jiān)Thomas Ensergueix也認(rèn)為:“近年來,,MCU和MPU之間的界限已經(jīng)模糊,。MCU和MPU之間的主要區(qū)別之一是軟件和開發(fā)。MPU將支持豐富的OS,,如Linux和相關(guān)的軟件堆棧,,而MCU通常將專注于裸機(jī)和RTOS。在決定哪種硬件平臺(tái),、MCU或MPU最有效之前,,由軟件開發(fā)人員決定哪個(gè)軟件環(huán)境和生態(tài)系統(tǒng)最適合他們的應(yīng)用。
”隨著現(xiàn)在MCU已經(jīng)過渡到32位,,我們還看到了性能的急劇提高,,這有助于縮小MCU和MPU之間的差距。例如:許多基于Arm Cortex-M7的MCU可提供100多個(gè)Dhrystone MIPS,,或在CoreMark中提供2,000多個(gè)點(diǎn),。這些設(shè)備中的許多設(shè)備還具有非常大的內(nèi)置存儲(chǔ)器,或者提供快速接口來連接外部存儲(chǔ)器,。這確保了性能和內(nèi)存不再是MCU的瓶頸,,并使它們更接近低端MPU?!?/p>
4
小結(jié)
如今MPU與MCU之間是否有明確的界限真的重要嗎,?可能不重要了。因?yàn)闊o論我們將其稱之為什么,,應(yīng)用程序都有附帶要求,,這些要求將決定使用哪個(gè)設(shè)備,。