130

Click here to load reader

第 2 讲 ARM 微处理器硬件结构

  • Upload
    xia

  • View
    106

  • Download
    5

Embed Size (px)

DESCRIPTION

第 2 讲 ARM 微处理器硬件结构.  内容提要. 计算机体系结构. ARM处理器结构 和技术特征. ARM 处理器模式及内部寄存器. ARM 存 储 系 统 机 制. 计算机体系结构. 计算机中,按内存的组成分两种典型的结构: 1.冯·诺依曼结构/普林斯顿结构. 冯 · 诺依曼体系结构. 结构特点:1、指令和数据存储在相同的内存空间,但存储地址不同。 2、处理器利用相同的总线处理内存中的指令和数据,指令和数据具有相同的数据宽度,指令与数据无法同时存取。. 存储器. 指令寄存器. 程序. 控制器. 指令 0. 指令 1. 指令 2. 指令 3. - PowerPoint PPT Presentation

Citation preview

Page 1: 第 2 讲 ARM 微处理器硬件结构

第 2 讲  ARM 微处理器硬件结构

Page 2: 第 2 讲 ARM 微处理器硬件结构

2

嵌入式系统学科组 内容提要

ARM 存 储 系 统 机 制

ARM 处理器模式及内部寄存器

ARM 处理器结构和技术特征

计算机体系结构

Page 3: 第 2 讲 ARM 微处理器硬件结构

3

嵌入式系统学科组计算机体系结构 计算机中,按内存的组成分两种典型的结构:1. 冯 · 诺依曼结构 / 普林斯顿结构

Page 4: 第 2 讲 ARM 微处理器硬件结构

4

嵌入式系统学科组冯·诺依曼体系结构

指令寄存器

控制器

数据通道输入 输出

中央处理器

存储器

程序

指令 0指令 1指令 2指令 3指令 4

数据

数据 0数据 1数据 2

结构特点: 1 、指令和数据存储在相同的内存空间,但存储地址不同。2 、处理器利用相同的总线处理内存中的指令和数据,指令和数据具有相同的数据宽度,指令与数据无法同时存取。

ARM7 嵌入式微处理器亦采用此结构

Page 5: 第 2 讲 ARM 微处理器硬件结构

5

嵌入式系统学科组哈佛体系结构

指令寄存器

控制器

数据通道输入 输出

CPU

程序存储器

指令 0指令 1指令 2

数据存储器

数据 0数据 1数据 2

地址

指令

地址

数据

结构特点:1 、指令存储和数据存储分开,指令和数据分别位

于不同的存储空间。2 、指令与数据的存取采用不同总线,取指令和存取数据可同时进行,微处理器具有较高的执行效率。数字信号处理器 DSP 通常采用

哈佛结构 , ARM9 嵌入式微处理器亦采用此结构。

Page 6: 第 2 讲 ARM 微处理器硬件结构

6

嵌入式系统学科组第 2 章 ARM 微处理器硬件结

1111

2222

计 算 机 体 系 结 构

ARM 处理器结构和技术特征

ARM 处理器模式及内部寄存器

3333

4444 ARM 存 储 系 统 机 制

Page 7: 第 2 讲 ARM 微处理器硬件结构

7

嵌入式系统学科组ARM

ARM 公司简介 ARM 是 Advanced RISC Machines 的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的 RISC (精简指令集)处理器。

公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和 OEM 厂商,并提供服务

Page 8: 第 2 讲 ARM 微处理器硬件结构

8

嵌入式系统学科组 ARM

ARM 公司简介

将技术授权给其它芯片厂商

形成各具特色的 ARM 芯片

. . .

Page 9: 第 2 讲 ARM 微处理器硬件结构

9

嵌入式系统学科组ARM Family

ARM7™ Family

ARM9™ Family

ARM10™ Family

ARM11™ Family

150DMIPS

300 DMIPS

500 DMIPS

1000 DMIPS

ARM Cortex ™ Family

ARM720T

ARM1136J ARM1176JZ

ARM1026E

ARM920T/ARM922T ARM926EJ

Cortex A

Application Processor

ARM7TDMI

ARM1156T2

ARM1026E

ARM946E

Cortex R

Embedded RT Controller

ARM7TDMI

ARM966E ARM968E

Cortex M

Micro-controller

ARM Architecture

Page 10: 第 2 讲 ARM 微处理器硬件结构

10

嵌入式系统学科组ARM 处理器内核 微处理器是整个系统的核心,通常由 4 部分组

成:控制部件、算术逻辑部件、寄存器组和内部总线。

算术逻辑单元

寄存器组

控制单元

CU

微处理器

存储器

输入 输出

Page 11: 第 2 讲 ARM 微处理器硬件结构

11

嵌入式系统学科组ARM 体系结构版本 各 ARM 体系结构版本—— V1

该版本的 ARM 体系结构,只有 26 位的寻址空间,没有商业化,其特点为: 基本的数据处理指令(不包括乘法); 字节、字和半字加载 / 存储指令; 具有分支指令,包括在子程序调用中使用的分支和

链接指令; 在操作系统调用中使用的软件中断指令。

Page 12: 第 2 讲 ARM 微处理器硬件结构

12

嵌入式系统学科组ARM 体系结构版本 各 ARM 体系结构版本—— V2

同样为 26 位寻址空间,现在已经废弃不再使用,它相对 V1 版本有以下改进: 具有乘法和乘加指令; 支持协处理器; 快速中断模式中的两个以上的分组寄存器; 具有原子性加载 / 存储指令 SWP 和 SWPB 。

Page 13: 第 2 讲 ARM 微处理器硬件结构

13

嵌入式系统学科组ARM 体系结构版本 各 ARM 体系结构版本—— V3

寻址范围扩展到 32 位(目前已废弃),具有独立的程序: 具有乘法和乘加指令; 支持协处理器; 快速中断模式中具有的两个以上的分组寄存器; 具有原子性加载 / 存储指令 SWP 和 SWPB 。

Page 14: 第 2 讲 ARM 微处理器硬件结构

14

嵌入式系统学科组ARM 体系结构版本 各 ARM 体系结构版本—— V4

不在为了与以前的版本兼容而支持 26 位体系结构,并明确了哪些指令会引起未定义指令异常发生,它相对 V3 版本作了以下的改进: 半字加载 / 存储指令; 字节和半字的加载和符号扩展指令; 具有可以转换到 Thumb状态的指令( BX); 增加了用户模式寄存器的新的特权处理器模式。

Page 15: 第 2 讲 ARM 微处理器硬件结构

15

嵌入式系统学科组ARM 体系结构版本 各 ARM 体系结构版本—— V5

在 V4 版本的基础上,对现在指令的定义进行了必要的修正,对 V4 版本的体系结构进行了扩展并并增加了指令,具体如下: 改进了 ARM/Thumb状态之间的切换效率; E--- 增强型 DSP 指令集 ,包括全部算法操作和 16 位

乘法操作; J----支持新的 JAVA,提供字节代码执行的硬件和优

化软件加速功能。

Page 16: 第 2 讲 ARM 微处理器硬件结构

16

嵌入式系统学科组ARM 体系结构版本 各 ARM 体系结构版本—— V6

V6 版架构是 2001年发布的,首先在 2002年春季发布的 ARM11 处理器中使用。此架构在 V5版基础上增加了以下功能:改进了 ARM/Thumb状态之间的切换效率; THUMBTM : 35%代码压缩; DSP 扩充:高性能定点 DSP功能; JazelleTM : Jova 性能优化,可提高 8 倍; Media 扩充:音 /视频性能优化,可提高 4倍。

Page 17: 第 2 讲 ARM 微处理器硬件结构

17

嵌入式系统学科组ARM 体系结构版本 各 ARM 体系结构版本—— V7 ARMv7定义了 3 种不同的处理器配置( proces

sor profiles ) : Profile A 是面向复杂、基于虚拟内存的 OS 和应用的 Profile R 是针对实时系统的; Profile M 是针对低成本应用的优化的微控制器的。

所有 ARMv7 profiles实现 Thumb-2 技术,同时还包括了 NEON™技术的扩展提高 DSP 和多媒体处理吞吐量 400% ,并提供浮点支持以满足下一代 3D图形和游戏以及传统嵌入式控制应用的需要。

Page 18: 第 2 讲 ARM 微处理器硬件结构

18

嵌入式系统学科组ARM 处理器的分类

结构体系版本( Architecture ) ARM v4T ARM v5TE

ARM v6 ARM Cortex (v7)

Processor Family ARM7 ARM9 ARM10 ARM11 ARM Cortex

Page 19: 第 2 讲 ARM 微处理器硬件结构

19

嵌入式系统学科组ARM 各系列处理器 ARM 公司开发了很

多系列的 ARM 处理器核,目前最新的系列已经是 ARM11 了,而 ARM6 核以及更早的系列已经很罕见了。目前应用比较广泛的系列是:ARM7 ARM9 ARM9E ARM10 ARM11

SecurCore

Cortex

Xscale

Page 20: 第 2 讲 ARM 微处理器硬件结构

20

嵌入式系统学科组ARM7ARM7微处理器系列 特点: 冯诺伊曼体系结构;ARMTDMI 是目前应用最广的微处理器核;

ARM720T 带有 MMU和 8KB 的指令数据混合 cache ;

ARM7EJ-执行 ARMv5TEJ指令, 5 级流水线,提供 Java 加速指令,没有存储器保护。

Page 21: 第 2 讲 ARM 微处理器硬件结构

21

嵌入式系统学科组ARM7TDMI

