流水线模拟器的指令缓存



我正在尝试使用java完成一个基于简化mips计算机的模拟器。我相信我已经完成了作业所需的管道逻辑,但我很难理解指令和数据缓存应该做什么。

指令缓存应直接映射 4 个块,块大小为 4 个字。

所以我对缓存在做什么感到非常困惑。它会进入内存并从内存中提取指令吗?例如,在一个块中,它将只有 add 命令。

将其实现为二维数组是否有意义?

首先,您应该了解缓存的基础知识。您可以将缓存想象为位于DRAM或主内存和处理器之间的中间内存,但是大小非常有限。现在,当您尝试访问内存中的某个位置时,您将首先在缓存中搜索它。如果找到(缓存命中),处理器将获取此数据并恢复执行。通常,缓存命中应该是很少的时钟周期,例如 1 或 2。假设如果在缓存中找不到数据(缓存未命中),则从主存储器获取数据,填充缓存并馈送到处理器。处理器阻塞,直到获取数据。这通常需要几百个时钟周期,具体取决于您使用的 DRAM。从 DRAM 获取的数据量等于缓存行大小。为此,您应该在缓存中搜索参考的空间位置。

我认为这应该让你有一个开始。

最新更新