Cache行中的信息是主存中的某個塊的副本,地址映射就是把主存地址空間映射到Cache地址空間,即把存放在主存中的信息按照某種方式裝入Cache中。
Cache要為每一塊加一個標記,指明它是主存中的那一塊
為了說明Cache中的信息是否有效,Cache行需要一個有效位
1.直接映射
主存中的每一行之裝入到Cache中的唯一位置,如果發生塊沖突,原來的塊將會被無條件的換出,無需使用替換算法
直接映射的關系可以定義為:
Cache行號=主存塊號 mod Cache總行數
直接映射地址結構:
CPU的訪存過程:
1)首先根據訪存地址中間的c位,找到對應的Cache行。
2)與對應Cache行中的標記和主存地址的高t位標記進行比較
3)若相等,且有效位為1,則訪問Cache命中,測試在根據主存地址中低位的塊內地址,在對應的Cache行中存取信息。
若不相等,或有效位為0,則不命中,此時CPU從主存中讀出該地址所在的一塊信息送到對應的Cache行中,將有效為置1,並將標記設置為地址中的高t位,同時將該地址中的內容送到CPU。
2.全相聯映射:
主存中的每一塊都可以裝入Cache中的任何位置,每行的標記用於指出該行取主存的那一塊,所以CPU訪問時需要與所有的Cache行的標記進行比較。
地址結構:
3.組相聯映射:
將Cache分成Q個大小相等的組,每個主存塊可以裝入固定組中的任意一行,即組間采用直接映射,而組內采用全相聯映射的方式。假設每組有r個Cache行,則稱之為r路組相連。
組相聯映射的關系可以定義為:
Cache組號 = 主存塊號 mod Cache組數(Q)
組相聯映射的地址結構: