ARM架構(gòu)那些事之內(nèi)核、SOC、指令集等
1、ARM與指令集與架構(gòu)
ARM的全稱為Advanced RISC Machines,直譯為高級精簡指令集處理器;RISC即為精簡指令集,那么對應(yīng)的就存在CISC,其為復(fù)雜指令集。
CISC指令集在計算機早期比較常用,CISC指令比較長,實現(xiàn)的功能比較多,這樣對內(nèi)存的訪問相對比較少,但CPU設(shè)計相對復(fù)雜;而采用RICS常用指令流水線來提高指令利用效率。
(注:RISC--Reduced Instruction Set Computers,CISC--Complex Instruction Set Computers)
我們需要明確的是ARM不生產(chǎn)芯片,它只是進行ARM架構(gòu)的設(shè)計,并授權(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核層,主要是用于擴展自己的外設(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ù)雜的計算應(yīng)用領(lǐng)域,例如PC、筆記本電腦、智能電視、服務(wù)器、聯(lián)網(wǎng)設(shè)備、智能手機、車用信息娛樂系統(tǒng)、云存儲設(shè)備和超級計算機。
-
R 系列( 實時)
針對具有實時需求的系統(tǒng)進行優(yōu)化
主要的Arm 處理器 IP 范圍:Cortex-R
需要實時響應(yīng)需求的安全關(guān)鍵應(yīng)用或需要決定性響應(yīng)的應(yīng)用,例如醫(yī)療設(shè)備、車輛駕駛、剎車與警示、網(wǎng)絡(luò)和儲存設(shè)備,以及嵌入式控制系統(tǒng)。
-
M 系列 (微控制器)
專為小型、低功耗、高效節(jié)能裝置而設(shè)計
主要的Arm 處理器 IP 范圍:Cortex-M
能源效率、功耗及尺寸優(yōu)先。安全性處理器、物聯(lián)網(wǎng)以及像是穿戴式裝置、小型感測器、通訊模塊和智慧家庭產(chǎn)品等嵌入式裝置,大部分單片機都是基于此架構(gòu)來設(shè)計。
3、SOC
在芯片行業(yè)SoC與電池中的SOC不同,這里的全稱為System-on-a-chip,也叫片上系統(tǒng)。SOC上不僅僅包括處理器核還包括一些訪問總線,外設(shè)控制器、片內(nèi)RAM等等。
這樣看來,我們平時看到的單片機,比如stm32芯片;處理器芯片,比如i.MX 6ULL;或者是DSP,TMS320280049等等,都可以認識為SoC。
SOC片上系統(tǒng)的各部分都是通過總線進行通信連接,通常總線分為地址總線、數(shù)據(jù)總線和控制總線。在CPU和內(nèi)部RAM之間可能存在多級高速緩存,這些緩存速度非常快,可以提高CPU訪問數(shù)據(jù)的能力。
那一般內(nèi)核里面有些什么呢?如下是CORTEX-M55的內(nèi)核大致功能框架:
比如一些平時開發(fā)中提到的MPU內(nèi)存保護單元、FPU浮點運算單元、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īng)的程序。
哈佛結(jié)構(gòu)是獨立編址的,代碼空間與數(shù)據(jù)空間分開:
所以大部分的單片機都采用的哈佛架構(gòu),當然現(xiàn)在也出現(xiàn)了非常多兩者混合的形式。