Hardware - MMU

最近在看VFIO时,要先了解IOMMU,那它和MMU有什么区别呢,在这里记录MMU的一些基本概念。

图来源是:多核处理器上的MMU和TLB_冉冉云的博客-CSDN博客_mmu tlb

每个package共用一个内存控制器,每个core内部有一个MMU,L1/L2 cache。L3 cache是整个package共享的。

这里有个疑问?当开启HT后,同一Core上的两个逻辑CPU共享MMU、L1/L2级cache?那CR3是每个逻辑core各有一个吗? 访问内存时是反复load CR3?

看了下SDM,这里提到每个逻辑Core有完整的一套寄存器,只是共用了执行单元,所以不用反复load CR3,只是在调度进程时,加载一次。

 那么CR3中加载的地址是物理地址还是虚拟地址呢?当然是物理地址啦,MMU的作用是将虚拟地址翻译成物理地址,如果页表基址也是虚拟的,那就是鸡生蛋与蛋生鸡的问题了。这里有篇博客详细介绍了CR0-CR3控制寄存器CR0-4寄存器介绍_五月的天气的博客-CSDN博客_cr0寄存器X86_64 CR3详解_weixin_41430055的博客-CSDN博客_cr3寄存器

对于进程切换时重新加载CR3,TLB是否全部flush?,X86平台有PCID(ARM是ASID),通过进程PID区别TLB中的entry,同时TLB中不光保存了用户态的页表缓存,还有内核空间页表缓存。通过Global TLB与Non-global TLB来区分,因为内核线程使用同一个页表,所以Global TLB不用flush。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值