20145336张子扬 《信息安全系统设计基础》第7周学习总结

20145336张子扬 《信息安全系统设计基础》第7周学习总结

教材学习内容总结

学习目标:

  • 了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)
  • 理解局部性原理
  • 理解缓存思想
  • 理解局部性原理和缓存思想在存储层次结构中的应用
  • 高速缓存的原理和应用

三种常见存储技术:RAM、ROM和磁盘

随机访问存储器RAM分为静态RAM(SRAM)和动态RAM(DRAM)

SRAM

用来作为高速缓存储存器,SRAM将每个位存储在一个双稳态的存储器单元里,每个单元是用一个六晶体管电路来实现的。它可以无限制地保持在两个不同的电压配置或状态之一。

SRAM的双稳态特性,只要有电,它就会永远地保持它的值,即使有干扰,如电子噪音,来扰乱电压,当干扰消除,电路也能恢复到稳定值。

DRAM

用来作为贮存以及图形系统的帧缓冲区

对干扰特别敏感,当电容的电压被扰乱之后,它就永远不会恢复了。暴露在光线下会导致电容电压改变。

从DRAM中读出超单元

  1. 存储器发送行地址2,DRAM将行2的整个内容考至内部行缓冲区
  2. 存储器发送列地址1,DRAM考出超单元(2,1)中的8位

增强的DRAM

  • 快页模式(FPM DRAM)
  • 数据拓展输出(EDO DRAM)
  • 双倍数据速率同步(DDR SDRAM)
  • 视频(VRAM)
  • Rambus DRAM(RARAM)

非易失性存储器(ROM)

即使是在断电后,他们依然保存着它们的信息。

  • PROM只能被编程一次
  • 可擦写可编程ROM(EPROM):能用紫外线光照清楚单元内容,1000次
  • 闪存(flashmemory)

访问主存

数据流通过总线的共享电子电路在处理器和主存之间传递,每次CPU和贮存之间的数据传送都是通过总线事物完成的

读事务:从主存传送数据到CPU

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

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

I/O桥将系统总线的电子信号翻译成存储器总线的电子信号

存储器读写事务

movl A,%eax

  1. CPU将地址A放到系统总线上。I/O桥将信号传递到系统总线
  2. 主存感觉到了存储器总线上的地址信号,从存储器总线读地址,从DRAM取出数据字,并将数据写道存储器总栈
  3. I/O桥将存储器总线信号翻译成系统总线信号,然后沿着系统总线传递。

movl %eax,A

  1. CPU将地址放到系统总线上。存储器从存储总线读地址,并等待数据到达
  2. cpu将%eax中的数据字拷贝到系统总线
  3. 主存从存储器总线独处数据字,并且将这些位存储到DRAM中

磁盘存储

由盘片构成,每个盘片有两面或者称为表面,表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴,使得盘片以固定的旋转速率旋转,通常是5400~15000转每分钟(RPM)

每个表面是由一组称为磁道的同心圆组成;每个磁道被划分成一组扇区;每个扇区包含相等数量的数据位(通常是512字节);这些数据编码在扇区上的磁性材料中。扇区之间由一些间隙分隔开,这些间隙中不存在数据位。间隙存储用来标识扇区的格式化位。

记录密度:磁道一英寸的段可以放入的位数

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

面密度:记录密度与磁道密度的乘积

磁盘容量=字节数平均扇区数磁道数表面数盘面数

任何时刻,所有的读写头都位于同一柱面上。

磁盘以扇区大小的块来读写数据。

对扇区的访问时间有三个主要的部分:寻道时间、旋转时间和传送时间

寻道时间:为了读取某个目标扇区的内容,传动臂把读/写头首先定位到包含目标扇区的磁道上,所需时间即为寻道时间

寻道时间:依赖于读写头以前的位置和转动臂在盘面上移动的速度。

最大旋转时间 = 1/最大旋转数率*1000ms/sec

平均旋转时间 = (1/2) * 最大旋转时间*1000ms/sec

平均传送时间 = (1/最大旋转数率) * (1/每磁道的平均扇区数)*1000ms/sec

连接到I/O设备

像图形卡、监视器、鼠标、键盘和磁盘这样的输入输出设备,都是通过I/O总线连接到CPU和主存的

系统总线和存储器总线是与CPU相关的,I/O总线设计成与底层CPU无关。

访问磁盘

CPU使用一种存储器映射I/O技术来向I/O设备发出命令,在使用存储器映射I/O的系统中,地址空间中有一块地址是为与I/O设备通信保留的,称为I/O端口。当一个设备连接到总线时,它与一个或多个端口相连。

