一种支持长短两种报文格式的重传缓冲装置

专利查询6月前  55



1.本发明涉及片间直连接口报文传输技术领域,尤其涉及一种支持长短两种报文格式的重传缓冲装置。


背景技术:

2.随着计算机技术和集成电路技术的发展,单个处理器内部集成的核数不断增加。但是,由于当前超大规模集成电路技术的发展逐渐陷入瓶颈,晶体管的数量增长不再遵循摩尔定律,多核技术的发展也受到限制。为了高效利用芯片上的资源,片间直连接口技术逐渐流行起来。直连接口能够实现处理器之间直接互连,并在保证处理器间通信带宽的前提下降低处理器间的通信延迟。目前大多数高端服务器产品都能够提供多个处理器以直接互连的方式构建多路服务器系统。例如intel公司的qpi总线,amd公司的超传输(hypertransport,ht)总线以及nvidia公司用于一致性连接多个gpu的nvlink总线等。直接互连的多路服务器能够组成一个支持全局数据共享的系统,使多核处理器之间共享全局内存地址空间,扩大了单个处理器的存储空间,有利于各处理器之间协同工作,共享计算资源和提高工作效率。但是,处理器之间数据通信的访问路径更远,延迟时间更长,对直连接口的延迟和带宽提出了更高的要求。
3.为了满足多核处理器之间数据传输越来越高的带宽与维护片上cache一致性互连需求,直连接口必须和处理器间的存储一致性协议紧密耦合。因此,报文格式的定义必须考虑直连链路的位宽,同时要尽量提高有效负载在链路微包中所占的比率,避免链路带宽的损失。直连通路是由应用层、传输层、数据链路层和物理层构成,在传输报文的过程中,为了满足相邻层次各自的位宽的要求,各层次必须对报文进行不断的拆分、填充和组装。如果没有对报文格式和传输方式进行设计,就会导致传输报文的有效数据负载率大大降低。其中,维护cache一致性的报文通常为短报文,并以cacheline(高速缓存块)的粒度传输数据,在带宽和延迟优化上与大块数据传输相区别,后者很容易实现链路较高的带宽利用率,而短报文的带宽利用率通常很难提高。为了区别长、短报文,可将长报文定义为一次发送多个cacheline大小的大块数据。
4.在片间直连接口中提高带宽利用率对于处理器间数据通信至关重要。目前,在直连通路中维护cache一致性的报文通常以一个cacheline大小的短报文为基本单位进行传输,即直连通路在传输两个及以上cacheline大小的长报文时会将长报文转化为多个cacheline大小的短报文。为了进一步提高有效数据负载率,深入分析短报文在直连通路各个层次内部的基本组成和传输状况十分必要。
5.直连通路的应用层由链路接口单元构成,用于对直连接口报文的拆分、发送以及接收、组装。例如,一个64bcacheline的报文通常会被拆分成一个头微片,以及四个数据微片,每一个微片大小为144位,其中头微片包含源设备编号、目的设备编号、操作码等各种控制信息;每一个数据微片包含一个四分之一cacheline大小的报文,字节使能和错误信息等;各微片之间的传输不允许插入其他数据,但允许插入气泡。直连通路的传输层的发送单
元接收并缓存应用层传送的微片,并进行从微片到序列的报文格式转换以及用于流量控制的信用机制等。一个数据微片或者头微片会统一转换成一个包含两个背对背传输的80位序列的数据序列,其中数据序列包含微片、微包类型和保留域等信息。背对背传输即是指一个数据序列的两个背对背传输的序列之间的传输不能插入气泡。然而,每一个数据序列之间可以插入气泡,这导致了长报文的数据序列传输不能长时间完全独占传输通道,很容易被中断。
6.直连通路的数据链路层发送单元由滑动窗口协议、重传缓冲、特殊微包产生、发送数据源仲裁以及crc校验与物理微片生成与发送缓冲区等逻辑模块构成。首先,数据链路层发送单元需要接收并拆分来自传输层的数据序列,并将其组装成包含crc校验信息、数据负载、特征信息、特征码的微包,微包大小为192位。其次,假设数据链路层的物理微片为96位且物理层数据接口大小为64位,那么必须先将192位微包转化为2个96位物理微片,接着通过组装、拼接将2个96位的物理微片转化为3个64位物理微片。两种类型的物理微片承载的内容是相同的,只是位宽不一致。最后,滑动窗口协议单元会对运输头微片和数据微片的物理微片进行编号,将物理微片存储在重传缓冲中和启动超时计数器。当发生超时事件时,即没有接收到接收方的响应信息,就会重传相应编号的微包。直连通路的物理层发送单元会对物理微片进行编码、加扰,并串转换和差分驱动等操作。同样的,直连通路的接收单元即为发送单元的逆操作。
7.综上,现有技术中直连通路的报文传输方式会存在以下问题:
8.1、带宽利用率低。如由于数据链路层的微包大小为192位,有效数据负载为144位,那么带宽利用率只有144/192=75%。
9.2、不能支持长报文高效传输。由于报文传输是以一个cacheline大小为单位,因而对于大块数据传输来说,会被分成很多短报文,而对于每一个短报文都会添加头微片以及其他控制信息,会增加大量的冗余信息。
10.3、数据传输率低。由于每一个头微片、数据微片以及数据序列,微包、物理微片的传输都允许插入气泡,那么长报文传输就可能会被多次中断,因此传输长报文无法获取高的数据传输率。


