一,基于mips架构的mmu(TLB)的分析
首先说一下和tlb有关的几个重要的寄存器:EntryHi:CP0寄存器号 10
包含了输入的关键字VPN2和记住当前活动的ASID
EntryLo0-1:CP0寄存器号 2-3
包含了输出用到的关键字,以及标志位
PageMask:CP0寄存器号 5
配置映射页的大小
Index:CP0寄存器号 0
指定要写入或者读取的tlb表项
Random:CP0寄存器号 1
这时一个随机数寄存器,被tlbwr用来将一个新的tlb表项写入到一个随机的位置
BadVAddr:CP0寄存器号 8
记录最近一次导致tlb或寻址错误例外的虚拟地址。
Context:CP0寄存器号 4
XContext:CP0寄存器号 20
用来加速tlb重填自陷处理。o高位是可读写的,低位取自未能转换的地址的VPN。在一次tlb重填自陷后,Context就会包含一个指向映射gg相应出错地址所需要的页表记录的指针。XContext相似。
EntryHi:
VPN2(虚拟页号):这部分是程序地址的高位(低位的页内地址0-13位略去了)。0-12位属于页内地址,程序地址的第13位在两个可能的输出值之间进行选择。(注意:当重填异常发生后,硬件自动设置该寄存器的值;当想要写入另外的tlb表项或检测tlb时,只能手工设置)
ASID(地址空间标识符):这部分时操作系统对当前地址空间的标识。异常不会影响该域。
R(64位版本):这是一个地址区域选择符。可以看作是EntryHi(VPN2)的更多位,只不过是64位MIPS虚拟地址的最高位。