【Computer Organization笔记21】高速缓存 Cache :多路组相联的地址映射、一致性、缺失、MESI协议 您所在的位置:网站首页 三种映射方式的优缺点 【Computer Organization笔记21】高速缓存 Cache :多路组相联的地址映射、一致性、缺失、MESI协议

【Computer Organization笔记21】高速缓存 Cache :多路组相联的地址映射、一致性、缺失、MESI协议

2024-01-16 12:32| 来源: 网络整理| 查看: 265

本次笔记内容: P41 计算机组成原理(41) P42 计算机组成原理(42)

我的计组笔记汇总:计算机组原理成笔记

视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完

幻灯片见我的 GitHub 仓库:计算机组成原理 src/slides

本节课幻灯片:组成原理33 cache2.pptx

文章目录 内容提要层次存储器系统 - 复习高速缓冲存储器 Cache需要解决的问题复习:全相联映射硬件实现复习:直接映射Cache硬件实现 多路组相联方式两路组相联方式特点组相联 Cache 访问举例四路组相连的Cache实现方式直接映射与全相联其实都是多路组相联三种映射方式比较一致性保证Cache写(命中时)Cache(不命中)写策略 提高存储访问的性能Cache缺失的四类原因对策影响Cache缺失率的因素 影响Cache命中率的因素命中率和容量的关系块大小和缺失率的关系块大小的权衡块替换策略替换策略多级Cache CACHE 接入系统的体系结构侧接法隔断法 一致性保证策略(MESI)两级Cache块的状态转换

内容提要

Cache的地址映射:

全相联映射直接映射多路组相联

Cache写策略

提高Cache性能的途径

组织结构Cache参数(大小、块大小、替换策略) 层次存储器系统 - 复习

使用高速缓冲存储器Cache来提高CPU对存储器的平均访问速度。

时间局部性:最近被访问的信息很可能还要被访问。将最近被访问的信息项装入到Cache中。

空间局部性:最近被访问的信息临近的信息也可能被访问。将最近被访问的信息项临近的信息一起装入到Cache中。

高速缓冲存储器 Cache

基于程序的局部性原理:

时间局部性空间局部性

利用静态存储器的高速特性,设置于主存储器与CPU之间,缓存CPU频繁访问的信息,提高CPU访问存储器的整体性能。

需要解决的问题

如何通过主存地址去访问Cache?

全相联直接映射多路组相联 今天讲

如何保证层次间一致性?

有效位、写策略

Cache参数对性能的影响

Cache的组织:块大小替换策略接入方式 复习:全相联映射硬件实现

不足之处是,每个行都需要一个比较器。

复习:直接映射Cache硬件实现

规定了,主存中的某些块,只能映射到某个 Cache 的行中去。因此,只需要一个比较器。

不足是命中率比较低。

多路组相联方式 两路组相联方式

如上,多路组相联可以视为二者结合。

特点 前两种方式的折衷方案。组间为全相连,组内为直接映射。集中了两个方式的优点。成本也不太高。

是常用的方式。

组相联 Cache 访问举例

四路组相连的Cache实现方式

主存:4GB,Cache:4KB,块大小:4B,4路组相联,索引位?标志位?

4GB 内存,地址需要 32 位表达; Cache 有 4KB ,每块 4B ,且分成了 4 路; 则一路有 1k / 4 = 256 行,则索引位 8 位。 一块有 4B,块内地址用 2 位表达; 其他的位都是用来做标记的。 因此,标记位数为 32-8-2=22 。

因此,为什么说计算机是工程,“不是科学”。比如这里,就是一个工程上妥协的选择,并不是很严谨。

直接映射与全相联其实都是多路组相联

三种映射方式比较

直接映射:

主存中的一块只能映射到Cache中唯一的一个位置定位时,不需要判断,只需替换

全相连映射

主存中的一块可以映射到Cache中任何一个位置

N路组相连映射

主存中的一块可以选择映射到Cache中N个位置

全相连映射和N路组相连映射的失效处理

从主存中取出新块为了腾出Cache空间,需要替换出一个Cache块不唯一,则需要判断应替出哪块 一致性保证

写直达(Write through)

强一致性保证,效率低在Cache中命中:同时修改Cache和对应的主存内容没有在Cache中命中:写分配(Write allocate)、非写分配(not Write allocate )

拖后写(Write back)

弱一致性保证,替换时再写主存:主动替换、被动替换通过监听总线上的访问操作来实现实现复杂,效率比较高 Cache写(命中时)

