20145321 《信息安全系统设计基础》第7周学习总结
20145321 《信息安全系统设计基础》第7周学习总结
教材学习内容总结
第六章
存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。
6.1存储技术
三种常见存储技术:RAM/ROM/磁盘
(1)随机访问存储器 RAM
-
分为两类:静态RAM(SRAM)和动态RAM(DRAM) 静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵很多。
-
静态RAM
特点:由于SRAM的双稳态特性,只要有电,它就会永远地保持它的值,即使有干扰,如电子噪音,来扰乱电压,当干扰消除,电路也能恢复到稳定值。 应用:SRAM用来作为高速缓存存储器,即可以在CPU芯片上,也可以在片下。
- 动态DRAM
特点:对干扰特别敏感,当电容的电压被扰乱之后,它就永远不会恢复了。暴露在光线下会导致电容电压改变。
应用:DRAM用来作为主存以及图形系统的帧缓冲区。
(2)非易失性存储器 ROM
- ROM有PROM,EPROM,E2PROM,FLASH;
-
ROM的区分:能被重编程的次数和对他们进行重编程所用的机制。
PROM:只能被编程一次。 EPROM:可擦写可编程ROM,紫外线光照清除单元内容,可擦写次数数量级1000。 E2PROM:电子可擦除PROM,可以直接在印制电路卡上编程,可擦写次数数量级10^5。 FLASH:闪存,基于EEPROM。(固态硬盘SSD基于闪存)
(3)访问主存
- 读事务:从主存传送数据到CPU。
- 写事务:从CPU传送数据到主存。
- 总线:一组并行的导线,能携带地址、数据和控制信号。
-
读事务语句:movl A,%eax
三个步骤:-CPU将地址A放到存储器总线。 -主存从总线读出A,接收字x,然后将x放到总线上。 -CPU从总线读出字x,并将它copy到寄存器eax中。
-
写事务语句:movl %eax,A
三个步骤:-CPU将地址A放到存储器总线,主存读出这个地址,等待接收数据字。 -CPU将数据字y放到总路上。 -主存从总线读数据字y,并将它存储在地址A。
(4)磁盘存储
-
磁盘结构:盘片、磁道、扇区、间隙、柱面
磁盘由盘片构成,每个盘片有两面或者称为表面,表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴,使得盘片以固定的旋转速率旋转。 每个表面是由一组称为磁道的同心圆组成;每个磁道被划分成一组扇区;每个扇区包含相等数量的数据位(通常是512字节);这些数据编码在扇区上的磁性材料中。扇区之间由一些间隙分隔开,这些间隙中不存在数据位。
-
磁盘容量:一个磁盘上可以记录的最大位数称为它的最大容量/容量。
磁盘容量的决定因素: -记录密度:磁道一英寸的段可以放入的位数。 -磁道密度:从盘片中心出发半径上一英寸的段内可以有的磁道数。 -面密度:记录密度与磁道密度的乘积。
- 磁盘操作:磁盘用读写头来读写存储在磁性表面的位,而读写头连接到一个转动臂一端。寻道就是通过沿着半径轴前后移动这个转动臂,使得驱动器可以将读写头定位在盘面上的任何磁道上。
-
对扇区的访问时间有三个主要的部分:
寻道时间:为了读取某个目标扇区的内容,传动臂把读/写头首先定位到包含目标扇区的磁道上,所需时间即为寻道时间,约等于最大旋转时间。 寻道时间Tseek依赖于读写头以前的位置和转动臂在盘面上移动的速度。 旋转时间:定位到期望的磁道后,驱动器等待目标扇区的第一个位旋转到读/写头下。依赖于当读写头到达目标扇区时盘面的位置和磁盘旋转速度。 定位到期望的磁道后,驱动器等待目标扇区的第一个位旋转到读/写头下。 最大旋转时间 = 1/最大旋转数率 平均旋转时间 = (1/2) * 最大旋转时间。 传送时间:当目标扇区的第一个位位于读写头下时,驱动器就可以开始读或者写该扇区的内容。依赖于旋转速度和每条磁道的扇区数目。 平均传送时间 = (1/最大旋转数率) * (1/每磁道的平均扇区数)
-
逻辑磁盘块
内存可以看成字节数组、磁盘可以看成块数组
磁盘中有一个小的硬件/固件设备,称为磁盘控制器,维护着逻辑块号和实际(物理)扇区之间的映射关系。 控制器上的固件执行一个快速表查找,将一个逻辑块号翻译一个(盘面、磁道、扇区)的三元组,这个三原则唯一地表示了对应的物理扇区。控制器上的硬件解释这个三元组,将读写头移动到适当的煮面,等待扇区移动到读写头下,将读写头感知到的位放在控制器上的一个小缓冲区中,然后将他们拷贝到主存中。
-
连接到I/O设备:
外围设备互连(PCI):连接到CPU和主存 I/O总线的分类: 通用串行总线(USB):包括键盘、鼠标、调制解调器、数码相机、游戏操纵杆、打印机、外部磁盘驱动器和固态硬盘等 图形卡(适配器):负责代表CPU在显示器上画像素 主机总线适配器:使用特别的主机总线接口定义的通信协议
(5)固态磁盘
- 固态硬盘是一种基于闪存的存储技术。
- 一个SSD包由一个或多个闪存芯片和闪存翻译层组成,闪存芯片替代传统旋转磁盘中机械驱动器;闪存翻译层(一个硬件/固件设备)替代磁盘控制器,将对逻辑块的请求翻译成对底层物理设备的访问。
-
性能特性
顺序读和写(CPU按顺序访问逻辑磁盘块)性能相当,顺序读比顺序写稍快一点。 随机顺序访问逻辑块时,写比读慢一个数量级。 读写性能差别是由底层闪存基本属性决定的。
-
优缺点
优点: - 由半导体构成,没有移动的部件 - 随机访问时间比旋转磁盘要快、能耗低、结实 缺点: - 易磨损、更贵
6.2局限性
(1)局部性原理
- 一个编写良好的计算机程序常常具有良好的局部性,即倾向于引用临近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。
-
两种不同形式
空间局部性 时间局部性
-
有良好局部性的程序比局部性差的程序运行得更快
硬件层:局部性原理允许计算机设计者通过引入高速缓存存储器来保存最近被引用的指令和数据项,从而提高对主存的访问速度。 操作系统级:局部性原理允许系统使用主存作为虚拟地址空间最近被引用块的高速缓存,用主存来缓存磁盘文件系统中最近被使用的磁盘块。 应用程序中:例如,Web浏览器将最近被引用的文档放在本地磁盘上。
(2)对程序数据引用的局部性
-
步长为k的引用模式
定义:一个连续变量中,每隔k个元素进行访问。
步长为1的引用模式:就是顺序访问一个向量的每个元素,有时也被称为顺序引用模式,它是程序中空间局部性常见和重要的来源。
一般来说,随着步长增加,空间局部性下降。
(3)取指令的局部性
- 程序指令是存放在存储器中的,CPU必须取出(读出)这些指令。
- 代码区别于程序数据的一个重要属性是在运行时它是不能被修改的。当程序正在执行时,CPU只从存储器中读出它的指令,CPU绝不会重写或修改这些指令。
6.3 存储器层次结构
- 存储技术:不同的存储技术的访问时间差异很大,速度较快的技术每字节的成本要比速度较慢的技术高,而且容量较小,CPU和主存之间的速度差距在增大。
- 计算机软件:一个编写良好的程序倾向于展示出良好的局部性。
- 一般而言,高层往底层走,存储设备变的更慢、更便宜、更大。
- 每一层存储设备都是下一层的缓存。
6.3 存储器层次结构
-
高速缓存与缓存:高速缓存cash是一个小而快速的存储设备,它作为存储在更大、更慢的设备中的数据对象的缓冲区域。使用高速缓存的过程称为缓存。
存储器层次结构的中心思想:对于每个k,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。 即每层存储设备都是下一层的“缓存”。
-
数据总是以块大小为传送单元在第k层与第k+1层之间来回拷贝。任一对相邻的层次之间块大小是固定的,但是其他的层次对之间可以有不同的块大小。
-
缓存命中
- 当程序需要第k+1层的某个数据对象d时,首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,就称为缓存命中。
- 该程序直接从第k层读取d,比从第k+1层中读取d更快。
-
缓存不命中
- 即第k层中没有缓存数据对象d。
-
这时第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块。
覆盖一个现存的块的过程称为替换/驱逐这个块。 被驱逐的块有时也称为牺牲块。
-
替换策略:决定替换哪个块
随机替换策略:随机选择一个牺牲块 最近最少被使用替换策略(LRU):选择最后被访问的时间距现在最远的块
- 缓存不命中的种类
- 强制性不命中/冷不命中:即第k层的缓存是空的(称为冷缓存),对任何数据对象的访问都不会命中。通常是短暂事件,不会在反复访问存储器使得缓存暖身之后的稳定状态中出现。
- 冲突不命中:由于一个放置策略:将第k+1层的某个块限制放置在第k层块的一个小的子集中,这就会导致缓存没有满,但是那个对应的块满了,就会不命中。
- 容量不命中:当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集。
6.4高速缓存存储器
- 早期的计算机系统的存储器层次结构:CPU寄存器、DRAM主存储器和磁盘存储
-
CPU与主存之间插入
L1高速缓存:位于CPU寄存器文件和主存之间,访问速度2-4个时钟周期 L2高速缓存:位于L1高速缓存和主存之间,访问速度10个时钟周期 L3高速缓存:位于L2高速缓存和主存之间,访问速度30或40个时钟周期
-
高速缓存是一个高速缓存组的数组,高速缓存的结构将m个地址划分成了t个标记位,s个组索引位和b个块偏移位。
-
它的结构可以用元组(S,E,B,m)来描述:
m:每个存储器地址有m位,形成M=2^m个不同的地址 S:这个数组中有S=2^s个高速缓存组 E:每个组包含E个高速缓存行 B:每个行是由一个B=2^b字节的数据块组成的 - 标记位:t=m-(b+s)个,唯一的标识存储在这个高速缓存行中的块 - 有效位:每个行有一个有效位,指明这个行是否包含有意义的信息 - 高速缓存的大小/容量C:C=S*E*B 指所有块的大小的和,不包括标记位和有效位。
-
直接映射高速缓存
- 根据E(每个组的高速缓存行数)划分高速缓存为不同的类,E=1的称为直接映射高速缓存。
-
高速缓存确定一个请求是否命中,然后取出被请求的字的过程,分为三步:
组选择 行匹配 字抽取
- 组选择
高速缓存从w的地址中间抽取出s个组索引位 组索引位:一个对应于一个组号的无符号整数。
-
行匹配
判断缓存命中的两个充分必要条件: 1.该行设置了有效位 2.高速缓存行中的标记和w的地址中的标记相匹配
-
字选择
确定所需要的字在块中是从哪里开始的。
-
组相联高速缓存
- 组选择 与直接映射高速缓存中的组选择一样,组索引位标识组。
-
行匹配和字选择
把每个组看做一个小的相关联存储器,是一个(key,value)对的数组,以key为输入,返回对应数组中的value值。高速缓存必须搜索组中的每一行,寻找有效的行其标记与地址中的相匹配。 形式是(key, value),用key作为标记和有效位去匹配,匹配上了之后返回value。 组中的任意一行都可以包含任何映射到这个组的存储器块,所以告诉缓存必须搜索组中的每一行。 组相连高速缓存中不命中时的行替换: -随机替换 -最不常使用策略LFU:替换在过去某个时间窗口内引用次数最少的那一行。 -最近最少使用策略LRU:替换最后一次访问时间最久远的那一行。
-
全相连高速缓存
-
组选择
只有一个组,没有组索引位。
-
行匹配和字选择
与组相连高速缓存是一样的,但规模大很多,因此只适合做小的高速缓存,例如虚拟存储系统中的翻译备用缓冲器。
-
-
写
-
写命中时,更新低一层中的拷贝的方法
直写:立即将w的高速缓存块协会到紧接着的低一层中 - 缺点:每次写都会引起总线流量。 写回:只有当替换算法要驱逐更新过的块时,才写到紧接着的低一层中。 - 优点:符合局部性原理,显著的减少总线流量 - 缺点:增加了复杂性,必须为每个高速缓存行维护一个额外的修改位
-
写不命中的处理方法
写分配(对应写回):加载相应的低一层中的块到高速缓存中,然后更新这个高速缓存块。 非写分配(对应直写):避开高速缓存,直接把这个字写在低一层中。
-
-
高速缓存参数的性能影响
-
性能
不命中率 = 不命中数量/引用数量 命中率 = 1 - 不命中率 命中时间:从高速缓存传送一个字到CPU所需的时间,包括组选择,行匹配,字抽取的时间。 不命中处罚:因为不命中所需要的额外的时间
-
本周代码托管截图
- 代码托管链接
- 代码量统计:
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
---|---|---|---|
目标 | 3500行 | 30篇 | 300小时 |
第一周 | 50/50 | 1/2 | 10/10 |
第二周 | 120/170 | 1/3 | 20/30 |
第三周 | 130/300 | 1/4 | 20/50 |
第五周 | 130/430 | 2/6 | 25/75 |
第六周 | 50/480 | 2/8 | 25/100 |
第七周 | 53/533 | 1/9 | 20/120 |
posted on 2016-10-30 18:44 20145321曾子誉 阅读(204) 评论(3) 编辑 收藏 举报