无处不在的缓存,究竟有何作用?
因此,在 L1 高速缓存中会有一个新标签,其余的处理器体系结构将接管,尽数浏览其他高速缓存级别(如有必要,一直返回主存储驱动器)以查找该标签的数据。但是要在 L1 缓存中为该新标签腾出空间,必须将其他内容始终引导到 L2 中。 这导致了几乎恒定的数据改组,所有这些都只需要几个时钟周期即可实现。实现此目的的唯一方法是在 SRAM 周围构建一个复杂的结构,以处理数据管理。换句话说,如果一个 CPU 内核仅由一个 ALU 组成,则 L1 缓存会简单得多,但是由于 ALU 有数十个(其中许多将处理两个指令线程),因此缓存需要多个连接来保持一切都在进行中。 您可以使用免费程序(例如 CPU-Z)来检查为自己的计算机供电的处理器的缓存信息。但是所有这些信息意味着什么?一个重要的元素是关联的标签集。这与规则有关,这些规则取决于由系统内存中的数据块复制到缓存的方式。 上面的缓存信息适用于 Intel Core i7-9700K。它的 1 级高速缓存每个都分成 64 个小块,称为集合,并且每个小块进一步划分为高速缓存行(大小为 64 字节)。集相关意味着将来自系统内存的数据块映射到一个特定集合中的高速缓存行上,而不是自由地在任何地方进行映射。 8 向告诉我们,一个块可以与一组中的 8 条缓存行关联。关联性级别越高(即“方式”越多),则当 CPU 搜寻数据时,命中高速缓存的机会就越大,并且减少由高速缓存未命中引起的损失。缺点是它增加了复杂性,增加了功耗,还可能降低性能,因为有更多的缓存行要处理一个数据块。 高速缓存复杂性的另一方面在于如何在各个级别上保留数据。规则是在包含策略中设置的。例如,英特尔酷睿处理器具有完全包含的 L1 + L3 缓存。例如,这意味着第 1 级中的相同数据也可以在第 3 级中。这似乎在浪费宝贵的缓存空间,但是好处是,如果处理器在搜索低级标签时出错,数据就会丢失,而不需要遍历更高的级别来找到它。 在同一处理器中,L2 缓存是非包含性的:存储在其中的任何数据都不会复制到任何其他级别。这样可以节省空间,但确实会导致芯片的存储系统必须搜索 L3 以找到丢失的标签(实际上总会比这个更大一些)。受害者缓存与此类似,但是它们习惯于存储从较低级别推出的信息 - 例如,AMD 的 Zen 2 处理器使用 L3 受害者缓存,该缓存仅存储来自 L2 的数据。 (编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |