- UID
- 1029342
- 性别
- 男
|
在操作码opcode2的取值中,主标识符(opcode2=0)是强制定义的,其他标识符由芯片的生产厂商定义。如果操作码opcode2指定的值未定义,指令将返回主标识符。其他标识符的值应与主标识符的值不同,可以由软件编程来实现,同时读取主标识符和其他标识符,并将两者的值进行比较。如果两个标识符值相同,说明未定义该标识符;如果两个标识符值不同,说明定义了该标识符,并且得到该标识符的值。
(1)主标识符寄存器
当协处理器指令对CP15进行操作,并且操作码opcode=2时,处理器的主标识符将被读出。从主标识符中,可以确定ARM体系结构的版本型号。同时也可以参考由芯片生产厂商定义的其他标识符,来获得更详细的信息。
在主标识信息中,bit[15:12]区分了不同的处理器版本:
· 如果bit[15:12]为0x0,说明处理器是ARM7之前的处理器;
· 如果bit[15:12]为0x7,说明处理器为ARM7处理器;
· 如果bit[15:12]为其他值,说明处理器为ARM7之后的处理器。
对于ARM7之后的处理器,其标识符的编码格式如图15.2所示。
其中各部分的编码含义说明如下。
bit[3:0]:包含生产厂商定义的处理器版本型号。
bit[15:4]:生产厂商定义的产品主编号,可能的取值为0x0~0x7。
bit[19:16]:ARM体系的版本号,可能的取值如表15.3(其他值由ARM公司保留将来使用)所示。
图15.2 ARM7之后处理器标识符编码
表15.3 bit[19:16]与ARM版本号
可能的取值
| 版 本 号
| 0x1
| ARM体系版本4
| 0x2
| ARM体系版本4T
| 0x3
| ARM体系版本5
| 0x4
| ARM体系版本5T
| 0x5
| ARM体系版本5TE
|
bit[23:20]:生产厂商定义的产品子编号。当产品主编号相同时,使用子编号区分不同的产品子类,如产品中不同的cache的大小。
bit[31:24]:生产厂商的编号现已定义的如表15.4所示。其他的值ARM公司保留将来使用。
表15.4 bit[31:24]值与ARM生产厂商
可能的取值
| ARM芯片生产厂商
| 0x41(A)
| ARM公司
| 0x44(D)
| Digital Equipment
| 0x69(i)
| Intel公司
|
对于ARM7系统的处理器,其主标识符的编码如图15.3所示。
图15.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]:生产厂商的编号已定义的如表15.5所示,其他的值ARM公司保留将来使用。
表15.5 bit[31:24]值与ARM生产厂商
可能的取值
| ARM芯片生产厂商
| 0x41(A)
| ARM公司
| 0x44(D)
| Digital Equipment
| 0x69(i)
| Intel公司
|
对于ARM7系统的处理器,其主标识符的编码如图15.4所示。
图15.4 ARM7之前处理器标识符编码
其中各部分的含义说明如下。
bit[3:0]:包含生产厂商定义的处理器版本型号。
bit[31:4]:处理器标识符及其含义如表15.6所示。
表15.6 ARM之后处理器标识符与含义
处理器标识符
| 含 义
| 0x4156030
| ARM3(体系版本2)
| 0x4156060
| ARM600(ARM体系版本3)
| 0x4156061
| ARM610(ARM体系版本3)
| 0x4156062
| ARM620(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类型标识符寄存器各控制字段的含义编码格式如图15.5所示。
图15.5 Cache属性寄存器标识符编码格式
其中各控制字段的含义说明如下。
属性字段(ctype):指定没有在S位、数据Cache相关属性位、指令Cache相关属性类中指定的属性,其具体编码参见表15.7。
表15.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],它们的结构相同,图15.6以指令Cache为例,显示了编码结构。
图15.6 指令Cache编码结构
其中,各部分的含义说明如下。
bit[11:9]:保留用于将来使用。
bit[8:6]:定义Cache的容量,其编码格式及含义如表15.8所示。 |
|