MIPS N 路关联高速缓存

MIPS N-way associative cache

这是一个关于内存组织的问题,我一直很难理解,

假设我们有一个容量为 4096 字节的 N 路集相联缓存。这 地址的设置字段大小为 7 位,标记字段为 21 位。如果我们假设 缓存与 32 位处理器一起使用,那么块大小是多少(在 字节),缓存包含多少个有效位,以及什么是关联性 缓存?

所以,我们有以下关于处理器和缓存的信息 -

缓存大小 = 4096 B

地址位 = 32

索引位 = 7

标记位 = 21

根据以上信息,您可以快速计算出偏移字段所需的位数 -

偏移位 = 地址位 - 标记位 - 索引位

偏移位 = 32 - 21 - 7 = 4

偏移位 = 4

使用偏移位,可以找到块大小,2**偏移位

块大小 = 16 字节

接下来是缓存的关联性 我们知道索引位 = 7。 这意味着我们有 128 个块。每个块为 16 字节宽。

因此,缓存中的路数将为 -

路数=缓存大小/(块数*块大小)

方式数 = 2 因此结合律为 2。

关于有效位数。每个块都需要一个有效位。因此有效位数将是 -

有效位 = 128*2

有效位 = 256

这里有一些等式,了解这些等式有助于解决此类问题。

要知道的参数

C = cache capacity
b = block size
B = number of blocks
N = degree of associativity
S = number of set
tag_bits
set_bits (also called index)
byte_offset
v = valid bits

要知道的方程

B = C/b
S = B/N
b = 2^(byte_offset)
S = 2^(set_bits)

内存地址

|___tag________|____set___|___byte offset_|

现在回答问题

已知:

C = 4096 bytes
set_bits = 7
tag_bits = 21
32 bits address field

提问:

b?
N?
v?

只需从 32 bit field 中减去 tag_bitsset_bits 即可得到 byte_offset.

byte_offset = 32-21-7 = 4 bits

b = 2^4 = 16 bytes
S = 2^7 = 128 set
B = C/b = 4096/16 = 256
N = B/S = 256/128 = 2
v = B = 256 valid bits