初始ARM

news2025/4/2 20:21:09

ARM最基础的组成单元。

最小系统:能系统能够正常工作的最少器件构成的系统 。

一、CPU基础定义

1. 核心定位
  • 计算机三大核心部件
    • CPU(运算与控制)
    • 内部存储器(数据存储)
    • 输入/输出设备(数据交互)
2. 核心功能
功能类型说明典型操作示例
指令解释解析机器码指令MOV R0, #0x12
算术运算执行加减乘除运算ADD R1, R2, R3
逻辑控制实现分支跳转与循环BNE loop_label
数据存取管理寄存器与内存交互LDR R4, [R5]

二、指令集架构详解

1. 指令集分类对比
特性CISC(复杂指令集)RISC(精简指令集)
指令复杂度单指令多操作(如字符串处理)单指令单操作
指令长度变长(1-15字节)定长(4字节为主)
执行周期多周期指令占比高单周期指令为主
典型代表架构x86(Intel/AMD)ARM/RISC-V/PowerPC
应用场景桌面/服务器移动设备/嵌入式系统
2. 指令执行流程
graph LR
    A[取指] --> B[译码]
    B --> C[执行]
    C --> D[访存]
    D --> E[写回]

三、核心寄存器体系

1. 关键专用寄存器
寄存器功能说明操作示例
PC存储下条指令地址0x8000_1004 → 0x8000_1008
LR保存函数返回地址BL func → LR=0x8000_2000
SP堆栈顶地址指针PUSH {R0} → SP-=4
2. 寄存器位宽演进
位宽寻址空间典型处理器技术特点
8-bit64KBIntel 8080单任务简单控制
16-bit1MBIntel 80286段式内存管理
32-bit4GBARM Cortex-A8虚拟内存支持
64-bit16EB(艾字节)Apple M1高级SIMD指令集

四、异常处理机制

1. 异常分类
类型触发条件处理优先级
复位异常系统上电/硬件复位最高
硬件中断外设触发(如定时器)
软件异常非法指令/除零错误
系统调用SVC指令主动触发可配置

五、SoC定义解析

1. 狭义定义
  • 核心特征:将计算机系统的关键部件集成到单一芯片中
  • 典型集成模块
    • 中央处理器(CPU)
    • 图形处理器(GPU)
    • 数字信号处理器(DSP)
    • 存储器(SRAM/DRAM)
    • 外设控制器(USB/PCIe)
    • 专用硬件加速模块
2. 广义定义
传统系统SoC系统核心差异
多芯片分立设计单芯片集成设计集成度提升10-100倍
板级互连片上总线互连传输延迟降低90%
厘米级尺寸毫米级尺寸体积缩小至1/100

六、数据和指令类型

数据类型

ARM 架构采用 32 位架构,支持以下数据类型:

  1. Byte(字节)

    • 8 位(bits)

    • 1 字节(byte)

  2. Halfword(半字)

    • 16 位(bits)

    • 2 字节(2 bytes)

  3. Word(字)

    • 32 位(bits)

    • 4 字节(4 bytes)

  4. Doubleword(双字)

    • 64 位(bits)

    • 8 字节(8 bytes)

    • 仅在 Cortex-A 处理器中支持。

指令类型

ARM 架构支持两种主要的指令集:

  1. ARM 指令集

    • 32 位固定长度的指令。

    • 适用于高性能计算场景。

  2. Thumb 指令集

    • 16 位固定长度的指令。

    • 适用于低功耗和存储受限的场景。

Cortex-A 处理器

Cortex-A 处理器支持以下指令集:

  1. Thumb-2 指令集

    • 混合指令集,支持 16 位和 32 位指令。

    • 兼具 Thumb 指令集的存储效率和 ARM 指令集的性能。

  2. ThumbEE 指令集

    • 为嵌入式应用优化的指令集,支持 16 位和 32 位指令。

    • 提供额外的指令扩展,适用于动态语言和虚拟机。

Jazelle 核心

Jazelle 核心支持:

  • Java bytecode

    • 用于直接执行 Java 字节码,提高 Java 应用的性能。

