cache合并

合集下载

cache原理

cache原理

cache原理
Cache(缓存)是一种计算机系统的重要组成部分,它可以大幅提升计算机系统的性能。

下文将对Cache的基本原理、Cache的结构以及Cache的实现方式进行论述。

一、Cache的基本原理
Cache通常位于CPU和主内存之间,是一块较小的高速存储器。

它的作用是为了减少CPU访问主内存的次数,提高存取速度。

Cache 的原理是使用特定的技术在CPU和主内存之间建立一个缓冲层,用以缓存CPU访问过的数据。

由于Cache的存储容量远远小于主内存,因此Cache通常只能把用户最近访问、最频繁访问的数据缓存起来,从而加快数据的存取速度,提高CPU的处理性能。

二、Cache的结构
Cache由内存块、标签存储器和替换算法三部分组成。

内存块主要存放缓存数据,标签存储器用于记录内存块中缓存数据的地址、标签信息以及有效位,替换算法用于当内存块满时选择一块内存块将其替换出去。

三、Cache的实现方式
Cache的实现方式主要有两种:直接映射和全相联映射。

直接映射是将主存中的数据一一映射到Cache中,只要知道主存中数据的地址,就可以直接找到Cache中的数据;而全相联映射则在Cache中设置一组控制位,将主存中的数据按照统一的算法映射到Cache的几个块中,在进行Cache搜索时,先查找控制位,再查找Cache中的数据,
以确定数据是否在Cache中。

四、总结
以上是Cache的原理和实现方式,Cache能有效的加快CPU的存取速度,提高处理性能。

只要掌握Cache的基本原理,就可以灵活运用,从而更好的提升计算机系统的效率。

一种面向写穿透Cache的写合并设计及验证

一种面向写穿透Cache的写合并设计及验证
0 2 3mm 流 片后 工作 主频 为 10MHz .6 , 0 .
关键 词 :写 穿透 ; 写合 并 ; 处理 器 ; 同步读 写存储 器; 写效 率 读 中图分 类号 :TP 0 文献标 志码 :A 文 章编 号 :0 5 - 8 X( 0 0 0 -0 10 32 2 39 7 2 1 ) 40 0 —4 A r t a e c n s g n r fc to o r t - W ie Co ls i g De i n a d Ve ii a i n f r W ie Thr u h Ca he og c
M ElK u z i L1Gu h i ZHANG n ih 。 o u , Bi
( n tt t fArica n el e c n b t s I siu eo tf ilI tli n ea d Ro o i ,Xia io o gU nv r iy i g c n Ja t n iest ,Xi n 7 0 4 1 0 9,Chn a ia)
存 与 内存 的数据 一致性 策略 . 寄存 器传输 语 言( TL 仿真 环境 下使 用 mp 在 R ) 3解码 对 L o 2处理 器 en
进行 数据 测试 , 果表 明 : 结 在缓 冲 区优 化 为 3行 8列 的 参数 下 ,DR S AM 每 次行 开启 平 均进 行 78 . 个 字的写入 操作 , 外存 的读 写 效 率 由 1 提 高到 1 ; TS . 8p . 艺下 , 2 A 0 9 在 MC 0 1 t y m - 综合 后 面 积 为
r w r - h r e n h c e sn fii n y i c e s s f o 1 t 9 o p e c a g ,a d t e a c s i g e fce c n r a e r m 2 o 1 a 0 Hz a d t a t1 0 M , n h t

CACHE的一些基本概念

CACHE的一些基本概念

在CACHE中发现一个位置,并把新的cache数据存到这个位置的过程。

这个处理过程可能包括evicting(驱逐)cache中已存在的数据,从而为新的数据腾出空间。

Associativity指每个Set(集)里包含的line frames(行帧)数。

也就是cache的way(路)数。

Capacity miss容量失效因为cache的容量限制,导致不能包括一个程序的整个working set(工作集),从而造成cache失效。

这是三个cache失效原因(容量、强制、冲突)之一。