ARM7TDMI :整数处理核ARM7TDMI 处理器的可综合版本; ARM720T :带MMU 的处理器核心,支持操作系统;ARM7EJ-S :带有 DSP 和 Jazelle TM 技术,能够实现 Java 加速功能

支持高密度 16 位的 Thumb 指令集;支持片上调试;

支持 64 位乘法;

支持 Embeded-ICE观察硬件 ;

ARM7TDMI 的可综合( synthesizable )版本(软核),对应用工程师来说其编程模型与 ARM7TDMI 一致;

ARM7 T D M I - S

Page 22: 第 2 讲 ARM 微处理器硬件结构

22

嵌入式系统学科组ARM7TDMI

ARM7TDMI内核

地址

地址

数据读

AMBA接口

写缓冲

MMU

数据写

数据

ARM7xxT

控制逻辑

Cache

AMBA总线接口

JTAG 和非 AMBA 信号

CP15

带带 CacheCache 的的 ARM7TDMI ARM7TDMI

ARM710T• 8K 统一的 cache • 完整的内存管理单元( MMU ),支持虚拟地址和存储器保护

• 写缓冲

ARM720T同 ARM710T ,但支持 WinCE

ARM740T•8K 统一的 cache•内存管理单元•写缓冲

返回

Page 23: 第 2 讲 ARM 微处理器硬件结构

23

嵌入式系统学科组ARM9 ARM9微处理器系列

特点: 基于 ARM9TDMI ,带 16 位的 Thumb指令集,增强代码密度最多到 35%;

在 0.13µm工艺下最高性能可达到 300MIPS ( Dhrystone 2.1测试标准);

集成了数据和指令 Chche ; 32 位 AMBA 总线接口的 MMU支持; 可在 0.18µm、 0.15µm和 0.13µm工艺的硅芯片上实现。

Page 24: 第 2 讲 ARM 微处理器硬件结构

24

嵌入式系统学科组ARM9TDMI

ARM9TDMI

D Cache

I Cache

MMU

GLUE

外部存储器

ARM940T2x 4K caches MPU写缓冲ARM9xxT

ARM920T2x 16K caches MMU支持虚拟地址和内存保护 写缓冲

带带 CacheCache 的的 ARM9TDMI ARM9TDMI 返回

Page 25: 第 2 讲 ARM 微处理器硬件结构

25

嵌入式系统学科组ARM9E ARM9E 微处理器系列

特点: ARM9E 是针对微控制器、 DSP 和 Java 的单处理器解决方案;

ARM Jazelle 技术提供 8倍的 Java 加速性能 (ARM926EJ-S) ;

5- 级整数流水线; 在 0.13µm工艺下最高性能可达到 300MIPS ( Dhrystone 2.1测试标准);

可选择的 向量浮点单元 VFP9 协处理器指令优秀海浮点性能,对于 3D图形加速和实时控制可达到 215MFLOPS

高性能的 AHB 总线,带MMU 可在 0.18µm, 0.15µm, 0.13µm工艺的硅芯片上实现。

返回

Page 26: 第 2 讲 ARM 微处理器硬件结构

26

嵌入式系统学科组ARM10E ARM10E 微处理器系列

特点: 带分支预测的 6级整数流水线; 在 0.13µm工艺下最高性能可达到 430MIPS ( Dhrystone 2.1测试标准);

对于 3D图形运算和实时控制采用 VFP 协处理器,浮点运算性能最高可达 650MFLOPS ;

双 64 位 AMBA 总线接口和 64 位内部总路线接口; 优化的缓存结构提高了处理器访问低速存储器的性能; 可在 0.18µm, 0.15µm, 0.13µm工艺的硅芯片上实现

返回

Page 27: 第 2 讲 ARM 微处理器硬件结构

27

嵌入式系统学科组ARM11 ARM11 微处理器系列 特点: 增强的 Thumb、 Jazelle 、 DSP 扩展支持; 带片上和系统安全TrustZone 技术支持 ; 在 0.13µm工艺下最高可达到 550MHz; MPCore 在 0.13µm工艺下最高性能可达到 740MIP

S ( Dhrystone 2.1测试标准); 支持多媒体指令 SIMD; 采用三种电源模式:全速 /待命 /休眠 集成 DMA 的 TCM 低功耗、高性能

返回

Page 28: 第 2 讲 ARM 微处理器硬件结构

28

嵌入式系统学科组ARM 处理器工作状态

ARM 和 Thumb状态 ARM 指令系统( V4 版以后具有 Thumb指令集

): 32 位 ARM 指令集:固定的 32 位指令, Load/Stor

e RISC 特征, 3 地址格式。 16 位 Thumb指令集:是 ARM 指令集的子集,按 1

6 位指令重新编码,固定的 16 位指令, Load/Store RISC 特征, 2 地址格式。注意:两个状态之间的切换并不影响处理器模式或寄存

器内容。

Page 29: 第 2 讲 ARM 微处理器硬件结构

29

嵌入式系统学科组处理器状态切换

使用 BX 指令将 ARM7TDMI 内核的操作状态在 ARM状态和 Thumb状态之间进行切换 ,程序如下所示。

;从 Arm状态切换到 Thumb状态

LDR R0,=Lable+1

BX R0

;从 Thumb状态切换到 ARM状态

LDR R0,=Lable

BX R0

地址最低位为1 ,表示切换到 Thumb 状态地址最低位为0 ,表示切换到 ARM 状态

跳转地址标号

Page 30: 第 2 讲 ARM 微处理器硬件结构

30

嵌入式系统学科组流水线技术流水线 (Pipeline)技术:几个指令可以并行执

行 提高了 CPU 的运行效率 内部信息流要求通畅流动

译码取指 执行 add

译码取指 执行 sub

译码取指 执行 cmp

时间

Page 31: 第 2 讲 ARM 微处理器硬件结构

31

嵌入式系统学科组流水线技术 为增加处理器指令流的速度, ARM7 系列使用

3 级流水线 允许多个操作同时处理,比逐条指令执行要快。

PC 指向正被取指的指令,而非正在执行的指令

Fetch

Decode

Execute

从存储器中读取指令

解码指令

寄存器读(从寄存器 Bank )移位及 ALU 操作寄存器写(到寄存器 Bank )

PC PC

PC - 4 PC-2

PC - 8 PC - 4

ARM Thumb

Page 32: 第 2 讲 ARM 微处理器硬件结构

32

嵌入式系统学科组

流水线技术

在ARM7的3级流水线结构中流水线易出现阻塞或间断,这必然降低了流水线的效率,为了提高处理器的性能,必然要考虑如何优化处理器的组织结构。(1)缩短程序执行时间: 提高时钟频率fclk 减少每条指令的平均时钟周期数CPI

Tprog :程序执行时间

Ninst :指令条数

CPI :指令平均时钟周期数

FCLK :时钟频率

Page 33: 第 2 讲 ARM 微处理器硬件结构

33

嵌入式系统学科组流水线技术

( 2 )解决流水线相关 :结构相关

数据相关

控制相关

如果某些指令在流水线中重叠执行时,产生资源冲突,则称该流水线存在结构相关。 解决:资源重复( Cache 分离、 ALU 中单独的地址计算加法器)

写后读”、“写后写” “读后写” 解决:专用通路、流水线互锁技术

当流水线遇到分支指令和其他会改变 PC值的指令时,取指取决于指令执行条件,可能需重新取指,致使流水线停顿。解决:引入延时分支、尽早计算转移成功时的目标地址。

Page 34: 第 2 讲 ARM 微处理器硬件结构

34

嵌入式系统学科组流水线技术超标量 (Superscalar)执行:超标量 CPU采用

多条流水线结构

执行 1

取指

指令

译码 2

译码 1

执行 2

执行 1

取指

译码 2

译码 1

执行 2

流水线1

流水线2

数据回写

Page 35: 第 2 讲 ARM 微处理器硬件结构

35

嵌入式系统学科组流水线技术

注意: 超标量处理器在执行的过程中必须动态地检查指令相关性,判断当前的指令组合是否能同时执行;

如果代码中有分支指令,我们必须将分支被执行和分支不被执行这两种情况分开考虑,计算执行时间几乎是不可能的;

Page 36: 第 2 讲 ARM 微处理器硬件结构

36

嵌入式系统学科组流水线技术

ARM 各个系列的流水线:

预取(Fetch)

译码(Decode)

执行(Execute)

预取(Fetch)

译码(Decode)

执行(Execute)

访存(Memory)

写入(Write)

预取(Fetch)

译码(Decode)

发送(Issue)

预取(Fetch)

预取(Fetch)

执行(Execute)

访存(Memory)

写入(Write)

译码(Decode)

发送(Issue)

执行(Execute)

转换(Snny)

访存(Memory)

写入(Write)

ARM7

ARM9

ARM10

ARM11

Page 37: 第 2 讲 ARM 微处理器硬件结构

37

嵌入式系统学科组第 2 章 ARM 微处理器硬件结

1111

2222

计 算 机 体 系 结 构

ARM 处理器结构和技术特征

ARM 处理器模式及内部寄存器 3333

4444 ARM 存 储 系 统 机 制

Page 38: 第 2 讲 ARM 微处理器硬件结构

38

嵌入式系统学科组处理器模式

处理器 7 种模式处理器模式 说明 备注

用户 (usr)

正常程序执行模式 不能直接切换到其它模式

系统 (sys)

运行操作系统的特权任务 与用户模式类似,但具有可以直接切换到其它模式等特权

快中断 (fiq)支持高速数据传输及通道处理 FIQ异常响应时进入此模式

中断 (irq) 用于通用中断处理 IRQ异常响应时进入此模式

管理 (svc)

操作系统保护模式 系统复位和软件中断响应时进入此模式

中止 (abt)

