TLB的作用及工作過程


下面內容摘自《步步驚芯——軟核處理器內部設計分析》一書

  

      頁表一般都非常大,而且存放在內存中,所以處理器引入MMU后,讀取指令、數據須要訪問兩次內存:首先通過查詢頁表得到物理地址,然后訪問該物理地址讀取指令、數據。

為了降低由於MMU導致的處理器性能下降。引入了TLBTLBTranslation Lookaside Buffer的簡稱,可翻譯為“地址轉換后援緩沖器”,也可簡稱為“快表”。簡單地說,TLB就是頁表的Cache,當中存儲了當前最可能被訪問到的頁表項。其內容是部分頁表項的一個副本。僅僅有在TLB無法完畢地址翻譯任務時,才會到內存中查詢頁表,這樣就降低了頁表查詢導致的處理器性能下降。

      TLB中的項由兩部分組成:標識和數據。

標識中存放的是虛地址的一部分,而數據部分中存放物理頁號、存儲保護信息以及其它一些輔助信息。虛地址與TLB中項的映射方式有三種:全關聯方式、直接映射方式、分組關聯方式。

OR1200處理器中實現的是直接映射方式。所以本書僅僅對直接映射方式作介紹。直接映射方式是指每個虛擬地址僅僅能映射到TLB中唯一的一個表項。

如果內存頁大小是8KBTLB中有64項。採用直接映射方式時的TLB變換原理如圖10.4所看到的。

 

 

由於頁大小是8KB,所以虛擬地址的0-12bit作為頁內地址偏移。

TLB表有64項,所以虛擬地址的13-18bit作為TLB表項的索引。假如虛擬地址的13-18bit1,那么就會查詢TLB的第1項,從中取出標識,與虛擬地址的19-31位作比較,如果相等。表示TLB命中,反之,表示TLB失靶。

TLB失靶時,能夠由硬件將須要的頁表項載入入TLB,也可由軟件載入,詳細取決於處理器設計。OR1200沒有提供硬件載入頁表項的功能,僅僅能由軟件實現。TLB命中時,此時翻譯得到的物理地址就是TLB1項中的標識(即物理地址13-31位)與虛擬地址0-12bit的結合。在地址翻譯的過程中還會結合TLB項中的輔助信息推斷是否發生違反安全策略的情況。比方:要改動某一頁,但該頁是禁止改動的。此時就違反了安全策略,會觸發異常。

OR1200中的MMU分為指令MMU、數據MMU。分別簡稱為IMMUDMMU。採用的是頁式內存管理機制,每一頁大小是8KB,沒有實現頁表管理、頁表查詢、更新、鎖定等功能,都須要軟件實現。

實際上OR1200MMU模塊主要實現的就是TLBOR1200TLB的大小能夠配置。默認是64項,採用的是直接映射方式。IMMU中有ITLBDMMU中有DTLB,可是ITLBDTLB的載入、更新、失效、替換等功能也都須要軟件實現。

本章從下一節開始將分別對IMMUDMMU進行分析。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM