2013-03-14 55 views
1

我讀,以簡單的方式,怎樣的TLB工作,我不明白的地方:TLB物理尋址沒有任何意義,我

的TLB引用物理內存地址在其表。它可能位於CPU和CPU高速緩存之間,CPU高速緩存和主存儲器之間或多級高速緩存的級別之間。 放置確定緩存是使用物理還是虛擬 尋址。如果緩存虛擬尋址,請求將直接從CPU發送到緩存,並且僅在 緩存未命中時訪問TLB。如果高速緩存是物理地址,則CPU會對每個內存操作執行TLB 查找,並將生成的物理地址 發送到高速緩存。

總結: 當TLB是CPU和CPU高速緩存之間,它使用物理尋址和CPU確實在每個存儲器操作的TLB查找,然後將所得的物理地址發送到所述高速緩存。

我的問題:由於CPU處理虛擬地址,這個查詢是如何執行的?

我不明白:CPU遇到一個虛擬地址 - > CPU觸點TLB這是用物理地址尋址 - > ?? - > TLB吐出另一個物理地址

TLB:

| Physical Address | Another Physical Address | 

這完全沒有意義,我

兩者from wikipedia

回答

0

據我CPU總是會查找TLB時,有是一個緩存未命中...... CPU不會自己知道地址是虛擬還是物理地址..因此CPU ---> CPU緩存--->(如果緩存未命中)TLB --->(if TLB未命中)--->二級存儲器

而抓取的網頁.. TLB項,CPU緩存會與此最近的條目進行更新..

+0

你的觀點對我來說很有意義,那就是「虛擬尋址」方法。但我的問題是在物理尋址方法上,我認爲這是毫無意義的。 – 2013-03-14 11:25:41

+0

ohh我的壞..在一個更相關的主題.. 至於我知道... 如果一個CPU使用物理尋址那麼不會有任何TLB目前.. 處理器將直接從該地址獲取數據。 – tanmayub 2013-03-14 11:34:12

+0

而且這也很有意義!我同意你的意見,我只是想知道爲什麼維基百科引用TLB「物理地址」。咩.. – 2013-03-14 11:39:24

1

它在哪裏說,TLB物理處理?
當緩存物理地址尋址時,TLB當然會從虛擬轉換爲物理地址:內存單元在虛擬地址空間中運行(頁腳走行和TLB維護除外) - > TLB轉換V-> P - - >使用物理地址完成高速緩存查找。

TLB:

| virt Address | Physical Address | 

緩存:

| Physical Address |  Data   | 

以上只是部分說,如果高速緩存的物理地址一樣,這裏你需要TLB查找每一個訪問(在你面前甚至可以知道你是否碰到/未命中),而如果緩存是虛擬地址,你可以在翻譯之前查找緩存,並且如果你錯過了並且需要進入內存/更低(物理地址)緩存,那麼只能訪問TLB

0

TLB從CPU獲取虛擬地址。這個地址可以分成虛擬頁碼和虛擬頁面偏移量。

虛擬頁面偏移量對應於物理頁面偏移量。虛擬頁碼分爲標籤和索引。基於標籤和索引,TLB在它自己的緩存中檢查它是什麼物理頁碼,並且假設它已經在TLB緩存中並且被標記爲有效,則它返回到具有物理頁碼作爲緩存標記的緩存中,並且物理頁面偏移分爲緩存索引和緩存偏移量。然後用於檢查它是否已經存在於緩存中(如果沒有,則從磁盤加載)並最終返回值。

我希望這是正確的,並回答你的問題,我目前還在學習TLB的話題,所以請不要把這個答案完全正確。但是,它應該給你一個很好的概述。