企業(yè)網(wǎng)站建設(shè)御彩云百度seo優(yōu)化策略
文章目錄
前言
背景介紹
指令集架構(gòu)
ARM起源
ARM分類
Cortex-M4
內(nèi)核框架
指令流水線
實(shí)踐應(yīng)用
總結(jié)
參考資料
前言
????????見《【研發(fā)日記】嵌入式處理器技能解鎖(一)——多任務(wù)異步執(zhí)行調(diào)度的三種方法》
????????見《【研發(fā)日記】嵌入式處理器技能解鎖(二)——TI C2000 DSP的SCI(串口)通信》
????????見《【研發(fā)日記】嵌入式處理器技能解鎖(三)——TI C2000 DSP的C28x內(nèi)核》????????
????????見《【研發(fā)日記】嵌入式處理器技能解鎖(四)——TI C2000 DSP的Memory》
????????見《【研發(fā)日記】嵌入式處理器技能解鎖(五)——TI C2000 DSP的中斷系統(tǒng)》
背景介紹
????????ARM內(nèi)核最典型的應(yīng)用就是STM32,也是ARM內(nèi)核出貨量最大,應(yīng)用最廣泛的一個(gè)地方,如下圖所示:
指令集架構(gòu)
????????理論上指令集分為復(fù)雜指令集(Complex Instruction Set Computer,CISC)和精簡(jiǎn)指令集(Reduced Instruction Set Computer,RISC)。CISC出現(xiàn)的較早,典型的代表是x86架構(gòu)。CISC里邊的每個(gè)指令通常包含多個(gè)操作(指令長(zhǎng)度在幾字節(jié)到十幾字節(jié)不等),這些操作可以在單個(gè)指令中完成,這樣就可以通過(guò)一條指令完成復(fù)雜的操作,減少了內(nèi)存訪問(wèn)次數(shù)實(shí)現(xiàn)更高的代碼執(zhí)行效率,同時(shí)也提高了代碼密度減少了軟件開發(fā)人員編寫代碼的時(shí)間和工作量。隨著技術(shù)的發(fā)展,指令數(shù)量越來(lái)越多,CISC處理器的設(shè)計(jì)和優(yōu)化變得越來(lái)越困難,并且大部分的指令的使用頻率非常低,導(dǎo)致了硬件資源的浪費(fèi)。所以就出現(xiàn)了RISC,慢慢更加流行起來(lái)。RISC的特點(diǎn)是每個(gè)指令只執(zhí)行一個(gè)操作(指令長(zhǎng)度在2字節(jié)或4字節(jié)),指令數(shù)量精簡(jiǎn)掉很多,提高了處理器的可靠性。軟件開發(fā)人員組合使用這些指令,也可以實(shí)現(xiàn)復(fù)雜的功能,同時(shí)也更容易對(duì)復(fù)雜操作進(jìn)行設(shè)計(jì)和優(yōu)化。
????????下面以偽匯編指令舉例,說(shuō)明一個(gè)簡(jiǎn)單加法運(yùn)算:地址[0001]的數(shù)據(jù),和地址[0002]的數(shù)據(jù)相加,結(jié)果存到地址[0003]里。
????????ACC形式的偽匯編指令如下:
LOAD ACC [0001] //地址[0001]的數(shù)據(jù),加載到累加器ACCADD ACC [0002] ACC //ACC加地址[0002]的數(shù)據(jù),結(jié)果存到ACCSTOR ACC [0003] //ACC的數(shù)據(jù)存到地址[0003]
????????LOAD_ STORE形式的偽匯編指令如下:
LOAD R1 [0001] //地址[0001]的數(shù)據(jù),加載到R1寄存器LOAD R2 [0002] //地址[0002]的數(shù)據(jù),加載到R2寄存器ADD R3 R1 R2 //R1+R2,結(jié)果存到R3寄存器STORE R3 [0003] //R3寄存器的數(shù)據(jù)存到地址[0003]
????????ACC形式的微控制器只有一個(gè)ACC(累加器,ACC可以認(rèn)為是一個(gè)寄存器),數(shù)據(jù)可以直接從RAM到ACC進(jìn)行累加,但是運(yùn)算結(jié)果需要還存回RAM里,ACC才能放入新數(shù)據(jù)。運(yùn)算速度的瓶頸卡在ACC寄存器數(shù)量太少。
????????LOAD_ STORE形式的微控制器沒(méi)有ACC,而是增加了多個(gè)內(nèi)部運(yùn)算寄存器R1、R2、R3、…、R12等等,多形參函數(shù)不用反復(fù)的壓棧和出棧,降低了內(nèi)核和外部數(shù)據(jù)的耦合程度(同時(shí)也增加了調(diào)度難度)。運(yùn)算速度的瓶頸卡在LOAD環(huán)節(jié)太多。
????????總的來(lái)講CISC和RISC各有優(yōu)缺點(diǎn),現(xiàn)代計(jì)算機(jī)處理器通常采用混合指令集?,F(xiàn)實(shí)中的嵌入式系統(tǒng)芯片大多是以RISC為主體(有利于平臺(tái)化通用化),少量補(bǔ)充一些專用CISC(有利于專項(xiàng)性能極致發(fā)揮),所以很難把一個(gè)廠商的處理器明確地劃分為CISC或者RISC。當(dāng)前影響比較大的兩類是ARM(Advanced RISC Machines)和RISC-V(Reduced Instruction Set Computer -Five)。
????????ARM是一種基于RISC架構(gòu)的處理器架構(gòu),采用了Thumb簡(jiǎn)化指令集和Thumb-2擴(kuò)展指令集。Thumb簡(jiǎn)化指令集是一種基于RISC的指令集,指令長(zhǎng)度為16位,比原本的32位指令集要短,占用空間更小,能夠在存儲(chǔ)和傳輸數(shù)據(jù)時(shí)提高效率。Thumb-2擴(kuò)展指令集則是在Thumb簡(jiǎn)化指令集的基礎(chǔ)上擴(kuò)展而來(lái)的,指令長(zhǎng)度包括16位和32位兩種,支持更多的指令和操作,滿足不同領(lǐng)域應(yīng)用的需求。除了RISC之外,ARM還采用了一些特殊的技術(shù),如流水線、分支預(yù)測(cè)等,以提高指令的執(zhí)行速度和效率。ARM的部分指令集如下圖所示:
????????RISC-V是基于RISC的一個(gè)開放,免費(fèi)的指令集架構(gòu),具有靈活、可擴(kuò)展定制、跨平臺(tái)、廣泛適用等特點(diǎn)。RISC-V指令集設(shè)計(jì)的目標(biāo)是提供一種通用的指令集架構(gòu),適用于各種計(jì)算機(jī)系統(tǒng)和嵌人式系統(tǒng),包括高性能服務(wù)器、個(gè)人計(jì)算機(jī)、移動(dòng)設(shè)備、物聯(lián)網(wǎng)、機(jī)器人、汽車電子等領(lǐng)域。RISC-V包括基本指令集(RV32I、RV64I)和標(biāo)準(zhǔn)擴(kuò)展指令集(RV32G、RV64G),以及可選的專用擴(kuò)展指令集,如浮點(diǎn)指令集(RV32F、RV32D、RV64F、RV64D),向量指令集(RV32V、RV64V)等,開發(fā)者可以根據(jù)實(shí)際需求選擇合適的指令集。RISC-V的特性點(diǎn)決定了其在未來(lái)計(jì)算機(jī)系統(tǒng)和嵌人式系統(tǒng)發(fā)展趨勢(shì)中的重要地位,是我國(guó)芯片領(lǐng)域自主創(chuàng)新的一個(gè)重要方向,以華為麒麟710、北京兆易GD32V系列為代表的國(guó)產(chǎn)RISC-V芯片,已經(jīng)開始廣泛用于各種領(lǐng)域。
????????Tips1:MIPS(Microprocessor without Interlocked Pipeline Stages)也是采取RISC的一種指令集架構(gòu)。
????????Tips2:TI C2000 DSP的C28x內(nèi)核官方宣稱是RISC,實(shí)際上也包含了CISC。
ARM起源
????????1978年,物理學(xué)家Hermann Hauser和工程師Chris Curry在英國(guó)劍橋創(chuàng)辦了CPU(Cambridge Processing Unit)公司,主要業(yè)務(wù)是為當(dāng)?shù)厥袌?chǎng)供應(yīng)電子設(shè)備。后來(lái)公司改名為ACG(Acorn Computer Group)公司。
????????1983年,ACG公司開始研發(fā)一種新的處理器架構(gòu),命名為ARM(Advanced RISC Machine)。兩年時(shí)間就開始被應(yīng)用在自家的新一代計(jì)算機(jī)Archimedes上。
????????1990年,ACG公司正式改名為ARM計(jì)算機(jī)公司,吸引了很多大公司的投資。蘋果公司、芯片廠商VLSI公司,加上ACG本身的資金和知識(shí)產(chǎn)權(quán),一起人股做了一家這樣的ARM計(jì)算機(jī)公司。起初由于業(yè)務(wù)不景氣,ARM公司被迫放棄自己制造芯片,把芯片的設(shè)計(jì)方案授權(quán)給其他公司來(lái)生產(chǎn)。正是因?yàn)檫@個(gè)因禍得福的模式,使ARM的芯片遍地開花。這個(gè)迫于無(wú)奈的決定,在今天看來(lái)意義非常深遠(yuǎn),奠定了ARM公司長(zhǎng)久以來(lái)的發(fā)展模式。
????????近年來(lái),ARM 繼續(xù)推出了一系列高性能、低功耗的處理器,如Cortex-A76、Cortex-A77和Cortex-A78等,被廣泛地應(yīng)用于智能手機(jī)、物聯(lián)網(wǎng)和自動(dòng)駕駛等領(lǐng)域。同時(shí),ARM還在人工智能、機(jī)器學(xué)習(xí)等領(lǐng)域不斷進(jìn)行探索。
????????現(xiàn)在的ARM公司是全球嵌人式處理器領(lǐng)域的領(lǐng)導(dǎo)者,在嵌入式領(lǐng)域有著巨大的影響。ARM公司基本不生產(chǎn)處理器芯片,而是專注于設(shè)計(jì)處理器內(nèi)核和架構(gòu),然后再授權(quán)給其他芯片廠商,賺取首次的授權(quán)費(fèi)和后續(xù)銷售每顆處理器芯片的知識(shí)產(chǎn)權(quán)費(fèi)。ARM合作商遍布全球,根據(jù)ARM公司發(fā)布的數(shù)據(jù),其處理器架構(gòu)在全球處理器市場(chǎng)份額已經(jīng)超過(guò)50%,特別是在智能手機(jī)和平板電腦等領(lǐng)域,幾乎是市場(chǎng)的獨(dú)霸者。由于ARM剛好趕上了移動(dòng)設(shè)備爆發(fā)式發(fā)展的時(shí)代,最終造就了它的輝煌。
????????未來(lái),雖然ARM公司宣稱其基本統(tǒng)一了全球的智能手機(jī)領(lǐng)域,但在手機(jī)領(lǐng)域里并不輕松,有被邊緣化的可能性。手機(jī)行業(yè)的客戶非常強(qiáng)大又強(qiáng)勢(shì),且客戶的研發(fā)實(shí)力更強(qiáng),也不想受制于人,都開始著手做自己的微架構(gòu)(國(guó)內(nèi)的手機(jī)公司也準(zhǔn)備拋棄ARM公司的微架構(gòu))。蘋果、高通等手機(jī)芯片廠家,并不采用ARM公司的微架構(gòu),僅購(gòu)買其指令集,所以不同手機(jī)處理器廠家有不同的處理速度、擴(kuò)展硬件和擴(kuò)展指令。
????????Tips:ARM起初是一家英國(guó)公司,2016年被日本軟銀集團(tuán)收購(gòu)了,到了2020年美國(guó)NVIDIA(英偉達(dá))想再次收購(gòu)ARM,因壟斷調(diào)查沒(méi)有成功。
ARM分類
????????ARM處理器產(chǎn)品分為傳統(tǒng)經(jīng)典系列和較新的Cortex處理器系列,并且根據(jù)應(yīng)用范圍的不同又分為應(yīng)用處理器、實(shí)時(shí)處理器、微控制處理器三種類別。如下圖所示:
????????Cortex-A系列:這是一種ARMv7、ARMv8(64位)或ARMv9(64位)版本的應(yīng)用處理器架構(gòu),采用了超標(biāo)量流水線設(shè)計(jì),能夠?qū)崿F(xiàn)更高的性能和效率。適用于高性能的移動(dòng)設(shè)備、智能電視、網(wǎng)絡(luò)設(shè)備、云計(jì)算和服務(wù)器等場(chǎng)景。
????????Cortex-R系列:這是一種針對(duì)實(shí)時(shí)系統(tǒng)的ARM架構(gòu),增加了一些安全機(jī)制,具有強(qiáng)實(shí)時(shí)性和高可靠性,支持容錯(cuò)和糾錯(cuò)機(jī)制。適用于汽車、工業(yè)自動(dòng)化、航空航天和醫(yī)療設(shè)備等領(lǐng)域中的專項(xiàng)應(yīng)用,相比A系列和M系列它的市場(chǎng)應(yīng)用窄很多。
????????Cortex-M系列:這是一種專門為嵌入式系統(tǒng)和微控制器設(shè)計(jì)的ARM架構(gòu),具有低功耗、低成本和微實(shí)時(shí)性等特點(diǎn),可以實(shí)現(xiàn)小型、低功耗的嵌入式系統(tǒng)設(shè)計(jì)。適用于智能家居、物聯(lián)網(wǎng)、汽車、工業(yè)自動(dòng)化、航空航天和醫(yī)療設(shè)備等領(lǐng)域的廣泛應(yīng)用。Cortex-M系列逐漸有覆蓋R系列和A系列部分特性的發(fā)展趨勢(shì),其子系列非常豐富,包括:
1、低速度和低功耗定點(diǎn)系列:MO、M0+;
2、中端定點(diǎn)系列:M3;
3、中端含有DSP功能的可選浮點(diǎn)系列:M4;
4、高端含有DSP功能的浮點(diǎn)系列:M7;
5、加人安全機(jī)制系列:M23、M33、M35P。
????????Tips:這里缺少了M1系列,因?yàn)镸1系列只適用于運(yùn)行在FPGA上,不是通用的微控制器內(nèi)核。
Cortex-M4
????????ST(意法半導(dǎo)體),由意大利和法國(guó)的兩家半導(dǎo)體公司合并而成。ST公司以STM32為前綴的32位微處理器,就是采用ARM的內(nèi)核。其中最為人熟知,最主流也是性價(jià)比最高的,就是入門級(jí)別的STM32 F1系列和中端級(jí)別STM32 F3系列。F1系列與F3系列最主要的不同之處就是,Cortex-M4比Cortex-M3多了浮點(diǎn)處理單元和DSP單元,如下圖所示:
????????DSP(Digital Signal Process)特性:
Single-cycle 16/32-bit MAC(Combined Multiply and Accumulate);
Single-cycle dual 16-bit MAC;
8/16-bit SIMD(Single Instruction, Multiple Data) arithmetic;
Hardware support for conversion, addition, subtraction, multiplication with optional accumulate, division(2-12 cycles), and square root;
????????FPU(Floating-Point Unit)特性:
Optional single precision floating point unit;
IEEE 754 compliant;
內(nèi)核框架
????????Cortex-M4的內(nèi)核框架如下圖所示:
指令流水線
????????Cortex-M4采用3級(jí)Pipeline(流水線)如下圖所示:
實(shí)踐應(yīng)用
????????👍點(diǎn)贊過(guò)100,下一篇文章繼續(xù)
總結(jié)
一個(gè)處理器要向更高性能升級(jí),常用的主要途徑是:
1、采用更先進(jìn)的nm制程工藝水平;
2、降低內(nèi)核電壓,從而降低功耗獲得更快的工作頻率;
3、增加多級(jí)流水線;
4、多核,但也帶來(lái)代碼復(fù)雜性的急劇上升;
5、增加更寬的位數(shù),從而一次性處理多個(gè)數(shù)據(jù),即單指令多數(shù)據(jù)流(SIMD);
6、添加新的獨(dú)立硬件單元,并添加新指令。與此同時(shí),仍要保持系統(tǒng)的向下兼容性,保留原先大多數(shù)的舊指令。
????????隨著指令的增加,要保持系統(tǒng)仍是精簡(jiǎn)指令集,是一件困難的事情。有程序員感嘆:這個(gè)世界到底有沒(méi)有指令很少的精簡(jiǎn)指令集系統(tǒng)?雖然多數(shù)書籍時(shí)髦的人云亦云地說(shuō),RISC架構(gòu)的指令更少,實(shí)際上不斷增長(zhǎng)的ARM指令非常多,絕對(duì)不比CISC指令少。
????????以上就是本人在研發(fā)中使用ARM Cortex-M4處理器時(shí),一些個(gè)人理解和分析的總結(jié),主要介紹了ARM的起源和發(fā)展,展示了ARM Cortex-M4內(nèi)核的工作原理,并分析了它的特點(diǎn)和應(yīng)用場(chǎng)景。
????????后續(xù)還會(huì)分享另外幾個(gè)最近解鎖的嵌入式處理器新技能,歡迎評(píng)論區(qū)留言、點(diǎn)贊、收藏和關(guān)注,這些鼓勵(lì)和支持都將成文本人持續(xù)分享的動(dòng)力。
????????另外,上述例程使用的Demo工程,可以到筆者的主頁(yè)查找和下載。
參考資料
????????Arm-Cortex-M4-Processor-Datasheet.pdf
????????版權(quán)聲明,原創(chuàng)文章,轉(zhuǎn)載和引用請(qǐng)注明出處和鏈接,侵權(quán)必究!