Cache的映射初步整合

映射用基本結構

  1. Cache的映射其實就是將內存中的數據通過字段的截取等方式放入到緩存中去。
  2. 想要知道如何放進去就需要映射方式。
  3. 當CPU進行讀取時,從Cache中尋找,那麼就需要:
    (1)有效位來標識當前數據是否有效
    (2)髒位來進行一致性維護
    (3)替換控制爲用來進行替換
    (4)標記位來進行比對
  4. 而不同映射方式又有不同標記位的對比方法,通過對比取出我們想要的某一塊(直接映射/全相聯映射)/某一組(組相聯映射)

(1)直接映射

取餘數,放到對應位置
i:Cache中的塊號
j:主存中的塊號
C:Cache的塊數
i = j mod C

直接映射

(2)全相聯映射

①每一字塊映射到Cache中的任意字塊
②通常採用“按地址尋址”的相聯存儲器完成

全相聯映射

(3)組相聯映射

①i = j mod Q
Cache組號 = 內存塊號 mod Cache組數
②當組相聯只有一組時,等同於全相聯映射
③每組只有一塊時,等同於直接映射

組相聯映射

  1. 若果想要的數據不在主存中,那麼就需要根據標記等到主存中進行尋找,與此同時將對映單元所在的數據塊一起放入到Cache中,以便下次尋找
  2. 這時如果主存對應位置爲空則直接複製過去去,若不爲空就會用到替換算法換出
    (1)先進先出(FIFO)算法
    (2)最近最少使用(LRU)算法
    (3)隨機法
  3. 在換出時,就會涉及到Cache的寫操作策略
    (1)寫回法

①當CPU寫Cache命中時,只修改Cache中的內容,而不立即寫入主存,只有當此行被換出時才寫回主存,這種方法可以減少訪問主存的次數。
②如何判斷此塊是否被修改過:每行設置一個修改位(就是髒位->一致性維護)
③若Cache沒有命中,則從主存中找出包含此字的數據塊,先將塊複製到Cache中,對Cache進行修改,等從Cache中取出時,再複製到主存中。

(2)全寫法

①當寫Cache命中時,Cache與主存同時發生寫修改
②當Cache不命中時,直接在主存中修改,以後是否複製到Cache視情況而定

(3)寫一次法

寫命中與寫不命中處理方法與寫回法基本相同,僅僅是第一次命中時要同時寫入主存

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