ARM存儲(chǔ)器之:協(xié)處理器CP15
15.1.2CP15中的寄存器
表15.1給出了CP15主要寄存器的功能和作用。
表15.1 CP15寄存器
寄存器編號(hào) | 基本作用 | 特殊用途 |
0 | ID編號(hào)(只讀) | ID和Cache類型 |
1 | 控制位 | 各種控制位 |
2 | 存儲(chǔ)器保護(hù)和控制 | MMU:地址轉(zhuǎn)換表基地址 PU:Cache屬性設(shè)置 |
3 | 內(nèi)存保護(hù)和控制 | MMU:域訪問控制 PU:寫緩存控制 |
4 | 內(nèi)存保護(hù)和控制 | 保留 |
5 | 內(nèi)存保護(hù)和控制 | MMU:錯(cuò)誤狀態(tài) PU:訪問權(quán)限控制 |
6 | 內(nèi)存保護(hù)和控制 | MMU:錯(cuò)誤狀態(tài) PU:保護(hù)區(qū)域控制 |
7 | Cache和寫緩存 | Cache和寫緩存控制 |
8 | 內(nèi)存保護(hù)和控制 | MMU:TLB控制 PU:保留 |
9 | Cache和寫緩存 | Cache鎖定 |
續(xù)表
寄存器編號(hào) | 基本作用 | 特殊用途 |
10 | 內(nèi)存保護(hù)和控制 | MMU:TLB鎖定 PU:保留 |
11 | 保留 | 保留 |
12 | 保留 | 保留 |
13 | 進(jìn)程ID | 進(jìn)程ID |
14 | 保留 | 保留 |
15 | 芯片生產(chǎn)廠商定義 | 芯片生產(chǎn)廠商定義 |
15.1.3寄存器c0
寄存器c0包含的是ARM本身或芯片生產(chǎn)廠商的一些標(biāo)識(shí)信息。當(dāng)使用MRC指令讀c0寄存器時(shí),根據(jù)第二個(gè)操作碼opcode2的不同,讀出的標(biāo)識(shí)符也是不同的。操作碼與標(biāo)識(shí)符的對(duì)應(yīng)關(guān)系如表15.2所示。寄存器c0是只讀寄存器,當(dāng)用MCR指令對(duì)其進(jìn)行寫操作時(shí),指令的執(zhí)行結(jié)果不可預(yù)知。
表15.2 操作碼和標(biāo)識(shí)符的對(duì)應(yīng)關(guān)系
操作碼opcode2 | 對(duì)應(yīng)的標(biāo)識(shí)符寄存器 |
0b000 | 主標(biāo)識(shí)符寄存器 |
0b001 | Cache類型寄存器 |
其他 | 保留 |
在操作碼opcode2的取值中,主標(biāo)識(shí)符(opcode2=0)是強(qiáng)制定義的,其他標(biāo)識(shí)符由芯片的生產(chǎn)廠商定義。如果操作碼opcode2指定的值未定義,指令將返回主標(biāo)識(shí)符。其他標(biāo)識(shí)符的值應(yīng)與主標(biāo)識(shí)符的值不同,可以由軟件編程來實(shí)現(xiàn),同時(shí)讀取主標(biāo)識(shí)符和其他標(biāo)識(shí)符,并將兩者的值進(jìn)行比較。如果兩個(gè)標(biāo)識(shí)符值相同,說明未定義該標(biāo)識(shí)符;如果兩個(gè)標(biāo)識(shí)符值不同,說明定義了該標(biāo)識(shí)符,并且得到該標(biāo)識(shí)符的值。
(1)主標(biāo)識(shí)符寄存器
當(dāng)協(xié)處理器指令對(duì)CP15進(jìn)行操作,并且操作碼opcode=2時(shí),處理器的主標(biāo)識(shí)符將被讀出。從主標(biāo)識(shí)符中,可以確定ARM體系結(jié)構(gòu)的版本型號(hào)。同時(shí)也可以參考由芯片生產(chǎn)廠商定義的其他標(biāo)識(shí)符,來獲得更詳細(xì)的信息。
在主標(biāo)識(shí)信息中,bit[15:12]區(qū)分了不同的處理器版本:
·如果bit[15:12]為0x0,說明處理器是ARM7之前的處理器;
·如果bit[15:12]為0x7,說明處理器為ARM7處理器;
·如果bit[15:12]為其他值,說明處理器為ARM7之后的處理器。
對(duì)于ARM7之后的處理器,其標(biāo)識(shí)符的編碼格式如圖15.2所示。
其中各部分的編碼含義說明如下。
bit[3:0]:包含生產(chǎn)廠商定義的處理器版本型號(hào)。
bit[15:4]:生產(chǎn)廠商定義的產(chǎn)品主編號(hào),可能的取值為0x0~0x7。
bit[19:16]:ARM體系的版本號(hào),可能的取值如表15.3(其他值由ARM公司保留將來使用)所示。
圖15.2ARM7之后處理器標(biāo)識(shí)符編碼
表15.3 bit[19:16]與ARM版本號(hào)
可能的取值 | 版本號(hào) |
0x1 | ARM體系版本4 |
0x2 | ARM體系版本4T |
0x3 | ARM體系版本5 |
0x4 | ARM體系版本5T |
0x5 | ARM體系版本5TE |
評(píng)論