TLB:Translation Lookaside Buffer.

根據功能可以譯為快表,直譯可以翻譯為旁路轉換緩沖,也可以把它理解成頁表緩沖。里面存放的是一些頁表文件(虛擬地址到物理地址的轉換表)。當處理器要在主內存尋址時,不是直接在內存的物理地址里查找的,而是通過一組虛擬地址轉換到主內存的物理地址,TLB就是負責將虛擬內存地址翻譯成實際的物理內存地址,而CPU尋址時會優先在TLB中進行尋址。處理器的性能就和尋址的命中率有很大的關系。

映射機制必須使一個程序能斷言某個地址在其自己的進程空間或地址空間內,并且能夠高效的將其轉換為真實的物理地址以訪問內存。一個方法是使用一個含有整個空間內所有頁的入口(entry)的表(即頁表),每個入口包含這個頁的正確物理地址。這很明顯是個相當大的數據結構,因而不得不存放于主存之中。

由于CPU首先接到的是由程序傳來的虛擬內存地址,所以CPU必須先到物理內存中取頁表,然后對應程序傳來的虛擬頁面號,在表里找到對應的物理頁面號,最后才能訪問實際的物理內存地址,也就是說整個過程中CPU必須訪問兩次物理內存(實際上訪問的次數更多)。因此,為了減少CPU訪問物理內存的次數,引入TLB。

====================================================

     cpu                                         內存

      TLB   <============================>    內存頁表

 

      L1 Cache <=====>L2 Cache<=========>    內存數據

====================================================

TLB種類

TLB在X86體系的CPU里的實際應用最早是從Intel的486CPU開始的,在X86體系的CPU里邊,一般都設有如下4組TLB:

第一組:緩存一般頁表(4K字節頁面)的指令頁表緩存(Instruction-TLB);

第二組:緩存一般頁表(4K字節頁面)的數據頁表緩存(Data-TLB);

第三組:緩存大尺寸頁表(2M/4M字節頁面)的指令頁表緩存(Instruction-TLB);

第四組:緩存大尺寸頁表(2M/4M字節頁面)的數據頁表緩存(Instruction-TLB);


   圖中可見,當CPU執行機構收到應用程序發來的虛擬地址后,首先到TLB中查找相應的頁表數據,如果TLB中正好存放著所需的頁表,則稱為TLB命中(TLB Hit,接下來CPU再依次看TLB中頁表所對應的物理內存地址中的數據是不是已經在一級、二級緩存里了,若沒有則到內存中取相應地址所存放的數據。如果TLB中沒有所需的頁表,則稱為TLB失敗(TLB Miss),接下來就必須訪問物理內存中存放的頁表,同時更新TLB的頁表數據。

既然說TLB是內存里存放的頁表的緩存,那么它里邊存放的數據實際上和內存頁表區的數據是一致的,在內存的頁表區里,每一條記錄虛擬頁面和物理頁框對應關系的記錄稱之為一個頁表條目(Entry),同樣地,在TLB里邊也緩存了同樣大小的頁表條目(Entry)。由于頁表條目的大小總是固定不變的,所以TLB的容量越大,則它所能存放的頁表條目數越多(類似于增大CPU一級、二級緩存容量的作用),這就意味著緩存命中率的增加,這樣,就能大大減少CPU直接訪問內存的次數,實現了性能提升。

4 TLB的聯合方式:

TLB內部存儲空間被劃分為大小相同的塊(即TLB頁表條目),這些塊的大小=內存的頁表區里頁表條目的大小.

所以,就可以在TLB頁表條目和內存頁表條目間建立一定的相互對應關系。當CPU需要頁表數據時,它必須迅速做出如下的2個判斷:一個是所需要的頁表是否已緩存在TLB內部(即判斷TLB命中或是失敗),另一個是所需要的頁表在TLB內的哪個條目內。為了盡量減少CPU做出這些判斷所需的時間,就必須在TLB頁表條目和內存頁表條目之間的對應方式上動點腦筋,下面是幾種常見的對應關系。

名稱

方式

應用

全聯合方式

內存頁表里的任何一個條目都可能被對應(緩存)到TLB的任何一個條目,TLB內所有條目都可能被對應到內存頁表里的所有條目上。

Athlon XPL1 指令TLB部分全是這種方式

4路聯合方式

只有內存頁表區的某些條目可能被緩存到TLB的某4個頁表條目所在的塊上。

P4處理器一般采用這種方式



轉自http://www.51testing.com/?145083/action_viewspace_itemid_70500.html