PCIE系统标准体系结构解读(六):ACK/NAK 协议

2024-03-15 00:30

本文主要是介绍PCIE系统标准体系结构解读(六):ACK/NAK 协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

主要解释如何使用ACK DLLP来确认TLP的接收,如何使用NAK DLLP表示接收的TLP有错误,以及重发TLP的规则。

1.6.1 ACK/NAK协议的基本组成

 

1.6.2 ACK/NAK协议中发送器的基本组成

下图举例说明了与出站TLP和入站ACK/NAK DLLP的处理有关的发送器数据链路层基本组成。

1.6.2.1 重放缓冲区

重放缓冲区存储TLP的所有字段,包括与数据链路层相关的序列号和LCRC字段。在发送之前,TLP一直按照从处理层传送过来的顺序存储。重放缓冲区中每个TLP都含有一个序列号,该序列号比保存在缓冲区中的前一个TLP包的序列号递增1。

当发送器收到一个由ACK DLLP表示的TLP已经成功抵达接收器的确认时,它就会清除缓冲区中的这些TLP。另一方面,如果收到一个NAK DLLP,它就会重发缓冲区中的内容。

1.6.2.2 NEXT_TRANSMIT_SEQ计数器

该计数器为每个将发送的新TLP生成所分配的序列号。该计数器为12比特的计数器,在复位或数据链路层处于非活动状态时,将它初始化为0。它的计数值可以一直递增到4095,然后反转回到0。

1.6.2.3 LCRC生成器

LCRC生成器为TLP数据包提供32比特的LCRC。此LCRC使用TLP的所有字段,包括头、数据有效载荷、ECRC和序列号计算出来的。接收器使用TLP的LCRC字段检查收到的TLP中的CRC错误。

1.6.2.4 REPLAY_NUM计数器

这个2比特的计数器保存因收到NAK DLLP或REPLAY_TIMER超时而尝试重发的次数。当REPLAY_NUM计数器的计数值从11b翻转回00b时,数据链路层会触发一次物理层的链路重新定向。它回等到重新定向结束之后,再次尝试重发TLP。REPLAY_NUM计数器在复位或数据链路层处于非活动状态时被初始化为00b。无论何时收到ACK,也会将其复位,表示正发送的TLP正在进行转发。

1.6.2.5 REPLAY_TIMER

REPLAY_TIMER用来度量从发出TLP到收到对应的ACK或NAK DLLP的时间。在发送任意TLP的最后一个字符时,REPLAY_TIMER开始计时。每次当重放缓冲区中有未完成的TLP且收到的ACK DLLP涉及一个仍在重放缓冲区中的TLP时,REPLAY_TIMER从0开始重新计时。当重放缓冲区中没有未完成的TLP时,或者收到的每个NAK满足重启条件,或者当REPLAY_TIMER计时已满时,REPLAY_TIMER重新复位到0并保持。在重新定向期间,REPLAY_TIMER不再计数。

1.6.2.6 ACKD_SEQ计数器

12比特的寄存器跟踪或保存最近收到的ACK或NAK DLLP的序列号。在复位或数据链路层不活动时,它被初始化为全1。这一寄存器要用收到的ACK或NAK DLLP中的AckNak_Seq_Num字段来更新,并将ACKD_SEQ计数与NEXT_TRANSMIT_SEQ计数进行比较。

如果(NEXT_TRANSMIT_SEQ - ACKD_SEQ)除以4096的余数大于等于2048,则数据链路层不再接收来自处理层的新TLP,直到此不等式不再成立。另外,报告发现一个致命的、无法修正的数据链路层协议错误。如果NEXT_TRANSMIT_SEQ和ACKD_SEQ之间的间隔大于2047,这种错误就会发生。

ACKD_SEQ计数也可以用来检查正在发送的TLP否认转发进度。如果经过3次额外的重发尝试之后,转发进度没有变化,那么要重新定向链路。

1.6.2.7 DLLP CRC检查

这一部件能够检查接收器返回的DLLP中的CRC错误。对完好的DLLP做进一步处理。如果检测到DLLP CRC错误,则丢弃该DLLP并报告错误,不再采取进一步的行动。

定义:当物理层报告链路不能使用或没有设备连接到端口时,数据链路层处于非活动状态。当链路定向和状况状态机(Link Training and Status state machine,LTSSM)处于Link-Up = 0的检测(Detect)、轮询(Polling)、配置(Configuration)、复位(Reset)或回环(LoopBack)状态时,物理层处于不能使用状态。当数据链路层处于非活动状态时,将数据链路层状态机初始化为默认值并将重放缓冲区清空。当物理层报告Link-Up=1并且链路控制寄存器中的链路禁用(Link Disable)比特等于0时,数据链路层退出非活动状态。

