信息安全系统设计基础第七周学习总结
存储器层次结构
6.1 存储技术
6.1.1 随机访问存储器(RAM) 运存
·静态(SRAM):用来作为高速缓存存储器。将每个位存储在一个双稳态的存储器单元里。
并无限期的保持在两个状态或配置之一。其他任何状态都是不稳定的。
在有干扰的情况下,当干扰消除电路恢复稳定。
·动态(DRAM):用来作为主存以及图形系统的帧缓冲区。将每个位存储为对一个电容的充电。
对干扰十分敏感,当电容电压被扰乱之后就不会恢复了。
静态与动态的区别:
·只要有供电SRAM就会保持不变,与DRAM不同不需要刷新
·SRAM的存取比DRAM快
·SRAM对抗干扰能力比DRAM强,而功耗更大
·传统的DRAM
DRAM中的单元被分为d个超单元,超单元被分为r行c列的阵型,d=rc。每个超单元都由w个DRAM单元组成。
信息通过外部引脚连接器流入和流出芯片
引脚可以传送字节date或者超单元地址addr
行地址i称为RAS,列地址j称为CAS,请求共享相同的地址引脚,中间会过渡一个内部行缓冲区
采用二位阵列而不是线性数组的优点是减少地址引脚的数量,缺点是必须分两步发送地址增加访问时间
·增强的DRAM
快页模式:传统模式对同一行连续访问超单元需要发送多次请求,而快页模式一次RAS或CAS后跟多个CAS请求可直接达到目的,从而时间更快。
扩展数据输出:快页模式的增强版,CAS信号在时间上靠的更紧
同步:同步比异步存储器更快的输出超单元的内容
双倍数据速率同步:同步的增强模式,两个时钟沿作为控制信号,速度翻倍。
·非易失性存储器(ROM) 内存
区分方式:被重新编写的次数和重编所用的机制
·可编程ROM:只能编写一次
·可擦写可编程ROM:多次编写
·访问主存
数据流在处理器和DRAM中来回通过。读事物指主存传送数据到CPU;写事物指CPU传送数据到主存
I/O桥的作用:将系统总线的电子信号翻译成存储器总线的电子信号
读写事物基本分为三步:CPU读地址→传送数据字→存储数据
6.1.2 磁盘存储
·磁盘构造:由一个或多个盘片构成,盘片表面覆盖磁性记录材料,通过中央的转轴旋转。
盘片上有同心圆围成的磁道每个磁道划分为一组扇区
·磁盘容量:可记录的最大位数。决定因素:记录密度、磁道密度、面密度
计算磁盘容量:
练习题6.2,可以根据公式算出,其中,有多少个柱面就代表有多少个磁道的集合
·磁盘操作:寻道:沿着半径轴前后移动传动臂,可以定位在任何磁道上。
对扇区的访问时间有三个主要的部分:(平均)
寻道时间:移动传动臂所需的时间,依赖于读写头以前的位置以及读写的速度
旋转时间:驱动器等待目标扇区的第一个旋转位的到达,依赖于读写头到达目标磁道是盘面的位置和磁盘的旋转速度
传送时间:目标扇区第一个位位于读写头下,依赖于旋转速度和磁道的扇区数目
从公式可以看出:平均传送时间 = 最大传送时间 * 1/一个磁道的扇区数
·逻辑磁盘块:维护着逻辑块号和实际磁盘扇区之间的映射关系
三元组:盘面,磁道,扇区
·连接到I/O设备:
·通用串行总线:连接USB总线,各种外围I/O设备。
·图形卡;硬件和软件逻辑,代表CPU在显示器上画像素。
·主机总线适配器:连接磁盘
·访问磁盘:CPU使用存储器映射技术
6.1.3 固态硬盘:处理来自PCU的读写逻辑磁盘块的请求
·顺序读比顺序写稍微快一点,但随即访问写比读慢一个数量级,原因:擦除块需要时间;修改数据需要拷贝到新的块。
·SSD的优缺点:由半导体储存器构成,没有移动的部件,所以访问速度快,能耗低,结实
但是容易磨损
6.2 局部性
时间局部性:被引用过的存储器的位置在将来可能被多次引用 (同一存储器)
空间局部性:被引用过的存储器的位置在将来可能引用附近一个存储器的位置 (不同存储器)
6.2.1 对程序数据引用的局部性
·顺序引用模式:步长为1的引用模式。随着步长的增加,空间局部性下降
6.2.2 取指令的局部性:程序指令是放在存储器中的,CPU必去读取指令,所以能评价程序关于取指令的局部性
CPU只能读取指令不能修改或重写
·对于取指令来说,循环良好的时间和空间局部性,循环体越小,迭代次数越多,局部性越好。
练习题6.8 步长为1,遵循行优先顺序来访问,从内到外。
练习题6.9 关键是明白数组在存储器中排列的。
函数1,步长为1,始终遵循从内到外,空间性最好
函数2,N个结构中的每一个局部性最好,但是需要跳转到下个结构。
函数3,结构内跳转,结构与结构之间跳转,所以空间性最差
6.3 存储器层次结构
6.3.1 存储器结构中的缓存
·中心思想:位于k层的更小更快的存储设备作为位于k+1层更大更慢的存储设备的缓存
数据总是以块大小为传送单元在上下层之间来回拷贝。离CPU越远,使用的块越大。
·缓存命中:需要k+1层的某个数据d,刚好在k层找到
·缓存不命中:覆盖现象:从k=1层取出包含d的块到k层,如果k层满则覆盖
6.3.2 小结
6.4 高速缓存存储器
6.4.1 通用的高速缓存存储器结构
·高速缓存包含S个高速缓存组2^s
·每个组包含E个高速缓存行
·每个行有2^b字节的数据块
所以高速缓存的大小 C = S * E * B
·练习题6.10 根据6-28的表推理计算
6.4.2 直接映射高速缓存:高速缓存行数只有一行
·组选择:高速缓存从w位的地址中抽取s组索引位
·行匹配:确定是否有字w的一个拷贝存储在组i包含的一个高速缓存行中。每个组只有一行。
·字选择:确定所需的字在快中从哪里开始。块偏移提供了所需的字的第一个字节的偏移
·不命中时的行替换:从存储器层次结构中的下一层取出被请求的块
·综合
·标记位和索引位连接起来唯一的标示了存储器中的每个块
·多个块同一映射到一个高速缓存组
·映射到同一高速缓存组的块由标记位唯一标示
·CPU执行一系列读时都发生了什么
1)读地址0的字:缓存不命中,从第一层取出块0并返回存储器位置0的内容
2)读地址1的字:高速缓存命中,立即从高速缓存行的块1中返回
3)读地址13的字:缓存不命中,所以块6加载到组2
4)读地址8的字缓存不命中,但是缓存行有效,标记位不匹配,块4加载到组0。
·冲突不命中:即使有良好的空间局部性且好俗缓存中也有足够的空间,但是引用还是会导致冲突不命中,因为:
这些块被映射到了同一个高速缓存组,导致速度下降
每组只有一行
6.4.3 组相连的高速缓存
·组选择:与直接映射高速缓存相同
·行匹配和字选择:高速缓存必须搜索组中的每一行,寻找一个有效的行标记与地址中的标记相匹配
!图6-36 !
·不命中时对的行替换:替换策略就是随机选择要替换的行
6.4.4 全相连高速缓存
·是有一个包含所有高速缓存行的组组成
·组选择:注意地址中没有组索引位,地址被划分为标记和块偏移
·行匹配和字选择:与组相连是规模大小的区别
6.4.5 有关写的问题
·直写:立即将w的高速缓存块写回到紧挨着的低一层
·写回:尽可能的推迟存储器更新直到替换算法要驱逐更新过的块
·写分配:加载相应的低一层中的块到高速缓存中,然后更新这个高速缓存块
6.4.7 高速缓存参数的性能影响
·不命中率:不命中数量/引用数量
·命中率:1-不命中率
·命中时间:高速缓存传送一个字到CPU的时间
·不命中处罚:
·高速缓存大小的影响、块大小的影响、相连度的影响、写策略的影响。
6.5 编写高速缓存友好的代码
基本方法:让最常见的情况运行得快
在每个循环内部缓存不命中数量最小
6.6 综合:高速缓存对程序性能的影响
6.6.1 存储山