ARM 架构、cpu

一、ARM的架构

ARM是一种基于精简指令集(RISC)的处理器架构.

1、ARM芯片特点

ARM芯片的主要特点有以下几点:

  精简指令集:ARM芯片使用精简指令集,即每条指令只完成一项简单的操作,从而提高指令的执行效率和处理器的性能。相比之下,复杂指令集(CISC)的指令可以完成多项复杂的操作,但是需要更多的硬件资源和执行时间。
  负载/存储架构:ARM芯片使用负载/存储架构,即只有专门的负载和存储指令可以访问内存,其他指令只能在寄存器之间进行操作。这样可以减少内存访问的次数和延迟,提高数据处理的速度。相比之下,寄存器/内存架构的处理器可以直接在内存和寄存器之间进行操作,但是会增加内存访问的开销。
  统一寄存器文件:ARM芯片使用统一寄存器文件,即所有的通用寄存器都可以用于任何目的,没有专门的数据寄存器或地址寄存器。这样可以提高寄存器的利用率和灵活性,减少数据移动的开销。相比之下,分段寄存器文件的处理器需要区分不同类型的寄存器,并进行相应的转换。
条件执行:ARM芯片支持条件执行,即每条指令都可以根据一个条件码来决定是否执行。这样可以减少分支指令的使用,提高代码密度和流水线效率。相比之下,非条件执行的处理器需要使用专门的分支指令来实现条件跳转。
   多种工作模式:ARM芯片支持多种工作模式,例如用户模式、系统模式、管理模式、中断模式、异常模式等。不同的工作模式有不同的权限和功能,可以实现不同级别的任务切换和异常处理。相比之下,单一工作模式的处理器需要使用软件来模拟多任务和异常处理。

2、按核心类型分类

ARM核心 是指实现了某个版本ARM架构的具体处理器设计,它由ARM公司设计并授权给其他厂商生产。不同类型的ARM核心有不同的性能、功耗、面积等。例如,Cortex-A系列是针对高性能应用的核心,Cortex-R系列是针对实时应用的核心,Cortex-M系列是针对微控制器应用的核心等。

一、Cortex-A系列
  • 特点:面向高性能应用,支持虚拟内存和复杂的操作系统,具有较高的处理能力和较大的缓存容量。
  • 适用领域:智能手机、平板电脑、服务器和嵌入式系统等需要高性能的领域。
  • 典型内核:Cortex-A76、Cortex-A75、Cortex-A73、Cortex-A72、Cortex-A9以及最新的Cortex-X2、Cortex-A710和Cortex-A510等。
二、Cortex-R系列
  • 特点:针对实时系统,具有较低的延迟和较高的可靠性,专门设计用于实时应用。
  • 适用领域:汽车电子、工业控制、医疗设备等需要实时控制和嵌入式系统的领域。
  • 典型内核:Cortex-R4、Cortex-R5、Cortex-R7以及最新的Cortex-R8等。
三、Cortex-M系列
  • 特点:面向低功耗嵌入式应用,具有较低的功耗和较小的尺寸,易于编程。
  • 适用领域:物联网设备、传感器、智能家居、可穿戴设备和嵌入式控制器等低功耗、实时和成本敏感的应用。
  • 典型内核:Cortex-M0、Cortex-M0+、Cortex-M3、Cortex-M4和Cortex-M7等。其中,Cortex-M4在Cortex-M3的基础上增加了DSP指令集,具有更强的计算能力和信号处理能力;而Cortex-M7则是Cortex-M4的升级版本,提供更高的性能和计算能力。

二、计算机的组成

闪存(Flash)则结合了RAM和ROM的优点,它既可以在断电后保留数据,又具有较快的读写速度。 

 

三、cpu的内部架构

MMU(Memory Manager Unit),是内存管理单元,负责将虚拟地址转换成物理地址。除此之外,MMU 实现了内存保护,进程无法直接访问物理内存,防止内存数据被随意篡改。 

PC指针的工作原理

1、取指(Fetch)

在取指阶段,处理器从 PC 指向的地址读取指令。 PC 指向当前要执行的指令的内存地址,并将这一指令从内存中读取到指令寄存器中。
由于 ARM 指令是固定大小的(大多数情况下为 4 字节),所以每次取指时 PC 的值会加上 4(在某些特殊情况下如 Thumb 模式可能会有所不同)。

2、解码(Decode)

在解码阶段,处理器解析刚刚取出的指令,确定需要执行的操作和参与的寄存器等信息。
解码阶段虽然不直接改变 PC 的值,但它为处理器后续的执行阶段提供了必要的信息。

3、执行(Execute)

