【CHI】(十四)Link Handshake

news2024/11/17 1:52:30

1.Link layer Credit

        本节介绍了链接层信用证(L-Credit)机制。信息通过使用L-Credit在接口通道传输。要将一个flit从 Transmitter传输到Receiver,Transmitter必须获得L-Credit。

1.1L-Credit flow control

        通过将LCRDV信号置起,Receiver将L-Credit发给Transmitter。每个通道都有一个LCRDV信号(上篇文章有描述)。每个flit的传输都将消耗一个L-Credit。

        一个接收机的L-Credit最小值为1,最大值为15。

        接收机必须保证有接收它发出L-Credits的所有flit。

        当链路被激活时,接收方必须及时提供L-Credits,而不需要发射机部分采取任何行动。

        注意L-Credit不能在收到的当个时钟周期使用。

2.Low power signaling

        本节介绍用于增强接口的低功耗操作的信令。有几个不同级别的操作:

Flit Level Clock Gating

        该技术用于提供每个接口通道 cycle-by-cycle的激活指示。对于每个通道,提供一个额外的信号(即:flitpend)来指示在接下来的周期中是否可能发生传输。此信令允许对与该接口相关联的某些寄存器进行本地时钟门控。

Link Activation

        支持链路激活和停用,以允许接口进入安全状态,以便接口的两侧都可以进入低功率状态,允许它们进行时钟门控或功率门控。

Protocol Activity Indication

        组件使用Protocol Activity Indication(即:SACTIVE)来指示是否有正在进行的事务。协议层活动指示可以用来影响使用其他低功率技术的决策。

3. Flit Level Clock Gating

        每个通道增加额外的信号 FLITPEND,用于指示下个时钟周期是否有有效的flit准备发送。

使用 FLITPEND要以下要求:

  • 在Transmitter发送一个flit之前,提前将FLITPEND拉起一个时钟周期。
  • 当FLITPEND断言时,允许(但不要求)Transmitter在下个时钟周期发送一个flit。
  • 当FLITPEND为低时,要求Transmitter在下个时钟周期不能发送flit。
  • 允许(但不要求)Transmitter将FLITPEND一直保持为高。
  • 允许(但不要求)Transmitter将FLITPEND拉高又释放后,没有发送flit。

 

4. Interface activation and deactivation

        提供了一种机制,以便整个接口在完全运行运行状态和低功率状态之间移动。当在操作状态之间移动时,包括从重置中退出时,L-Credit的交换是很重要的。Link flit交换要小心以避免丢失flit或者L-Credit。

        在退出重置或移动到完全运行的操作状态时,接口以空闲状态开始,只有在交换了 L-Credits后才可以开始flit传输。L-Credit只有在信用发送方知道接收方准备好接收信用时才能交换。

        采用了一种双信号、四相位的握手机制。这两个信号接口用于在同一方向上移动的所有信道,而不是需要为每个单独的信道。整个接口总共使用四个信号,两个信号用于所有发送信道,两个信号用于所有接收信道。

4.1 Request and Acknowledge handshake

        REQ和ACK信号命名为: LINKACTIVEREQ、 LINKACTIVEACK

        对于单个通道,或一组沿同一方向移动的通道,下图显示了 Payload、 Credit、LINKACTIVEREQ、 LINKACTIVEACK 之间的关系。

 

        如图14-2所示,在正常运行期间,发送有效payload flit的发射机需要credit才能发送flit。当接收方有可用资源接收flit时,接收方发出Credit:

  • 在退出复位时,接收方持有信用,并且必须在flit传输开始之前传递给发射器。
  • 在正常运行期间,在界面的两侧之间有一个持续的flit和credit交换。
  • 在进入低功率状态之前,必须停止有效payload flit的发送,并必须将所有信用证返回给接收方。即将接口返回到复位后相同的状态。

为接口操作定义了四种状态:

RUN 

        发送和接收两个组件之间正在进行着flit和credit的交换。

STOP 

        接口处在低功耗状态,不能进行操作。

        所有的信用证保存在Receiver,并且Transmitter不允许发送flit。

ACTIVATE 

        STOP移动到RUN的中间态。

DEACTIVATE 

        RUN移动到STOP 的中间态。

      RUN和STOP是稳定状态。当进入其中一个状态时,信道可以一直保持这种状态。ACTIVATE和DEACTIVATE都是临时状态。当进入其中一个状态时,一个通道会在相对较短的时间内移动到下一个稳定状态。图14-3显示了这四种状态之间的关系。

