第四章存储子系统cache

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

访问Cache 取出信息送CPU
访问主存 取出信息送CPU
将新的主存块 调入Cache中
执行替换算法 腾出空位
结束
4. Cache 的 读写 操作

Cache 和主存的一致性 • 写直达法(Write – through)
写操作时数据既写入Cache又写入主存 写操作时间就是访问主存的时间,读操作时不 涉及对主存的写操作,更新策略比较容易实现
Cache Cache 替换机构 替换机构

可装进?

命中?
主存Cache 地址映射 变换机构

访问主存装入Cache 是 是 Cache地址 直接通路 块号 块内地址
CPU

Cache存储体
Cache 存储体
数据总线
4. Cache 的 读写 操作

开始 CPU发出访问地址

命中?

Cache满? 否 是
M0 W位
M1 W位
… … w×n
Mn W位
2.多体交叉存取方式并行主存系统
多个存储体具有自己的地址寄存器、数据线、时序, 可以独立编制地并行工作。
CPU IOP 总 线 控 制
M0
...
M1
...
M2
...
M3
...
地址寄存器0
地址寄存器1
地址寄存器2
地址寄存器3
存 控(主存控制部件)
(1) 高位交叉
2n 2n+1
M2
3n 3n+1
M3
… …
n-1
2n-1 体号




3n-1 地址译码 体内地址

4n-1

