03-cache的查询原理
引流關(guān)鍵詞:緩存,高速緩存,cache, CCI,CMN,CCI-550,CCI-500,DSU,SCU,L1,L2,L3,system cache, Non-cacheable,Cacheable, non-shareable,inner-shareable,outer-shareable, optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、內(nèi)存管理、頁表…
快速鏈接:
.
👉👉👉 個(gè)人博客筆記導(dǎo)讀目錄(全部) 👈👈👈
目錄
- 1. cache的查詢原理
- 2. cache的查詢示例
思考:
1、A710 core為例,它的L1是VIPT的cache,它的L1 data是64KB,4路組相連,那么每一個(gè)way就是16KB。用于查詢cache的index的必需要能覆蓋16KB,所以虛擬地址vaddr[13:0]應(yīng)位index。 假設(shè)操作系統(tǒng)的granue size位4KB,也就是物理地址和虛擬地址的BIT[11:0]是相等的。 那么這是否會(huì)出現(xiàn)歧義或別名呢?
1. cache的查詢原理
高速緩存控制器(cache controller )是負(fù)責(zé)管理高速緩存內(nèi)存的硬件塊,其方式對程序來說在很大程度上是不可見的。它自動(dòng)將代碼或數(shù)據(jù)從主存寫入緩存。它從core接收讀取和寫入內(nèi)存請求,并對高速緩存或外部存儲(chǔ)器執(zhí)行必要的操作。
當(dāng)它收到來自core的請求時(shí),它必須檢查是否能在緩存中找到所請求的地址。這稱為緩存查找(cache look-up)。它通過將請求的地址位的subset(index)與與緩存中的physical TAG 進(jìn)行比較來做到這一點(diǎn)。如果存在匹配,稱為命中(hit),并且該行被標(biāo)記為有效,則使用高速緩存進(jìn)行讀取或?qū)懭搿?/p>
當(dāng)core從特定地址請求指令或數(shù)據(jù),但與緩存標(biāo)簽不匹配或標(biāo)簽無效時(shí),會(huì)導(dǎo)致緩存未命中,請求必須傳遞到內(nèi)存層次結(jié)構(gòu)的下一層,即 L2緩存或外部存儲(chǔ)器。它還可能導(dǎo)致緩存行填充。緩存行填充會(huì)導(dǎo)致將一塊主內(nèi)存的內(nèi)容復(fù)制到緩存中。同時(shí),請求的數(shù)據(jù)或指令被流式傳輸?shù)絚ore。這個(gè)過程軟件開發(fā)人員不能直接看到。在使用數(shù)據(jù)之前,core不需要等待 linefill 完成。高速緩存控制器通常首先訪問高速緩存行內(nèi)的關(guān)鍵字。例如,如果您執(zhí)行的加載指令在緩存中未命中并觸發(fā)緩存行填充,則內(nèi)核首先檢索緩存行中包含所請求數(shù)據(jù)的那部分。這些關(guān)鍵數(shù)據(jù)被提供給core流水線,而緩存硬件和外部總線接口隨后在后臺(tái)讀取緩存線的其余部分。
總結(jié)一下就是:先使用index去查詢cache,然后再比較TAG,比較TAG之后再檢查valid標(biāo)志位。
但是這里要注意:TAG包含了不僅僅是物理地址,還有很多其它的東西,如NS比特位等,這些都是在比較TAG的時(shí)候完成。
2. cache的查詢示例
假設(shè)一個(gè)4路相連的cache(如cortex-A710),大小64KB, cache line = 64bytes,那么 1 way = 16KB,indexs = 16KB / 64bytes = 256 (注: 0x4000 = 16KB、0x40 = 64 bytes)
0x4000 – index 0
0x4040 – index 1
0x4080 – index 2
…
0x7fc0 – index 255
0x8000 – index 0
0x8040 – index 1
0x8080 – index 2
…
0xbfc0 – index 255
細(xì)心的同學(xué)可以發(fā)現(xiàn),這里就有了一個(gè)很大的問題,你用于cache look-up的index是vaddr[15:6], 如果granue size是4KB,那么vaddr[11:0] = paddrr[11:0] , 但是vaddr[15:12]比特并不等于paddrr[15:12] ,那么你這樣的index查詢的cache有效嗎?會(huì)不會(huì)發(fā)生同名、歧義 ?
其實(shí)大可不必?fù)?dān)心,因?yàn)閷τ诿總€(gè)core,L1是VIPT的,其實(shí)它們的L1 Cache TAG中,已經(jīng)規(guī)定了physical address[39:12],正好是到BIT12。所以只要TAG比較之后,就不會(huì)出現(xiàn)同名和歧義。
總結(jié)
以上是生活随笔為你收集整理的03-cache的查询原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: A53 cache的架构解读
- 下一篇: MMU关闭时Cache的缓存策略是怎样的