下表描述了这四种状态的单个链路的发射器和接收器的行为:

状态

Transmitter行为

Receiver行为

STOP

  • 发送器没有信用证,不能发送任何flit
  • 发送器保证不接收任何信用证
  • 发送器如果需要发送flit,必须断言LINKACTIVATEREQ信号以移动到ACTIVATE状态
  • 接收器不能发送信用证
  • 接收器保证不能接收任何flit

ACTIVATE

(ACT)

  • 发送器不能发送flit
  • 发送器在此状态必须准备好接收信用证,但是直到RUN状态才能使用
  • 发送器必须保持在ACTIVATE状态,直到接收器响应后才能移动到RUN
  • 只有仅当存在竞争时,(即Receiver在同个cycle断言LINKACTIVEACK和发送credit),Transmitter才会在ACT状态接收到credit
  • Receiver保证不接收任何flit
  • Receiver不能发送任何credit
  • AACT是临时状态,由Receiver断言LINKACTIVEACK来控制移动到RUN状态。
  • Receiver在发送credit之前,必须断言LINKACTIVEACK来控制移动到RUN状态。但是也允许在同个cycle断言LINKACTIVEACK以及发送credit。这样就会出现竞争。

RUN

  • 发送器可以接收credits
  • 发送器如果有可用的信用证,可以发送flit
  • 如果想进入低功耗状态,则将LINKACTIVEREQ取消断言。
  • 接收机可以接收它发出的信用证对应的flit
  • 如果接收机有机缘接收更多的flit,就发出信用证
  • 接收机在检测到LINKACTIVEREQ取消断言之前必须保持在RUN状态

DEACTIVATE

(DEACT)

  • 发送机必须通过protocol flits或者L-Credit来返回信用证。
  • 建议只在发送机没有要发的flit时才进入DEACT状态。这时通过L-Credit来返回信用证。
  • 处于此状态,发送机还是必须准备好接收credit,如果接收了必须通过L-Credit来返回信用证。
  • 发送机在收到接收机的响应之前必须保持在此状态,接收到响应后就必须保证不能再接收credits。

  • 在此状态,接收机不再发送信用证并且回收已返回的信用证。
  • 此状态,接收机还是要准备好接收flit,不仅是返回信用证的link flit。Protocol flit也可能会有,虽然不是期望的,但也会存在这种情况。
  • 在刚进入此状态时,接收机允许(但不要求)发出信用证。
  • 接收机接收L-Credit以返回信用证直到所有的信用证全部返回,然后才能取消LINKACTIVEACK断言。
  • 注意: (同ACTIVE状态存在的竞争一样),如果发送机在同一时刻发送flit和拉低LINKACTIVEREQ,那么接收机就会在DEACT接收到flit。

下表是各状态的行为汇总:

State

Transmitter

Receiver

STOP

  • 不能发送flit
  • 不会接收credit
  • 不能发送credit
  • 不会接收flit

ACT

  • 不能发送flit
  • 必须接收credit
  • 不能发送credit
  • 不会接收flit

RUN

  • 可以发送flit
  • 必须接收credit
  • 必须接收flit
  • 可以发出credit

DEACT

  • 预期会发送L-Credit return flit
  • 可以发送任何flit
  • 必须接收credit
  • 必须返回credit
  • 必须接收flit
  • 必须停止发出credit

(注:有些要求是为了系统的健壮性,比如DEACT状态既要求Receiver必须停止发出credit,但还是要求Transmitter必须接收credit )

Determining when to move to ACTIVATE or DEACTIVATE

        对于给定的通道或相同方向的一组通道,发射机始终负责启动从RUN到STOP或从STOP到RUN的状态更改。

        发射器本身可以确定是否需要更改状态。这可以通过各种机制发生。以下为一些示例,但并不详尽:

  • 发射机可以确定它是否有flit需要发送,所以必须从STOP移动到RUN。
  • 发射机可以确定它在很长一段时间内没有执行任何活动,因此可以从RUN移动到STOP。
  • 发射机可以观察一个独立的边带信号,该信号指示它应该从RUN到STOP,或从STOP到RUN。
  • 发射机可以确定事务未完全完成,因此通道在所有活动完成之前应保持RUN状态。

同方向的多个通道

 