七、ARM 基本工作模式

  1. User 模式

    • 描述:非特权模式,大部分应用程序在此模式下运行。

    • 特点:权限受限,无法直接访问硬件或执行特权指令。

  2. FIQ 模式(Fast Interrupt Request)

    • 描述:用于处理高优先级中断。

    • 触发条件:当高优先级中断(FIQ)发生时进入。

    • 特点:快速响应中断,适合实时性要求较高的场景。

  3. IRQ 模式(Interrupt Request)

    • 描述:用于处理普通优先级中断。

    • 触发条件:当普通中断(IRQ)发生时进入。

    • 特点:适合处理一般的中断请求。

  4. Supervisor 模式

    • 描述:特权模式,用于操作系统或管理程序。

    • 触发条件:复位或执行软中断指令(SWI)时进入。

    • 特点:提供对硬件的完全访问权限,适合操作系统内核。

  5. Abort 模式

    • 描述:用于处理存储器访问异常。

    • 触发条件:当存储器访问异常(如非法地址访问)发生时进入。

    • 特点:允许处理器捕获和处理存储器访问错误。

  6. Undef 模式(Undefined Instruction)

    • 描述:用于处理未定义指令。

    • 触发条件:当执行未定义指令时进入。

    • 特点:允许处理器捕获和处理非法指令。

  7. System 模式

    • 描述:特权模式,与 User 模式共享寄存器集。

    • 触发条件:通常由操作系统使用,用于特权级任务。

    • 特点:与 User 模式共享寄存器,但具有特权访问权限。

Cortex-A 特有模式
  1. Monitor 模式

    • 描述:特权模式,用于安全监控代码的执行。

    • 触发条件:由安全扩展(TrustZone)触发。

    • 特点:支持安全和非安全世界的切换,确保系统安全。

八、ARM 寄存器

RM 处理器共有 37 个寄存器,分为以下几类:

  1. 通用寄存器(r0-r12)

    • r0-r12:用于数据存储和计算。

    • r13 (sp):堆栈指针(Stack Pointer)。

    • r14 (lr):链接寄存器(Link Register),用于存储子程序返回地址。

    • r15 (pc):程序计数器(Program Counter),指向当前执行指令的地址。

  2. 状态寄存器

    • cpsr:当前程序状态寄存器(Current Program Status Register),包含标志位(如 N、Z、C、V)。

    • spsr:保存的程序状态寄存器(Saved Program Status Register),在异常处理时保存 cpsr 的值。

寄存器在不同模式下的分布

ARM 处理器根据不同的工作模式提供不同的寄存器集。以下是各模式下的寄存器分布:

  1. User 模式

    • 寄存器:r0-r12, r13 (sp), r14 (lr), r15 (pc), cpsr。

    • 特点:非特权模式,权限受限。

  2. FIQ 模式

    • 寄存器:r0-r7, r8-r12(专用寄存器),r13 (sp), r14 (lr), r15 (pc), cpsr, spsr。

    • 特点:快速中断模式,拥有额外的寄存器(r8-r12)以减少中断处理时的上下文切换。

  3. IRQ 模式

    • 寄存器:r0-r12, r13 (sp), r14 (lr), r15 (pc), cpsr, spsr。

    • 特点:普通中断模式,与 User 模式共享大部分寄存器。

  4. SVC 模式

    • 寄存器:r0-r12, r13 (sp), r14 (lr), r15 (pc), cpsr, spsr。

    • 特点:超级用户模式,用于操作系统内核。

  5. Undef 模式

    • 寄存器:r0-r12, r13 (sp), r14 (lr), r15 (pc), cpsr, spsr。

    • 特点:未定义指令模式,用于处理非法指令。

  6. Abort 模式

    • 寄存器:r0-r12, r13 (sp), r14 (lr), r15 (pc), cpsr, spsr。

    • 特点:存储器访问异常模式。

Thumb 状态
  • Thumb 状态低寄存器:r0-r7。

  • Thumb 状态高寄存器:r8-r15。

  • 特点:在 Thumb 状态下,处理器使用 16 位指令集,寄存器访问受限。

System 模式
  • 寄存器:与 User 模式共享相同的寄存器集。

  • 特点:特权模式,用于操作系统任务。

  九、程序状态寄存器

  • 条件位:用于表示 ALU 操作的结果。

  • 控制位:用于控制处理器的行为,如大小端模式、中断禁止、指令集状态等。

  • 模式位:用于指示处理器的工作模式,包括 User、FIQ、IRQ、SVC、Abort、Undef、System 和 Monitor 模式。

条件位(Condition Flags)
  • N(Negative):ALU 操作结果为负时置位。

  • Z(Zero):ALU 操作结果为零时置位。

  • C(Carry):ALU 操作中发生了进位或借位时置位。

  • V(Overflow):ALU 操作中发生了溢出时置位。

