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

ARM 体系结构与存储器

一、RAM 分类

  1. SRAM (Static RAM)

    • 触发器/晶体管 存储 0/1。

    • 特点:速度快、功耗低(静态保持),但成本高、容量小。

    • 应用:片上缓存、寄存器文件、单片机内存。

  2. DRAM (Dynamic RAM)

    • 电容充放电 存储 0/1。

    • 特点:存储密度高、成本低,但需要刷新电路,速度低于 SRAM。

    • 应用:PC 内存、大容量存储。

  3. SDRAM (Synchronous DRAM)

    • 在 DRAM 上增加时钟同步,提高读写速度。

  4. DDR RAM (Double Data Rate SDRAM)

    • SDRAM 的升级版,在时钟上升沿和下降沿均可传输数据

    • 发展分支:DDR → DDR2 → DDR3 → DDR4 → DDR5。

  5. IRAM (Internal RAM)

    • 本质上是 片上 SRAM,直接集成在 SoC 内部,速度快、可直接被内核访问。

二、ROM 分类

  1. ROM (Read Only Memory)

    • 出厂时数据固定,不可更改。

  2. PROM (Programmable ROM)

    • 用户可写入一次数据。

  3. EPROM (Erasable PROM)

    • 可通过紫外线擦除后重新写入。

  4. EEPROM (Electrically Erasable PROM)

    • 电擦写方式,速度较慢,但方便修改少量数据(如配置参数)。

  5. Flash 闪存

    • NOR Flash:字节寻址,可直接执行(XIP, Execute In Place)。

    • NAND Flash:页寻址,容量大、寿命长,需控制器管理。

    • eMMC:嵌入式 NAND,带控制器,简化接口。

    • UFS(Universal Flash Storage):新一代高速存储接口。

 

三、ARM 内核结构(Cortex-A7 为例)

  1. 基本信息

    • 32 位架构,数据宽度 4 字节。

    • RISC(精简指令集)设计,流水线执行。

  2. 功能单元

    • ALU:算术逻辑运算。

    • 通用寄存器 R0-R12:主要运算与数据存储。

    • 专用寄存器

      • PC (R15):程序计数器。

      • LR (R14):连接寄存器,保存返回地址。

      • SP (R13):栈指针寄存器。

      • CPSR:当前程序状态寄存器。

      • SPSR:保存的 CPSR(用于异常返回)。

  3. 存储与控制

    • MMU (Memory Management Unit):虚拟地址 → 物理地址映射。

    • Cache

      • I-Cache(指令缓存)

      • D-Cache(数据缓存)

    • 总线

      • AHB:高性能总线(CPU ↔ 内存)。

      • APB:外设总线(低速外设)。

四、ARM 工作模式

Cortex-A7 有 9 种模式:

  1. User:非特权模式,普通应用运行。

  2. FIQ:快速中断模式,高优先级,专用寄存器多,适合实时处理。

  3. IRQ:普通中断模式。

  4. Supervisor (SVC):上电复位或软中断进入。

    • 上电默认进入 SVC 模式,由启动代码切换到 User 模式。

  5. Abort:存取异常模式。

  6. Undef:未定义指令模式。

  7. System:与 User 共用寄存器,但具备特权。

  8. Monitor:安全监控模式(TrustZone)。

  9. Cortex-A 特有模式(部分扩展架构支持)。

说明

每种模式都有 独立 SP、LR,保证中断/异常隔离。

ARM 将 中断统一视为异常

五、异常处理

  1. 异常类型

    • Reset(复位)

    • Undefined Instruction(未定义指令)

    • SWI(软中断)

    • Prefetch Abort(指令取指异常)

    • Data Abort(数据访问异常)

    • IRQ(普通中断)

    • FIQ(快速中断)

  2. 异常向量表

    • 固定地址存放不同异常入口。

    • 例如:复位向量通常在 0x000000000xFFFF0000

  3. 底层流程

    • 保存 CPSR → 切换模式 → 修改 PC → 跳转异常向量表地址。

