ARM存储管理系统MMU

发布者:WhisperingWaves最新更新时间:2016-07-13 来源: eefocus关键字:ARM  存储管理系统  MMU 手机看文章 扫描二维码
随时随地手机看文章
 一、虚拟地址和物理地址的区别

        CPU通过地址来访问内存中的单元,地址有虚拟地址和物理地址之分。如果CPU没有MMU(Memory Management Unit,内存管理单元),或者有MMU但没有启用,CPU在访问内存时发出的地址将直接传送到地址总线上,使具有相同地址的物理存储器被读写。这称为物理地址(Physical Address,以下简称PA),如下图所示:

ARM存储管理系统MMU

          图 1. 物理地址示意图

         如果CPU启用了MMU,CPU核发出的地址将被MMU截获,从CPU到MMU的地址称为虚拟地址(Virtual Address,以下简称VA),而MMU将这个地址翻译成真正的物理地址发送到地址总线上,也就是将虚拟地址映射成物理地址,如下图所示:

 ARM存储管理系统MMU
     

       图 2. 虚拟地址示意图

 

二、虚拟地址映射物理地址原理

         页表是实现虚拟地址到物理地址转换的一个重要手段。我们在使用MMU以前,需要在内存中新建一个页表。表中的每一行(即一个字的大小)存放的是一个物理内存页的基地址,该页的访问权限和缓冲特性等,这里将页表中这样的一行称为一个地址变换条目。页表存放在内存中,CP15的C2寄存器用来存放页表的基地址。

       多数使用虚拟存储器的系统都使用一种称为分页(paging)。虚拟地址空间划分成称为页(page)的单位。而相应的物理地址空间也被进行划分,单位是页框(frame).页和页框的大小必须相同。

       虚拟地址被MMU分为两部分,,第一部分是页号索引(page Index),第二部分则是相对该页首地址的偏移量(offset)

       当CPU访问一个地址时,该地址是虚拟地址,于是该地址被送到MMU,MMU再根据虚拟地址的高几位作为页号索引,在页表中寻找对应的地址变换条目。从地址变换条目中找到物理地址的页基地址,再加上虚拟地址中的偏移量,便得到了真正的物理地址,然后由MMU将物理地址发送到地址总线上,访问物理内存。

        那么MMU是如何使用页号索引在页表中找到对应的地址变换条目呢?MMU会用CP15协处理其中的C2寄存器存放的页表基地址加上虚拟地址的页号索引值,然后便得到了页表中对应的地址变换条目的地址。其实页号索引就是相对于页表基地址的一个偏移量,然后使用基地址加偏移量的方式得到一个页表中的地址。

例:如图所示,如果分页大小为1M,虚拟地址为0x30000012,

虚拟地址的二进制码为  00110000  00000000  00000000  00010010    前12位为页号索引,后20位为偏移量,因为2^20 = 1M

前12位页号索引为00110000 0000 = 768,所以在页表中找到相对于页表基地址的偏移量为768的地址,然后得到地址变换条目。于是0x0300 << 20位,便得到了物理页基地址,再加上虚拟地址中的偏移位 0000  00000000  00010010 = 0x12,便得到了真正的物理地址 0x30000012 。 

  ARM存储管理系统MMU
ARM存储管理系统MMU
     

1、TLB的概念      

        从虚拟地址到物理地址的变换过程其实就是查询页表的过程,由于页表存放在内存中,这个查询过程通常代价很大。而程序在执行过程中具有局部性,也就是说,一段时间内,对页表的访问只是局限在少数几个单元中。根据这个特点,采用一个容量更小、访问速度更快的存储器来存放当前访问需要的地址变换条目。这个小容量的页表称为快表,也称TLB.

       当CPU访问内存时,现在TLB中查找需要的地址变换条目。如果该条目不存在,CPU从位于内存的页表中查询,并把相应的结果添加到TLB中。这样,当CPU下一次又需要该地址变换条目时,可以从TLB中直接得到,从而使地址变换的速度大大加快。

       当内存中的页表内容改变,或者通过修改CP15中的寄存器C2使用新的页表时,TLB的内容需要全部清除。MMU提供了相关的硬件支持这种操作。CP15中的寄存器C8用来    控制清除TLB内容的相关操作。

      MMU可以将某些地址变换条目锁定在TLB中,从而使得进行与该地址变换条目相关的地址变换速度保持很快。在MMU中C10用于控制TLB内容的锁定。

