CHI 基本概念

目录

CHI 特点

CHI架构

cache一致性:

CHI层次

术语

传输请求类型

一致性实现模型

Coherency model

 Cache state model

组件分类命名

读数据来源


CHI 特点

AMBA第五代协议, ACE协议的进化版。所以的信息传输 用packet的形式完成。

CHI架构

  1. 架构扩展方便
  2. 独立的分层实现, 协议层、网络层、链路层
  3. 基于包传输
  4. HN(Home Node)协调所以的传输请求,包括snoop请求、访问cache和memory
  5. 支持64byte的一致性粒度、Snoop Filter 和 Directory、MESI 和MOESI cache模型、增加Partial 和Empty cache状态。
  6. 支持retry机制来管理协议层资源
  7. 支持端到端的Qos
  8. 可配置的数据宽度来满足系统需求
  9. 支持ARM TrustZone
  10. 低功耗信号,可以使能flit基本门控、组件之间的建断链来支持时钟门控和电源门控、协议层的活动信号来控制电源和时钟

cache一致性:

这种依赖于总线结构,来广播(Broadcast)缓存一致性请求的做法,被称作“嗅探”(Snooping).嗅探协议的最大优点是实现简单,存储开销较小;最大缺点在于拓展性差,并不能用于核心众多的场景:若众多一级缓存都试图独占总线,等待的时间将很长

目录,顾名思义,就是在二级缓存中保存其所有缓存行在各个一级缓存中的状态。当目录能够准确地指示该缓存行被哪些一级缓存所共享时,总线广播就可以避免:二级缓存可以依次向这些一级缓存发出信号,指导它们采取正确的动作。 实现点对点的控制。

MSI协议  每个缓存行都介于M(Modified,有效并且已经被修改的),S(Shared,有效并且只读,干净的),I(Invalid,无效的)这三个状态之间

Daniel J. Sorin将缓存一致性的标准归结为两个性质,这里翻译并解释如下:

  1. 单写者—多读者(Single-Writer-Multiple-Reader invariant,SWMR invariant)性质。在任一时刻对于特定的地址,要不有且仅有一个核心能够读写该地址,要不有任意个核心能够只读地访问该地址。
  2. 数据传递性质(Data invariant)。在任一时刻对于特定地址的读出数据,与最近一次的对于该地址的写入数据相同。

MESI协议  每个缓存行都介于M(Modified,有效并且已经被修改的),E (Exclusive,专有切未被写脏),S(Shared,有效并且只读,干净的),I(Invalid,无效的)这四个状态之间

MOESI协议把缓存行划分为五个状态:M(Modified,有效,写脏,可读写),O(Owned,有效,写脏,只读),E(Exclusive,有效,未写脏,可读写),S(Shared,有效,未写脏,只读),I(Invalid,无效)。

CMO (Cache Maintenance Operation)

OCM (On Chip Memory)

CHI层次

LayerCommunication granularityPrimary function
Protocaltransaction协议层是CHI架构里的最顶层,其功能有:1、在协议节点产生并处理请求与响应;2、定义协议节点允许的cache状态和状态转换;3、定义每个请求类型的传输流程;4、管理协议层的流控;
Networkpacket网络层功能有:1、打包协议层信息;2、确定并增加源节点和目的节点的ID到packet中,确保这些packets能正确在互联线上路由;
Linkflit链路层功能有:1、提供Network devices之间的流控;2、管理链路通道以提供跨网络的无死锁切换

术语

