天天看點

計算機組成原理——存儲器系統

本文轉自:https://blog.csdn.net/ljf_study/article/details/77154344

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。					https://blog.csdn.net/ljf_study/article/details/77154344				</div>
							            <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-5edb848729.css" target="_blank" rel="external nofollow" >
					<div class="htmledit_views" id="content_views">
           

本章主要内容:

(一)存儲器的分類

(二)存儲器的層次結構

(三)半導體随機存取存儲器

           SRAM,DRAM存儲器

           隻讀存儲器,Flash存儲器

(四)主存儲器與CPU的連接配接

(五)雙口RAM和多子產品存儲器

(六)高速緩沖存儲器(Cache)

           Cache的基本工作原理

           Cache和主存之間的映射方式

           Cache中主存塊的替換算法

           Cache中寫政策

(七)虛拟存儲器

           虛拟存儲器的基本概念,頁式虛拟存儲器

           段式虛拟存儲器,段頁式虛拟存儲器,TLB(快表)

3.1存儲器的層次結構

3.1.1存儲器的分類

根據存儲材料的性能及使用方法的不同,存儲器可以有各種不同的分類方法。

1.按存儲媒體分

存儲媒體必須滿足兩個基本要求:

(1)必須有兩個明顯差別的狀态,分别表示二進制代碼0和1;

(2)兩個實體狀态的改變速度要快,它直接影響存儲器的讀寫速度。

目前使用的存儲媒體主要是半導體器件、磁存儲媒體和光存儲媒體。用半導體器件組成的存儲器稱為半導體存儲器,如計算機主存;用磁性材料做成的存儲器稱為磁表面存儲器,它通過磁頭和磁記錄媒體的相對運動完成讀出和寫入,如磁盤、錄音帶;利用雷射技術在光存儲媒體上寫入和讀出資訊的存儲器稱為CD光牒存儲器,如隻讀型CD光牒(CD-ROM、DVD-ROM)、可讀寫CD光牒(CD-RW,DVD+RW)、一次性CD光牒等。

2.按存取方式分

如果任何存儲單元的内容都能被随機存取,且存取時間和存儲單元的實體位置無關,則這種存儲器稱為随機存儲器,如半導體存儲器;如果存儲單元的内容隻能按某種順序來存取,存取時間與存儲單元的實體位置有關,取決于通路存儲單元的位址順序,則這類存儲器稱為順序存儲器,如錄音帶存儲器。與順序存儲器相比,随機存儲器的存取速度快得多,但每一位的價格也要高很多。

3.按存儲器的讀寫功能分

有些半導體存儲器中存儲的内容是固定不變的,隻能讀出而不能寫入,通常用來存放固定不變的程式、漢字字型庫等,在制造晶片時由廠家預先寫入,這類半導體存儲器稱為隻讀存儲器(ROM);既能讀出内容又能寫入新内容的半導體存儲器稱為随機讀寫存儲器(RAM),用來存放正在執行的程式和正在通路的資料。

4.按資訊的可儲存性分

斷電後資訊就消失的存儲器稱為非永久記憶存儲器,如半導體存儲器RAM;斷電後仍能儲存資訊的存儲器稱為永久記憶存儲器,如磁媒體存儲器、CD光牒存儲器。

5.按在計算機系統中的作用分

根據在計算機系統中所起的作用,存儲器可分為主存儲器、輔助存儲器、高速緩沖存儲器、控制存儲器等。

3.1.2存儲器的性能名額 : 速度 價格 容量

其中速度包括存取時間,存取時間,主存帶寬

3.2 存儲器的階層化結構

圖3-1展現的是輔存、主存和緩存的三級存儲系統結構,一般來說,“Cache-主存”層次用來彌補主存速度的不足;“主存-輔存”層次用來彌補主存容量的不足。
計算機組成原理——存儲器系統

3.3 半導體随機存儲器

