zoukankan      html  css  js  c++  java
  • MMU与cache

    这一快理解的非常浅:

    MMU

      虚拟存储器对内存进行了逻辑上的扩充。比如一个32位的CPU系统,逻辑上的寻址可以达到4GB,但是如果直接对物理地址进行寻址,就要受到主存大小的限制。

     

    在这种条件下,虚拟地址应运而生,每个应用程序的访存空间都可以达到4GB,当然这里用的是虚拟地址。Cpu发出虚拟地址之后会被转化为MVA(变化后的虚拟地址),MMU接收到MVA,将MVA转化为物理地址。

     

    现在,先来看看第一个阶段VA(虚拟地址)转化为MVA

     

       上图就是VA转化为MVA的算法,va转化为MVA需使用进程标示号PID,这个过程是由硬件自动完成的。这样做有一个好处,当两个程序的va都是0-32M-1)的时候,他们的MVA并不会重叠,免去了处理VA冲突的过程(处理VA冲突需要重建页表,使无效CACHE,和TLBS等,代价昂贵)。

       

       第二个阶段,将MVA转化为物理地址:

       主要过程如下:

    1. 根据给定的MVA中的一级页表索引和TTB找到一级列表中的条目。

    2. 如果此条目是段描述符(最后两位标示),则根据段描述符和段内地址直接读取到物理地址。

    3. 如果此条目是二级页描述符,则利用此描述符和二级页表索引找到二级页表中的下一个条目。

    4. 如果此条目是页描述符,则根据此描述符和页内地址直接找到物理地址。

    5. 其他情况出错。

    可以看出,一级页表需要两次访存能够找到真正的物理地址。二级页表需要三次访存才能找到物理地址。

     

    下面介绍一个二级页表找到物理地址的例子::

    首先MVA如下:

     

    然后根据TTB得出粗页表中条目的位置:

     

    取出一级页表中此地址的数值,并得出二级页表中的条目的地址:

     

    取出二级条目中此地址的数值,和页内索引得出真实的物理地址:

     

    至此,完事。

    注:上图中红色区域就是对是段还是页表还是哪种描述符的标示。

     

    对于几个寄存器的说明

    TTB:也就是协处理器C152号寄存器,存的是当前页表的基地址。

    TLB:其实就是页表条目的cache,储存近期用过的页表条目,避免每次都要去主存进行查询。

     

       

     

     

    CACHE

    两种写数据方式:

    1. 写穿式:cpu写入cache时,同时写入主存。

    2. 回写式:只有当cache中的数据被换出或清空时,才将更新的数据写入主存。

     

    Cache的两种操作:

    1. 清空:把cache或写缓冲中已经脏的数据(修改过,但未写入主存)写入主存。

    2. 使无效:使之不能再使用,不将脏的数据写回主存。

     

    Cache分为指令cache和数据cache





  • 相关阅读:
    第三周作业(二):分析代码
    第三周作业(一):安装VS以及创建单元测试
    作业:随机四则运算
    分数化简算法
    对应用软件:游戏-《上古卷轴5》的点评
    软件工程始发随想
    Siamese Network介绍
    YOLO v3算法介绍
    Residual Network和Inception Network网络架构介绍
    使用迁移学习(Transfer Learning)完成图像的多标签分类(Multi-Label)任务
  • 原文地址:https://www.cnblogs.com/dchipnau/p/5256024.html
Copyright © 2011-2022 走看看