六、CPSR 程序状态寄存器

  1. Mode 位:工作模式选择。

  2. 条件标志位

    • N(Negative):结果为负数 → 1。

    • Z(Zero):结果为 0 → 1。

    • C(Carry):无符号运算进位/借位。

    • V(Overflow):有符号数溢出。

  3. E 位:大小端标志(0 = 小端,1 = 大端)。

  4. IRQ/FIQ 屏蔽位:控制中断响应。

七、ARM 指令

  1. 数据传送

    • MOV Rd, #const:立即数赋值。

    • MOV Rd, Rm:寄存器传值。

    • MVN Rd, #const:立即数取反。

  2. 算术运算

    • ADD Rd, Rn, #const

    • SUB Rd, Rn, #const

    • MUL Rd, Rn, Rm

  3. 移位操作

    • LSL:逻辑左移。

    • LSR:逻辑右移。

    • ASL:算术左移(等价于 LSL)。

    • ASR:算术右移(符号位保持)。

    • ROR:循环右移。

  4. 立即数规则

    • ARM 立即数 = 8-bit 常数 + 4-bit 旋转

    • 可通过右旋实现更多常数表示。


文章转载自:

http://GaTNv3QY.ksqzd.cn
http://dxEmpTrD.ksqzd.cn
http://zDiV6zKb.ksqzd.cn
http://rWUoQEzw.ksqzd.cn
http://xOcFSVzn.ksqzd.cn
http://dbMPZdvu.ksqzd.cn
http://4jQf0WZW.ksqzd.cn
http://6BXSKhuT.ksqzd.cn
http://5BF9WxkG.ksqzd.cn
http://ihtV5Y5W.ksqzd.cn
http://Zrs3vMsJ.ksqzd.cn
http://3e7LZ6Xg.ksqzd.cn
http://MTTvY5lW.ksqzd.cn
http://GsPA5b8d.ksqzd.cn
http://oIIfsF67.ksqzd.cn
http://KWSCNlMu.ksqzd.cn
http://K6A9cBFB.ksqzd.cn
http://yS2pBWuC.ksqzd.cn
http://R0pErYDI.ksqzd.cn
http://Y0Xzqoey.ksqzd.cn
http://bxCOdX3Z.ksqzd.cn
http://s8dxWAnn.ksqzd.cn
http://4Peq0btA.ksqzd.cn
http://ZBV2uipb.ksqzd.cn
http://bUz0U2MR.ksqzd.cn
http://HfUSnYTV.ksqzd.cn
http://2Vg542Bh.ksqzd.cn
http://BPf9yxlC.ksqzd.cn
http://6CgDJbrO.ksqzd.cn
http://BAZTkg9F.ksqzd.cn
http://www.dtcms.com/a/374298.html

相关文章:

  • <android>反编译魔改安卓系统应用并替换
  • 面试题:Redis要点总结(进阶)
  • Web安全基石:深入理解与防御SQL注入漏洞
  • PAT 1005 Spell It Right
  • 老子与coding
  • 机器学习之聚类算法
  • bash:trtexec:command not found
  • 今日分享:C++ Stack和queue(栈与队列)
  • Avalonia:使用附加属性实现命令与事件的绑定
  • AI的核心操控:从算法到硬件的协同进化
  • C++初阶(5)类和对象(中)
  • Linux I/O 访问架构深入分析
  • 实现一个可中断线程的线程类
  • Java全栈学习笔记31
  • 算法之双指针
  • js定义变量时let和cons的使用场景
  • DataLens:一款现代化的开源数据分析和可视化工具
  • 人工智能-python-深度学习-神经网络-MobileNet V1V2
  • TDengine 选择函数 Last() 用户手册
  • MySQL的数据模型
  • vulnhub:Kioptrix level 2
  • C++ Int128 —— 128位有符号整数类实现剖析
  • 前端部署,又有新花样?
  • Neural Jacobian Field学习笔记 - omegaconf
  • C++(day8)
  • 设计模式:模板方法模式
  • 英发睿能闯关上市:业绩波动明显,毅达创投退出,临场“移民”
  • 华清远见25072班网络编程day1
  • 深入理解 AbstractQueuedSynchronizer (AQS):Java 并发的排队管家
  • 32位CPU架构是如何完成两数(32位)相加的指令的?