当前位置:文档之家› 计算机体系结构-第五章 存储层次

计算机体系结构-第五章 存储层次

由于程序局部性原理,近期所用到的指令和数据 往往都集中在一个体内,从而出现了并行访问冲突, 如果在多任务多用户的应用状态下,访问冲突较少。
主存
◆ 并行查找的实现方法:
▲ 相联存储器 相联存储器是指其中任一存储项都可以直接
用该项的内容作为地址来存取的存储器。
▲ 单体多字存储器+比较器
物理地址 职工号
姓名
出生年月
工资数
n
5697102
张三
n+1
5199109
李四
n+2
6296311
王五
n+3
7100212
赵八
n+4
6211403
吴九
容量: 8KB 块大小: 32B 块数: 256 调块: 不按写分配 映象方法: 直接映象 “写”策略: 写直达
写缓冲器大小:4个块
2. 结构图
3. 失效情况下的操作 读失效: Cache向CPU发出一个暂停信号,通知它等
待,并从下一级存储器中读如32个字节, 填入对应的Cache块。 写失效: CPU不对Cache进行操作。 4. 写缓冲的结构
6. 写缓冲器
7. “写”操作时的调块 ◆ 按写分配(写时取) 写失效时,先把所写单元所在的块调入 Cache,再行写入。 ◆ 不按写分配(绕写法) 写失效时,直接写入下一级存储器而不 调块。
8. 写策略与调块 写回法 ── 按写分配 写直达法 ── 不按写分配
5.2.5 Cache举例 例子:DEC的Alpha AXP21064中的内部数据 Cache。 1. 简介
存储体的宽度通常都是一个字,这样就无需改变总 线的宽度和Cache。但同时向几个体发送地址能使它 们同时进行读访问。
4路多体交叉存储器
下图示出了高位交叉访问的存储器结构(高位连续地 址分别处于不同体中),图中结构具有m个体,每个体 内容量为n个字,存储单元的地址由两部分组成,地址 码的低位部分为各体内地址,由 0~(n-1);高位字段表 示了各体的体号, 由0~(m-1)。寻址时,地址的高位 字段指出寻址的体, 低位字段送到该体的地址寄存器 (MAR)。存储器的总容量为m×n个字,地址码长度为 log2(m×n)位,其中,地址的高字段为log2m位,低 位字段为log2n位。
信 息的概率。
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-主存”层次:弥补主存速度的不足; “主存-辅存” 层次:弥补主存容量的不足。
为了弥补主存速度的不足 为了弥补主存容量的不足
存储管理实现
主要由专用硬件实现
主要由软件实现
访问速度的比值 (第一级和第二级)
典型的块(页)大小
CPU对第二级的 访问方式
失效时CPU是否切换
几比一 几十个字节 可直接访问
不切换
几百比一 几百到几千个字节
均通过第一级 切换到其他进程

