4. CCIX传输层
开篇中提过,CCIX可以看作两个主要规范,分别是CCIX协议规范和CCIX传输规范。
CCIX 协议规范包含CCIX 协议层和CCIX链接层。这些层规定缓存一致性协议、报文发送、流控和CCIX 传输部分的协议。这正是第三章中的内容。
CCIX 传输规范包含CCIX 和PCIe事务层,PCIe 数据链路层,和CCIX 物理层。这些层负责器件间的物理连接,包括速率和带宽协商,传输包错误检测和重试,和初始包编码协议。这是第四章的主要内容。
开始学习这章之前,再来复习一下CCIX的分层架构。
从图中可以看出,在CCIX传输规范中,除了添加了CCIX事务层,作为对PCIe事务层的扩展或者替换,而其它各层均遵循复用PCIe标准。按惯例,我们重点看看CCIX事务层,其它部分略过。
4.1 介绍
CCIX规范中使用数据包在CCIX链路层(CCIX Link Layer)和CCIX事务层(CCIX Transaction Layer)之间传递信息。
CCIX传输层(Transport Layer)分为两个部分:一个处理出站(Outbound)信息,另一个处理入站(Inbound)信息。
CCIX使用数据包在CCIX链路层和CCIX事务层之间传递信息。在发送端,当传输的数据包在事务层(Transaction Layer)、数据链路层(Link Layer)和物理层(Physical Layer)中向下游流动时,它们被扩展,需要加上在这些层处理数据包所需的附加信息。在接收端,发生相反的过程,包从其物理层传输到数据链路层,最后转换为可由接收设备的事务层处理的形式。
这也是分层架构的基本理念,每一层各司其职,只负责处理本层的任务。在传输端,各层把上一层的数据做为本层的负载,加上本层所需的信息,传输给下一层;在接收端,各层把本层所需要的信息剥离出来,并进行处理,然后把其余的数据传输给上一层。通过分层架构,可以很好的对规范进行划分,从而简化设计。
4.1.1 CCIX事务层
CCIX规范定义了自己的事务层,替换了PCIe的事务层,或者说CCIX事务层是一个简化的PCIe事务层,其中仅支持以下的事务层数据包(Transaction Layer Packets,后面简称TLPs):
- 优化的TLP
- PCIe兼容的TLP
CCIX事务层的主要职责是组装和拆分TLP。
- 在接收路径上,CCIX事务层在将TLP转发到CCIX链路层之前,检查TLP的完整性。
- 对于PCIe兼容的TLP,PCIe基本规范中规定的PCIe事务层检查适用。
- 对于优化的TLP,指定了一组新的CCIX事务层检查。
CCIX事务层还负责用基于信用的流量控制方式去管理CCIX TLP。在接收路径上,为通过数据完整性检查,并转发到协议层的CCIX TLP返回已发布的流控制信用。在发送路径上,实现了一个信用门(credit gate),以基于可用的发布信用控制CCIX TLP的流量。
4.1.2 PCIe事务层
CCIX规范不修改PCIe事务层。
4.1.3 PCIe数据链路层
CCIX规范不修改PCIe数据链路层,而是按原样使用它。PCIe数据链路层充当PCIe和CCIX事务以及CCIX物理层之间的中间层。数据链路层的主要职责包括链路管理和数据完整性,包括错误检测和错误纠正。
4.1.4 CCIX物理层
CCIX物理层以特定于实现的格式与PCIe数据链路层交换数据包信息。该层负责将从PCIe数据链路层接收的数据包信息转换为适当的序列化格式,并以与连接到链路另一侧的设备兼容的数据速率和PCIe宽度在CCIX链路上传输。
CCIX物理层定义了两种物理层类型。CCIX组件只需要支持其中一种:
- PCIe PHY:这种PHY类型符合PCIe基本规范
- 扩展数据速率(Extended Data Rate,EDR):这种PHY类型支持PCIe基本规范的所有要求,具有16.0 GT/s的能力,并将支持的数据速率扩展到20.0 GT/s和25.0 GT/s。
4.2 事务层
4.2.1 CCIX事务层架构
CCIX事务层中至少要有一个PCIe虚拟通道(Virtual Channel,VC),也就是VC0,用来交换PCIe TLP。
CCIX事务层还应该有一个CCIX虚拟通道(CCIX VC),用来交换CCIX TLP,但不能是VC0。
4.2.2 事务层协议 – 数据包定义
CCIX事务层必须支持PCIe兼容的TLP,可以选择支持优化的TLP。
PCIe兼容TLP的格式如下:
- 消息路由字段必须设置为010b–按ID路由。
- 所有CCIX TLP的供应商ID字段等于CCID。
- PCIe兼容TLP的总长度大于4 DW。因此,TLP Fmt字段为011b。Length[9:0]是供应商定义消息的负载中DW总数
- 上图TLP头中DW3和数据负载格式在第三章中定义
优化的TLP格式,且须遵循的规则:
- 优化的TLP要求是4-byte对齐,且4-byte增量
- 优化的TLP由1 DW TLP头部分和最多可包含127 DW的TLP有效载荷部分组成。
- 字节0的第7位始终为0b
- Type[0]字段指示CCIX硬件规范版本,目前只有1.0版本
- TC [2:0]字段,Traffic Class,流量分类
- Length[6:0]是负载包含的DW数目
CCIX允许在一个TLP中打包两个或多个协议消息,从而使协议消息传输的开销最小化。只有当所有协议消息都具有公共CCIX链路时,才支持打包协议消息。对于CCIX事务层来说,打包的消息看起来仍然像一个带负载的TLP。多协议消息的信息在CCIX链路层内编码/解码,对事务层透明。
所有CCIX设备都需要支持CCIXVC的PCIe兼容TLP格式。只有当链路两端都支持优化TLP格式功能时,才可以在CCIX VC上交换优化的TLP。
在PCIe设备发现(discovery)过程中,可以通过读取DVSEC寄存器来判断是否支持CCIX。
4.2.3 CCIX虚拟通道
在正常工作条件下,CCIX VC将仅发送和接收CCIX TLP。CCIX VC为CCIXTLP实现了一个先进先出(FIFO)队列。CCIX VC应当规定一个posted流量控制信用值。这样,设计时FIFO队列的大小就可以确定了。
CCIX VC还应当规定一个non-posted流量控制信用值。CCIX VC上一般预计不会有non-posted TLPs,但是一旦接收到这些TLP,就需要一些资源处理他们。
插播一段,Non-posted(非转发)事务和Posted(转发)事务都是PCIe TLP(事务层包)类型。Non-posted事务分为两个部分,首先是发送端向接收端发送TLP请求,接收端接收到请求完成后向发送端发送完成TLP。Non-posted事务必须等待接收到完成TLP,PCIe总线才能结束当前的TLP。PostedTLP不需要完成TLP返回,此种方式中,TLP还没达到最终目的地之前,PCIe总线就可以结束当前的事务。
4.2.4 接收到的TLP的处理
CCIX事务层接收到的TLP处理流程如下图:
从数据链路层接收到TLP后,先通过TC[2:0]判断是分发给PCIe虚拟通道还是CCIX虚拟通道。
补充一点,TC 是数据包的头内的一个3-bit的字段。用来将流量分成8种(TC0-TC7)不同的类别,本地应用软件和系统软件根据性能要求确定某个TLP使用什么样的TC标志。虚拟通道是物理缓冲区,它通过使用发送和接收虚拟信道缓冲区,提供一种在链路上实现多个独立数据流的方法。PCIe设备可以实现最多8个VC缓冲区(VC0-VC7)。并且必须要实现 VC0,即最通用的服务类别。设备或交换器需要实现TC/VC映射逻辑,通过该逻辑形成对应关系,把给定的TC号的TLP使用特定的VC号的缓冲区通过链路发送出去。多个TC可以对应一个VC,因而可以使用有限数目的VC缓冲区来降低设备成本。系统软件通过配置寄存器设置 TC/VC 的映射。应用软件确定TLP的TC标志以及设置满足性能要求的TC/VC的映射关系。最简单的情况可以将 TC/VC 映射寄存器设置为TC到VC的一对一关系。
CCIX事务层的行为由寄存器TransactionLayerControl(这个寄存器在第六章DVSEC中描述)的比特位OptimizedTLPGenerationReceptionRoutingEnable来控制。如果这个比特位被设定(set),发送方以优化的TLP格式生成CCIXTLP,传输路径中的交换机和接收方接受优化的TLP,所有接收方都将拒绝PCIe兼容的TLP。如果这个比特位被清除(clear),发送方以PCIe兼容TLP格式生成CCIX TLP,传输路径中的交换机和接收方接受PCIe兼容TLP,所有接收方都将拒绝优化的TLP。
4.2.5 事务排序规则
CCIX事务层应遵循PCIe基本规范中对事务排序的所有要求。在正常工作条件下,CCIX VC将仅发送和接收PCIe兼容的TLP或优化的TLP。
4.2.6 虚拟通道机制
CCIX事务层应遵循PCIe基本规范中对虚拟通道机制的所有要求。VC机制不区分PCIe VC和CCIXVC。后面有时间再分析PCIe的VC机制。
4.2.7 事务层流量控制
CCIX事务层应遵循PCIe基本规范中对流量控制的所有要求,除去那些仅适用于CCIX VC行为的异常。
4.2.8 数据完整性
CCIX事务层应遵循PCIe基本规范中对数据中毒(Data Poisoning)机制的所有要求。优化的TLP格式不支持PCIe数据中毒机制。
CCIX事务层应遵循PCIe基本规范中关于基于端到端CRC(End-to-End CRC)的数据完整性机制的所有要求。优化的TLP格式不支持ECRC机制。
4.2.9 完成超时机制
CCIX事务层应遵循PCIe基本规范中对完成超时(Completion Timeout)机制的所有要求。
4.2.10 链接状态依赖
CCIX事务层应遵循PCIe基本规范中对链接状态依赖(Link Status Dependencies)机制的所有要求。
4.3 CCIX数据链路层
是不是叫PCIe数据链路层更为合适?
4.4 CCIX物理层逻辑块
4.4.1 介绍
物理层分为逻辑子块和电气子块。CCIX传输规范扩展了PCIe基本规范中规定的逻辑和电气子块。
4.4.2 CCIX逻辑子模块
CCIX物理层支持16.0 GT/s,20.0 GT/s和25.0 GT/s的传输速率。
支持扩展数据速率的CCIX设备可以通过控制ESMControl.ESMEnable比特位(从0变成1),来进入扩展速率模式(Extended Speed Mode,ESM)。
4.4.3 重定时器
关于PCIe Retimer,随着PCIe协议的不断升级,频率越来越高,对数据在线路中的传输长度提出了强烈挑战。为了解决这一问题,PCIe协议在4.0版本种提出了Retimer。Retimer实际上是一种协议感知设备,能更好地将信号传输到更远。
总结:CCIX 传输规范包含CCIX事务层和PCIe 事务层,PCIe 数据链路层,和CCIX 物理层。这些层负责器件间的物理连接,包括速率和带宽协商,传输包错误检测和重试,和初始包编码协议。除去CCIX事务层,其它层均遵循PCIe标准。
老秦谈芯
老秦谈芯
推荐阅读
IC验证er一起学点设计模式(1)---单例模式
怎么在sequence中调用agent中的函数以及如何快速实验你的想法?
验证仿真提速系列--认识“时间”与平台速度定量分析
更多IC设计技术干货请关注IC设计技术专栏。
迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。