CHI链路层

本节描述链路层(Link Layer)用于提供节点之间在Links上的packet传输通讯。Link layer定义了:

  • Packet and flit formats.
  • Flow Control across a link.
    图1为基于link通讯的典型系统
    在这里插入图片描述
    图1 System using link based communication

Link通讯是在transmitter和receiver之间的,在transmitter和receiver之间的连接称为link,如图2所示。
在这里插入图片描述
图2 Two-way link communication

Flit是链路层的基本传输单位,packets被转换成多个filts并通过link传输。有以下两种类型的flits:

  • Protocol flit:Protocol flit的payload携带protocol packet。在CHI协议里,每个protocol packet映射到一个protocol flit;
  • Link flit:Link flit携带的messages用于维护link。例如:在断链的过程中,transmitter使用link flit返回Link Layer Credit(L-Credit)给receiver。Link flits来源于transmitter,终结于另一边link的receiver。

主要分为以下几小节来阐述链路层知识。

1.Channel and Port

1.1 Channel

CHI协议中,Link Layer提供了一组通道用于flit通讯,每个通道有确定的flit格式,每个通道拥有很多域,且有些域的宽度可以有多重可选值。表1为link层RN和SN采用的各个通道。
表1 Channels’mapping onto the RN and SN component channels
在这里插入图片描述
CHI协议中通道之间存在依赖关系,对于RN:

  • RN的inbound SNP channel和outbound REQ channel不能存在依赖关系
  • RN的outbound RSP channel允许等待inbound SNP channel;
  • RN的inbound SNP channel允许等待outbound DAT channel;
  • RN的inbound RSP通道不能和其它任何通道有依赖关系;
  • RN的inbound DAT通道不能和其它任何通道有依赖关系;
    注意:要求RN的inbound RSP和inbound DAT channel不能和其它channel有依赖关系,意味着对于所有还没有发送CompAck responses的outstanding transactions,RN必须有能力接收所有的Comp和CompData响应。

对于SN:

  • SN的outbound RSP channel允许和inbound REQ channel有依赖关系;
  • SN的inbound REQ channel不能和outbound DAT channel有依赖关系;
  • SN的inbound DAT channel不能和其它任何通道有依赖关系;

1.2 Port

Port是一个node interface上所有的links的集合。图3为links、channels和port之间的关系图。
在这里插入图片描述
图3 Relationship between links,channels,and port

2.Node interface definitions

节点之间的通讯是通过使用node interface来交换link flits,本小节主要描述node interface,包含Request Nodes和Slave Nodes。每个节点中LINKACTIVE interface相关的信号和管脚将在《CHI低功耗》中的建断链章节描述。

2.1 Request Nodes

Request Node的interface根据类型使用的channel数目不一样。RN-F interface使用了全部的channels,通常用于全一致性requester,比如coer或cluster如图4所示。
在这里插入图片描述
图4 RN-F interface
RN-D interface也使用了全部通道,用于处理DVM messages的IO coherent node,SNP通道只用于处理DVM transaction。如图5所示:
在这里插入图片描述
图5 RN-D interface
RN-I interface用了除了SNP channel的其它channel,用于IO coherent RN,比如GPU或IO bridge。因为RN-I节点不需要包含cahce或TLB,所以SNP channel不需要的。如图6所示:
在这里插入图片描述
图6 RN-I interface

2.2 Slave Nodes

SN interface也根据节点类型不一致,分为SN-F和SN-I。SN-I和SN-F的interface一样,如图7所示,从ICN上接收request messages,给ICN返回response messages。但是RN-I和RN-F可以接收的transaction type是不一样的。
在这里插入图片描述
图7 SN-F and SN-I interface

3.Channel interface signals

本节主要描述每个channel interface,包括REQ channel、RSP channel、SNP channel、DAT channel。

3.1 REQ channel

图8为REQ channel interface的管脚信号,R代表REQFLIT的宽度。
在这里插入图片描述
图8 REQ channel interface pins
表2为 REQ通道接口信号的描述。

3.2 RSP channel

图9为RSP channel interface管脚信号,T代表RSPFLIT的宽度。
在这里插入图片描述
图9 RSP channel interface pins
表3为 RSP通道接口信号的描述。
在这里插入图片描述

3.3 SNP channel

图10为SNP channel interface管脚信号,S代表SNPFLIT的宽度。
在这里插入图片描述
表4为SNP channel interface signals
在这里插入图片描述

3.4 DAT channel

图11为DAT channel interface管脚信号,T代表DATFLIT的宽度。
在这里插入图片描述
表5 DAT channel interface signals
在这里插入图片描述

4.Flit packet definitions

Flit packet的详细信息可以看CHI-issueC 310页的表12-6至12-9,这里不详细阐述了。

5.Protocol flit fields

