看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《charliejack (charliejack)》之銘言: : (1) : 有TLB : Cache 使用virtually memory but phisical tagged cache : 請問他是怎麼做Logic -> Phisical的轉換的 (1) virtually indexed, physically tagged cache virtual address ┌──────────────────┐ └──────────────────┘ ↓ virtual page number | page offset ┌───────────┬──────┐ └───────────┴──────┘ | | ↓ ↓ TLB tag, TLB index cache index, block offset ┌───────┬───┐ ┌────┬─┐ └───────┴───┘ └────┴─┘ | | ↓ | TLB |用virtual address的這段cache index 用上面這段資訊, |可找到要讀取cache的哪一個entry (HIT時)可在TLB的某entry找到對應的data 就是 ↓ physical address tag —————→CACHE ↑ 把上面這個 tag 拉去跟 cache 的 tag field 比較, 由 virtual index, physical address tag 來取得真正的 data。 優點就是這樣只要一產生 virtual address 就可以馬上去讀 cache 的某 entry, 然後再用 TLB 查得的 physical address tag 來看 cache 是否 hit。 缺點呢, 如果說 cache 是用 direct-mapped, 那很明顯cache的size會有限制, 就是不能超過 page offset (即page size的大小) 的 bit 數, 畢竟它是用來找 cache entry 的, 超過的話後果可以想像吧 XD 找不到 entry; (似乎特意用 virtual 和 physical address 都相同的 page offset 部分?) 但如果用 >1 associativity 又可以解決這個缺點, 因為 entry 總數不變的情況下, 2way-associative CACHE size 可以變兩倍。 而下面法2, 就是白算盤裡的方法, 要等到 TLB 把 physical address 轉出來才能去 cache 讀 data, 效能就差了一點。 : (2)普通狀況下的TLB是指 : logic page 到TLB -> change to phisical address : 在到 cache 裡面 尋找 phisical address -> 找到相對應的Data : So 在這裡的TLB 是Virtual->Physical cache是 Phisical->Data : 這樣應該沒錯吧@@? : Sorry 之前問過 : 還是不是很懂~"~ : 有沒有人願意解答0.0...... 順便再補充一下 virtually addressed, virtually tagged cache; 它在讀取資料的過程中就不需要 TLB 的存在了... TLB 的用意就是 page table 的 cache, 現在沒 address translation 所以... 優點: 超快, virtual address 一出來馬上可以去 cache 找 data 看有沒有 hit 缺點: 1) page-level protection: 就少了原本從 virtual address translatoin 到 physical address 的保護機制, (如limit register), 要克服這個問題就要想辦法增加額外的記錄資訊了。 2) 恐龍本裡有提到, 這樣在 process switch 時, cache 都要 flush 掉, 因為不同的 processes 可能用到相同的 virtual address, 但實際上要對到的是不同個 physical addresses; 解決方法是加上 pid。 3) 就是 aliasing, OS 跟 user program 可能用了兩個不同的 virtual addresses, 不過卻是對到同一筆 physical address 的資料, 因此 virtual cache 裡可能會有兩個 copy, 假設 OS 去修改這筆實體資料, user program 就會讀到錯誤的資料; 解決方法就是用 physical cache。 以上是我的心得 @@ 希望沒有誤導到人 XD 有錯請指正 ^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.160.131.80
max1147:推用心 02/15 02:18
※ 編輯: BenLinus 來自: 1.160.131.80 (02/15 06:33)
charliejack:感謝 我懂了概念了XD 02/15 10:10
dy957:請問virtually memory but phisical tagged cache 的 02/15 22:35
dy957:TLB沒有被移除嗎? 02/15 22:36
BenLinus:沒有喔, 全virtual才不會用TLB 02/15 22:54
dy957:喔喔! 謝謝~ 02/15 23:04
karaokstar:原PO超強 整理得很好 推 02/15 23:10