研究对象
寻址Cache方式为VIVT或VIPT的处理器会发生高速缓存重名问题。
重名
多个不同的虚拟地址映射到相同的物理地址
VIVT方式
一个物理地址的内容同时出现在多个cache行中,当系统改变虚拟地址到物理地址的映射时,需要清空这些cache并使他们失效,导致系统性能降低
VIPT方式
VIPT机制
- 处理器输出的虚拟地址同时发送到TLB/MMU进行地址翻译,并在cache中使用虚拟地址索引域和偏移量寻址cache组。
- TLB/MMU把VPN翻译为PFN,同时使用虚拟地址的索引域和偏移量以及物理地址的PFN即标记域来寻址cache行
VIPT优点
多任务操作系统中修改虚拟地址到物理地址的映射关系时不需要invalidate cache
TLB中的重名
TLB是类似于VIVT的cache
没有重名问题!!!
因为cache存放的是数据,TLB存放的是映射关系,映射关系下游的由MMU决定,而且是一对一!
cache数据由上游的CPU的寄存器决定,数据随时都可以变
从这里我们可以看到数据流动的方向性!!!
同名
相同的虚拟地址对应不同的物理地址
进程切换时容易发生
TLB中的同名
有同名问题!!!
设进程A和进程B都用0x50000的虚拟地址,A的页表需要映射为0x400,B的页表需要映射为0x800但是,已经被A映射为0x400了,B在映射时会发生TLB命中,返回0x400这个错误映射。