初始ARM

ARM最基础的组成单元。

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

一、CPU基础定义

  1. ALU(运算单元)

    • 负责执行算术和逻辑运算,是处理器的核心部分。

  2. 寄存器(R0, R1, R12)

    • 用于临时存储数据和指令,是处理器内部最快的存储单元。

    • R0 和 R1 是通用寄存器,用于存储操作数。

    • R12 通常用于存储临时数据。

  3. CPSR(当前程序状态寄存器)

    • 存储当前处理器的状态信息,例如标志位(如进位、零标志等)。

  4. SPSR(保存的程序状态寄存器)

    • 用于保存中断或异常发生前的处理器状态。

  5. PC(程序计数器)

    • 指向当前正在执行的指令的地址。

  6. LR(链接寄存器)

    • 用于存储函数调用返回地址。

  7. SP(堆栈指针)

    • 指向当前堆栈的顶部。

  8. MMU(内存管理单元)

    • 负责内存地址的转换和内存保护。

  9. D-Cache(数据缓存)

    • 用于缓存数据,提高数据访问速度。

  10. I-Cache(指令缓存)

    • 用于缓存指令,提高指令访问速度。

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 LRA[取指] --> 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.mzph.cn/diannao/76664.shtml

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

相关文章

通信数据记录仪-产品概念ID

总结: 1、支持高速CAN、支持容错CAN、支持单线CAN(理解是支持不同的协议,CANFD、CAN2.0和LIN?) 2、 通过上位机设计时间

Qt QTableView QAbstractTableModel实现复选框+代理实现单元格编辑

话不多说&#xff0c;直接看代码 一、Model 1、QTableModel_Test.h #pragma once#include <QAbstractTableModel> #include <QObject> #include <QModelIndex>class QTableModel_Test : public QAbstractTableModel {Q_OBJECT public:QTableModel_Test(Q…

JavaWeb学习--MyBatis-Plus整合SpringBoot的ServiceImpl方法(增加,修改与删除部分)

接下来是常用的增加&#xff0c;修改以及删除部分 首先是增加部分&#xff0c;增加一个新的数据 Testpublic void testInsert() {// 添加一个新用户记录Student s new Student();s.setName("NewStudent");s.setAge(25);boolean saved studentService.save(s);//可以…

明清两朝全方位对比

目录 一、政治制度二、民族与社会三、经济与对外四、文化与思想五、军事与边疆六、灭亡原因总结 明清两朝是中国历史上最后两个封建王朝&#xff0c;在政治、经济、文化等方面存在显著差异&#xff0c;以下为主要区别&#xff1a; 一、政治制度 皇权集中程度 明朝&#xff1a;…

Linux系统时间

1. Linux系统时间 jiffies是linux内核中的一个全局变量&#xff0c;用来记录以内核的节拍时间为单位时间长度的一个数值。 jiffies变量开机时有一个基准值&#xff0c;然后内核每过一个节拍时间jiffies就会加1。 一个时间节拍的时间取决于操作系统的配置&#xff0c;Linux系统一…

高并发系统架构设计的深度解析与实施指南【大模型总结】

以下是对高并发系统架构设计的深度解析与实施指南&#xff0c;通过技术分层拆解和场景化案例说明&#xff0c;呈现完整的系统设计方法论&#xff1a; 一、容错优先思维的系统级实现 1. 混沌工程落地框架 # 混沌实验设计模板 class ChaosExperiment:def __init__(self, scope,…

leetcode-代码随想录-链表-翻转链表

题目 链接&#xff1a;206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]class Solution { public:ListNode* rev…

spring boot 集成redis 中RedisTemplate 、SessionCallback和RedisCallback使用对比详解,最后表格总结

对比详解 1. RedisTemplate 功能&#xff1a;Spring Data Redis的核心模板类&#xff0c;提供对Redis的通用操作&#xff08;如字符串、哈希、列表、集合等&#xff09;。使用场景&#xff1a;常规的Redis增删改查操作。特点&#xff1a; 支持序列化配置&#xff08;如String…

Linux红帽:RHCSA认证知识讲解(九)标准输入输出、重定向、过滤器与管道

Linux红帽&#xff1a;RHCSA认证知识讲解&#xff08;九&#xff09;标准输入输出、重定向、过滤器与管道 前言一、标准输入与输出、重定向&#xff0c;使用过滤器筛选文件信息1.1 Linux 的标准输入与输出1.2 什么是输入重定向1.3 输出重定向1.4 标准错误输出重定向1.5 使用过滤…

搭建完全分布式系统时,为何必须同步服务器时间?

