[計組 notes] Chapter 3 儲存系統

young_cr7發表於2020-11-11

Chapter 3 儲存系統


3.1 儲存器介紹

1 層次化結構
  1. 儲存器的層次化結構

    1)CPU—暫存器—Cache(高速緩衝儲存器)—main memory(主存)—disk(輔存)—磁帶、光碟(外存)

    ​ 速度由快到慢,容量由小到大,價格由高到低

    2)Cache-主存層:硬體自動完成,解決主存與CPU速度不匹配的問題

    主存-輔存層:硬體+作業系統,通過頁面置換完成,輔存的資料要調入主存後才能被CPU使用,實現 虛擬儲存系統,解決主存容量不足的問題

2 分類
  1. 儲存器的分類

    1)按儲存介質分類

    • 半導體儲存器:主存、Cache
    • 磁表面儲存器:磁碟、磁帶
    • 光儲存器

    2)按存取方式分類

    按地址訪問
    • 隨機存取儲存器Random Access Memory, RAM:讀寫時間與儲存單元的物理位置無關
    • 順序存取儲存器:儲存時間取決於儲存單元的物理位置,如磁帶
    • 直接存取儲存器:介於RAM和順序存取儲存器之間,如機械硬碟、磁碟
    按內容訪問
    • 相聯儲存器:按內容訪問的儲存器,如快表

    3)按資訊可更改性分類

    • 讀寫儲存器
    • 只讀儲存器ROM

    4)按資訊可儲存性

    • 斷電後,儲存資訊消失:易失性儲存器,如主存、Cache
    • 斷電後,資訊依然保持:非易失性儲存器,如磁碟、光碟
    • 資訊讀出後,原資訊被破壞:破壞性讀出,如DRAM
    • 資訊讀出後,原資訊不被破壞:非破壞性讀出,如SRAM
3 效能指標
  1. 效能指標

    1)儲存容量=儲存字數×字長= 2 M A R 位 數 × M D R 位 數 2^{MAR位數}×MDR位數 2MAR×MDR

    2)單位成本=成本/儲存容量

    3)傳輸速率=資料寬度/儲存週期

    4)儲存週期Tm=存取時間Ta+恢復時間

    • 對於DRAM,恢復時間是存取時間的好幾倍(電容作為儲存元件,恢復時間長)
    • 對於SRAM,恢復時間較短(雙穩態觸發器作為儲存元件)

3.2 主儲存器的基本構成

4 儲存器晶片的基本原理
  1. 儲存器晶片的基本原理

    1)儲存器晶片包含儲存體、MAR、MDR,儲存體由多個儲存單元組成,儲存單元由多個儲存元組成

    2)單個儲存元的讀寫

    • 讀:接通MOS管,讀得高電平則為"1",低電平則為"0"
    • 寫:寫入"1",即加高電平並接通MOS,給電容充電

    3)譯碼器

    n位MAR經譯碼器產生 2 n 2^n 2n字選線,連線到 2 n 2^n 2n個儲存單元

    4)控制電路

    控制電路包含片選線、讀控制線、寫控制線,控制電路與譯碼器和MAR相連

3.3 SRAM、DRAM和ROM

5 SRAM和DRAM

SRAM:Static Random Access Memory,如主存

DRAM: Dynamic Random Access Memory,如Cache

  1. DRAM與SRAM的儲存元件

    1)DRAM使用MOS管的柵極電容儲存資訊

    讀出資訊後電容放電,屬於破壞性讀出,需要重寫,恢復時間長

    2)SRAM使用雙穩態觸發器儲存資訊,當儲存1時A高電平B低電平,儲存0時A低電平B高電平

    讀出資訊時觸發器仍保持穩定,非破壞性讀出,無需重寫

  2. 對比

    屬性SRAMDRAM
    儲存元件雙穩態觸發器電容
    破壞性讀出
    執行速度
    整合度
    發熱量
    儲存成本
    需要重新整理
    送行列地址同時分兩次送
  3. DRAM的重新整理

    即使不讀出,電容內的電荷只能維持約2ms,需要重新整理

    1)週期:2ms

    2)拆分為行列地址,每次重新整理1行儲存單元

    拆分為行列地址能夠簡化佈線,若地址線有20根,則不拆分時字選線需要 2 20 2^{20} 220根,拆分為行列地址後,只需要 2 11 2^{11} 211根字選線,其中 2 10 2^{10} 210根為行字選線, 2 10 2^{10} 210根為列字選線

    3)如何重新整理:硬體支援

    4)何時重新整理:分散重新整理、集中重新整理和異地重新整理

  4. DRAM的地址線複用技術

    本來有n根地址線,將地址拆分為行地址和列地址,地址線只需要n/2根。地址線後跟行地址緩衝器列地址緩衝器先送行地址,再送列地址