在执行阶段,处理器根据解码结果进行相应的计算或操作,如寄存器间的加法、逻辑运算等。
执行完成后,若为跳转指令(例如条件跳转、无条件跳转等),则会修改 PC 的值以指向跳转后的地址。


PC 与 流水线的关系
在现代 ARM 处理器中,流水线技术得到了广泛应用,通常分为几个阶段,例如取指、解码、执行、访存和写回。流水线的设计允许多个指令并行处理,从而提高处理器的整体性能。

流水线结构:

在流水线结构中,多个指令可以在不同阶段同时进行。例如,第一条指令在取指阶段,第二条指令在解码阶段,第三条指令在执行阶段,依此类推。例如:
Cycle 1: 取指指令1
Cycle 2: 取指指令2,解码指令1
Cycle 3: 取指指令3,解码指令2,执行指令1

PC 的实时更新:

PC 通常会在取指阶段被更新。因为它在每次取指时会自动加上指令的宽度(如 4 字节),顺序执行。
但是在跳转指令出现时,PC 的更新会变得复杂,可能需要在解码或执行阶段更新,这会涉及到分支预测等技术,以减少因跳转带来的流水线冒险(Stall)。

流水线冒险
流水线中的“冒险”问题指的是指令在不同阶段之间的依赖关系,主要有:

结构冒险:由于硬件资源不足而导致的冲突。
数据冒险:指令之间依赖导致的数据读取/写入冲突。
控制冒险:因分支指令导致的流水线需要多清空和重新加载指令的问题。
为了减少控制冒险,现代处理器使用分支预测技术和延迟槽等技术来优化 PC 的调整和指令的顺序执行。

总结
PC 在 ARM 处理器中起到了指向当前执行指令地址的作用。
PC 的取指、解码、执行等过程是紧密联系在一起的,形成了处理器指令执行的基本循环。
流水线设计允许指令在多个阶段并行处理,提高了处理器的效率,但也引入了冒险问题,需要通过结构设计和控制策略来解决。

流水线:

 

 

ARM寄存器

  ARM 寄存器是 ARM 处理器内部用于存储数据、地址和处理器状态等信息的存储单元。ARM 寄存器主要分为通用寄存器和特殊寄存器两类:

 通用寄存器
  未分组寄存器 R0-R7:在所有的运行模式下,这 8 个寄存器都指向同一个物理寄存器,它们没有被系统用作特殊用途。但是在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成这些寄存器中数据的破坏。
  分组寄存器 R8-R12:对于这 5 个寄存器,每个寄存器对应 2 个不同的物理寄存器。当使用快速中断模式(FIQ)时,访问的是R8_fiq - R12_fiq;当使用除 FIQ 模式以外的其他模式时,访问的是R8_usr - R12_usr。这些寄存器可用于数据的暂存和运算,在不同的模式下可以根据需要切换使用不同的物理寄存器。
  程序计数器 PC(R15):用于存放当前指令的下一条指令的地址。由于 ARM 体系结构采用了多级流水线技术,对于 ARM 指令集而言,PC 总是指向当前指令的下两条指令的地址,即 PC 的值为当前指令的地址值加 8 个字节(在 Thumb 指令集中,PC 的值为当前指令的地址值加 4 个字节)3。

特殊寄存器
    栈指针 SP(R13):实际上 R13 在不同的处理器模式下有不同的物理寄存器,每个异常模式都有自己独立的 R13。在 ARM 指令中,R13 常用作堆栈指针,用于存储函数调用时的局部变量、参数、返回地址等信息。通过PUSH(入栈)和POP(出栈)操作可以实现对栈的访问23。
   链接寄存器 LR(R14):用于保存函数或子程序调用时的返回地址。当执行子程序调用指令(如BL)时,会自动将返回地址放入 LR 中,当子程序执行结束后,将 LR 中的值加载至 PC 中,就可以返回到调用处继续执行。在发生异常时,异常模式的 LR 也可以用来保存异常返回地址23。

程序状态寄存器3:
   当前程序状态寄存器 CPSR:可以在任何运行模式下被访问,它包含条件标志位(如 N、Z、C、V)、中断禁止位、当前处理器模式标志位以及其他一些相关的控制和状态位。这些标志位可以被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。
   备份的程序状态寄存器 SPSR:每种异常模式下都有一个专用的 SPSR,当异常发生时,SPSR 用于保存 CPSR 的当前值,以便从异常退出时可以由 SPSR 来恢复 CPSR。用户模式和系统模式不属于异常模式,它们没有 SPSR。

 

 四、处理器内部架构

 

 Cache:

        高速缓存

 五、工作模式

