當前位置:首頁 » 文件管理 » 緩存主存映像特點

緩存主存映像特點

發布時間: 2025-02-27 19:05:22

Ⅰ 有關操作系統原理中CACHE與主存的地址映象問題.

·地址映像
所謂映象問題是指如何確定Cache中的內容是主存中的哪一部分的拷貝,即必須應用某種函數把主存地址映象到Cache中定位,也稱地址映象。當信息按這種方式裝入Cache中後,執行程序時,應將主存地址變換為Cache地址,這個變換過程叫作地址變換。地址映象方式通常採用直接映象、全相聯映象、組相聯映象三種。
1.直接映象
每個主存地址映像到Cache中的一個指定地址的方式,稱為直接映象方式。在直接映象方式下,主存中存儲單元的數據只可調入Cache中的一個位置,如果主存中另一個存儲單元的數據也要調入該位置則將發生沖突。地址映像的方法一般是將主存空間按Cache的尺寸分區,每區內相同的塊號映像到Cache中相同的塊位置。一般地,Cache被分為2N塊,主存被分為同樣大小的2M塊,主存與Cache中塊的對應關系可用如下映像函數表示:j = i mod 2N。式中,j是Cache中的塊號,i是主存中的塊號。
直接映象是一種最簡單的地址映像方式,它的地址變換速度快,而且不涉及其他兩種映像方式中的替換策略問題。但是這種方式的塊沖突概率較高,當稱序往返訪問兩個相互沖突的塊中的數據時,Cache的命中率將急劇下降,因為這時即使Cache中有其他空閑塊,也因為固定的地址映像關系而無法應用。
2.全相聯映象
主存中的每一個字塊可映像到Cache任何一個字塊位置上,這種方式稱為全相聯映像。這種方式只有當Cache中的塊全部裝滿後才會出現塊沖突,所以塊沖突的概率低,可達到很高的Cache命中率;但實現很復雜。當訪問一個塊中的數據時,塊地址要與Cache塊表中的所有地址標記進行比較已確定是否命中。在數據塊調入時存在著一個比較復雜的替換問題,即決定將數據塊調入Cache中什麼位置,將Cache中那一塊數據調出主存。為了達到較高的速度,全部比較和替換都要用硬體實現。
3.組相聯映象
組相聯映象方式是直接映象和全相聯映象的一種折衷方案。這種方法將存儲空間分為若干組,各組之間是直接映像,而組內各塊之間則是全相聯映像。它是上述兩種映像方式的一般形式,如果組的大小為1,即Cache空間分為2N組,就變為直接映像;如果組的大小為Cache整個的尺寸,就變為了全相聯映像。組相聯方式在判斷塊命中及替換演算法上都要比全相聯方式簡單,塊沖突的概率比直接映像的低,其命中率也介於直接映像和全相聯映像方式之間。
·替換策略和一致性問題的處理方法
Cache和存儲器一樣具有兩種基本操作,即讀操作和寫操作。
當CPU發出讀操作命令時,根據它產生的主存地址分為兩種情形:一種是需要的數據已在Cache中,那麼只需直接訪問Cache,從對應單元中讀取信息到數據匯流排;另一種是需要的數據尚未裝入Cache,CPU需從主存中讀取信息的同時,Cache替換部件把該地址所在的那塊存儲內容從主存拷貝到Cache中;若Cache中相應位置已被字塊占滿,就必須去掉舊的字塊。常見的替換策略有兩種:
1.先進先出策略(FIFO)FIFO(First In First Out)策略總是把最先調入的Cache字塊替換出去,它不需要隨時記錄各個字塊的使用情況,較容易實現;缺點是經常使用的塊,如一個包含循環程序的塊也可能由於它是最早的塊而被替換掉。
2.最近最少使用策略(LRU)LRU(Least Recently Used)策略是把當前近期Cache中使用次數最少的那塊信息塊替換出去,這種替換演算法需要隨時記錄Cache中字塊的使用情況。LRU的平均命中率比FIFO高,在組相聯映像方式中,當分組容量加大時,LRU的命中率也會提高。
當CPU發出寫操作命令時,也要根據它產生的主存地址分為兩種情形:一種是不命中時,只向主存寫入信息,不必同時把這個地址單元所在的整塊內容調入Cache中;另一種是命中時,這時會遇到如何保持Cache與主存的一致性問題,通常有三種處理方式:
1.直寫式(write through)即CPU在向Cache寫入數據的同時,也把數據寫入主存以保證Cache和主存中相應單元數據的一致性,其特點是簡單可靠,但由於CPU每次更新時都要對主存寫入,速度必然受影響。
2.緩寫式(post write)即CPU在更新Cache時不直接更新主存中的數據,而是把更新的數據送入一個緩存器暫存,在適當的時候再把緩存器中的內容寫入主存。在這種方式下,CPU不必等待主存寫入而造成的時延,在一定程度上提高了速度,但由於緩存器只有有限的容量,只能鎖存一次寫入的數據,如果是連續寫入,CPU仍需要等待。
3.回寫式(write back)即CPU只向Cache寫入,並用標記加以註明,直到Cache中被寫過的塊要被進入的信息塊取代時,才一次寫入主存。這種方式考慮到寫入的往往是中間結果,每次寫入主存速度慢而且不必要。其特點是速度快,避免了不必要的冗餘寫操作,但結構上較復雜。
此外,還有一種設置不可Cache區(Non-cacheable Block)的方式,即在主存中開辟一塊區域,該區域中的數據不受Cache控制器的管理,不能調入Cache,CPU只能直接讀寫該區域的內容。由於該區域不與Cache發生關系,也就不存在數據不一致性問題。目前微機系統的BIOS設置程序大多允許用戶設置不可Cache區的首地址和大小。

熱點內容
安卓用什麼瀏覽器下載視頻 發布:2025-02-27 22:55:05 瀏覽:543
java字元串數組初始化 發布:2025-02-27 22:50:49 瀏覽:713
httpput上傳文件 發布:2025-02-27 22:43:08 瀏覽:480
sqlserversql腳本 發布:2025-02-27 22:24:39 瀏覽:840
c語言中文件 發布:2025-02-27 21:59:13 瀏覽:228
輕雲伺服器與虛擬主機哪個好 發布:2025-02-27 21:50:50 瀏覽:813
miui和安卓系統有什麼不一樣 發布:2025-02-27 21:48:57 瀏覽:924
java將字元串轉換成字元 發布:2025-02-27 21:48:06 瀏覽:366
linuxqt環境變數 發布:2025-02-27 21:39:25 瀏覽:7
二叉樹的遍歷非遞歸演算法 發布:2025-02-27 21:32:45 瀏覽:257