第5章 存儲層次
1. 存儲器的三個主要指標
從用戶的角度來看,存儲器的三個主要指標是:容量、速度和價格。
2. 多級存儲層次
由若干個採用不同實現技術的存儲器構成的存儲器系統。各存儲器處在離CPU不同距離的層次上。其目標是速度接近於離CPU最近的存儲器的速度,容量達到離CPU最遠的存儲器的容量。
3. 命中率H
CPU在第一級存儲器中找到所需數據的概率。
4. 不命中率或失效率F
CPU在第一級存儲器中找不到所需數據的概率。
5. 失效開銷
CPU向第二級存儲器發出訪問請求到把這個數據塊調入第一級存儲器所需的時間。
6. 平均訪問時間TA
TA= 命中時間 + 失效率 × 失效開銷
7. “Cache-主存”層次
在CPU和主存之間增加一級速度快、但容量較小而每位價格較貴的高速緩衝存儲器。藉助於輔助軟硬件,它與主存構成一個有機的整體,以彌補主存速度的不足。
8. “主存-輔存”層次
“主存—輔存”層次的目的是爲了彌補主存容量的不足。它是在主存外面增加一個容量更大、每位價格更便宜、但速度更慢的存儲器。它們依靠輔助軟硬件的作用,構成一個整體。
9. 全相聯映像
當把一個塊從主存調入Cache時,它可以被放置到Cache中的任意一個位置。
10. 直接映像
當把一個塊從主存調入Cache時,它只能被放置到Cache中唯一的一個位置。
11. 組相聯映像
當把一個塊從主存調入Cache時,它可以被放置到Cache中唯一的一個組中的任何一個位置(Cache被等分爲若干組,每組由若干個塊構成)。
12.n路組相聯
在組相聯映像中,如果每組中有n個塊,則稱該映像規則爲n路組相聯。
13. 相聯度
組相聯映像中每組中的塊數。
14. 目錄表
目錄表所包含的項數與Cache的塊數相同,每一項對應於Cache中的一個塊,用於指出當前該塊中存放的信息是哪個主存塊的。
15. 候選位置
一個主存塊可能映像到Cache中的一個或多個Cache塊位置,這些Cache塊位置稱爲候選位置。
16. 隨機法
隨機地選擇被替換的塊。
17. 先進先出法(FIFO)
選擇最早調入的塊作爲被替換的塊。
18. 最近最少使用法(LRU)
選擇近期最少被訪問的塊作爲被替換的塊。
19. 寫直達法
在執行“寫”操作時,不僅把信息寫入Cache中相應的塊,而且也寫入下一級存儲器中相應的塊。
20. 寫回法
在執行“寫”操作時,只把信息寫入Cache中相應的塊。該塊只有在被替換時,才被寫回主存。
21. 按寫分配法
寫失效時,先把所寫單元所在的塊調入Cache,然後再進行寫入。
22. 不按寫分配法
寫失效時,直接寫入下一級存儲器中,而不把相應的塊調入Cache。
23. 分離Cache
將單一的Cache分爲兩個Cache:一個專門存放指令,另一個專門存放數據。
24. 混合Cache
將指令和數據放在一個統一的Cache中。
25. 強制性失效
當第一次訪問一個塊時,該塊不在Cache中,需從下一級存儲器中調入Cache,這就是強制性失效。
26. 容量失效
如果程序執行時所需的塊不能全部調入Cache中,則當某些塊被替換後,若又重新被訪問,就會發生失效。這種失效稱爲容量失效。
27. 衝突失效
在組相聯或直接映像Cache中,若太多的塊映像到同一組(塊)中,則會出現該組中某個塊被別的塊替換(即使別的組或塊有空閒位置),然後又被重新訪問的情況。這就發生了衝突失效。
28. 2:1的Cache經驗規則
大小爲N的直接映像Cache的失效率約等於大小爲N/2的兩路組相聯Cache的失效率。
29. Victim Cache
在Cache與下一級存儲器的數據通路之間增設一個全相聯的小Cache,用來存放由於失效而被丟棄(替換)的那些塊。
30. 僞相聯
一種既能獲得多路組相聯Cache的低失效率,又能獲得直接映像Cache的命中速度的相聯辦法。採用這種方法時,在命中情況下,訪問Cache的過程和直接映像Cache中的情況相同;而發生失效時,在訪問下一級存儲器之前,會先檢查Cache另一個位置(塊),看是否匹配。確定這個“另一塊”的一種簡單的方法是將索引字段的最高位取反,然後按照新索引去尋找“僞相聯組”中的對應塊。如果這一塊的標識匹配,則稱發生了“僞命中”。否則,就只好訪問下一級存儲器。
31. 寄存器預取
預取時,把數據取到寄存器中。
32. Cache預取
預取時,只將數據取到Cache中,不放入寄存器。
33. 故障性預取
在預取時,若出現虛地址故障或違反保護權限,則會發生異常。
34. 非故障性預取或非綁定預取
預取時,若出現虛地址故障或違反保護權限,則不會發生異常。
35. 非阻塞Cache或非鎖定Cache
Cache在等待預取數據返回的同時,還能繼續提供指令和數據。
36. 子塊放置技術
把一個Cache塊劃分爲若干個小塊,稱爲子塊。爲每一個子塊賦一位有效位,用於說明該子塊中的數據是否有效。失效時只從下一級存儲器調入一個子塊。
37. 請求字
當從存儲器向CPU調入一塊時,塊中只有一個字是CPU立即需要的,這個字稱爲請求字。
38. 儘早重啓動
在請求字沒有到達時,CPU處於等待狀態。一旦請求字到達,就立即發送給CPU,讓等待的CPU儘早重啓動,繼續執行。
39. 請求字優先
調塊時,首先向存儲器請求CPU所要的請求字。請求字一旦到達,就立刻送往CPU,讓CPU繼續執行,同時從存儲器調入該塊的其餘部分。
40. 失效下的命中
Cache在失效時仍允許CPU進行其它的命中訪問。
41. 局部失效率
對於某一級Cache來說:
局部失效率=該級Cache的失效次數/到達該級Cache的訪存次數
42. 全局失效率
對於某一級Cache來說:
全局失效率=該級Cache的失效次數/CPU發出的訪存總次數
43. 虛擬Cache
訪問Cache的索引和標識都是虛擬地址的一部分。
44. 物理Cache
訪問Cache的索引和標識都是物理地址的一部分。
45. 進程標識符字段(PID)
虛擬Cache中,爲了減少清空Cache的次數,在地址標識中增加一個進程標識符字段,指出Cache中各塊的數據是屬於哪個程序的。
46. 同義或別名
虛擬Cache中,操作系統和用戶程序對於同一個物理地址可能採用兩種以上不同形式的虛擬地址來訪問,這些地址稱爲同義或別名。
47. 虛擬索引+物理標識方法
直接用虛地址中的頁內位移作爲訪問Cache的索引,但標識卻是物理地址。CPU發出訪存請求後,在進行虛實地址轉換的同時,可並行進行標識的讀取。在完成地址變換之後,再把得到的物理地址與標識進行比較。它既能得到虛擬Cache的好處,又能得到物理Cache的優點。
48. 多字寬存儲器結構
這是提高存儲器帶寬的最簡單的方法。把主存的寬度增加爲原來的若干倍。
49. 多體交叉存儲器
把存儲芯片組織爲多個體,讓它們並行工作,從而能一次讀或寫多個字。存儲器的各個體是按字交叉的。
50. 獨立存儲體
將存儲器分爲若干個獨立的存儲體,每個體有獨立的地址線、獨立的數據總線,有多個存儲控制器,以允許多個體獨立操作。
51. 體衝突
多個請求要訪問同一個體。
52. DRAM專用交叉結構
Nibble方式、Page方式、Staticcolumn方式。
53. TLB
一個專用的高速緩衝器,用於存放近期經常使用的頁表項,其內容是頁表部分內容的一個副本。