ARM架構(gòu)那些事之內(nèi)核、SOC、指令集等
1、ARM與指令集與架構(gòu)
ARM的全稱為Advanced RISC Machines,直譯為高級精簡指令集處理器;RISC即為精簡指令集,那么對應(yīng)的就存在CISC,其為復(fù)雜指令集。
CISC指令集在計(jì)算機(jī)早期比較常用,CISC指令比較長,實(shí)現(xiàn)的功能比較多,這樣對內(nèi)存的訪問相對比較少,但CPU設(shè)計(jì)相對復(fù)雜;而采用RICS常用指令流水線來提高指令利用效率。
(注:RISC--Reduced Instruction Set Computers,CISC--Complex Instruction Set Computers)
我們需要明確的是ARM不生產(chǎn)芯片,它只是進(jìn)行ARM架構(gòu)的設(shè)計(jì),并授權(quán)給相應(yīng)的半導(dǎo)體廠家來生產(chǎn)芯片,所以大家通常稱ARM為半導(dǎo)體知識產(chǎn)權(quán)(IP)提供商,與RISC-V這種完全開放架構(gòu)不同,目前看來RISC-V完全開源且架構(gòu)簡單,給ARM帶來了新的挑戰(zhàn)。
ARM授權(quán)也是分不同層面的,包括架構(gòu)層、內(nèi)核層和應(yīng)用層授權(quán),不同層面所開放的具體內(nèi)容不同,架構(gòu)層可以直接修改成自己的處理器,而內(nèi)核層也叫IP核層,主要是用于擴(kuò)展自己的外設(shè)來形成自己的SOC等,而應(yīng)用層權(quán)限就更少了。
2、ARM架構(gòu)種類
內(nèi)核與架構(gòu)經(jīng)常有一些朋友分不清,我們常說的ARMV1~ARMV9都是表示不同版本的架構(gòu),不同的架構(gòu),指令集也存在差異,然而根據(jù)不同的架構(gòu)又開發(fā)出了不同CPU內(nèi)核,比如Cortex-A,Cortex-M等。
目前主要是三種CPU架構(gòu)系列:
-
A 系列 (應(yīng)用)
所有架構(gòu)系列的最高性能
主要的Arm 處理器 IP 范圍:Cortex-A、Neoverse , Cortex-X
主要用于復(fù)雜的計(jì)算應(yīng)用領(lǐng)域,例如PC、筆記本電腦、智能電視、服務(wù)器、聯(lián)網(wǎng)設(shè)備、智能手機(jī)、車用信息娛樂系統(tǒng)、云存儲設(shè)備和超級計(jì)算機(jī)。
-
R 系列( 實(shí)時(shí))
針對具有實(shí)時(shí)需求的系統(tǒng)進(jìn)行優(yōu)化
主要的Arm 處理器 IP 范圍:Cortex-R
需要實(shí)時(shí)響應(yīng)需求的安全關(guān)鍵應(yīng)用或需要決定性響應(yīng)的應(yīng)用,例如醫(yī)療設(shè)備、車輛駕駛、剎車與警示、網(wǎng)絡(luò)和儲存設(shè)備,以及嵌入式控制系統(tǒng)。
-
M 系列 (微控制器)
專為小型、低功耗、高效節(jié)能裝置而設(shè)計(jì)
主要的Arm 處理器 IP 范圍:Cortex-M
能源效率、功耗及尺寸優(yōu)先。安全性處理器、物聯(lián)網(wǎng)以及像是穿戴式裝置、小型感測器、通訊模塊和智慧家庭產(chǎn)品等嵌入式裝置,大部分單片機(jī)都是基于此架構(gòu)來設(shè)計(jì)。
3、SOC
在芯片行業(yè)SoC與電池中的SOC不同,這里的全稱為System-on-a-chip,也叫片上系統(tǒng)。SOC上不僅僅包括處理器核還包括一些訪問總線,外設(shè)控制器、片內(nèi)RAM等等。
這樣看來,我們平時(shí)看到的單片機(jī),比如stm32芯片;處理器芯片,比如i.MX 6ULL;或者是DSP,TMS320280049等等,都可以認(rèn)識為SoC。

SOC片上系統(tǒng)的各部分都是通過總線進(jìn)行通信連接,通??偩€分為地址總線、數(shù)據(jù)總線和控制總線。在CPU和內(nèi)部RAM之間可能存在多級高速緩存,這些緩存速度非???,可以提高CPU訪問數(shù)據(jù)的能力。
那一般內(nèi)核里面有些什么呢?如下是CORTEX-M55的內(nèi)核大致功能框架:
比如一些平時(shí)開發(fā)中提到的MPU內(nèi)存保護(hù)單元、FPU浮點(diǎn)運(yùn)算單元、DSP處理單元,JTAG調(diào)試單元等等,都位于內(nèi)核上。
3、兩大體系結(jié)構(gòu)
分別是馮諾依曼體系結(jié)構(gòu)和哈佛體系結(jié)構(gòu)。
馮·諾依曼結(jié)構(gòu)采用代碼與數(shù)據(jù)的統(tǒng)一編址,存儲器上的程序和數(shù)據(jù)加載到RAM中,然后CPU根據(jù)指令運(yùn)行對應(yīng)的程序。
哈佛結(jié)構(gòu)是獨(dú)立編址的,代碼空間與數(shù)據(jù)空間分開:
所以大部分的單片機(jī)都采用的哈佛架構(gòu),當(dāng)然現(xiàn)在也出現(xiàn)了非常多兩者混合的形式。