儲存系統-cache-磁碟

YhFei發表於2024-03-30
  • 計算機採用分級儲存體系的主要目的是為了解決儲存容量、成本和速度之間的矛盾問題。

  • 兩級儲存:Cache-主存、主存-輔存(虛擬儲存體系)。

  • 區域性性原理:總的來說,在CPU執行時,所訪問的資料會趨向於一個較小的區域性空間地址內,包括下面兩個方面:

    1. 時間區域性性原理:如果一個資料項正在被訪問,那麼在近期它很可能會被再次訪問,既在相鄰的時間裡會訪問同一個資料項
    2. 空間區域性性原理:在最近的將來會用到的資料的地址和現在正在訪問的資料地址很可能是相近的,既相鄰的空間地址會被連續訪問
  • 快取記憶體Cache用來儲存當前最活躍的程式和資料,直接與CPU進行互動,位於CPU和主存之間,容量小,速度為記憶體的5-10倍,由半導體材料構成。其記憶體是主存記憶體的副本複製,對於程式設計師來說是透明的。

  • Cache由控制部分和儲存器組成,儲存器儲存資料,控制部分判斷CPU要訪問的資料是否在Cache中,在則命中,不在則依據一定的演算法從主存中替換。

  • 地址對映:在CPU工作時,送出的是主存單元的地址,而應從Cache儲存器中讀/寫資訊。這就需要將主存地址轉換我Cache儲存器地址,這種地址的轉換稱為地址映像,由硬體自動完成對映,分為下列三種方法:

    1. 直接映像:將Cache儲存器等分成塊,主存也等分成塊並編號。主存中的塊與Cache中的塊的對應關係是固定的,也既二者塊號相同才能命中。地址變換簡但不靈活,容易造成資源浪費。

    2. 全相聯映像:同樣都等分成塊並編號。主存中任意一塊都與Cache中任意一塊對應。因此可以隨意調入Cache任意位置,但地址變換複雜,速度較慢。因為主存可以隨意調入Cache任意塊,只有當Cache滿了才會發生塊衝突,是最不容易發生塊衝突的映像方式

    3. 組組相連映像:前面兩種方式的結合,將Cache儲存器先分塊在分組,主存也同樣先分塊在分組,組間採用直接映像,既主存中組號與Cache中組號相同的組才能命中,但是組內全相聯映像,也既組號相同的兩個組內的所有塊可以任意調換。

  • Cache的替換演算法:替換演算法的目的就是使Cache獲得儘可能高的命中率。常用演算法有如下幾種:

    1. 隨機替換演算法:就是用隨機數發生器產生一個要替換的塊號,將該塊替換出去。
    2. 先進先出演算法:就是將最先進入Cache的資訊塊替換出去。
    3. 近期最少使用演算法:這種方法是將近期最少使用的Cache中的資訊快替換出去。
    4. 最佳化替換演算法:這種方法必須先執行一次程式,統計Cache的替換情況。有了這樣的先驗資訊,在第二次執行該程式時便可以用最有效的方式來替換。
  • 命中率及平均時間:Cache有一個命中率的概念,既當CPU所訪問的資料在Cache中時,命中,直接從Cache中讀取資料,設讀取一次Cache時間為1ns,若CPU訪問的資料不在Cache中,則需要從記憶體中讀取,設讀取一次記憶體的時間為1000ns,若在CPU多次讀取資料過程中,有90% 命中Cache,則CPU讀取一次的平均時間為(90% * 1+ 10% *1000)ns

  • 基本概念:K、M、G是數量單位,在儲存器裡相差1024倍。b,B是儲存單位,1B=8b

  • 磁碟結構和引數
    磁碟有正反兩個盤面,每個盤面有多個同心圓,每個同心圓是一個磁軌,每個同心圓又被劃分為多個扇區,資料就被存放在一個個扇區中。
    磁頭首先要尋找到對應的磁軌,然後等待磁碟進行週期旋轉,旋轉到指定的扇區,才能讀取到對應的資料,因此,會產生尋道時間和等待時間。公式為:存取時間=尋道時間+等待時間(平均定位時間+轉動延遲)。
    注意:尋道時間是指磁頭移動到磁軌所需的時間;等待時間為等待讀寫的扇區轉到磁頭下方所用的時間。

  • 磁碟排程演算法
    磁碟資料的讀取時間分為尋道時間+旋轉時間,既先找到對應的磁軌,而後在旋轉到對應的扇區才能讀取資料,其中尋道時間耗時最長,需要重點排程,有如下排程演算法:
    先來先服務FCFS:根據程序請求訪問磁碟的先後順序進行排程。
    最短尋道時間優先SSTF:請求訪問的磁軌與當前磁軌最近的程序優先排程,使得每次的尋道時間最短。會產生“飢餓”現象,既遠處程序可能永遠無法訪問。
    掃描演算法SCAN:又稱“電梯演算法”,磁頭在磁碟上雙向移動,其會選擇離磁頭當前所在磁軌最近的請求訪問的磁軌,並且與磁頭移動方向一致,磁頭永遠都是從裡向外或者從外向裡一直移動完才掉頭,與電梯類似。
    單向掃描排程演算法CSCAN:與SCAN不同的是,其只做單向移動,既只能從裡向外或者從外向裡。

相關文章