2018-2019 20165203 《信息安全系统设计基础》第五周学习总结
教材学习内容总结
重要概念
- 存储器系统:一个具有不同容量成本和访问时间的存储设备的层次结构。
- 高速缓存存储器------主存储器中数据和指令的缓冲区域------磁盘------通过网络连接其他机器磁盘或磁带上的数据的缓冲区域
- 存储器层次结构:cpu存储器----高速缓存----主存----磁盘(访问速率依次降低)
存储技术
随机访问存储器(RAM)
- 对比:
名称 | 特点 | 简称 | 用处 | 容量 |
---|---|---|---|---|
静态RAM | 快、贵 | SRAM | 作为高速缓存存储器,可以在cpu上,cpu下 | <=n兆字节 |
动态RAM | 慢、便宜 | DRAM | 作为主存以及图形系统的帧缓冲区 | 几百或几千兆字节 |
SRAM:每个位存储在双稳态的存储单元
只要有电,永远保持它的值,有干扰,干扰消除,电压会恢复到稳定值
DRAM:每个位存储为对一个电容充电
存储器非常敏感,电压被扰乱,永远不会被恢复
-
传统的DRAM:电路模式
-
内存模块:DARM芯片封装在内存模块中
-
增强的DRAM:
-
- 快页模式DRAM:允许对同一行连续地访问可以直接从行缓冲区得到服务。
-
- 扩展数据输出DRAM:允许各个CAS信号在时间上靠得更紧密一点。
-
- 同步DRAM:SDRAM能够比那些异步的存储器更快地输出它的超单元的内容。
-
- 双倍数据速率同步DRAM:它通过使用两个时钟沿作为控制信号,使DRAM翻倍。
-
- 视频RAM:用在图形系统的帧缓冲区中。
-
非易失性存储器:即使在关电后仍然保存着他们的信息。
-
访问主存:数据流通过总线在处理器和DRAM主存之间来来回回。
-
- 总线能携带地址、数据和控制信号。
-
- 携带的信号会同步事务,并标识出当前正在被执行的事务的类型。
-
计算机系统处理指令图
磁盘存储
-
磁盘构造:由盘片构成。
-
- 盘片表面:磁性记录材料、磁道、扇区、间隙
-
- 盘片中央:主轴----使盘片以固定旋转速率转
-
- 磁盘驱动器:柱面
- 磁盘驱动器:柱面
-
磁盘容量:一个磁盘上可以记录的最大位数
-
- 记录密度(bit/inch)
-
- 磁道密度(道/inch)
-
- 面密度(bit/平方英寸) = 记录密度*磁道密度(与容量有关)
-
- 计算磁盘容量的公式:
- 计算磁盘容量的公式:
-
磁盘操作:
-
- 读/写头:读写存储在磁性表面的位
-
- 寻道时间:移动传动臂所需的时间
-
-
- 依赖于读/写头以前的位置和传动臂在盘面上移动的速度
-
-
- 旋转时间:一旦读/写头定位到了期望的磁道,驱动器等待目标扇区的第一个位置转到读/写头下。
-
- 最大旋转延迟公式:
- 最大旋转延迟公式:
-
- 传送时间:当目标扇区的第一个位位于读/写头下时,驱动器就可以开始读或者写该扇区的内容了。
-
- 平均传送时间公式:
- 平均传送时间公式:
-
逻辑磁盘块:磁盘控制器----读一个磁盘扇区的数据到主存,操作系统会发送一个命令到磁盘控制器,让它读某个逻辑块号。
-
连接I/O设备:通用串行总线、图形卡、主机总线适配器
-
访问磁盘:如图所示
局部性
- 局部性:倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项的本身。
- 分类:时间局部性和空间局部性
- 对程序数据引用的局部性
-
- 时间局部性:书中的例子sumvec,因为sum可以被重复使用
-
- 空间局部性:
-
-
- 每隔k个元素进行访问,就称为步长为k的引用模式。
-
-
-
- 步长为1的引用模式称为顺序引用模式。
-
-
-
- 顺序引用模式具有很好的空间局部性。
-
- 取指令的局部性
-
- for循环具有良好的空间局部性
存储器层次结构
-
存储器的层次结构:见下图
-
存储器层次结构中的缓存
-
- 存储器结构的中心思想:对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。(层次结构中的每一层都缓存来自较低一层的数据对象)
-
- 存储器被划分成连续的数据对象组块,称为块,每个块都有唯一的地址或名字。
-
- 缓存命中:程序需要在第k+1层的某个数据对象d时,它首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,那就是缓存命中。
-
- 缓存不命中:第k层中没有缓存数据对象d,需要在第k层中替换或驱逐某个牺牲块,用到替换策略。
-
- 缓存管理:硬件和软件的结合。
高速缓存存储器
-
高速缓存的组织结构:
-
- (S, E, B, m)的通用组织:
-
- 高速缓存是一个高速缓存组的数组。每个组包含一个或多个行,每个行包含一个有效位,一些标记位,以及一个数据块;高速缓存的结构将m个地址划分成了t个标记位、s个组索引位和b个块偏移位。如图所示
-
直接映射高速缓存(E=1 只有一行),如图所示
-
工作过程(被请求字的过程)
-
- 组选择
-
- 行匹配
-
- 字抽取
教材学习中的问题和解决过程
看到教材内容,如图所示
自己总结了一下破坏空间局部性的跳转指令,以后写程序时可以谨慎使用。
解答:C语言:goto语句
汇编语言: 跳转指令分三类:
一、无条件跳转: JMP;
二、根据 CX、ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转)、JECXZ(ECX 为 0 则跳转);
三、根据 EFLAGS 寄存器的标志位跳转, 这个太多了.
CMP 指令相当于减法操作, 不影响任何寄存器, 执行后: 如果相等则 ZF=1, 否则ZF=0
参考:跳转指令总结
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
- 错题1:Y86-64中"addq %rax, %rcx"对应的机器码是()
A .6010
B .6001
C.60010000000000000000
D .00000000000000006001
E .00000000000000006010
F .60100000000000000000
答案:B
解析:根据教材中的图,当指令代码部分是6时,不含有8字节的常数字,故选B
- 错题2:Y86-64中"rrmovq %rax, %rcx"对应的机器码是()
A .2001
B .2010
C .20010000000000000000
D .00000000000000002001
E .00000000000000002010
F .20100000000000000000
答案:A
解析:根据教材中的图,当指令代码部分是2时,不含有8字节的常数字,故选A
以上两题的错因均为没有注意常数字的问题,以后要多加注意。
其他(感悟、思考等,可选)
本章是本课的重点,我主要学习了存储器的层次结构以及他们的工作模式,这也让我更加深入理解了计算机的工作过程。其中,关于局部性的学习尤为有帮助,可以让我们在今后编写代码程序时,优化我们的程序,希望自己以后多多加油。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 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小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)