當(dāng)發(fā)生 TLB缺失時(shí),MMU硬件只負(fù)責(zé)生成TLB缺失故障睡雇,接下來(lái)由操作系統(tǒng)負(fù)責(zé)查找缺失的頁(yè)萌衬,從TLB中移除一個(gè)記錄,輸入新的記錄入桂,重啟發(fā)生故障的指令奄薇。
注意,在發(fā)生TLB缺失時(shí)抗愁,操作系統(tǒng)的處理必須在一小撮指令內(nèi)完成馁蒂,因?yàn)門LB缺失發(fā)生的頻率要比頁(yè)面缺失發(fā)生的頻率高。
如何提升效率蜘腌?
硬件方面:設(shè)置更大的TLB
如果TLB的大小適中沫屡,比如有64條,則通過(guò)軟件來(lái)管理TLB所帶來(lái)的效率提升是明顯的撮珠。因?yàn)門LB越大沮脖,意味著MMU的結(jié)構(gòu)越簡(jiǎn)單,可以騰出更多的空間來(lái)放置緩存芯急,從而提升效率勺届。
軟件層面:
方法一:操作系統(tǒng)使用直覺(jué)來(lái)預(yù)判下一個(gè)將要被引用的頁(yè),并提前將其放入TLB
方法二:在固定位置添加一個(gè)TLB條目的緩存
當(dāng)使用軟件來(lái)管理TLB時(shí)娶耍,需要理解幾個(gè)概念
- 軟缺失:虛擬頁(yè)不在TLB中免姿,但是在內(nèi)存中
執(zhí)行操作就是更新TLB,不需要硬盤I/O
修復(fù)軟缺失需要執(zhí)行10-20個(gè)指令榕酒,可以在10-20ns內(nèi)完成胚膊; - 硬缺失
指令引用的虛擬地址頁(yè)既不在內(nèi)存頁(yè)中故俐,也不在TLB中
執(zhí)行的操作是一次硬盤訪問(wèn)操作+遍歷頁(yè)表
硬缺失比軟缺失要慢100萬(wàn)倍