3.3.1SRAM DRAM存儲器

       靜态随機存取存儲器(Static Random-Access Memory,SRAM)是随機存取存儲器的一種。所謂的“靜态”,是指這種存儲器隻要保持通電,裡面儲存的資料就可以恒常保持[1]。(其利用雙穩态觸發器)相對之下,動态随機存取存儲器(DRAM)裡面所儲存的資料就需要周期性地更新。然而,當電力供應停止時,SRAM儲存的資料還是會消失(被稱為volatile memory),這與在斷電後還能儲存資料的ROM或閃存是不同的。

       動态随機存取存儲器(Dynamic Random Access Memory,DRAM)是一種半導體記憶體,主要的作用原理是利用電容記憶體儲電荷的多寡來代表一個二進制比特(bit)是1還是0(電容上電荷的有無)。由于在現實中電容會有漏電的現象,導緻電位差不足而使記憶消失,是以除非電容經常周期性地充電,否則無法確定記憶長存。由于這種需要定時重新整理的特性,是以被稱為“動态”記憶體。相對來說,靜态記憶體(SRAM)隻要存入資料後,縱使不重新整理也不會丢失記憶。

       SRAM的存取速度快,但內建度低,功耗較大,一般用來組成高速緩沖存儲器。

       DRAM具有容易內建,位價低,容量大和功耗低等優點。但是存取速度比SRAM慢,一般用來組成大容量的主存系統。

3.4 主存與CPU的連接配接

       建議:http://media.njude.com.cn/vclass/Courses/15201A/pdf/ch4_4.pdf

http://www.kaoyan.com/kaoyan/19/330174/

主存儲器通過資料總線,位址總線,、和控制總線和CPU連接配接。

資料總線的位數*工作頻率的 = 資料傳輸率

位址總線的位數決定了可尋址的最大記憶體空間。

控制總線(讀/寫)指出總線周期的類型和本次輸入、輸出操作完成的時刻。

 存儲容量:指一個存儲器中可以容納的存儲單元總數。存儲容量越大,能存儲的資訊就越多。存儲容量常用字數或位元組數(B)來表示,如64K字,512KB,64MB。

    設計存儲器時,需先明确所要求的總容量這一技術名額,即字數×位數。字數:即可編址單元數,常簡稱單元數。

    當計算機字長超過8位時,為了提高存取速度,有的主存既允許按位元組編址,也允許按字編址。

    然後,需要确定可供選用的存儲器晶片,即什麼類型、型号的存儲晶片,每片的容量是多少。每片容量通常低于總容量,就需要用若幹塊晶片組成。相應地,可能存在位數與字數的擴充問題。

3.4.2主存容量的擴充

1.位擴充(資料空間擴充)

   例1:假定使用8K×1位的RAM存儲器晶片,那麼如何組成8K×8位的存儲器?

    解:可采用圖3-5所示的位擴充法。也就是用8片1Mb的存儲晶片拼接而成。

