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小时
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)