×
嵌入式 > 嵌入式开发 > 详情

ARM处理器中CP15协处理器的寄存器

发布时间:2020-08-19 发布时间:
|
本章和第5章的内容都与ARM处理器CP15协处理器寄存器有密切关系,所以我们这里先介绍一下CP15寄存器以及访问CP15寄存器的汇编指令
4.1.1访问CP15寄存器的指令访问CP15寄存器指令的编码格式及语法说明如下:
312827242321201916151211875430
cond1 1 1 0opcode_1Lcr nrd1 1 1 1opcode_21crm

指令
说明
语法格式
mcr
将ARM处理器的寄存器中的数据写到CP15中的寄存器中
mcr{}p15,,,,, {}
mrc
将CP15中的寄存器中的数据读到ARM处理器的寄存器中
mcr{}p15,,,,, {}
4.1.2CP15寄存器介绍CP15的寄存器列表如表4-1所示。
表4-1ARM处理器中CP15协处理器的寄存器
寄存器编号基本作用在MMU中的作用在PU中的作用
0ID编码(只读)ID编码和cache类型
1控制位(可读写)各种控制位
2存储保护和控制地址转换表基地址Cachability的控制位
3存储保护和控制域访问控制位Bufferablity控制位
4存储保护和控制保留保留
5存储保护和控制内存失效状态访问权限控制位
6存储保护和控制内存失效地址保护区域控制
7高速缓存和写缓存高速缓存和写缓存控制
8存储保护和控制TLB控制保留
9高速缓存和写缓存高速缓存锁定
10存储保护和控制TLB锁定保留
11保留
12保留
13进程标识符进程标识符
14保留
15因不同设计而异因不同设计而异因不同设计而异

opcode_2编码
对应的标识符号寄存器
0b000
主标识符寄存器
0b001
cache类型标识符寄存器
其他
保留
1)主标识符寄存器
访问主标识符寄存器的指令格式如下所示:
mrcp15, 0, r0, c0, c0, 0;将主标识符寄存器C0,0的值读到r0中
ARM不同版本体系处理器中主标识符寄存器的编码格式说明如下。
ARM7之后处理器的主标识符寄存器编码格式如下所示:
31242320191615430
由生产商确定产品子编号ARM体系版本号产品主编号处理器版本号

说明
位[3: 0]生产商定义的处理器版本号
位[15: 4]生产商定义的产品主编号,其中最高4位即位[15:12]可能的取值为0~7但不能是0或7
位[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公司
ARM7处理器的主标识符寄存器编码格式如下所示:
3124232216 15430
由生产商确定A产品子编号产品主编号处理器版本号

说明
位[3: 0]生产商定义的处理器版本号
位[15: 4]生产商定义的产品主编号,其中最高4位即位[15:12]的值为0x7
位[22: 16]生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等
续表
说明
位[23]ARM7支持下面两种ARM体系的版本号:
0x0ARM体系版本3
0x1ARM体系版本4T
位[31: 24]生产厂商的编号,现在已经定义的有以下值:
0x41=AARM公司
0x44=DDigital Equipment公司
0x69=IIntel公司
ARM7之前处理器的主标识符寄存器编码格式如下所示:
312423221615430
由生产商确定A产品子编号产品主编号处理器版本号

说明
位[3: 0]生产商定义的处理器版本号
位[15: 4]生产商定义的产品主编号,其中最高4位即为[15:12]的值为0x7
位[22: 16]生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等
位[23]ARM7支持下面两种ARM体系的版本号:
0x0ARM体系版本3
0x1ARM体系版本4T
位[31: 24]生产厂商的编号,现在已经定义的有以下值:
0x41=AARM公司
0x44=DDigital Equipment公司
0x69=Iintel公司
2)cache类型标识符寄存器
访问cache类型标识符寄存器的指令格式如下所示:
mrcp15, 0, r0, c0, c0, 1;将cache类型标识符寄存器C0,1的值读到r0中
ARM处理器中cache类型标识符寄存器的编码格式如下所示:
31292825242312110
000属性字段S数据cache相关属性指令cache相关属性

说明
位[28: 25]指定控制字段位[24: 0]指定的属性之外的cache的其他属性,详见表4-2
位[24]定义系统中的数据cache和指令cache是分开的还是统一的:
0系统的数据cache和指令cache是统一的;
1系统的数据cache和指令cache是分开的
位[23: 12]定义数据cache的相关属性,如果位[24]为0,本字段定义整个cache的属性
位[31: 24]定义指令cache的相关属性,如果位[24]为0,本字段定义整个cache的属性
其中控制字段位[28:25]的含义说明如下:
表4-2cache类型标识符寄存器的控制字段位[28:25]
编码cache类型cache内容清除方法cache内容锁定方法
0b0000写通类型不需要内容清除不支持内容锁定
0b0001写回类型数据块读取不支持内容锁定
0b0010写回类型由寄存器C7定义不支持内容锁定
0b0110写回类型由寄存器C7定义支持格式A
0b0111写回类型由寄存器C7定义支持格式B
控制字段位[23:12]和控制字段位[11:0]的编码格式相同,含义如下所示:
1198653210
000cache容量cache相联特性M块大小
cache容量字段bits[8: 6]的含义如下所示:
编码M=0时含义(单位KB)M=1时含义(单位KB)
0b0000.50.75
0b00111.5
0b01023
0b01146
0b100812
0b1011624
0b1103248
0b1116496
cache相联特性字段bits[5: 3]的含义如下所示:
编码M=0时含义M=1时含义
0b0001路相联(直接映射)没有cache
0b0012路相联3路相联
0b0104路相联6路相联
0b0118路相联12路相联
0b10016路相联24路相联
0b10132路相联48路相联
0b11064路相联96路相联
0b111128路相联192路相联
cache块大小字段bits[1: 0]的含义如下所示:
编码cache块大小
0b002个字(8字节)
0b014个字(16字节)
0b108个字(32字节)
0b1116个字(64字节)

