04_ARM硬件基础

发布时间 2023-12-14 15:15:57作者: StarAire

04_ARM硬件基础

  • 课程目标:了解我们常用硬件接口,并且编程控制
  • 重点难点:对各个接口原理的掌握
  • 考核目标:各个接口的作用,实现原理及特性

1. 硬件基础概述

1.1. 为什么我们要去研究硬件

因为要去使用他,驱动它

1.2. 我们要研究什么

  • 硬件原理及构造
  • 地址
  • 寄存器
  • 协议
  • 时长/频率

1.3. 我们怎么研究

  • ARM手册
  • 芯片手册
  • 外设芯片手册

1.4. ARM Cortex-A8 - S5PV210的硬件

  • 分类
    • CPU核心
      • 中断
      • NEON/SIMD
      • Cache
    • 系统外围
      • RTC:实时时钟
      • PLL:锁相环
      • PWM Timer:脉冲宽度调制
      • WatchDig Timer:看门狗
      • DMA:直接存储访问
      • keyboard
      • ADC
    • 连接
      • USB Host/OTG
      • UART
      • IIC
      • SPI
      • Modem IF:通信调制
      • GPIO
      • Audio IF:音频
      • Storage IF:存储
    • 多媒体
      • Camera IF/MIPI CSI
      • Coder/Decoder
      • 2D/3D Graphics Engine
      • TV out/HDMI
      • JPEG Codec
      • LCD Controller
    • 存储接口
      • SRAM/SROM
      • OneNand
      • SLC/MLC Nand
      • DDR
    • 电源管理
      • Clock Gating
      • Power Gating
      • Frequency Scaling

2. SIMD & NEON

SlMD:(Single Instruction Multiple Data,单指令多数据流)
NEON技术可加速多媒体和信号处理算法(如视频编码/解码、2D/3D图形、游戏、音频和语音处理、
图像处理技术、电话和声音合成),其性能至少为ARMv5性能的3倍,为ARMv6SMD性能的2倍

3. Cache (具体参考 《计算机组成原理》)

3.1. 为什么需要Cache

我们现在采用的存储器结构多为体交叉存储器体系

  • I/O 向主存请求的级别高于CPU访存

  • 主存速度跟不上CPU发展

  • 主存一般都是片外,频繁进出速度慢,能耗高

  • Cache 工作原理
    程序访问的局部性原理,采用了SRAM命中率
    大小比例:4:1000,128K 32M

3.2. Sample:AMBA高速缓存控制器

3.3. 内存层级

制作成本高,不可能做太大

  • L0:寄存器
  • L1:一级高速缓存(SRAM),一般64KB
  • L2:二级高速缓存(SRAM),一般1M
  • L3:三级高速缓存(SRAM)
  • L4:主存(DRAM)
  • L5:本地二级存储(本地磁盘)
  • L6:远程二级存储(分布式文件系统,web服务器)

3.4. 缓存控制器 Cache Controller

  • 搬运规则
    • 直接映射缓存
    • 联合缓存

https://www.bilibili.com/video/BV1px411E7ma?p=48&time=2m44s

3.5. 直接映射缓存 Direct Mapped Cache

3.6. 联合缓存 Set-associative Cache

3.7. 缓存结构总结

4. MMU (具体参考 《操作系统》)

MMU:memory manage unit 存储管理单元

4.1. 计算机在访问主存的时候出问题了

  • PM物理内存不够用
  • 进程隔绝
  • 虚拟内存:将硬盘里一部分空间虚拟成内存,来达到扩展内存的目的

4.2. 虚拟存储器

4.2.1. 作用

  • 1、允许多道程序之间有效而安全的共享存储器
  • 2、消除一个小而受限的主存容量对程序设计造成的影响

4.2.2. 虚拟地址、物理地址、页、缺页

  • 要解决两个问题

    • 保护、锁
    • 分割 -> 完成内存地址映射 转移
  • 虚拟地址:进程当中的虚拟地址

  • 物理地址:真实的内存地址

  • 页:

4.2.3. 页保护及锁定机制

4.2.4. 地址转换过程

4.2.5. 分段

4.3. 页的存放和查找

4.3.1. 页表

4.3.2. 页表寄存器

4.4. 缺页

1、如果不缺页直接读物理地址
2、如果缺页,则把控制权交给 操作系统,操作系统一般是从磁盘地址去

4.5. 加快地址转换TLB

  • 处理TLB缺失

4.6. 集成虚拟存储器

  • SRAM -> Cache
  • DDRAM -> 内存
  • ROM -> Nand Flash

5. 中断体系结构

5.1. ARM异常及中断基本概念

5.1.1. 什么是异常?什么是中断?

中断是特殊的异常

5.1.2. ARM异常种类对应的处理器模式

ARM体系结构中存在7种异常处理。异常发生时,处理器会把PC指向一个特殊地址,这个地址放在存储器种一个特定表中,成为向量表。

地址 异常 进入模式 模式
0x00000000 复位 管理模式 复位电平有效时,产生复位异常,程序跳转到复位处理程序处执行
0x00000004 未定义指令 未定义模式 碰到不能处理的指令时,产生未定义指令异常
0x00000008 软件中断 管理模式 执行SWI指令产生,用于用户模式下的程序调用特权操作指令
0x0000000c 预存指令 中止模式 处理器预取指令的地址不存在,或该地址不允许当前指令访问,产生指令预取中止异常
0x00000010 数据操作 中止模式 处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常
0x00000014 未使用 未使用 未使用
0x00000018 IRQ IRQ 外部中断请求有效,且CPSR中的I位为0时,产生IRQ异常
0x0000001c FIQ FIQ 快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常

5.1.3. 异常发生时候CPU处理步骤

1、保存当前执行位置
2、保存当前执行状态
3、寻找中断入口,即向量表地址
4、执行中断处理程序
5、中断返回,继续执行

  • 几种异常
    • 复位异常
    • 未定义指令异常
    • 软中断异常
    • 预取异常
    • 数据异常
    • 外部中断异常
    • 快速中断异常

5.1.4. ARM异常优先级

Highest 1 Reset
2 Data Abort
3 FIQ
4 IRQ
5 Prefetch Abort
Lowest 6 SW
Undefined instruction

5.1.5. 总结表

5.2. S5PV210中断控制器分析