408答疑
文章目錄
- 一、存儲器概述
- 二、主存儲器
- 三、主存儲器與 CPU 的連接
- 四、外部存儲器
- 五、高速緩沖存儲器
- 六、虛擬存儲器
- 七、參考資料
- 鮑魚科技課件
- 26王道考研書
- 八、總結
- 復習提示
- 思考題
- 常見問題和易混淆知識點
一、存儲器概述
- 文章鏈接: 點擊跳轉
二、主存儲器
- 文章鏈接: 點擊跳轉
三、主存儲器與 CPU 的連接
- 文章鏈接: 點擊跳轉
四、外部存儲器
- 文章鏈接: 點擊跳轉
五、高速緩沖存儲器
- 文章鏈接: 點擊跳轉
六、虛擬存儲器
- 文章鏈接: 點擊跳轉
七、參考資料
鮑魚科技課件
b站免費王道課后題講解:
網課全程班:
26王道考研書
八、總結
復習提示
本章是歷年命題重點,特別是有關 Cache 和虛擬存儲器的考點容易出綜合題。此外,存儲器的特點、存儲器的擴展(芯片選擇、連接方式、地址范圍等)、交叉存儲器、Cache 的相關計算與替換算法、虛擬存儲器與 TLB 也容易出選擇題。讀者應在掌握基本原理的基礎上,多結合習題進行反復訓練,以加深鞏固。另外,讀者需掌握存在 Cache 和 TLB 的計算機中的地址翻譯與 Cache 映射問題,也建議結合 OS 復習。
思考題
- 存儲器系統為何要分這些層次?計算機如何管理這些層次?
- Cache-主存層在存儲系統中主要對 CPU 訪存起加速作用,即從整體運行的效果看,CPU 訪存速度加快,接近于 Cache 的速度,而尋址空間和位價卻接近于主存。
- 主存-輔存層在存儲系統中主要起擴容作用,即從程序員的角度看,他所使用的存儲器的容量和位價接近于輔存,而速度接近于主存。因此從整個存儲系統來看,就達到了速度快、容量大、位價低的效果。
- 主存與 Cache 之間的信息調度全部由硬件自動完成。
- 而主存與輔存的信息調度則采用虛擬存儲技術實現,即將主存與輔存的一部分通過軟/硬結合的技術組成虛擬存儲器,程序員可用這個比主存實際空間(物理地址空間)大得多的虛擬地址空間(邏輯地址空間)編程,當程序運行時,再由軟/硬件自動配合完成虛擬地址空間與主存實際物理空間的轉換。
- 影響 Cache 性能的因素有哪些?
- 決定 Cache 系統訪存效率重要因素是命中率,它與很多因素有關:
- 命中率與映射方式有關,全相聯映射方式的命中率最高,直接映射方式的命中率最低。
- 命中率與 Cache 容量有關,顯然 Cache 容量越大,命中率就越高。
- 命中率還與主存塊(或 Cache 行)的大小有關,主存塊的大小要適中。
- 除上述因素外,系統是采用單級還是采用多級 Cache、數據 Cache 和指令 Cache 是分離還是合在一起、主存-總線-Cache-CPU 之間采用什么架構等,都會影響 Cache 的總體性能。
- 決定 Cache 系統訪存效率重要因素是命中率,它與很多因素有關:
- 虛擬存儲系統的頁面是設置得大一些好還是設置得小一些好?
- 頁面大小要適中。
- 頁面大小時,平均頁內剩余空間較小,可節省存儲空間,但會使得頁表增大,頁面大小時也不能充分利用空間局部性來提高命中率;
- 頁面太大時,可減少頁表空間,但平均頁內剩余空間較大,會浪費較多存儲空間,頁面太大還會使頁面調入/調出的時間較長。
常見問題和易混淆知識點
- Cache 行的大小和命中率之間有什么關系?
-
Cache 行的長度較大時,能充分利用程序訪問的空間局部性,使一個較大的局部空間被一起調到 Cache 中,因此可以增加命中機會。但是,行長也不能太大,主要原因有兩個:
- 行長大使失效損失變大。也就是說,若未命中,則需花更多時間從主存讀塊。
- 行長太大,Cache 項數變少,因此命中的可能性變小。
-
Cache 行的長度較小時,命中率會很低,但好處是存取塊的代價較小。
-
- 發生取指令 Cache 缺失的處理過程是什么?
- 程序計數器恢復當前指令的值。
- 對主存進行讀的操作。
- 將讀入的指令寫入 Cache 中,更改有效位和標記位。
- 重新執行當前指令。
- Cache 總容量與映射方式有何種關系?
-
C a c h e 總容量 = [ 每個 C a c h e 行標記項的容量(有效位、臟位、 L R U 替換位、標記位) + C a c h e 行長 ] × C a c h e 總行數 Cache 總容量 = [每個 Cache 行標記項的容量(有效位、臟位、LRU 替換位、標記位)+ Cache 行長] × Cache 總行數 Cache總容量=[每個Cache行標記項的容量(有效位、臟位、LRU替換位、標記位)+Cache行長]×Cache總行數
-
其中,有效位和標記位是所有 Cache 所必需的;臟位只在 Cache 采用回寫法時才需要設置;LRU 替換位只在 Cache 采用 LRU 替換算法時才需要設置。
-
有效位:占1位,用于說明 Cache 行中的數據是否有效。
-
臟位(修改位):占 1 位,回寫法才需要設置,用以說明 Cache 行中的數據是否被修改過。
-
LRU 替換位:位數為 log ? 2 \log_2 log2?(組內塊數),用于 LRU 替換算法中的訪問計數。
-
標記位 Tag:主存地址結構中的標記字段,其位數取決于所用的映射方式,用于匹配 Cache 行對應主存中的哪個塊。
-
Cache 容量與映射方式的具體關系如下圖所示。
-