ARM存儲器之:協(xié)處理器CP15
(2)Cache類型標識符寄存器
如前所述,對于指令MRC來說,當協(xié)處理器寄存器為r0,而第二操作數(shù)opcode2為0b001時,指令讀取值為Cache類型,即可以用下面的指令將處理器的Cache類型標識符寄存器的內(nèi)容讀取到寄存器r0中。
MRCP15,0,r0,c0,c0,1
Cache類型標識符定義了關(guān)于Cache的信息,具體內(nèi)容如下所述。
·系統(tǒng)中的數(shù)據(jù)Cache和指令Cache是分開的還是統(tǒng)一的。
·Cache的容量、塊大小以及相聯(lián)特性。
·Cache類型是直(write-through)寫還是回寫(write-back)。
·對于回寫(write-back)類型的Cache如何有效清除Cache內(nèi)容。
·Cache是否支持內(nèi)容鎖定。
Cache類型標識符寄存器各控制字段的含義編碼格式如圖15.5所示。
圖15.5Cache屬性寄存器標識符編碼格式
其中各控制字段的含義說明如下。
屬性字段(ctype):指定沒有在S位、數(shù)據(jù)Cache相關(guān)屬性位、指令Cache相關(guān)屬性類中指定的屬性,其具體編碼參見表15.7。
表15.7 Cache類型標識符寄存器屬性字段含義
編碼 | Cache類型 | Cache內(nèi)容清除方法 | Cache內(nèi)容鎖定方法 |
0b0000 | 直寫 | 不需要內(nèi)容清除 | 不支持 |
0b0001 | 回寫 | 數(shù)據(jù)塊讀取 | 不支持 |
0b0010 | 回寫 | 由寄存器定義 | 不支持 |
0b0110 | 回寫 | 由寄存器定義 | 支持格式A,見后 |
0b0111 | 回寫 | 由寄存器定義 | 支持格式B,見后 |
S位:定義系統(tǒng)中的數(shù)據(jù)Cache和指令Cache是分開的還是統(tǒng)一的。如果S=0,說明指令Cache和數(shù)據(jù)Cache是統(tǒng)一的,如果S=1,則說明數(shù)據(jù)Cache和指令Cache是分離的。
數(shù)據(jù)Cache相關(guān)屬性:定義了數(shù)據(jù)Cache容量、行大小和相聯(lián)(associativity)特性(如果S≠0)。
指令Cache相關(guān)屬性:定義了指令Cache容量、行大小和相聯(lián)(associativity)特性(如果S≠0)。
數(shù)據(jù)Cache相關(guān)屬性和指令Cache相關(guān)屬性分別占用控制字段[23:12]和[11:0],它們的結(jié)構(gòu)相同,圖15.6以指令Cache為例,顯示了編碼結(jié)構(gòu)。
圖15.6指令Cache編碼結(jié)構(gòu)
其中,各部分的含義說明如下。
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 |
續(xù)表
編碼 | M=0時的含義 | M=1時的含義 |
0b100 | 8KB | 12KB |
0b101 | 16KB | 24KB |
0b110 | 32KB | 48KB |
0b111 | 64KB | 96KB |
評論