TerminologyExplanation
Transaction一个transaction执行一个单独的操作,如一个transaction可以是读memory或写memory
Message协议层术语,用于定义两个组件之间交换信息的粒度,如Request/Data response/Snoop request,一个数据响应message可能由多个packets组成
Packet端到端跨越interconnect的传输粒度,一个message可能由一个或多个packets组成,每个packet包含有源和目的节点的ID来保证在interconnect上独立路由
Flit最小流控单位,一个packet可以由一个或多个flits组成,对于同一个packet的所有flits在interconnect上传输必须遵循同样的路径,对于CHI,所有的packets都是由一个flit组成
Phit物理层传输单位,一个flit可以由一个或多个phits组成,phit定义为两相邻网络设备之间的一个传输,对于CHI,所有的flits都是由一个phit组成
POSPoint of Serialization,位于ICN内,用于Requests之间的保序
POCPoint of Coherence,一致性节点,用于保证所有访问同一个memory地址的请求都可以得到同一份数据
Downstream cachedownstream cache是以RN的视角定义的,RN的downstream cache可以通过CHI请求访问
RequesterRequester可以指独立产生原始transactions的组件(master),也可以指ICN
CompleterCompleter可以指ICN,也可以是SN
MasterMaster指独立产生原始transactions的组件
Slave通常是一个系统中最下游的agent
Endpointslave的另一个名字,指的是一个transaction的最终目的地
Protocol Credit一个P-credit用于保证completer有能力接收一个transaction
Link layer Credit一个L-credit用于保证另一边的link可以接受不了一个flit
ICNinterconnect的简称,用于协议节点之间的通讯的CHI传输机构,ICN可能也包含协议节点,如HN和MN
IPAintermediate Physical Address,中间物理地址,在两级地址系统中,第一级产生IPA,第二级产生物理地址
RN产生协议transaction,包含读和写
HN位于ICN,用于接收来自RN的协议transaction,完成相应的一致性操作并返回一个响应
SN用于接收来自HN的请求,完成相应的操作并返回一个响应
MN位于ICN,用于接收来自RN的DVM操作,完成相应的操作并返回一个响应
IO Coherent nodeIO一致性节点产生的snoop请求不会导致数据被cache,因此IO一致性节点也不会接收到任何snoop请求
Write-Invalidate protocol该协议是指当RN往一个共享地址写数据时,必须先把所有共享的数据备份都无效掉,然后再进行写操作,CHI采用的就是该协议
In a timely manner协议中没有定义在某个绝对的时间后,某件事必须发生,但是及时发生可以使系统效率更高
Don’t Care表示该域段可以设置为任何值,包括非法值和保留值,任何组件收到的包中如果包含设为Don’t care的域段,都必须忽略该域段
Inapplicable

表示该域段值不会用于信息处理

XPCross point 指内部的交叉点

传输请求类型

CHI issueC 支持的传输类型:

Read request:1. Requester会获得一个数据响应;2. 会导致数据在系统其它agents之间的搬移;3. 会导致Request中cacheline状态的改变;4. 会导致系统中其它Requesters的cacheline状态改变,具体有如下这些request:

ReadNoSnp、ReadOnce、ReadOnceCleanInvalid、ReadOnceMakeInvalid、ReadClean、ReadNotSharedDirty、ReadShared、ReadUnique;

Dataless request:1. Requester不会获得一个数据响应;2. 会导致数据在系统其它agents之间的搬移;3. 会导致Request中cacheline状态的改变;4. 会导致系统中其它Requesters的cacheline状态改变,具体有如下这些request:
CleanUnique、MakeUnique、Evict、StashOnceUnique、StashOnceShared、CleanShared、CleanSharedPersist、CleanInvalid、MakeInvalid;

Write request:1. Requester会提供一个数据响应;2. 会导致数据在系统其它agents之间的搬移;3. 会导致Request中cacheline状态的改变;4. 会导致系统中其它Requesters的cacheline状态改变,具体有如下这些request:
WriteNoSnpPtl、WriteNoSnpFull、WriteUniquePtl、WriteUniqueFull、WriteUniquePtlStash、WriteUniqueFullStash、WriteBackPtl、WriteBackFull、WriteCleanFull、WriteEvictFull;

Atomic request:1. Requester会提供一个数据响应;2. 在有些命令中,Requester会得到一份数据响应;3. 会导致数据在系统其它agents之间的搬移;4. 会导致Request中cacheline状态的改变;5. 会导致系统中其它Requesters的cacheline状态改变,具体有如下这些request:
AtomicStore、AtomicLoad、AtomicSwap、AtomicCompare;

Other request:1. 不会导致系统中任何的数据搬移;2. 用于帮助Distributed Virtual Memory管理;3. 用于读请求提前去给memory controller热身;4. 用于返回P-Credit,具体有如下这些request:
DVMOp、PrefetchTgt、PCrdReturn;

Snoop request:ICN产生snoop request的情况:1. 对来自RN request的响应;2. 内部cache或snoop filter维护操作。Snoop transaction(除了SnpDVMOp)是在RN-F的cached data上操作。SnpDVMOp transaction是在target node上执行DVM维护操作;3. CHI协议允许对Non-snoopable address区间进行snoop;具体有如下这些request:
SnpOnceFwd、SnpOnce、SnpStashUnique、SnpStashShared、SnpCleanFwd、SnpClean、SnpNotSHaredDirtyFwd、SnpNotShareDirty、SnpSharedFwd、SnpShared、SnpUniqueFwd、SnpUnique、SnpUniqueStash、SnpCleanShared、SnpCleanInvalid、SnpMakeInvalid、SnpMakeInvalidStash、SnpDVMOp;

