20145312 《信息安全系统设计基础》第7周学习总结

20145312 《信息安全系统设计基础》第7周学习总结

教材学习内容总结

第6章 存储器层次结构

-在简单模型中,存储器系统是一个线性的字节数组,而cpu能够在一个常数时间嫩访问每个存储器位置。实际上,存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。

6.1 存储技术

  1. 随机访问存储器(分为静态和动态两类):
    (1)静态RAM(SRAM):
-用来作为高速缓存存储器,相对访问时间短,存取快.
-每个位存储在一个双稳态的存储器单元里。
双稳态:电路可以无限期的保持在两个不同的电压配置或者状态之一。只要供电,就会保持不变。即使有干扰,例如电子噪音来扰乱电压,当干扰消除后,电路就会恢复到稳定值。


(2)动态RAM(DRAM):

-用来作为主存以及图形系统的帧缓冲区。
-将每个位存储为对一个电容的充电,当电容的电压被扰乱之后,他就永远都不会再恢复了。暴露在光线下会导致电容电压改变。

(3)DRAM和SRAM存储器的特性:

(4)传统的DRAM
-DRAM芯片中的单元(位)被分成了d个超单元,每个超单元都由w个DRAM单元组成, 一个d*w的DRAM共存储dw位信息。超单元被组织成一个r行c列的长方形阵列,rc=d。每个超单元的地址用(i,j)来表示(从零开始)。设计成二维矩阵是为了降低芯片上地址引脚的数量。如下图所示是一个传统的DRAM芯片:

-该芯片被分为44个小单元,即16个超单元。
-每个单元都有一个形如(i,j)的地址。
-下图所示的每个超单元有8位,所以共存储了168位信息。

(5)存储器模块
双列直插存储器模块(DIMM):168个引脚,以64位为块传入/传出数据到存储控制器。
单列直插存储器模块(SIMM):72个引脚,以32位为块传入/传出数据到存储控制器。
读取存储器模块,如下图:

(6)增强的DRAM:

快页模式DRAM(FPM DRAM):允许对同一行连续的访问可以直接从行缓冲区得到服务,避免内部行缓冲区使用一个丢弃其他的现象。
扩展数据输出DRAM(EDO DRAM):允许单独的CAS信号在时间上靠的更紧密一点。
同步DRAM(SD DRAM):用驱动存储控制器相同的外部时钟信号的上升沿来替代许多的异步信号,速度更快。
双倍数据速率同步DRAM(DDR DRAM):通过使用两个时钟沿作为控制信号,使得DRAM的速度翻倍。
RambusDRAM(RDRAM):增大了最大带宽
视频DRAM(VRAM):用在图形系统的帧缓冲区中,允许对存储器并行的读和写。

(7)非易失性存储器

PROM(可编程ROM):只能被编程一次
EPROM(可擦写可编程ROM):可以达到1000次
EEPROM(电子可擦除PROM):可以达到10^5次
FLASH(闪存):一类非易失性存储器,一种重要的存储技术 
固件:存储在ROM设备中的程序

(8)访问主存

总线:数据流通过称为总线的共享电子电路在处理器和DRAM之间传送。是一组并行的导线,能携带地址、数据和控制信号。
总线事务:CPU和主存之间的数据传送的过程。读事务,从主存传数据到CPU;写事务,从CPU传数据到主存。
I/O桥:将系统总线的电子信号翻译成存储器总线的电子信号。系统总线连接CPU和I/O桥,控制总线连接I/O桥和主存。

(9)磁盘存储
1)磁盘构造

盘片
           -盘片正反两面,表面覆盖着磁性记录材料。
           -每个表面是由磁道构成。磁道又被划分为扇区和间隙。

磁盘是由多个盘片构成


2)磁盘容量
-一个磁盘上可以记录的最大位数称为它的最大容量/容量。
-磁盘容量的决定因素:

记录密度:磁道一英寸的段可以放入的位数。
磁道密度:从盘片中心出发半径上一英寸的段内可以有的磁道数。
面密度:记录密度与磁道密度的乘积。
磁盘容量计算公式:


3)磁盘操作:

寻道时间(Tseek):移动传动臂到目标扇区所需的时间
通常3-9ms
旋转时间(Trotation):驱动器等待目标扇区的第一个位旋转到读写头下
传送时间(Ttransfer):驱动器开始读写该扇区内容的时间
传送时间依赖于:旋转速度和每条磁道的扇区数目
   4)逻辑磁盘块
-读取一个磁盘扇区的数据到主存-发送命令到磁盘控制器-读取某个逻辑块号
-内存可以看成字节数组、磁盘可以看成块数组
     5)总线
总线连接了CPU、主存和I/O设备
第三方I/O设备:
-USB
-适配器
-主机总线适配器
     6)访问磁盘
