- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
s3c新2410内存管理单元mmu基础实验
S3C2410 内存管理单元MMU 基础实验
ARM 芯片S3C2410 内存管理单元MMU 基础实验
(11)实验十一:MMU
在理论上概括或解释MMU ,这不是我能胜任的。我仅基于为了理解本实验中操作MMU 的代码而
对MMU 做些说明,现在先简单地描述虚拟地址(VA)、变换后的虚拟地址(MVA)、物理地址(PA)
之间的关系:
启动MMU 后,S3C2410 的CPU 核看到的、用到的只是虚拟地址VA ,至于VA 如何最终落实到物理
地址PA 上,CPU 是不理会的。而caches 和MMU 也是看不见VA 的,它们利用VA 变换得来的MVA
去进行后续操作——转换成PA 去读/写实际内存芯片,MVA 是除CPU 外的其他部分看见的虚拟地
址。对于VA 与MVA 之间的变换关系,请打开数据手册551 页,我摘取了“Figure 2-8. Address
Mapping Using CP15 Register 13” :
图4 VA 与MVA 的关系
如果VA32M ,需要使用进程标识号PID(通过读CP15 的C13 获得)来转换为MVA 。VA 与MVA 的转
换方法如下(这是硬件自动完成的) :
if(VA 32M) then
MVA = VA | (PID 25) //VA 32M
else
MVA = VA //VA = 32M
利用PID 生成MVA 的目的是为了减少切换进程时的代价:如果两个进程占用的虚拟地址空间(VA)
有重叠,不进行上述处理的话,当进行进程切换时必须进行虚拟地址到物理地址的重新影射,这
需要重建页表、使无效caches 和TLBS 等等,代价非常大。但是如果像上述那样处理的话,进程切
换就省事多了:假设两个进程1、2 运行时的VA 都是0-32M,则它们的MVA 分别是(0
0x03ffffff)、(00x05ffffff)——前面说过MMU 、Caches 使用MVA 而不使用VA ,这样就不
必
进行重建页表等工作了。
现在来讲讲MVA 到PA 的变换过程:请打开数据手册557 页,“Figure 3-1. Translating Page
Tables”(见下述图5)非常精练地概括了对于不同类型的页表,MVA 是如何转换为PA 的。图中的页
表“Translation table”起始地址为“TTB base”,在建立页表后,写入CP15 的寄存器C2 。
使用MVA[31:20]检索页表“Translation table”得到一个页表项(entry,4 字节) ,根据此entry 的低2
位,可分为以下4 种:
1、0b00 :无效
2 、0b01 :粗表(Coarse page)
entry[31:10]为粗表基址(Coarse page table base address),据此可以确定一块1K 大小的内存——称为
粗页表(Coarse page table,见图5) 。
粗页表含256 个页表项,每个页表项对应一块4K 大小的内存,每个页表项又可以分为大页描述
符、小页描述符。MVA[19:12]用来确定页表项。一个大页(64K)对应 16 个大页描述符,这16 个大
页描述符相邻且完全相同,entry[31:16]为大页基址(Large page base) 。MVA[15:0]是大页内的偏移地
址。一个小页(4K)对应 1 个小页描述符,entry[31:12]为小页基址(Small page base) 。MVA[11:0]是小
页内的偏移地址。
3、0b10 :段(Section)
段的操作最为简单,entry[31:20]为段基址(Section base),据此可以确定一块1M 大小的内存
(Section,见图5),而MVA[19:0]则是块内偏移地址
4 、0b11 :细表(Fine page)
entry[31:12]为细表基址(Fine page table base address),据此可以确定一块4K 大小的内存——称为细
页表(Fine page table,见图5) 。
细页表含1024 个页表项,每个页表项对应一块1K 大小的内存,每个页表项又可以分为大页描述
符、小页描述符、极小页描述符。MVA[19:10]用来确定页表项。一个大页(64K)对应64 个大页描
述符,这64 个大页描述符相邻且完全相同,entry[31:16]为大页基址(Large page base) 。MVA[15:0]是
大页内的偏移地址。一个小页(4K)对应4 个小页描述符,entry[3
文档评论(0)