20145233 《信息安全系统设计基础》第7周学习总结
教材学习内容总结
存储技术
随机访问存储器(RAM)
RAM分类:
- 静态的SRAM-更快,更贵,作为高速缓存存储器,CPU片上或片下
- 动态的DARM-作为主存以及图形系统的帧缓冲区
1.传统的DRAM
(1)超单元
- 芯片中的单元位被分为d个超单元,每个超单元有w个DRAM单元组成,一个dxw的DRAM总共存储了dw位信息。
- 超单元被组织成一个r行c列的长方形,即rc=d。
- 每个超单元有形如(i, j)的地址,i表示行,j表示列。
(2)信息的流入流出
信息通过引脚流入流出芯片,每个引脚携带一个1位的信号。
(3)存储控制器
这个电路可以一次传入或传出w位。
- RAS-行访问选通脉冲-行地址i
- CAS-列访问选通脉冲-列地址j
- RAS和CAS请求,共享相同的DRAM地址引脚。2.存储器模块
DRAM芯片包装在存储器模块中,是插在主板的扩展槽上的。
168个引脚的双列直插存储器模块-以64位为块传送或传出数据。
72个引脚的单列直插存储器模块-以32位为块传送数据。3.增强的DRAM
- 快页模式-FPM DRAM:允许对同一行连续的访问可以直接从行缓冲区得到服务。(原本的DRAM对同一行的四条指令时,每条指令取完后都会丢弃,然后重新读取。)
- 扩展数据输出-EDO DRAM:允许单独的CAS信号在时间上靠的更紧密一点。 同步-SDRAM:用与驱动存储控制器相同的外部时钟信号的上升沿来代替许多这样的控制信号-比异步的更快。
- 双倍数据速率同步-DDR SDRAM:通过使用两个时钟沿作为控制信号,从而使DRAM的速度翻倍。分类:DDR(2位),DDR2(4位),DDR3(8位) RDRAM
- 视频-VRAM:用在图形系统的帧缓存区中,思想类似FPM DRAM,区别:
1.VRAM的输出是通过依次对内部缓冲区的整个内容进行移位得到的2.VRAM允许对存储器并行的读和写。
4.非易失性存储器——ROM
- RAM断电丢失数据,是易失的;
- ROM是非易失的,统称为只读存储器
(1)分类
- PROM-可编程ROM,只能被编程一次
- EPROM-可擦写可编程ROM,能够被擦除和编写的次数的数量级大概为1000次
- EEPROM,电子可擦除PROM,能够被编程的次数的数量级在10的五次方。
(2)闪存FLASH
基于EEPROM,为大量的电子设备提供快速而持久的非易失性存储。
存在于:数码相机、手机、音乐播放器、PDA、笔记本、台式机、服务器计算机系统
(3)固件
- 存储在ROM设备中的程序通常被称为固件,当一个计算机系统通电以后,他会运行存储在ROM中的固件。
磁盘存储
1.磁盘构造
盘片
表面:每个盘片有两个表面 主轴:盘片中央,可旋转 旋转速率:通常5400~15000/min 磁道:同心圆们 扇区:每个磁道被划分为一组扇区 数据位:每个扇区包含相等数量的~,通常为512字节 间隙:存储用来标识扇区的格式化位 磁盘驱动器-磁盘-旋转磁盘 柱面:所有盘片表面上到主轴中心的距离相等的磁道的集合。2.磁盘容量(1)影响因素:
记录密度-位/英寸
磁道密度-道/英寸 面密度-位/平方英寸 提高面密度即可提高容量。(2)现代大容量磁盘——多区记录
将柱面的集合分割成不相交的子集合(记录区),每个区包含一组连续的柱面;
一个区中的每个柱面的每条磁道都有相同数量的扇区,这个扇区的数量由该区中最里面的磁道所能包含的扇区数确定
注意:软盘仍是老式方法,每条磁道的扇区数是常数
三、固体磁盘
固态硬盘是一种基于闪存的存储技术,区别于旋转磁盘:固态磁盘没有移动的部分。
读/写
(1)顺序读写
速度相当,顺序读比顺序写稍微快一点
(2)随机读写
写比读慢一个数量级
原因:底层闪存基本属性决定。
一个闪存由B个块的序列组成,每个块由P页组成。通常页的大小是512~4kb,块是由32~128页组成的,块的大小为16kb~512kb。
数据是以页为单位读写的。
四、存储技术优势
- 不同的存储技术有不同的价格和性能折中
- 不同存储技术的价格和性能属性以截然不同的速率变化着
- 增加密度从而降低成本比降低访问时间更容易
- DRAM和磁盘的性能滞后于cpu的性能
局部性
分类:
- 时间局部性
- 空间局部性
应用:
1.硬件层:
通过引入高速缓存存储器来保存最近被引用的指令和数据项,从而提高对主存的访问速度。
2.操作系统级:
系统使用主存作为虚拟地址空间最近被引用块的高速缓存,用主存来缓存磁盘文件系统中最近被使用的磁盘块
3.应用程序中:
Web浏览器将最近被引用的文档放在本地磁盘上。
一、对程序数据引用的局部性
步长为k的引用模式
定义:一个连续变量中,每隔k个元素进行访问,就被称为步长为k的引用模式。
步长为1的引用模式:就是顺序访问一个向量的每个元素,有时也被称为顺序引用模式,它是程序中 空间局部性常见和重要的来源。
一般来说,随着步长增加,空间局部性下降。
存储器层次结构
一、缓存
高速缓存:是一个小而快速的存储设备,它作为存储在更大、更慢的设备中的数据对象的缓冲区域。
缓存:使用高速缓存的过程称为缓存。
数据总是以块大小为传送单元在第k层与第k+1层之间来回拷贝。任一对相邻的层次之间块大小是固定的,但是其他的层次对之间可以有不同的块大小。
一般来说:层越低,块越大。
1.缓存命中
当程序需要第k+1层的某个数据对象d时,首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,就称为缓存命中。
该程序直接从第k层读取d,比从第k+1层中读取d更快。
2.缓存不命中
即第k层中没有缓存数据对象d。
这时第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块。
3.缓存不命中的种类
(1)强制性不命中/冷不命中
即第k层的缓存是空的(称为冷缓存),对任何数据对象的访问都不会命中。
(2)冲突不命中
由于一个放置策略:将第k+1层的某个块限制放置在第k层块的一个小的子集中,这就会导致缓存没有满,但是那个对应的块满了,就会不命中。
(3)容量不命中
当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集。
高速缓存存储器
L1高速缓存:
位于CPU寄存器文件和主存之间,访问速度2-4个时钟周期
L2高速缓存:
位于L1高速缓存和主存之间,访问速度10个时钟周期
L3高速缓存:
位于L2高速缓存和主存之间,访问速度30或40个时钟周期
一、通用的高速缓存存储器结构
高速缓存是一个高速缓存组的数组,它的结构可以用元组(S,E,B,m)来描述:
S:这个数组中有S=2^s个高速缓存组E:每个组包含E个高速缓存行B:每个行是由一个B=2^b字节的数据块组成的m:每个存储器地址有m位,形成M=2^m个不同的地址
除此之外还有标记位和有效位:
有效位:每个行有一个有效位,指明这个行是否包含有意义的信息标记位:t=m-(b+s)个,唯一的标识存储在这个高速缓存行中的块组索引位:s块偏移位:b
高速缓存的结构将m个地址划分成了t个标记位,s个组索引位和b个块偏移位。
二、直接映射高速缓存根据E(每个组的高速缓存行数)划分高速缓存为不同的类,E=1的称为直接映射高速缓存,以此为例:
高速缓存确定一个请求是否命中,然后取出被请求的字的过程,分为三步:
- 1.组选择
- 2.行匹配
- 3.字抽取三、组相联高速缓存
E路组相联高速缓存:1<E<C/B
1.组选择
和直接的一样。
2.行匹配和字选择
形式是(key, value),用key作为标记和有效位去匹配,匹配上了之后返回value。
3.行替换
有空行替换空行,没有空行,应用替换策略:
随机替换
- 最不常使用策略LFU:替换在过去某个时间窗口内引用次数最少的那一行。
- 最近最少使用策略LRU:替换最后一次访问时间最久远的那一行。
本周代码托管链接
-
本周的个人思考问题
本周对与git按照老师分类要求做的更多了,但是每个代码都在不同的文件夹下,我只会在每个文件夹下计算代码行数,我如何计算几个文件夹下的代码行数?
其他(感悟、思考等,可选)
本周学习了存储器层次结构,之前一直只是知道各种存储工具的名称以及它们的一点好处,在系统的学习了知识后,我明白了其中的原理,不再像之前一样的似懂非懂,我觉得在学习知识的时候对于其中每部分的基础学习还是挺重要的。
本周的知识点其实也不少,对于这些需要记忆的知识以及计算,我觉得多次复习会起到很好地作用,这些知识中,存储器山的图还是比较难理的,但是转换成柱状图后就很明显,这说明其他各科的学习对于自己都是很有帮助的,所以多看多学是一种不错的学习方式。练习题
习题6.2
计算这样一个磁盘的容量。它有2个盘片,10000个柱面,每条磁道平均有400个扇区,每个扇区平均有512个字节
根据后面的公式计算,在书上的p442页磁盘容量 = 512*400*10000*2*2= 8 192 000 000 字节 = 8.192GB
习题6.3
估计访问下面的一个磁盘上的一个扇区需要的时间(以ms为单位)。旋转速率:15000RPM;Taveseek = 8ms;每条磁道的平均扇区数:500
访问时间 = Taveseek+Taverotation+Tavetransfer = 8ms+0.51/15000RPM60secs.min1000ms/s+1/15000RPM1/50060secs/min1000ms/s=8ms+2ms+0.008ms=10.008ms
习题6.4
假设1MB的文件由512字节的逻辑块组成,存储在有如下特性的磁盘驱动器上(旋转速率:10 000RPM,Taveseek=5ms,平均扇区/磁道 = 1000)。
(利用书上393页的公式来计算,省略计算过程) (1)最好的情况:给定逻辑块到磁盘扇区的最好的可能的映射(即,顺序的),估计读这个文件需要的最优时间 (2)随机的情况:如果块是随机地映射到磁盘扇区的,估计读这个文件需要的时间(1)T=Taveseek+Taverotation+2Tmaxrotation=5ms+3ms+2*6ms=20ms (2)在这种情况下,块被随机的映射到扇区上,读2000块的每一块都需要Taveseek+Tavgrotation=8ms。所以读这个文件的总时间为T = 8ms*2000=16000ms=16s
习题6.8和习题6.9
代码在Git中。
习题6.11
在前面dotprod的例子中,在我们对数组x做了填充之后,所有对x和y的引用的命中率是多少?
在填充了之后,对于x和y数组,消除了冲突不命中。因而命中率为75%
其余练习题因过于复杂在书上进行计算了。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 24篇 | 350小时 | |
第一周 | 0/0行 | 1/2 | 20小时 | |
第二周 | 53/53行 | 1/3 | 25/45小时 | |
第三周 | 130/183行 | 1/4 | 30/75小时 | |
第四周 | 0/183行 | 0/4 | 5/80小时 | |
第五周 | 158/341行 | 1/5 | 30/110小时 | |
第六周 | 84/425行 | 2/7 | 30/140小时 | |
第七周 | 209/634行 | 1/7 | 30/170小时 |
注释
-
-