在构建完全分布式系统时&#xff0c;时间同步是保障系统一致性和可靠性的基石。本文将从完全分布式系统的核心特点、时间同步的必要性、不同步可能引发的灾难性后果、主流时间同步协议对比及最佳实践方案五个角度展开分析&#xff0c;帮助开发者深入理解时间同步的关键作用。 一…

MonkeyDev 如何创建一个root级级别的app,并执行root命令获取iphone设备序列号serialNumber(ios15.8)

前提条件:有越狱的手机,XCode中已经安装了Monkeydev 1. 和普通应用一个创建一个ios的工程 2. 在App的TARGETS>build setting> 中设置Apple Development 3. 设置User-Defined的配置 CODE_SIGNING_ALLOWED = NO MonkeyDevBuildPackageOnAnyBuild = NO MonkeyDevClearUi…

每日一题(小白)模拟娱乐篇13

今天题目比较简单&#xff0c;直接分析。小蓝想知道2024这个数字中有几个1&#xff0c;计算机组成学习好的同学肯定可以直接长除法或者瞪眼法得出答案&#xff1a; 202411111101000&#xff08;B&#xff09;也就是说2024中有一共有六个1 接下来用代码实现 &#xff0c;我们也…

【蓝桥杯】算法笔记2

这篇文章主要记录动态规划方面的学习。 动态规划的核心思想: 把大问题分解成小问题,记住小问题的解,避免重复计算。 动态规划(DP)的三大特点: ①最优子结构:大问题的最优解可以由小问题的最优解推导出来 ②重叠子问题:在求解过程中会反复遇到相同的小问题 ③无后效…

MINIQMT学习课程Day9

获取qmt账号的持仓情况后&#xff0c;我们进入下一步&#xff0c;如何获得当前账号的委托状况 还是之前的步骤&#xff0c;打开qmt&#xff0c;选择独立交易&#xff0c; 之后使用pycharm&#xff0c;编写py文件 导入包&#xff1a; from xtquant import xtdata from xtqua…

杂篇-行业分类一二-2(通、专用设备制造,汽车制造)

接上篇&#xff0c; 本篇列举制造业中另外几个细分行业&#xff1a;通用设备制造&#xff0c;专用设备制造&#xff0c;汽车制造业。 一、通用设备制造 分类 序号 类别名称 说明 1 锅炉及原动设备制造 1 锅炉及辅助设备制造 指各种蒸汽锅炉、汽化锅炉&#xff0c;以及…

DHCP协议和win server2022无脑配置DHCP

DHCP(动态主机配置协议)用于分配IP地址的过程。这个过程也被称为DORA,它是四个步骤首字母的缩写。让我们详细看看每个步骤: 客户机请求IP(Discover):当一个设备(客户机)连接到网络并需要获取网络配置(如IP地址、子网掩码、默认网关等)时,它会发送一个DHCP Discover…

Visio | 将(.vsdx)导出为更清楚/高质量的图片(.png) | 在Word里面的visio图

此时大家在用Visio画完图直接复制到word里面后&#xff0c;如果后期需要重新保存高清图片&#xff0c;但是此时图片在word&#xff0c;是不是很多人会选择直接crtlA截图复制&#xff0c;这样出来的图又不清晰又小&#xff0c;完全不符合你导的审美&#xff0c;接下来跟着我&…

LLM面试题六

NLP方向CRF算法面试题 什么是CRF?CRF的主要思想是什么&#xff1f; 设X与Y是随机变量&#xff0c;P(Y | X)是给定条件X的条件下Y的条件概率分布&#xff0c;若随机变量Y构成一个由无向图G(V,E)表示的马尔科夫随机场。则称条件概率分布P(X | Y)为条件随机场。CRF的主要思想统计…

每日一题(小白)ASCLL娱乐篇5

本题我们使用ASCLL值的方法解决&#xff0c;也可以打表去判断。加深对ASCLL表的认识&#xff01; 图源ASCII 表 | 菜鸟教程&#xff0c;有需要的小伙伴可以在菜鸟详细了解。 由题知要识别三种类型的字符&#xff0c;使用三个变量存储最终值输出即可。根据ASCLL表可知数字、大写…

ffmpeg中格式转换需要注意点总结

某些封装格式(例如MP4/FLV/MKV等)的H.264码流的SPS和PPS信息存储在AVCodeccontext结构体的extradata中。分离某些封装格式(例如MP4/FLV/MKV等)中的H.264的时候&#xff0c;需要首先写入SPS和PPS&#xff0c;否则会导致分离出来的数据没有SPS、PPS而无法播。需要使用ffmpeg中名称…