用于支持虚拟内存和 /或存储器保护 在 ARM7TDMI 没有大用处

未定义 (und)

支持硬件协处理器的软件仿真

未定义指令异常响应时进入此模式

Page 39: 第 2 讲 ARM 微处理器硬件结构

39

嵌入式系统学科组处理器模式

特权模式处理器模式 说明 备注

用户 (usr)

正常程序工作模式 不能直接切换到其它模式

系统 (sys)

用于支持操作系统的特权任务等

与用户模式类似,但具有可以直接切换到其它模式等特权

快中断 (fiq)支持高速数据传输及通道处理 FIQ异常响应时进入此模式

中断 (irq) 用于通用中断处理 IRQ异常响应时进入此模式

管理 (svc)

操作系统保护代码 系统复位和软件中断响应时进入此模式

中止 (abt)

用于支持虚拟内存和 /或存储器保护 在 ARM7TDMI 没有大用处

未定义 (und)

支持硬件协处理器的软件仿真

未定义指令异常响应时进入此模式

除用户模式外,其它模式均为特权模式。ARM 内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。

未定义 (und)

中止 (abt)

管理 (svc)

中断 (irq)

快中断 (fiq)

系统 (sys)

Page 40: 第 2 讲 ARM 微处理器硬件结构

40

嵌入式系统学科组处理器模式异常模式

处理器模式 说明 备注

用户 (usr)

正常程序工作模式 不能直接切换到其它模式

系统 (sys)

用于支持操作系统的特权任务等

与用户模式类似,但具有可以直接切换到其它模式等特权

快中断 (fiq)支持高速数据传输及通道处理 FIQ异常响应时进入此模式

中断 (irq) 用于通用中断处理 IRQ异常响应时进入此模式

管理 (svc)

操作系统保护代码 系统复位和软件中断响应时进入此模式

中止 (abt)

用于支持虚拟内存和 /或存储器保护 在 ARM7TDMI 没有大用处

未定义 (und)

支持硬件协处理器的软件仿真

未定义指令异常响应时进入此模式

未定义 (und)

中止 (abt)

管理 (svc)

中断 (irq)

快中断 (fiq) 这五种模式称为异常模式。它们除了可

以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。

Page 41: 第 2 讲 ARM 微处理器硬件结构

41

嵌入式系统学科组处理器模式 用户和系统模式

处理器模式 说明 备注

用户 (usr) 正常程序工作模式 不能直接切换到其它模式

系统 (sys)用于支持操作系统的特权任务等

与用户模式类似,但具有可以直接切换到其它模式等特权

快中断 (fiq)支持高速数据传输及通道处理 FIQ异常响应时进入此模式

中断 (irq) 用于通用中断处理 IRQ异常响应时进入此模式

管理 (svc) 操作系统保护代码 系统复位和软件中断响应时进入此模式

中止 (abt)用于支持虚拟内存和 /或存储器保护 在 ARM7TDMI 没有大用处

未定义 (und)

支持硬件协处理器的软件仿真 未定义指令异常响应时进入此模式

这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。 系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。

系统 (sys)

用户 (usr)

Page 42: 第 2 讲 ARM 微处理器硬件结构

42

嵌入式系统学科组通用寄存器寄存器 简介

在 ARM7TDMI 处理器内部有 37个用户可见的寄存器。

在不同的工作模式和处理器状态下,程序员可以访问的寄存器也不尽相同。

Page 43: 第 2 讲 ARM 微处理器硬件结构

43

嵌入式系统学科组ARM状态各模式下的寄存器寄存器类别

寄存器在汇编中的名称

各模式下实际访问的寄存器

用户 系统 管理 中止 未定义 中断 快中断

通用寄存器和程序计

数器

R0(a1) R0

R1(a2) R1

R2(a3) R2

R3(a4) R3

R4(v1) R4

R5(v2) R5

R6(v3) R6

R7(v4) R7

R8(v5) R8 R8_fiq *

R9(SB,v6) R9 R9_fiq *

R10(SL,v7) R10 R10_fiq *

R11(FP,v8) R11 R11_fiq *

R12(IP) R12 R12_fiq *

R13(SP) R13 R13_svc*R13_abt

*R13_und

*R13_irq *R13_fiq *

R14(LR) R14R14_svc

*R14_abt

*R14_und

*R14_irq *R14_fiq *

R15(PC) R15

状态寄存器

R16(CPSR) CPSR

SPSR 无 SPSR_abt

SPSR_abt

SPSR_und

SPSR_irq SPSR_fiq

Page 44: 第 2 讲 ARM 微处理器硬件结构

44

嵌入式系统学科组ARM状态各模式下的寄存器寄存器类别

寄存器在汇编中的名称

各模式下实际访问的寄存器

用户 系统 管理 中止 未定义 中断 快中断

通用寄存器和程序计

数器

R0(a1) R0

R1(a2) R1

R2(a3) R2

R3(a4) R3

R4(v1) R4

R5(v2) R5

R6(v3) R6

R7(v4) R7

R8(v5) R8 R8_fiq

R9(SB,v6) R9 R9_fiq

R10(SL,v7) R10 R10_fiq

R11(FP,v8) R11 R11_fiq

R12(IP) R12 R12_fiq

R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq

R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq

R15(PC) R15

状态寄存器

CPSR CPSR

SPSR 无 SPSR_abt

SPSR_abt

SPSR_und

SPSR_irq SPSR_fiq

SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abt

CPSR

R15

R14_fiqR14_irqR14_undR14_abtR14_svcR14

R13_fiqR13_irqR13_undR13_abtR13_svcR13

R12_fiqR12

R11_fiqR11

R10_fiqR10

R9_fiqR9

R8_fiqR8

R7

R6

R5

R4

R3

R2

R1

R0

所有的 37 个寄存器,分成两大类:31 个通用 32 位寄存器;6 个状态寄存器。

Page 45: 第 2 讲 ARM 微处理器硬件结构

45

嵌入式系统学科组ARM状态各模式下可以访问的寄存器

寄存器类别

寄存器在汇编中的名称

各模式下实际访问的寄存器

用户 系统 管理 中止 未定义 中断 快中断

通用寄存器和程序计

数器

R0(a1) R0

R1(a2) R1

R2(a3) R2

R3(a4) R3

R4(v1) R4

R5(v2) R5

R6(v3) R6

R7(v4) R7

R8(v5) R8 R8_fiq

R9(SB,v6) R9 R9_fiq

R10(SL,v7) R10 R10_fiq

R11(FP,v8) R11 R11_fiq

R12(IP) R12 R12_fiq

R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq

R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq

R15(PC) R15

状态寄存器

CPSR CPSR

SPSR 无 SPSR_abt

SPSR_abt

SPSR_und

SPSR_irq SPSR_fiq无

CPSR

R15

R14

R13

R12

R11

R10

R9

R8

R7

R6

R5

R4

R3

R2

R1

R0

用户

无CPSR

R15

R14

R13

R12

R11

R10

R9

R8

R7

R6

R5

R4

R3

R2

R1

R0

系统

SPSR_abt

CPSR

R15

R14_svc

R13_svc

R12

R11

R10

R9

R8

R7

R6

R5

R4

R3

R2

R1

R0

管理

SPSR_abt

CPSR

R15

R14_abt

R13_abt

R12

R11

R10

R9

R8

R7

R6

R5

R4

R3

R2

R1

R0

中止

SPSR_und

CPSR

R15

R14_und

R13_und

R12

R11

R10

R9

R8

R7

R6

R5

R4

R3

R2

R1

R0

未定义

SPSR_irq

CPSR

R15

R14_irq

R13_irq

R12

R11

R10

R9

R8

R7

R6

R5

R4

R3

R2

R1

R0

中断

SPSR_fiq

CPSR

R15

R14_fiq

R13_fiq

R12_fiq

R11_fiq

R10_fiq

R9_fiq

R8_fiq

R7

R6

R5

R4

R3

R2

R1

R0

快中断

Page 46: 第 2 讲 ARM 微处理器硬件结构

46

嵌入式系统学科组一般的通用寄存器

寄存器类别

寄存器在汇编中的名称

各模式下实际访问的寄存器

用户 系统 管理 中止 未定义 中断 快中断

通用寄存器和程序计

数器

R0(a1) R0

R1(a2) R1

R2(a3) R2

R3(a4) R3

R4(v1) R4

R5(v2) R5

R6(v3) R6

R7(v4) R7

R8(v5) R8 R8_fiq

R9(SB,v6) R9 R9_fiq

R10(SL,v7) R10 R10_fiq

R11(FP,v8) R11 R11_fiq

R12(IP) R12 R12_fiq

R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq

R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq

R15(PC) R15

状态寄存器

CPSR CPSR

SPSR 无 SPSR_abt

SPSR_abt

SPSR_und

SPSR_irq SPSR_fiq

R13_fiqR13_irqR13_undR13_abtR13_svcR13

R12_fiqR12

R11_fiqR11

R10_fiqR10

R9_fiqR9

R8_fiqR8

R7

R6

R5

R4

R3

R2

R1

R0

在汇编语言中寄存器 R0~R13 为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。

Page 47: 第 2 讲 ARM 微处理器硬件结构

47

嵌入式系统学科组一般的通用寄存器

寄存器类别

寄存器在汇编中的名称

各模式下实际访问的寄存器

用户 系统 管理 中止 未定义 中断 快中断

通用寄存器和程序计

数器

R0(a1) R0

R1(a2) R1

R2(a3) R2

R3(a4) R3

R4(v1) R4

R5(v2) R5

R6(v3) R6

R7(v4) R7

R8(v5) R8 R8_fiq

