ARM存儲器之:協處理器CP15
(2)Cache類型標識符寄存器
如前所述,對于指令MRC來說,當協處理器寄存器為r0,而第二操作數opcode2為0b001時,指令讀取值為Cache類型,即可以用下面的指令將處理器的Cache類型標識符寄存器的內容讀取到寄存器r0中。
MRCP15,0,r0,c0,c0,1
Cache類型標識符定義了關于Cache的信息,具體內容如下所述。
·系統中的數據Cache和指令Cache是分開的還是統一的。
·Cache的容量、塊大小以及相聯特性。
·Cache類型是直(write-through)寫還是回寫(write-back)。
·對于回寫(write-back)類型的Cache如何有效清除Cache內容。
·Cache是否支持內容鎖定。
Cache類型標識符寄存器各控制字段的含義編碼格式如圖15.5所示。
圖15.5Cache屬性寄存器標識符編碼格式
其中各控制字段的含義說明如下。
屬性字段(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所示。
表15.8 類型標識符寄存器控制字段bit[8:6]含義
編碼 | M=0時的含義 | M=1時的含義 |
0b000 | 0.5KB | 0.75KB |
0b001 | 1KB | 1.5KB |
0b010 | 2KB | 3KB |
0b011 | 4KB | 6KB |
續表
編碼 | M=0時的含義 | M=1時的含義 |
0b100 | 8KB | 12KB |
0b101 | 16KB | 24KB |
0b110 | 32KB | 48KB |
0b111 | 64KB | 96KB |
評論