內部存儲器——③主存儲器

一、只讀存儲器ROM


 

即使電源斷電,ROM中存儲的信息也不會丟失。

 

(一)ROM的類型

ROM工作是隻能讀出,不能寫入。 把向ROM寫入的過程稱爲對ROM進行編程,根據編程方法的不同,通常可分爲以下幾類:

(1)掩膜式ROM(MROM)

它的內容是由半導體制造廠按用戶提出的要求在芯片的生產過程中直接寫入的。寫入之後任何都無法改變。

(2)一次可編程ROM(PROM)

PROM允許用戶利用專門的設備(編程器)寫入自己的程序,一旦寫入,其內容將無法改變。

(3)可擦除可編程ROM(EPROM)

EPROM不僅可以由用戶利用編程器寫入信息,而且可以對其內容進行多次修改。

EPROM又可分爲兩種:紫外線擦除(UVEPROM)和電擦除(EEPROM).

(4)閃速存儲器

閃速存儲器(Flash Memory,簡稱閃存)是一種允許在操作中被多次擦除或重寫的只讀存儲器,它的主要特點是既可在不加電的情況長期保存信息,又能在線進行快速擦除與重寫。兼備了EEPROM和RAM的有點。

 

 

1.EPROM

         EPROM由以色列工程師Dov Frohman發明,是一種斷電後仍能保留數據的計算機儲存芯片——即非易失性的(非揮發性)。它是一組浮柵晶體管,被一個提供比電子電路中常用電壓更高電壓的電子器件分別編程。一旦編程完成後,EPROM只能用強紫外線照射來擦除。通過封裝頂部能看見硅片的透明窗口,很容易識別EPROM,這個窗口同時用來進行紫外線擦除。可以將EPROM的玻璃窗對準陽光直射一段時間就可以擦除。

 

(1)簡介

         EPROM是一種具有可擦除功能,擦除後即可進行再編程的ROM內存,寫入前必須先把裏面的內容用紫外線照射它的IC卡上的透明視窗的方式來清除掉。這一類芯片比較容易識別,其封裝中包含有“石英玻璃窗”,一個編程後的EPROM芯片的“石英玻璃窗”一般使用黑色不乾膠紙蓋住, 以防止遭到陽光直射。

 

(2)特點

        EPROM的編程需要使用編程器完成。編程器是用於產生EPROM編程所需要的高壓脈衝信號的裝置。編程時將EPROM的數據送到隨機存儲器中,然後啓動編程程序,編程器便將數據逐行地寫入EPROM中。

        一片編程後的EPROM,可以保持其數據大約10~20年,並能無限次讀取。擦除窗口必須保持覆蓋,以防偶然被陽光擦除。老式電腦的BIOS芯片,一般都是EPROM,擦除窗口往往被印有BIOS發行商名稱、版本和版權聲明的標籤所覆蓋。EPROM已經被EEPROM取代(電擦除只讀寄存器)。

        一些在快閃記憶體出現前生產的微控制器,使用EPROM來儲存程序的版本,以利於程式開發;如使用一次性可編程器件,在調試時將造成嚴重浪費 。

 

(3)工作原理

        EPROM是可編程器件,主流產品是採用雙層柵(二層poly)結構,主要結構如圖一所示。浮柵中沒有電子注入時,在控制柵加電壓時,浮柵中的電子跑到上層,下層出現空穴.由於感應,便會吸引電子,並開啓溝道.如果浮柵中有電子的注入時,即加大的管子的閾值電壓,溝道處於關閉狀態.這樣就達成了開關功能。

        如圖二所示,這是EPROM的寫入過程,在漏極加高壓,電子從源極流向漏極溝道充分開啓.在高壓的作用下,電子的拉力加強,能量使電子的溫度極度上升,變爲熱電子(hot electrON).這種電子幾乎不受原子的振動作用引起的散射,在受控制柵的施加的高壓時,熱電子使能躍過SiO2的勢壘,注入到浮柵中.

        在沒有別的外力的情況下,電子會很好的保持着.在需要消去電子時,利用紫外線進行照射,給電子足夠的能量,逃逸出浮柵。

        EEPROM的寫入過程,是利用了隧道效應,即能量小於能量勢壘的電子能夠穿越勢壘到達另一邊.

        量子力學認爲物理尺寸與電子自由程相當時,電子將呈現波動性,這裏就是表明物體要足夠的小就pn結來看,當p和n的雜質濃度達到一定水平時,並且空間電荷極少時,電子就會因隧道效應嚮導帶遷移.電子的能量處於某個級別允許級別的範圍稱爲"帶",較低的能帶稱爲價帶,較高的能帶稱爲導帶.電子到達較高的導帶時就可以在原子間自由的運動,這種運動就是電流。