5.1.4 存储层次的四个问题 1.当把一个块调入高一层(靠近CPU)存储器时,可以 放在哪些位置上?(映象规则)
相对地簇聚;这种簇聚包括指令和数据两部分。 ◆ 程序的时间局部性:程序即将用到的信息很可能就 是目前正在使用的信息。 ◆ 程序的空间局部性:程序即将用到的信息很可能与 目前正在使用的信息在空间上相邻或者临近。
5.1.2 存储层次的性能参数
S,TA , C 设: S ── 容量
TA ── 访问时间 C ── 每位价格 下面仅考虑由M1和M2构成的两级存储层次: M1的参数:S1,TA1,C1 M2的参数:S2,TA2,C2
1. “写”操作所占的比例 Load指令:26% Store指令:9% “写”在所有访存操作中所占的比例: 9%/(100%+26%+9%)≈7% “写”在访问数据Cache操作中所占的比例: 9%/(26%+9%)≈25%
2. “写”操作必须在确认是命中后才可进行
3.“写”访问有可能导致Cache和主存内容的不 一致
绝大多数计算机的Cache: n ≤4。
5.2.2 查找方法
如何确定Cache中是否有所要访问的块?若有的话, 如何确定其位置?这是通过查找目录表来实现的。
Cache中设有一个目录表,该表所包含的项数与 Cache的块数相同,每一项对应于Cache中的一个块。
当一个主存块被调入Cache中某一个块位置时,它的 标识就被填入目录表中与该Cache块相对应的项中,并 且该项的有效位被置“1”。
的块)
存储器带宽是反映存储器速度的重要参数。连续访 问存储器时达到的数据传输速率称为存储器的最大带 宽。
提高主存性能的存储器组织结构
1. 增加存储器的宽度 如果把Cache 和主存的宽度增加为原来的2倍或4
倍,则主存的频带也相应地增加为原来的2倍或4倍。
不足之处: a.增加CPU和存储器之间的连接通路(存储器总线)
根据映象规则不同,一个主存块可能映象到Cache中 的一个或多个Cache块位置。为便于讨论,我们把它们 称为候选位置。当CPU访问该主存块时,必须且只需查 找它的候选位置所对应的目录表项(标识)。如果有与 所访问的主存块相同的标识,且其有效位为“1”,则它 所对应的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
相联度一定是越大越好?
5.1.1 从单级存储器到多级存储器 1. 存储器的三个主要指标 从用户的角度来看,存储器的三个主要指标是:
容量、速度和价格(每位价格)。
2. 人们对这三个指标的期望
3. 这三个指标相互矛盾
4. 解决方法 采用多种存储器技术,构成存储层次。
程序的局部性原理 程序在执行时所访问地址的分布不是随机的,而是
第五章 存储层次
存储器是计算机的核心部件之一,其 性能直接关系到整个计算机系统性能的高 低。
如何以合理的价格设计出容量和速度 满足计算机系统要求的存储器系统,始终 是计算机体系结构设计中关键的问题之一。
5.1 存储器的层次结构
计算机软件设计者和计算机用户对于存储器容 量的需求是无止境的,他们希望容量越大越好,而 且速度还要快,价格要便宜。仅用单一的一种存储 器是很难达到这一目标的。较好的方法是采用存储 层次,用多种存储器构成存储器的层次结构。
设M=2m,则当表示为二进制数时,j 实际上就是i 的 低m 位:
i:
j
m位
3. 组相联映象
组相联:主存中的每一块可以被放置到Cache中唯一的 一个组中的任何一个位置。
组的选择常采用位选择算法
若主存第i 块映象到第k 组,则: k=i mod(G) (G为Cache的组数)
设G=2g,则当表示为二进制数时,k 实际上就是i 的低 g 位:
为了保证速度,对各候选位置的标识的检查比较应并 行进行。
辅助硬件 Cache
目录表
1 10000000 0000
CPU
1 10000000 0001 1 10000000 0010
1 10000000 0011
例如:访问内存地址8003H、8013H, 即10000000 00000011B、
10000000 00010011B。
5.2.7 改进Cache性能
平均访存时间=命中时间+失效率×失效开销 可以从三个方面改进Cache的性能: (1) 降低失效率 (2) 减少失效开销 (3) 减少Cache命中时间
5.6 主存
1. 主存的主要性能指标:延迟和带宽 2. 以往:Cache主要关心延迟,I/O主要关心带宽 3. 现在:Cache关心两者(由于二级Cache使用较大
1. “Cache-主存” 层次
“Cache - 主存”层次的实现:主要借助于辅助硬件。
2. “主存-辅存”层次 “主存-辅存”层次的实现:主要借助于辅助软硬件。
3. 两者的比较 Cache-主存”与“主存-辅存”层次的区别。
存储层次
比较项目
“Cache -主存”层次 “主存-辅存”层次
目的
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中找不到所需
写合并: 当把数据写入写缓冲器时,判断本次所写入 单元的块地址是否与写缓冲器中某个有效块的地址相 同,若是,则把新数据与该块合并。
5.2.6 性能分析
1. 失效率
2. 平均访问时间 平均访问时间=命中时间+失效率×失效开销
3. 程序执行时间 在考虑存储器对系统性能影响时,可以将系统性
能描述为: CPU时间=(CPU执行周期数+存储器停顿周期数) ×时钟周期时间
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
相关主题