您的位置 首页 IOT

ARM中MMU的效果

让我们从历史发展的角度看MMU的作用这一部分可结合蔡于清的讲解【网址:http://www.another-prj.com/viewthread.php?tid=28extra=page…

让我们从前史开展的视点看MMU的效果

这一部分可结合蔡于清的解说【网址:http://www.another-prj.com/viewthread.php?tid=28&extra=page%3D1】来看,下面的大部分内容转载此处,针对自己的了解做了一些扩充性阐明。仅仅需求留意的是,在蔡于清此部分的解说中,有几处小的过错,完结此部分的解说后能够进行更正。

MMU功用部件是与虚拟内存技能(virtual memory)紧密联系在一起的。

第一阶段:开始,计算机内存很小,并且十分贵重,大多数都是以KB为单位的。相应的,其时程序规划很小,不杂乱,所以内存仍是能够满意需求的。在看《Linkers andLoaders》的时分,也是从这个阶段解说,不过此书的中心视角是从Linkers和Loaders的开展来看的。也便是,计算机刚刚呈现时,仍是比较粗陋的,各种杂乱的技能是伴随着人们需求的进步而呈现的。把握住这一点,就能够从需求的视点下手评论技能,能够剖析它怎么满意了这样的需求。经过这种剖析,了解上就比较简略一些了。

第二阶段:程序规划扩展,考虑到本钱问题,呈现了overlay技能,也便是内存掩盖战略。根本的原理便是把程序切割成许多称为“掩盖块”的片断。掩盖块0首要加载运转,结束时调用另一个掩盖块。掩盖块的调度是由OS来完结的,可是事前需求切割,这部分作业是程序员凭借Linkers来完结的。可是究竟单调,由此带来的开支也比较大。所以进入第三个阶段。

第三阶段:呈现virtual memory。虚拟存储器的根本思想是程序,数据,仓库的总的巨细能够超越物理存储器的巨细,操作体系把当时运用的部分保留在内存中,而把其他未被运用的部分保存在磁盘上。比方对一个16MB的程序和一个内存只要4MB的机器,OS经过挑选,能够决议各个时间将哪4M的内容保留在内存中,并在需求时在内存和磁盘间交流程序片段,这样就能够把这个16M的程序运转在一个只具有4M内存机器上了。而这个16M的程序在运转前不用由程序员进行切割。

伴随着这种技能的呈现,“virtual address,即VA”和“physical address,即PA”也就呈现了。一般来说,CPU看到的地址是VA,VA是有地址线来决议的。比方,s3c2410是32位的SoC,那么它的寻址空间为2^32=4GB,那么VA空间也便是4GB。可是在嵌入式体系中,物理存储器是不会有这么大的。现在这块s3c2410的实践内存SDRAM也就 64MB,远远小于4GB。也便是说,VA是4GB,PA是64MB,PA的地址空间是VA地址空间的子集。已然PA没有VA那么大,并且CPU只能看到 VA,那么CPU怎么找到PA呢?这也正是MMU的根本效果之一,便是供给VA到PA的转化机制,除了硬件的支撑外,软件上实践便是保护一张表,表中的内容是VA到PA的转化规律。因为有了MMU,那么就能够完成运用VA找到实践物理内存区域。

现在评论为什么要完成VA到PA的映射。就ARM而言,体系上电后,CPU的PC指向0x00000000或许0xffff0000,这是由CPU的设计者决议的。在这个方位,一般组织非易失性存储器地址空间,比方rom,flash等。可是flash等呼应速度慢,这就称为进步体系功用的一个瓶颈。而 sdram则具有很高的呼应速度,为了进步体系运转速度,能够把flash中的使用程序下载到sdram中履行,也便是一个简略的loader的功用完成。这样就呈现一个问题,ARM呼应exception时,程序指针指向固定的VA,比方,假定发生了IRQ中止,那么PC履行0x00000018(假如是高端发动,则指向0xffff0018处。)可是此处仍然为非易失性存储器,也便是说,程序的一部分仍然在flash或许rom中履行。这时能够运用 MMU,把sdram的地址映射到0x00000000开始的一片接连地址空间,而把本来flash映射到其他不相抵触的存储空间方位。例如,flash 的地址规模0x00000000-0x00ffffff,sdram的地址规模0x30000000-0x31ffffff。那么能够把sdram映射到 0x00000000-0x1fffffff(此处地址空间未被占用)。映射完结后,假如处理器反常,假定仍然为IRQ中止,pc指向 0x00000018,可是pc实践上是从物理地址0x30000018处读取指令。经过mmu的映射,能够完成体系运转的加快。这个当地也能够阐明 bootloader中常见的中止向量表的设置,为什么有些运用b,有些运用ldr了。【b的跳转空间只能是+-32M,而ldr能够大的多了。】

在实践的使用过程中,还可能会把两片不接连的物理地址空间分配给sdram,而在os中,习惯上把sdram的空间接连起来,便利完成动态内存办理。经过mmu能够完成不接连的物理地址空间映射为虚拟地址空间。

别的一个需求便是,完成不同的运转等级,那么一些要害的代码能够设定不被一般使用程序拜访。这也是经过mmu操控拜访权限来完成的。

综上三个阶段所述,可见MMU的效果首要便是两个:

· 完成VA到PA的映射(能够因而完成便利的动态内存办理)
· 完成不同的拜访权限。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/274709.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部