R9(SB,v6) R9 R9_fiq

R10(SL,v7) R10 R10_fiq

R11(FP,v8) R11 R11_fiq

R12(IP) R12 R12_fiq

R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq

R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq

R15(PC) R15

状态寄存器

CPSR CPSR

SPSR 无 SPSR_abt

SPSR_abt

SPSR_und

SPSR_irq SPSR_fiq

R13_fiqR13_irqR13_undR13_abtR13_svcR13

R12_fiqR12

R11_fiqR11

R10_fiqR10

R9_fiqR9

R8_fiqR8

R7

R6

R5

R4

R3

R2

R1

R0

R7

R6

R5

R4

R3

R2

R1

R0

其中 R0~ R7 为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的 32 位物理寄存器。

Page 48: 第 2 讲 ARM 微处理器硬件结构

48

嵌入式系统学科组一般的通用寄存器

寄存器类别

寄存器在汇编中的名称

各模式下实际访问的寄存器

用户 系统 管理 中止 未定义 中断 快中断

通用寄存器和程序计

数器

R0(a1) R0

R1(a2) R1

R2(a3) R2

R3(a4) R3

R4(v1) R4

R5(v2) R5

R6(v3) R6

R7(v4) R7

R8(v5) R8 R8_fiq

R9(SB,v6) R9 R9_fiq

R10(SL,v7) R10 R10_fiq

R11(FP,v8) R11 R11_fiq

R12(IP) R12 R12_fiq

R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq

R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq

R15(PC) R15

状态寄存器

CPSR CPSR

SPSR 无 SPSR_abt

SPSR_abt

SPSR_und

SPSR_irq SPSR_fiq

R14_fiqR14_irqR14_undR14_abtR14_svcR14

R13_fiqR13_irqR13_undR13_abtR13_svcR13

R12_fiqR12

R11_fiqR11

R10_fiqR10

R9_fiqR9

R8_fiqR8

寄存器 R8~ R14 为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器

Page 49: 第 2 讲 ARM 微处理器硬件结构

49

嵌入式系统学科组一般的通用寄存器

寄存器类别

寄存器在汇编中的名称

各模式下实际访问的寄存器

用户 系统 管理 中止 未定义 中断 快中断

通用寄存器和程序计

数器

R0(a1) R0

R1(a2) R1

R2(a3) R2

R3(a4) R3

R4(v1) R4

R5(v2) R5

R6(v3) R6

R7(v4) R7

R8(v5) R8 R8_fiq

R9(SB,v6) R9 R9_fiq

R10(SL,v7) R10 R10_fiq

R11(FP,v8) R11 R11_fiq

R12(IP) R12 R12_fiq

R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq

R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq

R15(PC) R15

状态寄存器

CPSR CPSR

SPSR 无 SPSR_abt

SPSR_abt

SPSR_und

SPSR_irq SPSR_fiq

R12_fiqR12

R11_fiqR11

R10_fiqR10

R9_fiqR9

R8_fiqR8

寄存器 R8~ R12 有两个分组的物理寄存器。一个用于除 FIQ 模式之外的所有寄存器模式,另一个用于 FIQ 模式。这样在发生 FIQ中断后,可以加速 FIQ 的处理速度。

Page 50: 第 2 讲 ARM 微处理器硬件结构

50

嵌入式系统学科组一般的通用寄存器

寄存器类别

寄存器在汇编中的名称

各模式下实际访问的寄存器

用户 系统 管理 中止 未定义 中断 快中断

通用寄存器和程序计

数器

R0(a1) R0

R1(a2) R1

R2(a3) R2

R3(a4) R3

R4(v1) R4

R5(v2) R5

R6(v3) R6

R7(v4) R7

R8(v5) R8 R8_fiq

R9(SB,v6) R9 R9_fiq

R10(SL,v7) R10 R10_fiq

R11(FP,v8) R11 R11_fiq

R12(IP) R12 R12_fiq

R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq

R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq

R15(PC) R15

状态寄存器

CPSR CPSR

SPSR 无 SPSR_abt

SPSR_abt

SPSR_und

SPSR_irq SPSR_fiq

寄存器 R13 、 R14 分别有 6 个分组的物理寄存器。一个用于用户和系统模式,其余 5个分别用于 5 种异常模式。

R14_fiqR14_irqR14_undR14_abtR14_svcR14

R13_fiqR13_irqR13_undR13_abtR13_svcR13

Page 51: 第 2 讲 ARM 微处理器硬件结构

51

嵌入式系统学科组堆栈指针寄存器 R13( SP )

寄存器类别

寄存器在汇编中的名称

各模式下实际访问的寄存器

用户 系统 管理 中止 未定义 中断 快中断

通用寄存器和程序计

数器

R0(a1) R0

R1(a2) R1

R2(a3) R2

R3(a4) R3

R4(v1) R4

R5(v2) R5

R6(v3) R6

R7(v4) R7

R8(v5) R8 R8_fiq

R9(SB,v6) R9 R9_fiq

R10(SL,v7) R10 R10_fiq

R11(FP,v8) R11 R11_fiq

R12(IP) R12 R12_fiq

R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq

R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq

R15(PC) R15

状态寄存器

CPSR CPSR

SPSR 无 SPSR_abt

SPSR_abt

SPSR_und

SPSR_irq SPSR_fiq

寄存器 R13 常作为堆栈指针( SP )。在 ARM 指令集当中,没有以特殊方式使用R13 的指令或其它功能,只是习惯上都这样使用。但是在 Thumb 指令集中存在使用R13 的指令。

Page 52: 第 2 讲 ARM 微处理器硬件结构

52

嵌入式系统学科组链接寄存器 R14( LR )

寄存器类别

寄存器在汇编中的名称

各模式下实际访问的寄存器

用户 系统 管理 中止 未定义 中断 快中断

通用寄存器和程序计

数器

R0(a1) R0

R1(a2) R1

R2(a3) R2

R3(a4) R3

R4(v1) R4

R5(v2) R5

R6(v3) R6

R7(v4) R7

R8(v5) R8 R8_fiq

R9(SB,v6) R9 R9_fiq

R10(SL,v7) R10 R10_fiq

R11(FP,v8) R11 R11_fiq

R12(IP) R12 R12_fiq

R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq

R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq

R15(PC) R15

状态寄存器

CPSR CPSR

SPSR 无 SPSR_abt

SPSR_abt

SPSR_und

SPSR_irq SPSR_fiq

R14 为链接寄存器( LR ),在结构上有两个特殊功能:在每种模式下,模式自身的 R14 版本用于保存子程序返回地址;当发生异常时,将 R14 对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。

Page 53: 第 2 讲 ARM 微处理器硬件结构

53

嵌入式系统学科组内部寄存器 R14( LR )寄存器与子程序调用

Lable程序 A 程序 B

R14

BL Lable地址 A ???

MOV PC,LR

R14( 地址 A)

Lable ???

1. 程序 A 执行过程中调用程序 B ;

操作流程

2. 程序跳转至标号Lable ,执行程序 B 。同时硬件将“ BL Lable” 指令的下一条指令所在地址存入R14 ( LR );3. 程序 B 执行最后,将 R14 寄存器的内容放入 PC ,返回程序 A ;

Page 54: 第 2 讲 ARM 微处理器硬件结构

54

嵌入式系统学科组 内部寄存器 R14 寄存器与异常发生

异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。

Page 55: 第 2 讲 ARM 微处理器硬件结构

55

嵌入式系统学科组 内部寄存器 R14 寄存器注意要点

当发生异常嵌套时,这些异常之间可能会发生冲突。

例如:如果用户在用户模式下执行程序时发生了 IRQ中断,用户模式寄存器不会被破坏。但是如果允许在 IRQ模式下的中断处理程序重新使能 IRQ中断,并且发生了嵌套的 IRQ中断时,外部中断处理程序保存在 R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。

Page 56: 第 2 讲 ARM 微处理器硬件结构

56

嵌入式系统学科组内部寄存器

R14 寄存器注意要点:

R14 R14_irq

用户模式下的程序 IRQ 模式下的程序 Aa

return

B...X

A

地址A

地址 A

1. 执行用户模式下的程序;

2.发生 IRQ 中断,硬件将某个地址存入IRQ 模式下的R14_irq 寄存器,用户模式下的 R14 没有被破坏;

3. IRQ 服务程序 A 执行完毕,将 R14_irq 寄存器的内容减去某个常量后存入 PC ,返回之前被中断的程序;

未被破坏 R14_irq

Page 57: 第 2 讲 ARM 微处理器硬件结构

57

嵌入式系统学科组内部寄存器

R14 寄存器注意要点:

R14 R14_irq

用户模式下的程序 IRQ 模式下的程序 Aa

B...X

A

地址A

地址 A

1. 执行用户模式下的程序;

2.发生 IRQ 中断,硬件将某个地址存入IRQ 模式下的R14_irq 寄存器,用户模式下的 R14 没有被破坏;

3. IRQ 服务程序 A 执行完毕,将 R14_irq 寄存器的内容减去某个常量后存入 PC ,返回之前被中断的程序;

未被破坏

IRQ 模式下的程序 Ba

return

B...X

A

地址B

地址 B

4. 如果在IRQ 处理程序中打开 IRQ 中断,并且再次发生 IRQ 中断;

5. 硬件将返回地址保存在R14_irq 寄存器中,原来保存的返回地址将被覆盖,造成错误;

R14_irq 被破坏

6. 在程序 B返回到程序A ,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;

returnreturn

解决办法是确保 R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将 R14 入栈),或者切换到其它处理器模式下。

Page 58: 第 2 讲 ARM 微处理器硬件结构

58

