五大ARM存储器之一:协处理器CP15
c0包含的是ARM本身或芯片生产厂商的一些标识信息。当使用MRC指令读c0时,根据第二个操作码opcode2的不同,读出的标识符也是不同的。操作码与标识符的对应关系如表2所示。c0是只读,当用MCR指令对其进行写操作时,指令的执行结果不可预知。
表2 操作码和标识符的对应关系
opcode_2编码 | 对应的标识符号寄存器 |
0b000 | 主标识符寄存器 |
0b001 | cache类型标识符寄存器 |
其他 | 保留 |
(1)主标识符寄存器
当协处理器指令对CP15进行操作,并且操作码opcode=2时,处理器的主标识符将被读出。从主标识符中,可以确定ARM体系结构的版本型号。同时也可以参考由芯片生产厂商定义的其他标识符,来获得更详细的信息。
在主标识信息中,bit[15:12]区分了不同的处理器版本:
· 如果bit[15:12]为0x0,说明处理器是ARM7之前的处理器;
· 如果bit[15:12]为0x7,说明处理器为ARM7处理器;
· 如果bit[15:12]为其他值,说明处理器为ARM7之后的处理器。
对于ARM7之后的处理器,其标识符的编码格式如图2所示。
其中各部分的编码含义说明如下。
bit[3:0]:包含生产厂商定义的处理器版本型号。
bit[15:4]:生产厂商定义的产品主编号,可能的取值为0x0~0x7。
bit[19:16]:ARM体系的版本号,可能的取值如表3(其他值由ARM公司保留将来使用)所示。

图2 ARM7之后处理器标识符编码
表3 bit[19:16]与ARM版本号
可能的取值
0x1
0x2
0x3
0x4
0x5
bit[23:20]:生产厂商定义的产品子编号。当产品主编号相同时,使用子编号区分不同的产品子类,如产品中不同的cache的大小。
bit[31:24]:生产厂商的编号现已定义的如表4所示。其他的值ARM公司保留将来使用。
表4 bit[31:24]值与ARM生产厂商
可能的取值
0x41
0x44
0x69
对于ARM7系统的处理器,其主标识符的编码如图3所示。

图3 ARM7处理器标识符编码
其中各部分的含义说明如下。
bit[3:0]:包含生产厂商定义的处理器版本型号。
bit[15:4]:生产厂商定义的产品主编号,其最高4位的值为0x7。
bit[22:16]:生产商定义的产品子编号。当产品的主编号相同时,使用子编号区分不同的产品子类,如产品中不同的产品子类、不同产品中高速缓存的大小。
bit[23]:ARM7处理器支持下面两种ARM体系的版本号。0x0代表ARM体系版本3;0x1代表ARM体系版本4T。
bit[31:24]:生产厂商的编号已定义的如表5所示,其他的值ARM公司保留将来使用。
表5 bit[31:24]值与ARM生产厂商
可能的取值ARM芯片生产厂商
0x41(A)ARM公司
0x44(D)Digital Equipment
0x69(i)Intel公司
对于ARM7系统的处理器,其主标识符的编码如图4所示。

图4 ARM7之前处理器标识符编码
其中各部分的含义说明如下。
bit[3:0]:包含生产厂商定义的处理器版本型号。
bit[31:4]:处理器标识符及其含义如表6所示。
表6 ARM之后处理器标识符与含义
处理器标识符含 义
0x4156030ARM3(体系版本2)
0x4156060ARM600(ARM体系版本3)
0x4156061ARM610(ARM体系版本3)
0x4156062ARM620(ARM体系版本3)
(2)Cache类型标识符寄存器
如前所述,对于指令MRC来说,当协处理器寄存器为r0,而第二操作数opcode2为0b001时,指令读取值为Cache类型,即可以用下面的指令将处理器的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相关属性位、
ARM存储器协处理器CP1 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
