2017-2018-20155336 《信息安全系统设计基础》第九周学习总结

2017-2018-20155336 《信息安全系统设计基础》第九周学习总结

学习目标

  • 了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)
  • 理解局部性原理
  • 理解缓存思想
  • 理解局部性原理和缓存思想在存储层次结构中的应用
  • 高速缓存的原理和应用

教材学习内容总结

  • 这周学习第六章

第一节

  • 静态RAM(SRAM):

    • SRAM比DRAM更快,但也贵得多
    • SRAM将每个位存储在一个双稳态的存储器单元里,可无限期保持在两个不同的电压配置或状态之一
    • 只要有供电,SRAM就会保持不变
    • SRAM对于诸如光和电噪声这样的干扰不敏感
  • 动态RAM(DRAM):

    • DRAM将每个位存储为对一个电容的充电
    • DRAM存储器单元对干扰非常敏感
    • DRAM芯片中的单元被分成了D个超单元,每个超单元都由W个DRAM单元组成,一个d*w的DRAM总共才能除了DW位信息
  • RAS和CAS请求共享相同的DRAM地址引脚

  • DRAM芯片包装在存储器模块中,常见的包装包括:

    • 双列直插存储器模块:168引脚
    • 单列直插存储器模块:72引脚
  • 虽然ROM中有的类型既可以读也可以写,但是他们整体上都称为只读存储器

  • PROM只能被编程一次

  • 磁盘结构:盘片、磁道、扇区、间隙、柱面;磁盘驱动器

  • 读事务:从主存传送数据到CPU

  • 写事务:从CPU传送数据到主存

  • 总线包括:地址总线、数据总线、控制总线、系统总线、存储总线、IO总线

第二节

  • 局部性原理:时间局部性、空间局部性;
  • 局部性两种不同的形式:时间局部性、空间局部性
  • 有良好局部性的程序比局部性差的程序运行的更快
  • 随着步长的增加,空间局部性下降
  • 代码区别于程序数据的一个重要属性是在运行时他是不能被修改的
  • 重复引用同一个变量的程序有良好的时间局部性
  • 对于具有步长为k的引用模式的程序,步长越小,空间局部性越好
  • 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好

存储器层次结构

  • 存储器层次结构的中心思想是:对于每个k,位于k层的更快更小的存储设备作为位于(k+1)层的更大更慢的存储设备的缓存。数据总是以块大小作为传送单元在第k层和k+1层之间来回拷贝的。第(k+1)层的存储器被划分成连续的数据对象片,称为块;数据总是以块大小为传送单元在相邻两层之间来回拷贝的;在任何时刻,第k层的缓存包括第(k+1)层块的一个子集的拷贝。

高速缓存存储器

  • 高速缓存是一个有S个高速缓存组的数组,每个数组包含E个高速缓存行,每个行包含一个有效位,一些标记位t,一个数据块B。

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

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

  • 高速缓存的大小C = S * E * B

  • 高速缓存确定一个请求是否命中,然后抽取出被请求的字的过程,分为三步

    • 组选择
    • 行匹配
    • 字抽取
  • 直接映射高速缓存中不命中时,每个组只包含有一行,替换策略是:用心取出的行替换当前的行。

  • 一个1 < E < C/B的告诉缓存通常称为E路组相联高速缓存

  • 一个全相联高速缓存是由一个包含所有高速缓存行的组(E = C/B)组成的

教材学习中的问题和解决过程

问题

  • 教材学习中遇到的问题是关于书p396关于访问磁盘的图示,在c图中为什么第三步是从磁盘发出的信号?而且发出的信号为什么没有通过系统总线?

解决

  • 后来通过继续看书上对其解释得到了答案。首先从磁盘发出的信号是一个中断信号来通知cpu,而且这个信号是发送到cpu芯片的一个外部引脚上。

习题6.2

  • 计算这样一个磁盘的容量。它有2个盘片,10 000个柱面,每条磁道平均有400个扇区,每个扇区平均有512个字节

  • 磁盘容量 = (512/400)*400*10000*2*2= 8 192 000 000 字节 = 8.192GB

习题6.3

  • 估计访问下面的一个磁盘上的一个扇区需要的时间(以ms为单位)。

      旋转速率:15000RPM;Taveseek = 8ms;每条磁道的平均扇区数:500
      访问时间 = Taveseek+Taverotation+Tavetransfer = 8ms+0.51/15000RPM60secs.min1000ms/s+1/15000RPM1/50060secs/	
      min1000ms/s=8ms+2ms+0.008ms=10.008ms=
    

习题6.4

  • 假设1MB的文件由512字节的逻辑块组成,存储在有如下特性的磁盘驱动器上(旋转速率:10 000RPM,Taveseek=5ms,平均扇区/磁道 = 1000)。

    (1)最好的情况:给定逻辑块到磁盘扇区的最好的可能的映射(即,顺序的),估计读这个文件需要的最优时间

    (2)随机的情况:如果块是随机地映射到磁盘扇区的,估计读这个文件需要的时间

    (1)T=Taveseek+Taverotation+2Tmaxrotation=5ms+3ms+26ms=20ms

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

习题6.11

  • 在前面dotprod的例子中,在我们对数组x做了填充之后,所有对x和y的引用的命中率是多少?

      在填充了之后,对于x和y数组,只有在引用第0个和第4个元素的时候发生不命中。因而命中率为75%
    

代码托管

其他(感悟、思考等,可选)

  • 对计算机的存储有更深入的了解。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 600/1300 4/9 30/90
第五周 650/1300 5/9 40/90
第六周 700/1300 6/9 50/90
第七周 800/1300 7/9 60/90
第八周 1200/1700 8/10 80/110
第九周 1800/2000 9/11 100/120

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:10小时

  • 实际学习时间:10小时

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

原文地址:https://www.cnblogs.com/hxl681207/p/7988809.html