Clean干净一个有效的cache行,它的内容没有被更高层内存或CPU修改写过,我们称这个cache行是“干净”的,显然相反状态是dirty(“脏”)Coherence一致性如果读内存任意地址的数据返回的总是这个地址的数据最近的更新,我们说内存系统是一致的。

存取指CPU和EDMA等的存取。

Compulsory miss强制失效有时称为首次引用失效。

强制失效是一种肯定发生的一种失效,因为数据事先从没有使用过也就没有机会被cache。

但有些情况也被称为强制失效,尽管它们不是第一被引用的数据,比如对非写定位的cache进行同一位置的重复写,以及对一个不被cache内存区域的存取。

这是三个cache失效原因(容量、强制、冲突)之一。

Conflict miss 冲突失效由于Associativity的限制导致的而非容量限制造成的cache失效。

Direct-mapped cache直接映射cache直接映射cache映射低层内存的每个地址到cache的一个单一位置。

这样低层内存的多个地址可能被映射到cache中的同一位置上。

它相当于1-way set-associative cache。

对writeback回写cache,写到达多级存储结构的某一层,并更新这一层内容,但并不更新更低层的内存,这样,当一个cache行有效并包含更新后的数据,但却不更新下一更低层的内存,我们说这个cache是“脏”的,显然一个有效行的相反状态是“干净”。

组相联和全相联的cache基本替换原则

组相联和全相联的cache基本替换原则

组相联和全相联的cache基本替换原则以组相联和全相联的cache基本替换原则Cache是计算机中常见的一种高速缓存技术,用于存储处理器经常访问的数据。

为了提高cache的效率和性能,需要对其进行替换。

替换策略是指在cache中存储数据时,如果cache已经满了,需要决定哪些数据需要被替换出去,以腾出空间存储新的数据。

在cache中,有两种基本的替换策略:组相联和全相联。

组相联替换原则组相联替换原则是指在cache中,将cache划分为多个块组,每个块组包含多个缓存块。

在块组中,每个缓存块都有一个标记,用来标识块组中存储的数据。

当cache满了时,需要替换数据时,会先确定要替换的块组,然后在该块组中选择要替换的缓存块。

组相联替换原则的主要优点是空间效率高,因为一个块组可以存储多个缓存块。

此外,由于cache中的数据是按块组存储的,因此在访问相邻的缓存块时,可以利用块组中的数据,从而提高cache的效率。

但是,组相联替换原则也有一些缺点。

首先,由于cache是按块组存储的,因此在访问不同块组中的数据时,需要进行额外的寻址操作,从而降低cache的效率。

其次,由于cache中的数据是按块组存储的,因此当多个块组中的数据需要被替换时,会产生冲突,从而降低cache的效率。

全相联替换原则全相联替换原则是指在cache中,所有缓存块都可以相互替换。

在全相联替换中,每个缓存块都有一个标记,用来标识存储在cache 中的数据。

当cache满了时,需要替换数据时,会在所有缓存块中选择一个可用的块,用来存储新的数据。

全相联替换原则的主要优点是效率高,因为所有缓存块都可以相互替换。

此外,由于cache中的数据是按照标记存储的,因此在访问cache中的数据时,可以直接进行寻址操作,从而提高cache的效率。

但是,全相联替换原则也有一些缺点。

首先,由于所有缓存块都可以相互替换,因此在访问不同的数据时,需要进行额外的寻址操作,从而降低cache的效率。

适用于嵌入式系统的slab分配器的设计与实现

适用于嵌入式系统的slab分配器的设计与实现

适用于嵌入式系统的slab分配器的设计与实现随着硬件技术的发展和内存容量的扩大,操作系统中内存管理技术日趋完善。

但是在嵌入式领域中,硬件性能和内存容量远远落后于PC机,其内存管理受到多种因素制约,若直接采用操作系统中的内存管理技术,不仅难以达到预期效果,而且会影响嵌入式系统的性能。

在嵌入式系统内存管理设计过程中,发现操作系统中的slab分配器虽然在PC机上有良好的性能,但是在嵌入式系统中不但不能发挥其优势,还降低了系统的整体性能。