直接存储器访问:设备可以自己执行读或者写总线事务,而不需要CPU干涉的过程。这种数据传送称为DMA传送。

固体磁盘

一个SSD包由一个或多个闪存芯片和闪存翻译层组成,闪存芯片替代传统旋转磁盘中机械驱动器;闪存翻译层是一个硬件/固件设备,替代磁盘控制器,将对逻辑块的请求翻译成对底层物理设备的访问。

性能特性

顺序读和写(CPU按顺序访问逻辑磁盘块)性能相当,顺序读比顺序写稍快一点。

随机顺序访问逻辑块时,写比读慢一个数量级。

优点是由半导体构成,没有移动的部件,随机访问时间比旋转磁盘要快、能耗低、结实

缺点反复写之后SSD更容易磨损

局部性原理

他们倾向于引用临近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。

时间局部性

在有一个良好时间局部性的程序中,引用过一次存储器位置很可能在不远的将来再次被多次引用

硬件层:引入高速缓存存储器来保存最近被引用的指令和数据项,从而提高对主存的访问速度。

操作系统级:统使用主存作为虚拟地址空间最近被引用块的高速缓存,用主存来缓存磁盘文件系统中最近被使用的磁盘块。

对程序数据引用的局部性

顺序访问:

步长为k的引用模式:每隔k个元素进行访问。

一般来说,随着步长增加,空间局部性下降。

在第一幅图中,访问顺序是很规整的步长为1,拥有良好的局部性

在第二幅途中,访问顺序很杂乱,步长为2,没有第一幅图的局部性那么好,访问时间也会增加

存储器层次结构

存储技术:不同的存储技术的访问时间差异很大,速度较快的技术每字节的成本要比速度较慢的技术高,而且容量较小,CPU和主存之间的速度差距在增大

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

存储器层次结构的中心思想:对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。

数据总是以块大小为传送单元在第k层与第k+1层之间来回拷贝。任一对相邻的层次之间块大小是固定的,但是其他的层次对之间可以有不同的块大小。

缓存命中

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

缓存不命中

即第k层中没有缓存数据对象d。这时第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块.

通用的高速缓存存储器结构

  • m:每个存储器地址有m位,形成M=2^m个不同的地址
  • S:这个数组中有S=2^s个高速缓存组
  • E:每个组包含E个高速缓存行
  • B:每个行是由一个B=2^b字节的数据块组成的

标记位:t=m-(b+s)个,唯一的标识存储在这个高速缓存行中的块

高速缓存的大小/容量C:C=SEB

地址最大数量:M=2^m

组索引位数量:s=log2(S)

块偏移位移数量:b=log2(B)

直接映射高速缓存:高速缓存确定一个请求是否命中,然后取出被请求的字的过程,分为三步:1组选择2行匹配3字抽取

直写:立即将w的高速缓存块写回到紧接着的第一层中 ,但是每次写都会引起总线流量

写回:只有当替换算法要驱逐更新过的块时,才能把它写到紧接着的低一层中,由于局部性,写回能显著减少总线流量,但是增加了复杂性。高速缓存必须为每个高速缓存行维护一个额外的修改位,表明这个高速缓存块是否被修改过

写分配:加载相应的低一层中的块到高速缓存中,然后更新这个高速缓存块,但是每次不命中都会导致一个块从低一层传送到高速缓存

非写分配:避开高速缓存,直接把这个字写到低一层中

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

在学习硬件缓存的放置策略时,书上说k+1的0、4、8、12放在k的块1,k+的1、5、9、13放在k的块2,如果说现在地k+1层的块4要放置在第k层,理应放在块1中,如果现在块1有数据,块2却没数据,k+1层的块4会依然放在k层的块1中还是放在空的块2中。

在git上传代码时,git remote add origin + 网页链接时输错路劲了,导致git无法上传。在请教同学后,知道了git remote rm origin可以删除路径,成功解决了困难。

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

代码托管链接:https://git.oschina.net/Zziyang/CS05

 

本周代码托管截图

学习进度条

 代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标 5000行 30篇 400小时  
第二周 0/0 1/2 19/20  
第三周 80/80 1/3 25/44  
第四周 110/190 1/4 23/67  
第五周 60/250 2/6 26/93  
第六周 80/330 2/8 25/118  
第七周 60/390 1/9 25/133  

 

posted @ 2016-10-30 22:49  20145336张子扬  阅读(154)  评论(1编辑  收藏  举报