zoukankan      html  css  js  c++  java
  • 信息安全系统基础第七周学习总结

    【学习任务:《深入理解计算机系统》第六章——存储技术及高速缓存部分】
    第六章 存储器层次结构
    一、课本内容
    存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。
    高速缓存存储器:作为CPU和主存之间的缓存区域。
    具有良好局部性的程序倾向于一次又一次的访问相同的数据项集合,或是倾向于访问邻近的数据项集合。具有良好局部性的程序比局部性差的程序更多的倾向于从存储器层次结构中较高层次处访问数据项,因此运行的更快。
    6.1存储技术
    1.RAM分类
    静态的SRAM-更快,更贵,作为高速缓存存储器,CPU片上或片下
    动态的DARM-作为主存以及图形系统的帧缓冲区
    2. 总
    随机访问存储器SRAM(静态):高速缓存存储器。将每个位存储在一个双稳态的存储器单元里面。(每个单元用一个六晶体管电路来实现;其属性是可以无限期保持在两个不同的典雅配置或者状态之一,其他的任何状态都是不稳定的)
    DRAM(动态):将每个位存储为对一个电容的充电(这个电容很小)。存储单元对干扰(如光线、噪音等)很敏感;当电容的电压被扰乱之后就永远不会恢复。优势是密集度低,成本低。
    3.DRAM
    芯片中的单元位被分为d个超单元,每个超单元有w个DRAM单元组成,一个dxw的DRAM总共存储了dw位信息。超单元被组织成一个r行c列的长方形,即rc=d。每个超单元有形如(i, j)的地址,i表示行,j表示列。
    每个DRAM芯片被连接到某个称为存储控制器的电路,这个电路可以一次传送w位到每个DRAM芯片或者依次从每个芯片传出w位。电路设计者将DRAM组织成二维而不是线性数组的一个原因是降低芯片上地址引脚的数量。
    DRAM芯片包装在存储器模块中,它是插到主版的扩展槽上的。
    有许多种DRAM存储器,每种都是基于DRAM单元。
    快页模式-FPM DRAM
    扩展数据输出-EDO DRAM
    同步-SDRAM
    双倍数据速率同步-DDR SDRAM
    RDRAM
    视频-VRAM
     
    4.存储器部分
    非易失型存储器:即使在关电后,也仍然保存着它们的信息;称为ROM。包括:
    PROM:只能被编程一次。
    可擦可写编程ROM(EPROM):被擦除和重写的次数可以达到10^3次
    电子可擦除PROM(EEPROM):能够被编程的次数可以达到10^3次。
    闪存:基于EEPROM。基于此的磁盘驱动器称为固态硬盘 存储在ROM设备中的程序通常称为固件;当一个计算机系统通电之后,它会运行存储在ROM中的固件
    RAM在断电后会丢失信息,ROM即使断电也能保存着信息。ROM中有的类型既可以读又可以写,但整体上称为只读存储器。
    ROM是以它们能够被重编程的次数和进行重编程所用机制进行区分的 -DRAM芯片包装在存储器模块中,是插在主板的扩展槽上的。168个引脚的双列直插存储器模块以64位为块传送或传出数据。72个引脚的单列直插存储器模块以32位为块传送数据。
    5.数据流通过总线的共享电子电路在处理器和DRAM之间来回;包括读事务(从主存到CPU)和写事务。总线是一股并行的线,可以携带数据、控制信号和地址(数据总线,地址总线,控制总线)。
    6.访问主存
    总线是一组并行的导线,能携带地址、数据和控制信号。数据流通过总线在处理器和DRAM主存之间来回。每次CPU和主存之间的数据传送是通过一系列步骤来完成的,称为总线事务。
    读事务:从主存传送数据到CPU  写事务:从CPU传送数据到主存
    计算机系统的配置:主要部件是CPU芯片、I/O桥芯片组、组成主存的DRAM存储器模块。这些部件由一对总线连接起来,其中一条总线是系统总线,它连接CPU和I/O桥,另一条总线是存储器总线,它连接I/O桥和主存。
    I/O桥将系统总线的电子信号翻译成存储器总线的电子信号。
    6.1.2 磁盘存储
    磁盘结构

    磁盘有许多盘片构成,每个盘片有两个表面,表面上覆盖着磁性记录材料。盘片中央有一个可旋转的主轴,盘片以固定旋转速率旋转。
    每个表面由一组称为磁道的同心圆组成。磁道被划分为一组扇区,每个扇区包含相等数量的数据位。扇区之间由间隙分隔开,间隙不存储数据。
    磁盘由一个或多个叠放的盘片组成,被封装在一个密封的包装里,整个装置称为磁盘驱动器,即磁盘,也称旋转磁盘,区别与基于闪存的固态磁盘SSD。柱面:描述多个盘片驱动器的构造,指所有盘片表面上到主轴中心的距离想等的磁道的组合。即所有盘片表面到主轴中心距离相等的磁道的集合
    磁盘是保存大量数据的存储设备;但读取速度慢。
    磁盘容量

    一个磁盘上可以记录的最大位数称为最大容量,即容量。由以下技术因素决定:

    记录密度:磁道一英寸的段中可以放入的位数
    磁道密度:从盘片中心出发半径上一英寸的段内可以有的磁道数
    面密度:记录密度与磁道密度的乘积
    提高面密度即可提高容量。
    计算磁盘容量的公式:   
    磁盘容量 = 字节数/扇区 X 平均磁盘数/磁道 X 磁道数/表面 X 表面数/盘片 X 盘片数/磁盘

    磁盘操作

    磁盘用读/写头来读写存储在磁性表面的位,读写头连接到传动臂,通过沿着半径轴前后移动传动臂可以将读/写定位在盘面上的任何磁道上。这样的机械运动称为寻道。定位到了期望的磁道上,磁道旋转每个位通过它的下面时就可读写该位。多个盘片针对每一个都有独立的读写头,且位于同一柱面上。
    对扇区的访问时间有三个主要部分:

    寻道:将读写头定位到包含目标扇区的磁道上。Tseek取决于它以前的位置和传动臂在盘面上的移动速度。时间通常为3——9ms。
    旋转:一旦读写头定位到了期望的磁道,驱动器等待目标扇区的第一个位旋转到读写头下面。平均旋转时间是最大时间(等磁盘旋转一圈)
    o传送:驱动器开始写或者读扇区的内容;时间长短取决于旋转速度和每条磁道的扇区数目。平均时延为 Tavg=1/RPM1/(平均扇区数/磁道)60secs/1min
    最大旋转延迟=1/RPM X 60secs/1min (s)
    平均旋转时间是最大值的一半。
    访问一个磁盘扇区内容的平均时间为平均寻道时间,平均旋转延迟和平均传送时间之和。
    逻辑磁盘块

    磁盘中有一个小的硬件/固件设备,称为磁盘控制器,维护这逻辑块号和实际(物理)磁盘扇区之间的映射关系。

    连接到I/O设备

    输入输出设备都是通过I/O总线连接到CPU和主存的。与系统总线和存储器总线不同,它可以设计成与CPU无关的。
    I/O总线较慢,但可以容纳种类繁多的第三方I/O设备:

    • 通用串行总线(USB)控制器是一个连接到USB总线的设备的中转机构。
    • 图形卡(或适配器)包含硬件和软件逻辑,代表CPU在显示器上画像素。
    • 主机总线适配器将一个或多个磁盘连接到I/O总线,使用特别的主机总线接口定义的通信协议
      两个常用的磁盘接口SCSI/SATA,SCSI更快更贵,可支持多个磁盘驱动器。其他设备,如网络适配器,插入到主板上空的扩展槽,从而连接到I/O总线。
      6.访问磁盘
      CPU从磁盘读数据,CPU使用存储器映射I/O的技术向I/O设备发出命令,过程中地址空间有一块是为与I/O设备通信保留的,称为I/O端口。当设备连接到总线时,它与一个或多个端口相关联。
      6.1.3 固体磁盘
      固态硬盘是一种基于闪存的存储技术,一个SSD包由一个或多个闪存芯片和闪存翻译层组成,闪存芯片替代传统旋转磁盘中的机械驱动器,闪存翻译层是一个硬件/固件设备,与磁盘控制器相同,将对逻辑块的请求翻译成对底层物理设备的访问。
      SSD顺序读比顺序写稍微快一点,但随机写比读慢一个数量级。
      SSD优点:随机访问时间比旋转磁盘更快,能耗更低,更结实   SSD缺点:容易磨损,较贵,容量通常只是旋转磁盘的1%
      6.1.4 存储技术优势
      几个重要思想:
    • 不同的存储技术有不同的价格和性能折中
    • 不同存储技术的价格和性能属性以截然不同的速率变化着
    • 增加密度从而降低成本比降低访问时间更容易
    • DRAM和磁盘的性能滞后于cpu的性能
      6.2局部性
      计算机程序倾向于引用邻近于其他最近引用过的数据项的数据或其本身;这种倾向性,被称为局部性原理。包括:时间局部性,空间局部性。有良好局部性的程序比局部性差的程序运行的更快。
      体现:在硬件层,局部性原理允许计算机设计者通过引入称为高速缓存器的小而快的存储器来保存最近被引用的指令和数据项;在操作系统级,局部性原理允许系统使用主存作为虚拟地址空间最近被使用的磁盘块。
      重复引用一个变量的程序具有良好的时间局部性;对于取指令来说,循环具有良好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
      两种不同的形式:

    时间局部性:被引用过一次的存储器位置很可能在不远的将来再被多次引用。
    空间局部性:如果一个存储器位置被引用了一次,那么很可能在不远的将来引用附近的一个存储器位置。
    6.2.1、对程序数据引用的局部性
    步长为k的引用模式:一个连续变量中,每隔k个元素进行访问,就被称为步长为k的引用模式。
    步长为1的引用模式:就是顺序访问一个向量的每个元素,有时也被称为顺序引用模式,它是程序中 空间局部性常见和重要的来源。一般来说,随着步长增加,空间局部性下降。
    6.2.2、取指令的局部性
    程序指令是存放在存储器中的,CPU必须取出(读出)这些指令。
    代码区别于程序数据的是在运行时是不能被修改的。
    6.2.3、局部性小结
    一个程序中局部性的简单原则:
    重复引用同一个变量的程序有良好的时间局部性
    对于具有步长为k的引用模式的程序,步长越小,空间局部性越好
    对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
    6.3存储器层次结构——缓存
    存储器层次结构的中心思想是:对于每个k,位于k层的更快更小的存储设备作为位于(k+1)层的更大更慢的存储设备的缓存。
    第(k+1)层的存储器被划分成连续的数据对象片,称为块;数据总是以块大小为传送单元在相邻两层之间来回拷贝的;在任何时刻,第k层的缓存包括第(k+1)层块的一个子集的拷贝。
    用相互补充的性质想到的一种组织存储器系统的方法:存储器层次结构。一般而言,从高层往底层走,存储设备变得更慢、更便宜和更大。
    高速缓存是一个小而快速的存储设备,作为存储在更大、也更慢的设备中的数据对象的缓冲区域。使用高速缓存的过程称为缓存。
    缓存命中和缓存不命中
    缓存命中:当程序需要第(k+1)层的数据对象d的时候,首先会在第k层找d;如果d刚好缓存在第k层,那么就叫做缓存命中;反之,不命中
    如果缓存不命中,那么第k层缓存就从第(k+1)层取出包含该数据的块,有可能会覆盖现有的块。覆=决定替换哪个块是由缓存的替换策略来控制的;例如,一个具有随机替换策略的缓存会随机选择;而LRU替换策略会选择被访问时间距今最远的块
    缓存管理
    存储器层次结构的本质是每一层存储设备都是较低一层的缓存。在每一层上,某种形式的逻辑必须管理缓存,而管理缓存的逻辑可以是硬件、软件,或者两者的结合。
    高速缓存存储器(S,E,B,m)
    作用:连接CPU和主存
    每个存储器地址有m位,形成M=2^m个不同地址。这m位被划分成t个标记位、s个组索引位和b个块偏移位。
    这样一个机器的高速缓存被组织成S=2s个高速缓存组的数组;每个数组包含E个高速缓存行;每行由一个B=2b字节的数据块、一个有效位(指明这个行是否包含有效信息)、t=m-(b+s)个标记位(唯一标识存储在这个高速缓存行中的块)组成
    高速缓存的结构可以用元组(S,E,B,m)来描述:

    S:这个数组中有S=2^s个高速缓存组
    E:每个组包含E个高速缓存行
    B:每个行是由一个B=2^b字节的数据块组成的
    m:每个存储器地址有m位,形成M=2^m个不同的地址
    有效位:每个行有一个有效位,指明这个行是否包含有意义的信息
    标记位:t=m-(b+s)个,唯一的标识存储在这个高速缓存行中的块
    组索引位:s
    块偏移位:b
    直接映射高速缓存
    高速缓存确定一个请求是否命中,然后抽搐被请求字的过程,分为:组选择,行匹配,字抽取
    组选择:从w的地址中抽取组索引;这些位被解释成对应于一个组号的无符号整数
    每个组只有一行的高速缓存称为直接映射高速缓存。
    行匹配:对于直接映射高速缓存,行匹配是容易而且快的;因为每个组只有一行
    字匹配:块偏移提供的是这个字的第一个字节是从哪个位置开始的
    组相联高速缓存
    一个 1<E<C/B 的高速缓存通常称为E路组相联高速缓存。
    组相联高速缓存中的组选择 与直接映射高速缓存的组选择一样,组索引位标识组

    • 组相联高速缓存中的行匹配和字选择

    • 形式是(key, value),用key作为标记和有效位去匹配,匹配上了之后返回value。

    • 重要思想:组中的任意一行都可以包含任何映射到这个组的存储器块,所以告诉缓存必须搜索组中的每一行

    • 判断匹配的标准依旧是两个充分必要条件:

        1.有效
        2.标记匹配
      

    有关写的问题
    更新低一层中的拷贝的方法:

    直写:立即将w的高速缓存块协会到紧接着的低一层中         缺点是每次写都会引起总线流量。

    写回:只有当替换算法要驱逐更新过的块时,才写到紧接着的低一层中

     - 优点:由于局部性,写回能显著的减少总线流量
     - 缺点:增加了复杂性,必须为每个高速缓存行维护一个额外的修改位
    

    写不命中的处理方法

    写分配:加载相应的低一层中的块到高速缓存中,然后更新这个高速缓存块。
    非写分配:避开高速缓存,直接把这个字写在低一层中。
    真实的高速缓存层次结构
    既保存指令又包括数据的高速缓存称为统一的高速缓存。
    高速缓存参数的性能影响
    有许多指标来衡量高速缓存的性能:

    不命中率
    命中率
    命中时间
    不命中处罚
    影响:

    高速缓存大小的影响
    块大小的影响
    相联度的影响
    写策略的影响
    二、练习题筛选
    P394 6.4

    【假设1MB的文件由512字节的逻辑块组成,存储在有如下特性的磁盘驱动器上(旋转速率:10 000RPM,Taveseek=5ms,平均扇区/磁道 = 1000)。
    (1)最好的情况:给定逻辑块到磁盘扇区的最好的可能的映射(即,顺序的),估计读这个文件需要的最优时间
    (2)随机的情况:如果块是随机地映射到磁盘扇区的,估计读这个文件需要的时间】 首先明确:1MB=2^20字节,即数据存储在2000个逻辑块中;对于磁盘,Taverotation=0.51/10000RPM60secs/1min*1000ms/s=3ms则:

    (1)T=Taveseek+Taverotation+2Tmaxrotation=5ms+3ms+26ms=20ms
    在这种情况下,块被随机的映射到扇区上,读2000块的每一块都需要Taveseek+Tavgrotation=8ms。所以读这个文件的总时间为T = 8ms*2000=16000ms=16s
    P415 6.11

    【在前面dotprod的例子中,在我们对数组x做了填充之后,所有对x和y的引用的命中率是多少?】 在填充了之后,对于x和y数组,只有在引用第0个和第4个元素的时候发生不命中。因而命中率为75%
    参考资料
    《深入理解计算机系统》
    心得体会
    此次学习时间较为上次要少一点,因为内容都是串起来的,很多都是概念性的,所以很快,不过在做练习题的时候有些知识还需要用到前几章的内容,由于贪懒,前几章学的不是很深,只是些表面功夫,所以还是需要多复习,更深入的理解才对。反省了很多。

  • 相关阅读:
    Retrofit/Okhttp API接口加固技术实践(上)
    浅析C#中的结构体和类
    iOS中 支付宝钱包具体解释/第三方支付 韩俊强的博客
    Java并发之volatile二
    dynamic initializer和全局变量
    二叉树转换成森林&amp;森林变成二叉树
    这才是真正的裸眼3D!超级震撼!!
    每一个开发人员都应该有一款自己的App
    Hibernate HQL的使用
    我的Android进阶之旅------&gt;Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
  • 原文地址:https://www.cnblogs.com/20135239-yxlm/p/4912679.html
Copyright © 2011-2022 走看看