ARM处理器概论与组织

news2024/11/18 0:19:13

目录

1.ARM产品系列

2.体系结构

3.ARM指令集

定义:

ARM的指令集:

4.编译原理

5.ARM存储模型

6.ARM的8种工作方式


ARM(Advanced RISC Machines)有三种含义 一个公司的名称、一类处理器的通称、一种技术,我们在这里主要介绍ARM作为处理器。

1.ARM产品系列

 早先经典处理器:包括ARM7、ARM9、ARM11家族

 Cortex-A系列:对开放式操作系统的高性能处理器,应用于智能手机、数字电视、智能本等高端运用

 Cortex-R系列:针对实时系统、满足实时性的控制需求应于汽车制动系统、动力系统等  

 Cortex-M系列:为单片机驱动的系统提供了低成本优化方案,应用于传统的微控制器市场、智能传感器、汽车周边等

2.体系结构

RISC处理器:

只保留常用的的简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,一般指令长度固定,且多为单周期指令,RISC处理器在功耗、体积、价格等方面有很大优势,所以在嵌入式移动终端领域应用极为广泛。

CISC处理器:

不仅包含了常用指令,还包含了很多不常用的特殊指令,硬件结构复杂,指令条数较多,一般指令长度和周期都不固定,CISC处理器在性能上有很大优势,多用于PC及服务器等领域。

 SOC:

SoC的定义多种多样,由于其内涵丰富、应用范围广,很难给出准确定义。一般说来, SoC称为系统级芯片,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。

3.ARM指令集

定义:

指令:

能够指示处理器执行某种运算的命令称为指令(如加、减、乘 ...), 指令在内存中以机器码(二进制)的方式存在,每一条指令都对应一条汇编,程序是指令的有序集合,简单来说就是把运算命名便于理解

指令集:

处理器能识别的指令的集合称为指令集,不同架构的处理器指令集不同,指令集是处理器对开发者提供的接口

ARM的指令集:

大多数ARM处理器都支持两种指令集:ARM指令集与Thumb指令集

 ARM指令集:

所有指令(机器码)都占用32bit存储空间,代码灵活度高、简化了解码复杂度,执行ARM指令集时PC值每次自增4  

Thumb指令集:

所有指令(机器码)都占用16bit存储空间,代码密度高、节省存储空间,执行Thumb指令集时PC值每次自增2。

4.编译原理

 机器码(二进制)是处理器能直接识别的语言,不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同的处理器机器码不同,所以机器码不可移植

 汇编语言是机器码的符号化,即汇编就是用一个符号来代替一条机器码,所以不同的处理器汇编也不一样,即汇编语言也不可移植  

C语言在编译时我们可以使用不同的编译器将C源码编译成不同架构处理器的汇编,所以C语言可以移植

5.ARM存储模型

ARM数据类型:

ARM采用32位架构,基本数据类型有以下三种:

  •     Byte        8bits  -> 1个字节
  •   Halfword        16bits  ->2个字节
  •   Word        32bits  ->4个字节

数据存储:

Word型数据在内存的起始地址必须是4的整数倍    

Halfword型数据在内存的起始地址必须是2的整数倍    

注:即数据本身是多少位在内存存储时就应该多少位对齐,如下图所示。如果把Word类型数据存放的首地址为0x03是错误的。

字节序:

大端对齐:低地址存放高位,高地址存放低位     设a = 0x12345678,则大端对齐示意图如下

 

 小端对齐:低地址存放低位,高地址存放高位     a = 0x12345678,小端对齐示意图如下

 

 ARM一般使用小端对齐

ARM指令存储:

处理器处于ARM状态时:

所有指令在内存的起始地址必须是4的整数倍,因为4的整数倍转换为2进制后,其后两位的数都为0,所以ARM状态的处理器会默认起始地址的后两位为0,例如你指令的地址是0x07,转换为2进制数为0111,而ARM状态会默认其二进制的后两位为0,所以内存寻找的地址的二进制就是0100也就是0x04的地址。所以PC值由其[31:2]决定,[1:0]位未定义  。

处理器处于Thumb状态时:

所有指令在内存的起始地址必须是2的整数倍,原理同ARM状态,所以PC值由其[31:1]决定,[0]位未定义

6.ARM的8种工作方式

 ARM有8个基本的工作模式:       

  1. User    非特权模式,一般在执行上层的应用程序时ARM处于该模式     
  2. FIQ     当一个高优先级中断产生后ARM将进入这种模式   
  3. IRQ    当一个低优先级中断产生后ARM将进入这种模式   
  4. SVC    当复位或执行软中断指令后ARM将进入这种模式  
  5.  Abort     当产生存取异常时ARM将进入这种模式  
  6.  Undef    当执行未定义的指令时ARM将进入这种模式   
  7.  System    使用和User模式相同寄存器集的特权模式   
  8.  Monitor    为了安全而扩展出的用于执行安全监控代码的模式

