計算機體系結構---存儲系統3

1. 存儲系統性能量化

1.1 存儲系統層次結構

CPU → M1 → M2 ······ Mn
訪問時間T: T1 < T2 < ······ Tn
容量S:S1 < S2 < ······ Sn
平均每位價格C:C1 < C2 < ······ Cn
整個系統的平均訪問時間接近M1的訪問時間,容量和平均每位價格接近Mn的。

1.2 命中率和不命中率

以二級存儲系統爲例(只有M1和M2)
命中率H:CPU訪問存儲系統時,在M1中找到所需信息的概率。
H=N1N1+N2H = \frac{{{N_1}}}{{{N_1} + {N_2}}}
(N1爲訪問M1的次數,N2爲訪問M2的次數)
不命中率F:F = 1 - H

1.3 平均訪問時間

  1. 當命中時,訪問時間爲T1,命中概率爲H
  2. 不命中時,訪問時間(從向M2發出訪問請求到把整個數據塊調入M1中所需的時間)爲TM = T2 + TB (TB是傳送一個信息塊所需的時間)
    平均訪問時間TA:
    TA=HT1+(1H)(T1+TM){T_A} = H \cdot {T_1} + (1 - H)({T_1} + {T_M})

2. Cache

2.1 多級Cache

  1. 受延遲的影響,越近越快,遠了快不了(面積大也快不了)
  2. 越快的存儲器越小、越貴
  3. L1-$(1級緩存):32KB-128KB(而且數據和指令分開),與處理器速度匹配
  4. L2-$(2級緩存):4MB-8MB(平均每核2MB)
  5. LLC(3級緩存):38.5MB
  6. DDR(內存):2G-16GB

2.2 映象規則及其轉換

  1. 全相聯映象
    (1)映象規則:①主存與緩存分成相同大小的數據塊 ②主存的任意一塊可以映象到Cache中的任意一塊。
    (2)特點:①空間利用率最高 ,衝突的概率也最低 ,命中率高②實現最爲複雜,成本高,速度低,需要比較每個Cache塊是否被使用
  2. 直接相聯映象
    (1)映象規則:①主存儲器中一塊只能映象到Cache的一個特定的塊中。
    Cache地址的計算公式: b = B mod Cb(b是Cache塊號,B是主存塊號,Cb是Cache塊數)
    Cache地址與主存儲器地址的低位部分完全相同
    ②對主存進行分區,每個區的數據塊數量和Cache中數據塊的數量相同。③每個區中的數據塊和Cache中數據塊一一對應放置
    (2)特點:①硬件實現很簡單不需要相聯訪問存儲器 ②訪問速度也比較快,實際上不需要進行地址變換 ③塊的衝突率比較高,空間利用率低 ,命中率低
  3. 組相聯映象
    (1)映象規則:①主存和Cache按同樣大小劃分成塊和組 ②主存和Cache的組之間採用直接映象方式 ③在兩個對應的組內部採用全相聯映象方式 ④用主存地址中的組號G去塊表中查找,區號和塊號是否命中,命中就可以找到該數據在Cache中組內塊號,然後合成Cache地址進行數據查找
    (2)特點:①衝突概率比較低 ②利用率大幅度提高 ,速度快③失效率明顯降低 ④實現難度和造價要比直接映象方式高

2.3 寫策略與替換算法


  1. (1)寫穿(Write through):寫cache,同時寫內存
    特點:①一致性好 ②速度慢
    (2)寫回(write back):只寫cache,只有被替換時才寫回內存
    特點:①速度快 ②出錯率高一倍
  2. 替換算法
    (1)隨機法:(Random,RAND)
    (2)先進先出法(First-In First-Out,FIFO)
    (3)近期最少使用法(Least Recently Used,LRU)
    (4)最久沒有使用法(Least Frequently Used,LFU)

