一、教材学习内容总结
存储技术
随机访问存储器
- 静态RAM(SRAM):SRAM将每个位存储在一个双稳态的存储器单元里。
- 动态RAM(DRAM):DRAM将每个位存储为对一个电容的充电。
SRAM比DRAM速度快,但同时花费高。DRAM与SRAM存储器特性图如下:
- 传统DRAM:分为d个超单元,被组织成一个r行c列的长方形阵列,即d=r·c,每个超单元由w个DRAM单元组成。一个d*w的DRAM总共存储了dw位信息。
读取一个DRAM超单元内容的过程:
- 内存控制器发送行地址x
- DRAM响应,将行地址x的整个内容都复制到一个内部行缓冲区
- 内部存储器发送列地址y
- 从行缓冲区复制超单元(x,y)中的8位,并把他们发送到内存控制器。
设计者将DRAM组织成二维阵列:
- 目的:降低引脚数量
- 缺点:必须分两布发送地址,增加了访问时间。
访问主存:
- 读事务:从主存传送数据到CPU
- 写事务:从CPU传送数据到主存
磁盘存储
磁盘构造:
- 磁盘由盘片构成,每个盘片有两面或称为表面。
- 每个表面由一组称为磁道的同心圆组成。
- 每个磁道被划分为一组扇区。
- 每个扇区包含相等数量的数据位。
磁盘容量:
磁盘以扇区大小的块来读写数据
- 对扇区的访问时间主要有三个部分:寻道时间、旋转时间和传送时间。
- 访问一个磁盘扇区的时间主要是寻道时间和旋转延迟。
- 寻道时间乘2是估计磁盘访问时间的简单而合理的方法。
局部性
- 时间局部性:被引用过一次的内存位置很可能在不远的将来==再被多次引用==。
空间局部性:一个内存位置被引用了一次,程序很可能在不远的将来==引用附近的一个内存位置==。
- 重复引用相同变量的程序具有良好的时间局部性。
- 对于具有步长位k的引用模式的程序,步长越小,空间局部性越好,具有步长为1的引用模式的程序有很好的空间局部性。在内存中以大步长跳来跳去的程序空间局部性会很差。
- 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
存储器层次结构
- 存储结构的本质:每一层存储设备都是较低一层的缓存。
- 缓存命中:当程序需要第k+1层的某个数据对象d时,它首先在当前存储的第k层的一个块中查找d。如果d刚好缓存在第k层中,那么就是我们所说的缓存命中。
缓存不命中:
- 冷缓存:第k层的缓存是空的。
- 冲突不命中
- 容量不命中
高速缓存存储器
通用的高速缓存存储器组织结构
高速缓存的结构可以用元组(S,E,B,m)来描述。高速缓存的大小(或容量)C指的是所有块的大小的和。标记位和有效位不包括在内。因此,C=SXEXB。
直接映射高速缓存每个组只有一行的高速缓存称为直接映射高速缓存。
- 组选择
- 行匹配
- 字抽取
注意:
- 标记位和索引位唯一的标识了每个块;
- 多个块会映射到同一个高速缓存组;
- 映射到同一组的块由标记位唯一的标识。
二、教材学习中的问题和解决过程
问题:对教材420页上的练习题6.7进行验证时,在Linux下编译,显示段错误。运行截图如下:
- 解决方法:百度“段错误”查询错误原因,发现是自己设置的数组太大,导致访问的内存超出了系统给这个程序所设定的内存空间。
运行结果如图:
三、心得体会
本周学习内容较为简单,但是总结起来比较繁琐,以前做总结的时候自己总是愿意画思维导图,但是画思维导图其实很费时间,自己花一遍思维导图的时候,够我对其中的内容进行复习两遍了,所以这次的学习总结,我选择在别人的总结上加上自己的体会。
四、学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第四周 | 289/1005 | 1/36 | 14/54 |
计划学习时间:10小时
实际学习时间:14小时
五、参考资料
- 存储器结构层次(一)——存储技术
- 存储器结构层次(二)——局部性
- 存储器结构层次(三)——存储器层次结构
- 存储器结构层次(四)——高速缓存存储器
- 《深入理解计算机系统》