內存管理 之 存儲器層次結構
本節承上節內容,主講存儲器的層次結構。
一、存儲係統的分層管理
1、為什麼需要分層存儲管理
現代的高性能計算機係統要求存儲器速度快、容量大,並且價格合理;然而,按照當前的技術水平,僅用單一的存儲介質是很難滿足要求的。因此,現代計算機係統通常把各種不同存儲容量、存取速度和價格的存儲器按照一定的體係組成多層結構,並通過管理軟件和輔助硬件有機組合成統一的整體,使所存放的程序和數據按層次分布在各種存儲器中,以解決存儲器容量、存取速度和價格之間的矛盾。
2、分層存儲管理需要考慮的問題
A、首先是數據一致性的問題。
B、第二個問題就是命中率的問題。
C、第三個問題就是在分層介質的選擇上。
D、第四個問題就是數據分層的級別。
E、第五個問題就是數據的遷移策略的設計。
3、什麼是分層存儲管理
分層存儲(Tiered Storage),也稱為分層存儲管理(Hierarchical Storage Management),廣義上講,就是將數據存儲在不同層級的介質中,並在不同的介質之間進行自動或者手動的數據遷移,複製等操作。同時,分層存儲也是信息生命周期管理的一個具體應用和實現。
4、分層存儲係統結構及技術
理論基礎:存儲器訪問的局部性原理:對局部範圍內存儲器地址頻繁訪問,而對此範圍以外的存儲器地址較少訪問。
——局部性有兩種含義:一種稱為引用局部性,指的是程序會訪問最近訪問過的數據和指令;另一種稱為時間局部性,指的是訪問一個數據之後,很可能在不久的將來再次訪問該數據。
多層存儲體係結構:
上圖給出的典型多層存儲體係結構基於存儲器訪問的局部性原理。該設計要達到的目標是:整個存儲係統速度接近M1存儲器,而價格和容量接近Mn存儲器。由於大多數程序訪問的指令和數據都是相對簇聚的,因此可以把近期需要使用的指令和數據放在盡可能靠近CPU的上層存儲器中(任何上層存儲器中的數據都是其下一層存儲器中數據的子集)。CPU訪問存儲器時,首先訪問M1,若在M1中找到所需數據(命中)則直接存取,若找不到(不命中),則將M2中包含所需數據的塊或頁調入M1,若在M2中也找不到,則就訪問M3,以此類推。
在多層存儲係統中,每一層都需要確定映像、查找、替換和更新等操作策略。
(1)映像規則:
映像規則用於確定一個新的塊(或頁)被調入本級存儲器時應該放在什麼位置上。
A、最簡單的映像規則是直接映像(Direct Mapping)方式,其規定每一個塊(或頁)隻能被放到唯一的一個指定位置。直接映像時的地址變換速度快,實現簡單,確定是不夠靈活,降低了命中率。
B、全相聯映像(Fully Associated Mapping)方式,其允許任一塊(或頁)放在存儲器的任意位置。全相聯映像方式的優點是可以靈活地進行塊的分配,塊的衝突率低,但實際上由於它的成本太高而並不會被采用。
C、組相聯映像方式,是直接映像和全相聯映像方式的這種方案。組相聯映像把塊(或頁)分組,不同組的塊(或頁)對應不同的映像位置,而同組的塊(或頁)可以放在相應映射組內的任一位置,及組間為直接映像,而組內的字塊為全相聯映像方式。組的容量隻有一個塊時就成了直接映像,組的容量是整個上層存儲器容量時就成了全相聯映像,組的容量時n個塊時就成了n路組相聯映像。組相聯映像的主要優點是塊的衝突概率較低,利用率大幅度提高;主要缺點是實現難度和造價高。
(2)查找規則:
查找規則用於確定需要的塊(或頁)是否存在在本級存儲器中,以及如何查找。查找規則與映像規則相關,通常可采用目錄表的方式進行索引查找。
(3)替換規則:
替換規則用於確定本級存儲器不命中且已滿是應替換那一塊(或頁)。在全相聯映像和組相聯映像方式時,下層存儲器的數據塊可以寫入上層存儲器中的若幹位置,因此存在選擇替換那一塊的問題。先入先出(First In First Out,FIFO)選擇將最早調入的塊作為被替換得塊,而最近最少使用(Least Recently Used,LRU)選擇將最久未被訪問塊作為被替換塊,另一種隨機替換算法(RAND)是在組內隨機選擇一塊來替換。由於FIFO和RAND算法都沒有利用存儲器訪問局部性原理,因此不能提高係統命中率,而LRU算法的命中率比FIFO算法和RAND算法更高。另外,塊(或頁)替換時應避免出現顛簸現象(命中率有時很高,有時又很低)。
(4)更新規則:
更新規則用於確定“寫數據”時應進行的操作。寫操作可能會導致數據不一致問題,即同一個數據在上下兩層中可能出現兩個不同的副本。通常采用的更新規則有如下3種。
A、標識交換法(Flag Swap),又稱按寫分配法(Write Allocate)。在這種情況下,CPU暫時隻向上層存儲器寫入,並用標誌加以注明,直到經過修改的字塊從上層存儲器中被替換出來時才真正寫回下層存儲器。
B、寫直達法(Write Through),又稱寫貫穿法。在這種方式下,從CPU發出的寫信號同時送到相鄰的兩層,以保證上下兩層中的相同數據能同步更新。寫直達法的優點是操作簡單,但由於下層存儲器存取速度較慢,將對整個係統的寫速度造成影響。
C、回寫法(Write Back)。為了克服寫直達法的弊端,盡量減少對下層存儲器的訪問次數,可以采用回寫法進行更新。在這種方式下,數據一般隻寫到上層存儲器中並設置一個修改標誌,當該數據需要被更改時才將原更新的數據寫入下層存儲器中,然後再接手再次更新的數據。
命中率(或失效率)通常可以用來衡量多層存儲體係把握訪問局部性的性能,它是指利用CPU產生的有效地址可直接(或不能)在存儲體係的高層訪問到所需信息的概率。考慮到存儲體係實現方麵的一些具體情況,一般可以用存儲器的平均訪問時間來評價一個存儲器體係的性能:
存儲器平均訪問時間=命中時間+失效率*失效開銷
上式中的命中時間是指訪問高層存儲器所需的時間,其中包括判定訪問是否命中的時間;失效開銷是指用下一級存儲中相應塊替代上一級的塊的時間,加上將該塊發送到相應設備(CPU)的時間。失效開銷進一步可分為訪問時間和傳輸時間兩個部分,前者是指在出現失效時訪問到塊中第一個字的時間(取決於底層存儲器的延遲);後者是指傳輸塊中其他字的附加時間(取決於兩層存儲器之間的帶寬和塊的大小)。
下麵一些技術可以用於降低失效率、減小失效開銷或減少命中時間,從而進一步改進分層係統的性能。
*采用增加塊大小、增加上層存儲容量、提高相聯度。預取。編譯器優化等方法可以有效降低失效率;
*采用讓讀失效優先於寫、寫緩衝合並、請求字處理技術、非阻塞技術、多級技術等可以減少失效開銷;
*采用減小上層存儲容量、保持簡單結構、訪問流水化等技術可以減小命中時間。
二、存儲虛擬化與地址映射
虛擬內存技術的最終目的是利用次級存儲器(下層存儲器,如硬盤)來擴展物理存儲器(上層存儲器,如內存)的容量。該機製掩蓋了下層存儲器的物理細節,向上提供了一個克服物理存儲器和物理尋址方案局限性的地址空間和存儲器存取方案。
分層存儲係統使用虛擬存儲器技術來實現相鄰層之間的數據調度。其主要思想是將虛擬地址空間和物理地址空間分離,並通過虛擬管理單元(MMU)使用地址映射表來完成兩者之間的映射關係。
地址映射技術:分段+分頁。
*分頁技術:虛擬地址---物理地址
#頁是信息的物理單位,與源程序的邏輯結構無關;
#頁長由係統確定,大小固定,用戶不可見;
#頁麵隻能以頁大小的整倍數地址開始,頁一般不能共享。
*分段技術:邏輯地址---物理地址
#段是信息的邏輯單位,由源程序的邏輯結構所決定;
#段長由用戶確定(用戶可見),大小不固定;
#段可從任意地址開始,段內連續編址,段間不一定連續。
使用虛擬存儲器的優點:
*可以簡化尋址方式;
*可以高效利用物理存儲器;
*便於訪問控製。
三、現代操作係統的多層次存儲體係
大多數現代計算機采用三級存儲係統:cache + 主(內)存 + 輔(外)存。這種結構由以下兩個主要部分組成。
(1)、Cache存儲器係統(Cache-主存層次)
從整體上看,Cache存儲器係統的存取速度接近於Cache的存取速度,而容量和每位存儲的平均價格卻接近於主存。Cache存儲器係統主要負責解決高速度和低成本之間的矛盾。
(2)、虛擬存儲器係統(主存-輔存層次)
從整體上看,主存-輔存層次的存取速度接近於主存的存取速度,而容量和每位存儲的平均價格卻接近於輔存。虛擬存儲器係統主要負責解決大容量和低成本之間的矛盾。
======>>>>四級存儲結構:
寄存器(CPU內部高速電子線路(如觸發器)) + Cache(一級:在CPU內部;二級:在CPU外部。一般為SRAM。) + 主存(一般為半導體存儲器,也稱為短期存儲器;解決讀寫速度問題) + 輔存(包括磁盤(中期存儲器)、磁帶、光盤(長期存儲)等;解決存儲容量問題) |
1、寄存器組
*特點:讀寫速度快但數量較少;其數量、長度以及使用方法會影響指令集的設計;
*組成:一組彼此獨立的Reg,或小規模半導體存儲器;
*對於RISC:設置較多Reg,並依靠編譯器來使其使用最大化。
2、Cache
*高速小容量(幾十千到幾兆字節);
*借助硬件管理對程序員透明;
*命中率與失效率。
3、主(內)存
*編址方式:字節編址;
*信息存放方式:大/小端係統、對齊方式。
4、輔(外)存
*信息以文件(file)的形式存放,按塊為單位進行存取;
*虛擬存儲技術。
最後更新:2017-04-03 05:39:29