引言 筆者接觸嵌入式領域軟件開發(fā)已近五年,幾乎用的都是
ARM Cortex M 內核系列的微控制器。在這五年期間,感謝 C 語言編譯器的存在,讓我不用接觸匯編即可進行開發(fā),但是彷佛也錯過了一些風景,沒有領域到編譯器之美和 CPU 之美,所以決定周末無聊的休息時間通過尋找資料、動手實驗、得出結論的方法來探索 ARM CPU 架構的美妙,以及 C 語言編譯器的奧秘。(因為我個人實在是不贊同學校中微機原理類課程的教學方法)。
一、ARM CPU Architecture ARM CPU 架構
[1] 是一個用于計算機處理器的
「精簡指令集」 (RISC)架構家族。它是世界上最普遍的處理器架構,從傳感器、可穿戴設備、智能手機、到超級計算機,每年會有數(shù)十億基于 ARM 的設備出貨。ARM CPU 架構基于 RISC 精簡指令集,包括:
「一個統(tǒng)一的寄存器文件」 ,其中指令不限于作用于特定的寄存器;「一種加載或存儲架構」 ,其中數(shù)據處理僅對寄存器內容進行,而不是直接對內存內容進行;「簡單的尋址模式」 ,所有加載或者存儲模式僅由寄存器內容和指令字段決定。根據不同的應用場景,ARM CPU 架構分為:
架構定義 使用案例 實現(xiàn)(處理器內核) A 系列 復雜的電腦應用(服務器、網絡設備、手機、TV) Cortex-A、Neoverse R 系列 用于需要實時響應的場景(嚴格的安全性應用、需要確定響應的應用、自動駕駛) Cortex-R 「M 系列」 「功耗和尺寸比較重要的設備,尤其嵌入式設備和 IoT 設備,比如小型傳感器、通信模組、智能家居產品等」 「Cortex-M 」
在本系列文章中,我們將以 Cortex M 內核為主進行探索,不去考慮 Cortex A 系列和 Cortex R 系列。
二、Cortex M 內核 Cortex-M 處理器家族基于 ARM M 架構定義,為嵌入式系統(tǒng)提供了低延遲和高度確定的操作,主要包括的 Cortex-M 系列內核如下圖:從圖中大致可以看出:① Cortex-M0、Cortex-M0 、Cortex-M1 系列內核使用 Armv6-M 架構,
「常用的 Cortex-M3、Cortex M4、Cortex M7 系列內核使用 Armv7-M 架構」 ,Cortex-M23 系列使用 Armv8-M Baseline 架構,Cortex-M33、Cortex-M33P、Cortex-M55 系列使用 Armv8-M Mainline 架構。② 從 Coretx-M23 系列開始,Cortex-M 內核中開始擁有
「TrustZone 特性」 。③ Cortex-M4、CortexM7、Cortex-M33、Cortex-M35P、Cortex-M55 系列中才有
「數(shù)字信號處理擴展」 (DSP)。④ Cortex-M33、Cortex-M55 系列中開始擁有
「ARM 自定義指令」 。⑤ Cortex-M33、Cortex-M35P、Cortex M55 系列擁有
「協(xié)處理器接口」 。接下來我們一一了解。
1. Cortex M0 Cortex M0
[2] 處理器是 ARM 最小的處理器之一,主要特點是小體積,目的是使開發(fā)人員能夠在 8 位的價格點上實現(xiàn) 32 位的性能。Cortex M0 處理器使用 AHB-Lite 總線、擁有三級流水線,支持部分 Thumb/Thumb-2 指令集。
2. Cortex M0 Cortex M0
[3] 處理器在 Cortex M0 處理器的基礎上,進一步降低了功耗,提升了性能。Cortex M0 處理器使用 AMBA AHB-Lite 總線、降低為兩級流水線,支持部分 Thumb/Thumb-2 指令集。
3. Cortex M1 Cortex M1
[4] 是首個專為 FPGA 上的實現(xiàn)而設計的處理器。使用 AMBA AHB-Lite 總線、三級流水線,支持部分 Thumb/Thumb-2 指令集。
4. Cortex M3 Cortex-M3
[5] 處理器是專為高性能、低成本平臺開發(fā)設計的,包括汽車車身系統(tǒng)、工業(yè)控制系統(tǒng)、無線網絡、傳感器等,使用 3 個 AMBA AHB-Lite 總線 (哈佛總線架構),三級流水線,支持部分 Thumb/Thumb-2 指令集、支持 8 to 256 優(yōu)先級等級。
5. Cortex M4 Cortex-M4
[6] 處理器是一款高效的嵌入式處理器,使用 3 個 AMBA AHB-Lite 總線 (哈佛總線架構),三級流水線,支持 Thumb/Thumb-2 部分指令集,支持 8 to 256 優(yōu)先級等級。相比 CortexM3,
「增加了 DSP 擴展、可選的單精度浮點單元」 。
6. Cortex M7 Cortex M7
[7] 處理器是一款高性能、節(jié)能的處理器,
「6 級大規(guī)模流水線」 ,支持 Thumb/Thumb-2 指令集,支持 8 to 256 優(yōu)先級等級,支持 DSP 擴展、可選的單精度浮點單元,使用 1 個 64-bit AMBA4 AXI 總線, 1 個 32-bit AHB 外設接口、1 個 為外部主機訪問 TCMs 內存提供的 32-bit AMBA AHB 從機接口,
「擁有指令 cache、數(shù)據 cache、指令 TCM、數(shù)據 TCM」 。
7. Cortex M23 Cortex M23
[8] 處理器是一款非常簡潔的處理器,對于大多數(shù)需要安全性的 IoT 和嵌入式應用,帶有 TrustZone 的 Cortex-M23 是一個理想的處理器。Cotex-M23 使用 Armv8-M baseline 架構,擁有
「2 級流水線」 ,使用 AMBA 5 AHB 總線,支持 Thumb/Thumb-2 部分指令集,支持 4 個優(yōu)先級等級。還增加了指令支持硬件單周期乘法(32x32)和快速除法(32/32)。
8. Cortex M33 Cortex-M33
[9] 適用于需要有效安全性或者數(shù)字信號控制的嵌入式和 IoT 應用場景。Cortex-M33 有非常多的可選特性,包括 DSP 擴展、用于硬件強制隔離的 TrustZone 安全特性、一個協(xié)處理器接口、內存保護單元、浮點計算單元。Cotex-M33 使用 Armv8-M Mainline 架構,擁有
「3 級流水線」 ,使用 2 個 AMBA5 AHB 總線(哈佛架構),支持 Thumb/Thumb-2 指令集,支持 8 to 256 個中斷優(yōu)先級等級,可選的 TrustZone for Armv8-M 支持,
「DSP 擴展中支持可選的 DSP/SIMD 指令」 ,可選的協(xié)處理器接口支持。推薦傻孩子大佬的一篇文章:深度剖析,簡單粗暴,詳解 Cortex-M23/33 特性
[10] 。
9. Cortex M35P Cortex-M35P
[11] 處理器使用 TrustZone for Armv8-M,具有硬件安全和可選的軟件隔離特性。對于試圖阻止物理篡改并希望獲得更高級別安全認證的嵌入式開發(fā)人員,ARM 提供了 Cortex-M35P 這款處理器。Cotex-M35P 使用 Armv8-M Mainline 架構,擁有
「3 級流水線」 ,使用 2 個 AMBA5 AHB 總線(哈佛架構),支持 Thumb/Thumb-2 指令集,支持 8 to 256 個中斷優(yōu)先級等級,具有可選的協(xié)處理器接口支持、TrustZone for Armv8-M 支持、DSP 支持,并且具有物理安全特性,
「內置保護,防止入侵和非入侵式攻擊」 。
10. Cortex M55 目前最新一代的 Cortex M 系列處理器為 Cortex M55。Cortex-M55
[12] 是首個基于 Armv8.1-M 架構的處理器,采用 ARM Helium 技術(MVE,M 系列矢量擴展),為下一代小型嵌入式設備帶來了增強的機器學習水平和信號處理的性能,包括可穿戴設備,智能語音設備等。Cotex-M55 擁有
「4 級流水線」 ,使用 AMBA 5 AXI5 64-bit 主機總線,可選的 64bit 協(xié)處理器接口支持、可選的 TrustZone 支持,可選的 Helium 技術支持,
「DSP 擴展中支持 32 位 DSP/SIMD 指令擴展」 。
總結 認識了 Cortex-M 陣營都有哪些成員后,可以看到 ARM
Cortex-M 越來越注重安全性能和 AI 性能,這也給了我們一個發(fā)展方向,未來物聯(lián)網的發(fā)展也不再是僅限于對接一下云平臺上報數(shù)據這么簡單,而是更多的提升物聯(lián)網設備安全能力和 AI 能力,畢竟硬件設備遭遇入侵比電腦中毒更加可怕,如果端側 AI 處理能力大大提升,則數(shù)據處理可直接在終端中完成,而不用去消耗不必要的云端算力~至此,ARM 探索之旅第一站就結束啦!下一站再會!注:本文所有圖片均來源于ARM。
參考 ARM CPU 架構: https://developer.arm.com/architectures/cpu-architecture