有关LINKACTIVEREQ和LINKACTIVEACK之间关系的规则必须适当地应用于所有通道:

  • 当状态变化要求发射机能够接受信用时,它必须能够接受所有通道上的信用。
  • 当状态更改要求接收器能够接受flit时,它必须能够接受所有通道上的flit。
  • 当发送必须停止时,发送必须在所有通道上停止。
  • 当信用的发送必须在状态更改前停止时,必须在所有通道上停止发送信用。
  • 信用只能与同一通道上的flit相关联。

5. Transmit and receive link Interaction

5.1 Introduction

单个组件有各种不同的通道,其中一些是输入,另一些是输出。对于单个组件:

  • payload为输出的所有通道都被定义为transmit link(TXLINK)。
  • payload是输入的所有通道都被定义为receive link(RXLINK)。

这需要TXLINK和RXLINK的激活和失活是协调的。当TXLINK和RXLINK都处于稳定的STOP状态时:

  • 如果RXLINK移动到ACTIVATE状态,(它由接口另一边的组件控制),则要求TXLINK也及时移动到ACTIVATE状态。
  • 如果一个组件将TXLINK移动到它控制的ACTIVATE状态,它可以期望RXLINK也及时移动到ACTIVATE状态。

当TXLINK和RXLINK都处于稳定运行的RUN状态时:

  • 如果RXLINK移动到DEACTIVATE状态,(由接口另一边的组件控制),则要求TXLINK也及时移动到DEACTIVATE状态。
  • 如果一个组件将TXLINK移动到它控制的DEACTIVATE状态,它可以期望RXLINK也及时移动到DEACTIVATE状态。

当TXLINK和RXLINK改变状态时,可以独立考虑每个链接的发送和接收信用和flit的规则。

5.2Tx and Rx state machines

下图显示了Tx和Rx状态机之间允许的关系。

 

下图是期望的状态转换:

下图是没有竞争的状态转换:

 

(这部分还不熟悉,先放几张图,待更新)

6. Protocol Activity Indication

6.1 Introduction

SACTIVE信号表示有正在进行的事务。

TXSACTIVE是由接口置位的一个输出信号,表示有正在进行或即将启动的事务:

  • TXSACTIVE必须在发送与事务相关的第一个flit之前断言,或同一cycle。
  • TXSACTIVE活动必须保持断言,直到发送或接收到与所有事务相关的最后一个flit。

        这意味着在接口上的TXSACTIVE的取消断言意味着组件已经完成了所有正在进行的事务,并且不需要发送或接收任何更多的flit。

        一个被给予RetryAck响应的事务被认为是正在进行中的。

RXSACTIVE是一个输入信号,它表明接口的另一边具有正在进行的协议层活动。当声明RXSACTIVE时,组件必须及时响应协议层活动。

SACTIVE信号必须与CLK同步。

6.2 TXSACTIVE信号

以下规则适用于TXSACTIVE信号:

  • 当发射机需要发送flit时,必须断言TXSACTIVE。
  • 断言TXSACTIVE的组件还必须启动链接激活序列。不允许组件断言TXSACTIVE信号,然后等待接口的另一边启动链路激活序列。
  • TXSACTIVE活动必须保持断言,直到发送或接收与所有事务相关的最后一个flit。
  • 允许但不要求TXSACTIVE取消断言作为链路失活序列的一部分。

注意:为确保有效的断电序列,建议不要在链路停用序列期间去拉高已拉低的TXSACTIVE信号。

下图显示了TXSACTIVE断言在一个事务生命周期的要求:

TXSACTIVE signaling from a Request Node

在启动新的事务时,RN必须在同一周期中或在断言TXREQFLITV之前声明TXSACTIVE,并且必须保持其断言,直到发送或接收事务的最终完成之后。

完成由RN发起的事务的flit的类型取决于事务类型和事务进行的方式。例如,ReadNoSnp事务通常可以在收到最后一个CompData flit时完成,但同样可以通过ReadReceipt完成,如果这比收到最后一个CompData flit晚。

当Snoop事务正在进行时,RN-F或RN-D组件还必须断言TXSACTIVE。

TXSACTIVE必须在收到初始化snoop或SnpDVMOp flit后断言,并且不得迟于发送第一个响应flit。它必须保持TXSACTIVE断言,直到为所有Snoop事务发送最终完成的flit之后为止。PrefetchTgt的生命周期是一个单一的flit。

对于一个RN-F或RN-D,TXSACTIVE输出是请求接口和Snoop接口需求的逻辑或。

TXSACTIVE signaling from a Subordinate Node

