我正在尝试使用java完成基于简化mips计算机的模拟器。我相信我已经完成了我的任务所需的管道逻辑,但我很难理解指令和数据缓存应该做什么。
指令缓存应该用4个块直接映射,块大小为4个字。
所以我对缓存正在做什么感到困惑。它会记忆并从记忆中拉出指令吗?例如,在一个块中,它只有add命令。
将它作为二维数组实现是否有意义?
答案 0 :(得分:0)
首先,您应该了解缓存的基础知识。您可以将缓存视为位于DRAM或主存储器与处理器之间的中间存储器,但尺寸非常有限。现在,当您尝试访问内存中的某个位置时,您将首先在缓存中进行搜索。如果找到(缓存命中),处理器将获取此数据并恢复执行。通常,缓存命中应该是非常少的时钟周期,例如1或2.假设如果在缓存中找不到数据(缓存未命中),那么数据从主存储器中取出,填充在缓存中并馈送到处理器。处理器阻塞直到获取数据。这通常需要几百个时钟周期,具体取决于您使用的DRAM。从DRAM获取的数据量等于缓存行大小。为此,您应该在缓存中搜索引用的空间局部性。
我认为这应该可以帮到你。