- 白中英《計算機組成原理》(第5版)筆記和課后習題詳解
- 圣才電子書
- 10字
- 2021-06-08 15:16:11
第3章 多層次的存儲器
3.1 復習筆記
一、存儲器概述
1存儲器
(1)定義
存儲器是計算機系統中的記憶設備,用來存放程序和數據。
(2)構成
存儲器的存儲介質主要采用半導體器件和磁性材料。存儲器的最小存儲單元為存儲位元,用來存儲一位二進制代碼,若干個存儲位元組成一個存儲單元,然后再由許多存儲單元組成一個存儲器。
(3)分類
①按存儲介質分類
a.半導體存儲器;
b.磁表面存儲器。
②按存取方式分類
a.隨機存儲器(半導體存儲器);
b.順序存儲器(磁帶存儲器);
c.半順序存儲器(磁盤存儲器)。
③按存取內容分類
a.只讀存儲器(ROM);
b.隨機讀寫存儲器(RAM)。
④按斷電后的信息狀態分類
a.易失性存儲器(磁性介質);
b.非易失性存儲器(半導體介質)。
⑤按信息存儲的機理分類
a.靜態讀寫存儲器(SRAM);
b.動態讀寫存儲器(DRAM)。
⑥按在計算機系統中所起的作用分類,可分為內部存儲器、外部存儲器;又可分為主存儲器、高速緩沖存儲器、輔助存儲器、控制存儲器。
2存儲器的分級
在計算機系統中,通常采用多級存儲器體系結構,如圖3-1所示。
圖3-1 存儲器的分級結構
其中上兩層為內存儲器,容量相對較小,可以被CPU直接訪問,存取速度快;而下兩層為外存儲器,容量大,但不能被CPU直接訪問,需要先調入內部存儲器才能被CPU處理。
3主存儲器的技術指標
(1)相關定義
①存放一個機器字的存儲單元,通常稱為字存儲單元,相應的單元地址稱為字地址;
②存放一個字節的單元,稱為字節存儲單元,相應的地址稱為字節地址;
③按可編址的最小單位將計算機分為按字尋址的計算機和按字節尋址的計算機。
(2)性能指標
①存儲容量
指一個存儲器中可以容納的存儲單元總數。存儲容量常用字數或字節數(B)來表示。
②存取時間
指一次讀操作命令從發出到完成,將數據讀出到數據總線上所經歷的時間。
③存儲周期
指連續啟動兩次讀操作所需最小時間間隔。
④存儲器帶寬
單位時間里存儲器所存取的信息量,通常以位/秒或字節/秒做度量單位。
二、SRAM存儲器
根據信息存儲的機理不同,存儲器又分為靜態讀寫存儲器(SRAM)和動態讀寫存儲器(DRAM)。SRAM的優點是存取速度快,但存儲容量不如DRAM大。
1基本的靜態存儲元陣列
基本的靜態存儲元陣列如圖3-2所示。
圖3-2 基本的靜態存儲元陣列
SRAM的特征是用一個鎖存器(觸發器)作為存儲元。只要直流供電電源一直加在這個記憶電路上,它就無限期地保持記憶的1狀態或0狀態。如果電源斷電,那么存儲的數據(1或0)就會丟失。
任何一個SRAM,都有三組信號線與外部通信:
①地址線
陣列中有6條,即A0、A1、A2、A3、A4、A5,它指定了存儲器的容量是26=64個存儲單元。
②數據線
本例中有4條,即I/O0,I/O1,I/O2,I/O3,它指定了存儲器的字長是4位,因此存儲位元的總數是64×4=256。
③控制線
R/W(_)線控制線,它指定了對存儲器進行讀(R/W(_)高電平),還是進行寫(R/W(_)低電平),讀寫操作不會同時發生。
地址譯碼器輸出有64條選擇線,稱為行線,它的作用是打開每個存儲位元的輸入與非門。當外部輸入數據為1時,鎖存器便記憶了1;當外部輸入數據為0時,鎖存器便記憶了0。
2基本的SRAM邏輯結構
目前的SRAM芯片采用雙譯碼方式,以便組織更大的存儲容量。
(1)邏輯結構
存儲容量為32K×8位的SRAM邏輯結構圖如圖3-3所示。
圖3-3 32K×8位的SRAM邏輯結構圖
(2)工作原理
地址線共15條,其中x方向8條(A0~A7),經行譯碼輸出256行;y方向7條(A8~A14),經列譯碼輸出128列;雙向數據線有8條,即I/O0~I/O7,存儲陣列為三維結構,即256行×128列×8位。
向SRAM寫入時,8個輸入緩沖器被打開,而8個輸出緩沖器被關閉,因而8條I/O數據線上的數據寫入到存儲陣列中去。從SRAM讀出時,8個輸出緩沖器被打開,8個輸入緩沖器被關閉,讀出的數據送到8條I/O數據線上。
在芯片中,用來控制
和
的片選信號,
有效時(低電平),
無效時(高電平),存儲器進行讀操作;
無效時(高電平),
有效時(低電平),存儲器進行寫操作。
和
互鎖,這樣保證了讀時不寫,寫時不讀。
3讀/寫周期波形圖
讀周期波形如圖3-4所示。
圖3-4 讀周期(高)
寫周期波形如圖3-5所示。
圖3-5 寫周期(低)
三、DRAM存儲器
1DRAM存儲元的記憶原理
動態MOS隨機讀寫存儲器DRAM的存儲容量極大,通常用作計算機的主存儲器。DRAM存儲器的存儲元是由一個MOS晶體管和電容器組成的記憶電路。
(1)寫1到存儲元
此時輸出緩沖器關閉、刷新緩沖器關閉,輸入緩沖器打開(R/W(_)為低),輸入數據DIN=1送到存儲元位線上,而行選線為高,打開MOS管,于是位線上的高電平給電容器充電,表示存儲了1,如圖3-6所示。
圖3-6 寫1到存儲元
(2)寫0到存儲元
此時輸出緩沖器和刷新緩沖器關閉,輸入緩沖器打開,輸入數據DIN=0送到存儲元位線上;行選線為高,打開MOS管,于是電容上的電荷通過MOS管和位線放電,表示存儲了0,如圖3-7所示。
圖3-7 寫0到存儲元
(3)從存儲元讀出1
輸入緩沖器和刷新緩沖器關閉,輸出緩沖器/讀放打開(R/W(_)為高)。行選線為高,打開MOS管,電容上所存儲的1送到位線上,通過輸出緩沖器/讀出放大器發送到DOUT,即DOUT=1,如圖3-8所示。
圖3-8 從存儲元讀出1
(4)刷新存儲元的1
先如圖3-8讀出數據DOUT=1后又經刷新緩沖器送到位線上,再經MOS管寫到電容上,如圖3-9所示。
圖3-9 刷新存儲元的1
2DRAM芯片的邏輯結構
(1)管腳圖
1M×4位DRAM芯片有兩個電源腳、兩個地線腳,為了對稱,還有一個空腳(NC),它的管腳圖如圖3-10所示。
圖3-10 DRAM管腳圖
(2)邏輯結構圖
1M×4位DRAM邏輯結構圖如圖3-11所示。
圖3-11 1M×4位DRAM
與SRAM不同的是:
①增加了行地址鎖存器和列地址鎖存器。由于DRAM存儲器容量很大,地址線寬度相應要增加,這勢必增加芯片地址線的管腳數目。
②增加了刷新計數器和相應的控制電路,刷新操作與讀/寫操作是交替進行的,所以通過2選1多路開關來提供刷新行地址或正常讀/寫的行地址。
3讀/寫周期、刷新周期
(1)DRAM的讀寫周期
DRAM的讀寫周期波形圖如圖3-12所示。
圖3-12 DRAM的讀/寫周期波形圖
(2)DRAM的刷新周期
DRAM有三種刷新方式,分別為:
①集中式刷新
刷新方式為前面的時間一直進行讀取操作,后面的時間進行刷新。設刷新64×64的矩陣,刷新一次的時間為0.5us,則刷新完64行需要的時間為64×0.5=32us,說明這32us里不能進行讀寫操作。
②分散式刷新
它擴大了讀寫周期,若讀一次需要時間為0.5us,則一次的讀寫周期為1us,因為它包含了刷新用的0.5us。
③異步式刷新
它將每一行的刷新都分開來,只要在規定的時間完成對每一行的刷新即可,(2ms/64)間隔進行一次刷新,這里的2ms是規定的,因為DRAM要求,至少2ms更新所有行一次。
4高級的DRAM結構
(1)SDRAM(同步DRAM)
在系統時鐘的控制下進行讀出和寫入,CPU無需等待,主要解決速度匹配問題。
(2)RDRAM
由Rambus開發,主要解決存儲器帶寬問題。
(3)帶cache的DRAM
在DRAM的芯片內集成了一個由SRAM組成的cache,有利于猝發式讀取。
5存儲器容量的擴充
(1)字長位數擴展
給定的芯片字長位數較短,不滿足設計要求的存儲器字長,此時需要用多個給定芯片擴展字長位數。三組信號線中,地址線和控制線公用而數據線單獨分開連接。所需芯片數計算公式為
(2)字存儲容量擴展
給定的芯片存儲容量較小(字數少),不滿足設計要求的總存儲容量,此時需要用多片給定芯片來擴展字數。三組信號組中給定芯片的地址總線和數據總線公用,控制總線中R/W(_)公用,使能端EN不能公用,它由地址總線的高位段譯碼來決定片選信號。所需芯片數如字長位數擴展相同。
6DRAM讀/寫的正確性校驗
DRAM正確性校驗的概念示意圖如圖3-13所示。
圖3-13 DRAM正確性校驗概念示意圖
其中F部分為檢驗電路,通常有奇偶校驗和漢明碼校驗。
四、只讀存儲器和閃速存儲器
SRAM和DRAM都是隨機讀寫存儲器,它們的特點是數據可讀可寫。
1只讀存儲器ROM
與隨機讀/寫的RAM不同,ROM稱作只讀存儲器。ROM分掩模ROM和可編程ROM兩類,后者又分為一次性編程的PROM和多次編程的EPROM和E2PROM。
(1)掩模ROM
①掩模ROM的陣列結構和存儲元
掩模ROM實際上是一個存儲內容固定的ROM,一旦ROM芯片做成,就不能改變其中的存儲內容。一個16×8位的ROM陣列結構示意圖如圖3-14所示。
圖3-14 16×8位ROM陣列結構示意圖
②掩模ROM的邏輯符號和內部邏輯框圖
掩模ROM的邏輯符號如圖3-15(a)所示,內部邏輯框圖如圖3-15(b)所示。
圖3-15 掩模ROM邏輯符號和內部邏輯框圖
(2)可編程ROM
可編程ROM有PROM、EPROM和E2PROM三種。PROM是一次性編程,后兩種可多次編程。
①EPROM存儲元
EPROM稱作光擦除可編程可讀存儲器,是一種斷電后仍能保留數據的計算機存儲芯片,即非易失性的。它是一組浮柵晶體管,被一個提供比電子電路中常用電壓更高的電子器件分別編程,一旦編程完成,EPROM需要用強紫外線照射來擦除。
②E2PROM存儲元
E2PROM是指帶電可擦可編程只讀存儲器,同樣具有非易失性,與EPROM不同的是,E2PROM不需要從計算機中取出即可修改,其可通過高于普通電壓的作用來擦除和重編程。
2FLASH存儲器(閃速存儲器)
(1)概述
它是高密度非易失性的讀/寫存儲器。高密度意味著它具有巨大比特數目的存儲容量,非易失性意味著存放的數據在沒有電源的情況下可以長期保存。總之,它既有RAM的優點,又有ROM的優點。
(2)FLASH存儲器的基本操作
①編程操作
②讀取操作
③擦除操作
(3)各種存儲器的性能比較
FLASH與各種存儲器性能的比較如表3-1所示。
表3-1 各種存儲器的性能比較
五、并行存儲器
采用并行技術的存儲器,可以提高CPU和主存直接的數據傳輸率。
1雙端口存儲器
(1)雙端口存儲器的邏輯結構
雙端口存儲器的同一個存儲器具有兩組相互獨立的讀寫控制電路。采用空間并行技術,可以進行并行的獨立操作,是一種高速工作的存儲器。
雙端口存儲器IDT7133的邏輯框圖如圖3-16所示。
圖3-16 雙端口存儲器IDT7133邏輯框圖
這是一個存儲容量為2K,字長16位的SRAM,它提供了兩個相互獨立的左右端口。它們分別具有各自的地址線(A0~A10)、數據線(I/O0~I/O15)和控制線(R/W(_),,
,
),因而可以對存儲器中任何位置上的數據進行獨立的存取操作。
(2)無沖突讀寫控制
無沖突的讀/寫條件如表3-2所示,表中符號1代表高電平,0為低電平,×為任意,2為高阻態。
表3-2 無沖突讀寫控制
(3)有沖突的讀寫控制
左、右端口進行讀寫操作時的功能判斷如表3-3所示。
表3-3 左、右端口讀寫操作的功能判斷
2多模塊交叉存儲器
(1)存儲器的模塊化組織
一個由若干個模塊組成的主存儲器是線性編址的,多體交叉存儲器采用時間并行技術。
①順序方式
在常規主存儲器設計中,訪問地址采用順序方式,如圖3-17所示,其單個模塊損壞不影響其他模塊,擴容方便,但帶寬受到限制。
圖3-17 順序方式
②交叉方式
采用交叉方式尋址的存儲器模塊化組織如圖3-18所示,其大大提高了存儲器的帶寬。
圖3-18 交叉方式
(2)順序方式與交叉方式時間對比
假設模塊存取一個字的存儲周期為T,總線傳送周期為τ,存儲器交叉模塊數位m,則要存取m個字長為l時,順序方式所需時間為t1=T×m,而交叉順序為t2=T+(m-1)×τ;順序方式帶寬為m×l/t1,交叉順序為n×l/t2。
六、cache存儲器
1cache基本原理
(1)cache的功能
cache是一種高速緩沖存儲器,是為了解決CPU和主存之間速度不匹配而采用的一項重要技術。其原理基于程序運行中具有的空間局部性和時間局部性特征。
CPU與存儲器系統的關系如圖3-19所示。
圖3-19 CPU與存儲器系統的關系
cache是由高速的SRAM組成,由于其存取速度比主存快,因此可以加快程序的執行速度。
(2)cache的基本原理
如圖3-20所示,當CPU執行訪存指令時,就把所要訪問的字的地址送到CAM;若此字在cache中,則將此字立即傳送給CPU;若不在,則將此字從主存傳送到CPU。與此同時,把包含此字的由前后相繼的4個字所組成的一行數據送入cache,它替換了原來cache中最近最少使用(LRU)的一行數據。
圖3-20 cache原理圖
(3)cache的命中率
在一個程序執行期間,設Nc表示cache完成存取的總次數,Nm表示主存完成存取的總次數,h定義為命中率,則
設r=tm/tc表示主存慢于cache的倍率,e表示訪問效率,則
若tc表示命中時的cache訪問時間,tm表示未命中時的主存訪問時間,1-h表示未命中率,則cache/主存系統的平均訪問時間ta=htc+(1-h)tm。
2主存與cache的地址映射
(1)全相聯映射方式
①組成
cache的數據塊大小稱為行,用Li表示,主存的數據塊大小稱為塊,用Bj表示。行與塊是等長的,每個塊(行)由k=2w個連續的字組成,字是CPU每次訪問存儲器時可存取的最小單位。
②映射過程
在全相聯映射中,將主存中一個塊的地址(塊號)與塊的內容(字)一起存于cache的行中,其中塊地址存于cache行的標記部分中。這種帶全部塊地址一起保存的方法,可使主存的一個塊直接拷貝到cache中的任意一行上。如圖3-21所示。
圖3-21 全相聯映射方式示意圖
③檢索過程
CPU訪存指令指定了一個內存地址,指令中的塊號先與cache中所有行的標記同時進行比較,如果塊號命中,則按字地址從cache中讀取一個字;如果塊號未命中,則按內存地址從主存中讀取這個字。在全相聯cache中,全部標記用一個相聯存儲器來實現,全部數據用一個普通RAM來實現。
④缺點
全相聯方式的主要缺點是比較器電路難于設計和實現,因此只適合于小容量cache采用。
(2)直接映射方式
①定義
直接映射方式也是一種多對一的映射關系,但一個主存塊只能拷貝到cache的一個特定行位置上去。
②原理
cache的行號i和主存的塊號j有如下函數關系:
i=j mod m
式中,m為cache中的總行數。直接映射方式的示意圖如圖3-22所示。其中主存數目為2s=28=256,cache行數目為2r=23=8。
圖3-22 直接映射的cache組織
③檢索過程
在直接映射方式中,cache將s位(塊地址用s位表示)的塊地址分成兩部分:r位(行號用r位表示)作為cache的行地址,s-r位作為標記(tag)與塊數據一起保存在該行。CPU進行檢索時根據行地址和標記來確定要讀取的字在cache中還是在主存中。
④優缺點
硬件簡單,成本低,但在cache中容易發生沖突,較適合于需要大容量cache的場合。
(3)組相聯映射方式
①概述
組相聯映射方式既兼顧了全相聯映射的靈活性及高命中率,同時也兼顧了直接映射的簡單及低成本優點。
②原理
這種方式將cache分成u組,每組v行。主存塊存放到哪個組是固定的,至于存到該組的位置是靈活的,即有如下函數關系:
m=u×v
組號q=j mod u
組相聯映射的示意圖如圖3-23所示。其中cache組數為2d=4,標記大小為s-d位。
圖3-23 組相聯映射的cache組織
③檢索過程
在組相聯映射方式中,當CPU給定一個內存地址訪問cache時,首先用塊號域的低d位找到cache的相應組,然后將塊號域的高s-d位與該組v行中的所有標記同時進行比較,以此來確定要讀取的字在cache中還是在主存中。
3替換策略
(1)最不經常使用(LFU)算法
LFU算法認為應將一段時間內被訪問次數最少的那行數據換出,其缺點是不能嚴格反映近期訪問情況。
(2)近期最少使用(LRU)算法
LRU算法將近期內長久未被訪問過的行換出。這種算法保護了剛拷貝到cache中的新數據行,因而使cache有較高的命中率。
(3)隨機替換
隨機替換策略只要從特定的行位置中隨機地選取一行換出即可,但其容易降低命中率和cache工作效率。
4cache的寫操作策略
(1)寫回法
①要求
當CPU寫cache命中時,只修改cache的內容,而不立即寫入主存;只有當此行被換出時才寫回主存;
當CPU寫cache未命中時,將包含此字的主存塊拷貝到cache中再進行修改。
②特點
寫回法明顯減少了寫入主存的次數,真正實現CPU與主存之間的高速緩沖作用,但這種方式會存在不一致性的隱患。
(2)全寫法
①要求
當寫cache命中時,cache與主存同時發生寫修改,因而較好地維護了cache與主存內容的一致性;
當寫cache未命中時,只能直接向主存進行寫入。但此時是否將修改過的主存塊取到cache,有兩種選擇方法:
a.WTWA法
取主存塊到cache并為它分配一個行位置。
b.WTNWA法
不取主存塊到cache。
②特點
全寫法保證了寫cache與寫主存的同步進行,但cache對CPU向主存的寫操作無高速緩沖功能。
(3)寫一次法
寫一次法是基于寫回法并結合全寫法的寫策略:寫命中與寫未命中的處理方法與寫回法基本相同,只是第一次寫命中時要同時寫入主存。
七、虛擬存儲器
1虛擬存儲器的基本概念
(1)實地址與虛地址
①虛地址
用戶編制程序時使用的地址稱為虛地址或邏輯地址,其對應的存儲空間稱為虛存空間或邏輯地址空間。
②實地址
計算機物理內存的訪問地址稱為實地址或物理地址,其對應的存儲空間稱為物理存儲空間或主存空間。程序進行虛地址到實地址轉換的過程稱為程序的再定位。
(2)虛存的訪問過程
①訪問過程
a.每次訪問虛存時,判斷該虛地址所對應的部分是否在實存中;
b.若在實存中,則進行地址轉換并用實地址訪問主存;
c.若不在實存中,按照某種算法將輔存中的部分程序調度進內存,再按同樣的方法訪問主存。
②虛地址空間與實地址空間比較
每個程序的虛地址空間既可以遠大于也可以遠小于實地址空間,不同在于:
a.遠大于實地址空間可以提高存儲容量;
b.遠小于實地址空間可以縮短指令中地址字段的長度。
③虛存的優點
虛擬的存儲器使得每個程序具有輔存的容量和接近主存的訪問速度;
(3)cache與虛存的異同
①出發點相同
②原理相同
③側重點不同
④數據通路不同
⑤透明性不同
⑥未命中時的損失不同
(4)虛存機制要解決的關鍵問題
①調度問題
②地址映射問題
③替換問題
④更新問題
2頁式虛擬存儲器
(1)頁式虛存地址映射
①概述
頁式虛擬存儲系統中,虛地址空間被分成等長大小的頁,稱為邏輯頁;主存空間也被分成同樣大小的頁,稱為物理頁。虛地址分為兩個字段:高字段為邏輯頁號,低字段為頁內地址(偏移量);實存地址也分兩個字段:高字段為物理頁號,低字段為頁內地址。通過頁表可以把虛地址(邏輯地址)轉換成物理地址。
②頁表的作用
每一個進程都有一個頁表,用來存放物理頁和邏輯頁的對應關系,頁式虛擬存儲器的地址映射過程如圖3-24所示。
圖3-24 頁式虛擬存儲器的地址映射過程
(2)轉換后援緩沖器(TLB)
①概述
專用于頁表緩存的高速存儲部件通常稱為轉換后援緩沖器(TLB),又稱為快表。而保存在主存中的完整頁表則稱為慢表。快表的作用是加快地址變換。
②TLB的作用
TLB的地址映射過程如圖3-25所示。
圖3-25 TLB的地址映射過程
(3)內頁表和外頁表
①用于虛地址與主存物理地址之間的變換表稱為內頁表。
②用于虛地址與輔存地址之間的變換表稱為外頁表。
3段式虛擬存儲器和段頁式虛擬存儲器
(1)段式虛擬存儲器
段是按照程序自然分界劃分的長度可以動態改變的區域。通常,程序員把子程序、操作數和常數等不同類型的數據劃分到不同的段中,并且每個程序可以有多個相同類型的段。
①段表
每個程序設置一個段表,段表的每一個表項對應一個段。每個表項至少包含下面三個字段:
a.有效位,指明該段是否已經調入實存;
b.段起址,指明在該段已經調入實存的情況下,該段在實存中的首地址;
c.段長,記錄該段的實際長度。
②段式虛存的地址存儲過程
段式虛地址向實存地址的變換過程如圖3-26所示。
圖3-26 段式虛存的地址映射過程
③段式虛存的優點
a.易于編譯、管理、修改和保護,也便于多道程序共享;
b.段長可以根據需要動態改變,允許自由調度,以便有效利用主存空間。
④段式虛存的缺點
a.主存空間分配比較繁瑣;
b.容易在段間留下許多碎片,造成存儲空間利用率降低;
c.需要額外用加法操作來求物理地址。
(2)段頁式虛擬存儲器
在段頁式虛擬存儲系統中,每道程序均通過一個段表和多個頁表進行兩級再定位。由于在多任務系統中,操作系統會在每個虛地址前加上一個表明該程序在系統中的序號的基號,因此一個虛地址可以看作由四個字段構成,如圖3-27所示。
圖3-27 構成虛地址的四個字段
段頁式虛擬存儲器的缺點是在由虛地址向主存地址的映射過程中需要多次查表,因而實現復雜度較高。
4虛存的替換算法
當從輔存調頁至主存而主存已滿時,也需要進行主存頁面的替換。虛擬存儲器的替換算法與cache的替換算法類似,有FIFO算法、LRU算法、LFU算法等。