您的位置:首页 > 理论基础

从内存中访问数据的过程

2015-03-03 21:05 323 查看
  本文假定你有一定的计算机组成原理和操作系统方面的知识,这里说的尽量简洁清晰一些,然后要再结合一个例子来具体走一下。

  首先要明确,想要从内存中取数据要分两步:1.获得数据在内存的物理地址 2.从内存中取数据 可能乍一看觉得有点像废话,但是这两步必须很清楚,而且这两步涉及的过程差别很大,下面具体说一下。

  如何获得数据的内存实地址? 这里我们首先就要把虚拟地址(逻辑地址)进行转化,我以请求分页管理为例,一般说来这里也分为两步:(1) 先查找TLB(快表:为硬件结构,保存有部分内存中页表的内容,目的是提高效率)我们先把给出虚拟地址写成二进制的形式,由页面大小得到页内偏移位数,剩下的是虚拟页号,在这里虚拟页号进一步分为TLB标记和TLB组索引。

  由组索引和TLB标记查看有无对应的物理页号及标记位是否为”1”,若存在,把物理页号拼接页内地址得到实地址;若不存在,说明TLB不命中,进入下面一步(2)查找内存中的页表。这里就相对比较单纯了,通过页号及页表寄存器找到相应的页表项,看一下有没有物理页号及有效位是否为“1”,若有,则命中,把物理页号拼接到页内地址即得到实地址;若无,则比较麻烦了,说明内存中没有要找的这个页面,产生缺页中断,需从外存调入。第一部分大体就是如此,具体细节不多说,但是这个过程一定要很清晰!

  接下来就是根据地址来访问数据,在开始之前,有必要先给出Cache的工作原理图(摘自课本),该图非常清晰动人,哈哈!

  


  关于Cache还要多说一下,Cache包括了可以对Cache中所包含的存储地址进行跟踪的硬件,也就是说,Cache的总容量包括:存储容量、标记阵列容量(包括有效位,标记位Tag,一致性维护位即脏位,替换算法控制位),每一个Cache行对应一个标记项。总的来说,访问数据也分为两步:(1)先查找高速缓存Cache(内存的部分副本),在根据第一步得到的实地址进行查找时,要了解Cache的几种映射方式,主要是直接映射方式和组相连映射方式,根据不同的映射方式来分析上一步得到的物理地址。一般说来,我们由Cache索引和标志位找到Cache中位置,再查看有效位是否为“1”,即Cache中是否存在要查找的内存地址中内容的副本;若为“1”,即有效,则根据偏移量(字块内地址)取出Cache单元的内容即可。如不在,则要去主存中查找对应的物理地址的内容,至此,一次访存完成。当然了,我这里没有展开细说,像Cache的局部性原理啊,地址映射与变换啊,这些课本都有详细介绍,这两步过程一定要清晰,然后结合具体知识点和例题就更好理解了。(多说一句,在准备考研时王道的《操作系统》参考书第三章最后就有一个很好地例子!)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  计算机组成原理
相关文章推荐