MMU

MMU(内存管理)

1:将程序中的虚拟地址映射到具体的物理地址,所谓虚拟地址,即为程序中的地址,对于不同的程序所使用的虚拟地址可能相同,但是通过mmu,可以将其映射到不同的物理地址,防止访问上的冲突。

2:控制访问的权限管理。

深入剖析地址转换

对于一个地址,假设为32位的虚拟地址:

31-20位索引符

根据高31-20位描述符表数据,在translation table中找到一个32位的表项。

1-0

这个表项的最后两位决定寻址方式:

00:表示无效的转化方式

01:表示粗页转化方式,较少用

10:表示段转化方式

11:表示细页转化方式

注意四几个问题:

1:表象是由工程师自己建立的

2:表项的存储在内存中

3:表项的基地址TTB(translation table base),这个地址由工程师自己决定,定义好后,将地址存储到cp15中的c2寄存器中。

段转换方式

表项:

基地址31-20

 10

虚拟地址:

31-20位索引符

表项的最后两位为10,则表示使用段转化方式,相应的虚拟地址中19-0位则作为偏移地址。

段式一阶表项结构:

cachebuffer

上图是CPU读取数据需要经过哪些部分缓冲区

ARM 中将存储空间分为了16个域,具体使用哪个域由一级表项中的“damain()”决定

细页转换方式:

虚拟地址:

31-20位索引符(实际上是一级也表的偏移)

19-11二级页表偏移地址

10-0位物理页偏移地址

一级页表项:

31-20位二级页表基地址

 11

二级页表项:

物理页基地址

注意:一级表项和二级页表是需要工程师自己定义的。

原文地址:https://www.cnblogs.com/big-devil/p/8589410.html