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
posted @ 2017-11-19 21:35  刘威良  阅读(145)  评论(0编辑  收藏  举报