免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2716 | 回复: 0
打印 上一主题 下一主题

关于MMU的页表的理解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-20 16:01 |只看该作者 |倒序浏览

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

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

ARMMMU硬件采用2级页表结构:一级页表(L1)和二级页表(L2)
       一级页表只有一个L1主页表(L1 master page table)。L1主页表包含2中类型的页表项:保存指向二级页表起始地址指针的页表项和保存用于转换1MB的页的页表项。L1主页表也称为段页表(section page table)。
L1主页表将4GB的地址空间划分为4096个1MB的段(section)。L1主页表既可作为L2页表的页目录,也可作为用于转换1MB虚拟页(称为一段)的普通页表。
       当L1页表作为页目录时,其页表项(PTE)包含的就是1MB虚拟空间的L2粗(coarse)页表或L2细(fine)页表的指针;当L1页表用于转换一个1MB的段时,其页表项(PTE)包含的就是物理存储器中1MB页帧(page frame)的首地址。
       一个L2粗页表有256(1MB/4KB)个页表项,占用1KB的主存空间,每个页表项将一个4KB的虚拟存储块转换成一个4KB的物理存储块。粗页表支持4KB或64KB的页,页表项包含的是4KB或64KB的页帧的首地址。如果转换的是一个64KB的页,对于每个64KB的页,同一个页表必须在页表中重复16次。
一个L2细页表有1024(1MB/1KB)个页表项,占用4KB的主存空间,每个页表项将一个1KB的虚拟存储块转换成一个4KB的物理存储块。细页表支持1KB,4KB或64KB的页,页表项包含的是1KB,4KB或64KB的页帧的首地址。


一级页表支持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主页表中)

图 1MB段L1页表虚实地址转换





















2.二步页表搜索(搜索的是大小为1KB,4KB,16KB,64KB的页)
第1步,用L1偏移量部分索引L1页表项,找到虚拟地址的L1页表项(1级描述符)。
第2步,将L2偏移量部分合并到第一步找到的L2也表的基地址,将得到的地址用来选择包含所搜索页的转换数据的页表项。基地址与虚拟地址的偏移量部分合并起来组成所请求的物理存储器地址。

图 基于微页的二级虚实地址转换


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/102833/showart_2032981.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP