国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

關于 CORTEX-M0+ 架構隨筆

發布時間:2013-9-4 15:02    發布者:絕對好文
關鍵詞: Cortex-M0
作者:Allen Zhan

修改歷史


08.30, 完成初稿.
09.01, 修改文中錯誤, 全部的 ARMv7 架構都實現了 Thumb-2 技術. 而作為 ARMv7M 子集 的 ARMv6M, 實現了絕大部分 Thumb, 以及少數幾個的 Thumb-2, 因此不能直接稱 ARMv6M 實現了 Thumb-2.  并且為了系統概括, 在最后的部分, 增加了來自 ARM info 的構架與產品線對應框圖.

ARM Architecture
誠如 ARM 幫助文檔所言, 確定所研 uController 的體系構架是第一重要的事情. "因為 ARM 指令集架構被第一個研發出來, 并且會在未來持續被研發".

那么今天(這里指2013年8月間), ARM 架構的版本號從 v1 排到 v8(這是確認無疑的, 因為此刻我們正在注視著, ARM Information Center 的 documentation 部分的 "ARM 體系結構"章節的下拉框).  *o*  

幸運的事情是, 我們不必再關注 ARM 誕生伊始的 v1, v2, v3. 在 arm A-RM document 中, 注明因過時而廢止的 ARM架構包括:
ARMv1, ARMv2, ARMv2a, ARMv3, ARMv3G, ARMv3M, ARMv4xM, ARMv4TxM, ARMv5, ARMv5xM, and ARMv5TxM
我們想知道的就是, v1 為啥是 26-bit 的架構, ARM 設計之初面臨著一個怎樣資源稀缺的生產工藝?
而 ARMv3 作為第一個引入 32-bit 架構設計的時代背景又是如何?
-- 但是 anyway, 這些個 story 都以遠去, 我猜她們的劇情都至少超過了 10 years.

對比作為有效的現存架構是:
ARMv4, ARMv4T, ARMv5T, (ARMv5TExP), ARMv5TE, ARMv5TEJ, and ARMv6

ARM7TDMI-S
而 ARM7, 作為 ARM 世界在基礎應用中的, 小心翼翼的第一步, 這樣進入了我們的視野.
我們最初接觸到的 ARM7, 比方以 NXP 的 LPC21XX series 為例, 注意到其ARM core是 ARM7TDMI-S, 其ARM 架構為 ARMv4T(參考源于 ARM7TDMI-S 之 A-RM).

這也是一顆 Von Neumann 架構的 32-bit 的 RISC. 話說 Von Neumann 架構似乎總是為簡單或者基礎的型號而準備?
因為, 我們往往不稀奇地在 M3 或者 M4(我們把這些比做更高級的應用), 里面發現定義的是哈佛結構. 這可能從另一方面說明了, 這里的 ARM v4T 或者我們后面提到的 Cortex M0/M0+ (v6M) 在 ARM 的設計理念中, 是面向低端市場的存在, 且生產工藝更簡單(或者生產成本更低廉).

Thumb
v4T 的這個變量 T, 在 A-RM document 中, 被當作 Thumb 指令集的標志.
關于 Thumb mode, 我想已經可能為我們熟知了, 正是因為其 16-bit 的寬度, 會顯著地降低我們 firmware 的 size, 而據說性能同 arm mode 比較沒有太大的損失. 但是應該注意的是, Thumb 指令集, 仍然是 ARM 指令集的一個子集, 只是其每條指令, 都被編碼為 16-bit.
另外, 雖然沒有看見類似的說法, 但我個人是有懷疑, 是否 Thumb 指令集被第一次引入, 就是在 ARMv4T 架構之上呢?

ARM7/ARM9/ARM11
ARM7 series 的 CPU core 包括: ARM7TDMI、ARM7TDMI-S、ARM7EJ-S 和 ARM720T.
ARM9/ARM9E series 的 CPU core 包括: ARM926EJ-S、ARM946E-S、ARM966E-S、ARM968E-S、ARM996HS、ARM920T 和 ARM922T
ARM11 series 的 CPU core 包括: ARM1136JF-S 和 ARM1126J-S、ARM1156T2-S、ARM1156T2F-S、ARM1176JZF、ARM1176JZ-S、ARM1176JZF-S 以及 ARM11 MPCore