嵌入式系统学科组程序计数器 R15( PC )

寄存器类别

寄存器在汇编中的名称

各模式下实际访问的寄存器

用户 系统 管理 中止 未定义 中断 快中断

通用寄存器和程序计

数器

R0(a1) R0

R1(a2) R1

R2(a3) R2

R3(a4) R3

R4(v1) R4

R5(v2) R5

R6(v3) R6

R7(v4) R7

R8(v5) R8 R8_fiq

R9(SB,v6) R9 R9_fiq

R10(SL,v7) R10 R10_fiq

R11(FP,v8) R11 R11_fiq

R12(IP) R12 R12_fiq

R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq

R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq

R15(PC) R15

状态寄存器

CPSR CPSR

SPSR 无 SPSR_abt

SPSR_abt

SPSR_und

SPSR_irq SPSR_fiq

寄存器 R15为程序计数器( PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果 R15使用的方式超出了这些限制,那么结果将是不可预测的。

Page 59: 第 2 讲 ARM 微处理器硬件结构

59

嵌入式系统学科组内部寄存器

读 R15的限制:

正常操作时,从 R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上 8 个字节(两条 ARM 指令的长度)。由于 ARM 指令总是以字为单位,所以R15 寄存器的最低两位总是为 0 。

LDR R0,PC

???

???PC

PC-4

PC-8 正在执行正在译码正在取指

流水线状态地址 程序代码

Page 60: 第 2 讲 ARM 微处理器硬件结构

60

嵌入式系统学科组内部寄存器

读 R15 的限制

当使用 STR或 STM 指令保存 R15 时,会有一个例外。这些指令可能将当前指令地址加 8 字节或加 12 字节保存(将来可能还有其它数字)。偏移量是 8还是 12 取决于具体的 ARM 芯片,但是对于一个确定的芯片,这个值是一个常量。

所以最好避免使用 STR 和 STM 指令来保存 R15 ,如果很难做到,那么应当在程序中计算出该芯片的偏移量。

Page 61: 第 2 讲 ARM 微处理器硬件结构

61

嵌入式系统学科组内部寄存器

读 R15的限制:

计算偏移量 (PC 值和当前指令地址的差 ) 程序代码:

SUB R1,PC,#4 ;R1= 下面 STR 指令的地址

STR PC,[R0] ; 保存 STR 指令地址 +偏移量

LDR R0,[R0] ; 然后重装

SUB R0,R0,R1 ; 计算偏移量

04

8

12

ARM 状态

正常操作时,写入 R15 的值被当作一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。

Page 62: 第 2 讲 ARM 微处理器硬件结构

62

嵌入式系统学科组内部寄存器

写 R15的限制:

由于 ARM 指令以字节为边界,因此写入 R15 的值最低两位通常为 0b00 。具体的规则取决于内核结构的版本:

在 ARM 结构 V3 版及以下版本中,写入 R15 的值的最低两位被忽略,因此跳转地址由指令的实际目标地址(写入R15 的值)和 0xFFFFFFFC 相与得到;在 ARM 结构 V4 版及以上版本中,写入 R15 的值的最低两位为 0 ,如果不是,结果将不可预测。

Page 63: 第 2 讲 ARM 微处理器硬件结构

63

嵌入式系统学科组程序状态寄存器 CPSR

寄存器类别

寄存器在汇编中的名称

各模式下实际访问的寄存器

用户 系统 管理 中止 未定义 中断 快中断

通用寄存器和程序计

数器

R0(a1) R0

R1(a2) R1

R2(a3) R2

R3(a4) R3

R4(v1) R4

R5(v2) R5

R6(v3) R6

R7(v4) R7

R8(v5) R8 R8_fiq

R9(SB,v6) R9 R9_fiq

R10(SL,v7) R10 R10_fiq

R11(FP,v8) R11 R11_fiq

R12(IP) R12 R12_fiq

R13(SP) R13 R13_svc R13_abt R13_und R13_irq R13_fiq

R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq

R15(PC) R15

状态寄存器

CPSR CPSR

SPSR 无 SPSR_abt

SPSR_abt

SPSR_und

SPSR_irq SPSR_fiq

寄存器 CPSR 为程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器( SPSR )”可以被访问。每种异常都有自己的 SPSR ,在进入异常时它保存CPSR 的当前值,异常退出时可通过它恢复 CPSR 。详细描述参看 3.8小节。

Page 64: 第 2 讲 ARM 微处理器硬件结构

64

嵌入式系统学科组内部寄存器

ARM状态和 Thumb状态之间寄存器的关系

Thumb状态寄存器与 ARM状态寄存器有如下的关系:

Thumb状态 R0~ R7 与 ARM状态 R0~R7 相同;Thumb状态 CPSR 和 SPSR 与 ARM状态CPSR 和 SPSR 相同;Thumb状态 SP映射到 ARM状态 R13 ;Thumb状态 LR映射到 ARM状态 R14 ;Thumb状态 PC映射到 ARM状态PC ( R15 )。

Page 65: 第 2 讲 ARM 微处理器硬件结构

65

嵌入式系统学科组Thumb状态寄存器在 Arm状态寄存器上的映

R1 R2 R3 R4 R5

T humb

R6 R7

( C PSR )

( SPSR )

R1 R2 R3 R4 R5

A R M

R6 R7 R8

( C PSR )

( SPSR )

R9 R10 R11 R12

R0 R0 状态 状态

堆栈指针( SP) 连接寄存器( LR) 程序计数器( PC)

当前程序状态寄存器

被保存程序状态寄存器

堆栈指针( R13) 连接寄存器( R14) 程序计数器( R15)

当前程序状态寄存器

被保存程序状态寄存器

R1 R2 R3 R4 R5 R6 R7 R8 R9

R10 R11 R12

R0

堆栈指针(R13) 连接寄存器(R14) 程序计数器(R15)

低寄存器

高寄存器

Page 66: 第 2 讲 ARM 微处理器硬件结构

66

嵌入式系统学科组内部寄存器

在 Thumb状态中访问高寄存器

在 Thumb状态中,高寄存器( R8~R15 )不是标准寄存器集的一部分。汇编语言程序员对它们的访问受到限制。

可以使用 MOV 、 CMP 和 ADD 指令对高寄存器操作,详见第 4 章。

Page 67: 第 2 讲 ARM 微处理器硬件结构

67

嵌入式系统学科组程序状态寄存器

简介 ARM7TDMI 内核包含 1 个 CPSR 和 5 个供异常处理程序使用的 SPSR 。 CPSR反映了当前处理器的状态,其包含:

4 个条件代码标志(负 (N) 、零 (Z) 、进位(C) 和溢出 (V) );2 个中断禁止位,分别控制一种类型的中断; 5 个对当前处理器模式进行编码的位;1 个用于指示当前执行指令 (ARM还是Thumb) 的位。

Page 68: 第 2 讲 ARM 微处理器硬件结构

68

嵌入式系统学科组程序状态寄存器

N Z C V — — I M0M1M2M3M4TF—. . .

31 30 29 28 27 26 8 7 6 5 4 3 2 1 0

简介

条件代码标志 保留 控制位

溢出标志 oVerflow进位或借位扩展 Carry零 Zero

负或小于 Negative IRQ禁止 Interrupt

FIQ禁止 Fast

状态位 Thumb

模式位 Mode

N Z C V I M0M1M2M3M4TF

CPSR 寄存器的格式

Page 69: 第 2 讲 ARM 微处理器硬件结构

69

嵌入式系统学科组程序状态寄存器

简介

每个异常模式还带有一个程序状态保存寄存器 ( SPSR ),它用于保存在异常发生之前的CPSR 。 CPSR 和 SPSR 通过特殊指令( MRS 、 MSR )进行访问。

Page 70: 第 2 讲 ARM 微处理器硬件结构

70

嵌入式系统学科组程序状态寄存器

条件代码标志

大多数“数值处理指令”可以选择是否影响条件代码标志位。通常如果指令带 S后缀,则该指令的执行会影响条件代码标志;但有一些指令的执行总是会影响条件代码标志。

N 、 Z 、 C 和 V 位都是条件代码标志。算术操作、逻辑操作、 MSR或者 LDM 指令可以对这些位进行设置。所有 ARM 指令都可按条件来执行,而 Thumb 指令中只有分支指令可按条件执行。

Page 71: 第 2 讲 ARM 微处理器硬件结构

71

嵌入式系统学科组程序状态寄存器

条件代码标志

各标志位的含义如下:N 运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时 N=1 ,结果为正数或零时 N=0 ;Z 指令结果为 0 时 Z=1 (通常表示比较结果“相等”),否则 Z=0 ;

Page 72: 第 2 讲 ARM 微处理器硬件结构

72

嵌入式系统学科组程序状态寄存器

条件代码标志

各标志位的含义如下:C 当进行加法运算 ( 包括 CMN 指令 ) ,并且最高位产生进位时 C=1 ,否则 C=0 。当进行减法运算 ( 包括 CMP 指令 ) ,并且最高位产生借位时C=0 ,否则 C=1 。对于结合移位操作的非加法 /减法指令, C 为从最高位最后移出的值,其它指令 C 通常不变; V当进行加法 /减法运算,并且发生有符号溢出时V=1 ,否则 V=0 ,其它指令 V 通常不变。

Page 73: 第 2 讲 ARM 微处理器硬件结构

73

嵌入式系统学科组程序状态寄存器

控制位

CPSR 的最低 8 位为控制位,当发生异常时,这些位被硬件改变。当处理器处于一个特权模式时,可用软件操作这些位。

它们分别是:中断禁止位;T 位;模式位。

Page 74: 第 2 讲 ARM 微处理器硬件结构

74

嵌入式系统学科组程序状态寄存器

控制位

中断禁止位包括 I 和 F 位:当 I 位置位时, IRQ 中断被禁止;当 F 位置位时, FIQ 中断被禁止。

T 位反映了正在操作的状态:当 T 位为 1 时,处理器正在 Thumb状态下运行;当 T 位清零时,处理器正在 ARM状态下运行。

Page 75: 第 2 讲 ARM 微处理器硬件结构

75

嵌入式系统学科组程序状态寄存器

控制位

中断禁止位包括 I 和 F 位:当 I 位置位时, IRQ 中断被禁止;当 F 位置位时, FIQ 中断被禁止。

T 位反映了正在操作的状态:当 T 位为 1 时,处理器正在 Thumb状态下运行;当 T 位清零时,处理器正在 ARM状态下运行。

Page 76: 第 2 讲 ARM 微处理器硬件结构

76

嵌入式系统学科组程序状态寄存器

控制位

模式位包括 M4 、 M3 、 M2 、 M1 和 M0 ,这些位决定处理器的操作模式。

注意:不是所有模式位的组合都定义了有效的处理器模式,如果使用了错误的设置,将引起一个无法恢复的错误。

Page 77: 第 2 讲 ARM 微处理器硬件结构

77

嵌入式系统学科组CPSR 模式位设置表M[4:0]

模式 可见的 Thumb状态寄存器 可见的 ARM状态寄存器

10000

用户 R0~ R7,SP,LR,PC,CPSR R0~ R14,PC, CPSR

10001

快中断

R0~R7,SP_fiq,LR_fiq,PC,CPSR,SPSR_fiq

R0~ R7,R8_fiq~R14_fiq,PC,CPSR, SPSR_fiq

10010

中断R0~R7,SP_irq,LR_irq,PC,CPSR, SPSR_fiq

R0~R12,R13_irq,R14_irq,PC,CPSR, SPSR_irq

10011

管理R0~R7,SP_svc,LR_svc,PC,CPSR, SPSR_svc

R0~R12,R13_svc,R14_svc,PC,CPSR, SPSR_svc

10111

中止R0~R7,SP_abt,LR_abt,PC,CPSR, SPSR_abt

R0~R12,R13_abt,R14_abt,PC,CPSR, SPSR_abt

11011

未定义R0~R7,SP_und,LR_und,PC,CPSR, SPSR_und

R0 ~R12,R13_und,R14_und,PC,CPSR,SPSR_und

11111

系统 R0~ R7,SP,LR,PC,CPSR R0~ R14,PC, CPSR

Page 78: 第 2 讲 ARM 微处理器硬件结构

78

嵌入式系统学科组程序状态寄存器

保留位

CPSR 中的保留位被保留将来使用。为了提高程序的可移植性,当改变 CPSR标志和控制位时,请不要改变这些保留位。另外,请确保程序的运行不受保留位的值影响,因为将来的处理器可能会将这些位设置为 1或者 0 。

Page 79: 第 2 讲 ARM 微处理器硬件结构

79

嵌入式系统学科组第 2 章 ARM 微处理器硬件结

1111

2222

计 算 机 体 系 结 构

ARM 处理器结构和技术特征

ARM 处理器模式及内部寄存器

3333

4444 ARM 存 储 系 统 机 制

Page 80: 第 2 讲 ARM 微处理器硬件结构

80

嵌入式系统学科组存储器的存储体系 单体单字存储器

单体多字存储器

多体单字交叉存取存储器

多体多字交叉存取存储器

一般把这些能并行读出多个 CPU 字的单体多字和多体单字及多体多字的交叉存取系统,统称为并行主存系统。

Page 81: 第 2 讲 ARM 微处理器硬件结构

81

嵌入式系统学科组单体单字存储器 单体单字存贮器

存贮器字长W 与 CPU 字长W相同 ,一次访问一个存贮器字 ,主存最大频宽 BM =W/TM

存贮周期 TM TM 是连续启动一个存贮体所需

要的时间间隔。 存贮器频宽

是指存贮器可以提供的数据传送率,一般用每秒钟所传送的信息位数来衡量。

W 位读出寄存器

地址寄存器

l

返回

Page 82: 第 2 讲 ARM 微处理器硬件结构

82

嵌入式系统学科组单体多字 2) 单体多字 存贮器字长等于 m 个 CPU 字 ,BM =mW/TM