EEPROM寫入過程,如圖3所示,根據隧道效應,包圍浮柵的SiO2,必須極薄以降低勢壘。源漏極接地,處於導通狀態.在控制柵上施加高於閾值電壓的高壓,以減少電場作用,吸引電子穿越。

 

 

二、高速緩衝存儲器


 

Cache是一種高速緩衝存儲器,是爲了解決CPU和主存之間速度不匹配而採用的一項重要技術。

 

1.訪問局部性原理:

        在程序執行過程中, 處理器訪問存儲器中的指令和數據傾向於成塊進行。 程序通常包含許多迭代循環和子程序,一旦進入了一個循環或子程序, 則需要重複訪問一小組指令, 同樣, 對於表和數組的操作, 包含存取一塊塊的數據字。 在一長段時間內, 使用的塊是變化的, 而在一個小段時間內, 處理器主要訪問存儲器中的固定塊。

 

2.功能:

        cache是一種高速緩衝存儲器,是爲了解決CPU和主存之間速度不匹配而採用的一項重要技術。cache是介於CPU和主存之間的小容量存儲器,但存取速度比主存快。

 

3.基本原理

        Cache和主存都被分成若干個大小相等的塊,每塊由若干字節組成。由於cache的容量遠小於主存的容量,所以cache中的塊數要遠小於主存的塊數,它保存的信息只是主存中最急需執行的若干塊的副本。

 

        CPU與Cache之間的數據交換是以塊爲單位的。當CPU讀取主存中一個字時,便發出此字的內存地址到CACHE和主存。此時CACHE控制邏輯依據地址判斷此字當前是否在CACHE 中,若是,爲命中,此字立即傳送給CPU;若非,爲不命中則用主存讀週期把此字從內存讀出送到CPU,與此同時,把含由這個字的整個數據塊從主存讀出送到CACHE中。

圖5.4-1 Cache 原理圖

 

 

三、虛擬存儲器


 

虛擬存儲器是一個容量非常大的存儲器的邏輯模型,不是任何實際的物理存儲器。

虛擬存儲器指的是主存——外存層次。它以透明的方式給用戶提供 了一個比實際主存空間大得多的程序地址空間。

 

1.實地址與虛地址

        用戶編制程序時使用的地址稱爲虛地址或邏輯地址。其對應的存儲空間稱爲虛存空間或邏輯地址空間;而計算機物理內存的訪問地址則稱爲實地址或物理地址,其對應的存儲空間稱爲物理存儲空間或主存空間。程序進行虛地址到實地址轉換的過程稱爲程序再定位。

 

2.虛存的訪問過程

        每次訪存是,首先判斷該虛地址所對弈的部分是否在實存中,如果是,則進行地址轉換並用實地址訪問主存;否則,按照某種算法將輔存中的部分程序調度進內存,再按同樣的方法訪問主存。

 

3.cache與虛存的異同

在三級存儲體系中 ,cache-主存和主存-輔存這兩個存儲層次有許多相同點:

(1)出發點相同:二者都是爲了提高存儲系統的性能價格比而購置的分層存儲體系,都力圖使存儲系統的性能接近高速存儲器,而價格和容量接近低速存儲器。

(2)原理相同:都是利用了程序運行時的局部性原理吧最近常用的信息塊從相對慢速而大容量的存儲器調入相對高速而小容量的存儲器。

(3)側重點不同:cache主要解決主存與CPU的速度差異問題;而就性能價格比的提高而言,虛存主要是解決存儲容量問題。

