【CHI】(十三)链路层

news2024/9/21 10:54:17

        本章介绍了链路层,链路层为节点之间的基于数据包的通信和跨链路的互连提供了一种简化的机制。它包含以下几部分:

 

  • Introduction
  • Link
  • Flit
  • Channel
  • Port
  • Node interface definitions
  • Increasing inter-port bandwidth
  • Channel interface signals
  • Flit packet definitions
  • Protocol flit fields
  • Link flit

1. Introduction

链路层定义了packet和flit格式,以及跨链路的流控。

下图示例了一种基于link的通信典型系统:

2. Link

Link通信是在transmitter和receiver之间的,在transmitter和receiver之间的连接称为link,一个节点和互连之间的双向通信需要一对链路,如下图所示:

 

outbound link :Transmitter发包的link,也就是我们所说的TX方向

inbound link  :Receiver收包的link,也就是我们所说的RX方向

 

3. Flit

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

Protocol flit

Protocol flit的payload携带protocol packet。在CHI协议里,每个packet就是一个 flit。

Link flit

Link flit携带的messages用于链路维护。例如在断链的过程中,transmitter使用link flit返回Link Layer Credit(L-Credit)给receiver。Link flits来源于transmitter,终结于链路另一边的receiver。

4. Channel

        在本规范中,链路层提供了一组通道用于flit通信。每个通道有确定的flit格式,每个通道有很多field域,且有些field的位宽可以有多重可选值。在某些情况下,所定义的flit格式可以在入站通道和出站通道上同时使用。表13-1显示了通道,以及通道在RN和SN组件上的映射。

通道依赖关系

CHI协议的channel之间允许有以下依赖关系。

对于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不能和其它通道有依赖关系,意味着对于所有还没有发送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不能和其它任何通道有依赖关系;

5.Port

Port是一个节点接口上所有的link的集合。下图是links、channels和port之间的关系:

(Port>link>channel > signal)

 

6.Node interface definitions

节点之间的通讯是通过使用node interface来交换link flits,本小节主要描述node interface,包含Request Nodes和Subordinate Nodes。每个节点中LINKACTIVE interface相关的信号和管脚将在14章《Link Handshake.》中描述。

6.1 Request NodesRN

本节描述的RN接口包括:

  • RN-F
  • RN-D
  • RN-I

RNF

RN-F接口使用全部的channel,用于完全一致性的requester,比如coer或cluster如下图所示: 

 

RND

RN-D interface也使用了全部通道,用于处理DVM messages的IO 一致性节点,但是SNP通道只用于处理DVM 事务。如下图所示:

RNI

        RN-I 接口使用除了SNP的其它通道,用于IO coherent RN,比如GPU或IO bridge。因为RN-I节点不需要包含硬件一致性cahce或TLB,所以无需SNP通道。如下图所示:

6.2 Subordinate NodesSN

SN分为SN-F和SN-I。SN-I和SN-F的interface一样,包括:

  • RX request channel   *1
  • TX response channel    *1
  • TX data channel  *1
  • RX data channel  *1

SN从ICN上接收request messages,给ICN返回response messages。但是RN-I和RN-F接收不同的事务类型。下图展示了SNF/SNI的接口:

7. lncreasing inter-port bandwidth

一个节点接口上的可用带宽可以通过几种方式来增加。这里介绍以下两种允许的架构方法:

  1. Multiple interfaces(多接口)
  2. Replicated channels on a single interface(单接口,复制通道)

7.1 Multiple interfaces

为一个组件增加可用带宽的最简单的方法是有多个接口。可以复制(重复)一个完整的接口。

节点上接口重复的次数是实现者自定义的。

通过两个接口增加带宽的方法的主要特点是:

  • 每个接口都有自己的:

        ——节点ID

        ——TxnID pool

        ——SACTIVE信号集
        ——LINKACTIVE信号集

        ——SYSCOREQ/SYSCOACK信号集

        ——可选广播控制引脚集

  • 每个重复的接口必须视为独立接口

        ——如果一个接口分配了cache line,则另一个复制接口无法释放该cache line。

        ——当响应请求时,完成者必须在与请求所使用的接口相同的接口上发送响应。

        ——必须将snoop发送到用于导致cache line分配的事务的相同接口。

        ——两个接口之间的事务不能有依赖关系。

  • 即使只有一部分通道需要增加带宽,也必须复制所有通道

