双向关联缓存寻址需要多少位?

时间:2015-12-16 01:43:35

标签: caching mips computer-architecture

下面的问题令我感到困惑,因为它与我见过的其他例子并不相似。

对于128字节存储器和32字节双向设置关联回写,具有4字节块的写分配数据高速缓存和LRU(最近最少使用)替换策略,显示块偏移的存储器地址细分,设置索引和标记字段。每个字段需要多少位?

我总共提出了寻址所需的7位。在这7位中,块偏移需要2位,设置索引需要2位,标签需要3位。这是对的吗?

1 个答案:

答案 0 :(得分:3)

首先让我们做一些数学运算:

  • 您需要7位来处理128字节的内存。
  • 缓存有32个字节,每个块有4个字节。因此,您的缓存可以容纳32 bytes / 4 bytes_per_line行,产生8行。由于高速缓存是双向组关联的,因此每个块可以使用每组中的任何一行。所以你有4组,每组2行。

因此:

  • 您需要2个字节来处理块
  • 中的给定偏移量
  • 您需要2个字节来处理给定的集合
  • 其余3位用于标记

每个地址的编码都是:

  tag(3 bits) | set(2 bits) | offset(2 bits)