ARM内存管理单元学习.pptx_第1页
ARM内存管理单元学习.pptx_第2页
ARM内存管理单元学习.pptx_第3页
ARM内存管理单元学习.pptx_第4页
ARM内存管理单元学习.pptx_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内存管理单元MMU 1 主 要 的 功 能 1 管理虚拟存储器 物理存储器的控制线路 2 负责虚拟地址映射为物理地址 3 提供硬件机制的内存访问授权 地址范围 由CPU的位数决定 例如一个32位的CPU 它的地址范围是0 0 xFFFFFFFF 4G 1 相关概念 分页机制 虚拟地址空间划分成称为页 page 的单位 而相应的物理地址空间也被进行划分 单位是页帧 frame 页和页帧的大小必须相同 TLB和地址转换表 2 相关概念 1 TLB translationlookasidebuffer 转换遍历缓存 TLB是MMU的核心部件 它存储少量的虚拟地址与物理地址的转换关系 它其实是物理内存区的一小段内存 TLB是位于内存中的页表的cache 如果没有TLB 则每次取数据都需要两次访问内存 即查页表获得物理地址和取数据 2 地址转换表 当TLB中没有缓冲对应的地址转换关系时 需要查找这个地址转换表 找到虚拟地址与物理地址的对应关系 在大多数处理器中 这个转换表为多级页表 比如386里面的页目录表和页表 将线性地址映射为物理地址 2 功能说明 现代的多用户多进程操作系统 需要MMU 才能达到每个用户进程都拥有自己独立的地址空间的目标 使用MMU 操作系统划分出一段地址区域 在这块地址区域中 每个进程看到的内容都不一定一样 例如WINDOWS操作系统将地址范围4M 2G划分为用户地址空间 进程A在地址0X400000 4M 映射了可执行文件 进程B同样在地址0X400000 4M 映射了可执行文件 如果A进程读地址0X400000 读到的是A的可执行文件映射到RAM的内容 而进程B读取地址0X400000时 则读到的是B的可执行文件映射到RAM的内容 将线性地址映射为物理地址 2 功能说明 CP15寄存器介绍 与MMU有关的寄存器 CP15的C8寄存器用来控制清除TLB的内容 是只写寄存器 读操作将产生不可预知的后果 CP15的C10寄存器用于控制TLB内容锁定 如果系统中包含独立的指令TLB和数据TLB 那么对应于数据TLB和指令TLB分别有一个独立的TLB内容锁定寄存器 用来选择其中的某个寄存器 CP15寄存器介绍 与MMU有关的寄存器 ARMMMU硬件采用2级页表结构 一级页表 L1 和二级页表 L2 3 MMU的页表 一级页表支持4种类型的页表项 由bit 1 0 决定 1 1MB段转换项 指向一个1MB的存储段 2 指向L2细页表的目录项 包含一个L2细页表首地址的指针 同时包含L1表项代表的1MB虚存段的域信息 细页表必须与4KB的倍数地址对齐 3 指向L2粗页表的目录项 粗页表必须与1KB的倍数地址对齐 4 产生中止异常的错误项一级页表两大类 1 指向第一级页表 L2页表 的基地址2 直接指向1MB的物理内存L1主页表既可作为L2页表的页目录 也可作为用于转换1MB虚拟页 称为一段 的普通页表L1页表中每个表项可以覆盖1MB的内存 由于有4096K个选项 item 所以总计可以覆盖4096K 1MB 4GB的内存空间 3 MMU的页表 L1每种页表的结构 ARMMMU硬件采用2级页表结构 一级页表 L1 和二级页表 L2 3 MMU的页表 二级页表有4种类型的页表项 由bit 1 0 决定 1 定义64KB页帧属性的大 large 页表项 包含一个64KB物理存储块的基地址 同时还包含4组权限位域 以及页的cache和写缓冲器属性 每一组访问权限位域代表虚存页的1 4 这些页表项可以看成是16KB子页 以更好的控制64KB页的访问权限 2 定义4KB页帧属性的小 small 页表项 3 定义1KB页帧属性的微 tiny 页表项 4 访问时产生页错中止异常的错误页表项 注意区别大页 小页 微页和粗页表 细页表 一个L2粗页表有256 1MB 4KB 个页表项 占用1KB的主存空间 每个页表项将一个4KB的虚拟存储块转换成一个4KB的物理存储块 粗页表支持4KB或64KB的页 页表项包含的是4KB或64KB的页帧的首地址 如果转换的是一个64KB的页 对于每个64KB的页 同一个页表必须在页表中重复16次 一个L2细页表有1024 1MB 1KB 个页表项 占用4KB的主存空间 每个页表项将一个1KB的虚拟存储块转换成一个4KB的物理存储块 细页表支持1KB 4KB或64KB的页 页表项包含的是1KB 4KB或64KB的页帧的首地址 3 MMU的页表 L2每种页表的结构 页表 存在内存中的地址转换表 页表由一个个条目 描述符 组成条目 每个条目存储了一段虚拟地址对应的物理地址及其访问权限 或者下一级页表地页号 从页表基址开始 每页的索引号页内偏移 某一页的内部偏移地址条目也称为 描述符 Descriptor 段描述符 大页描述符 小页描述符 极小页描述符 它们保存段 大页 小页或极小页的起始物地址 粗页表描述符 细页表描述符 他们保存二级页表的物理地址转换过程如下 1 根据给定的虚拟地址找到一级页表中的条目 2 如果此条目是段描述符 则返回物理地址 转换结束 3 如果此条目是二级页表描述符 继续利用虚拟地址在二级页表中找到下一个条目 4 如果这第二个条目是页描述符 则返回物理地址 转换结束 5 其他情况出错 5 转换过程 5 转换过程 3 转换过程 单步搜索 当L1页表用于转换一个1MB的段时 搜索1MB的页 其页表项 PTE 包含的就是物理存储器中1MB页帧 pageframe 的首地址 3 转换过程 两步搜索 搜索大小为1KB 4KB 16KB 64KB的页 一级页表存放的是二级页表的目录 二级页表才是存放转换表的 L1页表作为页目录时 其页表项 PTE 包含的就是1MB虚拟空间的L2粗 coarse 页表或L2细 fine 页表的指针 3 转换过程 只有一级页表的情况 第一个MVA第二个是页表基址寄存器 c2 3 转换过程 保存在粗页表中的大页地址转换过程 3 转换过程 保存在粗页表中的小页地址转换过程 3 转换过程 保存在粗页表中的极小页地址转换过程 地址转换失败时产生的异常和处理 4 MMU异常处理 1 TLB异常 如果试图访问没有在MMU的TLB中映射的内存地址 会触发这个异常 在支持虚拟内存的操作系统中 这一般会触发内存的页面倒换 系统的ExceptionHandler会将所需要的内存页从虚拟内存中调入物理内存 并更新相应的TLB表项 2 地址对齐异常 如果试图访问一个非对齐的地址 例如lw sw指令的地址非4字节对齐 或lh sh的地址非2字节对齐 就会触发这个异常 一般地 操作系统在ExceptionHandler中对这个异常的处理 是分两次读取 写入这个地址 虽然一般的操作系统内核都处理了这个异常 最后能够完成期待的操作 但是由于会引起用户态到内核态的切换 以及异常的退出 当这样非对齐操作较多时会

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论