Protocol flit的opcode域值不为0,本节的所有域段都可应用于Protocol flit。下面将分别介绍Protocol field的各个域段。
TgtID
message都有携带,是message要发送节点的组件NodeID,ICN可以根据这个将message正确发送到目的地;
SrcID
message都有携带,是发送message的组件NodeID,ICN可以根据这个确定那个port发送的message;
HomeNID
原始请求的Home Identifier,Requester在收到CompData之后,用这个域值来决定CompAck的TgtID;用于Slave或HN返回CompData和DataSepResp,在其他data message中该域值必须为0;
ReturnNID
用于决定Slave发送的CompData和DataSepResp的节点,该值可以是HN或原始Requester的NID;该域段只有在HN发往SN的ReadNoSnp、ReadNoSnpSeq和non-store Atomics才有效,其他requests必须为0;
FwdNID
用于DCT传输中CompData响应要发给的Requester,该值必须等于原始request的Requester的NID,只应用于Forward type snoops,在其它snoop requests中无用且必须为0;
LPID
在request中,和SrcID可以唯一标识一个logical processor;
StashNID
用于标识Stash request的目的地,在StashNIDValid有效时必须是有效值;只应用于Stash request中,在其它requests中无用且必须为0;
StashNIDValid
在Stash命令中指示StashNID是否有效;在其它requests中无用;
StashLPID
用于Stash request和Stash type snoop request中,和StashNID一块确定唯一的Logical Processor;在其它requests中必须为0;
StashLPIDValid
用于Stash request和Stash type snoop request中,指示StashLPID是否有效;在其它requests中无用;
TxnID
同一个源用每个不同TxnID来表示outstanding transactions。Link filts没有单独的TxnID,全部为0;
ReturnTxnID
用于Slave返回CompData和DataSepResp响应的TxnID,它的值可以是HN产生TxnID,或者是原始requester产生的TxnID;
FwdTxnID
等于原始request的TxnID,用于snoop request中;
DBID
Completer返回的响应里携带,Requester用于CompAck或WriteData的TxnID;
Opcode
Opcode决定了每个message的操作,不同channel支持的Opcode不一样。具体见CHI-issueC 317页的表12-14至12-18;
Addr
CHI协议支持44-52bits的物理地址,因此REQ和SNP packets在DVM操作中支持49-53的Virtual Address(VA)。

  • Request messages支持44-53bit地址宽度,Addr[(43-51):0].
  • Snoop messages支持41-49bit地址宽度,Addr[(43-51):3]:1. Addr[(43-51):6]指定了64byte cacheline;2. Addr[5:4]指定了cacheline中的16byte critical chunk;3. Addr[3]进而SnpDVMOp相关,对于其它Snoop packet不关注;
    NS
    指示安全还是非安全访问;
    Size
    指定该笔transaction的data size大小;
    MemAttr
    有Allocate、Cacheable、Device和EWA;
    SnpAttr
    指示transaction的snoop属性;
    LikelyShared
    指示的requested data可能在其它RN中存在;
    Order
    指示transaction的保序需求;
    Excl
    指示transaction的Exclusive属性;
    Endian
    用于Atomic transaction的endianness of Data;
    AllowRetry
    指示transaction是否可以被Retry;
    ExpCompAck
    指示transaction是否包含CompAck响应;
    SnoopMe
    指示HN是否需要给Requester发送snoop request,仅用于Atomic requests;
    RetToSrc
    指示Snoopee是否需要返回一份cacheline data给HN;
    DataPull
    指示snoop response中是否包含Read request;
    DoNotGoToSD
    指示Snoopee的cache line能否允许是SD态;
    DoNotDataPull
    指示Stash的响应是否允许包含Data Pull;
    QoS
    值越高,越高的优先服务等级;
    PCrdType
    指示grant或return的credit类型;
    TraceTag
    为了trancing purposes,在transaction用于给packet做标记;
    VMIDExt
    Virtual Machine Identifier extension,用于扩展VMID的8-16bits
    Resp
    Response Status,在多个数据packet中,Resp的域必须保持一致;表6为Resp value encoding。
    在这里插入图片描述
    FwdState
    指示DCT中Snoopee发给Requester的CompData的cache state,表7为FwdState value encodings
    在这里插入图片描述
    RespErr
    该域段用于指示Response的error status;表8为RespErr value encodings;
    在这里插入图片描述
    Data
    在Data packet中用于传输data payload。
    CCID
    指示critical 128-bit chunk of the data that is being requested;
    DataID
    Data Identifier;
    BE
    指示相应的data byte是否有效。BE域是用于write data,DVM payload和snoop response data。对于read response data,该域段无效且可以为任意值。
    DataCheck
    用于相应data byte的DataCheck;
    Poison
    用于指示相应的64bit data chunk是否被poison,是否error。
    DataSource
    指示响应数据的发送者,用于Read request的CompData,SnpRespData和SnpRespDataPtl,在其他response响应中无效;
    表9为 DataSource value encoding
    在这里插入图片描述
    RSVDC
    给用户提供的备用域段;在Protocol flit中,任何值都可以;具体这个域在ICN上如何传输是根据具体实现的。
    该域段可以应用于REQ和DAT通道如下:
  • 域段是否存在是可以选择的;
  • 允许的域段宽度是4bit、8bit、12bit、16bit、24bit、32bit
  • 域段宽度:1. REQ和DAT的channel可以不一样;2. 在整系统中,不需要所有的 REQ channels都一样;3. 在整系统中,不需要所有的DAT channels都一样;

当连接TX和RX flit interfaces出现RSVDC宽度不匹配时:

  • RSVDC的低bits需要连接到另一侧interface上;
  • RSVDC的高bits不需要连接到另一侧,且必须tie LOW;

6.Link flit

在link断链过程中,link flit用于返回L-Credit给receiver,Link flits产生于transmitter,截止于另一侧的receiver;link flit的Opcode域为0,TxnID域为0,其它剩余的域段可以为任意值;

7. Link layer Credit

本小结描述link layer credit(L-Credit)机制。使用L-Credits,信息可以在interface channel上传输。从transmitter往receiver发送一个flit必须要先获得一个L-Credit。
receiver通过将LCRDV信号拉高一拍表示给transmitter发送一个L-Credit,每个通道都有一个LCRDV信号。每次从transmitter往receiver的一个flit传输都需要消耗一个L-Credit。receiver最小能提供的L-Credit是1个,最大是15个。receiver必须保证有能力接受所有已经发送L-Credit的flits。
当link为active时,receiver必须及时提供L-Credit,不能和transmitter的其它组件功能有任何耦合关系。L-Credit不能在同一个周期被收到就马上使用。

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷公子的藏经阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值