20145329 《信息安全系统设计基础》第七周学习总结

20145329 《信息安全系统设计基础》第七周学习总结

教材学习内容总结

存储技术

基本存储技术:SRAM存储器 、DRAM存储器、ROM存储器、旋转硬盘、固态硬盘

  • 静态RAM(SRAM)

将每个位存储在一个双稳态的存储器单元里,每个单元是用一个六晶体管电路来实现的。
特点:它可以无限制地保持在两个不同的电压配置或状态之一。其他任何状态都是不稳定的。只要有电,它就会永远地保持它的值,即使有干扰,如电子噪音,来扰乱电压,当干扰消除,电路也能恢复到稳定值。

应用:SRAM用来作为高速缓存存储器,即可以在CPU芯片上,也可以在片下。

  • 动态RAM(DRAM)

DRAM将每个位存储为对一个电容的充电,由一个电容和一个访问晶体管组成。
特点:对干扰特别敏感,当电容的电压被扰乱之后,它就永远不会恢复了。暴露在光线下会导致电容电压改变。
应用:DRAM用来作为主存以及图形系统的帧缓冲区。

  • 静态RAM(SRAM)和动态RAM(DRAM)对比

只要供电,SRAM就会保持不变。与DRAM不同,它不需要刷新。SRAM存取比DRAM快。SRAM对诸如光和噪声这样的干扰不敏感,代价是SRAM单元比DRAM单元使用更多的晶体管,因而密集度低,而且更贵,功耗较大

  • 传统DRAM
    DRAM芯片中的单元被分成d个超单元,每个超单元都由w个DRAM单元组成,一个d*w的DRAM共存储了dw位信息。

  • ROM的区分:能被重编程的次数和对他们进行重编程所用的机制。
    PROM:只能被编程一次。
    EPROM:可擦写可编程ROM,紫外线光照清除单元内容,可擦写次数数量级1000。
    EEPROM:电子可擦除PROM,可以直接在印制电路卡上编程,可擦写次数数量级10^5。
    FLASH:闪存,基于EEPROM。

  • 磁盘存储
    由盘片构成,每个盘片有两面或者称为表面,表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴,使得盘片以固定的旋转速率旋转。

每个表面是由一组称为磁道的同心圆组成;每个磁道被划分成一组扇区;每个扇区包含相等数量的数据位(通常是512字节);这些数据编码在扇区上的磁性材料中。扇区之间由一些间隙分隔开,这些间隙中不存在数据位。间隙存储用来标识扇区的格式化位。

对扇区的访问时间有三个主要的部分:
寻道时间:为了读取某个目标扇区的内容,传动臂把读/写头首先定位到包含目标扇区的磁道上,所需时间即为寻道时间,约等于最大旋转时间,寻道时间Tseek依赖于读写头以前的位置和转动臂在盘面上移动的速度。
旋转时间:定位到期望的磁道后,驱动器等待目标扇区的第一个位旋转到读/写头下。依赖于当读写头到达目标扇区时盘面的位置和磁盘旋转速度。
传送时间:当目标扇区的第一个位位于读写头下时,驱动器就可以开始读或者写该扇区的内容。依赖于旋转速度和每条磁道的扇区数目。

  • 连接到I/O设备
    I/O总线比系统总线比存储器总线慢,但是它可以容纳种类繁多的第三方I/O设备。
    通用串行总线USB:连接到USB总线的设备的中转机构
    图形卡(适配器):包含硬件和软件逻辑,负责代表CPU在显示器上画像素
    主机总线适配器:将一个或多个磁盘连接到I/O总线

  • 固体磁盘
    固态硬盘是一种基于闪存的存储技术,一个SSD包由一个或多个闪存芯片和闪存翻译层组成,闪存芯片替代传统旋转磁盘中机械驱动器;闪存翻译层(一个硬件/固件设备)替代磁盘控制器,将对逻辑块的请求翻译成对底层物理设备的访问。
    性能特性: 顺序读和写(CPU按顺序访问逻辑磁盘块)性能相当,顺序读比顺序写稍快一点。随机顺序访问逻辑块时,写比读慢一个数量级。

局部性

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

  • 两种不同形式
    空间局部性
    时间局部性

  • 对程序数据引用的局部性
    步长为k的定义:一个连续变量中,每隔k个元素进行访问。
    步长为1的引用模式:就是顺序访问一个向量的每个元素,有时也被称为顺序引用模式,它是程序中空间局部性常见和重要的来源。
    一般来说,随着步长增加,空间局部性下降。

C语言中数组在存储器中是按照行顺序存放的

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

存储器层次结构

  • 存储技术:不同的存储技术的访问时间差异很大,速度较快的技术每字节的成本要比速度较慢的技术高,而且容量较小,CPU和主存之间的速度差距在增大。

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

  • 存储器层次结构的中心思想:对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存,即每层存储设备都是下一层的“缓存”

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

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

  • 替换策略:
    决定替换哪个块
    随机替换策略:随机选择一个牺牲块
    最近最少被使用替换策略:选择最后被访问的时间距现在最远的块

  • 高速缓存存储器

L1高速缓存:位于CPU寄存器文件和主存之间,访问速度2-4个时钟周期
L2高速缓存:位于L1高速缓存和主存之间,访问速度10个时钟周期
L3高速缓存:位于L2高速缓存和主存之间,访问速度30或40个时钟周期

  • 通用的高速缓存存储器结构
    高速缓存是一个高速缓存组的数组,高速缓存的结构将m个地址划分成了t个标记位,s个组索引位和b个块偏移位。

它的结构可以用元组(S,E,B,m)来描述:
m:每个存储器地址有m位,形成M=2^m个不同的地址
S:这个数组中有S=2^s个高速缓存组
E:每个组包含E个高速缓存行
B:每个行是由一个B=2^b字节的数据块组成的

标记位:t=m-(b+s)个,唯一的标识存储在这个高速缓存行中的块
有效位:每个行有一个有效位,指明这个行是否包含有意义的信息

  • 直接映射高速缓存

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

-直接映射高速缓存中的冲突不命中
原因:在块之间抖动,即这些块被映射到了同一个高速缓存组,高速缓存反复的加载和驱逐相同的高速缓存块的组
解决方法:在每个数组的结尾放B字节的填充(B字节是一个块的长度,一行是一个块,相当于分开了行)从而使得他们映射到不同的组。


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

写不命中的处理方法:
写分配(对应写回):加载相应的低一层中的块到高速缓存中,然后更新这个高速缓存块。
非写分配(对应直写):避开高速缓存,直接把这个字写在低一层中。

感悟

本章内容总体来说还是很有趣的,比较之前的抽象概念有比较多的实际的知识。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 50/50 1/1 20/20
第二周 50/100 1/2 30/50
第三周 100/200 1/3 20/70
第四周 0/200 0/3 20/90
第五周 50/250 1/4 20/110
第六周 50/300 1/5 20/130
第七周 0/300 1/6 20/150

参考资料

原文地址:https://www.cnblogs.com/jdy1453/p/6013787.html