直接映射缓存命中/丢失

KWJ*_*104 5 memory caching computer-architecture

如果这是错误的堆栈交换,我很抱歉; 它似乎是最接近一个可能对计算机体系结构有帮助的地方.对于计算机系统中的家庭作业问题,我被问到:

Consider three direct mapped caches X, Y, and Z each interpreting an
8-bit address slightly differently according to the {tag:setIdx:byteOffset}
format speci?ed. For each address in the reference stream, indicate whether the
access will hit (H) or miss (M) in each cache.

                  C1       C2     C3
Address Formats: {2:2:4} {2:3:3} {2:4:2}

Address References in Binary: 00000010, 00000100...
Run Code Online (Sandbox Code Playgroud)

我应该说每个地址引用是否会导致命中或错过,但我不知道从哪里开始.

对于格式,我认为标签意味着高速缓存块中数据的标记,setIdx意味着用于表示高速缓存中不同块的位数,而偏移量是可以选择的块内的特定字节.

我觉得我不明白什么是打击或错过.我认为有三种类型:强制,容量和冲突.如果我不知道缓存中已有什么,我怎么知道哪个是强制性的错过?在给定标签格式的情况下,如何判断缓存的容量?

感谢任何提示或提示.

DON*_*NIC 3

以C1为例,它有2位用于setIdx,4位用于byteOffset。

所以这个缓存将有 2^2 = 4 个块(00、01、10 和 11),每个块将有 2^4 = 16 个字节。

地址引用现在可以拆分为 C1 格式:{00 00 0010}

假设默认情况下缓存为空,则第一次查找将导致未命中。然而,缓存现在将加载带有标签“00”的块“00”。

下一个引用{00 00 0100}将查找块“00”,它看到标签也是“00”,我们命中了。