複製鏈接
請複製以下鏈接發送給好友

存儲層次

鎖定
存儲層次是在計算機體系結構存儲系統層次結構的排列順序。每一層於下一層相比都擁有較高的速度和較低延遲性,以及較小的容量。大部分現今的中央處理器的速度都非常的快。大部分程序工作量需要存儲器訪問。由於高速緩存的效率和存儲器傳輸位於層次結構中的不同檔次,所以實際上會限制處理的速度,導致中央處理器花費大量的時間等待存儲器I/O完成工作。
中文名
存儲層次
外文名
hierarchy of memory
學    科
計算機體系結構
定    義
存儲系統層次結構的排列順序
要    求
容量、存取速度、易失性、
有關術語
存儲系統

存儲層次簡介

存儲系統是指計算機中由存放程序和數據的各種存儲設備、控制部件及管理信息調度的設備(硬件)和算法(軟件)所組成的系統。計算機的主存儲器不能同時滿足存取速度快、存儲容量大和成本低的要求,在計算機中必須有速度由慢到快、容量由大到小的多級層次存儲器,以最優的控制調度算法和合理的成本,構成具有性能可接受的存儲系統。存儲系統的性能在計算機中的地位日趨重要,主要原因是:①馮諾伊曼體系結構是建築在存儲程序概念的基礎上,訪存操作約佔中央處理器(CPU)時間的70%左右。②存儲管理與組織的好壞影響到整機效率。③現代的信息處理,如圖像處理、數據庫、知識庫、語音識別、多媒體等對存儲系統的要求很高 [1] 
對於通用計算機而言,存儲層次分為四層:CPU寄存器。高速緩存、主存和輔存。對於CPU 寄存器,CPU 可以再一個時鐘週期內訪問它們。接下來是一個或者多個小型到中型的基於 SRAM 的高速緩存存儲器,可以再幾個 CPU 時鐘週期內訪問它們。然後是一個大的基於 DRAM 的主存,可以在幾十或者幾百個時鐘週期內訪問它們。接下來是慢速但是容量很大的本地磁盤。存儲器層次結構的核心是,對於每個 k,位於 k 層的更快更小的存儲設備作為位於 k+1 層的更大更慢的存儲設備的緩存。也就是説,層次結構中的每一層都緩存來自較低一層的數據對象。例如,本地磁盤作為通過網絡從遠程磁盤取出文件的緩存,以此類推知道 CPU 寄存器。
對於計算機系統中配置的存儲器,歸結起來有三個主要的參數要求:容量大,速度快,價格低。存儲器的易失性也是計算機存儲器的一個重要指標,一般來講,速度高的存儲器,每位價格也高,因此容量不能太大。所以對單一的存儲器部件來説,大容量、高速度、低價格三者是不能同時滿足的。為了解決這個難題,在現代計算機系統中採用了存儲器分層結構,這樣就不會僅僅依賴於某一個存儲部件或技術了。任意高速存儲設備都可以作為低速存儲設備的緩存,也是出現存儲層次主要原因之一。

存儲層次特點

在存儲層次中,存儲系統的基本要求是存儲容量大、存取速度快和成本低。為同時滿足上述三個要求,計算機需有速度由慢到快,容量由大到小的多層次存儲器,以最優的控制調度算法和合理的成本,構成存儲系統。
存儲器層次化結構圖 存儲器層次化結構圖
在圖1中,存儲層次由上到下呈現出以下特點:每位的價格越來越低,速度越來越慢,容量越來越大,CPU 訪問的頻度也越來越少。最上層的寄存器通常都製作在 CPU 芯片內,寄存器中的數直接在 CPU 內部參與運算。現代 CPU 內可以有十幾個、幾十個寄存器,它們的速度最快、位價(平均每位的價格)最高、容量最小。主存用來存放將要參與運行的程序和數據,但其速度與 CPU 速度差距較大,為了使它們之間的速度更匹配,在主存與 CPU 之間插入了一種比主存速度更快、容量更小的高速緩衝存儲器 (cache)。主存與緩存之間的數據調動是由硬件自動完成的,對程序員來説是透明的。這三層都在主機內,多由各種半導體存儲材料製成。輔助存儲器存儲容量比主存儲器大得多,主要用來存放暫時未用到的程序和數據文件。CPU 不能直接訪問輔存,輔存只能與主存交換信息,但它的位價是最便宜的。存儲器的層次結構實質上還是體現為緩存—主存和主存—輔存這兩個存儲層次上。從CPU 的角度看,緩存—主存層次的速度接近於緩存,容量與每位價格則接近於主存。因此,解決了速度與成本之間的矛盾。而主存—輔存這一層次,從整體分析,其速度接近於主存,容量接近於輔存,平均位價也接近於低速、廉價的輔存位價,這又解決了速度、容量、成本這三者間的矛盾。這種多層次結構已成為現代計算機的典型存儲結構。在主存—輔存這一層次的發展中,形成了虛擬存儲系統。在這個系統中,程序員編程的地址範圍與虛擬存儲器的地址空間相對應。例如,機器指令地址碼為 32 位,則虛擬存儲器的存儲單元可達 4GB。可是這個數與主存的實際存儲單元個數相比,要大得多。通常稱這類指令地址碼為虛地址或叫邏輯地址,而把主存的實際地址稱作實地址或物理地址。物理地址是程序在執行過程中能夠真正訪問的地址,也是真實存在於主存的存儲地址。對具有虛擬存儲器的計算機系統而言,編程時可用的地址空間遠遠大於主存空間,使程序員以為自己佔有一個容量極大的主存,其實這個主存並不存在,這就是將其稱為虛擬存儲器的原因。對虛擬存儲器而言,其邏輯地址變換為物理地址的工作,是由計算機系統的硬件設備和操作系統自動完成的,對應用程序員是透明的。當虛地址的內容在主存儲器中時,機器便可立即使用;若虛地址的內容不在主存,則必須先將此虛地址的內容在輔存中找到,傳遞到主存儲器的合適單元后再被機器所用。主存儲器是可以和 CPU 直接交換信息的存儲器,它通常由存放程序和數據的隨機讀寫存儲器 RAM 和存放某些固定內容的只讀存儲器 ROM組成。

存儲層次存儲器性能

存儲器性能的主要技術指標為容量、速度和易失性。
存儲器既然是用來存儲程序和數據的容器,當然容量是關鍵性的特徵。計算機可尋址的最小信息單位是一個存儲字,相鄰的存儲器地址表示相鄰存儲字,這種機器稱為“字可尋址”機器。一個存儲字所包括的二進制位數稱為存儲字長。一個字又可劃分為若干個“字節”,一個字節為 8 個二進制位,因此,一個字的字長通常是 8 的倍數。有些計算機也可以按“字節”尋址,因此,這種機器稱為“字節可尋址”的計算機。以字或字節為單位來表示存儲器存儲信息的總數,就得到了存儲器的容量表示。
與速度相關的參數有:
(1)存取時間。又叫存儲器的訪問時間(Memory Access Time),它是指啓動一次存儲器
操作到完成該操作所需的全部時間。存取時間分讀出時間和寫入時間兩種。讀出時間是從存儲器接收到有效地址開始,到產生有效輸出所需的全部時間。寫入時間是從存儲器接收到有效地址開始,到數據寫入被選中單元為止所需的全部時間。
(2)存儲週期。存儲週期(Memory Cycle Time)是指存儲器進行連續兩次獨立的存儲器
操作所需的最小間隔時間。通常存儲週期大於存取時間,它包括一次存取時間加上下一次存取
開始之前的短暫附加時間,附加時間主要用於信號線上瞬變的消失或被破壞的數據的恢復。
(3)傳輸率。也叫存儲器的帶寬,指的是數據讀出或寫入存儲器的速度,表示每秒從存
儲器進出信息的最大數量,單位可用字節/秒或位/秒來表示。如存儲週期為 100ns,每個存儲週期可訪問 32 位數據,則它的傳輸率為 320Mb/s。
易失性
易失性是指當斷電中斷後,計算機存儲器存儲的數據便會消失,通電以後這些數據需要重新加載。例如用半導體材料製作的 RAM 存儲器,斷電后里面保存的信息就消失了,這種存儲器稱為易失性存儲器。在計算機運行過程中,考慮到RAM 存儲器的易失性,一般會將RAM中的數據進行備份,即將這些數據每隔一段時間存儲到非易失性存儲器。如果存儲器斷電後仍能保存其內部信息,則稱其為非易失性存儲器。如磁性材料作成的存儲器和只讀存儲器 ROM,就屬於非易失性存儲器。兩者的最大區別是RAM在斷電以後保存在上面的數據會自動消失。
隨機存取存儲器(Random Access Memory,RAM),也叫主存,是與CPU直接交換數據的內部存儲器。它可以隨時讀寫(刷新時除外,見下文),而且速度很快,通常作為操作系統或其他正在運行中的程序的臨時數據存儲媒介。

存儲層次局部性原理

早在 1968 年,Denning.P 就曾指出:程序在執行時將呈現出局部性規律,即在一較短的時間內,程序的執行僅侷限於某個部分;相應地,它所訪問的存儲空間也侷限於某個區域。他提出了下述幾個論點:
程序執行時,除了少部分的轉移和過程調用指令外,在大多數情況下仍是順序執行的。該論點也在後來的許多學者對高級程序設計語言(如 FORTRAN 語言、PASCAL 語言)及 C 語言規律的研究中被證實。
過程調用將會使程序的執行軌跡由一部分區域轉至另一部分區域,但經研究看出,過程調用的深度在大多數情況下都不超過 5。這就是説,程序將會在一段時間內都侷限在這些過程的範圍內運行。
程序中存在許多循環結構,這些雖然只由少數指令構成,但是它們將多次執行。程序中還包括許多對數據結構的處理,如對數組進行操作,它們往往都侷限於很小的範圍內。
侷限性還表現為下述兩個方面:時間侷限性。如果程序中的某條指令一旦執行,則不久以後該指令可能再次執行;如果某數據被訪問過,則不久以後該數據可能再次被訪問。產生時間侷限性的典型原因是由於在程序中存在着大量的循環操作。
空間侷限性。一旦程序訪問了某個存儲單元,在不久之後,其附近的存儲單元也將被訪問,即程序在一段時間內所訪問的地址,可能集中在一定的範圍之內,其典型情況便是程序的順序執行。存儲器中,如磁帶上,這樣做還能降低存儲價格 [2] 
參考資料
  • 1.    屠立德//王丹//金雪雲.操作系統基礎:清華大學出版社,2014
  • 2.    湯小丹.計算機操作系統:西安電子科技大學出版社,2007