ARM存儲器之:高速緩沖存儲器Cache
(2)寄存器c7
CP15中的寄存器c7主要用于控制Cache和寫緩存。
注意 | c7有時也用于其他相似的功能,如果系統(tǒng)中存在預(yù)測緩存(prefetchbuffers)和分支目標(biāo)(branchtarget)Cache,c7也將負(fù)責(zé)對它們進行控制。 |
c7是一個只寫存儲器,可以使用協(xié)處理器指令MCR對其進行操作。如果程序中包含讀c7的操作,那么指令的結(jié)果不可預(yù)知。
使用MCR指令寫該寄存器的命令格式如下所示。
MCRP15,0,Rd>,c7>,CRm>,opcode2>
其中,CRm和opcode2的不同組合,決定指令執(zhí)行的不同操作。具體組合與操作的對應(yīng)關(guān)系見表15.15。
表15.15 CRm與opcode2不同組合與操作的應(yīng)用關(guān)系
CRm | Opcode2 | 含義 | 數(shù)據(jù) |
c0 | 4 | 等待中斷 | 0(SBZ,shouldbezero) |
c5 | 0 | 使整個指令Cache無效 | 0 |
c5 | 1 | 使指令Cache中某行無效 | 虛擬地址 |
c5 | 2 | 使指令Cache中某行無效 | 組號/索引 |
c5 | 4 | 清空預(yù)取緩存區(qū) | 0 |
c5 | 6 | 清空整個分支目標(biāo)Cache | 0 |
c5 | 7 | 清空分支目標(biāo)Cache中的某入口項 | 生產(chǎn)商定義 |
c6 | 0 | 使整個數(shù)據(jù)Cache無效 | 0 |
續(xù)表
CRm | Opcode2 | 含義 | 數(shù)據(jù) |
c6 | 1 | 使數(shù)據(jù)Cache中的某行無效 | 虛擬地址 |
c6 | 2 | 使數(shù)據(jù)Cache中的某行無效 | 組號/索引 |
c7 | 0 | 使整個統(tǒng)一Cache無效 哈佛結(jié)構(gòu)中,使整個數(shù)據(jù)Cache和指令Cache無效 | 0 |
c7 | 1 | 使統(tǒng)一Cache中某行無效 | 虛擬地址 |
c7 | 2 | 使統(tǒng)一Cache中某行無效 | 組號/索引 |
c8 | 2 | 等待中斷 | 0 |
c10 | 1 | 清理數(shù)據(jù)Cache行 | 虛擬地址 |
c10 | 2 | 清理數(shù)據(jù)Cache行 | 組號/索引 |
c10 | 4 | 清除寫緩存區(qū) | 0 |
c11 | 1 | 清理統(tǒng)一Cache行 | 虛擬地址 |
c11 | 2 | 清理統(tǒng)一Cache行 | 組號/索引 |
c13 | 1 | 預(yù)取指令Cache中的某行 | 虛擬地址 |
c14 | 1 | 清理并使數(shù)據(jù)Cache中的某行無效 | 虛擬地址 |
c14 | 2 | 清理并使數(shù)據(jù)Cache中的某行無效 | 組號/索引 |
c15 | 1 | 清理并使統(tǒng)一Cache中的某行無效 | 虛擬地址 |
c15 | 2 | 清理并使統(tǒng)一Cache中的某行無效 | 組號/索引 |
(3)寄存器c9
將Cache進入存儲系統(tǒng)的注意目的是要提高系統(tǒng)的平均訪問速度。但Cache是一把雙刃劍,在某些情況下,可能使系統(tǒng)的性能更遭。下面列出了3種使Cache性能明顯下降的原因。
①Cache訪問未命中,處理器轉(zhuǎn)向主存尋址數(shù)據(jù),這期間的延時對系統(tǒng)性能影響很大。
②在回寫型Cache中,如果Cache中的數(shù)據(jù)所在地址被存儲管理單元重新定位(即Cache中存儲的為虛地址數(shù)據(jù)),那么數(shù)據(jù)回寫的操作延時很大。
③當(dāng)處理器需要一個字節(jié)數(shù)據(jù),而此數(shù)據(jù)恰好不在Cache中,那么Cache的替換策略就會將整個Cache行換進,增加了系統(tǒng)不必要的開銷。
存儲器相關(guān)文章:存儲器原理
評論