(2) 低位交叉
地址
0000 00 0001 00
各个体轮流编址
M1 M2
0000 10 0001 10 0000 11 0001 11
M0
0000 01 0001 01
M3
… …
1111 00 1111 01
2. Cache 的工作原理
(1) 主存和缓存的编址
主存储器 主存块号 标记 Cache 缓存块号
0 0 1
字块 0 字块 1
字块 0
字块 1
……
……
1
~
2 -1
n位 m位 主存块号 M块
m
~
字块 M-1 b位 块内地址
2c-1
~ ~
c位
~ ~
字块 C-1 b位
缓存块号 块内地址 C块
B个字
B个字
通常在一个存储器周期内,n个存储体必须分时 启动,则各个存储体的启动间隔为 t=T/n(n为交 叉存取度)
设存储器容量为32字,字长64位,模块数为4, 请分别画出顺序方式和交叉方式组成的存储 器结构和编址示意图。
低位交叉的特点
在不改变存取周期的前提下,增加存储器的带宽
单体 访存周期 时间 启动存储体 0 启动存储体 1 启动存储体 2 单体 访存周期
例:CPU执行一段程序时,cache完成存取的 次数为1900次,主存完成存取的次数为100次, 已知cache存取周期为50ns,主存存取周期为 250ns,求cache/主存系统的效率和平均访问 时间。
3. Cache 的基本结构
地址总线
由CPU完成
访问主存 替换Cache
主存块号
块号
块内地址
提高存储系统性能的其它措施
一、双端口存储器 双端口存储器由于同一个存储器具有两组相互独 立的读写控制电路而得名。由于进行并行的独 立操作,因而是一种高速工作的存储器。
地址A 地址B
地址寄存器
译码
地址寄存器
译码
存储体 数据A 数据B
无冲突读写控制
当两端口地址不同时,在两端口上进行读写,不会发 生冲突,可同时进行读写。
有冲突读写控制
[问题]当两个端口同时存取同一存储单元时,会发生端 口间的读写冲突。
[解决方法]设置BUSY标志,采用仲裁逻辑,由芯片上 的判断逻辑决定由哪个端口优先进行读写操作,而暂 时关闭另一个被延迟的端口。
二、并行存储器
1.单体多字并行主存系统 多个并行存储器共用一套地址寄存器,按同一地址 并行地访问各自的对应单元。 地址寄存器
地址映象:把主存地址空间映象到Cache地址空间, 具体地说就是把存放在主存中的程序按照某种规则 装入Cache,并建立主存地址与Cache地址之间的对 应关系。 地址变换:把程序装入Cache之后,在实际运行过程 中,把主存地址如何变换成Cache地址。
1. 全相联映射
主存 中的 任一块 可以映射到 缓存 中的 任一块 设Cache块容量为Cb,主存块容量为Mb,则主存与 Cache之间存在Cb*Mb中映象关系
CPU 欲访问的信息在 Cache 中的 比率 命中率 与 Cache 的 容量 与 块长 有关
一般每块可取 4 ~ 8 个字 块长取一个存取周期内从主存调出的信息长度 在一个程序执行期间,设Nc表示cache完成存取的 总次数,Nm表示主存完成存取的总次数,h定义为 命中率,则有 h=Nc/(Nc+Nm)
解:顺序存储器和交叉存储器连续读出m=4个字的信息总量 都是: q=64b×4=256bit 顺序存储器和交叉存储器连续读出4个字所需的时间分别是: t2=mT=4×200ns=800ns=8×10-7s t1=T+(m-1) ×50ns=200ns+150ns=350ns=3.5×10-7s 顺序存储器和交叉存储器的带宽分别是: W2=q/t2=256b÷(8×10-7)s≈40MB/S W1=q/t1=256b÷(3.5×10-7)s≈91.4MB/S
启动存储体 3
设四体低位交叉存储器,存取周期为T,总线传输周期
为τ,为实现流水线方式存取,应满足 T = 4τ。
字 体号
W4 W3 W2 W1 W0
M0 M3 M2 M1 M0
T
τ τ τ
时间
连续读取 4 个字所需的时间为 T+(4 -1)τ
例:设存储器容量为32字,字长64位,模块数m=4, 分别用顺序方式和交叉方式进行组织。存储周期 T=200ns,数据总线宽度为64位,总线传送周期 =50ns。若连续读出4个字,问顺序存储器和交叉存 储器的带宽各是多少?
• 写回法(Write – back)
写操作时只把数据写入 Cache 而不写入主存 当 Cache 数据被替换出去时才写回主存 写操作时间就是访问 Cache 的时间, 读操作 Cache 失效发生数据替换时, 被替换的块需写回主存,增加了 Cache 的复杂性
二、Cache – 主存的地址映射与地址变换
特点: 块的冲突小,Cache利用率高,但硬件代价高,影 响Cache的速度
2.直接映射
主存中一块只能映像到cache的一个特定块中,设主存 块号为B,Cache块号为b,则映象关系表示为 b=B mod Cb Cb是Cache的块容量,Mb是主存的块容量,Me是主 存的区容量 把主存按Cache的大小分区,每个分区的块数与Cache 总块数正好相等。直接映象只能把主存各区中相对 块号相同的那些块映像到Cache中同一块号的那个 特定块中。
wenku.baidu.com
3.近期最少使用( LRU)算法 选择近期最少访问的页面作为被替换的页面
4.最优化( OPT)算法 以将来使用最少作为替换目标。是一种理想 的算法,实现不了,只能作为衡量其它算 法优劣的标准。
LRU算法计数器的使用及管理规则是: 1)被装入或被替换的块,其对应计数器清为0, 同组中其他所有块所属计数器加1; 2)命中的块,其对应的计数器清为0,同组中其 他所有计数器中,凡是计数器值小于命中块所属 计数器原来值的都加1,其他计数器不变; 3)需要替换时,在同组的所有计数器中选择计数 值最大的计数器,它所对应的块就是要被替换的 块。 例:一个程序共有5个页面,分别为P1-P5,程序执行 过程中的页地址流(即程序执行中依次用到的页面) 如下:P1P2P1P5P4P1P3P4P2P4,假设分配给这个程序 的Cache共3个页面,则使用FIFO,LRU时命中率为多少?
比较结果相等,有效位为1,命中。 比较结果相等,有效位为0, Cache处该块作废。 比较结果不等,有效位为1,Cache处该块有用。 比较结果不等,有效位为0,Cache处该块为空。
3. 组相联映射
把主存和Cache按同样大小划分成块,另外还把主存 和Cache按同样大小划分成组,每一组由相同的块数 组成。 主存组与Cache组采用直接映像,两个对应组内部采 用全相联方式。
Cache 存储器
块0 块1 … 块Cb-1
主存储器
块0 块1 … 块Cb-1 …
块Mb-1
引入目录表来存放映象关系,则目录表容量为Cb,字长 为Cache地址中的块号长度与主存地址中的块号长度之 和再加上一个有效位。
主存地址 块号B
相联比较 命中
| 块内地址W
块号b| 块内地址W
b 1
B
B
B
b
b
高速缓冲存储器
一、概述
1. 问题的提出
避免 CPU “空等” 现象
CPU 和主存的速度差异
CPU
缓存
容量小 速度高
主存
容量大 速度低
程序访问的局部性原理:
由于编程时指令地址的分布基本上连续,对循 环程序段的执行往往要重复若干遍;在一个较 短的时间间隔内,对存储器的访问大部分将集 中在一个局部区域中,而对此地址范围之外的 地址很少访问。这种现象称之为局部性原理。
Cache存储体 块0 ……
主存储体 块0 …… 块Gb-1 块Gb …… 块2Gb-1 …… 块Cb-Gb …… 块Cb-1 …… …… …… 组Cg-1 组0
组0
组0
组1
块Gb-1 块Gb …… 块2Gb-1 ……
区0
组Cg-1
块Cb-Gb …… 块Cb-1
区Me-1
主存地址 区号E |组号G|组内块号B | 块内地址W
Cache存储体 块0 块1 … 块 Cb-1
主存储体 块0
块1
块 Cb-1 块Cb 块Cb+1 块2Cb-1 … …
区0
区1
块Mb-Cb+1
区Me-1 块Mb-1 …
主存地址
区号E
比较
|块号B
块号b
相等
| 块内地址W
| 块内地址W
不等
E 区号存储器 区号E(按地址访问)
1 有效位
特点: 冲突率高, Cache命中 率低。
地址
00 0000 00 0001
顺序编址
M1 M2
10 0000 10 0001 11 0000 11 0001
M0
01 0000 01 0001
M3
… …
00 1111 01 1111
体号