处理器(CPU)的7种工作模式主要包括:

  1. 用户模式(User Mode)

    • 非特权模式,是大多数用户程序正常执行的模式。
    • 在此模式下,程序无法直接访问硬件资源或改变处理器的工作模式,除非通过软中断或异常。
  2. 快速中断模式(FIQ Mode)

    • 也称为快速中断响应模式,用于处理高优先级的中断请求。
    • 这种模式支持高速数据传输和通道处理,适用于需要快速响应的中断场景。
  3. 普通中断模式(IRQ Mode)

    • 也称为一般中断模式,用于处理普通的中断请求。
    • 在硬件产生中断信号后,处理器会自动进入此模式,并允许程序访问系统硬件资源。
  4. 管理模式(SVC Mode)

    • 也称为操作系统保护模式,是操作系统内核代码运行的模式。
    • 当CPU上电复位或应用程序执行SVC指令调用系统服务时,会进入此模式。
  5. 中止模式(Abort Mode)

    • 当数据或指令预取终止时进入此模式。
    • 此模式用于处理存储器故障、实现虚拟存储或存储保护。
    • 当用户程序访问非法地址或没有权限读取的内存地址时,会触发此模式。
  6. 未定义指令异常模式(Undefined Instruction Mode)

    • 当处理器执行未定义的指令时进入此模式。
    • 此模式主要用于处理未定义的指令陷阱,并支持硬件协处理器的软件仿真。
  7. 系统模式(System Mode)

    • 特权模式之一,使用与管理模式相同的寄存器组。
    • 用于运行特权级的操作和系统任务。

在这7种工作模式中,除了用户模式以外,其他6种模式可以称为特权模式。在特权模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。其中,除了系统模式外的其他5种特权模式又称为异常模式。

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EasyCVR视频汇聚平台:解锁视频监控核心功能,打造高效安全监管体系

随着科技的飞速发展,视频监控技术已成为现代社会安全、企业管理、智慧城市构建等领域不可或缺的一部分。EasyCVR视频汇聚平台作为一款高性能的视频综合管理平台,凭借其强大的视频处理、汇聚与融合能力,在构建智慧安防/视频监控系统中展现出了…

Qt Quick 3D 入门:QML 3D场景详解

随着 Qt 6 的发布,QtQuick3D 模块带来了新的 3D 渲染和交互能力,使得在 Qt 中创建 3D 场景变得更加简单和直观。本文将带您从一个简单的 QML 3D 应用开始,详细讲解各个相关领域的概念、代码实现以及功能特点。 什么是 Qt Quick 3D&#xff1…

关于 JVM 个人 NOTE

目录 1、JVM 的体系结构 2、双亲委派机制 3、堆内存调优 4、关于GC垃圾回收机制 4.1 GC中的复制算法 4.2 GC中的标记清除算法 1、JVM 的体系结构 "堆"中存在垃圾而"栈"中不存在垃圾的原因: 堆(Heap) 用途:堆主要用于存储对象实例和数组。在Java中…

Linux --入门学习笔记

