2017-2018-1 20155301 《信息安全系统设计基础》第九周学习总结

2017-2018-1 20155301 《信息安全系统设计基础》第九周学习总结

教材学习内容总结

  • 存储器系统:存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构

  • 随机访问存储器分为两类:

    1)静态的RAM(SRAM)

    2)动态的RAM(DRAM)

  • 静态RAM:SRAM将每个微存储在一个双稳态的存储器单元里。每个单元使用一个六晶体管电路来实现,它可以无限期地保持在两个不同的电压配置或状态之一,其他任何状态都是不稳定的,从不稳定的状态开始,电路会迅速地转移到两个稳定状态中的一个

  • 动态RAM:DRAM将每个位存储为对一个电容的充电。与SRAM不同,DRAM对干扰十分敏感。当电容的电压被扰乱之后,他就永远都不会恢复了。

  • 传统的DRAM:DRAM芯片中的单位被分成d个超单元,每个超单元都由w个DRAM单元组成,一个d×w的DRAM总共存储了dw位信息。超单元被组织成一个r行c列的长方形阵列。

  • DRAM芯片封装在内存模块中,它插到主办的扩展槽上。

  • DRAM芯片被分成d个超单元,每个单元w位。用I,j来表示一个超单元。芯片连接到存储控制器电路,一次可以传出(入)w位(即一个超单元的内容)。先传出I(RAS)将第I行所有超单元拷贝到内部缓冲区,再是列地址j(CAS)将(I,j)超单元发送.

  • 存储器模块
    1)双列直插存储器模块(DIMM):168个引脚,以64位为块传入/传出数据到存储控制器
    2)单列直插存储器模块(SIMM):72个引脚,以32位为块传入/传出数据到存储控制器

  • 增强的DRAM:有许多种DRAM存储器,每种都是基于传统的DRAM单元,并进行一些优化,tigaofangwenjibenDRAM单元的速度。

    1)快页模式DRAM(FPM DRAM),FPM DRAM允许对同一行连续第访问可以直接从行缓冲区得到服务。

    2)扩展数据输出DRAM(EDO DRAM),FPM DRAM的一个增强的形式,它允许各个CSA信号在时间上考的更紧密一点。

    3)同步DRAM(SDRAM)SDRAM用于驱动内存控制器相同的外部时钟信号的上升沿来代替许多这样的控制信号。

    4)双倍数据速率同步(DDR SDRAM)DDR SDRAM是对SDRAM的一种增强,它通过使用两个时钟沿作为控制信号,从而使DRAM的速度翻倍。

    5)视频RAM(VRAM),它用在图形系统的帧缓冲区中。

  • 非易失性存储器,再短点的情况下,DRAM和SRAM会丢失它们的信息,所以它们是易失的,而非易失性存储器即使是在关电后,仍然保存着他们的信息,它们被称为ROM。
    1)PROM只能被编程一次
    2)可擦写可编程ROM(EPROM),使用紫外线实现,被擦除和重写的次数可以达到1000次
    3)电子可擦除PROM(EEPROM),使用印制电路卡实现,能够被编程的次数可以达到100000次

  • 访问主存 ,数据流通过总线的共享电子电路在处理器和DRAM之间来回
    1)读事务:从主存传送数据到CPU

    2)写事务:从CPU传送数据到主存

    3)总线:一组并行的导线,能携带地址、数据和控制信号

    4)系统总线:连接总线接口和I/O桥

    5)存储器总线:连接I/O桥和主存


  • 磁盘构造,保存大量数据的存储设备,但读取速度慢。由盘片构成,表面覆盖着磁性记录材料,中央有一个可以旋转的主轴, 磁盘的每个表面是一组称为磁道的同心圆组成,每个磁道被划分为一组扇区,扇区之间由一些间隙隔开,间隙存储用来标识扇区的格式化位。

  • 柱面是所有盘片表面到主轴中心距离相等的磁道的集合

  • 磁盘容量的三要素:
    1)记录密度:磁道一英寸的段中可以放入的位数。

    2)磁道密度:从盘片中心出发半径上一英寸的段内可以有的磁道数

    3)面密度=记录密度*磁道密度

  • 磁盘操作,用读/写头来读写存储在磁性表面的位,而读写头连接到一个传动臂一端,通过移动转动臂将读写头定位在磁道上的机械运动称为寻道。对扇区的访问时间有三个主要的部分。
    1)寻道时间:移动传送臂所需要的时间

    2)旋转时间:一旦读写头定位你到了期望的磁道,驱动器等待目标扇区的第一个位旋转到读写头

    3)传送时间:一个扇区的传送时间依赖于旋转速度和每条磁道的扇区数目

  • 逻辑磁盘块,目的是为了向操作系统隐蔽磁盘的结构复杂性,磁盘中有一个固件设备,称为磁盘控制器,维护者逻辑酷爱号和实际磁盘扇区之间的映射关系。操作系统是以逻辑块号为单位进行寻址操作的。逻辑块号可识别为一个盘面、磁道、扇区三元组,唯一的标识了相对应的物理扇区。

  • 存储技术趋势
    1)不同的存储技术有不同的价格和性能折中。

    2)不同存储技术的价格和性能属性以截然不同的速率变化着

    3)DRAM和磁盘的性能滞后于CPU的性能。

  • 局部性原理,一个编写良好的计算机程序倾向于引用邻近于其他最近引用过的数据项,或者最近引用过的数据项本身。有良好局部性的程序比局部性差的程序运行的更快,在硬件层引入高速缓存存储器就体现了局部性原理。

  • 时间局部性,存储器位置多次被引用。

  • 空间局部性,存储器位置附近的位置在不远的将来被引用

  • 对程序数据引用的局部性,每隔K个元素进行访问,称为步长为K的引用模式

  • 取指令的局部性,程序指令是存放在存储器中的,CPU读取这些指令的过程中评价一个程序关于取指令的局部性,代码区别于程序数据的一个重要属性是在运行时它是不能被修改的

  • 局部性小结
    1)重复引用同一个变量的程序有良好的时间局部性

    2)对于具有步长为k的引用模式的程序,步长越小,空间局部性越好

    3)对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好
    -存储器层次结构

    高速缓存:是一个小而快速地存储设备,它作为存储在更大、也更慢的设备中的数据对象的缓冲区域

