相关疑难解决方法(0)

L2 TLB未命中后会发生什么?

我很难理解当翻译旁视缓冲区的前两个级别导致未命中时会发生什么?

我不确定特殊硬件电路中是否出现"页面行走",或者页表是否存储在L2/L3高速缓存中,或者它们是否只存在于主存储器中.

cpu performance x86 cpu-architecture tlb

19
推荐指数
1
解决办法
2135
查看次数

Ice Lake 的 48KiB L1 数据缓存的索引是如何工作的?

英特尔手动优化(2019 年 9 月修订版)显示了用于 Ice Lake 微架构的 48 KiB 8 路关联 L1 数据缓存。

Ice Lake 的 48KiB L1 数据缓存及其 8 路关联性 1软件可见的延迟/带宽会因访问模式和其他因素而异。

这让我感到困惑,因为:

  • 有 96 组(48 KiB / 64 / 8),不是二的幂。
  • 集合的索引位和字节偏移的索引位相加超过 12 位,这使得4KiB 页面无法使用便宜的 PIPT-as-VIPT-trick

总而言之,缓存的处理成本似乎更高,但延迟仅略有增加(如果确实如此,则取决于英特尔对该数字的确切含义)。

有一点创造力,我仍然可以想象一种快速索引 96 组的方法,但第二点对我来说似乎是一个重要的突破性变化。

我错过了什么?

x86 intel cpu-architecture cpu-cache micro-architecture

7
推荐指数
2
解决办法
234
查看次数

VIPT缓存:TLB和缓存之间的连接?

我只是想澄清这个概念,并且可以找到足够详细的答案,这些答案可以说明一切在硬件中的实际效果.请提供任何相关细节.

在VIPT高速缓存的情况下,存储器请求并行发送到TLB和高速缓存.

从TLB我们得到了经过翻译的物理地址.从缓存索引中我们得到标签列表(例如,来自属于一组的所有缓存行).

然后将翻译的TLB地址与标签列表匹配以找到候选者.

  • 我的问题是这次检查在哪里进行?
    • 在缓存中?
    • 如果不在Cache中,还有哪些地方?
  • 如果在Cache中执行检查,则
    • 是否有从TLB到Cache模块的边带连接,以获得与标签地址进行比较所需的翻译物理地址?

请问某人"实际上"如何实现这一点以及Cache模块和TLB(MMU)模块之间的连接?

我知道这依赖于具体的架构和实现.但是,当有VIPT缓存时,您知道的实现是什么?

谢谢.

caching cpu-architecture tlb cpu-cache mmu

4
推荐指数
1
解决办法
1169
查看次数

TLB 是否包括在内?

TLB 层次结构是否包含在现代 x86 CPU(例如 Skylake 或其他 Lakes)上?

例如,prefetchtn将数据带到级别缓存n + 1以及 DTLB 中的相应 TLB 条目。它也会包含在 STLB 中吗?

x86 assembly cpu-architecture tlb

2
推荐指数
1
解决办法
318
查看次数