ASID 与 MIPS 中 TLB相关寄存器

本文介绍了 MIPS 处理器中如何使用 ASID(Address Space Identifier)来区分进程特定的 TLB 项,并详细解析了 MIPS 中 TLB 相关的寄存器,包括 EntryHi、EntryLo、PageMask、TLB 选择寄存器以及页表存取辅助寄存器。在 TLB 重填异常处理部分,解释了 Context 和 XContext 如何简化异常处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ASID

  • 为了提高TLB的性能,将TLB分成Global和process-specific。global 是指常驻在tlb中不会被刷出的,例如内核空间的翻译,process-specific 是指每个进程独有的地址空间,当发生进程切换的时候,这部分tlb可以被刷出,为了支持process-specific的tlb,arm提出了ASID(Adress Space ID)的硬件解决方案,这样TLB就可以识别出这个 TLB 页表项是属于哪一个进程的。
  • 在 MIPS 中,有两个地方会出现ASID,每一个TLB表项会有一个ASID,标识这个表项是属于哪一个进程的,CP0_EntryHI 中的ASID是当前进程的ASID,所以进程对TLB的查询操作,即使VPN命中,但若该表项不是global且ASID与CP0_EntryHi的ASID不一致,则也视作TLB缺失 – 这样就不用每次切换进程都要 flush 所有 tlb

MIPS 中 TLB/MMU 相关寄存器

TLB 关键字域
  • EntryHi 包含 VPN2 和 ASID 字段
    • VPN2 就是 TLB 表项对应的虚拟页表号,在 MIPS 设计中,一个 TLB 表项存储的是两个相邻虚拟页对应的物理页框号,所以 VPN2 只有 21 位(除去页内偏移12位和第13位)
    • ASID 字段,是当前进程的ASID,在对 TLB 访问查询中起到验证的作用(具体见 ASID 部分)。
  • EntryLo0-1
    • PFN 对应的物理页框号
    • D(dirty) 标志位,置位时允许写入;0 不允许写入,若写入则发生异常
    • V(valid) 有效位
    • G(global) 表明该 TLB 表项是全局的还是属于特定进程的,若是全局的,则对该 TLB 表项的读取都会无视 ASID 是否匹配
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值