当前位置: 首页 > news >正文

ARM架构与计算机硬件基础全解析

一、计算机硬件基础

操作系统作用:

向下管理硬件,向上提供接口(API)

(1)、系统分层

  1. 应用开发
  2.     即使用系统提供的接口(API),做上层应用程序的开发
  3.  底层开发
  4.     即做操作系统本身的开发

  1. 1、 Linux子系统
  2.     1.进程管理:管理进程的创建、调度、销毁等
  3.     2.内存管理:管理内存的申请、释放、映射等
  4.     3.文件系统:管理和访问磁盘中的文件
  5.     4.设备管理:硬件设备及驱动的管理
  6.     5.网络协议:通过网络协议栈(TCP、IP...)进行通信

(2)、计算机基础知识

1、计算机的进制

  1. 逻辑1和0
  2.     在计算机中数据的存储、运算、传输都是以高低电平的方式
  3.     所以数字电路中用高、低电平来表示逻辑1和0

2、计算机的组成

  1. 输入设备
  2.     把其他信号转换成计算机能识别和处理的信号并送入计算机中
  3.     如键盘、鼠标、摄像头等
  4. 输出设备
  5.     把运算结果以人或其他设备所能接受的形式送出计算机外
  6.     如显示器、音响、打印机等
  7. 存储器
  8.     存储器是用来存储程序和数据的部件,是实现"存储程序控制"的基础
  9.     如内存、硬盘等
  10. 运算器
  11.     CPU中负责进行算数运算和逻辑运算的部件,其核心是算术逻辑单元ALU
  12. 控制器
  13.     控制器是CPU的指挥中心,其控制着整个CPU执行程序的逻辑过程
  14. 注:运算器和控制器共同组成了CPU

3、总线

  1. 总线
  2.     总线是计算机中各个部件之间传送信息的公共通信干线, 在物理上就是一束导线按照其传递信息的类型可以分为数据总线、地址总线、控制总线
  3. DMA总线
  4.     DMA(Direct Memory Access)即直接存储器访问,使用DMA总线可以不通过CPU直接在存储器之间进行数据传递

(3)、多级存储结构与地址空间

1、三级存储结构

使用三级存储结构是为了兼顾速度、容量、价格
  1. Cache
  2.     速度最快、价格最贵、容量最小、断电数据丢失、cpu可直接访问
  3.     存储当前正在执行的程序中的活跃部分,以便快速地向CPU提供指令和数据
  4. 主存储器
  5.     速度、价格、容量介于Cache与辅存之间、断电数据丢失、cpu可直接访问
  6.     存储当前正在执行的程序和数据
  7. 辅助存储器
  8.     速度最慢、价格最低、容量最大、断电数据不丢失、cpu不可直接访问
  9.     存储暂时不运行的程序和数据,需要时再传送到主存
2、地址空间

    一个处理器能够访问(读写)的存储空间是有限的,我们称这个空间为它的地址空间(寻址空间),一般来说N位地址总线的处理器的地址空间是2的N次方

(4)、CPU工作原理概述

1、CPU工作原理:

每取完一条指令后PC的值会自动增加指向下一条指令

2、指令的执行过程:

  1. 一条指令的执行分为三个阶段
  2.     1.取址:
  3.   CPU将PC寄存器中的地址发送给内存,内存将其地址中对应的指令返回
  4.   到CPU中的指令寄存器(IR)
  5.     2.译码:
  6.   译码器对IR中的指令进行识别,将指令(机器码)解析成具体的运算
  7.     3.执行:
  8.   控制器控制运算器中对应的运算单元进行运算,运算结果写入寄存器

二、ARM体系结构理论基础

ARM处理器概述