aW 位W 位 W 位 W 位

地址寄存器

单体多字 (m=4) 存贮器

W 位单字长寄存器

单体指只有一套地址寄存器和地址译码器CPU每次访问可同时读出多个存储字。 读出的的数据同时或分时送CPU. 返回

Page 83: 第 2 讲 ARM 微处理器硬件结构

83

嵌入式系统学科组多体单字 3) 多体单字交叉存取存储器

总线控制

地址寄存器 0 地址寄存器 1 地址寄存器 2 地址寄存器 3

M0

M1

M2

M3

主控 (主存控制部件 )

CPU IOP

…… …… …… ……

多体 (m=4)交叉存贮器 返回

Page 84: 第 2 讲 ARM 微处理器硬件结构

84

嵌入式系统学科组存储器层次结构存储层次中,层次结构个部分的特点是:每位价格从上往下依次减少;存储容量从上往下依次增加;存取速度从上往下依次减慢;

④ CPU 的访问频度从上往下依次减少。

Page 85: 第 2 讲 ARM 微处理器硬件结构

85

嵌入式系统学科组ARM 存储器存储层次 ARM 存储器采用层次存储结构,其目的在于以

低速存储器的价格得到高速存储器的性能。 ARM架构的处理器的存储器寻址空间为 4GB

,一般系统所需 RAM/ROM 经总线外接。 存储层次:

寄存器

片上 RAM

主存

硬盘

Page 86: 第 2 讲 ARM 微处理器硬件结构

86

嵌入式系统学科组ARM 存储器存储层次 ARM 支持的数据类型 ARM 处理器支持以下六种数据类型:

8位有符号和无符号字节。 16 位有符号和无符号半字,以 2 字节的边界对齐。 32 位有符号和无符号字,以 4 字节的边界对齐。

在内部,所有 ARM操作都是面向 32 位的操作数;只有数据传送指令支持较短的字节和半字的

数据类型。

当从存储器调入一个字节和半字时,根据指令对数据的操作类型,将其无符号 0或有符号“符号位”扩展为 32 位,进而作为32 位数据在内部进行处理。

Page 87: 第 2 讲 ARM 微处理器硬件结构

87

嵌入式系统学科组ARM 内存储器的组织大端的数据存放格式

低地址

高地址

地址 A

地址 A+1

地址 A+2

地址 A+3

最高有效字节的地址就是该 word 的地址

最高有效字节位于最低地址

word a=0x f6 73 4b cd

f6

73

4b

cd

Page 88: 第 2 讲 ARM 微处理器硬件结构

88

嵌入式系统学科组ARM 内存储器的组织小端的数据格式

低地址

高地址

地址 A

地址 A+1

地址 A+2

地址 A+3

最低有效字节的地址就是该 word 的地址

最低有效字节位于最低地址

word a=0x f6 73 4b cd

f6

73

4b

cd

Page 89: 第 2 讲 ARM 微处理器硬件结构

89

嵌入式系统学科组ARM4 种存储周期总线周期类型 说 明 nMREQ SEQ 特 点

N周期 非顺序周期 0 0 最简单的总线周期,存储控制器必须启动存储器访问来满足这个请求;该方式存储系统常需要长的访问时间。(Pentium 的 T周期 )

S周期 顺序周期 0 1 多用于实现总线上的突发传送,第一个周期必须是一个内部周期。

I周期 内部周期 1 0 不执行存储器访问;可广播下一次访问的地址以便开始译码,与 S周期配合实现总线上的突发传送。

C周期 协处理器寄存器传送周期

1 1 通过数据总线向或从协处理器传送数据;传送期间,不需存储周期 ,存储系统不允许驱动数据总线。

注意:总线周期使用 nMREQ和 SEQ 信号编码, nMREQ 、

SEQ 为 CPU引脚。

Page 90: 第 2 讲 ARM 微处理器硬件结构

90

嵌入式系统学科组高速缓冲存储器 Cache 高速缓存 Cache

高速缓冲存储器中存放的是当前使用得最多的程序代码和数据,即主存中部分内容的副本。

在嵌入式系统中 Cache全部都集成在嵌入式微处理器内。

可分为数据 Cache 、指令 Cache或混合 Cache。

不同的处理器其 Cache 的大小不一样。 一般 32 位的嵌入式微处理器都内置 Cache 。

Page 91: 第 2 讲 ARM 微处理器硬件结构

91

嵌入式系统学科组Cache Cache命中: CPU每次读取主存时, Cache 控制

器都要检查 CPU送出的地址,判断 CPU 要读取的数据是否在 Cache 中,如果在就称为命中。

Cache未命中:读取的数据不在 Cache 中,则对主存储器进行操作,并将有关内容置入 Cache 。

写入方法:• 通 写 ( Write Through ) : 写 Cache

时, Cache 与对应内存内容同步更新。• 回写( Write Back):写 Cache 时,只有写入 Cache 内容移出时才更新对应内存内容。

Page 92: 第 2 讲 ARM 微处理器硬件结构

92

嵌入式系统学科组命中率

Page 93: 第 2 讲 ARM 微处理器硬件结构

93

嵌入式系统学科组高速缓存( Cache )的分类

统一 Cache :如果一个存储系统中指令预取时使用的 cache 和数据读写时使用的 cache 是用一个 cache ,这是称系统使用统一的 cache 。

