zoukankan      html  css  js  c++  java
  • 第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层缓存完全是由内置在缓存中的硬件逻辑来管理的。

  • 相关阅读:
    poj 2312 Battle City
    poj 2002 Squares
    poj 3641 Pseudoprime numbers
    poj 3580 SuperMemo
    poj 3281 Dining
    poj 3259 Wormholes
    poj 3080 Blue Jeans
    poj 3070 Fibonacci
    poj 2887 Big String
    poj 2631 Roads in the North
  • 原文地址:https://www.cnblogs.com/cinvzi/p/9358083.html
Copyright © 2011-2022 走看看