tlb:translation lookaside buffer,即旁路轉換緩衝,或稱為
頁表緩衝;裡面存放的是一些
頁表檔案(
虛擬位址到
實體地址的轉換表)。
又稱為 快表技術。由於「
頁表」儲存在
主儲存器中,查詢頁表所付出的代價很大,由此產生了tlb。
x86保護模式下的
定址方式:段式
邏輯位址—〉線形位址—〉頁式位址;
頁式位址=頁面起始位址+頁內
偏移位址;
對應於 虛擬位址:叫page(頁面);對應於
實體地址:叫frame(
頁框);
x86體系的
系統記憶體裡存放了兩級
頁表,第一級頁表稱為頁目錄,第二級稱為頁表。
tlb和cpu裡的一級、二級
快取之間不存在本質的區別,只不過前者
快取頁表資料,而後兩個快取實際資料。
1:tlb在x86體系的cpu裡的實際應用最早是從intel的486cpu開始的,在x86體系的cpu裡邊,一般都設有如下4組tlb:
第一組:快取一般
頁表(4k位元組頁面)的指令頁表快取(instruction-tlb);
第二組:快取一般
頁表(4k位元組頁面)的資料頁表快取(data-tlb);
第三組:快取大尺寸
頁表(2m/4m位元組頁面)的指令頁表快取(instruction-tlb);
第四組:快取大尺寸
頁表(2m/4m位元組頁面)的資料頁表快取(data-tlb);
2:tlb命中和tlb失敗
如果tlb中正好存放著所需的
頁表,則稱為tlb命中(tlb hit);如果tlb中沒有所需的頁表,則稱為tlb失敗(tlb miss)。
3: tlb條目數 即tlb裡面可以儲存的表項數目,一般也叫entry數。
4:tlb的聯合方式
1〉全相聯方式:athlon xp
2〉組相聯方式:p4
當cpu執行機構收到
應用程式發來的
虛擬位址後,首先到tlb中查詢相應的
頁表資料,如果tlb中正好存放著所需的
頁表,則稱為tlb命中(tlb hit),接下來cpu再依次看tlb中頁表所對應的
物理記憶體位址中的資料是不是已經在一級、二級快取裡了,若沒有則到記憶體中取相應位址所存放的資料。既然說tlb是記憶體裡存放的頁表的
快取,那麼它裡邊存放的資料實際上和記憶體頁表區的資料是一致的,在記憶體的頁表區里,每一條記錄虛擬頁面和物理
頁框對應關係的記錄稱之為乙個頁表條目(entry),同樣地,在tlb裡邊也快取了同樣大小的頁表條目(entry)。
輸入緩衝區與輸出緩衝區
本博文通過一段程式來理解輸入緩衝區與輸出緩衝區。程式如下 author wanghao created time thu 17 may 2018 06 03 12 ampdt file name test.c description include int main int argc,const c...
使用者程序緩衝區和核心緩衝區
常常聽到有程式設計師會跟你討論 我們在讀寫檔案的時候,系統是有快取的 但實際上有一部分人把使用者程序緩衝區和系統空間的緩衝區的概念混淆了,包括這兩種緩衝區的用法和所要解決的問題,還有其它類似的概念。本文就來區分一下不同的緩衝區概念 主要針對類unix平台 使用者程序和作業系統的關係 首先我用一張圖來...
php 緩衝區,PHP的輸出緩衝區
1 什麼是緩衝區?緩衝區的作用是把輸入或者輸出的內容先放進記憶體,而不顯示或者讀取,最本質的作用就是協調高速cpu和相對緩慢的io裝置 磁碟等 的運作。2 php在執行的時候,在什麼地方有用到緩衝區?當執行php的時候,如果碰到了echo print r之類的會輸出資料的 php就會將要輸出的資料放...