自己学驱动14——内存管理单元MMU(内存访问权限检查和TLB)

1.内存的访问权限检查
    内存的访问权限检查是MMU的主要功能之一,简单地说,它就是决定一块内存是否允许读、是否允许写。这由CP15寄存器C3(域访问控制)、描述符的域(Domain)、CP15寄存器C1的R/S/A位、描述符的AP位等联合作用。
    CP15寄存器C1中的A位表示是否对地址进行对齐检查,所谓对齐检查就是访问字时地址是否为4字节对齐,访问半字时地址是否2字节对齐,如果地址不对齐则产生"Alignment fault"异常。无论MMU是否被开启,都可以进行对齐检查。CPU读取指令时不进行对齐检查,以字节为单位访问时也不进行对齐检查。对齐检查在MMU的权限检查和地址映射前进行。
    内存的访问权限检查可以概括为以下两点:
    (1)"域"决定是否对某块内存进行权限检查。
    (2)"AP"决定如何对某块内存进行权限检查。
    2440中有16个域,CP15寄存器C3中每两位对应一个域,用来表示这个域是否进行权限检查,具体如表1所示。

表1 域访问控制寄存器中每两位数据的含义

含义

说明

00

无访问权限

任何访问都将导致“Domain Fault”错误

01

客户模式

使用段描述符、页描述符进行权限检查

10

保留

保留,相当于“无访问权限”

11

管理模式

不进行权限检查,允许任何访问

    段描述符中的"Domain"占据4个bit,用来表示这块内存属于上面定义的16个域中的哪个。举例:
    段描述符中的"Domain"为0b0000时,表示这1M内存属于域0,如果域访问控制寄存器(C3)的位[1:0](C3一共对应16个域,位[1:0]对应第0个域)等于0b00,则访问这1MB空间时都会产生"Domain fault"的异常,如果域访问控制寄存器的位[1:0]等于0b11,则使用描述符中的"AP"位进行权限检查。
    二级页表描述符中的"ap0~ap3"与段描述符中的"AP"结合CP15寄存器C1的R/S位,决定如何进行访问权限检查。首先说明,段描述符中的"AP"控制整个段(1MB)的访问权限:大页描述符中的每个"apx"控制一个大页(64KB)中1/4内存的访问权限,即"ap3"对应大页高端的16KB,"ap0"对应大页低端的16KB;小页描述符与大页描述符相似,每个"apx"控制一个小页(4KB)的1/4内存的访问权限;极小页中的"ap"就控制着整个极小页的访问权限。AP位、S位和R位的组合,可以产生多种访问权限,具体如表2所示。

表2 AP位、S和R位的访问权限对照表

AP

S

R

特权模式

用户模式

说明

00

0

0

无访问权限

无访问权限

任何访问都产生“Permission fault”

00

1

0

只读

无访问权限

在超级权限下可以进行读操作

00

0

1

只读

只读

写操作产生“Permission fault”

00

1

1

保留

-

-

01

X

X

读/写

无访问权限

只允许在超级模式下访问

10

X

X

读/写

只读

在用户模式下进行写操作将产生“Permission fault”异常

11

X

X

读/写

读/写

在所有模式下允许任何访问

XX

1

1

保留

-

-


2.TLB的作用
    从虚拟地址到物理地址的转换过程可知:使用一级页表进行地址转换时,每次读/写数据需要访问两次内存,第一次访问一级页表获得物理地址,第二次才是真正的读写数据;使用两级页表时需要3次访存。
    利用程序执行时的局部性特性,通过使用一个高速、容量相对较小的存储器来存储近期用到的页表条目,这样可以大幅提高系统性能,这个存储器用来帮助快速地进行地址转换,称为"转译查找缓存"(TLB)。
    使用TLB需要保证TLB中的内容与页表一致,在启动MMU之前、在页表中的内容发生变化后,尤其要注意。
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值