【发布时间】:2015-11-24 04:38:14
【问题描述】:
这个问题不是针对任何 CPU 实现的,但欢迎针对特定 CPU 的回答。
我目前正在实现一个完全支持 MMU 的 CPU,但出现了一个简单的问题。
因此,想象一下由指令流(或指令缓存)引起的简单 TLB 未命中的情况。这将触发 TLB 未命中。现在,如果没有找到 PTE,就会触发一些异常,例如“页面翻译错误”。到目前为止,完全没有问题。
现在,为了调用故障处理程序,指令流(或缓存)需要获取异常处理程序代码。为此,它需要在 TLB 中再次搜索相关的 PTE 条目,并最终进行另一个 table walk。
再次想象一下,找不到 PTE 条目。人们会期望调用其他一些异常处理程序。
现在,在最后一个异常处理程序上,由于处理程序本身可能找不到或无效,MMU 是否在处理程序被获取和执行之前被禁用(从而绕过所有 MMU 所做的,包括 Phys-Virt 映射),还是还有另一种技术(非致命的)来处理这种情况吗?
阿尔维
【问题讨论】: