我想了解关于缓存的整个结构和概念。当我们使用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