20155218 《信息安全系统设计基础》第十三周学习总结
20155218 《信息安全系统设计基础》第十三周学习总结
详细总结本章要点:
1. 存储器系统是一个层级结构(具有不同容量,成本和访问时间的存储设备)。
2. 随机访问存储器(RAM):
- 静态RAM:
SRAM将每个位存储在一个双稳态(由于此特性,SRAM只要有电,就会永远保持它的值)的存储器单元里。 - 动态RAM:DRAM将每个位存储为对一个电容的充电
- 总结:只要有电,SRAM就会保持不变且不需要刷新。SRAM的存取比DRAM快,对光和电噪声的干扰不敏感,但价格高,功耗大。
- 传统的DRAM:DRAM芯片中的单元被分为d个超单元,咩歌超单元都由w个DRAM单元组成。一个d*w的DRAM总共存储了dw位信息;DRAM组成二维列阵而不是线性数组的一个原因是降低芯片上地址引脚的数量;DRAM芯片封装在内存模块中。
- 增强的DRAM:快页模式、拓展数据输出、同步DRAM、双倍数据速率同步DRAM、视频RAM。
3. 非易失性存储器:DRAM 、SRAM会因为断电丢失它们的信息。ROM(虽然ROM中有的类型就可以读也可以写,但整体上都被称为只读存储器),并以它们能够重新编程(写)的次数和对它们重新编程所用的机制来区分;
4. ROM分类:
- PROM:只能被编写一次;
- EPROM能够被擦除和重新编写的次数的数量级可以达到1000次;
- 闪存;
5. 访问主存:数据流通过总线的共享电子电路在处理器和DRAM主存之间传输;
- 读事务:主存----->CPU
- 写事务:CPU------>主存
6. 磁盘存储:
- 磁盘由盘片构成(一个或多个叠放在一起的盘片组成),每个盘片有两面或者称为表面,表面覆盖着磁性材料。每个表面是由一组称为磁道的同心圆组成。
- 磁盘容量
- 磁盘操作:磁盘用读/写头来读写存储在磁性表面的位,在任何时刻,所有的读/写头都位于同一个柱面。
- 磁盘以扇区大小的块来读写数据。对扇区的访问时间主要分为:寻道时间、旋转时间、传送时间。
- 逻辑磁盘块
- 链接I/O设备
- 访问磁盘:CPU使用一种称为内存映射I/O的技术来向I/O设备发送命令。
7. 固态硬盘:SSD是一种基于闪存的存储技术,由一个或多个闪存芯片和闪存翻译层组成。读SSD比写要快,随机读和写的性能差别由底层闪存基本属性决定的。
- 随机写很慢的原因:1.擦除块需要相对较长的时间。2.如果写操作试图修改一个包含已经有数据的的页p,那么这个块中所有带有用数据的页都必须被复制到一个新(擦除过的)块,然后才能进行对页p的写。
8. 局部性
- 局部性原理:良好的程序倾向于引用临近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。
- 局部性分为时间局部性和空间局部性;
- 对程序数据引用的局部性
- 取指令的局部性
- 评价局部性的原则:1.重复引用相同变量的程序具有良好的时间局部性;2.对于具有步长为k的引用模式的程序,步长越小,空间局部性越好。具有步长为1的引用模式的程序有很好的空间局部性。在内存中以大步长跳来跳去的程序空间局部性会很差。3.对于取指令来说,循环有好的时间和控件局部性。循环体越小,循环迭代次数越多,局部性越好。
9. 存储器层次结构
10. 存储器层次结构中的缓存
- 存储器层次结构的中心思想是,层次结构中的每一层都缓存来自较低一层的数据对象,依次类推,直到最小的缓存---CPU寄存器组。
- 数据以块大小为传送单位在第k层和k+1层之间来回传递。
- 缓存命中:当程序所需要第k+1层的某个数据对象d时,它首先在当前存储的第k层的一个块中查找d,如果刚好d缓存在第k层,则缓存命中。这样就会比直接从k+1层读取速度更快,体现了局部性的优点;
- 缓存不命中 :与缓存命中相反,因此就存在一个替换的过程,决定替换哪个块是由替换策略来决定的,在操作系统的课上,老师讲过LRU,FIFO等;
- 缓存不命中的种类:1.一个空的缓存被称为冷缓存,此类命中称为强制不命中或冷不命中;2.限制性的防治策略会引起一种不命中,称为冲突不命中;
11. 高速缓存存储器
- 高速缓存存储器组织结构:一般而言,可以用元组(S,E,B,m)来描述。高速缓存的大小(容量)C指的是所有块的大小的和。C=SxExB;
12. 直接映射高速缓存
- 高速缓存确定一个请求是否命中,然后抽取出被请求的字的过程:(1)组选择(2)行匹配(3)字抽取
13. 运行中的直接映射高速缓存
- 标记位和索引位连起来唯一地标识了内存中的每个块;
- 映射到同一个高速缓存组的块由标志位唯一地标识;
- 抖动:高速缓存反复地加载和驱逐相同的高速缓存块的组;
14. 组相关高速缓存
:每个组都保存有多于一个的高速缓存行。一个1<E<C/B的高速缓存通常称为E路组相联高速缓存
- 相联高速缓存中行比配的一个重要思想就是组中的任何一行都可以包含任何映射到这个组的内存块,所以高速缓存必须搜索组中的一个行,寻找一个有效的行,其标记与地址中的标记相匹配;
15. 全相联高速缓存:是由一个包含所有高速缓存行的组(即E=C/B)组成的。
16. 有关写的问题:
- 直写:方法简单,但是会引起总线流量;
- 写回:尽可能的推迟更新,只有当替换算法要驱逐这个更新过的块时,才把它写到接近着的第一层中。能显著的减少总线流量,但缺点是增加了复杂性
- 如何处理写不命中:写分配/非写分配
17. 衡量高速缓存性能的指标:
- 不命中率:不命中数/引用数量
- 命中率:1-不命中率
- 命中时间:从高速缓存传送一个字到CPU所需的时间,
- 不命中处罚
18. 优化高速缓存的定性折中考虑:
- 高速缓存大小的影响;
- 块大小的影响;
- 相联度的影响;
- 写策略的影响;
19. 高速缓存行、组和块有什么区别:
- 块是一个固定大小的信息包,在高速缓存和下一层高速缓存之间来回传递;
- 行是高速缓存中的一个容器,存储快以及其他信息。
- 组是一个或多个行的集合。直接映射高速缓存中的组只由一行组成。组相联和全相联高速缓存中的组是由多个行组成。
20. 编写高速缓存友好的代码:
- 对局部变量的反复引用是好的,因为编译器能够将它们缓存在寄存器文件(时间局部性)。
- 步长为1的引用模式是好的,因为存储器层次结构中所有层次上的缓存都是将数据存储为连续的块(空间局部性)。
21. 高速缓存对程序性能的影响
- 存储器山:读带宽(一个程序从存储系统中读数据的速率)的时间和空间局部性的二维函数。
完成这一章所有习题
-
6.1:
-
6.2:8.192G
-
6.3:10.008ms
-
6.4:在最好的情况下,只需要找到第一个扇区然后旋转两圈,time=seek+avg +max=20ms;
在最坏的情况下,time=2000*(seek+avg)=16s; -
6.7:这个题目很简单,只需要将数组a中元素按循环的层次来就好了即a[i][j][k];
-
6.8:1>2>3,原理与6.7类似;
-
6.9:
-
6.10:消除了冲突不命中,命中率为四分之三;
-
6.18:512个读,256个不命中;不命中率为50%;
-
6.23:当x=0.5时,磁盘的容量最大;
-
6.24:T=5.51;
-
6.25:最好的情况是都在同一个磁盘上且相连,T=35.5ms;最坏情况是275.5s
-
6.26:
-
6.27:与6.25相似;
-
同伴反馈
- 同伴(20155218)给我的反馈:
知识点罗列的很详细,习题学习也很深入,看起来是下了功夫的。给你提意见小建议:基础知识的学习可以分层次来介绍,这样博客看起来会更加美观大方;其次是习题的学习可以把自己的疑惑和感想写一下,加深理解。
- 我给同伴的反馈:
我的同伴郝博雅同学在这篇博客里,带着问题重新学习了第七章,坚持问题导向,学习到了新的知识点,解决的自己的疑惑。在第七章的学习中,共分为了三个问题,每个问题的解答都是很详细的,既有基础知识,也有直截了当的图片和代码。在小内容的学习中,也是不断地通过提出问题来引导下一步的学习,让我非常直接深刻的认识到同伴为什么学习是为了哪方面的知识,需要哪方面的知识。解答过程中,步骤也是很详细,每一步都有操作的方法和结果截图,让我也可以按照步骤自己操作实现。在看同伴的博客时,发现她的博客形式非常的简洁明了,相比之下,自愧不如。