盡管沒有明言, 我們敏感地感覺到, 上述過去年代中, 被我們熟知的 ARM7, ARM9, ARM11,
其體系架構可能均屬于前面提到的, ARM 架構中的有效部分, 它們是: ARMv4, ARMv4T, ARMv5T, (ARMv5TExP), ARMv5TE, ARMv5TEJ, and ARMv6 (如果我有錯請告訴我).
并且令人精神振作且注意力集中的是: ARM documentation 稱呼上述 ARMv4 ~ v6, 通稱為: ARMv5 架構.

似乎可以簡單認為, 超過 v4~v6, 比方說凡是 v7 就是進入 ARM 新時代, 就可以當作 ARM 新系列 cortex 之后的實現架構?
答案并非如此, 因為我們知道, 至少 ARMv6M 還屬于新出現的 cortex series.
我想這是不是說, 將對應的產品與架構進行比對才能定論, 比方說, 與上述 ARMv4 ~ v6(通稱v5架構) 進行比對, 觀察是新時代 cortex 產品, 還是過去的 ARM7/9/11.

ARM 新時代 - CORTEX
不管是從技術引領市場, 還是市場推動技術的哪個觀點來看, ARM 的架構進步都讓人屏住呼吸.
我很想代表多位工程師, 呼喊出我們的心聲, "喂喂, 老兄, 節奏請放慢點兒, 這才2,3年, v4T 我們還熟悉的不夠捏!```"
但沉默的工程師, 總是被動于勢不可擋的科技進步與市場需求...

觀察 ARM 版權所有聲明的年限, 我們注意到在 2008 年, cortex 已經進入設計進度或者說可能設計成熟階段/計劃市場推廣了.

Anyway, ARM7/9/11 的年代迅速成為記憶中的口號, 我們現在不得不在 ARM 的教育下, 言必稱 Cortex.
正如我們近年來熟知的, Cortex 分成 A, R, M 三個 series, 或者我們理解, 這可能勉強對應著, 高端 -> 中端 -> 低端的應用需求.

再來回到我們的思路核心: 以 ARM 處理器架構為核心區分 ARM 產品類型.
那么伴隨 cortex 產品系列的出現, 伴隨而來的, 新的架構 ARMv7 浮出水面.

P.S, ARM7/9/11 is dead?
似乎不能完全確認, 盡管今天我們稱呼 ARM7/9/11 為陳舊概念, 但是在 ARMv7-AR 架構中, 還特別給出章節, 講解 ARM11 中較新的 ARMv6 的版本.
我們大膽猜測, 這或許是尊重已經投放市場的產品線的繼續延續?
還是說, ARMv6 (通常 ARM11 實現的是v6 架構) 處于研發歷史階層的上下銜接階段? 因為 ARMv6 在通稱的 ARMv5 文檔中, 以及在 ARMv7-AR 文檔中, 都被提及.

ARMv7
Cortex A 與 cortex R 似乎被 ARM 統一對待, 它們兩者的指令集架構被放在了一個文檔中, ARMv7-AR RM. 我們可以合理想見其架構的相似性.
還有就是, 我們這里重視的基礎類型的 application 中常用的 Cortex M 系列實現的架構: ARMv7-M. 而 ARMv7-M 指令集架構一般由 Cortex-M3 實現.

ARMv7-M 僅支持 Thumb-2
任何閱讀過 ARMv7-M A-RM document 的同行諸君, 都會如我們般, 立即注意到 ARM 指令集章節消失, 只存在 Thumb 指令集章節.

顯然的, ARMv7-M 只支持 Thumb instruction set. 因為全部的 ARMv7 都支持 Thumb-2(包括大量32-bit 指令), 故 ARMv7-M 僅僅支持 Thumb-2 ISA, 而不支持 ARM ISA.