(4)數據通路不同:CPU與cache和主存之間均有直接訪問通路,cache不命中時可直接訪問主存,而虛存所一欄的輔存與CPU之間不存在直接的數據通路,而主存不命中時只能通過調頁解決,CPU最終還是要訪問主存。

(5)透明性不同:cache的管理完全有硬件完成,對系統程序員和應用程序員均透明;而虛存管理由軟件(操作系統)和硬件共同完成,由於軟件的介入,虛存對實現存儲管理的系統程序員不透明,而支隊應用程序員透明。

(6)未命中時的損失不同:由於主存的存取時間是cache的存取時間的5-10倍,而主存的存取速度通常比輔存的存取速度快上千倍,故主存未命中時系統的性能損失要遠島嶼cache未命中時的損失。

 

 

四、輔助存儲器


 

輔助存儲器用於存放當前不需要立即使用的信息,一旦需要, 則與主存成批地交換數據, 它作爲主存的後備和補充, 是主機的外部設備。 輔助存儲器的特點是容量大、成本底、通常在斷電後仍然保存信息。

 

輔助存儲器的種類•磁表面存儲器-磁盤-磁帶光存儲器光盤

 

磁盤由一組繞軸旋轉的盤片組成,盤片的數量爲1~20片。磁盤系統的轉速一般在每分鐘3600轉到12000轉之間,即3600rpm~ 12000rpm。

 

1.輔助存儲器的技術指標

(1)存儲密度:單位長度或單位面積的磁層表面所能存儲的二進制信息量。可用道密度和位密度來表示。

(2)磁道的單位長度所能記錄二進制信息的位數爲位密度或線密度。

(3)存儲容量:磁盤的存儲容量是指所能存儲的二進制信息總量。一般用字節表示。

          磁盤存儲器含有格式化和非格式化容量兩個指標。

                  格式化容量按某種特定的記錄格式所能存儲信息的總量。

                  非格式化量指磁記錄表面全部可利用的磁化單元總數。一般格式化容量相當於非格式化容量的70%。

(3)尋址時間:包括兩部分:一是找道時間;二是等待時間。

          找道時間:磁頭尋找目標磁道所需要的時間。

          等待時間:磁頭從目的道等待需要訪問的扇區恰好旋轉到它的正下方所經歷的時間。

 

所需扇區轉到磁頭之下所需要的時間稱爲旋轉時間。平均延遲是磁盤轉半圈的時間,所以對大部分磁盤的平均旋轉時間TAR爲:

數據傳輸率:磁盤存儲器在單位時間內向主機傳送數據的字節數,稱爲數據傳輸率。

 

舉例:

         磁盤組有6片磁盤,每片有兩個記錄面,最上最下兩個面不用,存儲區域內徑550px,外徑825px,道密度爲40道/cm, 內層位密度400位/cm,轉速2400轉/分。問:

(1)共有多少個柱面?

(2)盤組總存儲容量是多少?

(3)數據傳輸率是多少?

(4)採用定長數據塊記錄格式,直接尋址的最小單位是什麼?尋址命令中如何表示磁盤地址?

(5)如果某文件長度超過一個磁道的容量,應將它記錄在同一個存儲面上,還是記錄在同一個柱面上?

 

解:(1) 有效存儲區域=16.5-11=5.5(cm)

                 道密度=40道/cm

                  40*5.5=220道

                  即220個柱面.

      (2) 內層磁道周長==2*3.14*11=69.08(cm)

                 每道信息量=400位/cm*69.08=27632=3454位

                 每面信息量=3454B*220=759880B

                 盤組總容量=759880*10=7598800B

      (3) 磁盤數據傳輸率Dr=rN=2400/60*3454=13816B/s

 

五、主存儲器的基本組織  


 

1.存儲器的基本組織

(1)  與CPU的連接:主要是 地址線、控制線、數據線 的連接。

(2)   多個芯片連接 :存儲器容量與實際存儲器的要求多有不符。 如前所述存儲器芯片有不同的組織形式,如1024*1、1024*4、4096*8等;       實際使用時,需進行字和位擴展(多個芯片連接),組成 你所需要的實際的存儲器,如 1K*8、4K*8  等的存儲器。

 

2.位擴展法

說明:當芯片的容量和主存容量相同,而位數不足時,就要對位數進行擴展。

 

