gpt4 book ai didi

performance - clflush 是否也会删除 TLB 条目?

转载 作者:行者123 更新时间:2023-12-02 10:50:36 25 4
gpt4 key购买 nike

clflush 1 还刷新关联的 TLB 条目吗?我认为不会,因为 clflush 在缓存行粒度上运行,而 TLB 条目存在于(更大的)页面粒度 - 但我准备好感到惊讶。

<小时/>

1 ...或 clflushopt 尽管人们可以合理地假设它们的行为是相同的。

最佳答案

我认为可以肯定地认为不会;将 invlpg 烘焙到 clflush 听起来像是一个疯狂的设计决策,我认为没有人会做出这样的决定。您经常希望使页面中的多行无效。也没有明显的好处;刷新 TLB 并不会让实现数据缓存刷新变得更容易。

即使只是删除最终的 TLB 条目(不一定使任何页目录缓存无效)也会比 invlpg 弱,但仍然没有意义。

所有现代 x86 都使用具有物理索引/标记的缓存,而不是虚拟的。 (VIPT L1d 缓存实际上是具有索引自由转换的 PIPT,因为它是从属于页面内偏移量一部分的地址位获取的。)即使缓存是虚拟的,使 TLB 条目无效也需要使虚拟缓存无效,但反之则不然。 .

<小时/>

根据 IACA 的说法,clflush 在 HSW-SKL 上仅为 2 uops,在 NHM-IVB 上仅为 4 uops(包括微融合)。所以它甚至没有在英特尔上进行微编码。

IACA 没有对 invlpg 建模,但我认为它更多的是 uops。 (而且它是有特权的,所以测试并不是完全微不足道的。)HSW 之前的那些额外的微指令很可能是为了 TLB 失效。

我没有任何有关 AMD 的信息。

<小时/>

invlpg 具有特权这一事实是我们期望 clflush 不会成为它的超集的另一个原因。 clflush 没有特权。大概只是出于性能原因,invlpg 仅限于环 0。

但是invlpg不会出现页面错误,因此用户空间可以使用它来使内核TLB条目无效,从而延迟实时进程和中断处理程序。 (wbinvd 由于类似的原因而享有特权:它非常慢,而且我认为不可中断。)clflush 会对非法地址产生错误,因此它不会打开拒绝-服务漏洞。不过,您可以clflush共享VDSO页面。

除非出于某种原因,CPU想要在用户空间中公开invlpg(通过将其烘焙到clflush),否则我真的不明白为什么有供应商会这么做。

<小时/>

随着 future 计算中的非 volatile DIMM 的出现,任何 future 的 CPU 都不太可能在一系列内存上执行 clflush 时变得超慢。您可能希望大多数使用内存映射 NV 存储的软件都使用 clflushopt,但我希望 CPU 供应商也能尽可能快地实现 clflush

关于performance - clflush 是否也会删除 TLB 条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54204025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com