2017-2018-1 20155312 《信息安全系统设计基础》第九周学习总结
教材学习内容总结
- 了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)
- 理解局部性原理
- 理解缓存思想
- 理解局部性原理和缓存思想在存储层次结构中的应用
- 高速缓存的原理和应用
教材学习中的问题和解决过程
-
问题1:书中对局限性的概念解释是“计算机程序倾向于引用临近于其他最近引用过的数据项,或者最近引用过的数据项本身”,这里的“临近于”是什么意思呢?是指内存地址上临近吗?
-
问题1解决方案:通过阅读教材,这里的临近应该指的是时间间距短、内存地址近即与上一次引用的内存位置附近的一个内存位置。一个具有良好的局限性的程序运行速度会更快。高速缓存存储器是用来保存最近被引用的指令和数据项,从而提高对主存的访问速度。
-
问题2:局限性的两种形式“时间局限性”和“空间局限性”是如何体现的?
-
问题2解决方案:时间局限性是指被引用过一次的存储器位置在未来会被多次引用(通常在循环中)比如图6-17中的sum变量。空间局限性是指如果一个存储器的位置被引用,那么将来他附近的位置也会被引用,例如v[]数组。
-
问题3:引入步长概念的意义?
-
问题3解决方案:通过对比sumarrycols和sumarray可以发现,我们访问内存中的元素时,尽量按着内存中存放的顺序,“一个挨着一个”地读取内存单元中的值,这样步数少,空间局部性高。
-
总结起来量化评价程序中局限性的简单原则如下:
- 重复引用同一个变量的程序有良好的时间局部性
- 对于具有步长为k的引用模式的程序,步长越小,空间局部性越好。
- 对于取指令来说,循环具有良好的时间和空间局部性。循环体越小,迭代次数越多局部性越好。
-
问题4:怎么解决冲突不命中?
-
问题4解决方案:可以按照“时间局限性”的思想,把可能被多次使用的数据元素写入缓存;还可以改变策略,改用映射以外的其他策略。
代码调试中的问题和解决过程
- 问题1:高速缓存存储器结构中各个参数的含义是什么?
- 问题1解决方案:通过反复阅读教材第436页,我的理解是:
- 第一层划分:高速缓存被分成2^s个高速缓存组;
- 第二层划分:每个高速缓存租被划分为E行
- 第三层划分:每行被划分为有效位、标记位、数据块三部分
- 其中有效位用于标记该行缓存中的数据是否有效
- 标记位用于标识一个分组中的哪一行
20155312
(statistics.sh脚本的运行结果有问题,这周编写了很多代码,但只统计了79行)
上周考试错题总结
上周没有测试
结对及互评
点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
- 代码中值得学习的或问题:
- xxx
- xxx
- ...
- 其他
本周结对学习情况
- 20155333
- 结对照片
- 结对学习内容
- 网络编程第11章
- 教材第3章
- ...
其他(感悟、思考等,可选)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1500 | 2/9 | 30/90 | |
第五周 | 200/1800 | 2/11 | 20/120 | |
第六周 | 300/2000 | 2/13 | 18/140 | |
第七周 | 500/2300 | 2/14 | 22/158 | |
第八周 | 300/2800 | 1/16 | 30/180 | |
第九周 | 1000/3800 | 2/17 | 20/210 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:20小时
-
实际学习时间:17小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)