嵌入式:ARM处理器的工作状态

news2025/1/16 3:30:44

文章目录

    • Thumb技术介绍
      • Thumb的技术概述
      • Thumb的技术实现
      • Thumb技术的特点
    • ARM处理器工作状态
      • Thumb2技术介绍
        • 评价

Thumb技术介绍

ARM的RISC体系结构的发展中已经提供了低功耗、小体积、高性能的方案。而为了解决代码长度的问题,ARM体系结构又增加了T变种,开发了一种新的指令体系,这就是Thumb指令集,它是ARM技术的一大特色。

Thumb的技术概述

Thumb是ARM体系结构的扩展。它从标准32位ARM指令集抽出来的36条指令格式,重新编成16位的操作码。这能带来很高的代码密度
ARM7TDMI是第一个支持Thumb的核,支持Thumb的核仅仅是ARM体系结构的一种发展的扩展,所以编译器既可以编译Thumb代码,又可以编译ARM代码,支持Thumb的ARM体系结构的处理器状态可以方便的切换、运行到Thumb状态,在该状态下指令集是16位Thumb指令集

Thumb的技术实现

在性能和代码大小之间取得平衡,在需要较低的存储代码时采用Thumb指令系统,但又比纯粹的16位系统有较高的实现性能,因为实际执行的是32位指令,用Thumb指令编写最小代码量的程序,却取得以ARM代码执行的最好性能

Thumb技术的特点

与ARM指令集相比.Thumb指令集具有以下局限
完成相同的操作,Thumb指令通常需要更多的指令,因此在对系统运行时间要求苛刻的应用场合ARM指令集更为适合;Thumb指令集没有包含进行异常处理时需要的一些指令,因此在异常中断时,还是需要使用ARM指令,这种限制决定了Thumb指令需要和ARM指令配合使用。

ARM处理器工作状态

ARM处理器核可以工作在以下2种状态

  • ARM状态
    32位,ARM状态下执行字对准的32位ARM指令;
  • Thumb状态
    16位,Thumb状态下执行半字对准的16位Thumb指令。在Thumb状态下,程序计数器PC使用位1选择另一个半字。

在程序执行的过程中,处理器可以在两种状态下切换 ARM处理器在开始执行代码时,只能处于ARM状态。ARM指令集和Thumb指令集都有相应的状态切换命令。

ARM处理器在两种工作状态之间切换方法

  • 进入Thumb状态

    当操作数寄存器Rm的状态位bit[0]为1时,执行BX Rm指令进入Thumb状态(指令详细介绍见第三章)。如果处理器在Thumb状态进入异常,则当异常处理(IRQ,FIQ,Undef,Abort和SWI)返回时,自动切换到Thumb状态。

  • 进入ARM状态

    当操作数寄存器Rm的状态位bit[0]为0时,执行BX Rm指令进入ARM状态。如果处理器进行异常处理(IRQ,FIQ,Undef,Abort和SWI),在此情况下,把PC放入异常模式链接寄存器LR中,从异常向量地址开始执行也可以进入ARM状态。ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容。

Thumb2技术介绍

Thumb-2内核技术是ARM体系结构的新指令集,将为多种嵌入式应用产品提供更高的性能、更有效的功耗和更简短的代码长度,从而为其合作伙伴们在注重成本的嵌入式应用系统开发中提供了强大的发展潜能。

Thumb-2内核技术以Thumb技术为基础,延续了超高的代码压缩性能并可与现有的ARM技术方案完全兼容,同时提高了压缩代码的性能和功耗利用率。它是一种新的混合型指令集,兼有16位及32位指令,能更好地平衡代码密度和性能。

Thumb-2指令集在现有的Thumb指令的基础上做了扩充。

image-20221209110030566

评价

Thumb-2指令集增加32位指令就解决了之前Thumb指令集不能访问协处理器、特权指令和特殊功能指令(例如SIMD)的局限。Thumb-2指令集现在可以实现所有的功能,就不需要在ARM/Thumb状态之间反复切换了,代码密度和性能得到的显著的提高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序实现圆形菜单弹出选中动画

vector-effect是SVG中十分冷门的属性,相信大多数小伙伴都没有了解过,说句实话,在这次重学SVG之前,这个属性我连听都没听说过。 不过,冷门不重要,重要的是管用,尤其是以后在面对相应场景下&…

RISC-V SIG 推出基于openEuler 的下游发行版 Eulaceura

近日,openEuler RISC-V SIG 推出了一款基于 openEuler 的发行版-Eulaceura。这是首个基于 openEuler 开发的 RISC-V 架构的发行版,给 RISC-V 的开发者开箱即用的 RISC-V 系统环境,方便开发者进行各种创新项目的开发与验证。Eulaceura 目前提供…

【数据结构】队列的实现

目录队列的概念队列的结构声明队列的初始化数据入队判断队列是否为空队列出数据获取队头获取队尾获取队列长度摧毁队列队列的概念 只允许从一端插入数据,另一端出数据。 队头:出数据的一端叫队头。 队尾:入数据的一端叫队尾。 通俗地说,就是把栈的数据结…

用技术记录世界杯2022

用技术记录世界杯【2022】 文章目录用技术记录世界杯【2022】前言1 项目介绍2 实验复现2.1 关于项目2.2 数据准备2.3 特征工程3 我的感受前言 Hi,我是Ding Jiaxiong,好久不见(bushi,早上才更新了博客), 今天是2022 年12月 8日 2…

未部署ssl证书,您的账号、密码或被窃取!