独立的数据 /程序 Cache :如果一个存储系统中指令预取时使用的 cache 和数据读写时使用的 cache 是各自独立的,称系统使用了独立的 cache 。其中,用于指令预取的 cache 称为指令 cache ,用于数据读写的 cache 称为数据 cache 。

Page 94: 第 2 讲 ARM 微处理器硬件结构

94

嵌入式系统学科组统一 Cache 数据和指令共用一个 cache ,如 ARM710T 。

寄存器

处理器

Cache

指令的拷贝

数据的拷贝存储器

指令

数据地址 指令和数据

地址

指令和数据

FF....FF

00...00

Page 95: 第 2 讲 ARM 微处理器硬件结构

95

嵌入式系统学科组独立 Cache

数据和指令分离 cache ,如 ARM920T 。

Cache

指令的拷贝

Cache

Cache

寄存器

数据的拷贝

存储器

指令

数据

FF...FF

00...00

地址

地址

指令

指令

地址

地址

指令

数据

Page 96: 第 2 讲 ARM 微处理器硬件结构

96

嵌入式系统学科组高速缓存 Cache 的分类 读操作分配 cache 和写操作分配 cache:当进行数据写

操作时,可能 cache未命中,这时根据 cache 执行的操作不同,将 cache 分为两类:读操作分配 cache 和写操作分配 cache 。 读操作分配 cache ,当进行数据写操作时 , 如果 cac

he未命中,只是简单的将数据写入主存中。

写操作分配 cache ,在读操作不命中时 ,只简单的访问主存 , 读相应内容 ,并不对 Cache填充 ;

注意:读操作分配主要在数据读取未命中时,才进行 c

ache 内容预取填充。

注意:当进行数据写操作分配时,如果 cache未命中, cache 系统将会进行 cache 内

容预取,从主存中将相应的块读取到 cache 中相应的位置,

并执行写操作,把数据写入到cache 中。

Page 97: 第 2 讲 ARM 微处理器硬件结构

97

嵌入式系统学科组Cache

CPUCPU

地址索引机构

地址索引机构

置换控制器置换控制器

高速缓冲存储器

高速缓冲存储器

段(页)地址 高位地址

低位地址

地址总线

数据总线

Cache 结构框图

Page 98: 第 2 讲 ARM 微处理器硬件结构

98

嵌入式系统学科组Cache 的工作原理:

在 cache 存储系统中,把主存储器和 cache都划分成相同大小的块。主存地址可以由块号 M 和块内地址 N 两部分组成。同样, cache 的地址也由块号 m 和块内地址n 组成。工作原理图如图所示:

M块号 N块内地址

->cache主存地址变换

m块号 n块内地址

cache替换策略

替换块

装入块

主存储器

未命中

已满

命中

未满

CPU虚拟地址(来自 )地址转换

Page 99: 第 2 讲 ARM 微处理器硬件结构

99

嵌入式系统学科组地址映像和变换方式

在 Cache当中,地址映像是指把主存地址空间映像到 cache 地址空间。也就是说,把存放在主存中的程序或数据按照某种规则装入到cache 中,并建立主存地址到 cache 地址之间的对应关系。

地址变换是指当程序或数据已经装入到 cache后,在实际运行过程当中,把主存地址如何变成 cache 地址。

Page 100: 第 2 讲 ARM 微处理器硬件结构

100

嵌入式系统学科组四种映象方式 常用的地址映像和变换方式有:全相联地址映像和变换、组相联地址映像和变换、直接映像和变换。

全相联映象与变换 直接映象与变换 组相联映像与变换 段相联映像与变换

Page 101: 第 2 讲 ARM 微处理器硬件结构

101

嵌入式系统学科组全相联映象与变换

特点: 冲突概率低

空间利用率高地址变换复杂

Page 102: 第 2 讲 ARM 微处理器硬件结构

102

嵌入式系统学科组直接映象与变换特点:硬件简单冲突概率高

出现大量空闲块很少使用。

Page 103: 第 2 讲 ARM 微处理器硬件结构

103

嵌入式系统学科组组相联映像与变换

讨论:S=ncb 时,全相联映像

S=1 时,直接映像;当主存空间和 Cache

空间确定时, q+s 已确定

s值大,组内块数多,冲突概率小,变换复杂s值小,组内块数少,冲突概率大,变换简单

组的选择常采用位选择算法 若主存第 i 块映象到第 k 组,

则 :

k= i mod ( G ) ( G 为Cache 的组数)

设 G= 2g ,则当表示为二进制数时, k 实

际上就是 i 的低 g 位:

Page 104: 第 2 讲 ARM 微处理器硬件结构

104

嵌入式系统学科组段相联映象 减少相联目录表的容量,降低成本,提高地址变换速度。

组间全相联,组内直接映象。教材中组相联映像即该种 :

n 路即该方法中每组的块数 组数一致 .(同 Pentium 中的 Cache)

Page 105: 第 2 讲 ARM 微处理器硬件结构

105

嵌入式系统学科组ARM Cache 的替换算法 轮转法

轮转法维护一个逻辑计数器,利用该计数器依次选择将要被替换出去的 cache块。

随机替换算法 通过一个伪随机数发生器产生一个伪随机数,以新块替换编号为该伪随机数的 cache块。

算法的优点:算法简单,易于实现。

缺点:命中率低, cache平均性能 不稳定。

Cache 的地址变换和 替换全部利用硬件实现 .

Page 106: 第 2 讲 ARM 微处理器硬件结构

106

嵌入式系统学科组ARM 存储管理单元 MMU

与其他中低档单片机不同, ARM处理器中一般都包含一个存储器管理部件,用于对存储器的管理。

为了适应不同的嵌入式应用, ARM存储系统的体系结构存在很多差别。简单的可以使用像单片机系统中使用的平板式地址映射机制即可;而一些复杂的系统中则可能包含多种技术来支持功能强大的存储系统。

Page 107: 第 2 讲 ARM 微处理器硬件结构

107

嵌入式系统学科组ARM 存储管理单元 MMU

在 ARM 系统中,存储管理单元 MMU主要完成以下工作:

虚拟存储空间到物理存储空间的映射。在 ARM中采用了页式虚拟存储管理。它把虚拟地址空间分成一个个固定大小的块,每一块称为一页,把物理内存的地址空间也分成同样大小的页。 MMU实现的就是从虚拟地址到物理地址的转换。

存储器访问权限的控制。 设置虚拟存储空间的缓冲的特性。

Page 108: 第 2 讲 ARM 微处理器硬件结构

108

嵌入式系统学科组ARM 存储管理单元 MMU

系统控制协处理 CP15 的功能用于处理、控制 ARM的特殊性能

片上存储器管理单元 (MMU)

指令、数据缓存

写缓冲器

Page 109: 第 2 讲 ARM 微处理器硬件结构

109

嵌入式系统学科组ARM 存储管理单元 MMU

为控制这些特性, CP15 提供了 16 个额外寄存器 ,其中 8个与 MMU 相关

寄存器 作 用

寄存器 C1中的某些位 用于配置 MMU 中的一些操作

寄存器 C2 保存内存中页表的基地址

寄存器 C3 设置域( domain)的访问控制属性

寄存器 C4 保留 寄存器 C5 内存访问失效状态指示

寄存器 C6 内存访问失效时失效的地址

寄存器 C8 控制与清楚 TLB 内容相关操作

寄存器 C10 控制与锁定 TLB 内容相关操作

Page 110: 第 2 讲 ARM 微处理器硬件结构

110

嵌入式系统学科组ARM 存储管理单元 MMU

CP15 的寄存器 C1 的位 [0] 用于控制禁止 /使能 MMU 当 CP15 的寄存器 C1[0]=0 时,禁止MMU ; 当 C1[0]=1 时,使能 MMU 。

访问 CP15 寄存器的指令有如下两条: MCR Register -> Coprocessor Register MRC Coprocessor Register -> Register注意:这两条指令只能在系统模式

下执行;在用户模式下执行该指令将引起异常。

Page 111: 第 2 讲 ARM 微处理器硬件结构

111

嵌入式系统学科组ARM 存储器存储访问过程 使能 MMU时存储访问过程 : 芯片设置为 MMU使能 (设置 CP15的相应寄存器 )根据 ARM 输出的虚拟地址在 TLB 中搜索,在这

个过程当中,如果该虚拟地址对应的地址变换条目不在 TLB 中, CPU从位于内存中的页表中查询

注意:对应于该虚拟地址的地址变换条目,并把

相应的结果添加到TLB 中。如果 TLB 已经满了,则需要根据

一定的替换算法进行替换。 0x0800 0x0400

虚拟地址高位逻辑页号

物理地址高位物理页号

虚拟地址 物理地址0x0800 00e3 0x0400 00e3

Page 112: 第 2 讲 ARM 微处理器硬件结构

112

嵌入式系统学科组ARM 存储器存储访问过程当得到了需要的地址变换条目后,将进行以下

的操作:

①得到该虚拟地址对应的物理地址。 ② 根 据 条 目 中 C ( cachable ) 控 制 位 和B ( Bufferable )控制位决定是否缓存该内存访问的结果。

③根据存储权限控制位和域访问控制位确定该内存访问是否被允许。如果该内存访问不被允许, CP15向 ARM处理器报告存储访问中止。

备注:对于不允许缓存( uncached )的存储访问,使用步骤( 1 )中得到的物理地址访问内存。对于允许缓存( cached )的存储访问,如果在 cache命中,则忽略物理地址;如果 cache 没有命中,则使用步骤( 1 )中得到的物理地址访问内存,并把该块数据读取到 cache

中。

Page 113: 第 2 讲 ARM 微处理器硬件结构

113

