存儲技術:不同存儲技術的訪問時間差異很大。速度較快的技術每字節的成本要比速度較慢的技術高,而且容量小。
一種組織存儲器系統的方法,成為存儲器層次結構(memory hierarchy)。如下圖所示,是一個典型的存儲器層次結構。
一般而言,從高層往底層走,存儲設備變得更慢、更便宜和更大。
L0是少量快速的CPU寄存器,CPU可以在一個時鐘周期內訪問它們。
L1、L2、L3是一個或多個小型到中型的基于SRAM的高速緩存存儲器,CPU可以在幾個時鐘周期內訪問它們。
L4是一個大的基于DRAM的主存,CPU可以在幾十到幾百個時鐘周期內訪問它們。
L5是慢速但是容量很大的本地磁盤。
L6是一層附加的遠程服務器上的磁盤,需要通過網絡來訪問它們。
存儲器層次結構的中心思想是:對于每個k,位于k層的更快更小的存儲設備作為位于k+1層的更大更慢的存儲設備的緩存。換句話說,層次結構中的每一層都緩存來自較低一層的數據對象。
例如,本地磁盤作為通過網絡從遠程磁盤取出的文件(如web頁面)的緩存,主存作為本地磁盤上數據的緩存,以此類推,直到最小的緩存—CPU寄存器。
如上圖所示,第k層的存儲器被劃分成較少的塊的集合,每個塊的大小與k+1層的塊的大小一樣。在任何時刻,第k層的緩存包含第k+1層塊的一個子集的副本。
當程序需要第k+1層的某個數據對象d時,首先在當前存儲在第k層的一個塊中查找d。如果d剛好緩存在第k層,那么就是緩存命中(cache hit)。該程序直接從第k層讀取d,根據存儲器層次結構的性質,這要比從第k+1層讀取d更快。另一方面,如果第k層沒有緩存數據對象d,即緩存不命中(cache miss)。當發生緩存不命中時,第k層的緩存從第k+1層緩存中取出包含d的那個塊,如果第k層緩存已經滿了,就會覆蓋現存的一個塊。
概況來說,基于緩存的存儲器層次結構行之有效,是因為較慢的存儲設備比較快的存儲設備更便宜,還因為程序傾向于展示局部性:
利用時間局部性:由于時間局部性,同一數據對象可能會被多次使用。一旦一個數據對象在第一次不命中時被復制到緩存中,我們就會期望后面對該目標有一系列的訪問命中,從而提高訪問速度。
利用空間局部性:塊通常包含有多個數據對象,由于空間局部性,我們會期望后面對該塊中其他對象的訪問能夠補償不命中后復制該塊的花費。
-
存儲器
+關注
關注
38文章
7484瀏覽量
163765 -
cpu
+關注
關注
68文章
10854瀏覽量
211587 -
存儲技術
+關注
關注
5文章
732瀏覽量
45796
發布評論請先 登錄
相關推薦
評論