缓存Mips中的偏移量

时间:2017-06-21 13:52:44

标签: cpu-architecture cpu-cache

我知道偏移是:块大小= 2 ^ n(偏移= n)。但我已经看到,当块大小= 8字节时,我们做:8 = 2 ^ n所以offset = n = 3位,这是正确的,但是当块大小= 1个字时,我看到1 = 2 ^ n(偏移= N = 0)。如果我们知道缓存有32位内存地址,我们不需要将字转换为字节吗? (因此我们有32位= 4字节,4 = 2 ^ n偏移在这种情况下是2)。

1 个答案:

答案 0 :(得分:0)

你做得对,直观的是,应该知道word在32位处理器中是4字节,在64位中是8字节。

byte offset也可以通过这种方式找到,假设您的地址大小为32位 byte_offset = 32-tag_bits-set_bits

为了解决这种问题,了解一些有用的参数和方程式是很好的。

要知道的参数

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_|