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_bits
和 set_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
这是一个关于内存组织的问题,我一直很难理解,
假设我们有一个容量为 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_bits
和 set_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