《深入理解计算机系统》读后笔记三——“第六章 存储器层次结构”

第六章——存储器层次结构

         1、存储器层次结构

              看这一章,首先了解存储器层次结构是什么。

《深入理解计算机系统》读后笔记三——“第六章 存储器层次结构”_第1张图片  

       2、局部性:

             在存储器层次结构的基础之上引出了一个很重要的思想,也是计算机程序里面一个很基本的属性”局部性“。局部性又分为两     个方面:1、 时间局部性:有良好的时间局部性程序中,被引用过一次的存储器很有可能在不久的将来再被多次调用;2、  空间局部   性:有良好空间局部性程序中,被引用过一次的存储器,很有可能在不久的将来引用其附近临近的存储器。由此可以给出量化评价    一个程序局部性的简单原则:1、重复引用一个变量的程序有良好的时间局部性;2、对于步长为k的引用模式的程序,步长越小,   程序的空间局部性越好;3、对于取指令来说,循环有好的时间和空间局部性。

     3、缓存:

          第k层总是作为第k+1层存储设备的数据对象的缓冲区域,使用高速缓存这个过程称为缓存。在这过程中,总是以传送单元(块)在第k层与第k+1层之间来回拷贝数据。

         对于缓存:一般有缓存命中和缓存命不中两种情况。对于缓存命中的情况比较简单,就是我们需要从k+1层中提取的数据正好就在已经缓存在第k层中了。对于 缓存命不中则有几种不同的情况1、 冷不命中(强制性不命中):若第k层缓存是空的,那么对任何数据对象的访问都是不命中的; 2、冲突命不中:发生在缓存足够大,能够保存引用的数据,但是由于多个引用数据被映射在了缓存区的同一个位置,导致多次缓存不命中; 3、容量不命中:当缓存太小了,不能处理一个完整的 工作集(程序按照一系列的阶段来运行,每一个阶段访问块的某一相对稳定不变的集合,这个集合就叫工作集)的时候出现这种情况。
    4、高速缓存存储器

          《深入理解计算机系统》读后笔记三——“第六章 存储器层次结构”_第2张图片 

上图给出了通用高速缓存存储器的结构(S,E,B,m):S为高速缓存组数组,每个高速缓存组包含E个高速缓存行,每行由B字节的数据块组成,有效位说明该行数据是否包含有意义的信息,还有t=m-(b+s)个标记位,它们唯一地标识存储在这个高速缓存行中的块。缓存容量大小:C=S*E*B

        这个部分需要注意的是:为什么高速缓存用中间的位作为组索引,而不是用高位。这是因为使用高位一些连续的存储器会映射在相同的高速缓存块中,造成冲突不命中的情况。

    4.1 有关读写的问题

         有关读的问题比较简单,读命中了就不需要什么操作了;读不命中,就需要重新从下一级存储器拷贝就OK了。

          对于写就相对复杂一点,在字w写命中的时候,有直写“在需要写的时候立即将w的高速缓存写回到紧接着的低一层中去”和写回“尽可能的推迟存储器更新,只有当替换算法要替换掉这一个块的时候,才把w写回紧接着的低一层去”两种方式。

          写不命中时,有两种处理方法:写分配“加载相应的低一层的快到高速缓存,然后更新这个高速缓存块”和非写分配“直接写入到低一层去,避开高速缓存”。

   5.存储器山的理解

       当时间局部性很差的时候空间局部性仍能补救。

       

你可能感兴趣的:(学习笔记)