Memory 计算机体系结构-内存层次结构

Memory 计算机体系结构-内存层次结构,memory,architecture,hierarchy,Memory,Architecture,Hierarchy,所以我有个问题,我不知道该怎么办。我将写下问题以及我如何理解它: 以下内存地址由正在运行的程序连续使用(从左到右,如中所示) 十进制)。请注意,以下是内存地址而不是块编号: 100、40、360、116、224、18、440、100、1024、44、168、40、104 在以下每个缓存结构中,计算命中数、未命中数和最终值 存储在每个缓存位置(最后显示每个缓存块中的内存块)。每个 字为4字节,内存大小为2字节 (a) 具有八个字块的直接映射缓存,缓存的总大小为32个字的数据 问题还有更多的部分,但

所以我有个问题,我不知道该怎么办。我将写下问题以及我如何理解它:

以下内存地址由正在运行的程序连续使用(从左到右,如中所示) 十进制)。请注意,以下是内存地址而不是块编号: 100、40、360、116、224、18、440、100、1024、44、168、40、104

在以下每个缓存结构中,计算命中数、未命中数和最终值 存储在每个缓存位置(最后显示每个缓存块中的内存块)。每个 字为4字节,内存大小为2字节 (a) 具有八个字块的直接映射缓存,缓存的总大小为32个字的数据

问题还有更多的部分,但是我只需要帮助就可以开始了,剩下的我可以自己做。所以基本上我们得到了内存地址。我们的缓存大小为32个字和8个字/块,因此缓存中有4个块。我怎么不明白内存大小为2kbyte怎么办?我是不是只要除以4就可以得到内存中的块数?或者我必须把内存地址除以4吗

我怎么不明白内存大小为2kbyte怎么办

内存大小与问题的这一部分无关

您可以将内存细分为块。每个缓存块是8个字(32字节)。您可以缓存32个字,这是表示4个块的循环方式


在每个块旁边写入地址范围。然后,开始播放CPU并使用列出的内存地址,跟踪命中的块以及该块是否应在缓存中。

因此基本上我只需执行100 mod 4=0表示写入缓存的块0。然后我取下一个地址,重复并写入相应的缓存块?不,我认为正确的查看方式是地址0-31是第一个内存块,地址32-63是第二个内存块,等等。当你触摸一个内存块时,它被放入缓存中。如果在缓存已满时发生这种情况,则会从缓存中删除另一个块(可能是最近使用最少的块)。哦,好的,让我们假设内存地址为100,介于96-127之间,即内存块4。所以我取块4 mod 4,它是0,然后放在缓存的块0中(假设我们使用的是直接映射),我不确定缓存算法应该是什么。一个真正的CPU不会仅仅使用模来分配一个内存地址给一个缓存块,它会尝试在缓存中保持经常访问的页面的智能化。至少,一个真正的CPU会使用LRU(最近使用最少的)算法将东西从缓存中抛出。也许出于这个目的,你应该使用一个更简单的算法;我不确定。我们要用直接映射来填充缓存。给出了内存地址,我们只被告知缓存的总大小为32个字,每个块为8个字。我们没有得到非常明确的指示,但使用模表示,我在每一种情况下都被遗漏了。。。