-CPU通过将命令、逻辑块号和目的存储器地址写到与磁盘相关联的存储器映射地址,发起一个磁盘读磁盘控制器读扇区,并执行到主存的DMA传送
-DMA(直接存储器访问):设备可以自己执行读或者写总线事务,而不需要CPU干涉的过程。当DMA传送完成时,磁盘控制器用中断的方式通知CPU
     7)固态硬盘:固态硬盘是一种基于闪存的存储技术。一个硬盘包由一个或者多个闪存芯片和内存翻译层组成,闪存芯片替代旋转磁盘中的机械驱动器,而闪存翻译层将对逻辑块的请求翻译成对底层物理设备的访问
     8)存储技术趋势
-不同的存储技术有不同的价格和性能折中。
-不同存储技术的价格和性能属性以截然不同的速率变化着
-DRAM和磁盘的性能滞后于CPU的性能。

6.2 局部性

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

  1. 对程序数据引用的局部性
时间局部性(temporal locality):被引用过一次的存储器位置在未来会被多次引用(通常在循环中)。
空间局部性(spatial locality):如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。
-一个连续向量中,每隔k个元素进行访问,被称为步长为k的引用模式,具有步长为1的引用模式称为顺序引用模式,随着步长增加空间局部性下降。
-双重嵌套循环按照行优先顺序读取数组元素。(因为C数组在存储器中是按照行顺序来存放的)
  1. 取指令的局部性
-程序指令是存放在存储器中的,CPU读取这些指令的过程中评价一个程序关于取指令的局部性。
-代码区别与程序数据的一个重要属性就是在运行时指令是不能被修改的。
  1. 局部性小结
-重复引用同一个变量的程序有良好的时间局部性
-对于具有步长为k的引用模式的程序,步长越小,空间局部性越好。
-对于取指令来说,循环具有良好的时间和空间局部性。循环体越小,迭代次数越多局部性越好。

存储器层次结构

  1. 缓存命中
    -当程序需要第k+1层的某个数据对象d时,首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,就称为缓存命中。
    -该程序直接从第k层读取d,比从第k+1层中读取d更快。
  2. 缓存不命中
    -即第k层中没有缓存数据对象d。
    -这时第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块:
-覆盖一个现存的块的过程称为替换/驱逐这个块。
-被驱逐的块有时也称为牺牲块。
  1. 替换策略:决定替换哪个块
    -随机替换策略:随机选择一个牺牲块
    -最近最少被使用替换策略(LRU):选择最后被访问的时间距现在最远的块
  2. 缓存不命中的种类```
    强制性不命中/冷不命中:即第k层的缓存是空的(称为冷缓存),对任何数据对象的访问都不会命中。通常是短暂事件,不会在反复访问存储器使得缓存暖身之后的稳定状态中出现。
    冲突不命中:由于一个放置策略:将第k+1层的某个块限制放置在第k层块的一个小的子集中,这就会导致缓存没有满,但是那个对应的块满了,就会不命中。
    容量不命中:当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集。


## 课后作业中的问题和解决过程
1. 练习题6.8
问题:如何改变使得以步长为1的引用模式扫描三维数组a
解决方法:步长为1时空间局部性最好,必须改变循环次数。
由sum+=a[k][i][j]得,循环由里到外为kij
2. 练习题6.9
问题:对三个函数就空间局部性进行排序
解决方法:同理习题6.8,解决问题的关键在于想象出数组是如何在存储器中排列的,然后分析引用模式。
通过给的数组结构发现1函数以步长为1的引用模式访问数组,明显具有最好空间局部性
函数2一次扫N个结构中每一个,但在每个结构中不以步长为1
函数3不仅在每个结构中跳来跳去,还从结构跳到结构
3. 练习题6.10
问题:已知m,C,B,E,计算S,t,s,b
解决方法:通过表格中给出参数信息与之前的公式进行带值运算
S=C/(B*E)
s=log2(S)
b=log2(B)
t=m-(s+b)
## 本周代码托管截图
![](http://images2015.cnblogs.com/blog/885499/201610/885499-20161031094316127-995165833.png)
![](http://images2015.cnblogs.com/blog/885499/201610/885499-20161031094332440-734470880.png)
![](http://images2015.cnblogs.com/blog/885499/201610/885499-20161031094342330-1700854728.png)
![](http://images2015.cnblogs.com/blog/885499/201610/885499-20161031094355236-1324919762.png)
-  [代码托管链接]([https://git.oschina.net/yx960127/ChapterCode20145312])


## 学习进度条
![](http://images2015.cnblogs.com/blog/885499/201610/885499-20161030210513984-63279457.png)

## 参考资料
-  [代码驱动的程序设计学习](http://www.cnblogs.com/rocedu/p/5927306.html)
-  [实验楼课程资料](https://www.shiyanlou.com/courses/413)
-  [《深入理解计算机系统V2》学习指导]([http://www.cnblogs.com/rocedu/p/5826467.html])
posted @ 2016-10-30 21:07  20145312袁心  阅读(203)  评论(2编辑  收藏  举报