计算机程序的一个基本属性:局部性
存储器层次结构分类:
1 CPU寄存器:放在CPU里面的内存,特点:速度快,价格高
2 高速缓存存储器、主存储器、磁盘。特点:CPU之外,需要时访问调用,相对较慢
1 SRAM(静态) :
(1) 更快,更贵。
(2)作为高速缓存存储器,主要负责运算需要
(3) 双稳态的存储单元,抗干扰强
2 DARM(动态):
(1)用于主存以及图形系统的帧缓冲区
(2)抗干扰弱
(3)必须周期性更新
传统DRAM:类似于数电的选择控制器,操作单位为超单元,行R*列C=超单元D,步骤为集体复制,特定传出
增强DRAM:对于传送更多的数据信息提高速率
ROM(只读存储器):
弥补RAM数据不存储特性
总线是一组并行的导线,能携带地址、数据和控制信号
I/O桥将系统总线的电子信号翻译成存储器总线的电子信号,也将系统总线和存储器总线连接到I/O总线
磁盘容量:磁盘上可以记录的最大位数,提高面密度或者磁盘体积可提高容量
局部体现——多区管理:
1 将柱面的集合分割成不相交的子集合(记录区),每个区包含一组连续的柱面
2 一个区中的每个柱面的每条磁道都有相同数量的扇区,这个扇区的数量由该区中最里面的磁道所能包含的扇区数确定
3 磁盘以扇区大小的块来读写数据
逻辑磁盘块结构:
盘面,磁道,扇区,这个三元组唯一的标识了对应的物理扇区
I/O总线:CPU与外界的桥梁连接了CPU,主存和I/O设备
固态硬盘是一种基于闪存的存储技术,且为固定不可移动
闪存:ROM的一种,普遍用于电子设备存储需要数据
一个SSD包由一个或多个闪存芯片和闪存翻译层组成:
闪存芯片 ,闪存翻译层
分类:
1 时间局部性
2 空间局部性
步长为k的引用模式:
一个连续变量中,每隔k个元素进行访问,就被称为步长为k的引用模式
K=1的步长,利用顺序访问相当线性遍历
K>=2的步长,类似空间,例如数组的多维遍历规则,列遍历不利于空间局部性(由于与规定存储规格不符合)
程序指令是存放在存储器中的,CPU必须取出(读出)这些指令
1 K的大小
2 循环次数多少
3 重复调用
缓存:使用高速缓存的过程称为缓存
数据处理方式单位:块处理
操作方式:
替换:随机替换策略-随机牺牲一个块,最近最少被使用替换策略LRU-牺牲最后被访问的时间距离现在最远的块。
L1-L3高速缓存:时间周期增加
高速缓存是一个高速缓存组的数组,它的结构可以用元组(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个块偏移位。
计算公式:
C=S*E*B
E路组相联高速缓存:1<E<C/B
和直接的一样。
形式是(key, value),用key作为标记和有效位去匹配,匹配上了之后返回value。
重要思想:组中的任意一行都可以包含任何映射到这个组的存储器块,所以告诉缓存必须搜索组中的每一行。
判断匹配的标准依旧是两个充分必要条件:
1.有效
2.标记匹配
有空行替换空行,没有空行,应用替换策略:
只有一个组,默认组0,没有索引位,地址只被划分成了一个标记和一个块偏移。
同组相联。
只适合做小的高速缓存。
(1)写分配---通常写回对应:加载相应的低一层中的块到高速缓存中,然后更新这个高速缓存块。
(2)非写分配---通常直写对应:避开高速缓存,直接把这个字写在低一层中。
1 只保存指令的:i-cache
2 只保存程序数据的:d-cache
3 既保存指令又保存数据的:统一的高速缓存
每台计算机都有表明他存储器系统的能力特色的唯一的存储器山。
——就是把存储器系统的性能用关于时间和空间局部性的山表示。
想要达成的目的:使得程序运行在山峰而不是低谷
目标:利用时间局部性,使得频繁使用的字从L1中取出;利用空间局部性,使得尽可能多的字从一个L1高速缓存行中访问到。
参考资料:
课本
百度
闫佳歆
原文:http://www.cnblogs.com/chuishi/p/4908897.html