【问题标题】:Set Associative Cache: Calculate size of tag?设置关联缓存:计算标签的大小?
【发布时间】:2014-08-01 13:09:54
【问题描述】:

我正在努力解决这个问题,我环顾四周,但所有类似的问题都比我的更高级,使用日志,它比我们在课堂上所做的更高级。问题来了:

假设您有一个 4 路集关联缓存,总共有 4096 字节的高速缓存内存,每个高速缓存行为 128 字节。多少 套有没有这个缓存?如果内存是字节可寻址的并且地址 是 16 位,那么标签使用了多少字节?

这是我目前所拥有的:

4096/128 = num lines

4096/128/4 = 8 = num sets(每组是 4-way set asoiative 中的 4 行)

所以,需要3位来选择设置(2^3=8)

我们为标签和单词留下了16-3 = 13 bits

因为问题说内存是字节可寻址的,我认为这意味着这个词是 8 位(= 1 字节)长,因此标签是 16-3-8 = 5 位长。

虽然我不太确定这一点。有没有人可以解决这个问题?

【问题讨论】:

    标签: caching cpu-cache


    【解决方案1】:

    如果内存是字节可寻址的

    这句话只是告诉我们主存储器是字节可寻址的,即,数据可以一次访问 8 位的架构,而与数据和地址总线的宽度无关。 p>

    这不会影响标签的位数。

    解决方案:

    四路集合关联

    总缓存内存 = 4096 字节

    块大小(缓存行)= 128 字节

    缓存行数 = 4096 / 128 = 32 行

    缓存中的集合数 = 32 / 4 = 8 个集合

    ╔════════════════════════════╗
    ║       16 bit address       ║
    ╠══════════╤════════╤════════╣
    ║ tag bit? │ 3 bits │ 7 bits ║
    ╚══════════╧════════╧════════╝
    

    字偏移 = log28 = 3 位

    设置偏移量 = log2128 = 7 位

    答案:

    标记位 = 16 - ( 3 + 7 ) = 6 位

    ╔══════════════════════════╗
    ║      16 bit address      ║
    ╠════════╤════════╤════════╣
    ║ 6 bits │ 3 bits │ 7 bits ║
    ╚════════╧════════╧════════╝
    

    【讨论】:

      【解决方案2】:
      • 缓存容量为 4096 字节表示 (2^12) 字节

      • 缓存中的每个块/行包含 (2^7) 个字节

      -因此缓存中的行数或块数为:(2^12)/(2^7)=2^5 缓存中的块或行

      • 由于它是 4 路组关联,每组包含 4 个块,缓存中的组数为: (2^5)/2^2 = 2^3 集合在那里。所以从这些我们知道,寻址集合偏移需要3位。

      • 由于它是字节可寻址的,要寻址字节偏移量,我们需要 7 位,因为我们在每个块中有 128(2^7) 个字节。

      • 剩余的 6 位将分配给标签。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-09-26
        • 2015-05-14
        • 1970-01-01
        • 1970-01-01
        • 2014-08-05
        • 2021-10-25
        • 1970-01-01
        相关资源
        最近更新 更多