6 ROM
  1. ROM只讀儲存器

    1)Mask ROM(MROM) 掩模式只讀儲存器:生產後無法重寫

    2)Programmable ROM(PROM) 可程式設計只讀儲存器:生產後可以寫入一次

    3)Erasable PROM(EPROM) 可擦除只讀儲存器:可分為UVEPROM紫外線,EEPROM電擦除

    4)Flash Memory 快閃記憶體:U盤、SD卡,寫比讀慢(先擦除後寫入)

    5)Solid State Memory(SSD) 固態硬碟:由控制單元+Flash晶片構成

  2. 計算機內的重要ROM

    • 主機板上的BIOS晶片:儲存自舉裝入程式,引導裝入作業系統
    • 此ROM也被看作是主存的一部分,統一編制

3.4 主儲存器與CPU的連線

  1. 單塊儲存晶片與CPU的連線

    1)字擴充套件:擴充套件主存字數(即擴充套件地址匯流排寬度

    2)位擴充套件擴充套件資料匯流排寬度,使其大於儲存晶片字長

    3)現代計算機,MAR與MDR邏輯上位於主存,物理上整合在CPU內。MDR經資料匯流排與主存相連,MAR經地址匯流排與主存相連,CPU還有讀/寫訊號線分別與主存的讀/寫控制線相連

7 位擴充套件
  1. 位擴充套件:增加主存的儲存字長

    將多個晶片的地址端、片選端和讀寫控制端相應並聯資料端分別引出接到資料匯流排的不同位上

8 子擴充套件
  1. 字擴充套件:增加主存的儲存字數

    將多個晶片的地址端、讀寫控制端、資料端並聯,片選端接到地址匯流排中空閒的位上,通過片選訊號區分不同晶片的地址範圍

    1)線選法:n條地址線產生n個片選訊號,與n個晶片相連

    2)譯碼片選法:n條地址線產生 2 n 2^n 2n個片選訊號,與 2 n 2^n 2n個晶片相連,如3-8譯碼器

3.5 雙埠RAM和多模組儲存器

  1. 目的:提高主存速度

    1)對於多CPU計算機,使用雙口RAM

    2)對於單CPU,使用多模組儲存器

9 雙口RAM
  1. 雙埠RAM:優化多CPU訪問一根記憶體條的速度

    1)CPU1、CPU2分別通過兩組不同的資料匯流排、地址匯流排和資料匯流排連線到雙埠RAM的兩個埠

    2)讀寫情況

    • 兩個埠對不同地址單元讀寫:正常
    • 兩個埠對同一地址單元讀:正常
    • 兩個埠對同一個地址單元寫:寫錯誤,暫時關閉一個埠,待另一個埠訪問後再重新開啟
    • 兩個埠對同一個地址單元,1讀1寫:讀錯誤
10 多模組儲存器
  1. 多體並行儲存器:如多個記憶體條

    1)編址方式

    • 高位交叉編址:體號+體內地址
    • 低位交叉編址:體內地址+體號

    2)地位交叉編址節省訪問時間

    每個儲存體存取週期為T,存取時間為r,T=4r,連續訪問n個儲存字

    1 使用高位交叉編址:訪問時間為nT

    2 使用低位交叉編址:訪問時間為T+(n-1)r

    3)當進行**連續訪問(如訪問陣列)**時,使用低位交叉編址將大大提高訪存速度

    4)為了充分利用各模組的效能,各模組最好都有相同的容量和存取速度,各模組都有獨立的讀寫控制電路、地址暫存器和資料暫存器

  2. 單體多字儲存器

    1)只有一個儲存體,每次讀取m個字,匯流排寬度為m個字,每個儲存單元儲存m個字

    2)靈活性稍差,但速度與多體並行儲存器相似

  • 將多個記憶體條插入顏色相同的記憶體槽,即可實現低位交叉編址的多體儲存器,提高CPU訪存速度

3.6 高速緩衝儲存器Cache

  1. Cache工作原理

    整合在CPU內部,用SRAM實現,速度快、容量小

11 程式的區域性性原理
  1. 區域性性原理

    1)空間區域性性原理:最近未來要使用的資訊,很可能與現在正使用的資訊在儲存空間上是鄰近的,如陣列、順序執行的指令程式碼

    2)時間區域性性原理:在最近未來要使用的資訊,很可能是現在正使用的資訊,如迴圈

  2. Cache的效能分析

    t c t_c tc為訪問Cache所需時間, t m t_m tm為訪問一次主存所需時間,H為Cache命中率

    1)CPU先訪問Cache,未命中再訪問主存

    t = H t c + ( 1 − H ) ( t c + t m ) = t c + ( 1 − H ) t m t=Ht_c+(1-H)(t_c+t_m)=t_c+(1-H)t_m t=Htc+(1H)(tc+tm)=tc+(1H)tm

    2)同時訪問Cache和主存,Cache命中則停止訪問 faster

    t = H t c + ( 1 − H ) t m t=Ht_c+(1-H)t_m t=Htc+(1H)tm

