【計組】3.7 虛擬儲存器

MoMo_22coding發表於2020-12-13

頁式儲存

含義

在這裡插入圖片描述

程式分頁後的執行過程中的地址轉換

虛地址(邏輯地址)V.S.實地址(實體地址)

在這裡插入圖片描述
· 程式設計師在指令中給出的地址碼是邏輯地址
· 邏輯地址 = 邏輯頁號 + 頁內地址
· 實體地址 = 主存塊號 + 塊內地址
· 邏輯頁面 大小 = 主存塊 大小 - - - > 頁內地址 = 塊內地址
· 最終任務:邏輯頁號 - - - - >主存塊號

頁表(邏輯頁號 - - - > 主存塊號)

在這裡插入圖片描述
· 建立“頁表”:邏輯頁號和主存塊號的對應關係
· 頁表在主存中 - - - - >CPU要找到記憶體塊號實現地址轉換就需要訪問記憶體

地址轉換過程

在這裡插入圖片描述
· step1.CPU將邏輯地址,拆分 :邏輯頁號 + 頁內地址
· step2.CPU內部有一個頁表基址暫存器,拿到頁面的主存地址
· step3.CPU訪問主存內的頁表,查詢頁表的邏輯頁號,找到對應的主存塊號
· step4.CPU將主存塊號 和 塊內地址(頁內地址)結合
· step5.一般CPU欲訪問某個主存地址時,會先在Cache中進行查詢,如果Cache命中,則直接 從Cache中讀取或寫入,如果沒有命中,CPU就會去主存中訪問對應的主存單元

· 存在問題:根據程式區域性性原理,本次訪問的主存地址很可能在不久又需要訪問,而CPU依舊需要再一次去主存中訪問頁表進行地址轉換,訪存次數過多時,會造成CPU執行速率下降
· 解決方法:將近期訪問過的頁表的頁表項,複製入更高速的儲存器中

快表TLB

地址轉換過程

在這裡插入圖片描述
· CPU從指令中拿到一個邏輯地址後,先去快表中查詢對應的邏輯頁號,因為初始情況下,快表為空,所以CPU還是需要訪存才能進行地址轉換
· 快表與慢表的區別:1.快表在SRAM中儲存,慢表是在主存中是DRAM;2.快表是一種相聯儲存器,可以由內容尋訪,而主存訪問需要由地址尋訪
· 快表同樣容量較小,很容易被存滿,存滿後,各頁表項也需要進行相互的替換,換入換出

總結

在這裡插入圖片描述
· CPU從一條指令中拿到自己要去訪問的地址

虛擬儲存器分類

頁式虛擬儲存器

在這裡插入圖片描述

段式虛擬儲存器

在這裡插入圖片描述

段頁式虛擬儲存器

相關文章