【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。其余的字段不被使用,并且可以取任何值。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【0基础入门Python Web笔记】二、python 之逻辑运算和制流程语句

二、python 之逻辑运算和制流程语句 逻辑运算控制流程语句条件语句(if语句)循环结构(for循环、while循环)continue、break和pass关键字控制流程语句的嵌套以及elif 更多实战项目可进入下方官网 逻辑运算 Python提供基本的逻辑运算…

JavaScript基础(Dom操作)

目录 一,BOM模型1.1,BOM可实现功能 二,Window对象的常用属性2.1,Window对象的常用方法2.1-1,open()和close()方法 三,History对象四,Location对象五,Document对象的常用方法六&#…

el-table 实现动态表头 静态内容 根据数据显示动态输入框

直接放代码了 <el-table:data"form.tableDataA"borderstripestyle"width: 100%; margin-top: 20px"><el-table-columnv-for"(category, categoryIndex) in form.tableDataA":key"categoryIndex":label"category.name&qu…

软考高级架构师下篇-12层次式架构设计理论与实践

目录 1. 考情分析2. 层次式体系结构概述3. 表现层框架设计4. 中间层框架设计5. 数据访问层设计6. 数据架构规划与设计7. 物联网层次架构设计8. 前文回顾1. 考情分析 根据考试大纲,层次式架构设计理论与实践知识点会涉及单选题型(约占2~5分)和案例题(25分),本小时内容偏重于方…

Postman接口自动化测试实例

一.实例背景 在实际业务中&#xff0c;经常会出现让用户输入用户密码进行验证的场景。而为了安全&#xff0c;一般都会先请求后台服务器获取一个随机数做为盐值&#xff0c;然后将盐值和用户输入的密码通过前端的加密算法生成加密后串传给后台服务器&#xff0c;后台服务器接到…

【MySQL系列】ALTER语句详解,以及UPDATE,DELECT,TRUNCATE语句的使用+区别

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

PHP数组

数组是一个能在单个变量中存储多个值的特殊变量。 数组的英文是array,可以存入多个不同类型的数据&#xff0c;是一个复合数据类型。 在 PHP 中&#xff0c;有三种类型的数组&#xff1a; 索引数组 - 带有数字 ID 键的数组关联数组 - 带有指定的键的数组&#xff0c;每个键关…

ubuntu18.04安装远程控制软件ToDest方法,针对官网指令报错情况

有时我们在家办公&#xff0c;需要控制实验室的笔记本&#xff0c;因此好用的远程控制软件会让我们的工作事半功倍&#xff01; 常用的远程控制软件有ToDesk&#xff0c;向日葵&#xff0c;以及TeamViewer&#xff0c;但是为感觉ToDesk更流畅一些&#xff0c;所以这里介绍一下…

系统报错mfc100u.dll丢失的解决方法(完美解决dll问题)

系统文件mfc100u.dll丢失和出错&#xff0c;极有可能是盗号木马、流氓软件等恶意程序所导致&#xff0c;其感染相关文件并加载起来&#xff0c;一旦杀毒软件删除被感染的文件&#xff0c;就会导致相关组件缺失&#xff0c;游戏等常用软件运行不起来&#xff0c;且提示“无法启动…

QT 使用图表

目录 1、概念 1.1 坐标轴-QAbstractAxis 1.2 系列-QAbstractSeries 1.3 图例-Legend 1.4 图表-QChart 1.5 视图-QChartView 2、 QT 折线图 2.1 Qt 折线图介绍 2.2 Qt 折线图实现 Qt 图表是专门用来数据可视化的控件 Qt 图表包含折线、饼图、棒图、散点图、范围图等。…

【工具】 删除Chrome安装的“创建快捷方式”

创建Chrome的快捷方式&#xff0c;可以放在桌面&#xff0c;想用时双击就可以打开网页&#xff0c;比书签&#xff08;brookmark&#xff09;结构化管理更方便。 但是&#xff0c;安装一时爽&#xff0c;卸载有问题。 如果用 windows 控制面板\所有控制面板项\程序和功能 卸载…

Redis五大基本数据类型及其使用场景

文章目录 **一 什么是NoSQL&#xff1f;****二 redis是什么&#xff1f;****三 redis五大基本类型**1 String&#xff08;字符串&#xff09;**应用场景** 2 List&#xff08;列表&#xff09;**应用场景** 3 Set&#xff08;集合&#xff09;4 sorted set&#xff08;有序集合…

Window下部署使用Stable Diffusion AI开源项目绘图

Window下部署使用Stable Diffusion AI开源项目绘图 前言前提条件相关介绍Stable Diffusion AI绘图下载项目环境要求环境下载运行项目打开网址&#xff0c;即可体验文字生成图像&#xff08;txt2img&#xff09;庐山瀑布 参考 本文里面的风景图&#xff0c;均由Stable Diffusion…

VM部署CentOS并且设置网络

最近在准备学习k8s&#xff0c;需要部署服务器&#xff0c;所以需要在虚拟机中部署centOS服务&#xff0c;接下来我们将一步一步到操作来&#xff0c;如何在VM中不是CentOS系统。 一&#xff1a;环境 VMware Workstation Pro 链接&#xff1a;https://pan.baidu.com/s/1hSKr…

积跬步至千里 || 矩阵可视化

矩阵可视化 矩阵可以很方面地展示事物两两之间的关系&#xff0c;这种关系可以通过矩阵可视化的方式进行简单监控。 定义一个通用类 from matplotlib import pyplot as plt import seaborn as sns import numpy as np import pandas as pdclass matrix_monitor():def __init…

Spring Clould 搜索技术 - elasticsearch

视频地址&#xff1a;微服务&#xff08;SpringCloudRabbitMQDockerRedis搜索分布式&#xff09; 初识ES-什么是elasticsearch&#xff08;P77&#xff0c;P78&#xff09; 1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能…

java学习004

常用数据结构对应 php中常用的数据结构是Array数组&#xff0c;相对的在java开发中常用的数据结构是ArrayList和HashMap&#xff0c;它们可以看成是array的拆分&#xff0c;一种简单的对应关系为 PHPJAVAArray: array(1,2,3)ArrayListlArray: array(“name” > “jack”,“…

iPhone开启“轻点唤醒”功能但点击屏幕无反应怎么解决?

iPhone的“轻点唤醒”功能启用时&#xff0c;用户只需手指轻触或点击手机屏幕即可快速唤醒设备&#xff0c;无需按压任何按钮。然而&#xff0c;有些用户在使用“轻点唤醒”功能唤醒屏幕时&#xff0c;遇到该功能失灵&#xff0c;无法正常唤醒屏幕的情况&#xff0c;这是怎么回…

如何在Java实现TCP方式发送和接收Socket消息(多线程模式)

目录 导言&#xff1a;正文&#xff1a;1. 创建Server端&#xff1a;2. 创建Client端&#xff1a;3. 多线程模式&#xff1a; 代码示例Server端代码示例&#xff1a;Client端代码示例&#xff1a;同步模式发送TCP消息异步模式 结论&#xff1a; 导言&#xff1a; 在Java编程中…

python 打印沁园春 雪 居中对齐 文本对齐

以下是python 中使用 DebugInfo 模块居中对齐打印《沁园春・雪》的效果 引入模块 pip install DebugInfopython代码 # -*- coding:UTF-8 -*-# region 引入必要依赖 from DebugInfo.DebugInfo import * # endregion诗文 沁园春 雪 作者: 毛主席 北国风光&#xff0c;千里冰封…