下级节点不能启动新的事务,并且只需要在处理正在进行的事务时断言TXSACTIVE。它必须在接收到事务启动flit后断言TXSACTIVE,并且必须在发送其第一个响应flit之前或在同一周期中断言。它必须保持TXSACTIVE断言,直到发送或接收到最终完成的flit之后。

TXSACTIVE signaling from an interconnect interface to a Request Node

互连接口到RN,必须在以下两种情况下断言TXSACTIVE

  • 在接收到事务启动flit时,必须在发送第一个响应触发之前或在同一周期中断言。它必须保持TXSACTIVE断言,直到发送或接收到最终完成的flit之后。
  • 在发送启动Snoop或SnpDVMOp flit之前或在同一周期中。它必须保持TXSACTIVE,直到最终完成的flit被发送,这将是SnpResp或SnpRespData。

TXSACTIVE signaling from an interconnect interface to a Subordinate Node

        互连接口到SN,必须在发送其初始请求flit之前或在同一周期中断言TXSACTIVE。它必须保持TXSACTIVE断言,直到发送或接收到最终完成的flit之后。

6.3 RXSACTIVE signal

        当断言RXSACTIVE时,接收方必须及时响应链路激活请求。当RXSACTIVE被取消声明时,允许接收器延迟响应链接激活请求。

        注意:RXSACTIVE的取消断言并不表示所有的协议层活动都已完成。接收器可以接收一个协议flit,它对应于在取消声明RXSACTIVE时正在进行的事务。

        RXSACTIVE可以与正在进行的事务的声明结合使用,这将由组件TXSACTIVE输出表示,以表示不需要进一步的事务。这可用于控制进入到一个低功耗状态。

6.4 Relationship between SACTIVE and LINKACTIVE

        SACTIVE是协议层活动的一个指示。当同时取消断言TXSACTIVE和RXSACTIVE时,可以认为一个节点处于非活跃状态。

        LINKACTIVE状态是链接层活动的指示。当发射器处于TxStop状态且接收器处于RxStop状态时,可以认为节点或互连处的链路层处于非活跃状态。

        节点或互连只能在其协议层和链接层都不活跃时启用高级时钟门控和低功耗优化。

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

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

相关文章

聊聊近况,一个字【累】

首发博客地址 https://blog.zysicyj.top/ 1 最近生活状态真的是一团糟呀,我们家是承包了二十亩葡萄园的,但是只有我爸妈忙活,今年还好我小舅在这边帮忙,不然我的时间还要被压缩的更厉害,写博客学习那肯定是不敢想的了。…

MacOS goland go1.21 debug问题

安装dlv brew install dlv 安装之后在终端会显示所在目录 类似/usr/local/Cellar/delve/1.21.0/bin 配置goland 在文件系统中找到goland 右击选择show package contents -> Contents -> plugins -> go 尝试替换 其中对应系统 的 dlv 结果还是不行 然后打开应用gol…

汤普森采样(Thompson sampling): Beta分布直观理解(可视化)

本文是博客《汤普森采样(Thompson sampling):理论支持》得附录,进一步理解直观理解Beta分布。 1、曝光(αβ)比较大,且点击(α)比较好的情况,可见现在返回的值大部分在0.8左右。 2、曝光(αβ)比较大,且点击(α)比较小的情况&am…

C++数据结构学习——栈

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、栈二、C语言实现1.声明代码2.实现增删查改代码3.测试代码 总结 前言 栈(Stack)是计算机科学中一种常见的数据结构,它是…

系统架构设计、Linux、 C++、Java、Python、Andorid、iOS等技术笔记目录分享 - 最全讲解

架构设计师应具备的专业素质: 掌握业务领域的知识、掌握技术知识、掌握设计技能、掌握编程技能、具备沟通能力、具备决策能力、知道组织策略、应是谈判专家。 →点击 笔者主页,欢迎关注哦(互相学习,共同成长) 笔者看…

Linux网络编程:Web服务器

文章目录: 一:超文本编辑语言HTML 二:HTTP超文本传输协议 1.请求和响应消息流程 myhttpd.c getline函数,:用于读取http协议头 2.错误 2.1 处理出错返回disconnect 2.2 错误页面展示send_error 3.写出http应答协议头 写…

网络安全新闻与事件分析:关注当前的网络安全事件、漏洞披露和攻击趋势,分析其背后的技术细节和影响。

