32后备寄存器_386 TLB 测试寄存器

Intel386微处理器分页硬件旨在支持按需分页的虚拟内存系统。但是,如果要求处理器为每个内存引用访问两级的表,则性能将大幅降低。为了解决这个问题,Intel386SX微处理器保存了最近访问的页面的缓存,这个缓存称为翻译后备缓冲区(TLB)。TLB是一个四路集合关联32条目页表缓存。它自动将最常用的页表条目保存在处理器中。32条TLB加上4K页面大小,导致内存地址覆盖128K字节。对于许多常见的多任务系统,TLB的命中率将超过98%。这意味着处理器访问两级页面结构中只有少于2%的内容会引用内存。
80386刷新TLB只能通过重装CR3!

386的TLB结构:

662bcde2ccd3def927d3c62811255e47.png

​​

6224b00957d46baf00dc135a5853f722.png

​​

386的TLB一共4组,每组8个条目,一个条目由TAG和DATA组成,每个条目可以覆盖4K内存,4*8*4K=128KB,因此最大
覆盖的内存128KB。
TAG由V、D、U、W和线性地址的高20位组成共24位,DATA由物理地址的20位组成。(按这个计算一共是44位,这不符合对齐的原则,里面肯定有隐藏位,这只是猜测。)

80386 TLB测试:

  1. 写条目到 TLB
  2. 执行TLB查找

80386提供2个测试寄存器:

  1. TR6 is the ‘‘test command register’’
  2. TR7 is the ‘‘test data register’’

6224b00957d46baf00dc135a5853f722.png

Intel 1986版 80386 programmer reference manual :

4a169fa792bae25dc083812310821314.png

d9c9d3c7d7e6e3fb154db33d7e1861d8.png

​​

DUW这3个位和他们的补位的组合在这一版手册上 11是写成undefined

这是1990版,这里修改过来了。

2e700b7007d3c88b5f7a1b72cbd0b91e.png

分页单元硬件从分段单元接收32位线性地址。线性地址的高20位与TLB中的所有32个条目进行比较,以确定是否匹配。如果存在匹配(即TLB命中),则计算24位物理地址并将其放在地址总线上。
如果页表条目不在TLB中,则386处理器将读取相应的页目录条目。如果页目录条目上的P=1,表明页表在内存中,则l386处理器将读取相应的页表条目并设置访问位。如果页表条目上的 P=1表明页面在内存中,则 386处理器将根据需要更新"访问"和"脏"位并获取操作数。从页表中读取的线性地址的高20位将存储在TLB中,以供以后访问。如果页目录条目或页表条目的p=0,那么处理器将生成页错误异常14。(Intel386TM SX手册)

TI 486 手册:

78b3b69811651f7f87abd71fe96702b8.png

AMD 手册:

e9ea4df0fb2d827380aa54b50a90eb5a.png


通过写入和读取(TLB查找)测试寄存器TR6和TR7来检查TLB。要为测试设置TLB条目,必须首先使用物理地址、
PL = 1和REP的值加载TR7。接下来,必须使用适当的线性地址和属性位写入TR6并清除命令C位。要执行TLB查找(即读取TLB条目),使用相应的线性地址加载TR6并设置C.然后读取两个测试寄存器TR6和TR7。PL位指示是否发生命中(PL = 1)或未命中(PL = 0)。在第一种情况下,测试寄存器值反映相关TLB条目的内容。另一方面,在未命中时,它们包含无效值。
查找TLB,TR7中PL=0时,TR7的高20位一般返回0xFFFFF。

;写测试寄存器的2步
;
; TR7 物理地址0x20000,PL = 1 REP = 0
;
mov    eax,0x20010
mov    tr7,eax
;
;TR6  线性地址0x10000,V=D=U=W=1 C=O
;
mov    eax,0x10d40
mov    tr6,eax

;读测试寄存器
;
;tr6 线性地址0x10000,V=1 DUW=D#U#W#(complement)=11B C=1
;
mov    eax,0x10fe1
mov    tr6,eax

mov    eax,tr7
mov    ebx,tr6
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值