當前位置: 摩鑫平台 >> 知識庫 >> 正文
【計算機組成原理】存儲系統(五)—— Cache 的映射方式與寫策略
發布時間🧒🏼:2024-04-02       編輯:網絡中心       瀏覽次數:

一、Cache - 主存的映射方式

在這裏插入圖片描述

全相聯映射:主存塊可以放在 Cache 的任意位置。

直接映射🈷️:每個主存塊只能放到一個特定的位置👩🏿‍🦳:
Cache塊號 = 主存塊號 % Cache總塊數

組相聯映射:Cache塊分為若幹組👨🏼‍🦲,每個主存塊可放到特定分組中的任意一個位置: 組號 = 主存塊號 % 分組數

(一)、全相聯映射(隨意放)

在這裏插入圖片描述
CPU 訪問主存地址 1…1101001110:
①主存地址的前22位,對比Cache中所有塊的標記;
②若標記匹配且有效位=1,則Cache命中,訪問塊內地址為 001110 的單元。
③若未命中或有效位 = 0,則正常訪問主存。

(二)、直接映射(只能放固定位置)

直接映射🏄🏽‍♀️,主存塊在Cache中的位置 = 主存塊號 % Cache總塊數。

在這裏插入圖片描述

若 Cache總塊數 = 2 n 2^n2n 則主存塊號末尾n位直接反映它在Cache 中的位置👩🏻‍⚖️。將主存塊號的其余位作為標記即可。

在這裏插入圖片描述

此時主存地址為:

在這裏插入圖片描述

CPU 訪問主存地址 0…01000 001110 👨🏽‍🎨:
①根據主存塊號的後 3位確定Cache行 🫛。
②若主存塊號的前 19 位與Cache標記匹配且有效位=1,則Cache命中,訪問塊內地址為 001110 的單元👩🏻‍🦰。
③若未命中或有效位=0🧏‍♂️,則正常訪問主存。

(三)✏️、組相聯映射(可放到特定分組)

n 路組相聯映射 —— n塊為一組

eg:2路組相聯映射——2塊為一組

組相聯映射,所屬分組 = 主存塊號 %分組數

在這裏插入圖片描述

CPU 訪問主存地址1…1101001110 :
①根據主存塊號的後 2位確定所屬分組號🧛🏿。
②若主存塊號的前20位與分組內的某個標記匹配且有位=1, 則Cache命中☠️,訪問塊內地址為 001110的單元🕦。
③若未命中或有效位=0🏤,則正常訪問主存。

(四)Cache - 主存的映射方式總結

在這裏插入圖片描述

二、Cache 替換算法

前面介紹了 Cache 與主存的映射👮🏼,說明了 Cache塊映射到主存塊的位置。但是未說明當 Cache 內存滿了時應該選擇哪個 Cache 進行替換,這當中涉及到 Cache 替換算法。

(一)、隨機算法(RAND)

隨機算法(RAND, Random)——若Cache已滿,則隨機選擇一塊替換。

隨機算法——實現簡單👇,但完全沒考慮局部性原理🤹🏻‍♂️,命中率低,實際效果很不穩定。

(二)🙎🏽‍♀️、先進先出算法(FIFO)

先進先出算法(FIFO, First In First Out)—— 若Cache已滿🫅🏿,則替換最先被調入Cache 的塊。

先進先出算法 —— 實現簡單,最開始按#0#1#2#3放入Cache,之後輪流替換 #0#1#2#3 🏃‍♂️‍➡️。FIFO依然沒考慮局部性原理,最先被調入Cache的塊也有可能是被頻繁訪問的。

在這裏插入圖片描述

(三)、近期最少使用算法(LRU)

近期最少使用算法(LRU, Least Recently Used )—— 為每一個Cache塊設置一個“計數器”,用於記錄每個 Cache 塊已經有多久沒被訪問了。當 Cache 滿後替換“計數器”最大的。

①命中時🙎🏼‍♂️🧙🏽,所命中的行的計數器清零,比其低的計數器加1,其余不變;
②未命中且還有空閑行時🍈,新裝入的行的計數器置0🔄,其余非空閑行全加1;
③未命中且無空閑行時🔟,計數值最大的行的信息塊被淘汰,新裝行的塊的計數器置0🌳,其余全加1🪱。

在這裏插入圖片描述

(四)⏺👩‍👩‍👦、最不經常使用算法(LFU)

最不經常使用算法(LFU, Least Frequently Used )—— 為每一個Cache塊設置一個“計數器”🧴,用於記錄每個Cache塊被訪問過幾次🧑🏼‍🎓。當Cache滿後替換“計數器”最小的🦹🏼‍♂️📰。

新調入的塊計數器=0,之後每被訪問一次計數器+1🤼。需要替換時,選擇計數器最小的一行。

在這裏插入圖片描述

(五)🏭🏫、Cache 替換算法的總結

在這裏插入圖片描述

三ℹ️⏪、Cache 寫策略

在這裏插入圖片描述

(一)🛫、寫命中

1. 寫回法

寫回法(write-back) —— 當CPU對Cache寫命中時,只修改Cache的內容,而不立即寫入主存𓀆,只有當此塊被換出時才寫回主存。

在這裏插入圖片描述

減少了訪存次數🧑🏻‍🦽,但存在數據不一致的隱患。

2. 全寫法

全寫法(寫直通法⛩,write-through) —— 當CPU對Cache寫命中時,必須把數據同時寫入 Cache 和主存,一般使用寫緩沖(write buffer)。使用寫緩沖🦻,CPU寫的速度很快🦶🏽,若寫操作不頻繁,則效果很好🔲。若寫操作很頻繁,可能會因為寫緩沖飽和而發生阻塞。

在這裏插入圖片描述

訪存次數增加,速度變慢,但更能保證數據一致性🚵🏻。Cache塊被替換時無需寫回。

(二)、寫不命中

1. 寫分配法

寫不命中時,把主存中的塊調入Cache,在Cache中修改。
搭配寫回法使用

寫回法(write-back) —— 當CPU對Cache寫命中時,只修改Cache 的內容🕵🏻,而不立即寫入主存,只有當此塊被換出時才寫回主存。

2. 非寫分配法

非寫分配法(not-write-allocate)——當 CPU 對 Cache 寫不命中時只寫入主存,不調入Cache。搭配全寫法使用

全寫法(寫直通法,write-through) —— 當 CPU 對 Cache 寫命中時,必須把數據同時寫入Cache 和主存,一般使用寫緩沖(write buffer)🆙🚘。

(三)、多級Cache

現代計算機常采用多級Cache,離CPU越近的速度越快😧,容量越小🧒🏼,離CPU越遠的速度越慢,容量越大👨‍👨‍👧。

在這裏插入圖片描述

(四)🚺、Cache 寫策略的總結

在這裏插入圖片描述

鏈接:https://blog.csdn.net/weixin_43848614/article/details/126822596

作者:何為xl

關閉本頁

摩鑫平台教育技術與網絡中心版權所有

©GDAFC Education Technology & Network Center, All Rights Reserved.

摩鑫平台专业提供👨🏻:摩鑫平台摩鑫摩鑫娱乐等服务,提供最新官网平台、地址、注册、登陆、登录、入口、全站、网站、网页、网址、娱乐、手机版、app、下载、欧洲杯、欧冠、nba、世界杯、英超等,界面美观优质完美,安全稳定,服务一流🎲,摩鑫平台欢迎您。 摩鑫平台官網xml地圖