关于 CORTEX-M0+ 架构随笔
时间:07-03
来源:互联网
点击:
作者: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 浮出水面.
修改历史
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 浮出水面.
ARM NXP Cortex DSP Cortex-M0 MCU 相关文章:
- 基于ARM的除法运算优化策略(01-14)
- 基于ARM的CAN总线智能节点的设计(01-24)
- ARM基础知识教程五 (02-08)
- ARM基础知识教程六(02-08)
- ARM基础知识教程七(02-08)
- ARM基础知识教程八(02-08)