2.4 降低Cache不命中率

  1. 不命中類型
    (1)強制性不命中(Compulsory miss)
    當第一次訪問一個塊時,該塊不在Cache中,需從下一級存儲器中調入Cache。(冷啓動不命中,首次訪問不命中)(增加塊大小,硬件預取)
    (2)容量不命中(Capacity miss)
    如果程序執行時所需的塊不能全部調入Cache中,則當某些塊被替換後,若又重新被訪問,就會發生不命中。(增加Cache容量)
    (3)衝突不命中(Conflict miss)
    在組相聯或直接映象Cache中,若太多的塊映象到同一組(塊)中,則該組中某個塊被別的塊替換(即使別的組或塊有空閒位置)然後又被重新訪問的情況。(碰撞不命中,干擾不命中)(提高相聯度)
  2. 不命中的特點
    (1)相聯度越高,衝突不命中就越少
    (2)強制性不命中和容量不命中不受相聯度的影響
    (3)強制性不命中不受Cache容量的影響,但容量不命中卻隨着容量的增加而減少
  3. 降低Cache不命中率
    (1)增加Cache大小
    ①對於給定的Cache容量,當塊大小增加時,不命中率開始是下降,後來反而上升了。
    ②一方面它減少了強制性不命中,另一方面,由於增加塊大小會減少Cache中塊的數目,所以有可能會增加衝突不命中。
    ③Cache容量越大,使不命中率達到最低的塊大小就越大。
    ④增加塊大小會增加不命中開銷
    (2)增加Cache容量
    ①最直接的方法 ② 增加成本 ③可能增加命中時間 ④在片外Cache中用得比較多
    (3)提高相聯度
    ①採用相聯度超過8的方案的實際意義不大
    ②提高相聯度是以增加命中時間爲代價
    ③容量爲N的直接映象Cache的不命中率和容量爲N/2的兩路組相聯Cache的不命中率差不多相同。
    (4)僞相聯cache
    ①命中時間小 ②不命中率低
    ③在邏輯上把直接映象Cache的空間上下平分爲兩個區。對於任何一次訪問,僞相聯Cache先按直接映象Cache的方式去處理。若命中,則其訪問過程與直接映象Cache的情況一樣。若不命中,則再到另一區相應的位置去查找。若找到,則發生了僞命中,否則就只好訪問下一級存儲器。
    (5)硬件預取
    ①指令和數據都可以預取
    ②預取內容既可放入Cache,也可放在外緩衝器中
    ③指令預取通常由Cache之外的硬件完成
    (6)編譯器控制的預取
    ①寄存器預取:把數據取到寄存器中。
    ②Cache預取:將數據取到Cache中。
    ③故障性預取:在預取時,若出現虛地址故障或違反保護權限就會發生異常
    ④非故障性預取:在遇到這種情況時則不會發生異常,因爲這時它會放棄預取,轉變爲空操作。
    (7)編譯器優化
    程序代碼和數據重組
    (8)“犧牲"cache
    ①一種能減少衝突不命中次數而又不影響時鐘頻率的方法
    ②基本思想:在Cache和它從下一級存儲器調數據的通路之間設置一個全相聯的小Cache,稱爲“犧牲”Cache(Victim Cache)。用於存放被替換出去的塊(稱爲犧牲者),以備重用。
    ③對於減小衝突不命中很有效,特別是對於小容量的直接映象數據Cache,作用尤其明顯

2.5 減少Cache不命中開銷

  1. 採用兩級Cache
    (1)第一級Cache(L1)小而快
    (2)第二級Cache(L2)容量大
  2. 讓讀不命中優先於寫
  3. 寫緩衝合併
  4. 請求字處理技術
  5. 非阻塞Cache技術
    例題: 考慮某兩級cache,第一級爲L1,第二級爲L2,兩級cache的全局不命中率分別是4%和2%,假設L2的命中時間是10個時鐘週期,L2的不命中開銷是100時鐘週期,L1的命中時間是1個時鐘週期,平均每條指令訪存1.5次。問:每條指令的平均停頓時間是多少個時鐘週期?
    L1: 全局不命中率 = 局部不命中率 = 4%
    L2:全局不命中率 = 2%, 局部不命中率 = 2% ÷ 4% = 50%(L2全局 = L1全局 × L2局部)(L3全局 = L1全局 × L2局部 × L3局部)
    平均訪存時間=L1命中時間+L1不命中率 ×(L2命中時間+ L2局部不命中率 × L2不命中開銷) =1+4%×(10+50%×100)= 3.4
    每次訪存的平均停頓時間 = 3.4 - 1 = 2.4
    每條指令的平均停頓時間=2.4×1.5=3.6個時鐘週期

2.6 減少Cache命中時間

  1. 採用容量小、結構簡單的Cache
  2. 採用虛擬Cache
  3. Cache訪問流水化
  4. 蹤跡Cache

2.7 並行主存系統

並行主存系統是在一個訪存週期內能並行訪問多個存儲字的存儲器
提高主存帶寬:

  1. 單體多字存儲器
    能提高m(字數)倍,實現簡單, 訪存效率不高
  2. 多體交叉存儲器
    由多個單字存儲體構成,每個體都有自己的地址寄存器以及地址譯碼和讀/寫驅動等電路。
    編址方式:①高位交叉編址 ②低位交叉編址(有效地解決訪問衝突問題)

2.8 虛擬存儲器

  1. 原理
    藉助於磁盤等輔助存儲器來擴大主存容量,使之爲更大或更多的程序所使用。
    虛擬存儲器指的是主存-外存層次。以透明的方式爲用戶提供了一個比實際主存空間大得多的程序地址空間
  2. 特點
    (1)多個進程可以共享主存空間
    (2)程序員不必做存儲管理工作
    (3)採用動態再定位,簡化了程序的裝入
  3. 分類
    (1)頁式
    (2)段式
  4. 映象規則:全相聯
  5. 查找算法:頁表,段表,TLB(快表)
  6. 替換算法:近期最少使用法(Least Recently Used,LRU)
  7. 寫策略:寫回法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章