不同模式拥有不同权限  不同模式执行不同代码  不同模式完成不同的功能

工作模式分类:

按照权限:User为非特权模式(权限较低),其余模式均为特权模式(权限较高)  

按照状态: FIQ、IRQ、SVC、Abort、Undef属于异常模式,即当处理器遇到异常后 会进入对应的模式

7.ARM寄存器组织

寄存器:寄存器是处理器内部的存储器,没有地址  

作用:一般用于暂时存放参与运算的数据和运算结果  

分类:包括通用寄存器、专用寄存器、控制寄存器

ARM的寄存器图示:

     在Cortex版本中,ARM一共拥有40个寄存器,上图中左下角带小三角形的寄存器表示在该列的模式下的专用寄存器,其余的普通寄存器为全模式公用,一个模式下的专用寄存器在其余模式下是不可用的

常用的寄存器:

R15(PC,Program Counter):程序计数器,用于存储当前取址指令的地址

R14(LR,Link Register):链接寄存器,一般有以下两种用途:    

  • 执行跳转指令(BL/BLX)时,LR会自动保存跳转指令下一条指令的地址,程序需要返回时将LR的值复制到PC即可实现    
  • 产生异常时,对应异常模式下的LR会自动保存被异常打断的指令的下一条指令的地址,异常处理结束后将LR的值复制到PC可实现程序返回  

R13(SP,Stack Pointer):栈指针,用于存储当前模式下的栈顶地址

CPSR(Current Program Status Register):当前程序状态寄存器,CPSR寄存器分为四个域,[31:24]为条件域用F表示、[23:16]为状态域用S表示、[15:8]为预留域用X表示、[8:0]为控制域用C表示 ,图示如下:

 各主要位置的作用:

Bit[4:0] :不同的电平组合表示不同的模式,[10000]User    [10001]FIQ     [10010]IRQ     [10011]SVC     [10111]Abort   [11011]Undef   [11111]System  [10110]Monitor  

Bit[5]:[0]ARM状态     [1]Thumb状态  

Bit[6]:[0]开启FIQ     [1]禁止FIQ  

Bit[7]:[0]开启IRQ     [1]禁止IRQ

Bit[28](V):

  • 当运算器中进行加法运算且产生符号位进位时该位自动置1,否则为0    
  • 当运算器中进行减法运算且产生符号位借位时该位自动置0,否则为1  

Bit[29](C):     

  • 当运算器中进行加法运算且产生进位时该位自动置1,否则为0    
  • 当运算器中进行减法运算且产生借位时该位自动置0,否则为1  

Bit[30](Z):当运算器中产生了0的结果该位自动置1,否则为0  

Bit[31] (N):当运算器中产生了负数的结果该位自动置1,否则为0

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

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

相关文章

【中阳期货】人工智能AI与期货有什么 关系

人工智能(AI)和期货交易之间有许多相互影响的因素。AI可以帮助期货交易者在交易决策中更好地应对大量数据,加强交易系统预测能力,优化资产配置策略。以下是AI与期货交易的一些具体关系: 数据分析:AI有能力高…

python pickle反序列化分析

文章目录 前言Pickle的作用pickle反序列化pickletools和反序列化流程漏洞产生(__reduce__)R指令的绕过通过i和o指令触发 总结 前言 春秋杯中遇到了一道python题,使用的了numpy.loads()触发反序列化漏洞,百度学习了一下,发现numpy.load()会先…

【mysqlbinlog 恢复数据】

不小心把数据删掉了 首先要拿到binlog文件 命令行执行 /usr/local/mysql/bin/mysqlbinlog --base64-outputdecode-rows --start-datetime"2023-05-19 09:01:32" --stop-datetime"2023-05-19 09:01:35" -v /Users/zylong/Downloads/mysql-bin.003178 --re…

动态规划-状态机模型

大盗阿福 题目 链接:https://www.acwing.com/problem/content/1051/ 阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。 这条街上一共有 N N N 家店铺,每家店中都有一些现金。 阿福事先调查得知,只…

chatgpt赋能Python-python3_9怎么下载

Python 3.9: 从哪里下载以及如何安装 Python是一种高级编程语言,被广泛使用于数据科学、人工智能、Web开发等领域。Python的最新版本是Python 3.9,它带来了一些新的特性和改进。对于那些希望尝试Python 3.9的人来说,了解如何下载和安装是很重…

chatgpt赋能Python-python3下载文件

Python3下载文件:从入门到实践 在Python编程语言中,下载文件是一个常见的需求。无论你是想下载图片、视频、文本文件或者其他类型的文件,Python都提供了强大的工具来实现这一操作。在本文中,我们将深入探讨如何使用Python3来下载…

pwn入门(二)环境搭建

一.前言 在上一篇中介绍了一下pwn和一些前置知识,但是呢以我的感觉,我觉得ctf还是得多做题的,所以呢,我选择边做边学,我觉得这样可以快速熟悉pwn还可以有成就感。 这一篇就是搭建环境的分享,同时还有大佬告…

