ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

MIPS-底层内存管理与TLB

2021-09-14 11:30:50  阅读:265  来源: 互联网

标签:表项 物理地址 虚拟地址 TLB 地址 内存 寄存器 MIPS


MIPS虚拟地址和物理地址映射关系图

虚拟与物理地址映射关系图

做存储器地址转换的原因

  1. 隐藏和保护,因为软件只能看到虚拟地址,看不到真实的物理地址。运行在用户特权级的程序,最终被映射到的地址位于kuseg的范围内
  2. 给程序分配连续的存储空间。因为连续的地址空间可以使得程度具有更快的运行速度,虽然在物理地址中映射的空间不一定是连续的,但是在虚拟地址中是连续的地址空间。
  3. 扩大地址范围。有些CPU不能直接访问他们物理存储器的全部范围,如果想访问更大的范围,需要使用MMU
  4. 使存储器映射适应你的程序。在一个大的操作系统里,有可能运行者一个程度的多个拷贝,此时使用同样的程度地址要容易得多。
  5. 按需调页。操作系统只有在真正用到这块内存资源时才会分配。
  6. 重定位。MMU允许程序在物理内存的任意地址上运行

TLB/MMU的硬件及其作用

TLB可以将虚拟地址转换为物理地址,实质上是一块cache,因为cache面积较大,较为昂贵,所以不能支持太多的表项。在TLB的转换过程中每一个表项通常对应于一个4KB大小的页。这就使TLB可以用有限的表项映射更大范围的物理地址。
每一个表项中含有一个虚拟地址(VPN)以及物理地址(PFN),当程度给出一个虚拟地址后,将会在TLB表项中寻找VPN与其对应,如果对应则给出PFN,如果没有找到对应的VPN则会引起TLB重填异常。
上文说在TLB的转换过程中每一个表项通常对应于一个4KB大小的页,这就使得低12位的地址不参与查找,同时在MIPS CPU中采用的是一个TLB表项对应两个相邻的虚拟页面,这使得倒数第13位也不参与查找,也就是低13位不参与查找过程。
TLB数据项
如上图所示,显示的是一个TLB表项所需的所有寄存器部分

  1. EntryHi寄存器存有VPN2以及ASID
  2. PageMask可以创建映射大于4KB大小的页(与EntryHi一起构成了输入域)
  3. EntryLo0-1存有PFN以及四个标志位G,V,D,C(TLB的输出域)
    寄存器
    其中VPN2指的就是虚拟地址,0-13位不参与查找,对于超过CPU使用的高位区域要全部置0或1,在64位的MIPS中,因为有R值的存在,要和R值匹配。仅使用32位指令集时,因为符号位扩展的,这些情况不必考虑。在低于VPN2的位有部分0区域的存在,此部分用于小范围的页地址的扩展,把部分位转换为需查找虚拟地址范围,比如页大小为1KB,需向下延伸两位。
    ASID指的是地址空间标识符,如果使用的多个地址空间,操作系统将会维护此区域。如果输出域的G位被置1,则意味着屏蔽了ASID,表示在全局查找。ASID是一个8位的域,允许同时映射256个不同的地址空间,如果用光了可以挑选一个扔出TLB的进程。
    PageMask寄存器允许你通过设置TLB域来映射更大的页,通常为4KB-16MB之间,并且每次以4倍递增
    寄存器
    如上图所示为EntryLo0-1的寄存器域结构
    PFN即物理地址,和VPN相对应,图中所示32位MIPS中可支持2的38次方的字节地址范围(26+12)
    C寄存器域指的是此地址是否选择高速缓存的工作方式(嵌入式)
    D位指的是写允许为,1表示允许写入
    V位指的是该如果该位为0,则表示对与该项匹配的地址的任何使用都将导致异常
    G位指的是是否屏蔽ASID的值,如果置1则表示将全局搜索,忽略ASID的匹配

Index寄存器用于选择TLB的表项
Random用于实现随机替换策略
Wired寄存器,在TLB从0开始向上,凡是索引值小雨下限值的表项不受随机替换的影响,Wired允许你指定这个下限值,可将这些槽用于永久转换地址项


Context寄存器能够帮助32位虚拟地址空间的TLB重填过程

TLB/MMU控制指令

tlbr 在索引处读出TLB表项
tlbwi 在索引处写入TLB表项
tlbwr 重填过程中采用此命令写入新的TLB表项
tlbp 寻找匹配的TLB表项,并将该项的索引保存到index寄存器

页表和重填机制

TLB未命中时,采用异常处理代码如下
在这里插入图片描述

标签:表项,物理地址,虚拟地址,TLB,地址,内存,寄存器,MIPS
来源: https://blog.csdn.net/qq_42856481/article/details/120225667

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有