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等,这些不同类型的存储器件速度 ...
随机推荐
- jQuery通过CSS()方法给指定的元素同时设置多个样式
<!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis.com/ajax ...
- bzoj 2662&bzoj 2763 SPFA变形
我们用dis[i,j]代表到i这个点,用j张票的最短路程,那么我们只需要在SPFA更新 的时候,用dis[i,j]更新dis[p,j]和dis[p,j+1]就行了 /***************** ...
- IOS工程自动打包并发布脚本实现
http://blog.csdn.net/ccf0703/article/details/8588667 文章首发地址:http://webfrogs.me/2013/02/18/ios-automa ...
- 程序员面试宝典 笔记(第六章 预处理 const 和sizeof())
void main() { "; cout<< cout<< "; cout<< cout<<strlen(ss2)<< ...
- centos7安装tengine强制使用HTTPS访问
操作系统:centos7.2 x64tengine:Tengine/2.2.0主机IP: 10.0.0.12 一.安装tengine 1.1 下载源码安装包 1.1.1 源码包pcre-8.40 ...
- ipad/iphone中的前端调试
需要在ipad上调试代码, 经过一番搜索(多在google搜到的), 稍微整理下 : ). 1. Settings -> Safari -> Advanced/Developer -> ...
- ECharts问题--散点图中对散点添加点击事件
1. 我们这次就没有先讲解怎么使用散点图了,这个跟之前的一些图还是很类似的,不会的可以去官网上面查看 API 使用.我们这次讲解的是为散点图中的散点添加点击事件,然后在图表之外的一个 div 里面显示 ...
- selenium TestNG基本注释和属性
TestNG注释详解 suite 属性说明: @name: suite 的名称,必须参数@junit:是否以Junit 模式运行,可选值(true | false),默认"false&quo ...
- hdu 3304(直线与线段相交)
Segments Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12042 Accepted: 3808 Descrip ...
- JAVA的线程学习、并发线程的学习
http://blog.csdn.net/column/details/multithreading.html http://blog.csdn.net/fhd001/article/details/ ...