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