2014-03-06 37 views
0

我在我的书中直接映射缓存的例子。内存地址是否与缓存块中的数据分开?

规格为: 假设32位字,32位地址,1字块大小(b),8字容量(C)。 这意味着块数(B)= C/b = 8和集合数(S)= B = 8

我很困惑,因为我认为每个集合只包含1个字(b),因此32位。但是在这幅图中,它显示数据是32位,标签是27位。这给我们总共59位比块大小(b)大的位。

这是否意味着地址保存在其他地方并且只有数据保存在集合中?

enter image description here

回答

1

作为您的图片显示,该数据部分32B(如你所说,每个集合中只有1个字)。

标记是每个集合中的一个必需部分,它允许我们知道请求地址是否位于缓存中(“命中”)。你的照片说这个标签的大小是27位。 (59位)简单地追踪构建该缓存需要多少实际SRAM(1个有效位+27个标签位+32个数据位)* 8组= SRAM的480位。

但是,不要因为认为标签是数据块的一部分而让自己感到困惑。它可以(并且经常)位于芯片的其他地方,即使在概念上它与该组的数据部分耦合。

我还想添加(并希望不会进一步混淆主题),而可以像他们所示的那样构建一个缓存(SRAM中的标记,有效位和数据,这意味着它将会非常密集),你可能实际上并不想这样构建它!数据将存储在SRAM中,但我怀疑有效位和标签更可能位于触发器中的其他位置。访问速度快得多!你应该和你的老师讨论缓存通常是如何构建的,以及在SRAM和触发器中使用标签和有效位的问题。