20145306《信息安全系统设计基础》第7周学习总结
教材内容总结
缓存思想
高速缓存是一个小而快速的存储设备,作为存储在更大、更慢的设备中的数据对象的缓冲区域。每一层存储器被划分成连续的数据对象片,称为块,每个块都有唯一的对象和名字。数据总是以块大小为传送单元在第k层和第k+1层之间来回拷贝。
缓存命中:当程序需要第k+1层的某个数据对象d时,首先在当前存储的第k层的一个块中查找d,如果d刚好在第k层中,则称为缓存命中。
缓存不命中:如果k层中没有缓存数据d,则称为缓存不命中,此时要从k+1层取出包含d的块,可能会覆盖(替换/驱逐)现在的一个块(牺牲块)。决定该替换哪个快是缓存的替换策略来控制.
缓存不命中的种类: 强制性不命中/冷不命中:第层缓存是空的(冷缓存),只是短暂的状态,不会在反复访问存储器使得缓存暖身之后的稳定状态出现。
冲突不命中:第k+1层的第i块,必须放置在第k层的块(i mod 4)中,这种限制性的放置策略引起冲突不命中。 存储器层次结构概念小结
利用时间局部性: 一旦一个数据在第一次不命中时被拷贝到缓存中,我们就会期望后面对该目标有一系列的访问命中。 利用空间局部性:块通常包含多个数据对象,我们通常期望后面对该块中其他对象的访问能够补偿不命中后拷贝该块的花费。
高速缓存的原理
由于cpu和主存之间逐渐增大的差距,系统设计者在cpu寄存器和主存之间插入一个SRAM高速缓存寄存器,称为L1高速缓存,访问L1高速缓存寄存器的速度几乎和寄存的速度一样,随着cpu和主存之间的性能差距不断的增大,系统设计者又在L1高速缓存和主存之间又新增L2高速缓存 可以在大院十个时钟周期内访问 L3高速缓存位于内存和L2高速缓存之间,可以在30或者40个时钟周期内访问。
通用的高速缓存寄存器结构:
一个计算机系统每个存储地址有m位,形成M=2^m个不同的地址。 高速缓存被组织成一个有S=2^s个高速缓存组的数组,每个组包含E个高速缓存行,每个行是由一个B=2^b字节的数据块、一位有效位以及t=m-(b+s)个标记位组成,唯一标识存储在这个高速缓存行中的块。 高速缓存的结构用元组(S,E,B,m)来描述,高速缓存的大小C = S * E * B。
地址: t位 s位 b位 标记 组索引 块偏移 s个组索引位:一个无符号整数,说明字必须存储在哪个组中。 t个标记位:组中的哪一行包含这个字。 b个块偏移位:在B个字节的数据块中的字偏移。
(500字以内总结一下本周学习内容,尽量不要抄书)
教材学习中的问题和解决过程
局部性: 时间局部性 空间局部性。
局部性关系到程序运行效率。
习题 6.8
sum += a[i][j][k];
习题 6.9
代码调试中的问题和解决过程
xxx xxx
课后作业中的问题和解决过程
XXX XXX
本周代码托管
其他(感悟、思考等,可选)
xxx xxx
学习进度条
| | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|重要成长| | -------- | :----------------:|:----------------:|:---------------: |:-----:| | 目标 | 5000行 | 30篇 | 400小时 | | | 第一周 | 200/200 | 2/2 | 20/20 | | | 第二周 | 300/500 | 2/4 | 18/38 | | | 第三周 | 500/1000 | 3/7 | 22/60 | | | 第四周 | 300/1300 | 2/9 | 30/90 | |