用于体系存储办理的协处理器CP15
- 在依据ARM的嵌入式体系中,存储体系通常是经过体系操控协处理器CP15完结的。
- CP15能够包含16个32位的寄存器,其编号为0-15。实际上关于某些编号的寄存器或许对应有多个物理寄存器。在指令中指定特定的标志位来区别这些物理寄存器。有些类似于ARM寄存器中,处于不同的处理器形式时,ARM某些寄存器或许不同。
寄存器编号 |
根本效果 |
在 |
在 |
0 |
ID |
ID |
|
1 |
操控位(可读写) |
各种操控位 |
|
2 |
存储维护和操控 |
地址转化表基地址 |
Cachability |
3 |
存储维护和操控 |
域拜访操控位 |
Bufferablity |
4 |
存储维护和操控 |
保存 |
保 留 |
5 |
存储维护和操控 |
内存失效状况 |
拜访权限操控位 |
6 |
存储维护和操控 |
内存失效地址 |
维护区域操控 |
7 |
高速缓存和写缓存 |
高速缓存和写缓存操控 |
|
8 |
存储维护和操控 |
TLB |
保 留 |
9 |
高速缓存和写缓存 |
高速缓存确认 |
|
10 |
存储维护和操控 |
TLB |
保 留 |
11 |
保存 |
|
|
12 |
保存 |
|
|
13 |
进程标识符 |
进程标识符 |
|
14 |
保存 |
|
|
15 |
因不同规划而异 |
因不同规划而异 |
因不同规划而异 |
opcode2 |
对应的标识符号寄存器 |
0b000 |
主标识符寄存器 |
0b001 |
cache类型标识符寄存器 |
其 他 |
保存 |
关于AMR7之后的处理器,其主标明符编码格局如下 :
30 |
23 |
19 |
15 |
3 |
由出产商确认 |
产品子编号 |
ARM |
产品主编号 |
处理器版别号 |
位 |
|
位 |
出产商界说的处理器版别号 |
位 |
出产商界说的产品主编号 其间最高 由于: 0x0表明 0x7 |
位 |
ARM 0x1 0x2 0x3 0x4 0x5 其他 |
位 |
出产商界说的产品子编号。当产品主编号相一起,运用子编号来区别不同的产品子类,如产品中不 同的高速缓存的巨细等 |
位 |
出产厂商的编号,现在现已界说的有以下值: 0x41 0x44 0x69 |
31 |
28 |
24 |
23 |
11 |
|
|
|
|
|
位 |
意义 |
位 |
首要用于界说关于写回类型的cache的一些特点 |
位 |
界说体系中的数据 0 1 |
位 |
界说数据 假如位 |
位 |
界说指令 假如位 |
操控字段位 [28 : 25] 的意义
cache
编 |
cache |
cache |
cache |
0b0000 |
写通类型 |
不需要内容铲除 |
不支撑内容确认 |
0b0001 |
写回类型 |
数据块读取 |
不支撑内容确认 |
0b0010 |
写回类型 |
由寄存器 |
不支撑内容确认 |
0b0110 |
写回类型 |
由寄存器 |
支撑格局 |
0b0111 |
写回类型 |
由寄存器 |
支撑格局 |
- 操控字段位
[23 : 12] 及操控字段位 [11 : 0] 意义
11 |
8 |
5 |
2 |
1 |
000 |
cache |
cache |
M |
块巨细 |
其间bits[1:0]意义如下:
编 |
cache |
0b00 |
2 |
0b01 |
4 |
0b10 |
8 |
0b11 |
16 |
其间bits[5:3]意义如下:
编 |
M=0 |
M=1 |
0b000 |
1 |
没有 |
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.75 |
0b001 |
1 |
1.5 |
0b010 |
2 |
3 |
0b011 |
4 |
6 |
0b100 |
8 |
12 |
0b101 |
16 |
24 |
0b110 |
32 |
48 |
0b111 |
64 |
96 |
- 制止或使能MMU以及其他与存储体系相关的功用
- 装备存储体系以及ARM处理器中的相关部分的作业
C1中的操控位 |
意义 |
M(bit[0]) |
0 1 假如体系中没有MMU及PU,读取时该位回来0,写入时疏忽该位 |
A(bit[1]) |
0 1 |
C(bit[2]) |
当数据cache和指令cache分隔时,本操控位制止/使能数据cache。当数据cache和指令cache一致时,该操控位制止/使能整个cache。 0 1 假如体系中不含cache,读取时该位回来0.写入时疏忽 当体系中不能制止cache |
W(bit[3]) |
0 1 假如体系中不含写缓冲时,读取时该位回来0.写入时疏忽 当体系中不能制止写缓冲时,读取时回来1.写入时疏忽 |
P(bit[4]) |
关于向前兼容26位地址的ARM处理器,本操控位操控PROG32操控信号 0 1 假如本体系中不支撑向前兼容26位地址,读取该位时回来1,写入时疏忽 |
D(bit[5]) |
关于向前兼容26位地址的ARM处理器,本操控位操控DATA32操控信号 0 1 假如本体系中不支撑向前兼容26位地址,读取该位时回来1,写入时疏忽 |
L(bit[6]) |
关于ARMv3及曾经的版别,本操控位能够操控处理器的间断模型 0 1 |
B(bit[7]) |
关于存储体系一起支撑big-endian和little-endian的ARM体系,本操控位装备体系的存储形式 0 1 关于只支撑little-endian的体系,读取时该位回来0,写入时疏忽 关于只支撑big-endian的体系,读取时该位回来1,写入时疏忽 |
S(bit[8]) |
在依据 |
R(bit[9]) |
在依据 |
F(bit[10]) |
由出产商界说 |
Z(bit[11]) |
关于支撑跳转猜测的ARM体系,本操控位制止/使能跳转猜测功用 0 1 关于不支撑跳转猜测的ARM体系,读取该位时回来0,写入时疏忽 |
I(bit[12]) |
当数据cache和指令cache是分隔的,本操控位制止/使能指令cache 0 1 假如体系中运用一致的指令cache和数据cache或许体系中不含cache,读取该位时回来0,写入时疏忽。当体系中的指令cache不能制止时,读取时该位回来1,写入时疏忽 |
V(bit[13]) |
关于支撑高端反常向量表的体系,本操控位操控向量表的方位 0 1 关于不支撑高端反常向量表的体系,读取时该位回来0,写入时疏忽 |
PR(bit[14]) |
假如体系中的cache的筛选算法能够挑选的话,本操控位挑选筛选算法 0 1 假如体系中cache的筛选算法不行挑选,写入该位时疏忽。读取该位时,依据其筛选算法是否能够比较简单地猜测最坏状况回来0或许1 |
L4(bit[15]) |
关于ARM版别5及以上的版别,本操控位能够供给兼容曾经的ARM版别的功用 0 1 |
Bits[31:16]) |
这些位保存将来运用,应为UNP/SBZP |
(三)CP15
C2寄存器的别号:Translation table base (TTB) register
31 |
|
CP15
31 |
|||||||||||||||
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
10:保存状况(咱们最好不要填写该值,避免引起不能确认的问题)
11:当时级别下,对该内存区域的拜访都不进行权限查看。
MRC p15, 0, , c5, c0, 0 拜访数据失效状况寄存器
MRC p15, 0, , c5, c0, 1拜访指令状况失效寄存器
编码格局如下所示:
31 |
8 |
7 |
3 |
UNP/SBZP |
0 |
域标识 |
状况标识 |
其间,域标识bit[7:4]表明寄存引起存储拜访失效的存储拜访所属的域。状况标识bit[3:0] 表明放引起存储拜访失效的存储拜访类型,该字段意义如下表所示(优先级由上到下递减)。
引起拜访失效的原因 |
状况标识 |
域标识 |
C6 |
终端反常( |
0b0010 |
无 效 |
生 产商界说 |
中断向量拜访反常( |
0b0000 |
无 效 |
有 效 |
地 址对齐 |
0b00x1 |
无 效 |
有 效 |
一 级页表拜访失效 |
0b1100 |
无 效 |
有 效 |
二 级页表拜访失效 |
0b1110 |
有 效 |
有 效 |
基 于段的地址改换失效 |
0b0101 |
无 效 |
有 效 |
基 于页的地址改换失效 |
0b0111 |
有 效 |
有 效 |
基 于段的存储拜访中域操控失效 |
0b1001 |
有 效 |
有 效 |
基 于页的存储拜访中域操控失效 |
0b1101 |
有 效 |
有 效 |
基 于段的存储拜访中拜访权限操控失效 |
0b1111 |
有 效 |
有 效 |
基 于页的存储拜访中拜访权限操控失效 |
0b0100 |
有 效 |
有 效 |
依据段的 |
0b0110 |
有 效 |
有 效 |
依据页的 |
0b1000 |
有 效 |
有 效 |
依据段的非 |
0b1010 |
有 效 |
有 效 |
CP15
MRC p15, 0, , c6, c0, 0拜访数据失效地址寄存器
MRC p15, 0, , c6, c0, 2 拜访指令失效地址寄存器
编码格局如下所示:
31 |
|
指令 |
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中的单个地址改换条目 |
MCR p15, 0, , c12, c0, 0 ;Rd中寄存要修正的反常向量基地址
31 |
4 |
反常向量基地址 |
Reserve |
CP15中的寄存器C13用于快速上下文切换。其编码格局如下所示。
拜访寄存器C13的指令格局如下所示。
MCR
MRC
其间,在读操作时,成果中位[31::25]回来PID,其他位 的数值是不行以预知的。写操作将设置PID的值。