技术实现要素:

11.本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种支持长短两种报文格式且传输效率以及带宽利用率高的重传缓冲装置。
12.为解决上述技术问题,本发明提出的技术方案为:
13.一种支持长短两种报文格式的重传缓冲装置,设置在链路层数据通路的发送端,包括:
14.重传缓冲区;
15.接收模块,用于接收发送给物理层的物理微片,识别所述物理微片所属报文类型;
16.状态机控制模块,用于通过写状态机根据所述物理微片所属报文类型控制在所述重传缓冲区中选取不同存储体进行存储,以及当发生超时重传时,通过读状态机根据所述物理微片所属报文类型控制将所述重传缓冲区中物理微片读出。
17.进一步的,还包括与所述接收模块的输入端连接的微包构建模块,用于接收来自
传输层的数据序列并转换为微包格式的物理微片,其中短报文微包具体包括crc校验信息、数据负载、特征信息以及特征码,所述数据负载为应用层的头微片或者数据微片,所述特征信息为用于滑动窗口协议的信息,所述特征码用于区分微包类型以及确定各微包的界限;长报文微包具体包括头微包、数据微包以及crc校验码,所述头微包用于记录微包的信息,所述数据微包用于运输3个cacheline大小的有效数据,所述crc校验码用于信息校验。
18.进一步的,将所述长报文微包转换为物理微片的过程中,将所述头微包转换为3个物理微片,每一个所述数据微包转换为2个物理微片,所述crc校验码转换为1个物理微片,空余位保留。
19.进一步的,所述重传缓冲区包括随机访问存储体rbuf_ram,长报文头微包、短报文存储在所述随机访问存储体rbuf_ram中,并使用数组seqno_addr存储所述长报文头微包在所述随机访问存储体rbuf_ram中的首地址以及在超时重传时所述随机访问存储体rbuf_ram的起始读地址指针raddr_pointer,每次重传时,根据期待返回的应答序列号索引所述数组seqno_addr,得到所述起始读地址指针raddr_pointer。
20.进一步的,所述重传缓冲区中,存储长报文的存储体包括用于存放所述数据微包的存储阵列rbuf_msg_ram,以及用于指示所述数据微包在所述存储阵列rbuf_msg_ram中位置的数组seqno_msg_addr,以及在超时重传时所述存储阵列rbuf_msg_ram的起始读地址指针msg_raddr_pointer;使用数组seqno_msg_v记录每个微包是否是长报文对应微包,当发送长报文对应微包时,将数组元素seqno_msg_v[current_send_seq]置位,其中current_send_seq为当前发送滑动窗口序列号;当接收到有效的应答序列号,则清除接收到的应答序列号与期待收到的应答序列号之间的所有序列号对应的所述数组seqno_msg_v的值。
[0021]
进一步的,还包括为所述重传缓冲区中重传队列的每个微包设置有一个响应超时计数器,用于当判断到接收方丢弃报文或者网络拥塞导致超时,控制重传丢弃的报文。
[0022]
进一步的,还包括与所述重传缓冲区连接的链路发送缓冲区,所述链路发送缓冲区包括第一缓存区xm_fifo和第二缓存区xm_fifo_msg,所述第一缓存区xmfifo用于存储要发送的长报文头微包和短报文;所述第二缓存区xm_fifo_msg用于存储长报文的数据微包。
[0023]
进一步的,所述状态机控制模块中,通过读状态机、写状态机监控所述重传缓冲区是否满,根据监控状态对不同类型的报文进行对应的读出和写入操作以及判断是否进行超时重传,以实现超时重传和支持长短两种报文的传输。
[0024]
进一步的,所述状态机控制模块中读状态机包括:等待重传状态、重传条件判断状态、读buffer第一拍状态、读buffer第二拍状态、等待发送缓冲区不满状态以及读长报文数据微包状态,所述等待重传状态时,如果重传申请未被请求仲裁逻辑批准,则继续在当前状态等待,否则重传,进入所述重传条件判断状态;所述重传条件判断状态时,将判断链路发送缓冲区是否满作为重传条件,当满足所述重传条件时,状态不转移,否则进入所述读buffer第一拍状态;所述读buffer第一拍状态时,从所述重传缓冲区中读出重传微包的第一个phit,以通过链路层微包发送单元发送到链路发送缓冲区中,进入所述读buffer第二拍状态;
[0025]
所述读buffer第二拍状态时,如果所述重传缓冲区中所有存储的微包被读出并送到物理层,则回到等待超时状态,否则继续读取剩余的微包以进行重传,且如果当前链路接收fifo不满,则直接回到所述读buffer第一拍状态,继续发送下一个重传微包的第一个
phit,否则进入所述等待发送缓冲区不满状态,所述等待发送缓冲区不满状态时,等待链路发送fifo不满后,再回到所述读buffer第一拍状态,发送下一个重传微包的第一个phit;所述读长报文数据微包状态时,读出长报文数据微包,当对应序号长报文数据微包都读出且所有待重传微包发送完时,进入等待重传状态,若还有待重传微包发送时,进入所述重传条件判断状态。
[0026]
进一步的,所述状态机控制模块中读状态机的状态转换条件包括以下任意一种或多种:
[0027]
状态转换条件1:重传请求未被授权,继续保持在所述等待重传状态;
[0028]
状态转换条件2:重传请求被授权,进入所述重传条件判断状态;
[0029]
状态转换条件3:根据等待重传的微包的报文类型进行条件判断,如果是短报文微包,且数据链路缓冲区中用于存储长报文头微包和短报文的第一缓存区xm_fifo满则继续保持在所述重传条件判断状态;如果是长报文微包,且所述第一缓存区xm_fifo满或者数据链路缓冲区中用于存储长报文的数据微包的第二缓存区xm_fifo_msg满,则继续保持在所述重传条件判断状态;
[0030]
状态转换条件4:如果是短报文微包,且所述第一缓存区xm_fifo不满则进入所述读rbuffer第一拍状态;如果是长报文微包,且所述第一缓存区xm_fifo不满且所述第二缓存区xm_fifo_msg不满,则进入所述读rbuffer第一拍状态;
[0031]
状态转换条件5:无条件进入所述读rbuffer第二拍状态;
[0032]
状态转换条件6:前一时刻发送的是短报文微包,待发送的也是短报文微包,且所述第一缓存区xm_fifo不满,则进入所述读rbuffer第一拍状态;
[0033]
状态转换条件7:前一时刻发送的是短报文微包,待发送的也是短报文微包,且所述缓存区xm_fifo满,则进入所述等待发送缓冲不满状态;
[0034]
状态转换条件8:前一时刻发送的是长报文微包,则进入所述读长报文数据微包状态;
[0035]
状态转换条件9:前一时刻发送的是短报文微包,且所有微包已经发送完,则进入所述等待超时状态;
[0036]
状态转换条件10:前一时刻发送的是短报文微包,待发送的是长报文微包,则进入所述重传条件判断状态;
[0037]
状态转换条件11:若所述第一缓存区xm_fifo满,则保持在所述等待发送缓冲不满状态;
[0038]
状态转换条件12:若所述第一缓存区xm_fifo不满,则进入所述读rbuffer第一拍状态;
[0039]
状态转换条件13:当前正在发送长报文的数据phit,且所述数据phit未发送完;
[0040]
状态转换条件14:长报文的数据phit已经发送完,且未发送完所有微包,则进入所述重传条件判断状态;
[0041]
状态转换条件15:长报文的数据phit已经发送完,且所有微包已经发送完,则进入所述等待超时状态。
[0042]
与现有技术相比,本发明的优点在于:
[0043]
1、本发明通过重传缓冲装置接收发送给物理层的物理微片,并根据微片所属报文
类型的不同,通过重传缓冲装置的写状态机控制选取存储不同报文的存储体进行存储,当发生超时重传时,通过重传缓冲装置的读状态机控制不同报文的物理微片的读出,可以支持长短两种报文的重传缓冲。
[0044]
2、本发明通过将长短不同类型的报文存储在不同的存储体中,可以支持长短两种报文,相比于传统只支持短报文重传缓冲方式,可以有效提高直连通路报文传输时的数据传输效率以及带宽利用率。
[0045]
3、本发明通过读、写状态机监控重传缓冲是否满,使得可以针对不同类型的报文对重传缓冲进行读出和写入操作以及判断是否应该进行超时重传,实现滑动窗口协议的超时重传和支持长短两种报文的传输。
附图说明
[0046]
图1是本实施例重传缓冲装置应用于直连接口数据链路层数据通路的结构原理示意图。
[0047]
图2是本实施例中支持长短两种报文格式的重传缓冲装置的结构原理示意图。
[0048]
图3是本实施例中短报文微包的结构示意图。
[0049]
图4是本实施例中长报文微包的结构示意图。
[0050]
图5是本实施例中长报文头微包和短报文读出的过程示意图。
[0051]
图6是本实施例中长报文数据微包读出的过程示意图。
[0052]
图7是本实施例中控制重传缓冲的读状态机的状态转换示意图。
具体实施方式
[0053]
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
[0054]
如图1、2所示,本实施例支持长短两种报文格式的重传缓冲装置,设置在链路层数据通路的发送端,包括:
[0055]
重传缓冲区;
[0056]
接收模块,用于接收发送给物理层的物理微片,识别物理微片所属报文类型;
[0057]
状态机控制模块,用于通过写状态机根据物理微片所属报文类型控制在重传缓冲区中选取不同存储体进行存储,以及当发生超时重传时,通过读状态机根据物理微片所属报文类型控制将重传缓冲区中物理微片读出。
[0058]
本实施例通过重传缓冲装置接收发送给物理层的物理微片,并根据微片所属报文类型的不同,通过重传缓冲装置的写状态机控制选取存储不同报文的存储体进行存储,当发生超时重传时,通过重传缓冲装置的读状态机控制不同报文的物理微片的读出,可以支持长短两种报文的重传缓冲,相比于传统只支持短报文重传缓冲方式,可以有效提高直连通路报文传输时的数据传输效率以及带宽利用率。
[0059]
本实施例上述重传缓冲装置以物理微片为存储单位,即数据链路层微包都以物理微片的形式存储在重传缓冲装置中,通过将长短不同类型的报文存储在不同的存储体中,以使得可以支持长短两种报文,同时,为了保证长报文在写入和读出的过程中不被打断,控制在写入或者读出一个长报文时组成长报文的各物理微片既不能插入其他数据也不能插
入气泡。
[0060]
本实施例上述重传缓冲装置作为数据链路层中滑动窗口重传协议的关键模块,进一步与物理微片生成模块、发送数据源仲裁模块以及链路发送缓冲区直接相连。
[0061]
本实施例中还包括与接收模块的输入端连接的微包构建模块,用于接收来自传输层的数据序列并转换为微包格式的物理微片,其中短报文微包具体包括crc校验信息、数据负载、特征信息以及特征码,微包大小为192位,数据负载为应用层的头微片或者数据微片,大小为144位;特征信息为用于滑动窗口协议的信息,如响应序列号、发送序列号、虚信道号等信息,特征码用于区分微包类型以及确定各微包的界限。短报文微包结构具体如图3所示。
[0062]
如图4所示,本实施例中长报文微包具体包括头微包、数据微包以及crc校验码,头微包用于记录微包的地址、序列号、信用值和微包类型等信息,数据微包用于运输3个cacheline大小的有效数据,crc校验码用于信息校验,可以根据生成多项式生成。当微包接收方根据crc校验码验证出错时,将微包丢弃并等待发送方超时重传正确的微包。长报文的有效负载具体包含头微包中来自应用层的头微片或数据微片。
[0063]
本实施例中,将长报文微包转换为物理微片的过程中,将头微包转换为3个物理微片,每一个数据微包转换为2个物理微片,crc校验码转换为1个物理微片,空余位保留。
[0064]
本实施例通过上述方式支持长报文的传输,能够有效提高带宽利用率。以运输3个cacheline大小的长报文为例,在物理层接收来自数据链路层的物理微片的过程中,3个cacheline大小的长报文经过拼接、组装最终会被转化为28个64位的物理微片,其中长报文微包的头微片会被转化为3个物理微片;长报文微包的数据微片会被转化为24个物理微片;剩下的一个物理微片用于传输crc校验码和保留域信息,即与传统的短报文传输相比,本实施例使用上述装置传输长报文的带宽有效利用率高达(144+24*64)/(28*64)=93.75%。
[0065]
本实施例中,重传缓冲区包括随机访问存储体rbuf_ram,如图5所示,长报文头微包、短报文存储在随机访问存储体rbuf_ram中,并使用数组seqno_addr[max_seq_no:0]存储长报文头微包在随机访问存储体rbuf_ram中的首地址以及在超时重传时随机访问存储体rbuf_ram的起始读地址指针raddr_pointer,seqno_addr数组的下标为滑动窗口协议的序列号,每次重传时,根据期待返回的应答序列号索引数组seqno_addr,得到起始读地址指针raddr_pointer。
[0066]
如图6所示,本实施例重传缓冲区中,存储长报文的存储体包括用于存放数据微包的存储阵列rbuf_msg_ram,以及用于指示数据微包在存储阵列rbuf_msg_ram中位置的数组seqno_msg_addr[max_seq_no:0],以及在超时重传时存储阵列rbuf_msg_ram的起始读地址指针msg_raddr_pointer;使用数组seqno_msg_v[max_seq_no:0]记录每个微包是否是长报文对应微包,当发送长报文对应微包时,将数组元素seqno_msg_v[current_send_seq]置位,其中current_send_seq为当前发送滑动窗口序列号;当接收到有效的应答序列号,由于接收到的应答序列号与期待收到的应答序列号之间的所有序列号对应的数组seqno_msg_v的值不再有效,则需要清除上述值,即清除接收到的应答序列号与期待收到的应答序列号之间的所有序列号对应的数组seqno_msg_v的值。
[0067]
本实施例中,还包括为重传缓冲区中重传队列的每个报文微包设置有一个响应超时计数器,用于当判断到接收方丢弃报文(如因crc检验出错等)或者网络拥塞等原因导致
超时,控制重传丢弃的报文。为了区分已发送和未发送的报文,进一步可以设置存储报文的最大容量小于滑动窗口的大小。
[0068]
本实施例中,还包括与重传缓冲区连接的链路发送缓冲区,链路发送缓冲区包括第一缓存区xm_fifo和第二缓存区xm_fifo_msg,第一缓存区xmfifo用于存储要发送的长报文头微包和短报文;第二缓存区xm_fifo_msg用于存储长报文的数据微包。
[0069]
如图1所示,本实施例直连接口数据链路层数据通路由接收端和发送端两部分组成,发送端设置有微包构建模块、微包管理模块、重传缓冲区(retry buffer)、链路发送缓冲区以及串行链路控制等功能模块构成。其中,微包构建模块用于接收来自传输层的数据序列并将其转换为微包格式的物理微片,微包管理模块主要用于产生链路控制、信约控制等特殊微包;链路发送缓冲区由第一缓存区xm_fifo和第二缓存区xm_fifo_msg组成,串行链路控制负责数据链路层微包数据格式与物理层接口协议数据格式之间相互转换。接收端则是发送端的逆操作,包括微包解构模块、微包检查模块以及串行链路控制模块等。
[0070]
本实施例中,状态机控制模块中,通过读状态机、写状态机监控重传缓冲区是否满,根据监控状态对不同类型的报文进行对应的读出和写入操作以及判断是否进行超时重传,以实现超时重传和支持长短两种报文的传输。
[0071]
如图7所示,本实施例中状态机控制模块中读状态机具体包括:等待重传状态(wait_re_trans)、重传条件判断状态(is_re_trans)、读rbuffer第一拍状态(read_rbuf_first)、读rbuffer第二拍状态(read_rbuf_second)、等待发送缓冲区不满状态(wait_not_full)、读长报文数据微包状态(read_rbuf_msg),其中:
[0072]
等待重传状态时,如果重传申请未被请求仲裁逻辑批准,则继续在当前状态等待,否则重传,进入重传条件判断状态;
[0073]
重传条件判断状态时,将判断链路发送缓冲区是否满作为重传条件,当满足重传条件时,状态不转移,否则进入读buffer第一拍状态。判断重传的条件是链路发送缓冲区是否满,由于长短报文微包长度不同,因此本实施例分两种情况:要么对于短报文微包,链路发送缓冲区是满的,要么对于长报文微包,链路发送缓冲区是满的,则配置使得当满足上述条件时状态不转移,否则进入读buffer第一拍状态。
[0074]
读buffer第一拍状态时,从重传缓冲区中读出重传微包的第一个phit,以通过链路层微包发送单元发送到链路发送缓冲区中,进入读buffer第二拍状态;
[0075]
读buffer第二拍状态时,如果重传缓冲区中所有存储的微包被读出并送到物理层,则说明重传缓冲区中所有的微包重传完毕,此时回到等待超时状态;如果重传缓冲区不空,则继续读取剩余的微包,将它们重传;如果此时链路接收fifo不满,则直接回到读buffer第一拍状态,继续发送下一个重传微包的第一个phit,否则进入等待发送缓冲区不满状态。;
[0076]
等待发送缓冲区不满状态时,等待链路发送fifo不满后,再回到读buffer第一拍状态,发送下一个重传微包的第一个phit;
[0077]
读长报文数据微包状态时,根据当前发送的序列号产生rbuf_msg_ram存储阵列的起始读地址指针msg_raddr_pointer,从rbuf_msg_ram存储阵列中读出长报文数据微包;当对应序号长报文数据微包都读出且所有待重传微包发送完时,进入等待重传状态;当对应序号长报文数据微包都读出且还有待重传微包发送时,进入重传条件判断状态。
[0078]
上述各状态的设置也可以根据实际需求进行增减或优化。
[0079]
本实施例中,状态机控制模块中读状态机具体包括以下状态转换条件:
[0080]
状态转换条件1:重传请求未被授权,继续保持在等待重传状态;
[0081]
状态转换条件2:重传请求被授权,进入重传条件判断状态;
[0082]
状态转换条件3:根据等待重传的微包的报文类型进行条件判断,如果是短报文微包,且数据链路缓冲区中用于存储长报文头微包和短报文的第一缓存区xm_fifo满则继续保持在重传条件判断状态;如果是长报文微包,且第一缓存区xm_fifo满或者数据链路缓冲区中用于存储长报文的数据微包的第二缓存区xm_fifo_msg满,则继续保持在重传条件判断状态;
[0083]
状态转换条件4:如果是短报文微包,且第一缓存区xm_fifo不满则进入读rbuffer第一拍状态;如果是长报文微包,且第一缓存区xm_fifo不满且第二缓存区xm_fifo_msg不满,则进入读rbuffer第一拍状态;
[0084]
状态转换条件5:无条件进入读rbuffer第二拍状态;
[0085]
状态转换条件6:前一时刻发送的是短报文微包,待发送的也是短报文微包,且第一缓存区xm_fifo不满,则进入读rbuffer第一拍状态;
[0086]
状态转换条件7:前一时刻发送的是短报文微包,待发送的也是短报文微包,且缓存区xm_fifo满,则进入等待发送缓冲不满状态;
[0087]
状态转换条件8:前一时刻发送的是长报文微包,则进入读长报文数据微包状态;
[0088]
状态转换条件9:前一时刻发送的是短报文微包,且所有微包已经发送完,则进入等待超时状态;
[0089]
状态转换条件10:前一时刻发送的是短报文微包,待发送的是长报文微包,则进入重传条件判断状态;
[0090]
状态转换条件11:若第一缓存区xm_fifo满,则保持在等待发送缓冲不满状态;
[0091]
状态转换条件12:若第一缓存区xm_fifo不满,则进入读rbuffer第一拍状态;
[0092]
状态转换条件13:当前正在发送长报文的数据phit,且数据phit未发送完;
[0093]
状态转换条件14:长报文的数据phit已经发送完,且未发送完所有微包,则进入重传条件判断状态;
[0094]
状态转换条件15:长报文的数据phit已经发送完,且所有微包已经发送完,则进入等待超时状态。
[0095]
上述条件中状态转换条件9的判断的优先级设置为高于状态转换条件6,7,8和10,各条件之间的优先级设置还可以根据实际需求配置。
[0096]
本实施例通过按照上述读、写状态机监控重传缓冲是否满,使得可以针对不同类型的报文对重传缓冲进行读出和写入操作以及判断是否应该进行超时重传,实现滑动窗口协议的超时重传和支持长短两种报文的传输。
[0097]
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。

