您的位置 首页 设计

ARM协处理器CP15寄存器详解

用于系统存储管理的协处理器CP15MCR{cond}coproc,opcode1,Rd,CRn,CRm,opcode2MRC{cond}coproc,opcode1,Rd,CRn,CRm,o

用于体系存储办理的协处理器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]用于界说数据cache的特点,[11: 0]用于界说指令cache的特点
编码格局如下:

11 9

8 6

5 3

2

1 0

000

cache容量

cache相联特性

M

块巨细

其间bits[1:0]意义如下:

cache块巨细

0b00

2个字(8字节)

0b01

4个字(16字节)

0b10

8个字(32字节)

0b11

16个字(64字节)

其间bits[5:3]意义如下:

M=0时意义

M=1时意义

0b000

1路相联(直接映射)

没有cache

0b001

2路 相联

3路 相联

0b010

4路 相联

6路 相联

0b011

8路 相联

12路 相联

0b100

16路 相联

24路 相联

0b101

32路 相联

48路 相联

0b110

64路 相联

96路 相联

0b111

128路相联

192路相联

其间bits[8:6]意义如下:

M=0时意义

M=1时意义

0b000

0.5KB

0.75KB

0b001

1KB

1.5KB

0b010

2KB

3KB

0b011

4KB

6KB

0b100

8KB

12KB

0b101

16KB

24KB

0b110

32KB

48KB

0b111

64KB

96KB

(二)CP15的寄存器C1
CP15中的寄存器C1是一个操控寄存器,它包含以下操控功用:
  • 制止或使能MMU以及其他与存储体系相关的功用
  • 装备存储体系以及ARM处理器中的相关部分的作业
指令如下:
mrcp15, 0, r0, c1, c0{, 0};将CP15的寄存器C1的值读到r0
mcrp15, 0, r0, c1, c0{, 0};将r0的值写到CP15的寄存器C1
CP15中的寄存器C1的编码格局及意义阐明如下:

C1中的操控位

意义

M(bit[0])

0:制止MMU或许PU

1:使能MMU或许PU

假如体系中没有MMU及PU,读取时该位回来0,写入时疏忽该位

A(bit[1])

0:制止地址对齐查看

1:使能地址对齐查看

C(bit[2])

当数据cache和指令cache分隔时,本操控位制止/使能数据cache。当数据cache和指令cache一致时,该操控位制止/使能整个cache。

0:制止数据/整个cache

1:使能数据/整个cache

假如体系中不含cache,读取时该位回来0.写入时疏忽

当体系中不能制止cache时,读取时回来1.写入时疏忽

W(bit[3])

0:制止写缓冲

1:使能写缓冲

假如体系中不含写缓冲时,读取时该位回来0.写入时疏忽

当体系中不能制止写缓冲时,读取时回来1.写入时疏忽

P(bit[4])

关于向前兼容26位地址的ARM处理器,本操控位操控PROG32操控信号

0:反常中断处理程序进入32位地址形式

1:反常中断处理程序进入26位地址形式

假如本体系中不支撑向前兼容26位地址,读取该位时回来1,写入时疏忽

D(bit[5])

关于向前兼容26位地址的ARM处理器,本操控位操控DATA32操控信号

0:制止26位地址反常查看

1:使能26位地址反常查看

假如本体系中不支撑向前兼容26位地址,读取该位时回来1,写入时疏忽

L(bit[6])

关于ARMv3及曾经的版别,本操控位能够操控处理器的间断模型

0:挑选前期间断模型

1:挑选后期间断模型

B(bit[7])

关于存储体系一起支撑big-endian和little-endian的ARM体系,本操控位装备体系的存储形式

0little endian

1big endian

关于只支撑little-endian的体系,读取时该位回来0,写入时疏忽

关于只支撑big-endian的体系,读取时该位回来1,写入时疏忽

S(bit[8])

在依据MMU的存储体系中,本位用作体系维护

R(bit[9])

在依据MMU的存储体系中,本位用作ROM维护

F(bit[10])

由出产商界说

Z(bit[11])

关于支撑跳转猜测的ARM体系,本操控位制止/使能跳转猜测功用

0:制止跳转猜测功用

1:使能跳转猜测功用

关于不支撑跳转猜测的ARM体系,读取该位时回来0,写入时疏忽

I(bit[12])

当数据cache和指令cache是分隔的,本操控位制止/使能指令cache

0:制止指令cache

1:使能指令cache

假如体系中运用一致的指令cache和数据cache或许体系中不含cache,读取该位时回来0,写入时疏忽。当体系中的指令cache不能制止时,读取时该位回来1,写入时疏忽

V(bit[13])

关于支撑高端反常向量表的体系,本操控位操控向量表的方位

0:挑选低端反常中断向量0x0~0x1c

1:挑选高端反常中断向量0xffff0000~ 0xffff001c

关于不支撑高端反常向量表的体系,读取时该位回来0,写入时疏忽

PR(bit[14])

假如体系中的cache的筛选算法能够挑选的话,本操控位挑选筛选算法

0:惯例的cache筛选算法,如随机筛选

1:猜测性筛选算法,如round-robin筛选算法

假如体系中cache的筛选算法不行挑选,写入该位时疏忽。读取该位时,依据其筛选算法是否能够比较简单地猜测最坏状况回来0或许1

L4(bit[15])

关于ARM版别5及以上的版别,本操控位能够供给兼容曾经的ARM版别的功用

0:坚持ARMv5以上版别的正常功用

1:将ARMv5以上版别与曾经版别处理器兼容,不依据跳转地址的bit[0]进行ARM指令和Thumb状况切换:bit[0]等于0表明ARM指令,等于1表明Thumb指令

