我想了解關於緩存的整個結構和概念。當我們使用TLB將虛擬地址快速映射到物理地址時,如果我們使用虛擬索引的物理標記的L1高速緩存,可以將虛擬地址轉換與L1高速緩存訪問重疊嗎?翻譯旁視緩衝區(TLB)與L1緩存到CPU相同嗎?那麼,我可以將虛擬地址轉換與L1緩存訪問重疊嗎?
2
A
回答
3
是的,這是一個VIPT緩存的整點。
由於虛擬地址和物理一場比賽在低位(頁面偏移是一樣的),你不需要給他們翻譯。大多數VIPT高速緩存解決此建(注意,這限制了臺,你可以使用數字,但可以改爲種植它們的結合),所以你可以使用較低位進行查找在緩存中,你發現了翻譯,甚至前TLB。
這是關鍵的,因爲TLB查找自身花費時間,和L1高速緩存通常被設計爲提供儘可能多的BW和低延遲儘量避免失速經常備受更快的執行。
如果您錯過了TLB並承受更大的延遲(無論是某個level2 TLB還是上帝禁止的頁面遍歷),它並不重要,因爲在比較標記之前,您無法對緩存查找進行任何操作,但是您在TLB命中+緩存命中情況下保存的幾個週期應該是許多應用程序的常見情況,因此通常認爲值得優化和對齊管道。我的[調查紙張上的TLB]
+0
有(如你所示)處理VIPT緩存中別名的方法,這些緩存不是PIPT。通過方式預測,可以增加翻譯延遲,同時仍然使用物理標籤;使用部分虛擬標籤可允許進一步的翻譯延遲。 (再有就是雙標籤的選項,這可能會在技術上仍然被認爲VIPT尤其是在物理性的標籤是由處理器使用,並且不只是相干系統)。當然,這種樂趣的複雜性很可能超出了這個問題的範圍。 – 2014-12-02 23:50:27
相關問題
- 1. L1緩存與主內存
- 2. 計算虛擬內存頁表和翻譯旁視緩衝區
- 3. L1/2緩存問題
- 4. l1緩存和l2緩存有什麼區別?
- 5. TLB翻譯vs緩存
- 6. CUDA:FERMI上的紋理緩存是否與L1緩存分開?
- 7. L1數據緩存配置
- 8. DataNucleus將 - L1高速緩存,分離
- 9. /dev/shm中的內存可以緩存在CPU緩存中嗎?
- 10. GPU中共享內存和L1緩存有什麼區別?
- 11. 編寫轉換旁視緩衝區
- 12. 我可以在偏移量處翻轉SDL緩衝區嗎?
- 13. Kepler全局內存訪問和L1緩存
- 14. 我可以將char *緩衝區轉換爲對象類型嗎?
- 15. 如何查找L1和L2緩存?
- 16. 從L1緩存驅逐L2驅逐
- 17. __threadfence()和L1高速緩存一致性
- 18. CUDA編程 - L1和L2高速緩存
- 19. 預填充Hibernate L1高速緩存
- 20. 查找緩存L1和L2帶寬
- 21. GPU L1高速緩存一致性
- 22. 我可以緩存Apple地圖嗎?
- 23. 將ID3D11Texture2D轉換爲內存緩衝區
- 24. RSA_private_decrypt/RSA_public_encrypt中的緩衝區可以重疊嗎?
- 25. 限制緩衝區緩存
- 26. Android可以緩存緩存清單HTML5視頻離線嗎?
- 27. 我需要緩衝區嗎?
- 28. CPU緩存條目是否包含物理或虛擬地址?
- 29. 與緩衝區
- 30. 你可以緩存UIViewControllers嗎?
參見第2.1節(https://www.academia.edu/29585076/A_Survey_of_Techniques_for_Architecting_TLBs)。它討論了VIPT/PIPT/VIVT/PIVT設計及其折衷。通常使用VIPT設計,因爲它允許重疊VA轉換與L1訪問。雖然VIVT設計可能會減少TLB訪問,但它受到同義詞問題的困擾。 – user984260 2017-07-20 09:45:32