Address striping

        可选优化:RN通过指定address striping在多个接口之间进行选择。

        一个Home节点通常可以基于一个snoop filter来过滤snoop。如果SF是精确的,那么它可以跟踪缓存cache line的请求者的节点ID,并向单个接口上的同一缓存行发送后续请求的snoop。如果SF不能精确跟踪,或者是追踪的系统组件的数量而不是请求节点接口的数量,将无法隔离需要发送snoop的单个接口,除非SF知道且使用RN相同的address striping算法。

        当RN没有声明它正在使用的address striping算法时,SF要么需要做的更大,要么Home节点将不得不发送冗余的snoop。因此建议RN声明它正在使用的address striping算法。

        通常使用hash函数。Hash是我们的老朋友了,就不举例了。

7.2 Replicated channels on a single interface

        与通过更复杂的方法复制一个完整的接口不同,增加可用接口带宽的一种更有效的方法是有选择性地复制需要更大带宽的信道。

Features:

每个通道都可以被选择性地复制。对被复制的通道没有任何限制。通常,通道的复制是基于该通道上所需的预期带宽。例如,在图13-10中,TXREQ被复制为TXREQ0,TXREQ1,而RXSNP没有被复制,只有RXSNP0。复制的通道接口的特点是:

  • 与单个DAT通道对应的所有复制的DAT子通道必须具有相同的位宽。
  • 完整的接口必须使用:

        ——相同的NodeID

        ——单个TxnID池

  • 事务中的message可以使用任何子通道:

        ——响应消息不需要使用与请求相同的子通道。例如,TXREQ0上的请求可以在RXRSP0或RXRSP1上给出响应。

        ——针对单个请求的多个响应消息可以在任何子通道上出现。例如,一个写入事务的DBIDResp可以在RXRSP0上接收,而相应的Comp可以在RXRSP1上接收。

  • 与非复制通道一样,复制通道不提供任何通道内排序保证。
  • 所有Link信用证都是在子通道的基础上完成的。

        ——不能使用TXREQ0的信用证来发送TXREQ1上的flit。

        ——接收方必须在所有子通道上提供信用证。

  • 协议信用证是对合并后的TXREQ通道而言。
  • 不支持单独关闭子通道的电源。
  • DVM snoop的两个部分可以放在任何一个子通道上。即每个部分都可以在不同的子通道上。
  • 两个已连接的接口上的子通道数必须匹配。
  • 只能有一组 SACTIVE、LINKACTIVE和SYSCOREQ/SYSCOACK信号,以及可选的广播控制引脚。
  • 当接口包含复制的DAT通道时,不允许将接口属性CCF_Wrap_Order设置为True。

8. Channel interface signals

主要包含以下内容:

  • Request, REQ, channel
  • Response, RSP, channel
  • Snoop, SNP, channel
  • Data, DAT, channel

​​​​​​​8.1 Request, REQ, channel

图13-11 显示了REQ通道接口信号引脚,“R”:REQFLIT的位宽

下表是对上述信号的详细描述:(其他通道信号之相似,后文不再重复)

信号名

描述

REQFLITPEND

比flit提前一拍置起,表示下个时钟周期可能会有flit传输

REQFLITV

Request flit valid

REQFLIT

Request flit

REQLCRDV

Request L-Credit valid ,接收者将此信号置起以返还一个请求通道的L-Credit给发送者。

​​​​​​​8.2 Response, RSP, channel

下图显示了RSP通道接口管脚,T是RSPFLIT的位宽,发送和接收方向的RSP通道 接口信号是一样的。

 

下表是信号详细描述:

8.3 Snoop, SNP, channel

8.4 Data, DAT, channel

9. Flit packet definitions

9.1 Request flit

9.2 Response flit

  

9.3 Snoop flit

9.4 Data flit

 

10. Protocol flit fields

Protocol flit的opcode域值不为0,本节的所有域段都可应用于Protocol flit。下面将分别介绍Protocol field的各个域段。

简写

全称

描述

QoS

Quality of Service

事务的服务质量,QoS值越大,优先级越高

TgtID

Target Identifier

目标节点ID,message都有携带,是message要发送节点的组件NodeID,ICN可以根据这个将message正确发送到目的地

SrcID

Source Identifier,

源节点ID,ICN可以根据这个确定哪个port发送的message

