CPU設(shè)計(jì)實(shí)戰(zhàn):LoongArch版 課件 09-Cache設(shè)計(jì)實(shí)驗(yàn)_第1頁
CPU設(shè)計(jì)實(shí)戰(zhàn):LoongArch版 課件 09-Cache設(shè)計(jì)實(shí)驗(yàn)_第2頁
CPU設(shè)計(jì)實(shí)戰(zhàn):LoongArch版 課件 09-Cache設(shè)計(jì)實(shí)驗(yàn)_第3頁
CPU設(shè)計(jì)實(shí)戰(zhàn):LoongArch版 課件 09-Cache設(shè)計(jì)實(shí)驗(yàn)_第4頁
CPU設(shè)計(jì)實(shí)戰(zhàn):LoongArch版 課件 09-Cache設(shè)計(jì)實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Cache設(shè)計(jì)實(shí)驗(yàn)Cache基本結(jié)構(gòu)和概念2cacheblock/cacheline、state、tag、data組相聯(lián)映射(setassociative)地址分為tag、index、offsetway、set、wordhit、missreplace、refillreplacepolicywritethrough/writebackwriteallocate/writenon-allocatedirtyvirtualindexphysicaltagpagealiasTagOffsetIndexChitMuxMuxCMuxdata+TagTaghit0hit1data1data0與Cache相關(guān)的一些概念3可緩存(cacheable)與不可緩存(non-cacheable)緩存一致性(cachecoherency)總線的突發(fā)傳輸(burstmode)Cache邏輯結(jié)構(gòu)與RAM間的映射關(guān)系4剛需:不同way同一set的tag和S(Valid)必須能夠同時讀出不同way同一set的同一word必須能夠同時讀出優(yōu)化需求:面積優(yōu)化需求:RAM數(shù)目盡可能少功耗優(yōu)化需求:每次同時訪問的RAM數(shù)目盡可能少性能優(yōu)化需求:hitstore寫RAM盡可能少的阻塞后續(xù)訪存指令訪問cachereplace和refill盡可能少的阻塞訪存指令訪問cache用單端口RAM還是多端口RAM?支持字節(jié)粒度的寫,盡可能多的分bank同一路的一整行盡可能一次能讀、寫CacheRAM組織方案15對于tag、V(alid)、Dirty等域,二元組(M,N)表示wayM的setN對于data域,三元組(M,N,K)表示wayMsetNwordKCacheRAM組織方案26CacheRAM組織方案37不同Cache訪問對Cache各部分的訪問行為8Lookup:判斷是否在Cache中,根據(jù)命中信息選取Data部分的內(nèi)容HitWrite:命中的寫操作進(jìn)入WriteBuffer后將數(shù)據(jù)寫入命中Cache行的對應(yīng)位置Replace:為了給Refill的數(shù)據(jù)空出位置而發(fā)起的讀取一個Cache行的操作Refill:將內(nèi)存返回的數(shù)據(jù)(以及storemiss待寫入的數(shù)據(jù))填入Replace空出的位置上LookupHitWriteReplaceRefillTag讀所有路讀待替換路寫待替換路V讀所有路讀待替換路寫待替換路Data讀所有路的局部寫命中路的局部讀待替換路的全部寫待替換路的全部D(irty)更新命中路讀待替換路寫待替換路Cache、TLB和總線接口在流水線CPU中的位置9I-CacheD-CacheTLBAXIbusi/fdcacheloadhit時序10EXEMEMWB根據(jù)計(jì)算出的虛地址的低位生成cacheRAM的片選、地址等信息。將計(jì)算出的虛地址送到MMU部件用于虛實(shí)地址轉(zhuǎn)換將讀出的tag與MMU轉(zhuǎn)換出的物理地址高位進(jìn)行比較,產(chǎn)生Hit信息。根據(jù)地址低位信息選擇cache行內(nèi)所需的數(shù)據(jù)。根據(jù)Hit信息選擇出命中路的數(shù)據(jù)傳遞到下一級。(如果是在這一級做Align,是將Align后的結(jié)果傳遞給下一級)1.如果Align放到這一級做,還需要進(jìn)行Aligndcachestorehit時序11上面給的是WriteBack策略的Cache時序?yàn)槭裁碨toreBuffer是在WB級寫cache?如果在MEM級寫要注意什么?StoreBuffer是否在WB級立即寫,還是可以推遲到不阻塞EXE級的訪存指令訪問RAM,可以自行考慮。如果是立即寫,StoreBuffer中的寫操作可能會阻塞EXE及的訪存指令如果是推遲寫,后續(xù)落在StoreBuffer地址范圍內(nèi)的load需要從StoreBuffer取回最新的值EXEMEMWB根據(jù)計(jì)算出的虛地址的低位生成cacheRAM的片選、地址等信息。此時建議不產(chǎn)生dataRAM的片選將計(jì)算出的虛地址送到MMU部件用于虛實(shí)地址轉(zhuǎn)換將讀出的tag與MMU轉(zhuǎn)換出的物理地址高位進(jìn)行比較,產(chǎn)生Hit信息。將命中情況、完整的物理地址、操作類型、待寫入的數(shù)據(jù)送到StoreBuffer。1.根據(jù)StoreBuffer中的信息真正將數(shù)據(jù)寫入Cache中,千萬不要忘了更新Dirty位。dcacheloadmiss時序12EXEMEMWB根據(jù)計(jì)算出的虛地址的低位生成cacheRAM的片選、地址等信息。將計(jì)算出的虛地址送到MMU部件用于虛實(shí)地址轉(zhuǎn)換將讀出的tag與MMU轉(zhuǎn)換出的物理地址高位進(jìn)行比較,產(chǎn)生Miss信息。將miss情況、地址等信息發(fā)往cachemiss的處理邏輯,隨后將load阻塞在這一級,等待cachemiss處理邏輯返回結(jié)果。將cachemiss處理邏輯反饋的結(jié)果傳遞到下一級。(如果是在這一級做Align,是將Align后的結(jié)果傳遞給下一級)1.如果Align放到這一級做,還需要進(jìn)行Aligndcachestoremiss時序13上面給的是WriteAllocate策略的cache時序所給的最簡單設(shè)計(jì)loadmiss和storemiss的處理很相似,出錯可能性低。但是,storemiss其實(shí)不用堵塞流水線,只要miss請求被miss處理邏輯接受了,就可以進(jìn)入下一級。通常我們會設(shè)計(jì)一個MissFillBuffer來存放miss那一行返回的數(shù)據(jù),StoreBuffer中的miss可以將值寫到MissFillBuffer的對應(yīng)位置,做好相關(guān)標(biāo)記(避免被取回的舊值沖掉),就可以退出流水線了。EXEMEMWB根據(jù)計(jì)算出的虛地址的低位生成cacheRAM的片選、地址等信息。此時建議不產(chǎn)生dataRAM的片選將計(jì)算出的虛地址送到MMU部件用于虛實(shí)地址轉(zhuǎn)換將讀出的tag與MMU轉(zhuǎn)換出的物理地址高位進(jìn)行比較,產(chǎn)生Miss信息。將miss情況、地址等信息發(fā)往cachemiss的處理邏輯。最簡單的設(shè)計(jì),可以將Store阻塞在這一級,等到cachemiss處理邏輯refill回?cái)?shù)據(jù)之后,再將Store送到StoreBuffer中1.根據(jù)StoreBuffer中的信息真正將數(shù)據(jù)寫入Cache中,并置Dirty位。Cache替換與填入14初次設(shè)計(jì)采用偽隨機(jī)替換算法是最容易實(shí)現(xiàn)的替換策略,因?yàn)榇藭r讀出被替換行的時機(jī)是最自由的,只要在填入發(fā)生前完成就可以。多耗費(fèi)一些寄存器,能夠?qū)⑻鎿Q出的cacheline整個存放下來,這樣被替換行原有內(nèi)容的讀出可以一拍完成,會降低控制的復(fù)雜度。同樣出于降低控制復(fù)雜度的考慮,建議在cachemiss處理邏輯中,用一個與cacheline等寬的MissFillBuffer將總線返回的數(shù)據(jù)先緩存下來,等到收集齊之后再一次性寫入cache。如果storemiss利用MissFillBuffer不再堵塞流水線了,存在這種情況:后面訪問同一cacheline的請求依然會報(bào)cachemiss,此時cachemiss處理邏輯一定要將這些同一cacheline的miss請求合并起來,不能向外部發(fā)起多次訪問請求。Cache的硬件初始化15Cache的tag、V等信息在RAM中存放,上電之后無法被復(fù)位為確定的狀態(tài),因此需要進(jìn)行初始化。LA32R規(guī)范中允許采用軟件初始化cache(通過CACOP指令)。不過在我們的實(shí)驗(yàn)中推薦實(shí)現(xiàn)硬件初始化Cache。硬件初始化cache功能的一個可行的設(shè)計(jì)思路是:復(fù)用refill的數(shù)據(jù)通路,只是在refill操作控制上引入一段初始化的控制序列,從而完成初始化的功能。Non-Cacheable訪問的設(shè)計(jì)考慮16由于訪存操作在發(fā)起請求的那一拍尚未訪問TLB,所以無法知曉其是cacheable訪問還是non-cacheable訪問,因此所有訪存操作總是要先發(fā)起Cache的訪問請求,在Cache讀出的那一拍再根據(jù)TLB訪問得到的存儲訪問類型決定接下來是按照cacheable訪問還是no

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論