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

ARM协处理器CP15寄存器详解

时间:11-21 来源:互联网 点击:

于定义数据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寄存器用来保存页表的基地址,即一级映射描述符表的基地址。其编码格如下所示:

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

网站地图

Top