【问题记录】USB monitor抓包工具显示音频数据CRC error

一,简介 在进行UAC2.0调试的过程中,使用USB monitor抓包工具抓取音频流数据出现数据错乱现象,本文对该问题进行分析记录。 二,问题记录及分析过程 2.1 先看下正常的抓包数据是什么样子: 从上图可以看出,…

VMware ESXi 6.0 多网卡接入 多网段绑定 虚机接入不同网段

网卡要与对应网段的网络联通。不同的网卡接入不同网段的网络。要为vmware esxi 6 的多个虚机配置不同网段的ip地址,首先选择主机对应的网口分别插上处于在不同网段的网线。 配置管理网络 多个网口接入,只可以配置一个管理网络,就是只有一个网…

基于XGBOOST模型预测货物运输耗时 - Part 2 通过方差分析了解文本型变量与数值型目标变量的关系

在分析数据之前,我们需要剔除异常值的影响,也就是在某个分组情况下,标准差过大(标准差越大,证明情况越不稳定),如果标准差比较小,就算是最小值和最大值差的比较大,我也认…

chatgpt赋能Python-python3下载numpy包

Python3 下载numpy包教程 如果你是一名Python开发者,那你一定不会陌生于NumPy。NumPy是Python中的一个科学计算库,它主要用来处理数组和矩阵运算。本文将会教你如何在Python3中下载NumPy库。 步骤一:确认你已经安装了pip 如果你使用的是Py…

chatgpt赋能Python-python3__2__3

Python323 - 一个强大的编程工具 介绍 Python323 是一种高级编程语言,最初由 Guido van Rossum 在 1989 年创建。Python 3.2.3 是 Python 3 的其中一个发行版,它拥有很多新特性和改进。Python323 可以运行在多种操作系统上,包括 Windows、L…

redis哨兵监控leader和master选举原理

当一个主从配置中的master失效后,sentinel可以选举出一个新的master,用于自动接替原master的工作,主从配置中的其他redis服务器自动指向新的master同步数据。是如何具体做的呢,主要有以下4步。 一般建议sentinel 采取奇数台. 1.SDown 主观下…

Day43【动态规划】1049.最后一块石头的重量 II、494.目标和、474.一和零

1049.最后一块石头的重量 II 力扣题目链接/文章讲解 视频讲解 还是需要转化为 0-1 背包问题:物品装入背包,求装入的最大价值(每个物品至多装入一次) 要把01背包问题套到本题上来,需要确定 背包容量物品价值物品重…

分布式消息中间件RocketMQ的应用

RocketMQ 应用 所有代码同步至GitCode:https://gitcode.net/ruozhuliufeng/test-rocketmq.git 普通消息 消息发送分类 ​ Producer对于消息的发送方式也有多种选择,不同的方式会产生不同的系统效果。 同步发送消息 ​ 同步发送消息是指,P…

Win11或Win10重置电脑提示“找不到恢复环境”

想要重置电脑缺提示找不到恢复环境 查看是否开启功能 按住“winx”选A管理员运行终端,输入reagentc /info。 如果信息结果如下: Windows RE 状态: DisabledWindows RE 位置:引导配置数据(BCD)标识符: cedd8faa-707a-11ed-ad72-a8056da9f4d6…

头歌计算机组成原理实验—运算器设计(3)第3关:4位快速加法器设计

第3关:4位快速加法器设计 实验目的 帮助学生掌握快速加法器中先行进位的原理,能利用相关知识设计4位先行进位电路,并利用设计的4位先行进位电路构造4位快速加法器,能分析对应电路的时间延迟。 视频讲解 实验内容 利用前一步设…

Learning C++ No.23【红黑树封装set和map】

引言 北京时间:2023/5/17/22:19,不知道是以前学的不够扎实,还是很久没有学习相关知识,对有的知识可以说是遗忘了许多,以该篇博客有关知识为例,我发现我对迭代器和模板的有关知识的理解还不够透彻&#xff…

音视频源码调试前准备vs2019+qt5.15.2搭建可调试环境

安装vs2019qt,并且在windows环境上安装ffmpeg,尝试使用qtcdb进行调试,尝试使用vs2019加载qt的程序。 安装VS20195.12.2qt环境,并进行测试。 1:安装Visual Studio 2019, a.从官网下载,或者vs2019社区版本下载地址 ht…

SNAP软件处理Sentinel-2 L2A数据为hdr或者tif文件

1.打开Sen2Cor插件处理好的或者下载好的L2A文件 若不知道如何将下载的L1C数据处理为L2A级数据可查看该篇博文 Sentinel-2数据下载及处理_dropoutgirl的博客-CSDN博客 在Bands文件夹下少了B10波段栅格文件: 这主要是因为波段10是卷云波段,需要的大气顶部&#xff0…