當CPU想要訪問一個邏輯地址的時候,我們需要做兩個步驟,地址轉換和記憶體訪問
地址轉換
邏輯地址是程式內部使用的地址,並非真正的實體地址。
從邏輯地址到實體地址的對映,由頁表來完成,頁表的內容包括,邏輯頁號,物理頁號,有效位,有效位表示這一頁是否在記憶體中。
頁表存放在記憶體中,如果需要頻繁訪問頁表,需要花上一些時間,所以我們為頁表做了快取,也就是快表,TLB
TLB中存放最近使用的頁表項,TLB的速度比頁表要快,當我們需要查頁表的時候,同時去查詢快表和慢表,快表中查詢到可以取消慢表中的查詢。
如果快錶慢表中都沒有命中,那麼發生缺頁中斷,交給作業系統去載入這一頁到記憶體中,並修改慢表,然後重新去查詢頁表這次就會命中了。
這樣我們得到了程式的物理頁號。
訪問記憶體
得到物理頁號之後,加上頁內偏移,就可以得到實體地址。
那我們去直接訪問這個實體地址嗎?並不是
我們設定了cache快取來加快訪問實體地址的過程,
也就是說,cache中存放了最近訪問過的物理塊中的資訊,如果發現cache中有我們想要的資訊就直接從cache中去取,否則再去記憶體中取,這樣就加快了訪存的速度