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