ARMv7類型特點
A, 具備內存管理模塊的虛擬地址 -- 我們毫不猶豫將它與影音應用化等號.
R, 有一個實時的 profile -- 我們似乎感覺到路由器轉發器之類的應用在招手. 而且我們似乎也對 R 的來由知道了些什么```
M, 至于M -- 我們想忠實翻譯出 M 的介紹, "僅僅支持 Thumb, 這里整個兒的 size 和實現操作的確認性, 比純粹的能力表現來得更重要"... 與閃閃發光 AR 比較, 這個推廣似乎有點讓人垂頭喪氣,``` 不過似乎也非常符合 cortex M 的市場策略```  ^&^

對于我們感興趣的 ARMv7-M 的特性之一是: 異常句柄僅僅用 c/c+ funcitons 就可以實現, 標準調用即可.
我們猜測這可能說明, 類似處理中斷之類的 job, 我們或者說 compiler 不需要匯編的代碼的參與.

什么是"高度確定性的操作"(Highly deteerministic operation)?
在 ARMv7M A-TM 中, ARM 試圖向我們解釋, Cotex M series(比如實現 v7M 的 cortex M3), 一個強調的優點就是高度確定性操作, 這可能包括下列優點:
(1) single or low cycle count execution
(2) minimal interrupt latency, with short pipeline
(3) cacheless operation

ARMv7E-M
如果在 ARMv7-M 架構中, 加入 ARM DSP 指令, 可以實現 ARMv7E-M. Cortex M4 實現該架構而為我們所知.

v5 與 v7M Registers
如果要在通稱 ARMv5 與 ARMv7M 的 Register 進行一番比較, 我們能夠發現一些顯著的不同:

ARM registers(通稱 v5) 共 37pcs, 包括: 16pcs 通用registers + 15 pcs(異常加速處理專用 registers) + 6pcs 狀態 registers(CPSR, 5-SPSR)
這 16pcs 通用 registers 中有 3pcs 是特殊的, 它們是: R13(SP), R14(LP), R15(PC)

ARMv7-M core registers (我們沒有提及 v7M 新的 SCS registers 與 CPUID registers, 它們屬于 memory mapped system registers)
在 application level 上, (16 + 1)pcs core register, 包括: 13pcs 通用registers + 3pcs specail registers(SP, LR, PC) 以及 application statue register APSR.
在 system level 上, 則增加了 xPCR, MASK, CONTROL registers

如果說 ARMv7-M 的不同特性, 它們或許暗示著:
(1) SP, LP, PC currently is specail register for v7M instead of using as general purpose registers sometimes under v5 Architecture.
(2) xPCR only manage APSR, IRSP and EPSR, which is different from v5 (it will save any PSR with every proess mode).
(3) Add MASK and CONTROL registers. About Control register, we found it should be specail for us to know the privilege mode, sp mode and fp extension.
盡管有這兩者我們總結出的上述不同, 但是也讓我們感覺到了 arm architecture 的繼承性.

另外, 我們隱約意識到, 因為 SCS 與 CPUID registers 的存在, 我們很可能對 ARMv7-M 的實現者(我指 M0 ~ M4) 將有一個更加清晰的了解與支配手段```

Cortex M0/M0+ 實現的架構
Cortex M0/M0+ 實現的架構是 ARMv6-M

ARMv6-M 架構
ARMv6-M 是 ARMv7-M 的一個子集(subset)

ARMv6-M 架構僅支持 Thumb 指令集
ARMv7-M 架構支持Thumb-2(該指令集在 v6T2中引入).

作為 ARMv7-M 的 subset,  v6M 支持全部的來自 ARMv7-M 的 16-bit Thumb instructions(不包括 CBZ, CBNZ, and IT).

此外還支持 32-bit 的 Thumb Instraction 中的 BL, DMB, DSB, ISB, MRS, MSR.
要提及的就是, 作為 v7-M的 subset, 也同樣的, 并不支持 ARM 指令集

因此, 在上述角度下, Cortex-M0+ 應該稱為 Thumb 支持更合適(實際上, 后面的 ARM info 的 Architecture 框圖也說明了此點).

ARMv6-M 只支持特權模式(除非加入拓展)
與 ARMv7-M 不同, v6-M 只支持特權模式.
但是如果增加 Unprivileged/Privileged Extension, v6-M 也可以在這樣低的門數上支持特權模式.

解惑1: 為何在開發 Cortex-M0+ uController 開發中無法選擇 arm mode?
- 根據上述分析, 我們已知 Cortex M0/M0+ 實現的是 ARMv6-M 指令集, 它是 ARMv7-M 的一個子集, 同樣的 v6M 不支持 ARM 指令集(事實上 M0+ 支持的是 Thumb).
因此, 我們在 build new project 時, 一旦使用了 IDE 選擇了 M0+ uController, 我們很可能發現, IDE 的 config page 不再提供 arm or thumb 的選擇項給我們, 往往表現為 Thumb 默認必選.

