计算机体系结构-第五章 存储层次
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信 息的概率。
F=1-H
3. 平均访问时间 TA
对大部分系统: TM=TA2+TB
由于
TA= H TA1+(1-H )(TA1+TM )
于是
TA=TA1+(1-H )TM
或
TA=TA1+F TM
TA1 ── 命中时间 TM ── 失效开销
5.1.3 “Cache-主存”和“主存-辅存” 层次
一般来说: “Cache-主存”层次:弥补主存速度的不足; “主存-辅存” 层次:弥补主存容量的不足。
4.两种写策略 ◆ 写直达法 执行“写”操作时,不仅写入Cache,而且 也写入下一级存储器。 ◆ 写回法 执行“写”操作时,只写入Cache。仅当 Cache中相应的块被替换时,才写回主存。 (设置“污染位”)
5.两种写策略的比较 ◆写回法的优点: 速度快,所使用的存储器频 带较低; ◆写直达法的优点:易于实现,一致性好。
相对地簇聚;这种簇聚包括指令和数据两部分。 ◆ 程序的时间局部性:程序即将用到的信息很可能就 是目前正在使用的信息。 ◆ 程序的空间局部性:程序即将用到的信息很可能与 目前正在使用的信息在空间上相邻或者临近。
5.1.2 存储层次的性能参数
S,TA , C 设: S ── 容量
TA ── 访问时间 C ── 每位价格 下面仅考虑由M1和M2构成的两级存储层次: M1的参数:S1,TA1,C1 M2的参数:S2,TA2,C2
设M=2m,则当表示为二进制数时,j 实际上就是i 的 低m 位:
i:
j
m位
3. 组相联映象
组相联:主存中的每一块可以被放置到Cache中唯一的 一个组中的任何一个位置。
组的选择常采用位选择算法
若主存第i 块映象到第k 组,则: k=i mod(G) (G为Cache的组数)
设G=2g,则当表示为二进制数时,k 实际上就是i 的低 g 位:
存储体的宽度通常都是一个字,这样就无需改变总 线的宽度和Cache。但同时向几个体发送地址能使它 们同时进行读访问。
4路多体交叉存储器
下图示出了高位交叉访问的存储器结构(高位连续地 址分别处于不同体中),图中结构具有m个体,每个体 内容量为n个字,存储单元的地址由两部分组成,地址 码的低位部分为各体内地址,由 0~(n-1);高位字段表 示了各体的体号, 由0~(m-1)。寻址时,地址的高位 字段指出寻址的体, 低位字段送到该体的地址寄存器 (MAR)。存储器的总容量为m×n个字,地址码长度为 log2(m×n)位,其中,地址的高字段为log2m位,低 位字段为log2n位。
绝大多数计算机的Cache: n ≤4。
5.2.2 查找方法
如何确定Cache中是否有所要访问的块?若有的话, 如何确定其位置?这是通过查找目录表来实现的。
Cache中设有一个目录表,该表所包含的项数与 Cache的块数相同,每一项对应于Cache中的一个块。
当一个主存块被调入Cache中某一个块位置时,它的 标识就被填入目录表中与该Cache块相对应的项中,并 且该项的有效位被置“1”。
主存
◆ 并行查找的实现方法:
▲ 相联存储器 相联存储器是指其中任一存储项都可以直接
用该项的内容作为地址来存取的存储器。
▲ 单体多字存储器+比较器
物理地址 职工号
姓名
出生年月
工资数
n
5697102
张三
n+1
5199109
李四
n+2
6296311
王五
n+3
7100212
赵八
n+4
6211403
吴九
的块)
存储器带宽是反映存储器速度的重要参数。连续访 问存储器时达到的数据传输速率称为存储器的最大带 宽。
提高主存性能的存储器组织结构
1. 增加存储器的宽度 如果把Cache 和主存的宽度增加为原来的2倍或4
倍,则主存的频带也相应地增加为原来的2倍或4倍。
不足之处: a.增加CPU和存储器之间的连接通路(存储器总线)
写合并: 当把数据写入写缓冲器时,判断本次所写入 单元的块地址是否与写缓冲器中某个有效块的地址相 同,若是,则把新数据与该块合并。
5.2.6 性能分析
1. 失效率
2. 平均访问时间 平均访问时间=命中时间+失效率×失效开销
3. 程序执行时间 在考虑存储器对系统性能影响时,可以将系统性
能描述为: CPU时间=(CPU执行周期数+存储器停顿周期数) ×时钟周期时间
5.2.1 映像规则
1. 全相联映象
全相联:主存中的任一块可以被放置到Cache中的任意 一个位置。
特点: 空间利用率最高,冲突概率最低,实现最复 杂。
2. 直接映象
直接映象:主存中的每一块只能被放置到Cache中唯一 的一个位置。
特点: 空间利用率最低,冲突概率最高,实现最 简单。
例如:对于主存的第i 块,若它映象到Cache的第j块, 则:j=i mod (M ) (M 为Cache的块数)
主存块地址 i:
k
g位
上述的j 和k 通常称为索引。
n 路组相联:每组中有n 个块( n=M /G ),n 称为相联
度。 相联度越高,Cache空间的利用率就越高,块冲突概
率就越低,失效率也就越低。
全相联 直接映象 组相联
n (路数) M
1
1<n<M
G (组数)
1
M 1<G<M
wk.baidu.com
相联度一定是越大越好?
1. 每位价格C C= ─CC─12SSS─112+─+─
S2 如果 S1<< S2,C C2。
2. 命中率 H 和失效率 F
命中率 H :CPU访问存储系统时,在M1中找到所需信
息 的概率。
H=N1/(N1+N2) N1 ── 访问M1的次数 N2 ── 访问M2的次数 失效率F : CPU访问存储系统时,在M1中找不到所需
1. “写”操作所占的比例 Load指令:26% Store指令:9% “写”在所有访存操作中所占的比例: 9%/(100%+26%+9%)≈7% “写”在访问数据Cache操作中所占的比例: 9%/(26%+9%)≈25%
2. “写”操作必须在确认是命中后才可进行
3.“写”访问有可能导致Cache和主存内容的不 一致
为了弥补主存速度的不足 为了弥补主存容量的不足
存储管理实现
主要由专用硬件实现
主要由软件实现
访问速度的比值 (第一级和第二级)
典型的块(页)大小
CPU对第二级的 访问方式
失效时CPU是否切换
几比一 几十个字节 可直接访问
不切换
几百比一 几百到几千个字节
均通过第一级 切换到其他进程
5.1.4 存储层次的四个问题 1.当把一个块调入高一层(靠近CPU)存储器时,可以 放在哪些位置上?(映象规则)
6. 写缓冲器
7. “写”操作时的调块 ◆ 按写分配(写时取) 写失效时,先把所写单元所在的块调入 Cache,再行写入。 ◆ 不按写分配(绕写法) 写失效时,直接写入下一级存储器而不 调块。
8. 写策略与调块 写回法 ── 按写分配 写直达法 ── 不按写分配
5.2.5 Cache举例 例子:DEC的Alpha AXP21064中的内部数据 Cache。 1. 简介
根据映象规则不同,一个主存块可能映象到Cache中 的一个或多个Cache块位置。为便于讨论,我们把它们 称为候选位置。当CPU访问该主存块时,必须且只需查 找它的候选位置所对应的目录表项(标识)。如果有与 所访问的主存块相同的标识,且其有效位为“1”,则它 所对应的Cache块即是所要找的块。
1975.12 1960.09 1980.05 1953.06 1975.059
2300 4000 1750 4200 2500
5.2.3 替换算法
所要解决的问题:当新调入一块,而Cache又已被 占满时,替换哪一块?
1. 随机法 优点:实现简单
2. FIFO 3. LRU
优点:失效率低
5.2.4 写策略
容量: 8KB 块大小: 32B 块数: 256 调块: 不按写分配 映象方法: 直接映象 “写”策略: 写直达
写缓冲器大小:4个块
2. 结构图
3. 失效情况下的操作 读失效: Cache向CPU发出一个暂停信号,通知它等
待,并从下一级存储器中读如32个字节, 填入对应的Cache块。 写失效: CPU不对Cache进行操作。 4. 写缓冲的结构
为了保证速度,对各候选位置的标识的检查比较应并 行进行。
辅助硬件 Cache
目录表
1 10000000 0000
CPU
1 10000000 0001 1 10000000 0010
1 10000000 0011
例如:访问内存地址8003H、8013H, 即10000000 00000011B、
10000000 00010011B。
1. “Cache-主存” 层次
“Cache - 主存”层次的实现:主要借助于辅助硬件。
2. “主存-辅存”层次 “主存-辅存”层次的实现:主要借助于辅助软硬件。
3. 两者的比较 Cache-主存”与“主存-辅存”层次的区别。
存储层次
比较项目
“Cache -主存”层次 “主存-辅存”层次
目的
2.当所要访问的块在高一层存储器中时,如何找到该 块?(查找算法)
3.当发生失效时,应替换哪一块?(替换算法)
4.当进行写访问时,应进行哪些操作? (写策略)
5.2 Cache基本知识
为了填补CPU和主存在速度上的巨大差距,现 代计算机都在CPU和主存之间设置一个高速、小容 量(目前一般为几十K到几百K字节)的缓冲存储器 Cache。
第五章 存储层次
存储器是计算机的核心部件之一,其 性能直接关系到整个计算机系统性能的高 低。
如何以合理的价格设计出容量和速度 满足计算机系统要求的存储器系统,始终 是计算机体系结构设计中关键的问题之一。
5.1 存储器的层次结构
计算机软件设计者和计算机用户对于存储器容 量的需求是无止境的,他们希望容量越大越好,而 且速度还要快,价格要便宜。仅用单一的一种存储 器是很难达到这一目标的。较好的方法是采用存储 层次,用多种存储器构成存储器的层次结构。
5.2.7 改进Cache性能
平均访存时间=命中时间+失效率×失效开销 可以从三个方面改进Cache的性能: (1) 降低失效率 (2) 减少失效开销 (3) 减少Cache命中时间
5.6 主存
1. 主存的主要性能指标:延迟和带宽 2. 以往:Cache主要关心延迟,I/O主要关心带宽 3. 现在:Cache关心两者(由于二级Cache使用较大
5.1.1 从单级存储器到多级存储器 1. 存储器的三个主要指标 从用户的角度来看,存储器的三个主要指标是:
容量、速度和价格(每位价格)。
2. 人们对这三个指标的期望
3. 这三个指标相互矛盾
4. 解决方法 采用多种存储器技术,构成存储层次。
程序的局部性原理 程序在执行时所访问地址的分布不是随机的,而是
由于程序局部性原理,近期所用到的指令和数据 往往都集中在一个体内,从而出现了并行访问冲突, 如果在多任务多用户的应用状态下,访问冲突较少。
10000000 00000000 10000000 00000001 10000000 00000010 10000000 00000011 10000000 00000100 10000000 00000101 10000000 00000110 10000000 00000111 10000000 00001000 10000000 00001001 10000000 00001010 10000000 00001011 10000000 00001100 10000000 00001101 10000000 00001110 10000000 00001111 10000000 00010000 10000000 00010001 10000000 00010010 10000000 00010011
的宽度; b.当主存宽度增加后,用户扩充主存时的最小增量
也增加了相应的倍数。 c.在具有纠错功能的存储器中实现对一行(一次可并
行读出的数据)中部分数据的写入比较复杂。
2. 采用简单的多体交叉存储器 提高带宽的另一种方法,是在存储系统中采用多个
DRAM,并利用它们潜在的并行性。可以把存储芯片 组织为多个体,并让它们并行工作,从而能一次读或 写多个字(而不是一个字)。一般来说,使用交叉存 储器的目的是利用系统中所有DRAM的潜在带宽,而 大部分存储系统(非交叉存储器)只启动包含所访问 字的那个DRAM。
F=1-H
3. 平均访问时间 TA
对大部分系统: TM=TA2+TB
由于
TA= H TA1+(1-H )(TA1+TM )
于是
TA=TA1+(1-H )TM
或
TA=TA1+F TM
TA1 ── 命中时间 TM ── 失效开销
5.1.3 “Cache-主存”和“主存-辅存” 层次
一般来说: “Cache-主存”层次:弥补主存速度的不足; “主存-辅存” 层次:弥补主存容量的不足。
4.两种写策略 ◆ 写直达法 执行“写”操作时,不仅写入Cache,而且 也写入下一级存储器。 ◆ 写回法 执行“写”操作时,只写入Cache。仅当 Cache中相应的块被替换时,才写回主存。 (设置“污染位”)
5.两种写策略的比较 ◆写回法的优点: 速度快,所使用的存储器频 带较低; ◆写直达法的优点:易于实现,一致性好。
相对地簇聚;这种簇聚包括指令和数据两部分。 ◆ 程序的时间局部性:程序即将用到的信息很可能就 是目前正在使用的信息。 ◆ 程序的空间局部性:程序即将用到的信息很可能与 目前正在使用的信息在空间上相邻或者临近。
5.1.2 存储层次的性能参数
S,TA , C 设: S ── 容量
TA ── 访问时间 C ── 每位价格 下面仅考虑由M1和M2构成的两级存储层次: M1的参数:S1,TA1,C1 M2的参数:S2,TA2,C2
设M=2m,则当表示为二进制数时,j 实际上就是i 的 低m 位:
i:
j
m位
3. 组相联映象
组相联:主存中的每一块可以被放置到Cache中唯一的 一个组中的任何一个位置。
组的选择常采用位选择算法
若主存第i 块映象到第k 组,则: k=i mod(G) (G为Cache的组数)
设G=2g,则当表示为二进制数时,k 实际上就是i 的低 g 位:
存储体的宽度通常都是一个字,这样就无需改变总 线的宽度和Cache。但同时向几个体发送地址能使它 们同时进行读访问。
4路多体交叉存储器
下图示出了高位交叉访问的存储器结构(高位连续地 址分别处于不同体中),图中结构具有m个体,每个体 内容量为n个字,存储单元的地址由两部分组成,地址 码的低位部分为各体内地址,由 0~(n-1);高位字段表 示了各体的体号, 由0~(m-1)。寻址时,地址的高位 字段指出寻址的体, 低位字段送到该体的地址寄存器 (MAR)。存储器的总容量为m×n个字,地址码长度为 log2(m×n)位,其中,地址的高字段为log2m位,低 位字段为log2n位。
绝大多数计算机的Cache: n ≤4。
5.2.2 查找方法
如何确定Cache中是否有所要访问的块?若有的话, 如何确定其位置?这是通过查找目录表来实现的。
Cache中设有一个目录表,该表所包含的项数与 Cache的块数相同,每一项对应于Cache中的一个块。
当一个主存块被调入Cache中某一个块位置时,它的 标识就被填入目录表中与该Cache块相对应的项中,并 且该项的有效位被置“1”。
主存
◆ 并行查找的实现方法:
▲ 相联存储器 相联存储器是指其中任一存储项都可以直接
用该项的内容作为地址来存取的存储器。
▲ 单体多字存储器+比较器
物理地址 职工号
姓名
出生年月
工资数
n
5697102
张三
n+1
5199109
李四
n+2
6296311
王五
n+3
7100212
赵八
n+4
6211403
吴九
的块)
存储器带宽是反映存储器速度的重要参数。连续访 问存储器时达到的数据传输速率称为存储器的最大带 宽。
提高主存性能的存储器组织结构
1. 增加存储器的宽度 如果把Cache 和主存的宽度增加为原来的2倍或4
倍,则主存的频带也相应地增加为原来的2倍或4倍。
不足之处: a.增加CPU和存储器之间的连接通路(存储器总线)
写合并: 当把数据写入写缓冲器时,判断本次所写入 单元的块地址是否与写缓冲器中某个有效块的地址相 同,若是,则把新数据与该块合并。
5.2.6 性能分析
1. 失效率
2. 平均访问时间 平均访问时间=命中时间+失效率×失效开销
3. 程序执行时间 在考虑存储器对系统性能影响时,可以将系统性
能描述为: CPU时间=(CPU执行周期数+存储器停顿周期数) ×时钟周期时间
5.2.1 映像规则
1. 全相联映象
全相联:主存中的任一块可以被放置到Cache中的任意 一个位置。
特点: 空间利用率最高,冲突概率最低,实现最复 杂。
2. 直接映象
直接映象:主存中的每一块只能被放置到Cache中唯一 的一个位置。
特点: 空间利用率最低,冲突概率最高,实现最 简单。
例如:对于主存的第i 块,若它映象到Cache的第j块, 则:j=i mod (M ) (M 为Cache的块数)
主存块地址 i:
k
g位
上述的j 和k 通常称为索引。
n 路组相联:每组中有n 个块( n=M /G ),n 称为相联
度。 相联度越高,Cache空间的利用率就越高,块冲突概
率就越低,失效率也就越低。
全相联 直接映象 组相联
n (路数) M
1
1<n<M
G (组数)
1
M 1<G<M
wk.baidu.com
相联度一定是越大越好?
1. 每位价格C C= ─CC─12SSS─112+─+─
S2 如果 S1<< S2,C C2。
2. 命中率 H 和失效率 F
命中率 H :CPU访问存储系统时,在M1中找到所需信
息 的概率。
H=N1/(N1+N2) N1 ── 访问M1的次数 N2 ── 访问M2的次数 失效率F : CPU访问存储系统时,在M1中找不到所需
1. “写”操作所占的比例 Load指令:26% Store指令:9% “写”在所有访存操作中所占的比例: 9%/(100%+26%+9%)≈7% “写”在访问数据Cache操作中所占的比例: 9%/(26%+9%)≈25%
2. “写”操作必须在确认是命中后才可进行
3.“写”访问有可能导致Cache和主存内容的不 一致
为了弥补主存速度的不足 为了弥补主存容量的不足
存储管理实现
主要由专用硬件实现
主要由软件实现
访问速度的比值 (第一级和第二级)
典型的块(页)大小
CPU对第二级的 访问方式
失效时CPU是否切换
几比一 几十个字节 可直接访问
不切换
几百比一 几百到几千个字节
均通过第一级 切换到其他进程
5.1.4 存储层次的四个问题 1.当把一个块调入高一层(靠近CPU)存储器时,可以 放在哪些位置上?(映象规则)
6. 写缓冲器
7. “写”操作时的调块 ◆ 按写分配(写时取) 写失效时,先把所写单元所在的块调入 Cache,再行写入。 ◆ 不按写分配(绕写法) 写失效时,直接写入下一级存储器而不 调块。
8. 写策略与调块 写回法 ── 按写分配 写直达法 ── 不按写分配
5.2.5 Cache举例 例子:DEC的Alpha AXP21064中的内部数据 Cache。 1. 简介
根据映象规则不同,一个主存块可能映象到Cache中 的一个或多个Cache块位置。为便于讨论,我们把它们 称为候选位置。当CPU访问该主存块时,必须且只需查 找它的候选位置所对应的目录表项(标识)。如果有与 所访问的主存块相同的标识,且其有效位为“1”,则它 所对应的Cache块即是所要找的块。
1975.12 1960.09 1980.05 1953.06 1975.059
2300 4000 1750 4200 2500
5.2.3 替换算法
所要解决的问题:当新调入一块,而Cache又已被 占满时,替换哪一块?
1. 随机法 优点:实现简单
2. FIFO 3. LRU
优点:失效率低
5.2.4 写策略
容量: 8KB 块大小: 32B 块数: 256 调块: 不按写分配 映象方法: 直接映象 “写”策略: 写直达
写缓冲器大小:4个块
2. 结构图
3. 失效情况下的操作 读失效: Cache向CPU发出一个暂停信号,通知它等
待,并从下一级存储器中读如32个字节, 填入对应的Cache块。 写失效: CPU不对Cache进行操作。 4. 写缓冲的结构
为了保证速度,对各候选位置的标识的检查比较应并 行进行。
辅助硬件 Cache
目录表
1 10000000 0000
CPU
1 10000000 0001 1 10000000 0010
1 10000000 0011
例如:访问内存地址8003H、8013H, 即10000000 00000011B、
10000000 00010011B。
1. “Cache-主存” 层次
“Cache - 主存”层次的实现:主要借助于辅助硬件。
2. “主存-辅存”层次 “主存-辅存”层次的实现:主要借助于辅助软硬件。
3. 两者的比较 Cache-主存”与“主存-辅存”层次的区别。
存储层次
比较项目
“Cache -主存”层次 “主存-辅存”层次
目的
2.当所要访问的块在高一层存储器中时,如何找到该 块?(查找算法)
3.当发生失效时,应替换哪一块?(替换算法)
4.当进行写访问时,应进行哪些操作? (写策略)
5.2 Cache基本知识
为了填补CPU和主存在速度上的巨大差距,现 代计算机都在CPU和主存之间设置一个高速、小容 量(目前一般为几十K到几百K字节)的缓冲存储器 Cache。
第五章 存储层次
存储器是计算机的核心部件之一,其 性能直接关系到整个计算机系统性能的高 低。
如何以合理的价格设计出容量和速度 满足计算机系统要求的存储器系统,始终 是计算机体系结构设计中关键的问题之一。
5.1 存储器的层次结构
计算机软件设计者和计算机用户对于存储器容 量的需求是无止境的,他们希望容量越大越好,而 且速度还要快,价格要便宜。仅用单一的一种存储 器是很难达到这一目标的。较好的方法是采用存储 层次,用多种存储器构成存储器的层次结构。
5.2.7 改进Cache性能
平均访存时间=命中时间+失效率×失效开销 可以从三个方面改进Cache的性能: (1) 降低失效率 (2) 减少失效开销 (3) 减少Cache命中时间
5.6 主存
1. 主存的主要性能指标:延迟和带宽 2. 以往:Cache主要关心延迟,I/O主要关心带宽 3. 现在:Cache关心两者(由于二级Cache使用较大
5.1.1 从单级存储器到多级存储器 1. 存储器的三个主要指标 从用户的角度来看,存储器的三个主要指标是:
容量、速度和价格(每位价格)。
2. 人们对这三个指标的期望
3. 这三个指标相互矛盾
4. 解决方法 采用多种存储器技术,构成存储层次。
程序的局部性原理 程序在执行时所访问地址的分布不是随机的,而是
由于程序局部性原理,近期所用到的指令和数据 往往都集中在一个体内,从而出现了并行访问冲突, 如果在多任务多用户的应用状态下,访问冲突较少。
10000000 00000000 10000000 00000001 10000000 00000010 10000000 00000011 10000000 00000100 10000000 00000101 10000000 00000110 10000000 00000111 10000000 00001000 10000000 00001001 10000000 00001010 10000000 00001011 10000000 00001100 10000000 00001101 10000000 00001110 10000000 00001111 10000000 00010000 10000000 00010001 10000000 00010010 10000000 00010011
的宽度; b.当主存宽度增加后,用户扩充主存时的最小增量
也增加了相应的倍数。 c.在具有纠错功能的存储器中实现对一行(一次可并
行读出的数据)中部分数据的写入比较复杂。
2. 采用简单的多体交叉存储器 提高带宽的另一种方法,是在存储系统中采用多个
DRAM,并利用它们潜在的并行性。可以把存储芯片 组织为多个体,并让它们并行工作,从而能一次读或 写多个字(而不是一个字)。一般来说,使用交叉存 储器的目的是利用系统中所有DRAM的潜在带宽,而 大部分存储系统(非交叉存储器)只启动包含所访问 字的那个DRAM。