ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:279.73KB ,
资源ID:6773079      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6773079.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(S3C2440MMU详细说明.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

S3C2440MMU详细说明.docx

1、S3C2440MMU详细说明一、内存管理单元MMU介绍内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。MMU使得每个用户进程拥有自己独立的地址空间,并通过内存访问权限的检查保护每个进程所用的内存不被其他进程破坏。重点就在于地址映射:页表的结构与建立、映射的过程。1、S3C2440 MMU地址变换过程 1)地址的分类一个程序在运行之前,没有必要全部装入内存,仅需要将那些要运行的部分先装入内存,其余部分在用到时从磁盘载入,当内存不足时,再将暂时不用的部分调出到磁盘。这使得大程序可以在较小的内存空间中运行,也使得内存中可以同时装入更多的程序并发执行,这样的存

2、储器一般称为虚拟存储器。虚拟地址最终需要转换为物理地址才能读写实际的数据,通过将虚拟地址空间和物理空间划分为同样大小的空间(段或页),然后两个空间建立映射关系。由于虚拟地址空间远大于物理地址,可能多块虚拟地址空间映射到同一块物理地址空间,或者有些虚拟地址空间没有映射到具体的物理地址空间上去(使用到时再映射)。ARM cpu地址转换涉及三种地址:虚拟地址(VA,Virtual Address)、变换后的虚拟地址(MVA,Modified Virtual Address)、物理地址(PA,Physical Address)没有启动MMU时,CPU核心,cache,MMU,外设等所有部件使用的都是物

3、理地址。启动MMU后,CPU核心对外发出虚拟地址VA;VA被转换为MVA供cache,MMU使用,在这里MVA被转换成PA;最后使用PA读取实际设备CPU核心看到和用到的只是虚拟地址VA,至于VA如果去对应物理地址PA,CPU核心不理会caches和MMU看不到VA,他们利用MVA转换得到PA实际设备看不到VA、MVA,读写它们使用的是物理地址PAMVA是除CPU核心外的其他部分看到的虚拟地址,VA与MVA的变化关系如果VA32M,需要使用进程标识号PID(通过读CP15的C13获得)来转换为MVAif (VA 32M) then MVA = VA | (PID 25)else MVA = V

4、A使用MVA,而不使用VA的目的是,当有重叠的VA时,转换为MVA地址并不重叠,减小转换为PA的代价比如两个进程1、2,VA都是0-(32M-1),则MVA分别为0x02000000-0x03ffffff,0x04000000-0x05ffffff。下文说到虚拟地址,如果没有特别指出,就是指MVA2)虚拟地址到物理地址的转换过程arm cpu使用页表来进行转换,页表由一个个条目组成,每个条目存储一段虚拟地址对应的物理地址及访问权限,或者下一级页表的地址S3C2440最多会用到两级页表,以段(Section,1M)的方式进行转换时只用到一级页表,以页(Page)的方式进行转换时用到两级页表。页的

5、大小有3种:大页(64KB),小页(4KB),极小页(1KB)。条目也称为描述符,有:段描述符、大页描述符、小页描述符、极小页描述符-保存段、大页、小页、极小页的起始物理地址;粗页表描述符、细页表描述符,它们保存二级页表的物理地址。下图为S3C2440的地址转换图TTB base代表一级页表的地址,将它写入协处理器CP15的寄存器C2(称为页表基址寄存器)即可,一级页表的地址是16K对齐,使用31:14存储页表基址,13:0为0一级页表使用4096个描述符来表示4GB空间,每个描述符对应1MB的虚拟地址,存储它对应的1MB物理空间的起始地址,或者存储下一级页表的地址。使 用MVA31:20来索

6、引一级页表(20-31一共12位,212=4096,所以是4096个描述符),得到一个描述符,每个描述符占4个字节。一级页表描述符格式如下:一级页表描述符最低两位:0b00:无效0b01:粗页表(Coarse page table) 31:10为粗页表基址,此描述符低10位填充0后就是一个二级页表的物理地址,二级页表含256个条目(使用9:2,28=256 个),称为粗页表(Coarse page table)。其中每个条目表示4KB大小的物理地址空间,一个粗页表表示1MB物理地址0b10:段(Section) 31:20为段基址,、此描述符低20位填充0后就是一块1MB物理地址空间的起始地址