注意:
1、对相同地址,只有前面所有的transactions都已经完成之后,CMO操作才能发送到ICN上;
2、对相同地址,只有前面所有CMO操作都已经完成之后,transaction(除了Evict、WriteEvictFull和PrefetchTgt)才能发送到ICN上;
3、ReadNoSn和ReadOnce可以将读到的数据保留在local cache,但该份数据不在保持一致性;
4、ReadOnceCleanInvalid相对ReadOnce的优点是如果cacheline的数据在近期不会使用,该命令可以将cacheline数据刷到memory去,从而提高cache利用率;ReadOnceMakeInvalid相对ReadOnce的优点是如果cacheline的数据以后都不会使用,该命令可以将cacheline的数据失效掉,从而提高cache利用率且减少不必须要的WriteBack到memory操作。但上述两者命令的invalidation都只是hint,它们的完成并不保证所有cache中的该cacheline拷贝都已经移除了,因此它们不能用于替代CMO命令;
5、CMO操作的ExpCompAck域不能置位,即传输流程中不包含CompAck响应;
6、CopyBack transaction只是将coherent data从cache搬移到下一级cache或memory中,不需要去snooping系统中的其它agents;

一致性实现模型

  • 硬件一致性使得共享memory空间的系统组件不需要执行软件缓存保持来保证cache之间的一致性;
  • 如果两个组件往相同地址的memory发起写操作,这些操作可以被所有的组件以相同的顺序观察到,那么这个memory区域就是一致性的;

Coherency model

图1所示为包含三个master组件的一致性系统,每个master组件包含一份loacl cache和一致性协议节点。CHI协议允许memory数据存放在一处或多处master cache当中。

  • 当需要存数据时,先把所有其它masters的数据备份失效掉,这样一致性协议可以使得所有的masters获取到任何地址的正确的数据值。在存储完成后,其它masters可以获取到新的数据到自己local cache;
  • CHI协议允许(不强求)主存的数据不是实时更新,只有在所有master的cache都不需要该数据备份时,才把数据刷新到主存中;
  • 协议使得master可以确定一份cacheline是否是唯一的或者存在多份拷贝。如果是唯一的,master可以直接改变它的值不需要知会系统中其它masters,如果不是唯一的,master必须使用恰当的transaction知会其它masters;
  • 所有的一致性是以cacheline粒度对齐,cacheline在64bytes对齐存储系统中大小为64bytes;

 Cache state model

为了使得一个组件在访问cache line时,可以确定是否该执行某操作,CHI协议定义了cache state。每个cache state基于如下的cache line特性:

cache statecache line characteristics
Valid,InvalidValid表示该cache line存在于cache中,Invalid表示该cache line没有放在cache中
Unique,SharedUnique表示cache line单独存放于该cache中,Shared表示其它cache中也可能存在该cache line,但不保证一定有
Clean,DirtyClean表示该cache没有责任更新主存数据,Dirty表示该cache line数据相对于主存已经发生了改变,该cache必须确保最终主存的数据被更新
Full,PartialEmpty Full表示cacheline全部byte有效,Partial表示可能只有部分byte有效,不是全部有效;Empty表示没有byte有效;

如下图2所示为7种cache state model,一个有效的cache state名字不是Partial或Empty,而是Full。UC、UD、SC和SD全都是Full cache line状态。

协议节点访问cacheline后所需要执行的动作是根据cacheline state决定的,CHI协议规定的每个cacheline状态如下,一个cache允许只实现如下这些cache state的子集:

  • I:Invalid,该cacheline的数据不在当前cache中;
  • UC:Unique Clean,该cacheline的数据只在当前cache中,且和memory的数据一致,可以不知会其它RN就对该cacheline的数据进行修改。在收到snoop请求时,该cacheline不需要返回数据给HN或fwd data给RN;
  • UCE:Unique Clean Empty,该cacheline的数据只在当前cache中,但是所有的数据都是无效的,可以不知会其它RN就对该cacheline的数据进行修改。在收到snoop请求时,该cacheline必须不能返回数据给HN或fwd data给RN;
  • UD:Unique Dirty,该cacheline的数据只在当前cache中,且和memory的数据不一致,已经被修改过了;如果该cacheline的数据不用了,那需要写回到下级cache或memory;可以不知会其它RN就对该cacheline的数据进行修改。在收到snoop请求时,该cacheline必须返回数据给HN或fwd data给RN;
  • UDP:Unique Dirty Partial,该cacheline的数据只在当前cache中,且和memory的数据不一致,部分被修改且有效;如果该cacheline的数据不用了,那需要和下级cache或memory的数据组成一个完成有效的cacheline;可以不知会其它RN就对该cacheline的数据进行修改。在收到snoop请求时,该cacheline必须返回数据给HN,但不能直接将数据fwd给Requester;
  • SC:Shared Clean,其它cache可能也存在该cacheline的拷贝;该cacheline可能已经被修改了;当不需要该cacheline数据时,cache没有义务必须将该数据写回到memory;必须对其它cache的该cacheline进行无效后,获得U态才能将该cacheline进行改写;在收到snoop请求时,该cacheline在RetToSrc没有置位时不需要返回数据,如果RetToSrc置位,则需要返回数据,可以直接fwd数据给Requester;
  • SD:Shared Dirty,其它cache可能也存在该cacheline的拷贝;该cacheline相对于memory已经被修改了;当该cacheline不需要的时候,cache需要将它写回下游cache或memory;必须对其它cache的该cacheline进行无效后,获得U态后才能将该cacheline进行改写。在收到snoop请求时,该cacheline必须返回数据给HN和fwd data给Requester;