注:TLB中存放的是地址变换条目,相当于一个小页表。

  • 使无效TLB内容
        当内存中的页表内容改变,或者通过修改协处理器CP15的寄存器来使用新的页表时,TLB中的内容需要全部或者部分使无效。所谓使无效是指将TLB中的某个地址的地址变换条目表示成无效,从而在TLB中找不到该地址变换条目,而需要到内存页表中重新查找该地址变换条目。如果不进行TLB的使无效操作,可能造成同一个虚拟地址对应于不同的物理地址(TLB中保存的还是旧的地址映射关系,而内存中的页表已经存了新的地址映射关系)。

        有时候页表可能只是部分内容改变了,只影响了很少的地址映射关系,这种情况下,可以只使无效TLB对应的单个地址变换条目可能会提高系统性能。

      系统协处理器CP15的寄存器C8就是清除TLB内容的相关操作。它是一个只写的寄存器。

        MCR    p15,0,Rd,c8,CRm,opcode_2

        Rd中为要写入C8寄存器的内容,CRm和opcode_2的不同组合决定指令执行的不同操作。

指令

Rd

含义

MCR p15, 0, Rd, c8, c5, 0

0

使无效整个指令TLB

MCR p15, 0, Rd, c8, c5, 1

虚拟地址

使无效指令TLB中的单个地址变换条目

MCR p15, 0, Rd, c8, c6, 0

0

使无效整个数据TLB

MCR p15, 0, Rd, c8, c6, 1

虚拟地址

使无效数据TLB中的单个地址变换条目

MCR p15, 0, , c8, c7, 0

0

使无效整个数据和指令TLB

MCR p15, 0, , c8, c7, 1

虚拟地址

使无效数据和指令TLB中的单个地址变换条目

  • 锁定TLB的内容

      

2、存储访问过程

         a、使能MMU时的存储访问过程。

         当ARM处理器请求存储访问时,首先在TLB中查找虚拟地址。如果系统中数据TLB和指令TLB是分开的,在取指令时,从指令TLB查找相应的虚拟地址,对于其他内存访问操作,从数据TLB中查找相应的虚拟地址。                                                                                                        

        如果虚拟地址对应的地址变换条目不在TLB中,CPU从位于内存的页表中查询,并把相应的结果添加到TLB中。如果TLB已经满了,还需要根据一定的淘汰算法进行替换。这样,当CPU下一次又需要该地址变换条目时,可以从TLB中直接得到,从而使地址变换的速度大大加快。

       当得到了需要的地址变化条目以后,将进行以下操作  

          (1)得到该虚拟地址对应的物理地址
          (2)根据条目中的C(cache)控制位和B(Bufferable)控制位决定是否缓存该内存访问的结果 
