微控制器MCU與微處理器MPU的界限正在消失

導讀 曾有一段時間 微處理器(MPU)與微控制器(MCU)是截然不同的兩種設備 微控制器完成 “控制”相關的任務 根據外界信號刺激產生反應

曾有一段時間 微處理器(MPU)與微控制器(MCU)是截然不同的兩種設備 微控制器完成 “控制”相關的任務 根據外界信號刺激產生反應 微處理器主要執行處理功能 對數據處理和計算能力的要求較高。但如今由于內存架構的變化 兩者之間的界限正在變得模糊。

事實上 可以通過多種方式區分微處理器和微控制器 只是業界尚未對他們的區分標準達成共識。不過已經有一些人得出結論 目前兩者之間的準確區分都已經不再重要了。

“近年來 MCU 和 MPU 之間的區別變得越來越模糊。”西門子業務部門的嵌入式軟件技術專家 Colin Walls 說 “最初 MCU 在一個芯片上集成了 CPU、內存和外圍設備 如今大多數 MCU 依然如此 但因為 MCU 具有足夠強大的功能來支持更復雜的應用程序 附加外部存儲器的 MCU 也變得常見。”

計算芯片的兩個市場

曾經有一段時間 計算芯片分為兩個截然不同的市場 大部分芯片設備主要針對主流計算 性能是最主要的考慮因素 這些單片微型計算機被稱之為 “微處理器” 為個人計算機和更大的系統提供動力。

如今我們可以在各種類型的筆記本電腦、臺式機和服務器中看到它們 值得注意的是 它們是通用引擎 旨在運行事先未知的任何數量的程序 主內存是 DRAM非易失性存儲是硬盤驅動器或固態硬盤。

在不那么主流的嵌入式計算世界里 需要適度計算能力和專門用途 設計好的程序可能在固件中運行 以便讓整個系統(包括程序和所有系統)在出貨之前得以驗證 內存需求將受到更多限制 可以將用于存儲代碼的 SRAM 和非易失性內存與 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 之間是否有明確的界限真的重要嗎?可能不重要了。因為無論我們將其稱之為什么 應用程序都有附帶要求 這些要求將決定使用哪個設備。

責任編輯:haq

免責聲明:本文由用戶上傳,如有侵權請聯系刪除!