0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CCIX协议层消息字段的含义

安芯教育科技 来源:老秦谈芯 作者:老秦谈芯 2022-06-28 17:22 次阅读

3. CCIX协议层

3.1 介绍

每个CCIX代理都有一个ID,通过ID进行消息路由。

每个CCIX端口可以与一个或多个其他CCIX端口通信。CCIX交换机(Switch)包括CCIX端口并支持CCIX链路。CCIX链路定义为两个CCIX端口之间的(逻辑)连接,具有专用的通信资源。

82a267f0-f67f-11ec-ba43-dac502259ad0.png

一个CCIX系统在正常工作前,需要主机通过发现(discovery)和枚举(enumeration)机制去初始化,CCIX规范并没有额外规定这个机制,完全遵守PCIe规范。

发现过程需要完成以下动作:

发现系统中存在的每个芯片

发现系统中存在的所有传输交换机(transport switches),包括支持协议的嵌入式和独立式交换机。

发现在系统中每个芯片上的所有代理。

对于每个主代理,发现在系统地址映射中其所需的地址范围的大小。

对于每个从代理,发现从属代理可以提供给另一个芯片上的主代理的地址范围的大小。

枚举过程需要完成以下动作:

确定系统的拓扑结构和适当的路由算法

将从代理分配给主代理。

确定主代理和从代理的全局系统地址映射(G-RSAM和G-HSAM)。

确定整个系统的代理ID分配。

3.2 消息字段

前面讲过,在CCIX链路层和CCIX事务层之间,是通过CCIX消息来进行通信的。CCIX消息可以分为几类,请求消息,监听消息和响应消息。下图是请求消息的所有字段(Field)。如果是128B的缓存行,“注释列”标明了所需的额外要求。另外,表的底部列出了请求消息中包含数据时所需的其它字段。

82b758fe-f67f-11ec-ba43-dac502259ad0.png

下图是监听消息的所有字段。

82e84fd6-f67f-11ec-ba43-dac502259ad0.png

下图是响应消息的所有字段。

83140270-f67f-11ec-ba43-dac502259ad0.png

接下来,我们看看这些CCIX消息中每个字段的具体含义是什么。

TgtID: 目标标识(Target Identifier),6-bit宽度。

SrcID: 源标识(Source Identifier),6-bit宽度。

MsgLen:消息长度,6-bit宽度,以4字节增量的方式标识消息的长度,例如下表显示,消息最长116字节,最短4字节。

833e0002-f67f-11ec-ba43-dac502259ad0.png

MsgCredit:用于标识消息信用是否传递给CCIX链路的发送方。后面会解释什么是信用。

Ext:如果设置为1,表示包含4B扩展。

MsgType:标识有效负载中的消息类型,4-bit宽度,编码含义如下表。

835cadea-f67f-11ec-ba43-dac502259ad0.png

QoS:Quality of Service,服务质量优先级别。QoS主要用于主控制器和内存控制器事务调度;只有请求具有QoS字段;QoS设置不应影响功能正确性;QoS字段没有必要的行为要求,然而预期的默认行为是QoS的上升值表示更高的优先级。

TxnID: 事务标识(Transaction Identifier),12-bit宽度(对于128B的缓存行,只需11-bit)。

ReqOp,SnpOp, RespOp:指定要执行的操作,Opcode编码对于每种消息类型是不同的。

Addr:指定与消息相关的地址,允许的地址大小由AddrWidth属性定义。

NonSec:标识是对非安全区域的访问。

ReqAttr:请求属性,包括有关请求数据大小、内存属性、监听属性以及事务排序要求信息。ReqAttr[6:4]指明数据大小,合法的数据长度可以是1B,2B,4B,8B,16B,32B,128B;ReqAttr[2:0]指明了存储类型,编码如下。

83793b0e-f67f-11ec-ba43-dac502259ad0.png

83a8d7b0-f67f-11ec-ba43-dac502259ad0.png

User:用户定义的字段。

Data:写数据或者读响应数据。

BE:Byte Enable,字节使能。

Posion:指示对应的8-byte块是否有未更正的错误。

SnpCast:标识单独监听的代理,其编码如下表。

83cc4aba-f67f-11ec-ba43-dac502259ad0.png

RespAttr:响应属性。在Comp响应中,此字段不用,必须设置为0;在CompData响应中,此字段指示响应接收器可以设置的缓存状态;在监听响应中,此字段指明在被监听端(snoopee)的一致性缓存状态。

DataRet:指示是否要将数据返回到主代理。当DataRet被置无效时,对于除SnpMakeI之外的所有监听:

要求返回“脏”缓存行的数据。

建议(但不是必需的)不为唯一的干净缓存行返回数据。

要求不为共享“干净”缓存行返回数据。

当DataRet有效时:

要求返回“脏”缓存行的数据。

建议为唯一的“干净”缓存行返回数据,但不是必需的。

要求不为共享“干净”缓存行返回数据。

接下来会讲到CCIX的一致性协议,内容会比较多

原文标题:技术分享 | CCIX(三)

文章出处:【微信公众号:安芯教育科技】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6571

    浏览量

    87955
  • 交换机
    +关注

    关注

    19

    文章

    2506

    浏览量

    96512
  • 端口通信
    +关注

    关注

    0

    文章

    5

    浏览量

    6687
  • 字段
    +关注

    关注

    0

    文章

    13

    浏览量

    1615

