如何知道缓存设计中块“section / offset”的大小?

时间:2016-11-27 15:28:44

标签: memory cpu-architecture cpu-cache

我无法理解如何确定标签/索引/偏移位,因为问题的措辞令我感到困惑。为了澄清,架构中的一个词是64位。 这是第一个问题:

  

缓存对于提供高性能内存层次结构非常重要   到处理器。下面是64位内存地址引用列表,   作为单词地址给出。 0x03,0xb4,0x2b,0x02,0xbf,0x58,0xbe,   0x0e,0xb5,0x2c,0xba,0xfd

     

对于这些引用中的每一个,标识二进制字地址,即   给定直接映射缓存的标记,索引和偏移量   双字块,总大小为8个块。同时列出每个   假设缓存最初为空,则引用是命中或未命中。

该解决方案表明偏移量为1比特,因为它需要1比特来表示2个不同的块“字”。所以我试图将块分成2个部分(偏移)。我怎么知道你应该将块分成单词(为什么不是字节)?显然,块中的部分确定了表示块部分所需的偏移位数。但是2个字是16个字节,那么为什么不将块分成16个部分来表示字节而不是2个部分来表示字?如果块被分成16个部分(对于2个字的所有字节),是否需要4个偏移位来确定块中的16个不同字节部分?我很难知道如何确定块部分应该有多大。问题是说“双字块”或许意味着我应该将块视为分裂成单词吗? 2字块是否与16字节块相同? (一个字是8个字节)

以下问题提到了字节寻址,这令我感到困惑。它是如何相关的?:

  

按照惯例,缓存根据数据量命名   包含(即4 KiB高速缓存可以容纳4 KiB数据);然而,缓存   还需要SRAM来存储标签和有效位等元数据。对于   在本练习中,您将了解缓存的配置如何影响   实现它所需的SRAM总量以及   缓存的性能。对于所有部分,假设缓存是   字节可寻址,地址和字是64位。

     

计算实现32 KiB所需的总位数   使用双字块缓存。

两个问题均来自David Patterson和John L Hennessy的计算机组织与设计

1 个答案:

答案 0 :(得分:2)

  

我如何知道您应该将块拆分为单词(为什么不是字节)?

因为你有字地址,而不是字节地址。即你的记忆是可以用这种形式的地址进行单字寻址的。

要从您的字地址获取字节地址,您需要附加3个零。

  

2字块是否与16字节块相同?

是的,缓存行大小为16个字节。