控制位
  • Q 位:仅在 ARM v5TE-J 架构中支持,用于指示饱和状态。

  • J 位:仅在 ARM v5TE-J 架构中支持,用于指示处理器处于 Jazelle 状态。

  • DNM 位(Do Not Modify):保留位,不修改。

  • GE[3:0] 位:大于或等于标志位,当执行 SIMD 指令时有效。

  • IT[7:2] 位:IF...THEN... 指令执行状态位,用于控制条件执行。

大小端控制位(E 位)
  • E 位:控制处理器的大小端模式。

    • E=0:小端模式(Little-endian)。

    • E=1:大端模式(Big-endian)。

中断禁止位
  • A 位:禁止不精确的数据异常。

    • A=1:禁止不精确的数据异常。

  • I 位:禁止 IRQ 中断。

    • I=1:禁止 IRQ 中断。

  • F 位:禁止 FIQ 中断。

    • F=1:禁止 FIQ 中断。

T 位(Thumb 状态位)
  • T 位:指示处理器的指令集状态。

    • T=0, J=0:处理器处于 ARM 状态。

    • T=1, J=0:处理器处于 Thumb 状态。

    • T=0, J=1:处理器处于 Jazelle 状态。

    • T=1, J=1:处理器处于 ThumbEE 状态。

模式位(M[4:0])
  • 模式位:指示处理器的工作模式。

    • 10000:User 模式。

    • 10001:FIQ 模式。

    • 10010:IRQ 模式。

    • 10011:SVC 模式。

    • 10111:Abort 模式。

    • 11011:Undef 模式。

    • 11111:System 模式。

    • 10110:Monitor 模式。

十、异常处理

  • 异常处理流程:保存当前状态、设置异常模式、保存返回地址、设置异常向量。

  • 异常向量表:用于快速定位异常处理程序的入口地址。

  • 异常返回:恢复状态和程序计数器以恢复正常执行。

十一、总结上文

1. ARM 可以工作的模式名字

ARM 处理器有以下工作模式:

  • User 模式:非特权模式。

  • FIQ 模式:快速中断请求模式。

  • IRQ 模式:普通中断请求模式。

  • Supervisor 模式:超级用户模式(特权模式)。

  • Abort 模式:存储器访问异常模式。

  • Undef 模式:未定义指令模式。

  • System 模式:特权模式,与 User 模式共享寄存器集。

  • Monitor 模式(Cortex-A 特有):安全监控模式。

2. ARM 核有多少个寄存器?

ARM 处理器共有 37 个寄存器,包括通用寄存器、状态寄存器和专用寄存器。

3. 什么寄存器用于存储 PC 和 LR 寄存器?

  • PC(程序计数器):由寄存器 r15 存储。

  • LR(链接寄存器):由寄存器 r14 存储。

4. R13 通常用来存储什么?

R13 通常用作 堆栈指针(sp),用于管理堆栈操作。

5. 哪种模式使用的寄存器最少?

User 模式System 模式 使用的寄存器最少,因为它们共享相同的寄存器集。

6. 在 Thumb 指令集中,哪些寄存器处于 Low group?

在 Thumb 指令集中,r0-r7 属于 Low group 寄存器。

7. CPSR 的哪一位反映了处理器的状态?

CPSR 的 T 位 反映处理器的指令集状态:

  • T=0:处理器处于 ARM 状态。

  • T=1:处理器处于 Thumb 状态。

8. 所有的 Thumb 指令采取什么对齐方式?

所有 Thumb 指令采用 2 字节对齐

9. ARM 有哪几个异常类型?

ARM 支持以下异常类型:

  • Reset:复位。

  • Undefined Instruction:未定义指令。

  • Software Interrupt:软中断(SWI)。

  • Prefetch Abort:预取异常。

  • Data Abort:数据访问异常。

  • IRQ:普通中断请求。

  • FIQ:快速中断请求。

10. 为什么 FIQ 的服务程序地址要位于 0x1C?

FIQ 的服务程序地址位于 0x1C 是因为:

  • 异常向量表的偏移量分配中,FIQ 对应的偏移量是 0x1C

  • 这种分配方式确保 FIQ 可以快速响应高优先级中断。

11. 在复位后,ARM 处理器处于何种模式、何种状态?

复位后,ARM 处理器会:

  • 进入 Supervisor 模式

  • 处于 ARM 状态

十二、ARM 处理器指令流水线

流水线概述