Bits[31:16])

这些位保存将来运用,应为UNP/SBZP

(三)CP15的寄存器C2

C2寄存器的别号:Translation table base (TTB) register

C2寄存器用来保存页表的基地址,即一级映射描述符表的基地址。其编码格如下所示:

310

一级映射描述符表的基地址(物理地址)

(四)CP15的寄存器C3

CP15中的寄存器C3界说了ARM处理器的16个域的拜访权限。

310

D15

D14

D13

D12

D11

D10

D9

D8

D7

D6

D5

D4

D3

D2

D1

D0

CP15的C3寄存器中,划分了16个域,每个区域由两位构成,这两位阐明了当时内存的查看权限:
00:当时级别下,该内存区域不允许被拜访,任何的拜访都会引起一个domain fault,这时 AP位无效
01:当时级别下,该内存区域的拜访有必要配合该内存区域的段描述符中AP位进行权查看
10:保存状况(咱们最好不要填写该值,避免引起不能确认的问题)
11:当时级别下,对该内存区域的拜访都不进行权限查看。这时AP位无效
所以只要当相应域的编码为 01时,才会依据AP位和协处理器CP15中的C1寄存器的R,S位进行权限查看
(五)CP15的寄存器C5
CP15中的寄存器C5是失效状况寄存器,分为指令状况失效和数据状况失效。
MRC p15, 0, , c5, c0, 0 拜访数据失效状况寄存器 
MRC p15, 0, , c5, c0, 1 拜访指令状况失效寄存器 
编码格局如下所示: 

31 9

8

7 4

3 0

UNP/SBZP

0

域标识

状况标识

其间,域标识bit[7:4]表明寄存引起存储拜访失效的存储拜访所属的域。状况标识bit[3:0]表明放引起存储拜访失效的存储拜访类型,该字段意义如下表所示(优先级由上到下递减)。 

引起拜访失效的原因

状况标识

域标识

C6

终端反常(Terminal Exception

0b0010

无 效

生 产商界说

中断向量拜访反常(Vector Exception)

0b0000

无 效

有 效

地 址对齐

0b00x1

无 效

有 效

一 级页表拜访失效

0b1100

无 效

有 效

二 级页表拜访失效

0b1110

有 效

有 效

基 于段的地址改换失效

0b0101

无 效

有 效

基 于页的地址改换失效

0b0111

有 效

有 效

基 于段的存储拜访中域操控失效

0b1001

有 效

有 效

基 于页的存储拜访中域操控失效

0b1101

有 效

有 效

基 于段的存储拜访中拜访权限操控失效

0b1111

有 效

有 效

基 于页的存储拜访中拜访权限操控失效

0b0100

有 效

有 效

依据段的cache预 取时外部存储体系失效

0b0110

有 效

有 效

依据页的cache预 取时外部存储体系失效

0b1000

有 效

有 效

依据段的非cache预 取时外部存储体系失效

0b1010

有 效

有 效

(六)CP15的寄存器C6

CP15中的寄存器C6是失效地址寄存器,其间保存了引起存储拜访失效的地址,分为数据失效地址寄存器和指令失效地址寄存器

MRC p15, 0, , c6, c0, 0 拜访数据失效地址寄存器 
MRC p15, 0, , c6, c0, 2 拜访指令失效地址寄存器 

编码格局如下所示:

310

失效地址(虚拟地址)

(七)CP15的寄存器C7
CP15C7寄存器用来操控cache和写缓存,它是一个只写寄存器,读操作将发生不行预知的成果。
拜访CP15C7寄存器的指令格局如下所示:
mcr p15, 0, , , crm, 的不同取值组合,完成不同功用
表中的数据是指Rd中的数据:
(八)CP15的寄存器C8

体系协处理器CP15的寄存器C8便是铲除TLB内容的相关操作。它是一个只写的寄存器。

MCR p15,0,Rd,c8,CRm,opcode_2

Rd中为要写入C8寄存器的内容,CRm和opcode_2的不同组合决议指令履行的不同操作。

指令

Rd

意义

MCR p15, 0, Rd, c8, c5, 0 

0

使无效整个指令TLB

MCR p15, 0, Rd, c8, c5, 1 

虚拟地址

使无效指令TLB中的单个地址改换条目

MCR p15, 0, Rd, c8, c6, 0 

0

使无效整个数据TLB

MCR p15, 0, Rd, c8, c6, 1 

虚拟地址

使无效数据TLB中的单个地址改换条目

MCR p15, 0, , c8, c7, 0 

0

使无效整个数据和指令TLB

MCR p15, 0, , c8, c7, 1 

虚拟地址

使无效数据和指令TLB中的单个地址改换条目

(九)CP15的寄存器C12
CP15寄存器C12用来设置反常向量基地址,其编码格局如下所示:
MCR p15, 0, , c12, c0, 0 ;Rd中寄存要修正的反常向量基地址 

31 5

4 0

反常向量基地址

Reserve

注:只要ARM11和cortex-a 能够恣意修正反常向量基地址。arm7,ARM9,ARM10只能够在0地址或0xffff0000中
(十)CP15的寄存器C13

CP15中的寄存器C13用于快速上下文切换。其编码格局如下所示。

拜访寄存器C13的指令格局如下所示。

MCRp15, 0,,,c0,0

MRC P15, 0,,,c0,0

其间,在读操作时,成果中位[31::25]回来PID,其他位 的数值是不行以预知的。写操作将设置PID的值。

当PID的值为0时,MVA = VA | (0(PID)<<25),MVA=VA,相当于制止了FCSE。体系复位后PID即为0.

当PID的值不为0时,相当于使能了FCSE。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/sheji/263442.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部