ARM架构基本理论(1)

news2024/9/22 23:26:54

ARM架构基本理论

一、ARM的简介

ARM(Advanced RISC Machine)是一种基于RISC(Reduced Instruction Set Computing)架构的计算机处理器架构,由ARM Holdings(ARM公司)开发和授权给其他公司生产和销售。

ARM架构最初是为低功耗、高效能的嵌入式系统设计的,如智能手机、平板电脑、数字电视、路由器、音频设备、控制器等。随着技术的发展,ARM处理器也逐渐应用于更多的领域,如服务器、超级计算机等。

ARM处理器具有低功耗、高效能、可扩展性、可靠性等优点,因此得到了广泛的应用。目前,ARM处理器已经成为移动设备和嵌入式系统中最常用的处理器架构之一,也是全球最流行的处理器架构之一。

处理器的指令架构分为:

  • CISC(Complex Instruction Set Computer):复杂指令集,CISC CPU 包含有丰富的单元电路,因而功能强、面积大、功耗大。具有大量的指令和寻址方式,各种指令的使用频率相差悬殊其中80%的程序只使用20%的指令,大多数程序只使用少量的指令就能够运行。因此人们对于指令系统进行了简化,将复杂的指令用简单的指令组合使用,于是就形成RISC指令集。
  • RISC(Reduced Instruction Set Computer):精简指令集,选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合来实现,只有Load/Store(取数/存数)指令访存,其余指令的操作都在寄存器之间进行。特别重视编译优化工作,以减少程序执行时间。从指令系统兼容性看,CISC大多能实现软件兼容,即高档机包含了低档机的全部指令,并可加以扩充。但RISC简化了指令系统,指令条数少,格式也不同于老机器,因此大多数RISC机不能与老机器兼容。
    例如:有N条指令,每条指令运行的时间为T,而CISC指令的运行时间为T1=N*T,而RISC指令可以将一条指令分解成3条指令(取指令、译码、执行)。,每条指令的时间是T/3,则T2=(N+2)/3*T

二、ARM技术

1、ARM的基本数据类型

ARM采用32位架构,ARM的基本数据类型有以下3种。
Byte:字节,8bit。
Halfword:半字,16bit(半字必须与2字节边界对齐)。
Word:,32bit(字必须与4字节边界对齐)。

在这里插入图片描述
字边界对齐是以0,4,8…为首地址,即首地址的低2位必须0 (0000、0100、1000、1100)。
半字边界对齐是以0,2,4…为首地址,即首地址的低1位必须0 (0000、0010、0100、0110)。

2、处理器的两种工作状态

ARM状态:32位,ARM状态执行字对齐的32位ARM指令。
Thumb状态,16位,执行半字对齐的16位指令。

用Bx Rm指令来进行两种状态的切换:
其中Bx是跳转指令,而Rm是寄存器(1个字,32位),如果Rn的位为1,则进入Thumb状态;如果Rn的位为0,这进入ARM状态。(原 因:ARM指令的后两位始终为0,没有用,而Thumb指令的后一位始终为0,没有用,因此采用位0来表示ARM指令与Thumb指令的切换标志位。)
  
ARM指令集和THUMB指令集的关系:
THUMB指令集是ARM指令集的子集,所有的Thumb指令都有相对应的ARM指令。Thumb的体系结构还不是很完整,所以不能要求处理器,只支持Thumb代码,却不支持ARM指令集。Thumb代码对通用功能支持较好,对于一些非通用功能,则可以借用ARM指令集。所以应用程序可以混合使用ARM指令和Thumb程序,以达到提升性能和代码密度的目的。同时可以降低功耗、节约成本。

3、ARM处理器的两种存储格式

ARM体系结构可以用两种方法存储数据字,称之为大端模式(Big-Endian)和小端模式 (Little-Endian)。
 (1)大端模式:在这种模式中,32位数据字的高字节存储在低地址中,而数据字的低字节则存放在高地址中。
 (2)小端模式:与大端模式存储数据完全不同,在小端模式下,32位数据字的高字节存放在高地址,而低字节存放在低地址。
 在这里插入图片描述
通常习惯使用小端模式。

4、ARM处理器的工作模式

在这里插入图片描述

5、31个通用寄存器

在这里插入图片描述
R13(SP):指向堆栈,保护中断程序。
R14(LR):链接寄存器,返回地址。
R15(PC):程序计数器,指向下一条执行指令的地址。
CPSR:状态寄存器。

发生中断的程序跳转:
在这里插入图片描述
在这里插入图片描述

6、状态寄存器

在这里插入图片描述
(1)条件码标志
N、Z、C、V,最高4位称为条件码标志。ARM的大多数指令可以条件执行的,即通过检测这些条件码标志来决定程序指令如何执行。

N:在结果是有符号的二进制补码情况下,如果结果为负数,则N=1;如果结果为非负数,则N=0。
Z:如果结果为0,则Z=1;如果结果为非零,则Z=0。
C:对于加法指令(包含比较指令CMN),如果产生进位,则C=1;否则C=0。 对于减法指令(包括比较指令CMP),如果产生借位,则C=0;否则C=1。对于有移位操作的非法指令,C为移位操作中最后移出位的值。对于其他指令,C通常不变。
V:对于加减法指令,在操作数和结果是有符号的整数时,如果发生溢出,则V=1;如果无溢出发生,则V=0;对于其他指令,V通常不发生变化。
(2)控制位
I:为1时,IRQ中断禁止,清零时中断允许。
F:为1时,FIQ中断禁止,清零时中断允许。

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

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

相关文章