(1)、ARM公司概论

  1. ARM的含义
  2.     ARM(Advanced RISC Machines)有三种含义
  3. 一个公司的名称、一类处理器的通称、一种技术
  4. ARM公司
  5.     > 成立于1990年11月,前身为Acorn计算机公司
  6.     > 主要设计ARM系列RISC处理器内核
  7.     > 授权ARM内核给生产和销售半导体的合作伙伴,ARM公司并不生产芯片
  8.     > 提供基于ARM架构的开发设计技术软件工具、评估板、调试工具、应用软件
  9.       总线架构、外围设备单元等

RISC精简指令集

  1. (2)、RISC处理器

  2. RISC处理器
  3.     只保留常用的的简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,一般指令长度固定,且多为单周期指令
  4.     RISC处理器在功耗、体积、价格等方面有很大优势,所以在嵌入式移动终端领域应用极为广泛
  5. CISC处理器
  6.     不仅包含了常用指令,还包含了很多不常用的特殊指令,硬件结构复杂,指令条数较多,一般指令长度和周期都不固定
  7.     CISC处理器在性能上有很大优势,多用于PC及服务器等领域

(3)、SOC(System on Chip)

    即片上系统,将一个系统中所需要的全部部件集成在一个芯片中在体积、功耗、价格上有很大优势

ARM指令集概述

(1)、指令集

  1. 指令
  2.     能够指示处理器执行某种运算的命令称为指令(如加、减、乘 ...)
  3.     指令在内存中以机器码(二进制)的方式存在
  4.     每一条指令都对应一条汇编
  5.     程序是指令的有序集合
  6. 指令集
  7.     处理器能识别的指令的集合称为指令集
  8.     不同架构的处理器指令集不同
  9.     指令集是处理器对开发者提供的接口

(2)、ARM指令集

  1. 大多数ARM处理器都支持两种指令集:
  2. ARM指令集
  3.     所有指令(机器码)都占用32bit存储空间
  4.     代码灵活度高、简化了解码复杂度
  5.     执行ARM指令集时PC值每次自增4
  6. Thumb指令集
  7.     所有指令(机器码)都占用16bit存储空间
  8.     代码密度高、节省存储空间
  9.     执行Thumb指令集时PC值每次自增2
  10. (3)、编译原理

       机器码(二进制)是处理器能直接识别的语言,不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同的处理器机器码不同,所以机器码不可移植
       汇编语言是机器码的符号化,即汇编就是用一个符号来代替一条机器码,所以不同的处理器汇编也不一样,即汇编语言也不可移植

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

ARM存储模型

(1)、ARM数据类型

  1. ARM采用32位架构,基本数据类型有以下三种
  2.     Byte  8bits
  3.     Halfword  16bits
  4.     Word  32bits
  5. 数据存储
  6.     Word型数据在内存的起始地址必须是4的整数倍
  7.     Halfword型数据在内存的起始地址必须是2的整数倍
  8.    
  9. 注:即数据本身是多少位在内存存储时就应该多少位对齐

(2)、字节序

  1. 大端对齐
  2.     低地址存放高位,高地址存放低位
  3.     a = 0x12345678;
  4. 端对齐
  5.     低地址存放低位,高地址存放高位
  6.     a = 0x12345678;

注:ARM一般使用小端对齐

(3)、ARM指令存储

  1. 处理器处于ARM状态时
  2.     所有指令在内存的起始地址必须是4的整数倍
  3.     PC值由其[31:2]决定,[1:0]位未定义
  4. 处理器处于Thumb状态时
  5.     所有指令在内存的起始地址必须是2的整数倍
  6.     PC值由其[31:1]决定,[0]位未定义
  7. 注:即指令本身是多少位在内存存储时就应该多少位对齐

ARM状态下,PC的[31:2]存储对齐后的指令地址高位,[1:0]必须为00(硬件忽略但未定义),确保指令按4字节边界读取。

