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

    第六章 存储器层次结构

    序言:

    存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。

    CPU寄存器、高速缓存存储器、主存储器、磁盘。

    6.1 存储技术

    一、随机访问存储器(RAM)

    RAM分类:

    • 静态的SRAM-更快,更贵,作为高速缓存存储器,CPU片上或片下
    • 动态的DARM-作为主存以及图形系统的帧缓冲区

    传统的DRAM

    存储控制器一次传入或传出w位。
    存储器模块

    DRAM芯片包装在存储器模块中,是插在主板的扩展槽上的。

    非易失性存储器——ROM

    RAM断电丢失数据,是易失的

    ROM是非易失的,统称为只读存储器

    (1)分类
    • PROM-可编程ROM,只能被编程一次
    • EPROM-可擦写可编程ROM
    • EEPROM,电子可擦除PROM,能够被编程的次数的数量级在10的五次方。
      •  
    (2)闪存FLASH

    基于EEPROM,为大量的电子设备提供快速而持久的非易失性存储。

    3)固件

    存储在ROM设备中的程序通常被称为固件,当一个计算机系统通电以后,他会运行存储在ROM中的固件。

    l  访问主存

    (1)总线    一组并行的导线,能携带地址、数据和控制信号。

    总线分类:

    l  系统总线——连接CPU和I/O桥
    l  存储器总线——连接I/O桥和主存
    l  I/O总线

    二、磁盘存储

    1.磁盘构造

    • 盘片
    • 表面:每个盘片有两个表面
    • 主轴:盘片中央,可旋转
    • 旋转速率:通常5400~15000/min
    • 磁道:同心圆们
    • 扇区:每个磁道被划分为一组扇区
    • 数据位:每个扇区包含相等数量的~,通常为512字节
    • 间隙:存储用来标识扇区的格式化位
    • 磁盘驱动器-磁盘-旋转磁盘
    • 柱面:所有盘片表面上到主轴中心的距离相等的磁道的集合。
    • 记录密度-位/英寸
    • 磁道密度-道/英寸
    • 面密度-位/平方英寸

    2.磁盘容量——一个磁盘上可以记录的最大位数

    (1)影响因素:

    提高面密度即可提高容量。

    (2)现代大容量磁盘——多区记录

    一个区中的每个柱面的每条磁道都有相同数量的扇区,这个扇区的数量由该区中最里面的磁道所能包含的扇区数确定

    3.磁盘操作 磁盘以扇区大小的块来读写数据。

    访问时间的分类:

    (1)寻道时间——移动传动臂所用的时间。

    2)旋转时间——驱动器等待目标扇区的第一个位旋转到读/写头下

    平均旋转时间是最大值的一半。

    (3)传送时间
    访问一个磁盘扇区内容的平均时间为平均寻道时间,平均旋转延迟和平均传送时间之和。

    结论:

    1.主要时间是寻道时间和旋转延迟。

    2.将寻道时间x2是估计磁盘访问时间的简单而合理的方法。

    3.逻辑磁盘块

    盘面,磁道,扇区,这个三元组唯一的标识了对应的物理扇区。

    4.连接到I/O设备(I/O总线)I/O总线连接了CPU,主存和I/O设备。

    • 通用串行总线USB:2.0最大带宽60MB/S,3.0最大带宽600MB/S
    • 图形卡(适配器)
    • 主机总线适配器

    5.访问磁盘

    DMA:直接存储器访问
    ——设备可以自己执行读或者写总线事务,而不需要CPU干涉

    三、固体磁盘

    固态硬盘是一种基于闪存的存储技术【区别于旋转磁盘:固态磁盘没有移动的部分。

    1.组成

    一个SSD包由一个或多个闪存芯片和闪存翻译层组成

    2./

    (1)顺序读写
    (2)随机读写数据是以为单位读写的。

    6.2 局部性

    局部性原理:一个编写良好的计算机程序,常常倾向于引用临近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。

    分类:时间局部性&&空间局部性

    应用:

    1.硬件层:通过引入高速缓存存储器来保存最近被引用的指令和数据项,从而提高对主存的访问速度。

    2.操作系统级:系统使用主存作为虚拟地址空间最近被引用块的高速缓存,用主存来缓存磁盘文件系统中最近被使用的磁盘块

    3.应用程序中:Web浏览器将最近被引用的文档放在本地磁盘上。

    一、对程序数据引用的局部性

    1.步长为k的引用模式

    定义:一个连续变量中,每隔k个元素进行访问,就被称为步长为k的引用模式。

    步长为1的引用模式:就是顺序访问一个向量的每个元素,有时也被称为顺序引用模式,它是程序中 空间局部性常见和重要的来源

    一般来说,随着步长增加,空间局部性下降。

    二、取指令的局部性

    程序指令是存放在存储器中的,CPU必须取出(读出)这些指令。

    但是代码区别于程序数据的一个重要属性是:在运行时它是不能被修改的。

    三、局部性小结

    量化评价一个程序中局部性的简单原则:

    • 重复引用同一个变量的程序有良好的时间局部性
    • 对于具有步长为k的引用模式的程序,步长越小,空间局部性越好
    • 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。

    6.3 存储器层次结构

    每层存储设备都是下一层的缓存

    一、缓存

    高速缓存:是一个小而快速的存储设备,它作为存储在更大、更慢的设备中的数据对象的缓冲区域。

    缓存:使用高速缓存的过程称为缓存。

    数据总是以块大小为传送单元在第k层与第k+1层之间来回拷贝。任一对相邻的层次之间块大小是固定的,但是其他的层次对之间可以有不同的块大小。

    1.缓存命中

    当程序需要第k+1层的某个数据对象d时,首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,就称为缓存命中。

    该程序直接从第k层读取d,比从第k+1层中读取d更快。

    2.缓存不命中

    即第k层中没有缓存数据对象d。

    这时第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块

    覆盖——替换/驱逐

    替换策略:

    • 随机替换策略-随机牺牲一个块
    • 最近最少被使用替换策略LRU-牺牲最后被访问的时间距离现在最远的块。

    3.缓存不命中的种类

    (1)强制性不命中/冷不命中

    即第k层的缓存是空的(称为冷缓存),对任何数据对象的访问都不会命中。

    (2)冲突不命中

    由于一个放置策略:将第k+1层的某个块限制放置在第k层块的一个小的子集中,这就会导致缓存没有满,但是那个对应的块满了,就会不命中。

    (3)容量不命中

    当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集。

    4.缓存管理

    某种形式的逻辑必须管理缓存,而管理缓存的逻辑可以是硬件、软件,或者两者的集合。

    6.4 高速缓存存储器

    L1高速缓存:

    L2高速缓存:

    L3高速缓存:

    一、通用的高速缓存存储器结构

    高速缓存是一个高速缓存组的数组,它的结构可以用元组(S,E,B,m)来描述

    高速缓存的结构将m个地址划分成了t个标记位,s个组索引位和b个块偏移位。

    高速缓存的大小/容量C

    指所有块的大小的和,不包括标记位和有效位,所以:

    C=S*E*B

     

    二、直接映射高速缓存

    根据E(每个组的高速缓存行数)划分高速缓存为不同的类,E=1的称为直接映射高速缓存,以此为例:

    高速缓存确定一个请求是否命中,然后取出被请求的字的过程,分为三步:组选择行匹配字抽取

    缓存不命中时的行替换——用新取出的行替换当前的行。

    .后运行中的直接映射高速缓存

    • 标记位和索引位连起来唯一的标识了存储器中的每个块
    • 映射到同一个高速缓存组的块由标记位唯一地标识

    直接映射高速缓存中的冲突不命中

    (1)抖动:

    ——高速缓存反复的加载和驱逐相同的高速缓存块的组

    (2)原因:

    这些块被映射到了同一个高速缓存组。

    (3)解决方法:

    在每个数组的结尾放B字节的填充(B字节是一个块的长度,一行是一个块,相当于分开了行)从而使得他们映射到不同的组。

    组相联高速缓存

    E路组相联高速缓存:1<E<C/B

    1.组选择

    2.行匹配和字选择

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

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

    判断匹配的标准依旧是两个充分必要条件:1.有效2.标记匹配

    3.行替换

    四、全相联高速缓存(E=C/B)

    1.组选择

    只有一个组,默认组0,没有索引位,地址只被划分成了一个标记和一个块偏移。

    2.行匹配和字选择

    五、写

    1.写命中时,更新低一层中的拷贝的方法:

    (1)直写,立即将w的高速缓存块协会到紧接着的低一层中
    (2)写回,只有当替换算法要驱逐更新过的块时,才写到紧接着的低一层中

    2.写不命中的处理方法

    (1)写分配---通常写回对应

    加载相应的低一层中的块到高速缓存中,然后更新这个高速缓存块。

    (2)非写分配---通常直写对应

    避开高速缓存,直接把这个字写在低一层中。

    六、真实的高速缓存层次结构:

    高速缓存既保存数据,也保存指令。

    • 只保存指令的:i-cache
    • 只保存程序数据的:d-cache
    • 既保存指令又保存数据的:统一的高速缓存
    • 不命中率 = 不命中数量/引用数量
    • 命中率 = 1 - 不命中率
    • 命中时间
    • 不命中处罚:因为不命中所需要的额外的时间
    • 高速缓存大小:命中率+,命中时间+
    • 块大小:空间局部性+,命中率+,高速缓存行数-,时间局部性-,不命中处罚+
    • 相联度:E值大,抖动-,价格+,命中时间+,不命中处罚+,控制逻辑+【折中为不命中处罚低的,相联度低,不命中处罚高的,使用高相联度】
    • 写策略:越往下,越可能用写回而不是直写

    七、高速缓存参数的性能影响

    1.性能:

    2.具体影响:

    存储器山

    把存储器系统的性能用关于时间和空间局部性的山表示。

    参考资料

    • 《深入理解计算机系统》
    • 20135202闫佳歆的学习总结
    • 百度百科-总线

    遇到的问题及解决

    1. P384里第一段:DRAM芯片中的单元被分成d个单元,每个超单元都有w个DRAM单元组成。---------------困惑:第一个单元和第二个单元的区别是啥,按理来说应该不是同种单元,但是看着让人觉得歧义,看了好几遍还是很绕
    2.  64位双字,IA32会称64位为四字。――――――――64位是8个字节,双字不是应该是32位吗?
    3. 题-6.1 确定2的幂数的阵列维数是什么意思? ―――――2^n 的意思?
    4. 多区记录记录的技术到底是什么样的,百度上,没有找到对应课本的介绍。什么叫做柱面的集合被分割成不相交的子集合。对于磁盘的结构。-------百度百科,硬盘扇区

    体会

         本章学习的内容较少,有更多的内容可以看细,但是在看细的过程中,对有些具体内容就并不是理解透彻了,前几章的学习渐渐发现了一些问题,就是有的知识点没有学仔细,考试的时候考到了,却不懂,问同学的时候自己也是听得似懂非懂的。在做家庭作业的时候,越发觉得要把之前的知识点更要仔细看一下,有的知识点,常用的觉得可以适当背一下的。

     

  • 相关阅读:
    转:Omnet++ 4.0 installation for Ubuntu
    转:myeclipse假死的解决方案
    omnet++ 4.0下使用XML的例子
    转:Microsoft JET Database Engine (0x80004005) 未指定的错误的完美解决
    C# 数据库删除操作错误报错 System.Data.SqlClient.SqlException (0x80131904)
    Windows 7 转移用户文件夹
    CentOS自动登录Gnome
    Archlinux GRUB2 配置
    Archlinux 登录管理器切换
    html2chm工具1.0发布
  • 原文地址:https://www.cnblogs.com/zhengwei0712/p/4909346.html
Copyright © 2011-2022 走看看