指令集的设计是处理器结构中最重要的一个部分,用ARM的术语称之为ISA(Instruction Set Architecture)。所有的ARM Cortex-M 处理器均基于Thumb-2技术,在一种工作状态中允许混合使用16位和32位指令。这一点与传统的ARM处理器如ARM7TDMI不同。为了更好地理解ARM处理器中不同指令集的差异,接下来我们简单回顾一下ARM指令集的发展历史。

早期的ARM处理器(在ARM7TDMI处理器之前)仅支持32位ARM指令集。在接下来的数年间,ARM架构从版本1发展到版本4,ARM指令集也随之不断发展。ARM指令集功能强大,大多数指令支持条件执行,同时提供了很好的性能。但是与8位和16位架构的处理器相比,32位的ARM指令集需要更多的存储器空间。随着手机等设备对32位处理器需求的不断增加,功耗和成本都变得十分关键。如何减少程序占用空间大小的问题亟待解决。

在1995年,ARM推出了ARM7TDMI处理器,开始支持一种新的工作状态,可以运行一种新的16位指令集。这种16位指令集称为Thumb指令集(Thumb即大拇指,一语双关,表明它比ARM指令集占用空间更小)。ARM7TDMI可以工作在ARM状态(默认情况下),也可以工作在Thumb状态。正常工作时,处理器可以在软件的控制下在ARM状态和Thumb状态间切换。程序的一部分利用ARM指令来编译,从而获得更高的性能,其余部分用Thumb指令编译,从而获得更高的代码密度,减少程序占用的空间。利用这种实现机制,应用程序就可以在缩紧代码大小的同时获得较高的性能。在有些情况下,Thumb代码可以比相同条件下的ARM代码减少30%的程序空间。

在ARM7TDMI处理器的设计中,利用一种映射功能可以将Thumb指令翻译成ARM指令,之后进行解码。这样只需要一个指令译码器即可。ARM和Thumb两种工作状态在新的ARM处理器中仍然支持,例如Cortex-A处理器系列及Cortex-R处理器系列。虽然Thumb指令集能够提供ARM指令集所能提供的大多数功能,但是它仍然存在一些限制。例如对可操作的寄存器,寻址模式都存在限制,用于数据或地址操作的立即数范围也有所减少。

2003年,ARM推出了Thumb-2技术,将16位指令集和32位指令集集成到一种工作状态。Thumb-2指令集是Thumb指令集的超集。许多指令是32位的,因此可以像ARM指令集一样实现相应操作,但是它与ARM指令集有不同的指令编码方式。第一个支持Thumb-2技术的处理器是ARM1156T-2处理器。

在2006年,ARM发布了Cortex-M3处理器。Cortex-M3处理器集成Thumb-2技术,仅支持Thumb工作态。与早期的ARM处理器不同,Cortex-M3处理器不支持ARM指令集。之后更多的Cortex-M处理器发布,为面向不同市场分别采用了Thumb指令集的不同指令范围。因为Cortex-M3处理器不支持ARM指令集,所以向后不能与传统的ARM处理器如ARM7TDMI兼容。换句话说,ARM7TDMI上运行的二进制镜像文件不能在Cortex-M3处理器上运行。Cortex-M3处理器(ARMv7-M)中的Thumb-2指令集是ARM7TDMI ( AR M v4T)处理器中的Thumb指令集的超集,许多ARM指令可以移植到等价的32位Thumb指令,从而使应用的移植更加方便。

ARM指令集仍在不断发展当中。2011年,ARM发布了ARMv8架构。它包含了一些新的指令集用于64位操作。当前ARMv8架构仅限于Cortex-A处理器,Cortex-M处理器暂不包含这种架构。

