- 1、本文档共174页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章存储系统机制及存储器接口
存储管理单元(MMU)是集成在微处理器芯片内部、专门管理外部存储器总线的一部分硬件。主要用来完成虚实地址之间的转换。目前,越来越多的微处理器芯片均带有存储管理单元(MMU)。 * 每一种类型的表描述了它所关联的1MB 存储区域的映射。粗糙第二级表较小,每个表1KB,每个精细第二级表4KB。然而粗糙第二级表只能映射大页和小页,精细第二级表可以映射大页、小页和微页。 * 每个粗糙第二级表对映着以4KB 为单位的虚拟地址范围市怎么映射的,每个精细第二级表对映着以1KB 为单位的虚拟地址范围市怎么映射的。那些入口是页描述符,他们能够分别描述大于4KB 或1KB 的页。在这种情况下,这个描述符必须被重复足够次,以保证这个页始终使用相同的描述符,不论访问这个页中的哪个虚拟地址。对于一个第二级描述符,有四种可能,由描述符的bits[1:0]选择。见表3-2: · 如果bits[1:0]==0b00,说关联的虚拟地址没有被映射,任何对这些虚拟地 址的访问将会导致转换错(fault)。软件可以利用这样的描述符的bits[31:2]做自己的用途,因为他们被硬件忽略。推荐为描述符继续保持正确的访问权限。 · 如果bits[1:0]==0b01,这个入口是大页描述符,描述64KB 的虚拟地址。 见转换大页参考。一个大页描述符在精细第二级表中必须被重复64 次,在粗 糙第二级表中必须被重复16 次以保证所有的虚拟地址都被描述。 · 如果bits[1:0]== 0b10,这个入口是小页描述符,描述4KB 的虚拟地址。 见转换小页参考。一个小页描述符在精细第二级表中必须被重复4 次,以保 证所有的虚拟地址都被描述。在粗糙第二级表中只有一个实例。 · 如果bits[1:0]== 0b11,这个入口是微页描述符,描述1KB 的虚拟地址。 见转换微页参考。在精细第二级表中只需要一个微页描述符的实例。微页描 述符不能在粗糙第二级表中出现,如果出现了,结果不可预测。 当采用二级描述符时:第一级为粗页时,虚地址[19:12]共8位作为第二级的索引量,可寻址256个第二级页表。1.当第二级为小页描述符时,虚地址[11:0]作为偏移量,可寻址空间2^12=4k,一个粗页表总可寻址4k*256=1M。? ?2.当第二级为大页描述符时,虚地址[15:0]作为偏移量,可寻址空间2^16=64k? ?但是,虚地址[19:15:12]是作为第二级大页描述符的索引,虚地址[15:0]作为偏移量,也就是说虚地址[15:12]被重复使用。我们考虑一下从0x0~0xffff(64K)空间地址的转换问题,显然虚地址[15:12]将从0~f,也就是说二级页表开始的16个描述符都将被访问,如果每个描述符定义的页物理基地址不一致,如第二级第一个页表定义物理基地址为0x300000000;第2个页表为0第16个页表定义的物理基地址为0x300f000时,0~ffff(64K)空间将被映射到0~fffff(1M)地址空间,显然这是不正确的。为了得到正确的结果,我们可以将这粗页表中16个连续的大页描述符定义为同一大页描述符,其物理基地址一致。? ? 结论:当采用二级页表时,索引第二级页表虚地址和作为偏移量的虚地址有重复时,其重复为n位,则第二级页表中连续的2^n个页表描述符必须定义为一致。如上所示[15:12]位重复,n=4,则连续16个描述符必须相同。第一级为细页表时,其情况类似,不再分析。 * 我们将以下图所示的过程对虚拟地址00转换过程进行详细的说明:TLB寄存器值0x33ffc000是整个页表的基地址0址转换:将虚地址[31:20]位0x0作为索引*4(每个描述符占4个字节)再与页表基地址相加得0x33ffc000,即页表中第一个描述符,因为该描述符为段描述符,将其[31:20]位0x300左移20位充0为0为该段物理基地址,并将虚地址[19:0]位0x18作为偏移地址与该段物理基地相加得0该地址就为虚地址0x18对应的物理地址。0址转换:将虚地址[31:20]位0x306作为索引*4(每个描述符占4个字节)再与页表基地址相加得0x33ffcc18,即页表中第775个描述符,因为该描述符为粗页描述符,将其[31:10]位0xcffc0左移10位为0x33ff0000作为第二级页表的基地址。再将虚地址[19:12]位0x05作为索引*4(每个描述符占4个字节)与0x33ff0000相加得到该虚拟地址的第二级页描述符地址0x33ff0014。因为该描述符为第二级小页描述符,将其[31:12]位0x30605左移12位得0x3060500
文档评论(0)