《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》系統(tǒng)結(jié)構(gòu)5_第1頁(yè)
《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》系統(tǒng)結(jié)構(gòu)5_第2頁(yè)
《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》系統(tǒng)結(jié)構(gòu)5_第3頁(yè)
《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》系統(tǒng)結(jié)構(gòu)5_第4頁(yè)
《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》系統(tǒng)結(jié)構(gòu)5_第5頁(yè)
已閱讀5頁(yè),還剩138頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、章節(jié)題 目主要內(nèi)容5.1存儲(chǔ)器層次結(jié)構(gòu)多級(jí)存儲(chǔ)器;性能參數(shù)(平均每位價(jià)格,命中率,平均訪存時(shí)間)5.2Cache基本知識(shí)主存地址劃分;映像規(guī)則;查找方法;替換算法;寫規(guī)則;Cache性能分析5.3降低cache失效率3C失效;增加塊大?。惶岣呦嗦?lián)度;增加cache容量;victim cache;偽相聯(lián);硬件預(yù)??;編譯器預(yù)?。痪幾g器優(yōu)化5.4減少失效開銷讀失效優(yōu)先于寫;寫緩沖合并;請(qǐng)求字優(yōu)先;非阻塞cache;采用兩級(jí)cache5.5減少命中時(shí)間小容量簡(jiǎn)單cache;虛擬cache;cache訪問流水化;trace cache5.6主存單體單字;單體多字;多體交叉;獨(dú)立存儲(chǔ)體;避免存儲(chǔ)體沖突5.

2、7虛擬存儲(chǔ)器原理;段式;頁(yè)式;段頁(yè)式;快表(TLB)從用戶的角度來看,存儲(chǔ)器的三個(gè)主要指標(biāo): 容量、速度和價(jià)格(指每位價(jià)格)人們對(duì)這三個(gè)指標(biāo)的要求 容量大、速度快、價(jià)格低三個(gè)要求是相互矛盾的速度越快,每位價(jià)格就越高;容量越大,每位價(jià)格就越低;容量越大,速度越慢。5.1 存儲(chǔ)器的層次結(jié)構(gòu)5.1.1 從單級(jí)存儲(chǔ)器到多級(jí)存儲(chǔ)器5.1 存儲(chǔ)器的層次結(jié)構(gòu)解決方法 采用多種存儲(chǔ)器技術(shù),構(gòu)成所謂的存儲(chǔ)層次。 多級(jí)存儲(chǔ)層次5.1 存儲(chǔ)器的層次結(jié)構(gòu) C,H,TA假設(shè):S 容量 TA 訪問時(shí)間 C 每位價(jià)格下面僅考慮由M1和M2構(gòu)成的兩級(jí)存儲(chǔ)層次:M1的參數(shù):S1,TA1,C1M2的參數(shù):S2,TA2,C25.1

3、.2 存儲(chǔ)層次的性能參數(shù)5.1 存儲(chǔ)器的層次結(jié)構(gòu)每位價(jià)格C命中率H 和失效率F命中率:CPU訪問存儲(chǔ)系統(tǒng)時(shí),在M1中找到所需信息的概率。N1 訪問M1的次數(shù)N2 訪問M2的次數(shù) 失效率 :F1H5.1 存儲(chǔ)器的層次結(jié)構(gòu)平均訪問時(shí)間TA TA HTA1(1H)(TA1TM) TA1(1H)TM 或 TA TA1FTM分兩種情況來考慮CPU的一次訪存:當(dāng)命中時(shí),訪問時(shí)間即為TA1(命中時(shí)間)當(dāng)不命中時(shí),情況比較復(fù)雜。 不命中時(shí)的訪問時(shí)間為:TA2TBTA1TA1TM TM TA2TB失效開銷TM:從向M2發(fā)出訪問請(qǐng)求到把整個(gè)數(shù)據(jù)塊調(diào)入M1中所需的時(shí)間(包括訪問M2的時(shí)間TA2和傳送一個(gè)信息塊所需的

4、時(shí)間為TB)。 5.1 存儲(chǔ)器的層次結(jié)構(gòu) 從主存的角度來看“Cache主存”層次:彌補(bǔ)主存速度的不足“主存輔存”層次: 彌補(bǔ)主存容量的不足“Cache主存”層次主存與CPU的速度差距“Cache - 主存”層次 “主存輔存”層次5.1.3 “Cache主存”和“主存輔存”層次5.1 存儲(chǔ)器的層次結(jié)構(gòu)1980年以來存儲(chǔ)器和CPU性能隨時(shí)間而提高的情況 (以1980年時(shí)的性能作為基準(zhǔn))5.1 存儲(chǔ)器的層次結(jié)構(gòu)兩種存儲(chǔ)層次5.1 存儲(chǔ)器的層次結(jié)構(gòu)存儲(chǔ)層次CPU對(duì)第二級(jí)的訪問方式比較項(xiàng)目目的存儲(chǔ)管理實(shí)現(xiàn) 訪問速度的比值(第一級(jí)和第二級(jí))典型的塊(頁(yè))大小失效時(shí)CPU是否切換“Cache 主存”層次“主

5、存輔存”層次為了彌補(bǔ)主存速度的不足為了彌補(bǔ)主存容量的不足主要由專用硬件實(shí)現(xiàn)主要由軟件實(shí)現(xiàn)幾比一幾百比一幾十個(gè)字節(jié)幾百到幾千個(gè)字節(jié)可直接訪問均通過第一級(jí)不切換切換到其他進(jìn)程“Cache主存”與“主存輔存”層次的區(qū)別5.1 存儲(chǔ)器的層次結(jié)構(gòu)當(dāng)把一個(gè)塊調(diào)入高一層(靠近CPU)存儲(chǔ)器時(shí),可以放在哪些位置上? (映像規(guī)則)當(dāng)所要訪問的塊在高一層存儲(chǔ)器中時(shí),如何找到該塊?(查找算法)當(dāng)發(fā)生失效時(shí),應(yīng)替換哪一塊?(替換算法)當(dāng)進(jìn)行寫訪問時(shí),應(yīng)進(jìn)行哪些操作? (寫策略)5.1.4 存儲(chǔ)層次的四個(gè)問題預(yù)備知識(shí): Cache和主存分塊 Cache和主存分成大小相等的塊;存儲(chǔ)空間分割與地址計(jì)算 主存地址 = 塊地址

6、+塊內(nèi)位移; 5.2 Cache的基本知識(shí) 5.2 Cache的基本知識(shí) 5.2.1映象規(guī)則 全相聯(lián)映象 全相聯(lián):主存中的任一塊可以被放置到Cache中的任意一個(gè)位置。特點(diǎn):空間利用率最高,沖突概率最低,實(shí)現(xiàn)最復(fù)雜。 5.2 Cache的基本知識(shí)5.2 Cache的基本知識(shí)直接映象 直接映象:主存中的每一塊只能被放置到Cache中唯一的一個(gè)位置。(循環(huán)分配)特點(diǎn):空間利用率最低,沖突概率最高,實(shí)現(xiàn)最簡(jiǎn)單。對(duì)于主存的第i 塊,若它映象到Cache的第j 塊,則 ji mod (M ) (M為Cache的塊數(shù))設(shè)M=2m,則當(dāng)表示為二進(jìn)制數(shù)時(shí),j實(shí)際上就是i的低m位: ji:m位5.2 Cache

