![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MMU
文章平均质量分 92
newyork major
芯片蜉蝣
展开
-
TLB&Cache的联合设计
如果 Cache 缺失,那么就仍旧需要使用 TLB 来将虚拟地址转换为物理地址,然后使用物理地址去寻址L2 Cache,从而得到缺失的数据(在现代的处理器中,L2及其更下层的Cache都是物理Cache),这个过程如图3.42所示。此时Cache容量小于或等于一个页的大小,直接使用虚拟地址中的[L+b-1:0]部分来寻址Cache,找到对应Cache line中的数据,并将这个Cache line的Tag部分和TLB转换得到的PFN进行比较,用来判断Cache是否命中。访问 TLB 和 Cache 是。原创 2024-05-31 15:15:12 · 840 阅读 · 0 评论 -
virtual cache基本概念
使用这样的方式,要从虚拟地址中得到需要的数据,相比于两级页表,需要多一次物理内存的访问,这会造成TLB缺失的处理时间变长,是使用ASID带来的一个负面影响,尤其是 TLB 缺失发生的频率很高时,这种负面影响更为严重。这是因为,不同的进程,会存在很多相同的虚拟地址,这些虚拟地址实际上对应的物理地址是不同的,当进程之间进行切换时,如果还是映射到上一个进程的物理地址,肯定是会有问题;● 浪费了宝贵的cache空间,造成cache等效容量的减少,降低了整体的性能;同样考虑8KB, 直接相连的cache;原创 2024-05-31 09:59:47 · 899 阅读 · 0 评论 -
mmu之TLB的来源与实现
因此需要在页表中,对每个被修改的页加以标记,称为脏状态位(dirty),当物理内存中的一个页要被替换时,需要首先检查它在页表中对应PTE的脏状态位,如果它是1,那么就需要先将这个页写回到硬盘中,然后才能将其覆盖。比如,当发生TLB缺失时,需要从页表中将一个新的PTE写到TLB中,如果TLB此时已经满了,那么就需要替换掉TLB中的一个表项,也就不再记录这个页的映射关系,但是这个页的内容在 D-Cache中仍旧是存在的。这个问题或者转换成:在D-cache中保存的数据,一定是在TLB中的记录范围吗?原创 2024-05-29 16:04:23 · 1018 阅读 · 2 评论 -
虚拟化概述
正常场景处理器送出的虚拟地址(VA)首先送到 MMU中。MMU使用页表的基址寄存器PTR和VA[31:12]组成一个访问页表的地址,这个地址被送到物理内存中。物理内存将页表中被寻址到的 PTE 返回给 MMU.MMU判断PTE中的有效位,发现其为1,也就表示对应的页存在于物理内存中,因此使用PTE中的PFN和原来虚拟地址的[11:0]组成实际的物理地址,即PA=(PFN, VA[11:0]},并用这个地址来寻址物理内存,得到最终需要的数据。原创 2024-05-29 12:07:11 · 1177 阅读 · 0 评论