ARM7 系列处理器使用 3 级流水线 来提高指令流的执行速度。流水线允许多个操作同时处理,而非顺序执行。

流水线阶段
  1. Fetch(取指)

    • 从存储器中读取指令。

    • 在 ARM 状态下,PC 指向当前指令地址。

    • 在 Thumb 状态下,PC 指向当前指令地址减去偏移量。

  2. Decode(解码)

    • 解码指令,确定指令中使用的寄存器。

    • 在 ARM 状态下,PC 指向当前指令地址减去 4 字节。

    • 在 Thumb 状态下,PC 指向当前指令地址减去 2 字节。

  3. Execute(执行)

    • 执行指令,包括寄存器读取、移位操作、ALU 操作和寄存器写回。

    • 在 ARM 状态下,PC 指向当前指令地址减去 8 字节。

    • 在 Thumb 状态下,PC 指向当前指令地址减去 4 字节。

PC 的行为
  • PC 指向正被取指的指令,而非正在执行的指令。

  • 在 ARM 状态下,PC 值比正在执行的指令地址大 8 字节。

  • 在 Thumb 状态下,PC 值比正在执行的指令地址大 4 字节。

性能指标
  • 时钟周期:6 个时钟周期内执行了 6 条指令。

  • CPI(每条指令的时钟周期数):1。

总结
  • 流水线优点:通过并行处理多个指令,显著提高了处理器的执行效率。

  • 理想状态:在理想情况下,每条指令的 CPI 为 1,即每个时钟周期执行一条指令。

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

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

相关文章

DataPlatter:利用最少成本数据提升机器人操控的泛化能力

25年3月来自中科院计算所的论文“DataPlatter: Boosting Robotic Manipulation Generalization with Minimal Costly Data”。 视觉-语言-动作 (VLA) 模型在具身人工智能中的应用日益广泛,这加剧对多样化操作演示的需求。然而,数据收集的高成本往往导致…

诠视科技MR眼镜如何安装apk应用

诠视科技MR眼镜如何安装apk应用 1、使用adb工具安装1.1 adb工具下载1.2 解压adb文件1.3 使用adb安装apk1.4 常用adb命令 2、拷贝到文件夹安装 1、使用adb工具安装 1.1 adb工具下载 点击下面的链接开始下载adb工具,下载结束以后解压文件。 下载链接: https://down…

搭建前端环境和后端环境

搭建前端环境 ①、安装vscode,并安装相应的插件工具 ②、安装node.js,可以选择当前版本,或者其他版本 ③、创建工作区 创建一个空文件夹,然后通过vscode工具打开,保存为后缀名为.code-workspace ④、从gitee…

Polhemus FastScan 单摄像头3D激光扫描器

FastSCAN Cobra是Polhemus公司研制的手持激光扫描仪。与以前的产品比较,它节省了30%的费用,体积也减小了一半 ,但仍然保留了所有功能,使用和携带都更加方便。作为超小的手持激光扫描仪,FastSCAN Cobra对扫描三维物体具…

召唤数学精灵

1.召唤数学精灵 - 蓝桥云课 问题描述 数学家们发现了两种用于召唤强大的数学精灵的仪式,这两种仪式分别被称为累加法仪式 A(n) 和累乘法仪式 B(n)。 累加法仪式 A(n) 是将从1到 n 的所有数字进行累加求和,即: A(n)12⋯n 累乘法仪式 B(n) …

2025图像处理和深度学习国际学术会议(IPDL 2025)

重要信息 官网:www.IPDL.xyz 时间:2025年4月11-13日 地点:中国-成都 简介 随着深度学习和图像处理技术的迅速发展,相关技术的应用逐渐渗透到各个行业,如医疗影像分析、自动驾驶、安防监控和智能制造等。这些应用的…

使用uni-app框架 写电商商城前端h5静态网站模板项目-手机端-前端项目练习

以前用vue2 分享过一个电商商城前端静态网站项目-电脑端,需要的小伙伴还是很多的,最近又花了几天更新了一个 手机端的 电商商城h5项目,今天也分享一下实现方案。 对于以前写的 电商商城前端静态网站模板-电脑端,有兴趣的小伙伴 可…

远心镜头原理

文章目录 原理特点分类应用领域 参考:B站优致谱视觉 原理 远心镜头的工作原理基于其特殊的光学设计,旨在解决普通镜头存在的视差问题。它通过将镜头的光轴与成像面垂直,并使主光线平行于光轴,从而确保在一定的物距范围内&#xf…