浏览网页查找信息时,您有没有注意到有些网站的网址是以https://开头的,有些网址是http://开头?有时还会显示一个突出的警告页面,表明网站是“不安全的”可能会窃取您的账号、密码,骗取财产等。 …

Mybatis-Plus的@Version注解:使用updateBatchById方法引发的问题

正常情况下,我们想要的是,当乐观锁不对的时候要一个反馈,例如:版本号不一致,请刷新页面重新获取数据。 在没有Version注解的时候,一般我们会进行显示校验。例如下图: updateById方法使用演示 …

数商云SRM供应商系统售后模块解析 | 助力汽修企业打造高效SRM服务管理体系

随着我国汽车保有量的持续增长,汽车维修行业不断地向社会化方向发展,汽修行业从产品型的行业转变为服务型行业,成为一个社会化的、人才专业型、技术密集型的和相对独立的行业,发展势头迅猛,据统计,我国的汽…

跨主机访问——docker

当你有若干个容器之后,你可能就希望实现容器的跨机部署访问了,比如aspnetcore在一台host上,mysql在另外一个host上,如果要实现这样的功能,需要你 借助docker自带的overlay网络模型了。 一: overlay网络模型 要想快速的搭建overlay网络,你可以通过docker默认的swarm集群…

代码随想录Day45|70.爬楼梯(进阶)、322.零钱兑换、279.完全平方数

文章目录70.爬楼梯(进阶)322.零钱兑换279.完全平方数70.爬楼梯(进阶) 文章讲解:代码随想录 (programmercarl.com) 题目链接:programmercarl 题目: 假设你正在爬楼梯。需要 n 阶你才能到达楼…

【C#基础学习】第十六章、枚举

目录 枚举 1.枚举的补充 1.1底层类型 1.2 设置显式值 1.3 枚举成员赋值顺序 2.位标志 2.1 Flags特性 枚举 枚举的定义: 枚举是由程序员自定义的值类型。它只有一种类型成员:命名的整数值常量。枚举成员都有一个底层类型的常量值。第一个枚举成员的…

【场景削减】拉丁超立方抽样方法场景削减(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Linux搭建RabbitMQ集群环境

文章目录环境说明Erlang安装下载安装包安装验证RabbitMQ安装下载安装包安装启动RabbitMQ设置开机自动启动安装管理界面创建用户登录管理界面集群配置前提条件构建erlang集群高可用镜像集群配置环境说明 操作系统:CentOS7Erlang版本:21.3RabbitMQ版本&am…

信而泰耦合测试-网络测试仪实操

一、耦合测试原理 1.产生背景​ 常用测试无线设备过程中,将无线设备置于屏蔽箱中,通过无线网卡连接并运行iperf等类似软件的方式检测所述无线设备的吞吐量。 相关技术中将所述无线设备置于所述屏蔽箱中的检测方法,由于所述屏蔽箱存在信号反…

【C语言】字符串函数(二)

目录 一、strncpy函数(字符串拷贝) 1、strncpy函数的用途 2、strncpy函数的使用 二、strncat函数(字符串追加) 1、strncat函数的用途 2、strncat函数的使用 三、strncmp函数(两个字符串比较) 1、strncmp函数的用途 2、strncmp函数的使用 四、strstr函数(查找字符串) 1、strstr函…

2022年底总结(被阿里捞的第1、2、3...次)

前言 自从去年因为个人原因没有去阿里淘系,后面有几次阿里同学问我有没有意向去阿里上班。其实我内心是很激动的,在人才库能被捞也是别人的认可,这个是值得骄傲的,然后需要继续保持自己专研技术的精神以及不断进步的意识。 当然博…

ChatGPT 大智近妖,从宇宙人生到手搓光刻机,从哄女友到写年终总结我们聊得非常开心,反而让人越来越忧心

文章目录宇宙人生问:你觉得人生的意义是什么?问:你觉得思维意识到底是什么问:我之前的两个问题大概有多少人问过你?问:宇宙的边界在哪里?手搓狠活怎么实现量子计算怎么制造一个光刻机怎么制作核…

多谐振荡器

三个非门首尾相接形成环,在理想情况下,无法形成振荡 门一定是存在传输延迟时间的,所以当高电平变成低电平的时候,必然会经过传输延迟时间 所以当反过来发生翻转的时候,经过了三倍的状态延迟时间 震荡的周期是六个传输…

基于SARIMA、XGBoost和CNN-LSTM的时间序列预测对比

利用统计测试和机器学习分析和预测太阳能发电的性能测试和对比 本文将讨论通过使用假设测试、特征工程、时间序列建模方法等从数据集中获得有形价值的技术。我还将解决不同时间序列模型的数据泄漏和数据准备等问题,并且对常见的三种时间序列预测进行对比测试。 介…

RNSScreenStackHeaderConfig“ was not found in the UIManager.解决办法!!亲测有效

Invariant Violation: requireNativeComponent: "RNSScreenStackHeaderConfig" was not found in the UIManager. 原因:RN项目中,开发服务器端已经使用npm i下载了某个模块,但是只有服务器端有,该模块并没有打包安装到手…

Cache与MMU的爱恨纠缠

首先声明本文不准备详细地介绍Cache和MMU的概念和用法,主要是为了厘清两者之间的相互关系和依赖。 1. MMU管理cache访问属性 在没有MMU的时候,cache本身的模型比较简单,如下所示,在使用的时候重点关注Cache数据的一致性问题。 …