2017-2018-1 20155333 《信息安全系统设计基础》第九周学习总结
2017-2018-1 20155333 《信息安全系统设计基础》第九周学习总结
教材学习内容总结
- 存储技术
- 构成存储系统的介质常见的有RAM(随机访问存储器),磁盘,闪存等。
- 随机访问存储分为两类:静态的和动态的。静态RAM(SRAM)比动态RAM(DRAM)更快,通常为1~10ns但也贵得多。SRAM用来作为高速缓存存储器。DRAM用来作为主存或者显存。如果断电,RAM会丢失他们的信息,因此,它们是易失。对应着,也存在非易失性存储器,即使在断电后也能保存信息。只读存储器(ROM)就是非易失性存储器。
- 磁盘是广为应用的保存大量数据的存储设备,存储数据的数量级可以达到几百到几千千兆字节。不过相比RAM,从磁盘读取信息的时间为毫秒级,从DRAM读比从磁盘读快10万倍,从SRAM读比从磁盘读快100万倍。
- 闪存是一种非易失性存储器,基于电子可擦除的可编程ROM(EEPROM),它已经成为一种重要的存储技术。闪存已经应用到大多数的移动数码领域以及台式机服务器计算机系统,我们最新了解到的一种新型磁盘驱动器——固态硬盘(Solid State Disk,SSD),也是基于闪存技术。
- 存储器层次结构
- 局部性:
在存储器层次结构的基础之上引出了一个很重要的思想,也是计算机程序里面一个很基本的属性”局部性“。局部性又分为两 个方面:
1、时间局部性:有良好的时间局部性程序中,被引用过一次的存储器很有可能在不久的将来再被多次调用;
2、空间局部 性:有良好空间局部性程序中,被引用过一次的存储器,很有可能在不久的将来引用其附近临近的存储器。由此可以给出量化评价
- 一个程序局部性的简单原则:
- 1、重复引用一个变量的程序有良好的时间局部性;
- 2、对于步长为k的引用模式的程序,步长越小, 程序的空间局部性越好;
- 3、对于取指令来说,循环有好的时间和空间局部性。
- 缓存:
第k层总是作为第k+1层存储设备的数据对象的缓冲区域,使用高速缓存这个过程称为缓存。在这过程中,总是以传送单元(块)在第k层与第k+1层之间来回拷贝数据。
- 对于缓存:一般有缓存命中和缓存命不中两种情况。对于缓存命中的情况比较简单,就是我们需要从k+1层中提取的数据正好就在已经缓存在第k层中了。对于缓存命不中则有几种不同的情况:
- 1、 冷不命中(强制性不命中):若第k层缓存是空的,那么对任何数据对象的访问都是不命中的;
- 2、冲突命不中:发生在缓存足够大,能够保存引用的数据,但是由于多个引用数据被映射在了缓存区的同一个位置,导致多次缓存不命中;
- 3、容量不命中:当缓存太小了,不能处理一个完整的工作集(程序按照一系列的阶段来运行,每一个阶段访问块的某一相对稳定不变的集合,这个集合就叫工作集)的时候出现这种情况。
- 高速缓存存储器
上图给出了通用高速缓存存储器的结构(S,E,B,m):S为高速缓存组数组,每个高速缓存组包含E个高速缓存行,每行由B字节的数据块组成,有效位说明该行数据是否包含有意义的信息,还有t=m-(b+s)个标记位,它们唯一地标识存储在这个高速缓存行中的块。缓存容量大小:C=SEB
-
有关写的问题
-
a. 写一个已经缓存了的字w写命中,两种方式:直写和写回。
-
- 直写:立即将w的高速缓存块写回到紧接着的低一层中。
-
- 写回:尽可能的推迟存储器更新,只有当替换算法要驱逐更新过的块时,才把它写到紧接着的低一层中。
-
b. 处理写不命中情况:写分配和非写分配
教材学习中的问题和解决过程
- 问题1:为什么采用分层结构?
- 问题1解决方案:对存储器的要求容量大,速度快,价格低,为了解决存储器要求之间的矛盾,目前采用多级存储体系结构:高速缓冲存储器,使存取速度和cpu运算速度相匹配;外存储器:满足计算机对大容量存储器的要求;主存储器:介于高速缓冲器和外存储器之间,容纳核心软件和较多的用户程序。
- 问题2:为什么高速缓存用中间的位作为组索引,而不是用高位?
- 问题2解决方案:因为使用高位一些连续的存储器会映射在相同的高速缓存块中,造成冲突不命中的情况。
- 问题3:对存储器山的理解?
- 问题3解决方案:当时间局部性很差的时候空间局部性仍能补救
- 问题4:衡量高速缓存的性能的指标
- 问题4解决方案:
-
不命中率。在一个程序执行或程序的一部分执行期间,存储器引用不命中的比率,不命中率=不命中数量/引用数量。
-
命中率。它等于1-不命中率
-
命中时间。从高速缓存传送一个字到CPU所需的时间,包括组选择、行确认和子选择的时间。
-
不命中处罚。由于不命中所需的额外时间,L1不命中需要从L2得到服务的处罚,典型的是10个时钟周期,从L3得到服务的处罚,需要40个时钟周期,从主存得到服务的处罚,需要100个时钟周期。
- ...
代码调试中的问题和解决过程
- 问题1:XXXXXX
- 问题1解决方案:XXXXXX
- 问题2:XXXXXX
- 问题2解决方案:XXXXXX
- ...
代码托管
上周考试错题总结
- 错题1及原因,理解情况
- 错题2及原因,理解情况
- ...
结对及互评
点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
- 代码中值得学习的或问题:
- xxx
- xxx
- ...
- 其他
本周结对学习情况
- [2015532](http://www.cnblogs.com/zjy1997/)
- 结对照片
- 结对学习内容
- 教材第六章
- 实验三-并发编程
- ...
其他(感悟、思考等,可选)
xxx
xxx
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 10/10 | 1/1 | 10/10 | |
第二周 | 80/90 | 1/2 | 15/25 | |
第三周 | 100/190 | 1/3 | 15/40 | |
第四周 | 150/340 | 1/4 | 18/58 | |
第五周 | 2/6 | 20/78 | ||
第六周 | 2/8 | 20/98 | ||
第七周 | 2124/ | 2/10 | 20/118 | |
第八周 | 2/12 | 30/148 | ||
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。 | ||||
耗时估计的公式 | ||||
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。 |
-
计划学习时间:30小时
-
实际学习时间:20小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)