【C++开发】基于QT+sqlite3的医疗管理系统

文章目录 前言数据库设计主要实现的功能病人列表页面病人信息页信息录入页面信息修改页面 & 信息查看页面 总结 前言 本次做的这个项目是医疗管理系统,是根据需求所定制的,因此只面向个人本地的使用。 本项目是本人在完全0基础的情况下边学边…

14-2-进程间通信-FIFO

一、命名管道FIFO 1.作用范围 对于命名管道FIFO,它可以在不相关的进程间也能相互通信。 2.命名管道可左右用于不相关进程的原因 因为命令管道,提前创建了一个类型为管道的设备文件,在进程里只要使用这个设备文件,就可以相互通信…

14-1-进程间通信-pipe

一.无名管道pipe 特点: (1)半双工(在同一时刻,数据传输的方向只能是接收或发送); 例如:对于主机和从机而言,在某一时刻,只能是主机发送(从机接收)&#xff0…

CentOS+nginx手动搭建WordPress

文章目录 前提条件php安装安装 EPEL 源及源管理工具:安装 REMI 源:安装 PHP7.3 及扩展:设置开机自动启动其他php命令 wordpress 安装下载WordPress将下载的WordPress移动至网站根目录修改WordPress配置文件配置nginx 创建完成后根据域名访问 …

分析linux中动态库so文件的常用方法

前言 在linux系统中,我们经常会遇到各种各样的动态库文件,常见的是.so后缀,那么我们应该如何分析这些文件的用途和作用呢?毕竟我们不能一知半解的“搞事情”。 正文 查看文件属性 首先,我们从整体上了解一下该文件的基…

maven-gpg-plugin gpg禁用交互式输入密码 免密码输入 设置默认密码 关闭pinentry-qt输入 passphrase

一、问题描述 在使用maven-gpg-plugin打包jar时,默认情况下,每次都会弹出对话框要你输入密码: 这就有点烦,有啥办法可以设置默认方法没?网上找了一圈,通过搜索关键词“passphrase”,找到了一些教程&#x…

无损以太网与网络拥塞管理(PFC、ECN)

无损以太网 无损以太网(Lossless Ethernet)是一种专门用于数据中心网络的网络技术,旨在提供低延迟、高吞吐量和可靠性的传输服务。它是在传统以太网的基础上进行了扩展,引入了新的拥塞管理机制,以避免数据包丢失和网络…

探索【Stable-Diffusion WEBUI】的插件:ControlNet 1.1

文章目录 (零)前言(二)ControlNet(v1.1)(2.1)模型(2.2)新版界面(2.3)预处理器 (三)偷懒 (零&#…

机器学习与深度学习——通过决策树算法分类鸢尾花数据集iris求出错误率画出决策树并进行可视化

什么是决策树? 决策树是一种常用的机器学习算法,它可以对数据集进行分类或回归分析。决策树的结构类似于一棵树,由节点和边组成。每个节点代表一个特征或属性,每个边代表一个判断或决策。从根节点开始,根据特征的不同…

list的使用介绍---C++

一、list简介 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。…

计算机网络第一章(谢希仁第8版学习)

作者:爱塔居 专栏:计算机网络 作者简介:大三学生,希望和大家一起加油 文章目录 目录 文章目录 一、网络、互连网、互联网(因特网)的概念 二、因特网的组成 三、交换方式 3.1 电路交换 3.2 分组交换 3.3 电路…

详解c++---list介绍

目录标题 list介绍list定义list遍历list数据插入push_backpush_frontinsert list删除pop_backpop_fronterase list排序list去重list合并list转移list其他函数emptysizefrontbackassignswapresizeclear list排序效率问题 list介绍 list是可以在常数范围内在任意位置进行插入和删…

【Java笔试强训 22】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥小易的升…

【Java笔试强训 21】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥 洗牌 &…

免费搭建Plex家庭影音中心 - 打造超级多媒体中心【公网远程访问】

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频,已经算是生活中稀松平常的场景了,特别是各…

java+jsp企业物流货运快递管理系统servlet

功能需求具体描述: (1)用户功能模块包括用户登录注册,用户信息的修改,用户发布货物信息,给客服人员留言,对运输公司进行评价。 (2)企业功能模块包括企业注册登录,企业信息的修改,受理用户发布的…

c#笔记-代码格式

格式 为了让编译器能看懂。我们编写的源码必须符合一定的规范。 区分大小写 c#是大小写敏感语言。A1和a1是不同的东西。 不区分空白字符 c#对空白字符(空格,制表符,换行)不敏感。只要不截断单词,可以任意地使用空…

Java 基础进阶篇(二)—— 面向对象的三大特征之二:继承

文章目录 一、继承概述二、内存运行原理 ★三、继承的特点四、继承后:成员变量和方法的访问特点五、继承后:方法重写六、继承后:子类构造器的特点七、继承后:子类构造器访问父类有参构造器八、this、super 总结 一、继承概述 Jav…

TiDB实战篇-TiDB集群常用的监控指标

TiDB Server相关指标 Duration(延迟) 总体延迟 SQL不同的类型延迟 不同实例延迟 QPS(每秒钟查询次数) 总览 CPS(一次请求多个sql,上面的QPS每一次就是一个记录) 事务相关 延迟 影响性能的大事务 CPU 内存(下图…

面试官:谈谈你对死锁的理解

1. 什么是死锁 比如上一次讲到 synchronized 的时候,一个线程,对同一个对象连续加锁两次,如果出现阻塞等待,代表这个锁是不可重入锁,这样的线程,也就称为死锁! 一旦程序进入死锁了就会导致线程僵…