如何使用块大小获取缓存和主存?

时间:2019-05-29 03:33:47

标签: cpu-architecture cpu-cache

我正在学习定向映射缓存的概念,但是我不了解如何通过使用块大小来获取缓存内存大小和主内存大小。 (单位为字节。)给定值是2 ^ 3个字= 2 ^ 5个字节的块大小,4位标签(0000〜1111)和3位索引(000〜111)。

问题>>

  1. 每个缓存和主内存的大小是多少?
  2. 我们在每个数据部分中插入哪个地址?

enter image description here

我已经尝试过将部件标签和缓存索引分开。我在3个高阶位上插入标签,并在剩余空间上插入缓存索引(29位)。我得到了主内存大小4GB和缓存大小2 ^ 29字节。但我认为出了点问题。我觉得我不明白这个概念。

1 个答案:

答案 0 :(得分:1)

您的回答是错误的,因为您假设地址是32位并且可以字节寻址,因此内存大小为4GB。这是不正确的,我们必须首先计算这些值。

8个字= 32个字节=块大小
所以offset = 3位(在一个块中寻址8个字)
和字大小= 4字节/字(32字节/ 8字)

我们现在有一个地址的宽度:4位(标签)+ 3位(索引)+ 3位(偏移)= 10位。

具有10位地址,主存储器为2 ^ 10字= 2 ^ 12字节= 4kB

缓存具有8个块(3位索引),每个块具有32个字节,缓存大小= 8 * 32字节= 256B。