12 塊:主存與Cache交換資料的單位
  1. 塊:主存與Cache交換資料的單位

    1)主存的地址分為塊號和塊內地址

    例:主存為4MB,將主存空間分塊,每1KB為一塊

    則主存可分為 4 M B / 1 K B = 4 K 塊 4MB/1KB=4K塊 4MB/1KB=4K,主存地址共有22位,其中塊號為12位,塊內地址為10位

    2)作業系統中,通常將主存中的一個塊稱為一頁,將Cache中的稱為

13 Cache-主存對映方式:全相聯對映、直接對映、組相聯對映
  1. Cache-主存對映方式

    1)全相聯對映:主存塊可以放在任意位置

    2)直接對映:每個塊只能放在Cache中的一個特定位置

    3)組相聯對映:Cache分組,每個塊可放到特定分組的任意位置

  2. 全相聯對映(需要n位標記+1位有效位)

    1)主存塊可以存放在任意Cache塊中

    2)Cache塊的標記+有效位用以對應主存塊,如當有效位為1,標記為1001時,該Cache塊對應主存的第9塊

    3)CPU訪存過程

    a. 對比Cache所有塊標記,若匹配,且其有效位為1則命中,訪問塊內對應的儲存單元

    b. 否則,訪問主存

  3. 直接對映(需要n-m位標記+1位有效位)

    1)主存塊只能儲存下列Cache塊中

    C a c h e 塊 號 = 主 存 塊 號 % C a c h e 塊 數 Cache塊號=主存塊號 \% Cache塊數 Cache=%Cache

    2)缺點:靈活性差,即使Cache中有空閒的塊也無法利用

    3)優點

    • 對Cache塊數取餘,相當於只保留主存塊號後m位作為Cache塊號
    • 若主存有 2 n 2^n 2n塊,Cache有 2 m 2^m 2m塊,則Cache塊的標記只需要n-m位,將標記與Cache塊號拼接即得到主存塊號

    4)CPU訪存過程

    a. 確定主存塊號對應的Cache塊號,對比主存塊號前n-m位與Cache標記是否一致,及Cache有效位是否為1,若命中則讀取Cache塊中的單元

    b. 否則訪問主存

  4. 組相聯對映

    1) 所 在 分 組 = 主 存 塊 號 % C a c h e 分 組 數 所在分組=主存塊號\%Cache分組數 =%Cache

    C a c h e 分 組 數 = C a c h e 塊 數 / 每 組 塊 數 Cache分組數=Cache塊數/每組塊數 Cache=Cache/

    ​ 每組塊數為k時,稱為k路組相聯對映

    2)組數為 2 m 2^m 2m,則只需要將主存塊號取後m位即得到Cache組號,標記只需要n-m位

    3)CPU訪存過程

    a. 取主存塊號後m位確定Cache組號

    b. 在該Cache分組內一次對各塊進行對比,若標記匹配且有效位為1,則命中,訪問塊內的相應儲存單元

    c. 否則,訪問主存

  5. 三種對映方式的對比

    對映方式命中率Cache利用率速度
    全相聯對映
    直接對映
    組相連對映
14 Cache替換演算法
  1. Cache替換

    1)全相聯對映:Cache全滿了,在全域性選擇替換哪一塊

    2)直接對映:必須替換該塊,無需考慮替換演算法

    3)組相連對映:分組內滿了,需要在分組內選擇替換哪一塊

  2. Cache替換演算法:隨機演算法(RAND)、先進先出(FIFO)、近期最少使用(LRU)、最近不經常使用(LFU)

    1)隨機演算法(RAND): 若Cache已滿,則隨機選擇一塊替換

    • 優點:實現簡單
    • 缺點:沒有考慮區域性性原理,命中率低,實際效果不穩定

    2)先進先出(FIFO): 最先新增進的塊被替換

    • 優點:實現簡單,直接按Cache塊號從小到大的順序放入、替換即可
    • 缺點:沒有考慮區域性性原理

    3)Least Recently Used, LRU(效果最好)

    a. 為每一個Cache設定一個計數器,記錄Cache塊多久沒被訪問,Cache滿了替換計數值最大的Cache塊

    b. 計數器規則:新訪存的置零,其餘加1,時間複雜度O(N)

    c. 計數器規則優化:命中時,命中行的計數器置零,比它更低的計數器加1(保證計數值始終在0—N-1的範圍內)

    d. 優點:基於區域性性原理,命中率高

    4)Least Frequently Used, LFU

    a. 每一個Cache塊設定一個計數器,用於記錄每個Cache塊被訪問過幾次,Cache滿了替換計數值最小的塊

    b. 考慮了區域性性原理,但執行效果不如LRU

