微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 常见的五大ARM存储器之一:协处理器CP15

常见的五大ARM存储器之一:协处理器CP15

时间:07-14 来源:本站整理 点击:

理器的Cache类型标识符寄存器的内容读取到寄存器r0中。

  MRC P15,0,r0,c0,c0,1

  Cache类型标识符定义了关于Cache的信息,具体内容如下所述。

  · 系统中的数据Cache和指令Cache是分开的还是统一的。

  · Cache的容量、块大小以及相联特性。

  · Cache类型是直(write-through)写还是回写(write-back)。

  · 对于回写(write-back)类型的Cache如何有效清除Cache内容。

  · Cache是否支持内容锁定。

  Cache类型标识符寄存器各控制字段的含义编码格式如图5所示。

  

  图5 Cache属性寄存器标识符编码格式

  其中各控制字段的含义说明如下。

  属性字段(ctype):指定没有在S位、数据Cache相关属性位、指令Cache相关属性类中指定的属性,其具体编码参见表7。

  表7 Cache类型标识符寄存器属性字段含义

  编 码Cache类型Cache内容清除方法Cache内容锁定方法

  0b0000直写不需要内容清除不支持

  0b0001回写数据块读取不支持

  0b0010回写由寄存器定义不支持

  0b0110回写由寄存器定义支持格式A,见后

  0b0111回写由寄存器定义支持格式B,见后

  S位:定义系统中的数据Cache和指令Cache是分开的还是统一的。如果S=0,说明指令Cache和数据Cache是统一的,如果S=1,则说明数据Cache和指令Cache是分离的。

  数据Cache相关属性:定义了数据Cache容量、行大小和相联(associativity)特性(如果S≠0)。

  指令Cache相关属性:定义了指令Cache容量、行大小和相联(associativity)特性(如果S≠0)。

  数据Cache相关属性和指令Cache相关属性分别占用控制字段[23:12]和[11:0],它们的结构相同,图6以指令Cache为例,显示了编码结构。

  

  图6 指令Cache编码结构

  其中,各部分的含义说明如下。

  bit[11:9]:保留用于将来使用。

  bit[8:6]:定义Cache的容量,其编码格式及含义如表8所示。

  表8 类型标识符寄存器控制字段bit[8:6]含义

  编 码M=0时的含义M=1时的含义

  0b0000.5KB0.75KB

  0b0011KB1.5KB

  0b0102KB3KB

  0b0114KB6KB

  续表

  编 码M=0时的含义M=1时的含义

  0b1008KB12KB

  0b10116KB24KB

  0b11032KB48KB

  0b11164KB96KB

  bit[1:0]:定义Cache的块大小,其编码格式及含义如表9所示。

  表9 类型标识符寄存器控制字段bit[1:0]含义

  编 码Cache块大小

  0b002个字(8字节)

  0b014个字(16字节)

  0b108个字(32字节)

  0b1116个字(64字节)

  bit[5:3]:定义了Cache的相联属性,其编码格式及含义如表10所示。

  表10 类型标识符寄存器控制字段bit[5:3]含义

  编 码M=0时的含义M=1时的含义

  0b0001路相联

  (直接映射)没有Cache

  0b0012路相联3路相联

  0b0104路相联6路相联

  0b0118路相联12路相联

  0b10016路相联24路相联

  0b10132路相联48路相联

  0b11064路相联96路相联

  0b111128路相联192路相联

  1.4 寄存器c1

  CP15中的寄存器c1包括以下控制功能:

  · 禁止/使能MMU以及其他与存储系统有关的功能;

  · 配置存储系统以及ARM处理器中相关的工作。

  注意在寄存器c1中包含了一些没有使用的位,这些位在将来可能被扩展其他功能时使用。因此为了编写代码在将来更高版本的ARM处理器中仍可以使用,在修改寄存器c1中的位时应该使用"读取-修改特定位-写入"的操作序列。

  当对寄存器c1进行读操作时,指令中CRm和opcode2的值将被处理器忽略,所以要人工将其置位为0。

  例2用MRC/MCR指令将协处理器寄存器c1的值进行读取和写入。

  【例2】

  MRC P15,0,r0,c1,0,0 ;将寄存器c1的值读取到ARM寄存器r0中

  MCR P15,0,r0,c1,0,0 ;将ARM寄存器r0的值写入寄存器c1

  图7显示了寄存器c1的编码格式。

  

  图7 寄存器c1编码格式

  寄存器c1各控制字段的含义如表11所示。

  表11 寄存器c1中各控制位字段的含义

  C1中的控制位含 义

  M(bit[0])禁止/使能MMU或者MPU

  0:禁止MMU或者MPU

  1:使能MMU或者MPU

  如果系统中没有MMU或者MPU,读取时该位返回0,写入时忽略

  A(bit[1])对于可以选择是否支持内存访问时地址对齐检查的系统,本位禁止/使能地址对齐检查功能

  0:禁止地址对齐检查功能

  1:使能地址对齐检查功能

  对寄存器进行写操作时,忽略该位

  C(bit[2])当数据Cache和指令Cache分开时,本控制位禁止/使能数据Cache。

  当数据Cache和指令Cache统一时,该控制位禁止/使能整个Cache

  0:禁止Cache

  1:使能Cache

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

网站地图

Top