原文标题:技术分享 | CCIX(三)

文章出处:【微信号:Ithingedu,微信公众号:安芯教育科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    arcgis图层字段怎么批量输入属性

    对于ArcGIS图层字段的批量输入属性,可以通过以下步骤完成: 打开ArcMap软件,并加载需要编辑属性的图层。 在ArcMap的主菜单中,选择“编辑(Edit)”选项,然后选择“开始编辑
    的头像 发表于 02-25 14:15 2122次阅读

    arcgis值类型与字段类型不兼容

    ArcGIS是一个地理信息系统软件,可以用来处理、分析和可视化地理数据。在ArcGIS中,值类型和字段类型之间需要相互匹配,否则会导致不兼容的错误。 在ArcGIS中,值类型是指存储在数据字段
    的头像 发表于 02-25 11:14 634次阅读

    IPv4报文格式各字段含义

    Version版本 4Bit :ip报文中,用来表示该协议采用的是那一个版本的ip,相同版本的ip才能进行通信。一般此处的值为4,表示ipv4。
    的头像 发表于 12-13 09:43 1339次阅读
    IPv4报文格式各<b class='flag-5'>字段</b>的<b class='flag-5'>含义</b>

    给Oracle数据库添加表字段的代码

    Oracle数据库是一款强大的关系型数据库管理系统,常被用于企业级的应用开发。在实际应用中,我们可能会遇到需要给数据库的现有表添加新的字段的需求。本文将详细介绍如何使用Oracle数据库的ALTER
    的头像 发表于 11-21 11:38 514次阅读

    oracle数据库添加字段语句

    Oracle数据库添加字段语句是在已有表中添加新的列,以扩展表的结构和功能。添加字段语句的语法有多种,可以根据实际需求选择不同的语法。下面将详细介绍Oracle数据库添加字段的语法和一些常见的用法
    的头像 发表于 11-21 11:37 4535次阅读

    oracle修改表字段长度语句

    Oracle 修改表字段长度可以通过使用 ALTER TABLE 语句来实现。在对表进行修改之前,我们需要先了解一些基本的概念。 表字段长度是指在数据库表中用来存储数据的列的最大容量。当我们需要存储
    的头像 发表于 11-21 11:34 1172次阅读

    oracle修改数据库表字段类型

    要修改Oracle数据库表中的字段类型,您可以按照以下步骤进行操作: 1.备份数据:在进行任何修改之前,建议先备份数据库以防止数据丢失。使用Oracle提供的备份工具或通过创建表的副本来实现数据备份
    的头像 发表于 11-21 11:33 1875次阅读

    oracle更新clob字段sql语句

    在Oracle中,更新CLOB字段可以使用UPDATE语句。CLOB字段是用于存储大量文本数据的数据类型,可以存储最多4GB的数据。下面是一些详细的信息和示例。 UPDATE语法: UPDATE
    的头像 发表于 11-21 11:29 2866次阅读

    oracle更新clob字段脚本写法

    在Oracle中更新CLOB字段需要使用PL/SQL块或SQL语句。下面是更新CLOB字段的不同方法和示例。 方法一:使用PL/SQL块更新CLOB字段 DECLARE clob_var CLOB
    的头像 发表于 11-21 11:28 1866次阅读

    clob字段怎么insert

    当涉及到插入含有CLOB字段的数据时,需要采用特定的语法和方法来实现。本文将详细介绍如何插入CLOB字段的数据,并提供了一个详细的示例。 一、了解CLOB字段: CLOB(Character
    的头像 发表于 11-21 11:27 2219次阅读

    clob 类型字段的内容类型

    CLOB(Character Large Object)类型字段是一种用于存储大量文本数据的数据库字段类型。CLOB字段可以存储任意长度的字符数据,通常用于存储较长的文本文档、XML文档、JSON
    的头像 发表于 11-21 11:26 958次阅读

    数据库clob类型的字段怎么取

    数据库中的 CLOB(Character Large Object)类型字段存储的是大量的字符数据,如文本文件、XML 文件、图像等。要获取 CLOB 类型字段的值,可以使用以
    的头像 发表于 11-21 10:47 1600次阅读

    怎么把clob字段转换为字符串

    CLOB字段是一种用于保存大量文本的数据类型,通常用于存储超过4000个字符的内容。在某些情况下,我们可能需要将CLOB字段转换为字符串进行处理或展示。 在Oracle数据库中,将CLOB字段转换
    的头像 发表于 11-21 10:46 5697次阅读

    oracle怎么把clob字段转换为字符串

    将CLOB字段转换为字符串,可以使用PL/SQL中的DBMS_LOB包提供的函数来实现。 在Oracle数据库中,CLOB(Character Large Object)是用于存储大量字符数据
    的头像 发表于 11-21 10:32 5526次阅读

    什么是DeepFlow?DeepFlow的协议能力解析

    在本例中,被监控 HTTP API 的响应消息为 JSON 格式,当 API 出错时 HTTP 协议的状态码可能仍然是 200,确切的错误信息通过 JSON 中的 OPT_STATUS 等字段返回
    的头像 发表于 11-03 12:31 2407次阅读
    什么是DeepFlow?DeepFlow的<b class='flag-5'>协议</b>能力解析