(3)根据存取权限控制位和域访问控制位确定该内存访问是否被允许。如果该内存访问不被允许,CP15向ARM处理器报告存储访问中止。
(4)对于不允许缓存的存储访问,使用步骤(1)中得到的物理地址访问内存。对于允许缓存的存储访问,如果在cache命中,则忽略物理地址;如果cache没有命中,使用步骤(1)中得到的物理地址访问内存,并把该块数据读取到cache中。
            ARM存储管理系统MMU
 
      b、禁止MMU时存储访问过程
  • 禁止MMU时,是否支持cache和write buffer由各个具体芯片的设计确定。如果芯片规定禁止MMU时禁止cache和write buffer,则存储访问将不考虑C、B控制位。如果芯片规定当禁止MMU时可以使能cache和write buffer,则数据访问时,C=0,B=0;指令读取时,如果使用分开的TLB则C=1,如果使用统一的TLB则C=0;
  • 存储访问不进行权限控制,MMU也不会产生存储访问中止信号
  • 所有的物理地址和虚拟地址相等,即使用平板模式
     c、禁止/使能MMU时应注意的问题
  • 在使能MMU之前,要在内存中建立页号表,同时CP15中的各相关寄存器必须完成初始化。
  • 如果使用的不是平板存储模式(物理地址和虚拟地址相等),在禁止/使能MMU时,虚拟地址和物理地址的对应关系会发生改变,这时应该清除cache中的当前地址变换条目
  • 如果完成禁止/使能MMU的代码的物理地址和虚拟地址不相同,则禁止/使能MMU时会造成很大麻烦,因此强烈建议完成禁止/使能 MMU的代码的物理地址和虚拟地址最好相同      
3、MMU中的地址变换过程
        在ARM中,虚拟地址到物理地址的映射有两种方式,一级映射和二级映射。
  
  a、一级映射 
        当使用一级映射时,只会用到一张页表,我们将它称为一级页表,用L1表示。一级映射时,虚拟空间被划分成段的单位,每段的大小为1M。而相应的物理空间也被进行这样的划分,单位是段框,段和段框的大小必须相同。
         于是,首先在内存中建立一张页表(这个页表由我们自己建立),页表中的每一项存放的是一个物理段基地址,该页的访问权限和缓冲特性等。页表中每一项的大小为4字节,所以每一项的地址是字对齐。我们将页表中的每一格称为一个项。
    因为ARM的可寻址范围为4G,且虚拟空间的每段大小为1M,所以如图所示,页表有4096个项。每一项对应一个段,每一项中存放的是一个物理段基地址,该页的访问权限和缓冲特性等。
         虚拟地址被MMU分为两部分,第一部分为页索引号(bits[31:20]),第二部分是相对物理地址的偏移量(bits[0:19])。
      所以当访问一个地址时,此地址是虚拟地址。MMU会用协处理器CP15的C2寄存器中的页表基地址+页索引号便查到了页表中对应的一项,从页表中相应的项中找到物理段基地址,然后:物理段基地址 +  偏移量(这个是虚拟地址的第二部分) = 物理地址。
注:虚拟空间并不真实存在,只是为方便理解才这么说。
例:
CPU要访问0x300008的地址,此地址为虚拟地址。MMU会根据页索引号(也就是 0x3 )找到相对页表基地址偏移量为0x3的项。这个项中的物理段基地址为0x006。
物理地址 = (0x006<<20)+0x8=0x600008 
 
一级页表中一项的详细内容如下表所示:
 
段基地址:也就是物理空间的段首地址,1M大小对齐
AP:    访问控制位Access Permission
域:     标明了当前段属于哪个域 。Domain与AP配合使用,对访问权限进行检查
C:      如下表所示
B:      如下表所示


bits[1:0]:
00:相应1M的虚拟空间并没有被映射到物理空间,因此访问该存储空间将会产生地址变换失效信号,所以bits[31:2]的内容无效
10:这是一个一级映射的地址变换,所以存储的是要访问的物理段基地址 
01:这是一个二级映射的地址变换,所以存储的是粗粒度的二级页表的基地址(后面会讲)11:这是一个二级映射的地址变换,所以存储的是细粒度的二级页表的基地址(后面会讲)
 
域标明了当前段属于哪个域。然后该段便具有了和该域一样的访问权限。
 
CP15 的寄存器 C3:

31                                                                                                     0

D15

D14

D13

D12

D11

D10

D9

D8

D7

D6

D5

D4

D3

D2

D1

D0

在 CP15的C3寄存器中,划分了 16个域,每个区域由两位构成,这两位说明了当前内存的检查权限:
00:当前级别下,该内存区域不允许被访问,任何的访问都会引起一个domain fault,这时 AP位无效
01:当前级别下,该内存区域的访问必须配合该内存区域的段描述符中AP位进行权检查
10:保留状态(我们最好不要填写该值,以免引起不能确定的问题)
11:当前级别下,对该内存区域的访问都不进行权限检查。 这时 AP位无效 
 
