关于MMU的页表的理解 (转)




http://blog.chinaunix.net/u2/84450/article_104508.html的博客上有一些很好的关于MMU的文章。

 

       MMU的主要软件配置和控制模块有:页表;转换旁路缓冲器(TLB);域和访问权限;cache和写缓冲器;CP15c1控制寄存器;快速上下文切换扩展。

 

ARMMMU硬件采用2级页表结构:一级页表(L1)和二级页表(L2

       一级页表只有一个L1主页表(L1 master page table)。L1主页表包含2中类型的页表项:保存指向二级页表起始地址指针的页表项和保存用于转换1MB的页的页表项。L1主页表也称为段页表(section page table)。

L1主页表将4GB的地址空间划分为40961MB的段(section)。L1主页表既可作为L2页表的页目录,也可作为用于转换1MB虚拟页(称为一段)的普通页表。

       L1页表作为页目录时,其页表项(PTE)包含的就是1MB虚拟空间的L2粗(coarse)页表或L2细(fine)页表的指针;当L1页表用于转换一个1MB的段时,其页表项(PTE)包含的就是物理存储器中1MB页帧(page frame)的首地址。

       一个L2粗页表有2561MB/4KB)个页表项,占用1KB的主存空间,每个页表项将一个4KB的虚拟存储块转换成一个4KB的物理存储块。粗页表支持4KB64KB的页,页表项包含的是4KB64KB的页帧的首地址。如果转换的是一个64KB的页,对于每个64KB的页,同一个页表必须在页表中重复16次。

一个L2细页表有10241MB/1KB)个页表项,占用4KB的主存空间,每个页表项将一个1KB的虚拟存储块转换成一个4KB的物理存储块。细页表支持1KB,4KB64KB的页,页表项包含的是1KB,4KB64KB的页帧的首地址。

 

 

一级页表支持4种类型的页表项:

1MB段转换项;(指向一个1MB的存储段)

指向L2细页表的目录项;(包含一个L2细页表首地址的指针,同时包含L1表项代表的1MB虚存段的域信息。细页表必须与4KB的倍数地址对齐)

指向L2粗页表的目录项;(粗页表必须与1KB的倍数地址对齐)

产生中止异常的错误项。

 

二级页表有4种类型的页表项:

定义64KB页帧属性的大(large)页表项;(包含一个64KB物理存储块的基地址,同时还包含4组权限位域,以及页的cache和写缓冲器属性。每一组访问权限位域代表虚存页的1/4,这些页表项可以看成是16KB子页,以更好的控制64KB页的访问权限)。

定义4KB页帧属性的小(small)页表项;

定义1KB页帧属性的微(tiny)页表项;

访问时产生页错中止异常的错误页表项。

(注意区别大页,小页,微页和粗页表,细页表)

 

 

 

 

 

 

虚实地址转换

 

 

1.单步页表搜索(搜索1MB大小的段页,存放在L1主页表中)

 

1MBL1页表虚实地址转换

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.二步页表搜索(搜索的是大小为1KB,4KB,16KB,64KB的页)

第1步,用L1偏移量部分索引L1页表项,找到虚拟地址的L1页表项(1级描述符)。

第2步,将L2偏移量部分合并到第一步找到的L2也表的基地址,将得到的地址用来选择包含所搜索页的转换数据的页表项。基地址与虚拟地址的偏移量部分合并起来组成所请求的物理存储器地址。

 

图 基于微页的二级虚实地址转换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值