本文通过分析,指出了slab分配器的不足,并给出相应的解决方案。

实验结果表明,slab分配器经过改进可适用于嵌入式系统。

1 slab分配器分析操作系统内核运行时会频繁地为某些对象分配内存空间,而这些对象往往只需要几十或几百KB的空间,如果直接采用页面管理器进行内存分配,将产生很多内存碎片,造成严重的内存浪费。

slab分配器支持细粒度的内存分配,较好地解决了此问题。

由于性能优越,slab被Linux、FreeBSD等操作系统采用,是目前应用最广的内核内存管理器之一.1.1 slab分配器设计思想基于页面分配器,将一页或几页的内存组织起来,划分成一定数量的小块内存,这种连续的页面称之为slab.它为内核中使用频繁的对象建立专门的缓冲区(cache),每种类型的对象都有自己专用的cache一个cache管理着多个slab,每个slab又管理着多个对象。

slab的大小与所管理对象的大小有关。

根据slab管理对象的分配情况,可将每个cache中的slab分为3类:(1)slab管理的对象已经完全分配,没有空闲的对象;(2)slab管理的对象部分分配,还有部分空闲对象;(3)slab中的对象都未分配,都是空闲对象。

不同的slab分别放入不同的队列中,即每个cache管理3个slab队列,cache与cache之间的关系如图1虚框①内所示,cache与slab的关系如图1虚框②内所示。

存储之Cache

存储之Cache

存储之CacheCache存在的意义:根据局部性原理,对于当前访问的存储位置,接下来,它很可能会被多次访问(时间局部性),它的相邻位置也可能会被访问(空间局部性)。

由于访问内存的速度远⼤于访问寄存器,所以在⼆者之间设置cache,来暂存⼀部分指令或数据。

内存:假设每个内存地址有m位,那么共有M=2m个不同的地址,即内存容量为M字节。

如下图所⽰,m位地址划分为t位标记、s位组索引和b位块偏移,⽤于描述该地址所存数据(⼤⼩为byte)的副本在cache中的位置。

Cache:使⽤元组(S,E,B,m)来描述,具体为:S=2s表⽰Cache共有S个⾼速缓存组(cache set)E表⽰每组均有E个⾼速缓存⾏(cache line)B=2b表⽰每⾏均包含⼤⼩为B个字节的⾼速缓存块(block)总容量为C=S∗E∗B个字节特别注意:每个cache line包含两部分,有效位/标记位+⾼速缓存块;通常说line size是指⾼速缓存块的⼤⼩,即B假设指令指⽰CPU从地址A读取⼀个数据,CPU将地址A发送到Cache,如果Cache含有该数据的副本,它将⽴即返回数据给CPU;那么Cache如何找到该数据的呢?组选择,Cache根据地址A中的s位组索引定位到组⾏匹配,Cache根据地址A中的t位标记位定位到⾏(注意:当且仅当该⾏设置了有效位,并且该⾏的t位标记位与地址A的t位标记位完全相同时,该⾏才包含所需数据副本)取数据,Cache根据地址A中的b位块偏移定位到该数据在block中的位置Cache与内存的映射关系⾸先要明确,cache有多个组,每个组有⼀个或多个⾏;内存有多个块,每个块的⼤⼩为B(即line size),块的数量为2m/B;映射关系是内存块与cache line的映射⼀、直接映射⾼速缓存E=1,即cache中每组只有⼀⾏(即查取数据时没有⾏匹配过程)。

⽐如(S,E,B,m)=(4,1,2,4),即cache有4组/4⾏,内存有8块,则映射关系如下:⼆、全相联⾼速缓存S=1,即只有⼀个组;所以,查取数据时没有组选择过程,定位数据副本过程如下:三、组相联⾼速缓存Cache包含多个组,每组⼜有多个⾏,所以查取数据时组选择、⾏匹配都不会少,过程如下:理解关键:以上就是CSAPP对cache的主要描述,此时我们对cache的实现原理已经⽐较清楚了,但是有个很关键且令⼈困惑的问题:⼀直在说查取数据,cache与内存的三种映射关系并没有体现出来!我们在各种资料上常见的三张映射关系图,如何与上述知识对接呢?关键就在于t位的标记位!⾸先,t=m−s−b,它的含义是每⾏(或者说每个cache line)可以与2t=MS⋅B种不同的内存块产⽣映射关系(注意,是种,不是个)。

