高速缓冲存储器的组成与运行原理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
256
1 KB 8 KB 16 KB 64 KB 256 KB
31
块大小的权衡
• 一般来说,数据块较大可以更好地利用空间局部性, 但是:
– 数据块大意味着缺失损失的增大:
• 需要花费更长的时间来装入数据块
– 若块大小相对Cache总容量来说太大的话,命中率将降低
• Cache块数太少
• 一般来说,平均访问时间 = 命中时间 x 命中率 + 失效损失 x 缺 失率
23
0-15 64-79 …
组相连Cache访问举例
0-15 16-31 32-47
128-143 144-159
假设有下列访问主存顺序: Read location 0: Miss Read location 16: Miss Read location 32: Miss Read location 4: Hit Read location 8: Hit Read location 36: Hit Read location 32: Hit Read location 128: Miss Read location 148: Miss Read location 0: Hit Read location 128: Hit Read location 4: Hit Read location 132: Hit
CPU与主存储器的性能差 异,每年增长50%
动态存储器性能 每年增长9%
DRAM
1000 100 10 1
性能
摩尔定律
处理器性能每年 CPU 增长60%
CPU与DRAM性能比较
Cache的提出
一直以来,CPU和主存储器的速度总是有差距 CPU的发展一直以速度为主,以提高速度为核心 主存的发展一直以容量为主,以提高容量为核心
CPU
36
改写主存储器的策略
若 CPU 改写了 CACHE 一单元内容后且尚未改变主存 相应单元内容,则出现数据不一致性。有两种解决
办法:
1.接下来直接改写主存单元内容(Write Through) 简便易行, 但可能带来系统运行效率不高的问题。需要写
入缓冲存储器。 2.拖后改写主存单元内容(Write Back) 一直拖到有另外的设备要读该内容过时的主存单元时,则首
• 两种局部性:
– 时间局部性 – 空间局部性
6
层次存储器系统
• 使用高速缓冲存储器Cache来提高CPU对存储 器的平均访问速度。
• 时间局部性:最近被访问的信息很可能还要被 访问。
– 将最近被访问的信息项装入到Cache中。
• 空间局部性:最近被访问的信息临近的信息也 可能被访问。
– 将最近被访问的信息项临近的信息一起装入到 Cache中。
时间+将该块交付给处理器的时间
• 命中时间<<失效损失
10
参数典型数值
• 块大小:4~128Byte • 命中时间:1~4周期 • 失效损失:
– 访问时间:6~10个周期 – 传输时间:2~22个周期
• 命中率:80%~99% • Cache容量:1KB~256KB
11
有
全相联方式
效
位
标志 数据
缺失损失
缺失率
利用空间局部性
较少的数据块: 弥补时间局部性
平均访 问时间
增加了缺失损失 和缺失率
块大小
块大小
块大小
32
Cache的替换算法
1. 先进先出算法(FIFO) 将最早调入Cache的字块替换出 去。容易实现,开销小。
2. 最近最少使用算法(LRU) 需要计算字块的使用次数,开销 大,但平均命中率比FIFO要高。
128 bits Data
Block offset
Data
16
32
32
32
Mux 32
4K entries
32
20
直接映射方式的地址映射
特点
1. 主存的字块只可以和固定的Cache 字块对应,方式直接,利用率低。 2. 标志位较短,比较电路的成本低。 如果主存空间有2m块,Cache中字块 有2c块,则标志位只要有m-c位。且 仅需要比较一次。
第三单元 层次存储器系统
第三讲 高速缓冲存储器的组成 与运行原理 刘卫东
liuwd@
1
内容提要
• Cache的目的 • 基本原理 • Cache的三种映射方式 • 提高Cache性能
2
年份 3
1980 1981
1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000
24
四路组相连Cache实现
31 30
Address 12 11 10 9 8
321 0
22
8
Index 0 1 2
V Tag Data
253 254 255
V Tag Data
V Tag Data
V Tag Data
22
32
4-to-1 multiplexor
Hit
Data
25
三种映射方式比较
• cache中命中和缺失各 有多少次?
17
0-15 128-143 16-31 144-159 32-47 160-175
……
Cache 举例:续
0X-X15X 128-143 16X-X31X 144-159
32-47
• Cache中命中和缺失次数?
– Read location 0: Miss – Read location 16: Miss – Read location 32: Miss – Read location 4: Hit – Read location 8: Hit – Read location 36: Hit – Read location 32: Hit – Read location 128: Miss – Read location 148: Miss
Data
1021
1022
1023
20
32
19
直接映射 Cache: 硬件实现
• 增加块大小可以更好地利用空间局部性
Hit
Tag
16 bits V Tag
Address (showing bit positions) 31 16 15 4 3 2 1 0
16 Index
12 2 Byte offset
利用率低,命中率低,效率较低 21
有 两路组相联方式
效 位
标志
比较
数 译码 据
CACHE 比较
主存地址
数据
地址
块号 块内地址
译码
CPU
主 存 储 器 译码
22
两路组组相联方式的地址映射
特点
1. 前两种方式的折衷方案。组间为 全相连,组内为直接映射。 2. 集中了两个方式的优点。成本也 不太高。
是常用的方式
29
Cache命中率
Hit Rate
100% 80% 60% 40% 20% 0% 1
8
16 32 64 128 256 512
Cache Size in KB
30
块大小和缺失率的关系
Miss rate
40% 35% 30% 25% 20% 15% 10%
5% 0%
4
16
64
Block size (bytes)
26
提高Cache的性能 1. 提高命中率 2. 缩短缺失后的处理时间 3. 提高访问cache的速度
27
Cache缺失的原因
• 必然缺失 (开机或进程切换):首次访问数据块 – 世事总是有缺憾 – 注意:如果我们运行几百万条指令,有点必然缺 失又何妨?
• 冲突缺失 – 多个 memory块映射到同一 cache块 – 解决办法 1:增大 cache 容量 – 解决办法 2:增加相连组数
如何解决这之间的矛盾?
4
这不是一个技术问题,而是一个经济 问题。从技术上说,能制造出多高速 度的CPU,就能制造出同样速度的存 储器,只不过是我们是否愿意付出如 此高的价格。
有没有更好的办法?能否用廉 价的高容量存储器实现相对的 高速度呢?
5
程序的局部性原理
访问概率
地址空间
• 程序在一定的时间段内通常只访问较小的地址 空间
• 容量冲突 – Cache无法装入程序需要访问的所有块 – 方案:增大 cache 容量
• 无效缺失:其它进程(如I/O)修改了主存
28
影响 CACHE 命中率的因素
从 CACHE 本身诸因素看,可能:
1. CACHE 的容量,大一些好 2. CACHE 与主存储器每次交换
信息的单位量(Cache Line Size)适中 3. CACHE 不同的组织方式,多路组相联更好 4. CACHE 的多级组织可提高命中率 5. CACHE 装满后的换字算法
CACHE
总 线
Bus Master 2
CPU
35
CACHE 接入系统的体系结构
2. 隔断法:把原来的总线打断为两段, 使 CACHE 处在两段之间,优点是有利 于提高总线利用率,支持总线并发操作, 缺点是结构复杂,成本较高。
MEMORY
Bus Master 1
Bus Master 2
CACHE
总 线
3. 随机替换(RAND)
33
多级Cache
• 采用两级或更多级cache来提高命中率 • 将Cache分解为指令Cache和数据Cache
34
CACHE 接入系统的体系结构
1. 侧接法:像入出设备似的连接到 总线上,优点是结构简单,成本低, 缺点是不利于降低总线占用率。
MEMORY Bus Master 1
• 直接映射
– 主存中的一块只能映射到Cache中唯一的一个位置 – 定位时,不需要判断,只需替换
• 全相连映射
– 主存中的一块可以映射到Cache中任何一个位置
• N路组相连映射
– 主存中的一块可以选择映射到Cache中N个位置
• 全相连映射和N路组相连映射的失效处理
– 从主存中取出新块 – 为了腾出Cache空间,需要替换出一个Cache块 – 不唯一,则需要判断应替出哪块
7
CACHE的基本运行原理
地址总线
CACHE
CPU
ADDR
DATA
比较选一行 CACHE CONTROL
译码选一单元 MEMORY
数 据 总
读 过
线程
为
例
8
要解决的主要问题
1. 地址之间的映射关系: 如何从主存地址得到Cache地址?
2. Cache中的内容是否已经是主存对 应地址的内容?
3. Cache内容装入策略 如何提高Cache的命中率?
数 据
比 CACHE 较
主存地址
地址
块号 块内地址
CPU
主 存 储 器 译码
12
全相连映射硬件实现举例
31 30 ………
32 1 0
30
有效位 标记 数据
0
=
有效位 标记 数据
1
=
…… ……
有效位 标记 数据
1023
=
……
1024-1选择器
命中
数据 13
全相联方式的地址映射
特点
1. 主存的字块可以和Cache的任何字 块对应,利用率高,方式灵活。 2. 标志位较长,比较电路的成本太 高。如果主存空间有2m块,则标志 位要有m位。同时,如果Cache有n 块,则需要有n个比较电路。
• 命中率 = 4/9 = 45% • 注意:失效的原因
– 启动失效 – 冲突失效
18
直接映射 Cache:硬件实现
Address (showing bit positions)
31 30 13 12 11 2 1 0
Byte offset
Hit
20
10
Tag
Data
Index
Index Valid Tag 0 1 2
9
几个参数
• 块(Line):数据交换的最小单位 • 命中(Hit):在较高层次中发现要访问的内容
– 命中率(Hit Rate):命中次数/访问次数 – 命中时间:访问在较高层次中数据的时间
• 失效(Miss):需要在较低层次中访问块
– 失效率(Miss Rate):1-命中率 – 失效损失(Miss Penalty):替换较高层次数据块的
使用成本太高 14
有 直接映射方式
效
位 CACHE
标志 数据
数 据
比 较
主存地址
译
码块
块
内
号
地
地址 址
块号 块内地址
CPU
主 存 储 器 译码
15
Cache 举例
• 8 块 cache
• 每块16 字节
• “直接映射”: 内存中的每个单 元在Cache中只 会有一个唯一的 位置和它对应。
0-15 128-143 16-31 144-159 32-47 160-175
……
16
直接映射Cache 举例
0-15 128-143 16-31 144-159 32-47 160-175
……
0X-X15X 128-143 16X-X31X 144-1593Biblioteka -47• 假定有如下访问操作:
– Read location 0 – Read location 16 – Read location 32 – Read location 4 – Read location 8 – Read location 36 – Read location 32 – Read location 128 – Read location 148