所以只有当相应域的编码为 01 时,才会根据  AP位 和协处理器CP15中的C1寄存器的S,R位进行权限检查
 
 
 
 
 

 
 
 
 
 
 
 

关键字:ARM  存储管理系统  MMU 引用地址:ARM存储管理系统MMU

上一篇:ARM存储器之:协处理器CP15
下一篇:ARM基础知识教程四:ARM存储系统概述

推荐阅读最新更新时间:2024-03-16 15:00

TQ210——时钟系统
1、时钟域 一般来讲, MCU 的主时钟来源主要是外部晶振或外部时钟,比较常见的是 外 部晶振。一般情况,系统内所使用的时钟都是高频率的时钟,外部晶振一般达不到那么高的频率,所以一般使用锁相环电路(PLL)进行倍频,而TQ210 正是通过外接24MHz 的外部晶振,通过一定的倍频达到更高的频率。 S5PV210内部包含三个时钟域: MSYS(mainsystem):主时钟域【Cortex-A8处理器、DRAM控制器(DMC0& DMC1)、3D、IROM& IRAM、INTC、SEPRI等。最高工作频率200MHz】 DSYS(displaysystem):显示时钟域【显示相关的模块,如FIMC、FIMD、JPEG、多媒体Ip
[单片机]
TQ210——时钟系统
全新Arm IP拉升智能沉浸式体验主流市场
“我们的设计理念是为主流的设备带来最极致的体验。我们在设计这些IP时研究了不同市场的用户体验,我们的想法是如何使硬件、软件相结合,并且发挥生态系统的力量来提升使用体验。我们的IP组合一直沿袭我们所倡导的大小核理念,既有比较高端的配置,如Mali-G57和Ethos-N57,也有入门级低端的产品,如Mali-D37。”在近日举办的arm Tech Symposia 2019上,Arm市场营销副总裁Ian Smythe向EEWorld记者介绍道。 全新命名问世 延展主流市场 Arm ML事业群商业与营销副总裁Dennis Laudick传达了两点信息:“第一,我们今天正式向外界介绍Ethos这个全新的ArmML的处理器
[嵌入式]
全新<font color='red'>Arm</font> IP拉升智能沉浸式体验主流市场
ARM携手台积电22纳米制程,抢攻移动设备及物联网芯片市场
IP授权公司安谋(Arm)于 4 日宣布,旗下 Arm Artisan 物理 IP 将使用台积电针对 Arm 架构开发的单芯片处理器(SoC),并用于 22 纳米超低功耗(ultra-low power,ULP)与超低漏电(ultra-low leakage,ULL)的产品平台。 Arm 指出,台积电 22 纳米 ULP / ULL 制程是针对主流行动与物联网设备进行最佳化设计。不仅能提升基于 Arm 架构的 SoC 效能,与台积电前一代 28 纳米 HPC+ 制程平台相较,更可显著降低功耗及芯片面积。 Arm 物理设计事业群总经理 Gus Yeung 表示,这项次世代制程技术能在更低功耗和更小面积下加入更多功能,且结合
[半导体设计/制造]
基于ARM7和CAN总线的电子送经卷取系统设计
  本文利用性价比高的主控器ARM7-LPC2194、CAN接收器PCA82C250和TLP2631,设计了一种基于ARM7的纺织机送经和卷取系统,实现了送经卷取系统总线的网络节点设计,较好地解决了纺织机的电子送经和卷曲系统的数据传输问题。另外,本文系统的通信方案,对于其它工业测控领域也是可取的。   针对纺织机电子送经和卷取系统的数据传输效率低等问题,设计了一套基于CAN总线的送经和卷取的系统,该系统以CAN总线为通信方式,利用ARM主控制器,设计了电子送经和卷取系统的CAN总线通信硬件电路和相关软件,实现了主控结点与卷取驱动器和送经驱动器的高效通信,结果表明了该方法的有效性和可靠性。   电子送经卷取系统是纺织工艺流程的一
