• 第6章 存储器层次结构(深入理解计算机系统)


    6.1 存储技术

    6.1.1 随机访问存储器

    随机访问存储器(Random-Access Memory,RAM)分为两类:静态的和动态的。静态(SRAM)比动态(DRAM)更快,但也贵很多。SRAM用来作为高速缓存存储器,既可以在CPU芯片上,也可以在片下。DRAM用来作为主存以及图形系统的帧缓冲区。典型的,一个桌面系统的SRAM不会超过几兆字节,但是DRAM却有几百或几千兆字节。

    6.1.2 磁盘存储

    磁盘是广为应用的保存大量数据的存储设备,存储数据的数量级可以达到几百到几千千兆字节,而基于RAM的存储器只能由几百或几千兆字节。不过,从磁盘上读取信息的时间为毫秒级,而从DRAM读取比从磁盘读快10万倍,从SRAM读比从磁盘读快100万倍。

    设备可以自己执行读或者写总线事物,而不需要CPU的干涉的过程,称为直接存储器访问(Direct Memory Access),这种数据传送称为DMA传送。

    6.1.3 固态硬盘

    固态硬盘(Solid State Disk,SSD)是一种基于闪存的存储技术。一个SSD包由一个或多个闪存芯片和闪存翻译层组成,闪存芯片替代传统旋转磁盘中的机械驱动器,而闪存翻译层是一个硬件/固件设备,扮演与磁盘控制器相同的角色,将对逻辑块的请求翻译成对底层物理设备的访问。

    6.2 局部性

    一个编写良好的计算机程序常常具有良好的局部性。也即是说,它们倾向于引擎临近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。这种倾向性,被称为局部性原理(principle of locality),是一个持久的概念,对硬件和软件系统的设计和性能都有着极大的影响。

    局部性通常有两种不同的形式,时间局部性(temporal locality)和空间局部性(spatial locality)。一般而言,有良好局部性的程序比局部性差的程序运行得更快。

    小结:

    • 重复引用同一个变量的程序有良好的时间局部性
    • 对于具有步长为k的引擎模式的程序,步长越小,空间局部性越好。具有步长为1的应用模式的程序有很好的空间局部性。在存储器中以大步长跳来跳去的程序空间局部性会很差
    • 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环次数越多,局部性越好。

    6.3 存储器层次结构

    L0:寄存器

    L1:L1高速缓存(SRAM)

    L2:L2高速缓存(SRAM)

    L3:L3高速缓存(SRAM) 

    L4:主存(DRAM)

    L5:本地二级存储(磁盘)

    L6:远程二级存储(分布式文件系统、Web服务器)

    6.3.1 存储器层次结构中的缓存

    高速缓存(cache)是一个小而快速的存储设备,它作为存储在更大、也更慢的设备中的数据对象的缓冲区域。层次结构总每一层都缓存来自较低一层的数据对象。

        1.缓存命中

    当程序需要第k+1层的某个数据对象d时,它首先在当前存储在第k层的一个块中查找d。当d刚好缓存在第k层中,就是我们所说的缓存命中(cache hit)。 

        2.缓存不命中

    如果第k层中没有缓存数据对象d,就是我们所说的缓存不命中(cache miss)。当发生缓存不命中时,第k层的缓存从第k+1层缓存中取出包含d的那个块,如果第k层的缓存已经满了的话。可能就会覆盖现存的一个块。

    覆盖一个现有的块的过程称为替换(replacing)或驱逐(evicting)这个块。被驱逐的这个块有时也称为牺牲块。决定该替换哪个块是由缓存的替换策略来控制的。如随机替换策略、最近最少被使用策略(LRU)。

        3.缓存不命中的种类

    强制性不命中(冷不命中):缓存中没有缓存任何数据对象

    冲突不命中:由于限制性的放置策略引起的不命中

    容量不命中:缓存的大小小于当前处理的工作集

        4.缓存管理

    缓存管理指某个东西要将缓存划分成块,在不同的层之间传送块,判定是命中还是不命中,并处理它们。如,编译器管理寄存器文件,L1、L2、L3层缓存完全是由内置在缓存中的硬件逻辑来管理的。

  • 相关阅读:
    周五笔记
    python2.0代码重构为3.0一日记
    小白使用Bert跑分类模型
    andrew ng 深度学习 网易云课堂课程
    andrew ng machine learning week9 异常检测和推荐系统
    解决端口占用问题
    postgresqlmysql删除数据表中字段的回车和换行
    echarts常用的属性修改
    后端返回文件流,用blog方式下载 type 值
    antD vue 遇到的一些问题处理
  • 原文地址:https://www.cnblogs.com/cinvzi/p/9358083.html
Copyright © 2020-2023  润新知