對比Cortex-M各處理器功能模塊

娛樂 閱讀:- 來源: 2020-03-31 08:20:11

ARMCortex-M處理器家族發展至今(2016),已有 5 代產品,分別是 CM0/CM0+、CM1、CM3、CM4、CM7。

1.Cortex-M 兼容特性

為了能做到 Cortex-M 軟件重用,ARM 公司在設計 Cortex-M 處理器時為其賦予了處理器向下兼容、軟件二進制向上兼容特性。

首先看什么是二進制兼容,這個特性主要是針對軟件而言,這里指的是當某軟件(程序)依賴的頭文件或庫文件分別升級時,軟件功能不受影響。要做到二進制兼容,被軟件所依賴的頭文件或庫文件升級時必須是二進制兼容的。

那么什么又是向上兼容,向上兼容又叫向前兼容,指的是在較低版本處理器上編譯的軟件可以在較高版本處理器上執行。

跟向上兼容相對的另一個概念叫向下兼容,向下兼容又叫向后兼容,指的是較高版本處理器可以正確運行在較低版本處理器上編譯的軟件。

所以其實既可以用向上兼容,也可以用向下兼容來形容 Cortex-M 特性,只不過描述的主語不一樣,我們可以說 Cortex-M 程序是向上兼容的,也可以說 Cortex-M 處理器是向下兼容的。

具體到 Cortex-M 處理器時,這個兼容特性表現為:

從處理器角度看:CM0 指令集和功能模塊是最精簡的,CM7 指令集和功能模塊是最豐富的。不存在低版本處理器上存在的特性是高版本處理器所沒有的。

從軟件角度來看:CMSIS 提供的頭文件和功能函數是二進制向上兼容的,比如某 CM0 軟件 App 使用的是 core_cm0.h 頭文件,而這個 App 要在 CM7 上運行時,不需要使用 core_cm7.h 再重新編譯一次(當然使用新頭文件編譯后的 App 也是正常的。)

2.Cortex-M 功能模塊差異

由于 CM1 主要是用在 FPGA產品中,故下面對比忽略 CM1。我們知道 CM 處理器是向下兼容的,故 CM 功能模塊是隨著版本的升級而逐步增加的,我們逐步從最低版本開始對比。

2.1 CM0 vs CM0+

對比Cortex-M各處理器功能模塊

先來聊聊 CM0 與 CM0+,從最基準的 CM0 模塊看起:

ARMv6-M CPU 內核:ARM 公司于 2007 年推出的內核。馮·諾依曼體系結構,3 級流水線,支持大部分 Thumb 和小部分 Thumb-2 指令集,所有指令一共 57 條。此外還內嵌 32-bit 返回結果的硬件乘法器。

NVIC 嵌套向量中斷控制器:用于 CPU 在正常 Run 模式下中斷管理。最大支持 32 個外部中斷,外部中斷可設 4 級搶占優先級(2bit)。

WIC 喚醒中斷控制器:用于 CPU 在低功耗 Sleep 模式下中斷管理。

AHB-Lite 總線:一條 32bit AMBA-3 標準的高性能 system 總線負責所有 Flash、SRAM指令和數據存取。

調試模塊:0-4 個硬件斷點 Breakpoint,0-2 個數據監測點 Watchpoint。

DAP 調試接口:通過 DAP 模塊支持 JTAG 和 SWD 接口。

對比Cortex-M各處理器功能模塊

那么 CM0+到底改進了什么?

ARMv6-M CPU 內核:流水線改為 2 級(很多 8bit MCU 都是 2 級流水線,主要用于降低功耗)

NVIC 嵌套向量中斷控制器:增加了 VTOR 即中斷重定向功能。

那么 CM0+到底增加了什么?

MPU 存儲器保護單元:提供硬件方式管理和保護內存,控制訪問權限,最大可將內存分為 8*8 個 region。內存越權訪問,將返回 MemManage Fault。

MTB 片上跟蹤單元:用戶體驗更好的的跟蹤調試,優化的異常捕獲機制,可以更快地定位 bug。

Fast I/O:可單周期訪問的快速 I/O 口,更易于 Bit-banging(比如 GPIO 模擬 SPI、IIC 協議)。

2.2 CM0+ vs CM3

對比Cortex-M各處理器功能模塊

前面比較完了 CM0 與 CM0+,再來看看 CM3 比 CM0+增強在了哪里:

那么 CM3 到底改進了什么?

ARMv7-M CPU 內核:ARM 公司于 2004 年推出的內核。哈佛體系結構,3 級流水線+分支預測,支持全部的 Thumb 和 Thumb-2 指令集。內嵌 32-bit 硬件乘法器可返回 64-bit 運算結果,且新增 32-bit 硬件除法器。

NVIC 嵌套向量中斷控制器:最大支持 240 個外部中斷,中斷優先級可分組(搶占優先級、響應優先級),8bit 優先級設置(最大 128 級搶占優先級(對應最小 2 級響應優先級),最大 256 級響應優先級(對應無搶占優先級))。

3x AHB-Lite 總線:除了原 system 總線負責 SRAM 存取外,還新增兩條 ICode、DCode 總線分別完成 Flash 上指令和數據存取。

調試模塊:0-8 個硬件斷點 Breakpoint,0-4 個數據監測點 Watchpoint。

ITM/ETM 跟蹤單元:ITM 更好地支持 printf 風格 debug,ETM 提供實時指令和數據跟蹤。

那么 CM3 到底增加了什么?

額,CM3 相比 CM0+并沒有增加什么獨有模塊,反倒是少了 Fast I/O Port。

2.3 CM3 vs CM4

對比Cortex-M各處理器功能模塊

前面比較完了 CM0+與 CM3,再來看看 CM4 比 CM3 增強在了哪里:

那么 CM4 到底改進了什么?

ARMv7E-M CPU 內核:增加了 DSP 相關指令支持。

那么 CM4 到底增加了什么?

DSP 數字信號處理單元:新增支持單周期 16/32-bit MAC、dual 16-bit MAC, 8/16-bit SIMD 算法的數字信號處理單元。

FPU浮點運算單元:新增單精度(float 型)兼容 IEEE-754 標準的浮點運算單元(VFPv4-SP)。

2.4 CM4 vs CM7

對比Cortex-M各處理器功能模塊

前面比較完了 CM3 與 CM4,再來看看 CM7 比 CM4 增強在了哪里:

那么 CM7 到底改進了什么?

ARMv7E-M CPU 內核:6 級流水線+分支預測。

2x AHB-Lite 總線:精簡為 2 條 AHB 總線,其中 AHB-P 外設接口完成原來 system 總線功能, AHB-S 從屬接口負責外部總線控制器(如 DMA)功能以及與 TCM 接口功能。

MPU 存儲器保護單元:最大可將內存分為 16*8 個 region。

FPU 浮點運算單元:新增雙精度(double 型)兼容 IEEE-754 標準的浮點運算單元(VFPv5)。

那么 CM7 到底增加了什么?

I/D-Cache 緩存區:即是我們通常理解的 L1 Cache,每個 Cache 大小為 4-64KB。

I/D-TCM 緊密耦合存儲器:緊密的與處理器內核相耦合的 RAM,提供與 Cache 相當的性能,但比 Cache 更具確定性,memory 最大均為 16MB。

ECC 特性:對 L1 Cache 提供錯誤校正和恢復功能,提高系統的可靠性。

AXI-M 總線:基于 AMBA 4 的 64bit AXI 總線,用于支持掛在系統上的 L2 memory。

推薦閱讀:iphone7p參數

分享至:
0 收藏
甘肃快三