前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图解MMU

图解MMU

作者头像
虚拟化云计算
发布2021-04-21 10:12:08
1.5K0
发布2021-04-21 10:12:08
举报
文章被收录于专栏:虚拟化云计算虚拟化云计算

这是图解系列之MMU

MMU叫内存管理单元,现在是处理器/核中的一个硬件单元,通常每个核有一个MMU。

下面cloud3图解一下MMU的工作原理。

CPU发出的地址是虚拟地址,MMU通过页表技术,把虚拟地址转换为物理地址,再去访问物理内存条。

CPU发出的虚拟地址由两部分组成:VPN和offset,VPN(virtual page number)是页表中的条目number,而offset是指页内偏移。

最终转换后的物理地址也有两部分:PFN和offset,PFN( Physical frame number)是物理页框number,offset和上面虚拟地址的offset相同,是页内偏移。

MMU由两部分组成:TLB(Translation Lookaside Buffer)和table walk unit。TLB 是一种地址转换cache,这里我们略过TLB的工作细节。

table walk unit在不同的CPU架构上有不同的叫法,但其作用是相同的,就是把内存页表走一走进行查表,完成虚拟地址到物理地址的转换。

下面以32位处理器来描述MMU和内存页表的工作流程。

假设只有一级页表

如果采用4KB的page大小,cpu发出的虚拟地址包含12bit的页内偏移和20bit的页表VPN:

这里的12bit的页内偏移是和4KB的页大小一致的,2的12次方正好能覆盖一个页。20bit的VPN就是页表中的条目数。

所以页表和物理内存是下面这个样:

从上图可以看页表条数和物理内存的页数是相同的,因为每一个物理页地址都需要页表中的一条来指向,不然就覆盖不全了。

物理内存是4KB*1M=4GB,内存页表是32bit*1M=4MB。

需要指出,这里的物理内存大小不是物理内存条大小,而是可以访问到物理内存最大大小。

页表里放着什么:

页表中的每一条叫做页表条目PTE(page table entry),其大小为4个字节。

任何一个虚拟地址,都可以用地址的高20位(由于一页是4KB,低12位就页内偏移)来表示,所以PTE的低12位可做他用。

低12位中,P表示是否命中。如果某一条目没有命中,则其他位就没有意义了。所以页表是这个样:

以这张页表为例, 当CPU发出的虚拟地址中页表Index是3时,MMU会去查页表的第3行,发现第3行没有命中,MMU会给CPU发出page fault,CPU自动跳到fault的代码去处理fault。当CPU发出的虚拟地址中页表Index是2时,MMU会去查页表的第2行,发现第2行命中了物理地址112*4KB,MMU会访问内存条112*4KB这个物理地址。

操作系统中每个进程都有自己的页表,当CPU在运行某个进程时,MMU的页表地址寄存器中会放置这个进程页表的物理地址,根据这个地址找到此进程的页表,然后根据此表进行地址转换。

上面我们已经介绍了每个页表的大小是4MB,覆盖了整个0-4GB的虚拟地址空间。每个进程都占用4M的物理地址,而且这个空间还必须是连续的。那整个操作系统的所有进程光页表就要消耗很大的物理内存。

假设只有2级页表

对于32位地址空间,会将VPN中的前10位用于索引页表目录(一级页表),紧接下来的10位用于索引所选的页表(二级页表)。

换言之,对于2级页表结构其本质是:VPN的前10位为页表目录索引,而接下来的10位为页表索引,剩下的10位为page offest。

MMU先根据一级页表的物理地址和一级页表Index去一级页表中找PTE,PTE中的地址不再是最终的物理地址,而是二级页表的物理地址。

根据二级页表物理地址和二级页表index去二级页表中找PTE,此时PTE中的地址才是真实的物理地址。

根据此物理地址和offset找到最终的物理内存地址。

一级页表占用的内存是4bit*2的10次方=4KB,每个二级页表占用的内存是4bit*2的10次方=4KB。

使用二级页表的好处是如果一级页表中的某一个PTE没有命中,那这一PTE对应的整个二级页表就不存在。

以上以32位系统中一级和二级页表来描述了MMU的最简单原理,多级页表的实现方式在理论上也是相同的,包括在64位系统中MMU工作原理也是如此。

这是图解系列之MMU

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 虚拟化云计算 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
VPN 连接
VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档