首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ARM系列-CHI(二)

在前面介绍了一些基本概念,接下来具体看看。我们再来回顾一下CHI的分层,协议层(protocol)、网络层(network)和链路层(link)。在协议层,通信是基于transaction;在网络层,基于packet;链路层,基于flit。

先来看看协议层的transaction,可以分为以下几类(CHI.D):

ReadNoSnp, ReadNoSnpSep

ReadOnce

ReadOnceCleanInvalid

ReadOnceMakeInvalid

ReadClean

ReadNotSharedDirty

ReadShared

ReadUnique

Dataless

Write

WriteNoSnpPtl, WriteNoSnpFull

WriteUniquePtl, WriteUniqueFull

WriteUniquePtlStash, WriteUniqueFullStash

WriteBackPtl, WriteBackFull

WriteCleanFull

WriteEvictFull

Atomic

AtomicStore

AtomicLoad

AtomicSwap

AtomicCompare

Snoop

Other

DVMOp

PrefetchTgt

PCrdReturn

看着挺多的,我们现在不需要全都记住,只记住分为几大类就好了。等到讲CHI一致性协议时还会提及。

现在我们知道了,一个RN会产生transaction(read,write,maintenance)给HN;HN接收,并对RN发来的请求进行排序,产生transaction给SN;SN接收这些请求,返回数据或者响应。

问题来了,transaction如何在系统中的节点间路由呢?首先,CHI协议规定,系统中的每个节点必须有一个节点号(Node ID)。系统中的每个RN和HN内部要有一个系统地址映射(System Address Map,以后简称SAM),负责把地址转换成目标节点的ID。也就是说,RN的SAM负责把物理地址转换成HN的ID;而HN的SAM需要把物理地址转换成SN的ID。看下图的一个简单例子:

RN0根据内部的SAM知道要把请求发给HN0(TgtID是HN0,SrcID是RN0);

HN0在通过内部的SAM知道要继续发给SN0(ReturnNID是RN0);

SN0接收请求,返回数据(HomeNID是HN0,TgtID从HN0的ReturnNID而来);

RN0接收到SN0的数据响应,返回CompAck给HN以结束此次transaction(TgtID是HN0,从HomeNID而来)。

如果考虑到remap和retry,会复杂一点,感兴趣的去看spec的3.4章节(我只分析简单的情况,哈哈)。

SAM必须可以对系统的全部地址空间进行解码。CHI协议建议,对于没有相应物理组件的地址访问,都发送给一个agent,该agent可以对这些无用地址的访问提供恰当的error响应。SAM的结构和格式是由具体实现决定的,在CHI协议中并没有规定SAM实现方式。每一个连接到ICN端口的组件都会被分配一个node ID,用于标识ICN上packets路由的源节点和目的节点。一个端口可以有多个node ID,但是一个node ID只能分配给一个端口,通俗点讲就是这个ID必须是唯一的,路由的时候不能有歧义。CHI协议支持的NodeID字段宽度在7~11bits之间,由具体实现决定,且一个系统中所有组件的NodeID字段宽度必须一样,至于每个组件的NodeID值也是由具体实现决定的。

解决了节点间路由的问题,那么节点间是怎么传输的呢?我们知道在AXI和ACE协议中,处理器和ICN,或者ICN与从设备之间的数据传输是通过通道(channel)完成的,同样在CHI中也有通道的概念。

CHI的通道,有收/发两个方向,在发送方向上,有三个通道分别是REQ,WDAT和SRSP;在接收方向上也是三个通道,分别是CRSP,RDAT和SNP。对于SN来说,因为不需要支持snoop操作,所以减少了SRSP和SNP。

REQ通道上:read/write command,cache maintenance,DVM request

SNP通道上:snoop command,DVM operation

DAT通道上:read/write data,snoop response,read response

RSP通道上:write/maintenance/completion response,dataless snoop response …

现在,transaction通信的基本问题已经解决,下周我们再来看其它的问题吧。

【未完】

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230218A063S300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券