7、的基本知識(shí)組相聯(lián)映象 組相聯(lián):主存中的每一塊可以被放置到Cache中唯一的一個(gè)組中的任何一個(gè)位置。 組相聯(lián)是直接映象和全相聯(lián)的一種折中5.2 Cache的基本知識(shí)組的選擇常采用位選擇算法若主存第i 塊映象到第k 組,則 ki mod(G) (G為Cache的組數(shù))設(shè)G2g,則當(dāng)表示為二進(jìn)制數(shù)時(shí),k 實(shí)際上就是i 的低 g 位: 低g位以及直接映象中的低m位通常稱為索引。 ki:g位5.2 Cache的基本知識(shí)n 路組相聯(lián):每組中有n個(gè)塊(nM/G )。n 稱為相聯(lián)度。相聯(lián)度越高,Cache空間的利用率就越高,塊沖突概率就越低,失效率也就越低。 絕大多數(shù)計(jì)算機(jī)的Cache: n 4想一想:相聯(lián)度

8、一定是越大越好?全相聯(lián)直接映象組相聯(lián)n (路數(shù))G (組數(shù))MM111nM1GM標(biāo)識(shí)索引塊內(nèi)位移例題: 設(shè)cache共有8塊,每塊大小為4B,主存共有64塊,請(qǐng)給出直接映像、2路組相聯(lián)映像、4路組相聯(lián)映像和全相聯(lián)映像時(shí)的訪存地址格式和具體分析過程主存容量:64*4B = 2的8次方 訪存地址8位每塊大小為4B 塊內(nèi)位移2位 因此 塊地址 6位直接映射:8組 = 2的3次方 3 3 22路組相聯(lián):4組 = 2的2次方 4 2 24路組相聯(lián):2組 = 2的1次方 5 1 25.2 Cache的基本知識(shí)當(dāng)CPU訪問Cache時(shí),如何確定Cache中是否有所要訪問的塊?若有,如何確定其位置?通過查找目

9、錄表來實(shí)現(xiàn)目錄表的結(jié)構(gòu)M項(xiàng),對(duì)應(yīng)cache的M塊。有效位。找到候選位置,比較標(biāo)識(shí)。主存塊的塊地址的高位部分,稱為標(biāo)識(shí) 。每個(gè)主存塊能唯一地由其標(biāo)識(shí)來確定。5.2.2 查找算法5.2 Cache的基本知識(shí)順序查找主候選塊并行查找的實(shí)現(xiàn)方法相聯(lián)存儲(chǔ)器單體多字存儲(chǔ)器比較器 直接映象Cache的查找過程路組相聯(lián)Cache的查找過程5.2 Cache的基本知識(shí)5.2 Cache的基本知識(shí)所要解決的問題:當(dāng)新調(diào)入一塊,而Cache又已被占滿時(shí),替換哪一塊?直接映象Cache中的替換很簡(jiǎn)單 因?yàn)橹挥幸粋€(gè)塊,別無(wú)選擇。在組相聯(lián)和全相聯(lián)Cache中,則有多個(gè)塊供選擇。主要的替換算法有三種隨機(jī)法 優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單先

10、進(jìn)先出法(FIFO)5.2.3 替換算法5.2 Cache的基本知識(shí)最近最少使用法LRU選擇近期最少被訪問的塊作為被替換的塊。(實(shí)現(xiàn)比較困難)實(shí)際上:選擇最久沒有被訪問過的塊作為被替換的塊。 優(yōu)點(diǎn):失效率低。5.2 Cache的基本知識(shí)LRU和隨機(jī)法分別因其失效率低和實(shí)現(xiàn)簡(jiǎn)單而被廣泛采用。LRU和隨機(jī)法的失效率的比較5.2 Cache的基本知識(shí)1. “寫”在所有訪存操作中所占的比例 統(tǒng)計(jì)結(jié)果表明,對(duì)于一組給定的程序:load指令:26store指令:9“寫”在所有訪存操作中所占的比例:9/(100269)7“寫”在訪問數(shù)據(jù)Cache操作中所占的比例: 9/(269)255.2.4 寫策略5.2

11、 Cache的基本知識(shí)2. “寫”操作存在的問題(1) “讀”操作可以比較和讀出并行,“寫”則需要確定命中才能寫入(2)“寫”訪問有可能導(dǎo)致Cache和主存內(nèi)容的不一致3. 寫命中時(shí),兩種寫策略寫直達(dá)法執(zhí)行“寫”操作時(shí),不僅寫入Cache,而且也寫入下一級(jí)存儲(chǔ)器。寫回法(也稱為拷回法) 執(zhí)行“寫”操作時(shí),只寫入Cache。僅當(dāng)Cache中相應(yīng)的塊被替換時(shí),才寫回主存。 (設(shè)置“修改位”)5.2 Cache的基本知識(shí)4. 兩種寫策略的比較寫回法的優(yōu)點(diǎn):速度快,所使用的存儲(chǔ)器帶寬較低。寫直達(dá)法的優(yōu)點(diǎn):易于實(shí)現(xiàn),一致性好。5. 采用寫直達(dá)法時(shí),若在進(jìn)行“寫”操作的過程中CPU必須等待,直到“寫”操作

12、結(jié)束,則稱CPU寫停頓。減少寫停頓的一種常用的優(yōu)化技術(shù):采用寫緩沖器5.2 Cache的基本知識(shí)6. “寫”失效時(shí)按寫分配(寫時(shí)取)先把所寫單元所在的塊調(diào)入Cache,再行寫入。不按寫分配(繞寫法)直接寫入下一級(jí)存儲(chǔ)器而不調(diào)塊。7. 寫策略與調(diào)塊寫回法 按寫分配 (一般來說)寫直達(dá)法 不按寫分配 (一般來說)5.2 Cache的基本知識(shí)例:DEC的Alpha AXP21064中的內(nèi)部數(shù)據(jù)Cache簡(jiǎn)介物理地址34位塊大小:32 B(2的5次方)每塊4個(gè)字,每個(gè)字8個(gè)字節(jié) (2+3)Cache塊數(shù):256(2的8次方)Cache容量:8 KB (2的13次方)采用不按寫分配映象方法:直接映象 “

13、寫”策略:寫直達(dá)寫緩沖器大小:4個(gè)塊,每塊4個(gè)字5.2.5 Cache的結(jié)構(gòu)結(jié)構(gòu)圖工作過程“讀”訪問命中“寫”訪問命中失效情況下的操作 5.2 Cache的基本知識(shí)混合Cache與分離Cache優(yōu)缺點(diǎn)失效率的比較5.2 Cache的基本知識(shí)16 KB容量1 KB2 KB4 KB8 KB32 KB指令 Cache3.06%失 效 率 的 比 較64 KB128 KB數(shù)據(jù) Cache混合 Cache2.26%1.78%1.10%0.64%0.39%0.15%0.02%24.61%20.57%15.94%10.19%6.47%4.82%3.77%2.88%13.34%9.78%7.24%4.57%2

