我希望这不是重复的。
关于缓存和虚拟内存模拟的问题:
- 假设一个阻塞缓存(阻塞缓存是等待直到从内存到缓存的传输完成后再将数据传送到 CPU 的缓存)
如果出现以下情况会发生什么:
- CPU 请求指令缓存中不存在的指令(未命中)
- 指令缓存向 MMU/内存请求数据
- MMU 报告页面错误
- CPU 接收到来自 MMU 的中断,该中断发出有关页面错误的警报
- CPU 跳转到包含用于处理页面错误的代码的硬连线地址
- 指令获取阶段要求将第一条指令(来自页面错误处理)缓存
现在我的问题是:如果缓存正在等待主内存传递其他数据(导致页面错误的数据),它如何将页面错误处理代码传递给 CPU?
我想出了这个解决方案:改进我的缓存,让 CPU 和缓存都能接收到缺页信号;缓存存储其状态,接收页面错误处理代码并将其交付给 CPU,然后恢复其先前的状态。
这就是我想出的,但这是正确/有效和有效的方法吗?