ARM工作模式

  1. ARM有8个基本的工作模式
  2.   User  用户模式非特权模式,一般在执行上层的应用程序时ARM处于该模式
  3.   FIQ 快速中断模式当一个高优先级中断产生后ARM将进入这种模式
  4.   IRQ  普通中断/外部中断模式当一个低优先级中断产生后ARM将进入这种模式

FIQ和IRQ是硬中断

  1.   SVC 超级用户模式当复位或执行软中断指令后ARM将进入这种模式
  2.   Abort 中止模式当产生存取异常时ARM将进入这种模式
  3.   Undef 指令未定义模式当执行未定义的指令时ARM将进入这种模式
  4.   System 系统模式使用和User模式相同寄存器集的特权模式
  5.   Monitor 监控模式为了安全而扩展出的用于执行安全监控代码的模式

(1)、工作模式的理解

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

(2)、工作模式分类

  1. 按照权限
  2.     User为非特权模式(权限较低),其余模式均为特权模式(权限较高)
  3. 按照状态
  4.     FIQ、IRQ、SVC、Abort、Undef属于异常模式,即当处理器遇到异常后
  5. 会进入对应的模式

三、ARM寄存器组织

(1)、寄存器

  1. 概念
  2.     寄存器是处理器内部的存储器,没有地址
  3. 作用
  4.     一般用于暂时存放参与运算的数据和运算结果
  5. 分类
  6.     包括通用寄存器、专用寄存器、控制寄存器

(2)、ARM寄存器

  1.     在某个特定模式下只能使用当前模式下的寄存器,一个模式下特有的寄存器其他模式下不可使用

ARM处理器共有‌37个32位寄存器‌,包括31个通用寄存器和6个状态寄存器,再加上监控模式的寄存器,一共有40个寄存器

通用寄存器

通用寄存器分为未分组寄存器(R0-R7)和分组寄存器(R8-R12)。未分组寄存器在所有模式下均可访问,而分组寄存器在不同模式下有不同用途。

状态寄存器

CPSR(Current Program Status Register),当前程序状态寄存器

包含CPSR(当前程序状态寄存器)和5个SPSR(异常模式保存的SPSR)。

  1. CPSR寄存器分为四个域,[31:24]为条件域用F表示、
  2. [23:16]为状态域用S表示、[15:8]为预留域用X表示、[8:0]为控制域用C表示
  3. Bit[4:0]
  4.     [10000]User    [10001]FIQ     [10010]IRQ     [10011]SVC
  5.     [10111]Abort   [11011]Undef   [11111]System  [10110]Monitor
  6. Bit[5]
  7.     [0]ARM状态     [1]Thumb状态
  8. Bit[6]
  9.     [0]开启FIQ     [1]禁止FIQ
  10. Bit[7]
    1.     [0]开启IRQ     [1]禁止IRQ
  11. Bit[28]
  12.     > 当运算器中进行加法运算且产生符号位进位时该位自动置1,否则为0
  13.     > 当运算器中进行减法运算且产生符号位借位时该位自动置0,否则为1
  14. Bit[29]
  15.     > 当运算器中进行加法运算且产生进位时该位自动置1,否则为0
  16.     > 当运算器中进行减法运算且产生借位时该位自动置0,否则为1
  17. Bit[30]
  18.     当运算器中产生了0的结果该位自动置1,否则为0
  19. Bit[31]
  20.     当运算器中产生了负数的结果该位自动置1,否则为0
  21. 特殊寄存器

  • 程序计数器PC(R15)‌:记录当前执行指令地址。 ‌
  • 堆栈指针SP(R13)‌:管理函数调用时的栈操作。 ‌
  • 链接寄存器LR(R14)‌:保存函数返回地址。 ‌
  1. R15(PC,Program Counter)
  2.     程序计数器,用于存储当前取址指令的地址
  3. R14(LR,Link Register)
  4.     链接寄存器,一般有以下两种用途:
  5.     > 执行跳转指令(BL/BLX)时,LR会自动保存跳转指令下一条指令的地址
  6.       程序需要返回时将LR的值复制到PC即可实现
  7.     > 产生异常时,对应异常模式下的LR会自动保存被异常打断的指令的下
  8.       一条指令的地址,异常处理结束后将LR的值复制到PC可实现程序返回
  9. R13(SP,Stack Pointer)
  10.  栈指针,用于存储当前模式下的栈顶地址