1.6.3 ACK/NAK协议中接收器的基本组成

下图展示了与进站TLP和出站ACK/NAK DLLP处理有关的接收器数据链路层的基本组成。

1.6.3.1 接收缓冲区

在进行TLP CRC和序列号检查时,接收缓冲区临时存放接收的TLP。如果没有错误,TLP会被处理并且发送至接收器的处理层。如果有和TLP相关的错误,则丢弃该TLP并且安排一个NAK DLLP。如果此TLP是重复的TLP,则丢弃该TLP并且安排一个ACK TLLP。如果该TLP是一个无效的TLP,则丢弃它并且不再采取进一步的行动。

1.6.3.2 LCRC错误检查

使用TLP的32比特LCRC字段来检查收到的TLP中的LCRC错误。

1.6.3.3 NEXT_RCV_SEQ计数器

12比特的NEXT_RCV_SEQ计数器跟踪预计的下一个TLP的序列号。复位或数据链路层处于非活动状态时,将此计数器初始化为0.对接收到的每个转发至处理层的、完好的TLP,此计数器自动加1。当计数器的值达到4095时,计数器翻转回0。当接收到的TLP有CRC错误、或是无效的TLP、或是序列号不正确的TLP时,计数器的值不变。

1.6.3.4 序列号检查

CRC错误检查后,这一部件验证收到的TLP的序列号与NEXT_RCV_SEQ计数器的值是否匹配。

如果TLP的序列号等于NEXT_RCV_SEQ计数器的值,则接收、处理并且转发该TLP至处理层。NEXT_RCV_SEQ的值加1。接收器继续处理入站的TLP,在ACKNAK_LATENCY_TIMER没有计满或超出其设置值之前,接收器不必翻译ACK DLLP。

如果TLP的序列号是比NEXT_RCV_SEQ的值早的一个序列号,并且与NEXT_RCV_SEQ值之间的间隔小于2048,那么该TLP为一重复的TLP。丢弃它并安排一个ACK DLLP返回发送器。

如果TLP的序列号是比NEXT_RCV_SEQ值晚的一个序列号,或者任何其他不同于以上两种情况的情况,则丢弃该TLP,并可能安排一个NAK DLLP返回发送器。

1.6.3.5 NEXT_SCHEDULED标志

当接收器安排一个NAK DLLP返回远程发送器时,将设置NAK_SCHEDULED标志。当接收器见到与之前NAK要求重发的TLP有关的第一个TLP时,它将清除NAK_SCHEDULED标志。对于在NAK_SCHEDULED标志置位期间收到的坏TLP,接收器是否应该设计另外一个NAK DLLP方面,规范没有明确规定。

1.6.3.6 ACKNAK_LATENCY_TIMER定时器

ACKNAK_LATENCY_TIMER监控从安排最后一个ACK或NAK DLLP返回远程发送器开始所经历的时间。接收器接收器使用此定时器确保当定时器期满或超出其设定值时,它能够迅速处理TLP并返回一个ACK或NAK DLLP。

1.6.3.7 ACK/NAK DLLP生成器

这一部件根据LCRC或序列号校验部分的命令生成ACK或NAK DLLP。ACK或NAK DLLP包含一个由NEXT_RCV_SEQ计数器获得的AckNak_Seq_Num[11:0]字段。ACK或NAK DLLP含有的AckNak_Seq_Num[11:0]的值等于NEXT_RCV_SEQ的值减1。

1.6.4 ACK/NAK DLLP的格式

下图展示了一个ACK或NAK的DLLP的格式。

字段名

头字节/比特

DLLP的功能

AckNak_Seq_Num[11:0]

字节3的比特7:0

字节2的比特3:0

对于ACK DLLP:对于接受的序列号等于早于NEXT_RCV_SEQ计数值的TLP,使用NEXT_RCV_SEQ-1

对于NAK DLLP:与CRC校验失败有关的TLP,使用NEXT_RCV_SEQ-1;对于接收的序列号晚于NEXT_RCV_SEQ计数值的TLP,使用NEXT_RCV_SEQ-1

类型[7:0]

字节0的比特7:0

指出DLLP的类型,对于Ack/Nak DLLP:

0000 0000b = ACK DLLP

0001 0000b = NAK DLLP

16比特的CRC

字节5的比特7:0

字节4的比特7:0

用来保护DLLP内容的16比特CRC,根据ACK/NAK的字节0~3的内容计算的

 

这篇关于PCIE系统标准体系结构解读(六):ACK/NAK 协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/810222

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识