HomeNID

Home Node Identifier

原始请求的HomeId,Requester在收到CompData之后,用这个域值来决定CompAck的TgtID;用于CompData和DataSepResp,在其他data message中该域值必须为0;

ReturnNID

Return Node Identifier

用于决定SN发送的CompData, DataSepResp或者 Persist response的目标节点,该值可以是HN或原始Requester的NID;用于HN发往SN的ReadNoSnp, ReadNoSnpSep, CleanSharedPersistSep, WriteNoSnp,

WriteNoSnpDef, Combined Write,Atomic requests.

其他不适用的请求该字段必须为0.

FwdNID

Forward Node Identifier

用于DCT传输中CompData响应要发给的Requester,该值必须等于原始请求的Requester的NID,只应用于Forward type snoops,在其它snoop requests中无用且必须为0;

注:在range-based TLBI DVM操作中,该字段为DVM payload

LPID

Logical Processor Identifier

在一个RN包含多个 processing agent时需要用其标识;在request中,和SrcID可以唯一标识一个logical processor;

PGroupID

Persistence Group Identifier

请求者使用此字段来处理不同的 CleanSharedPersistSep事务集,通过将它们分组并使用PGroupID标识每个事务集。

只用于 CleanSharedPersistSep、Write*CleanShPerSep requests和Persist、CompPersist

Responses。

StashNID

Stash Node Identifier

用于标识Stash request的目的地,在StashNIDValid有效时必须是有效值;只应用于Stash request中,在其它requests中无用且必须为0;

StashNIDValid

Stash Node Identifier Valid

在Stash命令中指示StashNID是否有效;在其它requests中无用

StashLPID

Stash Logical Processor Identifier

用于Stash request和Stash type snoop request中,和StashNID一块确定唯一的Logical Processor;在其它requests中必须为0;

StashLPIDValid

Stash Logical Processor Identifier Valid

用于Stash request和Stash type snoop request中,指示StashLPID是否有效;在其它requests中无用

StashGroupID

Stash Group Identifier

请求者使用此字段来处理不同的 StashOnceSep事务集,通过将它们分组并使用StashGroupID标识每个事务集。

TxnID

Transaction Identifier

Message的事务ID,如果同个源发起的outstanding transactions,需要使用不同的TxnID

ReturnTxnID

Return Transaction Identifier

用于下级节点返回CompData和DataSepResp响应的TxnID,它的值可以是HN产生TxnID,或者是原始requester产生的TxnID;

FwdTxnID

Forwarding Transaction Identifier

等于原始request的TxnID,用于snoop request中;

DBID

Data Buffer Identifier

Completer返回的响应里携带,Requester用于CompAck或WriteData的TxnID

Opcode

Channel opcodes

Opcode决定了每个message的操作,不同channel支持的Opcode不一样。 

在表格后文详细展开。

Deep

Deep persistence

Requester用来表示在之前的写操作完成之前不能发送Persist response。

适用于CleanSharedPersist* request and Combined Write request with CleanSharedPersistSep

Addr

Address

支持44-52bits的地址

NS

Non-secure

该字段与NSE结合,建立一个访问的PAS物理空间。

NSE

Non-secure extension

Size

Size of transaction data

指定该笔transaction的data size大小

MemAttr

Memory Attribute

SnpAttr

Snoop Attribute

0: non-snoopable

1:snoopable

DoDWT

Do Direct Write Transfer

直接写传输,数据从RN直接发到SN

LikelyShared

Likely Shared,

指示的requested data可能在其它RN中存在

Order

Ordering requirements

指定保序要求

 

Excl

Exclusive

独占访问

CAH

CopyAtHome

PBHA

Page-based Hardware Attribute

Endian

Endian

0:小端模式

1:大端模式

AllowRetry

Allow Retry

指示transaction是否可以被Retry;

ExpCompAck

Expect Completion Acknowledge

指示transaction是否包含CompAck响应;

SnoopMe

SnoopMe

指示HN是否需要给Requester发送snoop request,仅用于Atomic requests

RetToSrc

Return to Source

指示Snoopee是否需要返回一份cacheline data给HN;适用于除了DVMop外的所有snoop

DataPull

Data Pull

指示snoop response中是否包含Read request

 

DoNotGoToSD

Do not transition to SD state

指示Snoopee的cache line能否允许是SD态;

PCrdType