文章转载自:

http://vO3BZo8R.ykbgs.cn
http://9m2py0MW.ykbgs.cn
http://9iqqZjZz.ykbgs.cn
http://4UBWdCV4.ykbgs.cn
http://WfjIwvpa.ykbgs.cn
http://mJ3solI6.ykbgs.cn
http://XqneLDRI.ykbgs.cn
http://Jn8RRfdu.ykbgs.cn
http://o8zVj3nj.ykbgs.cn
http://21sdzH81.ykbgs.cn
http://RuvyThPQ.ykbgs.cn
http://d2IPEzjg.ykbgs.cn
http://sLvr6UuV.ykbgs.cn
http://kcEOHxxc.ykbgs.cn
http://7wxQnksJ.ykbgs.cn
http://hUFTANe5.ykbgs.cn
http://7jd6oIJ9.ykbgs.cn
http://aRxFdK4t.ykbgs.cn
http://1kpvq22Z.ykbgs.cn
http://MfQNk0iw.ykbgs.cn
http://RXcjfVUi.ykbgs.cn
http://GoIhuaIB.ykbgs.cn
http://I0xssLs0.ykbgs.cn
http://FhplrZ81.ykbgs.cn
http://PkPvB4Y5.ykbgs.cn
http://rR1pahnt.ykbgs.cn
http://Wf6T5axK.ykbgs.cn
http://Ur56gp2r.ykbgs.cn
http://pjqFAx5R.ykbgs.cn
http://pN66JpQr.ykbgs.cn
http://www.dtcms.com/a/376163.html

相关文章:

  • 麒麟桌面操作系统 设置变化的时候,怎么监测到变化值以及更改项?
  • Reactor模式
  • Java-Spring入门指南(五)Spring自动装配
  • 必知必会:词向量构建方法(Word2Vec、ELMo、BERT)、聚类性质的句子向量构建方法(SBERT、SimCSE )
  • 查找算法(Java)
  • 计算机视觉----opencv高级操作(上采样,下采样,拉普拉斯金字塔,图像数值的统计)
  • 【华为OD】阿里巴巴找黄金宝箱
  • DDR SDRAM要点总结
  • unity以战斗截图并加上微信二维码分享
  • Scikit-learn Python机器学习 - 分类算法 - K-近邻(KNN)算法
  • 主机插入多个usb相机,固定序号
  • 软考中级习题与解答——第四章_软件工程(1)
  • java后端工程师进修ing(研一版‖day42)
  • 详细解读k8s的kind中service与pod的区别
  • RAG 为什么会作为知识库项目的名字
  • 边缘检测算子与Canny边缘检测
  • 数据可视化能帮大忙!一文教会小白怎么做可视化数据图表!
  • MAC 多个版本 JDK进行切换
  • macOS是开发的终极进化版吗?
  • Visual Studio 发布项目 win-86 win-64 win-arm win-arm64 osx-64 osx-64 osx-arm64 ...
  • Mac环境Neovim 与 LazyVim 安装指南
  • 解决行业痛点,蓝牙云屏引领设备升级​
  • Go语言开发AI应用
  • armbian平台ubuntu环境下telnet安装及启动,给pantherX2增加一个应急通道
  • Android中处理流式数据切割
  • 使用python test测试http接口
  • SHEIN 希音 2026 校招 内推 查进度
  • 【JavaWeb01】Web介绍
  • 修复Android studio的adb无法连接手机问题
  • 在Zuul网关中,一个请求从进入zuul到转发到后端服务的完整过程