简单模型中,存储器是一个线性的字节数组。真实模型中,是一个具有不同容量,成本,访问时间的存储层次结构(存储器山)
程序的局部性很重要,对程序性能有很重要的影响。
计算机系统一个基本而持久的思想,如果你理解了系统是如何将数据在存储器层级结构中上下移动,你就可以编写程序,让数据存储在层次结构中较高的地方,从而CPU可以更快的访问到他们。
编写程序实现功能是最简单的,如何让编写的程序拥有最高的性能,例如利用程序的局部性原理,才是更重要的
程序的局部性分为时间局部性和空间局部性。
时间局部性:程序更多的引用最近访问过的数据项集合。
空间局部性:程序更多的引用邻近的数据项集合。
原则有三:重复引用同一个变量;步长尽可能小;循环体越小,迭代次数越多。
能量墙:增加CPU的时钟频率,芯片的功耗太大,于是转向多核。
现代计算机系统的各个层次,从硬件到操作系统,再到应用程序,他们的设计都利用了局部性:缓存
存储器层次结构:中心思想:对于每个K,位于K层的更小更快的存储设备作为K+1层设备的缓存。
1.随机访问存储器(RAM, Random-Access Memory)
2.DRAM阵列
3.访问主存
系统总线是一组并行的导线,能携带地址、数据和控制信号。但是不同总线不能直接互通,这就用到了I/O桥。
寻道时间:将磁头定位到目标扇区所在的磁道。这个时间依赖于磁头之前的位置和传动臂在盘面上移动的速度。通常3~9ms。
旋转时间:找到目标所在的第一个扇区。性能依赖于当前到达的磁道上相对目标扇区的位置和磁盘的旋转速度。
传送时间:读写扇区内容的时间。依赖于旋转速度和当前磁道的扇区数目。
1.基本构造
(S, E, B, m),m是地址w的位长度。
容量计算:
高速缓存确定一个请求是否命中,然后取出被请求的字的过程,分为三步:1)组选择,2)行匹配,3)字抽取。当且仅当设置了有效位,而且标记位与w地址中的标记位相匹配时才算命中。
2.分类
全相联高速缓存,只有一个组,所有的缓存行都在一个组里。
...
(statistics.sh脚本的运行结果截图)
- [结对同学学号1](博客链接)
- 结对照片
- 结对学习内容
- XXXX
- XXXX
- ...
xxx
xxx
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
计划学习时间:XX小时
实际学习时间:XX小时
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
2017-2018-1 20155332 《信息安全系统设计基础》第九周学习总结
原文:http://www.cnblogs.com/besti2015/p/7858331.html