【CHI】(十三)链路层

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

 

  • 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.rhkb.cn/news/100315.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频汇聚/视频云存储/视频监控管理平台EasyCVR添加萤石云设备详细操作来啦!

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

juc概述和Lock接口

目录 一、什么是JUC 1、JUC概述 2、进程与线程 3、线程的状态 4、wait/sleep 的区别 5、并发与并行 6、管程 7、用户线程和守护线程 二、Lock接口 1、Synchronized 使用synchronized实现售票案例 使用synchronized实现增减变量操作 2、什么是 Lock 买票例子使用lo…

CST HFSS MATLAB参数方程定义曲面绘制

CST HFSS 函数定义曲面绘制 简介环境HFSSCSTMATLAB 简介 若在柱坐标系中半径r随z和phi都会变,无法使用一般的方法绘制,这时可以使用参数方程定义的曲面来绘制。举一个例子如下, r 100 0.5 ( c o s ( 0.2 ∗ p i ∗ z ) − 1 ) c o s ( φ …

定位服务器CPU爆满的具体原因

1、查询CPU消耗的进程 使用top命令查看系统的CPU和内存使用情况 CPU一列是线程占用百分比 2、具体查看某个占分比大的进程 以为PId:7355为例, 执行top -Hp 7355,线程按照CPU使用率排序。 3、将线程PID转化为16进制 执行printf %x 7391,将…

论文阅读 - Understanding Diffusion Models: A Unified Perspective

文章目录 1 概述2 背景知识2.1 直观的例子2.2 Evidence Lower Bound(ELBO)2.3 Variational Autoencoders(VAE)2.4 Hierachical Variational Autoencoders(HVAE) 3 Variational Diffusion Models(VDM)4 三个等价的解释4.1 预测图片4.2 预测噪声4.3 预测分数 5 Guidance5.1 Class…

Istio入门体验系列——基于Istio的灰度发布实践

导言:灰度发布是指在项目迭代的过程中用平滑过渡的方式进行发布。灰度发布可以保证整体系统的稳定性,在初始发布的时候就可以发现、调整问题,以保证其影响度。作为Istio体验系列的第一站,本文基于Istio的流量治理机制,…

MySQL 字符集概念、原理及如何配置 — 图文详解

目录 一、字符集概念 1、字符(Character) 2、字符编码 3、字符集(Character set) 二、字符集原理 1、ASCII字符集 2、GB2312 3、GBK 4、GB18030 5、BIG5 6、Unicode 编码 三、字符序 四、MySQL字符集 & 字符序 …

Git标签

Git 中的标签,指的是某个分支某个特定时间点的状态(静态)。通过标签,可以很方便的切换到标记时的状态。 比较有代表性的是人们会使用这个功能来标记发布结点 (v1.0、v1.2等)。 下面是myatis-plus的标签: 1 标签相关命令 命令作用git tag查看标签&…

Go语言入门指南:基础语法和常用特性(下)

上一节,我们了解Go语言特性以及第一个Go语言程序——Hello World,这一节就让我们更深入的了解一下Go语言的**基础语法**吧! 一、行分隔符 在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ;…

解决多模块开发中的问题(聚合继承)

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 Maven 一、聚合1.1创建Maven模块,设置打包类型…

ThreadLocal内存泄漏问题

引子: 内存泄漏:是指本应该被GC回收的无用对象没有被回收,导致内存空间的浪费,当内存泄露严重时会导致内存溢出。Java内存泄露的根本原因是:长生命周期的对象持有短生命周期对象的引用,尽管短生命周期对象已…

ABAP 定义复杂的数据结构

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

LLM生成式 AI 项目生命周期Generative AI project lifecycle

在本课程的其余部分中,您将学习开发和部署LLM驱动应用所需的技巧。在这个视频中,您将了解一个能帮助您完成此工作的生成式AI项目生命周期。此框架列出了从构思到启动项目所需的任务。到课程结束时,您应该对您需要做的重要决策、可能遇到的困难…

dockerfile编写LNMP

目录 1. 项目环境 2. 服务器环境 二、部署nginx(容器IP为192.168.158.26) 1、整个Dockerfile文件内容 ​编辑 2、配置nginx.conf文件 3、构建镜像 三、部署mysql 1、整个Docker文件内容 3、生成镜像 4、启动镜像容器 5、验证mysql 四、PHP部署 1…

机器学习|决策树:数学原理及代码解析

机器学习|决策树:数学原理及代码解析 决策树是一种常用的监督学习算法,适用于解决分类和回归问题。在本文中,我们将深入探讨决策树的数学原理,并提供 Python 示例代码帮助读者更好地理解和实现该算法。 决策树数学原…

Go语言里面的各种疑难杂症

什么是闭包?闭包有什么缺陷? func AddUpper() func(int)int{var n int 10return func (x int) int{n nxreturn n} }func main(){f : AddUpper()fmt.Println(f(1))//11fmt.Println(f(2))//13fmt.Println(f(3))//16 }(1) AddUpper…

PyTorch学习笔记(十六)——利用GPU训练

一、方式一 网络模型、损失函数、数据(包括输入、标注) 找到以上三种变量,调用它们的.cuda(),再返回即可 if torch.cuda.is_available():mynn mynn.cuda() if torch.cuda.is_available():loss_function loss_function.cuda(…

【操作系统】虚拟内存相关分段分页页面置换算法

虚拟内存是什么? 【进程地址空间虚拟地址空间C/C程序地址空间就是那个4G的空间】 虚拟内存是操作系统内核为了对进程地址空间进行管理,而设计的一个逻辑意义上的内存空间概念。在程序运行过程中,虚拟内存中需要被访问的部分会被映射到物理内…

安防视频监控平台EasyCVR视频集中存储平台接入RTSP设备出现离线情况的问题解决方案

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

用户新增预测——baseline学习笔记

一、赛题理解 1. 赛题名称 用户新增预测挑战赛 2. 赛题数据集 赛题数据由约62万条训练集、20万条测试集数据组成,共包含13个字段。其中uuid为样本唯一标识,eid为访问行为ID,udmap为行为属性,其中的key1到key9表示不同的行为属性…