14、.87%1.99%1.36%0.95%5.2 Cache的基本知識(shí)失效率與硬件速度無(wú)關(guān)容易產(chǎn)生一些誤導(dǎo), 失效率低不一定平均訪存時(shí)間少平均訪存時(shí)間 平均訪存時(shí)間 命中時(shí)間失效率失效開銷5.2.6 Cache的性能分析5.2 Cache的基本知識(shí)程序執(zhí)行時(shí)間CPU時(shí)間(CPU執(zhí)行周期數(shù)+存儲(chǔ)器停頓周期數(shù)) 時(shí)鐘周期時(shí)間其中: 存儲(chǔ)器停頓時(shí)鐘周期數(shù)“讀”的次數(shù)讀失效率讀失效開銷“寫”的次數(shù)寫失效率寫失效開銷存儲(chǔ)器停頓時(shí)鐘周期數(shù)訪存次數(shù)失效率失效開銷 5.2 Cache的基本知識(shí) 例5.1 假設(shè)Cache的命中時(shí)間為1個(gè)時(shí)鐘周期,失效開銷為50個(gè)時(shí)鐘周期,在混合Cache中一次load或store操

15、作訪問Cache的命中時(shí)間都要增加1個(gè)時(shí)鐘周期(因?yàn)榛旌螩ache只有一個(gè)端口,無(wú)法同時(shí)滿足兩個(gè)請(qǐng)求,會(huì)導(dǎo)致結(jié)構(gòu)沖突),根據(jù)表5.4所列的失效率,試問指令Cache和數(shù)據(jù)Cache容量均為16 KB的分離Cache和容量為32 KB的混合Cache相比,哪種Cache的失效率更低?又假設(shè)采用寫直達(dá)策略,且有一個(gè)寫緩沖器,并且忽略寫緩沖器引起的等待。請(qǐng)問上述兩種情況下平均訪存時(shí)間各是多少?5.2 Cache的基本知識(shí) 例5.2 我們用一個(gè)和Alpha AXP類似的機(jī)器作為第一個(gè)例子。假設(shè)Cache失效開銷為50個(gè)時(shí)鐘周期,當(dāng)不考慮存儲(chǔ)器停頓時(shí),所有指令的執(zhí)行時(shí)間都是2.0個(gè)時(shí)鐘周期,訪問Cach

16、e失效率為2%,平均每條指令訪存1.33次。試分析Cache對(duì)性能的影響。 解5.2 Cache的基本知識(shí)考慮Cache的失效后,性能為: CPU時(shí)間有cacheIC(2.01.332 %50)時(shí)鐘周期時(shí)間 IC3.33時(shí)鐘周期時(shí)間實(shí)際CPI :3.333.33/2.0 = 1.67(倍) CPU時(shí)間也增加為原來的1.67倍。 但若不采用Cache,則:CPI2.0501.3368.55.2 Cache的基本知識(shí)Cache失效對(duì)于一個(gè)CPI較小而時(shí)鐘頻率較高的CPU來說,影響是雙重的:CPIexecution越低,固定周期數(shù)的Cache失效開銷的相對(duì)影響就越大。在計(jì)算CPI時(shí),失效開銷的單位是

17、時(shí)鐘周期數(shù)。因此,即使兩臺(tái)計(jì)算機(jī)的存儲(chǔ)層次完全相同,時(shí)鐘頻率較高的CPU的失效開銷較大,其CPI中存儲(chǔ)器停頓這部分也就較大。 因此Cache對(duì)于低CPI、高時(shí)鐘頻率的CPU來說更加重要。 5.2 Cache的基本知識(shí) 例5.3 考慮兩種不同組織結(jié)構(gòu)的Cache:直接映象Cache和2路組相聯(lián)Cache,試問它們對(duì)CPU的性能有何影響?先求平均訪存時(shí)間,然后再計(jì)算CPU性能。分析時(shí)請(qǐng)用以下假設(shè): (1)理想Cache(命中率為100%)情況下的CPI為2.0,時(shí)鐘周期為2ns,平均每條指令訪存1.3次。 (2)兩種Cache容量均為64KB,塊大小都是32字節(jié)。 (3)圖5.8說明,在組相聯(lián)Ca

18、che中,必須增加一個(gè)多路選擇器,用于根據(jù)標(biāo)識(shí)匹配結(jié)果從相應(yīng)組的塊中選擇所需的數(shù)據(jù)。因?yàn)镃PU的速度直接與Cache命中的速度緊密相關(guān),所以對(duì)于組相聯(lián)Cache,由于多路選擇器的存在而使CPU的時(shí)鐘周期增加到原來的1.10倍。 (4) 這兩種結(jié)構(gòu)Cache的失效開銷都是70 ns。(在實(shí)際應(yīng)用中,應(yīng)取整為整數(shù)個(gè)時(shí)鐘周期) (5) 命中時(shí)間為1個(gè)時(shí)鐘周期,64 KB直接映象Cache的失效率為1.4%,相同容量的2路組相聯(lián)Cache的失效率為1.0%。5.2 Cache的基本知識(shí)平均訪存時(shí)間命中時(shí)間失效率失效開銷可以從三個(gè)方面改進(jìn)Cache的性能:降低失效率減少失效開銷減少Cache命中時(shí)間下面

19、介紹17種Cache優(yōu)化技術(shù)8種用于降低失效率5種用于減少失效開銷4種用于減少命中時(shí)間 5.2.7 改進(jìn)Cache的性能隨堂作業(yè)設(shè)cache的容量為32B,主存容量為512B,每塊大小為4B。請(qǐng)給出直接映像、2路組相聯(lián)映像、4路組相聯(lián)映像和全相聯(lián)映像時(shí)的訪存地址格式和具體分析過程。完成課后習(xí)題5.10和5.11.三種失效(3C)強(qiáng)制性失效(Compulsory miss)當(dāng)?shù)谝淮卧L問一個(gè)塊時(shí),該塊不在Cache中,需從下一級(jí)存儲(chǔ)器中調(diào)入Cache,這就是強(qiáng)制性失效。 (冷啟動(dòng)失效,首次訪問失效)容量失效(Capacity miss ) 如果程序執(zhí)行時(shí)所需的塊不能全部調(diào)入Cache中,則當(dāng)某些塊

20、被替換后,若又重新被訪問,就會(huì)發(fā)生失效。這種失效稱為容量失效。沖突失效(Conflict miss)在組相聯(lián)或直接映象Cache中,若太多的塊映象到同一組(塊)中,則會(huì)出現(xiàn)該組中某個(gè)塊被別的塊替換(即使別的組或塊有空閑位置),然后又被重新訪問的情況。這就是發(fā)生了沖突失效。 (碰撞失效,干擾失效)5.3 降低Cache失效率的方法5.3 降低Cache失效率的方法觀察(結(jié)合書173頁(yè)表5.5):不同容量的cache,強(qiáng)制失效;不同/相同容量cache,容量失效;相同容量的cache,不同相聯(lián)度;不同容量的cache,相同相聯(lián)度;結(jié)論:強(qiáng)制失效不受cache容量和相聯(lián)度影響;不同容量,容量失效隨容

21、量增加而減??;相同容量,容量失效不隨相聯(lián)度變化而變化;相同容量,相聯(lián)度越高,失效率越低;相同的相聯(lián)度,不同容量cache,失效率大致降低。2:1 cache經(jīng)驗(yàn)規(guī)則,即大小為N的直接映像cache的失效率約等于N/2的2路組相連cache。實(shí)驗(yàn)環(huán)境: 塊大小為32B,采用LRU算法。5.3 降低Cache失效率的方法5.3 降低Cache失效率的方法減少三種失效的方法強(qiáng)制性失效 ?容量失效 ?沖突失效 ? 代價(jià)?5.3 降低Cache失效率的方法失效率與塊大小的關(guān)系對(duì)于給定的Cache容量,當(dāng)塊大小增加時(shí),失效率開始是下降,后來反而上升了。 Cache容量越大,使失效率達(dá)到最低的塊大小就越大。