Protocol Credit Type

指示grant或return的credit类型;

TagOp

Tag Operation,

Tag

Tag

TU

Tag Update

TagGroupID

Tag Group Identifier,

TraceTag

Trace Tag

MPAM

Memory System Performance Resource Partitioning and Monitoring

RespErr

Response Error

该域段用于指示Response的error status

 

Resp

Response status

FwdState

Forward State

CBusy

Completer Busy

CCID

Critical Chunk Identifier

 太晚了,一些字段后续再补充

Opcode:

REQ channel opcode:

Atomic opcode:

RSP channel opcode:

SNP channel opcode:

DAT channel opcode:

 

11. Link flit

LINK flit用于在断链过程中将L-Credits返回给接收方。LINK flit起源于链路发射器,终止于链路另一边的链路接收器。

Link flit通过opcode字段设为0来标识,TxnID字段也要求为0。其余的字段不被使用,并且可以取任何值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/909468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

志凌海纳 SmartX 携手灵雀云推出全栈云原生联合解决方案

近日,北京志凌海纳科技有限公司(以下简称“SmartX”)与北京凌云雀科技有限公司(以下简称“灵雀云”)联合推出全栈云原生联合解决方案,为客户提供从基础设施到容器云平台的一站式服务,加速客户云…

滑动验证码-elementui实现

使用elementui框架实现 html代码 <div class"button-center"><el-popoverplacement"top":width"imgWidth"title"安全验证"trigger"manual"v-model"popoverVisible"hide"popoverHide"show&quo…

ABAP 定义复杂的数据结构

最近有个需求是实现ABAP数据类型与JASON类型的转换。想要创建个ABAP的数据类型来接JASON类型是个挺麻烦的事。例如下面这个JASON数据&#xff0c;是个很简单的数据结构。但对ABAP来说有4层了&#xff0c;就有点复杂了。 不过ABAP的数据类型也是支持直接定义数据结构的嵌套的。如…

Docker之Compose

目录 前言 1.1Docker Swarm与Docker Compose 1.1.1Docker Swarm 1.1.2Docker Compose 1.1.2.1 三层容器 ​编辑 二、YAML 2.1YAML概述 2.2注意事项 2.3Docker Compose 环境安装 2.3.1下载 三、Docker-Compose配置常用字段 四、Docker-compose常用命令 五、Docker…

Ubuntu搭建CT_ICP里程计的环境暨CT-ICP部署

CT-ICP部署以及运行复现过程 0.下载资源&#xff0c;并按照github原网址的过程进行。1.查看所需要的各个部分的版本。2.安装clang编译器3.进行超级构建3.1标准进行3.2构建过程中遇到的问题 4.构建并安装CT-ICP库4.1标准进行4.2遇到的问题及解决办法 5.构建 CT-ICP 的 ROS 包装5…

工作纪实37-mybatis-plus关闭结果集输出log

1.springbootmybatis-pluslogback.xml组合&#xff0c;运行mapper会把sql查询会把结果也打印出来&#xff09;&#xff0c;但是就是不想让它输出到控制台&#xff0c;今天就来记录一下如何操作才能不把sql结果集打印出来&#xff0c;当然sql语句还是会打印的。 2、修改配置 …

bh001- Blazor hybrid / Maui 使用摄像头和扫码快速教程

1. 建立工程 bh001_camera_barcode 源码 2. 添加 nuget 包 BlazorHybrid.Maui.Permissions 因为源码比较长,主要是一些检查和申请权限相关代码,就不占用篇幅列出,感兴趣的同学直接打开源码参考 3. 添加摄像头权限 安卓 双击编辑文件,或者手工添加 <uses-permission an…

二、11.系统交互

