首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM存储器之:协处理器CP15(4)

ARM存储器之:协处理器CP15(4)

表15.8 类型标识符寄存器控制字段bit[8:6]含义
                                                               
                                                                        编    码
                       
                                                                        M=0时的含义
                       
                                                                        M=1时的含义
                       
                                                                        0b000
                       
                                                                        0.5KB
                       
                                                                        0.75KB
                       
                                                                        0b001
                       
                                                                        1KB
                       
                                                                        1.5KB
                       
                                                                        0b010
                       
                                                                        2KB
                       
                                                                        3KB
                       
                                                                        0b011
                       
                                                                        4KB
                       
                                                                        6KB
                       
        续表
                                                               
                                                                        编    码
                       
                                                                        M=0时的含义
                       
                                                                        M=1时的含义
                       
                                                                        0b100
                       
                                                                        8KB
                       
                                                                        12KB
                       
                                                                        0b101
                       
                                                                        16KB
                       
                                                                        24KB
                       
                                                                        0b110
                       
                                                                        32KB
                       
                                                                        48KB
                       
                                                                        0b111
                       
                                                                        64KB
                       
                                                                        96KB
                       

        bit[1:0]:定义Cache的块大小,其编码格式及含义如表15.9所示。
        表15.9 类型标识符寄存器控制字段bit[1:0]含义
                                                               
                                                                        编    码
                       
                                                                        Cache块大小
                       
                                                                        0b00
                       
                                                                        2个字(8字节)
                       
                                                                        0b01
                       
                                                                        4个字(16字节)
                       
                                                                        0b10
                       
                                                                        8个字(32字节)
                       
                                                                        0b11
                       
                                                                        16个字(64字节)
                       

        bit[5:3]:定义了Cache的相联属性,其编码格式及含义如表15.10所示。
        表15.10 类型标识符寄存器控制字段bit[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路相联
                       
                 15.1.4  寄存器c1        CP15中的寄存器c1包括以下控制功能:
        ·  禁止/使能MMU以及其他与存储系统有关的功能;
        ·  配置存储系统以及ARM处理器中相关的工作。

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

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

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

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

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

       


        图15.7  寄存器c1编码格式



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

        表15.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
                                                                        如果系统中不含Cache,读取时该位返回0,写入时忽略
                                                                        当系统中Cache不能禁止时,读取返回1,写入时忽略
                       
                                                                        W(bit[3])
                       
                                                                        禁止/使能写缓存
                                                                        0:禁止写缓存
                                                                        1:使能写缓存
                                                                        如果系统中不含写缓存,读取时该位返回0,写入时忽略
                                                                        当系统中的写缓存不能禁止时,读取时该位返回0,写入时忽略
                       
                                                                        P(bit[4])
                       
                                                                        对于向前兼容26位ARM处理器,本控制位控制PRGC32控制信号
                                                                        0:异常中断处理程序进入32位地址模式
                                                                        1:异常中断处理程序进入26位地址模式
                                                                        如果系统不支持向前兼容26位地址,读取该位时返回1,写入时被忽略
                       
                                                                        D(bit[5])
                       
                                                                        对于向前兼容26位ARM处理器,本控制位控制DATA32控制信号
                                                                        0:禁止26位地址异常检查
                                                                        1:使能26位地址异常检测
                                                                        如果系统不支持向前兼容26位地址,读取该位时返回1,写入时被忽略
                       
        续表
                                                                                                                                                                                                       
                                                                        C1中的控制位
                       
                                                                        含    义
                       
                                                                        L(bit[6])
                       
                                                                        对于ARMv3及以前版本,本控制位可以控制处理器的中止模式
                                                                        0:选择早期中止模式
                                                                        1:选择后期中止模式
                                                                        对于以后的处理器读取该位时返回1,写入时忽略
                       
                                                                        B(bit[7])
                       
                                                                        对于存储系统同时支持大/小端(big-endian/little-endian)的ARM处理器,该控制位配置系统使用哪种内存模式
                                                                        0:使用小端(little-endian)
                                                                        0:使用大端(big-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:选择0x00000000~0x0000001c
                                                                        1:选择0Xffff0000~0xffff001c
                                                                        对于不支持高端中断向量表的系统,读取时返回0,写入时忽略
                       
                                                                        RR(bit[14])
                       
                                                                        如果系统中Cache的淘汰算法可以选择的话,本控制位选择淘汰算法
                                                                        0:选择常规的淘汰算法,如随机淘汰算法
                                                                        1:选择预测性的淘汰算法,如轮转(round-robin)淘汰算法
                                                                        如果系统中淘汰算法不可选择,写入该位时被忽略,读取该位时,根据其淘汰算法是否可以比较简单地预测最坏情况返回1或者0
                       
                                                                        L4(bit[15])
                       
                                                                        ARM版本5及以上的版本中,本控制位可以提供兼容以前的ARM版本的功能
                                                                        0:保持当前ARM版本的正常功能
                                                                        1:对于一些根据跳转地址的bit[0]进行状态切换的指令,忽略bit[0],不进行状态切换,保持和以前ARM版本兼容
                                                                        此控制位可以影响以下指令:LDM、LDR和POP
                                                                        对于ARM版本5以前的处理器,该位没有使用,应作为UNP/SBZP
                                                                        对于ARM版本5以后的处理器,如果不支持向前兼容的属性,读取时该位返回0,写入时忽略
                       
                                                                        Bit(bit[31:16])
                       
                                                                        这些位保留将来使用,应为UNP/SBZP
继承事业,薪火相传
返回列表