22、5.3.1 增加Cache塊大小5.3 降低Cache失效率的方法增加塊大小會(huì)增加失效開銷 例5.4 假定存儲(chǔ)系統(tǒng)在延遲40個(gè)時(shí)鐘周期后,每2個(gè)時(shí)鐘周期能送出16個(gè)字節(jié)。即,經(jīng)過42個(gè)時(shí)鐘周期,它可提供16個(gè)字節(jié);經(jīng)過44個(gè)時(shí)鐘周期,可提供32個(gè)字節(jié);依此類推。請(qǐng)問對(duì)于表5.6中列出的各種容量的Cache,在塊大小分別為多少時(shí),平均訪存時(shí)間最??? 解 假設(shè)命中時(shí)間是1個(gè)時(shí)鐘周期 塊大小 16, 失效開銷 = 42 塊大小 32, 失效開銷 = 44 塊大小 64, 失效開銷 = 48 塊大小 128, 失效開銷 = 56 塊大小 256, 失效開銷 = 705.3 降低Cache失效率的方法各

23、種塊大小情況下Cache的平均訪存時(shí)間 塊大?。ㄗ止?jié)) 失效開銷(時(shí)鐘周期) Cache容量(字節(jié)) 1K 4K 16K 64K 256K 16427.321 4.599 2.655 1.857 1.458 32446.870 4.186 2.263 1.857 1.308 64487.605 4.360 2.267 1.594 1.245 1285610.318 5.357 2.551 1.509 1.274 2567216.847 7.847 3.369 1.571 1.353 5.3 降低Cache失效率的方法采用相聯(lián)度超過8的方案的實(shí)際意義不大。2:1 Cache經(jīng)驗(yàn)規(guī)則 容量為N的直

24、接映象Cache的失效率和容量為N/2的2路組相聯(lián)Cache的失效率差不多相同。提高相聯(lián)度是以增加命中時(shí)間為代價(jià)。 例如:TTL或ECL板級(jí)Cache,2路組相聯(lián): 增加10定制的CMOS Cache, 2路組相聯(lián): 增加25.3.2 提高相聯(lián)度5.3 降低Cache失效率的方法 例5.5 假定提高相聯(lián)度會(huì)按下列比例增大處理器時(shí)鐘周期: 時(shí)鐘周期2路 1.10時(shí)鐘周期1路 時(shí)鐘周期4路 1.12時(shí)鐘周期1路 時(shí)鐘周期8路 1.14時(shí)鐘周期1路 假定命中時(shí)間為一個(gè)時(shí)鐘周期,直接映象情況下失效開銷為50個(gè)時(shí)鐘周期,而且假設(shè)不必將失效開銷取整。使用表5.5中的失效率,試問當(dāng)Cache為多大時(shí),以下不

25、等式成立? 平均訪存時(shí)間8路 平均訪存時(shí)間4路 平均訪存時(shí)間4路 平均訪存時(shí)間2路 平均訪存時(shí)間2路 平均訪存時(shí)間1路 5.3 降低Cache失效率的方法解 在各種相聯(lián)度的情況下,平均訪存時(shí)間分別為: 平均訪存時(shí)間8路 = 命中時(shí)間8路 + 失效率8路失效開銷8路 = 1.14失效率8路50 平均訪存時(shí)間4路 = 1.12 失效率4路50 平均訪存時(shí)間2路 = 1.10 失效率2路50 平均訪存時(shí)間1路 = 1.00 失效率1路50 把相應(yīng)的失效率代入上式,即可得平均訪存時(shí)間。 例如,1 KB的直接映象Cache的平均訪存時(shí)間為: 平均訪存時(shí)間1路 = 1.000.133507.65 128

26、KB的8路組相聯(lián)Cache的平均訪存時(shí)間為: 平均訪存時(shí)間8路1.140.006501.44Cache容量相聯(lián)度(路) 124817.65 6.60 6.22 5.44 25.90 4.90 4.62 4.09 44.60 3.95 3.57 3.19 83.30 3.00 2.87 2.59 162.45 2.20 2.12 2.04 322.00 1.80 1.77 1.79 641.70 1.60 1.57 1.59 1281.50 1.45 1.42 1.44 在各種容量和相聯(lián)度情況下Cache的平均訪存時(shí)間5.3 降低Cache失效率的方法最直接的方法是增加Cache的容量缺點(diǎn):增加

27、成本可能增加命中時(shí)間這種方法在片外Cache中用得比較多 5.3.3 增加Cache的容量5.3 降低Cache失效率的方法一種能減少?zèng)_突失效次數(shù)而又不影響時(shí)鐘頻率的方法。基本思想在Cache和它從下一級(jí)存儲(chǔ)器調(diào)數(shù)據(jù)的通路之間設(shè)置一個(gè)全相聯(lián)的小Cache,用于存放被替換出去的塊(稱為Victim),以備重用。工作過程5.3.4 Victim Cache 5.3 降低Cache失效率的方法Victim Cache在存儲(chǔ)層次中的位置 5.3 降低Cache失效率的方法作用對(duì)于減小沖突失效很有效,特別是對(duì)于小容量的直接映象數(shù)據(jù)Cache,作用尤其明顯。例如項(xiàng)數(shù)為4的Victim Cache: 能使4

28、 KB Cache的沖突失效減少20%90%5.3 降低Cache失效率的方法多路組相聯(lián)的低失效率和直接映象的命中速度偽相聯(lián)Cache的優(yōu)點(diǎn)命中時(shí)間小失效率低5.3.5 偽相聯(lián) Cache 優(yōu)點(diǎn)缺點(diǎn)直接映象組相聯(lián)命中時(shí)間小命中時(shí)間大失效率高失效率低基本思想及工作原理 在邏輯上把直接映象Cache的空間上下平分為兩個(gè)區(qū)。對(duì)于任何一次訪問,偽相聯(lián)Cache先按直接映象Cache的方式去處理。若命中,則其訪問過程與直接映象Cache的情況一樣。若不命中,則再到另一區(qū)相應(yīng)的位置去查找。若找到,則發(fā)生了偽命中,否則就只好訪問下一級(jí)存儲(chǔ)器??焖倜信c慢速命中 要保證絕大多數(shù)命中都是快速命中。5.3 降低C

29、ache失效率的方法 例5.6 假設(shè)當(dāng)在按直接映象找到的位置處沒有發(fā)現(xiàn)匹配,而在另一個(gè)位置才找到數(shù)據(jù)(偽命中)需要2個(gè)額外的周期。仍用上個(gè)例子中的數(shù)據(jù),問:當(dāng)Cache容量分別為2 KB和128 KB時(shí),直接映象、2路組相聯(lián)和偽相聯(lián)這三種組織結(jié)構(gòu)中,哪一種速度最快? 解 首先考慮標(biāo)準(zhǔn)的平均訪存時(shí)間公式: 平均訪存時(shí)間偽相聯(lián) 命中時(shí)間偽相聯(lián)失效率偽相聯(lián)失效開銷偽相聯(lián)5.3 降低Cache失效率的方法 由于: 失效率偽相聯(lián)失效率2路 命中時(shí)間偽相聯(lián)命中時(shí)間1路偽命中率偽相聯(lián)2 偽相聯(lián)查找的命中率等于2路組相聯(lián)Cache的命中率和直接映象Cache命中率之差。 偽命中率偽相聯(lián) 命中率2路命中率1路