方法:將多片存儲芯片的地址端、片選端和讀/寫控制端各自並聯在一起,而他們的數據端分別引出,連到存儲器不同位的數據總線上。只加大字長,而存儲器的字數與存儲器芯片字數一致, 對芯片沒有片選要求。

 

某機字長32位,存儲容量1MB,若按字編址,它的尋址範圍是0~256kb

假設機器字長是n位,

按字編制:由於機器一字爲n位,則一字也爲nbits=n/8 字節;

按半字編制:由於機器一字爲n位,,則半字爲n/2 bits = n/16 字節;

按雙字編制:由於機器一字爲n位,,則雙字爲n*2 bits = n/4 字節;

通過上述方法得出 計算機的單位 字/半字/雙字,然後採用主存容量/ 單位 = 尋址範圍了。

 

 

例如:

        用8k*1的芯片組成8k*8的存儲器需 8 個芯片

        地址線——需 13 根    8k=2^13所以需要13根地址線

        數據線—— 8根            8位意味着8根數據線

        控制線—— WR接存儲器的WE                                  

 

3.字擴展法

說明:當芯片字長與主存相同,而容量不足時,就需要用幾片存儲器芯片組成合起來對存儲空間即地址空間進行擴展,稱爲字擴展。

 

方法:將各芯片的地址線,數據線、讀/寫線分別並聯在一起,片選信號單獨連接,用來區分各片地址,用高位地址經過譯碼而產生的輸出信號作爲各個芯片的片選信號,用低位地址作爲各芯片的片內地址。

 

例如:

用16K*8位的芯片組成64K*8位的存儲器需4個芯片

    地址線—— 共需16根

    片內:(214 = 16K) 14根,片選:2根

    數據線—— 8根

    控制線 —— WE

 

地址分配表

 

4.字位同時擴展法

        一個存儲器的容量假定爲M×N位,若使用l×k位的芯片(l<M,k<N)需要在字向和位向同時進行擴展。此時共需要(M/l)×(N/k)個存儲器芯片。

        其中,M/l表示把M×N的空間分成(M/l)個部分(稱爲頁或區),每頁(N/k)個芯片。

地址分配:

    ①用log2 l位表示低位地址:用來選擇訪問頁內的l個字

    ②用log2(M/l)位表示高位地址:用來經片選譯碼器產生片選信號。

 

例如:

 

用1k * 4 的存儲器芯片 2114 組成  2k * 8 的存儲器

 

 

    例:有若干片1M×8位的SRAM芯片,採用字擴展方法構成4MB存儲器,問

(1) 需要多少片RAM芯片?

(2) 該存儲器需要多少地址位?

(3) 畫出該存儲器與CPU連接的結構圖,設CPU的接口信號有地址信號、數據信號、控制信號MREQ和R/W#。

(4) 給出地址譯碼器的邏輯表達式。

解:(1) 需要4M/1M = 4片SRAM芯片;(2) 需要22條地址線 (3) 譯碼器的輸出信號 

(4) 邏輯表達式爲:

 

 

例  設有若干片256K×8位的SRAM芯片,問:

(1) 採用字擴展方法構成2048KB的存儲器需要多少片SRAM芯片?

(2) 該存儲器需要多少字節地址位?

(3) 畫出該存儲器與CPU連接的結構圖,設CPU的接口信號有地址信號、數據信號、控制信號MREQ#和R/W#。

 

解:

(1) 該存儲器需要2048K/256K = 8片SRAM芯片;

(2) 需要21條地址線, 因爲221=2048K,其中 高3位用於芯片選擇, 低18位作爲每個 存儲器芯片的地址輸入。 

(3) 該存儲器與CPU連接 的結構圖如下。

 

例 設有若干片256K×8位的SRAM芯片,問:   

 (1) 如何構成2048K×32位的存儲器?    

(2) 需要多少片RAM芯片?    

(3) 該存儲器需要多少字節地址位?    

(4) 畫出該存儲器與CPU連接的結構圖,設CPU的接口信號有地址信號、數據信號、控制信號MREQ#和R/W#。

 

解:採用字位擴展的方法。需要32片SRAM芯片。

 

