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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

13、寫”策略:寫直達(dá)寫緩沖器大?。?個塊,每塊4個字5.2.5 Cache的結(jié)構(gòu)結(jié)構(gòu)圖工作過程“讀”訪問命中“寫”訪問命中失效情況下的操作 5.2 Cache的基本知識混合Cache與分離Cache優(yōu)缺點(diǎn)失效率的比較5.2 Cache的基本知識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的基本知識失效率與硬件速度無關(guān)容易產(chǎn)生一些誤導(dǎo), 失效率低不一定平均訪存時間少平均訪存時間 平均訪存時間 命中時間失效率失效開銷5.2.6 Cache的性能分析5.2 Cache的基本知識程序執(zhí)行時間CPU時間(CPU執(zhí)行周期數(shù)+存儲器停頓周期數(shù)) 時鐘周期時間其中: 存儲器停頓時鐘周期數(shù)“讀”的次數(shù)讀失效率讀失效開銷“寫”的次數(shù)寫失效率寫失效開銷存儲器停頓時鐘周期數(shù)訪存次數(shù)失效率失效開銷 5.2 Cache的基本知識 例5.1 假設(shè)Cache的命中時間為1個時鐘周期,失效開銷為50個時鐘周期,在混合Cache中一次load或store操

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

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

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

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

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

20、被替換后,若又重新被訪問,就會發(fā)生失效。這種失效稱為容量失效。沖突失效(Conflict miss)在組相聯(lián)或直接映象Cache中,若太多的塊映象到同一組(塊)中,則會出現(xiàn)該組中某個塊被別的塊替換(即使別的組或塊有空閑位置),然后又被重新訪問的情況。這就是發(fā)生了沖突失效。 (碰撞失效,干擾失效)5.3 降低Cache失效率的方法5.3 降低Cache失效率的方法觀察(結(jié)合書173頁表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)制性失效 ?容量失效 ?沖突失效 ? 代價?5.3 降低Cache失效率的方法失效率與塊大小的關(guān)系對于給定的Cache容量,當(dāng)塊大小增加時,失效率開始是下降,后來反而上升了。 Cache容量越大,使失效率達(dá)到最低的塊大小就越大。

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

23、種塊大小情況下Cache的平均訪存時間 塊大?。ㄗ止?jié)) 失效開銷(時鐘周期) 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)度是以增加命中時間為代價。 例如:TTL或ECL板級Cache,2路組相聯(lián): 增加10定制的CMOS Cache, 2路組相聯(lián): 增加25.3.2 提高相聯(lián)度5.3 降低Cache失效率的方法 例5.5 假定提高相聯(lián)度會按下列比例增大處理器時鐘周期: 時鐘周期2路 1.10時鐘周期1路 時鐘周期4路 1.12時鐘周期1路 時鐘周期8路 1.14時鐘周期1路 假定命中時間為一個時鐘周期,直接映象情況下失效開銷為50個時鐘周期,而且假設(shè)不必將失效開銷取整。使用表5.5中的失效率,試問當(dāng)Cache為多大時,以下不

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

26、KB的8路組相聯(lián)Cache的平均訪存時間為: 平均訪存時間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的平均訪存時間5.3 降低Cache失效率的方法最直接的方法是增加Cache的容量缺點(diǎn):增加

27、成本可能增加命中時間這種方法在片外Cache中用得比較多 5.3.3 增加Cache的容量5.3 降低Cache失效率的方法一種能減少沖突失效次數(shù)而又不影響時鐘頻率的方法?;舅枷朐贑ache和它從下一級存儲器調(diào)數(shù)據(jù)的通路之間設(shè)置一個全相聯(lián)的小Cache,用于存放被替換出去的塊(稱為Victim),以備重用。工作過程5.3.4 Victim Cache 5.3 降低Cache失效率的方法Victim Cache在存儲層次中的位置 5.3 降低Cache失效率的方法作用對于減小沖突失效很有效,特別是對于小容量的直接映象數(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)命中時間小失效率低5.3.5 偽相聯(lián) Cache 優(yōu)點(diǎn)缺點(diǎn)直接映象組相聯(lián)命中時間小命中時間大失效率高失效率低基本思想及工作原理 在邏輯上把直接映象Cache的空間上下平分為兩個區(qū)。對于任何一次訪問,偽相聯(lián)Cache先按直接映象Cache的方式去處理。若命中,則其訪問過程與直接映象Cache的情況一樣。若不命中,則再到另一區(qū)相應(yīng)的位置去查找。若找到,則發(fā)生了偽命中,否則就只好訪問下一級存儲器??焖倜信c慢速命中 要保證絕大多數(shù)命中都是快速命中。5.3 降低C

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

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

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

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

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

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