30、(1失效率2路)(1失效率1路) 失效率1路失效率2路 綜合上述分析,有: 平均訪存時(shí)間偽相聯(lián)命中時(shí)間1路(失效率1路失效率2路)2 失效率2路失效開銷1路5.3 降低Cache失效率的方法將前面表中的數(shù)據(jù)代入上面的公式,得: 平均訪存時(shí)間偽相聯(lián),2 KB 1(0.0980.076)2(0.07650)4.844 平均訪存時(shí)間偽相聯(lián),128 KB 1(0.0100.007)2(0.00750)1.356根據(jù)上一個(gè)例子中的表,對(duì)于2 KB Cache,可得: 平均訪存時(shí)間1路 5.90 個(gè)時(shí)鐘 平均訪存時(shí)間2路 4.90 個(gè)時(shí)鐘5.3 降低Cache失效率的方法 對(duì)于128KB的Cache有,可

31、得: 平均訪存時(shí)間1路 1.50 個(gè)時(shí)鐘 平均訪存時(shí)間2路 1.45 個(gè)時(shí)鐘可見,對(duì)于這兩種Cache容量,偽相聯(lián)Cache都是速度最快的。缺點(diǎn): 多種命中時(shí)間5.3 降低Cache失效率的方法指令和數(shù)據(jù)都可以預(yù)取預(yù)取內(nèi)容既可放入Cache,也可放在外緩沖器中。例如:指令流緩沖器指令預(yù)取通常由Cache之外的硬件完成預(yù)取效果Joppi的研究結(jié)果指令預(yù)取 (4 KB,直接映象Cache,塊大小16 B)1個(gè)塊的指令流緩沖器: 捕獲1525的失效4個(gè)塊的指令流緩沖器: 捕獲5016個(gè)塊的指令流緩沖器:捕獲725.3.6 硬件預(yù)取 5.3 降低Cache失效率的方法數(shù)據(jù)預(yù)取 (4 KB,直接映象Ca

32、che)1個(gè)數(shù)據(jù)流緩沖器:捕獲25的失效還可以采用多個(gè)數(shù)據(jù)流緩沖器Palacharla和Kessler的研究結(jié)果流緩沖器:既能預(yù)取指令又能預(yù)取數(shù)據(jù)對(duì)于兩個(gè)64 KB四路組相聯(lián)Cache來說:8個(gè)流緩沖器能捕獲5070的失效5.3 降低Cache失效率的方法 例5.7 Alpha AXP 21064采用指令預(yù)取技術(shù),其實(shí)際失效率是多少?若不采用指令預(yù)取技術(shù),Alpha AXP 21064的指令Cache必須為多大才能保持平均訪存時(shí)間不變? 解 假設(shè)當(dāng)指令不在指令Cache里,而在預(yù)取緩沖器中找到時(shí),需要多花一個(gè)時(shí)鐘周期。 下面是修改后的公式: 平均訪存時(shí)間預(yù)取 命中時(shí)間失效率預(yù)取命中率1 失效率

33、(1預(yù)取命中率)失效開銷5.3 降低Cache失效率的方法 假設(shè)預(yù)取命中率為25%,命中時(shí)間為2個(gè)時(shí)鐘周期,失效開銷為50個(gè)時(shí)鐘周期。查表可知8 KB指令Cache的失效率為1.10%。則: 平均訪存時(shí)間預(yù)取 2(1.10 %25 %1)1.10 %(125 %)50 20.002750.413 2.415 為了得到相同性能下的實(shí)際失效率,由原始公式得: 平均訪存時(shí)間 命中時(shí)間失效率失效開銷 失效率 (平均訪存時(shí)間命中時(shí)間)/失效開銷 (2.4152)/500.83 %5.3 降低Cache失效率的方法 在編譯時(shí)加入預(yù)取指令,在數(shù)據(jù)被用到之前發(fā)出預(yù)取請(qǐng)求。預(yù)取有以下幾種類型:寄存器預(yù)?。喊褦?shù)據(jù)

34、取到寄存器中。Cache預(yù)?。褐粚?shù)據(jù)取到Cache中。故障性預(yù)取:在預(yù)取時(shí),若出現(xiàn)虛地址故障或違反保護(hù)權(quán)限,就會(huì)發(fā)生異常。非故障性預(yù)?。涸谟龅竭@種情況時(shí)則不會(huì)發(fā)生異常,因?yàn)檫@時(shí)它會(huì)放棄預(yù)取,轉(zhuǎn)變?yōu)榭詹僮鳌?5.3.7 編譯器控制的預(yù)取 本節(jié)假定Cache預(yù)取都是非故障性的,也稱非綁定預(yù)取。5.3 降低Cache失效率的方法在預(yù)取數(shù)據(jù)的同時(shí),處理器應(yīng)能繼續(xù)執(zhí)行。 只有這樣,預(yù)取才有意義。 非阻塞Cache (非鎖定Cache) 編譯器控制預(yù)取的目的 使執(zhí)行指令和讀取數(shù)據(jù)能重疊執(zhí)行。 循環(huán)是預(yù)取優(yōu)化的主要對(duì)象失效開銷小時(shí):循環(huán)體展開12次失效開銷大時(shí):循環(huán)體展開許多次5.3 降低Cache失效率

35、的方法 例5.8 對(duì)于下面的程序,首先判斷哪些訪問可能會(huì)導(dǎo)致數(shù)據(jù)Cache失效。然后,加入預(yù)取指令以減少失效。最后,計(jì)算所執(zhí)行的預(yù)取指令的條數(shù)以及通過預(yù)取避免的失效次數(shù)。假定: (1) 我們用的是一個(gè)容量為8 KB、塊大小為16 B的直接映象Cache,它采用寫回法并且按寫分配。 (2) a、b分別為3100(3行100列)和1013的雙精度浮點(diǎn)數(shù)組,每個(gè)元素都是8 B。當(dāng)程序開始執(zhí)行時(shí),這些數(shù)據(jù)都不在Cache內(nèi)。 for ( i = 0 ; i 3 ; i = i + 1 ) for ( j = 0 ; j 100 ; j = j + 1 ) a i j = b j 0 * b j+1 0

36、 ; 5.3 降低Cache失效率的方法解計(jì)算過程取a時(shí) 150次取b時(shí) 101次失效情況 總的失效次數(shù)251次 改進(jìn)后的程序假設(shè)失效開銷很大,預(yù)取必須至少提前7次循環(huán)進(jìn)行。5.3 降低Cache失效率的方法for ( j = 0; j 100; j = j+1 ) prefetch ( b j+7 0 ); /* 預(yù)取7次循環(huán)后所需的b ( j , 0 ) */ prefetch ( a 0 j+7 ); /* 預(yù)取7次循環(huán)后所需的a (0 , j ) */ a 0 j = b j 0 * b j+1 0 ; /* a失效 7/2 = 4; b失效7次*/ for ( i = 1; i 3;

37、 i = i+1 ) for ( j = 0; j 100; j = j+1 ) prefetch ( a i j+7 ); /* 預(yù)取7次循環(huán)后所需的a ( i , j ) */ a i j = b j 0 * b j+1 0 ; /* a失效 7/2 = 4, 兩次循環(huán)共失效8次 */總的失效次數(shù)19次5.3 降低Cache失效率的方法 例5.9 在以下條件下,計(jì)算例5.8中所節(jié)約的時(shí)間: (1) 忽略指令Cache失效,并假設(shè)數(shù)據(jù)Cache無(wú)沖突失效和容量失效。 (2) 假設(shè)預(yù)取可以被重疊或與Cache失效重疊執(zhí)行,從而能以最大的存儲(chǔ)帶寬傳送數(shù)據(jù)。(即不考慮結(jié)構(gòu)沖突) (3) 不考慮Ca