存儲容量 = 存儲單元個數 X 存儲字長

存儲單元個數 = 2^地址總線數

存儲字長 = 2^數據總線數

 

六、雙端口存儲器


 

雙端口存儲器由於同一個存儲器具有兩組相互獨立的讀寫控制電路而得名。

1.邏輯結構

圖5.3-1 雙端口存儲器IDT7133邏輯框圖

 

2.無衝突讀寫控制

        當兩個端口的地址不相同時,在兩個端口上進行讀寫操作,一定不會發生衝突。當任一個端口被選中驅動時,就可對整個存儲器進行存取,每一個端口有自己的片選控制和輸出驅動控制。 讀操作時, 端口的   打開輸出驅動器,有存儲矩陣讀出的數據就出現在I/O線上。

 

3.有衝突讀寫控制

        當兩個端口同時存取存儲器同一存儲單元時, 變發生讀寫衝突。爲了解決此問題,特設置了標誌。在這種情況下, 片上的判斷邏輯可以決定對哪個端口優先進行讀寫操作,而對另一個被延遲的端口置標誌(變爲低電平),即暫時關閉此端口。換句話說,讀寫操作對變爲低電平的端口是不起作用的。 一旦優先端口完成讀寫操作,纔將被延遲端口的標誌復位(變爲高電平),開放此端口,允許延遲端口進行存取。

 

 

 

七、交叉存儲器


 

一個由若干個模塊組成的主存儲器是線性編址的。這些地址在各模塊中如何安排,有兩種方式:一種是順序方式,一種是交叉方式。

 

1.順序方式

        設存儲器容量爲32個字,分成M0、M1、M2、M3四個模塊,每個模塊存儲8個字,訪問地址按順序分配給一個模塊後,接着又按順序爲下一個模塊分配訪問地址,這樣,存儲器的32個字可由5位地址寄存器指示,其中高2位選擇4個模塊中的一個,低3位選擇每個模塊中的8個字。

 

2.交叉方式

        將4個線性地址0,1,2,3依次分配給M0、M1、M2、M3四個模塊,再將線性地址4,5,6,7依次分配給M0、M1、M2、M3四個模塊……直到全部線性地址分配完畢爲止。當存儲器尋址時,用地址寄存器的低2位選擇4個模塊中的一個,而 用高3位選擇模塊中的8個字。

 

3.基本結構

        主存被分爲4個相互獨立、容量相同的M0、M1、M2、M3四個模塊。每個模塊都有自己的讀寫控制電路、地址寄存器和數據寄存器,各自以等同的方式與CPU傳送信息。

 

        CPU同時方位四個模塊,由存儲器控制部件控制他們分時使用數據總線進行信息傳送。這樣,對每一個存儲模塊來說,從CPU給出訪存命令知道讀出信息仍然使用了一個存儲週期時間,而對CPU來說,它可以在一個存取週期內連續訪問四個模塊。各個模塊的讀寫將重疊進行,所以多模塊交叉存儲器是一種並行存儲器結構。

圖5.3-2 順序方式和交叉方式的存儲

 

        假設模塊自稱等於數據總線寬度,模塊存取一個字的存儲週期爲T,總線傳送週期爲,存儲器的交叉模塊數爲m,那麼爲了實現流水線方式存取,應當滿足:T=mt
即成塊傳送可按間隔流水方式進行,也就是每經時間延遲後啓動下一個模塊。
m=T/r稱爲交叉存取度。交叉存儲器要求其模塊數必須大於或等於m,以保證啓動某模塊後經時間再次啓動該模塊是,他的上次存取操作已經完成。 這樣,連續讀取m個字所需的時間爲:t1 = T +(m-1)t
而順序方式存儲器連續讀取m個字的時間爲:t2 = mT
     

 

八、相聯存儲器


 

是按內容訪問存儲器。相聯存儲器的基本原理是把存儲單元所存內容的某一部分作爲檢索項(即關鍵字項),去檢索存儲器,並將存儲器中該檢索項符合的存儲單元內容進行讀出或寫入。

 

採用相聯存儲器可以極大地簡化查找的形式和改進查找時間。

 

