【发布时间】:2016-07-29 01:02:38
【问题描述】:
我正在阅读西班牙语版的“计算机组织和硬件/软件接口设计”,我遇到了一个我无法解决的练习。练习是关于内存层次结构的,特别是缓存。
练习说:
如果访问 N 路关联缓存中的标签需要 2.5 ns,访问数据需要 4 ns,命中/失败比较需要 1 ns,如果成功则返回处理器选择的数据需要 1 ns。
一次缓存命中的关键路径,是由判断数据访问是否成功的时间或时间给出的?
缓存的命中延迟是多少? (成功案例)。
如果对标签的访问时间和数据矩阵都是 3 ns,那么缓存中的成功延迟是多少?
我会尽量用我对记忆的了解来回答这些问题。
要访问保存在缓存中的数据,我要做的第一件事是使用某个地址的索引字段找到行。一旦内存系统找到该行,我需要将我的地址的标签字段与缓存的标签字段进行比较。如果它们匹配,那么它是一个命中,我必须返回数据,并在由地址的偏移字段确定的行中替换一定量的数据,然后将数据返回给处理器。
这意味着缓存需要 8.5 ns。但我一直在思考 chaches 可以做到的另一种方式:如果我得到所需的线(2.5 ns),那么现在我可以访问数据,并且并行地,我可以评估 iquality 的条件。因此,时间将为 4.5 ns。因此,其中之一是第二个问题的结果。以下哪个结果是正确的?
对于第一个问题,关键路径是耗时较长的操作;如果缓存需要4.5来获取数据,那么关键路径将是访问缓存中的标签-比较-返回数据。否则就是整个过程。
对于最后一个问题,如果关键路径是整个过程,则需要8ns。否则需要5ns(缓存中的标签访问,比较,返回数据)。
这是真的吗?那么完全关联缓存呢?和直接映射缓存呢?
问题是我不知道缓存首先做什么以及接下来或并行做什么。
【问题讨论】:
标签: memory-management hardware cpu-cache