[計組 notes] Chapter 3 儲存系統
計算機組成原理第三章
Chapter 3 儲存系統
3.1 儲存器介紹
1 層次化結構
-
儲存器的層次化結構
1)CPU—暫存器—Cache(高速緩衝儲存器)—main memory(主存)—disk(輔存)—磁帶、光碟(外存)
速度由快到慢,容量由小到大,價格由高到低
2)Cache-主存層:硬體自動完成,解決主存與CPU速度不匹配的問題
主存-輔存層:硬體+作業系統,通過頁面置換完成,輔存的資料要調入主存後才能被CPU使用,實現 虛擬儲存系統,解決主存容量不足的問題
2 分類
-
儲存器的分類
1)按儲存介質分類
- 半導體儲存器:主存、Cache
- 磁表面儲存器:磁碟、磁帶
- 光儲存器
2)按存取方式分類
按地址訪問
- 隨機存取儲存器Random Access Memory, RAM:讀寫時間與儲存單元的物理位置無關
- 順序存取儲存器:儲存時間取決於儲存單元的物理位置,如磁帶
- 直接存取儲存器:介於RAM和順序存取儲存器之間,如機械硬碟、磁碟
按內容訪問
- 相聯儲存器:按內容訪問的儲存器,如快表
3)按資訊可更改性分類
- 讀寫儲存器
- 只讀儲存器ROM
4)按資訊可儲存性
- 斷電後,儲存資訊消失:易失性儲存器,如主存、Cache
- 斷電後,資訊依然保持:非易失性儲存器,如磁碟、光碟
- 資訊讀出後,原資訊被破壞:破壞性讀出,如DRAM
- 資訊讀出後,原資訊不被破壞:非破壞性讀出,如SRAM
3 效能指標
-
效能指標
1)儲存容量=儲存字數×字長= 2 M A R 位 數 × M D R 位 數 2^{MAR位數}×MDR位數 2MAR位數×MDR位數
2)單位成本=成本/儲存容量
3)傳輸速率=資料寬度/儲存週期
4)儲存週期Tm=存取時間Ta+恢復時間
- 對於DRAM,恢復時間是存取時間的好幾倍(電容作為儲存元件,恢復時間長)
- 對於SRAM,恢復時間較短(雙穩態觸發器作為儲存元件)
3.2 主儲存器的基本構成
4 儲存器晶片的基本原理
-
儲存器晶片的基本原理
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
-
DRAM與SRAM的儲存元件
1)DRAM使用MOS管的柵極電容儲存資訊
讀出資訊後電容放電,屬於破壞性讀出,需要重寫,恢復時間長
2)SRAM使用雙穩態觸發器儲存資訊,當儲存1時A高電平B低電平,儲存0時A低電平B高電平
讀出資訊時觸發器仍保持穩定,非破壞性讀出,無需重寫
-
對比
屬性 SRAM DRAM 儲存元件 雙穩態觸發器 電容 破壞性讀出 否 是 執行速度 快 慢 整合度 低 高 發熱量 大 小 儲存成本 高 低 需要重新整理 否 是 送行列地址 同時 分兩次送 -
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)何時重新整理:分散重新整理、集中重新整理和異地重新整理
-
DRAM的地址線複用技術
本來有n根地址線,將地址拆分為行地址和列地址,地址線只需要n/2根。地址線後跟行地址緩衝器和列地址緩衝器,先送行地址,再送列地址
6 ROM
-
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晶片構成
-
計算機內的重要ROM
- 主機板上的BIOS晶片:儲存自舉裝入程式,引導裝入作業系統
- 此ROM也被看作是主存的一部分,統一編制
3.4 主儲存器與CPU的連線
-
單塊儲存晶片與CPU的連線
1)字擴充套件:擴充套件主存字數(即擴充套件地址匯流排寬度)
2)位擴充套件:擴充套件資料匯流排寬度,使其大於儲存晶片字長
3)現代計算機,MAR與MDR邏輯上位於主存,物理上整合在CPU內。MDR經資料匯流排與主存相連,MAR經地址匯流排與主存相連,CPU還有讀/寫訊號線分別與主存的讀/寫控制線相連
7 位擴充套件
-
位擴充套件:增加主存的儲存字長
將多個晶片的地址端、片選端和讀寫控制端相應並聯,資料端分別引出接到資料匯流排的不同位上
8 子擴充套件
-
字擴充套件:增加主存的儲存字數
將多個晶片的地址端、讀寫控制端、資料端並聯,片選端接到地址匯流排中空閒的位上,通過片選訊號區分不同晶片的地址範圍
1)線選法:n條地址線產生n個片選訊號,與n個晶片相連
2)譯碼片選法:n條地址線產生 2 n 2^n 2n個片選訊號,與 2 n 2^n 2n個晶片相連,如3-8譯碼器
3.5 雙埠RAM和多模組儲存器
-
目的:提高主存速度
1)對於多CPU計算機,使用雙口RAM
2)對於單CPU,使用多模組儲存器
9 雙口RAM
-
雙埠RAM:優化多CPU訪問一根記憶體條的速度
1)CPU1、CPU2分別通過兩組不同的資料匯流排、地址匯流排和資料匯流排連線到雙埠RAM的兩個埠
2)讀寫情況
- 兩個埠對不同地址單元讀寫:正常
- 兩個埠對同一地址單元讀:正常
- 兩個埠對同一個地址單元寫:寫錯誤,暫時關閉一個埠,待另一個埠訪問後再重新開啟
- 兩個埠對同一個地址單元,1讀1寫:讀錯誤
10 多模組儲存器
-
多體並行儲存器:如多個記憶體條
1)編址方式
- 高位交叉編址:體號+體內地址
- 低位交叉編址:體內地址+體號
2)地位交叉編址節省訪問時間
每個儲存體存取週期為T,存取時間為r,T=4r,連續訪問n個儲存字
1 使用高位交叉編址:訪問時間為nT
2 使用低位交叉編址:訪問時間為T+(n-1)r
3)當進行**連續訪問(如訪問陣列)**時,使用低位交叉編址將大大提高訪存速度
4)為了充分利用各模組的效能,各模組最好都有相同的容量和存取速度,各模組都有獨立的讀寫控制電路、地址暫存器和資料暫存器
-
單體多字儲存器
1)只有一個儲存體,每次讀取m個字,匯流排寬度為m個字,每個儲存單元儲存m個字
2)靈活性稍差,但速度與多體並行儲存器相似
- 將多個記憶體條插入顏色相同的記憶體槽,即可實現低位交叉編址的多體儲存器,提高CPU訪存速度
3.6 高速緩衝儲存器Cache
-
Cache工作原理
整合在CPU內部,用SRAM實現,速度快、容量小
11 程式的區域性性原理
-
區域性性原理
1)空間區域性性原理:最近未來要使用的資訊,很可能與現在正使用的資訊在儲存空間上是鄰近的,如陣列、順序執行的指令程式碼
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+(1−H)(tc+tm)=tc+(1−H)tm
2)同時訪問Cache和主存,Cache命中則停止訪問 faster
t = H t c + ( 1 − H ) t m t=Ht_c+(1-H)t_m t=Htc+(1−H)tm
12 塊:主存與Cache交換資料的單位
-
塊:主存與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-主存對映方式:全相聯對映、直接對映、組相聯對映
-
Cache-主存對映方式
1)全相聯對映:主存塊可以放在任意位置
2)直接對映:每個塊只能放在Cache中的一個特定位置
3)組相聯對映:Cache分組,每個塊可放到特定分組的任意位置
-
全相聯對映(需要n位標記+1位有效位)
1)主存塊可以存放在任意Cache塊中
2)Cache塊的標記+有效位用以對應主存塊,如當有效位為1,標記為1001時,該Cache塊對應主存的第9塊
3)CPU訪存過程
a. 對比Cache所有塊標記,若匹配,且其有效位為1則命中,訪問塊內對應的儲存單元
b. 否則,訪問主存
-
直接對映(需要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. 否則訪問主存
-
組相聯對映
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. 否則,訪問主存
-
三種對映方式的對比
對映方式 命中率 Cache利用率 速度 全相聯對映 高 高 慢 直接對映 低 低 快 組相連對映 中 中 中
14 Cache替換演算法
-
Cache替換
1)全相聯對映:Cache全滿了,在全域性選擇替換哪一塊
2)直接對映:必須替換該塊,無需考慮替換演算法
3)組相連對映:分組內滿了,需要在分組內選擇替換哪一塊
-
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與主存的資料一致性問題
寫命中時:全寫法、寫回法
寫不命中時:寫分配法、非寫分配法
-
寫命中(要寫入的資料位於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. 優缺點
- 優點:資料一致性更好
- 缺點:訪存次數多,速度變慢
-
寫不命中
1)寫分配法write-allocate
寫不命中時,將主存塊調入Cache,並在Cache中修改,寫分配法搭配寫回法使用
2)非寫分配法
寫不命中時,只寫入主存,不調入Cache,非寫分配法搭配全寫法使用
16 多級Cache
-
離CPU越近的Cache速度越快,容量越小;離CPU越遠的Cache速度越慢,容量越大
-
各級Cache之間:全寫法+非寫分配法
Cache-主存之間:寫回法+寫分配法
3.7 虛擬儲存器
17 頁式儲存器
-
頁式儲存器
1)頁式儲存:程式被分為多個頁,每個頁的大小和主存“塊”的大小相同,每個頁面可以離散地放入不同的主存塊中
2)虛地址(邏輯地址):程式設計師看到的地址
實地址(實體地址):實際在主存中的地址
18 頁表
-
頁表:從邏輯頁號到主存塊號的對映
1)頁表的每一行稱為頁表項
2)頁表存放在記憶體,CPU查詢頁表需要進行一次訪存
-
地址變換過程
1)邏輯地址分為頁號和頁內地址
2)頁號加上頁表基址儲存器中的頁表基地址,即為頁表項的地址
3)訪問該頁表項得到主存塊號,頁內地址即為塊內地址
4)根據主存塊號+塊內地址訪問Cache或主存
19 快表TLB
-
頁表+區域性性原理:增加快表TLB
1)訪問慢表的頁表項後,將其加入快表中
2)先在快表中查詢,未命中則在慢表(主存中的頁表)中查詢
3)快表:採用SRAM,相聯儲存器(按內容尋訪),替換演算法和Cache相同(LFU)
-
訪存流程圖
20 虛擬儲存系統
執行程式時,之將其部分從輔存調入主存
-
頁式虛擬儲存器
1)作業系統將程式分頁,每頁大小一致,因此外存、記憶體和Cache都分塊
2)頁表包括:邏輯頁號、主存塊號、外存塊號、有效位、訪問位和髒位
a. 外存塊號:外存塊號指示這一頁位於外存何處
b. 有效位:=1代表已被調入主存
c. 訪問位:為替換演算法服務,如對於LFU記錄訪問次數,對於LRU記錄上次訪問的間隔
d. 髒位:=1時表明該塊被修改,被替換時需要寫回輔存
-
段式虛擬儲存器
1)程式按功能模組拆分段,大小不一致
2)主存不分塊
3)段表:記錄各段在主存中的段首地址、裝入位和端長
a. 段首地址即該段在輔存中的首地址
b. 裝入位為1表明已被調入主存中,為0則表明未被調入主存中
-
段頁式虛擬儲存器:程式按邏輯結構分段,每段又分為固定大小的頁
1)主存分塊,塊大小與頁大小相等,程式對主存的調入、調出以頁為單位
2)每個程式有1個段表,每段有1個頁表
3)虛擬地址包含:段號+段內頁號+頁內地址
相關文章
- 儲存系統設計指南之儲存分類
- 系統統計資訊的儲存位置
- 作業系統ENDIAN(位元組儲存次序)作業系統
- 儲存系統
- 【計組】3.7 虛擬儲存器
- 儲存系統實現-構建自己的儲存系統(一)
- 遊戲伺服器儲存系統設計遊戲伺服器
- mac系統中Safari瀏覽器網頁怎麼儲存至備忘錄Notes?Mac瀏覽器網頁
- 位元組跳動極高可用 KV 儲存系統詳解
- 系統 儲存過程儲存過程
- 計算機的硬體系統儲存器計算機
- ARM體系中儲存系統
- 微機原理與系統設計筆記6 | 儲存器系統設計筆記
- 計算機組成及系統結構-第八章 輔助儲存器計算機
- 儲存系統-cache-磁碟
- 系統設計實踐(02)- 文字儲存服務
- VLDB and Partitioning Guide -- Chapter 8 Parallel DML NotesGUIIDEAPTParallel
- CUDA儲存器組織
- 字元型別的字元儲存與位元組儲存字元型別
- 軟體設計師23-儲存器系統02
- 高效能分散式計算與儲存系統設計概要分散式
- 儲存與資料庫系統資料庫
- 儲存篇(3)
- 檔案系統儲存與oracle資料庫儲存對比Oracle資料庫
- 分散式儲存與傳統網路儲存系統相比有哪些區別分散式
- 計算與儲存分離實踐—swift訊息系統Swift
- 分散式塊儲存系統Ursa的設計與實現分散式
- 分散式儲存系統可靠性:系統量化估算分散式
- 把自編儲存過程設定為系統儲存過程儲存過程
- 談談系統密碼儲存策略密碼
- 理解作業系統之儲存管理作業系統
- Bayou複製分散式儲存系統分散式
- 六、層次結構儲存系統
- oss-server 小型物件儲存系統Server物件
- 作業系統(8)儲存器管理作業系統
- 淘寶圖片儲存系統架構架構
- 04 磁碟儲存和檔案系統
- 本地儲存-系統和保留-系統檔案佔用儲存空間過大的解決方式