20145327 《信息安全系统设计基础》第七周学习总结

20145327 《信息安全系统设计基础》第七周学习总结

教材学习内容总结

6.1 节
了解三种常见存储技术:RAM/ROM/磁盘;
RAM有SRAM和DRAM,特点和应用;
ROM有PROM,EPROM,E2PROM,FLASH;
磁盘是重点,涉及到后面的i/o和文件系统,做好相关练习
磁盘结构:盘片、磁道、扇区、间隙、柱面;磁盘驱动器
磁盘容量
访问时间:寻道、旋转、传送
逻辑磁盘块:这个很重要,内存可以看成字节数组、磁盘可以看成块数组
总线
数据总线、控制总线、地址总线
系统总线、存储总线、I/O总线:p395图要理解
读写事务:P389图要能理解
随机访问存储器分为两类:静态和动态。静态RAM(即SRAM)比动态RAM(即DRAM)更快,但也贵得多。SRAM用来作为高速缓存存储器,既可以在CPU芯片上,也可以在片下。DRAM用来作为主存以及图形系统的帧缓冲区。

6.1.1随机访问存储器

1)静态RAM
a.SRAM将每个位存储在一个双稳态的存储器单元里。每个单元是用一个六晶体管电路来实现的。可以无限期地保持在两个不同的电压配置或状态之一。其他任何状态都是不稳定的——从不稳定状态开始,电路会迅速转移到两个稳定状态中的一个。
b.原理类似于“倒转的钟摆”。
c.SRAM存储器单元的双稳态特性,只要有电,他就会永远保持它的值。
DRAM将每个位存储为对一个电容的充电。DRAM存储器单元对干扰非常敏感。

6.1.2磁盘存储

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

磁盘容量列表项
磁盘容量是由以下技术因素决定的:

记录密度 磁道密度 面密度

磁盘操作
(1)任何时刻,所有的读写头都位于同一柱面上。
(2)在传动臂末端的读/写头在磁盘表面高度约0.1微米处一层薄薄的气垫上飞翔,速度大约为80km/h。磁盘以扇区大小的块来读写数据。
(3)对扇区的访问时间有三个主要部分组成:

1.寻道时间(seek time):为了读取某个目标扇区的内容,传动臂把读/写头首先定位到包含目标扇区的磁道上。所需时间即为寻道时间,约等于最大旋转时间。
2.旋转时间(rotational latency):定位到期望的磁道后,驱动器等待目标扇区的第一个位旋转到读/写头下。 Tmax rotation = 1/最大旋转数率 Tavg rotation = (1/2) × Tmax rotation
3.传送时间(transfer time):Tavg transfer = (1/最大旋转数率) × (1/每磁道的平均扇区数)

逻辑磁盘块
现代磁盘构造复杂,有多个盘面,这些盘面上有不同的记录区。为了对操作系统隐藏这样的复杂性,现代磁盘将它们的构造简化为一个b个扇区大小的逻辑块的序列,编号为0,1,2,...b-1。磁盘中有一个小的硬件/固件设备,称为磁盘控制器,维护着逻辑块号的和实际(物理)磁盘扇区之间的映射关系。
6.1.3固态硬盘

固态硬盘是一种基于闪存的存储技术,在某些情况下是传统旋转磁盘的极有吸引力的替代产品。
它拥有更高速的存储速度,更低的能耗,完全没有噪音。

6.1.4存储技术趋势

从我们对存储技术的讨论中,可以总结出几个很重要的思想。
不同的存储技术有不同的价格和性能折中。SRAM比DRAM快一点,而DRAM比磁盘要快很多。另一方面,快速存储总是比慢速存储要贵的。SRAM每字节的造价比DRAM高,DRAM的造价又比磁盘高得多。
SSD位于DRAM和旋转磁盘之间。
不同存储技术的价格和性能属性以截然不同的速率变化着。
DRAM和磁盘的性能滞后于CPU的性能。
6.2 节
局部性原理:时间局部性、空间局部性,有能力者理解一下p429最后一段“存储器山”
数据引用局部性
取指令局部性

局部性的分类:
时间局部性
空间局部性

一些量化评价一个程序中局部性的简单原则:
1.重复引用同一个变量的程序有良好的时间局部性。
2.对于具有步长为k的引用模式的程序,步长越小,空间局部性越好;在存储器中以大步长跳来跳去的程序空间局部性会很差。
3.对于取指令来说,循环有很好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
4.有良好局部性的程序比局部性差的程序运行得更快

