TLB快表的作用

2021-06-11 07:36:48 字數 2275 閱讀 8079

translation lookaside buffer。

根據功能可以譯為快表,直譯可以翻譯為旁路轉換緩衝,也可以把它理解成頁表緩衝。裡面存放的是一些頁表檔案(虛擬位址到實體地址的轉換表)。當處理器要在主內定址時,不是直接在記憶體的實體地址裡查詢的,而是通過一組虛擬位址轉換到主記憶體的實體地址,

頁表檔案(pte page table entry 頁表條目存放在記憶體中)

就是負責將虛擬記憶體位址翻譯成實際的物理記憶體位址,t

lb中存放了部分pte頁表的快取。而cpu定址時會優先在tlb中進行定址。t

lb是在mmu中包括的一段小的快取

(mmu memory management unit 儲存器管理單元,是cpu晶元上的乙個專用硬體)

。處理器的效能就和定址的命中率有很大的關係。

tlb命中和tlb失敗

如果tlb中正好存放著所需的頁表,則稱為tlb命中(tlb hit);如果tlb中沒有所需的頁表,則稱為tlb失敗(tlb miss)。

如果命中的話,就可以直接將虛擬位址轉換為實體地址,如果不命中,則必須在pte頁表中繼續查詢,並將找到的pte存放到t

lb中,覆蓋已經存在的乙個條目。

tlb條目數

即頁表條目數,entry.

tlb的聯合方式

1〉全聯合方式(fully associate):athlon xp

2〉4路聯合方式(4-way set

associate

):p4

當cpu執行機構收到應用程式發來的虛擬位址後,首先到tlb中查詢相應的頁表資料,如果tlb中正好存放著所需的頁表,則稱為tlb命中(tlbhit),接下來cpu再依次看tlb中頁表所對應的物理記憶體位址中的資料是不是已經在一級、二級快取裡了(一級快取和二級快取中的內容都是記憶體中訪問頻率高的資料的複製品(對映),它們的存在都是為了減少高速cpu對慢速記憶體的訪問。 通常cpu找資料或指令的順序是:先到一級快取中找,找不到再到二級快取中找,如果還找不到就只有到記憶體中找了

)。若沒有命中則到記憶體中取相應位址所存放的資料。既然說tlb是記憶體裡存放的頁表的快取,那麼它裡邊存放的資料實際上和記憶體頁表區的資料是一致的,在記憶體的頁表區里,每一條記錄虛擬頁面和物理頁框對應關係的記錄稱之為乙個頁表條目(entry),同樣地,在tlb裡邊也快取了同樣大小的頁表條目(entry)。

tlb內部儲存空間被劃分為大小相同的塊(即tlb頁表條目),這些塊的大小==記憶體的頁表區里頁表條目的大小。所以,就可以在tlb頁表條目和記憶體頁表條目間建立一定的相互對應關係。當cpu需要頁表資料時,它必須迅速做出如下的2個判斷:乙個是所需要的頁表是否已快取在tlb內部(即判斷tlb命中或是失敗),另乙個是所需要的頁表在tlb內的哪個條目內。為了儘量減少cpu做出這些判斷所需的時間,就必須在tlb頁表條目和記憶體頁表條目之間的對應方式上動點腦筋,下面是幾種常見的對應關係。

名稱方式

應用全聯合方式

記憶體頁表裡的任何乙個條目都可能被對應(快取)到

tlb的任何乙個條目,

tlb內所有條目都可能被對應到記憶體頁表裡的所有條目上。

athlon xp在l1

指令tlb

部分全是這種方式

4路聯合方式

只有記憶體頁表區的某些條目可能被快取到tlb的某4個頁表條目所在的塊上。

p4處理器一般採用這種方式

全相聯映像規則:

主存中任意一塊都可映像裝入到cache中任意一塊位置。

全相聯映像法的優點是塊衝突概率最低,只有當cache全部半月滿才可能出現塊衝突,所以,cache空間利用率最高。但要構成容量為2ncb項的相聯儲存器,其代價太大,而且cache容量很大時,其查表速度很難提高。

任意映象,命中率最高,實現最複雜

全相連優點:命中率比較高,cache儲存空間利用率高。

缺點:訪問相關儲存器時,每次都要與全部內容比較,速度低,成本高,因而應用少。

組相連組相聯的映象規則:

(1) 主存和cache按同樣大小劃分成塊。

(2) 主存和cache按同樣大小劃分成組。

(3) 主存容量是快取容量的整數倍,將主存空間按緩衝區的大小分成區,主存中每一區的組數與快取的組數相同。

(4) 當主存的資料調入快取時,主存與快取的組號應相等,也就是各區中的某一塊只能存入快取的同組號的空間內,但組內各塊位址之間則可以任意存放, 即從主存的組到cache的組之間採用直接映象方式;在兩個對應的組內部採用全相聯映象方式。

優點:塊的衝突概率比較低,塊的利用率大幅度提高,塊失效率明顯降低。

缺點:實現難度和造價要比直接映象方式高。

系統表的作用

sysaltfiles 主資料庫 儲存資料庫的檔案 syscharsets 主資料庫 字符集與排序順序 sysconfigures 主資料庫 配置選項 syscurconfigs 主資料庫 當前配置選項 sysdatabases 主資料庫 伺服器中的資料庫 syslanguages 主資料庫 語言 ...

dual表的作用

dual是乙個虛擬表,用來構成select的語法規則,oracle保證dual裡面永遠只有一條記錄。1.函式 select to char sysday,yyyy mm dd from dual 查詢系統當前的時間 select sys context userenv terminal from d...

TLB重新整理的深入理解(續)

有兩點注意 1.有些體系結構上tlb不命中和tlb實效是兩回事,不命中的意思是tlb表項的有效位為1,存在位為0,而tlb無效是有效位為0,存在位無意義,當tlb無效的時候,預取邏輯就要查頁表,並且不把結果回存進tlb,只有當使用者實際訪問該位址 而不是預取 時才將查表結果存入tlb,當tlb不命中...