2018-2019 20165203 《信息安全系统设计基础》第五周学习总结

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小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

posted @ 2018-10-28 16:51  I~Justice  阅读(197)  评论(0编辑  收藏  举报