caching - 为什么英特尔使用虚拟索引物理标记缓存而不是 VIVT 或 PIPT?

标签 caching memory intel cpu-architecture cpu-cache

我不确定,但如果我记得正确的 intel 使用 VIPT 缓存,我想知道这个选择的原因,为什么它比 VIVT 或 PIPT 更好,它有什么优点,也许有什么缺点。谢谢你。

最佳答案

确切的设计决策可能没有公布,但总的来说,VIPT 的好处是:

  • 虚拟索引意味着您可以在 TLB 中查找翻译之前(或与之并行)开始从缓存中读取集合。这意味着普通情况查找将比物理索引缓存快得多,在物理索引缓存中,您只能在完成翻译后查找缓存。
  • 物理标记允许您避免别名 - 在单个虚拟地址映射到多个物理地址的情况下(例如,在虚拟地址中重叠的不同线程),或者多个虚拟地址映射到同一物理线路(例如线程间通信)。这两种情况都可能导致虚拟标记缓存的一致性丢失,并且需要复杂的检测机制。
  • 关于caching - 为什么英特尔使用虚拟索引物理标记缓存而不是 VIVT 或 PIPT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22570526/

    相关文章:

    C#/XNA - 将对象加载到内存 - 它是如何工作的?

    英特尔 CPU 上的 OpenCL 管道

    android - 我无法在 macOS Sierra 上安装英特尔 HAXM

    java - 如何让 Reactor Core 的 Flux 缓存工作

    rest - 亚马逊 S3 : Cache-Control and Expiry Date difference and setting trough REST API

    php - 删除 Laravel 中的缓存文件

    c++ - Eigen 与 -O3 警告 : argument 1 value ‘X’ exceeds maximum object size Y

    javascript - 如何衡量 HTTP 缓存命中率?

    c++ - 为什么 operator* 不调用构造函数?

    assembly - Ivy Bridge上的RDRAND指令的延迟和吞吐量是多少?