1.相聯存儲器的組成: 檢索寄存器、屏蔽寄存器、符合寄存器、比較線路、代碼寄存器、存儲體。

圖5.3-3  相聯存儲器邏輯圖

 

九、命中率


 

在一個程序執行期間,設Nc表示完成存取的總次數,Nm表示主存完成存取的總次數,h定義爲命中率。則有:

 

若tc表示命中時的CACHE訪問時間,tm表示未命中時的主存訪問時間,1-h表示未命中率,則CACHE/主存系統的平均訪問時間ta爲: 

 

例如:CPU執行一段程序時,cache完成存取的次數爲1900此,主存完成存取的次數爲100次,已知cache存取週期爲50ns,主存存取後期爲250ns,求cache/主存系統的效率和平均訪問時間。 

 
 

十、地址映射


 

        爲了把主存塊放到cache中,必須應用某種方法把主存地址定位到cache中,稱作地址映射。主要方式有:直接映射方式、相聯映射方式、組相聯映射方式。

 

        Cache的數據塊的大小稱爲行,用Li表示,其中i=0,1,2,…m-1,共有m=2r行。主存的數據塊大小稱爲塊,用Bj表示,其中j=0,1,2,…n-1,共有n=2s塊。行與塊是等長的,每個塊(行)是由k=2w個連續的字組成,字是CPU每次訪問存儲器時可存取的最小單位。

 

1.全相聯映射方式

        在全相聯映象中,主存中任一個塊能夠映象到Cache中任意一個塊的位置。將主存中的一個塊的地址(塊號)與塊的內容(字)一起存於cache的行中,其中塊地址存於cache行的標記部分中。

 

主存地址長度=(s+w)位,尋址單元數=2s+w個字或字節,塊大小=行大小=2w個字或字節,主存的塊數=2s,Cache的行數=不由地址格式確定,標記大小=s位

(a)全相聯映射示意圖
 
 
b)全相聯cache的檢索過程
圖5.4-2 全相聯映射的cache組織
        檢索過程:CPU訪存指令制定了一個內存地址(包括主存和cache),爲了快速檢索,指令中的塊號與cache中所有行的標記同時在比較器中進行比較。如果塊號命中,則按字地址從cache中讀取一個字;如果塊號未命中,則按內存地址從主存中讀取這個字。
全相聯方式的主要缺點是比較器電路難於設計和實現,因此只適合小容量cache採用。
 
2.直接映射方式
        一種多對一的映射關係,一個主存塊只能拷貝到cache一個特定行的位置上。
        在直接映象Cache中, 地址被劃分未標誌、頁號和偏移量。頁號用於確定數據地址在Cache存儲器中的物理位置。 
        直接映象方式:根據Cache的大小把主存分成若干個區,因此主存容量是Cache容量的若干倍。
      i=j     mod m      
        式中:mcache的總行數
        主存地址長度=s+w)位,尋址單元數=2s+w個字或字節,塊大小=行大小=2w個字或字節,主存的塊數=2s,Cache的行數=m=2r,標記大小=s-r)位。
 
(a)直接映射示意圖

 

(b)直接映射cache的檢索過程
圖5.4-3 直接映射的cache組織
 
        檢索過程:Cache將s位的塊地址分爲兩部分:r位作爲cache的行地址,s-r位作爲標記(tag)與塊數據一起保存在該行。當CPU以一個給定的內存地址訪問cache時,首先用r位行號找到cache中的此行,然後用地址中的s-r位標記部分與此行的標記在比較器中做比較;若相符即命中,在cache中找到所需要的塊;而後用地址中的最低的w位讀取所需要的字;若不符, 則未命中,有主存讀取所需要的字。
直接映射方式的優點是硬件簡單,成本低。缺點是每個主存塊只有一個固定的行位置可存放。效率低下。直接映射方式適合於需要大容量cache的場合,更多的行數可以減少衝突的機會。
 
3. 組相聯映像
組相聯映象提供了在性能和價格之間的一種良好平衡。組相聯映象是直接映象和相聯映象的結合。組內是全相聯映象, 組間是直接映象。
 
