地址翻譯主要包括兩個階段:一個是虛實地址轉換,另一個是存取數據。
慢表(Page):放在主存中的頁表,頁表只能存放在主存中。
快表(TLB):放在告訴緩衝存儲器的頁表項。
一、虛實地址轉換
(1)根據虛擬地址的 TLB 標記 和 索引(若採用全相聯映射,則沒有索引) 查 TLB 中是否有對應的頁表項
- 若存在對應的頁表項,且有效位(即裝入位)爲1,則將頁表項中的實頁號和頁內地址拼接,得到實地址
- 若存在對應的頁表項,但有效位(即裝入位)爲0,則頁面不在主存中,產生缺頁中斷,需要將目標頁面調入內存再由CPU重新訪問
- 若不存在對應的頁表項,則進入步驟(2)
(2)根據 虛擬頁號 查 內存中的頁表 是否有對應的頁表項
- 若存在對應的頁表項,且有效位(即裝入位)爲1,則將頁表項中的實頁號和頁內地址拼接,得到實地址
- 若存在對應的頁表項,但有效位(即裝入位)爲0,則頁面不在主存中,產生缺頁中斷,需要將目標頁面調入內存再由CPU重新訪問
- 若不存在對應的頁表項,則產生錯誤
二、存取數據
(1)根據實地址的 Cache標記 和 索引(若採用全相聯映射,則沒有索引) 查 Cache 中是否有對應的數據
- 若有效位爲1,可知該塊在 Cache 中,根據偏移量(塊內地址)可以找到對應的數據
- 若有效位爲0,則該塊不在 Cache 中,進入步驟(2)
(2)根據實地址的 物理頁號 查 內存 中是否有對應的數據
- 根據 頁內偏移 一定可以找到對應的數據
三、實例
題目
設某系統滿足以下條件:
- 有一個TLB與一個 data Cache
- 存儲器以字節爲編址單位
- 虛擬地址14位
- 物理地址12位
- 頁面大小爲64B
- TLB爲四路組相聯,共有16個條目
- data Cache是物理尋址、直接映射的,行大小爲4B,共有16組
TLB、頁表、 Cache內容如 表3.2、表3.3 及 表3.4 所示
寫出訪問地址爲0x03d4、0x00f和0x0229的過程。