zoukankan      html  css  js  c++  java
  • S3C2440之MMU

    转自:http://blog.chinaunix.net/uid-23193900-id-3187782.html

    1.MMU简介

       MMU(Memory Management Unit),内存管理单元,主要职责:将虚拟地址映射为物理地址,提供硬件机制的内存访问权限检查。
     

    2.基本概念

      虚拟地址(Virtual Address,VA),修改后的虚拟地址(Modified VA),物理地址(Phisical Address)
     VA是CPU使用的地址,MVA是MMU、Caches使用的,PA是内存设备使用,他们的映射关系:
      
     
    (1)cpu看到的是VA
    (2)caches和MMU使用的是MVA,
    (3)实际物理设设备使用的是PA。
     

    3.地址转换中的基本概念

    地址的转换就像是数学中映射,利用函数公式,多对1,就是多个虚拟地址对应同一个物理地址
    这里地址转换用的是页表的方式
    • 页表
       页表是由一个个表项(Entry,又称作描述符)组成的物理表,每个页表项或是一个物理页(一块物理内存,大小为1k,4k不等)的起始地址,或是一个二级页表的地址(当是一个二级页表的地址时,又可以称该页表为页描述符)。所有的页表都用物理地址访问。
    • 表项(描述符)的分类
      依据描述符保存的内容,可以分为两类。
      一类保存的是直接的物理页或段的起始地址,如段描述符、大页、小页、极小页描述符。
      另一类保存的是二级页表的物理地址,如粗页表描述符,细页表描述符。
    • 一级映射与二级映射
       一级映射,是指以段(Section,大小1MB)的方式进行转换。
       二级映射,是以页的方式进行转换。ARM页大小由三种:1k,4k,64k。
     

    4.地址转换的过程

    • VA->MVA:CPU发出一个VA,是怎么转换为MVA的
       这在上图可以看到,是通过一个硬件电路转换的。
     在ARM9里面,如果VA<32M,利用进程标识号PID转换得到MVA
    过程如下:
    if(VA < 32M)
         MVA = VA | ( PID<<25 )
    else
         MVA = VA
    只是上面的过程是由硬件实现的。
      这样为VA进行了一级映射,为什么呢?在linux系统里,每个进程的地址空间0-4G,0-3G是进程独有的,称为用户空间,3G-4G是系统的,称为内核空间,所有进程共享。如果两个进程所用的VA有重叠,在切换进程时,为了把重叠的VA映射到不同的PA上,需要重建页表、使无效caches和TLBS。使用了MVA,使进程在VA相同的情况下,使用不同的MVA,进而PA也不同。这就是在VA与PA之间加上一次到MVA的映射的意义
     
    • MVA->PA:MVA到PA的转换
    上面说了,虚拟地址到物理地址的转换有两种方式:公式映射+页表转换。
    概念上面也介绍过了。
    这里就进行实际的转换说明。
    首先,给定一个MVA,要进行转换,先要找到一级页表,怎么找?
    有一个寄存器,TTB寄存器,页表基地址寄存器,负责保存一级页表的基地址,当然是物理地址。
     
    TTB寄存器是集成在CP15协处理器中的,
     
    TTB的格式:
    因此,一级页表的地址是16k对齐的,因为[14:0]要求为0.
     
    一级页表的描述符格式:
     
     
    一级页表的表项,可以是个段描述符,粗页表描述符或细页表描述符。
    共同点是,每个描述符都代表1MB的物理地址空间。
    不同点:段描述符直接指向一个1MB地址空间,可以直接访问;而页表描述符,顾名思义,就是指向一个二级页表,还需要另一次映射。
     
    二级页表的描述符格式:
     
     
    二级页表有两种:粗页表(Coarse Page Table )+细页表( Fine Page Table)
    粗页表与细页表的异同:粗页表有最多256个表项,每个表项可表示4kb空间,如果表项是个大页页表描述符,则连续16个表项都表示同一个大页描述符。
    细页表中每个表项代表1kb,指向一个极小页;也可扩展成4k的小页,64k的大页。
     
    页表的结构与格式就是这些了。。下面看转换的具体过程
     
     
    段地址转换
     
    大页地址转换
    小页的地址转换
     
    极小页的地址转换
     
     
  • 相关阅读:
    ERROR Function not available to this responsibility.Change responsibilities or contact your System Administrator.
    After Upgrade To Release 12.1.3 Users Receive "Function Not Available To This Responsibility" Error While Selecting Sub Menus Under Diagnostics (Doc ID 1200743.1)
    产品设计中先熟练使用铅笔 不要依赖Axure
    12.1.2: How to Modify and Enable The Configurable Home Page Delivered Via 12.1.2 (Doc ID 1061482.1)
    Reverting back to the R12.1.1 and R12.1.3 Homepage Layout
    常见Linux版本
    网口扫盲二:Mac与Phy组成原理的简单分析
    VMware 8安装苹果操作系统Mac OS X 10.7 Lion正式版
    VMware8安装MacOS 10.8
    回顾苹果操作系统Mac OS的发展历史
  • 原文地址:https://www.cnblogs.com/aaronLinux/p/5699767.html
Copyright © 2011-2022 走看看