嵌入式系统学科组ARM 存储器存储访问过程 允许缓存( cached)的 MMU 存储访问示意图如下

访问权限控制硬件

TLB 页表遍历硬件系统

ARM CacheWri te与

Buff er

Cache内容获取硬件系统

主存储系统

虚拟地址

物理地址

C B、 位域控制位

访问控制位

Page 114: 第 2 讲 ARM 微处理器硬件结构

114

嵌入式系统学科组ARM 存储器存储访问过程

禁止MMU时存储访问过程 先要确定芯片是否支持 cache 和 write buffer

① 如果芯片禁止 cache 和 write buffer(设置 cp15 寄存器实现),则存储访问将不考虑 C和 B控制位,以 arm处理器输出的地址作为物理地址访问存储器, arm存储器不经 cache 和write buffer与主存交换数据。

Page 115: 第 2 讲 ARM 微处理器硬件结构

115

嵌入式系统学科组ARM 存储器存储访问过程

② 如果芯片禁止 MMU时使能 cache和 write buffer, arm存储器经 cache和 write buffer,与主存交换数据。 如果使用统一的 TLB,置 C=0,B=0; 若使用分开的 TLB,则数据访问时,置 C=0,B=0;指令读取时,置 C=1(指令 cache只读,不必写缓冲)

③所有的物理地址和虚拟地址相等,即使用平板存储模式,存储访问不进行权限控制, MMU也不会产生存储访问中止信号。

Page 116: 第 2 讲 ARM 微处理器硬件结构

116

嵌入式系统学科组MMU 中的地址变换过程

ARM 系统中虚拟存储空间到物理存储空间的映射都是以内存块为单位进行的。即虚拟存储空间中一块连续的存储空间被映射到物理存储空间中同样大小的一块连续存储空间。

在页表和 TLB 中,每一个地址变换条目实际上记录了一个虚拟存储空间的存储块的基地址与物理存储空间相应的一个存储块的基地址的对应关系。根据存储块大小,可以有多种地址变换 .

Page 117: 第 2 讲 ARM 微处理器硬件结构

117

嵌入式系统学科组MMU 中的地址变换过程

ARM 支持的存储块 :段( section):由 1MB 的存储器块构成大页( large page):由 64KB 的存储器块构成小页( small page):由 4KB 的存储器块构成微页( tiny page):由 1KB 的存储器块构成

Page 118: 第 2 讲 ARM 微处理器硬件结构

118

嵌入式系统学科组MMU 中的地址变换过程在MMU 中实现虚拟地址到物理地址的映射是

通过两级页表来实现的: 一级页表中包含有以段为单位的地址变换条目以及指向二级页表的指针。一级页表实现的地址映射粒度较大。以段为单位的地址变换过程只需要一级页表。

二级页表中包含有以大页和小页为单位的地址变换条目。有一种类型的二级页表还包含有以极小页为单位的地址变换条目。以页为单位的地址变换过程需要二级页表。

Page 119: 第 2 讲 ARM 微处理器硬件结构

119

嵌入式系统学科组一级页表的地址变换过程

页表的基地址 为 0

页表内序号

页表的基地址 页表内序号 00

cp15 的寄存器 C2

31 20 19 0

31 14 13 2 1 0

CP15的寄存器 C2中存放的是内存中页表的基地址。其中位[31..14]为内存中页表的基

地址,位 [13..0]为0。 CP15的寄存器 C2的位[31..14]和虚拟地址的位

[31..20]结合作为一个 32位数的高 30位,在将该 32位数的低两位值为 00,从而形成一

个 32位的索引值。

Page 120: 第 2 讲 ARM 微处理器硬件结构

120

嵌入式系统学科组四种格式的一级描述符

0 0

粗粒度二级页表的基地址 0 域 用户定义

0 1

段基地址 为 0 A P 0 域 C B

1 0

细粒度二级页表基地址 为 0 域 用户定义

1 1

无效

粗表

细表

31 20 19 12 11 10 9 8 5 4 3 2 1 0

Page 121: 第 2 讲 ARM 微处理器硬件结构

121

嵌入式系统学科组粗粒度页表描述符 当一级描述符的位 [1..0]为 0b01( 0b代表二进制)

时,该一级描述符中包含了粗粒度的二级页表的物理地址,这种一级描述符称为粗粒度页表描述符。它的格式和各个字段的含义如下:

粗粒度二级页表的基地址 0 域 用户定义 0 1

31 10 9 8 5 4 2 1 0

一级描述符的类型标识由用户定义

本段所在的域的标识符

当前未使用应为0粗粒度二级页表的基地址,该地址是 1KB 对齐的

Page 122: 第 2 讲 ARM 微处理器硬件结构

122

嵌入式系统学科组粗粒度页表 粗粒度页表描述符获取二级描述符的过程

页表基地址 0为

页表基地址 一级页表内偏移序号 00

一级页表内偏移序号 二级页表内偏移序号

二级页表基地址 10用户定义域0

二级页表基地址 二级页表内偏移序号

10 9 2 1 031

31 10 9 8 5 4 2 1 0

31 14 13 2 1 0

31 20 19 0

31 14 13 0

CP15 C2中的寄存器

一级描述符地址

一级描述符

二级描述符地址

虚拟地址

00

12 11

Page 123: 第 2 讲 ARM 微处理器硬件结构

123

嵌入式系统学科组段描述符 当一级描述符的位 [1:0]为 0b10时,该一级描述符

为段描述符,它的格式和各个字段的含义如下:

粗粒度二级页表的基地址 0 域 用户定义 0 1

31 10 9 8 5 4 2 1 0

一级描述符的类型标识位 [3 2]C , B 控制位 , 位 [4] 由用户定义本段所在的域的标识符

当前未使用应为0位 [11 10]访问权限控制位,位 [19..12] 为 0 ,位 [31..20] 该段对应的物理空间基地址高 1

2 位

Page 124: 第 2 讲 ARM 微处理器硬件结构

124

嵌入式系统学科组基于段的地址变换过程

页表基地址 0为

页表基地址 一级页表内偏移序号 00

一级页表内偏移序号 段内地址偏移量

段对应的物理基地址 10BC用户定义域0A P0

二级页表基地址 段内地址偏移量

20 19 2 1 031

31 20 19 12 11 10 9 8 5 4 3 2 1 0

31 14 13 2 1 0

31 20 19 0

31 14 13 0

CP15 C2中的寄存器

一级描述符地址

一级描述符

二级描述符地址

虚拟地址

Page 125: 第 2 讲 ARM 微处理器硬件结构

125

嵌入式系统学科组细粒度页表描述符 当一级描述符的位 [1:0]为 0b11时,该一级描述符中包含了细粒度的二级页表的物理地址,称为细粒度页表描述符。它的格式和各个字段的含义如下:

粗粒度二级页表的基地址 0 域 用户定义 0 1

31 10 9 8 5 4 2 1 0

一级描述符的类型标识由用户定义

本段所在的域的标识符

当前未使用应为0粗粒度二级页表的基地址,该地址是 4KB 对齐的

Page 126: 第 2 讲 ARM 微处理器硬件结构

126

嵌入式系统学科组细粒度页表 细粒度页表描述符获取二级描述符的过程

页表基地址 0为

页表基地址 一级页表内偏移序号 00

一级页表内偏移序号 二级页表内偏移序号

二级页表基地址 11用户定义域0

二级页表基地址 二级页表内偏移序号

10 9 2 1 031

31 12 11 9 8 5 4 2 1 0

31 14 13 2 1 0

31 20 19 0

31 14 13 0

CP15 C2中的寄存器

一级描述符地址

一级描述符

二级描述符地址

虚拟地址

00

12 11

Page 127: 第 2 讲 ARM 微处理器硬件结构

127

嵌入式系统学科组

. .

. .

L1偏移值 L2偏移值

页偏移值

粗页表和 4k页的二级虚实地址转换

物理基址

页偏移值

L1主页表

L2粗页表

虚地址

物理地址

31 20 19 12 11 0

012345

4095

012

255

转换表基地址

L2页表项

复制到 TLB

L2页表基地址

第 1步

第2步

Page 128: 第 2 讲 ARM 微处理器硬件结构

128

嵌入式系统学科组MMU 中的存储访问权限控制

在 MMU 中,寄存器 C1的 R、 S控制位和页表项中的访问权限控制位 AP 联合控制存储访问的权限。

A P S R 特权级时访问权限 用户级时访问权限

0b00 0b00 0b00 0b00 0b01 0b10 0b11

0 0 1 0 0 1 1 1 X X X X X X

没有访问特权 只读 只读 不可预知 读 / 写 读 / 写 读 / 写

没有访问特权 没有访问特权 只读 不可预知 没有访问特权 只读 读 / 写

Page 129: 第 2 讲 ARM 微处理器硬件结构

129

嵌入式系统学科组快速上下文切换技术快速上下文切换技术 FCSE( Fast Context Switch Extension)通过修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成的虚拟地址到物理地址的重映射,从而提高系统的性能。

FCSE位于 CPU和 MMU之间,其责任就是将不同进程使用的相同虚拟地址映射为不同的虚拟空间,使得在上下文切换时无需重建 TLB等。

Page 130: 第 2 讲 ARM 微处理器硬件结构

130

嵌入式系统学科组I/O 空间映射成存储空间

在 ARM系统中, I/O操作通常被映射成存储器操作,即输入 / 输出是通过存储器映射的可寻址外围寄存器和中断输入的组合来实现的。 I/O的输出操作可通过存储器写入操作实现; I/O的输入操作可通过存储器读取操作实现。

这些存储器映射的 I/O空间不满足 Cache所要求的特性。