gpt4 book ai didi

caching - 直接映射缓存如何工作?

转载 作者:行者123 更新时间:2023-12-02 23:43:31 24 4
gpt4 key购买 nike

我正在学习系统架构类(class),但我无法理解直接映射缓存的工作原理。

我看了好几个地方,他们以不同的方式解释它,这让我更加困惑。

我不明白的是标​​签和索引是什么,以及它们是如何选择的?

我的讲座的解释是:“地址分为两部分用于直接寻址 (32k) RAM 的索引(例如 15 位)地址、标签的其余部分被存储并与传入标签进行比较。 ”

这个标签从哪里来?它不能是 RAM 中内存位置的完整地址,因为它使直接映射缓存无用(与完全关联缓存相比)。

非常感谢。

最佳答案

好的。那么我们先来了解一下CPU是如何与缓存交互的。

内存分为三层(广义而言)- cache (一般由SRAM芯片制成),main memory (一般由DRAM芯片制成)和storage (通常是磁性的,如硬盘)。每当CPU需要来自某个特定位置的任何数据时,它首先搜索高速缓存以查看它是否在那里。高速缓冲存储器在内存层次上距离CPU最近,因此其访问时间最短(成本最高),因此如果CPU要查找的数据能够在那里找到,则构成“命中”,并且数据从那里获得供CPU使用。如果不存在,则数据必须从主存移动到缓存,然后才能被 CPU 访问(CPU 通常只与缓存交互),这会产生时间损失。

因此,为了查明数据是否在缓存中,需要应用各种算法。一种是这种直接映射缓存方法。为了简单起见,我们假设一个内存系统有 10 个可用的高速缓存存储位置(编号为 0 到 9),以及 40 个可用的主存储位置(编号为 0 到 39)。这张图概括了这一点:

enter image description here

有 40 个可用的主内存位置,但缓存中最多只能容纳 10 个。所以现在,通过某种方式,来自 CPU 的传入请求需要重定向到缓存位置。这有两个问题:

  1. 如何重定向?具体来说,如何以可预测的方式做到这一点,并且不会随着时间的推移而改变?

  2. 如果缓存位置已被一些数据填满,则来自CPU的传入请求必须识别其需要数据的地址是否与该位置存储数据的地址相同。

在我们的简单示例中,我们可以通过简单的逻辑进行重定向。假设我们必须将编号为 0 到 39 的 40 个主内存位置映射到编号为 0 到 9 的 10 个缓存位置,即内存位置 n 的缓存位置。可以是n%10 。因此 21 对应于 1,37 对应于 7,等等。这就成为索引

但是37、17、7都对应于7。因此为了区分它们,需要使用标签。就像索引是n%10一样,标签为int(n/10) 。所以现在 37, 17, 7 将具有相同的索引 7,但具有不同的标签,如 3, 1, 0 等。也就是说,映射可以完全由标签和索引这两个数据指定。

现在,如果请求来自地址位置 29,则该请求将转换为标记 2 和索引 9。索引对应于缓存位置编号,因此缓存位置编号。将查询 9 以查看它是否包含任何数据,如果包含,则关联的标记是否为 2。如果是,则 CPU 命中,将立即从该位置获取数据。如果它是空的,或者标签不是2,则意味着它包含与其他内存地址相对应的数据,而不是29(尽管它具有相同的索引,这意味着它包含来自像9、19这样的地址的数据, 39 等)。所以这是一个 CPU 未命中,数据来自位置号。主存中的29必须加载到缓存的位置9处(并且标记更改为2,并删除之前存在的所有数据),之后它将被CPU获取。

关于caching - 直接映射缓存如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15937002/

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