ARM中MMU地址转换理解

转载 2014年07月19日 12:33:42

对照着下图读文字。

MMU的段页表的虚拟地址与物理地址的转换过程

1->CP15 C2(Translation table base (TTB) register)

2->变换后的虚拟地址

3->一级转换表(一级描述符的地址)

4->一级描述符

5->物理地址

   首先,我们要分清ARM CPU上的三个地址:虚拟地址(VA,Virtual Address)、变换后的虚拟地址(MVA,Modified Virtual Address)、物理地址(PA,Physical Address) 。   

   启动MMU后,CPU核对外发出虚拟地址VA,VA被转换为MVA供MMU使用,在这里MVA被转换为PA;最后通过PA读写实际设备。 

    MMU的作用就是负责虚拟地址(virtual address)转化成物理地址(physical address)。 32位的CPU的虚拟地址空间达到4GB,在一级页表中使用4096个描述符来表示这4GB的空间,每个描述符代表1M的虚拟地址要么存储了它的对应物理地址的起始地址,要么存储了下一级页表的地址。使用MVA[31:20]来索引一级页表(4096个描述符)(因为全用MVA的高12位来索引,因此大小为 2^12 = 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位为一级描述符的高12位,低20位MVA的低20位。这样,借助于寄存器C2和一级描述符,将一个MVA转换成一个PA。(在这里一定要注意:MVA的高12位是用来索引4096个项的,然后使用项的内容(即描述符)的高12位为段的高12位,类似于指针里面存放地址,4096项类似指针,描述符类似指针里面的内容

    虚拟地址(注意:是一个确定的地址,不是一个空间)被MMU分成2个部分,第一部分是4096页号索引(descriptor index)即用选择4096(2^12)个号中的某个页号,比如description index为768,页号768中保存的是物理地址的某个页框的起始地址(0x300),第二部分则是相对于section base(0x300)为起始地址空间为1M的偏移量(offset)(如下图)例如: 假设现在执行指令MOV REG, 0x30100013,虚拟地址的二进制码为00110000 00010000 00000000 00010011,前12位是Descriptor Index  = 2^9+2^8+1 = 769 = 0x301,找到769项对应的内容0x301,偏移量为0000 00000000 00010011=0x13,那么段地址(物理地址)为0x300100013。貌似是一个1:1映射。这种情况页表Index 0x301和物理地址的基址是相同的值。

【转】嵌入式Linux学习笔记(四)-内存管理单元mmu

本文转自:http://hi.baidu.com/laoyoujinew/blog/item/7c922fee43a2e502fcfa3c47.html 嵌入式Linux学习笔记(四)-内存管理单元m...
  • z741852a2009
  • z741852a2009
  • 2011-05-23 23:59:00
  • 433

ARM虚拟地址原理分析及实现

第五章 虚拟内存及缓冲区管理 在刚开始接触TQ2440并测试TEST程序时,当时就产生了一个疑惑,把程序下载到NAND和SDRAM中,其中断均能正确执行,当时以为,程序有可能采用了动态添加中断向量技...
  • qq_32220231
  • qq_32220231
  • 2016-09-27 21:54:43
  • 740

ARM+MMU中虚地址转换研究

  • 2010年01月23日 23:48
  • 165KB
  • 下载

MMU 工作原理

一、内存管理单元MMU介绍 内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。MMU使得每个用户进程拥有自己独立的地址空间,并通过内存访问权限的检查保护每个进...
  • prike
  • prike
  • 2016-07-19 15:24:03
  • 6466

MMU地址映射过程

第一次发帖略微有点激动,有不足的地方还请各位大神指教。   最近看了看mmu,找了好多资料,看了好多博文终于稍微清楚了一点,现在我把自己理解的内容总结一下:   首先我来说一下...
  • u010512632
  • u010512632
  • 2017-03-04 22:57:03
  • 650

关于MMU的页表的理解 (转)

http://blog.chinaunix.net/u2/84450/article_104508.html的博客上有一些很好的关于MMU的文章。          MMU的主要软件配置和控制模块...
  • purefriendship
  • purefriendship
  • 2012-04-22 18:08:39
  • 897

ARM中MMU地址转换理解

MMU的段页表的虚拟地址与物理地址的转换过程
  • coldsnow33
  • coldsnow33
  • 2014-07-19 12:33:42
  • 1693

虚拟地址到物理地址的地址变换过程

与其说虚拟地址,倒不如说内核给程序(代码段、数据段)提供了统一的访问模式(抽象出统一的访问模式)基址加偏移量(这也是内存的分层次的断页管理模式)。所以所有程序的编码你可以从假设的“0”基址开始开始编程...
  • yunfenglw
  • yunfenglw
  • 2015-05-09 19:21:19
  • 1947

ARM中MMU之地址转换

第一次发帖略微有点激动,有不足的地方还请各位大神指教。   最近看了看mmu,找了好多资料,看了好多博文终于稍微清楚了一点,现在我把自己理解的内容总结一下:   首先我来说一下MMU的作用,M...
  • wrjvszq
  • wrjvszq
  • 2014-06-02 12:34:55
  • 1245

ARM MMU中虚地址转换研究.pdf

  • 2009年03月31日 09:46
  • 80KB
  • 下载
收藏助手
不良信息举报
您举报文章:ARM中MMU地址转换理解
举报原因:
原因补充:

(最多只允许输入30个字)