计算机系统结构(高教版)张晨曦 习题答案 第五章

计算机系统结构(高教版)张晨曦 习题答案 第五章

5.1 解释下列术语多级存储层次:由若干个采用不同实现技术的存储器构成的存储器系统,各存储器处在离CPU不同距离的层次上。

使得靠近CPU的存储器速度较快,容量较小。

整个存储系统的速度接近与离CPU最近的存储器的速度,而容量和每位价格接近于最低层次的容量和价格。

全相联映像:指主存中的任一块可以被放置到Cache中的任意一个位置。

直接映像:指主存中的每一块只能被放置到Cache中唯一的一个位置。

组相联映像:指主存中的每一块可以被放置到Cache中固定的一个组中的任意位置。

替换算法:由于主存中的块比Cache中的块多,所以当要从主存中调入一个块到Cache中时,会出现该块所映像的Cache块位置已经被占用的情况。

替换算法即解决如何选择替换块的问题。

LRU:最近最少使用法。

选择近期最少被访问的块作为被替换的块。

写直达法:在执行“写”操作时,不仅把信息写入Cache中相应的块,而且也写入下一级存储器中相应的块。

写回法:只把信息写入Cache中相应的块,该块只有在被替换时才被写回主存。

按写分配法:在写失效时,先把所写单元所在的块从主存调入Cache,然后再进行写入。

不按写分配法:写失效时,直接写入下一级存储器而不将相应的块调入Cache。

命中时间:CPU所要访问的块在Cache中,确认并取走所花费的时间开销。

失效率:CPU一次访存不命中的概率。

失效开销:CPU一次访存不命中,而额外增加的访存开销。

强制性失效:当第一次访问一个块时,该块不在Cache中,需从下一级存储器中调入Cache。

容量失效:如果程序执行执行时所需的块不能全部调入Cache中,则当某些快被替换后,若又重新被访问,就会发生失效。

冲突失效:在组相联或直接映像Cache中,若不多的块映像到同一组中,则会出现该组中某个块被别的块替换,然后又重新被访问的情况。

2:1 Cache经验规则:大小为N的直接映像Cache的失效率约等于大小为N/2的2路组相联Cache的失效率。

cache工作原理

cache工作原理

cache工作原理1. 概述Cache是计算机系统中的一种高速缓存存储器,用于提高数据访问速度。

它位于主存和CPU之间,用于存储最常用的数据和指令。

Cache工作原理是通过在高速缓存中存储最常访问的数据,以便CPU能够更快地访问这些数据,从而提高系统的整体性能。

2. Cache的结构Cache通常由多级结构组成,其中包括L1、L2、L3等多级缓存。

每一级缓存都有不同的大小和访问速度,越靠近CPU的缓存级别越小且速度越快。

一般来说,L1缓存是最小且最快的,L3缓存是最大且最慢的。

3. Cache的工作原理当CPU需要访问数据时,它首先会检查L1缓存。

如果数据在L1缓存中找到,CPU就可以直接从缓存中读取数据,这样可以大大提高访问速度。

如果数据不在L1缓存中,CPU会继续检查更大的L2缓存,以此类推,直到找到数据或者最后一级缓存。

如果数据在任何一级缓存中找到,CPU会将数据加载到更靠近CPU的缓存级别中,并从缓存中读取数据。

如果数据在所有缓存中都找不到,CPU将从主存中读取数据,并将其加载到L1缓存中,以备将来的访问。

4. Cache的命中和未命中当CPU在缓存中找到所需的数据时,称为“命中”。

