这两天看到学习ARM中的MMU,看来半天终于明白了一点!现在把自己明白的总结一下(对于段(section)而言)!
MMU的作用就是负责虚拟地址(virtual address)转化成物理地址(physical address)。 32位的CPU的虚拟地址空间达到
4GB,在一级页表中使用4096个描述符来表示这4GB的空间,每个描述符代表1M的虚拟地址,要么存储了它的对应物理地址的起始地址,
要么存储了下一级页表的地址。使用MVA[31:20]来索引一级页表(4096个描述符)
由协处理器CP15中的寄存器C2(高18位,即[31:14]为转换表基地址,低14位为0)为一级转换表基地址,指向2^14=16KB整除
的存储器即16K对齐,这个存储区称为一级转换表;MVA的高12位,即位[31:20]作为一级转换表的地址索引,因此一级转换表具有2^12
=4096项,每一项的地址为32位,最高的18位[31:14]为寄存器C2的高18位,中间12位为MVA的高12位[31:20],最低2位为0b00。
每一项的内容称为一个描述符,在段(Section)下,一级描述符的高12位为,大小为1MB的段基地址,段内地址(偏移地址)为MVA的低
20位,即段内每个存储器的地址是这样组成:高12位为一级描述符的

本文介绍了ARM处理器中MMU如何将虚拟地址转换为物理地址的过程,特别是针对段(section)的转换。通过一级页表的4096个描述符,每个描述符代表1MB的虚拟地址空间。MMU利用C2寄存器的高18位作为一级转换表基地址,MVA的高12位作为索引。每个描述符的高12位作为段基地址,与MVA的低20位结合,形成最终的物理地址。通过实例解释了如何进行地址转换,并提供了内存映射的示意图。
最低0.47元/天 解锁文章
955

被折叠的 条评论
为什么被折叠?



