确定缓存的详细信息

时间:2015-12-15 23:44:50

标签: c caching associative

  

您的机器具有L1缓存和具有以下属性的内存。

     
      
  • 内存地址空间:24位
  •   
  • 缓存块大小:16字节
  •   
  • 缓存关联性:直接映射
  •   
  • 缓存大小:256字节
  •   

我被要求确定以下内容:1。标记位的数量。 2.现金指数的位数。 3.高速缓存大小的位数。

  1. 标记位= m - (s + b)

    m = 24.s = log2 S,S = C /(B * E)。由于直接映射,E = 1。所以S = 256/16 = 16.s = log2 16 = 4. B = 16(高速缓存块大小)b = log2 B;这是log2 16 = 4.所以s = 4,b = 4,m = 24。 t = 24-(4 + 4)= 16个总标签位。

  2. 我不知道如何解决这个问题。

  3. 我相信缓存大小的位数只是C *(num bits / byte)= 256 * 8 = 2048.

  4. 任何人都可以帮我弄明白2.并确定1和1中的逻辑。 3.是对的吗?

1 个答案:

答案 0 :(得分:1)

1)这对于m = 32是正确的(不是24?)。

2)索引位数:当它直接映射时在高速缓存中寻址块的位数,因为它标识了该集合(在这种情况下仅由一个块组成)。如果是2路,则索引需要少一点(并添加到标签位)。对于这个问题,由于有16个集合,您需要16个索引位,可以用4个索引位表示。

3)如何解释这个问题尚不完全清楚。我会把它理解为寻址缓存所需的位数,在这种情况下是4?如果确实如此,假设缓存中的位数,则必须为解决方案添加16 * 16位标记位。