




已閱讀5頁,還剩186頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第五章 并行存儲系統(tǒng)和同步機制,并行存儲系統(tǒng)和同步機制,計算機邏輯器件速度大幅提高,致使系統(tǒng)與存儲機制之間的速度差距日益增大,存儲系統(tǒng)已經成為計算機系統(tǒng)的速度瓶頸。 多體并行、多體交叉 寬字訪問和順序交叉訪問 存儲器層次結構,層次存儲系統(tǒng),層次存儲系統(tǒng),在一般計算機系統(tǒng)中,有兩種存儲系統(tǒng): Cache存儲系統(tǒng):由Cache和主存儲器構成 主要目的:提高存儲器速度,解決主存速度不足,虛擬存儲系統(tǒng):由主存儲器和硬盤構成 主要目的:擴大存儲器容量,解決主存容量不足,存儲系統(tǒng)的容量 要求: 提供盡可能大的地址空間 能夠隨機訪問 方法有兩種: 只對系統(tǒng)中存儲容量最大的那個存儲器進行編址,其他存儲器只在內部編址或不編址 Cache存儲系統(tǒng) 另外設計一個容量很大的邏輯地址空間,把相關存儲器都映射這個地址空間中 虛擬存儲系統(tǒng),存儲系統(tǒng)的價格 計算公式: 當S2S1時,CC2 S2與S1不能相差太大,存儲系統(tǒng)的速度 表示方法:訪問周期、存取周期、存儲周期、存取時間等 命中率定義:在M1存儲器中訪問到的概率 其中:N1是對M1存儲器的訪問次數(shù) N2是對M2存儲器的訪問次數(shù) 訪問周期與命中率的關系: THT1(1H)T2 當命中率H1時,TT1,存儲系統(tǒng)的訪問效率: 訪問效率主要與命中率和兩級存儲器的速度之比有關 例3.1:假設T2T,在命中率H為0.9和0.99兩種情況下,分別計算存儲系統(tǒng)的訪問效率。 解:,當H0.9時, e11(0.95(10.9)0.72,當H0.99時, e21(0.995(10.99)0.96,提高存儲系統(tǒng)速度的兩條途徑: 一是提高命中率H, 二是兩個存儲器的速度不要相差太大 其中:第二條有時做不到(如虛擬存儲器),這時,只能依靠提高命中率 例3.2:在虛擬存儲系統(tǒng)中,兩個存儲器的速度相差特別懸殊,例如:T2105 T。如果要使訪問效率到達e0.9,問需要有多高的命中率?,解:,0.9H90000(1-H)1 89999.1 H89999 計算得: H0.999998888877777 0.999999,5. 采用預取技術提高命中率 方法:不命中時,把M2存儲器中相鄰多個單元組成的一個數(shù)據(jù)塊取出來送入M1存儲器中。,計算公式: 其中:H是采用預取技術之后的命中率 H是原來的命中率 n為數(shù)據(jù)塊大小與數(shù)據(jù)重復使用次數(shù)的乘積,例3.3:在一個Cache存儲系統(tǒng)中,當Cache的塊大小為一個字時,命中率H0.8;假設數(shù)據(jù)的重復利用率為5,T25T1。計算塊大小為個字時,Cache存儲系統(tǒng)的命中率?并分別計算訪問效率。,解:n4520, 采用預取技術之后,命中率提高到:,證明方法一: 采用預取技術之后, 不命中率(1-H)降低倍:,證明方法二: 在原有命中率的計算公式中,把訪問次數(shù)擴大到n倍。由于采用了預取技術,命中次數(shù)為:nN1(n-1)N2,不命中次數(shù)仍為N2,因此新的命中率為:,存儲系統(tǒng)的層次結構,多個層次的存儲器: 第1層:Register Files(寄存器堆) 第2層: Buffers(Lookahead)(先行緩沖棧) 第3層: Cache(高速緩沖存儲器) 第4層: Main Memory(主存儲器) 第5層: Online Storage(聯(lián)機存儲器) 第6層: Off-line Storage(脫機存儲器) 用i表示層數(shù),則有:工作周期TiTi+1, 存儲容量:SiSi+1,單位價格:CiCi+1,存儲層次的四個問題,1.當把一個塊調入高一層(靠近CPU)存儲器時,可以放在哪些位置上? (映象規(guī)則),2.當所要訪問的塊在高一層存儲器中時,如何找到該塊? (查找算法),3. 當發(fā)生失效時,應替換哪一塊? (替換算法),4. 當進行寫訪問時,應進行哪些操作?(寫策略),多體并行,多套地址寄存器和控制邏輯 1. 高位交叉訪問存儲器 主要目的:擴大存儲器容量 實現(xiàn)方法:用地址碼的高位部分區(qū)分存儲體號 要求每個模塊都有各自獨立的控制部件,每個模塊均可獨立工作。但系統(tǒng)地址的連續(xù)空間落在同一存儲體內,容易發(fā)生訪存沖突。并行存取的可能性很小。,交叉訪問存儲器,高位交叉訪問存儲器結構框圖,例3.4:用4M字4位的存儲芯片組成16M32位的主存儲器。共用存儲芯片: 用最高2位地址經譯碼后產生的信號,控制各組存儲芯片CS。 每組中的32根數(shù)據(jù)線分別對應直接相連,稱為“線或”方式。,低位交叉訪問存儲器 主要目的:提高存儲器訪問速度 實現(xiàn)方法:用地址碼的低位部分區(qū)分存儲體號 要求每個模塊都有各自獨立的控制部件,每個模塊均可獨立工作。系統(tǒng)地址在一個存儲體內部是不連續(xù)的,對連續(xù)地址的訪問分布在不同的存儲體中,可避免存儲體訪問沖突。 理想情況下,即一個模m的多體交叉訪問存儲器在不發(fā)生分體沖突時的頻寬是單體存儲器頻寬的m倍。,低位交叉訪問存儲器結構框圖,地址編碼方法: 由8個存儲體構成的低位交叉編址方式,n個存儲體分時啟動 一種采用流水線方式工作的并行存儲器 每存儲體的啟動間隔為:t 其中: Tm為每個存儲體的訪問周期, n為存儲體個數(shù)。,訪問沖突 共有n個存儲體,每個存儲周期只能取到k個有效字,其余n-k個存儲體有沖突。 假設p(k)是k的概率密度函數(shù),即p(1)是k1的概率,p(2)是k2的概率,,p(n)是kn的概率。k的平均值為: N是每個存儲周期能夠訪問到的平均有效字的個數(shù)。 通常把 N稱為并行存儲器的加速比。,定義轉移概率為g,即讀出的是轉移指令,且轉移成功的概率。這時有: p(1)g p(2)(1-p(1)g(1-g)g p(3)(1-p(1)-p(2)g(1-g)2g p(k)(1-g)k-1g (k1,2,n1) p(n)(1-g)n-1,則:1g2(1-g)g3(1-g)2g (n-1)(1-g)n-2gn(1-g)n-1,若g=0,n個存儲體的加速倍數(shù)達到最大值n。 若g=1, n個存儲體的加速倍數(shù)只有1,與單個存儲體完全一樣。,無沖突訪問存儲器,1. 一維數(shù)組(向量)的無沖突訪問存儲器 按連續(xù)地址訪問,沒有沖突, 位移量為2的變址訪問,速度降低一倍,,具體方法: 存儲體的個數(shù)取質數(shù)。 原因:變址位移量必然與存儲體個數(shù)互質 設地址間距為d=1,m體交叉存儲器的工作體數(shù)為m=m/(m,d),其中(m,d)為m和d的最大公約數(shù)。當m=T/時,必將引起流水線斷流,所以m取為質數(shù)。,2. 二維數(shù)組的無沖突訪問存儲器 要求:一個nn的二維數(shù)組,按行、列、對角線和反對角線訪問,并且在不同的變址位移量情況下,都能實現(xiàn)無沖突訪問。 順序存儲:按行、對角線訪問沒有沖突,但按列訪問每次沖突,錯位存儲: 按行、按列訪問無沖突, 但按對角線訪問有沖突,nn二維數(shù)組無沖突訪問存儲方案 ( P Budnik 和 D J Kuck提出 ) : 并行存儲體的個數(shù)mn,并且取質數(shù),同時還要在行、列方向上錯開一定的距離存儲數(shù)組元素。 設同一列相鄰元素在并行存儲器中錯開d1個存儲體存放,同一行相鄰元素在并行存儲器中錯開d2個存儲體存放。當m22p1(p為任意自然數(shù))時,能夠同時實現(xiàn)按行、按列、按對角線和按反對角線無沖突訪問的充要條件是:d12P,d21。,例如:44的二維數(shù)組,取并行存儲體的個數(shù)m5,由關系式m22P1,解得到p1,計算得到: d1212 d21,37,nn數(shù)組中的任意一個元素aij在無沖突并行存儲器中的體號地址和體內地址的計算公式: 體號地址:(2P ijk) MOD m 體內地址:i 其中:0in1, 0jn1, k是數(shù)組的第一個元素a00所在體號地址,通常k=0 , m是并行存儲體的個數(shù),要求mn且為質數(shù), p是滿足m22P1關系的任意自然數(shù)。 主要缺點:浪費存儲單元 對于nn數(shù)組,有1/(n+1)的存儲單元浪費 主要優(yōu)點:實現(xiàn)簡單 行元素順序存儲,列元素按地址取模順序存儲,3. 二維數(shù)組的無沖突訪問存儲器(之二) 規(guī)則:對于任意一個nn的數(shù)組,如果能夠找到滿足n22P關系的任意自然數(shù)p,則這個二維數(shù)組就能夠使用n個并行存儲體實現(xiàn)按行、列、對角線和反對角線的無沖突訪問。 44數(shù)組用4個存儲體的無訪問沖突存儲方案,實現(xiàn)方法: 假設aij是44數(shù)組中的任意一個元素,下標i和j都可以用兩位二進制表示。假設i和j的高位和低位分別為iH、iL、jH和jL,則aij在無沖突并行存儲器中的體號地址和體內地址如下: 體號地址:2(iL jH)(iH iL jL) 體內地址:j 其中:0i3,0j3 主要優(yōu)點:沒有浪費的存儲單元 主要缺點:在執(zhí)行并行讀和寫操作時需要借助比較復雜的對準網絡。,Cache主存存儲系統(tǒng),存儲空間分割與地址計算,映象規(guī)則,全相聯(lián)映象 全相聯(lián):主存中的任一塊可以被放置到 Cache中的任意一個位置。 對比: 閱覽室位置 隨便坐 特點: 空間利用率最高,沖突概率最低, 實現(xiàn)最復雜。,Cache和主存分塊,2. 直接映象, 直接映象:主存中的每一塊只能被放置到 Cache中唯一的一個位置。 對比:閱覽室位置 只有一個位置可以坐 特點:空間利用率最低,沖突概率最高,實現(xiàn)最簡單。 對于主存的第i 塊,若它映象到Cache的第j 塊,則: ji mod (M ) (M為Cache的塊數(shù)), 組相聯(lián):主存中的每一塊可以被放置Cache中唯一的一個組中的任何一個位置。 組相聯(lián)是直接映象和全相聯(lián)的一種折衷, 設M2m,則當表示為二進制數(shù)時,j 實際 上就是i 的低m 位:,3. 組相聯(lián)映象,m位,j,i:,上述的j 和k 通常稱為索引,組的選擇常采用位選擇算法 若主存第i 塊映象到第k 組,則:ki mod(G) (G為Cache的組數(shù))設G2g,則當表示為二進制數(shù)時,k 實際上就是i 的低 g 位:,g 位,k,i:, 絕大多數(shù)計算機的Cache: n 4 想一想:相聯(lián)度一定是越大越好?, n 路組相聯(lián):每組中有n 個塊(nM/G ),n 稱為相聯(lián)度。相聯(lián)度越高,Cache空間的利用率就越高塊沖突概率就越低,失效率也就越低。,全相聯(lián),直接映象,組相聯(lián),n (路數(shù)),G (組數(shù)),M,M,1,1,1nM,1GM,查找方法,如何確定Cache中是否有所要訪問的塊? 若有的話如何確定其位置?,目錄表的結構, 只需查找候選位置所對應的目錄表項, 并行查找與順序查找, 提高性能的重要思想:主候選位置(MRU塊) 前瞻執(zhí)行, 并行查找的實現(xiàn)方法:,相聯(lián)存儲器 單體多字存儲器比較器,路組相聯(lián)Cache的查找過程, 直接映象Cache的查找過程,替換算法,所要解決的問題:當新調入一塊,而Cache 又已被占滿時,替換哪一塊?,1. 隨機法 優(yōu)點:實現(xiàn)簡單 2. FIFO 3. LRU 優(yōu)點:失效率低,寫策略,1. “寫”操作所占的比例 Load指令:26 Store指令:9 “寫”在所有訪存操作中所占的比例: 9/(100269)7 “寫”在訪問Cache操作中所占的比例: 9/(269)25,3“寫”訪問有可能導致Cache和主存內容的不一致,2. “寫”操作必須在確認是命中后才可進行,兩種寫策略 寫直達法 執(zhí)行“寫”操作時,不僅寫入Cache,而且 也寫入下一級存儲器。 寫回法 執(zhí)行“寫”操作時,只寫入Cache。僅當 Cache中相應的塊被替換時,才寫回主存。 (設置“污染位”),5兩種寫策略的比較 寫回法的優(yōu)點:速度快,所使用的存儲器頻 帶較低; 寫直達法的優(yōu)點:易于實現(xiàn),一致性好。,6. 寫緩沖器,寫策略與調塊 寫回法 按寫分配 寫直達法 不按寫分配,“寫”操作時的調塊 按寫分配(寫時取) 寫失效時,先把所寫單元所在的塊調入 Cache,再行寫入。 不按寫分配(繞寫法) 寫失效時,直接寫入下一級存儲器而不調塊。,Cache的結構,例子:DEC的Alpha AXP21064中的內部數(shù)據(jù)Cache,簡介 容量:8KB 塊大小:32B 塊數(shù):256 采用不按寫分配 映象方法:直接映象 “寫”策略:寫直達 寫緩沖器大小:4個塊,混合Cache與分離Cache (1) 優(yōu)缺點 (2) 失效率的比較,失效情況下的操作,16 KB,容 量,1 KB,2 KB,4 KB,8 KB,32 KB,指令 Cache,3.06%,失 效 率 的 比 較,64 KB,128 KB,數(shù)據(jù) Cache,混合 Cache,2.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.87%,1.99%,1.36%,0.95%,訪問指令Cache的百分比指令Cache的失效率 訪問數(shù)據(jù)Cache的百分比數(shù)據(jù)Cache的失效率,Cache性能分析,平均訪問時間 平均訪問時間命中時間失效率失效開銷,失效率,假設Cache的命中時間為1個時鐘周期,失效開銷為50 個時鐘周期,在混合Cache中一次load或store操作訪問Cache的命中時間都要增加一個時鐘周期(因為混合Cache只有一個端口,無法同時滿足兩個請求?;旌螩ache會導致結構沖突),根據(jù)表所列的失效率,試問指令Cache和數(shù)據(jù)Cache容量均為16KB的分離Cache和容量為32KB的混合Cache相比,哪種Cache的失效率更低?又假設采用寫直達策略,且有一個寫緩沖器,并且忽略寫緩沖器引起的等待。請問上述兩種情況下平均訪存時間各是多少?,解: 如前所述,約75%的訪存為取指令。因此, 分離Cache的總體失效率為: (75%0.64%)(25%6.47%)2.10% 根據(jù)表,容量為32KB的混合Cache的失 效率略低一些,只有1.99%.,平均訪存時間公式可以分為指令訪問和數(shù)據(jù)訪問兩部分: 平均訪存時間指令所占的百分比 (指令命中時間指令失效率失效開銷) 數(shù)據(jù)所占的百分比 (數(shù)據(jù)命中時間數(shù)據(jù)失效率失效開銷) 所以,兩種結構的平均訪存時間分別為: 平均訪存時間分離75%(10.64%50) 25%(16.47%50) (75%1.32)(25%4.325) 0.9901.0592.05,平均訪存時間混合75%(11.99%50) 25%(111.99%50) (75%1.995)(25%2.995) 1.4960.7492.24,程序執(zhí)行時間 CPU時間(CPU執(zhí)行周期數(shù)存儲器停頓周期數(shù)) 時鐘周期時間 其中: 存儲器停頓周期數(shù)訪存次數(shù)失效率失效開銷,CPU時間ICCPIexe每條指令的平均存儲 器停頓周期數(shù)時鐘周期時間,CPU時間ICCPIexe訪存次數(shù)/指令數(shù) 失效率失效開銷時鐘周期時間,例 我們用一個和Alpha AXP類似的機器作為 第一個例子。假設Cache失效開銷為50個時鐘 周期,當不考慮存儲器停頓時,所有指令的 執(zhí)行時間都是2.0個時鐘周期, Cache的失效 率為2%,平均每條指令訪存1.33次。試分析 Cache對性能的影響。,考慮Cache的失效后,性能為: CPU 時間有cacheIC(2.0(1.332%50) 時鐘周期時間 IC3.33時鐘周期時間,CPU 時間IC(CPIexe ) 時鐘周期時間,存儲器停頓周期數(shù),指令數(shù),解:,實際CPI :3.33 3.33/2.0 = 1.67(倍),CPU時間也增加為原來的1.67倍。但若不采用Cache,則: CPI2.0+501.3368.5,考慮兩種不同組織結構的Cache:直接映象 Cache和兩路組相聯(lián)Cache,試問它們對CPU的性 能有何影響?先求平均訪存時間,然后再計算 CPU性能。分析時請用以下假設: 理想Cache(命中率為100)情況下的CPI 為2.0,時鐘周期為2ns,平均每條指令 訪存1.3次。 兩種Cache容量均為64KB,塊大小都是32 字節(jié)。, 后圖說明,在組相聯(lián)Cache中,我們必須增 加一個多路選擇器,用于根據(jù)標識匹配結果 從相應組的塊中選擇所需的數(shù)據(jù)。因為CPU 的速度直接與Cache命中的速度緊密相關,所 以對于組相聯(lián)Cache,由于多路選擇器的存 在而使CPU的時鐘周期增加到原來的1.10倍。 這兩種結構Cache的失效開銷都是70ns。在 實際應用中,應取整為整數(shù)個時鐘周期。 命中時間為1個時鐘周期,64KB直接映象 Cache的失效率為1.4%,相同容量的兩路組 相聯(lián)Cache的失效率為1.0%。,由: 平均訪存時間命中時間失效率失效開銷 得: 平均訪存時間1路2.0(0.01470)2.98ns 平均訪存時間2路2.01.10(0.01070)2.90ns,由: CPU 時間IC(CPIexe每條指令的平均存儲器 停頓周期數(shù))時鐘周期時間 IC (CPIexe時鐘周期時間 每條指令的平均存儲器停頓時間),解:,CPU時間1路IC(2.02(1.30.01470) 5.27IC CPU時間2路IC(2.021.10 (1.30.01070) 5.31IC,5.31IC,CPU時間1路, 1.01,5.27IC,CPU時間2路,平均訪存時間命中時間失效率失效開銷 可以從三個方面改進Cache的性能: (1) 降低失效率 (2) 減少失效開銷 (3) 減少Cache命中,改進Cache性能,(1)強制性失效(Compulsory miss) 當?shù)谝淮卧L問一個塊時,該塊不在Cache中,需從下一級存儲器中調入Cache,這就是強制性失效。 (冷啟動失效,首次訪問失效。) (2) 容量失效(Capacity miss ) 如果程序執(zhí)行時所需的塊不能全部調入Cache中,則當某些塊被替換后,若又重新被訪問,就會發(fā)生失效。這種失效稱為容量失效。,降低Cache失效率的方法,(3) 沖突失效(Conflict miss) 在組相聯(lián)或直接映象Cache中,若太多 的塊映象到同一組(塊)中,則會出現(xiàn)該組 中某個塊被別的塊替換(即使別的組或塊有 空閑位置),然后又被重新訪問的情況。這 就是發(fā)生了沖突失效。 (碰撞失效,干擾失效),可以看出: (1) 相聯(lián)度越高,沖突失效就越少; (2) 強制性失效和容量失效不受相聯(lián)度的影響; (3) 強制性失效不受Cache容量的影響,但容 量失效卻隨著容量的增加而減少; (4) 表中的數(shù)據(jù)符合2:1的Cache經驗規(guī)則,即 大小為N 的直接映象Cache的失效率約等于 大小為N/2 的兩路組相聯(lián)Cache的失效率。,強制性失效:增加塊大小,預取 (本身很少) 容量失效:增加容量 (抖動現(xiàn)象) 沖突失效:提高相聯(lián)度 (理想情況:全相聯(lián)),減少三種失效的方法,許多降低失效率的方法會增加命中時間或失效開銷,增加Cache塊大小,1. 失效率與塊大小的關系 (1) 對于給定的Cache容量,當塊大小增加 失效率開始是下降,后來反而上升了; (2) Cache容量越大,使失效率達到最低的 塊大小就越大。,2. 增加塊大小會增加失效開銷,例 5.4,假定存儲系統(tǒng)在延遲40個時鐘周期后,每2個 時鐘周期能送出16個字節(jié)。即:經過42個時鐘周期, 它可提供16個字節(jié);經過44個時鐘周期,可提供32 個字節(jié);依此類推。試問對于表5-6中列出的各種 容量的Cache,在塊大小分別為多少時,平均訪存 時間最???,解: 1KB、4KB、16KB Cache: 塊大小32字節(jié) 64KB、256KB Cache: 塊大小64字節(jié),提高相聯(lián)度,1. 采用相聯(lián)度超過8的方法實際意義不大,2. 2:1 Cache經驗規(guī)則 容量為N 的直接映象Cache 容量為N/2的兩路組相聯(lián)Cache,3. 提高相聯(lián)度是以增加命中時間為代價 例如: TTL或ECL板級Cache,兩路組相聯(lián):增加10 定制的CMOS Cache, 兩路組相聯(lián):增加2,假定提高相聯(lián)度會按下列比例增大處理器時鐘周期: 時鐘周期2路 1.10時鐘周期1路 時鐘周期4路 1.12時鐘周期1路 時鐘周期8路 1.14時鐘周期1路 假定命中時間為1個時鐘,直接映象情況 下失效開銷為50個時鐘周期,而且假設不必將 失效開銷取整。使用表55中的失效率,試問 當Cache為多大時,以下不等式成立?,平均訪存時間8路 平均訪存時間4路 平均訪存時間4路 平均訪存時間2路 平均訪存時間2路 平均訪存時間1路,在各種相聯(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,在每種情況下的失效開銷相同,都是50個時鐘周期。把相應的失效率代入上式, 即可得平均訪存時間。 例如,1KB的直接映象Cache的平均訪存時間為: 平均訪存時間1路 1.00(0.13350) 7.65 容量為128KB的8路組相聯(lián)Cache的平均訪存時間為: 平均訪存時間8路 1.14(0.00650) 1.44,1. 基本思想 在Cache和它從下一級存儲器調數(shù)據(jù) 的通路之間設置一個全相聯(lián)的小Cache, 用于存放被替換出去的塊(稱為Victim), 以備重用。,Victim Cache,對于減小沖突失效很有效,特別是對于小容量的直接映象數(shù)據(jù)Cache,作用尤其明顯。 例如,項數(shù)為4的Victim Cache: 使4KB Cache的沖突失效減少20%90%,作用,直接映象 vs組相聯(lián),偽相聯(lián)Cache,偽相聯(lián)Cache,優(yōu) 點,缺 點,直接映象,組相聯(lián),命中時間小,命中時間大,失效率高,失效率低,取直接映象及組相聯(lián)兩者的優(yōu)點: 命中時間小,失效率低,(1) 基本思想及工作原理 在邏輯上把直接映象Cache的空間上下平分為兩個區(qū)。對于任何一次訪問,偽相聯(lián)Cache先按直接映象Cache的方式去處理。若命中,則其訪問過程與直接映象Cache的情況一樣。若不命中,則再到另一區(qū)相應的位置去查找。若找到,則發(fā)生了偽命中,否則就只好訪問下一級存儲器。,(2) 快速命中與慢速命中 要保證絕大多數(shù)命中都是快速命中。,3. 例題,假設當在按直接映象找到的位置處沒有發(fā) 現(xiàn)匹配、而在另一個位置才找到數(shù)據(jù)(偽命中) 需要2個額外的周期。仍用上個例子中的數(shù)據(jù), 問:當Cache容量分別為2KB和128KB時,直接 映象、兩路組相聯(lián)和偽相聯(lián)這三種組織結構中, 哪一種速度最快?,首先考慮標準的平均訪存時間公式: 平均訪存時間偽相聯(lián) 命中時間偽相聯(lián)失效率偽相聯(lián)失效開銷偽相聯(lián) 由于: 失效率偽相聯(lián)失效率2路 命中時間偽相聯(lián)命中時間1路偽命中率偽相聯(lián)2; 偽命中率偽相聯(lián)命中率2路命中率1路 (1失效率2路)(1失效率1路) 失效率1路失效率2路,故: 平均訪存時間偽相聯(lián) 命中時間1路(失效率1路失效率2路)2 失效率2路失效開銷1路,將表中的數(shù)據(jù)代入上面的公式,得: 平均訪存時間偽相聯(lián),2KB 1(0.0980.076)2(0.07650) 4.844 平均訪存時間偽相聯(lián),128KB 1(0.0100.007)2(0.00750) 1.356,根據(jù)上一個例子中的表58,對于2KB Cache,可得: 平均訪存時間1路 5.90 個時鐘 平均訪存時間2路 4.90 個時鐘 對于128KB的Cache有,可得: 平均訪存時間1路 1.50 個時鐘 平均訪存時間2路 1.45 個時鐘 可見,對于這兩種Cache容量,偽相聯(lián)Cache 都是速度最快的。,缺點:多種命中時間,硬件預取技術,1. 指令和數(shù)據(jù)都可以預取,2. 預取內容既可放入Cache,也可放在 外緩沖器中 例如:指令流緩沖器,3. 預取效果 (1) Joppi的研究結果 指令預取 (4KB,直接映象Cache, 塊大小16字節(jié)),1個塊的指令流緩沖器: 捕獲1525的失效 4個塊的指令流緩沖器: 捕獲50 16個塊的指令流緩沖器:捕獲72, 數(shù)據(jù)預取 (4KB,直接映象Cache) 1個數(shù)據(jù)流緩沖器:捕獲25的失效還可以采用多個數(shù)據(jù)流緩沖器,Palacharla和Kessler的研究結果 流緩沖器:既能預取指令又能預取數(shù)據(jù) 對于兩個64KB四路組相聯(lián)Cache來說: 8個流緩沖器能捕獲5070的失效。,Alpha AXP 21064采用指令預取技術,其實際 失效率是多少?若不采用指令預取技術,Alpha APX 21064的指令Cache必須為多大才能保持平均訪 存時間不變?,解: 假設從預取緩沖器中找到所需指令需多花1個 時鐘周期。 平均訪存時間預取 命中時間失效率預取命中率1 失效率(1預取命中率)失效開銷,假設: 預取命中率25 命中時間1個時鐘周期 失效開銷50個時鐘周期 由表5.4可知,8KB指令Cache的失效率1.10 故平均訪存時間預取 1(1.10 %25 %1) (1.10 %(125 %)50) 10.002750.4125 1.415 由公式: 平均訪問時間命中時間失效率失效開銷,可得相應的失效率為: 失效率(平均訪問時間命中時間)/失效開銷 (1.4511)/500.83,8KB Cache,帶預取的 8kB Cache,失效率,1.10,0.83,16KB Cache,0.64,由編譯器控制的預取,1. 預取的類型 寄存器預取:把數(shù)據(jù)取到寄存器中 Cache預?。?只將數(shù)據(jù)取到Cache中 故障性預?。侯A取時,若出現(xiàn)虛地址故障 或違反訪問權限,就會發(fā)生異常。 非故障性預取:預取時,若出現(xiàn)虛地址故 障或違反訪問權限,并不會導致異常,只 是轉變?yōu)椤安活A取”。,由編譯器加入預取指令,在數(shù)據(jù)被用到之前發(fā)出預取請求。,4. 例題,2. 在預取數(shù)據(jù)的同時,處理器應能繼續(xù)執(zhí)行 只有這樣,預取才有意義。 非阻塞Cache (非鎖定Cache),3. 循環(huán)是預取優(yōu)化的主要對象 失效開銷小時:循環(huán)體展開12次 失效開銷大時:循環(huán)體展開許多次,例 對于下面的程序,判斷哪些訪問可能會導致 數(shù)據(jù)Cache失效。然后,加入預取指令以減少失 效。最后,計算所執(zhí)行的預取指令的條數(shù)以及通 過預取避免的失效次數(shù)。假定: (1) 我們用的是一個容量為8KB、塊大小為 16B的直接映象Cache,它采用寫回法并 且按寫分配。 (2) a、b分別為3100(3行100列)和1013 的雙精度浮點數(shù)組,每個元素都是8個 字節(jié)。當程序開始執(zhí)行時,這些數(shù)據(jù)都 不在Cache內。,for (i0 ; i 3 ; ii1 ) for (j0 ; j 100 ; jj1 ) aijbj0bj10;,解: (1) 計算過程 (2) 實效情況 總的失效次數(shù)251次 (3) 改進后的程序,for (j0,j100;jj1) prefetch (bj70); /* 預取7次循環(huán)后所需的b(j ,0 ) */ prefetch (a0j7); /* 預取7次循環(huán)后所需的a(0,j ) */ a0jbj 0 * b j10 for (i1; i 3; ii1) for (j0; j 100; jj1) prefetch(aij7); /* 預取7次循環(huán)后所需的a(i , j ) */ aijbj0 * bj10; ,例 在以下條件下,計算例5.8中所節(jié)約的時間: (1) 忽略指令Cache失效,并假設數(shù)據(jù)Cache 無沖突失效和容量失效。 (2) 假設預取可以被重疊或與Cache失效重 疊執(zhí)行,從而能以最大的存儲帶寬傳送 數(shù)據(jù)。 (3) 不考慮Cache失效時,修改前的循環(huán)每7 個時鐘周期循環(huán)一次。修改后的程序中,,失效情況 總的失效次數(shù)19次,解: 修改前: 循環(huán)時間3007 2100 失效開銷2515012550/14650 21001255014650,第一個預取循環(huán)每9個時鐘周期循環(huán)一次, 而第二個預取循環(huán)每8個時鐘周期循環(huán)一 次(包括外層for循環(huán)的開銷)。 (4) 一次失效需50個時鐘周期。,修改后: 循環(huán)時間100920082500 失效時間1950950 25009503450 加速比14650/34504.2,編譯器優(yōu)化,2KB Cache: 降低50 8KB Cache:降低75%,1. 基本思想,在編譯時,對程序中的指令和數(shù)據(jù)進行重新組織,以降低Cache失效率。,2. McFaring 發(fā)現(xiàn):通過對指令進行重新排序,可有效地降低指令Cache的失效率。,3. 數(shù)據(jù)對存儲位置的限制比指令的少,因此 更便于優(yōu)化。 通過把數(shù)據(jù)重新組織,使得在一塊數(shù) 據(jù)被從Cache替換出去之前,能最大限度 利用其中的數(shù)據(jù)(訪問次數(shù)最多) (1) 數(shù)組合并 舉例: /* 修改前 */ int val SIZE; int key SIZE;,(2) 內外循環(huán)交換 舉例: /* 修改前 */ for (j0 ;j100 ;jj1) for (i0 ;i5000 ;ii1) xij2*xij;,/* 修改后 */ struct merge int val ; int key ; ; struct merge merged_arraysize;,(3) 循環(huán)融合 舉例: /* 修改前 */ for (i0 ; iN ;ii1) for (j0 ; jN ; jj1) aij1/bij*cij;,/* 修改后 */ for (i0 ;i100 ;ii1) for (j0 ;j 000 ;jj1) xij2*xij;,/* 修改后 */ for (i0 ;i N ;ii1) for (j0 ;j N ;jj1) aij1/bij*cij; dijaijcij; ,for (i0 ;iN ;ii1) for (j0 ; jN ;jj1) dijaijcij;,(4)分塊 把對數(shù)組的整行或整列訪問改為按塊進行。,舉例: /* 修改前 */ for (i0; i N; ii1) for (j0; j N; jj1) r0; for (k0; k N; kk1) rryik*zkj; xijr; ,計算過程 失效次數(shù):2N3N2,/* 修改后 */ for (jj0; jj N; jjjj1) for (kk0; kk N; kkkk1) for (i0; i N; ii1) for (jjj; j min(jjB1,N); jj1) r0; for (kkk; k min(kkB1,N); kk1) rryik*zkj; xijxijr; ,失效次數(shù):2N3 /B N2,讓讀失效優(yōu)先于寫,減少Cache失效開銷,1. Cache中的寫緩沖器導致對存儲器訪問的 復雜化,2. 解決問題的方法(讀失效的處理) 推遲對讀失效的處理 (缺點:讀失效的開銷增加,如50) 檢查寫緩沖器中的內容,3. 在寫回法Cache中,也可采用寫緩沖器,子塊放置技術,1. 為減少標識的位數(shù),可采用增加塊大小的 方法,但這會增加失效開銷,故應采用子 塊放置技術。,2. 子塊放置技術:把Cache塊進一步劃分為更 小的塊(子塊),并給每個子塊賦予一位有 效位,用于指明該子塊中的數(shù)據(jù)是否有效。 Cache與下一級存儲器之間以子塊為單位傳 送數(shù)據(jù)。但標識仍以塊為單位。,請求字處理技術,1. 請求字 從下一級存儲器調入Cache的塊中,只有 一個字是立即需要的。這個字稱為請求字。,2. 應盡早把請求字發(fā)送給CPU 盡早重啟動:調塊時,從塊的起始位置開 始讀起。一旦請求字到達,就立即發(fā)送給 CPU,讓CPU繼續(xù)執(zhí)行。 請求字優(yōu)先:調塊時,從請求字所在的位 置讀起。這樣,第一個讀出的字便是請求 字。將之立即發(fā)送給CPU。,3. 這種技術在以下情況下效果不大: Cache塊較小 下一條指令正好訪問同一Cache塊的另 一部分,非阻塞Cache技術,1. 非阻塞Cache:Cache失效時仍允許CPU進行 其它的命中訪問。即允許“失效下命中”。,2. 進一步提高性能:“多重失效下命中” “失效下失效” (存儲器必須能夠處理多個失效),3. 重疊失效個數(shù)對平均訪問時間的影響,非阻塞Cache平均存儲器等待時間 與阻塞Cache的比值,1,2,浮點程序,76,51,64,39,整數(shù)程序,81,78,78,重疊失效個數(shù),對于圖所描述的Cache,在兩路組相聯(lián)和“一次失效下命中”這兩種措施中,哪一種對浮點程序更重要?對整數(shù)程序的情況如何? 假設8KB數(shù)據(jù)Cache的平均失效率為: 對于浮點程序,直接映象Cache為11.4%,兩路組相聯(lián)Cache為10.7%; 對于整數(shù)程序,直接映象Cache為7.4%,兩路組相聯(lián)Cache為6.0%。并且假設平均存儲器等待時間是失效率和失效開銷的積,失效開銷為16個時鐘周期。,對于浮點程序,平均存儲器等待時間為: 失效率直接映象失效開銷11.4%161.82 失效率兩路組相聯(lián)失效開銷10.7%161.71 1.71/1.820.94,對于整數(shù)程序: 失效率直接映象失效開銷7.4 %161.18 失效率兩路組相聯(lián)失效開銷6.0 %16 0.96 0.96/1.18=0.81,解:,采用兩級Cache,1. 應把Cache做得更快?還是更大? 答案:二者兼顧,再增加一級Cache 第一級Cache(L1)小而快 第二級Cache(L2)容量大,2. 性能分析 平均訪問時間 命中時間L1失效率L1失效開銷L1 命中時間L1失效率L1 (命中時間L2失效率L2失效開銷L2),3. 局部失效率與全局失效率 局部失效率該級Cache的失效次數(shù)/到達 該級Cache的訪問次數(shù) 例如:上述式子中的失效率L2 全局失效率該級Cache的失效次數(shù)/CPU 發(fā)出的訪存的總次數(shù) 全局失效率L2失效率L1失效率L2 評價第二級Cache時,應使用全局失效率 這個指標。,假設在1000次訪存中,第一級Cache失效40次, 第二級Cache失效20次。試問:在這種情況下,該 Cache系統(tǒng)的局部失效率和全局失效率各是多少? 第一級Cache的失效率(全局和局部)是40/1000, 即4%;第二級Cache的局部失效率是20/40,即50%, 第二級Cache的全局失效率是20/1000,即2%。,4. 當?shù)诙塁ache比第一級Cache大得多時,兩 級Cache的全局失效率與容量和第二級Cache 相同的單級Cache的失效率非常接近。,5. 第二級Cache的參數(shù) 第二級Cache不會影響CPU的時鐘頻率, 因此其設計有更大的考慮空間。 兩個問題: 能否降低CPI中的平均訪存時間部分? 成本是多少? (1) 容量 第二級Cache的容量一般比第一級的 大許多,如512KB。,(2) 相聯(lián)度 第二級Cache可采用較高的相聯(lián)度或偽相聯(lián)方法,例 給出有關第二級Cache的以下數(shù)據(jù): 兩路組相聯(lián)使命中時間增加10%CPU時鐘周期 對于直接映象,命中時間L210個時鐘周期 對于直接映象,局部失效率L225% 對于兩路組相聯(lián),局部失效率L220% 失效開銷L250個時鐘周期 試問第二級Cache的相聯(lián)度對失效開銷的影響如何?,對于一個直接映象的第二級Cache來說,第一級Cache的失效開銷為: 失效開銷直接映象,L1 1025%5022.5個時鐘周期 對于兩路組相聯(lián)第二級Cache來說,命中時間增加了10%(0.1)個時鐘周期,故第一級Cache的失效開銷為: 失效開銷兩路組相聯(lián),L1 10.120%5020.1個時鐘周期 把第二級Cache的命中時間取整,得10或11,則:,失效開銷兩路組相聯(lián),L1 1020%5020.0個時鐘周期 失效開銷兩路組相聯(lián),L1 1120%5021.0個時鐘周期 故對于第二級Cache來說,兩路組相聯(lián)優(yōu)于直接映象。,(3) 塊大小 第二級Cache可采用較大的塊, 如 64、128、256字節(jié)。 為減少平均訪存時間,可以讓容量較小的第一級Cache采用較小的塊,而讓容量較大的第二級Cache采用較大的塊。,5.5 減少命中時間,2. 應使Cache足夠小,以便可以與CPU一起放 在同一塊芯片上。,命中時間直接影響到處理器的時鐘頻率。在 當今的許多計算機中,往往是Cache的訪問時間 限制了處理器的時鐘頻率。,1. 硬件越簡單,速度就越快;,1. 虛擬Cache 訪問Cache的索引以及Cache中的標識都是虛擬地址(一部分)。 2. 并非都采用虛擬Cache(為什么?) 3. 虛擬Cache的清空問題,虛擬Cache,解決方法:在地址標識中增加PID字段 (進程標識符) 三種情況下失效率的比較 單進程,PIDs,清空 PIDs與單進程相比:0.30.6 PIDs與清空相比: 0.64.3%,4. 同義和別名 解決方法:反別名法,頁著色 5. 虛擬索引物理標識 優(yōu)點:兼得虛擬Cache和物理Cache的好處 局限性:Cache容量受到限制 (頁內位移) Cache容量頁大小相聯(lián)度 6. 舉例:IBM3033的Cache 頁大小4KB 相聯(lián)度16,Cache容量164KB64KB 7. 另一種方法:硬件散列變換,頁地址 地址標識,頁內位移,索 引,塊內位移,31,12 11,0,寫操作流水化,1. 主存的主要性能指標:延遲和帶寬 2. 以往: Cache主要關心延遲,I/O主要關心帶寬 現(xiàn)在:Cache關心兩者 下面討論幾種能提高主存性能的存儲器組織技術在下面的討論中,我們以處理Cache失效為例來說明各種存儲器組織結構的好處。,主 存, 增加Cache塊大小能利用主存帶寬增加所帶 來的好處。在以下的討論中,我們假設基本存儲器結構的性能為:,送地址需4個時鐘周期 每個字的訪問時間為24個時鐘周期 傳送一個字的數(shù)據(jù)需4個時鐘周期, 為了減少失效開銷TM,應該:,減少主存延遲 提高主存帶寬,如果Cache大小為4個字,則: 失效開銷4(4244) 432128(時鐘周期) 帶寬16/1280.0125(字節(jié)/時鐘周期),增加存儲器的寬度 性能舉例 (參照前面的假設) 當寬度為4個字時: 失效開銷132(周期) 帶寬0.5(字節(jié)/周期), 缺點:,增加CPU和存儲器之間的連接通路的寬度 CUP和Cache之間有一個多路選擇器 擴充主存的最小增量增加了相應的倍數(shù) 寫入有可能變得復雜, 存儲器的各個體一般是按字交叉的 交叉存儲器(interleaved memory) 通常是指存儲器的各個體是按字交叉的。 字交叉存儲器非常適合于處理: Cache讀失效,寫回法Cache中的寫回,性能舉例:(參照前面的假設) 失效開銷4244444(周期) 帶寬0.4(字節(jié)/周期),假設四個存儲體的地址是在字一級交叉的,即 存儲體0中每個字的地址對4取模都是0,體1中每個 字的地址對4取模都是1,依此類推。,0 4 8 12,地址 體0,1 5 9 13,地址 體1,2 6 10 14,地址 體2,3 7 11 15,地址 體3,假設某臺機器的特性及其Cache的性能為: 塊大小為1個字 存儲器總線寬度為1個字 Cache失效率為3 % 平均每條指令訪存1.2次 Cache失效開銷為32個時鐘周期(和上面相同) 平均CPI(忽略Cache失效)為2 試問多體交
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)車輛運營方案(3篇)
- DB23-T2891-2021-冷杉梢斑螟防治技術規(guī)程-黑龍江省
- DB23-T2861-2021-匈牙利丁香扦插育苗技術規(guī)程-黑龍江省
- 醫(yī)院收支運轉管理制度
- 地鐵計劃統(tǒng)計管理制度
- 公司營銷獎罰管理制度
- 工廠車間溯源管理制度
- 國企網絡輿情管理制度
- 工程公司消防管理制度
- 稻米公園服務方案(3篇)
- 《養(yǎng)老護理員》-課件:老年人衛(wèi)生、環(huán)境、食品安全防護知識
- 健康體檢科(中心)規(guī)章制度匯編
- 2022年7月浙江省普通高中學業(yè)水平考試語文試題(原卷版)
- DB11-T 2207-2023 市政橋梁工程數(shù)字化建造標準
- 山東省初中學業(yè)水平考試歷史試題與答案解析(共四套)
- 人工智能在視頻分析中的應用
- 維護和塑造國家安全
- 公開課三角形面積課件
- 管廊施工方案范本
- 追及和相遇問題專題
- 北師大版小學數(shù)學二年級下冊第7單元《奧運開幕》練習試題
評論
0/150
提交評論