38、che失效時(shí),修改前的循環(huán)每7個(gè)時(shí)鐘周期循環(huán)一次。修改后的程序中,第一個(gè)預(yù)取循環(huán)每9個(gè)時(shí)鐘周期循環(huán)一次,而第二個(gè)預(yù)取循環(huán)每8個(gè)時(shí)鐘周期循環(huán)一次(包括外層for循環(huán)的開銷)。(修改后增加了預(yù)取指令的開銷) (4) 一次失效需50個(gè)時(shí)鐘周期。5.3 降低Cache失效率的方法解修改前:循環(huán)時(shí)間3007 2100失效開銷2515012550/14650 21001255014650修改后:循環(huán)時(shí)間100920082500失效時(shí)間195095025009503450 加速比14650/34504.25.3 降低Cache失效率的方法基本思想 在編譯時(shí),對(duì)程序中的指令和數(shù)據(jù)進(jìn)行重新組織,以降低Cache

39、失效率。McFaring 發(fā)現(xiàn): 通過對(duì)指令進(jìn)行重新排序,可有效地降低指令Cache的失效率。2KB Cache: 降低508KB Cache:降低75%數(shù)據(jù)對(duì)存儲(chǔ)位置的限制比指令的少,因此更便于優(yōu)化。 重新組織的目標(biāo):改善數(shù)據(jù)的空間局部性和時(shí)間局部性5.3.8 編譯器優(yōu)化 5.3 降低Cache失效率的方法數(shù)組合并 提高空間局部性 適用情況:同時(shí)引用多個(gè)數(shù)組的相同索引。舉例: /* 修改前 */ int val SIZE ; int key SIZE ;5.3 降低Cache失效率的方法/* 修改后 */struct merge int val ;int key ; ;struct merg

40、e merged_array SIZE ;5.3 降低Cache失效率的方法內(nèi)外循環(huán)交換 提高空間局部性 舉例: /* 修改前 */ for ( j = 0 ; j 100 ; j = j+1 ) for ( i = 0 ; i 5000 ; i = i+1 ) x i j = 2 * x i j ; /* 修改后 */ for ( i = 0 ; i 5000 ; i = i+1 ) for ( j = 0 ; j 100 ; j = j+1 ) x i j = 2 * x i j ;5.3 降低Cache失效率的方法循環(huán)融合 改進(jìn)時(shí)間局部性 /* 修改前 */ for ( i = 0 ;

41、i N ; i = i+1 ) for ( j = 0 ; j N ; j = j+1 ) a i j = 1/ b i j * c i j ; for ( i = 0 ; i N ; i = i+1 ) for ( j = 0 ; j N ; j = j+1 ) d i j = a i j + c i j ; /* 修改后 */ for ( i = 0 ; i N ; i = i+1 ) for ( j = 0 ; j N ; j = j+1 ) a i j = 1/ b i j * c i j ; d i j = a i j + c i j ; 5.3 降低Cache失效率的方法分塊 改進(jìn)

42、時(shí)間局部性把對(duì)數(shù)組的整行或整列訪問改為按塊進(jìn)行。 /* 修改前 */ for ( i = 0; iN; i = i+1 ) for ( j = 0; j N; j = j+1 ) r = 0; for ( k = 0; k N; k = k+1) r = r + y i k * z k j ; x i j = r; 注意觀察:對(duì)y的訪問具有時(shí)間局部性,對(duì)z的訪問時(shí)間局部性差。5.3 降低Cache失效率的方法5.3 降低Cache失效率的方法/* 修改后 */ for ( jj = 0; jj N; jj = jj+B ) for ( kk = 0; kk N; kk = kk+B ) for

43、 ( i = 0; i N; i =i+1 ) for ( j = jj; j min(jj+B-1, N); j = j+1 ) r = 0; for ( k = kk; k min(kk+B-1, N); k = k+1) r = r + y i k * z k j ; x i j = x i j + r; 5.3 降低Cache失效率的方法Cache中的寫緩沖器導(dǎo)致對(duì)存儲(chǔ)器訪問的復(fù)雜化 寫緩沖器進(jìn)行的寫入操作是滯后進(jìn)行的,所以該緩沖器也被稱為后行寫數(shù)緩沖器。例5.10 考慮以下指令序列: SW R3, 512(R0) ;M512R3 (Cache索引為0) LW R1, 1024(R0)

44、 ;R1M1024 (Cache索引為0) LW R2, 512(R0) ;R2M512 (Cache索引為0)5.4 減少Cache失效開銷5.4.1 讓讀失效優(yōu)先于寫5.4 減少Cache失效開銷解決問題的方法(讀失效的處理)推遲對(duì)讀失效的處理(缺點(diǎn):讀失效的開銷增加,如50)檢查寫緩沖器中的內(nèi)容在寫回法Cache中,也可采用寫緩沖器。5.4.2 寫緩沖合并寫回法和寫直達(dá)均采用寫緩沖提高寫緩沖效率 空間利用率寫效率5.4 減少Cache失效開銷如果寫緩沖器中已經(jīng)有了待寫入的數(shù)據(jù),就要把這次的寫入地址與寫緩沖器中已有的所有地址進(jìn)行比較,看是否有匹配的項(xiàng)。如果有地址匹配而對(duì)應(yīng)的位置又是空閑的,

45、就把這次要寫入的數(shù)據(jù)與該項(xiàng)合并。這就叫寫緩沖合并。如果寫緩沖器滿且又沒有能進(jìn)行寫合并的項(xiàng),就必須等待。 5.4 減少Cache失效開銷5.4 減少Cache失效開銷請(qǐng)求字 從下一級(jí)存儲(chǔ)器調(diào)入Cache的塊中,只有一個(gè)字是立即需要的。這個(gè)字稱為請(qǐng)求字。 應(yīng)盡早把請(qǐng)求字發(fā)送給CPU盡早重啟動(dòng):調(diào)塊時(shí),從塊的起始位置開始讀起。一旦請(qǐng)求字到達(dá),就立即發(fā)送給CPU,讓CPU繼續(xù)執(zhí)行。請(qǐng)求字優(yōu)先:調(diào)塊時(shí),從請(qǐng)求字所在的位置讀起。這樣,第一個(gè)讀出的字便是請(qǐng)求字。將之立即發(fā)送給CPU。5.4.3 請(qǐng)求字處理技術(shù)5.4 減少Cache失效開銷這種技術(shù)在以下情況下效果不大:Cache塊較小下一條指令正好訪問同一C

46、ache塊的另一部分5.4 減少Cache失效開銷非阻塞Cache:Cache失效時(shí)仍允許CPU進(jìn)行其他的命中訪問。即允許“失效下命中”。進(jìn)一步提高性能:“多重失效下命中” “失效下失效” (存儲(chǔ)器必須能夠處理多個(gè)失效)重疊失效個(gè)數(shù)對(duì)平均訪問時(shí)間的影響5.4.4 非阻塞Cache技術(shù)5.4 減少Cache失效開銷 例5.11 對(duì)于上圖描述的Cache,在2路組相聯(lián)和“一次失效下命中”這兩種措施中,哪一種對(duì)浮點(diǎn)程序更重要?對(duì)整數(shù)程序的情況如何? 假設(shè)8KB數(shù)據(jù)Cache的平均失效率為:對(duì)于浮點(diǎn)程序,直接映象Cache為11.4%,而2路組相聯(lián)Cache為10.7%;對(duì)于整數(shù)程序,直接映象Cach