7、。MVA19:0,用来在这1MB空间中寻址。描述符的位31:20和MVA19:0构成了这个虚拟地址MVA对应的物理地址以段的方式进行映射时,虚拟地址MVA到物理地址PA的转换过程如下:页表基址寄存器位31:14和MVA31:20组成一个低两位为0的32位地址,MMU利用这个地址找到段描述符取出段描述符的位31:20(段基址),它和MVA19:0组成一个32位的物理地址(这就是MVA对应的PA)段地址转换过程0b11:细页表(Fine page table) 31:12为细页表基址(Fine page table base address),此描述符的低12位填充0后,就是一个二级页表的物理地址

8、。此二级页表含1024个条目(使用11:2,10位),其中每个条目表 示大小1kb的物理地址空间,一个细页表表示1MB物理地址空间以大页(64KB),小页(4KB)或极小页(1KB)进行地址映射时,需要用到二级页表,二级页表有粗页表、细页表两种,二级页表描述符格式如下:二级页表描述符最低两位:0b00:无效0b01:大页描述符 位31:16为大页基址,此描述符的低16位填充0后就是一块64KB物理地址空间的起始地址粗页表中的每个条目只能表示4KB物理空间,如果 大页描述符保存在粗页表中,则连续16个条目都保存同一个大页描述符。类似的,细页表中每个条目只能表示1KB的物理空间,如果大页描述符保存

9、在细页表 中,则连续64个条目都保存同一个大页描述符。下面以保存在粗页表中的大页描述符为例,说明地址转化那过程页表基址寄存器31:14和MVA31:20组成一个低两位为0的32位地址,MMU利用这个地址找到粗页表描述符取出粗页表描述符的31:10(即粗页表基址),它和MVA19:12组成一个低两位为0的32位物理地址,通过这个地址找到大页描述符取出大页描述符的31:16(即大页基址),它和MVA15:0组成一个32位的物理地址,即MVA对应的PA步骤和中,用于在粗页表中索引的MVA19:12、用于在大页内寻址的MVA15:0有重合的位15:12,当位15:12从0b0000变化到0b1111时

10、,步骤得到的大页描述符相同,所以粗页表中有连续16个条目保存同一个大页描述符大页的地址转换过程(大页描述符保存在粗页表中)0b10:小页描述符31:12为小页基址(Small page base address),此描述符的低12位填充0后就是一块4kb(11:0,一共12位,212=4096)物理地址空间的起始地址。粗页表中每个条 目表示4kb的物理空间,如果小页描述符保存在粗页表中,则只需要用一个条目来保存一个小页描述符。类似的,细页表中每个条目只能表示1kb的物理空间, 如果小页保存在细页表中,则连续4个条目都保存同一个小页描述符。下面以保存在粗页表中的小页描述符为例,说明地址转换过程:

11、页表基址31:14和MVA31:20组成一个低两位为0的32位地址,MMU利用这个地址找到粗页表描述符取出粗页表描述符31:10(即粗页表基址),它和MVA19:12组成一个低两位为0的32位物理地址,用这个地址找到小页描述符取出小页描述符的位31:12(即小页基址),它和MVA11:0组成一个32位物理地址(即MVA对应的PA)小页描述符保存在细页表中,地址转换过程和上面类似。小页的地址转换过程(小页描述符保存在粗页表中)0b11:极小页描述符 31:10为极小页基址(Tiny page base address),此描述符的低10位填充0后就是一块1KB物理地址空间的起始地址。极小页描述符

12、只能保存在细页表中,用一个条目来保存一耳光极小页描述符下面是极小页的地址转换过程:页表基址寄存器31:14和MVA31:20组成一个低两位为0的32位地址,MMU通过这个地址找到细页表描述符取出细页表描述符31:12(即细页表基址),它和MVA19:10组成一个低两位为0的32位物理地址,通过这个地址即可找到极小页描述符取出极小页描述符31:10(即极小页基址),它和MVA9:0组成一个32位的物理地址(即MVA对应的PA)极小页的地址转换过程(极小页描述符保存在粗页表中)从段、大页、小页、极小页的地址转换过程可知以段进行映射时,通过MVA31:20结合页表得到一段(1MB)的起始物理地址,M

