20145201 《信息安全系统设计基础》第7周学习总结
20145201 《信息安全系统设计基础》第7周学习总结
教材学习内容总结
存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。
CPU寄存器、高速缓存存储器、主存储器、磁盘。
1、随机访问存储器:分成两类
静态RAM(SRAM):高速缓存存储器。将每个位存储在一个双稳态的存储器单元里面。快,作为高速缓存存储器。(几百几千兆)
动态RAM(DRAM):将每个位存储为对一个电容的充电(这个电容很小)。作为主存,图形系统的帧缓冲区。(<=几兆)
2、传统DRAM
- DRAM的芯片中的单元被分成d个超单元,每个超单元都由w个DRAM单元组成。一个d*w的DRAM总共存储了dw位的信息。超单元被组织成一个r行c列的长方形阵列,这里rc = d。信息通过引脚的外部连接器流入和流出芯片。
- 每个DRAM芯片被连接到某个称为存储控制器的电路,这个电路可以一次传送w位到每个DRAM芯片或者依次从每个芯片传出w位。电路设计者将DRAM组织成二维而不是线性数组的一个原因是降低芯片上地址引脚的数量。
- DRAM芯片包装在存储器模块中,它是插到主版的扩展槽上的。
DRAM芯片被分成d个超单元,每个单元w位。用I,j来表示一个超单元。芯片连接到存储控制器电路,一次可以传出(入)w位(即一个超单元的内容)。先传出I(RAS)将第I行所有超单元拷贝到内部缓冲区,再是列地址j(CAS)将(I,j)超单元发送.
二维阵列的设计,减少了引脚地址位数,但是两步发送地址增加了访问时间。
3、增强的DRAM
-
快页模式DRAM
-
拓展输出DRAM
-
同步DRAM
-
双倍数据速率同步DRAM
-
Rambus DRAM
-
视频DRAM
4、非易失型存储器
SRAM,DRAM都是易失的。
非易失型存储器:即使在关电后,也仍然保存着它们的信息;称为ROM。包括:
- PROM:只能被编程一次。
- 可擦可写编程ROM(EPROM):被擦除和重写的次数可以达到1000次
- 电子可擦除PROM(EEPROM):能够被编程的次数可以达到100000次。
- 闪存:基于EEPROM。基于此的磁盘驱动器称为固态硬盘 存储在ROM设备中的程序通常称为固件;当一个计算机系统通电之后,它会运行存储在ROM中的固件
- 存储在ROM设备中的程序通常被称为固件,当一个计算机系统通电以后,他会运行存储在ROM中的固件。
5、访问主存
数据流通过总线的共享电子电路在处理器和DRAM之间来回;
包括读事务:从主存到CPU;写事务:从CPU传输数据到主存
总线是一股并行的线,能携带地址、数据和控制信号。
6、磁盘构造
磁盘是保存大量数据的存储设备,但读取速度慢。
磁盘有若干盘片组成,密封在容器(磁盘驱动器)内;每个盘片的两个表面都有一组被称为磁道的同心圆;每个同心圆由一些间隙分隔成一组等容量磁道(通常是512字节),间隙中存储的是标识扇区的格式化位。
柱面:所有盘片表面到主轴中心距离相等的磁道的集合
7、磁盘容量
磁盘容量:指一个磁盘上可以记录的最大位数。
决定因素:
- 记录密度
- 磁道密度
- 面密度(前两者乘积)
公式:
8、磁盘操作
磁盘以扇区大小的块来读写数据。对扇区的访问时间有三个主要的部分:
①寻道时间:移动传送臂所需要的时间
②旋转时间:一旦读写头定位你到了期望的磁道,驱动器等待目标扇区的第一个位旋转到读写头下
Tmax rotation=1/RPM x 60secs/1min
Tavg rotation=0.5Tmax rotation
③传送时间:一个扇区的传送时间依赖于旋转速度和每条磁道的扇区数目
Tavg transfer= 1/RPM x 1/(平均扇区数/磁道) x 60s/1min
访问时间=Tavg rotation+Tavg transfer+Tavg seek
9、逻辑磁盘块
目的是为了向操作系统隐蔽磁盘的结构复杂性。磁盘将其呈现为一个有B个扇区的逻辑块的序列;磁盘中有一个固件设备,称为磁盘控制器,维护者逻辑酷爱号和实际磁盘扇区之间的映射关系。操作系统是以逻辑块号为单位进行寻址操作的。
读磁盘扇区的数据到主存,磁盘控制器会执行一个快速查找表,将逻辑块号翻译成一个盘面,磁道,扇区的三元组。
10、连接到I/O设备(I/O总线)
I/O总线连接了CPU,主存和I/O设备。
三个不同类型设备连接到总线:
- 通用串行总线USB:2.0最大带宽60MB/S,3.0最大带宽600MB/S
- 图形卡(适配器)
- 主机总线适配器
11、访问磁盘
CPU从磁盘读数据:
CPU将命令,逻辑块号,目的存储地址发到磁盘控制器
磁盘将CPU需要的内容传到主存(称为DMA传送)
DMA传完之后,磁盘发一个中断信号通知CPU已经传完了
12、存储技术优势
- 不同的存储技术有不同的价格和性能折中
- 不同存储技术的价格和性能属性以截然不同的速率变化着
- 增加密度从而降低成本比降低访问时间更容易
13、局部性
- 局部性原理:程序倾向于引用邻近最近引用过的数据项或者就是数据项本身。
- 时间局部性:存储器位置多次被引用。
- 空间局部性:存储器位置附近的位置在不远的将来被引用。
14、对程序数据引用的局部性
称步长为一的引用的模式为顺序引用模式。每隔K个元素进行访问,称为步长为K的引用模式。
此模式是程序空间局部性常见和重要的来源。一般来说,随着步长增加,空间局部性下降。
15、取指令的局部性
程序指令是存放在存储器中的,CPU必须取出(读出)这些指令。
代码区别于程序数据的一个重要属性是在运行时它是不能被修改的。
16、局部性小结
量化评价一个程序中局部性的简单原则:
- 重复引用同一个变量的程序有良好的时间局部性
- 对于具有步长为k的引用模式的程序,步长越小,空间局部性越好
- 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
17、存储器层次结构
18、存储器层次结构中的缓存
高速缓存:是一个小而快速地存储设备,它作为存储在更大、也更慢的设备中的数据对象的缓冲区域。
缓存:使用高速缓存的过程
存储器层次结构的中心思想是:对于每个k,位于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层块的一个小的子集中,这就会导致缓存没有满,但是那个对应的块满了,就会不命中。
③容量不命中
当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集。
- 缓存管理
存储器层次结构的本质:每层存储设备都是下一层的“缓存”
某种形式的逻辑必须管理缓存,而管理缓存的逻辑可以是硬件、软件,或者两者的集合。
19、存储器层次结构小结
20、高速缓存存储器
- 通用的高速缓存存储器结构
存储器地址:m位
高速缓存组:S=2^S位
每组E行高速缓存行
每行1个B=2b字节的数据块
一个有效位:这个行是否有意义
标记位:t=m-(b+s):唯一标识高速缓存行的块
高速缓存大小C=SEB
- 直接映射高速缓存
高速缓存的分类依据:每个组的行数。每组一行的高速缓存,称为直接映射高速缓存。
高速缓存确定一个请求是否命中,然后取出被请求的字的过程,分为三步:
1).组选择
2).行匹配
3).字抽取
21、有关写的问题
-
.写命中时,更新低一层中的拷贝的方法:
(1)直写:立即将w的高速缓存块协会到紧接着的低一层中
缺点:每次写都会引起总线流量。
(2)写回:只有当替换算法要驱逐更新过的块时,才写到紧接着的低一层中
优点:符合局部性原理,显著的减少总线流量
缺点:增加了复杂性,必须为每个高速缓存行维护一个额外的修改位 -
写不命中的处理方法
(1)写分配---通常写回对应
加载相应的低一层中的块到高速缓存中,然后更新这个高速缓存块。
(2)非写分配---通常直写对应
避开高速缓存,直接把这个字写在低一层中。
22、高速缓存参数的性能影响
- 不命中率 = 不命中数量/引用数量
- 命中率 = 1 - 不命中率
- 命中时间
- 不命中处罚:因为不命中所需要的额外的时间
代码调试中的问题和解决过程
p402
p403
相应添加main函数及参数,即可通过
课后作业中的问题和解决过程
6.11在前面dotprod的例子中,在我们对数组x做了填充之后,所有对x和y的引用的命中率是多少?
在填充了之后,对于x和y数组,只有在引用第0个和第4个元素的时候发生不命中。因而命中率为75%
代码驱动学习
上传成功如下:
本周代码托管截图
代码行数统计:
其他
通过第六章的学习我对存储器的模式有了更深入的了解。本章概念性的元知识较多,需要去理解它们的定义,最好可以构建一个框图,这样才能很好的掌握本章的知识。做习题的过程中需要返回去反复查看知识点,看来还是需要多多练习才可以熟练掌握,真正消化理解所有知识。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 100/100 | 2/2 | 25/25 | 安装了虚拟机并学习掌握核心的linux命令 |
第二周 | 100/200 | 1/3 | 30/55 | 虚拟机上的C语言编程 |
第三周 | 150/350 | 1/4 | 10/65 | 计算机中信息的表示和运算 |
第四周 | 0/350 | 0/4 | 3/68 | 复习前几周内容 |
第五周 | 75/420 | 1/5 | 20/88 | 程序的机器级表示 |
第六周 | 125/545 | 1/6 | 20/108 | Y86指令 硬件语言控制HCL |
第七周 | 72/617 | 1/7 | 20/128 | 磁盘 存储器相关结构 |