CHI链路层

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

  • Packet and flit formats.
  • Flow Control across a link.
    图1为基于link通讯的典型系统
    CHI链路层_第1张图片
    图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链路层_第2张图片
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之间的关系图。
CHI链路层_第3张图片
图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所示。
CHI链路层_第4张图片
图4 RN-F interface
RN-D interface也使用了全部通道,用于处理DVM messages的IO coherent node,SNP通道只用于处理DVM transaction。如图5所示:
CHI链路层_第5张图片
图5 RN-D interface
RN-I interface用了除了SNP channel的其它channel,用于IO coherent RN,比如GPU或IO bridge。因为RN-I节点不需要包含cahce或TLB,所以SNP channel不需要的。如图6所示:
CHI链路层_第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是不一样的。
CHI链路层_第7张图片
图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的宽度。
CHI链路层_第8张图片
图8 REQ channel interface pins
表2为 REQ通道接口信号的描述。
CHI链路层_第9张图片

3.2 RSP channel

图9为RSP channel interface管脚信号,T代表RSPFLIT的宽度。
CHI链路层_第10张图片
图9 RSP channel interface pins
表3为 RSP通道接口信号的描述。
CHI链路层_第11张图片

3.3 SNP channel

图10为SNP channel interface管脚信号,S代表SNPFLIT的宽度。
CHI链路层_第12张图片
表4为SNP channel interface signals
CHI链路层_第13张图片

3.4 DAT channel

图11为DAT channel interface管脚信号,T代表DATFLIT的宽度。
CHI链路层_第14张图片
表5 DAT channel interface signals
CHI链路层_第15张图片

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。
    CHI链路层_第16张图片
    FwdState
    指示DCT中Snoopee发给Requester的CompData的cache state,表7为FwdState value encodings
    CHI链路层_第17张图片
    RespErr
    该域段用于指示Response的error status;表8为RespErr value encodings;
    CHI链路层_第18张图片
    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
    CHI链路层_第19张图片
    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不能在同一个周期被收到就马上使用。

CHI链路层_第20张图片

你可能感兴趣的:(ARM,CHI,AMBA,Link,Layer,低功耗,linkactive)