一,MMU的地址之间的转换(以S3C2440【ARM9内核】为例来了解)
(1)MMU的虚拟地址和物理地址的转换
ARM处理器的寻址空间为4GB,地址范围为0x0000 0000~0xffff ffff 。这段空间称为虚拟地址空间,在MMU使能开启后,ARM处理器所发出的地址都是虚拟地址VA。
ARM目标系统实际配置的存储器(包括外设)地址范围空间称为物理地址空间,其中的某个地址称为物理地址PA,它们对应的实际内存单元,CPU发出的虚拟地址最终必须转换成物理地址才能读写数据运行程序。
ARM处理器(S3C2440)中虚拟地址到物理地址转换过程中,会涉及到3个地址概念:
1,虚拟地址(Virtual ADDress:VA)
2,变换后的虚拟地址(Modified Virtual ADDress)记为MVA
3,物理地址(Physical ADDress:PA)
注意:
在没有启动mmu时,cpu,cache,mmu,外设等,所有部件都是使用物理地址(PA)实际地址
启动mmu之后,cpu发出的都是虚拟地址(VA),虚拟地址VA由硬件变换成MVA供cache,mmu使用,通过mmu转换成物理地址(PA),最后使用PA来读写内存和外设。
其中协处理器CP15也称为系统控制协处理器,它将内核cpu发出的va转换成mva
启动mmu之后:
cpu看到的使用的都是虚拟地址va
cache,mmu看到的是(输出的是)mva,它们将mva转换成PA(物理地址)
实际内存外设没看到VA,MVA,读写它们时使用的是PA
二,S3c2440是如何将cpu发出的VA转换成MVA的?
1,CPU发出的虚拟地址(VA)包含了两部分:页表索引和页内偏移。
2,首先,s3c2440通过页表索引找到对应的页表项。页表是一个数据结构,用于存储虚拟地址与物理地址的映射关系。
3,通过页表项中的物理地址基址(Page Base Address)和页内偏移,可以计算出物理地址(MVA)。
最后,s3c2440将计算得到的物理地址(MVA)提供给存储器控制器,以完成内存访问操作。
三,mmu如何将MVA转换成PA
MMU通过页表来实现地址转换。页表是一个数据结构,它逻辑地址划分为固定大小的页,并将每个页映射到物内存中的一个或多个页帧。当访问一个逻辑地址时,MMU会根据页的映射关系将逻辑地址转为物理地址。
具体的MVA到PA的转换过程下:
1,CPU生成一个逻辑地址MVA)并发送给MMU。
2,MMU从逻辑地址中提取出页号和页内偏移。
3,MMU使用页号在页表中查找对应的页表项。
4,如果页表项有效,则从中获取对应的物理页帧号。
5,MMU将物理页帧号与页内偏移组合成物理地址(PA)。
6,MMU将物理地址返回给CPU,CPU可以使用该物理地址进行内存访问。