当前位置: 首页 > news >正文

Cortex-M 的Thumb指令集?

Cortex-M 的Thumb指令集?

Cortex-M 处理器中的 Thumb 指令集详解

这是一个非常核心的概念,理解它对于理解 Cortex-M 系列的成功至关重要。

核心摘要

Thumb 是一种16位和32位混合长度的指令集架构(ISA),它旨在以极高的代码密度(即用最少的内存存储程序)提供出色的性能。所有基于 ARM Cortex-M 系列的微控制器都支持 Thumb 指令集(更准确地说,是它的增强版本 Thumb-2)。


1. 历史背景:为什么需要 Thumb?

在 Thumb 出现之前,ARM 处理器主要使用 ARM 指令集,该指令集中的每条指令都是 32 位 长。

  • 优点:功能强大,性能高,每条指令能完成很多工作。
  • 缺点:代码密度低。一个程序编译后占用的内存空间较大。

在早期的嵌入式系统中,内存(无论是 Flash 还是 RAM)都非常昂贵且容量有限。为了降低系统成本,ARM 公司需要一种方法,在保持不错性能的同时,大幅减少代码占用的空间。

于是,Thumb 指令集应运而生。


2. Thumb 指令集的特点

a. 高代码密度

最初的 Thumb 指令集(如用于 ARM7TDMI 的)主要是 16 位 的。通过将最常用的 ARM 指令压缩成 16 位格式,它可以将代码大小减少约 30%-35%。这意味着完成同样功能的程序,需要的 Flash 内存更少,系统成本更低。

b. 性能权衡

16 位的 Thumb 指令功能不如完整的 32 位 ARM 指令强大。通常,完成一个相同的操作,可能需要更多的 Thumb 指令。因此,虽然代码密度提高了,但绝对性能有所下降(与纯 ARM 代码相比)。

为了解决这个矛盾,早期的 ARM 处理器(如 ARM7TDMI)允许在 ARM 状态Thumb 状态 之间切换。操作系统内核和性能关键代码可以用 32 位 ARM 指令编写,而应用程序的大部分代码可以用 16 位 Thumb 指令编写,以实现最佳平衡。


3. Thumb-2:革命性的进化

Thumb-2 技术是 Thumb 指令集的巨大增强,也是 Cortex-M 系列处理器的基础

  • 诞生:首次引入在 ARM1156 核心,并在 Cortex-M 系列中成为唯一的指令集。
  • 核心创新:Thumb-2 不再是纯 16 位指令集,而是 16 位和 32 位指令的混合体(有时称为“可变长度指令集”)。
Thumb-2 的优势:
  1. 无模式切换:与早期的 ARM/Thumb 切换不同,Thumb-2 没有状态切换。处理器始终在一种模式下运行,编译器可以自由地混合使用 16 位和 32 位指令,无需任何开销。
  2. 兼得鱼与熊掌
    • 高代码密度:简单的操作使用高效的 16 位指令。
    • 高性能:复杂的操作(如硬件除法、中断处理、内存屏障)使用强大的 32 位指令。
  3. 功能完备:Thumb-2 几乎提供了传统 32 位 ARM 指令集的所有功能,使得 Cortex-M 处理器能够高效地处理复杂的嵌入式应用,而无需切换到其他模式。

正是因为 Thumb-2,Cortex-M 处理器才能在保持极低成本和小芯片面积的同时,提供足够强大的性能,从而彻底统治了微控制器市场。


4. Cortex-M 与 Thumb-2

  • Cortex-M0/M0+/M1:主要使用 16 位 的 Thumb-2 指令,只包含少数最必要的 32 位指令,以实现极低的功耗和成本。
  • Cortex-M3/M4/M7/M33/M55…:支持完整的 Thumb-2 指令集,包含大量 16 位和 32 位指令。
    • Cortex-M4/M55 等还增加了DSP单指令多数据(SIMD) 扩展,用于加速数字信号处理算法。
    • Cortex-M7 增加了双发射、浮点运算等高级特性,但指令集基础仍是 Thumb-2。

重要提示: 当你为 Cortex-M 处理器编写程序(如使用 C 语言)时,编译器(GCC, ARM Clang, IAR)会自动为你选择最合适的 16 位或 32 位 Thumb 指令。开发者通常不需要关心具体用的是哪条指令,除非在进行极致的优化或编写汇编代码。


总结对比

特性传统 ARM 指令集传统 Thumb (ARM7TDMI)Thumb-2 (Cortex-M)
指令长度32 位主要是 16 位16 位 和 32 位混合
代码密度非常高 (优于纯16位Thumb)
绝对性能较低 (接近传统ARM)
运行模式ARM 状态Thumb 状态单一状态,无切换
典型应用应用处理器低成本微控制器所有 Cortex-M 微控制器

结论:

对于 Cortex-M 处理器而言,Thumb(特指 Thumb-2 技术)就是其原生且唯一的指令集。它完美地平衡了嵌入式系统最看重的三个要素:成本(代码密度)、性能功耗,这是 Cortex-M 系列能够取得巨大成功的根本技术原因之一。

http://www.dtcms.com/a/352528.html

相关文章:

  • k8s pod 启动失败 Failed to create pod sandbox
  • Il2CppInspector 工具linux编译使用
  • 算法概述篇
  • Markdown渲染引擎——js技能提升
  • MyBatis-Flex是如何避免不同数据库语法差异的?
  • 【electron】一、安装,打包配置
  • 全面赋能政务领域——移动云以云化升级推动政务办公效能跃迁
  • 【硬件-笔试面试题-61】硬件/电子工程师,笔试面试题(知识点:RC电路中的充电时间常数)
  • vue3 + jsx 中使用native ui 组件插槽
  • babel使用及其底层原理介绍
  • Java 集合笔记
  • 第二章 进程与线程
  • 简明 | Yolo-v3结构理解摘要
  • Python-机器学习概述
  • ruoyi-vue(十二)——定时任务,缓存监控,服务监控以及系统接口
  • Python 轻量级的 ORM(对象关系映射)框架 - Peewee 入门教程
  • CentOS 7 升级 OpenSSH 10.0p2 完整教程(含 Telnet 备份)
  • 性能瓶颈定位更快更准:ARMS 持续剖析能力升级解析
  • 告别繁琐运维,拥抱自动化:EKS Auto Mode 实战指南
  • C代码学习笔记(二)
  • RK3506 开发板:嵌入式技术赋能多行业转型升级
  • 大数据时代UI前端的智能化升级路径:基于用户行为数据的预测性分析
  • PMP项目管理知识点-⑨项⽬资源管理
  • 大模型应用编排工具Dify之插件探索
  • 【LeetCode - 每日1题】求对角线最长矩形的面积
  • Claude 的优势深度解析:大模型竞争格局中的隐藏护城河
  • NX773HSA19美光固态闪存D8BJND8BJQ
  • inline内联函数
  • TensorFlow 深度学习:使用 feature_column 训练心脏病分类模型
  • 【软考论文】论可观测性架构技术的应用