1.存儲器層次結(jié)構(gòu)
- 計算機對存儲器的基本要求:速度快挡鞍,容量大,價格低预烙,三者相互矛盾墨微,速度越快,
位價格
越高扁掸,存儲器容量越大翘县,速度就不可能很快 - 多層次存儲系統(tǒng)的目的:為了解決
容量,速度和價格
三者之間的矛盾谴分,通常把各種不同存儲容量锈麸,不同存取速度和位價格的存儲器,按一定的結(jié)構(gòu)組織起來牺蹄,形成一個多層次的存儲系統(tǒng) - 信息在層次化的存儲系統(tǒng)中進行存儲時需滿足兩個基本原則
-
包含性原則:指在上層存儲器中所存放的內(nèi)容一定是其下層存儲器內(nèi)容的一部分忘伞,即上層存儲器存儲的信息是其下層存儲器
部分內(nèi)容的副本
-
一致性原則:最上層存儲器中的內(nèi)容被修改后,也必須修改該信息保存在其他下層存儲器的
所有副本
沙兰,以保持信息的一致性氓奈,即存放在不同存儲器中的同一數(shù)據(jù),在不同存儲器中要保持相同的值
-
包含性原則:指在上層存儲器中所存放的內(nèi)容一定是其下層存儲器內(nèi)容的一部分忘伞,即上層存儲器存儲的信息是其下層存儲器
- 命中率Hi:Hi表示在存儲器中找到被訪問信息的概率
- 程序運行的局部性原理
- 時間局部性:在一小段時間內(nèi)鼎天,最近被CPU訪問過的程序和數(shù)據(jù)很可能再次被訪問
- 空間局部性:一段時間內(nèi)被CPU訪問的指令和數(shù)據(jù)往往集中在一小片存儲區(qū)域內(nèi)
- 存儲器層次結(jié)構(gòu)中最重要的兩個層次:
- 高速緩存存儲器 Cache:目的是為了提高存儲器的
訪問速度
舀奶,使得CPU訪存速度接近cache
,容量接近主存
训措,由硬件實現(xiàn)
伪节,對所有程序員透明
- 虛擬存儲器:目的是提高存儲器的
容量
,使得用戶在使用內(nèi)存時绩鸣,可面對接近輔存的容量
怀大,訪問速度接近主存
,軟硬件結(jié)合實現(xiàn)
現(xiàn)代存儲系統(tǒng)的層次結(jié)構(gòu)
- 高速緩存存儲器 Cache:目的是為了提高存儲器的
- 存儲器層次結(jié)構(gòu)帶來的問題:
- 地址映射:解決上層副本所在單元地址與下層地址對應(yīng)關(guān)系的問題
- 數(shù)據(jù)一致性問題:存放在不同存儲器中的同一數(shù)據(jù)呀闻,在不同存儲器中要保持相同的值化借,如何保證不同層次存儲器中存放數(shù)據(jù)的一致性
- 地址變換:CPU訪存提供的
主存地址
如何轉(zhuǎn)換為不同層次存儲器中的地址
- 替換策略: 當某層存儲器已經(jīng)存滿數(shù)據(jù),又有新數(shù)據(jù)要裝入時捡多,應(yīng)將哪些數(shù)據(jù)替換出去
2.相聯(lián)存儲器
相聯(lián)存儲器就是選擇存儲單元中的某一個存儲項的內(nèi)容作為地址來對存儲器進行尋址蓖康。這個用來定位存儲單元的字段稱為關(guān)鍵字铐炫,簡稱鍵(key)。故相聯(lián)存儲器中每個存儲單元中存儲的信息都由關(guān)鍵字和數(shù)據(jù)兩部分組成
- 相聯(lián)存儲器按存儲單元中存放的全部或部分內(nèi)容進行訪問的存儲器蒜焊,也稱
按內(nèi)容訪問存儲器(AM Associative Memory)
- 主要用于需快速檢索的場合
- 讀操作
按內(nèi)容訪問
過程:CPU給出的關(guān)鍵字(存儲單元的全部或部分內(nèi)容)和存儲器中所有單元中相應(yīng)信息(counterpart)進行比較倒信,定位到與關(guān)鍵字匹配的
存儲單元后,將此單元所有信息讀出 - AM主要組成
相聯(lián)存儲器
- 存儲體
- 檢索寄存器:存放用于查詢的檢索字
- 屏蔽寄存器:存放
屏蔽碼
泳梆,來屏蔽檢索字中非關(guān)鍵字字段位鳖悠,即屏蔽碼中與關(guān)鍵字對應(yīng)位置1,其余位置0优妙,檢索字和屏蔽碼與操作
后得到關(guān)鍵字值 - 匹配寄存器:關(guān)鍵字通過
比較電路
與所有存儲單元對應(yīng)位
進行比較乘综,若相符,則該存儲單元在匹配寄存器相應(yīng)位置1套硼,匹配寄存器位數(shù) = 相聯(lián)存儲器字數(shù)(存儲單元個數(shù))卡辰,所有存儲單元內(nèi)容都比較完后,匹配寄存器中所有值為1的位對應(yīng)的存儲單元邪意,就是與檢索字匹配成功的存儲單元 - 數(shù)據(jù)寄存器
- 比較電路和譯碼電路
3.高速緩沖存儲器 Cache
特點:
-
速度快
九妈,容量小
,位價格高
- 可加快程序執(zhí)行速度抄罕,解決CPU和主存速度不匹配
- 命中率越高允蚣,CPU訪存速度越接近于Cache的存取速度
- 與主存以
塊
為單位進行數(shù)據(jù)交換于颖,塊由若干字組成呆贿,通常是定長
的 -
cache接收到地址后,首先進行
地址變換
操作森渐,即將主存地址
轉(zhuǎn)換成cache地址
CPU訪存處理流程
- cache讀過程
cache讀
- 地址變換機制可以判斷出
本次要訪問的存儲單元內(nèi)容是否已經(jīng)裝入cache中做入,即是否命中
-
cache命中率越高,CPU
平均訪存時間
越短同衣,但當cache容量大到一定程度時竟块,命中率不會再隨著容量的增加而明顯地增大 -
Cache性能指標
- 命中率:H = N1 / N,CPU訪存N次耐齐,cache命中N1次
- 平均訪存時間Ta:指CPU單次訪存所需要的
平均時間
浪秘,Tc為cache存取時間,Tm為主存存取時間
Ta = HTc + (1-H)×Tm
- 加速比Sp:主存存取時間與平均訪存時間比值
Sp = Tm / Ta - 訪問效率e:cache存取時間與平均訪存時間的比值
e = Tc / Ta - 地址映射與地址變換
- 地址映射機制:就是解決如何將
主存的地址空間
映射到cache的地址空間
埠况,即把主存中的內(nèi)容按照某種規(guī)則裝入到cache中耸携,并建立主存地址與cache地址的映射關(guān)系 - 地址變換:執(zhí)行程序時,應(yīng)首先將主存地址變換成cache地址辕翰,即執(zhí)行
地址變換
- 二者密切聯(lián)系夺衍,采用什么樣的
地址映射方法
,就必然采用與之相對應(yīng)的地址變換方法
- 主存地址和cache地址可分為兩部分:
塊地址
喜命,塊內(nèi)地址
- 主存和cache之間以塊為單位進行數(shù)據(jù)的調(diào)入沟沙,調(diào)出
-
cache中每一塊都增加了
標記字段(Tag)
河劝,用于說明該塊是主存中哪一塊的副本 - CPU訪存時需將
所訪問的主存塊號
與cache中的標記
進行比較,才能判斷出該地址對應(yīng)的存儲單元是否在cache中命中
- 全相聯(lián)映射及其地址變換
- 全相聯(lián)地址映射:指主存中的每一塊都可以映射到cache中的任意塊
- 特點:
最靈活
矛紫,cache利用率高
赎瞎,成本高
,缺點:標記比較的速度比較慢
- 主存地址高m位表示主存塊地址颊咬,低b位表示塊內(nèi)地址
- cache地址同樣劃分為兩部分:高c位表示cache塊地址煎娇,低b位表示塊內(nèi)地址
-
目錄表記錄主存塊與cache塊之間映射關(guān)系,目錄表存放于
相聯(lián)存儲器中
- 目錄表每個存儲字包括三部分:主存塊號贪染,cache塊號缓呛,有效位
- 有效位:表示目錄表中主存塊號和cache塊號建立的映射關(guān)系是否有效
- 目錄表共有2c個存儲字,即cache中每個塊對應(yīng)目錄表中一個存儲字
- 當一個主存塊調(diào)入cache中時杭隙,會同時將主存塊號和cache塊號存入目錄表中哟绊,并將有效位置1
- 當CPU發(fā)來一個訪存地址,地址變換就是根據(jù)主存地址中的塊號查詢目錄表的過程痰憎。若在目錄表找到票髓,且有效位為1,則表示命中铣耘,否則未命中
- 地址映射機制:就是解決如何將
全相聯(lián)映射
- 可以認為每一個目錄表項記錄了某個cache塊是從主存中哪一塊調(diào)入的洽沟,這樣便可以根據(jù)主存訪存地址的塊號來相聯(lián)比較目錄表中的主存塊號,若找到一條表項蜗细,且有效位為1裆操,說明該主存塊已經(jīng)被調(diào)入了cache,此時目錄表中的cache塊號對應(yīng)的cache塊內(nèi)容實質(zhì)上就是主存地址的主存塊號存放的內(nèi)容炉媒,于是便可以直接按照目錄表中的cache塊號和主存地址的塊內(nèi)地址訪問cache
全相聯(lián)映射的地址變換
全相聯(lián)映射的地址變換 - 直接映射及其地址變換
- 直接映射:指主存中的塊只能映射到cache中某個固定的塊中踪区,
- 主存塊和cache塊對應(yīng)關(guān)系公式:
j = i mod 2c- j 為數(shù)據(jù)在cache中的塊號,i 為數(shù)據(jù)在主存中的塊號吊骤,即主存塊號模運算cache總的塊個數(shù)
- 按照cache字塊個數(shù)將主存劃分為若干區(qū)缎岗,即主存每個區(qū)所包含的子塊數(shù)等于cache所包含的字塊數(shù),且每個區(qū)內(nèi)每個字塊和cache的字塊按模關(guān)系一一對應(yīng)
- 使用區(qū)表保存主存塊與cache塊映射關(guān)系
- 區(qū)表組成:
主存區(qū)號
白粉,有效位
传泊,區(qū)表有2c個存儲字,常存放在高速緩沖存儲器中
鸭巴,按地址訪問
- 優(yōu)點:實現(xiàn)簡單眷细,地址變換速度快,缺點:不夠靈活奕扣,cache存儲空間得不到充分利用
直接映射
- 區(qū)表的表項個數(shù)和Cache中塊的個數(shù)相同薪鹦,于是可以建立二者之間的一一對應(yīng)關(guān)系,即第 i 個區(qū)表表項,就是第 i 個cache塊和主存每個區(qū)內(nèi)對應(yīng)第 i 個字塊的映射關(guān)系池磁,這樣便可以
按cache塊號作為地址訪問區(qū)表
奔害,因為每個主存區(qū)的字塊個數(shù)和cache塊個數(shù)相同,即每個主存區(qū)內(nèi)都有一個字塊可以映射到某個cache塊地熄,于是可以看是否有哪個區(qū)對應(yīng)的這一字塊被調(diào)入了cache华临,若在區(qū)表中找到對應(yīng)表項,此時只能說明有某個區(qū)的對應(yīng)字塊已經(jīng)調(diào)入了cache端考,但是仍然不能確定是否是CPU訪存需要的數(shù)據(jù)雅潭,還需進行區(qū)號比較,若區(qū)號也相同却特,則可以確定CPU要訪問的數(shù)據(jù)已經(jīng)在Cache中了
直接映射地址變換過程
直接映射地址變換過程 - 組相聯(lián)映射及其地址變換
- 主存和cache的塊都先進行分組扶供,主存和cache每組包含的塊數(shù)相同
- 組間采用直接相聯(lián)映射,組內(nèi)采用全相聯(lián)映射
- 如圖cache被分成2u組裂明,每組2v塊椿浓,主存共有2s個區(qū),每個區(qū)有2u組
組相聯(lián)映射方式
組相聯(lián)映射的地址變換 - 使用塊表記錄從主存地址到cache地址的映射關(guān)系
- 塊表容量大忻龌蕖:2u+v個存儲字扳碍,即cache的總字塊容量大小
- 每個塊表存儲字主要包含:
區(qū)號
,組號
仙蛉,組內(nèi)塊號
笋敞,有效位
等字段 - 塊表采用
混合
工作方式,塊內(nèi)按照相聯(lián)
方式訪問荠瘪,塊間
進行按地址
訪問 - n路組相聯(lián)指每組n塊
- 組相聯(lián)地址變換過程
- 由于組間是直接映射方式夯巷,所以cache中的每個組,主存中每個區(qū)內(nèi)都對應(yīng)有唯一一個組可以映射到對應(yīng)位置巧还,這里可以認為塊表有 2u 行鞭莽,即
cache中每一組對應(yīng)塊表中的一行
坊秸,于是可以先直接按照主存地址的組號U字段作為地址訪問塊表麸祷,看是否主存的某個區(qū)對應(yīng)組調(diào)入了cache,若按組號U字段作為地址訪問塊表找到了某一塊表項褒搔,此時只能說明有某個區(qū)的對應(yīng)組調(diào)入了cache阶牍,不能確定是否是CPU訪存對應(yīng)的區(qū)和對應(yīng)的組內(nèi)塊號(因為組內(nèi)是全相聯(lián),組任意塊都可以映射到對應(yīng)Cache組的任意Cache塊)星瘾,于是需要對區(qū)號和組內(nèi)塊號進行相聯(lián)比較
走孽,若相符,則可以確定CPU要訪問的存儲單元已經(jīng)調(diào)入了cache
組相聯(lián)地址變換過程
- 由于組間是直接映射方式夯巷,所以cache中的每個組,主存中每個區(qū)內(nèi)都對應(yīng)有唯一一個組可以映射到對應(yīng)位置巧还,這里可以認為塊表有 2u 行鞭莽,即
組相聯(lián)映射
- 替換算法
- 隨機算法(RAND):不考慮cache中各塊使用情況琳状,隨機選擇一個塊作為替換對象磕瓷。特點:
實現(xiàn)簡單
,速度快
,缺點:沒有利用程序局部性特點困食,隨意替換出去的數(shù)據(jù)很有可能馬上又要使用边翁,降低了命中率和cache工作效率 - FIFO先進先出算法:最先調(diào)入cache的主存塊被替換出去,不需記錄各塊使用情況硕盹,故
硬件實現(xiàn)容易
符匾,系統(tǒng)開銷小
-
LRU (Least Recently Used) 近期最少使用算法:以cache中每塊的歷史使用情況為依據(jù),在需要替換時將近期最少使用的塊替換出去瘩例,較好反映了程序的局部性原則啊胶,對
循環(huán)程序
有較高命中率,需記錄cache中各字塊的使用情況垛贤,故實現(xiàn)復雜
焰坪,開銷大
,需為每個字塊設(shè)置計數(shù)器
-
LFR (Least Frequently Used) 最不經(jīng)常使用算法:將訪問次數(shù)最少的塊替換出去聘惦,需為每個字塊設(shè)置
計數(shù)器
琳彩,記錄每個cache塊的訪問次數(shù)
,當需要替換時部凑,將計數(shù)值最小的
塊替換出去露乏,同時將所有塊的計數(shù)值清零
,缺點:不能反映最近的訪問情況
涂邀,只能反映兩次替換時間間隔內(nèi)的使用情況
- 隨機算法(RAND):不考慮cache中各塊使用情況琳状,隨機選擇一個塊作為替換對象磕瓷。特點:
-
cache寫操作及一致性
- 造成cache與主存內(nèi)容不一致的原因主要有如下兩種:
- CPU對cache執(zhí)行寫操作瘟仿,但沒有立即寫主存
- I/O設(shè)備寫主存,但沒有同時寫cache
- 常見的寫策略如下:
- 寫直達法 (Write Through):CPU執(zhí)行寫操作時比勉,將數(shù)據(jù)同時寫入主存和cache劳较,優(yōu)點:
實現(xiàn)簡單
,cache和主存內(nèi)容始終保持一致
浩聋,缺點:頻繁訪存降低平均訪存速度
- 寫回法 (Write Back):CPU執(zhí)行寫操作時观蜗,數(shù)據(jù)只寫入cache,不同時寫入主存衣洁,只有當cache中某個字塊需要替換出去時墓捻,才把
修改過的
cache塊寫回主存,坊夫,優(yōu)點:減少訪存次數(shù)
砖第,有利于提高平均訪存速度
,缺點:增加了cache復雜性
环凿,存在主存與cache內(nèi)容不一致問題
梧兼,影響系統(tǒng)可靠性
,寫回法可分為如下兩種- 簡單寫回法:無論字塊是否被更新智听,都進行寫回操作羽杰,
- 采用標志位寫回法:只在塊被更新時渡紫,才進行寫回操作
- 寫直達法 (Write Through):CPU執(zhí)行寫操作時比勉,將數(shù)據(jù)同時寫入主存和cache劳较,優(yōu)點:
- CPU執(zhí)行寫操作時,若在cache中未命中考赛,存在
寫時是否取
問題腻惠,解決方法如下兩種:- 不按寫分配法:cache寫不命中時,只執(zhí)行對主存的寫入操作
- 按寫分配法:cache寫命中時欲虚,首先執(zhí)行寫主存操作集灌,然后將該主存塊從主存調(diào)入cache
寫回法一般采用按寫分配法,寫直達法采用不按寫分配法
- 造成cache與主存內(nèi)容不一致的原因主要有如下兩種:
- 多級cache
- 數(shù)據(jù)cache和指令cache复哆,分開的好處
4.硬磁盤存儲器
- 由一組盤片組成欣喧,稱為磁盤的
盤片組
,盤片組固定在一個主軸
上梯找,盤面中心是空心的
唆阿,不能記錄信息 - 每個盤面的
有效記錄區(qū)
被劃分為數(shù)目相等
,由內(nèi)向外
排列的同心圓
锈锤,這些同心圓間距相等
驯鳖,稱為磁道
- 啟停區(qū)(著陸區(qū)):磁頭靠近主軸表面,即
線速度最小
的地方久免,這個區(qū)域不存放任何數(shù)據(jù)
浅辙,稱為啟停區(qū)(著陸區(qū))
- 數(shù)據(jù)區(qū):
啟停區(qū)
之外就是數(shù)據(jù)區(qū)
,通常從最外側(cè)磁道開始編號阎姥,起始磁道號為0 - 不同盤面上具有
相同磁道號
的磁道形成一個柱面 - 柱面數(shù) = 磁道數(shù)
- 每個盤面對應(yīng)一個磁頭记舆,磁頭從上到下從0開始編號
- 對文件進行寫入操作通常按柱面進行,即磁頭讀/寫數(shù)據(jù)時首先在同一柱面內(nèi)從0磁頭開始進行操作呼巴,依次向下在同一柱面的不同盤面即磁頭上進行操作泽腮,只有同一柱面所有磁頭全部讀/寫完畢后磁頭才移動到下一柱面,這樣設(shè)計的目的:為了提高讀寫效率衣赶,因為選取不同磁頭是通過電子切換完成诊赊,而選取不同的柱面必須進行機械動作來完成磁頭的移動
- 一個磁道通常被分成若干圓弧線,稱為扇區(qū)府瞄,一個磁道上碧磅,所有扇區(qū)是等長度的
- 硬盤以扇區(qū)為單位進行存取,因此硬盤的可尋址最小單位為扇區(qū)
- 定長記錄格式:每個扇區(qū)中存放的數(shù)據(jù)塊大小固定摘能,特點:
簡單
续崖,空間利用率不高
- 不定長記錄格式:扇區(qū)中存放的數(shù)據(jù)塊大小可變,外圈磁道可以比內(nèi)圈磁道存儲更多的字節(jié)团搞,特點:
靈活性好
,空間利用率高
-
硬盤存儲信息定位常用地址格式:
-
柱面號
即磁道號
多艇,盤面號
也可以用磁頭號
-
- 磁盤進行讀寫時逻恐,大致分為兩個步驟
- 定位柱面(磁道):磁盤驅(qū)動器進行尋道操作,即確定需操作的柱面,定位驅(qū)動系統(tǒng)帶動磁頭做徑向運動
- 定位扇區(qū):主軸系統(tǒng)帶動
磁盤組進行旋轉(zhuǎn)
复隆,將需讀寫的扇區(qū)移動到磁頭上/下方
- 硬盤技術(shù)參數(shù)
- 容量
- 道密度:盤面徑向上單位長度內(nèi)磁道數(shù)量
一個盤片的磁道總數(shù) = 道密度 * 盤片有效半徑 - 位密度:盤面磁道上單位長度所能記錄的二進制位數(shù)
一個磁道的容量 = 位密度 * 磁道周長 - 非格式化容量:
硬盤容量 = 硬盤個數(shù) * 磁盤記錄面數(shù) * 磁道數(shù) * 磁道容量
=硬盤個數(shù) * 磁盤記錄面數(shù) * 道密度 * 盤片有效半徑 * 位密度 * 磁道周長 - 格式化磁道容量:
硬盤容量 = 硬盤個數(shù) * 磁盤記錄面數(shù) * 磁道數(shù) * 每道扇區(qū)數(shù) * 扇區(qū)容量
- 道密度:盤面徑向上單位長度內(nèi)磁道數(shù)量
- 平均尋址時間:磁頭從起始位置到達目標磁道位置拨匆,且定位到目標磁道上目標扇區(qū)所需的平均時間
- 平均尋址時間 = 平均尋道時間 + 平均等待時間
- 平均尋道時間:磁頭到達目標數(shù)據(jù)所在磁道平均時間
- 平均等待時間:到達所訪問扇區(qū)的平均時間,一般取盤片旋轉(zhuǎn)一周時間的一半
- 平均等待時間 = (1 / 轉(zhuǎn)速) / 2
- 轉(zhuǎn)速:單位時間硬盤盤片旋轉(zhuǎn)圈數(shù)
- 數(shù)據(jù)傳輸率:讀寫數(shù)據(jù)時挽拂,
單位時間內(nèi)的數(shù)據(jù)傳輸量
惭每,單位字節(jié)/秒(B/s)
- 容量
5.虛擬存儲器
虛擬存儲器:就是將一部分硬磁盤空間
作為主存來使用,使得計算機的存儲系統(tǒng)容量上接近輔存亏栈,速度上接近主存台腥,成本上接近輔存每位價格
- 程序員可使用
比主存大得多
的存儲空間,按虛存空間編址 - 交換信息的基本單位:
段
绒北,頁
黎侈,段頁
- 虛擬存儲器和Cache的區(qū)別對比
區(qū)別 | 虛擬存儲器 | Cache |
---|---|---|
設(shè)計目的 | 擴大容量 | 提高速度 |
實現(xiàn)手段 | 軟件和硬件共同實現(xiàn) | 硬件實現(xiàn) |
透明性 | 對應(yīng)用程序員透明,對系統(tǒng)程序員不透明 | 對所有程序員透明 |
數(shù)據(jù)塊大小 | 可變闷游,幾十至幾千字節(jié) | 固定峻汉,幾個至幾十字節(jié) |
交換頻率 | 低 | 高 |
數(shù)據(jù)通路 | 輔存和CPU直接不存在直接數(shù)據(jù)通路,主存不命中時脐往,只能先將輔存數(shù)據(jù)調(diào)入主存休吠,然后CPU訪問主存 | CPU與cache和主存間都有數(shù)據(jù)通路,cache不命中時业簿,可直接訪問主存 |
- 虛擬地址:程序員編程時使用的地址蛛碌,即邏輯地址,對應(yīng)存儲空間稱為虛擬地址空間
- 物理地址:即主存地址(實地址)辖源,主存空間被稱為物理地址空間
- 輔存地址:輔助存儲器的地址
- 程序重定位:對程序進行
虛擬地址
到物理地址
變換的過程- 靜態(tài)重定位:程序裝入主存時一次性完成地址變換蔚携,且程序執(zhí)行過程中不再改變,因
靈活性差
很少使用 - 動態(tài)重定位:即在目標程序執(zhí)行過程中克饶,CPU訪存前酝蜒,由硬件地址映射機構(gòu)完成將要訪問的指令或數(shù)據(jù)的虛擬地址向主存物理地址的變換,即地址變換時在程序執(zhí)行期間隨著每條指令讀取和數(shù)據(jù)訪問自動進行的矾湃,特點:
需硬件支持
亡脑,支持程序浮動
,便于利用零散的內(nèi)存空間
邀跃,有利于實現(xiàn)信息共享和虛擬存儲
- 靜態(tài)重定位:程序裝入主存時一次性完成地址變換蔚携,且程序執(zhí)行過程中不再改變,因
- 虛擬存儲器基本思想:程序執(zhí)行時霉咨,按照程序執(zhí)行順序將程序的
一部分
調(diào)入主存,其他部分保留在輔存
拍屑。當需要執(zhí)行存放在輔存中的程序段時途戒,CPU按照某種調(diào)度算法
以頁,段等為單位將其調(diào)入主存
僵驰。硬件和軟件(操作系統(tǒng))共同自動實現(xiàn)對存儲信息的調(diào)度和管理喷斋,基本步驟如下:- 對CPU發(fā)出的訪存地址(虛擬地址)進行內(nèi)部地址變換唁毒,判斷該地址對應(yīng)的存儲單元是否在主存中
- 若在主存,則使用物理地址訪問主存
- 否則執(zhí)行外部地址變換星爪,確定該地址對應(yīng)存儲單元在輔存的地址
- 若主存有空閑塊浆西,則將該存儲塊內(nèi)容從輔存調(diào)入主存,否則使用替換算法將該存儲塊替換到主存顽腾,然后CPU訪問主存單元
- 虛擬存儲器的地址映射及變換
- 虛擬存儲器的地址映射:把虛擬地址空間映射到主存地址空間
- 虛擬存儲器的地址變換:程序被裝入主存后近零,實際運行時,把用戶的虛擬地址變成主存的物理地址(內(nèi)部地址變換)或磁盤存儲器地址(外部地址變換)
- 頁式虛擬存儲器
- 用固定大小的頁描述邏輯地址空間抄肖,同樣大小的頁描述物理內(nèi)存空間久信,程序運行時以頁為單位進行調(diào)入調(diào)出
- 主存中的頁稱為
物理頁
,實頁
憎瘸,虛存中的頁稱為邏輯頁
入篮,虛頁
- 物理地址和邏輯地址計算方法:
物理(邏輯)地址 = 頁大小 * 頁面號 + 頁內(nèi)地址 -
頁表完成
頁管理
和地址變換
,頁表位于主存
幌甘,虛存中每個頁面對應(yīng)一個頁表表項 - 頁表表項內(nèi)容:虛存頁面所在主存頁面號(物理頁號)潮售,有效位(指示該邏輯頁是否已調(diào)入主存)
- 頁表起始地址由頁表基址寄存器給出,用邏輯頁號作為頁表偏移地址檢索頁表锅风,且首先判斷該頁是否已經(jīng)調(diào)入主存(有效位為1)酥诽,若已經(jīng)調(diào)入主存,則進行內(nèi)部地址變換獲得物理地址并訪問主存
- 優(yōu)點 :
主存利用率高
皱埠,頁表格式簡單
肮帐,地址映射及變換簡單
,地址變換塊
边器,調(diào)入操作簡單
训枢,缺點:頁的長度固定
,不利于編程獨立性
忘巧,程序及數(shù)據(jù)的保護及調(diào)入調(diào)出困難
- 頁式虛擬存儲器的地址變換
- 因為頁表的表項個數(shù)和虛存的頁面?zhèn)€數(shù)相等恒界,故可以認為頁表中,從頁表基地址開始順序編址砚嘴,每一個頁表項對應(yīng)一個虛存頁面十酣,故可以按照虛擬地址的邏輯頁號作為地址訪問頁表,得到的頁表項际长,肯定能找到一個頁表項耸采,此時重要的是需要看有效位是否為1,只有有效位為1才說明該虛頁已經(jīng)被調(diào)入了主存工育,且此時頁表中該表項中存儲的主存頁面號虾宇,與CPU訪存提供的頁內(nèi)地址拼接便形成實際的物理地址
頁式虛擬存儲器地址變換
- 快表:為了減少訪存次數(shù),通常將頁表中最常用的部分保存在cache中翅娶,這部分頁表稱為快表文留,可極大提高地址變換的效率
- TLB變換后援緩沖器:緩存快表的高速存儲部件好唯,大多采用相聯(lián)存儲技術(shù)竭沫,按內(nèi)容查找燥翅,利用了程序訪問的局部性
- 慢表:保存在主存中的完整頁表
- 使用TLB后的地址變換過程
使用快慢表的虛擬存儲的地址變換
- 段式虛擬存儲器
- 基本思想:按照程序的邏輯結(jié)構(gòu)劃分段,主存以段為單位進行分配
- 每個段的長度可以不同
- 通過段表對每道程序管理蜕提,段表一般也是位于主存中
- 每個程序段對應(yīng)段表一個表項森书,段表表項主要內(nèi)容:
有效位
,段起址(指明該段在實存的首地址)
谎势,段長度
凛膏,這里區(qū)分段起始地址和段表起始地址。 - 段表的起始地址由段表基址寄存器給出
- 段式虛擬存儲器的地址變換
- 段表中的表項脏榆,按順序存儲程序按邏輯被劃分的若干段猖毫,即每個程序段在段表有唯一一個表項存儲映射關(guān)系,第一個表項存儲第一段程序段须喂,段表表項的段起址字段存放
這個程序段在主存中的起始地址
,當段表對應(yīng)表項的有效位為1時,此時CPU訪存地址的段內(nèi)地址
作為偏移量與段表中對應(yīng)表項的段起址字段相加形成實際訪存的物理地址
- 段表中的表項脏榆,按順序存儲程序按邏輯被劃分的若干段猖毫,即每個程序段在段表有唯一一個表項存儲映射關(guān)系,第一個表項存儲第一段程序段须喂,段表表項的段起址字段存放
段式虛擬存儲器的地址變換
- 段頁式虛擬存儲器
- 主存物理空間等分為頁
- 程序先按邏輯結(jié)構(gòu)分段伊者,每段再分成與物理空間頁同樣小的頁面
- 程序以頁為單位進行調(diào)入調(diào)出操作喜每,但以段為單位進行編程,保護和共享
- 通過一個段表和一組頁表進行管理是己,即每個程序段都有若干頁又兵,這些頁被存儲在一個頁表中,若干段就有一組頁表卒废。
- 段表每個表項對應(yīng)一個段沛厨,內(nèi)容包括:
該段的頁表起始地址
,頁表長度
- 優(yōu)點:同時具備段式和頁式虛存的優(yōu)點摔认,缺點:
映射過程需多次查表
逆皮,耗時大
- 頁表每個表項給出:
該段各頁在主存中的實頁號
,是否裝入级野,已修改等狀態(tài)信息
- 段頁式虛擬存儲器的地址變換
- 由于每個程序段按順序與段表表項一一對應(yīng)页屠,故首先根據(jù)CPU訪存提供的虛擬地址的段號字段按地址訪問段表,找到對應(yīng)段的段表表項信息蓖柔,表項信息中的頁表地址字段給出該程序段對應(yīng)的頁表的起始地址辰企,而頁表中每個虛頁頁面按順序與頁表表項一一對應(yīng),故頁表起始地址再與CPU訪存提供的虛擬地址的頁號字段相加作為地址訪問該程序段對應(yīng)的頁表的頁表項况鸣,確定了該虛頁對應(yīng)的物理頁號牢贸,這個物理頁號再于CPU訪存地址的頁內(nèi)地址相加便形成最終的訪存物理地址
段頁式虛擬存儲器的地址變換