存儲器的字數與存儲器晶片字數一緻,是以不需加大字長。圖中,每一片RAM是8K×1,故其位址線為13條(A0-A12),可滿足整個存儲體容量的要求。每一片對應于資料的1位(隻有1條資料線),故隻需将它們分别接到資料總線上的相應位即可。在這種方式中,對片子沒有選片要求,就是說片子按已被選中來考慮。如果片子有選片輸入端(CS#),可将它們直接接地。在這種連接配接時,每一條位址總線接有8個負載,每一條資料線接有一個負載。

計算機組成原理——存儲器系統

   例2:用2114(1K×4位的SRAM)構成1K×16位的存儲器,試畫出該存儲器的組成邏輯圖。

    解:(1)分析2114及存儲器

         2114:位址線為10位,資料線為4位(1K×4)

         存儲器:位址線為10位,資料線為16位(1K×16)

         是以,要進行位擴充。

       (2)所需2114晶片數目:

         是以,用4片2114

       (3)2114組成邏輯圖

計算機組成原理——存儲器系統

      四片2114位址線并聯後與位址總線相連(即四片2114具有相同的1K位址);四片2114資料線拼接為16位後與資料總線相連。

2.字擴充(位址空間擴充)

     如果每片的字數不夠,需用若幹晶片組成總容量較大的存儲器,稱為字數擴充。為此将高位址譯碼産生的若幹不同片選信号,按各晶片在存儲空間配置設定中所占的編址範圍,分送各晶片。低位位址線直接送往各晶片,以選擇片内的某個單元。而各晶片的資料線,則按位并聯于資料總線。

   例1:圖3-6示出用16K×8位的晶片采用字擴充法組成64K×8位的存儲器連接配接圖。

    解:圖中4個晶片的資料端與資料總線D0-D7相連,位址總線低位位址A0-A13與各晶片的14位位址端相連,而兩位高位位址A14,A15經譯碼器和4個片選端相連。

計算機組成原理——存儲器系統

例2:用2114(1K×4位的SRAM)構成4K×4位的存儲器,試畫出該存儲器的組成邏輯圖。

     解:(1)分析2114及存儲器

          2114:位址線為10位,資料線為4位(1K×4)

          存儲器:位址線為12位,資料線為4位(4K×4)

          是以,要進行字擴充。

        (2)所需2114晶片數目:

         是以,用4片2114   

00 2114(1K×4)
01 2114(1K×4)
10 2114(1K×4)
11 2114(1K×4)

        (3)2114組成邏輯圖(略)

          存儲器所需的12根位址總線分兩部分:

          低10根位址總線與每片2114的A0~A9直接相連,稱片内位址線;高2根位址總線通過2/4譯碼器産生4個不同的片選信号,接各晶片的CS#端,稱片選位址線。

          4根資料總線直接與每片2114的I/O1~I/O3直接相連。

3.字位同時擴充

     在組織實際的主存儲器時,可能既有字擴充又有位擴充。一個存儲器的容量假定為M×N位,若使用l× k位的晶片(l<M, k<N),需要在字向和位向同時進行擴充。此時共需要(M/l)×(N/k)個存儲器晶片。

    例1:設CPU有16根位址線,8根資料線,并用/MREQ作訪存控制信号,用/WR作讀寫控制信号(高為讀,低為寫)。現有下列晶片:1K*4位RAM,4K*8位RAM,8K*8位RAM,2K*8位ROM,4K*8位ROM,8K*8位ROM及74LS138譯碼器和各種門電路,要求:

    ① 主存空間配置設定: 6000H~67FFH為系統程式區; 6800H~6BFFH為使用者程式區。

    ②合理選用上述存儲晶片,說明各選幾片?

    ③詳細畫出存儲晶片的片選邏輯圖。

解題過程闆書

    例2:設 CPU 有 20 根位址線,8 根資料線。并用 IO/M 作訪存控制信号。RD 為讀指令,WR 為寫指令。現有2764 EPROM ( 8K × 8位 ), 外特性如下:

計算機組成原理——存儲器系統

用 138 譯碼器及其他門電路(門電路自定)畫出 CPU和 2764 的連接配接圖。要求位址為 F0000H~FFFFFH , 并

寫出每片 2764 的位址範圍。

解題過程闆書

    例3:設CPU的位址總線16根(A15~A0,A0為低位),雙向資料總線8根(D7~D0),控制總線中與主存有關的信号有MREQ#(允許訪存,低電平有效),R/W#(高電平為讀指令,低電平為寫指令)。

主存位址空間配置設定如下:0-8191(13個1)為系統程式區,由隻讀存儲器組成;8192-32767(15個1)為使用者程式區;最後(最大位址)2K位址空間為系統程式工作區。上述位址為十進制,按位元組編址。現有如下存儲器晶片:

EPROM:8K×8位

SRAM:16K×1位,2K×8位,4K×8位,8K×8位

請從上述晶片中選擇适當的晶片設計該計算機的主存儲器,畫出主存儲器邏輯框圖,注意畫出選片邏輯(可選用門電路及3-8譯碼器74LS138)與CPU的連接配接,說明選擇哪些存儲器晶片?選多少片?

解:解題過程闆書

主存位址空間分布如下圖所示。

8191=213-1 8K(EPROM) 1片8K×8位

8192=213

32767=215-1

32K-8K=24K(SRAM) 3片8K×8位
30K(空)

63488=FFFF-7FF=F800H

65535=216-1

2K(SRAM) 1片2K×8位

圖略。

3.5 高速緩沖存儲器

參考:https://baike.baidu.com/item/%E9%AB%98%E9%80%9F%E7%BC%93%E5%86%B2%E5%AD%98%E5%82%A8%E5%99%A8

http://www.cnblogs.com/freebye/archive/2005/04/08/133699.html

高速緩沖存儲器是存在于主存與CPU之間的一級存儲器,由靜态存儲晶片(SRAM)組成,容量比較小但速度比主存高得多, 接近于CPU的速度。在計算機存儲系統的層次結構中,是介于中央處理器和主存儲器之間的高速小容量存儲器。它和主存儲器一起構成一級的存儲器。高速緩沖存儲器和主存儲器之間資訊的排程和傳送是由硬體自動進行的。

  位址映象規則:

1.全相連映像方式

主存的任意一塊可以映象到Cache中的任意一塊 

(1) 主存與緩存分成相同大小的資料塊。 

(2) 主存的某一資料塊可以裝入緩存的任意一塊空間中。 

  全相聯方式的對應關系如圖2.3.2所示。如果Cache的塊數為Cb,主存的塊數為Mb,則映象關系共有Cb×Mb種。

  圖2.3.3示出了目錄表的格式及位址變換規則。 目錄表存放在相關(聯)存儲器中,其中包括三部分:資料塊在主存的塊位址、存入緩存後的塊位址、及有效位(也稱裝入位)。由于是全相聯方式,是以,目錄表的容量應當與緩存的塊數相同。 

  舉例:某機主存容量為1M,Cache的容量為32KB, 每塊的大小為16個字(或位元組)。 劃出主、緩存的位址格式、 目錄表格式及其容量。 

  

  容量:與緩沖塊數量相同即211=2048(或32K/16=2048)。  優點:命中率比較高,Cache存儲空間使用率高。 

  缺點:通路相關存儲器時,每次都要與全部内容比較,速度低,成本高,因而應用少。 

  2.直接相聯方式 

  位址映象規則: 主存儲器中一塊隻能映象到Cache的一個特定的塊中。 

  (1) 主存與緩存分成相同大小的資料塊。 

  (2) 主存容量應是緩存容量的整數倍,将主存空間按緩存的容量分成區,主存中每一區的塊數與緩存的總塊數相等。 

  (3) 主存中某區的一塊存入緩存時隻能存入緩存中塊号相同的位置。 

  圖2.3.4示出了直接相聯映象規則。 可見,主存中各區内相同塊号的資料塊都可以分别調入緩存中塊号相同的位址中,但同時隻能有一個區的塊存入緩存。由于主、緩存塊号相同,是以,目錄登記時,隻記錄調入塊的區号即可。

  圖2.3.5示出了主、 緩沖位址格式、目錄表的格式及位址變換規則。主、緩存塊号及塊内位址兩個字段完全相同。目錄表存放在高速小容量存儲器中,其中包括二部分:資料塊在主存的區号和有效位。目錄表的容量與緩存的塊數相同。 

  位址變換過程:用主存位址中的塊号B去通路目錄存儲器, 把讀出來的區号與主存位址中的區号E進行比較, 比較結果相等,有效位為1,則Cache命中,可以直接用塊号及塊内位址組成的緩沖位址到緩存中取數;比較結果不相等,有效位為1, 可以進行替換,如果有效位為0,可以直接調入所需塊。 

  優點:位址映象方式簡單,資料通路時,隻需檢查區号是否相等即可,因而可以得到比較快的通路速度,硬體裝置簡單。 

  缺點:替換操作頻繁,命中率比較低。 

  舉例:上例中,主存容量為1M, Cache的容量為32KB,每塊的大小為16個字(或位元組)。劃出主、緩存的位址格式、目錄表格式及其容量。 

   

  容量:與緩沖塊數量相同即211=2048(或32K/16=2048)。 

  3.組相聯映象方式 

  組相聯的映象規則: 

  (1) 主存和Cache按同樣大小劃分成塊。 

  (2) 主存和Cache按同樣大小劃分成組。 

  (3) 主存容量是緩存容量的整數倍,将主存空間按緩沖區的大小分成區,主存中每一區的組數與緩存的組數相同。 

  (4) 當主存的資料調入緩存時,主存與緩存的組号應相等,也就是各區中的某一塊隻能存入緩存的同組号的空間内,但組内各塊位址之間則可以任意存放,即從主存的組到Cache的組之間采用直接映象方式;在兩個對應的組内部采用全相聯映象方式。 

  圖2.3.6示出了組相聯的映象關系, 圖中緩存共分Cg個組,每組包含有Gb塊; 主存是緩存的Me倍,是以共分有Me個區,每個區有Cg組,每組有Gb塊。那麼, 主存位址格式中應包含4個字段:區号、區内組号、組内塊号和塊内位址。 而緩存中包含3個字段:組号、組内塊号、塊内位址。主存位址與緩存位址的轉換有兩部分,組位址是按直接映象方式,按位址進行通路,而塊位址是采用全相聯方式,按内容通路。組相聯的位址轉換部件也是采用相關存儲器實作,見圖2.3.7。 

  相關存儲器中每個單元包含有: 主存位址中的區号E與組内塊号B,兩者結合在一起,其對應的字段是緩存塊位址b。相關存儲器的容量,應與緩存的塊數相同。當進行資料通路時,先根據組号,在目錄表中找到該組所包含的各塊的目錄,然後将被訪資料的主存區号與組内塊号,與本組内各塊的目錄同時進行比較。如果比較相等,而且有效位為“1”則命中。

   可将其對應的緩存塊位址b送到緩存位址寄存器的塊位址字段,與組号及塊内位址組裝即形成緩存位址。如果比較不相等,說明沒命中,所通路的資料塊尚沒有進入緩存,則進行組内替換;如果有效位為0,則說明緩存的該塊尚未利用, 或是原來資料廢棄,可重新調入新塊。 

  優點:塊的沖突機率比較低,塊的使用率大幅度提高,塊失效率明顯降低。 

  缺點:實作難度和造價要比直接映象方式高。 

  2.3.3 替換政策 

  根據程式局部性規律可知:程式在運作中,總是頻繁地使用那些最近被使用過的指令和資料。這就提供了替換政策的理論依據。綜合命中率、實作的難易及速度的快慢各種因素,替換政策可有随機法、先進先出法、最近最少使用法等。 

  1.随機法(RAND法) 

  随機法是随機地确定替換的存儲塊。設定一個随機數産生器,依據所産生的随機數,确定替換塊。這種方法簡單、易于實作,但命中率比較低。 

  2.先進先出法(FIFO法) 

  先進先出法是選擇那個最先調入的那個塊進行替換。當最先調入并被多次命中的塊,很可能被優先替換,因而不符合局部性規律。這種方法的命中率比随機法好些,但還不滿足要求。先進先出方法易于實作,例如Solar-16/65機Cache采用組相聯方式,每組4塊,每塊都設定一個兩位的計數器,當某塊被裝入或被替換時該塊的計數器清為0,而同組的其它各塊的計數器均加1,當需要替換時就選擇計數值最大的塊被替換掉。 

  3.最近最少使用法(LRU法) 

  LRU法是依據各塊使用的情況, 總是選擇那個最近最少使用的塊被替換。這種方法比較好地反映了程式局部性規律。 

  實作LRU政策的方法有多種。 下面簡單介紹計數器法、寄存器棧法及硬體邏輯比較對法的設計思路。 

  計數器方法:緩存的每一塊都設定一個計數器,計數器的操作規則是: 

  (1) 被調入或者被替換的塊, 其計數器清“0”,而其它的計數器則加“1”。 

  (2) 當通路命中時,所有塊的計數值與命中塊的計數值要進行比較,如果計數值小于命中塊的計數值,則該塊的計數值加“1”;如果塊的計數值大于命中塊的計數值,則數值不變。最後将命中塊的計數器清為0。 

  (3) 需要替換時,則選擇計數值最大的塊被替換。 

  例如IBM 370/65機的Cache用組相聯方式,每組4塊,每一塊設定一個2位的計數器,其工作狀态如表2.3.1。

表2.3.1 計數器法實作LRU政策

主存塊位址 塊4 塊2 塊3 塊5
塊号 計數器 塊号 計數器 塊号 計數器 塊号 計數器
Cache塊0 1 10 1 11 1 11 5 00
Cache塊1 3 01 3 10 3 00 3 01
Cache塊2 4 00 4 01 4 10 4 11
Cache塊3 XX 2 00 2 01 2 10
操作 起始狀态 調入 命中 替換

  寄存器棧法:設定一個寄存器棧, 其容量為Cache中替換時參與選擇的塊數。如在組相聯方式中,則是同組内的塊數。堆棧由棧頂到棧底依次記錄主存資料存入緩存的塊号,現以一組内4塊為例說明其工作情況,如表2.3.2所示,表中1~4為緩存中的一組的4個塊号。

表2.3.2 寄存器棧法實作 

緩存操作 初始狀态 調入2 命中塊4 替換塊1
寄存器0 3 2 4 1
寄存器1 4 3 2 4
寄存器2 1 4 3 2
寄存器3 1 1 3

  (1) 當緩存中尚有空閑時,如果不命中,則可直接調入資料塊,并将新通路的緩沖塊号壓入堆棧,位于棧頂。其他棧内各單元依次由頂向下順壓一個單元,直到空閑單元為止。 

  (2) 當緩存已滿,如果資料通路命中,則将通路的緩存塊号壓入堆棧,其他各單元内容由頂向底逐次下壓直到被命中塊号的原來位置為止。如果通路不命中,說明需要替換,此時棧底單元中的塊号即是最久沒有被使用的。是以将新通路塊号壓入堆棧,棧内各單元内容依次下壓直到棧底,自然,棧底所指出的塊被替換。 

  比較對法:比較對法是用一組硬體的邏輯電路來記錄各塊使用的時間與次數。 

  假設Cache的每組中有4塊, 替換時,是比較4塊中那一塊是最久沒使用的,4塊之間兩兩相比可以有6種比較關系。如果每兩塊之間的對比關系用一個RS觸發器,則需要6個觸發器(T12,T13,T14,T23,T24,T34), 設T12=0表示塊1比塊2最久沒使用,T12=1表示塊2比塊1最久沒有被使用。在每次通路命中或者新調入塊時,與該塊有關的觸發器的狀态都要進行修改。 按此原理,由6個觸發器組成的一組編碼狀态可以指出應被替換的塊。例如,塊1被替換的條件是:T12=0,T13=0,T14=0;塊2被替換的條件是:T12=1,T23=0,T24=0等等。 

  2.3.4 Cache的一緻性問題 

  Cache的内容是主存内容的一部分,是主存的副本,内容應該與主存一緻。由于: 

  (1) CPU寫Cache,沒有立即寫主存; 

  (2) I/O處理機或I/O裝置寫主存。 

  進而造成Cache與主存内容的不一緻,如圖2.3.8所示。 

  對Cache進行寫操作時引起的不一緻的解決方法: 

  1.全寫法亦稱寫直達法(WT法-Write through) 

  方法:在對Cache進行寫操作的同時,也對主存該内容進行寫入。 

  優點:可靠性較高,操作過程比較簡單。 

  缺點:寫操作速度得不到改善,與寫主存的速度相同。

  2.寫回法(WB法-Write back) 

  方法:在CPU執行寫操作時,隻寫入Cache,不寫入主存。 

  優點:速度較高。 

  缺點:可靠性較差,控制操作比較複雜。 

  2.3.5 Cache性能分析 

  1.Cache系統的加速比 

  存儲系統采用Cache技術的主要目的是提高存儲器的通路速度,加速比是其重要的性能參數。Cache存儲系統的加速比SP(Speedup)為:

  其中:Tm為主存儲器的通路周期,Tc為Cache的通路周期,T則為Cache存儲系統的等效通路周期,H為命中率。 

  可以看出,加速比的大小與兩個因素有關:命中率H及Cache與主存通路周期的比值Tc/Tm,命中率越高加速比越大。圖2.3.9示出了加速比與命中率的關系。

  2.Cache的命中率 

影響Cache命中率的因素很多,如Cache的容量,塊的大小,映象方式,替換政策以及程式執行中位址流的分布情況等等。一般地說,Cache容量越大則命中率越高, 當容量達到一定程度後,容量的增加命中率的改善并不大;Cache塊容量加大,命中率也明顯增加,但增加到一定值之後反而出現命中率下降的現象;直接映象法命中率比較低,全相聯方式命中率比較高,在組相聯方式中,組數分得越多,則命中率下降。 

3.6 虛拟存儲器

主存和聯機工作的輔存共同構成了虛拟存儲器。對于應用程式員而言,虛拟存儲器是透明的,虛拟存儲器具有主存的速度和輔存的容量,提高了存儲系統的性能價格比。

3.6.1 虛拟存儲器的基本概念

       虛拟存儲器将主存或輔存的位址控件統一編址,形成一個龐大的位址控件,在這個空間内,使用者可以自由程式設計,而不必在乎實際的主存容量和程式在貯存中實際的存放位置。

       使用者程式設計允許涉及到的位址稱為虛位址或者邏輯位址,虛位址對應的存儲控件稱為虛拟控件或者程式控件,實際的主存單元稱為實位址或者實體位址,實位址對應的是主存位址空間,也稱為實位址空間。虛位址比實位址要大很多。

       CPU使用虛位址時,由輔助硬體找出虛位址和實位址之間的對應關系,并判斷這個虛位址對應的存儲單元是否已裝入記憶體,如果已在記憶體,則通過位址變換,CPU可直接通路主存訓示的記憶體單元,如果不在記憶體,則把包含這個字的一頁或者一段調入主存後再有CPU通路,如果主存已滿,則采用替換算法置換主存中的一頁或者一段。

3.6.2 頁式虛拟存儲器

1、頁式虛存位址映射頁式虛拟存儲系統中,虛位址空間被分成等長大小的頁,稱為邏輯頁;主存空間也被分成同樣大小的頁,稱為實體頁。相應地,虛位址分為兩個字段:高字段為邏輯頁号,低字段為頁内位址(偏移量);實存位址也分兩個字段:高字段為實體頁号,低字段為頁内位址。通過頁表可以把虛位址(邏輯位址)轉換成實體位址。

在大多數系統中,每個程序對應一個頁表。頁表中對應每一個虛存頁面有一個表項,表項的内容包含該虛存頁面所在的主存頁面的位址(實體頁号),以及訓示該邏輯頁是否已調入主存的有效位。位址變換時,用邏輯頁号作為頁表内的偏移位址索引頁表(将虛頁号看作頁表數組下标)并找到相應實體頁号,用實體頁号作為實存位址的高字段,再與虛位址的頁内偏移量拼接,就構成完整的實體位址。現代的中央處理機通常有專門的硬體支援位址變換。

2、轉換後援緩沖器由于頁表通常在主存中,因而即使邏輯頁已經在主存中,也至少要通路兩次實體存儲器才能實作一次訪存,這将使虛拟存儲器的存取時間加倍。為了避免對主存通路次數的增多,可以對頁表本身實行二級緩存,把頁表中的最活躍的部分存放在高速存儲器中,組成快表。這個專用于頁表緩存的高速存儲部件通常稱為轉換後援緩沖器(TLB)。儲存在主存中的完整頁表則稱為慢表。

3、内頁表是虛位址到主存實體位址的變換表,通常稱為内頁表。與内頁表對應的還有外頁表,用于虛位址與輔存位址之間的變換。當主存缺頁時,調頁操作首先要定位輔存,而外頁表的結構與輔存的尋址機制密切相關。例如對磁盤而言,輔存位址包括磁盤機号、磁頭号、磁道号和扇區号等。

3.6.3 段式虛拟存儲器

 段是按照程式的自然分界劃分的長度可以動态改變的區域。通常,程式員把子程式、操作數和常數等不同類型的資料劃分到不同的段中,并且每個程式可以有多個相同類型的段。在段式虛拟存儲系統中,虛位址由段号和段内位址(偏移量)組成。虛位址到實主存位址的變換通過段表實作。每個程式設定一個段表,段表的每一個表項對應一個段。每個表項至少包含下面三個字段:

(1)有效位:指明該段是否已經調入實存。

(2)段起址:指明在該段已經調入實存的情況下,該段在實存中的首位址。

(3)段長:記錄該段的實際長度。設定段長字段的目的是為了保證通路某段的位址空間時,段内位址不會超出該段長度導緻位址越界而破壞其他段。段表本身也是一個段,可以存在輔存中,但一般駐留在主存中。

段式虛拟存儲器有許多優點:

①段的邏輯獨立性使其易于編譯、管理、修改和保護,也便于多道程式共享。

②段長可以根據需要動态改變,允許自由排程,以便有效利用主存空間。

段式虛拟存儲器也有一些缺點:

①因為段的長度不固定,主存空間配置設定比較麻煩。

②容易在段間留下許多外碎片,造成存儲空間使用率降低。

③由于段長不一定是2的整數次幂,因而不能簡單地像分頁方式那樣用虛位址和實位址的最低若幹二進制位作為段内偏移量,并與段号進行直接拼接,必須用加法操作通過段起址與段内偏移量的求和運算求得實體位址。是以,段式存儲管理比頁式存儲管理方式需要更多的硬體支援。

3.6.4 段頁式虛拟存儲器

段頁式虛拟存儲器是段式虛拟存儲器和頁式虛拟存儲器的結合。實存被等分成頁。每個程式則先按邏輯結構分段,每段再按照實存的頁大小分頁,程式按頁進行調入和調出操作,但可按段進行程式設計、保護和共享。它把程式按邏輯機關分段以後,再把每段分成固定大小的頁。程式對主存的調入調出是按頁面進行的,但它又可以按段實作共享和保護,兼備頁式和段式的優點。缺點是在映象過程中需要多次查表。在段頁式虛拟存儲系統中,每道程式是通過一個段表和一組頁表來進行定位的。段表中的每個表目對應一個段,每個表目有一個指向該段的頁表起始位址及該段的控制保護資訊。由頁表指明該段各頁在主存中的位置以及是否已裝入、已修改等狀态資訊。如果有多個使用者在機器上運作,多道程式的每一道需要一個基号,由它指明該道程式的段表起始位址。虛拟位址格式如下: 

  基号 段号 頁号 頁内位址

3.6.4 變換算法

虛拟存儲器位址變換基本上有3種形虛拟存儲器工作過程式:全聯想變換、直接變換群組聯想變換。任何邏輯空間頁面能夠變換到實體空間任何頁面位置的方式稱為全聯想變換。每個邏輯空間頁面隻能變換到實體空間一個特定頁面的方式稱為直接變換。組聯想變換是指各組之間是直接變換,而組内各頁間則是全聯想變換。替換規則用來确定替換主存中哪一部分,以便騰空部分主存,存放來自輔存要調入的那部分内容。常見的替換算法有4種。

①随機算法:用軟體或硬體随機數産生器确定替換的頁面。

②先進先出:先調入主存的頁面先替換。

③近期最少使用算法(LRU,LeastRecently Used):替換最長時間不用的頁面。

④最優算法:替換最長時間以後才使用的頁面。這是理想化的算法,隻能作為衡量其他各種算法優劣的标準。

虛拟存儲器的效率是系統性能評價的重要内容,它與主存容量、頁面大小、命中率,程式局部性和替換算法等因素有關。

繼續閱讀