CACHE一些概念

Allocation 分配

在缓存(Cache)中发现一个位置,并把新的缓存(Cache)数据存到这个位置的过程。这个处理过程可能包括驱逐(evicting)缓存(Cache)中已存在的数据,从而为新的数据腾出空间。

Associativity 关联

指每个集(Set)里包含的行帧(line frames)数。也就是缓存(Cache)的路(way)数。

Capacity Miss 容量失效

因为缓存(Cache)的容量限制,导致不能包括一个程序的整个工作集(working set),从而造成缓存失效。这是缓存(Cache)失效的三个原因(容量、强制、冲突)之一。

Clean 干净

一个有效的缓存(Cache)行,它的内容没有被更高层内存或处理器修改过,我们称这个缓存行是干净的(“Clean”),相反状态是脏的(“dirty”)。

Coherence 一致性

如果读取内存任意地址的数据时,返回的总是这个地址的最新数据,我们说内存系统是一致的。存取指CPU和EDMA等对内存的存取。

Compulsory Miss 强制失效

有时称为首次引用失效。强制失效是一种肯定会发生的失效,因为数据事先从来没有被使用过,也就没有机会被缓冲。但有些情况也被称为强制失效,尽管它们不是首次被引用的数据,比如对非写定位的缓存进行同一位置的重复写,以及对一个不被缓冲的内存区域的存取。这是三个缓存失效原因(容量、强制、冲突)之一。

Conflict miss 冲突失效

由于关联性(Associativity)的限制导致的而非容量限制造成的缓存失效。

Direct-mapped cache 直接映射缓存

直接映射缓存 映射低层内存的每个地址到缓存的一个单一位置。这样低层内存的多个地址可能被映射到缓存中的同一位置上。它相当于 一路集关联缓存(1-way set-associative cache)。

Dirty 脏

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

DMA 直接内存存取

直接内存存取,通常一个DMA操作从一个区域复制一个内存块到另一个区域,或在外设和内存之间传输数据。对C64x DSP,DMA传输使用EDAM,这些DMA传输与程序执行是并行的。从缓存一致性角度看,EDMA可以看成是另外一个并行处理器。

Eviction 驱逐

从缓存(Cache)移出一个行(line)从而为新的数据腾出空间的过程我们成为驱逐(Eviction)。驱逐(Eviction)可以由用户发出的回写无效(writeback-invalidate)产生,被驱逐的行(line)我们称为驱逐行(victim line)。当驱逐行(victim line)是脏的(“dirty”)的时候,数据必须回写到下一级存储器中,以维持内存的一致性。

Execute packet 执行包

在一个时钟周期里,并行执行的一个指令块,一个执行包可以包含1-8个指令。

Fetch packet 取指包

一个时钟周期里,存取的包含8条指令的指令块。显然一个取指包可以包含多个执行包,这样可能消耗多个时钟周期。

First-reference miss 首次引用失效

是强制失效的一种形式。见强制失效。

Fully-associative cache 全关联缓存

任何内存地址都可以被存储在缓存(Cache)的任何位置。这样的缓存非常灵活,但通常,在硬件上不可实现。这种缓存(cache)同直接映射缓存(Direct-mapped cache)和集关联缓存形成鲜明对比,这两种缓存在定位策略方面有更多的限制,全关联缓存只具有概念上的意义,当分析直接映射缓存和集关联缓存性能时,对区分冲突失效和容量失效是有用的,全关联缓存等价于这样一个集关联缓存:它有line frame个路(Way),仅有一个集(Set)。

Higher-level Memory 高层内存

在多级内存系统中,距离CPU较近的内存称为高层内存。在C64x系统中,最高层内存通常是L1层CACHE,这一层的内存直接同CPU相连。较高层内存通常充当较低层内存的缓存。

Hit 命中

当请求的内存地址的数据在缓存中,我们说缓存命中(Cache Hit)。命中的反义词是miss(失效)。缓存命中使处理器的阻塞时间最短,因为在缓存中取数据要比从原始位置取更快。在某一层内存的“失效”可能在较低层“命中”。

Invalidate 无效

将一个有效行标记为无效行的过程。这相当于废弃了这一行的内容,但并不回写任何更新的数据。当与回写(writeback)组合时,会先将脏(dirty)数据更新保存到有这个地址的低一层内存。这通常用于维持内存的一致性。

Least Recently Used(LRU)allocation 最近最少使用分配

