很多時候我們都會對M0,M0+,M3,M4,M7,arm7,arm9,CORTEX-A系列,或者說AVR,51,PIC等,一頭霧水,只知道是架構(gòu),不知道具體是什么,有哪些不同?今天查了些資料,來解解惑,不是很詳細,但對此有個大體了解。咱先來當下最火的ARM吧
1.ARM
ARM即以英國ARM(Advanced RISC Machines)公司的內(nèi)核芯片作為CPU,同時附加其他外圍功能的嵌入式開發(fā)板,用以評估內(nèi)核芯片的功能和研發(fā)各科技類企業(yè)的產(chǎn)品.
ARM 微處理器目前包括下面幾個系列,以及其它廠商基于 ARM 體系結(jié)構(gòu)的處理器,除了具有ARM 體系結(jié)構(gòu)的共同特點以外,每一個系列的 ARM 微處理器都有各自的特點和應(yīng)用領(lǐng)域。
- ARM7 系列
- ARM9 系列
- ARM9E 系列
- ARM10E 系列
- ARM11系列
- Cortex 系列
- SecurCore 系列
- OptimoDE Data Engines
- Intel的Xscale
- Intel的StrongARM ARM11系列
2. Cortex 系列
32位RISCCPU開發(fā)領(lǐng)域中不斷取得突破,其設(shè)計的微處理器結(jié)構(gòu)已經(jīng)從v3發(fā)展到現(xiàn)在的v7。Cortex系列處理器是基于ARMv7架構(gòu)的,
分為Cortex-M、Cortex-R和Cortex-A三類。由于應(yīng)用領(lǐng)域的不同,基于v7架構(gòu)的Cortex處理器系列所采用的技術(shù)也不相同;趘7A的稱為“Cortex-A系列。
高性能的Cortex-A15、可伸縮的Cortex-A9、經(jīng)過市場驗證的Cortex-A8處理器以及高效的Cortex-A7和Cortex-A5處理器均共享同一體系結(jié)構(gòu),因此具有完整的應(yīng)用兼容性,支持傳統(tǒng)的ARM、Thumb指令集
和新增的高性能緊湊型Thumb-2指令集。
1Cortex-M系列
Cortex-M系列又可分為Cortex-M0、Cortex-M0+、Cortex-M3、Cortex-M4;
2Cortex-R系列
Cortex-R系列分為Cortex-R4、Cortex-R5、Cortex-R7;
3Cortex-A 系列
Cortex-A系列分為Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A15、Cortex-A50等 ,同樣也就有了對應(yīng)內(nèi)核的Cortex-M0開發(fā)板、Cortex-A5開發(fā)板、Cortex-A8開發(fā)板、Cortex-A9開發(fā)板、
Cortex-R4開發(fā)板等等。
4半導體
由于ARM公司只對外提供ARM內(nèi)核,各大廠商在授權(quán)付費使用ARM內(nèi)核的基礎(chǔ)上研發(fā)生產(chǎn)各自的芯片,形成了嵌入式ARM CPU的大家庭,提供這些內(nèi)核芯片的廠商有Atmel、TI、飛思卡爾、NXP、ST、和三星等。
Cortex-M兼容特性
為了能做到Cortex-M軟件重用,ARM公司在設(shè)計Cortex-M處理器時為其賦予了處理器向下兼容、軟件二進制向上兼容特性。
首先看什么是二進制兼容,這個特性主要是針對軟件而言,這里指的是當某軟件(程序)依賴的頭文件或庫文件分別升級時,軟件功能不受影響。要做到二進制兼容,被軟件所依賴的頭文件或庫文件升級時必須是二進制兼容的。
那么什么又是向上兼容,向上兼容又叫向前兼容,指的是在較低版本處理器上編譯的軟件可以在較高版本處理器上執(zhí)行。
跟向上兼容相對的另一個概念叫向下兼容,向下兼容又叫向后兼容,指的是較高版本處理器可以正確運行在較低版本處理器上編譯的軟件。
所以其實既可以用向上兼容,也可以用向下兼容來形容Cortex-M特性,只不過描述的主語不一樣,我們可以說Cortex-M程序是向上兼容的,也可以說Cortex-M處理器是向下兼容的。
具體到Cortex-M處理器時,這個兼容特性表現(xiàn)為:
- 從處理器角度看:CM0指令集和功能模塊是最精簡的,CM7指令集和功能模塊是最豐富的。不存在低版本處理器上存在的特性是高版本處理器所沒有的。
- 從軟件角度來看:CMSIS提供的頭文件和功能函數(shù)是二進制向上兼容的,比如某CM0軟件App使用的是core_cm0.h頭文件,而這個App要在CM7上運行時,不需要使用core_cm7.h再重新編譯一次(當然使用新頭文件編譯后的App也是正常的。)
從MCU內(nèi)核到MCU實際應(yīng)用是一個完整的產(chǎn)業(yè)鏈,這個產(chǎn)業(yè)鏈分為五個部分:
其實都是這樣,前三個部分有芯片廠家和架構(gòu)內(nèi)核公司負責開芯片,后兩個部分由研發(fā)公司根據(jù)芯片設(shè)計,開發(fā)。
就拿ST為例,ARM公司為最開始的部分,ST(意法半導體)為芯片設(shè)計與制造公司,以ARM內(nèi)核為載體,通過進一步的設(shè)計開發(fā),為ARM配備外圍的支持,為將計算控制能力應(yīng)用到電子產(chǎn)品中提供芯片服務(wù)
Cortex-M0 處理器簡介
ARM公司的Cortex-M0應(yīng)用于各種微控制器(MCU)中,并可讓研發(fā)工程師以8位的價位創(chuàng)造32位的的效能,并將傳統(tǒng)的8位和16位的處理器升級到更高效、更低功耗的32位處理器。
Cortex-M0是Cortex-M家族中的M0系列。最大特點是低功耗的設(shè)計。Cortex-M0為32位、3級流水線RISC處理器,其核心仍為馮.諾依曼結(jié)構(gòu),是指令和數(shù)據(jù)共享同一總線的架構(gòu)。作為新一代的處理器,Cortex-M0的設(shè)計進行了許多的改革與創(chuàng)新,如系統(tǒng)存儲器地址映像(system address map)、改善效率并增強確定性的嵌套向量中斷系統(tǒng)(NVIC)與不可屏蔽中斷(NMI)、全新的硬件除錯單元等等,都帶給了使用者全新的體驗和更便利、 更有效率的操作。
技術(shù)架構(gòu)
CortexM0其核心架構(gòu)為ARMv6M,其運算能力可以達到0.9 DMIPS/MHz,而與其他的16位與8位處理器相比,由于CortexM0的運算性能大幅提高,所以在同樣任務(wù)的執(zhí)行上CortexM0只需較低的運行速度,而大幅降低了整體的動態(tài)功耗。
Cortex—M0屬于ARMv6-M架構(gòu),包括1顆專為嵌入式應(yīng)用而設(shè)計的ARM核、緊耦合的可嵌套中斷微控制器NVIC、可選的喚醒中斷控制器WIC,對外提供了基于AMBA結(jié)構(gòu)(高級微控制器總線架構(gòu))的AHB-lite總線和基于CoreSight技術(shù)的SWD或JTAG調(diào)試接口,如圖所示。Cortex-M0微控制器的硬件實現(xiàn)包含多個可配置選項:中斷數(shù)量、WIC、睡眠模式和節(jié)能措施、存儲系統(tǒng)大小端模式、系統(tǒng)滴答時鐘等,半導體廠商可以根據(jù)應(yīng)用需要選擇合理的配置。
系統(tǒng)總線基于AHB_Lite高級高性能總線協(xié)議。外設(shè)總線基于APB高級外設(shè)總線協(xié)議,通過一個轉(zhuǎn)換橋連接到AHB上,這只是Cortex-M0內(nèi)核的大概模式.
特點
1)能耗效率
CortexM0的運行效率很高(0.9DMIPS/MHz),能在較少的周期里完成一項任務(wù)。這意味著CortexM0可以在大部分的時間里處于休眠狀態(tài),消耗很少的能量,具有良好的能耗效率。同樣較小的邏輯門數(shù)也降低了待機電流。而高效的中斷控制器(NVIC)需要很小的中斷開銷。
2)代碼密度
Cortex-M0基于Thumb-2的指令集,比用8位或者16位架構(gòu)實現(xiàn)的代碼還要少,因此用戶可以選擇具有較小Flash空間的芯片?梢越档拖到y(tǒng)功耗。[1]
3) 易于使用
Cortex-M0適用于C語言編程,并且被許多編譯器支持。可以用C語言直接編程中斷例程,而無需使用匯編語言。同時Cortex-M0還被多種開發(fā)工具支持。包括很多開源的嵌入式操作系統(tǒng)同樣支持Cortex-M0。
Cortex-M0 處理器簡介
1. Cortex-M0 處理器基于馮諾依曼架構(gòu)(單總線接口),使用32位精簡指令集(RISC),該指令集被稱為Thumb指令集。與之前相比,新的指令集增加了幾條ARMv6架構(gòu)的指令,并且加入了eThumb-2指令集的部分指令。Thumb-2技術(shù)擴展了Thumb的應(yīng)用,允許所有的操作都可以在同一種CPU狀態(tài)下執(zhí)行。Thumb指令集既包括16位指令,也包括32位指令。C編譯器生成的指令大部分是16位的,當16位的指令無法實現(xiàn)所需要的操作時,32位指令就會發(fā)揮作用。這樣以來,在代碼密度得到提升的同時,還避免了兩套指令集之間進行切換帶來的開銷
2. Cortex-M0總共支持56個基本指令,其中某些指令可能會有多種形式。相對于Cortex-M0較小的指令集,其處理器的能力可不一般,因為Thumb是經(jīng)過高度優(yōu)化的指令集。從理論來說,由于讀寫存儲是的指令是相互獨立的,而且算數(shù)或邏輯操作的指令使用寄存器,Cortex-M0處理器可以被歸到加載-存儲(load-store)結(jié)構(gòu)中。
3. 處理器核心包括:
- 寄存器組 包含16個32位寄存器,其中有一些特殊寄存器
- 算術(shù)邏輯單元
- 數(shù)據(jù)總線
- 控制邏輯
流水線根據(jù)設(shè)計可分為三種狀態(tài): 取指、譯碼、執(zhí)行。
4. 嵌套向量中斷控制器(NVIC)可以處理最多32個中斷請求和一個不可屏蔽中斷(NMI)輸入。
5. NVIC需要比較這個在執(zhí)行中斷和請求中斷的優(yōu)先級,,然后自動執(zhí)行高優(yōu)先級的中斷。
6. 如果要處理一個中斷,NVIC會和處理器進行通信,通知處理器執(zhí)行中斷處理程序。
7. 喚醒中斷控制器(WIC)為可選的單元,在低功耗應(yīng)用中,在關(guān)閉了處理器大部分模塊后,微控制器會進入待機裝填,此時,WIC可以在NVIC和處理器處于休眠的情況下,執(zhí)行中斷屏蔽功能。當WIC檢測到一個中斷時,會通知電源管理部分給系統(tǒng)商店,讓NVIC和處理器內(nèi)核執(zhí)行剩余的中斷處理。
8. 關(guān)于調(diào)試子系統(tǒng),當調(diào)試事件發(fā)生時,處理器內(nèi)核會被置于暫停狀態(tài),這是開發(fā)人員可以檢查當前處理器的狀態(tài)。硬件調(diào)試工具有JTAG和SWD(串行線調(diào)試)。
ARM Cortex-M0 處理器的特性
系統(tǒng)特性
- thumb指令集,具有高效和高代碼密度
- 高性能,最高達到0.9DMIPS/MHz
- 內(nèi)置的嵌套向量中斷控制器(NVIC),中斷配置和異常處理容易
- 確定的中斷響應(yīng)事件,中斷等待事件可以被設(shè)定為固定值或最短事件(最小16個時鐘周期)
- 不可屏蔽中斷(NMI),對高可靠性系統(tǒng)非常重要
- 內(nèi)置的系統(tǒng)節(jié)拍定時器(systick)。24位定時器,可被操作系統(tǒng)使用,或者用作通用定時器,架構(gòu)中已經(jīng)包含專用的異常類型
- 請求管理調(diào)用,具有SVC異常和PendSV異常(可掛起的管理服務(wù)),支持嵌入式os的多種操作
- 架構(gòu)定義的休眠模式和進入休眠的指令,休眠特性能大大降低能量的消耗。由于進入休眠狀態(tài)需要使用特定的指令,而不是使用寄存器,架構(gòu)定義的休眠模式也提高了軟件的可移植性。
- 異常處理可以捕獲到系統(tǒng)中的多種錯誤。
應(yīng)用特性
- 中斷數(shù)量可配置
- 支持大端或小端存儲器
- 可選擇的喚醒中斷控制器(WIC),處理器可以在休眠狀態(tài)下掉電以降低功耗,而WIC可以在中斷發(fā)生時喚醒系統(tǒng)
Cortex-M3
Cortex-M3是一個32位的核,在傳統(tǒng)的單片機領(lǐng)域中,有一些不同于通用32位CPU應(yīng)用的要求。在工控領(lǐng)域,用戶要求具有更快的中斷速度,Cortex-M3采用了Tail-Chaining
中斷技術(shù),完全基于硬件進行
中斷處理,最多可減少12個
時鐘周期數(shù),在實際應(yīng)用中可減少70%中斷。
概述
Cortex-M3是一個32位處理器內(nèi)核。內(nèi)部的數(shù)據(jù)路徑是32位的,寄存器是32位的,存儲器接口也是32位的。CM3采用了哈佛結(jié)構(gòu),擁有獨立的指令總線和數(shù)據(jù)總線,可以讓取指與數(shù)據(jù)訪問并行不悖。這樣一來數(shù)據(jù)訪問不再占用指令總線,從而提升了性能。為實現(xiàn)這個特性,CM3內(nèi)部含有好幾條總線接口,每條都為自己的應(yīng)用場合優(yōu)化過,并且它們可以并行工作。但是另一方面,指令總線和數(shù)據(jù)總線共享同一個存儲器空間(一個統(tǒng)一的存儲器系統(tǒng))。換句話說,不是因為有兩條總線,可尋址空間就變成8GB了。
比較復雜的應(yīng)用可能需要更多的存儲系統(tǒng)功能,為此CM3提供一個可選的MPU,而且在需要的情況下也可以使用外部的cache。另外在CM3中,Both小端模式和大端模式都是支持的。
CM3內(nèi)部還附贈了好多調(diào)試組件,用于在硬件水平上支持調(diào)試操作,如指令斷點,數(shù)據(jù)觀察點等。另外,為支持更高級的調(diào)試,還有其它可選組件,包括指令跟蹤和多種類型的調(diào)試接口。
內(nèi)核架構(gòu)
ARMCortex-M3采用哈佛結(jié)構(gòu),并選擇了適合于微控制器應(yīng)用的三級流水線,但增加了分支預測功能。
現(xiàn)代處理器大多采用指令預取和流水線技術(shù),以提高處理器的指令執(zhí)行速度。流水線處理器在正常執(zhí)行指令時,如果碰到分支(跳轉(zhuǎn))指令,由于指令執(zhí)行的順序可能會發(fā)生變化,指令預取隊列和流水線中的部分指令就可能作廢,而需要從新的地址重新取指、執(zhí)行,這樣就會使流水線“斷流”,處理器性能因此而受到影響。特別是現(xiàn)代C語言程序,經(jīng)編譯器優(yōu)化生成的目標代碼中,分支指令所占的比例可達10-20%,對流水線處理器的影響會的更大。為此,現(xiàn)代高性能流水線處理器中一般都加入了分支預測部件,就是在處理器從存儲器預取指令時,當遇到分支(跳轉(zhuǎn))指令時,能自動預測跳轉(zhuǎn)是否會發(fā)生,再從預測的方向進行取指,從而提供給流水線連續(xù)的指令流,流水線就可以不斷地執(zhí)行有效指令,保證了其性能的發(fā)揮。
ARMCortex-M3內(nèi)核的預取部件具有分支預測功能,可以預取分支目標地址的指令,使分支延遲減少到一個時鐘周期。
針對業(yè)界對ARM處理器中斷響應(yīng)的問題,Cortex-M3首次在內(nèi)核上集成了嵌套向量中斷控制器(NVIC)。Cortex-M3的中斷延遲只有12個時鐘周期(ARM7需要24-42個周期);Cortex-M3還使用尾鏈技術(shù),使得背靠背(back-to-back)中斷的響應(yīng)只需要6個時鐘周期(ARM7需要大于30個周期)。Cortex-M3采用了基于棧的異常模式,使得芯片初始化的封裝更為簡單。
Cortex-M3加入了類似于8位處理器的內(nèi)核低功耗模式,支持3種功耗管理模式:通過一條指令立即睡眠;異常/中斷退出時睡眠;深度睡眠。使整個芯片的功耗控制更為有效。
特點
高性能
? 許多指令都是單周期的——包括乘法相關(guān)指令。并且從整體性能上,Cortex-M3比得過絕大多數(shù)其它的架構(gòu)。
? 指令總線和數(shù)據(jù)總線被分開,取值和訪內(nèi)可以并行不悖
? Thumb-2的到來告別了狀態(tài)切換的舊世代,再也不需要花時間來切換于32位ARM狀態(tài)和16位Thumb狀態(tài)之間了。這簡化了軟件開發(fā)和代碼維護,使產(chǎn)品面市更快。
? Thumb-2指令集為編程帶來了更多的靈活性。許多數(shù)據(jù)操作現(xiàn)在能用更短的代碼搞定,這意味著Cortex-M3的代碼密度更高,也就對存儲器的需求更少。
? 取指都按32位處理。同一周期最多可以取出兩條指令,留下了更多的帶寬給數(shù)據(jù)傳輸。
? Cortex-M3的設(shè)計允許單片機高頻運行(現(xiàn)代半導體制造技術(shù)能保證100MHz以上的速度)。即使在相同的速度下運行,CM3的每指令周期數(shù)(CPI)也更低,于是同樣的MHz下可以做更多的工作;另一方面,也使同一個應(yīng)用在CM3上需要更低的主頻。
先進的中斷處理功能
? 內(nèi)建的嵌套向量中斷控制器支持多達240條外部中斷輸入。向量化的中斷功能劇烈地縮短了中斷延遲,因為不再需要軟件去判斷中斷源。中斷的嵌套也是在硬件水平上實現(xiàn)的,不需要軟件代碼來實現(xiàn)。
? Cortex-M3在進入異常服務(wù)例程時,自動壓棧了R0-R3, R12, LR, PSR和PC,并且在返回時自動彈出它們,這多清爽!既加速了中斷的響應(yīng),也再不需要匯編語言代碼了。
? NVIC支持對每一路中斷設(shè)置不同的優(yōu)先級,使得中斷管理極富彈性。最粗線條的實現(xiàn)也至少要支持8級優(yōu)先級,而且還能動態(tài)地被修改。
? 優(yōu)化中斷響應(yīng)還有兩招,它們分別是“咬尾中斷機制”和“晚到中斷機制”。
? 有些需要較多周期才能執(zhí)行完的指令,是可以被中斷-繼續(xù)的——就好比它們是一串指令一樣。這些指令包括加載多個寄存器(LDM),存儲多個寄存器(STM),多個寄存器參與的PUSH,以及多個寄存器參與的POP。
? 除非系統(tǒng)被徹底地鎖定,NMI(不可屏蔽中斷)會在收到請求的第一時間予以響應(yīng)。對于很多安全-關(guān)鍵(safety-critical)的應(yīng)用,NMI都是必不不可少的(如化學反應(yīng)即將失控時的緊急停機)。
低功耗
? Cortex-M3需要的邏輯門數(shù)少,所以先天就適合低功耗要求的應(yīng)用(功率低于0.19mW/MHz)在內(nèi)核水平上支持節(jié)能模式(SLEEPING和SLEEPDEEP位)。通過使用“等待中斷指令(WFI)”和“等待事件指令(WFE)”,內(nèi)核可以進入睡眠模式,并且以不同的方式喚醒。另外,模塊的時鐘是盡可能地分開供應(yīng)的,所以在睡眠時可以把CM3的大多數(shù)“官能團”給停掉。
? CM3的設(shè)計是全靜態(tài)的、同步的、可綜合的。任何低功耗的或是標準的半導體工藝均可放心飲用。
系統(tǒng)特性
? 系統(tǒng)支持“位尋址帶”操作(8051位尋址機制的“威力大幅加強版”),字節(jié)不變的大端模式,并且支持非對齊的數(shù)據(jù)訪問。
? 擁有先進的fault處理機制,支持多種類型的異常和faults,使故障診斷更容易。
? 通過引入banked堆棧指針機制,把系統(tǒng)程序使用的堆棧和用戶程序使用的堆棧劃清界線。如果再配上可選的MPU,處理器就能徹底滿足對軟件健壯性和可靠性有嚴格要求的應(yīng)用。
調(diào)試支持
? 在支持傳統(tǒng)的JTAG基礎(chǔ)上,還支持更新更好的串行線調(diào)試接口。
? 基于CoreSight調(diào)試解決方案,使得處理器哪怕是在運行時,也能訪問處理器狀態(tài)和存儲器內(nèi)容。
? 內(nèi)建了對多達6個斷點和4個數(shù)據(jù)觀察點的支持。
? 可以選配一個ETM,用于指令跟蹤。數(shù)據(jù)的跟蹤可以使用DWT
? 在調(diào)試方面還加入了以下的新特性,包括fault狀態(tài)寄存器,新的fault異常,以及閃存修補 (patch)操作,使得調(diào)試大幅簡化。
? 可選ITM模塊,測試代碼可以通過它輸出調(diào)試信息,而且“拎包即可入住”般地方便使用。
編程模式
Cortex-M3處理器采用ARMv7-M架構(gòu),它包括所有的16位Thumb
指令集和基本的32位Thumb-2
指令集架構(gòu),Cortex-M3處理器不能執(zhí)行ARM指令集。
Thumb-2在Thumb
指令集架構(gòu)(ISA)上進行了大量的改進,它與Thumb相比,具有更高的代碼密度并提供16/32位指令的更高性能。
關(guān)于工作模式
Cortex-M3處理器支持2種工作模式:線程模式和處理模式。在復位時處理器進入“線程模式”,異常返回時也會進入該模式,特權(quán)和用戶(非特權(quán))模式代碼能夠在“線程模式”下運行。
出現(xiàn)異常模式時處理器進入“處理模式”,在處理模式下,所有代碼都是特權(quán)訪問的。
關(guān)于工作狀態(tài)
Cortex-M3處理器有2種工作狀態(tài)。
Thumb狀態(tài):這是16位和32位“
半字對齊”的Thumb和Thumb-2指令的執(zhí)行狀態(tài)。
調(diào)試狀態(tài):處理器停止并進行調(diào)試,進入該狀態(tài)。
Cortex-M4
基本簡介
ARMCortex™-M4處理器是由ARM專門開發(fā)的最新嵌入式處理器,在M3的基礎(chǔ)上強化了運算能力,新加了浮點、DSP、并行計算等,用以滿足需要有效且易于使用的控制和信號處理功能混合的數(shù)字信號控制市場。其高效的信號處理功能與Cortex-M處理器系列的低功耗、低成本和易于使用的優(yōu)點的組合,旨在滿足專門面向電動機控制、汽車、電源管理、嵌入式音頻和工業(yè)自動化市場的新興類別的靈活解決方案。
特性
ARMCortex™-M4處理器內(nèi)核是在Cortex-M3內(nèi)核基礎(chǔ)上發(fā)展起來的,其性能比Cortex-M3提高了20%。新增加了浮點、DSP、并行計算等。用以滿足需要有效且易于使用的控制和信號處理功能混合的數(shù)字信號控制市場。其高效的信號處理功能與Cortex-M處理器系列的低功耗、低成本和易于使用的優(yōu)點相結(jié)合。
Cortex-M4提供了無可比擬的功能,將32位控制與領(lǐng)先的數(shù)字信號處理技術(shù)集成來滿足需要很高能效級別的市場。
Cortex-M4處理器采用一個擴展的單時鐘周期乘法累加(MAC)單元、優(yōu)化的單指令多數(shù)據(jù)(SIMD)指令、飽和運算指令和一個可選的單精度浮點單元(FPU)。這些功能以表現(xiàn)
ARMCortex-M系列處理器特征的創(chuàng)新技術(shù)為基礎(chǔ)。包括
·RISC處理器內(nèi)核,高性能32位CPU、具有確定性的運算、低延遲3階段管道,可達1.25DMIPS/MHz;
·Thumb-2指令集,16/32位指令的最佳混合、小于8位設(shè)備3倍的代碼大小、對性能沒有負面影響,提供最佳的代碼密度;
·低功耗模式,集成的睡眠狀態(tài)支持、多電源域、基于架構(gòu)的軟件控制;
·嵌套矢量中斷控制器(NVIC),低延遲、低抖動中斷響應(yīng)、不需要匯編編程、以純C語言編寫的中斷服務(wù)例程,能完成出色的中斷處理;
·工具和RTOS支持,廣泛的第三方工具支持、Cortex微控制器軟件接口標準(CMSIS)、最大限度地增加軟件成果重用;
·CoreSight調(diào)試和跟蹤,JTAG或2針串行線調(diào)試(SWD)連接、支持多處理器、支持實時跟蹤。
此外,該處理器還提供了一個可選的內(nèi)存保護單元(MPU),提供低成本的調(diào)試/追蹤功能和集成的休眠狀態(tài),以增加靈活性。嵌入式開發(fā)者將得以快速設(shè)計并推出令人矚目的終端產(chǎn)品,具備最多的功能以及最低的功耗和尺寸。
處理技術(shù)
Cortex-M4 處理器已設(shè)計為具有適用于數(shù)字信號控制市場的多種高效
信號處理功能。Cortex-M4 處理器采用擴展的單周期乘法累加 (MAC) 指令、優(yōu)化的 SIMD 運算、飽和運算指令和一個可選的單精度浮點單元 (FPU)。這些功能以表現(xiàn) ARM Cortex-M 系列處理器特征的創(chuàng)新技術(shù)為基礎(chǔ)。
主要功能
從圖上可以看出三者功能上的異同點。它們的不同點也決定了三者的不同應(yīng)用場合。M4相比較前兩者主要的變化在于數(shù)字運算能力上的增強,增加了DSP運算指令、SIMD(Single Instruction Multiple Data,單指令多數(shù)據(jù)流)指令集、FPU(浮點運算單元,可選)。
從圖中足以看出M4內(nèi)核的強大,同時Cortex-M 系列處理器都是二進制向上兼容的,這使得軟件重用以及從一個 Cortex-M 處理器無縫發(fā)展到另一個成為可能(圖3):
下面就增強的三個功能進行說明:
1、DSP指令集
所謂集成DSP功能并不是說M4內(nèi)核是一個M3+DSP的雙核處理器(目前個人知道的這類處理器是TI的達芬奇系列,主要應(yīng)用于語音、視頻圖像有關(guān)的數(shù)字多媒體領(lǐng)域)。而是只是增加了DSP功能的指令集(單周期的運算指令),能在一個周期內(nèi)完成指令操作。在官方的CMSIS標準工程庫中已經(jīng)集成,可以直接使用(有關(guān)內(nèi)容在以后文章中介紹)。
圖表展示了處理器運行在相同的速度下Cortex - M3和Cortex - M4在數(shù)字信號處理能力方面的相對性能比較。
在下面的數(shù)字,Y軸代表執(zhí)行給出的計算用的相對的周期數(shù)。 因此,循環(huán)數(shù)越小,性能越好。以Cortex - M3作為參考,Cortex - M4的性能計算,性能比大概為其周期計數(shù)的倒數(shù)。舉例說明,PID功能,Cortex - M4的周期數(shù)是與Cortex - M3的約0.7倍,因此相對性能是1/0.7,即1.4倍。
Cortex - M系列16位循環(huán)計數(shù)功能
Cortex - M系列32位循環(huán)計數(shù)功能
這很清楚的表明,Cortex - M4在數(shù)字信號處理方面對比Cortex - M3的16位或32位操作有著很大的優(yōu)勢。
Cortex-M4執(zhí)行的所有的DSP指令集都可以在一個周期完成,Cortex - M3需要多個指令和多個周期才能完成的等效功能。即使是PID算法——通用DSP運算中最耗費資源的工作,Cortex - M4也能提供了一個1.4倍的性能得改善 。另一個例子,MP3解碼在Cortex-M3需要20-25Mhz,而在Cortex-M4只需要10-12MHz。
2. 32位乘法累加(MAC)
32位乘法累加(MAC)包括新的指令集和針對Cortex - M4硬件執(zhí)行單元的優(yōu)化它是能夠在單周期內(nèi)完成一個 32 × 32 + 64 - > 64 的操作 或 兩個16 × 16 的操作。如下表列出了這個單元的計算能力。
3 .SIMD
(Single Instruction Multiple Data,單指令多數(shù)據(jù)流)能夠復制多個操作數(shù),并把它們打包在大型寄存器的一組指令集,例:3DNow!、SSE。以同步方式,在同一時間內(nèi)執(zhí)行同一條指令。
SIMD在性能上的優(yōu)勢:
以加法指令為例,單指令單數(shù)據(jù)(SISD)的CPU對加法指令譯碼后,執(zhí)行部件先訪問內(nèi)存,取得第一個操作數(shù);之后再一次訪問內(nèi)存,取得第二個操作數(shù);隨后才能進行求和運算。而在SIMD型的CPU中,指令譯碼后幾個執(zhí)行部件同時訪問內(nèi)存,一次性獲得所有操作數(shù)進行運算。這個特點使SIMD特別適合于多媒體應(yīng)用等數(shù)據(jù)密集型運算。
如:AMD公司引以為豪的3D NOW! 技術(shù)實質(zhì)就是SIMD,這使K6-2、雷鳥、毒龍?zhí)幚砥髟谝纛l解碼、視頻回放、3D游戲等應(yīng)用中顯示出優(yōu)異的性能。
4.FPU
FPU是Cortex - M4浮點運算的可選單元。因此它是一個專用于浮點任務(wù)的單元。這個單元通過硬件提升性能,能處理單精度浮點運算,并與IEEE 754標準 兼容。這完成了ARMv7 - M架構(gòu)單精度變量的浮點擴展。FPU擴展了寄存器的程序模型與包含32個單精度寄存器的寄存器文件。這些可以被看作是:
·16個64位雙字寄存器,D0 - D15
·32個32位單字寄存器,S0 - S31 該FPU提供了三種模式運作,以適應(yīng)各種應(yīng)用
·全兼容模式(在全兼容模式,F(xiàn)PU處理所有的操作都遵循IEEE754的硬件標準)
·Flush-to-zero
沖洗到零模式(設(shè)置FZ位浮點狀態(tài)和控制寄存器FPSCR [24]到flush-to-zero 模式。在此模式下,F(xiàn)PU 在運算中將所有不正常的輸入操作數(shù)的算術(shù)CDP操作當做0.除了當從零操作數(shù)的結(jié)果是合適的情況。VABS,VNEG,VMOV 不會被當做算術(shù)CDP的運算,而且不受flush-to-zero 模式影響。結(jié)果是微小的,就像在IEEE 754 標準的描述的那樣,在目標精度增加的幅度小于四舍五入后最低正常值,被零取代。IDC的標志位,F(xiàn)PSCR [7],表示當輸入Flush時變化。UFC標志位,F(xiàn)PSCR [3],表示當Flush結(jié)束時變化)
·默認的NaN模式(DN位的設(shè)置,F(xiàn)PSCR [25],會進入NaN的默認模式。在這種模式下,如對任何算術(shù)數(shù)據(jù)處理操作的結(jié)果,涉及一個輸入NaN,或產(chǎn)生一個NaN結(jié)果,會返回默認的NaN。僅當VABS,VNEG,VMOV運算時,分數(shù)位增加保持。所有其他的CDP運算會忽略所有輸入NaN的小數(shù)位的信息)。具體指令請自行查看手冊。
Cortex-M功能模塊差異
由于CM1主要是用在FPGA產(chǎn)品中,故下面對比忽略CM1。我們知道CM處理器是向下兼容的,故CM功能模塊是隨著版本的升級而逐步增加的,我們逐步從最低版本開始對比。
2.1 CM0 vs CM0+
先來聊聊CM0與CM0+,從最基準的CM0模塊看起:
- ARMv6-M CPU內(nèi)核:ARM公司于2007年推出的內(nèi)核。馮·諾依曼體系結(jié)構(gòu),3級流水線,支持大部分Thumb和小部分Thumb-2指令集,所有指令一共57條。此外還內(nèi)嵌32-bit返回結(jié)果的硬件乘法器。
- NVIC嵌套向量中斷控制器:用于CPU在正常Run模式下中斷管理。最大支持32個外部中斷,外部中斷可設(shè)4級搶占優(yōu)先級(2bit)。
- WIC喚醒中斷控制器:用于CPU在低功耗Sleep模式下中斷管理。
- AHB-Lite總線:一條32bit
AMBA-3標準的高性能system總線負責所有Flash、SRAM中指令和數(shù)據(jù)存取。
- 調(diào)試模塊:0-4個硬件斷點Breakpoint,0-2個數(shù)據(jù)監(jiān)測點Watchpoint。
- DAP調(diào)試接口:通過DAP模塊支持JTAG和SWD接口。
那么CM0+到底改進了什么?
- ARMv6-M CPU內(nèi)核:流水線改為2級(很多8bit MCU都是2級流水線,主要用于降低功耗)
- NVIC嵌套向量中斷控制器:增加了VTOR即中斷重定向功能。
那么CM0+到底增加了什么?
- MPU存儲器保護單元:提供硬件方式管理和保護內(nèi)存,控制訪問權(quán)限,最大可將內(nèi)存分為8*8個region。內(nèi)存越權(quán)訪問,將返回MemManage
Fault。
- MTB片上跟蹤單元:用戶體驗更好的的跟蹤調(diào)試,優(yōu)化的異常捕獲機制,可以更快地定位bug。
- Fast I/O:可單周期訪問的快速I/O口,更易于Bit-banging(比如GPIO模擬SPI、IIC協(xié)議)。
2.2 CM0+ vs CM3
前面比較完了CM0與CM0+,再來看看CM3比CM0+增強在了哪里:
那么CM3到底改進了什么?
- ARMv7-M CPU內(nèi)核:ARM公司于2004年推出的內(nèi)核。哈佛體系結(jié)構(gòu),3級流水線+分支預測,支持全部的Thumb和Thumb-2指令集。內(nèi)嵌32-bit硬件乘法器可返回64-bit運算結(jié)果,且新增32-bit硬件除法器。
- NVIC嵌套向量中斷控制器:最大支持240個外部中斷,中斷優(yōu)先級可分組(搶占優(yōu)先級、響應(yīng)優(yōu)先級),8bit優(yōu)先級設(shè)置(最大128級搶占優(yōu)先級(對應(yīng)最小2級響應(yīng)優(yōu)先級),最大256級響應(yīng)優(yōu)先級(對應(yīng)無搶占優(yōu)先級))。
- 3x AHB-Lite總線:除了原system總線負責SRAM存取外,還新增兩條ICode、DCode總線分別完成Flash上指令和數(shù)據(jù)存取。
- 調(diào)試模塊:0-8個硬件斷點Breakpoint,0-4個數(shù)據(jù)監(jiān)測點Watchpoint。
- ITM/ETM跟蹤單元:ITM更好地支持printf風格debug,ETM提供實時指令和數(shù)據(jù)跟蹤。
那么CM3到底增加了什么?
額,CM3相比CM0+并沒有增加什么獨有模塊,反倒是少了Fast I/O Port,實際上Fast I/O Port是CM家族里CM0+所獨有的模塊。
2.3 CM3 vs CM4
前面比較完了CM0+與CM3,再來看看CM4比CM3增強在了哪里:
那么CM4到底改進了什么?
- ARMv7E-M CPU內(nèi)核:增加了DSP相關(guān)指令支持。
那么CM4到底增加了什么?
- DSP數(shù)字信號處理單元:新增支持單周期16/32-bit MAC、dual 16-bit
MAC, 8/16-bit SIMD算法的數(shù)字信號處理單元。
- FPU浮點運算單元:新增單精度(float型)兼容IEEE-754標準的浮點運算單元(VFPv4-SP)。
2.4 CM4 vs CM7
前面比較完了CM3與CM4,再來看看CM7比CM4增強在了哪里:
那么CM7到底改進了什么?
- ARMv7E-M CPU內(nèi)核:6級流水線+分支預測。
- 2x AHB-Lite總線:精簡為2條AHB總線,其中AHB-P外設(shè)接口完成原來system總線功能, AHB-S從屬接口負責外部總線控制器(如DMA)功能以及與TCM接口功能。
- MPU存儲器保護單元:最大可將內(nèi)存分為16*8個region。
- FPU浮點運算單元:新增雙精度(double型)兼容IEEE-754標準的浮點運算單元(VFPv5)。
-
那么CM7到底增加了什么?
- I/D-Cache緩存區(qū):即是我們通常理解的L1
Cache,每個Cache大小為4-64KB。
- I/D-TCM緊密耦合存儲器:緊密的與處理器內(nèi)核相耦合的RAM,提供與Cache相當?shù)男阅,但比Cache更具確定性,memory最大均為16MB。
- ECC特性:對L1
Cache提供錯誤校正和恢復功能,提高系統(tǒng)的可靠性。
- AXI-M總線:基于AMBA
4的64bit AXI總線,用于支持掛在系統(tǒng)上的L2
memory。
- 最近在關(guān)注Cortex-M處理器,針對目前進入大眾視野的M0、M3、M4做了如下簡單對比,內(nèi)容來自ARM等官網(wǎng),這里僅僅是整理了下,看起來更直觀點,呵呵。
-
- Cortex-M 系列針對成本和功耗敏感的 MCU 和終端應(yīng)用(如智能測量、人機接口設(shè)備、汽車和工業(yè)控制系統(tǒng)、大型家用電器、消費性產(chǎn)品和醫(yī)療器械)的混合信號設(shè)備進行過優(yōu)化。.
- 一、比較Cortex-M 處理器
- Cortex-M 系列處理器都是二進制向上兼容的,這使得軟件重用以及從一個 Cortex-M 處理器無縫發(fā)展到另一個成為可能。
- M Cortex-M 技術(shù)
- CMSIS
- ARM Cortex 微控制器軟件接口標準 (CMSIS)是 Cortex-M 處理器系列的與供應(yīng)商無關(guān)的硬件抽象層。 使用 CMSIS,可以為接口外設(shè)、實時操作系統(tǒng)和中間件實現(xiàn)一致且簡單的軟件接口,從而簡化軟件的重用、縮短新微控制器開發(fā)人員的學習過程,并縮短新產(chǎn)品的上市時間。
- 深入:嵌套矢量中斷控制器 (NVIC)
- NVIC 是 Cortex-M 處理器不可或缺的部分,它為處理器提供了卓越的中斷處理能力。
- Cortex-M 處理器使用一個矢量表,其中包含要為特定中斷處理程序執(zhí)行的函數(shù)的地址。接受中斷時,處理器會從該矢量表中提取地址。
- 為了減少門數(shù)并增強系統(tǒng)靈活性,Cortex-M 處理器使用一個基于堆棧的異常模型。出現(xiàn)異常時,系統(tǒng)會將關(guān)鍵通用寄存器推送到堆棧上。完成入棧和指令提取后,將執(zhí)行中斷服務(wù)例程或故障處理程序,然后自動還原寄存器以使中斷的程序恢復正常執(zhí)行。使用此方法,便無需編寫匯編器包裝器了(而這是對基于 C 語言的傳統(tǒng)中斷服務(wù)例程執(zhí)行堆棧操作所必需的),從而使得應(yīng)用程序的開發(fā)變得非常容易。NVIC支持中斷嵌套(入棧),從而允許通過運用較高的優(yōu)先級來較早地為某個中斷提供服務(wù)。
- 在硬件中完成對中斷的響應(yīng)
- Cortex-M 系列處理器的中斷響應(yīng)是從發(fā)出中斷信號到執(zhí)行中斷服務(wù)例程的周期數(shù)。它包括:
- 檢測中斷
- 背對背或遲到中斷的最佳處理(參見下文)
- 提取矢量地址
- 將易損壞的寄存器入棧
- 跳轉(zhuǎn)到中斷處理程序
- 這些任務(wù)在硬件中執(zhí)行,并且包含在為 Cortex-M 處理器報出的中斷響應(yīng)周期時間中。在其他許多體系結(jié)構(gòu)中,這些任務(wù)必須在軟件的中斷處理程序中執(zhí)行,從而引起延遲并使得過程十分復雜。
-
- NVIC 中的尾鏈
- 在背對背中斷的情況下,傳統(tǒng)系統(tǒng)會重復完整的狀態(tài)保存和還原周期兩次,從而導致更高的延遲。Cortex-M處理器通過在 NVIC
硬件中實現(xiàn)尾鏈技術(shù)簡化了活動中斷和掛起的中斷之間的轉(zhuǎn)換。處理器狀態(tài)會在比軟件實現(xiàn)時間更少的周期內(nèi)自動保存在中斷條目上并在中斷退出時還原,從而顯著提升低 MHz 系統(tǒng)的性能。
-
- NVIC 對遲到的較高優(yōu)先級中斷的響應(yīng)
- 如果在為上一個中斷執(zhí)行堆棧推送期間較高優(yōu)先級的中斷遲到,NVIC 會立即提取新的矢量地址來為掛起的中斷提供服務(wù),如上所示。Cortex-M
NVIC 對這些可能性提供具有確定性的響應(yīng)并支持遲到和搶占。
-
- NVIC 進行的堆棧彈出搶占
- 同樣,如果異常到達,NVIC 將放棄堆棧彈出并立即為新的中斷提供服務(wù),如上所示。通過搶占并切換到第二個中斷而不完成狀態(tài)還原和保存,NVIC 以具有確定性的方式實現(xiàn)了縮短延遲。
再來說說ARM7,ARM9系列,
ARM9
ARM9系列處理器是英國ARM公司設(shè)計的主流嵌入式處理器,主要包括ARM9TDMI和ARM9E-S等系列。
基本概述
ARM9采用哈佛體系結(jié)構(gòu),指令和數(shù)據(jù)分屬不同的總線,可以并行處理。在流水線上,ARM7是三級流水線,ARM9是五級流水線。由于結(jié)構(gòu)不同,ARM7的執(zhí)行效率低于ARM9。平時所說的ARM7、ARM9實際上指的是ARM7TDMI、ARM9TDMI軟核,這種處理器軟核并不帶有MMU和cache,不能夠運行諸如linux這樣的嵌入式操作系統(tǒng)。而ARM公司對這種架構(gòu)進行了擴展,所以有了ARM710T、ARM720T、ARM920T、ARM922T等帶有MMU和cache的處理器內(nèi)核。
主要特性編輯
融合了ARM920T™ ARM® Thumb® 處理器
– 工作于180 MHz時性能高達200 MIPS,存儲器管理單元
– 16-K 字節(jié)的數(shù)據(jù)緩存,16-K字節(jié)的指令緩存,寫緩沖器
– 含有調(diào)試信道的內(nèi)部仿真器
– 中等規(guī)模的嵌入式宏單元結(jié)構(gòu)( 僅針對256 BGA 封裝)
· 低功耗:VDDCORE電流為30.4 mA 待機模式電流為3.1 mA
· 附加的嵌入式存儲器
– SRAM為16K ;ROM為128K
· 外部總線接口(EBI)
– 支持SDRAM,靜態(tài)存儲器, Burst Flash,無縫連接的CompactFlash®,
SmartMedia™及NAND Flash
· 提高性能而使用的系統(tǒng)外設(shè):
– 增強的時鐘發(fā)生器與電源管理控制器
– 兩個有雙PLL的片上振蕩器
– 低速的時鐘操作模式與軟件功耗優(yōu)化能力
– 四個可編程的外部時鐘信號
– 包括周期性中斷、看門狗及第二計數(shù)器的系統(tǒng)定時器
– 有報警中斷的實時時鐘
– 調(diào)試單元、兩線UART并支持調(diào)試信道
– 有8 個優(yōu)先級的高級中斷控制器,獨立的可屏蔽中斷源,偽中斷保護
– 7個外部中斷源及1 個快速中斷源
– 有122個可編程I/O口線的四個32 位PIO控制器,各線均有輸入變化中斷及開漏能力
– 20通道的外設(shè)數(shù)據(jù)控制器(DMA)
· 10/100 Base-T 型以太網(wǎng)卡接口
– 獨立的媒體接口(MII)或簡化的獨立媒體接口(RMII)
– 對于接收與發(fā)送有集成的28 字節(jié)FIFO及專用的DMA 通道
· USB 2.0 全速(12 M比特/秒) 主機雙端口
– 雙片上收發(fā)器(208引腳PQFP封裝中僅為一個)
– 集成的FIFO及專用的DMA 通道
· USB 2.0 全速(12 M比特/秒) 器件端口
– 片上收發(fā)器, 2-K字節(jié)可配置的集成FIFO
· 多媒體卡接口(MCI)
– 自動協(xié)議控制及快速自動數(shù)據(jù)傳輸
– 與MMC及SD存儲器卡兼容,支持兩個SD存儲器
· 3個同步串行控制器(SSC)
– 每個接收器與發(fā)送器有獨立的時鐘及幀同步信號
– 支持I2S模擬接口,時分復用
– 32比特的高速數(shù)據(jù)流傳輸能力
· 4個通用同步/異步接收/發(fā)送器(USART)
– 支持ISO7816 T0/T1 智能卡
– 硬軟件握手
– 支持RS485 及高達115 Kbps的IrDA 總線
– USART1為全調(diào)制解調(diào)控制線
· 主機/從機串行外設(shè)接口(SPI)
– 8~ 16 位可編程數(shù)據(jù)長度,可連接4個外設(shè)
· 兩個 3 通道16 位定時/計數(shù)器(TC)
– 3個外部時鐘輸入,每條通道有2 個多功能I/O引腳
– 雙PWM 產(chǎn)生器,捕獲/波形模式,上加/下減計數(shù)能力
· 兩線接口(TWI)
– 主機模式支持,所有兩線Atmel EEPROM 支持
· 所有數(shù)字引腳的IEEE 1149.1 JTAG邊界掃描
· 電源供應(yīng)
– VDDCORE,VDDOSC及VDDPLL電壓為:1.65V ~1.95V
– VDDIOP (外設(shè)I/O) 及VDDIOM (存儲器I/O)電壓為:1.65V~ 3.6V
體系特點
結(jié)構(gòu)特點
以ARM9E-S為例介紹ARM9處理器的主要結(jié)構(gòu)及其特點。ARM9E-S的結(jié)構(gòu)如圖4所示。其主要特點如下:
⑴32bit定點RISC處理器,改進型ARM/Thumb代碼交織,增強性乘法器設(shè)計。支持實時(real-time)調(diào)試;
⑵片內(nèi)指令和數(shù)據(jù)SRAM,而且指令和數(shù)據(jù)的
存儲器容量可調(diào);
⑶片內(nèi)指令和數(shù)據(jù)高速緩沖器(cache)容量從4K字節(jié)到1M字節(jié);
⑷設(shè)置保護單元(protection unit),非常適合
嵌入式應(yīng)用中對
存儲器進行分段和保護;
⑺支持標準基本
邏輯單元掃描測試方法學,而且支持BIST(built-in-self-test);
⑻支持
嵌入式跟蹤
宏單元,支持實時跟蹤指令和數(shù)據(jù)。
ARM920T運行模式
ARM920T支持7種運行模式,分別為:
(1)用戶模式(usr),
ARM處理器正常的程序執(zhí)行狀態(tài);
(2)快速中斷模式 (fiq),
用于高速數(shù)據(jù)傳輸或通道處理;
(3)外部中斷模式(irq),
用于通用的中斷處理;
(4)管理模式(svc),
操作系統(tǒng)使用的保護模式;
(5)數(shù)據(jù)訪問終止模式(abt),
當數(shù)據(jù)或指令預取終止時進入該模式,可用于虛擬存儲及存儲保護;
(6)系統(tǒng)模式(sys),
運行具有特權(quán)的操作系統(tǒng)任務(wù);
(7)未定義指令中止模式(und)
當未定義的指令執(zhí)行時進入該模式,可用于支持硬件協(xié)處理器的軟件仿真。
ARM微處理器的運行模式可以通過軟件改變,也可以通過外部中斷或異常處理改變。大多數(shù)的應(yīng)用程序運行在用戶模式下,當處理器運行在用戶模式下時,某些被保護的系統(tǒng)資源是不能被訪問的。除用戶模式以外,其余的6種模式稱為特權(quán)模式;其中除去用戶模式和系統(tǒng)模式以外的5種又稱為異常模式,常用于處理中斷或異常,以及訪問受保護的系統(tǒng)資源等情況。
ARM920T的工作狀態(tài)
從編程的角度看,ARM920T微處理器的工作狀態(tài)一般有兩種:
(1)ARM狀態(tài),此時處理器執(zhí)行32位的、字對齊的ARM指令;
(2)Thumb狀態(tài),此時處理器執(zhí)行16位的、半字對齊的Thumb指令。
ARM指令集和Thumb指令集均有切換處理器狀態(tài)的指令,在程序的執(zhí)行過程中,微處理器可以隨時在兩種工作狀態(tài)之間切換,并且,處理器的工作狀態(tài)的轉(zhuǎn)變并不影響處理器的工作模式和相應(yīng)寄存器中的內(nèi)容。但ARM微處理器在開始執(zhí)行代碼時,應(yīng)該處于ARM
狀態(tài)。
當操作數(shù)寄存器的狀態(tài)位(位0)為1時,可以采用執(zhí)行BX指令的方法,使微處理器從
ARM狀態(tài)切換到Thumb狀態(tài)。此外,當處理器處于Thumb狀態(tài)時發(fā)生異常(如IRQ、FIQ、Undef、Abort、SWI等),當異常處理返回時,自動切換回Thumb狀態(tài)。當操作數(shù)寄存器的狀態(tài)位為0時,執(zhí)行BX指令可以使微處理器從Thumb狀態(tài)切換到ARM狀態(tài)。此外,在處理器進行異常處理時,將PC指針放入異常模式鏈接寄存器中,并從異常向量地址開始執(zhí)行程序,也可以使處理器切換到ARM狀態(tài)。
ARM920T體系結(jié)構(gòu)的存儲器格式
ARM920T體系結(jié)構(gòu)將存儲器看做是從零地址開始的字節(jié)的線性組合。從0字節(jié)到3字節(jié)放置第1個存儲的字數(shù)據(jù),從第4個字節(jié)到第7個字節(jié)放置第2個存儲的字數(shù)據(jù),依次排列。作為32位的微處理器,ARM92OT體系結(jié)構(gòu)所支持的最大尋址空間為4GB。
ARM92OT體系結(jié)構(gòu)可以用兩種方法存儲字數(shù)據(jù),分別稱為大端格式和小端格式。大端格式中字數(shù)據(jù)的高字節(jié)存儲在低地址中,而字數(shù)據(jù)的低字節(jié)則存放在高地址中
以大端格式存儲數(shù)據(jù)
以小端格式存儲數(shù)據(jù)
指令
⒈loads 指令與n stores指令
指令周期數(shù)的改進最明顯的是loads指令和stores指令。從ARM7到ARM9這兩條指令的執(zhí)行時間減少了30%。
指令周期的減少是由于ARM7和ARM9兩種處理器內(nèi)的兩個基本的微處理結(jié)構(gòu)不同所造成的。
⑴ARM9有獨立的指令和數(shù)據(jù)
存儲器接口,允許處理器同時進行取指和讀寫數(shù)據(jù)。這叫作改進型
哈佛結(jié)構(gòu)。而ARM7只有數(shù)據(jù)
存儲器接口,它同時用來取指令和數(shù)據(jù)訪問。
⑵5級流水線引入了獨立的
存儲器和寫回流水線,分別用來訪問存儲器和將結(jié)果寫回
寄存器。
以上兩點實現(xiàn)了一個周期完成loads指令和stores指令。
⒉互鎖(interlocks)技術(shù)
當指令需要的數(shù)據(jù)因為以前的指令沒有執(zhí)行完而沒有準備好就會產(chǎn)生管道互鎖。當管道互鎖發(fā)生時,硬件會停止這個指令的執(zhí)行,直到數(shù)據(jù)準備好為止。雖然這種技術(shù)會增加代碼執(zhí)行時間,但是為初期的設(shè)計者提供了巨大的方便。編譯器以及匯編程序員可以通過重新設(shè)計代碼的順序或者其他方法來減少管道互鎖的數(shù)量。
⒊分枝指令
ARM9和ARM7的分枝
指令周期是相同的。而且ARM9TDMI和ARM9E-S并沒有對分枝指令進行預測處理。
處理能力
新一代的ARM9處理器,通過全新的設(shè)計,采用了更多的晶體管,能夠達到兩倍以上于ARM7處理器的處理能力。這種處理能力的提高是通過增加
時鐘頻率和減少指令執(zhí)行周期實現(xiàn)的。
ARM7處理器采用3級流水線,而ARM9采用5級流水線。增加的流水線設(shè)計提高了
時鐘頻率和
并行處理能力。5級流水線能夠?qū)⒚恳粋指令處理分配到5個
時鐘周期內(nèi),在每一個時鐘周期內(nèi)同時有5個指令在執(zhí)行。在同樣的加工工藝下,ARM9TDMI處理器的時鐘頻率是ARM7TDMI的1.8~2.2倍。
指令周期的改進對于處理器性能的提高有很大的幫助。性能提高的幅度依賴于代碼執(zhí)行時指令的重疊,這實際上是程序本身的問題。對于采用最高級的語言,一般來說,性能的提高在30%左右。
-
Cortex-A 系列處理器
Cortex-A 系列處理器是一系列處理器,支持ARM32或64位指令集,向后完全
兼容早期的ARM處理器,包括從1995年發(fā)布的ARM7TDMI處理器到2002年發(fā)布的ARMll處理器系列。
簡介
32位RISCCPU開發(fā)領(lǐng)域中不斷取得
突破,其設(shè)計的微處理器結(jié)構(gòu)已經(jīng)從v3發(fā)展到現(xiàn)在的v7。Cortex系列處理器是基于ARMv7架構(gòu)的,分為Cortex-M、Cortex-R和Cortex-A三類。由于應(yīng)用領(lǐng)域的不同,基于v7架構(gòu)的Cortex處理器系列所采用的技術(shù)也不相同;趘7A的稱為“Cortex-A系列。高性能的
Cortex-A15、可伸縮的
Cortex-A9、經(jīng)過市場驗證的
Cortex-A8處理器以及高效的
Cortex-A7和
Cortex-A5處理器均共享同一體系結(jié)構(gòu),因此具有完整的應(yīng)用兼容性,支持傳統(tǒng)的ARM、
Thumb指令集和新增的高性能緊湊型Thumb-2指令集。
Cortex-A15和Cortex-A7都支持ARMv7A體系結(jié)構(gòu)的擴展,從而為大型物理地址訪問和硬件虛擬化以及啟用big.LITTLE處理的AMBA4ACE一致性提供支持。
ARMv7包括3個關(guān)鍵要素:NEON單指令多數(shù)據(jù)(SIMD)單元、ARMtrustZone安全擴展、以及thumb2指令集,通過16位和32位混合長度指令以減小代碼長度。
高性能
Cortex-A 設(shè)備可為其目標應(yīng)用領(lǐng)域提供各種可伸縮的能效性能點。一些說明示例如下:
Cortex-A15 ,可為新一代移動基礎(chǔ)結(jié)構(gòu)應(yīng)用和要求苛刻的無線基礎(chǔ)結(jié)構(gòu)應(yīng)用提供性能最高的解決方案
Cortex-A7,可采用獨立、多核配置實現(xiàn),提供 800 MHz - 1.2 GHz 的典型頻率,也可以與 Cortex-A15 結(jié)合用于 big.LITTLE 處理
Cortex-A9 實現(xiàn),可提供 800 MHz - 2 GHz 的標準頻率,每個內(nèi)核可提供 5000 DMIPS 的性能
Cortex-A8 單核解決方案,可提供經(jīng)濟有效的高性能,在 600 MHz - 1 GHz 的頻率下,提供的性能超過 2000 DMIPS
Cortex-A5 低成本實現(xiàn),在 400- 800 MHz 的頻率下,提供的性能超過 1200 DMIPS。
多核技術(shù)
Cortex-A5、[1] Cortex-A7、Cortex-A9 和 Cortex-A15 處理器都支持 ARM 的第二代多核技術(shù)
單核到四核實現(xiàn),支持面向性能的應(yīng)用領(lǐng)域 支持對稱和非對稱的操作系統(tǒng)實現(xiàn) 通過加速器一致性端口 (ACP) 在導出到系統(tǒng)的整個處理器中保持一致性 Cortex-A7 和 Cortex-A15 將多核一致性擴展至 AMBA4 ACE 的 1~4 核群集以上(AMBA 一致性擴展)
高級擴展
除了具有與上一代經(jīng)典 ARM 和 Thumb® 體系結(jié)構(gòu)的二進制兼容性外,Cortex-A 類處理器還通過以下技術(shù)擴展提供了更多優(yōu)勢
Thumb-2,提供最佳代碼大小和性能
TrustZone 安全擴展,提供可信計算
Jazelle 技術(shù),提高執(zhí)行環(huán)境(如 Java、.Net、MSIL、Python 和 Perl)速度。
產(chǎn)品應(yīng)用
ARM公司的Cortex-A系列處理器適用于具有高計算要求、運行豐富操作系統(tǒng)以及提供交互媒體和圖形體驗的應(yīng)用領(lǐng)域。從最新技術(shù)的移動Internet必備設(shè)備(如手機和超便攜的上網(wǎng)本或智能本)到汽車信息娛樂系統(tǒng)和下一代數(shù)字電視系統(tǒng)。也可以用于其他移動便攜式設(shè)備,還可以用于數(shù)字電視、機頂盒、企業(yè)網(wǎng)絡(luò)、打印機和服務(wù)器解決方案。這一系列的處理器具有高效低耗等特點,比較適合配置于各種移動平臺。
雖然Cortex-A處理器正朝著提供完全的Internet體驗的方向發(fā)展,但其應(yīng)用也很廣泛,包括:
產(chǎn)品類型
|
應(yīng)用
|
|
上網(wǎng)本、智能本、輸入板、電子書閱讀器、瘦客戶端
|
手機
|
智能手機、特色手機
|
數(shù)字家電
|
|
汽車
|
信息娛樂、導航
|
企業(yè)
|
激光打印機、 路由器、無線基站、VOIP 電話和設(shè)備
|
無線基礎(chǔ)結(jié)構(gòu)
|
Web 2.0、無線基站、交換機、服務(wù)器
|
ARM Cortex™-A5 處理器是能效最高、成本最低的處理器,能夠向最廣泛的設(shè)備提供 Internet 訪問:從入門級智能手機、低成本手機和智能移動終端到普遍采用的嵌入式、消費類和工業(yè)設(shè)備。
Cortex-A5 處理器可為現(xiàn)有 ARM926EJ-S™ 和 ARM1176JZ-S™ 處理器設(shè)計提供很有價值的遷移途徑。它可以獲得比 ARM1176JZ-S 更好的性能,比 ARM926EJ-S 更好的功效和能效以及 100% 的 Cortex-A 兼容性。
這些處理器向特別注重功耗和成本的應(yīng)用程序提供高端功能,其中包括:
多重處理功能,可以獲得可伸縮、高能效性能
高性能內(nèi)存系統(tǒng),包括高速緩存和內(nèi)存管理單元
Cortex-A7 處理器
ARM Cortex™-A7 MPCore™ 處理器是 ARM 迄今為止開發(fā)的最有效的應(yīng)用處理器,它顯著擴展了 ARM 在未來入門級智能手機、平板電腦以及其他高級移動設(shè)備方面的低功耗領(lǐng)先地位。
Cortex-A7 處理器的體系結(jié)構(gòu)和功能集與 Cortex-A15 處理器完全相同,不同這處在于,Cortex-A7 處理器的微體系結(jié)構(gòu)側(cè)重于提供最佳能效,因此這兩種處理器可在
big.LITTLE配置中協(xié)同工作,軟件可以在高能效 Cortex-A7 處理器上運行 也可以在需要時在高性能 Cortex-A15 處理器上運行 無需重新編譯,[2]
從而提供高性能與超低功耗的終極組合。
作為獨立處理器,單個 Cortex-A7 處理器的能源效率是 ARM Cortex-A8 處理器(支持如今的許多最流行智能手機)的 5 倍,性能提升 50%,而尺寸僅為后者的五分之一。
Cortex-A7 可以使 2013-2014 年期間低于 100 美元價格點的入門級智能手機與 2010 年 500 美元的高端智能手機相媲美。這些入門級智能手機在發(fā)展中世界將重新定義連接和 Internet 使用。
該處理器與其他 Cortex-A 系列處理器完全兼容并整合了高性能 Cortex-A15 處理器的所有功能,包括虛擬化、大物理地址擴展 (LPAE) NEON 高級 SIMD 和 AMBA 4 ACE 一致性。
最佳的功效和占用空間,可作為獨立的應(yīng)用處理器 性能高于 2011 年主流智能手機 CPU 性能提升高達 20% 而功耗降低 60%AMBA 4 ACE 一致性接口支持大小 CPU 群集之間 20us 以下的上下文遷移
ARMCortex-A8處理器是一款適用于復雜操作系統(tǒng)及用戶應(yīng)用的應(yīng)用處理器,其結(jié)構(gòu)如圖所示。支持智能能源管理(IEM,IntelligentEnergyManger)技術(shù)的ARMArtisan庫以及先進的泄漏控制技術(shù),使得Cortex-A8處理器實現(xiàn)了非凡的速度和功耗效率在65nm上藝下,ARMcortex-A8處理器的功耗不到300mW,能夠提供高性能和低功耗它第一次為低費用、高容量的產(chǎn)品帶來了臺式機級別的性能
A8處理器結(jié)構(gòu)
Cortex-A8處理器是第一款基于下一代ARMv7架構(gòu)的應(yīng)用處理器,使用了能夠帶來更高性能、更低功耗和更高代碼密度的Thumb-2技術(shù)它首次采用了強大的NEON信號處理擴展集,為H.264和MP3等媒體編解碼提供加速
Cortex-A8的解決方案還包括Jazelle-RCTJava加速技術(shù),對實時(JIT)和動態(tài)調(diào)整編譯(DAC)提供最優(yōu)化,同時減少內(nèi)存占用空間高達3倍該處理器配置了先進的超標量體系結(jié)構(gòu)流水線,能夠同時執(zhí)行多條指令,并且提供超過2.0DMIPS/MHz的性能處理器集成了一個可調(diào)尺寸的二級高速緩沖存儲器,能夠同高速的16KB或者32KB一級高速緩沖存儲器一起工作,從而達到最快的讀取速度和最大的吞吐量新處理器還配置了用于安全交易和數(shù)字版權(quán)管理的TrustZone技術(shù),以及實現(xiàn)低功耗管理的IEM功能
Cortex-A8處理器使用了先進的分支預測技術(shù),并且具有專用的NEON整型和浮點型流水線進行媒體和信號處理在使用小于4mm2的硅片及低功耗的65nm工藝的情況下,Cortex-A8處理器的運行頻率將高于600MHz(不包括NEON追蹤技術(shù)和二級高速緩沖存儲器)在高性能的90nm和65nm工藝下,Cortex-A8處理器運行頻率最高可達1GHz,能夠滿足高性能消費產(chǎn)品設(shè)計的需要。
Cortex-A9處理器
ARM Cortex™-A9 處理器提供了史無前例的高性能和高能效,從而使其成為需要在低功耗或散熱受限的成本敏感型設(shè)備中提供高性能的設(shè)計的理想解決方案。 它既可用作單核處理器,也可用作可配置的多核處理器,同時可提供可合成或硬宏實現(xiàn)。該處理器適用于各種應(yīng)用領(lǐng)域,從而能夠?qū)Χ鄠市場進行穩(wěn)定的軟件投資。
與高性能計算平臺消耗的功率相比,ARM Cortex-A9 處理器可提供功率更低的卓越功能,其中包括:
無與倫比的性能,2GHz 標準操作可提供 TSMC 40G 硬宏實現(xiàn)
以低功耗為目標的單核實現(xiàn),面向成本敏感型設(shè)備
利用高級 MPCore 技術(shù),最多可擴展為 4 個一致的內(nèi)核
Cortex-A15 處理器
ARM Cortex™-A15 MPCore™ 處理器是性能高且可授予許可的處理器。它提供前所未有的處理功能,與低功耗特性相結(jié)合,在各種市場上成就了卓越的產(chǎn)品,包括智能手機、平板電腦、移動計算、高端數(shù)字家電、服務(wù)器和無線基礎(chǔ)結(jié)構(gòu)。Cortex-A15 MPCore 處理器提供了性能、功能和能效的獨特組合,進一步加強了 ARM 在這些高價值和高容量應(yīng)用細分市場中的領(lǐng)導地位。
Cortex-A15 MPCore 處理器是 Cortex-A 系列處理器的最新成員,確保在應(yīng)用方面與所有其他獲得高度贊譽的 Cortex-A 處理器完全兼容。這樣,就可以立即訪問已得到認可的開發(fā)平臺和軟件體系,包括 Android™、Adobe® Flash® Player、Java Platform Standard Edition (Java SE)、JavaFX、Linux、Microsoft Windows Embedded、Symbian 和 Ubuntu 以及 700 多個 ARM Connected Community™ 成員,這些成員提供應(yīng)用軟件、硬件和軟件開發(fā)工具、中間件以及 SoC 設(shè)計服務(wù)。
Cortex-A15 MPCore 處理器具有無序超標量管道,帶有緊密耦合的低延遲 2 級高速緩存,該高速緩存的大小最高可達 4MB。
浮點和 NEON™ 媒體性能方面的其他改進使設(shè)備能夠為消費者提供下一代用戶體驗,并為 Web 基礎(chǔ)結(jié)構(gòu)應(yīng)用提供高性能計算。
預計 Cortex-A15 MPCore 處理器的移動配置所能提供的性能是當前的高級智能手機性能的五倍還多。在高級基礎(chǔ)結(jié)構(gòu)應(yīng)用中,Cortex-A15 的運行速度最高可達 2.5GHz,這將支持在不斷降低功耗、散熱和成本預算方面實現(xiàn)高度可伸縮的解決方案。
Cortex-A57
cortex-a57是ARM針對2013年、2014年和2015年設(shè)計起點的CPU產(chǎn)品系列的旗艦級CPU,它采用armv8-a架構(gòu),提供64位功能,而且通過Aarch32執(zhí)行狀態(tài),保持與ARMv7架構(gòu)的完全后向兼容性。在高于4GB的內(nèi)存廣泛使用之前,64位并不是移動系統(tǒng)真正必需的,即便到那時也可以使用擴展物理尋址技術(shù)來解決,但盡早推出64位,可以實現(xiàn)更長、更順暢的軟件遷移,讓高性能應(yīng)用程序能夠充分利用更大虛擬地址范圍來運行內(nèi)容創(chuàng)建應(yīng)用程序,例如視頻編輯、照片編輯和增強現(xiàn)實。新架構(gòu)可以運行64位操作系統(tǒng),并在操作系統(tǒng)上無縫混合運行32位和64位應(yīng)用程序。ARMv8架構(gòu)可以實現(xiàn)狀態(tài)之間的輕松轉(zhuǎn)換。
除了ARMv8的架構(gòu)優(yōu)勢之外,Cortex-A57還提高了單個時鐘周期性能,比高性能的Cortex-A15CPU高出了20%至40%。它還改進了二級高速緩存的的設(shè)計以及內(nèi)存系統(tǒng)的其他組件,極大的提高了能效。Cortex-A57將為移動系統(tǒng)提供前所未有的高能效性能水平,而借助big.LITTLE,SoC能以很低的平均功耗做到這一點。
Cortex-A72是ARM性能最出色、最先進的處理器。于2015年年初正式發(fā)布的Cortex-A72是基于ARMv8-A架構(gòu)、并構(gòu)建于Cortex-A57處理器在移動和企業(yè)設(shè)備領(lǐng)域成功的基礎(chǔ)之上。在相同的移動設(shè)備電池壽命限制下,Cortex-A72能相較基于Cortex-A15的設(shè)備提供3.5倍的性能表現(xiàn),展現(xiàn)優(yōu)異的整體功耗效率。
Cortex-A72的強化性能和功耗水平重新定義了2016年高端設(shè)備為消費者帶來的豐富連接和情境感知(context-aware)的體驗,這些高端設(shè)備涵蓋高階的智能手機、中型平板電腦、大型平板電腦、翻蓋式筆記本、一直到外形規(guī)格可變化的移動設(shè)備。未來的企業(yè)基站和服務(wù)器芯片也能受惠于Cortex-A72的性能,并在其優(yōu)異的能效基礎(chǔ)上,在有限的功耗范圍內(nèi)增加內(nèi)核數(shù)量,提升工作負載量。
Cortex-A72可在芯片上單獨實現(xiàn),也可以搭配Cortex-A53處理器與ARMCoreLinkTMCCI高速緩存一致性互連(CacheCoherentInterconnect)構(gòu)成ARMbig.LITTLETM配置,進一步提升能效。
Cortex-A72是目前基于ARMv8-A架構(gòu)處理器中性能最高的處理器。它再次展現(xiàn)了ARM在處理器技術(shù)的領(lǐng)先地位,在提升新的性能標準之余,同時大幅降低功耗,可廣泛地擴展應(yīng)用于移動與企業(yè)設(shè)備。
智能手機是目前大眾主要的計算平臺,提供使用者隨時隨地創(chuàng)造、強化以及使用內(nèi)容的功能。擬真且復雜的圖像與視頻捕捉、主機級游戲般的性能、用來進行文檔與辦公應(yīng)用流暢處理的生產(chǎn)力套件等,這些需求促使Cortex-A72如此高端性能的處理器面市,執(zhí)行這些服務(wù)的設(shè)備被要求在更輕薄、更時尚的外形設(shè)計之下,必須全天候處理日益增長的CPU和GPU工作負載,這使得制造商不得不將精力用在尋找高能效的處理器內(nèi)核。在智能手機、平板電腦、甚至是大尺寸的移動設(shè)備,Cortex-A72能通過出色的能效與內(nèi)存系統(tǒng),提功絕佳的用戶體驗。將Cortex-A72與Cortex-A53處理器以ARMbig.LITTLE™(大小核)處理器進行配置,可以擴展整體的性能與效率表現(xiàn)。