第一章:引言 随着数字化时代的不断发展,网络安全已经成为我们生活和工作中不可忽视的一部分。每时每刻,都有各种各样的网络安全事件、漏洞披露和攻击活动在全球范围内发生。作为IT从业者,我们有责任紧跟网络安全的最新动态&#…

开发智能应用的新范式:大数据、AI和云原生如何构建智能软件

文章目录 1.利用大数据实现智能洞察2. 集成人工智能和机器学习3. 云原生架构的弹性和灵活性4. 实现实时处理和响应5. 数据安全和隐私保护6. 可解释性和透明性7. 持续创新和迭代8. 数据伦理和合规性 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 &a…

Inventor软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Inventor软件是一款由Autodesk公司开发的三维计算机辅助设计(CAD)软件,主要用于机械设计和工程领域。它基于参数化建模技术,可以创建出复杂的三维模型,并且提供了丰富的…

Apache Poi 实现Excel多级联动下拉框

由于最近做的功能,需要将接口返回的数据列表,输出到excel中,以供后续导入,且网上现有的封装,使用起来都较为麻烦,故参考已有做法封装了工具类。 使用apache poi实现excel联动下拉框思路 创建隐藏单元格&a…

23.树表和哈希表的查找

当表插入、删除操作频繁时,为维护表的有序性,需要移动表中很多记录。基于此,我们可以改用动态查找表——几种特殊的树。表结构在查找过程中动态生成。对于给定值key,若表中存在,则成功返回;否则&#xff0c…

HTML5-1-标签及属性

文章目录 语法规范标签规范标签列表通用属性基本布局 页面的组成: HTML(HyperText Markup Language,超文本标记语言)是用来描述网页的一种语言,它不是一种编程语言,而是一种标记语言。 HTML5 是下一代 HTM…

Linux内核数据结构 散列表

1、散列表数据结构 在Linux内核中,散列表(哈希表)使用非常广泛。本文将对其数据结构和核心函数进行分析。和散列表相关的数据结构有两个:hlist_head 和 hlist_node //hash桶的头结点 struct hlist_head {struct hlist_node *first…

Linux学习笔记-Ubuntu系统下配置ssh免密访问

Ubuntu系统下配置ssh免密访问 一、基本信息二、ssh安装2.1 查看是否已经安装ssh2.2 安装ssh2.3 查看ssh安装状态 三、启动、停止,及开机自启动3.1 启动ssh3.2 关闭ssh3.3 使用systemctl设置ssh服务自启动3.4 使用systemctl关闭ssh开机启动 四、配置通过密钥进行免密…

Spring Authorization Server入门 (十六) Spring Cloud Gateway对接认证服务

前言 之前虽然单独讲过Security Client和Resource Server的对接,但是都是基于Spring webmvc的,Gateway这种非阻塞式的网关是基于webflux的,对于集成Security相关内容略有不同,且涉及到代理其它微服务,所以会稍微比较麻…

基于Spring Gateway路由判断器实现各种灰度发布场景

文章目录 1、灰度发布实现1.1 按随机用户的流量百分比实现灰度1.2 按人群划分实现的灰度1.2.1 通过Header信息实现灰度1.2.2 通过Query信息实现灰度1.2.3 通过RemoteAdd判断来源IP实现灰度 2、路由判断器2.1. After2.2. Before2.3. Between2.4. Cookie2.5. Header2.6. Host2.7.…

C++ Primer 第2章 变量和基本类型

C Primer 第2章 变量和基本类型 2.1 基本内置类型2.1.1 算术类型一、带符号类型和无符号类型练习 2.1.2 类型转换一、含有无符号类型的表达式 2.1.3 字面值常量一、整型和浮点型字面值二、字符和字符串字面值三、转义序列四、指定字面值的类型五、布尔字面值和指针字面值 2.2 变…

软考A计划-系统集成项目管理工程师-小抄手册(共25章节)-下

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

MySQL—MySQL主从如何保证强一致性

一、前言 涉及到的东西:两阶段提交,binlog三种格式 1、两阶段提交 在持久化 redo log 和 binlog 这两份日志的时候,如果出现半成功的状态,就会造成主从环境的数据不一致性。这是因为 redo log 影响主库的数据,binlog…

【大数据】Doris:基于 MPP 架构的高性能实时分析型数据库

Doris:基于 MPP 架构的高性能实时分析型数据库 1.Doris 介绍 Apache Doris 是一个基于 MPP(Massively Parallel Processing,大规模并行处理)架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知&#xff…