ARM“庖丁解牛”之存储器管理单元MMU
转:http://blog.sina.com.cn/s/blog_a07635070101bcbt.html
最近笔者详细地学习了由杜春雷老师编写的《ARM体系结构与编程》。对ARM存储管理单元MMU有了全新的认识。在这里写写心得体会,也可以对知识点儿梳理一下吧。
在谈MMU之前,笔者谈一下关于学习方法的问题。笔者在看第5章——ARM储存系统时,反复的对所讲到的内容进行思考推敲,但是当看完一遍、两遍时,笔者 发现还是对其中相关的一些概念理解不是很透彻,也就是有些概念很模糊,甚至老是弄的混淆了,更别说是相关的联系了。后来,笔者发现,杜老师的书写的是很详 细,但是缺少图解。而大对数人在学习过程中懒得动笔,光是在哪儿阅读课文,导致读完一遍是晕晕乎乎的,不知所云。于是,笔者对第5章看第三遍的时候,开始 用笔在纸上写写画画,不放过任何一句话。效果显然与前两遍不同了。在看第三遍的时候,笔者在纸上做了很多图,也记录的许多要点。等第三遍看完了,笔者眼前 一亮,对ARM的存储系统有了庖丁解牛般的感觉。其实好记性不如烂笔头完全可以这样理解,呵呵。好了接下来笔者开始谈谈关于ARM存储系统的问题。
一、相关概念
说是ARM存储系统,名字有些唬人,其实说白了不就是可以理解为是一个存储粮食的仓库嘛。既然是一个存储粮食的仓库,那当然就需要管理员啦。假设该仓库内 要存放20种粮食。管理员需要做的是把仓库分成若干个分区,一区、二区……二十区。然后,一区放玉米,二区放大米,三区放小米,依次类推将20种粮食在二 十个分区内对号入座,并将信息记录在档案本上。好,再来看ARM存储系统。先来看几个概念。
1、MMU
什么是MMU,暂且将他理解为MMU就是仓库的管理员,后面将会对其详细解释。
2、虚拟地址空间
显然,虚拟地址是一个抽象的概念,是存在于人的思维中的一个概念并不以实物的形式表现出来,比如在仓库中,当管理员把玉米存到A区后,脑子里就有了一条记 录:A区存放了玉米,并且管理员还知道这种玉米产于内蒙古。这条记录就是虚拟出来的东西了,并不以实物的形式表现出来。直到,管理员把这条记录用笔写到档 案本上之后,这条记录就以文字的形式表现出来了。虚拟地址空间就可以看作是在脑子里而未以实物的形式表现出来的一条条记录的集合。在ARM中采用了页式虚 拟内存管理。它把虚拟地址空间分成一个个固定大小的块,每一块称为一页。而一页就是上面提到的一条记录。这句话用图形语言表示出来就是:
这就是虚拟内存地址空间,地址空间分为若干虚拟页来管理。这其中的每一页便可看作是一条记录(记录了具体某种粮食的地址和备注信息)。虚拟地址空间中的每
一页同理具有自己的属性,分别是A、B和C属性。A属性是该虚拟内存页对应的真实物理内存地址;B属性是该虚拟内存页的的方位权限;C属性是该虚拟内存的
缓冲特性等。不厌其烦的再说一点:这个虚拟内存地址空间是凭空想象的并不是真实存在于ARM中的,后面会对其详细介绍,这里只需明白虚拟地址空间这个概念
就好。接下来在介绍一个概念。
3、物理内存地址空间
其实物理内存空间就是那个仓库了,当然这个仓库被管理员分为了一区、二区……二十区来管理。同理,在ARM中把物理内存地址空间分成与虚拟内存空间中虚页同样大小的若干页。用图形语言来描述一下:
这些页可分为三类,大页、小页和极小页。其中:
大页:是大小为64KB的存储块儿。
小页:是大小为4KB的存储块儿。
极小页:是大小为1KB的存储块儿。
这个大小就是反映了存储量了,就好比仓库里A区能够存储多少吨玉米一个意思啦。通过观察知每一页又被分成一行一行的样子。那么其中的每一行被称为一个页描述符。到这儿只需了解一下页描述符这个概念就可以了,详细后面会对其详细的介绍。
4、页表
页表是什么呢?想想看,物理内存空间中的某一页(实页)在仓库中对应着具体存储某种粮食的一块儿地方(有一定的面积)。虚拟地址空间中的某一页(虚页)又
对应着一条记录,比如说在管理员脑子中有条信息:A区存储着玉米,玉米产于内蒙古。那么像这样的记录要是多了,管理员肯定是就不住的,所以他要把这一条一
条的记录记到一个档案本子上,以便之后取粮食的时候方便查找。其实这个档案本儿就是页表了。图解页表:
页表是真实存在于内存中的一张表,页表中的每一行被称为一个地址变换条目,每个地址变换条目就是一条记录,即每个地址变换条目对应了虚拟地址空间中的某一虚页。
5、快表TLB(translation lookaside buffer)
那什么是快表呢?来看例子:比如说仓库里有上千中粮食,即档案本儿上有上千条记录,如果现在来个取粮食的货车要拉走1吨小麦,而小麦这条记录正好在589
条处记录着。货车司机来到仓库后,肯定要去查档案本了,看看小麦放在什么地址处。你想想看,如果他从第一条记录处开始查起,找到小麦得多长时间?不用说,
这肯定是很费劲儿的。你再想想看,当第一个货车拉走小麦后,又来了一辆货车(奇怪的是又是拉小麦,其实这种现象在微机中称作时间局部性:在一段相邻的时间
内,CPU访问相同数据的概率很大),司机在查找地址上又得费一番周折。再想想,如果接下来一个接一个的又来了10辆拉小麦的货车。真实郁闷了……。
呵呵,现在想想,有没有一种好办法让这个查找地址的效率提高点儿?答案是肯定的。如果在档案本的旁边再放一个快速查找记录本,记录下上次拉走的粮食种类和
地址。如果是这样再回头想想,后面来拉粮食的司机,一到仓库首先去查看这个快速查找记录本,看看有没有自己需要的记录。如果有,是不是就为自己节省了不少
时间。如果没有,再去档案本儿上查,查到后,这位司机再把自己需要的记录抄写到快速查找记录本上。这种方式是不是就大大提高了查找地址的效率。哈哈,不用
说,这个快速查找记录本就是快表TLB了。图解TLB:
显然,这个快表TLB就是页表的一个子集。当CPU需要访问内存时,现在TLB中查找需要的地址变换条目,如果该条目不存在,CPU从位于内存中的页表中查询,并把相应的结果添加到TLB中。这样,当CPU下一次又需要该地址变换条目时,就可以从TLB中直接得到,从而使地址变换的速度大大加快。
ARM“庖丁解牛”之存储器管理单元MMU的更多相关文章
- linux内核(四)内存管理单元MMU
1,基本概念 一个程序运行时没必要全部都同时装入内存,只需要把当前需要运行的部分装入内存即可,这样就使得一个大程序可以在较小的内存中运行,也使得内存中可以同时装入更多的程序并发执行,从用户角度看,该系 ...
- MMU——存储器管理单元
更多文档参见:http://pan.baidu.com/s/1qW0hjwo MMU,全称Memory Manage Unit, 中文名——存储器管理单元. 许多年以前,当人们还在使用DOS或是更古老 ...
- 转 s3c2440硬件学习----内存管理单元MMU
本篇基本是韦东山书上的 一.内存管理单元MMU介绍 内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查.MMU使得每个用户进程拥有自己独立的地址空间,并通过内存访 ...
- JZ2440 裸机驱动 第7章 内存管理单元MMU
本章目标: 了解虚拟地址和物理地址的关系: 掌握如何通过设置MMU来控制虚拟地址到物理地址的转化: 了解MMU的内存访问权限机制: 了解TLB.Cache.Write ...
- 第七章 内存管理单元MMU介绍
7.1 内存管理单元MMU介绍 7.1.1 S3C2410/S3C2440 MMU特性 负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查 特性: 与ARM V4兼容的映射长度.域.访问权 ...
- 三、内存管理单元---MMU
3.1 MMU介绍 3.1.1 MMU 特性 内存管理单元(Memory Management Unit)简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查.现在的多用户多进 ...
- 内存管理单元--MMU
现代操作系统普遍采用虚拟内存管理(Virtual Memory Management)机制,这需要处理器中的MMU(Memory Management Unit,内存管理单元)提供支持,本节简要介绍M ...
- MMU内存管理单元相关知识点总结
1.MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器.物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件 ...
- 内存管理单元(MMU)和协处理器CP15介绍(转)
内存管理单元(MMU)和协处理器CP15介绍内存管理单元(MMU)介绍嵌入式系统中,存储系统差别很大,可包含多种类型的存储器件,如FLASH,SRAM,SDRAM,ROM等,这些不同类型的存储器件速度 ...
随机推荐
- import as from import 区别
在python中import或者from…import是用来导入相应的模块.那每一种有什么具体的差别呢? 一.import 只有import,为最简单的引入对应的包.例如: import ...
- pageContext对象的用法详述
pageContext对象 这个对象代表页面上下文,该对象主要用于访问JSP之间的共享数据. pageContext是PageContext类的实例,使用pageContext可以访问page.re ...
- 24式太极拳:3D动画演示(图文)
http://blog.sina.com.cn/s/blog_4be33b740102e9ae.html 24式太极拳:3D动画演示(图文) (2013-03-10 18:45:55) 转载▼ 标签: ...
- POJ1080(LCS变形)
Human Gene Functions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- python几个重要的函数(lambda,filter,reduce,map,zip)
一.匿名函数lambda lambda argument1,argument2,...argumentN :expression using arguments 1.lambda是一个表达式,而不是一 ...
- python接口自动化11-post传data参数案例【转载】
前言: 前面登录博客园的是传json参数,有些登录不是传json的,如jenkins的登录,本篇以jenkins登录为案例,传data参数. 一.登录jenkins抓包 1.登录jenkins,输入账 ...
- [thinkphp] ajaxReturn案例
javascript: <script> $('.ajax-post').click(function(){ var action_url=$('form').attr('action') ...
- HDU 6319.Problem A. Ascending Rating-经典滑窗问题求最大值以及COUNT-单调队列 (2018 Multi-University Training Contest 3 1001)
2018 Multi-University Training Contest 3 6319.Problem A. Ascending Rating 题意就是给你长度为k的数列,如果数列长度k<n ...
- Problem C: #104. 普通平衡树
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #inc ...
- JavaScript处理异步请求的几种方式(取异步函数返回值)
JavaScript处理异步的几种方式 Javascript语言的执行环境是"单线程"(single thread,就是指一次只能完成一件任务.如果有多个任务,就必须排队,前面一个 ...