如果数据不在缓存中,称为“未命中”。

命中率是衡量缓存性能的重要指标。

高命中率意味着大部分数据都能够从缓存中读取,从而提高系统性能。

未命中率高则意味着缓存无法满足CPU的需求,导致频繁从主存中读取数据,降低系统性能。

5. Cache的替换策略当缓存满时,如果需要将新的数据加载到缓存中,就需要替换掉一部分已有的数据。

常用的替换策略有最近最少使用(LRU)、随机替换等。

LRU策略是指替换最近最长时间未被访问的数据,以便为新的数据腾出空间。

6. Cache的写策略Cache的写策略包括写回(Write Back)和写直达(Write Through)两种方式。

写回策略是指当CPU修改缓存中的数据时,只会更新缓存数据,不会立即写回主存,而是等到缓存被替换出去时才写回主存。

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

Cache学习5.1 Cache的必要性问题:在多层次存储器结构中,距离CPU越远,访问容量越大,访问速度越慢。

解决采用存储器层次结构,实现大容量、快速存储器。

每一层比下一层有更小的存储空间、更快的读写速率,价格与最便宜的一层一致,层与层之间是子集关系。

桌面处理器:一次为单个用户运行一个程序,需要考虑存储器层次结构带来的延迟问题,阻止程序间数据混淆。

服务器:同时为成千上百个用户执行大量应用程序,导致更多的环境切换,因此服务器还需要存储带宽问题,兼顾防止一个用户访问其他用户的数据。

嵌入式:首先,用于实时处理,要考虑最坏情况时的性能,Cache能提高平均性能,但是会降低最坏情况的性能。

其次,嵌入式关注功耗和平均寿命,需要减少硬件,与扩展硬件提高存储性能方法相悖。

第三,嵌入式操作系统一般非常简单,可不考虑存储层次保护机制。

最后,嵌入式处理器内存小,常常不需要磁盘存储。

5. 2 Cache知识回顾名词:Cache命中,Cache缺失,块,页、页缺失。

层次名称:寄存器,Cache,—(块)一内存,一(页)一磁盘5. 2. 1 Cache性能回顾CPU暂停工作、等待一次存储器访问的周期数成为存储器停顿周期数,其性能可以表不为:CPU执行时间二(CPU时钟周期数+存储器停顿周期数)X缺失代价假设CPU时钟周期包含了处理Cache命中和Cache缺失时CPU停止的时间,存储器停顿周期数可以表示为:存储器停顿周期数二缺失次数X缺失代价二执行指令数X缺失次数/指令数x缺失代价二执行指令数X存储器访问次数/指令数X缺失率X缺失代价一般缺失率可用硬件Cache仿真器来测量。

通常情况下,一般采用每千条指令的缺失次数来计算。

5.2.2 Cache层次存储4个问题Q1:一个块,会放在哪里?直接映射:每个块在Cache中只能出现在唯一位置上,映射方法:(块地址)mod (Cache中的块数)全相联映射:一个块可以放到cache中任何一个地方。

组相联映射:一个块放到一个受限的组里。

一个块首先映射到到一个组中,可以放到组中任何一个块中。

组通常用为选择方式确定:(块地址)mod ( cache中的组数)如果一个组里有n块,这种映射方法称之为n路组向联。

直接映射是一个简单的1 路组相联。

全相联是只有1组的m路组向联映射。

Q2:怎样找到cache中的块?Cache地址分为块地址与偏移地址;块地址又分为标志字段与索引字段。

偏移地址用来选择块中所需要的数据;索引字段用来选择组,通过标志字段来判断是否发生命中,无需判断块内偏移与索引字段。

增加相联度会增加组内的块数,组数减少导致索引段减少,标识字段增加,最后变成全相联,不存在索引字段。

Q3:没有命中,块怎样替换?直接映射法:直接替换没用命中的检查的块。

全相联或组相联,需要多个块做出选择。

大容量时3中方法区别不大,小容量时LRU最优:随机替换(Random):利用伪随机数块号,尤其适用于硬件调试。