fork 函数原型是 pid_t fork(void&#xff09;&#xff0c;返回值是数字&#xff0c;该数字有可能是子进程的 pid &#xff0c;有可能是 0&#xff0c;也有可能是-1 。 1个函数有 3 种返回值&#xff0c;这是为什么呢&#xff1f;可能的原因是 Linux 中没有获取子进程 pid 的方…

ORCA优化器浅析——DXLToPlStmt[CTranslatorDXLToPlStmt]

如上图所示是将plan_dxl转为plan_stmt的主入口函数。其主要工作就是创建plan_id_generator、motion_id_generator、param_id_generator和table_list、subplans_list&#xff0c;并将其设置到CContextDXLToPlStmt dxl_to_plan_stmt_ctxt中供后续流程调用&#xff1b;初始化CTran…

LION AI 大模型落地,首搭星纪元 ES

自新能源汽车蓬勃发展以来&#xff0c;随着潮流不断进步和变革的“四大件”有着明显变化。其中有&#xff1a;平台、智能驾驶、配置、以及车机。方方面面都有着不同程度的革新。 而车机方面&#xff0c;从以前老旧的媒体机、 CD 机发展至如今具有拓展性、开放性、智能化的车机…

Quartz任务调度框架介绍和使用

一、Quartz介绍 Quartz [kwɔːts] 是OpenSymphony开源组织在Job scheduling领域又一个开源项目&#xff0c;完全由Java开发&#xff0c;可以用来执行定时任务&#xff0c;类似于java.util.Timer。但是相较于Timer&#xff0c; Quartz增加了很多功能&#xff1a; 1.持久性作业 …

物联网(IoT)安全挑战与解决方案: 分析物联网设备面临的安全威胁,以及如何设计和管理安全的IoT生态系统

第一章&#xff1a;引言 随着科技的飞速发展&#xff0c;物联网&#xff08;IoT&#xff09;作为连接世界的桥梁&#xff0c;已经成为现代社会不可或缺的一部分。然而&#xff0c;随着IoT设备数量的不断增加&#xff0c;其安全问题也日益显著。本文将深入探讨IoT领域面临的安全…

【Ubuntu20.04安装Nvidia驱动、CUDA和CUDNN】

Ubuntu20.04安装Nvidia驱动、CUDA和CUDNN 1 Nvidia驱动安装1.1 安装1.2 安装Nvidia可能会遇到的问题1.2.1 NVIDIA 驱动与 Nouveau 驱动不兼容1.2.2 ERROR: Unable to find the development tool cc 2 CUDA安装2.1 下载和安装2.2 配置CUDA环境 3 安装CUDNN4 切换CUDA版本 1 Nvid…

min-height到底是什么?

1、概念 给元素设置最小高度&#xff0c;当height小于 min-height &#xff0c;min-height会覆盖height的值 2、案例 如果我有一个盒子A&#xff0c;A设置了min-height的高度为200px&#xff1b;并设置了overflow&#xff1a;auto&#xff0c;那么如果里面的内容超过了200px…

【经验】VScode 远程连接 Ubuntu 出错,Could not establish connection

用VScode常常会碰到以下情况&#xff0c;Could not establish connection。 先介绍一下VScode远程连接和终端SSH连接的区别&#xff1a;终端直接用SSH连接时&#xff0c;只需要开启SSH服务&#xff0c;并消耗少量的内存即可&#xff1b;VScode连接时&#xff0c;会自动在服务器…

MySQL基础篇 (三)

函数 回顾学过的函数 countavgsumminmax 数值函数 做数值运算的 演示 #ABS(X)SELECT ABS(0); #SIGN(X)SELECT SIGN(-10); #SQRT(X)SELECT SQRT(4); #LEAST(value1,value2,...)SELECT LEAST(10,20,15);字符串函数 做字符串处理&#xff08;CONCAT()&#xff09; 演示 #CO…

HCIP学习--三层架构

未完成 网关作为了一个广播域的中心出口&#xff1b;生成树的根网桥也是一棵树的中心&#xff0c;也是流量的集合点&#xff1b; 若将两者分配不同的设备将导致网络通讯资源浪费&#xff0c;故强烈建议两者在同一台汇聚层设备上 举个例子 看下图若VLAN2要去找VLAN3设备需要…

java+springboot+mysql医院预约挂号管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的医院预约挂号管理系统&#xff0c;系统包含超级管理员、管理员、医生、患者角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;用户管理&#xff1b;科室管理&#xff1b;床位管理&…

问道管理:沪指弱势震荡跌0.38%,金融、地产等板块走弱,算力概念等活跃

21日早盘&#xff0c;沪指盘中弱势震荡下探&#xff0c;创业板指一度跌逾1%失守2100点&#xff1b;北向资金小幅净流出。 截至午间收盘&#xff0c;沪指跌0.38%报3120.18点&#xff0c;深成指跌0.24%&#xff0c;创业板指跌0.62%&#xff1b;两市算计成交4238亿元&#xff0c;…