全面學習理解TLB(Translation Look-aside Buffer)地址變換高速緩存


全面學習理解TLB(Translation Look-aside Buffer)地址變換高速緩存

 

前言:

本文學習思路是:存在緣由   --> 存在好處 --> 定義性質 --> 具體分析

存在緣由:

由於地址映射(從虛擬地址轉換成物理地址)需要的開銷開大。

轉換過程如下:

  1. 第一次訪問內存是訪問頁表,取出虛擬頁對應的物理頁。
  2. 第二次訪問內存是訪問實際內存地址。

為了提高效率,現代CPU都包含了一個特殊Cache來跟蹤最近使用過的地址變換,這個就是TLB。

 

明顯好處:

如果有了TLB,那么地址轉換變成如下過程:

  1. 第一次訪問TLB,得到虛擬頁對應的物理頁
  2. 第二次訪問的是內存,訪問實際地址。

這樣就省去了一次訪問內存的時間,大大提高了效率。

 

概念概括:

TLB英文全稱:Translation Look-aside Buffer

TLB中文全稱:地址變換高速緩存

TLB中文簡稱:快表

TLB實際性質:它是一種cache

 

TLB的每一項中包含

  1. 有效位(valid)。現在的計算機基本都是使用虛擬存儲器,簡單來說就是假如你要打開一個很大的程序,它不會把所有的文件都加載進內存。當需要用的內容不在內存上時,它再去硬盤上找並加載到內存。故,有效位的作用就是,假如是0,就代表該頁不在內存中,需要去硬盤中找。
  2. 引用位(reference)。由於TLB中的項數是一定的,所以當有新的TLB項需要進來但是又滿了的話,如果根據LRU算法,就將最近最少使用的項替換成新的項。故需要引用位。同時要注意的是,頁表中也有引用位。
  3. 臟位(dirty)。現在的計算機基本都是使用虛擬存儲器,簡單來說就是假如你要打開一個很大的程序,它不會把所有的文件都加載進內存。當需要用的內容不在內存上時,它再去硬盤上找並加載到內存。故臟位的作用就是,當內存上的某個塊需要被新的塊替換時,它需要根據臟位判斷這個塊之前有沒有被修改過,如果被修改過,先把這個塊更新到硬盤再替換,否則就直接替換。
  4. 物理頁號。

 

利用TLB進行快速地址轉換的過程圖

       

 

 

過程描述如下:

    首先,先去TLB中根據標志Tag尋找,假如找到了並且有效位是1,說明TLB命中了,那么直接就可以從TLB中獲取該虛擬頁號對應的物理頁號。假如有效位是0,說明該頁不在內存中,這時候就發生缺頁異常,CPU需要先去外存中將該頁調入內存並將頁表和TLB更新。

    假如在TLB中沒有找到,那么就去頁表(Page Table)中尋找(以虛擬頁號為索引),假如找到了並且有效位是1,那么就可以取出對應的物理頁號。假如有效位是0,說明該頁不在內存中,這時候就發生缺頁異常,CPU需要先去外存中將該頁調入內存並將頁表和TLB更新。

    假如在頁表中沒有找到,也是缺頁。同意會執行上述的缺頁處理。

    (不管從哪獲取到物理頁號,都可以根據規則組拼成實際物理地址,然后就可以訪存去數據啦)

 

引用位、臟位何時更新?

    頁表和TLB都有這兩個標志位。如果是TLB命中,那么引用位就會被置1,當TLB或頁表滿時,就會根據該引用位選擇適合的替換位置。如果TLB命中且這個訪存操作是個寫操作,那么臟位就會被置1,表明該頁被修改過,當該頁要從內存中移除時會先執行將該頁寫會外存的操作,保證數據被正確修改。

    當TLB的某一項要被替換時,它的引用位和臟位都會被更新會頁表。

 

補充:

    虛擬地址轉換成物理地址的簡略圖(沒有TLB只有頁表時的情況)

 

 

  

 

本文博客地址:http://www.cnblogs.com/toulanboy/


免責聲明!

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



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