模拟卷 组成原理 访存过程 解答题
第 46 题

(11 分)某按字节编址,主存容量为 1MB,采用两路组相联方式(每组仅有两块)的 Cache 容量为 64KB,每个数据块为 256B。已知访问开始前第 2 组(组号为 1)的地址阵列内容如下图所示(第一列为组内块号):

Cache 采用 LRU 替换策略。

(1) 分别说明主存地址中标记 (Tag)、组号和块内地址三部分的位置和位数。 (2) 若 CPU 要顺序访问地址为 20124H、58100H、60140H 和 60138H 等 4 个主存单元。上述 4 个数能否直接从 Cache 中读取,若能,请给出实际访问的 Cache 地址。第 4 个数访问结束后,上图中的内容将如何变化。 (3) 若 Cache 完成存取的次数为 5000 次,主存完成存取的次数为 200 次。已知 Cache 存取周期为 40ns,主存存取周期为 160ns,求该 Cache-主存系统的访问效率。(注:默认为 Cache 与主存同时访问)

访存过程

[tag_link]

**【解析】** 本题考查 Cache 与主存的映射、替换算法。在采用全相联和组相联映像方式从主存向 Cache 传送一个新块,而 Cache 中的空间已被占满时,就需要把原来存储的一块替换掉。LRU 算法(最近最少使用法)是把 CPU 近期最少使用的块作为被替换的块。

(1)按字节编址,每个数据块为 256B,则块内地址为 8 位;主存容量为 1MB,则主存地址为 20 位;Cache 容量为 64KB,Cache 共有 256 块,采用两路组相连,所以 Cache 共有 128 组( ),则组号为 7 位;标记(Tag)的位数为 位。主存和 Cache 的地址格式如下表所示:

注意:求解标记、组号和块内地址的方法如下: ① 块内地址位数 ② 组号位数 ③ 标记号

(2)将 CPU 要顺序访问的 4 个数的地址写成二进制,可以发现:

  • ,组号为 1,是第 2 组的块,根据题中阵列内容的图可知,现在 Cache 内有这个块,第 1 次访问命中,实际访问的 Cache 地址为 0124H。

  • ,组号为 1,是第 2 组的块,根据题中阵列内容的图可知,现在 Cache 内有这个块,第 2 次访问命中,实际访问的 Cache 地址为 0100H(注意:组内块号并不包含在 Cache 地址中,详情可参考唐朔飞的教材)。

  • ,组号为 1,是第 2 组的块,但 Cache 中无此块,第 3 次访问不命中,根据 LRU 算法,替换掉第 0 块位置上的块,变化后的地址阵列如下表。

  • ,组号为 1,是第 2 组的块,与上一个地址处于同一个块,此时这个块已调入 Cache 中,所以第 4 次访问命中,实际访问的 Cache 地址为 0138H。第 4 个数访问结束时,地址阵列的内容与刚才相同。

(3)Cache 的命中率

主存慢于 Cache 的倍率

访问效率