1.首先,在讨论映射之前要先补充逻辑地址、物理地址、cache行的概念
逻辑地址(虚地址)由虚页号和页内地址组成。其中虚页号包含虚页号以及页表索引;
物理地址(实地址)由物理块号和块内地址组成。其中块号又包含tag以及cache索引;
cache行包括tag、标记位、数据。详见另一篇帖子 https://www.cnblogs.com/zhengmq2010/p/13662884.html
2.含快表的二级页表查找
图中的页和块表达意思一致
2.1快表未命中
1.首先判断页号对应页表长度是否越界;
2.未发生越界,则通过页表首地址和行号计算得出页表中对应的项(由此可以看出页表的页号是可以省略的);
3.若为多级页表,则重复步骤2;
4.若不缺页,则用找到的块号2与逻辑地址中的页号组成物理地址。
其中,访问一次页表时,访问一次内存。当页表缺失时,需要进行一个I/O导入所需页面。
2.2快表命中
情况与访问页表相似,但快表中多了一个页号项,作用与cache中的tag一样。当快表的中的页号项与逻辑地址提供的页号一致时则命中。
3 访问cache
以直接映射为例
1.用行号找到cache中对应的项;
2.对比tag与有效位,仅当tag相同且有效位=1时,cache命中;
3.若cache未命中,则从主存中写入对应的项(涉及写策略)。