操作系統--存儲器層次結構

局部性

概念
傾向於引用鄰近於其他最近引用過的數據項的數據項,或者最近引用過的數據項本身。

類別
時間局部性
被引用過一次的內存位置很可能在不遠的將來再被多次引用
空間局部性
如果一個內存位置被引用了一次,那麼程序很可能在不遠的將來引用附近的一個內存位置。

好處
有良好局部性的程序比局部性差的程序運行的更快

應用的部分
硬件層:局部性原理允許計算機設計者通過引入稱爲高速緩存存儲器的小而快的存儲器來保存最近被引用的指令和數據項,從而提高對主存的訪問速度
操作系統:局部性原理允許系統使用主存作爲虛擬地址空間最近被引用塊的高速緩存。
程序中應用局部性的原則
1.重複引用相同變量的程序有良好的時間局部性
2.對於具有步長爲k的引用模式的程序,步長越小,空間局部性越好。具有步長爲1的應用模式的程序有很好的空間局部性。在內存中以大步跳來跳去的程序空間局部性會很差。
3.對於取指令來說,循環有好的時間和空間局部性。循環體越小,循環迭代次數越多,局部性越好。

存儲器層級結構

存儲器層級結構圖
在這裏插入圖片描述
圖中存儲概念
隨機訪問存儲器:
靜態的(SRAM):更快,更貴,用於高速緩存存儲器,既可以在CPU芯片上,也可以在片下。
動態的(DRAM):用於作爲主存以及圖形系統的幀緩衝區。
磁盤:
磁盤是廣爲應用的大量數據的存儲設備,存儲數量可以有幾百到幾千千兆字節,RAM的存儲器只能有幾百到幾千兆字節。
但是從磁盤上讀信息的時間爲毫秒級,比從DRAM讀慢了10萬倍,比從SRAM讀慢了100萬倍。

緩存
高速緩存是一個小而快速的存儲設備,它作爲存儲在更大,也更慢的設備中的數據對象的緩衝區域,使用高速緩存的過程稱爲緩存。
緩存命中
當程序需要k+1層的某個數據對象d,它首先在當前存儲在第k層的一個塊中查找d,如果d剛好緩存在第k層中,那麼就是緩存命中,該程序直接從第k層讀取d,根據存儲器層次結構的性質,這要比第k+1層讀取d更快。
緩存不命中
如果第k層中沒有緩存數據對象d,那麼就是我們所說的緩存不明智,當發生不命中,第k層的緩存從第k+1層緩存中去除包含d的塊,若第k層的緩存已經滿了,可能就會覆蓋現存的一個塊。
層次結構的中心思想
對於每個k,位於k層的更快更小的存儲設備作爲位於k+1層的更大更慢的存儲設備的緩存,層次結構中的每一層都緩存來自較低一層的對象。
每層之間,以塊的大小作爲傳送單元來回複製,在層次結構中任何一對相鄰的層次之間塊大小固定,但是其他層次對之間可以有不同的塊大小。
一般而言,層次結構中較低層的設備訪問時間較長,爲了補償這些較長的訪問時間,傾向於使用較大的塊。
行之有效的原因
1.較慢的存儲設備比較快的存儲設備更便宜
2.程序傾向於展示局部性
2.1時間局部性:由於時間局部性,統一數據對象可能會被多次使用,一旦一個對象在第一次不命中時被複制到緩存中,我們就會氣我後面對該目標友誼西路的訪問命中。因爲緩存比第一層的存儲設備更快,對後面的命中的服務會比最開始的不命中快很多。
2.2空間局部性:塊通常包含多個湖熟對蝦,由於空間局部性,我們會氣我後面對該塊中其他對象的訪問能夠補償不命中後複製該塊的花費。

參考:
深入理解計算機操作系統

發佈了210 篇原創文章 · 獲贊 33 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章