您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 第3章 第4节 ARM内存管理单元
第3章ARM体系结构3.4ARM内存管理单元ARMMMU概述ARMMMU的功能ARMMMU的操作ARMMMU的地址转换ARMMMU概述MMU是内存管理单元(MemoryManagementUnit)的缩写。MMU在处理器中实现内存管理的功能,完成物理地址到虚拟地址的映射。MMU本身有少量存储空间存放从虚拟地址到物理地址的匹配表。此表称作TLB(转换旁置缓冲区)。所有数据请求都送往MMU,由MMU决定数据是在RAM内还是在大容量存储器设备内。如果数据不在存储空间内,MMU将产生页面错误中断。在通常情况下,MMU的两个主要功能是:1.将虚地址转换成物理地址2.控制内存的访问权限MMU关闭时,虚地址直接输出到物理地址总线。ARMMMU的功能CP15的主要管理和配置功能如下;页表TLB(转换旁路缓冲器)域和访问权限Cache和写缓冲器快速上下文切换ARMMMU的功能CP15协处理器的功能模块:功能使用寄存器全局控制寄存器0、1MMU寄存器2、3、4、5、6、8,10以及寄存器1中的部分MPU寄存器2、3、5、6以及寄存器1中的部分Cache和WriteBuffer寄存器7、9FSCE寄存器13测试和时钟控制寄存器15保留寄存器11、12、14ARMMMU的操作MMU的功能相关的CP15中寄存器的描述寄存器主要操作R1使能/禁止MMU、cache、写缓冲R2设置变换表基地址(16k对齐)R3设置16个域的访问权限R8操作TLB功能(无效统一TLB、无效指令或数据TLB)主内存转换表遍历高速缓冲行预取TLBCache和写缓冲访问控制器件ARM物理地址(PA)访问域位终止C\B位当MMU被禁止的时候存储器按如下处理:根据具体的情况决定是否允许Cache和写缓冲没有存储区访问的权限,MMU也不会产生异常信号物理地址的虚拟地址相同,即平板(flataddressmapping)地址映射模式ARMMMU的操作R1控制寄存器(类型:ARMv3:只写,ARMv4:读写)M(位[0]):允许MMUA(位[1]):允许定位故障检测C(位[2]):允许数据Cache或者统一CacheW(位[3]):允许写缓冲P(位[4]):从26-32位异常处理D(位[5]):从26-32位地址区域L(位[6]):至上一次中止区域B(位[7]):从小端到大端S(位[8]):修改MMU系统ZFRS891011UNP/SBZPPRVI121314WCAM0123BLDP45671531ARMMMU的操作R(位[9]):ROM保护状态F(位[10]):控制外协处理器通信速度Z(位[11]):允许分支预测I(位[12]):允许指令CacheV(位[13]):向量地址(从0x00000000-0x0000001C到0xFFFF0000-0xFFFF001C)RR(位[14]):控制Cache置换算法L4(位[15]):对于ARMv5以后版本,控制向后兼容位[31:16]:保留注意:对于MMU,其实只和CP15的寄存器的0、1、8、9位有关ARMMMU的操作R2地址变换表基址寄存器(类型:ARMv3:只写,ARMv4:读写)位[31:14]:变换表基地址,定位界限为16KBUNP/SBZP1431变换表基地址0ARMMMU的操作R3域访问控制寄存器:(类型:ARMv3:只写,ARMv4:读写)D11D10D9D8891011D14D13D12121314D3D2D1D00123D7D6D5D44567D152324252627282915161718192021223031数据的含义如下:00不允许访问,任何访问将产生域错误01客户(Client)使用域,根据段和页描述符的访问权限检验10保留11管理(Manager)使用域,不检查访问许可位,任何都不会产生域错误ARMMMU的操作R6故障地址寄存器:(类型:ARMv3:只读,ARMv4:读写)上一次数据存取中止的地址ARMMMU的操作R5故障状态寄存器:(类型:ARMv3:只读,ARMv4:读写)8910域状态03UNP/SBZPD47310Bit[8]:0Bits[7:4]:当错误发生时,确定16个域中(D15–D0)哪个被访问。Bits[3:0]:指出试图访问的类型ARMMMU的操作功能如下所示:无效指令TLB无效指令单一入口无效整个数据TLB无效数据单一入口功能opcode2CRmData指令无效所有TLB01110MCRp15,0,Rd,c8,c7,0无效单一入口1111虚拟地址MCRp15,0,Rd,c8,c7,1无效整个指令TLB01010MCRp15,0,Rd,c8,c5,0无效指令单一入口1101虚拟地址MCRp15,0,Rd,c8,c5,1无效整个数据TLB01100MCRp15,0,Rd,c8,c6,0无效数据单一入口1110虚拟地址MCRp15,0,Rd,c8,c6,1R8TLB功能寄存器(类型:只写):用来执行TLB的操作ARMMMU的操作R10TLB锁住寄存器:(类型:读写)D9P0UNP/SBZPbase32-W3131-W32-2W31-2WTLB锁定是一些ARM存储器系统的特性,它允许把特定的转换表搜索结果装载到TLB中。这种方式能否被后来的结果覆盖由寄存器R10决定。如果TLB为分离的,该寄存器有2个通过opcode2来区分MCR或者MRC对该寄存器的访问。opcode2==0选择数据TLB锁定寄存器opcode2==1选择指令TLB锁定寄存器例如:mcrp15,0,r0,c10,c0,0;数据寄存器mcrp15,0,r0,c10,c0,1;指令寄存器如果TLB为统一的,寄存器只有1个存在,opcode2必须为0。例如:mcrp15,0,r0,c10,c0,0;统一寄存器辅助寄存器必须为c0ARMMMU的操作ARMMMU的地址转换在存储器的管理中,地址转换的含义是从逻辑地址转换成物理地址。在MMU开启之后,处理器内核所处理的都是逻辑地址,当处理器内核要访问一个逻辑地址的时候,MMU负责将这个逻辑地址转换成相应的物理地址,完成实际地址的访问。ARM的MMU支持如下的段和页:段(sections),由1MB的块组成大页(largepages),由64KB的块组成小页(smallpages),由4KB的块组成微小页(tinypges),由1KB的块组成页表类型页表单位数页表占用内存支持页的单位一级页表409616k1M粗页表(corasepage)2561k4k或者64k细页表(finepage)10244k1k、4k或者64kARMMMU的地址转换11偏移量0逻辑页号(需转换基地址)3112逻辑地址11偏移量0物理页号3112物理地址转换的过程逻辑页号物理页号命中ARMMMU的地址转换第一级描述符89100123456711AP段基地址3112段20SBZ0域1CB10891001234567粗页表基地址31粗页表0域1CB018901234567细页表基地址31细页表SBZ域1CB11121101无效31错误项00按照描述符后2位区分类型ARMMMU的地址转换标志位含义类型[1:0]段、粗页或者细页B[2]写缓冲使能C[3]Cache使能域domain[8:5]16个域中的哪一个,根据CP15的R3AP(仅段描述符)[11:10]存取权限段基地址[31:20]1M对齐粗页基地址[31:10]1K对齐细页基地址[31:12]4K对齐ARMMMU的地址转换MMU二级描述符含义R2的[31:20]位获取低一级页表地址,然后根据逻辑地址[31:20]夺得第一级页表项第一级页表项后2位根据R2访问第一级页表段方式粗页表方式细页表方式011011段基地址+偏移量获得物理地址第二级描述符后2位大页表方式(64k)小页表方式(4k)0110获得粗页表地址(256项)获得细页表地址(1024项)产生逻辑地址[31:0]第二级描述符后2位大页表方式(64k)小页表方式(4k)0110小页表方式(1k)11根据粗页表基地址的[31:10]地址获得粗页表,根据逻辑地址[19:12]粗页表级页表项根据细页表基地址的[31:12]地址获得细页表,根据逻辑地址[19:10]细页表级页表项ARMMMU的地址转换段方式01偏移量0基值31逻辑地址偏移量0基值31物理地址20192019014095对应页表项L1主页表ARMMMU的地址转换二级页方式1231无效0错误页表1631基物理地址大页表(largepages)001010B2C3891045671112AP0AP1AP2AP3SBZ1531基物理地址小页表(smallpages)1010B2C3891045671112AP0AP1AP2AP331基物理地址微页表(tinypages)1010B2C389104567AP0SBZ按照后2位区分页类型ARMMMU的地址转换二级页方式10L2偏移0L1偏移31逻辑地址偏移量0物理基值31物理地址20192019014095L2主页表1211偏移量121101255L1主页表第一步访问第二步访问找2级页表基地址对应2级页表项ARMMMU的地址转换存储权限ARMMMU的地址转换虚拟地址地址对齐故障检验第一级描述符段页取页表项检验页域的状态用户用户管理者物理地址段变换故障对齐故障页变换故障页域故障检验权限检验权限子页权限故障段域故障段权限故障AP(Accesspermissions,访问权限),访问权限需要结合CP15寄存器1的第8位有两种含义System(S)或者ROM(R)。APSR特权权限用户权限0000不允许访问不允许访问0010只读不允许访问0001只读只读0011不确定不确定01xx读写不允许访问10xx读写只读11xx读写读写ARMMMU的地址转换课程结束
本文标题:第3章 第4节 ARM内存管理单元
链接地址:https://www.777doc.com/doc-4049297 .html