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种特权模式又称为异常模式。

 

 

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

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

相关文章

进程的创建、多任务及退出

一、创建进程 1、并发与并行 为了提高计算机执行任务的效率,一般采用的解决方案就是能够让多个任务同时进行,可以使用 并发 与 并行两种方式 并行 : 在 cpu 多核的支持下,实现物理上的同时执行 并发 : 在有限的 cpu 核芯的情况下 , …

60 序列到序列学习(seq2seq)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录一、理论知识比喻机器翻译Seq2seq编码器-解码器细节训练衡量生成序列的好坏的BLEU(值越大越好)总结 二、代码编码器解码器损失函数训练预测预测序列的评估小结练习 一、理论知识 比喻 seq2seq就像RNN的转录工作一样,非常形象的比…

Percona Monitoring and Management

Percona Monitoring and Management (PMM)是一款开源的专用于管理和监控MySQL、MongoDB、PostgreSQL

netty之NettyClient半包粘包处理、编码解码处理、收发数据方式

前言 Netty开发中,客户端与服务端需要保持同样的;半包粘包处理,编码解码处理、收发数据方式,这样才能保证数据通信正常。在前面NettyServer的章节中我们也同样处理了;半包粘包、编码解码等,为此在本章节我们…

C++和OpenGL实现3D游戏编程【连载12】——游戏中音效的使用

1、游戏中音效的使用 前面我们实现了图片纹理的显示功能,是不是感觉到非常的简单。那么今天我们就继续说下游戏声音的实现。音效也是游戏的灵魂,只有搭配了美妙动听的音效以后,游戏才能令人耳目一新,与玩家产生良好的效果。 音效文件最常用的可分为两种,分别为.wav和.mp3…

SQL Server中关于个性化需求批量删除表的做法

在实际开发中,我们常常会遇到需要批量删除表,且具有共同特征的情况,例如:找出表名中数字结尾的表之类的,本文我将以3中类似情况为例,来示范并解说此类需求如何完成: 第一种,批量删除…

Mysql 学习——项目实战

MySQL 学习——项目实战 项目出处 博主:Asmywishi Linux-Ubuntu启动Mysql sudo mysqlData preparation Create Database and Table Create database : create database mysql_example1;Start database : use mysql_example1;Create Student table : # 学生表…

使用VBA快速将文本转换为Word表格

Word提供了一个强调的文本转表格的功能,结合VBA可以实现文本快速转换表格。 示例文档如下所示。 现在需要将上述文档内容转换为如下格式的表格,表格内容的起始标志为。 示例代码如下。 Sub SearchTab()Application.DefaultTableSeparator "*&quo…

828华为云征文 | 基于华为云Flexus云服务器X搭建部署——AI知识库问答系统(使用1panel面板安装)

🚀对于企业来讲为什么需要华为云Flexus X来搭建自己的知识库问答系统??? 【重塑知识边界,华为云Flexus云服务器X引领开源问答新纪元!】 🌟 解锁知识新动力,华为云Flexus云服务器X携…

【算法】DFS 系列之 穷举/暴搜/深搜/回溯/剪枝(上篇)

【ps】本篇有 9 道 leetcode OJ。 目录 一、算法简介 二、相关例题 1)全排列 .1- 题目解析 .2- 代码编写 2)子集 .1- 题目解析 .2- 代码编写 3)找出所有子集的异或总和再求和 .1- 题目解析 .2- 代码编写 4)全排列 II…

C语言语句、语句分类及注释

文章目录 一、语句和语句分类二、注释🍕注释是什么?为什么写注释?1. /**/的形式2. //的形式3. 注释会被替换 三、随机数的生成1.rand函数2.srand函数3.time函数4.设置随机数的范围 四、C99中的变长数组五、问题表达式解析表达式1表达式2表达式…

手机实时提取SIM卡打电话的信令声音-(题外、插播一条广告)

手机实时提取SIM卡打电话的信令声音-(题外、插播一条广告) 前言 在去年的差不多这个时候,我们做了一遍外置配件的选型,筛选过滤了一批USB蓝牙配件和type-c转usb的模块。详情可参考《外置配件的电商价格和下载链接的选型.docx》一文:蓝牙电话…

FireRedTTS - 小红书最新开源AI语音克隆合成系统 免训练一键音频克隆 本地一键整合包下载

小红书技术团队FireRed最近推出了一款名为FireRedTTS的先进语音合成系统,该系统能够基于少量参考音频快速模仿任意音色和说话风格,实现独特的音频内容创造。 FireRedTTS 只需要给定文本和几秒钟参考音频,无需训练,就可模仿任意音色…

Python基础语句教学

Python是一种高级的编程语言,由Guido van Rossum于1991年创建。它以简单易读的语法和强大的功能而闻名,被广泛用于科学计算、Web开发、数据分析等领域。 Python的应用领域广泛,可以用于开发桌面应用程序、Web应用、游戏、数据分析、人工智能等…

基于SSM的列车订票管理系统(含源码+sql+视频导入教程+文档+PPT)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的列车订票管理系统3拥有两种角色;管理员、用户 管理员:用户管理、车票管理、购票指南管理、系统管理等 用户:发布帖子、登录注册、购票等 1.…

C++继承与菱形继承(一文了解全部继承相关基础知识和面试点!)

目的减少重复代码冗余 Class 子类(派生类) : 继承方式 父类(基类) 继承方式共有三种:公共、保护、私有 父类的私有成员private无论哪种继承方式都不可以被子类使用 保护protected权限的内容在类内是可以访问,但是在…

Python | Leetcode Python题解之第452题用最少数量的箭引爆气球

题目: 题解: class Solution:def findMinArrowShots(self, points: List[List[int]]) -> int:if not points:return 0points.sort(keylambda balloon: balloon[1])pos points[0][1]ans 1for balloon in points:if balloon[0] > pos:pos balloo…

ubuntu18.04安装教程

window分区 制作启动盘 插入 按F12进入启动选项页面,选择usb启动 选择install ubuntu 进入安装页面 选择中文(简体) 键盘布局选择英语(美国) 选择正常安装 等一小会儿 选择其他选项 分区 包括500mb系统分区 1000…

通信工程师笔记

第一章 1.支撑网是使业务网正常运行,增强网络功能,提供全网服务质量以满足用户要求的网络。 2.常见的有线通信线路包括(1)双绞线,(2)同轴电缆,(3)光纤等,无线通信线路是…

鼓组编曲:鼓编写技巧之进鼓加花编写

为了方便快速查阅和运用一些教程笔记,个人记性有时可能不是特别好,所以只能疯狂做笔记了,制作以下图文笔记,仅供参考…… 鼓组加花 鼓的变动 进鼓后然后就可以动次打次了 下面是2个底鼓的加花