180204—【操作系統】背景知識:存儲器

存儲器的層次結構

計算機存儲器的設計目標可歸納爲三個問題:
多大的容量? 多快的速度? 多貴的價格?
存儲器的這三個特徵即價格、容量、訪問時間之間存在着一定的折中。
實現存儲器系統需要各種各樣的技術,但各種技術之間存在着如下關係:

  • 存取速度越快,每“位”的價格越高。
  • 容量越大,每“位”的價格越低。
  • 容量越大,存取速度越慢。

劃重點啊後兩條!!
需求總會是又大又快。。但二者卻存在衝突。
解決這一問題的方法是 不使用單一的存儲組件或技術,而是 存儲器層次結構
這裏寫圖片描述
一種典型的層次結構如圖,從上到下有這樣的規律:

  • 價格遞減;
  • 容量遞增;
  • 速度遞減;
  • 處理器訪問該存儲器的頻率降低。

最後一條成立的基礎是局部性原理
我們把容量較大、價格較低的慢速存儲器作爲容量小、價格高的快速存儲器的後備。

高速緩存

動機:

在整個指令週期中,處理器至少訪問一次存儲器,處理器的執行速度必然受存儲週期的限制。
如果這兩者不匹配,這一限制會帶來很大問題。。
理想情況下,內存的構造技術可以採用與處理器中的寄存器一樣的構造技術,這樣的話內存的存儲週期纔跟得上處理器週期。
但是成本太大。
解決的辦法即利用局部性原理:
在處理器和內存之間提供一個容量小但速度快的存儲器,稱爲高速緩存。

原理:

這裏寫圖片描述

上圖中,有一個容量相對大但速度慢的內存,以及一個容量小速度快的高速緩存。
高速緩存中有一部分內存數據的副本,當處理器試圖讀取存儲器中的一個字節或字時,首先會檢查該數據是否在高速緩存中,
如果在,該字節直接從高速緩存進入處理器;
否,將從內存中取出一個包含需要的字節或字的塊,放入高速緩存中。

根據局部性原理,當一塊數據被放入高速緩存中以滿足一次存儲器訪問時,很可能接下來的多次訪問也會集中在這一個塊中。

高速緩存/內存結構:

這裏寫圖片描述

內存有2^n個可以尋址的字組成,每個字有唯一的n位地址,爲便於映射,可認爲該存儲器由一組塊組成,每個塊有k個字。
高速緩存中有C個存儲槽,每個槽可放k個字(即可容納一個塊),槽的數量遠小於內存中塊的數量。

內存中塊的某些自己留在告訴緩存的槽中,當處理器試圖讀取存儲器中某一個塊的一個字節或字時,而該塊不在高速緩存中的槽之中時,則將這個塊取到槽中。
一個槽不可能唯一或永久對應一個塊。因此每個槽有一個標籤以標識當前爲哪個塊,
標籤通常是地址中較高的若干位,標識以這些位開始的所有地址。

下圖爲該過程:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章