這種方式將cache分爲u組,每組v行。主存塊存放到哪個組是固定的,至於存到該組的哪一行是靈活的,即有如下函數關係:
m=u ╳ v
組號 q=j mod u
        塊內存地址中 s 位塊號劃分成兩部分:低序的d位(2d=u)用於表示cache組號,高序的s-d位作爲標記(tag)與塊數據一起存於此組的某行中。
         主存地址長度=(s+w)位,尋址單元數=2s+w個字或字節,塊大小=行大小=2w個字或字節,主存的塊數=2s,每組的行數=k,第組的v=2d,Cache的行數=kv,標記大小=(s-r)位
(b)組相聯cache的檢索過程
圖5.4-4 組相聯的cache組織

 

        cache的每一小框代表的不是“字”而是“行”。當CPU給定一個內存地址訪問cache時,首先用塊號域的低d位找到cache的相應組,然後將塊號域的高s-d位與該組v行中的所有標記同時進行比較。哪行的標記與之相符,哪行即命中。此後再以內存地址的w位字域部分檢索此行的具體字,並完成所需要求得存取操作。如果詞組沒有一行的標記與之相符,即cache未命中,次數需要按內存地址訪問內存。

 

舉例:

一個組相聯cache由64個行組成,每組4行,主存儲器包含4K個塊,每塊128個字,請表示內存地址的格式。

解:塊大小=行大小=2w個字=128=27,所以w=7

    每組的行數=k=4

        Cache的行數=kv=K╳2d=4╳2d=64, 所以d=4

    組數=v=2d=24=16

          主存的塊數=28=4K=22╳210=212,所以s=12

          標記大小(s-d)位=12-4=8位

          主存地址長度(s+w)位=12+7=19位

          主存尋址單元數2s+w=219

 

 

十二、替換策略和寫策略


 

1.替換策略

當一個新的主存塊需要拷貝到cache,而允許存放此塊的行位置都被其他主存塊佔滿時,就要產生替換。

常用的替換算法主要有以下三種:

    (1)最不經常使用(LFU)算法

LFU算法認爲應將一段時間內被訪問次數最少的那行數據換出。

    (2)近期最少使用(LRU)算法

LRU算法將近期內長久未被訪問過的行換出。

    (3)隨機替換

從特定的行位置中隨機地選取一行換出即可。

 

圖5.4-5 

 

 

2.Cache寫

在Cache存儲器與主存儲器只能關鍵保持一致是很重要的。 一種方法是隻寫Cache,在頁替換時再傳送給主存。另一種方法是隻要對緩存寫操作, 就要同時寫至主存中。有三種寫操作策略:分別是寫操作策略、寫回法、全寫法寫一次法。

 

寫回法:當CPU寫CACHE命中時,只修改CACHE的內容,而不立即寫入主存。只有當此行被換出時才寫回主存。如果CPU寫CACHE未命中,爲了包含欲寫字的主存塊在CACHE分配一行,將此塊整個拷貝到CACHE後對其進行修改。

 

全寫法:當寫CACHE命中時,CACHE與主存同時發生寫修改,因而較好地維護了CACHE和主存內容的一致性。當寫CACHE未命中時,只能直接項主存進行寫入。

 

寫一次法:寫命中與寫未命中的處理方法與寫回法基本相同,指示第一次寫命中時同時要寫入主存。

 

 

 

十三、虛擬存儲器的管理方式


 

(一)頁式虛擬存儲器

頁式虛擬存儲系統中,虛地址空間被分成等長大小的頁,稱爲邏輯頁;主存空間也被分成同樣大小的頁,稱爲物理頁。

 

1.頁式虛存地址映射

        虛地址分爲兩個字段:高字段爲邏輯頁號,低字段爲頁內地址(偏移量);

        實存地址也分爲兩個字段:高字段爲物理頁號,低字段爲頁內地址。通過頁表可以把虛地址轉換成物理地址。

 

 