最近最少使用(LRU):记录块的访问次数,利用历史信息替换掉最长时间没有使用的cache块。

先进先出(FIFO )oQ4:写操作时cache会发生什么?一般来说,CPU需要等待读操作完成,不需要等待写操作完成,且块标志与数据同时读出,舍弃没有命中的信息可提高速率,嵌入式系统不允许无用工作。

对写操作不能进行如此优化,因为只有标识为有效时,块才能被修改。

2中基本的写策略:写直达(write through):信息同时写入cache和更低一层的存储器的块中。

易实现,写直达方法中读操作缺失发生时cache始终是干净的,因此不需要对低层存储器进行写操作,常与不按写分配(no-wr ite al locate)配合。

写回法(write back):信息只写入cache o只有cache中块被替换,信息才会写回到主存中。

写操作与cache速度一致,且一个块一次写入仅仅需要对下层存储器的一次写操作,因此需要较小的带宽,可用于多处理器的服务器系统。

常与写分配(wCte a I locate)配合。

写操作缺失时,通常策略如下:写分配(write a I I ocate)内存读到cache,执行命中前面写命中时的操作。

与读缺失类似。

不按写分配(no-wr i te a 11 ocate),仅修改低层存储器中的该块,不将该块写入cache 中,直到程序要读一个块时,该块才被取到cache中。

Cache可以提供指令与数据,但存在瓶颈,例如同时执行一条载入指令与存储指令,单独的cache会产生资源冲突,产生停顿。

最简单的方法是将cache划分为指令cache与数据cache。

指令cache比数据cache有更低的缺失率,但分立的指令cache与数据cache缺失率之和比相同容量的cache更大。

5. 3 Cache 性能5. 3.1平均存储器访问时间指令数可以用来评价CPU的性能,缺失率可以评价存储器层次结构的性能,但也会产生误导,可用平均存储器访问时间来评定:平均存储器访问时间二命中时间+缺失率缺失代价虽然降低最小平均存储器访问时间是一个合理的目标,但是最终目标时降低CPU执行时间,两者时有区别的。

例如在2路组相联情况下,虽然缺失率与平局存储器访问时间较低,但进行组内多路选择时CPU时钟周期也会增加,导致CPU执行时间变长。

一般观点,把命中时钟周期数包含到CPU执行时钟周期数种。

Cache的行为会对较低CPI与较快时钟频率的CPU产生双重影响:1. CPI较低时,cache缺失时钟数会对CPU时间产生较大影响。

2•计算CPI (cache缺失情况)时,cache缺失代价用缺失时花费的CPU时钟周期数来度量。

因此,对于存储器层次结构相同的计算机,CPU频率越高,每次缺失就需要更多的时钟周期数,因此CPI花费在存储器部分的周期就较多。

5.3.2缺失代价与乱序执行处理器乱序执行(out-of-order execution) : CPU允许将多条指令不按程序规定的顺序分开发送给各相应电路单元处理的技术。

这样将根据各电路单元的状态和各指令能否提前执行的具体情况分析后,将能提前执行的指令立即发送给相应电路。

重新定义存储器停顿周期:存储器停顿周期数缺失次数指令数指令数(全部缺失延迟-重叠缺失延迟)一般确定延迟时间的方式有3种:从存储器指令进入指令窗口的时刻算起;或是从地址产生的时刻算起;或是从指令实际被送到存储器的时刻算起。

只要使二指令数(每条指令访问存储器次数缺失率)缺失代价4.CPU执行时间:=c PU时钟周期数+存储器停顿周期时钟周期时间存储器停顿周期c P I执行+时钟周期时间指令数缺失次数缺失代价c PI执行+时钟周期时间指令数存储器访存次数c PI执行+缺失率缺失代价时钟周期时间指令数存储器访存次数指令数为平均每条指令的访存次数5.对于乱序执行处理器的平均每条指令的停顿周期数:存储器停顿周期数指令数二平均每条指令的缺失次数总的缺失延迟-重叠的缺失延迟缺失次数总指令数的缺失延迟■重叠的缺失延迟用一致,任何一种方式都行。