解惑2: 何為 M0+ uController 喜歡宣稱自己與 M0 兼容并且可向上升級為 M3/M4?
- 根據上述分析, M0+ 與 M0 擁有同樣的 ARMv6-M 指令集架構, 因此在此意義上, 是兼容的.
并且, M3 實現了 ARMv7M, M4 實現了 ARMv7E-M. 而 v6-M 為 v7-M 子集, v7E-M 為 V7 加上 DSP 指令. 均存在子集關系, 從上述角度理解, 這就是為何使用 M0+ 開發的系統, 可以向上移植到 M0, M3, M4.

解惑3: 為何強調 M0+ 的節能特性的最大貢獻為 pipeline?
- 嚴格來說, ARMv6M/AMRv7M/ARMv5 的 A-TM 中沒有對 pipeline stage 的定義(更重要的它們定義了指令集架構).
我們不清楚在哪里可以找到, M0/M0+ 約定 2-stage pipeline 的定義, 同行讀者們或可告訴我...

但是返回到 uController 的 datasheet, 我們確知,
以 NXP lpc21xx 為例的 ARM7TDMI-S(實現 ARMv4T 架構) 的 pipeline 為 3-stage pipeline.
以 FSL kinetis L KL25Z 為例的 Cortex-M0+(實現 ARMv6M 架構) 的 pipeline 為 2-stage pipeline.

"通過轉移到 2-stage pipeline, branch shadow 減少. 作為結果, 訪問 flash memory 的次數也降低. 而 flash momery power 常常是一顆 uController 中能耗的大部分, 訪問 flash 次數的降低, 將直接影響總體能耗".

回顧

在這份隨筆中, 我們在對 cortex-M0+ 了解過程中, 不由得對 ARM uController story 進行了一個簡單的追溯.

我們并且非常堅持地使用 ARM Architecture 作為核心判斷標準, 從 ARMv4 -> ARMv7-M(與其 subset ARMv6-M) 的架構發展過程進行解讀, 并作為 ARM uController 發展的階段性產品區分標準.

并且根據指令集架構的回溯過程, 我們又對現今流行的 Cortex-M0+ 的標準特性, 如僅僅支持 Thumb 指令集進行了對照理解, 并加深了對所謂 M0+ 為何向 M4 一路順利遷移的意義的理解.

ARM Architecture 產品類型框圖(From ARM Info)

在泛泛隨筆, 談及了 architecture 后, 加上 ARM info 整理的框圖, 這篇隨筆就幾乎完美了, 不是嗎?



感想

ARM 架構的延續性, 以及目前市場上對 ARM 的服從性, 似乎第一次使我們工程師直起腰桿... 那在開始的每一份新的 MCU system 設計任務時, 也許我們似乎不用再表現的像個新人?...

*O*
這種感覺, 我們喜歡.

Allen Zhan
2013.08.30 于深圳
本文地址:http://m.qingdxww.cn/thread-120317-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本一区二区三区精品视频 | 玖玖色资源 | 欧美又大粗又爽又黄大片视频黑人 | 高清一区二区三区四区五区 | 四虎影院色 | 免费观看黄视频 | 成人夜色香网站在线观看 | 国产精品亚洲午夜一区二区三区 | 成人午夜精品久久不卡 | 福利视频网站 | 麻豆91在线视频 | 久9久9精品视频在线观看 | 网站大全黄免费 | 国产精久久一区二区三区 | 99日韩 | 国产成人啪一区二区 | 欧美成人 一区二区三区 | 成人看片黄a在线看 | ww欧洲ww在线视频免费观看 | 99国产精品热久久久久久夜夜嗨 | 国产精品亚洲第五区在线 | 国产美女白嫩嫩在线观看 | 国产一级视频免费 | 91手机看片国产永久免费 | 国产二区精品视频 | 欧美在线视频在线观看 | 韩国精品福利一区二区 | 国产三级在线观看免费 | 一级毛片免费不卡在线 | 日本欧美中文字幕人在线 | 欧洲一区二区 | 日本伊人精品一区二区三区 | 国产精品日本不卡一区二区 | 亚洲精品免费观看 | 亚洲乱码在线视频 | 精品国产v | 国产99视频精品免费视频7 | 香蕉视频网站在线播放 | 黄色网站在线观看视频 | 侠盗高飞免费完整版国语在线播放 | 午夜国产大片免费观看 |