缓存:使用高速缓存的过程

  • 缓存命中,当程序需要第k+1层的某个数据对象d时,首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,就称为缓存命中。
    该程序直接从第k层读取d,比从第k+1层中读取d更快

  • 缓存不命中,第k层中没有缓存数据对象d

  • 当第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块。
    覆盖一个现存的块的过程称为替换/驱逐这个块

  • 缓存不命中的种类
    1)强制性不命中,即第k层的缓存是空的(称为冷缓存),对任何数据对象的访问都不会命中

    2)冲突不命中,由于一个放置策略:将第k+1层的某个块限制放置在第k层块的一个小的子集中,这就会导致缓存没有满,但是那个对应的块满了,就会不命中

    3)容量不命中,当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集

  • 高速缓存存储器,存储器地址有m位,高速缓存组有2S位,每组E行高速缓存行,每行1个B=2b字节的数据块,标记位t=m-(b+s)是唯一标识高速缓存行的块

  • 直接映射高速缓存,每个组只有一行的高速缓存,分类依据是每个组的行数。每组一行的高速缓存,称为直接映射高速缓存。

  • 组选择,高速缓存从w的地址中间抽取出s个组索引位,组索引位:一个对应于一个组号的无符号整数

  • 高速缓存确定一个请求是否命中,然后取出被请求的字的过程,分为三步
    1)组选择

    2)行匹配

    3)字抽取

  • 组相联高速缓存,其中的
    1)组选择与直接映射高速缓存中的组选择一样,组索引位标识组

    2)行匹配和字选择,把每个组看做一个小的相关联存储器,是一个(key,value)对的数组,以key为输入,返回对应数组中的value值。高速缓存必须搜索组中的每一行,寻找有效的行其标记与地址中的相匹配

    3)组相连高速缓存中不命中时的行替换:最简单的替换策略是随机选择要替换的行,其他复杂的策略则使用了局部性原理,例如最不常使用、最近最少使用

  • 全相联高速缓存,其中的
    1)组选择,只有一个组,没有组索引位。

    2)行匹配和字选择,与组相连高速缓存是一样的,但规模大很多,因此只适合做小的高速缓存,例如虚拟存储系统中的翻译备用缓冲器

  • 高速缓存参数的性能影响
    1)不命中率:不命中数量/引用数量

    2)命中率:1-不命中率

    3)命中时间:从高速缓存传送一个字到CPU所需的时间,包括组选择,行匹配,字抽取的时间

    4)不命中处罚:由于不命中所需要的额外时间

教材学习中的问题和解决过程

(一个模板:我看了这一段文字 (引用文字),有这个问题 (提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。 )

  • 问题1:XXXXXX
  • 问题1解决方案:XXXXXX
  • 问题2:XXXXXX
  • 问题2解决方案:XXXXXX
  • ...

代码调试中的问题和解决过程

  • 问题1:XXXXXX
  • 问题1解决方案:XXXXXX
  • 问题2:XXXXXX
  • 问题2解决方案:XXXXXX
  • ...

代码托管

(statistics.sh脚本的运行结果截图)

上周考试错题总结

  • 错题1及原因,理解情况
  • 错题2及原因,理解情况
  • ...

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 其他

本周结对学习情况

- [结对同学学号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小时

  • 改进情况:

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

参考资料

posted @ 2017-11-18 21:22  滕树晨  阅读(152)  评论(0编辑  收藏  举报