15 Cache寫策略:解決Cache與主存的資料一致性問題

寫命中時:全寫法、寫回法

寫不命中時:寫分配法、非寫分配法

  1. 寫命中(要寫入的資料位於Cache中)

    1)寫回法write back

    • 當CPU對Cache寫命中時,只修改Cache內容,而不立即寫入主存,只有當此塊被換出時才寫回主存
    • 增加髒位表示此塊是否被修改,換出時,只有髒位為1才將其寫入主存

    2)全寫法write through

    a. 當CPU對Cache寫命中時,必須把資料同時寫入Cache和主存

    b. 寫緩衝 write buffer:用SRAM實現的佇列,CPU對Cache寫命中時,將資料同時寫入Cache和write buffer。write buffer在專門控制電路的控制下逐一寫回主存

    c. 優缺點

    • 優點:資料一致性更好
    • 缺點:訪存次數多,速度變慢
  2. 寫不命中

    1)寫分配法write-allocate

    寫不命中時,將主存塊調入Cache,並在Cache中修改,寫分配法搭配寫回法使用

    2)非寫分配法

    寫不命中時,只寫入主存,不調入Cache,非寫分配法搭配全寫法使用

16 多級Cache
  1. 離CPU越近的Cache速度越快,容量越小;離CPU越遠的Cache速度越慢,容量越大

  2. 各級Cache之間:全寫法+非寫分配法

    Cache-主存之間:寫回法+寫分配法

3.7 虛擬儲存器

17 頁式儲存器
  1. 頁式儲存器

    1)頁式儲存:程式被分為多個頁,每個頁的大小和主存“塊”的大小相同,每個頁面可以離散地放入不同的主存塊中

    2)虛地址(邏輯地址):程式設計師看到的地址

    ​ 實地址(實體地址):實際在主存中的地址

18 頁表
  1. 頁表從邏輯頁號到主存塊號的對映

    1)頁表的每一行稱為頁表項

    2)頁表存放在記憶體,CPU查詢頁表需要進行一次訪存

  2. 地址變換過程

    1)邏輯地址分為頁號頁內地址

    2)頁號加上頁表基址儲存器中的頁表基地址,即為頁表項的地址

    3)訪問該頁表項得到主存塊號,頁內地址即為塊內地址

    4)根據主存塊號+塊內地址訪問Cache或主存

19 快表TLB
  1. 頁表+區域性性原理:增加快表TLB

    1)訪問慢表的頁表項後,將其加入快表中

    2)先在快表中查詢,未命中則在慢表(主存中的頁表)中查詢

    3)快表:採用SRAM,相聯儲存器(按內容尋訪),替換演算法和Cache相同(LFU)

  2. 訪存流程圖

Created with Raphaël 2.2.0 Start 訪問邏輯地址(頁號+頁內地址) 根據頁號查快表TLB TLB命中 根據TLB頁表項得到主存塊號 實體地址 在Cache中找主存塊副本 Cache命中 在Cache訪問資料 End 查慢表,得到主存塊號 並將頁表項複製到TLB中 yes no yes
20 虛擬儲存系統

執行程式時,之將其部分從輔存調入主存

  1. 頁式虛擬儲存器

    1)作業系統將程式分頁,每頁大小一致,因此外存、記憶體和Cache都分塊

    2)頁表包括:邏輯頁號、主存塊號、外存塊號、有效位、訪問位和髒位

    a. 外存塊號:外存塊號指示這一頁位於外存何處

    b. 有效位:=1代表已被調入主存

    c. 訪問位:為替換演算法服務,如對於LFU記錄訪問次數,對於LRU記錄上次訪問的間隔

    d. 髒位:=1時表明該塊被修改,被替換時需要寫回輔存

  2. 段式虛擬儲存器

    1)程式按功能模組拆分段,大小不一致

    2)主存不分塊

    3)段表:記錄各段在主存中的段首地址、裝入位和端長

    a. 段首地址即該段在輔存中的首地址

    b. 裝入位為1表明已被調入主存中,為0則表明未被調入主存中

  3. 段頁式虛擬儲存器:程式按邏輯結構分段,每段又分為固定大小的頁

    1)主存分塊,塊大小與頁大小相等,程式對主存的調入、調出以頁為單位

    2)每個程式有1個段表,每段有1個頁表

    3)虛擬地址包含:段號+段內頁號+頁內地址

相關文章