47、e為7.4%,2路組相聯(lián)Cache為6.0%。并且假設(shè)平均存儲(chǔ)器等待時(shí)間是失效率和失效開銷的積,失效開銷為16個(gè)時(shí)鐘周期。5.4 減少Cache失效開銷解 對(duì)于浮點(diǎn)程序,平均存儲(chǔ)器等待時(shí)間為: 失效率直接映象 失效開銷 11.4 % 16 1.84 失效率2路組相聯(lián) 失效開銷 10.7 % 16 1.71 1.71/1.840.93 對(duì)于整數(shù)程序: 失效率直接映象 失效開銷 7.4 % 16 1.18 失效率2路組相聯(lián) 失效開銷 6.0 % 16 0.96 0.96/1.180.81“失效下命中”方法有一個(gè)潛在優(yōu)點(diǎn): 它不會(huì)影響命中時(shí)間,而組相聯(lián)卻會(huì)。 5.4 減少Cache失效開銷應(yīng)把Cac

48、he做得更快?還是更大?答案:二者兼顧,再增加一級(jí)Cache第一級(jí)Cache(L1)小而快第二級(jí)Cache(L2)容量大性能分析 平均訪存時(shí)間 命中時(shí)間L1失效率L1失效開銷L1失效開銷L1 命中時(shí)間L2失效率L2失效開銷L2平均訪存時(shí)間 命中時(shí)間L1失效率L1 (命中時(shí)間L2失效率L2失效開銷L2) 5.4.5 采用兩級(jí)Cache5.4 減少Cache失效開銷局部失效率與全局失效率局部失效率該級(jí)Cache的失效次數(shù)/到達(dá)該級(jí) Cache的訪問次數(shù) 例如:上述式子中的失效率L2全局失效率該級(jí)Cache的失效次數(shù)/CPU發(fā)出的 訪存的總次數(shù)全局失效率L2失效率L1失效率L2 評(píng)價(jià)第二級(jí)Cache

49、時(shí),應(yīng)使用全局失效率這個(gè)指標(biāo)。它指出了在CPU發(fā)出的訪存中,究竟有多大比例是穿過各級(jí)Cache,最終到達(dá)存儲(chǔ)器的。5.4 減少Cache失效開銷 例5.12 假設(shè)在1000次訪存中,第一級(jí)Cache失效40次, 第二級(jí)Cache失效20次。試問:在這種情況下,該Cache系統(tǒng)的局部失效率和全局失效率各是多少? 解 第一級(jí)Cache的失效率(全局和局部)是40/1000,即4%; 第二級(jí)Cache的局部失效率是20/40,即50%; 第二級(jí)Cache的全局失效率是20/1000,即2%。 5.4 減少Cache失效開銷對(duì)于第二級(jí)Cache,我們有以下結(jié)論:在第二級(jí)Cache比第一級(jí) Cache大

50、得多的情況下,兩級(jí)Cache的全局失效率和容量與第二級(jí)Cache相同的單級(jí)Cache的失效率非常接近。局部失效率不是衡量第二級(jí)Cache的一個(gè)好指標(biāo),因此,在評(píng)價(jià)第二級(jí)Cache時(shí),應(yīng)用全局失效率這個(gè)指標(biāo)。5.4 減少Cache失效開銷第二級(jí)Cache不會(huì)影響CPU的時(shí)鐘頻率,因此其設(shè)計(jì)有更大的考慮空間。兩個(gè)問題:它能否降低CPI中的平均訪存時(shí)間部分?它的成本是多少?第二級(jí)Cache的參數(shù)容量第二級(jí)Cache的容量一般比第一級(jí)的大許多。如512 KB,1024 KB相聯(lián)度第二級(jí)Cache可采用較高的相聯(lián)度或偽相聯(lián)方法。5.4 減少Cache失效開銷 例5.13 給出有關(guān)第二級(jí)Cache的以下數(shù)

51、據(jù): (1) 2路組相聯(lián)使命中時(shí)間增加10%CPU時(shí)鐘周期 (2) 對(duì)于直接映象,命中時(shí)間L2 10個(gè)時(shí)鐘周期 (3) 對(duì)于直接映象,局部失效率L2 25% (4) 對(duì)于2路組相聯(lián),局部失效率L2 20% (5) 失效開銷L2 50個(gè)時(shí)鐘周期 試問第二級(jí)Cache的相聯(lián)度對(duì)失效開銷的影響如何?5.4 減少Cache失效開銷 解 對(duì)一個(gè)直接映象的第二級(jí)Cache來說,第一級(jí)Cache的失效開銷為: 失效開銷直接映象,L1 1025%50 22.5 個(gè)時(shí)鐘周期 對(duì)于2路組相聯(lián)第二級(jí)Cache來說,命中時(shí)間增加了10%(0.1)個(gè)時(shí)鐘周期,故第一級(jí)Cache的失效開銷為: 失效開銷2路組相聯(lián),L1

52、10.120%50 20.1 個(gè)時(shí)鐘周期 把第二級(jí)Cache的命中時(shí)間取整,得10或11,則: 失效開銷2路組相聯(lián),L1 1020%50 20.0 個(gè)時(shí)鐘周期 失效開銷2路組相聯(lián),L1 1120%50 21.0 個(gè)時(shí)鐘周期 故對(duì)于第二級(jí)Cache來說,2路組相聯(lián)優(yōu)于直接映象。5.4 減少Cache失效開銷塊大小第二級(jí)Cache可采用較大的塊 如 64 B、128 B、256 B 為減少平均訪存時(shí)間,可以讓容量較小的第一級(jí)Cache采用較小的塊,而讓容量較大的第二級(jí)Cache采用較大的塊。多級(jí)包容性 需要考慮的問題: 第一級(jí)Cache中的數(shù)據(jù)是否總是同時(shí)存在于第二級(jí)Cache中。 如果具有多級(jí)包

53、容性,在替換第二級(jí)cache中的塊時(shí),必須作廢所有對(duì)應(yīng)于該級(jí)的第一級(jí)cache中的塊。 命中時(shí)間直接影響到處理器的時(shí)鐘頻率。在當(dāng)今的許多計(jì)算機(jī)中,往往是Cache的訪問時(shí)間限制了處理器的時(shí)鐘頻率。5.5 減少命中時(shí)間5.5.1 容量小、結(jié)構(gòu)簡(jiǎn)單的Cache硬件越簡(jiǎn)單,速度就越快。應(yīng)使Cache足夠小,以便可以與CPU一起放在同一塊芯片上。 某些設(shè)計(jì)采用了一種折中方案: 把Cache的標(biāo)識(shí)放在片內(nèi),而把Cache的數(shù)據(jù)存儲(chǔ)器放在片外。5.5 減少命中時(shí)間5.5.2 虛擬Cache虛擬Cache訪問Cache的索引以及Cache中的標(biāo)識(shí)都是虛擬地址(一部分)。物理Cache使用物理地址的傳統(tǒng)Cac

