20145333 《信息安全系统设计基础》第七周学习总结
教材学习内容总结
随机访问存储器(RAM)
RAM分类:
-
静态的SRAM-更快,更贵,作为高速缓存存储器,CPU片上或片下
-
动态的DARM-作为主存以及图形系统的帧缓冲区
-
SRAM和DRAM的区别:
(1)只要有电,SRAM就会保持不变,而DRAM需要不断刷新;(2)SRAM比DRAM快;(3)SRAM对光和电噪声等干扰不敏感;(4)SRAM比DRAM需要使用更多的晶体管,所以更昂贵。
传统的DRAM:
-
行地址i:RAS
-
列地址j:CAS DRAM组织成二位阵列而不是线性数组的一个原因是降低芯片上地址引脚的数量。
-
二维阵列组织的缺点是必须分两步发送地址,这增加了访问时间。
-
信息通过引脚流入流出芯片,每个引脚携带一个1位的信号。
存储器模块
- DRAM芯片包装在存储器模块中,是插在主板的扩展槽上的。
168个引脚的双列直插存储器模块-以64位为块传送或传出数据。
72个引脚的单列直插存储器模块-以32位为块传送数据。
增强的DRAM
-
快页模式DRAM(FPM DRAM):异步控制信号,允许对同一行连续的访问可以直接从行缓冲区得到服务。
-
扩展数据输出DRAM(EDO DRAM):异步控制信号,允许单独的CAS信号在时间上靠的更紧密一点
-
同步DRAM(SDRAM):同步的控制信号,比异步的快
双倍数据速率同步DRAM(DDR SDRAM):使用两个时钟沿作为控制信号,使DRAM速度翻倍。 -
Rambus DRAM(RDRAM):一种私有技术
-
视频RAM(VRAM):用在图形系统的帧缓冲区中。
非易失性存储器——ROM
-
RAM断电丢失数据,是易失的;
-
ROM是非易失的,统称为只读存储器
-
可编程ROM(PROM):只能被编程一次
-
可擦写可编程ROM(EPROM):使用紫外线实现
-
电子可擦除PROM(EEROM):使用印制电路卡实现
-
闪存(FM):非易失性存储设备
访问主存
-
总线是一组并行的导线,能携带地址、数据和控制信号。
-
系统总线:连接总线接口和I/O桥
-
存储器总线:连接I/O桥和主存
磁盘存储
固态硬盘(SSD)
-
一个SSD包由一个或多个闪存芯片和闪存翻译层组成,闪存芯片代替传统旋转磁盘中的机械驱动器,而闪存翻译层是一个硬件/固件设备,扮演与磁盘控制器相同的角色,将对逻辑块的请求翻译成对底层物理设备的访问。
-
随机读和写的性能差别是由底层闪存基本属性决定的。
-
读写很慢的原因:
1、擦除块需要相对较长的时间2、写操作试图修改一个包含已经有数据的页p,那么这个二块中的所有带有用数据的页都必须被拷贝到一个新(擦除过的)块,然后才能进行对页p的写。 -
SSD比旋转磁盘更好地优点:随机访问时间比旋转磁盘块,能耗更低,更结实。
缺点是:闪存翻译层中的平均磨损逻辑试图通过将擦除平均分布在所有的块上来最大化每个块的寿命。
存储技术趋势
-
不同的存储技术有不同的价格和性能折中。
-
不同存储技术的价格和性能属性以截然不同的速率变化着。
-
增加密度从而降低成本比降低访问时间更容易。
-
DRAM和磁盘的性能滞后于CPU的性质。
局部性
-
一个编写良好的计算机程序倾向于引用邻近于其他最近引用过的数据项,或者最近引用过的数据项本身。有良好局部性的程序比局部性差的程序运行的更快,在硬件层引入高速缓存存储器就体现了局部性原理。
-
时间局部性(temporal locality):被引用过一次的存储器位置在未来会被多次引用(通常在循环中)。
-
空间局部性(spatial locality):如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。
-
一个连续向量中,每隔k个元素进行访问,被称为步长为k的引用模式,具有步长为1的引用模式称为顺序引用模式,随着步长增加空间局部性下降。
-
代码区别与程序数据的一个重要属性就是在运行时指令是不能被修改的。
-
局部性小结:重复引用同一个变量的程序有良好的时间局部性;对于具有步长为k的引用模式的程序,步长越小,空间局部性越好;对于取指令来说,循环具有良好的时间和空间局部性。循环体越小,迭代次数越多局部性越好。
存储器层次结构
-
高速缓存是一个小而快速的存储设备,作为存储在更大、更慢的设备中的数据对象的缓冲区域。每一层存储器被划分成连续的数据对象片,称为块,每个块都有唯一的对象和名字。数据总是以块大小为传送单元在第k层和第k+1层之间来回拷贝。
-
缓存命中:当程序需要第k+1层的某个数据对象d时,首先在当前存储的第k层的一个块中查找d,如果d刚好在第k层中,则称为缓存命中。
-
缓存不命中:如果k层中没有缓存数据d,则称为缓存不命中,此时要从k+1层取出包含d的块,可能会覆盖(替换/驱逐)现在的一个块(牺牲块)。决定该替换哪个快是缓存的替换策略来控制的。(例如,随机替换策略/LRU策略)
-
缓存不命中的种类:(1)强制性不命中/冷不命中:第k层缓存是空的(冷缓存),只是短暂的状态,不会在反复访问存储器使得缓存暖身之后的稳定状态出现;(2)冲突不命中:第k+1层的第i块,必须放置在第k层的块(imod4)中,这种限制性的放置策略引起冲突不命中。
高速缓存存储器
-
一个计算机系统每个存储地址有m位,形成M=2^m个不同的地址。
-
高速缓存被组织成一个有S=2s个高速缓存组的数组,每个组包含E个高速缓存行,每个行是由一个B=2b字节的数据块、一位有效位以及t=m-(b+s)个标记位组成,唯一标识存储在这个高速缓存行中的块。
-
高速缓存的结构用元组(S,E,B,m)来描述,高速缓存的大小C=SEB。
-
地址划分为:s个组索引位:一个无符号整数,说明字必须存储在哪个组中、t个标记位:组中的哪一行包含这个字、b个块偏移位:在B个字节的数据块中的字偏移。
直接映射的高速缓存(E=1)
-
直接映射高速缓存中的组选择:高速缓存从要抽取的字的地址中抽取出S个组索引位,这些位被解释成一个对应于一个组号的无符号整数。
-
直接映射高速缓存中的行匹配:当且仅当设置了有效位,而且高速缓存行标记与w的地址中的行标记相匹配时,这一行中包含w的一个拷贝。
-
直接映射高速缓存中的字抽取:块偏移位提供了所需要的字的第一个字节的偏移。
-
直接映射高速缓存中不命中时的行替换:需要从存储器层次结构中的下一层取出被请求的块,然后将新的块存储在组索引位指示的组中的一个高速缓存行中。
组相联高速缓存
-
组相联高速缓存中的组选择:与直接映射高速缓存中的组选择一样,组索引位标识组。
-
组相联高速缓存中的行匹配和字选择:把每个组看做一个小的相关联存储器,是一个(key,value)对的数组,以key为输入,返回对应数组中的value值。高速缓存必须搜索组中的每一行,寻找有效的行其标记与地址中的相匹配。
-
组相联高速缓存中不命中时的行替换:最简单的替换策略是随机选择要替换的行,其他复杂的策略则使用了局部性原理,例如最不常使用、最近最少使用等。
全相联高速缓存
-
全相联高速缓存中的组选择:只有一个组,没有组索引位。
-
全相联高速缓存中的行匹配和字选择:与组相连高速缓存是一样的,但规模大很多,因此只适合做小的高速缓存,例如虚拟存储系统中的翻译备用缓冲器。
有关写的问题
-
写命中:(1)直写:立即将w的高速缓存块写回紧接着的低一层中,虽然简单但每次都会引起总线流量。(2)写回:尽可能地推迟存储器更新,只有当替换算法要驱逐更新过的块时,才把它写到低一级的块中。减少流量但增加了复杂性。
-
写不命中:(1)写分配:加载相应的低一层中的块到高速缓存中,然后更新这个高速缓存块。(写回)(2)非写分配:避开高速缓存,直接把这个字写到低一层中。(直写)
高速缓存参数的性能影响
- 高速缓存大小的影响、块大小的影响、相联度的影响、写策略的影响。
编写高速缓存友好的代码
- 确保代码高速缓存友好的基本方法:(1)让最常见的情况运行的快。(2)在每个循环内部缓存不命中数量最小。
存储器山
-
一个程序从存储系统中读数据的速率称为读吞吐量,或者读带宽,通常以兆字节每秒(MB/s)为单位。
-
读带宽的时间和空间局部性的二维函数称为存储器山。