6.3 节
存储层次结构:系统观(1+1>2)(举一反三:对称不对称加密形成的混合加密系统,混合动力汽车...)
中心思想:每层存储设备都是下一层的“缓存”
对照p408的表理解

6.3.1 存储器层次结构中的缓存

高速缓存:一个小而快速的存储设备,它作为存储在更大、也更慢的设备中的数据对象的缓冲区域
存储器层次结构的中心思想:对于每个K,位于k层的更快更小的存储设备作为位于k+1层的更大更慢的存储设备的缓存。
缓存命中:当程序需要第k+1层的某个数据对象d时,它首先在当前存储在第k层的一个块中查找d,如果d刚好在第k层,则就是缓存命中
2.缓存不命中
如果第k层中没有没有缓存数据对象,就是缓存不命中。
3.缓存不命中的种类
一个空的缓存有时称为冷缓存

6.3.2存储器层次结构概念小结

概括来说,基于缓存的存储器层次结构行之有效,是因为较慢的存储设备比较快的存储设备更便宜,还因为程序往往展示局部性:

利用时间局部性:由于时间局部性,同数据对象可能会被多次使用,一旦一个数据对象在第一次不命中时被拷贝到缓存中,我们就会期望后面该目标有一系列的访问命中。因为缓存比低层的存储设备更快,对后面的命中的服务会比最开始的不命中快很多。

利用空间局部性:块通常包含有多个数据对象。由于空间局部性,我们会期望后面对话中其他对家的访问能够补偿不命中后拷贝该块的花费。

6.4节
6.4.1通用的高速缓存存储器结构[^1]

一个计算机系统每个存储地址有m位,形成M=2^m个不同的地址。
高速缓存被组织成一个有S=2s个高速缓存组的数组,每个组包含E个高速缓存行,每个行是由一个B=2b字节的数据块、一位有效位以及t=m-(b+s)个标记位组成,唯一标识存储在这个高速缓存行中的块。
高速缓存的结构用元组(S,E,B,m)来描述,高速缓存的大小C = S * E * B。

地址: t位 s位 b位
标记 组索引 块偏移

s个组索引位:一个无符号整数,说明字必须存储在哪个组中。
t个标记位:组中的哪一行包含这个字。
b个块偏移位:在B个字节的数据块中的字偏移。

6.4.2直接映射高速缓存

每个组只有一行(E = 1)的高速缓存被称为直接映射高速缓存(direct-mapped cache)。
高速缓存确定一个请求是否命中,然后抽取出被请求的字的过程,分为三步

组选择 行匹配 字抽取

直接映射高速缓存中的组选择
如果把高速缓存看作一个关于组的一维数组,那么这些组索引就是一个到这个数组的索引。如果我们把块看作一个字节的数组,而字节偏移是这个数组的一个索引。

直接映射高速缓存中的行匹配
当且仅当设置了有效位,而且告诉缓存行中的标记与w的地址中标记相匹配时,这一行中包含w的一个拷贝。(有效位+标记)
直接映射高速缓存中的字选择
块偏移位提供了所需要的字的第一个字节的偏移。
直接映射高速缓存中不命中时的行替换
综合:运行中直接映射高速缓存
直接映射高速缓存中的冲突不命中
6.4.4全相连高速缓存

E = C/B
只有一个组,这个组包含所有的高速缓存行,地址中没有组索引位,地址只被划分成了一个标记和一个块偏移。
因为全相联高速缓存需要并行搜索许多相匹配的行,所以构造相对是困难的;因此只适合做小的高速缓存;如虚拟存储器系统中的TLB,它缓存页表项。
全相联高速缓存中的行匹配和字选择与组相联高速缓存中的一样
6.4.7高速缓存参数的性能影响

有许多指标来衡量高速缓存的性能:

不命中率:它是这样计算的:不命中数量/引用数量
命中率:命中的存储器引用比率
命中时间:命中时间的数量级是几个时钟周期
不命中处罚
6.5 编写高速缓存友好的代码
1.对局部变量的反复引用是好的,因为编译器能够将它们缓存在寄存器文件中(时间局部性)。
2.步长为1的引用模式是好的,因为存储器层次结构中所有层次上的缓存都是将数据存储为连续的块(空间局部性)。

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

这道练习题是如何分最好情况与随机情况

本周代码托管截图

代码链接

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 100/100 2/2 10/10
第二周 100/200 1/3 20/30
第三周 80/280 1/4 15/45
第五周 100/380 1/5 15/60
第六周 100/480 1/6 15/75
第七周 20/500 1/7 15/90

参考资料

原文地址:https://www.cnblogs.com/20145327gc/p/6012554.html