【问题标题】:CPU cache hit timeCPU 缓存命中时间
【发布时间】:2016-07-29 01:02:38
【问题描述】:

我正在阅读西班牙语版的“计算机组织和硬件/软件接口设计”,我遇到了一个我无法解决的练习。练习是关于内存层次结构的,特别是缓存。

练习说:

如果访问 N 路关联缓存中的标签需要 2.5 ns,访问数据需要 4 ns,命中/失败比较需要 1 ns,如果成功则返回处理器选择的数据需要 1 ns。

  1. 一次缓存命中的关键路径,是由判断数据访问是否成功的时间或时间给出的?

  2. 缓存的命中延迟是多少? (成功案例)。

  3. 如果对标签的访问时间和数据矩阵都是 3 ns,那么缓存中的成功延迟是多少?

我会尽量用我对记忆的了解来回答这些问题。

要访问保存在缓存中的数据,我要做的第一件事是使用某个地址的索引字段找到行。一旦内存系统找到该行,我需要将我的地址的标签字段与缓存的标签字段进行比较。如果它们匹配,那么它是一个命中,我必须返回数据,并在由地址的偏移字段确定的行中替换一定量的数据,然后将数据返回给处理器。

这意味着缓存需要 8.5 ns。但我一直在思考 chaches 可以做到的另一种方式:如果我得到所需的线(2.5 ns),那么现在我可以访问数据,并且并行地,我可以评估 iquality 的条件。因此,时间将为 4.5 ns。因此,其中之一是第二个问题的结果。以下哪个结果是正确的?

对于第一个问题,关键路径是耗时较长的操作;如果缓存需要4.5来获取数据,那么关键路径将是访问缓存中的标签-比较-返回数据。否则就是整个过程。

对于最后一个问题,如果关键路径是整个过程,则需要8ns。否则需要5ns(缓存中的标签访问,比较,返回数据)。

这是真的吗?那么完全关联缓存呢?和直接映射缓存呢?

问题是我不知道缓存首先做什么以及接下来或并行做什么。

【问题讨论】:

    标签: memory-management hardware cpu-cache


    【解决方案1】:

    如果文本没有说明它是否是单处理器系统/多处理器系统中的缓存或缓存并行执行的操作,您可以放心地假设它在缓存命中的情况下执行整个过程。本能地我认为访问数据并并行比较命中/未命中是没有意义的,如果是未命中怎么办?那么数据访问是不必要的,并且您增加了缓存未命中的延迟。

    那么在缓存命中的情况下,您会得到以下序列:

    1. 访问标签 (2.5ns)
    2. 比较命中/未命中 (1ns)
    3. 访问数据 (4ns)
    4. 将数据返回给请求它的程序(1ns)

    总计: 2.5 + 1 + 4 +1 = 8.5ns

    通过这个序列,我们(正如您现在已经知道的那样)得到以下问题的答案:

    1. 答案: 缓存命中的关键路径是访问数据并以 4+1=5 (ns) 的速度返回数据,以确定缓存查找是否成功: 2.5 + 1 = 3.5 (ns)

    2. 答案: 8.5ns

    3. 答案: 3 + 1 + 3 + 1 = 8ns

    如果我得到所需的行(2.5 ns),那么现在我可以访问数据,并且 同时,我可以评估不等式的条件。所以,时间 为 4.5 ns

    我不明白你是怎么得到 4.5ns 的?如果您假设数据访问和命中/失败比较是并行执行的,那么您将得到: 2.5 + 4 + 1 = 7ns,以防缓存命中。在缓存未命中的情况下,您还将获得 7ns,相比之下,如果您在知道它是否是缓存未命中之前不访问内存,那么您将获得 2.5 +1 = 3.5ns 的未命中延迟,这使得它非常无效尝试将命中/未命中比较与数据访问并行化。

    如果您假设标签的访问命中/未命中比较是与数据访问并行完成的,您会得到:4 + 1 = 5ns,以防缓存命中。

    显然,您不能在获取数据的同时返回数据,但如果您认为这是可能的并且您访问标签 and 进行比较 and 返回数据在访问数据的同时,你会得到:2.5 + 1 + 1 = 4.5ns。

    完全关联的缓存和直接映射缓存呢?

    N 路关联缓存(如问题所指)完全关联缓存。这意味着缓存块可以放置在缓存中的任何位置。因此它非常灵活,但这也意味着当我们要在缓存​​中查找内存地址时,我们需要将标签与缓存中的每个块进行比较,以了解我们要查找的内存地址是否已缓存。因此,我们的查找时间会变慢。

    在直接映射缓存中,每个缓存块只能进入缓存中的一个位置。该点是通过查看内存地址并计算地址的索引部分来计算的。因此,直接映射缓存可以提供非常快速的查找,但不是很灵活。根据缓存大小,缓存块可以经常更换。

    问题中的术语有点混乱,在谈到 cpu-caches 时,“标签”通常称为“标签”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 2011-09-17
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      相关资源
      最近更新 更多