[电源管理]
基于<font color='red'>ARM</font>7和CAN总线的电子送经卷取系统设计
联发科MT8135与ARM合作
    联发科率先将ARM旗下big.LITTLE(大小核)架构的应用处理器解决方案,导入公司新一代4核心平板电脑晶片MT8135的动作,除凸显全球平板电脑晶片市场也将吹起big.LITTLE风之外,联发科接连取得ARM Cortex-A50系列处理器核心和新Mali绘图处理器(GPU)解决方案的情形,也将壮大ARM在全球CPU与GPU IP市场的声势。 联发科行销长Johan Lodenius直言,透过ARM Cortex系列处理器、Mali绘图处理器和CoreLink CCI-400技术,联发科将可大幅提升旗下晶片解决方案在各个行动装置上,面对各种应用程式的运算速度与效率,充分达到功耗和效能的完美平衡。而面对多萤幕(Multi
[手机便携]
ARM基础学习-存储管理单元MMU
在ARM系统中,存储单元MMU的主要完成以下工作: (1) 虚拟存储空间到物理存储空间的映射;ARM 采用页式虚拟存储管理,把虚拟空间分成固定大小的块,每一块称为一页;物理内存地址空间也分成同样大小的页;页的大小分为粗粒度和细粒度;MMU需要实现虚拟地址到物理地址的转换; (2) 存储器访问权限的控制; (3) 设置虚拟存储空间的缓冲的特性; 页表是实现MMU的重要手段,页表存储与内存中,表的每一行对应于虚拟空间的一个页,该行包含了虚拟内存页对应的物理内存页的地址;通过CP15协处理器的寄存器C2来保存页表的基地址; TLB (1)概念 在程序运行的一段时间内,对页表的访问只是局限在少数的几个单元中,可以采用一个容
[单片机]
<font color='red'>ARM</font>基础学习-<font color='red'>存储</font>管理单元<font color='red'>MMU</font>
ARM+PLC的裁床数据处理系统研究
引言 随着经济发展和人民生活水平的提高,消费者对产品的需求和品质的要求不断提高 。这就需要产品的加工精度越来越高,并且加工周期越来越短。本设计中的裁床主要是针对服装等相关行业的软性材料裁剪,国内在该方面自动化程度不高,生产效率低,在劳动力成本不断提高的情况下,急切需要提高自动化程度。目前先进的CAD/CAM系统基本被国外的公司占据,较著名的公司有美国的Gerber公司和法国的力克公司,进口设备昂贵,维护维修成本高,中国的服装企业急需性价比高的裁床。 1 数据处理系统功能分析 数据处理系统主要包括PLT文件数据处理模块和通信模块。为了保证系统有较好的数据处理能力,系统以ARM CortexA8处理器为核心,嵌入式操作系统使用微软
[单片机]
<font color='red'>ARM</font>+PLC的裁床数据处理系统研究
ARM7的嵌入式Web服务器设计技术
1 概述 随着嵌入式技术和网络技术的发展,嵌入式设备通过网络接入局域网或者Internet逐步成为一种发展趋势。嵌入式Web服务器技术以其良好的通用性和交互性为嵌入式设备提供网络接口,对嵌入式设备实现远程管理和控制,是实现嵌入式设备网络化的重要技术。 本设计提出的基于ARM7的嵌入式Web服务器设计有三大技术亮点: ①采用浏览器/服务器(B/S)通信架构。与客户机/服务器通信架构相比,B/S架构无需在客户端上开发专门的应用软件,只需从浏览器上输入IP地址,直接对设备进行远程监控。 ②传统的Web服务器需要一个数据库系统的支持用来保存内容,因而对用于存储的硬件设备要求更高,增加了成本。本设计只需构建一个简单的文件系统
[单片机]
<font color='red'>ARM</font>7的嵌入式Web服务器设计技术
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved