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