文章目录 Linux概述基础篇Linux 的安装教程 ⇒ 太简单了,百度一搜一大堆。此处略……Linux 的目录结构常用的连接 linux 的开源软件vi 和 vim 编辑器Linux 的关机、开机、重启用户登录和注销用户管理添加用户 ⇒ ( useradd 用户名 ) ( useradd -d 制定目…

【Unity踩坑】Unity更新Google Play结算库

一、问题描述: 在Google Play上提交了app bundle后,提示如下错误。 我使用的是Unity 2022.01.20f1,看来用的Play结算库版本是4.0 查了一下文档,Google Play结算库的维护周期是两年。现在需要更新到至少6.0。 二、更新过程 1. 下…

Python | Leetcode Python题解之第454题四数相加II

题目: 题解: class Solution:def fourSumCount(self, A: List[int], B: List[int], C: List[int], D: List[int]) -> int:countAB collections.Counter(u v for u in A for v in B)ans 0for u in C:for v in D:if -u - v in countAB:ans countAB…

C++ | Leetcode C++题解之第454题四数相加II

题目&#xff1a; 题解&#xff1a; class Solution { public:int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {unordered_map<int, int> countAB;for (int u: A) {for (int v: B) {count…

Python并发编程(1)——Python并发编程的几种实现方式

更多精彩内容&#xff0c;请关注同名公众&#xff1a;一点sir&#xff08;alittle-sir&#xff09; Python 并发编程是指在 Python 中编写能够同时执行多个任务的程序。并发编程在任何一门语言当中都是比较难的&#xff0c;因为会涉及各种各样的问题&#xff0c;在Python当中也…

C0010.Qt5.15.2下载及安装方法

1. 下载及安装 Qt 添加链接描述下载地址&#xff1a;http://download.qt.io/ 选择 archive 目录 安装Qt **注意&#xff1a;**本人使用的是Qt5.15.2版本&#xff0c;可以按如下方法找到该版本&#xff1b;

Android Studio 新版本 Logcat 的使用详解

点击进入官方Logcat介绍 一个好的Android程序员要会使用AndroidStudio自带的Logcat查看日志&#xff0c;会Log定位也是查找程序bug的第一关键。同时Logcat是一个查看和处理日志消息的工具&#xff0c;它可以更快的帮助开发者调试应用程序。 步入正题&#xff0c;看图说话。 点…

msys2+gdb-multiarch+jlinkGDBServer的nrf52调试环境搭建

前言 刚拿到一块nrf52840的板子&#xff0c;为了方便以后的开发&#xff0c;先搭建一个调试环境&#xff0c;为方便以后回忆记录一下过程。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 1.msys2命令行调用jlink工具 将jlink工具路径加入msys2的PAT…

华为云LTS日志上报至观测云最佳实践

华为云LTS简介 华为云云日志服务&#xff08;Log Tank Service&#xff0c;简称 LTS&#xff09;&#xff0c;用于收集来自主机和云服务的日志数据&#xff0c;通过海量日志数据的分析与处理&#xff0c;可以将云服务和应用程序的可用性和性能最大化&#xff0c;为您提供实时、…

【51单片机】点亮LED之经典流水灯

开发环境 开发板&#xff1a;普中51-单核-A2单片机&#xff1a;STC89C52RC&#xff08;双列直插40引脚 DIP40&#xff09;Keil uVision5 v9.61 最新版破解方法自行百度&#xff0c;相关文档和视频资料很多&#xff0c;我自己将这一操作记录下来当做博客发布&#xff0c;CSDN以…

【数据结构强化】应用题打卡

应用题打卡 数组的应用 对称矩阵的压缩存储 注意&#xff1a; 1. 2.上三角的行优先存储及下三角的列优先存储与数组的下表对应 上/下三角矩阵的压缩存储 注意&#xff1a; 上/下三角压缩存储是将0元素统一压缩存储&#xff0c;而不是将对角线元素统一压缩存储 三对角矩阵的…

King3399 SDK(ubuntu文件系统)编译简明教程

该文章仅供参考&#xff0c;编写人不对任务实验设备、人员及测量结果负责&#xff01;&#xff01;&#xff01; 0 引言 文章主要介绍King3399&#xff08;瑞芯微rk3399开发板&#xff0c;荣品&#xff09;官方SDK&#xff08;Ubuntu文件系统&#xff09;编译过程&#xff0c…

GaussDB关键技术原理:高弹性(六)

书接上文GaussDB关键技术原理&#xff1a;高弹性&#xff08;五&#xff09;从日志多流和事务相关方面对hashbucket扩容技术进行了解读&#xff0c;本篇将从扩容实践方面继续介绍GaussDB高弹性技术。 5 扩容实践 5.1 工具介绍 5.1.1 TPC-C TPC-C(全称Transaction Proces…

Leetcode 540. 有序数组中的单一元素

1.题目基本信息 1.1.题目描述 给你一个仅由整数组成的有序数组&#xff0c;其中每个元素都会出现两次&#xff0c;唯有一个数只会出现一次。 请你找出并返回只出现一次的那个数。 你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。 1.2.题目地址 https:…

[3.4]【机器人运动学MATLAB实战分析】PUMA560机器人逆运动学MATLAB计算

PUMA560是六自由度关节型机器人,其6个关节都是转动副,属于6R型操作臂。各连杆坐标系如图1,连杆参数如表1所示。 图1 PUMA560机器人的各连杆坐标系 表1 PUMA560机器人的连杆参数 用代数法对其进行运动学反解。具体步骤如下: 1、求θ1 PMUMA56

CSS 圆形边框与阴影

目录 1. 圆角边框 1.1 正圆 1.2 圆角矩形 1.3 任意圆角 1.4 某个圆角 2. 盒子阴影 3. 文字阴影 1. 圆角边框 1.1 正圆 1.2 圆角矩形 1.3 任意圆角 1.4 某个圆角 2. 盒子阴影 3. 文字阴影

Vue Mini基于 Vue 3 的小程序框架

新的小程序框架 https://vuemini.org/ Vue Mini 是一个基于 Vue 3 的小程序框架&#xff0c;它允许开发者利用 Vue 3 的强大功能来构建微信小程序。Vue Mini 的核心优势在于它的响应式系统和组合式 API&#xff0c;这些特性让开发者能够以一种更声明式、更高效的方式来编写和…