軟件TLB

當發生 TLB缺失時,MMU硬件只負責生成TLB缺失故障,接下來由操作系統負責查找缺失的頁,從TLB中移除一個記錄,輸入新的記錄,重啟發生故障的指令。
注意,在發生TLB缺失時,操作系統的處理必須在一小撮指令內完成,因為TLB缺失發生的頻率要比頁面缺失發生的頻率高。

如何提升效率?
硬件方面:設置更大的TLB
如果TLB的大小適中,比如有64條,則通過軟件來管理TLB所帶來的效率提升是明顯的。因為TLB越大,意味著MMU的結構越簡單,可以騰出更多的空間來放置緩存,從而提升效率。
軟件層面:
方法一:操作系統使用直覺來預判下一個將要被引用的頁,并提前將其放入TLB
方法二:在固定位置添加一個TLB條目的緩存

當使用軟件來管理TLB時,需要理解幾個概念

  1. 軟缺失:虛擬頁不在TLB中,但是在內存中
    執行操作就是更新TLB,不需要硬盤I/O
    修復軟缺失需要執行10-20個指令,可以在10-20ns內完成;
  2. 硬缺失
    指令引用的虛擬地址頁既不在內存頁中,也不在TLB中
    執行的操作是一次硬盤訪問操作+遍歷頁表
    硬缺失比軟缺失要慢100萬倍
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容