13、VA19:0用来在段中寻址以大页进行映射时,通过MVA31:16结合页表得到一个大页(64KB)的起始物理地址,MVA15:0用来在小页中寻址以小页进行映射时,通过MVA31:12结合页表得到一个小页(4KB)的起始物理地址,MVA11:0用来在小页中寻址以极小页进行映射时,通过MVA31:10结合页表得到一个极小页(1KB)的起始物理地址,MVA9:0用来在极小页中寻址2、内存的访问权限检查它决定一块内存是否允许读、是否允许写。这由CP15寄存器C3(域访问控制)、描述符的域(Domain)、CP15寄存器C1的R/S/A位、描述符的AP位共同决定。“域”决定是否对某块内存进行权限检查,“A

14、P”决定如何对某块内容进行权限检查。S3C2440有16个域,CP15寄存器C3中每两位对应一个域(一共32位),用来表示这个域是否进行权限检查每两位数据的含义00:无访问权限(任何访问都将导致“Domain fault”异常)01:客户模式(使用段描述符、页描述符进行权限检查)10:保留(保留,目前相当于“无访问权限”)11:管理模式(不进行权限检查,允许任何访问)Domain占用4位,用来表示内存属于0-15,哪一个域例如:段描述符中的“Domain”为0b0010,表示1MB内存属于域2,如果域访问控制寄存器的5:4等于0b00,则访问这1MB空间都会产生“Domain fault”异常

15、,如果等于0b01,则使用描述符中的“Ap”位进行权限检查 粗页表中的“Domain”为0b1010,表示1MB内存属于域10,如果域访问控制寄存器的21:20等于0b01,则使用二级页表中的大页/小 页描述符中的ap3、ap2、ap1、ap0位进行权限检查,如果等于0b11,则允许任何访问,不进行权限检查。如下图: 一级页表描述符二级页表描述符AP、ap3、ap2、ap1、ap0结合CP15寄存器C1的R/S位,决定如何进行访问检查。段描述符中AP控制整个段(1MB)访问权限;大页描述符每个apx(0-3)控制一个大页(64KB)中1/4内存的访问权限,即ap3对应大页高端的 16KB,ap

16、0对应大页低端的16KB;小页描述符与大页描述符类似,每个apx(0-3)控制一个小页(4KB)的1/4内存的访问权限;极小页中的 ap控制整个极小页(1KB)的访问权限。下表为AP、S、R的对照表APSR特权模式用户模式说明0000无访问权限无访问权限任何访问将产生“Permission fault”异常0010只读无访问权限在超级权限下可以进行读操作0001只读只读任何写操作将产生”Permission fault“异常0011保留-01xx读/写无访问权限只允许在超级模式下访问10xx读/写只读在用户模式下进行写操作将产生Permission fault异常11xx读/写读/写在所有模式

17、下允许任何访问xx11保留-3、TLB的作用从MVA到PA的转换需要访问多次内存,大大降低了CPU的性能,有没有办法改进呢?程序执行过程中,用到的指令和数据的地址往往集中在一个很小的范围内,其中的地址、数据经常使用,这是程序访问的局部性。由此,通过使用一个高速、容量相对较小的存储器来存储近期用到的页表条目(段、大页、小页、极小页描述符),避免每次地址转换都到主存中查找,这样就大幅提高性能。这个存储器用来帮助快速地进行地址转换,成为转译查找缓存(Translation Lookaside Buffers, TLB)当CPU发出一个虚拟地址时,MMU首先访问TLB。如果TLB中含有能转换这个虚拟地