设置一个写入缓冲,防止流水周期被写卡住。

Cache(不命中)写策略

目前对于系统结构来讲,尤其是多核,如何进行存储管理。

提高存储访问的性能

平均访问时间 = 命中时间 x 命中率 + 缺失损失 x 缺失率

提高命中率缩短缺失时的访问时间提高Cache本身的速度 Cache缺失的四类原因

必然缺失(Compulsory Miss):

开机或者是进程切换首次访问数据块

容量缺失(Capacity Miss):

活动数据集超出了Cache的大小

冲突缺失(Conflict Miss):

多个内存块映射到同一Cache块某一Cache组块已满,但空闲的Cache块在其他组

无效缺失:

其他进程修改了主存数据 对策

必然缺失:

世事总有缺憾如果程序访问存储器的次数足够多,也就可以忽略了策略:预取

容量缺失:

出现在Cache容量太小的时候增加Cache容量,可缓解缺失现象

冲突缺失:

两块不同的内存块映射到相同的Cache块对直接映射的Cache,这个问题尤其突出-增加Cache容量有助于缓解冲突 增加相联的组数有助于缓解冲突 影响Cache缺失率的因素

经验总结:容量为N、采用直接映射方式Cache的缺失率和容量为N/2、采用2路组相联映射方式Cache的缺失率相当。

影响Cache命中率的因素 Cache容量:大容量可以提高命中率,但是……Cache块大小:选择多大的行,还真是个问题地址映射方式:多路组相联,但到底多少路呢?替换算法:替换哪行出去呢?多级Cache:给用户更多的选择 命中率和容量的关系

如上,边际效益是递减的。容量选择恰当的就好。

块大小和缺失率的关系

发现,不是块越大,命中率就越高。

块大小的权衡

一般来说,数据块较大可以更好地利用空间局部性,但是:

数据块大意味着缺失损失的增大:需要花费更长的时间来装入数据块若块大小相对Cache总容量来说太大的话,命中率将降低:Cache块数太少

一般来说,平均访问时间 = 命中时间 x 命中率 + 失效损失 x 缺失率。

块替换策略

直接映射:

主存中的一块只能映射到Cache中唯一的一个位置定位时,不需要选择,只需替换

全相联映射:

主存中的一块可以映射到Cache中任何一个位置

N路组相联映射:

主存中的一块可以选择映射到Cache中N个位置

全相联映射和N路组相联映射的失效处理:

从主存中取出新块为了腾出Cache空间,需要替换出一个Cache块不唯一,则需要选择应替出哪块 替换策略

最近最少使用LRU:

满足程序局部性要求有较高命中率硬件实现复杂

先进先出FIFO:

满足时间局部性实现比较简单

随机替换RAND:

实现简单命中率也不太低 多级Cache

采用两级或更多级cache来提高命中率

增加Cache层次增加了用户的选择

将Cache分解为指令Cache和数据Cache

指令流水的现实要求根据具体情况,选用不同的组织方式、容量

在处理器中设置独立的数据Cache和指令Cache;在处理器外设置第二级Cache,甚至是第三级Cache。

CACHE 接入系统的体系结构 侧接法

像入出设备似的连接到总线上,优点是结构简单,成本低,缺点是不利于降低总线占用率。

隔断法

把原来的总线打断为两段,使 CACHE 处在两段之间,优点是有利于提高总线利用率,支持总线并发操作,缺点是结构复杂,成本较高。

一致性保证策略(MESI)

修改态(M):处于这个状态的cache块中的数据已经被修改过,和主存中对应的数据已不同,只能从cache中读到正确的数据。

独占态(E):处于本状态的cache块的数据和主存中对应的数据块内容相同,而且在其它cache中没有副本。

共享态(S):处于本状态的cache块的数据和主存中对应的数据块内容相同,而且可能在其它cache中有该块的副本。

无效态(I):处于本状态的cache块中尚未装入数据。

两级Cache块的状态转换

L2监听到其它总线主设备写请求,并要求该设备等待;L2将要被写的地址传给L1,如果L1中的数据在一次写之后有了新的修改(状态为M),则需要将L1中该块的数据写回到主存中。任何情况下,都将该块的状态标记为非法态(I)。如果L1中的数据与L2相同,则无须L1将数据写回主存中,而只要L2把自己的块的内容写回即可。但还是要把该块的状态标记为非法态(I)。L2唤醒总线主设备,由它完成写操作。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有