基本地址变换机构 - wolai 笔记

1.页表寄存器的作用

  • 存放页表起始地址
  • 存放页表长度

2.地址变换过程

  1. 根据逻辑地址A算出页号P和页内偏移量W
  2. 页号P的合法性检查(与页表长度M对比),注意取等号时已经越界
  3. 若页号合法,再根据页表起始地址F、页号找到对应页表项;页号P对应的页表项地址 = 页表起始地址F + 页号P * 页表项长度
  4. 根据页表项中记录的内存块号b、页内偏移量W得到最终的物理地址
  5. 访问物理内存对应的内存单元

3.注意区分的概念

  • 页表项长度:每个页表项占多大的存储空间
  • 页表长度:这个页表中总共有几个页表项,即总共有几个页
  • 页面大小:一个页面占多大的存储空间

4.其他小细节

  • 页内偏移量位数与页面大小之间的关系(要能用其中一个条件退出另一个条件)
  • 页式管理中地址是一维的
  • 实际应用中,通常使一个页框恰好能放到整数个页表项
  • 为了方便找到页表项,页表一般是放在连续的内存块中

5.具有快表的地址变换机构

5.1快表TLB

  • 又称联想寄存器(Translation Lookaside Buffer)
  • 一种访问速度比内存快很多的高速缓存,用来存放最近访问的页表项的副本

5.2引入快表,地址变换过程

  1. 计算页号、页内偏移量
  2. 检查页号的合法性
  3. 查快表。若命中,直接进行5;未命中则进行4
  4. 查页表,找到页面存放的内存块号,并将页表项复制到快表中
  5. 根据内存块号与页内偏移量得到物理地址
  6. 访问目标内存单元

5.3局部性原理

时间局部性

  • 如果执行某条指令,那么不久后这条指令很可能再次执行
  • 如果访问某个数据,不久之后该数据很可能再次访问
  • 因为程序中存在大量的循环

空间局部性

  • 一旦程序访问某个存储单元,在不久之后,其附近的存储单元也很有可能被访问
  • 因为很多数据在内存中都是连续存放的

6.Sample

6.1地址变换

设页面大小为L,逻辑地址A到物理地址E的变换过程如下:
  • 1、计算页号P(P = A/L)和页内偏移量W(W = A%L)
  • 2、比较页号P和页表长度M,若P >= M,则产生越界中断,否则继续执行
  • 3、页表中页号P对应的页表项地址 = 页表始址F + 页号P * 页表项长度,取出该页表项内容b,即为物理块号
  • 4、 计算E = b*L + W,得到物理地址
例:若页面大小L1K字节,页号2对应的内存块号b=8,将逻辑地址A=2500转换为物理地址E
等价描述:某系统按字节寻址,逻辑地址结构中,页内偏移量占10位,页号2对应的内存块号为b=8,将逻辑地址A=2500转换为物理地址E
  • 1、计算页号、页内偏移量
    • 页号 P = A/L = 2500 / 1024 = 2
    • 页内偏移量 W = A%L = 2500 % 1024 = 452
  • 2、根据题中条件可知,页号2没有越界,其存放的内存块号 b = 8
  • 3、物理地址 E = b * L + W = 8 * 1024 + 452 = 8664

6.2引入快表的地址变换机构

例:某系统使用基本分页存储管理,并采用了具有快标的地址变换机构。访问一次快表耗时1us,访问一次内存耗时100us。若快标的命中率为90%,那么访问一乐逻辑地址平均耗时是多少?
  • (1+100)* 0.9 + (1+100+100)*0.1 = 111us
  • 有的系统支持快表和慢表同时查找,则平均耗时:(1+100)* 0.9 + (100+100)*0.1 = 110.9us
  • 若未采用快表机制,则访问一乐逻辑地址需要:100+100 = 200us

Comment