【Computer Organization笔记21】高速缓存 Cache :多路组相联的地址映射、一致性、缺失、MESI协议 | 您所在的位置:网站首页 › 三种映射方式的优缺点 › 【Computer Organization笔记21】高速缓存 Cache :多路组相联的地址映射、一致性、缺失、MESI协议 |
本次笔记内容: 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中任何一个位置N路组相连映射 主存中的一块可以选择映射到Cache中N个位置全相连映射和N路组相连映射的失效处理 从主存中取出新块为了腾出Cache空间,需要替换出一个Cache块不唯一,则需要判断应替出哪块 一致性保证写直达(Write through) 强一致性保证,效率低在Cache中命中:同时修改Cache和对应的主存内容没有在Cache中命中:写分配(Write allocate)、非写分配(not Write allocate )拖后写(Write back) 弱一致性保证,替换时再写主存:主动替换、被动替换通过监听总线上的访问操作来实现实现复杂,效率比较高 Cache写(命中时)
平均访问时间 = 命中时间 x 命中率 + 缺失损失 x 缺失率 提高命中率缩短缺失时的访问时间提高Cache本身的速度 Cache缺失的四类原因必然缺失(Compulsory Miss): 开机或者是进程切换首次访问数据块容量缺失(Capacity Miss): 活动数据集超出了Cache的大小冲突缺失(Conflict Miss): 多个内存块映射到同一Cache块某一Cache组块已满,但空闲的Cache块在其他组无效缺失: 其他进程修改了主存数据 对策必然缺失: 世事总有缺憾如果程序访问存储器的次数足够多,也就可以忽略了策略:预取容量缺失: 出现在Cache容量太小的时候增加Cache容量,可缓解缺失现象冲突缺失: 两块不同的内存块映射到相同的Cache块对直接映射的Cache,这个问题尤其突出-增加Cache容量有助于缓解冲突 增加相联的组数有助于缓解冲突 影响Cache缺失率的因素
一般来说,数据块较大可以更好地利用空间局部性,但是: 数据块大意味着缺失损失的增大:需要花费更长的时间来装入数据块若块大小相对Cache总容量来说太大的话,命中率将降低:Cache块数太少
直接映射: 主存中的一块只能映射到Cache中唯一的一个位置定位时,不需要选择,只需替换全相联映射: 主存中的一块可以映射到Cache中任何一个位置N路组相联映射: 主存中的一块可以选择映射到Cache中N个位置全相联映射和N路组相联映射的失效处理: 从主存中取出新块为了腾出Cache空间,需要替换出一个Cache块不唯一,则需要选择应替出哪块 替换策略最近最少使用LRU: 满足程序局部性要求有较高命中率硬件实现复杂先进先出FIFO: 满足时间局部性实现比较简单随机替换RAND: 实现简单命中率也不太低 多级Cache采用两级或更多级cache来提高命中率 增加Cache层次增加了用户的选择将Cache分解为指令Cache和数据Cache 指令流水的现实要求根据具体情况,选用不同的组织方式、容量
像入出设备似的连接到总线上,优点是结构简单,成本低,缺点是不利于降低总线占用率。 把原来的总线打断为两段,使 CACHE 处在两段之间,优点是有利于提高总线利用率,支持总线并发操作,缺点是结构复杂,成本较高。 修改态(M):处于这个状态的cache块中的数据已经被修改过,和主存中对应的数据已不同,只能从cache中读到正确的数据。 独占态(E):处于本状态的cache块的数据和主存中对应的数据块内容相同,而且在其它cache中没有副本。 共享态(S):处于本状态的cache块的数据和主存中对应的数据块内容相同,而且可能在其它cache中有该块的副本。 无效态(I):处于本状态的cache块中尚未装入数据。 两级Cache块的状态转换 |
CopyRight 2018-2019 实验室设备网 版权所有 |