1.索引长度确定:in dex C3Ch Q2二块容量X组相联度2.平均存储器访问时间:平均存储器访问时间二命中时间+缺失率缺失代价3.存储器停顿周期:二缺失次数缺失代价缺失次数“ Ww指令数二指令数每条指令缺失次数缺失代价存储器访问次数缺夫平)以失代价指令数二指令数二指令数二指令数5. 4降低Cache缺失代价5. 4. 1 多级cache此为降低缺失代价中最重要的方法。

在原cache存储器之间加一级cache,第一级cache可以小到足以与快速CPU运行时钟相匹配,第二级cache可以大到足以捕捉到对主存的大多数访问,从而减少缺失代价。

缺失代价重新定义为:平均存储器时间二命中时间□+缺失率□缺失代价"其中,第一级cache缺失代价为:缺失代价L1二命中时间L2+缺失率L2缺失代价L2局部缺失率:这一级cache的缺失数与这一级cache的访存总数;第一级cache 中,等于缺失率「;第二级中,等于缺失率L2。

全局缺失率:这一级cache的缺失数与CPU产生的访存总数;第一级中,等于缺失率L 1 ;第—级中,存于缺失率L1缺失率L2O第二级局部缺失率比较大,因为第一级cache存储数据是最易命中的,所以全局缺失率是一个更有用的度量方法。

此时每条指令的缺失次数重新提出:每条指令的平均存储器停顿周期二每条指令缺失次数命中时间L2+每条指令缺失次数L2缺失代价L2首先,可以选择价高相联度来降低第二级缺失率,可降低缺失代价。

其次,多级包含的存储器结构便于检查I/O 口与cache之间的一致性,但缺点是,当二级cache发生缺失时,要保证与之对应的一级cache块无效,从而会导致一级cache缺失率略微升高。

当二级cache只比一级cache大一点时,可以采用多级互斥(multi level exclusion) o—级cache缺失时只会导致两者之间进行对应的块互换,而不是用第二级cache中的块去替换一级cache中的块,防止二级cache空间浪费。

5. 4.2关键字优先和提前启动给予CPU在某一个时刻只需要块中的一个字,不必要等全部块装入便可启动CPU, 具体如下:关键字优先:首先向存储器请求缺失的字,然后它一旦到达便把它发给CPU,使得CPU在装入其他字的同时能够继续执行其他指令。

提前重启动:以正常顺序获取字,块中所需字一旦到达,立即发给CPU,使得CPU继续执行。

通常这些技术适用于大cache块设计,否则收益甚微。

5. 4.3确定读缺失对写的优先级例如写缓存区中可能包含读缺失时所需要的更新数据,此时最简单的方法是读缺失等待、直到写缓存为空为止。

另一种方案时读缺失时查看缓存的内容,如果没有冲突且存储器系统可以访问,就让读缺失继续。

一般后者多用。

写回法的cache中,处理器的写开销也可以降低。

当读缺失发生时,脏块将被代替。

我们可以把脏块复制到一个缓存区后就读下一层的存储器,而不是先把脏块写入下一层存储器,然后再对下一层存储器进行读操作。

这样可以很快的完成读操作。

5. 4.4合并缓冲区所有的存储都必须放到较低一级的存储层次上,因此写直达的cache也依靠写缓冲。

写缓冲为空时,从CPU角度来说,将被替换掉的数据和地址都放到写缓冲中,写操作就结束;写缓冲区将数据写回内存时,CPU可继续工作。

如果写缓冲里还有其他数据被修改过,检查地址,看新数据地址是否与缓冲区的某一项地址相匹配。

如果匹配,新数据合并到该项中,此过程曾为“写合并” o写缓冲满、且地址不能匹配,cache与CPU必须等待,直到缓冲区空出一个项。

因为一次写多个字比一次写一个字速度更快。

5. 4. 5 牺牲cache保存被替换掉的块,以便下一次使用。

相关文档
最新文档