存儲器層次結(jié)構
一规丽、存儲器概述
1.存儲器的分類
1.按存儲元件分類
- 半導體存儲器
- 磁表面存儲器
- 光盤存儲器
2.按存取方式分類
- 隨機存取存儲器
- 順序存取存儲器
- 直接存取存儲器
3.按信息的可更改性分類
- 讀寫存儲器
- 只讀存儲器
4.按斷電后信息的可保存性分類
- 非易失(不揮發(fā))性存儲器
- 易失(揮發(fā))性存儲器
2.主存儲器的組成和基本操作
1.存儲器的組成:
存儲元(或位元):存儲一位二進制代碼松捉。(椅子)
存儲單元(編址單元):由多個存儲元構成,可存儲多位二進制代碼蔑歌。(教室)
存儲芯片:由多個存儲單元組成的存儲陣列構成震叙。(樓層)
存儲器:由多個存儲芯片構成掀鹅。(教學樓)
存儲容量:存儲單元的位數(shù)與存儲單元的個數(shù)的乘積。
2.存儲器的讀寫:
寫操作媒楼,CPU同時將要寫的信息送主存數(shù)據(jù)寄存器MDR中乐尊,在讀寫控制電路的控制下,經(jīng)數(shù)據(jù)線將信息寫入選中的單元划址。
讀操作扔嵌,則主存讀出選中單元的內(nèi)容送數(shù)據(jù)線,然后被送到MDR中夺颤。
最大可尋址范圍:地址線的位數(shù)決定了主存地址空間的最大可尋址范圍痢缎。
n位地址數(shù):空間大小為2^n
2KB的存儲器至少需要的地址線數(shù):11條
地址線的位數(shù)決定了主存地址空間的最大可尋址范圍,2KB=2^11B世澜,所以至少需要11根地址線独旷。
3.存儲器的主要性能指標
存儲器容量:指它能存放的二進制位數(shù)或字(字節(jié))數(shù)。
存取時間:一般用讀出時間TA及寫入時間TW來描述:
- TA是指從存儲器接到讀命令開始至信息被送到數(shù)據(jù)線上所需的時間宜狐;
- TW是指存儲器接到寫命令開始至信息被寫入存儲器所需的時間势告。
存儲周期:是指存儲器進行一次讀寫操作所需要的全部時間,也就是存儲器進行連續(xù)讀寫操作所允許的最短間隔時間抚恒。
存儲器帶寬B:表示存儲器被連續(xù)訪問時咱台,可以提供的數(shù)據(jù)傳送速率,通常用每秒鐘傳送信息的位數(shù)(或字節(jié)數(shù))來衡量俭驮。
存儲器的價格:可用總價格C或每位價格c來表示回溺,若存儲器按位計算的容量為S春贸,則c=C/S∫抛瘢總價C中應包括存儲單元本身的價格以及完成存儲器操作所必需的外圍電路的價格萍恕。
存儲器速度:可用存取(訪問)時間车要、存儲周期或帶寬來表示允粤。
4.存儲器的層次化結(jié)構
二、半導體隨機存取存儲器
1.基本存儲元件
1.六管靜態(tài)MOS管存儲元件
T1和T2構成觸發(fā)器翼岁,
T5类垫、T6是觸發(fā)器的負載管,
T3琅坡、T4為門控管悉患。
使用這6個MOS管即可組成存儲一位二進制信息的基本存儲元。
2.單管動態(tài)MOS管存儲元件
動態(tài)RAM利用MOS管的柵極電容Cs來保存信息榆俺。
由于MOS管柵極上存儲的電荷會緩慢放電售躁,超過了一定時間,就會丟失信息茴晋。因此必須定時給柵極電容充電陪捷,這一過程稱為刷新。
只能存儲一位二進制信息
3.靜態(tài)存儲元件和動態(tài)存儲元件的比較
SRAM存儲元件所用MOS管多晃跺,占硅片面積大揩局,功耗大,集成度低掀虎;但無需刷新凌盯,也無需讀后再生,特別是它的讀寫速度快烹玉。因而它適合做高速小容量的半導體存儲器驰怎。
DRAM存儲元件所用MOS管少,占硅片面積小二打,功耗小县忌,集成度很高;但必須定時刷新和讀后再生继效,特別是它的讀寫速度相對SRAM元件要慢得多症杏。因而適合做慢速大容量的主存。
2.半導體RAM芯片
半導體RAM芯片由存儲體瑞信、I/O讀寫電路厉颤、地址譯碼和控制電路等部分組成。
①存儲體(存儲矩陣):存儲體是存儲單元的集合
②地址譯碼器:用來將地址轉(zhuǎn)換為譯碼輸出線上的高電平凡简,以便驅(qū)動相應的讀寫電路逼友。
譯碼方式有單譯碼和雙譯碼兩種精肃,容量較大的存儲芯片,一般采用雙譯碼方式帜乞。
位片式芯片:采用二維雙譯碼結(jié)構的存儲器芯片被稱為位片式芯片司抱。
存儲字:有些芯片的存儲陣列采用三維結(jié)構,用多個位平面構成存儲陣列黎烈,不用位平面在相同行和列的交叉點上的多位構成一個存儲字习柠,被同時讀出或?qū)懭搿?br>
單譯碼方式:
選通線4096
雙譯碼方式:
6條線經(jīng)過行譯碼,6條線經(jīng)過列譯碼照棋,選通線只有26+26=128
③驅(qū)動器:在雙譯碼結(jié)構中津畸,一條X方向的選擇線要控制在其上的各個存儲單元的字選擇線,負載較大必怜,因此需要在地址譯碼器后加驅(qū)動電路。
④I/O控制電路后频。用以控制被選中的單元的讀出或?qū)懭胧崆欤哂蟹糯笮畔⒌淖饔谩?/p>
⑤讀/寫控制信號。根據(jù)CPU給出的是讀命令還是寫命令更米,控制被選中存儲單元進行讀或?qū)憽?/p>
3.SDRAM芯片技術
SDRAM是一種與當年Intel推出的芯片組中北橋芯片的前端總線同步運行的DRAM芯片消请,因此,稱為同步DRAM针饥。
①SDRAM芯片技術
SDRAM的工作方式與傳統(tǒng)的DRAM有很大不同丁眼。傳統(tǒng)DRAM與CPU之間采用異步交換數(shù)據(jù)嵌施,而SDRAM芯片則不同硫眨,其讀寫受系統(tǒng)時鐘(即前端總線時鐘CLK)控制巧号,因此與CPU之間采用異步方式交換數(shù)據(jù)。
SDRAM的每一步操作都在外部系統(tǒng)時鐘CLK的控制下進行,支持突發(fā)(burst)傳送方式。只要第一次存取時給出首地址,以后按地址順序讀寫即可,而不再需要地址建立時間和行减拭、列預充電時間可霎,就能連續(xù)快速地從行緩沖器(row buffer)中輸出一連串數(shù)據(jù)旺罢。內(nèi)部的工作方式寄存器(也稱為模式寄存器)可用來設置傳送數(shù)據(jù)的長度以及收到讀命令(與CAS信號同時發(fā)出)到開始傳送數(shù)據(jù)的延遲時間等正卧,前者稱為突發(fā)長度(burst lengths签孔,簡稱BL)罐盔,后者稱為CAS潛伏期(CAS latency ,簡稱CL)狸臣。
②DDR SDRAM芯片技術
DDR(Double Data Rate)SDRAM是對標準SDRAM的改進設計煤禽,通過芯片內(nèi)部I/O緩沖中數(shù)據(jù)的兩位預取功能,并利用存儲器總線上時鐘信號的上升沿與下降沿進行兩次傳送檬果,以實現(xiàn)一個時鐘內(nèi)傳送兩次數(shù)據(jù)的功能。
③DDR2 SDRAM芯片技術
DDRA SDRAM內(nèi)存條采用與DDR類似的技術偏灿,利用芯片內(nèi)部的I/O緩沖可以進行4位預取沿猜。
④DDR3 SDRAM芯片技術
DDR3 SDRAM芯片內(nèi)部I/O緩沖可以進行8位預取。
半導體存儲器可分為哪兩類呼畸?
它們分別以什么方式存儲信息“0”和“1”?
半導體存儲器分為靜態(tài)RAM(簡稱SRAM)和動態(tài)RAM(簡稱DRAM)颁虐。
靜態(tài)RAM利用六管靜態(tài)MOS管組成的雙靜態(tài)電路來保存信息蛮原,
動態(tài)RAM利用MOS管的柵極電容Cs來保存信息。
三另绩、存儲器的擴展及其與CPU的連接
1.內(nèi)存條和內(nèi)存條插槽
CPU通過其芯片內(nèi)的總線接口部件(即總線控制邏輯)與系統(tǒng)總線相連儒陨,然后再通過總線之間的I/O橋接器、存儲器總線連接到主存笋籽。
內(nèi)存條與內(nèi)存條插槽:
內(nèi)存條插槽就是存儲器總線蹦漠,內(nèi)存條中的信息通過內(nèi)存條的引腳,再通過插槽內(nèi)的引線連接到主板上车海,通過主板上的導線連接到北橋芯片或CPU芯片笛园。
2.存儲器芯片的擴展
1.擴展的方法
2.擴展的步驟
- 確定需要的芯片數(shù)
- 確定組織方式
- 畫出地址分配圖及寫出片選邏輯值(位擴展沒有這一步)
- 畫出存儲器邏輯圖或存儲器與CPU的連接圖
8k1位--->8k8位:位擴展
總結(jié):(此處僅僅為了做題)
計算芯片:(存儲器的字數(shù)/芯片的字數(shù))*(存儲器的位數(shù)/芯片的位數(shù))
計算幾位地址,即計算字數(shù) 轉(zhuǎn)為以2為底的指數(shù)侍芝,指數(shù)即是幾位地址研铆。
片選信號地址線就是片外尋址。片外地址就是看字擴展了多少州叠,然后用那個轉(zhuǎn)換為2為底的指數(shù)棵红,指數(shù)就是地址線。
(1)有8*4=32片咧栗,8組逆甜,每一組4片。
(4)片選信號地址線都是用靠后的致板。
3.連續(xù)編址和交叉編址
多模塊存儲器:通常把由多個獨立并行工作的多個存儲模塊構成的存儲器稱之忆绰。
根據(jù)不同的編址方式,多模塊存儲器分為2種結(jié)構:
- 連續(xù)編址
- 交叉編制
1.連續(xù)編址方式
連續(xù)編址的多模塊主存儲器中可岂,主存地址的高位表示模塊號(或體號)错敢,低位表示模塊內(nèi)地址(或體內(nèi)地址),因此,也稱為按高位地址劃分模塊方式稚茅,地址在模塊內(nèi)連續(xù)纸淮。
假定存儲器有4個模塊M0~M3,每個模塊有n個單元亚享,
則M0的地址范圍為0~n-1;
M1的地址范圍為n~2n-1咽块;
M2的地址范圍為2n~3n-1;
M3的地址范圍為3n~4n-1欺税;
對于連續(xù)編址的多模塊主存儲器侈沪,當訪問一個連續(xù)主存塊時,總是先在一個模塊內(nèi)訪問晚凿,等到該模塊全部單元訪問完才轉(zhuǎn)到下一個模塊訪問亭罪,存儲模塊之間不能被并行訪問,因而歼秽,這種情況下应役,連續(xù)編址的多模塊存儲器不能提高存取速度。
2.交叉編址方式
交叉編址存儲器中燥筷,主存地址的低位表示模塊號箩祥,高位表示模塊內(nèi)地址,因此肆氓,也稱按低位地址劃分模塊方式袍祖。若有m個存儲模塊,則每個模塊按“模m”交叉方式編址谢揪,稱為m體交叉編址方式蕉陋。
例如,對于4體交叉編址存儲器键耕,共有4個模塊,若每個模塊有n個單元柑营,則第0,4屈雄,...,4i酒奶,...,4n-4單元位于第0模塊奶赔;
....;
第3,7惋嚎,...,4i+3站刑,...另伍,4n-1單元位于第3模塊;
交叉編址多模塊存儲器可以采用輪流啟動或同時啟動兩種方式。
①輪流啟動
按每隔1/m個存儲器周期輪流啟動各模塊進行讀寫摆尝。如果每個存儲模塊一次讀寫的位數(shù)(稱為一個存儲字)正好等于系統(tǒng)總線中數(shù)據(jù)線條數(shù)(即總線傳輸單位)温艇,則采用輪流啟動方式。
②同時啟動
如果所有存儲模塊一次并行讀寫的總位數(shù)正好等于系統(tǒng)總線中數(shù)據(jù)線數(shù)堕汞,則可采用同時啟動方式勺爱。
四、半導體只讀存儲器與Flash存儲器
1.半導體只讀存儲器
根據(jù)只讀存儲器的工藝讯检,可分為MROM琐鲁、PROM、EPROM和EEPROM(E^2PROM)等類型人灼。
①掩膜只讀存儲器(Mask ROM围段,MROM)中存儲的信息由生產(chǎn)廠家在掩膜工藝過程中“寫入”,用戶不能修改挡毅。MROM存儲內(nèi)容固定蒜撮,所以可靠性高,但靈活性差跪呈,生產(chǎn)周期長段磨,只適合定型批量生產(chǎn)。
②可編程只讀存儲器(Programmable ROM耗绿,PROM)芯片出廠時內(nèi)容全部為0(半成品)苹支,用戶可用專門的PROM寫入器將信息寫入,但寫入不可逆误阻,因此稱為一次編程型只讀存儲器债蜜。
③可擦除可編程只讀存儲器(Erasable Programmable ROM,EPROM)允許用戶通過某種編程器向ROM芯片中寫入信息究反,并可擦除所有信息后重新寫入寻定。可反復擦除-寫入多次精耐。
④電擦除電改寫只讀存儲器(Electrically Erasable Programmable ROM狼速,E^2PROM)。這種存儲器在讀數(shù)據(jù)的方式上與EPROM完全一樣卦停,但它有一個明顯優(yōu)點向胡,即可用電來擦除和重編程,因此惊完,可以選擇只刪除個別字僵芹,而不像EPROM那樣,每次都要抹除芯片上的全部信息小槐,這給現(xiàn)場重編程帶來了極大的方便拇派。
2.半導體Flash存儲器
Flash存儲器也稱為閃存,是高密度非易失性讀寫存儲器,它兼有RAM和ROM的優(yōu)點攀痊,而且功耗低桐腌、集成度高,不需后備電源苟径。這種器件沿用了EPROM的簡單結(jié)構和浮柵/熱電子注入的編程寫入方式案站,又兼?zhèn)銭^2PROM的可擦除特點,可在計算機內(nèi)進行擦除和編程寫入棘街。因此又稱為快擦型電可擦除重編程ROM蟆盐。
閃存有三種基本操作:編程(充電)、擦除(放電)遭殉、讀取石挂。
①編程操作:最初所有存儲元都是“1”狀態(tài),通過“編程”险污,在需要改寫為“0”的存儲元的控制柵加上一個正電壓VP痹愚。一旦某存儲元被編程,則存儲的數(shù)據(jù)可保持100年而無需外電源蛔糯。
②擦除操作:采用電擦除拯腮。即在所有存儲元的源極S加正電壓VE,使浮空柵中的電子被吸收掉蚁飒,從而使所有存儲元都變成“1”狀態(tài)动壤。因此,寫的過程實際上是先全部擦除淮逻,使全部變成“1”狀態(tài)后再在需要的地方改寫為“0”琼懊。也即捂掰,先全部放電羽圃,再在寫0的地方充電矗积。
③讀取操作:在控制柵加上正電壓VR雁比,
若原存為“0”,則讀出電路檢測不到電流框沟;
若原存為"1"擎淤,則浮空柵不帶負電荷肮砾,
控制柵上的正電壓足以開啟晶體管脑漫,電源Vd提供從漏極D到源極S的電流髓抑,讀出電路檢測到電流咙崎。
Flash存儲器的讀操作速度和寫操作速度相差很大优幸,其讀取速度與半導體RAM芯片相當,而寫數(shù)據(jù)(快擦-編程)的速度則與硬磁盤存儲器相當褪猛。
(讀:快网杆;寫:慢)
總結(jié):
- MROM中存儲的信息由生產(chǎn)廠家在掩膜工藝過程中“寫入”,用戶不能修改;
- PROM是用戶可用專門的PROM寫入器將信息寫入碳却,只能寫一次队秩;
- EPROM允許用戶通過某種編程器向RMO芯片中寫入信息,并可擦除所有信息后重新寫入昼浦;
- E^2PROM可用電來擦除和重編程馍资。
五、高速緩沖存儲器
1.程序訪問的局部性
程序訪問的局部性:
在較短時間間隔內(nèi)关噪,程序產(chǎn)生的地址往往集中在存儲空間的一個很小范圍鸟蟹,這種現(xiàn)象稱之。
時間局部性是指被訪問的某個存儲單元在一個較短的時間間隔內(nèi)很可能又被訪問使兔。
空間局部性是指被訪問的某個存儲單元的鄰近單元在一個較短的時間間隔內(nèi)很可能也被訪問建钥。
2.cache的基本工作原理
cache由快速的SRAM組成,直接制作在CPU芯片內(nèi)虐沥,也可在CPU和主存之間熊经,在CPU和主存之間設置cache,總是把主存中被頻繁訪問的活躍程度塊和數(shù)據(jù)塊復制到cache中欲险。由于程序訪問的局部性镐依,大多數(shù)情況下,CPU能直接從cache中取得指令和數(shù)據(jù)盯荤,而不必訪問主存馋吗。
cache和主存空間都被劃分為相等的區(qū)域。主存中的區(qū)域稱為塊(block)秋秤,也稱為主存塊宏粤,它是cache和主存之間的信息交換單位;cache中存放一個主存塊的區(qū)域稱為cache行(line)或槽(slot)灼卢。
在系統(tǒng)啟動或復位時绍哎,每個cache行都為空,其中的信息無效鞋真,只有裝入了主存塊后信息才有效崇堰。每個cache行需要一個有效位(valid bit),可通過將有效位清0來淘汰某cache行中的主存塊涩咖,稱為沖刷(flush)海诲,裝入一個新主存塊時,再使有效位置1檩互。
CPU在cache-主存層次的平均訪問時間為:
Ta=p*Tc+(1-p)*(Tm+Tc)=Tc+(1-p)*Tm特幔。
其中p是命中率;
Tc是cache訪問時間闸昨;
Tm是把從主存讀入一個主存塊到cache的時間蚯斯,稱為缺失損失薄风。
3.cache行和主存塊之間的映射方式
根據(jù)不同的映射規(guī)則,主存塊和cache行之間有以下三種映射方式:
①直接映射(direct map):每個主存塊映射到cache的固定行中拍嵌。
②全相聯(lián)映射(full associate map):每個主存塊映射到cache的任意行中遭赂。
③組相聯(lián)映射(set associate map):每個主存塊映射到cache的固定組的任意行中。
1.直接映射
直接映射的基本思想是把主存的每一塊映射到固定的一個cache行中横辆,也稱模映射撇他,其映射關系如下:
cache行號=主存塊號 mod cache行數(shù)
主存地址17位,分為了三部分
每塊大小為512B狈蚤,512=2^9逆粹,所以塊內(nèi)地址為9位
分為32塊群(區(qū)),32=2^5炫惩,所以群號為5位
每個群有8塊僻弹,8=2^3,塊號為3位
主存容量為128KB他嚷,128KB=2^7*2^10=2^17B
9+5+3=17蹋绽;
群里的塊號恰好是cache的塊號
主存結(jié)構地址:
主存塊內(nèi)地址=cache行內(nèi)地址
主存的塊號=cache行號
區(qū)號(群號)
1.計算主存塊:主存的容量/每塊大小筋蓖;計算cache的行數(shù):cache的容量/每塊大小
2.塊內(nèi)地址:256B = 2^8 卸耘,所以有8位,
塊號:塊號=cache行號粘咖,第一問中cache有16行蚣抗,16=2^4,所以有4位瓮下;
區(qū)號(群號):
方式一:用總的主存容量減去塊號和塊內(nèi)地址的
總的主存容量512KB=2^9*2^10=2^19
19-8-4=7位
方式二:直接計算:主存分為了2K=2^11塊翰铡,
再用2^11/cache的行數(shù)=2^11/16=2^7群 所以為7位。
3.方式一:使用取模方式讽坏,用12345H mod 16
方式二:把12345這個十六進制的數(shù)轉(zhuǎn)為二進制:
00010010001101000101
按照第二問分析的锭魔,從第9位到第12位這四位為塊號0011,即為3
2.全相聯(lián)映射
全相聯(lián)映射的基本思想是一個主存塊可裝入cache任意一行中路呜。全相聯(lián)映射cache中迷捧,每行的標記用于指出該行取自主存的哪個塊。
3.組相聯(lián)映射
組相聯(lián)映射的主要思想是胀葱,
將cache所有行分成2^q個大小相等的組漠秋,每組有2^s行。
每個主存塊被映射到cache固定組中的任意一行抵屿,映射關系如下:
cache組號=主存塊號 mod cache組數(shù)(余數(shù))
說明:主存組群內(nèi)塊號=主存塊號/cache組數(shù)(商)
cache組號=主存塊號 mod cache組數(shù)(余數(shù))
主存塊號為100庆锦,cache組數(shù)為2^3組 100 mod 8 = 4
如此設置的2^q組*2^s行/組的cache映射方式稱為2^s路組相聯(lián)映射,
即s=1為2-路組相聯(lián)晌该;
s=2為4-路組相聯(lián)肥荔;
以此類推。
主存地址結(jié)構:標記+cache組號+塊內(nèi)地址
標記:主存的組群數(shù)朝群,比如256組燕耿,256=2^8,則有8個標記
cache:如果有8組姜胖,則是2^3誉帅,為3位
塊內(nèi)地址:塊大小,512位右莱,512=2^9蚜锨,所以有9位
采用2路:s=1,每一組有兩行cache慢蜓。
第0塊只能映射到第0組亚再,而具體到第0組的某一塊則隨意。
組相聯(lián)映射方式結(jié)合了直接映射和全相聯(lián)映射的優(yōu)點晨抡。當cache的組數(shù)為1時氛悬,變?yōu)槿嗦?lián)映射;當每組只有一個cache行時耘柱,則變?yōu)橹苯佑成洹?/p>
4.cache中主存塊的替換算法
常用的替換算法:
- 先進先出(first-in-first-out如捅,簡稱FIFO)
- 最近最少用(least-recently used,簡稱LRU)
- 最不經(jīng)常用(least-frequently used,LFU)
- 隨機替換算法等
①先進先出算法(FIFO)的基本思想是:總是選擇最早裝入cache的主存塊被替換掉调煎。
②最近最少用算法(LRU)的基本思想:總是選擇近期最少使用的主存塊被替換掉镜遣。
③最不經(jīng)常用算法:總是替換掉cache中引用次數(shù)最少的塊;
④隨機替換算法:從候選行的主存塊中隨機選取一個淘汰掉士袄,與使用情況無關悲关。
LRU算法用計數(shù)值來記錄主存塊的使用情況,通過硬件修改計數(shù)值娄柳,并根據(jù)計數(shù)值選擇淘汰某個cache行中的主存塊坚洽。這個計數(shù)值稱為LRU位,其位數(shù)與cache組大小有關西土。2路時有一位LRU位讶舰,4路時有兩位LRU位。
5.cache的一致性問題
因為cache中的內(nèi)容是主存塊副本需了,當對cache中的內(nèi)容進行更新時跳昼,就存在cache和主存如何保持一致的問題。
解決cache一致性問題的關鍵是處理好寫操作肋乍。通常有全寫法和會寫法兩種方式鹅颊。
1.全寫法
全寫法(write through)的基本做法是:若寫命中,則同時寫cache和主存墓造;若寫不命中堪伍,則有以下兩種處理方式:
①寫分配法(write allocate)锚烦。先在主存塊中更新相應存儲單元,然后分配一個cache行帝雇,將更新后的主存塊裝入分配的cache行中涮俄。
②非寫分配法(not write allocate)。僅更新主存單元而不裝入主存塊到cache中尸闸。
2.回寫法
回寫法(write back)的基本做法是:
若寫命中彻亲,則信息只被寫入cache中而不被寫入主存;
若寫不命中吮廉,則在cache中分配一行苞尝,將主存塊調(diào)入該cache行中并更新相應單元的內(nèi)容。
因此宦芦,該方式下載寫不命中時宙址,通常采用寫分配法進行寫操作。
由此可見调卑,該方式實際上采用的是回頭再寫或最后一次性寫的做法曼氛,因此,該方式通常被稱為回寫法或一次性寫方式令野,也有教材稱之為寫回法舀患。
六、虛擬存儲器
1.程序與進程的概念
虛擬存儲器:借用外存為程序提供的很大的虛擬存儲空間气破。
程序(program):是代碼和數(shù)據(jù)的集合聊浅,程序的代碼是一個機器指令序列,因而的概念现使。它可以作為目標模塊存放在磁盤中低匙。
進程(process):就是程序的一次運行過程。
程序是靜態(tài)的碳锈,進程是動態(tài)的顽冶。
進程是操作系統(tǒng)對處理器中程序運行過程的一種抽象。進程有自己的生命周期售碳,它由于任務的啟動而創(chuàng)建强重,隨著任務的完成(或終止)而消亡,它所占用的資源也隨著進程的終止而釋放贸人。
一個可執(zhí)行目標文件可以被多次加載執(zhí)行间景,也就是說,一個程序可能對應多個不同的進程艺智。
2.虛擬地址空間
虛擬存儲器管理方式采用“請求分頁”思想倘要,每次訪問僅將當前需要的頁面調(diào)入主存,而將不活躍的頁面放在磁盤上十拣。當訪問某個信息所在頁不在主存時發(fā)生缺頁封拧,此時志鹃,從磁盤將缺失的頁面調(diào)入主存。
虛擬存儲器機制為程序員提供了一個極大的虛擬地址空間(邏輯地址空間)泽西。
未分配頁:沒有和任何內(nèi)容相關聯(lián)的頁曹铃。
已分配頁:對于代碼和數(shù)據(jù)等有內(nèi)容的區(qū)域所關聯(lián)的頁面。
已分配頁中又有兩類:緩存頁和未緩存頁
緩存頁:已調(diào)入主存而被緩存在DRAM中的頁面
未緩存頁:未調(diào)入主存而存在磁盤上的頁
任何時刻一個進程中的所有頁面都被劃分成三個不相交的頁面集合:未分配頁集合尝苇、緩存頁集合和未緩存頁集合。
3.虛擬存儲器的實現(xiàn)
虛擬存儲器分成三種不同類型:分頁式埠胖、分段式和段頁式糠溜。
1.分頁式虛擬存儲器
在分頁式虛擬存儲器系統(tǒng)中,主存儲器和虛擬地址空間都被劃分成大小相等的頁面直撤,磁盤和主存之間按頁面為單位交換信息非竿。通常把虛擬地址空間中的頁面稱為虛擬頁、邏輯頁或虛頁谋竖。主存空間中的頁面被稱為頁框(頁幀)红柱、物理頁或?qū)嶍摗S袝r虛擬頁簡稱為VP(virtual page)蓖乘,物理頁簡稱為PF(page frame)或PP(physical page)锤悄。
①頁表(Page Table)
操作系統(tǒng)在主存中給每個進程都生成了一個頁表,每個虛擬頁在頁表中都有一個對應的頁表項嘉抒,其內(nèi)容包括該虛擬頁的存放位置零聚、裝入位(valid)、修改位(dirty)些侍、使用位(替換控制位)隶症、存取權限位和禁止緩存位等。
裝入位也稱為有效位或存在位岗宣,用來表示對應頁面是否在主存蚂会,若為“1”,表示該虛擬頁面已從外存調(diào)入主存耗式,是一個“緩存頁”胁住,此時,存放位置字段指向主存頁框號(即物理頁號或?qū)嶍撎枺┛龋蝗魹椤?”措嵌,則表示沒有調(diào)入主存,此時芦缰,若存放位置字段為null企巢,則說明是一個“未分配頁”,否則是一個“未緩存頁”让蕾,其位置字段給出該虛擬頁在磁盤上的起始地址浪规;
某進程有7個頁面或听,其中
4個緩存頁:VP1、VP2笋婿、VP5和VP7誉裆;
兩個未分配頁:VP0和VP4;
兩個未緩存頁:VP3和VP6缸濒,
其頁表如下:
系統(tǒng)中每個進程都有一個頁表足丢,頁表屬于進程控制信息,存放在進程地址空間的內(nèi)核區(qū)庇配,頁表在主存的首地址記錄在頁表基址寄存器中斩跌。頁表的項數(shù)由虛擬地址空間大小決定,因虛擬地址空間可能是一個比主存大得多的地址空間捞慌。因此耀鸦,頁表項數(shù)會很多,會帶來頁表過大的問題啸澡。解決頁表過大的方法有很多袖订,可以采用限制大小的一級頁表、二級或多級頁表嗅虏、倒置頁表等方案洛姑,由操作系統(tǒng)解決此問題。
②地址轉(zhuǎn)換(Address Translationg)
將虛擬地址轉(zhuǎn)換為主存物理地址的轉(zhuǎn)換工作由CPU中的存儲器管理部件(Memory Management Unit皮服,簡稱MMU)來完成吏口。
③快表(TLB)
采用虛擬存儲器機制后,使得訪存次數(shù)增加了冰更。為了減少訪存次數(shù)产徊,往往把頁表中最活躍的幾個頁表項復制到高速緩存中,這種在高速緩存中的頁表項組成的頁表稱為后備轉(zhuǎn)換緩沖器(Translation Lookaside Buffer)蜀细,通常簡稱為TLB或快表舟铜,相應地稱主存中的頁表為慢表。
這樣奠衔,在地址轉(zhuǎn)換時谆刨,首先到快表中查頁表項,如果命中归斤,則無需訪問主存中的頁表痊夭。
2.分段式虛擬存儲器
根據(jù)程序的模塊化性質(zhì),可按程序的邏輯結(jié)構劃分為多個相對獨立的部分脏里,這些相對獨立的部分被稱為段(Segment)她我,每個段的描述信息通常有段名、段起點、段長等番舆。
分段方式下酝碳,將主存空間按實際程序中的段來劃分,每個段在主存中的位置記錄在段表中恨狈,段的長度可變疏哗,所以段表中需有長度指示,即段長禾怠。每個進程有一個段表返奉,每個段在段表中有一個段表項,用來指明對應段在主存中的位置吗氏,段長芽偏、訪問權限、使用和裝入情況等牲证。
虛擬地址由段號和段內(nèi)地址組成哮针。通過段表把虛擬地址變?yōu)橹鞔嫖锢淼刂贰?br>
3.段頁式虛擬存儲器
在段頁式虛擬存儲器中关面,程序按模塊分段坦袍,段內(nèi)再分頁,用段表和頁表(每段一個頁表)進行兩級定位管理等太。段表中每個表項對應一個段捂齐,每個段表項中包含一個指向該段頁表起始位置的指針,以及該段其他的控制和存儲保護信息缩抡,由頁表指明該段各頁在主存中的位置以及是否裝入奠宜、修改等狀態(tài)信息。程序的調(diào)入調(diào)出按頁進行瞻想,但它又可以按段實現(xiàn)共享和保護压真。因此,它兼有頁式和段式的優(yōu)點蘑险。它的缺點是在地址轉(zhuǎn)換過程中需要多次查表滴肿,即先查段表,再查頁表佃迄。
名詞解釋:虛擬存儲器
借用外存為程序提供的很大的虛擬存儲空間稱為虛擬存儲器泼差。