版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
存儲系統(tǒng)4.1存儲系統(tǒng)概述4.2主存儲器4.3高速緩沖存儲器4.4虛擬存儲器4.5外部存儲器(輔助存儲器)
4.1存儲系統(tǒng)概述
4.1.1存儲系統(tǒng)的層次結構
一臺計算機中可能會包括各種存儲器,如CPU內部的通用寄存器組、一級Cache、二級Cache和三級Cache,主板上的主存儲器(簡稱主存),主板外的聯(lián)機(在線)磁盤存儲器以及脫機(離線)的磁帶、光盤存儲器等。
在計算機中,各種存儲器的容量、速度、訪問方式、用途等各不相同,這些存儲器相互配合形成了一種層次結構的存儲系統(tǒng)。在這樣的層次結構中,不同層次上的存儲器發(fā)揮著不同的功能和作用,共同使計算機高效地工作。計算機存儲系統(tǒng)的層次結構如圖4.1所示。圖4.1存儲系統(tǒng)的層次結構
4.1.2存儲器的分類
由于存儲器的材料、性能及使用方法不同,從不同的角度考慮,就有不同的分類方法。
1.按存儲信息的介質分類
目前,在計算機中用于存儲信息的介質有半導體、磁性或光學器件及材料,因此就有半導體存儲器、磁盤(磁帶)存儲器、光盤存儲器等。
2.按在計算機中的用途分類
在計算機中用于存放當前正要執(zhí)行或剛執(zhí)行的程序和數據的存儲器是主存儲器。用于存放正在執(zhí)行的程序或正在使用的數據、用以克服主存儲器速度太慢的存儲器是高速緩沖存儲器Cache。主存儲器和Cache統(tǒng)稱為內部存儲器,簡稱內存。
在CPU內部,用于存放微程序的存儲器是控制存儲器。
用來存放當前暫不使用的大量信息的存儲器是外部存儲器,簡稱外存,如磁盤存儲器、光盤存儲器、U盤、MMC(SD)存儲卡、磁帶存儲器等。
3.按存放信息的易失(揮發(fā))性分類
當存儲器斷電后,有些存儲器所存信息會隨之丟失,這類存儲器所存信息是易失的、可揮發(fā)的。例如,半導體隨機存取存儲器(RandomAccessMemory,RAM)就是信息易于揮發(fā)的易失存儲器。
另有一些存儲器在斷電后所存信息不會丟失,當再次加電后它所存儲的信息依然存在。例如,磁盤存儲器、各種類型的半導體只讀存儲器(Read-OnlyMemory,ROM)等都是非易失存儲器。
4.按存取方式分類
如果存儲器的存取時間與存儲單元的物理地址無關,隨機讀寫其任一單元所用的時間一樣,則稱此類存儲器為RAM。
有些存儲器的存取只能按順序進行,則稱此類存儲器為順序讀寫存儲器,如磁帶存儲器。
5.按存儲器的讀寫功能分類
有些存儲器既能讀出又能寫入,稱之為讀寫存儲器。而有些存儲器的內容已固定,工作時只能讀出,則稱之為ROM。
4.1.3存儲器的性能指標
存儲器和存儲系統(tǒng)是不同的兩個概念,這里說明的是存儲器的性能指標。存儲器的性能指標是用來描述存儲器基本性能的。
1.存儲容量
存儲容量指的是存儲器所能存儲的二進制信息的總位數,其表示方式一般為
存儲容量=存儲器總存儲單元數×每個存儲單元的位數
(4.1)
2.存儲器速度
(1)存取時間又稱訪問時間,是對存儲器中某一個存儲單元的數據進行一次存(取)所需要的時間。
(2)存取周期是指連續(xù)對存儲器進行存(取)時,完成一次存(取)所需要的時間。
(3)存儲器帶寬(MemoryBandwidth)是指單位時間里存儲器可以讀出(或寫入)的字節(jié)數。若存儲器的存取周期為tm,且每次可讀出(或寫入)n個字節(jié),則存儲器的帶寬Bm=n/tm。
3.可靠性
計算機要正確地運行,必然要求存儲器系統(tǒng)具有很高的可靠性。主存的任何錯誤都足以使計算機無法正常工作。
對計算機的存儲器來說,有的是不可維修的,如構成主存的超大規(guī)模集成存儲器芯片,一旦出現故障就只能更換;而有的存儲器是可維修的,如磁盤存儲器、磁帶存儲器等。
4.功耗
功耗在電池供電的系統(tǒng)中是非常重要的指標。使用功耗低的存儲器構成存儲系統(tǒng),不僅可以降低對電源容量的要求,而且還可以提高存儲系統(tǒng)的可靠性。
5.價格
構成存儲系統(tǒng)時,在滿足上述指標要求的情況下,應盡量降低存儲器的價格。通常是以每千字節(jié)(KB)或每兆字節(jié)(MB)的價格來衡量存儲器的成本。隨著技術的發(fā)展,存儲器的價格已大大降低。例如,對于磁盤存儲器,20世紀80年代初每兆字節(jié)(MB)需幾千元,而今天每吉字節(jié)(GB)只需幾角錢。
4.2主存儲器
計算機中的內部存儲器,狹義是指主存儲器(MainMemory,MM),廣義是指包括主、高速緩存、虛擬存儲器在內的存儲層次。主存是計算機存儲體系中最早出現的存儲層次,是從馮·諾依曼計算機開始到目前所有計算機中不可缺少的功能部件。主存是正在執(zhí)行的程序和所用數據的存放地,其容量和速度對計算機性能(速度)有直接影響?,F代計算機的主存毫無例外地采用半導體存儲器集成芯片構成。
4.2.1主存的結構
1.主存的邏輯結構
主存用來存儲二進制的程序和數據,由許多存儲單元組成,每個存儲單元可以存儲1個字節(jié)或1個字(與計算機字長和CPU的數據線數有關),存儲單元的每1位為二進制存儲元,即1個字節(jié)存儲單元由8個二進制存儲元構成。圖4.2為主存的邏輯結構,每個存儲單元用二進制編碼的地址標識,并依據地址尋址訪問,對每個存儲單元可進行隨機讀、寫操作。計算機的最小存儲單元為字節(jié)單元(8位)。
主存的地址空間大小由CPU提供的地址線數決定。主存的規(guī)模即主存的容量可表示為
主存存儲容量=存儲單元數×存儲單元的位數=2n×m位
(4.2)
其中,n為存儲單元地址位數(即CPU的地址線數),m為每個存儲單元可存儲的位數。主存容量中特定數據的常用表示有:210=1K,220=1M,230=1G,240=1T,220×8bit=1M×8b=1MB。圖4.2主存的邏輯結構
2.主存的物理結構
主存的物理結構如圖4.3所示,每個存儲元由存儲1個二進制位的電路(部件)構成,若干個存儲元電路組成存儲單元,許多存儲單元電路以行列矩陣組成存儲器芯片,通過芯片內一維或二維地址譯碼選擇某個存儲元(存儲單元),多個存儲器芯片也按行列矩陣(即字、位擴展)組成主存,通過芯片外的部分地址或全地址譯碼選擇某個存儲器芯片。圖4.3主存的物理結構
為了能對芯片內部的存儲單元進行尋址訪問,需要在芯片內部對地址信號進行譯碼,以便選中地址所對應的存儲單元。芯片內部的地址譯碼有兩種方式:一維譯碼和二維譯碼。
1)一維譯碼
對于容量很小的芯片,如容量在幾百個存儲單元以內的芯片,多用一維譯碼。芯片內部只用一個地址譯碼器,其譯碼輸出可選中相對應的存儲單元。其示意圖如圖4.4所示。圖4.4芯片內部的一維譯碼
2)二維譯碼
當芯片容量在幾百個存儲單元以上時,用一維譯碼會使譯碼器過于復雜,因此多采用二維譯碼。此時芯片內部用行地址譯碼器和列地址譯碼器分別對地址譯碼,行譯碼輸出可選中相對應的一行存儲單元,列譯碼輸出可選中相對應的一列存儲單元,而行列交叉點上的存儲單元就是最終所選中的存儲單元。其示意圖如圖4.5所示。圖4.5芯片內部的二維譯碼
4.2.2隨機讀寫存儲器RAM
1.靜態(tài)讀寫存儲器SRAM
靜態(tài)讀寫存儲器SRAM是構成小容量高速存儲器最常用的部件,如高速緩沖存儲器Cache采用的就是SRAM。
常規(guī)RAM芯片的外部有地址線、數據線和控制信號線。地址線在芯片內部譯碼,可選中芯片內部的相應存儲單元。例如,某SRAM芯片上有n條地址線,這些地址線所能表示的地址編碼有2n種,這意味著該芯片內部有2n個存儲單元。
1)SRAM存儲元電路
SRAM可有多種結構,圖4.6是典型的1位SRAM的存儲元電路。圖4.6SRAM存儲元電路
從1位SRAM存儲元電路可以看到:
(1)用n個1位存儲元電路同時工作可構成n位存儲單元。
(2)數據一旦寫入,其信息就穩(wěn)定地保存在電路中并等待讀出。無論讀出多少次,只要不斷電,此信息會一直保持下去,這也許就是“靜態(tài)”一詞的由來。
(3)SRAM初始加電時,其狀態(tài)是隨機的。寫入新的狀態(tài),原來的舊狀態(tài)就消失了。新狀態(tài)一直維持到寫入更新的狀態(tài)為止。
(4)在電路工作時,即使不進行讀寫操作,只是保持在加電狀態(tài)下,電路中就一定有晶體管導通,也就一定有電流流過,從而一定會有功率消耗;每存儲一個二進制位,平均需要用到6個晶體管(V7、V8為每列共享)。因此,與DRAM比較,SRAM的功耗大,集成度不能做得很高。
2)典型SRAM芯片
現以典型的8K×8bit的CMOSSRAM6264芯片為例,說明典型SRAM芯片的外部特性及工作過程。
6264芯片的引腳如圖4.7所示,它有28條引出線,包括:
A0~A12為地址信號線。這13條地址線經過芯片內部譯碼,決定了該芯片有8K(8192)個存儲單元。
D0~D7為雙向數據線。數據線的數目決定了芯片中每個存儲單元存儲二進制位的個數,8條數據線說明該芯片的每個存儲單元存放一個字節(jié)。當CPU寫某存儲單元時,數據由D0~D7傳送到該芯片內部譯碼指定的單元中。當CPU讀某存儲單元時,被選中的指定單元內的數據由D0~D7傳送給CPU。圖4.76264引腳圖
2.動態(tài)讀寫存儲器DRAM
動態(tài)讀寫存儲器(DRAM)速度快(僅次于SRAM)、集成度高、功耗小、單位容量的價格低,在計算機中得到了極其廣泛的應用,計算機中的內存條無一例外地采用了動態(tài)存儲器?,F在的嵌入式計算機系統(tǒng)中如果需要大容量主存,也會采用DRAM。
1)DRAM存儲元電路
動態(tài)存儲器(DRAM)有多種結構形式,如果減少每個存儲元電路需要的元件個數,就可以進一步提高存儲器芯片的集成度。
圖4.8(a)為單管DRAM存儲元電路。每個存儲元僅由一個電容CS和一個作為開關的晶體管V構成。將很多這樣的存儲元構成陣列,如圖4.8(b)所示,即可構成大容量、高集成度的DRAM芯片。實際上,DRAM芯片至少擁有數千根字線和位線。圖4.8單管DRAM存儲結構
數據讀出的過程也是刷新的過程。單管DRAM存儲元讀操作的步驟如下:
(1)位線預充電,使位線分布電容CB上的電壓達到參考電壓UR;預充電完成后,預充電控制電路斷開。由于位線較長,位線分布電容CB較大,其預充電的電壓會保持一個短暫的時間。
(2)置字線為高電平,晶體管V導通,電容CS經過晶體管V連接到位線上。如果電容CS原來有電荷,則位線電壓略有升高;如果電容CS原來沒有電荷,則位線電壓略有降低。
(3)開啟靈敏讀出/恢復放大器。該電路主要由靈敏比較器構成,位線電壓與參考電壓UR之間的電位差被比較器中的正反饋電路放大。如果位線電壓高于參考電壓UR,則放大電路置位線為高電平UDD;如果位線電壓低于參考電壓UR,則放大電路置位線為低電平0V。
(4)采樣位線電壓,讀出數據。如果位線為高電平UDD,則讀出數據為“1”,同時位線上的高電平為電容CS充電;如果位線為低電平0V,則讀出數據為“0”,同時電容CS通過位線放電。
(5)置字線為低電平,關閉靈敏讀出/恢復放大器。此時,電容CS已恢復為數據讀出之前的狀態(tài),所存儲的內容得到刷新,而數據已被讀出。
可見,使用了靈敏讀出/恢復放大器后,在每次讀出數據的同時也完成了對存儲元原來所存數據的刷新。因此這類DRAM的刷新操作可以通過按行依次執(zhí)行一次讀操作來實現。在刷新時,數據輸出應被置為高阻(數據是通過三態(tài)門輸出的)。通常,DRAM芯片需要每隔最多64ms刷新一遍。
2)典型DRAM芯片
DDRSDRAM也經歷了幾代的發(fā)展。下面以典型的DDR4SDRAM芯片為例,介紹DDRSDRAM的引腳、功能及工作過程。
DDR4SDRAM芯片核心頻率通常為200~400MHz,內部采用8通道并行預取結構,可以在時鐘信號的上升沿和下降沿各傳輸一個數據,所以接口總線時鐘頻率可以達到核心頻率的4倍,而理想情況下的數據傳輸率(每秒鐘可以傳輸數據的次數)可達到核心頻率的8倍。與DDR3SDRAM相比,DDR4SDRAM的性能更好,容量更大,數據完整性更強,能耗更低。
H5AN8G6NAFR芯片的封裝形式為有96個引腳(焊球)的FBGA封裝,如圖4.9所示,其各引腳定義如圖4.10所示??梢?DRAM芯片的引腳與SRAM差別非常大,因而讀寫方式也與SRAM大不相同。圖4.9H5AN8G6NAFR芯片96引腳FBGA封裝圖圖4.10H5AN8G6NAFR引腳定義
在圖4.10中,引腳信號名稱后綴為“_t”和“_c”的是差分信號(差分對);引腳信號名稱后綴為“_n”的是低電平有效的信號。下面介紹H5AN8G6NAFR各引腳的功能:
CK_t、CK_c(輸入)為差分時鐘輸入信號引腳。
CS_n(輸入)是片選信號引腳。
ODT(輸入)是DDR4SDRAM內部終結電阻的使能信號引腳。
ACT_n(輸入)是激活命令輸入信號引腳。
RAS_n/A16、CAS_n/A15、WE_n/A14(輸入)是雙功能復用的輸入引腳。
DMU_n/DBIU_n、DML_n/DBIL_n是雙功能復用的引腳,其功能可通過模式寄存器MR5進行設置。
BG0(輸入)為模組選擇信號引腳。
BA0、BA1(輸入)為存儲體選擇信號引腳。
A0~A15(輸入)為地址信號引腳。
A10/AP(輸入)是雙功能復用的輸入引腳。
A12/BC_n(輸入)是雙功能復用的輸入引腳。
RESET_n(輸入)是異步復位信號引腳。
DQU0~DQU7、DQL0~DQL7(雙向)分別為高8位和低8位數據信號線。
DQSU_t、DQSU_c、DQSL_t、DQSL_c(雙向)為數據選通信號引腳。
PAR(輸入)是命令與地址奇偶校驗輸入。
ALERT_n(輸出)是錯誤警示信號引腳。
TEN(輸入)是連通性測試允許信號引腳。
NC是空腳。
VDDQ是數據信號DQ電源(1.2V±0.06V)引腳,VSSQ是數據信號DQ地引腳。
VDD是核心電源(1.2V±0.06V)引腳,VSS是核心地引腳。
VPP是SDRAM激活供電(2.5V)引腳,最低2.375V,最高2.75V。
VREFCA是CA參考電壓;ZQ是校準參考電壓。
3)DRAM的工作過程
在芯片被選中(CS_n輸入引腳為低電平)的情況下,輸入引腳ACT_n、RAS_n/A16、CAS_n/A15、WE_n/A14的不同組合,配合相應的地址信號,可以表示多種不同的SDRAM命令。表4.2列出了幾種常用的DDR4SDRAM命令,命令縮寫與命令全稱之間的對應關系如下:
圖4.11為DDR4SDRAM讀時序,其中各參數的含義如下:
·BL(BurstLength)為突發(fā)長度,即發(fā)送一次讀(或寫)命令后,可連續(xù)讀出(或寫入)的數據個數。
·AL(AdditiveLatency)為附加延遲,以時鐘周期數為單位。
·CL(CASLatency)為CAS延遲,即發(fā)送讀命令到讀出第一個數據之間的時間間隔,以時鐘周期數為單位,該參數在模式寄存器MR0中設置。
·tRCD(TimeRAS-to-CASdelay)為激活命令到讀(或寫)命令之間的時間間隔(圖中未專門標出)。圖4.11DDR4SDRAM讀時序(BL=8,AL=0,CL=11)
圖4.12為DDR4SDRAM寫時序,參數CWL(CASWriteLatency,CAS寫延遲)是發(fā)送寫命令到寫入第一個數據之間的時間間隔,以時鐘周期數為單位。圖4.12DDR4SDRAM寫時序(BL=8,AL=0,CWL=9)
4.2.3只讀存儲器ROM
1.概述
只讀存儲器ROM的重要特性是其存儲信息的非易失性,即存放在ROM中的信息不會因去掉供電電源而丟失,當再次加電時,其存儲的信息依然存在。
(1)掩膜工藝ROM。
(2)可一次編程ROM(PROM)。
(3)可擦去重寫的PROM。
2.紫外線擦除可編程只讀存儲器(EPROM)
EPROM是一種用紫外線擦除可多次重寫的只讀存儲器。
1)單元電路
EPROM內部結構及單元電路如圖4.13所示,它由存儲一個二進制位的基本單元電路(主要元件為浮置柵場效應管)組成的存儲陣列構成。陣列中的行線為地址(一維或二維)譯碼信號選擇的字線(即芯片的存儲單元);列線為位線(即數據線),用來讀出EPROM中存儲的信息。圖4.13EPROM內部結構及單元電路
(1)寫入數據(編程)。
對EPROM基本單元電路寫入數據是通過在浮置柵場效應管的浮置柵極上注入或不注入電荷來實現的。當要在某單元電路存儲邏輯0時,則在該單元電路中場效應管的浮置柵上注入足夠的電荷;當要在某單元電路存儲邏輯1時,則在該單元電路中場效應管的浮置柵上不注入電荷(即處于原始狀態(tài))
(2)讀出數據。
一個未使用過的EPROM,其內部所有場效應管的浮置柵極上都沒有電荷,此時無論行線是高電平還是低電平,場效應管的柵源電壓都達不到開啟電壓,場效應管處于截止狀態(tài),位線呈現高電平(邏輯1),即芯片每個單元讀出的數據都是1。
(3)擦除。
EPROM擦除是利用紫外光源通過EPROM芯片上的石英窗口照射場效應管的浮置柵極來實現的。若某場效應管的浮置柵極上有電荷,則電荷在紫外光線照射下會形成光電流,經過一段時間(一般為十幾分鐘)照射后,光電流會將電荷泄漏干凈,達到擦除的目的。擦除干凈的EPROM又可以重新編程。
2)典型EPROM芯片
2764是一塊8K×8bit的EPROM芯片,其引線如圖4.14所示。圖4.14EPROM2764引線圖
3.電擦除可編程只讀存儲器(EEPROM)
1)單元電路
EEPROM或Flash存儲器(閃存)內部每個存儲元電路也是由浮置柵場效應管構成的,且組織成陣列結構。EEPROM與EPROM的主要不同是浮置柵場效應管有所不同。EEPROM中的場效應管浮置柵極較薄,且外加了控制柵極。這種改造使得電荷注入浮置柵的速度更快,且不需額外的高編程電壓,擦除時用電信號控制就可以實現,所以對EEPROM可以進行在線擦除和在線編程。
2)典型EEPROM芯片
EEPROM因其制造工藝及芯片容量的不同而有多種型號。下面僅以8K×8bit的EEPROM98C64A為例來加以說明。其引線如圖4.15所示。圖4.15EEPROM98C64A引線圖
3)閃速存儲器
閃速(Flash)存儲器也是一種電可擦除可多次編程的存儲器。與EEPROM不同之處在于其擦除寫入的速度比較快,為強調其寫入速度快而稱之為閃速存儲器。閃速存儲器在制造工藝上主要有兩類:或非(NOR)型陣列和與非(NAND)型陣列。
當選擇存儲解決方案時,必須權衡以下各項因素:
(1)NOR的讀速度比NAND稍快一些。
(2)NAND的寫入速度比NOR快很多。
(3)NAND的擦除速度遠比NOR的快。
(4)大多數寫入操作需要先進行擦除。
4.2.4相聯(lián)存儲器
RAM和ROM存儲器都是按地址進行訪問的,也就是說這些存儲器都是依照地址去尋找存儲單元中的內容。而相聯(lián)存儲器是依據內容確定內容對應的地址或者是依據內容去尋找與其相關的內容。
相聯(lián)存儲器的構成如圖4.16所示。其組成主要包括如下部件:
(1)檢索寄存器,用于存放要檢索的內容,其長度為n位二進制編碼。
(2)屏蔽寄存器,用于將不進行檢索的某些位屏蔽掉,只留下需要檢索的各位參與比較。通常,若屏蔽寄存器中某位置1,則將相應的檢索位屏蔽掉;若置0,則保留檢索位。
(3)存儲體,用于存放信息。假定存儲體的容量為2m×n,即它具有2m個存儲單元,每個存儲單元存儲n位二進制信息。
(4)比較電路,是由2m個n位數字比較器構成的,用來將存儲體中所有存儲單元的內容與經屏蔽后的檢索字進行同時比較。采用如此眾多的硬件比較器進行同時比較,為的就是提高比較的速度。
(5)匹配寄存器,用于記錄比較器的比較結果。該寄存器有2m位,剛好對應存儲體的2m個存儲單元。當某一存儲單元存儲的信息與屏蔽后的檢索字相同(匹配)時,與該單元對應的寄存器相應位置1;未匹配存儲單元的相應位置0。
(6)數據寄存器,用來存放比較過程中發(fā)現的匹配存儲單元的內容。加電后,其內容為隨機數。圖4.16相聯(lián)存儲器的構成
在圖4.16的左側畫出了地址寄存器和地址譯碼器,為的是使相聯(lián)存儲器具有按地址訪問的功能。
相聯(lián)存儲器中使用了數字比較器,用來比較經屏蔽后的檢索字與存儲單元的內容是否相等。如果數字比較器還可以進行大于、小于等功能的比較,那么相聯(lián)存儲器就可以具有大于、小于等功能的檢索。
上述相聯(lián)存儲器是一種比較完備的實現方式,實現起來非常復雜。在實際應用中,可以根據具體的需求實現需要的功能即可。圖4.17為一種讀相聯(lián)存儲器的實現。圖4.17四個存儲單元的讀相聯(lián)存儲器
4.2.5主存儲器設計方法
某些嵌入式計算機,比如家用電器、儀器儀表中的計算機系統(tǒng),處理器一般為低成本、低性能的單片機,所需主存容量很小(幾千字節(jié)到幾百千字節(jié))。這種情況下,主存可用SRAM實現。SRAM有獨立的地址線、數據線、片選、讀信號、寫信號,可以隨機訪問,控制方式簡單,很容易用來構成主存。
1.存儲器芯片的連接方式
單個存儲器芯片的容量有限,存儲單元的個數(即字數)和每個存儲單元的字長(即位數)兩方面都有可能不滿足實際需要。這種情況下,必須將多塊存儲器芯片連接起來,在字數和位數兩方面進行擴展,構成一個滿足實際需求的大容量存儲器。下面以8K×8b的SRAM芯片6264為例,說明存儲器芯片的常用連接方式。
1)字數的擴展(字擴展)
用兩片8K×8b的SRAM芯片6264構成一個16K×8b的存儲器,這是典型的字擴展方式,其連接電路如圖4.18所示。圖4.18兩片6264SRAM存儲器字擴展
2)位數的擴展(位擴展)
用兩片8K×8b的SRAM芯片6264構成一個8K×16b的存儲器,這是典型的位擴展方式,其連接電路如圖4.19所示。圖4.19兩片6264SRAM存儲器位擴展
3)位數和字數同時擴展(位擴展和字擴展)
若使用8K×8b的6264SRAM芯片構成16K×16b的存儲器,則需要在位數和字數兩個方面同時擴展,如圖4.20所示。圖4.20四片6264SRAM存儲器同時位擴展和字擴展
2.用存儲器芯片構成主存模塊
從高性價比出發(fā),計算機系統(tǒng)的實際主存容量往往小于其允許的最大主存空間。根據需要的容量,主存設計可能只需要設計幾個主存模塊;根據讀寫要求,不同的主存模塊可以選用不同類型的存儲器芯片,比如,存放程序的主存模塊可以用RAM或ROM芯片構成,存放數據的主存模塊應該用RAM芯片構成。所以,主存設計既要用RAM芯片,也要用ROM芯片。
1)用SRAM芯片構成主存模塊
在早期Intel處理器構成的計算機系統(tǒng)中,主存空間不大,所以通常用SRAM構成主存模塊。
例4.1在8086處理器構成的微機系統(tǒng)中,用6264SRAM存儲器芯片設計16KB的主存模塊,使其地址范圍為A0000H~A3FFFH。
解16KB的主存模塊需要用兩片6264芯片構成,利用圖4.19的等效存儲器2與8086系統(tǒng)總線連接,字地址的低13位(A1~A13)用來選擇16位存儲器內部的某個字,字地址的高6位(A14~A19)作為地址譯碼電路的輸入,用來生成存儲器芯片的片選信號。圖4.21中的連接及譯碼電路實現了等效存儲器2占用主存地址范圍A0000H~A3FFFH的要求,其中地址為偶數的字節(jié)單元在IC3中,地址為奇數的字節(jié)單元在IC4中。圖4.21SRAM存儲器(等效存儲器2)與6位8086系統(tǒng)總線連接電路
2)用EPROM芯片構成主存模塊
Intel8088處理器與8086處理器的主要差別在于對外的數據線僅為8根,對應系統(tǒng)的主存結構也僅為單一存儲體,所以設計主存時除了不需要存儲體選擇信號之外,其他方面的設計與8086系統(tǒng)的主存一致。
例4.2在Intel8088處理器構成的系統(tǒng)中,使用EPROM2764芯片與8位ISA總線連接,構成8088系統(tǒng)的引導程序存儲區(qū),使其地址范圍為FE000H~FFFFFH(8086/88處理器的啟動地址為FFFF0H)。
解2764是ROM芯片,在使用2764芯片時,僅用于將其存儲的內容讀出。其讀出過程與RAM類似,即加載要讀出單元的地址,然后使CE和OE均有效(低電平),則在芯片的D0~D7上就可以輸出要讀出的數據。2764芯片與8位ISA總線的連接如圖4.22所示,圖中譯碼使該芯片構成的主存模塊地址范圍為FE000H~FFFFFH。圖4.22用EPROM構成主存模塊的電路
3)用EEPROM芯片構成主存模塊
在RISC-V的64位體系結構中,主存的總地址空間為264個字節(jié)單元。RISC-V系統(tǒng)的主存分配如圖4.23所示。圖4.23RISC-V系統(tǒng)的主存分配
例4.3用EEPROM98C64A構成RISC-V系統(tǒng)中從0000000000400000H開始的32KB指令存儲器。
解假設系統(tǒng)工作前程序已存入指令存儲器,計算機系統(tǒng)運行時程序是不被修改的,所以指令存儲器可以用ROM芯片構成。指令在指令存儲器中的單元地址由程序計數器PC提供,欲設計的主存模塊起始地址0000000000400000H為4字節(jié)對齊地址,所以尋址32位指令字使用字地址(不用主存地址的低2位)即可。98C64A為8KB容量,構成32KB指令存儲器需要4個芯片,4個芯片同時工作,一次讀出32位指令I。圖4.24是在RISC-V系統(tǒng)中用98C64A構成的32KB指令存儲器的連接圖。圖4.24用EEPROM構成主存模塊的電路
4)內存條(用DRAM芯片構成主存)
內存條是個人計算機和高性能工作站、服務器的重要組成部分。由于個人計算機和高性能工作站、服務器的主存要求容量大、速度快(相對于外存)、功耗低且造價低廉,而動態(tài)隨機訪問存儲器(DRAM)恰恰具備這些特點,因此這些計算機的主存無一例外地采用了DRAM存儲器。將多片雙倍數據率同步DRAM(DDRSDRAM)存儲器芯片采用位擴展(單個Rank)或位擴展+字擴展(多個Rank)的方式連接在一起,并焊在一小條印刷電路板上,稱之為內存條。使用時,將內存條插在計算機主板的內存條插槽上。
常見的內存條通常分為以下幾種類型:
(1)RDIMM(RegisteredDual-Inline-Memory-Modules,帶寄存器緩沖的雙列直插式存儲模塊)主要用于服務器。
(2)LRDIMM(Load-ReducedDual-Inline-Memory-Modules,低負載雙列直插式存儲模塊)主要用于服務器。
(3)UDIMM(UnregisteredDual-Inline-Memory-Modules,無緩沖雙列直插式存儲模塊)主要用于臺式機(個人計算機)。
(4)SODIMM(SmallOutlineDual-Inline-Memory-Modules,小型雙列直插式存儲模塊)外形尺寸更小,其他特點與UDIMM相同,用于筆記本電腦
(5)ECCUDIMM(ErrorCorrectingCodeUDIMM,帶檢錯和糾錯編碼的無緩沖雙列直插式存儲模塊)和ECCSODIMM(ErrorCorrectingCodeSODIMM,帶檢錯和糾錯編碼的小型雙列直插式存儲模塊)分別在UDIMM和SODIMM的基礎上,增加了對8位檢錯和糾錯編碼的支持,主要用于高端臺式機、高端筆記本電腦和服務器。
圖4.25為某4GB(512M×64b)DDR4SDRAMUDIMM內存條電路,該內存條電路板的外形及尺寸如圖4.26所示。
UDIMM內存條要求數據線寬度為64位,且讀寫的每個數據必須是64位的,因此該內存條使用了4片512M×16b的DDR4SDRAM芯片H5AN8G6NAFR進行“位擴展”連接,得到了一個512M×64b的存儲器,如圖4.25所示。圖4.25某4GB(512M×64b)DDR4SDRAMUDIMM內存條電路圖4.26DDR4SDRAMUDIMM內存條電路板的外形及尺寸(單位:mm)
圖4.25所示的電路連接方式符合存儲器“位擴展”的特點:
(1)各芯片的數據線(DQL0~DQL7、DQU0~DQU7)單獨引出,作為64位數據線的一部分。
(2)64位數據中的每8位都有自己的數據選通信號(差分對DQS0~DQS7,信號名后綴分別為“_t”和“_c”),以及寫數據掩碼信號(DM0_n/DBI0_n~DM7_n/DBI7_n),這些信號也是單獨引出的。
(3)時鐘、片選、地址以及其他命令信號,都采用并聯(lián)連接方式,即每個芯片功能相同的引腳連接到一起,統(tǒng)一引出,用來同時控制4個存儲器芯片(IC1~IC4)。
(4)在訪問該內存條時,4個DDR4SDRAM存儲器芯片(IC1~IC4)同時被選中。
3.存儲器與CPU的速度協(xié)調
對于簡單的計算機,只要將半導體存儲器芯片接在計算機的系統(tǒng)總線上便可以構成主存儲器,在構成主存時必須注意存儲器與CPU速度上的協(xié)調。
CPU讀(或寫)主存時,由CPU內部的時序電路形成CPU讀(或寫)主存的機器周期(即總線周期或CPU周期),由CPU內部的控制器產生讀(或寫)主存的控制信號,其寫主存時序如圖4.27(a)所示。圖4.27CPU寫主存與存儲器寫操作的時序
4.多體交叉存儲器
若要提高計算機主存系統(tǒng)的讀寫速度,除了改進主存儲器芯片的實現方式和制造工藝、引入Cache等方法之外,還可以考慮引入并行主存系統(tǒng),即將主存分為多個存儲體(模塊),使多個存儲體輪流交叉或并行工作,從而提高主存系統(tǒng)整體的讀寫速度。這樣的存儲器稱為多體交叉存儲器。
1)多體并行訪問
的,因此,32位的數據要占四個主存地址單元。由圖4.28可以看到,一個32位的數據分別放在四個不同的存儲體中。為了增加訪問主存的靈活性,四個存儲體可以同時被選中,傳輸32位數據;也可以只選中兩個存儲體(同時選中存儲體0和存儲體1,或者同時選中存儲體2和存儲體3),傳輸16位數據;也可以只選中任意一個存儲體,傳輸8位數據。圖4.2880386、80486系統(tǒng)主存的分體組織結構
2)多體交叉訪問
為提高主存的訪問速度,多體交叉存儲器還有另一種訪問方式,即多個模塊順序輪流進行訪問,也稱為交叉訪問。
多體存儲器中的體數一般是2的冪指數,如2個、4個、8個或更多。圖4.29是4個體的多體存儲器簡化框圖,其存儲器地址與80x86存儲系統(tǒng)一樣采用交叉編址。四個存儲體是完全獨立的,各自有自己的地址寄存器、地址譯碼器和數據寄存器DR。數據總線的寬度僅為每個存儲單元的數據寬度。圖4.29四體交叉訪問存儲器簡化框圖
假定每個存儲體的訪問時間為T,如果串行訪問四個連續(xù)地址(分布在4個存儲體上)則需要4T。現將該存儲器的訪問過程改為交叉進行,如圖4.30所示,控制部件每隔Δt啟動一個存儲體,且4×Δt=T。應保證T/Δt小于等于存儲體的數量N(即Δt·N≥T),這樣才能保證連續(xù)訪問時存取數據的正確性。
圖4.30四體存儲器交叉訪問示意圖
從以上分析可見,采用多體交叉存儲器可以有效地提高存儲器的存取速度。目前,構成計算機主存的DDR4SDRAM芯片內部都是由多個存儲體(Bank)構成的。如4.2.2節(jié)中提到的H5AN8G6NAFR芯片內部由兩個模組(BankGroup)共8個存儲體(Bank)構成。如果SDRAM控制器能夠充分利用這8個存儲體輪流交叉工作,可大幅度提高主存的整體訪問速度。由此可見,SDRAM控制器內部控制算法的優(yōu)劣也會影響主存速度。
現在主流的高性能處理器內部通常集成了內存控制器,而內存控制器中的多個SDRAM控制器可以包含多個控制單元(比如兩個、三個或四個),由此形成兩通道、三通道或四通道的主存結構,每個SDRAM控制單元(通道)可連接一個或多個內存條,多個通道交叉或并行工作,可進一步提升主存的速度。所以,無論是多通道主存系統(tǒng),還是構成主存的DDR4SDRAM芯片內部,都采用了多體交叉存儲器的形式。
4.3高速緩沖存儲器
4.3.1工作原理
高速緩沖存儲器的工作建立在程序及數據訪問的局部性原理之上。對大量程序執(zhí)行情況的分析表明:在一段較短的時間間隔內,程序集中在某一較小的主存地址空間上執(zhí)行,這就是程序執(zhí)行的局部性原理。同樣,對數據的訪問也存在局部性現象
引入Cache后,Cache和主存構成了具有兩級存儲層次的Cache-主存系統(tǒng),Cache所處位置如圖4.31所示。Cache的構成主要包括替換/更新管理模塊、地址映射與變換模塊以及小容量高速緩存Cache,如圖4.32所示。圖4.31Cache所處位置圖4.32Cache的構成
當CPU執(zhí)行程序時需從主存讀指令或讀/寫數據,此時主存地址從地址線上被加載至主存的同時也加載到地址映射與變換模塊上。若在地址映射表中檢索到要讀/寫的信息在高速Cache中,則通過地址映射表將地址轉換為Cache地址,CPU依據Cache地址在Cache中讀/寫信息,這種情況稱為“命中”。若在地址映射表中檢索到要讀/寫的信息不在Cache中,則稱“未命中”,此時,CPU在主存中讀出指令或讀/寫數據,同時將包括讀/寫信息在內的一個主存塊讀出加載或替換Cache中的某一存儲塊。由于主存到Cache的加載或替換是以塊為單位的,一旦某主存塊被放置在Cache中,對其塊內相鄰地址的訪問必定可以在Cache中進行。
利用程序執(zhí)行的局部性原理合理設計Cache,使得程序執(zhí)行過程中大量訪存操作實際在Cache而非主存中,這樣就可以提高CPU的訪存速度,加快程序的執(zhí)行。值得注意的是,Cache中存儲的內容與主存的相應存儲塊的內容是完全一樣的,僅是主存內容的拷貝,只是為了提高運行速度而將其放在Cache中的。同時,為了提高速度,整個Cache系統(tǒng)都是由硬件實現的。
4.3.2地址映射與變換
在Cache工作過程中,需要將主存的信息拷貝到Cache中,這就需要建立主存地址與Cache地址之間的映射關系,并將該關系存于地址映射表中,這就是主存地址到Cache地址的地址映射。在程序執(zhí)行中,如果命中,CPU就從Cache中存取信息,此時需要將主存地址轉換為Cache地址,才能對Cache進行訪問。將主存地址轉換為Cache地址稱為地址變換。地址映射與變換有如下三種基本方式。
1.全相聯(lián)地址映射方式
為了充分利用程序執(zhí)行的局部性原理,提高效率,通常將Cache和主存分成若干容量相等的存儲塊。例如,主存為64MB,Cache為32KB,若以4KB大小分塊,Cache被分為塊號為0~7的8個塊,塊號可用3位二進制編碼表示;而主存分為16K個塊,塊號為0~16383,塊號需要用14位二進制編碼表示。分塊情況如圖4.33所示。圖4.33全相聯(lián)地址映射示意圖
全相聯(lián)地址映射關系如圖4.33所示。這時,采用相聯(lián)存儲器構成地址映射表,且使相聯(lián)存儲器單元數與Cache塊數相同(本例為8),這樣,Cache塊號就可以作為地址映射表的表項地址(即相聯(lián)存儲器單元地址),然后在相聯(lián)存儲器的存儲單元中記錄裝入Cache的主存塊的塊號(即標記)。本例中,相聯(lián)存儲器每個單元的位數應為圖4.34全相聯(lián)地址變換
2.直接地址映射方式
下面仍以前面給出的數據為例說明直接地址映射。在直接映射方式下,要將主存先以Cache的容量(32KB)分區(qū),則64MB的主存就被分成0~2047個區(qū),即2K個區(qū),而后Cache和主存的每個區(qū)再以4KB分塊,如圖4.35所示。圖4.35直接地址映射示意圖
直接地址映射規(guī)則為:主存各區(qū)中塊號相同的存儲塊只能裝入Cache中相同塊號的存儲塊中。
例如,主存所有區(qū)中的0號塊只能裝入Cache的0號塊中,主存所有區(qū)中的1號塊只能裝入Cache的1號塊中,以此類推,如圖4.35所示。這種映射使主存塊號與Cache塊號保持一致。
下面分析直接映射的地址變換過程。同樣假定某一時刻CPU欲訪問的主存地址為28B57A4H。此時該主存地址由區(qū)號、區(qū)內塊號、塊內地址三部分組成,如圖4.36所示。在本例中,主存地址的低12位是塊內地址,中間3位表示區(qū)內塊號,最高11位用來表示區(qū)號。圖4.36直接映射方式下主存地址結構圖4.37直接地址變換
3.組相聯(lián)地址映射方式與實現
全相聯(lián)地址映射和直接地址映射方式各有優(yōu)缺點,組相聯(lián)地址映射方式就是將兩者的優(yōu)點結合而盡可能減小兩者的缺點。組相聯(lián)地址映射的存儲結構是將Cache先分組,組內再分塊。而主存結構是先以Cache的總容量分區(qū),區(qū)內按Cache的方法分組,組內再分塊。所以Cache和主存的地址結構如圖4.38所示。圖4.38Cache和主存地址結構
組相聯(lián)地址映射規(guī)則為:主存與Cache間的地址映射是組間直接映射而組內全相聯(lián)映射,也就是說主存某組中的塊只能裝入Cache的同號組中,但可以裝入Cache同號組中的任意一塊內。這就要求在地址映射表中記錄的標記為主存區(qū)號和(組內)塊號。
1)2路組相聯(lián)地址映射
假設某計算機主存的最大尋址空間為2K,按字節(jié)編址,Cache共有512個字節(jié),塊大小為64個字節(jié)。因此,主存共32塊(2KB/64B),Cache共8塊(512B/64B)。若Cache采用2路組相聯(lián)結構,則主存與Cache之間的地址映射方式如圖4.39所示。圖4.392路組相聯(lián)地址映射
2路組相聯(lián)的地址映射規(guī)則為:主存某區(qū)的一塊,如果要裝入Cache,可以裝入Cache任何一路相同塊號的位置。比如,CPU讀主存,給出的11位主存地址為“01110011000B”,說明CPU要訪問的是主存第3區(qū)、第2塊的第24個字節(jié)(主存地址劃分見圖4.39左下角)。假設Cache未命中,則Cache管理硬件會試圖把主存第3區(qū)的第“2”塊裝入Cache,按照2路組相聯(lián)的地址映射規(guī)則,其可裝入Cache的位置有2個選擇:第1路的第“2”塊,或者第2路的第“2”塊,如圖4.39所示。
上述2路組相聯(lián)的地址映射規(guī)則,如果按照“組”的概念來解釋,可以理解為Cache按照組的數量分路,主存按照組的數量分區(qū)。例如,如果Cache共4組,則Cache每4塊為一路,主存每4塊為一個區(qū)。所以Cache的路內塊號、主存的區(qū)內塊號,都可以理解為組號。具體到本例,解釋如下(參考圖4.39):
(1)2路組相聯(lián),即每組2塊。
(2)Cache每路4塊,則Cache共4組。
(3)Cache“組”和“路”的對應關系是:
①第0組的兩塊由Cache上下兩路的第0塊構成;
②第1組的兩塊由Cache上下兩路的第1塊構成;
③第2組的兩塊由Cache上下兩路的第2塊構成;
④第3組的兩塊由Cache上下兩路的第3塊構成。
(4)主存地址劃分中的索引(Index)字段,其含義是主存的區(qū)內塊號,或者Cache的路內塊號(因為主存是按照Cache每一路的容量分區(qū)的,即主存每一區(qū)和Cache每一路在容量和內部分塊規(guī)則上是一樣的)。因為Cache的路內塊號、主存的區(qū)內塊號都可以理解為組號,所以主存地址的索引字段即為組號。
(5)在進行主存Cache地址映射時,如果要把主存第3區(qū)的第2塊(即第2組)裝入Cache,可以裝入Cache第2組(由上下兩路的第2塊構成)的任何一塊中,即組間直接映射、組內全相聯(lián)映射,符合組相聯(lián)地址映射的一般規(guī)則。
上述解釋只是為了說明本例中的Cache結構和組相聯(lián)地址映射之間的關系。為了便于理解,下文仍以“路”的概念來說明Cache地址映射和地址變換的過程。
2)2路組相聯(lián)地址變換
圖4.40是2路組相聯(lián)地址變換的過程,描述了CPU讀主存時Cache命中的情況。圖4.402路組相聯(lián)地址變換
假設CPU讀地址為“01110011000B”的主存單元數據(該數據是主存第3區(qū)、第2塊的第24個字節(jié),主存地址劃分見圖4.40左下部),Cache管理硬件負責查找地址映射表,看CPU訪問的主存地址是否命中Cache,如果命中Cache,則從Cache中讀取該數據;如果未命中Cache,則讀主存,將包含該數據的主存塊裝入Cache(如果按照當前地址映射規(guī)則,Cache沒有空閑塊,還需進行塊替換操作)。如圖4.40所示,如果CPU讀主存數據時命中Cache,只需以下三步,即可從Cache中得到所需數據:
(1)根據主存地址中的索引字段(即主存區(qū)內塊號,或Cache的路內塊號),按地址訪問,讀取地址映射表上、下兩路的第2行;同時,根據主存地址的索引、塊內地址字段按地址訪問,讀取Cache上、下兩路第2塊內部地址為24的字節(jié)數據。
(2)地址映射表上、下兩路第2行的內容被讀出,分別作為兩個數字比較器的輸入(有效位和標記字段分別連接數字比較器的G、B兩個輸入端),數字比較器A輸入端的數據由主存地址的標記(Tag)字段(即主存區(qū)號)提供;同時,Cache上、下兩路第2塊內部地址為24的字節(jié)數據被讀出,作為二選一選擇器的左右兩路輸入。
(3)經過比較,第1路數字比較器的輸出為假(Cache第1路的第2塊“不是”主存第3區(qū)第2塊的內容),第2路數字比較器的輸出為真(Cache第2路的第2塊“是”主存第3區(qū)第2塊的內容)。兩個數字比較器的輸出信號控制二選一選擇器,使左側的輸入(即Cache第2路第2塊內部地址為24的字節(jié)數據)到達輸出,送至CPU。
通過以上三個步驟,CPU從Cache中得到了地址為“01110011000B”的主存數據。
由圖4.40可知,Cache和地址映射表都由按地址訪問的SRAM構成。要實現“2”路組相聯(lián),則需要“2”個數字比較器,以及一個“二”選一的選擇器??梢哉J為,構成地址映射表的兩路SRAM,再加上兩個數字比較器,即組成了具有兩個單元的相聯(lián)存儲器,可實現按內容快速查找。查兩路地址映射表和讀取兩路Cache數據是并行執(zhí)行的,引入多路選擇器的目的就是為了配合Cache命中時數據的快速讀出。
3)4路組相聯(lián)地址映射與變換
在其他參數不變的情況下,將Cache的組織結構改為4路組相聯(lián),主存與Cache之間的地址映射方式如圖4.41所示。
圖4.42是4路組相聯(lián)地址變換的過程。
圖4.414路組相聯(lián)地址映射
圖4.424路組相聯(lián)地址變換
假設CPU讀地址為“01110011000B”的主存數據(主存第7區(qū)、第0塊的第24個字節(jié)),命中Cache,CPU從Cache取得數據也只需要以下三個步驟:
(1)根據主存地址中的索引字段,按地址訪問,讀取全部4路地址映射表的第0行;同時,根據主存地址的索引、塊內地址字段按地址訪問,讀取全部4路Cache第0塊內部地址為24的字節(jié)數據。
(2)4路地址映射表的第0行被讀出,分別作為四個數字比較器的輸入(有效位和標志字段分別連接數字比較器的G、B兩個輸入端),數字比較器A輸入端的數據由主存地址的標記(Tag)字段提供;同時,4路Cache第0塊內部地址為24的字節(jié)數據被讀出,作為四選一選擇器的輸入。
(3)經過比較,只有第3路數字比較器的輸出為真。4個數字比較器的輸出信號控制四選一選擇器,使第3路的輸入到達輸出,送至CPU。至此,CPU從Cache得到要讀取的主存數據。
由圖4.42可知,要實現“4”路組相聯(lián),則需要“4”個數字比較器,以及一個“四”選一的選擇器。
4)8路組相聯(lián)地址映射與變換
同理,在其他參數不變的情況下,將Cache的組織結構改為8路組相聯(lián),主存與Cache之間的地址映射方式如圖4.43所示。因為Cache共8塊,路數與Cache的總塊數已相同,則每路只有一塊,Cache每一路的內部、主存每一區(qū)的內部也就無須塊尋址,主存地址劃分(如圖4.43左下角所示)無須索引字段。顯然,如果主存的某塊要裝入Cache,可以裝入Cache的任何一塊,這就是全相聯(lián)映射方式。本例中,為了實現地址變換,需要8個數字比較器,以及一個八選一的選擇器。圖4.438路組相聯(lián)地址映射(全相聯(lián))
5)1路組相聯(lián)地址映射(直接映射)
如果將Cache的組織結構改為1路組相聯(lián)(其他參數不變),主存與Cache之間的地址映射方式如圖4.44所示。很顯然,主存的某塊要裝入Cache,只有一個位置可供選擇(區(qū)內塊號必須與Cache塊號對應),這就是直接映射方式。如果Cache采用1路組相聯(lián)(直接映射)的組織方式,為了實現地址變換,只需一個數字比較器,無須多路選擇器,用比較器的輸出控制Cache輸出數據的三態(tài)門即可。圖4.441路組相聯(lián)地址映射(直接映射)
4.3.3替換算法
當要訪問的主存塊不在Cache中,即未命中時,就需要將主存塊調入Cache。在采用全相聯(lián)地址映射和組相聯(lián)地址映射時,如果當前Cache中沒有空閑塊,則需要在Cache中選擇一個替換塊,用于放置新調入的主存塊。
主要的替換算法有如下幾種:
(1)隨機替換(RAND)算法。
(2)先進先出(FirstInFirstOut,FIFO)算法。
(3)近期最少使用(LeastRecentlyUsed,LRU)算法。
(4)最不經常使用(LeastFrequentlyUsed,LFU)算法。
(5)最優(yōu)替換(OptionalReplacement,OPT)算法。
例4.4假定程序在主存中占用了5個存儲塊,Cache容量為3個存儲塊,采用全相聯(lián)映射。CPU執(zhí)行程序的順序為P2、P3、P2、P1、P5、P2、P4、P5、P3、P2、P5、P2。試分析采用FIFO算法、LRU算法和OPT三種算法的Cache命中情況。
解采用FIFO算法、LRU算法和OPT三種算法的Cache命中情況如表4.3所示。
4.3.4更新策略
從前述內容可知,Cache的內容是主存部分內容的拷貝,其內容應當與主存的內容保持一致。很顯然,只是從Cache中讀出指令或數據是不會改變Cache中的內容的,而CPU對Cache單元的寫就會改變其內容。為了保證主存與Cache內容的一致性,主存的內容必須隨著Cache內容的改變而更新。由于程序Cache是只讀的,不存在一致性問題,所以該問題只發(fā)生在數據Cache中。在數據Cache被改寫后,如何更新主存的內容,也即如何保持主存與Cache內容的一致性,可采取下述的更新策略(也稱為寫策略)。
1.寫回法
寫回法是當CPU寫Cache命中時,只將數據寫入Cache而不立即寫入主存。只有當由CPU改寫過的塊被替換出去時該塊才寫回到主存中。
2.寫直達法
寫直達法也稱作全寫法,是當CPU寫Cache命中時,在將數據寫入Cache的同時也寫入主存,從而較好地保證了主存與Cache內容的一致性。
4.3.5Cache性能測量
Cache的性能直接影響Cache主存系統(tǒng)的性能,進一步影響計算機系統(tǒng)的性能。Cache設計的好壞可以用性能指標衡量,常用的性能指標有命中率、平均訪問時間、加速比、成本等。
1.命中率(HitRate)
命中率h定義為
2.平均訪問時間(AverageAccessTime)
假設Cache的訪問時間為TC,主存的訪問時間為TM,Cache的命中率為h,則兩層結構的Cache主存系統(tǒng)的平均訪問時間T可表示為
例4.5若某計算機中的Cache以1個字為一塊,CPU從主存0地址開始順序讀10個字,重復100次,Cache命中率為99%,TM為100ns,TC為10ns。Cache主存系統(tǒng)的平均訪問時間為多少?若主存采用多體交叉結構,10個字的塊可以用TM時間調入/替換Cache,則Cache主存系統(tǒng)的平均訪問時間又為多少?
解(1)在1個字為一塊的情況下,利用公式(4.5)可得Cache主存系統(tǒng)的平均訪問時間T為
(2)在10個字為一塊的情況下,利用公式(4.5)可得Cache主存系統(tǒng)的平均訪問時間T為
可見,增大塊的尺寸,并采用高速的塊傳輸技術(如本例的主存多體交叉結構),可以減少調入/替換開銷。
3.加速比(SpeedupRatio)
在計算機中設置Cache的主要目的在于提高存儲系統(tǒng)的速度,降低存儲系統(tǒng)的價格。尤其是速度,它是計算機設計與發(fā)展中永恒的主題。因此,Cache設計中人們最關心的性能指標就是加速比。
根據Amdahl定律,Cache主存系統(tǒng)的加速比SP定義為
例4.6在例4.5(1)的情況下,Cache主存系統(tǒng)的加速比為多少?
解根據公式(4.6)可得
對于本例,只有命中率為100%時才能達到加速比的極限10,而實際上這是做不到的,只是希望加速比盡可能大。
4.成本
Cache的出現是為了提高CPU訪問主存儲器的速度,同時又可以降低成本。假設計算機中的主存與Cache的容量分別為S1和S2,顯然S1?S2;主存與Cache的單位價格分別為C1和C2,且C1是價格較低的。那么Cache-主存系統(tǒng)的平均價格C為
盡管Cache的價格比主存高,但是當S1?S2時,Cache-主存系統(tǒng)的平均價格接近于主存的價格。
4.3.6Cache性能提高
為了克服CPU與主存間的速度差距,使兩者在速度上更好地匹配,Cache應運而生。但隨著技術的發(fā)展,一級Cache的加入已不足以彌補CPU與主存間較大的速度差,所以兩級、三級甚至四級Cache已出現。這種多級Cache系統(tǒng)通過增加存儲層數,使得CPU與主存間較大的速度鴻溝可以得到有效的彌合。一個四級Cache結構從上到下的每一層級分別用L1Cache(最靠近CPU)、L2Cache、L3Cache和L4Cache(最靠近主存)表示。
兩級Cache的總未命中率(或稱總缺失率)是由兩級Cache各級缺失率來決定的,即
總缺失率=L1缺失率×L2缺失率
例4.7在10000次的內存訪問中,L1Cache缺失400次,L2Cache缺失40次,則兩級Cache的總缺失率為多少?
解L1Cache的缺失率m1為
L2Cache的缺失率m2為
利用公式(4.8)得到兩級Cache的總缺失率m為
顯然,兩級Cache有更低的缺失率。本例的缺失率從一級的4%或10%降為兩級的4‰。
例4.8為主存創(chuàng)建的兩級Cache性能參數如表4.4所示。
假設Cache命中時的訪問時間為1ns,問:
(1)Cache系統(tǒng)的平均訪問時間是多少?總缺失率是多少?
(2)Cache主存系統(tǒng)的平均訪問時間是多少?.
2.降低Cache的缺失率
1)Cache缺失類型
Cache缺失有三類:強制缺失(CompulsoryMisses)、容量缺失(CapacityMisses)和沖突缺失(ConflictMisses)。
(1)強制缺失。程序執(zhí)行時第一次訪問的主存塊,因其一定不在Cache中而造成缺失,此為強制缺失。強制缺失大多是不可避免的。
(2)容量缺失。Cache容量有限,不能包含程序執(zhí)行時欲訪問的所有主存塊。當Cache已滿且又遇到程序欲訪問的主存塊未在Cache中時,容量缺失出現。容量缺失是常見的Cache缺失。
(3)沖突缺失。Cache中有空閑塊,但地址映射方案將有用的Cache塊替換掉,使得未來可能因再次使用被替換掉的有用塊而產生缺失,此為沖突缺失。沖突缺失主要發(fā)生在采用直接地址映射方案的Cache系統(tǒng)中。
例4.9某系統(tǒng)中Cache由4塊組成,程序執(zhí)行涉及的主存塊地址(十進制表示)依次如表4.5所示。
表4.5例4.9主存塊地址
試分析:
(1)采用直接地址映射時,Cache的命中情況。
(2)采用全相聯(lián)地址映射和近期最少使用(LRU)替換算法時,Cache的命中情況。
2)合理設計Cache塊尺寸根據程序執(zhí)行的局部性,Cache塊越大,缺失率會越小。但在Cache容量一定的情況下,Cache塊的尺寸增加較多,會使塊的數量減少,使塊的替換更加頻繁,反而會提高缺失率。因此,在Cache容量一定的情況下,需要尋找使缺失率達到最低點的塊尺寸B最佳,如圖4.45所示??梢?要合理設計Cache塊尺寸,而不是越大越好;另外,增加塊尺寸也會增加未命中的開銷。
3)合理增加Cache容量
增加Cache容量是降低容量缺失最直接的方法。如圖4.46所示,在Cache容量比較小的時候,隨著容量的增加,缺失率快速下降。隨著Cache容量進一步變大,缺失率下降變得比較緩慢。當Cache的容量能裝下CPU要執(zhí)行的所有程序和數據時,命中率就達到了100%。另外,Cache容量越大,圖4.45中的B最佳也會越大,缺失率的最低點也會更低。圖4.46缺失率m與容量S大小的關系
4)合理設置相聯(lián)度
在Cache容量一定的前提下,采用直接地址映射方式的Cache具有較低的命中率,采用全相聯(lián)地址映射方式的Cache具有較高的命中率,而采用組相聯(lián)地址映射方式的Cache具有高命中率和低復雜度較理想的平衡,所以在實際計算機系統(tǒng)中均采用組相聯(lián)地址映射方式。
5)硬件預取
在Cache之外增加專門的硬件,通過一定的算法判斷哪些指令和數據在近期極有可能會被訪問到,在主存空閑時,提前將這些指令和數據裝入Cache,這是解決強制缺失的有效方法。注意,如果預取影響了對正常未命中的處理,會降低性能。
6)編譯優(yōu)化
通過編譯器優(yōu)化輸出代碼,無須修改硬件。編譯器可以在不影響程序運行結果的情況下,改變程序中模塊或指令的位置,改善指令和數據訪問的時間和空間局部性,從而降低缺失率。
3.減少Cache開銷
減少Cache命中與未命中時的開銷,有助于Cache性能的提高??梢詮腃ache設計的多處細節(jié)入手,例如:(1)Cache訪問流水化。把對L1Cache的訪問過程改造成流水線方式,可以提高時鐘頻率及訪問Cache的帶寬。
(2)非阻塞Cache技術。在Cache未命中、啟動主存裝入新塊時,Cache仍允許CPU訪問其他命中的數據。對于采用流水線方式、允許指令亂序執(zhí)行的計算機,使用非阻塞Cache可以使性能得到明顯提升。但非阻塞Cache大大增加了Cache控制器的復雜度。
(3)使讀未命中優(yōu)先于寫。如果Cache讀未命中,且Cache被替換的塊需要寫回主存,可以先將被替換的塊存入寫緩沖器,然后從主存把需要的塊裝入Cache,最后再把替換的塊從寫緩沖器寫入主存。
4.4虛擬存儲器
4.4.1虛擬存儲器概述在虛擬存儲器(VirtualMemory,VM)出現之前,計算機系統(tǒng)的所有程序共享一個主存物理地址空間,為了防止沖突,每個機器語言程序必須十分清楚計算機的系統(tǒng)結構,這造成了沒有辦法阻止用戶程序訪問任何計算機資源,從而可能給系統(tǒng)運行帶來災難性的后果。
虛擬存儲器的結構及在存儲體系中的位置如圖4.47所示,它是在操作系統(tǒng)及輔助硬件的管理下,由主存和大容量外存(目前主要用硬盤)所構成的一個單一的、可直接訪問的超大容量的主存儲器。圖4.47虛擬存儲器的構成
實際上,虛擬存儲器就是主存與硬盤間的虛擬橋梁,用戶與系統(tǒng)實體資源的真實屏障。這個中間存儲層的引入,使主存容量延伸到硬盤,解決了主存容量與成本的矛盾,同時其屏障效應還帶來了其硬件支持現代操作系統(tǒng)三大特征(轉換、保護、共享)的好處。
(1)轉換(Translation)。無論實際主存被誰占用,所有程序的主存空間是一致的;多線程已成為可能,且已大量使用;僅程序中最重要(正在執(zhí)行)的部分在主存中。
(2)保護(Protection)。不同的線程(或進程)互相保護;不同的頁(或段)可以給予特定的行為(只讀、對用戶程序不可見等);保護內核數據免受用戶程序干擾,最重要的是免受惡意程序干擾。
(3)共享(Sharing)。可以將同一主存頁映射到多個用戶,即共享主存。
4.4.2虛擬存儲器管理
1.頁式虛擬存儲器
在頁式虛擬存儲系統(tǒng)中,虛擬地址空間被分成許多固定大小的頁,稱為虛頁或邏輯頁。主存地址空間也被分成若干同樣大小的頁,稱為實頁或物理頁。頁的大小為2的冪指數字節(jié)或字,從幾千字節(jié)到十幾兆字節(jié)不等。所以,虛存地址(也稱虛擬地址或邏輯地址)和主存地址(也稱實地址或物理地址)都包含兩個字段,如圖4.48所示。圖4.48頁式虛擬存儲器的虛存地址和主存地址
1)地址變換
在管理頁式虛擬存儲器時,需要完成虛擬地址到物理地址的變換,該變換是基于全相聯(lián)地址映射并通過頁表來實現的。在頁表中每一條記錄都包含虛頁號所對應的實頁號。如圖4.49所示,頁表通常設置在主存中,表的起始地址可通過頁表基址寄存器來設定。在頁式虛擬存儲器的地址變換中,當程序給出虛擬地址后,CPU以虛頁號為偏移地址查頁表,從而獲得相應的實頁號。將實頁號與虛擬頁內地址連接到一起,便構成了主存的物理地址。圖4.49頁式虛擬存儲器的地址變換
2)快表與慢表
由于頁表設置在主存中,頁式虛擬存儲器工作時,首先要訪問主存中的頁表,進行地址變換,獲得主存地址。然后,再利用主存地址訪問主存,獲得指令/數據。顯然,即使主存命中,也需要兩次訪問主存才能獲得主存信息。前面已提到主存速度比較慢,這必然會降低CPU的速度。若是被訪問的頁不在主存中,那速度就更慢。
為了提高速度,可借鑒Cache的思路,將頁表中最活躍的部分放在Cache存儲器中,構成快表,對快表的查找及管理全用硬件來實現??毂硪话愫苄?它僅是主存中頁表(相對快表可稱其為慢表)的一小部分。只有在快表中找不到要訪問的頁時,才去訪問慢表,以達到快的目的。利用快表的工作思路如圖4.50所示。圖4.50頁式虛擬存儲器快表工作思路
頁式虛擬存儲器的主要優(yōu)點:
(1)主存的利用率高。由于頁的容量較小,每一用戶程序只有不到一頁的浪費,故形成的主存碎片小。
(2)頁表的內容比較簡單。
(3)地址映射與地址變換速度比較快。
頁式虛擬存儲器的主要缺點:
(1)程序的模塊性差。因為頁的大小是固定的,無法與程序模塊保持一致。
(2)頁表很長。如前述例子中頁表長達16M。
2.段式虛擬存儲器
在段式虛擬存儲器中,將完成某種獨立功能的程序模塊定義為一段,例如,主程序、子程序、數據塊、表格等均可定義成一段。程序員在編程時,每一段都可從虛擬地址的0地址開始,并且每一段的長度是不一樣的。
在進行段式虛擬存儲器管理中,應為每一段程序規(guī)定一個段號(也可以定義為某一段名),最方便的辦法是各段段號順序排列(這樣在段表中可省略此項),確定每段的長度,然后在主存中建立一個段表。
段式虛擬存儲器管理地址映射的方法也是基于全相聯(lián)映射,即程序段可裝入主存中的任何位置,裝入順序隨意。當主存基本被占滿,所??臻g不足以存放需裝入的段時,就需依據某種替換算法進行替換。段式虛擬存儲器的地址變換如圖4.51所示。圖4.51段式虛擬存儲器的地址變換
段式虛擬存儲器的優(yōu)點是:
(1)很適合模塊化程序設計。將每一功能獨立的程序模塊定義為一段,既便于程序的開發(fā),又便于虛擬存儲器的管理。
(2)便于程序和數據的共享。此方式能將整段獨立的程序和數據裝入主存,起始地址、段長度均已知,很容易實現共享。
(3)便于信息保護。對裝入段的屬性進行設置,很容易實現對段的保護。段式虛擬存儲器的缺點主要有:由于各段的長度不一樣,在裝入主存時分配地址空間比較麻煩,段與段之間可能會產生比較大的空隙(段間的主存碎片),降低了主存儲器的利用率。
3.段頁式虛擬存儲器
頁式虛擬存儲器和段式虛擬存儲器各有優(yōu)缺點,段頁式虛擬存儲器則結合了兩者的優(yōu)點。
段頁式虛擬存儲器是將程序首先分段(段的概念同前),然后將每段分成大小相同的若干頁。對段來說,要用段表來管理所有各段,段表中存放對應該段的頁表基地址等有關信息,如圖4.52所示。每一段有自己的頁表,用于存放對應本段每一頁的實頁號。顯然,在裝入某一段的各頁時,這些頁在主存中并不一定連
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年電影院廣告投放與品牌合作合同2篇
- 二零二五年知識產權許可特別合同2篇
- 二零二五年度留學國家與學校選擇合同2篇
- 二零二五年網紅直播廣告合作合同1200字范本3篇
- 二零二五版礦山資產轉讓與資源補償合同3篇
- 二零二五年度邊溝工程防滲漏與防水害合同2篇
- 二零二五年度跨江大橋PC構件預制及吊裝工程合同3篇
- 二零二五年度軟件許可與維護合同3篇
- 2025年度網絡安全防護軟件開發(fā)類框架合同3篇
- 小區(qū)物業(yè)保潔勞務合同(2篇)
- 2025年下半年貴州高速公路集團限公司統(tǒng)一公開招聘119人高頻重點提升(共500題)附帶答案詳解
- 資產評估服務房屋征收項目測繪實施方案
- 2025年經濟形勢會議講話報告
- 北師大版小學三年級上冊數學第五單元《周長》測試卷(含答案)
- 國家安全責任制落實情況報告3篇
- 2024年度順豐快遞冷鏈物流服務合同3篇
- 六年級下冊【默寫表】(牛津上海版、深圳版)(漢譯英)
- 合同簽訂培訓
- 電工基礎知識培訓課程
- 鐵路基礎知識題庫單選題100道及答案解析
- 金融AI:顛覆與重塑-深化理解AI在金融行業(yè)的實踐與挑戰(zhàn)
評論
0/150
提交評論