35、的方法 例5.8 對于下面的程序,首先判斷哪些訪問可能會導(dǎo)致數(shù)據(jù)Cache失效。然后,加入預(yù)取指令以減少失效。最后,計算所執(zhí)行的預(yù)取指令的條數(shù)以及通過預(yù)取避免的失效次數(shù)。假定: (1) 我們用的是一個容量為8 KB、塊大小為16 B的直接映象Cache,它采用寫回法并且按寫分配。 (2) a、b分別為3100(3行100列)和1013的雙精度浮點(diǎn)數(shù)組,每個元素都是8 B。當(dāng)程序開始執(zhí)行時,這些數(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失效率的方法解計算過程取a時 150次取b時 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 在以下條件下,計算例5.8中所節(jié)約的時間: (1) 忽略指令Cache失效,并假設(shè)數(shù)據(jù)Cache無沖突失效和容量失效。 (2) 假設(shè)預(yù)取可以被重疊或與Cache失效重疊執(zhí)行,從而能以最大的存儲帶寬傳送數(shù)據(jù)。(即不考慮結(jié)構(gòu)沖突) (3) 不考慮Ca

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

39、失效率。McFaring 發(fā)現(xiàn): 通過對指令進(jìn)行重新排序,可有效地降低指令Cache的失效率。2KB Cache: 降低508KB Cache:降低75%數(shù)據(jù)對存儲位置的限制比指令的少,因此更便于優(yōu)化。 重新組織的目標(biāo):改善數(shù)據(jù)的空間局部性和時間局部性5.3.8 編譯器優(yōu)化 5.3 降低Cache失效率的方法數(shù)組合并 提高空間局部性 適用情況:同時引用多個數(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)時間局部性 /* 修改前 */ 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ù)組的整行或整列訪問改為按塊進(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; 注意觀察:對y的訪問具有時間局部性,對z的訪問時間局部性差。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)致對存儲器訪問的復(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失效開銷解決問題的方法(讀失效的處理)推遲對讀失效的處理(缺點(diǎn):讀失效的開銷增加,如50)檢查寫緩沖器中的內(nèi)容在寫回法Cache中,也可采用寫緩沖器。5.4.2 寫緩沖合并寫回法和寫直達(dá)均采用寫緩沖提高寫緩沖效率 空間利用率寫效率5.4 減少Cache失效開銷如果寫緩沖器中已經(jīng)有了待寫入的數(shù)據(jù),就要把這次的寫入地址與寫緩沖器中已有的所有地址進(jìn)行比較,看是否有匹配的項(xiàng)。如果有地址匹配而對應(yīng)的位置又是空閑的,

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

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

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

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

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

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

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

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

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

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

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

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

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

58、aSPARC 盡早重啟動和關(guān)鍵字優(yōu)先 +2 被廣泛采用 非阻塞Cache +3 在支持亂序執(zhí)行的CPU中使用 優(yōu)化技術(shù) 失效率 失效開銷 命中時間 硬件復(fù)雜度 說 明 兩級Cache +2 硬件代價大;兩級Cache的塊大小不同時實(shí)現(xiàn)困難;被廣泛采用 容量小且結(jié)構(gòu)簡單的Cache +0實(shí)現(xiàn)容易,被廣泛采用 對Cache進(jìn)行索引時不必進(jìn)行地址變換 +2 對于小容量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)心兩者下面討論幾種能提高主存性能的存儲器組織技術(shù)我們以處理Cache失效為例來說明各種存儲器組織 結(jié)構(gòu)的好處。 5.6 主 存5.6 主 存在下面的討論中,假設(shè)基本存儲器結(jié)構(gòu)的性能為:送地址需要4個時鐘周期每個字的訪問時間為24個時鐘周期傳送一個字(32位)的數(shù)據(jù)需4個時鐘周期 如果Cache塊大小為4個字,則失效開銷為4(4244)128個時鐘周期存儲器的帶寬為每個時鐘周期1/8(16/128)字節(jié)5.6 主 存性能 (參照前面的假設(shè))當(dāng)寬度為4個字時:失效開銷132(周期)帶寬0.5(字節(jié)/周期)1. 增加存儲器的寬度5.6 主 存缺點(diǎn): 增加CPU和存

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

溫馨提示

  • 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

提交評論