18、址的描述符,则直接利用此描述符进行地址转换和权限检查,否则MMU访问页表找到描述符后再进行地址转换和权限检查,并将这个描述符填入TLB中,下次再使用这个虚拟地址时就直接使用TLB用的描述符。使用TLB需要保证TLB中的内容与页表一致,在启动MMU之前,页表中的内容发生变化后,尤其要注意。一般的做法是在启动MMU之前使整个TLB无效,改变页表时,使所涉及的虚拟地址对应的TLB中条目无效。4、Cache的作用同样基于程序访问的局部性,在主存和CPU通用寄存器之间设置一个高速的、容量相对较小的存储器,把正在执行的指令地址附近的一部分指令或数据从主存调入这个存储器,供CPU在一段时间内使用,对提高程序

19、的运行速度有很大作用。这个cache一般称为高速缓存。写穿式(Write Through)任一CPU发出写信号送到Cache的同时,也写入主存,保证主存的数据同步更新。优点是操作简单,但由于主存速度慢,降低了系统的写速度并占用了总线的时间。回写式(Write Back)数据一般只写到Cache,这样可能出现Cache中的数据得到更新而主存中的数据不变(数据陈旧)的情况。此时可在Cache中设一个标志地址及数据陈旧的信息,只有当Cache中的数据被换出或强制进行”清空“操作时,才将原更新的数据写入主存响应的单元中,保证了Cache和主存中数据一致。Cache有以下两个操作:”清空“(clean)

20、:把Cache或Write buffer中已经脏的(修改过,但未写入主存)数据写入主存”使无效“(Invalidate):使之不能再使用,并不将脏的数据写入主存。S2C2440内置了指令Cache(ICaches)、数据Cache(DCaches)、写缓存(Write buffer),需要用到描述符中的C位(Ctt)和B位(Btt)1)指令Cache(ICaches)系统刚上电或复位时,ICaches中的内容是无效的,并且ICaches功能关闭。往Icr位(CP15协处理器中寄存器1的第12位)写1可以启动ICaches,写0停止ICachesICaches一般在MMU开启后使用,此时描述符的

21、C位用来表示一段内存是否可以被Cache。若Ctt=1,允许Cache,否则不允许。如果MMU没有开启,ICaches也可以被使用,此时CPU读取指令时所涉及的内存都被当做允许CacheICaches关闭时,CPU每次取指都要读取主存,性能低,所以通常尽早启动ICachesICaches开启后,CPU每次取指时都会先在ICaches中查看是否能找到所用指令,而不管Ctt是0还是1。如果找到成为Cache命中,找不到称为Cache丢失,ICaches被开启后,CPU的取指有如下三种情况:Cache命中且Ctt为1时,从ICaches中取指,返回CPUCache丢失且Ctt为1时,CPU从主存中取

22、指,并且把指令缓存到Cache中Ctt为0时,CPU从主存中取指2)数据Cache(DCaches)与ICaches相似,系统刚上电或复位时,DCaches中的内容无效,并且DCaches功能关闭,Write buffer中的内容也是被废弃不用的。往Ccr位(CP15协处理器 中寄存器1的第二位)写1启动DCaches,写0停止DCaches。Write buffer和DCaches紧密结合,额米有专门的控制来开启和停止它与ICaches不同,DCaches功能必须在MMU开启之后才能被使用。DCaches被关闭时,CPU每次都去内存取数据。DCaches被开启后,CPU每次读写数据时都会先在

23、DCaches中查看是否能找到所要的数据,不管Ctt是0还是1,找到了成为Cache命中,找不到成为Cache丢失。通过下表可知DCaches和Write buffer在Ccr,Ctt,Btt各种取值下,如何工作,Ctt and Ccr 意为 Ctt与Ccr进行逻辑与后的值Ctt and CcrBttDCaches、Write buffer 和主存的访问方式00Non-cached,non-buffered(NCNB)读写数据时都是直接操作主存,并且可以被外设中止;写数据时不使用Write buffer,CPU会等待写操作完成;不会出现Cache命中01Non-Cached buffered(

24、NCB)读数据时都是直接操作主存;不会出现Cache命中;写数据时,数据线存入Write buffer,并在随后写入主存;数据存入Write buffer后,CPU立即继续执行;读数据时,可以被外设中止;写数据时,无法被外设中止10Cached,write-through(写通)mode读数据时,如果Cache命中则从Cache中返回数据,不读取主存;读数据时,如果Cache丢失则从读主存中返回数据,并导致“linefill”的动作;写数据时,数据先存入Write buffer,并在随后写入主存;数据存入Write buffer后,CPU立即继续执行;写数据时,如果Cache命中则新数据也写入

