微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM协处理器CP15寄存器详解

ARM协处理器CP15寄存器详解

时间:11-21 来源:互联网 点击:
用于系统存储管理的协处理器CP15

MCR{cond} coproc,opcode1,Rd,CRn,CRm,opcode2

MRC {cond} coproc,opcode1,Rd,CRn,CRm,opcode2

coproc 指令操作的协处理器名.标准名为pn,n,为0~15

opcode1 协处理器的特定操作码. 对于CP15寄存器来说,opcode1永远为0,不为0时,操作结果不可预知

CRd 作为目标寄存器的协处理器寄存器.

CRn 存放第1个操作数的协处理器寄存器.

CRm 存放第2个操作数的协处理器寄存器. (用来区分同一个编号的不同物理寄存器,当不需要提供附加信息时,指定为C0)

opcode2 可选的协处理器特定操作码. (用来区分同一个编号的不同物理寄存器,当不需要提供附加信息时,指定为0)

  • 在基于ARM嵌入式系统中,存储系统通常是通过系统控制协处理器CP15完成的。
  • CP15可以包含16个32位的寄存器,其编号为0-15。实际上对于某些编号的寄存器可能对应有多个物理寄存器。在指令中指定特定的标志位来区分这些物理寄存器。有些类似于ARM寄存器中,处于不同的处理器模式时,ARM某些寄存器可能不同。

CP15的寄存器列表如表所示:

寄存器编号

基本作用

MMU中的作用

PU中的作用

0

ID编码(只读)

ID编码和cache类型

1

控制位(可读写)

各种控制位

2

存储保护和控制

地址转换表基地址

Cachability的控制位

3

存储保护和控制

域访问控制位

Bufferablity控制位

4

存储保护和控制

保留

保 留

5

存储保护和控制

内存失效状态

访问权限控制位

6

存储保护和控制

内存失效地址

保护区域控制

7

高速缓存和写缓存

高速缓存和写缓存控制

8

存储保护和控制

TLB控制

保 留

9

高速缓存和写缓存

高速缓存锁定

10

存储保护和控制

TLB锁定

保 留

11

保留

12

保留

13

进程标识符

进程标识符

14

保留

15

因不同设计而异

因不同设计而异

因不同设计而异

注:以下寄存器中相应位的含义在不同的处理器中可能不同,但总体功能不变

(一)CP15的寄存器C0

CP15中寄存器C0对应两个标识符寄存器,由访问CP15中的寄存器指令中的指定要访问哪个具体物理寄存器,与两个标识符寄存器的对应关系如下所示:

opcode2编码

对应的标识符号寄存器

0b000

主标识符寄存器

0b001

cache类型标识符寄存器

其 他

保留

(1)主标识符寄存器

指令如下:

MRC P15,0,R0,C0,C0,0 #将主标示符寄存器的内容读到AMR寄存器R0中

主标示符的编码格式对于不同的ARM处理器版本有所不同。

对于AMR7之后的处理器,其主标示符编码格式如下 :

30 24

23 20

19 16

15 4

3 0

由生产商确定

产品子编号

ARM体系版本号

产品主编号

处理器版本号

各部分的编码详细含义如下表所示:

[3: 0]

生产商定义的处理器版本号

[15: 4]

生产商定义的产品主编号

其中最高4位即位[15:12]可能的取值为0x0~0x7但不能是0x00x7

因为:

0x0表示ARM7之前的处理器

0x7表示ARM7处理器

[19: 16]

ARM体系的版本号,可能的取值如 下:

0x1ARM体系版本4

0x2ARM体系版本4T

0x3ARM体系版本5

0x4ARM体系版本5T

0x5ARM体系版本5TE

其他ARM公司保留将来使用

[23: 20]

生产商定义的产品子编号。当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不 同的高速缓存的大小等

[31: 24]

生产厂商的编号,现在已经定义的有以下值:

0x41=AARM公司

0x44=DDigital Equipment公司

0x69=Iintel公司

(2)cache类型标识符寄存器

指令如下:

MRC P15,0,R0,C0,C0,1 #将cache类型标识符寄存器的内容读到AMR寄存器R0中

ARM处理器中cache类型标识符寄存器的编码格式如下所示:

31 29

28 25

24

23 12

11 0

000

属性字段

S

数据cache相关属性

指令cache相关属性

各部分的编码详细含义如下表所示:

含义

[28: 25]

主要用于定义对于写回类型的cache的一些属性

[24]

定义系统中的数据cache和指令cache是分开的还是统一的:

0系统的数据cache和指令cache是统一的;

1系统的数据cache和指令cache是分开的

[23: 12]

定义数据cache的相关属性

如果位[24]0,本字段定义整个cache的属性

[31: 24]

定义指令cache的相关属性

如果位[24]0,本字段定义整个cache的属性

  • 控制字段位[2825]的含义

主要用于定义对于写回类型的cache的一些属性

cache类型标识符寄存器的控制字段位[2825]:

cache类型

cache内容清除方法

cache内容锁定方法

0b0000

写通类型

不需要内容清除

不支持内容锁定

0b0001

写回类型

数据块读取

不支持内容锁定

0b0010

写回类型

由寄存器C7定义

不支持内容锁定

0b0110

写回类型

由寄存器C7定义

支持格式A

0b0111

写回类型

由寄存器C7定义

支持格式B

  • 控制字段位[2312]及控制字段位[110]含义

[23:12]用

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top