centos7修复漏洞CVE-2023-38408

漏洞描述: CVE-2023-38408 是 OpenSSH 组件中的一个远程代码执行(RCE)漏洞,影响 OpenSSH 代理(ssh-agent)的安全性。该漏洞被发现于 2023 年 7 月,并被标记为 高危(CVSS 评分 7.3&a…

uniapp微信小程序封装navbar组件

一、 最终效果 二、实现了功能 1、nav左侧返回icon支持自定义点击返回事件(默认返回上一步) 2、nav左侧支持既显示返回又显示返回首页icon 3、nav左侧只显示返回icon 4、nav左侧只显示返回首页icon 5、nav左侧自定义left插槽 6、nav中间支持title命名 7…

系统思考与心智模式

我们的生命为什么越来越长?因为有了疫苗,有了药物。可这些是怎么来的?是因为我们发现了细菌的存在。但在很久以前,医生、助产士甚至都不洗手——不是他们不负责,而是根本不知道“细菌”这回事。那细菌是怎么被发现的&a…

数据库--数据库设计

目录: 1.数据库设计和数据模型 2.概念结构设计:E-R模型 3.逻辑结构设计:从E-R图到关系设计 4.数据库规范化设计理论 5.数据库规范化设计实现 1.数据库设计和数据模型 数据库设计会影响数据库自身和上层应用的性能。 一个好的数据库设计可以提…

[Mac]利用hexo-theme-fluid美化个人博客

接上文,使用Fluid美化个人博客 文章目录 一、安装hexo-theme-fluid安装依赖指定主题创建「关于页」效果展示 二、修改个性化配置1. 修改网站设置2.修改文章路径显示3.体验分类和标签4.左上角博客名称修改5.修改背景图片6.修改关于界面 欢迎大家参观 一、安装hexo-theme-fluid 参…

黑盒测试的场景法(能对项目业务进行设计测试点)

定义: 通过运用场景来对系统的功能点或业务流程的描述,设计用例遍历场景,验证软件系统功能的正确性从而提高测试效果的一种方法。 场景法一般包含基本流和备用流。 基本流:软件功能的正确流程,通常一个业务只存在一个基本流且基本流有一个…

通过Anaconda Prompt激活某个虚拟环境并安装第三方库

打开 Anaconda Prompt 在Windows中,可以通过开始菜单搜索 Anaconda Prompt 来打开。(红色箭头指向的地方。) 激活虚拟环境 输入以下命令来激活您的虚拟环境(假设虚拟环境名称为 myenv): conda activate…

全长约8.3公里!宁波象山港跨海大桥南中塔柱云端合龙

快科技3月31日消息,据报道,由中国交建二航局承建的宁波象山港跨海大桥顺利完成南中塔柱合龙施工,标志着这一重大交通工程取得阶段性突破。 这座连接宁波鄞州区与象山县的跨海通道全长8.3公里,其标志性的南主塔采用创新"钻石…

使用 2 端口探头测量 40 uOhm(2000 安培)PDN 的挑战 – 需要多少 CMRR?

部分 1 / 3 本文是 3 部分系列的第一部分: 第 2 部分 - 测量结果! 第 3 部分 - 使用另一台 VNA 的测量结果 介绍 我们大多数人都知道 2 端口测量中的接地回路。我们大多数人也都知道,我们需要引入接地回路隔离器来纠正错误。如果没有&…

蓝桥杯——统计子矩阵

解法&#xff1a;二维前缀和双指针 代码&#xff1a; #include <iostream> using namespace std; typedef long long ll; ll prefix[505][505], a[250010]; int main() {ll n, m, k, ans 0; cin >> n >> m >> k;for(int i 1; i < n; i)for(int …

吾爱破解安卓逆向学习笔记(4p)

学习目标&#xff0c;了解安卓四大组件&#xff0c;activity生命周期&#xff0c;同时了解去除部分广告和更新提示。 广告类型 1.启动页广告 2.更新广告 3.横幅广告 安卓四大组件 组件描述Activity(活动)在应用中的一个Activity可以用来表示一个界面&#xff0c;意思可以…

stm32第十天外部中断和NVIC讲解

一&#xff1a;外部中断基础知识 1.STM32外部中断框架 中断的概念&#xff1a;在主程序运行过程中&#xff0c;出现了特点的中断触发条件&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序&#xff0c;处理完成后又返回原来被暂停的位置继续运行 1&…