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

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

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

在操作码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所示。
继承事业,薪火相传
返回列表