2017-2018-1 20155323 《信息安全系统设计基础》第9周学习总结
2017-2018-1 20155323 《信息安全系统设计基础》第9周学习总结
教材学习内容总结
存储器层次结构
随机访问存储器
- 静态(SRAM):双稳定特性、只要通电就能永远稳定,速度较快。
- 动态(DRAM):对干扰敏感,一旦电压被干扰,永远不能恢复,并且暴露在光线下会导致电容电压改变,速度较慢。
- 读取过程:从16*8的DRAM中读取超单元(4,3),首先存储控制器发送行地址4,然后DRAM将4行的所有内容拷贝到内部行缓冲区,接着控制器再发送列地址3,DRAM将行缓冲区拷贝出超单元(4,3)中的8位并发送到存储控制器。
- 传统的DRAM:芯片中的单元位被分为d个超单元,每个超单元有w个DRAM单元组成,一个dxw的DRAM总共存储了dw位信息。
- 快业模式的DRAM: 存储控制器发送行地址的时候后面跟着三个列地址(1+3),相比原本的DRAM拷贝一次行就浪费一次要快得多。
- VRAM: 输出时通过对行内部缓冲区的整个内容行位移得到,更快,并且允许对存储器并行的读和写。
- 非易失性存储器:是用来存储路由器的启动配置文件。在路由器断电时,其内容仍能保持。
- PROM:只能被编程一次,只能高电流熔断一次。
- 可擦写可编程ROM:光擦除的可擦写和冲编程的次数达1000次,电子可擦除的可达到10^5次。
磁盘构造
- 盘片:有两面,盘片中央有可旋转的主轴,旋转速度RPM。
- 每个表面有8个磁道,没个刺刀被划分为一组扇区,扇区间的空隙存储用来标识扇区的格式化位。
磁盘容量
- 磁盘容量=字节数/扇区+平均扇区数/磁道+磁道数/表面+表面数/盘片+盘片数/磁盘
磁盘操作
- 磁盘上一个扇区读取时间=寻道时间+传送时间+平均旋转时间(总传送时间的一半)
逻辑磁盘块
- 盘面,磁道,扇区,这个三元组唯一的标识了对应的物理扇区。
- 类比:内存可以看成字节数组、磁盘可以看成块数组。
连接到I/O设备
- I/O总线连接了CPU,主存和I/O设备。
- 通用串行总线USB:2.0最大带宽60MB/S,3.0最大带宽600MB/S。
- 图形卡(适配器)
- 主机总线适配器
访问磁盘
- DMA(直接存储器访问):设备可以自己执行读或者写总线事务,而不需要CPU干涉的过程。
局部性
- 时间局部性:被引用过一次的存储器位置不久后也有可能在被多次引用。
- 空间局部性:被引用过一次的存储器位置不久后将引用附近的位置。
- 具有步长为K的引用模式的程序,K越小空间局部性越好。
- 重复引用同一个变量的程序有良好的时间局部性。
- 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
存储器层次结构
- 缓存命中:
当程序需要第k+1层的某个数据对象d时,首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,就称为缓存命中。
该程序直接从第k层读取d,比从第k+1层中读取d更快。
- 缓存不命中:
即第k层中没有缓存数据对象d。
这时第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块
- 缓存不命中的种类:
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个块偏移位。
编写高速缓存友好的代码
- 1.基本方法
让最常见的情况运行的快
在每个循环内部缓存不命中数量最小
- 2.重要问题
对局部变量的反复引用是好的(时间局部性)
步长为1的引用模式是好的(空间局部性)
教材学习中的问题和解决过程
问题1:不理解"让最常见的情况运行得快。程序通常把大部分时间都花在少量的核心函数上,而这些函数通常把大部分时间都花在了少量循环上。所以要把注意力集中核心函数的循环上,而忽略其他部分。"是什么意思
解决:
来源:龙三对《深入理解计算机系统(原书第2版)》的笔记(10)
[代码托管]
结对及互评
本周结对学习情况
20155314刘子健
- 结对学习内容
第六章
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 50/50 | 1/1 | 5/5 | |
第二周 | 100/100 | 1/2 | 5/10 | |
第三周 | 100/200 | 1/3 | 5/15 | |
第四周 | 100/300 | 1/4 | 5/20 | |
第五周 | 100/400 | 1/5 | 5/25 | |
第六周 | 100/500 | 1/6 | 5/30 | |
第七周 | 100/600 | 1/7 | 5/35 | |
第八周 | 200/700 | 1/8 | 5/40 | |
第九周 | 200/900 | 1/9 | 5/45 |