2016-07-29 74 views
0

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

演习说:

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

  1. 高速缓存命中的关键路径是由确定是否有成功或时间数据访问的时间给出的?

  2. 什么是缓存命中延迟? (成功案例)。

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

我会尽量回答所有我知道的记忆问题。

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

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

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

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

这是真的吗?和一个完全相关的缓存?和一个直接映射缓存?

问题是我不知道缓存先做什么以及下一步或并行执行什么操作。

回答

1

如果文本没有提及它是单处理器系统/多处理器系统中的缓存还是缓存并行执行的内容,则可以安全地假定它在执行缓存命中时执行整个过程。本能地说,我认为访问数据并比较并行比较命中是没有意义的,如果这是一个错误呢?那么数据访问是不必要的,你会增加缓存未命中的延迟。

,那么你在缓存命中的情况下,应该按以下顺序:

  1. 访问标签(为2.5ns)
  2. 比较命中/缺失(纳秒)
  3. 访问数据(为4ns)
  4. 返回数据到程序请求它(纳秒)

总计: 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纳秒),那么现在我可以访问日数据,并且并行 ,我可以评估不平等状况。所以,时间 将4.5纳秒

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

如果您认为访问标签命中/未命中比较与数据访问并行进行,则会得到:4 + 1 = 5ns(如果发生缓存命中)。

显然,你不能在并行与获取数据返回的数据,但如果你想像这将是可能的,您访问的标签做对比平行存取数据,那么你会得到回报的数据:2.5 + 1 + 1 = 4.5ns。

一个完全相关的缓存?和一个直接映射缓存?

A N路关联高速缓存(作为问题指的是)全相联高速缓存中。这意味着缓存块可以放置在缓存中的任何位置。因此它非常灵活,但这也意味着当我们想要在高速缓存中查找内存地址时,我们需要将标记与高速缓存中的每个块进行比较,以了解我们要查找的内存地址是否被缓存。因此我们得到较慢的查找时间。

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

问题中的术语有点令人困惑,在标注cpu缓存时,“标签”通常被称为“标签”。

+1

优秀的答案!谢谢 –

相关问题