UCE态的获得:有两种情况UCE态发生,a. Requester故意产生UCE态,在Requester对cacheline写数据前,为了节省系统带宽,Requester获得UCE态而不是UC,就可以对该cacheline进行写操作;b. Request切换到UCE态,如果Requester已经有该cacheline的拷贝,且正在申请获取写权限,但是在获得写权限之前该数据已经被失效掉了,这样会使得该cacheline变为UCE态。
UDP态的获得:UDP态获得的前提是当前cacheline为UCE态,然后Request对齐进行partial写,这样就产生了UDP态。

组件分类命名

根据CHI协议节点类型,可以将组件分类命名如下:
RN:Request Node,产生协议transactions,包含读和写,可以进一步分类如下:

componentclassificationFunctions
RNRN-F全一致性请求节点:1、包含硬件一致性cache;2、允许产生所有协议定义的transactions;3、支持所有的snoop transactions
RN-DIO一致性请求节点,支持DVM操作:1、不包含硬件一致性cache;2、可以接收DVM操作;3、可以产生协议定义的一部分transactions
RN-IIO一致性请求节点:1、不包含硬件一致性cache;2、不能接受DVM操作;3、可以产生一部分协议定义的transactions;4、不要求具有snoop功能

HN:Home Node,位于ICN内,用于接收来自RN产生的协议transactions;

componentclassificationFunctions
HNHN-F用于接收所有的请求操作,除了DVM操作:1、POC点,通过监听RN-Fs,管理各Master一致性,完成所有的snoop响应后,发送一个响应给发出请求的RN;2、PoS点,用于管理多个memory请求的顺序;3、可能包含目录或监听过滤,以此来减少大量的snoop request
HN-I处理有限的一部分协议定义的Request请求:1、PoS点,管理访问IO subsystem的顺序;2、不包含PoC点,也不具备处理snoop请求
MN用于接收来自RN发送的DVM操作,完成相应的操作,并返回一个响应

SN:Slave Node,用于接收来自HN的请求,完成相应的操作并返回一个响应;

componentclassificationFunctions
SNSN-F指的是Normal memory,可以处理Non-snoop读写请求、atomic请求、以及这些命令的其它形式、CMO请求
SN-I指的是Peripheral或Normal Memory,可以处理Non-snoop读写、atomic操作、以及这些命令的其它形式、CMO请求

读数据来源

在基于CHI的系统中,读请求的数据可以来自不同的地方,如下图4所示,这些源有:

  • Cache within ICN
  • Slave Node
  • Peer RN-F

对于RN-F或SN返回的读数据,可以发送给HN,HN再转发数据给原始的Requester;也可以直接跳过HN,返回数据给原始Requester,这样可以减少读数据的latency。有以下两种直接返回数据方式:

  • Direct Memory Transfer(DMT):SN直接返回数据给原始的Requester;
  • Direct Cache Transfer(DCT):Peer RN-F字节返回数据给原始Requester;

在DCT中,数据提供者需要通知HN它已经将数据发给原始Request了,在某些情况下,数据提供者也必须发送一份拷贝数据给HN。

版权声明:本文为CSDN博主「谷公子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/W1Z1Q/java/article/details/104119333

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用,关于CHI Stash的信息如下: CHI Stash是用于解决组件系统中的Cache一致性问题的一种方案。在组件系统搭建起来后,会遇到Cache一致性的问题。为了解决这个问题,可以使用CHI Stash来保持Cache的一致性。CHI Stash是基于解决Cache一致性方案的基本读写操作之一。 在测试场景中,CHI Stash会对数据进行存储和转发。当RNI进行stash操作时,数据会被存储在离RNF最近的HNF中。同时,CHI Stash还会进行数据的更新和转发,以保持Cache一致性。通过使用CHI Stash,可以提高系统的性能,并增强功能。 总之,CHI Stash是一种用于解决组件系统中Cache一致性问题的方案,它可以对数据进行存储、更新和转发,以保持Cache的一致性,并提高系统的性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [CHI 学习思路---CHI到底是干嘛的,有什么用](https://blog.csdn.net/q876507447/article/details/117674831)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [CHI和ACE5-LITE的stash问题](https://blog.csdn.net/weixin_45270982/article/details/123841332)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值