31 16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
附加
L4
RR
V
I
Z
F
R
S
B
L
D
P
W
C
A
M

说明
M0:禁止MMU或者PU;1:使能MMU或者PU
A0:禁止地址对齐检查;1:使能地址对齐检查
C0:禁止数据/整个cache;1:使能数据/整个cache
W0:禁止写缓冲;1:使能写缓冲
P0:异常中断处理程序进入32位地址模式;1:异常中断处理程序进入26位地址模式
D0:禁止26位地址异常检查;1:使能26位地址异常检查
L0:选择早期中止模型;1:选择后期中止模型
B0:little endian;1:big endian
S在基于MMU的存储系统中,本位用作系统保护
R在基于MMU的存储系统中,本位用作ROM保护
F0:由生产商定义
Z0:禁止跳转预测功能;1:使能跳转预测指令
I0:禁止指令cache;1:使能指令cache
V0:选择低端异常中断向量0x0~0x1c;1:选择高端异常中断向量0xffff0000~ 0xffff001c
RR0:常规的cache淘汰算法,如随机淘汰;1:预测性淘汰算法,如round-robin淘汰算法
L40:保持ARMv5以上版本的正常功能;1:将ARMv5以上版本与以前版本处理器兼容,不根据跳转地址的bit[0]进行ARM指令和Thumb状态切换:bit[0]等于0表示ARM指令,等于1表示Thumb指令
附加:

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

310
D15
D14
D13
D12
D11
D10
D9
D8
D7
D6
D5
D4
D3
D2
D1
D0

31987430
UNP/SBZP
0
域标识
状态标识
其中,域标识bit[7:4]表示存放引起存储访问失效的存储访问所属的域。
状态标识bit[3:0]表示放引起存储访问失效的存储访问类型,该字段含义如表4-3所示(优先级由上到下递减)。
表4-3状态标识字段含义
引起访问失效的原因状态标识域标识C6
终端异常(Terminal Exception)0b0010无效生产商定义
中断向量访问异常(Vector Exception)0b0000无效有效
地址对齐0b00x1无效有效
一级页表访问失效0b1100无效有效
二级页表访问失效0b1110有效有效
基于段的地址变换失效0b0101无效有效
基于页的地址变换失效0b0111有效有效
基于段的存储访问中域控制失效0b1001有效有效
基于页的存储访问中域控制失效0b1101有效有效
基于段的存储访问中访问权限控制失效0b1111有效有效
基于页的存储访问中访问权限控制失效0b0100有效有效
基于段的cache预取时外部存储系统失效0b0110有效有效
基于页的cache预取时外部存储系统失效0b1000有效有效
基于段的非cache预取时外部存储系统失效0b1010有效有效

310
失效地址(虚拟地址)

3132-W 31-W0
cache组内块序号index
0
其中index表示当下一次发生cache未命中时,将预取的存储块存入cache中该块对应的组中序号为index的cache块中。此时序号为0~index-1的cache块被锁定,当发生cache替换时,从序号为index到ASSOCIATIVITY的块中选择被替换的块。
编码格式B如下所示:
3130WW-10
L0cache组内块序号index


说明
L=0当发生cache未命中时,将预取的存储块存入cache中该块对应的组中序号为index的cache块中
续表
说明
L=1如果本次写操作之前L=0,并且index值小于本次写入的index,本次写操作执行的结果不可预知;否则,这时被锁定的cache块包括序号为0~index-1的块,当发生cache替换时,从序号为index到ASSOCIATIVITY的块中选择被替换的块

31 3032-W31-W32-2W31-2W10
可被替换的条目起始地址的base
下一个将被替换的条目地址victim
0
P

说明
victim指定下一次TLB没有命中(所需的地址变换条目没有包含在TLB中)时,从内存页表中读取所需的地址变换条目,并把该地址变换条目保存在TLB中地址victim处
base指定TLB替换时,所使用的地址范围,从(base)到(TLB中条目数-1);字段victim的值应该包含在该范围内
P1:写入TLB的地址变换条目不会受使整个TLB无效操作的影响,一直保持有效;0:写入TLB的地址变换条目将会受到使整个TLB无效操作的影响

3125240
PID
0
其中,PID表示当前进程的所在的进程空间块的编号,即当前进程的进程标识符,取值为0~127。
0:MVA(变换后的虚拟地址)= VA(虚拟地址),禁止FCSE(快速上下文切换技术),系统复位后PID=0;
非0:使能FCSE。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
瑞萨I3C总线扩展和SPD集线器产品通过基板管理控制器认证