網(wǎng)站建設和網(wǎng)站搭建哪個好合肥百度推廣優(yōu)化排名
目錄
- 1.計算機存儲層次結(jié)構(gòu)
- 2.緩存相關(guān)概念
- 3.緩存組織方式
- 4.Cache回寫機制
- 5.Cache性能量化
1.計算機存儲層次結(jié)構(gòu)
計算機存儲層次結(jié)構(gòu)可以看作是一個金字塔,越靠上層,容量越小,速度越快
- L0:寄存器----CPU的寄存器保存著Cache取出的字,你要玩過單片機對這個肯定不陌生
- L1:高速緩存SRAM----L1中保存著L2取出的緩存行
- L2:高速緩存SRAM----L2中保存著L3取出的緩存行
- L3:高速緩存SRAM----L3中保存著主存中取出的緩存行,L1-L3也就是我們常說的三級緩存,用的都是SRAM芯片實現(xiàn),速度快
- L4:主存DRAM----主存保存著從本地磁盤取出的磁盤塊,用的是DRAM芯片實現(xiàn)
- L5:本地磁盤----保存著從遠程網(wǎng)絡或者服務器磁盤上取出的文件
- L6:遠程二級存儲----如web服務器
那為什么需要緩存呢?我看下面的一張圖,此圖說明了處理器的性能發(fā)展遠遠比內(nèi)存性能的發(fā)展要快,而處理器訪問內(nèi)存的速度會因為性能差太大而降低,因此出現(xiàn)了高速緩存Cache
往常的PMD(個人移動設備)的存儲結(jié)構(gòu)如下圖,都是通過CPU+Cache+Memory+Flash的形式,層級傳遞
2.緩存相關(guān)概念
- 緩存命中----當程序需要在底層次的存儲原件里面的數(shù)據(jù)的時候,發(fā)現(xiàn)在比它高層次的存儲原件中存在數(shù)據(jù),那么程序就不用去訪問底層次的存儲原件,直接訪問高層次的原件,這就叫緩存命中。舉個例子:當CPU想獲得L4層的主存中的某數(shù)據(jù)s,卻發(fā)現(xiàn)在L2Cache有數(shù)據(jù)s,這就可以直接訪問快速的L2層取得數(shù)據(jù),這就是緩存命中。
- 緩存不命中:高層中沒有想要的數(shù)據(jù),只能替換和驅(qū)逐高層次的一些塊,再去訪問。
- 緩存不命中/缺失的三種種類 (1)強制缺失:第一次訪問緩存必定不命中,因為第一次緩存里面是空的(2)容量缺失:緩存不能包含程序運行期間所需要的全部塊,容量已經(jīng)滿了(3)沖突缺失:多個塊映射到一個塊中的組中,明明有空位給你緩存你卻不要去空位,偏要擠出其他塊。
3.緩存組織方式
高速緩存一般被組織成這樣的情形:
①高速緩存分為若干個組
②組又分為若干個行
③行包含了數(shù)據(jù)塊、有效位、標記位
④可以用向量(S,E,B,m)來表示高速緩存的組織情況
- 直接相聯(lián)高速緩存:根據(jù)每個組的高速緩存行數(shù)E, 高速緩存被分為不同的類。每個組只有一行(E = 1)的高速緩存稱為直接映射高速緩存。
- 組相聯(lián)高速緩存:直接映射高速緩存很容易出現(xiàn)沖突不命中的情況,因為每個組只有一行。組相聯(lián)高速緩存放松了這條限制,所以每個組都保存有多于一個的高速緩存行。一個1<E<C/B的高速緩存通常稱為E路組相聯(lián)高速緩存。
- 全相聯(lián)高速緩存:全相聯(lián)高速緩存是由一個包含所有高速緩存行的組組成的(只有一個組)
4.Cache回寫機制
①兩種寫入策略
- 寫直達:信息被寫入緩存的過程中同時寫入低一級的存儲器的塊
- 寫回:信息被寫入緩存,只有塊被替換踢掉的時候才被寫回低一級存儲器進行更新
②兩種寫的比較
- 寫直達雖然占了很多帶寬(通過寫緩沖區(qū)減少停頓),但是保持了數(shù)據(jù)一致性,緩存永遠是最新的
- 寫回策略少帶寬,節(jié)省功耗,但是在一致性方面有點問題
③寫缺失時采用的兩種策略
- 寫分配:如果寫缺失,把寫缺失的塊緩存進來,然后再進行寫命中時的操作(通常跟寫回搭配)
- 非寫分配:直接修改低一級的存儲器(通常跟寫直達搭配)
其實說白了還是要保證Cache一致性的問題
5.Cache性能量化
①一些概念
- 缺失率:一次訪問存儲器缺失的概率
- 缺失數(shù):一條指令缺失的概率
- 相互關(guān)系:缺失數(shù) = 缺失率*存儲器訪問指令數(shù)在指令數(shù)的占比(IC)
- 命中時間:緩存命中的時間
- 缺失代價:將塊從存儲器讀取到緩存所需要的時間
②重要公式
存儲器的平均訪問時間 = 命中時間 + 缺失率 * 缺失代價
③6個基本優(yōu)化方案
根據(jù)上述公式提出優(yōu)化方案:
- 增大塊的大小降低缺失率(可能增加沖突缺失,到后面會增加缺失率,也可能增加缺失代價)
- 增大緩存以降低缺失率(延長命中時間,一般采用在片外緩存)
- 提高相聯(lián)度以降低缺失率(減小沖突缺失,但會延長命中時間)
- 采用多級緩存降低缺失代價(市面處理器基本上就是多級緩存)
- 使讀缺失的優(yōu)先級高于寫缺失,以降低缺失代價
- 避免索引期間進行地址轉(zhuǎn)換,以縮短命中時間(跟虛擬內(nèi)存相關(guān))