对于集相关(set-associative)和全相关(fully-associative)缓存(Cache),最近最少使用原则被用来在一个集(set)里选择一个行帧(line frame)作为被驱逐的行(line),用来保存新的缓存(Cache)数据。

Line 行

是缓存(cache)处理的最小单位块。显然一个缓存(cache)行的尺寸要比CPU或高层内存存取的数据尺寸要大。例如尽管CPU可以进行单字节的存取,但如果发生一次读失效,则缓存(cache)会将整个缓存(cache)行的数据读入。

Line frame 行帧

缓存(cache)的一个位置,包含一行缓存(cache)数据、一个关联的标签(tag)地址,及这个行的状态信息。状态信息包括这一行是否有效、脏、LRU状态

Line size 行尺寸

一个行的尺寸,单位:字节。

Load through 全装

当CPU请求在第一级和第二级缓存(cache)中都失效时,数据从外部内存获得,同时会存储在第一级和第二级缓存(cache)中,如果一个缓存(cache),它保存数据并同时把数据送到高一层缓存(cache)中,这种缓存(cache)我们称之为全装缓存(load-through cache)。相对于那种首先存储数据到低层然后第二步再把数据送到高层的缓存,这种缓存(cache)可以减少阻塞时间。

Long-distance access 长距存取

CPU对不被缓冲的内存区域数据的存取。显然,这种存取不会影响缓存的状态,但速度会比较慢。

Lower-level memory 低层内存

在多级内存系统中,距离CPU较远的内存称为低层内存。在C64x系统中,最底层内存包括L2以下的外部系统内存和内存映射的外设。

LRU 最近最少使用

表示缓存行(cache line)的最近最少使用的状态信息。

Memory ordering 内存访问排序

即在内存里以什么样的顺序查看内存操作的结果,有时称为连贯性(consistency)。在分级结构的特定层, 强内存访问排序 表示在这一层上不可能以不同于程序排序的顺序来观察内存存取的结果。松散内存访问排序允许内存分级体系结构以不同的顺序看内存操作的结果,注意强排序并不要求系统内存以程序排序顺序操作,而仅仅是使操作的结果在其它请求者看来是与程序序一致的。

Miss 失效

当请求的内存地址的数据不在缓存中,就是说发生了缓存失效。一个缓存失效,会引起请求阻塞,直到行帧被定位,数据从低层内存中获得为止。在某些情况下,比如CPU对L1D出现写失效,阻塞CPU是不必要的。

Miss pipelining 失效流水线处理

处理单一的缓存失效的过程需要多个流水周期。如果对连续的失效处理进行流水线操作,显然就增加了对失效处理的效率,降低了阻塞周期。

Read allocate 读分配

读失效缓存是仅在发生读失效时才在缓存中定位空间并把数据读入。写失效发生时不会发生数据读入到缓存中,而是直接把写数据送到下一层缓存中。

Set 集

行帧(Line frames)的一个集合。直接映射缓存的一个集(Set)包含一个行帧(line frame),N路集关联缓存(N-way set-associative cache)的每个集(Set)包含N个行帧(line frame)。全关联缓存(Full-associative cache)仅有一个集,这个唯一的集包含所有的行帧。

Set-associative cache 集相关缓存

一个集相关缓存(set-associative cache)包含多个行帧用于缓冲低层内存。当为一个新的行数据定位一个空间时,选择哪个行帧是基于缓存的定位策略的。C64x是基于LRU策略。

Snoop 侦测

是低层内存(lower-level memory)查询高层内存(higher-level memory)以确定高层内存是否包含给定地址的数据的一种方法。侦测(Snoop)的主要目的是通过允许低层内存请求高层内存进行数据更新来维持内存的一致性,侦测(Snoop)操作可以触发回写(writeback),或更普通的回写并无效(writeback-invalidate),触发回写并无效(writeback-invalidate)操作的侦测(Snoop)有时又称为侦测并无效(snoop-invalidates)。

Tag 标签

地址高位作为一个标签(Tag)存储在行(line)中,在决定缓存是否命中的时候,缓存控制器会查询标签(Tag)。

Thrash 抖动

当存取操作引起缓存性能遭受严重损坏,我们说抖动缓存了。抖动(Thrash)的原因可以有很多:一个可能是算法在短时间存取太多的数据而很少或根本不重复使用。也就是说工作集(working set)太大。这样的算法将引起非常严重的容量失效。另一种情况是算法重复存取一小组不同地址的数据,这些数据映射到缓存相同的集(Set),这样就人为造成严的冲突失效。