2.轉換後援緩衝器(TLB)

        由於頁表通常在主存中,因而及時邏輯頁已經在主存中,也至少要訪問兩次物理存儲器才能實現一次訪存,這將使虛擬存儲器的存取時間加倍。爲了避免對主存訪問次數的增多,可以對頁表本身實行耳機緩存,把頁表中的最活躍的部分存放在高速存儲器中。這個專用於頁表緩存的高速存儲部件通常稱爲轉換後援緩衝器(TLB),又稱快表。而保存在主存中的完整頁表則稱爲慢表。快表的作用是加快地址變換。

        地址變換時,根據邏輯頁號同時查快表和慢表,當在快表中有此邏輯頁時,就能很快的找到對應的物理頁號。根據程序的局部性原理,多數虛擬存儲器訪問都將通過TLB進行,從而有效降低訪存的時間延遲。

 

圖5.5-2 TLB的地址映射過程

 

 

 

(二)段式虛擬存儲器

        在段式虛擬存儲系統中,段是按照程序的邏輯結構劃分的,各個段的長度因程序而異,虛擬地址由段號和段內地址組成。

 

        在段式虛擬粗出系統中,虛地址由段號和段內地址(偏移量)組成。虛地址到實主存地址的變換通過段表實現。每個程序設置一個段表,段表的每一表項對應一個段。每個表項至少包含三個字段:

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

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

    (3)段長:記錄該段的實際長度。

 

        段表本身也是一個段,可以存在輔存中,但一般是駐留在主存中。

        針對每個虛地址,存儲管理部件首先以段號s爲索引訪問段表的第s個表項。若該表項的有效位爲1,則將虛地址的段內偏移量d與該表項的段長字段比較:若偏移量較大,則說明地址越界,將產生地址越界中斷;否則,將該表項的段起址與段內偏移量相加,求得主存實地址並訪存。如果該表項的有效位爲0,則產生 調頁中斷,從輔存中調入該頁,並修改段表。

圖5.5-3 段式虛擬存儲器的地址映射過程

 

 

優點:

(1)段的邏輯獨立性使其易於編譯、管理、修改和保護,便於多道程序共享;

(2)段長可以根據需要動態改變,允許自由調度,有效利用主存空間;

 

 

3.段頁式虛擬存儲器

        段頁式虛擬存儲器是段式虛擬存儲器和頁式虛擬存儲器的結合。

 

        實存被等分爲頁。每個程序則按邏輯結構分段,每段再按照實存的頁大小分頁。

 

        在段頁式虛擬存儲系統中,每到程序均通過一個段表和多個頁表進行兩級再定位。段表中的每個表項對應一個段,每個表項有一個指針指向該段的頁表。頁表則指明該段該段各頁在主存中的位置,以及是否已裝入,是否已修改等狀態信息。

一個虛地址由段號、段內地址和頁內偏移量構成。 在多任務系統中,操作系統還會在每個虛地址中前增加一個表明該程序再系統的序號的基號。

 

        程序對主存的調入調出是按頁面進行的,但它又可以按段實現共享和保護。因此,它可以兼取頁式和段式系統的優點。它的缺點是在地址映象過程中需要多次查表。目前,大中型機一般都採用這種段頁式存儲管理方式。

 

舉例:

        今假設有三道程序(用戶標誌號爲A,B,C),其基址寄存器內容分別爲SA,SB,SC,邏輯地址到物理地址的轉移過程見圖5--7。在主存中,每道程序都有一張段表,A程序有4段,C程序有3段。每段應有一張頁表,段表的每行就表示相應頁表的起始位置,而頁表內的每行即爲相應的物理頁號。

 

地址轉換過程如下:

   (1)根據基號C,執行SC(基址寄存器內容)加1(段號)操作,得到段表相應行地址,其內容爲頁表的起始地址b。

   (2)執行b(頁表起始地址)+2(頁號),得到物理頁號的地址,其內容即爲物理頁號10。

   (3)物理頁號與頁內地址拼接即得物理地址。

 

虛存的替換算法

    常用的替換算法有FIFO算法、LRU算法、LFU算法等。

    虛擬存儲器的替換算法與cache的替換算法不同的是:

    (1)cache的替換全部靠硬件實現,而虛擬存儲器的替換有操作系統的支持。

    (2)虛存缺頁對系統性能的影響比cache未命中要大得多,因爲調頁需要訪問輔存,並且要哦進行任務切換。

    (3)虛存頁面替換的選擇餘地很大,屬於一個進程的頁面都可替換。

 

 

 

 

 

 

 

 

 
 
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章