MMU(why)
在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)的更多相关文章
- MMU工作原理
MMU的工作原理就是把虚拟地址转换成物理地址. 虚拟地址:由编译器和连接器在定位程序时分配. 物理地址:用来访问实际的主存硬件模块. 使用虚拟存储器的系统都使用一种称为分页(paging).虚拟地址空 ...
- cache与MMU与总线仲裁
为了以合理的价格,设计容量和速度满足计算机系统的需求,计算机体系结构设计者设计出了存储器的层次结构. "Cache-主存"和"主存-辅存"是最常见的两种层次结构 ...
- MMU内存管理单元相关知识点总结
1.MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器.物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件 ...
- 第七章 内存管理单元MMU介绍
7.1 内存管理单元MMU介绍 7.1.1 S3C2410/S3C2440 MMU特性 负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查 特性: 与ARM V4兼容的映射长度.域.访问权 ...
- 为什么没有MMU的处理器无法安装操作系统?
所谓的处理器就是计算机的核心运算硬件,现在使用windows操作系统的用户使用的机器之中的处理器多数都是X86内核,而实际之上很多时候我们用户都是会在心目之中把一个处理器和其运行的特定操作系统挂钩,之 ...
- ok6410,mmu,内存管理
MMU 一.MMU学习 MMU其实就是一个页表.将虚拟地址通过查表的方式,对应到物理地址去他由一个或一组芯片组成,一般存在与协处理器中. 1.将虚拟地址转化为物理地址 2.访问权限管理 1.1得出mm ...
- 关闭缓存和mmu(转)
当设置完时钟分频以后,uboot就会执行cpu_init_crit汇编函数,这个函数的主要作用就是关闭缓存和mmu,然后调用lowlevel_init函数进行系统总线的初始化. 为什么启动的时候,需要 ...
- 内存管理单元(MMU)和协处理器CP15介绍(转)
内存管理单元(MMU)和协处理器CP15介绍内存管理单元(MMU)介绍嵌入式系统中,存储系统差别很大,可包含多种类型的存储器件,如FLASH,SRAM,SDRAM,ROM等,这些不同类型的存储器件速度 ...
- Linux学习 : 裸板调试 之 使用MMU
MMU(Memory Management Unit,内存管理单元),操作系统通过使用处理器的MMU功能实现以下:1)虚拟内存.有了虚拟内存,可以在处理器上运行比实际物理内存大的应用程序.为了使用虚拟 ...
- MMU
1.MMU功能 将虚拟地址转化为物理地址:访问权限管理. 2.地址转化 2.1 总体分析 2.2 一级转换格式 位解释:(段设置) B:表示是否使能write buffer: C: 表示是否开启ca ...
随机推荐
- Flume的Avro Sink和Avro Source研究之一: Avro Source
问题 : Avro Source提供了怎么样RPC服务,是怎么提供的? 问题 1.1 Flume Source是如何启动一个Netty Server来提供RPC服务. 由GitHub上avro-rpc ...
- 大象的崛起!Hadoop七年发展风雨录
http://www.open-open.com/news/view/a22597 在互联网这个领域一直有这样的说法:“如果老二无法战胜老大,那么就把老大赖以生存的东西开源吧”.当年Yahoo!与Go ...
- 【leetcode】Word Ladder II(hard)★ 图 回头看
Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) from ...
- 阿里云,CentOS下yum安装mysql,jdk,tomcat
首先说明,服务器是阿里云的,centos6.3_64位安全加固版.首先需要登陆进来,使用的是putty,因为最初的时候,Xshell登陆会被拒绝. 0. 创建个人文件夹 # 使用 yum 安装tomc ...
- hdu 3400 Line belt 三分法
思路:要求最短时间从A到D,则走的路线一定是AB上的一段,CD上的一段,AB与CD之间的一段. 那么可以先三分得到AB上的一个点,在由这个点三分CD!! 代码如下: #include<iostr ...
- [itint5]判断是否为二叉搜索树
http://www.itint5.com/oj/#25 这题在leetcode上是用中序遍历来做的,但是这里由于有相等的情况,即左子树小于等于根,这样中序遍历无法完全判定.可以用递归来做,用递归给出 ...
- 前阿里CEO卫哲谈阿里创业经验:如何找人、找钱、找方向?(不同的阶段分别有:时间优先、金额优先、比例优先,不要做平台,太难)
新浪科技李根 整理报道 卫哲现在是御嘉基金的创始合伙人,他另一个更加知名的身份是阿里巴巴(B2B)前CEO,在2006年到2011年的时间里,卫哲见证了阿里巴巴如何利用人才.资本和方向选择一路壮大. ...
- Silverlight之OOB模式下的一些事
本文简介: 1.为什么要使用OOB?使用OOB的作用? 2.如何实现OOB模式 3.对OOB进行一些设置: 4.检测OOB的安装状态: 5.更新应用程序: 6.WebBrowser控件: 7.桌面通知 ...
- HDU4908——BestCoder Sequence(BestCoder Round #3)
BestCoder Sequence Problem DescriptionMr Potato is a coder.Mr Potato is the BestCoder.One night, an ...
- Android 九宫格密码锁进入程序
设置九宫格密码锁进入程序,设置,重置,取消等,安卓巴士地址http://www.apkbus.com/forum.php?mod=viewthread&tid=182620&extra ...