20145230 《信息安全系统设计基础》第7周学习总结
20145230 《信息安全系统设计基础》第6周学习总结
教材学习内容总结
存储技术
随机访问存储器
- 随机访问存储器分为:静态RAM(SRAM)和动态RAM(DRAM),静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵很多。
- 静态RAM:
SRAM将每个位存储在一个双稳态的存储器单元里,每个单元是用一个六晶体管电路来实现的。
SRAM的特点:存储器单元具有双稳态特性,只要有电就会永远保持它的值,干扰消除时,电路就会恢复到稳定值。 - 动态RAM:
DRAM的特点:每一位的存储是对一个电容的充电,电容约为30×10-15F;对干扰非常敏感,当电容的电压被扰乱之后,它就永远不会恢复了。暴露在光线下会导致电容电压改变。
用途:数码照相机和摄像机的传感器
DRAM存储不稳定的应对机制:存储器系统必须周期性地通过读出,或者重写来刷新存储器的每一位;使用纠错码。 - SRAM和DRAM的区别:
只要有电,SRAM就会保持不变,而DRAM需要不断刷新;
SRAM比DRAM快;
SRAM对光和电噪声等干扰不敏感;
SRAM比DRAM需要使用更多的晶体管,所以更昂贵。
传统的DRAM:
行地址i:RAS
列地址j:CAS 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是以它们能被重编程的次数和对它们进行重编程所用的机制区分的
可编程ROM(PROM):只能被编程一次
可擦写可编程ROM(EPROM):使用紫外线实现
电子可擦除PROM(EEROM):使用印制电路卡实现
闪存(FM):非易失性存储设备
磁盘存储
- 磁盘构造:
由盘片构成,每个盘片有两面或者称为表面,表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴,使得盘片以固定的旋转速率旋转,通常是5400~15000转每分钟(RPM)
每个表面是由一组称为磁道的同心圆组成;每个磁道被划分成一组扇区;每个扇区包含相等数量的数据位(通常是512字节);这些数据编码在扇区上的磁性材料中。扇区之间由一些间隙分隔开,这些间隙中不存在数据位。间隙存储用来标识扇区的格式化位。
- 磁盘容量:
一个磁盘上可以记录的最大位数称为它的最大容量/容量。
磁盘容量的决定因素:记录密度:磁道一英寸的段可以放入的位数;磁道密度:从盘片中心出发半径上一英寸的段内可以有的磁道数;面密度:记录密度与磁道密度的乘积。
计算磁盘容量的公式:磁盘容量 = 字节数/扇区 X 平均磁盘数/磁道 X 磁道数/表面 X 表面数/盘片 X 盘片数/磁盘 - 磁盘操作:
磁盘用读写头来读写存储在磁性表面的位,而读写头连接到一个转动臂一端。寻道就是通过沿着半径轴前后移动这个转动臂,使得驱动器可以将读写头定位在盘面上的任何磁道上。
局部性
- 局部性:倾向于引用邻近与其他最近引用过的数据项的数据项,或者最近引用过的数据项本身,这种倾向性,被称为局部性原理。
局部性包括时间局部性和空间局部性 - 时间局部性:被引用过一次的存储器位置很可能在不远的将来再被多次引用。
- 空间局部性:一个存储器位置被引用了一次,那么程序很可能在不远的将来引用附近的一个存储器位置。
有良好局部性的程序比局部性差的程序运行得更快 - 硬件层:局部性原理允许计算机设计者通过引入高速缓存存储器来保存最近被引用的指令和数据项,从而提高对主存的访问速度。
- 操作系统级:局部性原理允许系统使用主存作为虚拟地址空间最近被引用块的高速缓存,用主存来缓存磁盘文件系统中最近被使用的磁盘块。
- 应用程序中:例如,Web浏览器将最近被引用的文档放在本地磁盘上。
存储器层次结构
- 存储技术:不同的存储技术的访问时间差异很大,速度较快的技术每字节的成本要比速度较慢的技术高,而且容量较小,CPU和主存之间的速度差距在增大。
- 计算机软件:一个编写良好的程序倾向于展示出良好的局部性。
- 缓存命中:
当程序需要第k+1层的某个数据对象d时,首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,就称为缓存命中。
该程序直接从第k层读取d,比从第k+1层中读取d更快。 - 缓存不命中:第k层中没有缓存数据对象d
这时第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块;覆盖一个现存的块的过程称为替换/驱逐这个块;被驱逐的块有时也称为牺牲块。
替换策略:决定替换哪个块;随机替换策略:随机选择一个牺牲块;最近最少被使用替换策略(LRU):选择最后被访问的时间距现在最远的块。
高速缓存存储器
存储器层次结构只有三层:CPU寄存器、DRAM主存储器和磁盘存储。
-
直接映射高速缓存
直接映射高速缓存:每个组只有一行的高速缓存。
高速缓存确定一个请求是否命中,然后抽取出被请求的字的过程,分为三步:(1)组选择(2)行匹配(3)字抽取
组选择:
高速缓存从w的地址中间抽取出s个组索引位
组索引位:一个对应于一个组号的无符号整数。
行匹配:
判断缓存命中的两个充分必要条件:该行设置了有效位;高速缓存行中的标记和w的地址中的标记相匹配
字选择:确定所需要的字在块中是从哪里开始的。 -
组相联高速缓存
组选择:与直接映射高速缓存中的组选择一样,组索引位标识组。
行匹配和字选择:
把每个组看做一个小的相关联存储器,是一个(key,value)对的数组,以key为输入,返回对应数组中的value值。高速缓存必须搜索组中的每一行,寻找有效的行其标记与地址中的相匹配。
形式是(key, value),用key作为标记和有效位去匹配,匹配上了之后返回value。
组中的任意一行都可以包含任何映射到这个组的存储器块,所以告诉缓存必须搜索组中的每一行。
组相连高速缓存中不命中时的行替换:
随机替换
最不常使用策略LFU:替换在过去某个时间窗口内引用次数最少的那一行。
最近最少使用策略LRU:替换最后一次访问时间最久远的那一行。 -
全组相联高速缓存
组选择:只有一个组,没有组索引位。
行匹配和字选择:与组相连高速缓存是一样的,但规模大很多,因此只适合做小的高速缓存,例如虚拟存储系统中的翻译备用缓冲器。
本周代码托管截图
本周尝试了用tree这个软件,以及用wc -l来查询代码量:
心得体会
通过这一周的学习,我知道了有关存储器方面的知识,但要将其学通透的话,还必须我们自己反反复复去看书,去理解一些相关的知识点。这周写博客的时候还出现了一个差错,在我写得差不多的时候,电脑突然死机了,然后MarkdownPad就莫名其妙崩溃了,我重新开机后,原先写的博客内容全部不见了,差点把我气死了,因为我确实谢了很多东西。作为一个信息安全系的学生,自己没有一点那种备份的意识,没有及时将自己写好的内容储存,导致了这次失误。希望下次自己能多加小心,以防出现这种类似地意外情况吧!
其他(感悟、思考等,可选)
本周我们学习的内容主要是Y86指令集以及关于它的一些执行过程,本章不仅用了汇编语言来让我们深入了解一条指令完整执行的过程,更用了HCL语言来直观地体现输入与输出的关系。HCL语言看似和我们学的HDL语言差不多,其实也有细微差别,HDL语言是程序描述语言,HCL语言则是控制语言。总之,坚持脚踏实地地完成好每周的任务使我们需要做到的,学好一门课程及语言的捷径就是不断实践、练习!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 2000行 | 20篇 | 400小时 | |
第一周 | 2/2 | 20/20 | 初步了解Linux的一些基本命令 | |
第二周 | 1/3 | 15/35 | 了解vim编辑器 | |
第三周 | 86/86 | 1/4 | 25/60 | 了解了信息的表示和处理 |
第五周 | 79/79 | 1/5 | 30/90 | 了解了程序的机器级表示 |
第七周 | 84/305 | 1/7 | 20/140 | 了解存储器的层次结构 |