25、Cache中;写数据时,无法被外设中止11Cached,write-back(写回) mode读数据时,如果Cache命中则从Cache中返回数据,不读取主存;读数据时,如果Cache丢失则从读主存中返回数据,并导致“linefile”的动作;写数据时,如果Cache丢失则将数据先存入Write buffer,存储完毕后CPu立即继续执行,这些数据在随后写入主存;写数据时,如果Cache命中则在Cache中更新数据,并设置这些数据为”脏的“,但是不会写入主存;无论Cache命中与否,写数据都无法被外设中止使用Cache时需要保证Cache、Write buffer的内容和主存内容一致,保证下面

26、两个原则:清空DCaches,使主存数据得到更新使无效ICaches,使CPU取指时重新读取主存在实际编写程序时,要注意如下几点:开启MMU前,十五小ICaches,DCaches和Write buffer关闭MMU前,清空ICaches、DCaches,即将”脏“数据写到主存上如果代码有变,使无效ICaches,这样CPU取指时会从新读取主存使用DMA操作可以被Cache的内存时,将内存的数据发送出去时,要清空Cache;将内存的数据读入时,要使无效Cache改变页表中地址映射关系时也要慎重考虑开启ICaches或DCaches时,要考虑ICaches或DCaches中的内容是否与主存保持一

27、致对于I/O地址空间,不使用Cache和Write buffer5、S3C2440 MMU、TLB、Cache的控制指令S3C2440除了ARM920T的CPU核心外,还有若干个协处理器,用来帮助主CPu完成一些特殊功能。对MMU、TLB、Cache等的操作涉及到协处理器。条件 协处理器编码,协处理器操作码1,目的寄存器,源寄存器1,源寄存器2,协处理器操作码2 cond p#,Rd,cn,cm,MRC /从协处理器获得数据,传给ARM920T CPU核心寄存器MCR /数据从ARM920T CPU核心寄存器传给协处理器cond /执行条件,省略时表示无条件执行p# /协处理器序号 /一个常数

28、Rd /ARM920T CPU核心的寄存器cn和cm /协处理器中的寄存器 /一个常数其中,、cn、cm、仅供协处理器使用,它们的作用如何取决于具体的协处理器二、MMU使用实例:地址映射这个实例将开启MMU,并将虚拟地址0xA0000000-0xA0100000映射到物理地址0x56000000-0x56100000(GPBCON物理地址为0x56000010,GPBDAT物理地址为0x56000014),来驱动LED。将虚拟地址0xB0000000-0xB3FFFFFF映射到物理地址0x30000000-0x33FFFFFF,在连接程序时,将一部分代码的运行地址指定为0xB0004000.这

29、 个程序只使用一级页表,以段的方式进行地址映射,32位CPU虚拟地址空间达到4G,一级页表使用4096个描述符来表示4G空间(每个描述符对应 1MB),每个描述符占4字节,所以一级页表占16KB。这个程序使用SDRAM的开始16KB存放一级页表,所以剩下的内存开始地址就为 0x30004000,这个地址最终会对应虚拟地址0xB0004000(所以代码运行地址为0xB0004000)程序分为两部分:第一部分的运行地址为0,它用来初始化SDRAM,复制第二部分的代码到SDRAM中(存放在0x30004000)、设置页表、启动MMU,最后跳到SDRAM中(地址0xB0004000),第二部分运行地址设为0xB0004000,用来驱动LED先看连接文件mmu.ldsSECTIONS firtst 0x00000000 : head.o init.o second 0xB0004000 : AT(2048) leds.o 程序分两个段:first和second。first由head.o和init.o组成,加载和运行地址都是0,second由leds.o组成,加载地址为2048,重定位地址为0xB0004000。*

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1