10 1111
体内地址
… …
11 1111
… …
(1) 高位交叉
地址 M0
0 1
各个体并行工作
M1 n n+1
5)若将本例改为全相联地址映像方式,又该如何?
三、替换算法
1.随机替换 随机替换策略实际上是不要什么算法,简单 地根据一个随机数,选取Cache中的一块替换 掉。 2. 先进先出 ( FIFO )算法 按调入Cache的先后决定淘汰的顺序,即在 需要更新时总是最先淘汰最先调入Cache的 页面内容。
体内地址


1111 10 体号
… …
1111 11
… …
(2) 低位交叉 各个体轮流编址
地址 M0
0 4 1 5
M1
2 6
M2
3 7
M3
… …
4n-4 4n-3
… …
4n-2 地址译码 体内地址



4n-1 体号

各体地址分配满足
A=nj+k A:各分体内的地址; n:存储体的个数 j:正整数 k:存储体编号
1
1
主存块号
Cache块号
有效位
有效位为1:表示目录表中由主存块号B与Cache块号 b之间的映像关系是有效的,也表示在Cache的第b块 中存放的数据是主存第B块数据的正确副本。 有效位为0:表示目录表中由主存块号B与Cache块号 b之间的映像关系是无效的,或者说他们之间没有任 何关系, Cache的第b块中存放的数据也不是主存第 B块数据的正确副本。
组号g | 组内块号b|块内地址w
相联比较 不等 相等
Gb个块
区号E,组内块号B
块表存储器
组内块号b
例:
设主存容量1MB,Cache容量16KB,块的大小为512B, 采用直接地址映像方式:
1)写出Cache的地址格式
2)写出主存的地址格式
3)区号表的容量为多大?(不考虑有效位)
4)主存地址为CDE8FH的单元在Cache的什么位置?
主存和缓存按块存储
块的大小相同
B 为块长
(2) 命中与未命中
缓存共有 C 块 主存共有 M 块 M >> C 命中 主存块 调入 缓存 主存块与缓存块 建立 了对应关系 用 标记记录 与某缓存块建立了对应关系的 主存块号
未命中
主存块 未调入 缓存
主存块与缓存块 未建立 对应关系
(3) Cache 的命中率
(4) Cache –主存系统的效率
访问效率 e 与 命中率 有关 若tc表示命中时的cache访问时间,tm表示未命中时的 主存访问时间,1-h表示未命中率,则cache/主存系统 的平均访问时间ta为: ta=h*tc+(1-h)tm
访问 Cache 的时间 e= × 100% 平均访问时间 tc × 100% 则 e= h × tc+ (1-h)× tm
相关文档
最新文档