在ARM中,MMU几个主要作用:

1. I/D Cache 管理      -> 大幅提高代码运行效率.
2. PA/VA 重映射        -> 实现多进程内存空间映射.
3. 内存权限/读写保护   -> 保护某段内存空间数据,使不能非法访问.

----------------------------------

MMU和虚拟内存????

---------------------------------

- 自己写的裸奔程序否用mmu可自行决定。高兴就用,否则就关。
- 对arm,运行在外部dram上的代码而言,开启mmu后,使能dcache,能令数据io性能显著提升。
  由于icache可以不依赖mmu而使能,故mmu是否开启对指令部分而言,益处不多。
- 开mmu,经过配置之后,主要程序代码和裸奔时可以一致。
  最大的好处是内存访问不合规格会直接有异常,比如访问0地址,访问非法地址,etc。
- 开mmu,对于使能dma操作的情况而言,需要额外处理,否则会有内存一致性问题。
- 如果要动态加载程序,且程序不是position independent的,那么需要mmu进行地址映射。如果是pi的,则可以不用。
- 因为arm有tlb,所以转换表miss的开销不是太大,而且可以考虑转换表放内部内存,如果有地方的话。
总之,开与否mmu具体情况具体分析。应用中遇到的大部分问题,......

------------------------------------------

1 Cache对高延迟外部总线上的存储器是有价值的,同时也提出程序数据访问局部性的要求。否则,开了Cache不一定获得更大的好处。
  反例,如内部全速RAM,不一定值得开Cache。

2 开MMU不意味着IO性能的提升。
  只是在ARMv4前后的架构下(如ARM920T/ARM926EJ-S),DCache的开启要求MMU必须开启,这是内核设定的要求;而ICache的开启和MMU开启否无关。
  本来MMU和Cache就是松耦合的东西。一个管缓冲,一个管映射和权限。

3 地址映射主要是为了多进程,不同特权级,这些方面准备的,我认为。
  Page Fault可以用于交换那是副产品了。

------------------------------------------------

历史原因是:
应用软件不停的膨胀,硬件(主要指内存容量)根不上软件膨胀的速度。
早期intel 8086是采用基址寄存器和界限寄存器来管理不同软件的地址映射,
后来这种方法还是无法管理大量的应用软件,于是从386开始就有了MMU。

至于你的程序用不用MMU,你若裸奔就完全不用,你若跑简单的RTOS也不必用。
除非你跑windows,linux这样的系统才有必要开MMU。

MMU(why)的更多相关文章

  1. MMU工作原理

    MMU的工作原理就是把虚拟地址转换成物理地址. 虚拟地址:由编译器和连接器在定位程序时分配. 物理地址:用来访问实际的主存硬件模块. 使用虚拟存储器的系统都使用一种称为分页(paging).虚拟地址空 ...

  2. cache与MMU与总线仲裁

    为了以合理的价格,设计容量和速度满足计算机系统的需求,计算机体系结构设计者设计出了存储器的层次结构. "Cache-主存"和"主存-辅存"是最常见的两种层次结构 ...

  3. MMU内存管理单元相关知识点总结

    1.MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器.物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件 ...

  4. 第七章 内存管理单元MMU介绍

    7.1 内存管理单元MMU介绍 7.1.1 S3C2410/S3C2440 MMU特性 负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查 特性: 与ARM V4兼容的映射长度.域.访问权 ...

  5. 为什么没有MMU的处理器无法安装操作系统?

    所谓的处理器就是计算机的核心运算硬件,现在使用windows操作系统的用户使用的机器之中的处理器多数都是X86内核,而实际之上很多时候我们用户都是会在心目之中把一个处理器和其运行的特定操作系统挂钩,之 ...

  6. ok6410,mmu,内存管理

    MMU 一.MMU学习 MMU其实就是一个页表.将虚拟地址通过查表的方式,对应到物理地址去他由一个或一组芯片组成,一般存在与协处理器中. 1.将虚拟地址转化为物理地址 2.访问权限管理 1.1得出mm ...

  7. 关闭缓存和mmu(转)

    当设置完时钟分频以后,uboot就会执行cpu_init_crit汇编函数,这个函数的主要作用就是关闭缓存和mmu,然后调用lowlevel_init函数进行系统总线的初始化. 为什么启动的时候,需要 ...

  8. 内存管理单元(MMU)和协处理器CP15介绍(转)

    内存管理单元(MMU)和协处理器CP15介绍内存管理单元(MMU)介绍嵌入式系统中,存储系统差别很大,可包含多种类型的存储器件,如FLASH,SRAM,SDRAM,ROM等,这些不同类型的存储器件速度 ...

  9. Linux学习 : 裸板调试 之 使用MMU

    MMU(Memory Management Unit,内存管理单元),操作系统通过使用处理器的MMU功能实现以下:1)虚拟内存.有了虚拟内存,可以在处理器上运行比实际物理内存大的应用程序.为了使用虚拟 ...

  10. MMU

    1.MMU功能 将虚拟地址转化为物理地址:访问权限管理. 2.地址转化 2.1 总体分析 2.2 一级转换格式 位解释:(段设置) B:表示是否使能write buffer: C:  表示是否开启ca ...

随机推荐

  1. 解决position:relative情况下,z-index无效的方法

    在实际开发中,div+css经常会碰到层级的问题 其中有个很头痛的就是z-index控制层级时,老是发现z-index不起作用 老杨依据自己的经验,总结出以下步骤: 1.判断被覆盖的层(想要置顶的层) ...

  2. 【弱省胡策】Round #5 Construct 解题报告

    这个题是传说中的 Hack 狂魔 qmqmqm 出的构造题.当然要神. 这个题的本质实际上就是构造一个图,然后使得任意两点间都有长度为 $k$ 的路径相连,然后对于任意的 $i < k$,都存在 ...

  3. Windows下的Memcache安装与测试教程

    Windows下的Memcache安装 1.下载memcache for windows. 下载地址:http://splinedancer.com/memcached-win32/,推荐下载bina ...

  4. 关于Application.Lock和Lock(obj)

    http://www.cnblogs.com/yeagen/archive/2012/03/01/2375610.html 1.Application.Lock和Application.UnLock一 ...

  5. nginx 详解

    #运行用户 #user  nobody;   #启动进程,通常设置成和cpu的数量相等或者2倍于cpu的个数(具体结合cpu和内存).默认为1 worker_processes  1;   #全局的错 ...

  6. memcached部署memcached环境及PHP扩展

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lxsym.blog.51cto.com/1364623/876209 Memca ...

  7. photoshop:把路径存储为形状

    这个其实跟定义画笔步骤是一样的 路径存储为自定义形状 1.用路径选择工具(快捷键A),选中路径 2.菜单:编辑->定义自定形状 3.选择自定义形状工具(快捷键U),可以看到刚定义的形状 把当前形 ...

  8. 垃圾收集器GC的种类

    堆内存的结构:

  9. 120. Triangle

    题目: Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjace ...

  10. 分布式搜索Elasticsearch——QueryBuilders.matchPhrasePrefixQuery

    注:该文项目基础为分布式搜索Elasticsearch——项目过程(一)和分布式搜索Elasticsearch——项目过程(二),项目骨架可至这里下载. ES源代码中对matchPhrasePrefi ...