Touch 联系

对一个给定地址的存储器进行操作,我们称之为联系(Touch)那个地址。联系(Touch)也可以指读数组元素或存储器地址的其它范围,定位它们在一个特定层缓存的唯一目的。一个CPU中心环用作联系(Touch)一个范围的内存是为了定位。联系(Touching)一个数组是软件控制预取数据的一种形式。

Valid 有效

当一个缓存行保存从下一级内存取的数据,那么这个行帧就是有效的。无效状态发生在行帧不保存任何数据,或者说还没有被缓冲的数据,或先前缓冲的数据由于某种原因(内存一直性要求、程序要求等)被无效。有效的状态并不表示数据是否已经被修改(其实这有另外的状态来表示,即dirty或clean)。

Victim 牺牲品

从缓存移出一个行,从而为新的数据腾出空间的过程,我们成为驱逐(Eviction)。驱逐可以由用户发出的回写并无效(writeback-invalidate)产生,被驱逐的行我们称为牺牲品。当牺牲行是脏的的时候,数据必须回写到下一级存储器中以维持内存的一致性。

Victim Buffer 牺牲缓冲区

保存牺牲品直到它们被回写的特殊缓冲区。牺牲行(Victim Lines)被移到牺牲缓冲区(Victim Buffer),这样为新的数据腾出空间。

Victim Writeback 牺牲品回写

当牺牲行(Victim Line)是脏的(“dirty”)的时候,数据必须回写道下一级存储器中以维持内存的一致性。我们称这个过程为牺牲品回写(Victim Writeback)。

Way 路

对集相关缓存(set-associative cache),每个集(Set)包含多个行帧(line frames)。每个集(Set)包含的行帧(line frames)数被称为路(Way)。以集(Set)做为行,行帧(line frames)作为列,那么一列的行帧(line frames)集合称为一个路(Way)。例如,一个4-路集相关缓存(set-associative cache)有4个路(Way),每个集(Set)有4个关联的行帧,结果,对于一个可缓冲的内存地址,在缓存中有4个可能的映射位置。

Working Set 工作集

程序或算法就是数据和指令代码的集合。在一个特定时间内被引用的这个集合我们称为工作集(working set)。通常,对于一个算法,我们需要考虑高层内存的工作集,对于整个程序我们需要考虑底层内存的工作集。

Write allocate 写分配

对于一个写分配缓存(write allocate cache),如果发生写失效,就会定位一个空间并将失效的数据读入到缓存中。空间定位按照LRU原则。一旦数据被读入到缓存中,就进行写操作,对写分配缓存(write allocate cache),仅更新当前层的内存,写的数据并不立刻送到下一层更低的内存。

Writeback 回写

将一个有效的但为脏的缓存行回写到较低层内存的过程。回写后的这个缓存行我们称它为干净(“clean”)。回写后的缓存行(cache line)状态依然为有效。

Writeback cache 回写缓存

回写缓存仅修改它自己的写命中的数据,它不会立刻更新下一级较低层内存的内容。数据在将来某时被回写,如:当这个缓存行(Cache Line)被驱逐时,或当低层内存向高层内存侦测(Snoop)这个地址时,当然也可以直接通过程序发送回写(writeback)命令。一个写命中,会引起对应的行被标记为dirty(“脏”),也就是说数据被更新了,但还没来得及更新低层内存。

Writeback-invalidate 回写并无效

将一个有效的但为脏的缓存行回写到较低层内存并将这些缓存行置为无效状态的过程。对C64x,对一组缓存行(cache line)进行回写并无效(Writeback-invalidate)操作时,仅回写那些有效且为脏的缓存行,但却置那一组中的所有缓存行为无效。

Write merging 写合并

写合并(Write merging)是组合多个独立的写操作成一个、位宽更大的写操作。显然这可以改善了内存系统的性能。例如,对C64x CPU,L1D写缓冲在某些情况下(如果它们是对同一个双字地址的写)能合并多个写。

Write-through cache 直写缓存

对于一个直写缓存(write-through cache),能把所有的写直接旁路到较低层内存。缓存(Cache)中永远不包含更新的数据,这样做的结果是缓存行永远不会是脏的(dirty)。C64x的缓存(Cache)并不使用这种缓存(Cache)。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值