TLB 结构和工作方式

TLB:

  • TLB 即 Translation Lookaside Buffer ,根据功能可以译为快表,直译可以翻译为旁路转换缓冲,也可以把它理解成页表缓冲。
  • 其中每一行都保存着一个由单个PTE(Page Table Entry,页表项)组成的块。
  • TLB里面存放的是一些页表文件(虚拟地址到物理地址的转换表),如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据。
  • TLB 是一个阵列结构,是为虚拟地址 (VA) 到物理地址 (PA) 转换的硬件机构,其为虚拟存储的硬件基础。
  • 快表是单独的寄存器,页表是存在于主存。

TLB结构:

VPN2虚页框号始终为偶数
ASID 

证某 TLB 项仅供某进程使用

处理器检索 TLB 时,会以CPU0->Entry_Hi->ASID[7:0] 域为当前进程的 ASID 与 TLB 项中的相比较

PageMaks页掩码为支持可变页大小而设
PFN物理页框号=VPN2
FLags VDC物理页属性

每个物理页,还有一些控制 Flags

V: Valid,1 位,置 1 说明该页是有效的。
D: Dirty,1 位,置 1 表明该页中的数据被修改过
C: Cache,3 位,指示对该页所用的缓存算法,可以设置之,而让处理器不将该页数据缓
存于 Cache

G 

Globle 位

如置该位为 1 ,则说明该 TLB 项是全局的,可供任何进程使用,TLB 检索时处理器将忽略 ASID 的检查。

PFN物理页框号=VPN2+1
Flags VDC物理页属性

每个物理页,还有一些控制 Flags

V: Valid,1 位,置 1 说明该页是有效的。
D: Dirty,1 位,置 1 表明该页中的数据被修改过
C: Cache,3 位,指示对该页所用的缓存算法,可以设置之,而让处理器不将该页数据缓
存于 Cache

 

工作方式:

  1. 处理器取虚址的高位作 VPN ,直接将其与 TLB 的所有项同时比较
  2. 有匹配的项且该项有效 (V 为 1) 则直接输出 PFN ,
  3. 否则抛出 TLB Refill 异常,后则由 OS 负责在该异常处理里将位于内存的页表读出,并以随机方式写入 TLB,
  4. 尔后异常返回,重新执行一次访存指令,因此会重走一次 TLB。

 

相关的CPU0寄存器

  • EntryHi 寄存器
  • EntryLo0寄存器
  • EntryLo1寄存器
  • PageMask寄存器
  • Index寄存器
  • Random寄存器
  • Wired寄存器
  • Contex寄存器

相关指令:

tlbrTLB 读指令直接读取 Index 所指示的 TLB 项,并将其内容分别
置入 PageMask,EntryHi,EntryLo0 和 EntryLo1
tlbwi/tlbwr索引方式写 TLB/随机方式写 TLB输入的 TLB 数据,亦置于EntryHi,EntryLo0 和 EntryLo1。入口项由 Index 寄存器/Random 寄存器指定。
tlbpTLB 查询指令以 EntryHi[VPN2] 检索整个 TLB ,有匹配的项则继续检查该项之 ASID 是否与
EntryHi[ASID] 相等,若满足,则将该项的索引值(标号)写入 Index 。若无满足条件
的项,则将 Index 的 31 位置为 1

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值