54、he。5.5 減少命中時(shí)間并非都采用虛擬Cache(為什么?)虛擬Cache的清空問題解決方法:在地址標(biāo)識(shí)中增加PID字段 (進(jìn)程標(biāo)識(shí)符)三種情況下失效率的比較單進(jìn)程,PIDs,清空PIDs與單進(jìn)程相比:0.30.6PIDs與清空相比: 0.64.3%同義和別名解決方法:反別名法、頁(yè)著色5.5 減少命中時(shí)間5.5 減少命中時(shí)間虛擬索引物理標(biāo)識(shí)優(yōu)點(diǎn):兼得虛擬Cache和物理Cache的好處局限性:Cache容量受到限制 (頁(yè)內(nèi)位移) Cache容量頁(yè)大小相聯(lián)度舉例:IBM 3033的Cache頁(yè)大小4 KB 相聯(lián)度16 頁(yè)地址地址標(biāo)識(shí)頁(yè)內(nèi)位移索 引塊內(nèi)位移3112 110 Cache容量164

55、KB64 KB另一種方法:硬件散列變換5.5 減少命中時(shí)間5.5.3 Cache訪問流水化對(duì)第一級(jí)Cache的訪問按流水方式組織訪問Cache需要多個(gè)時(shí)鐘周期才可以完成例如Pentium訪問指令Cache需要一個(gè)時(shí)鐘周期Pentium Pro到Pentium 需要兩個(gè)時(shí)鐘周期Pentium 4 則需要4個(gè)時(shí)鐘周期5.5 減少命中時(shí)間開發(fā)指令級(jí)并行性所遇到的一個(gè)挑戰(zhàn)是: 當(dāng)要每個(gè)時(shí)鐘周期流出超過4條指令時(shí),要提供足夠多條彼此互不相關(guān)的指令是很困難的。一個(gè)解決方法:采用Trace Cache 存放CPU所執(zhí)行的動(dòng)態(tài)指令序列 包含了由分支預(yù)測(cè)展開的指令,該分支預(yù)測(cè)是否正確需要在取到該指令時(shí)進(jìn)行確認(rèn)。

56、5.5.4 Trace Cache5.5 減少命中時(shí)間優(yōu)缺點(diǎn)地址映象機(jī)制復(fù)雜。相同的指令序列有可能被當(dāng)作條件分支的不同選擇而重復(fù)存放。能夠提高指令Cache的空間利用率。5.5.5 Cache優(yōu)化技術(shù)總結(jié)“”號(hào):表示改進(jìn)了相應(yīng)指標(biāo)?!啊碧?hào):表示它使該指標(biāo)變差。空格欄:表示它對(duì)該指標(biāo)無(wú)影響。復(fù)雜性:0表示最容易,3表示最復(fù)雜。 優(yōu)化技術(shù) 失效率 失效開銷 命中時(shí)間 硬件復(fù)雜度 說 明 增加塊大小 + 0 實(shí)現(xiàn)容易;Pentium 4 的第二級(jí)Cache采用了128 B的塊 增加Cache容量 + 被廣泛采用,特別是第二級(jí)Cache 提高相聯(lián)度 + 1 被廣泛采用 Victim Cache + 2

57、 AMD Athlon采用了8個(gè)項(xiàng)的Victim Cache偽相聯(lián)Cache + 2 MIPS R10000的第二級(jí)Cache采用 硬件預(yù)取指令和數(shù)據(jù) + 23 許多機(jī)器預(yù)取指令,UltraSPARC 預(yù)取數(shù)據(jù) Cache優(yōu)化技術(shù)總結(jié) 優(yōu)化技術(shù) 失效率 失效開銷 命中時(shí)間 硬件復(fù)雜度 說 明 編譯器控制的預(yù)取 + 3 需同時(shí)采用非阻塞Cache;有幾種微處理器提供了對(duì)這種預(yù)取的支持 用編譯技術(shù)減少Cache失效次數(shù) + 0 向軟件提出了新要求;有些機(jī)器提供了編譯器選項(xiàng) 使讀失效優(yōu)先于寫 + 1 在單處理機(jī)上實(shí)現(xiàn)容易,被廣泛采用 寫緩沖歸并 +1 與寫直達(dá)合用,廣泛應(yīng)用,例如21164,Ultr

58、aSPARC 盡早重啟動(dòng)和關(guān)鍵字優(yōu)先 +2 被廣泛采用 非阻塞Cache +3 在支持亂序執(zhí)行的CPU中使用 優(yōu)化技術(shù) 失效率 失效開銷 命中時(shí)間 硬件復(fù)雜度 說 明 兩級(jí)Cache +2 硬件代價(jià)大;兩級(jí)Cache的塊大小不同時(shí)實(shí)現(xiàn)困難;被廣泛采用 容量小且結(jié)構(gòu)簡(jiǎn)單的Cache +0實(shí)現(xiàn)容易,被廣泛采用 對(duì)Cache進(jìn)行索引時(shí)不必進(jìn)行地址變換 +2 對(duì)于小容量Cache來說實(shí)現(xiàn)容易,已被Alpha 21164和UltraSPARC 采用 流水化Cache訪問 +1 被廣泛采用 Trace Cache +3 Pentium 4 采用主存的主要性能指標(biāo):延遲和帶寬以往:Cache主要關(guān)心延遲,I

59、/O主要關(guān)心帶寬?,F(xiàn)在:Cache關(guān)心兩者下面討論幾種能提高主存性能的存儲(chǔ)器組織技術(shù)我們以處理Cache失效為例來說明各種存儲(chǔ)器組織 結(jié)構(gòu)的好處。 5.6 主 存5.6 主 存在下面的討論中,假設(shè)基本存儲(chǔ)器結(jié)構(gòu)的性能為:送地址需要4個(gè)時(shí)鐘周期每個(gè)字的訪問時(shí)間為24個(gè)時(shí)鐘周期傳送一個(gè)字(32位)的數(shù)據(jù)需4個(gè)時(shí)鐘周期 如果Cache塊大小為4個(gè)字,則失效開銷為4(4244)128個(gè)時(shí)鐘周期存儲(chǔ)器的帶寬為每個(gè)時(shí)鐘周期1/8(16/128)字節(jié)5.6 主 存性能 (參照前面的假設(shè))當(dāng)寬度為4個(gè)字時(shí):失效開銷132(周期)帶寬0.5(字節(jié)/周期)1. 增加存儲(chǔ)器的寬度5.6 主 存缺點(diǎn): 增加CPU和存

60、儲(chǔ)器之間的連接通路的寬度CPU和Cache之間有一個(gè)多路選擇器擴(kuò)充主存的最小增量增加了相應(yīng)的倍數(shù)訪存沖突大取指令沖突。在遇到程序轉(zhuǎn)移成功時(shí),一個(gè)存儲(chǔ)周期中讀出的n條指令,轉(zhuǎn)移指令之后的指令無(wú)用;讀操作數(shù)沖突。一次讀出的n個(gè)操作數(shù),不一定都有用;需要的多個(gè)操作數(shù)不一定正好在同一個(gè)存儲(chǔ)字中;讀寫沖突。當(dāng)要讀出的一個(gè)字和要寫入的一個(gè)字正好在一個(gè)存儲(chǔ)字內(nèi),無(wú)法在一個(gè)周期內(nèi)完成;寫數(shù)據(jù)沖突。必須湊齊n個(gè)數(shù)一起寫。5.6 主 存采用簡(jiǎn)單的多體交叉存儲(chǔ)器性能舉例:(參照前面的假設(shè))失效開銷4244444(周期)帶寬0.4(字節(jié)/周期)5.6 主 存 例5.14 假設(shè)某臺(tái)計(jì)算機(jī)的特性及其Cache的性能為:

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論