技术特征:
1.一种支持长短两种报文格式的重传缓冲装置,设置在链路层数据通路的发送端,其特征在于,包括:重传缓冲区;接收模块,用于接收发送给物理层的物理微片,识别所述物理微片所属报文类型;状态机控制模块,用于通过写状态机根据所述物理微片所属报文类型控制在所述重传缓冲区中选取不同存储体进行存储,以及当发生超时重传时,通过读状态机根据所述物理微片所属报文类型控制将所述重传缓冲区中物理微片读出。2.根据权利要求1所述的支持长短两种报文格式的重传缓冲装置,其特征在于,还包括与所述接收模块的输入端连接的微包构建模块,用于接收来自传输层的数据序列并转换为微包格式的物理微片,其中短报文微包具体包括crc校验信息、数据负载、特征信息以及特征码,所述数据负载为应用层的头微片或者数据微片,所述特征信息为用于滑动窗口协议的信息,所述特征码用于区分微包类型以及确定各微包的界限;长报文微包具体包括头微包、数据微包以及crc校验码,所述头微包用于记录微包的信息,所述数据微包用于运输3个cachel ine大小的有效数据,所述crc校验码用于信息校验。3.根据权利要求2所述的支持长短两种报文格式的重传缓冲装置,其特征在于,将所述长报文微包转换为物理微片的过程中,将所述头微包转换为3个物理微片,每一个所述数据微包转换为2个物理微片,所述crc校验码转换为1个物理微片,空余位保留。4.根据权利要求2所述的支持长短两种报文格式的重传缓冲装置,其特征在于,所述重传缓冲区包括随机访问存储体rbuf_ram,长报文头微包、短报文存储在所述随机访问存储体rbuf_ram中,并使用数组seqno_addr存储所述长报文头微包在所述随机访问存储体rbuf_ram中的首地址以及在超时重传时所述随机访问存储体rbuf_ram的起始读地址指针raddr_pointer,每次重传时,根据期待返回的应答序列号索引所述数组seqno_addr,得到所述起始读地址指针raddr_pointer。5.根据权利要求4所述的支持长短两种报文格式的重传缓冲装置,其特征在于,所述重传缓冲区中,存储长报文的存储体包括用于存放所述数据微包的存储阵列rbuf_msg_ram,以及用于指示所述数据微包在所述存储阵列rbuf_msg_ram中位置的数组seqno_msg_addr,以及在超时重传时所述存储阵列rbuf_msg_ram的起始读地址指针msg_raddr_pointer;使用数组seqno_msg_v记录每个微包是否是长报文对应微包,当发送长报文对应微包时,将数组元素seqno_msg_v[current_send_seq]置位,其中current_send_seq为当前发送滑动窗口序列号;当接收到有效的应答序列号,则清除接收到的应答序列号与期待收到的应答序列号之间的所有序列号对应的所述数组seqno_msg_v的值。6.根据权利要求1~5中任意一项所述的支持长短两种报文格式的重传缓冲装置,其特征在于,还包括为所述重传缓冲区中重传队列的每个微包设置有一个响应超时计数器,用于当判断到接收方丢弃报文或者网络拥塞导致超时,控制重传丢弃的报文。7.根据权利要求1~5中任意一项的支持长短两种报文格式的重传缓冲装置,其特征在于,还包括与所述重传缓冲区连接的链路发送缓冲区,所述链路发送缓冲区包括第一缓存区xm_fifo和第二缓存区xm_fifo_msg,所述第一缓存区xmfifo用于存储要发送的长报文头微包和短报文;所述第二缓存区xm_fifo_msg用于存储长报文的数据微包。8.根据权利要求1~5中任意一项的支持长短两种报文格式的重传缓冲装置,其特征在
于,所述状态机控制模块中,通过读状态机、写状态机监控所述重传缓冲区是否满,根据监控状态对不同类型的报文进行对应的读出和写入操作以及判断是否进行超时重传,以实现超时重传和支持长短两种报文的传输。9.根据权利要求1~5中任意一项所述的支持长短两种报文格式的重传缓冲装置,其特征在于,所述状态机控制模块中读状态机包括:等待重传状态、重传条件判断状态、读buffer第一拍状态、读buffer第二拍状态、等待发送缓冲区不满状态以及读长报文数据微包状态,所述等待重传状态时,如果重传申请未被请求仲裁逻辑批准,则继续在当前状态等待,否则重传,进入所述重传条件判断状态;所述重传条件判断状态时,将判断链路发送缓冲区是否满作为重传条件,当满足所述重传条件时,状态不转移,否则进入所述读buffer第一拍状态;所述读buffer第一拍状态时,从所述重传缓冲区中读出重传微包的第一个phit,以通过链路层微包发送单元发送到链路发送缓冲区中,进入所述读buffer第二拍状态;所述读buffer第二拍状态时,如果所述重传缓冲区中所有存储的微包被读出并送到物理层,则回到等待超时状态,否则继续读取剩余的微包以进行重传,且如果当前链路接收fifo不满,则直接回到所述读buffer第一拍状态,继续发送下一个重传微包的第一个phit,否则进入所述等待发送缓冲区不满状态,所述等待发送缓冲区不满状态时,等待链路发送fifo不满后,再回到所述读buffer第一拍状态,发送下一个重传微包的第一个phit;所述读长报文数据微包状态时,读出长报文数据微包,当对应序号长报文数据微包都读出且所有待重传微包发送完时,进入等待重传状态,若还有待重传微包发送时,进入所述重传条件判断状态。10.根据权利要求9所述的支持长短两种报文格式的重传缓冲装置,其特征在于,所述状态机控制模块中读状态机的状态转换条件包括以下任意一种或多种:状态转换条件1:重传请求未被授权,继续保持在所述等待重传状态;状态转换条件2:重传请求被授权,进入所述重传条件判断状态;状态转换条件3:根据等待重传的微包的报文类型进行条件判断,如果是短报文微包,且数据链路缓冲区中用于存储长报文头微包和短报文的第一缓存区xm_fifo满则继续保持在所述重传条件判断状态;如果是长报文微包,且所述第一缓存区xm_fifo满或者数据链路缓冲区中用于存储长报文的数据微包的第二缓存区xm_fifo_msg满,则继续保持在所述重传条件判断状态;状态转换条件4:如果是短报文微包,且所述第一缓存区xm_fifo不满则进入所述读rbuffer第一拍状态;如果是长报文微包,且所述第一缓存区xm_fifo不满且所述第二缓存区xm_fifo_msg不满,则进入所述读rbuffer第一拍状态;状态转换条件5:无条件进入所述读rbuffer第二拍状态;状态转换条件6:前一时刻发送的是短报文微包,待发送的也是短报文微包,且所述第一缓存区xm_fifo不满,则进入所述读rbuffer第一拍状态;状态转换条件7:前一时刻发送的是短报文微包,待发送的也是短报文微包,且所述缓存区xm_fifo满,则进入所述等待发送缓冲不满状态;状态转换条件8:前一时刻发送的是长报文微包,则进入所述读长报文数据微包状态;状态转换条件9:前一时刻发送的是短报文微包,且所有微包已经发送完,则进入所述等待超时状态;
状态转换条件10:前一时刻发送的是短报文微包,待发送的是长报文微包,则进入所述重传条件判断状态;状态转换条件11:若所述第一缓存区xm_fifo满,则保持在所述等待发送缓冲不满状态;状态转换条件12:若所述第一缓存区xm_fifo不满,则进入所述读rbuffer第一拍状态;状态转换条件13:当前正在发送长报文的数据phit,且所述数据phit未发送完;状态转换条件14:长报文的数据phit已经发送完,且未发送完所有微包,则进入所述重传条件判断状态;状态转换条件15:长报文的数据phit已经发送完,且所有微包已经发送完,则进入所述等待超时状态。

技术总结
本发明公开一种支持长短两种报文格式的重传缓冲装置,包括:重传缓冲区;接收模块,用于接收发送给物理层的物理微片,识别所述物理微片所属报文类型;状态机控制模块,用于通过写状态机根据所述物理微片所属报文类型控制在所述重传缓冲区中选取不同存储体进行存储,以及当发生超时重传时,通过读状态机根据所述物理微片所属报文类型控制将所述重传缓冲区中物理微片读出。本发明具有能够支持长短两种报文格式,且传输效率以及带宽利用率高等优点。点。点。


技术研发人员:周宏伟 王勇 杨乾明 冯权友 曾坤 张英 励楠 张见 邓让钰 杨茂望
受保护的技术使用者:中国人民解放军国防科技大学
技术研发日:2021.12.03
技术公布日:2022/3/8

最新回复(0)