ARM指令集发展概述相关推荐

  1. 【汇编语言与计算机系统结构笔记01】x86/MIPS/ARM指令集概述与特性,一篇HPCA引发的思考(商业生态的决定性作用)

    资源Bilibili AV46914471 + AV57921488 汇编语言与计算机系统结构 清华大学 张悠慧 本次笔记内容: 01.汇编语言与计算机系统结构 02.汇编基础知识--指令集综述 文章 ...

  2. ARM指令集 VS Thumb指令集

    1 thumb指令集概述 为兼容数据总线宽度为16位的应用系统,ARM体系结构除了支持执行效率很高的32位ARM指令集以外,同时支持16位的Thumb指令集. Thumb指令集是ARM指令集的一个子集 ...

  3. 什么是Cortex、ARMv8、arm架构、ARM指令集、soc

    参考:到底什么是Cortex.ARMv8.arm架构.ARM指令集.soc?一文帮你梳理基础概念[科普] 发布时间: 一口Linux 网址:https://blog.csdn.net/daocaoka ...

  4. ARM指令集与Thumb指令集--区别关联--汇编指令 BX LR ; 跳转回LR地址处,既可以是ARM模式也可以是Thumb模式

    BX        LR    ; 跳转回LR地址处,既可以是ARM模式也可以是Thumb模式 A 一.现在先区分下ARM指令集与Thumb指令集        Thumb 指令可以看作是 ARM 指 ...

  5. 一文带你了解ARM的发展历程

    转自:一文带你了解ARM的发展历程 ARM公司既不生产芯片也不销售芯片,它只出售芯片技术授权.却做到了在手持设备市场上占有90%以上的份额.软银在2016年耗资300多亿美元拿下ARM,使得本来就大红 ...

  6. 基于ARM Cortex-M3微控制器(STM32系列)基础知识(三)——ARM指令集

    指令概述 ARM指令 STR与LDR概述(详细在本文的数据加载与存储指令中) 数据操作指令 数据操作指令是指对存放在寄存器中的数据进行操作的指令.主要包括数据传送指令.算术指令.逻辑指令.比较与测试指 ...

  7. Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)

    架构组成元素的指令集状态或者语法thumb指令集与arm指令集的区别例如thumb指令集是什么_thumb指令集与arm指令集的区别以及thumb-2的关系在下一文中介绍,本文暂时不讨论 有粉丝问我到 ...

  8. 【转】一文带你了解ARM的发展历程

    原文:http://www.elecfans.com/d/716428.html 一文带你了解ARM的发展历程 半导体行业联盟•来源:未知•作者:胡薇 • 2018-07-26 08:20 • 149 ...

  9. ARM知识扫盲-RISC架构-ARM寄存器-ARM指令集

    文章目录 简介: ARM寄存器 特殊寄存器 ARM指令集 简介: ARM本身使用的是RISC精简指令集架构,除此之外还有开源的RISC指令集架构RISC-V,复杂指令集CISC(Complex Ins ...

  10. arm生态发展与交叉编译链选择

    因为工作需要,最近在找一个能用于aarch64的交叉编译链.距离上次使用arm设备已经过去四五年了.arm发生了较大的变化,于是做了个完整的调研,并整理出来(资料来源于互联网,我只是按照时间线整理并补 ...

最新文章

  1. [SCOI2007]降雨量
  2. 超详细!百度富媒体检索比对系统的关键技术
  3. 深度学习框架TensorFlow(1.安装和简介)
  4. 谈搜索架构师的不同阶段
  5. HBase - Filter - 过滤器的介绍以及使用
  6. day10T1改错记
  7. 使用tkinter模块在Python中进行GUI编程
  8. 数据结构之图的存储结构一及其实现
  9. java createcustomcursor,CustomCursor插件:自定义你的鼠标光标
  10. SQL Server 2005 - 如何在预存程序中调用另外一个预存程序
  11. 昆仑通态复制的程序可以用吗_昆仑通态专题(九):MCGS组态软件的实时数据库...
  12. Collecting Coins
  13. 微博营销推广策略分析
  14. Implement AWS SQS and Lambda to decouple process flow
  15. 如何使用商品历史价格查询网站
  16. 【休闲益智】【HTML】看字说颜色
  17. 春节购机如何选?老司机会告诉你买华为Mate 20 Pro
  18. 英语宾语从句 引导词的选择
  19. css 两个元素重叠,css元素如何重叠?
  20. hcaptcha 我是人类验证码怎么跳过怎么验证自动识别

热门文章

  1. java文件传输接口
  2. element table 无数据时显示图片替换“暂无该数据“
  3. 家用千兆路由器哪款好?家用千兆无线路由器推荐TOP10!
  4. 基于51单片机和GPS的经纬度时间速度航向系统设计定位电子罗盘原理图程序设计
  5. Qt中文件读写进文本框出现乱码问题详解(gbk格式出现乱码为例)
  6. 超详细的IC封装形式大全
  7. C#正则表达式用法总结
  8. 在线购物系统后台登录界面html代码,电子商城(购物网站)html模板源码
  9. 双主动桥隔离双向DC-DC变换器(三) 控制策略
  10. 【源码】采用PI反馈控制的DC-DC降压变换器仿真