0

我希望这不是重复的。

关于缓存和虚拟内存模拟的问题:

  • 假设一个阻塞缓存(阻塞缓存是等待直到从内存到缓存的传输完成后再将数据传送到 CPU 的缓存)

如果出现以下情况会发生什么:

  • CPU 请求指令缓存中不存在的指令(未命中)
  • 指令缓存向 MMU/内存请求数据
  • MMU 报告页面错误
  • CPU 接收到来自 MMU 的中断,该中断发出有关页面错误的警报
  • CPU 跳转到包含用于处理页面错误的代码的硬连线地址
  • 指令获取阶段要求将第一条指令(来自页面错误处理)缓存

现在我的问题是:如果缓存正在等待主内存传递其他数据(导致页面错误的数据),它如何将页面错误处理代码传递给 CPU?

我想出了这个解决方案:改进我的缓存,让 CPU 和缓存都能接收到缺页信号;缓存存储其状态,接收页面错误处理代码并将其交付给 CPU,然后恢复其先前的状态。

这就是我想出的,但这是正确/有效和有效的方法吗?

4

1 回答 1

0

CPU 和缓存不会等待丢失的数据。

通常,页面错误会对 CPU 产生某种类型的中断,从而暂停原始指令流。当页面错误处理程序返回时,原始指令流恢复,从第一次不存在于缓存中的指令开始。

于 2013-10-02T19:48:17.010 回答