CN116909978A - 数据组帧方法、装置、电子设备及存储介质 - Google Patents
数据组帧方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116909978A CN116909978A CN202311175571.4A CN202311175571A CN116909978A CN 116909978 A CN116909978 A CN 116909978A CN 202311175571 A CN202311175571 A CN 202311175571A CN 116909978 A CN116909978 A CN 116909978A
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- effective
- units
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000009432 framing Methods 0.000 title claims abstract description 184
- 238000000034 method Methods 0.000 title claims abstract description 116
- 238000012545 processing Methods 0.000 claims abstract description 129
- 230000003139 buffering effect Effects 0.000 claims abstract description 45
- 230000005540 biological transmission Effects 0.000 claims abstract description 41
- 230000008569 process Effects 0.000 claims abstract description 35
- 238000010009 beating Methods 0.000 claims description 24
- 238000006243 chemical reaction Methods 0.000 claims description 21
- 238000004364 calculation method Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 9
- 230000008707 rearrangement Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000008521 reorganization Effects 0.000 description 2
- 108010076504 Protein Sorting Signals Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种数据组帧方法、装置、电子设备及存储介质。所述方法包括:调用数据处理模块获取缓存于先入先出队列中的待组帧数据;将待组帧数据依次缓存于第一缓存单元和第二缓存单元;在数据处理模块与数据组帧模块握手的过程中,根据第一信号和第二信号,确定数据处理模块与数据组帧模块是否完成握手;第一信号为指示数据处理模块缓存的数据中有效单元个数的信号,第二信号为指示所述数据组帧模块所需有效单元个数的信号;响应于数据处理模块与数据组帧模块完成握手,从第一缓存单元和第二缓存单元内获取所需有效单元个数的待组帧数据,并发送给数据组帧模块进行数据组帧处理。本申请可以提高组帧数据传输时的带宽利用率及网络传输性能。
Description
技术领域
本申请涉及数据组帧技术领域,尤其涉及一种数据组帧方法、装置、电子设备及存储介质。
背景技术
在芯片设计与FPGA(Field Programmable Gate Arrays,现场可编程门阵列)设计领域,数据的传输、协议转化、根据帧格式重新组帧(帧头+数据)等设计特别常见,尤其是根据帧格式重新组帧,在任何需要协议传输的设计中均会涉及,如TCP(TransmissionControl Protocol ,传输控制协议)/UDP(User Datagram Protocol,用户数据报协议)等网络传输、PCIe传输等。在重新组帧的过程中,需要帧头与数据进行合并,一般情况先发帧头后发数据。随着技术的发展,FPGA与数字IC(Intergrated Circuit)性能逐渐提升,主频越来越高,数据位宽也越来越大,这就给重新组帧带来新的问题。帧头与数据将会在同一个时钟内并行发送,数据虽然还是在帧头后面,但是在大位宽下,它们在同一个大位宽数据中。
在进行数据组帧时,帧头根据协议填充即可,而数据往往是从RAM(Random AccessMemory,随机存储器)、DDR(Double Data Rate,双倍速率同步动态随机存储器)、FIFO(First Input First Output,先入先出队列)等读出来的,读出的数据需要处理,将多余的丢弃,将需要的留下,假如第一次需要n(n为正整数)个DW(表示一个有效单元的长度,1DW=4byte=32bit),而第一次到达的数据小于n,则需要等待第二个数据,如果大于n,则需要将剩余的数据保存,下次发送。面对这种组帧需求,如果在组帧过程中用较多时钟,会严重降低带宽利用率,进而影响网络传输的性能。
目前,组帧过程通常是采用状态机进行处理,包括缓存、重排等,需要的时钟开销较多,如一帧数据8个时钟,加上帧头9个时钟,假如增加两个时钟开销,带宽利用率将会从88%降低72%,严重降低了带宽利用率,且影响了网络传输的性能。
发明内容
本申请实施例提供一种数据组帧方法、装置、电子设备及存储介质,以解决相关技术中采用状态机进行处理组帧过程,严重降低了带宽利用率,且影响了网络传输的性能的问题。
为了解决上述技术问题,本申请实施例是这样实现的:
第一方面,本申请实施例提供了一种数据组帧方法,所述方法包括:
调用数据处理模块获取缓存于先入先出队列中的待组帧数据;
将所述待组帧数据依次缓存于第一缓存单元和第二缓存单元;
在所述数据处理模块与数据组帧模块握手的过程中,根据第一信号和第二信号,确定所述数据处理模块与数据组帧模块是否完成握手;所述第一信号为指示数据处理模块缓存的数据中有效单元个数的信号,所述第二信号为指示所述数据组帧模块所需有效单元个数的信号;
响应于所述数据处理模块与数据组帧模块完成握手,从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据,并发送给所述数据组帧模块进行数据组帧处理。
可选地,在所述调用数据处理模块获取缓存于先入先出队列中的待组帧数据之前,还包括:
调用数据预取模块获取组帧长度信息;
根据所述组帧长度信息,读取待组帧数据;
将所述待组帧数据缓存于所述先入先出队列。
可选地,所述将所述待组帧数据依次缓存于第一缓存单元和第二缓存单元,包括:
对所述待组帧数据进行转化计算处理,得到转化计算后的数据;
对所述转化计算后的数据进行寄存器打拍处理,得到打拍后的待组帧数据;
将所述打拍后的待组帧数据依次缓存于所述第一缓存单元和所述第二缓存单元。
可选地,所述将所述打拍后的待组帧数据依次缓存于所述第一缓存单元和第二缓存单元,包括:
将所述打拍后的待组帧数据缓存于所述第一缓存单元内;
根据所述第二缓存单元的剩余存储空间,读取所述第一缓存单元内的与所述剩余存储空间相应的待组帧数据,并缓存于所述第二缓存单元内。
可选地,所述根据第一信号和第二信号,确定所述数据处理模块与数据组帧模块是否完成握手,包括:
比较所述有效单元个数与所述所需有效单元个数之间的大小关系;
根据所述大小关系,确定所述数据处理模块与数据组帧模块是否完成握手。
可选地,所述从所述第一缓存单元和所述第二缓存单元内,获取所述所需有效单元个数的待组帧数据,包括:
获取有效单元开始位置;所述有效单元开始位置用于指示所述第二缓存单元的数据中有效单元的起始位置;
基于所述有效单元开始位置,从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据。
可选地,在所述从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据,并发送给所述数据组帧模块进行数据组帧处理之后,还包括:
获取所述第二缓存单元内有效单元的第二有效单元个数;
在所述数据处理模块与所述数据组帧模块完成握手传输之后,基于所述第二有效单元个数,更新所述第二缓存单元内有效单元的有效单元个数。
可选地,所述基于所述第二有效单元个数,更新所述第二缓存单元内有效单元的有效单元个数,包括:
在所述所需有效单元个数小于所述第二有效单元个数的情况下,将所述第二缓存单元内的有效单元个数更新为所述第二有效单元个数与所述所需有效单元个数的差值。
可选地,所述基于所述第二有效单元个数,更新所述第二缓存单元内有效单元的有效单元个数,包括:
在所述所需有效单元个数大于所述第二有效单元个数的情况下,将所述第二缓存单元内的有效单元个数更新为第一个数,其中,所述第一个数=第一有效单元个数+第二有效单元个数-所需有效单元个数;
其中,所述第一有效单元个数是指所述第一缓存单元内有效单元的个数。
可选地,所述基于所述第二有效单元个数,更新所述第二缓存单元内有效单元的有效单元个数,包括:
在所述所需有效单元个数等于所述第二有效单元个数的情况下,根据所述第一缓存单元内的数据存量,更新所述第二缓存单元内有效单元的有效单元个数。
可选地,所述基于所述第二有效单元个数,更新所述第二缓存单元内有效单元的有效单元个数,包括:
在所述第二缓存单元中没有缓存数据,且所述第一缓存单元中存在缓存数据的情况下,将所述第二缓存单元内的有效单元个数更新为所述第一有效单元个数。
可选地,所述根据所述第一缓存单元内的数据存量,更新所述第二缓存单元内有效单元的有效单元个数,包括:
在所述第一缓存单元内有数据的情况下,将所述第二缓存单元内的有效单元个数更新为所述第一有效单元个数;
在所述第一缓存单元内没有数据的情况下,将所述第二缓存单元内的有效单元个数更新为0。
可选地,在所述从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据,并发送给所述数据组帧模块进行数据组帧处理之后,还包括:
在所述数据处理模块与所述数据组帧模块完成握手传输之后,基于所述所需有效单元个数,更新所述有效单元开始位置。
可选地,所述基于所述所需有效单元个数,更新所述有效单元开始位置,包括:
在所述所需有效单元个数大于第二有效单元个数的情况下,将所述有效单元开始位置更新为所述所需有效单元个数与所述第二有效单元个数的差值;
所述第二有效单元个数是指第二缓存单元内有效单元的个数。
可选地,所述基于所述所需有效单元个数,更新所述有效单元开始位置,包括:
在所述所需有效单元个数小于第二有效单元个数的情况下,将所述有效单元开始位置更新为所述所需有效单元个数与所述有效单元开始位置的和值。
可选地,所述基于所述所需有效单元个数,更新所述有效单元开始位置,包括:
在所述所需有效单元个数等于第二有效单元个数的情况下,将所述有效单元开始位置更新为0。
第二方面,本申请实施例提供了一种数据组帧装置,所述装置包括:
组帧数据获取模块,用于调用数据处理模块获取缓存于先入先出队列中的待组帧数据;
组帧数据缓存模块,用于将所述待组帧数据依次缓存于第一缓存单元和第二缓存单元;
握手完成确定模块,用于在所述数据处理模块与数据组帧模块握手的过程中,根据第一信号和第二信号,确定所述数据处理模块与数据组帧模块是否完成握手;所述第一信号为指示数据处理模块缓存的数据中有效单元个数的信号,所述第二信号为指示所述数据组帧模块所需有效单元个数的信号;
组帧数据发送模块,用于响应于所述数据处理模块与数据组帧模块完成握手,从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据,并发送给所述数据组帧模块进行数据组帧处理。
可选地,所述装置还包括:
组帧长度获取模块,用于调用数据预取模块获取组帧长度信息;
组帧数据读取模块,用于根据所述组帧长度信息,读取待组帧数据;
待组帧数据缓存模块,用于将所述待组帧数据缓存于所述先入先出队列。
可选地,所述组帧数据缓存模块包括:
转化数据获取单元,用于对所述待组帧数据进行转化计算处理,得到转化计算后的数据;
打拍数据获取单元,用于对所述转化计算后的数据进行寄存器打拍处理,得到打拍后的待组帧数据;
组帧数据缓存单元,用于将所述打拍后的待组帧数据依次缓存于所述第一缓存单元和所述第二缓存单元。
可选地,所述组帧数据缓存单元包括:
第一数据缓存子单元,用于将所述打拍后的待组帧数据缓存于所述第一缓存单元内;
第二数据缓存子单元,用于根据所述第二缓存单元的剩余存储空间,读取所述第一缓存单元内的与所述剩余存储空间相应的待组帧数据,并缓存于所述第二缓存单元内。
可选地,所述握手完成确定模块包括:
大小关系比较模块,用于比较所述有效单元个数与所述所需有效单元个数之间的大小关系;
握手完成确定模块,用于根据所述大小关系,确定所述数据处理模块与数据组帧模块是否完成握手。
可选地,所述组帧数据发送模块包括:
有效开始位置获取单元,用于获取有效单元开始位置;所述有效单元开始位置用于指示所述第二缓存单元的数据中有效单元的起始位置;
组帧数据获取单元,用于基于所述有效单元开始位置,从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据。
可选地,所述装置还包括:
有效单元个数获取模块,用于获取所述第二缓存单元内有效单元的第二有效单元个数;
有效单元个数更新模块,用于在所述数据处理模块与所述数据组帧模块完成握手传输之后,基于所述第二有效单元个数,更新所述第二缓存单元内有效单元的有效单元个数。
可选地,所述有效单元个数更新模块包括:
第一更新单元,用于在所述所需有效单元个数小于所述第二有效单元个数的情况下,将所述第二缓存单元内的有效单元个数更新为所述第二有效单元个数与所述所需有效单元个数的差值。
可选地,所述有效单元个数更新模块包括:
第二更新单元,用于在所述所需有效单元个数大于所述第二有效单元个数的情况下,将所述第二缓存单元内的有效单元个数更新为第一个数,其中,所述第一个数=第一有效单元个数+第二有效单元个数-所需有效单元个数;
其中,所述第一有效单元个数是指所述第一缓存单元内有效单元的个数。
可选地,所述有效单元个数更新模块包括:
第三更新单元,用于在所述所需有效单元个数等于所述第二有效单元个数的情况下,根据所述第一缓存单元内的数据存量,更新所述第二缓存单元内有效单元的有效单元个数。
可选地,所述有效单元个数更新模块包括:
第四更新单元,用于在所述第二缓存单元中没有缓存数据,且所述第一缓存单元中存在缓存数据的情况下,将所述第二缓存单元内的有效单元个数更新为所述第一有效单元个数。
可选地,所述第三更新单元包括:
第一更新子单元,用于在所述第一缓存单元内有数据的情况下,将所述第二缓存单元内的有效单元个数更新为所述第一有效单元个数;
第二更新子单元,用于在所述第一缓存单元内没有数据的情况下,将所述第二缓存单元内的有效单元个数更新为0。
可选地,所述装置还包括:
有效开始位置更新模块,用于在所述数据处理模块与所述数据组帧模块完成握手传输之后,基于所述所需有效单元个数,更新所述有效单元开始位置。
可选地,所述有效开始位置更新模块包括:
第一位置更新单元,用于在所述所需有效单元个数大于第二有效单元个数的情况下,将所述有效单元开始位置更新为所述所需有效单元个数与所述第二有效单元个数的差值;
所述第二有效单元个数是指第二缓存单元内有效单元的个数。
可选地,所述有效开始位置更新模块包括:
第二位置更新单元,用于在所述所需有效单元个数小于第二有效单元个数的情况下,将所述有效单元开始位置更新为所述所需有效单元个数与所述有效单元开始位置的和值。
可选地,所述有效开始位置更新模块包括:
第三位置更新单元,用于在所述所需有效单元个数等于第二有效单元个数的情况下,将所述有效单元开始位置更新为0。
第三方面,本申请实施例提供了一种电子设备,包括:
存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述任一项所述的数据组帧方法。
第四方面,本申请实施例提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述任一项所述的数据组帧方法。
在本申请实施例中,通过调用数据处理模块获取缓存于先入先出队列中的待组帧数据。将待组帧数据依次缓存于第一缓存单元和第二缓存单元。在数据处理模块与数据组帧模块握手的过程中,根据第一信号和第二信号,确定数据处理模块与数据组帧模块是否完成握手,第一信号为指示数据处理模块缓存的数据中有效单元个数的信号,第二信号为指示数据组帧模块所需有效单元个数的信号。响应于数据处理模块与数据组帧模块完成握手,从第一缓存单元和第二缓存单元内获取所需有效单元个数的待组帧数据,并发送给数据组帧模块进行数据组帧处理。本申请实施例通过使用两个缓存单元,使得可以同时传递两个缓存单元内的待组帧数据,达到重新排列的效果。在传递数据与重新排列的前提下,能够降低时钟开销,提升了带宽利用率,且提高了网络传输性能。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据组帧方法的步骤流程图;
图2为本申请实施例提供的一种待组帧数据缓存方法的步骤流程图;
图3为本申请实施例提供的另一种待组帧数据缓存方法的步骤流程图;
图4为本申请实施例提供的又一种待组帧数据缓存方法的步骤流程图;
图5为本申请实施例提供的一种握手完成确定方法的步骤流程图;
图6为本申请实施例提供的一种待组帧数据获取方法的步骤流程图;
图7为本申请实施例提供的一种有效单元个数更新方法的步骤流程图;
图8为本申请实施例提供的另一种有效单元个数更新方法的步骤流程图;
图9为本申请实施例提供的又一种有效单元个数更新方法的步骤流程图;
图10为本申请实施例提供的一种有效单元开始位置更新方法的步骤流程图;
图11为本申请实施例提供的另一种有效单元开始位置更新方法的步骤流程图;
图12为本申请实施例提供的一种数据组帧架构的示意图;
图13为本申请实施例提供的一种协议处理模块的示意图;
图14为本申请实施例提供的一种缓存单元电路的示意图;
图15为本申请实施例提供的一种交互协议的示意图;
图16为本申请实施例提供的一种数据组帧装置的结构示意图;
图17为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参照图1,示出了本申请实施例提供的一种数据组帧方法的步骤流程图,如图1所示,该数据组帧方法可以包括:步骤101、步骤102、步骤103和步骤104。
步骤101:调用数据处理模块获取缓存于先入先出队列中的待组帧数据。
本申请实施例可以应用于使用两个缓存单元,以传递两个缓存单元内的待组帧数据降低时钟开销的场景中。
在进行数据组帧的过程中,可以先根据组帧信息将待组帧数据缓存于先入先出队列中。对于待组帧数据的缓存过程可以结合图2进行如下详细描述。
参照图2,示出了本申请实施例提供的一种待组帧数据缓存方法的步骤流程图。如图2所示,该待组帧数据缓存方法可以包括:步骤201、步骤202和步骤203。
步骤201:调用数据预取模块获取组帧长度信息。
在本申请实施例中,在准备待组帧数据时,可以调用数据预取模块获取组帧长度信息。
在调用数据预取模块获取到组帧长度信息之后,执行步骤202。
步骤202:根据所述组帧长度信息,读取待组帧数据。
在调用数据预取模块获取到组帧长度信息之后,可以根据组帧长度信息读取待组帧数据。如图12所示,数据预取模块可以根据组帧信息(包含组帧长度)读取待组帧数据,并写入FIFO。
在本示例中,组帧长度即为总长度,而绝大部分帧有长度限制,需要进行拆分,而在读取准备数据时不能根据拆分后的长度读,这样将会降低读取数据的效率。因此,数据预取模块可以根据总长度(即组帧长度信息)读取待组帧数据。
在根据组帧长度信息读取到待组帧数据之后,执行步骤203。
步骤203:将所述待组帧数据缓存于所述先入先出队列。
在根据组帧长度信息读取到待组帧数据之后,则可以将待组帧数据缓存于FIFO中。具体地,在进行待组帧数据的缓存时,由于FIFO缓存的数据大小是预先设定的,在待组帧数据较大时,需要对待组帧数据进行拆分,然后,根据拆分的待组帧数据的组合顺序依次缓存于FIFO中。可以理解地,在数据预取模块进行待组帧数据的缓存时,需要确保FIFO不被写满,同时,需要在所有数据读取完毕之前保证FIFO中一直有数据。数据预取模块可以实时获取FIFO内剩余数据内存大小,然后读取相应的待组帧数据片段缓存于FIFO中等,直至全部待组帧数据缓存完成。
本申请实施例通过将待组帧数据缓存于FIFO中,从而可以在进行后续数据写入缓存单元时能够按照FIFO中的数据先后顺序写入,以保证组帧后数据的准确性。
在数据预取模块将待组帧数据缓存于FIFO之后,可以通过AXIS(AdvancedeXtensible Interface)协议将待组帧数据传输到后端的数据处理模块。
在调用数据处理模块获取到缓存于先入先出队列中的待组帧数据之后,执行步骤102。
步骤102:将所述待组帧数据依次缓存于第一缓存单元和第二缓存单元。
在调用数据处理模块获取到缓存于先入先出队列中的待组帧数据之后,可以先对待组帧数据进行处理,然后将处理后的待组帧数据依次缓存于第一缓存单元和第二缓存单元内,具体地处理过程可以结合图3进行如下详细描述。
参照图3,示出了本申请实施例提供的一种待组帧数据缓存方法的步骤流程图。如图3所示,该待组帧数据缓存方法可以包括:步骤301、步骤302和步骤303。
步骤301:对所述待组帧数据进行转化计算处理,得到转化计算后的数据。
在本申请实施例中,在通过数据处理模块获取到待组帧数据之后,可以对待组帧数据进行转化计算处理,以得到转化计算后的数据。如图12所示,在得到待组帧数据之后,可以通过数据处理模块内的协议处理模块对待组帧数据进行转化计算,协议处理模块的输入为axi-stream协议标准接口,输出为自定义协议,目的是方便后续模块使用。
具体地转化计算的内容可以包括:利用tkeep信号计算tkeep信号的长度keep_len,tkeep代表tdata中哪些数据单元是有效的,keep_len信号代表data数据中有几个有效的DW。keep_start_site表示tkeep信号的开始有效位置信息。sof信号为axis一帧数据的开始标志,需要利用tvalid、tready、tlast等信号转化出来。
在对待组帧数据进行转化计算处理得到转化计算后的数据之后,执行步骤302。
步骤302:对所述转化计算后的数据进行寄存器打拍处理,得到打拍后的待组帧数据。
在对待组帧数据进行转化计算处理得到转化计算后的数据之后,可以对转化计算后的数据进行寄存器打拍处理,得到打拍后的待组帧数据。寄存器打拍的目的是可以优化信号时序,前模块有计算操作,产生了大量组合逻辑,为了防止输出到下一级的组合逻辑过大,需要将信号经过寄存器打拍进而打断组合逻辑。
如图13所示,协议处理模块可以对数据执行转化计算和寄存器打拍,进而得到keep_len、keep_start_site、sof等信号。
在对转化计算后的数据进行寄存器打拍处理得到打拍后的待组帧数据之后,执行步骤303。
步骤303:将所述打拍后的待组帧数据依次缓存于所述第一缓存单元和所述第二缓存单元。
在对转化计算后的数据进行寄存器打拍处理得到打拍后的待组帧数据之后,可以将打拍后的待组帧数据依次缓存于第一缓存单元和第二缓存单元。
在本示例中,缓存单元是符合握手协议且缓存深度为1的电路,如图14所示。
本申请实施例通过对待组帧数据进行转化计算及寄存器打拍处理,可以清楚地了解数据中的开始有效位置等信息,同时,可以优化信号时序。
待组帧数据缓存于两个缓存单元内的具体方式可以为:将打拍后的待组帧数据缓存于所述第一缓存单元内,根据第二缓存单元的剩余存储空间,读取第一缓存单元内的与剩余存储空间相应的待组帧数据,并缓存于第二缓存单元内。对于该实现过程可以结合图4进行如下详细描述。
参照图4,示出了本申请实施例提供的另一种待组帧数据缓存方法的步骤流程图。如图4所示,该待组帧数据缓存方法可以包括:步骤401和步骤402。
步骤401:将所述打拍后的待组帧数据缓存于所述第一缓存单元内。
在本申请实施例中,在得到打拍后的待组帧数据之后,可以将打拍后的待组帧数据缓存于第一缓存单元内。可以理解地,由于第一缓存单元的容量大小是预先设定好的,在进行待组帧数据的缓存时,可以按照待组帧数据的时序以及第一缓存单元的大小,将满足第一缓存单元的容量大小的待组帧数据缓存至第一缓存单元内。
在将打拍后的待组帧数据缓存于第一缓存单元内之后,执行步骤402。
步骤402:根据所述第二缓存单元的剩余存储空间,读取所述第一缓存单元内的与所述剩余存储空间相应的待组帧数据,并缓存于所述第二缓存单元内。
在将打拍后的待组帧数据缓存于第一缓存单元内之后,可以根据第二缓存单元的剩余存储空间读取第一缓存单元内的与剩余存储空间相应的待组帧数据,并缓存于第二缓存单元内。如图12所示,缓存单元0即为第一缓存单元,缓存单元1即为第二缓存单元,在将待组帧数据写入缓存单元时,可以先将待组帧数据缓存至缓存单元0,然后,再从缓存单元0中取数据缓存至缓存单元1。此时,缓存单元0即存在空闲存储空间,则可以将未缓存的待组帧数据缓存至缓存单元0。而缓存单元1内的数据会被传输给后端数据组帧模块,由于缓存单元1的数据被读取,进而缓存单元1即存在空闲存储空间,此时,可以再从缓存单元0中取数据缓存至缓存单元1。以此类推,直至所有数据均发送至后端数据组帧模块即终止。
待组帧数据的缓存可以是由控制模块执行的,如图12所示,该控制模块可以实现两个功能,1、控制缓存单元的valid/ready信号,即控制缓存单元0的数据读取以及缓存单元1的数据读取与写入。2、与组帧模块或者后端模块交互。
本申请实施例通过使用两个缓存单元,使得可以同时传递两个缓存单元内的待组帧数据,达到重新排列的效果。在传递数据与重新排列的前提下,能够降低时钟开销,提升了带宽利用率,且提高了网络传输性能。
在将待组帧数据依次缓存于第一缓存单元和第二缓存单元之后,执行步骤103。
步骤103:在所述数据处理模块与数据组帧模块握手的过程中,根据第一信号和第二信号,确定所述数据处理模块与数据组帧模块是否完成握手;所述第一信号为指示数据处理模块缓存的数据中有效单元个数的信号,所述第二信号为指示所述数据组帧模块所需有效单元个数的信号。
在将待组帧数据依次缓存于第一缓存单元和第二缓存单元之后,则数据处理模块就可以向数据组帧模块执行握手流程。具体地,可以由数据处理模块向数据组帧模块发送valid信号,该valid信号可以用于表示数据已准备完成。数据组帧模块可以反馈ready信号,以指示完成握手。其中,valid信号/ready信号为标准的握手协议。
可以理解地,在握手过程中可以增加第一信号和第二信号,其中,第一信号可以用于指示数据处理模块缓存的数据中有效单元个数的信号,第二信号为指示数据组帧模块所需有效单元个数的信号。通过第一信号和第二信号共同确定是否允许完成握手。对于交互协议可以如图15所示。valid/ready/data为标准握手协议,在该协议的基础上增加了valid_num(即第一信号)以及get_num(即第二信号)两个信号。valid_num代表data中有多少DW有效,get_num代表后端需要的DW个数。此外,增加信号后的交互协议规定,只有当valid_num大于或等于get_num时,才允许完成握手,前端向后端传递get_num个DW数据。
对于握手完成确认的实现过程可以结合图5进行如下详细描述。
参照图5,示出了本申请实施例提供的一种握手完成确定方法的步骤流程图。如图5所示,该握手完成确定方法可以包括:步骤501和步骤502。
步骤501:比较所述有效单元个数与所述所需有效单元个数之间的大小关系。
在本申请实施例中,在握手协议发送过程中,可以增加两个信号,即第一信号和第二信号,其中,第一信号可以定义为valid_num信号,第二信号可以定义为get_num信号。valid_num代表data中有多少DW有效,即有效单元个数,get_num代表后端需要的DW个数,即数据组帧模块所需有效单元个数。1DW=4byte=32bit,在本示例中,DW即表示有效单元,NDW即表示存在N个有效单元。
在握手过程中,可以比较有效单元个数与所需有效单元个数之间的大小关系。
在比较有效单元个数与所需有效单元个数之间的大小关系之后,执行步骤502。
步骤502:根据所述大小关系,确定所述数据处理模块与数据组帧模块是否完成握手。
在比较有效单元个数与所需有效单元个数之间的大小关系之后,则可以根据该大小关系确定出数据处理模块与数据组帧模块是否完成握手。
在具体实现中,在valid_num大于或等于get_num时,才允许数据处理模块与数据组帧模块完成握手。若valid_num小于get_num,则不允许完成握手。
本申请实施例通过在握手过程中,增加valid_num和get_num两个信号,以作为握手完成的标准,能够确保数据处理模块与数据组帧模块在完成握手的同时,确保数据的有效性传输。
在根据第一信号和第二信号确定数据处理模块与数据组帧模块完成握手之后,执行步骤104。
步骤104:响应于所述数据处理模块与数据组帧模块完成握手,从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据,并发送给所述数据组帧模块进行数据组帧处理。
在根据第一信号和第二信号确定数据处理模块与数据组帧模块完成握手之后,可以响应于数据处理模块与数据组帧模块完成握手,从第一缓存单元和第二缓存单元内获取所需有效单元个数的待组帧数据,并发送给数据组帧模块进行数据组帧处理。即从第一缓存单元和第二缓存单元中读取get_num数据发送至数据组帧模块。
在数据组帧模块获取到待组帧数据之后,即可以通过数据组帧模块进行数据组帧处理。如图12所示,组帧信号中与帧头关联的信息可以直接发送给数据组帧模块,数据组帧模块对待组帧数据进行组帧,并填充帧头之后,即可以完成数据组帧流程。
本申请实施例通过使用两个缓存单元,使得可以同时传递两个缓存单元内的待组帧数据,达到重新排列的效果。在传递数据与重新排列的前提下,能够降低时钟开销,提升了带宽利用率。
在具体实现中,在从第一缓存单元和第二缓存单元内读取数据时,可以按照有效单元开始位置进行数据读取。对于该实现过程可以结合图6进行如下详细描述。
参照图6,示出了本申请实施例提供的一种待组帧数据获取方法的步骤流程图。如图6所示,该待组帧数据获取方法可以包括:步骤601和步骤602。
步骤601:获取有效单元开始位置;所述有效单元开始位置用于指示所述第二缓存单元的数据中有效单元的起始位置。
在本实施例中,有效单元开始位置(即start_site)可以用于指示第二缓存单元的数据中有效单元的起始位置。
在先过程中,在待组帧数据缓存于缓存单元之前即进行了数据转化计算过程,由此可以得到第二缓存单元的有效单元开始位置,即start_site。
在获取到有效单元开始位置之后,执行步骤602。
步骤602:基于所述有效单元开始位置,从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据。
在获取到有效单元开始位置之后,可以基于有效单元开始位置,从第一缓存单元和第二缓存单元内获取所需有效单元个数的待组帧数据。如图12所示,缓存单元0内的数据定义为data0,缓存单元1内的数据定义为data1,缓存单元0和缓存单元1内所有数据的总数量为N(N为正整数)。start_site的目的是用来作为选择缓存单元1中的数据以及缓存单元0中的数据,输出给后端。start_site的大小是0到N-1。选择输出的数据由data0与data1构成,data1中占(N-start_site)个DW,data0占start_site个DW。开始有效位为data1的第start_site个。格式为{data0[start_site:0],data1[N-1:start_site]},即data1的第start_site到第(N-1)个DW以及data0的第0个到start_site个DW等。即从data0的第0个到start_site个DW,data1的第start_site到第(N-1)个DW中,读取出所需有效单元个数的待组帧数据,以发送至后端数据组帧模块。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
在完成一次握手之后,则可以更新第二缓存单元内有效单元的有效单元个数。对于该实现过程可以结合图7进行如下详细描述。
参照图7,示出了本申请实施例提供的一种有效单元个数更新方法的步骤流程图。如图7所示,该有效单元个数更新方法可以包括:步骤701和步骤702。
步骤701:获取所述第二缓存单元内有效单元的第二有效单元个数。
在本申请实施例中,可以获取第二缓存单元内有效单元的第二有效单元个数。
在具体实现中,为了更好的说明控制模块的数据排列与控制逻辑,下面以数据位宽N*32bit为例,即N个DW,vnum0代表第一缓存单元中有效的DW个数,vnum1代表第二缓存单元中有效的DW个数,start_site代表缓存单元1中输出数据data1(即第二缓存单元内的数据)中第几个DW开始有效。
在获取到第二缓存单元内有效单元的第二有效单元个数之后,执行步骤702。
步骤702:在所述数据处理模块与所述数据组帧模块完成握手传输之后,基于所述第二有效单元个数,更新所述第二缓存单元内有效单元的有效单元个数。
在获取到第二缓存单元内有效单元的第二有效单元个数之后,可以根据第二有效单元个数更新第二缓存单元内有效单元的有效单元个数。具体地更新过程可以根据get_num与vnum1的大小关系,或者两个缓存单元内是否有数据进行有效单元个数的更新。对于该实现过程可以结合图8进行如下详细描述。
参照图8,示出了本申请实施例提供的另一种有效单元个数更新方法的步骤流程图。如图8所示,该有效单元个数更新方法可以包括:步骤801、步骤802、步骤803和步骤804。
步骤801:在所述所需有效单元个数小于所述第二有效单元个数的情况下,将所述第二缓存单元内的有效单元个数更新为所述第二有效单元个数与所述所需有效单元个数的差值。
在本申请实施例中,在数据处理模块与数据组帧模块完成握手传输之后,可以比较所需有效单元个数与第二有效单元个数的大小关系。即比较get_num与vnum1的大小关系。
在get_num小于vnum1时,则可以将第二缓存单元内的有效单元个数更新为第二有效单元个数与所需有效单元个数的差值,即vnum1更新为vnum1-get_num。
步骤802:在所述所需有效单元个数大于所述第二有效单元个数的情况下,将所述第二缓存单元内的有效单元个数更新为第一个数,其中,所述第一个数=第一有效单元个数+第二有效单元个数-所需有效单元个数。
在get_num大于vnum1时,则可以将第二缓存单元内的有效单元个数更新为第一个数,其中,第一个数=第一有效单元个数+第二有效单元个数-有效单元个数,即vnum1更新为vnum0+vnum1-get_num。
步骤803:在所述所需有效单元个数等于所述第二有效单元个数的情况下,根据所述第一缓存单元内的数据存量,更新所述第二缓存单元内有效单元的有效单元个数。
在get_num等于vnum1时,则可以根据第一缓存单元内的数据存量,更新第二缓存单元内有效单元的有效单元个数。对于该实现过程可以结合图9进行如下详细描述。
参照图9,示出了本申请实施例提供的又一种有效单元个数更新方法的步骤流程图。如图9所示,该有效单元个数更新方法可以包括:步骤901和步骤902。
步骤901:在所述第一缓存单元内有数据的情况下,将所述第二缓存单元内的有效单元个数更新为所述第一有效单元个数。
在本申请实施例中,在第一缓存单元内有数据的情况下,可以将第二缓存单元内的有效单元个数更新为第一有效单元个数。第一有效单元个数即为第一缓存单元内有效单元的个数。
即在get_num等于vnum1,前后端完成数据握手传输时,如果第一缓存单元中有数据,则可以将第二缓存单元的vnum1更新为vnum0。
步骤902:在所述第一缓存单元内没有数据的情况下,将所述第二缓存单元内的有效单元个数更新为0。
在第一缓存单元内没有数据的情况下,可以将第二缓存单元内的有效单元个数更新为0。即当get_num等于vnum1,前后端完成数据握手传输时,如果第一缓存单元没有数据,则可以将第二缓存单元的vnum1更新为0。
步骤804:在所述第二缓存单元中没有缓存数据,且所述第一缓存单元中存在缓存数据的情况下,将所述第二缓存单元内的有效单元个数更新为所述第一有效单元个数。
在第二缓存单元中没有缓存数据且第一缓存单元内存在缓存数据时,则可以将第二缓存单元内的有效单元个数更新为第一有效单元个数。即当缓存单元1中没有数据且缓存单元0中有数据时,将vnum1更新为vnum0。
本申请实施例通过在完成一次握手传输之后,即更新第二缓存单元内有效单元个数,可以使控制模块能够及时了解缓存单元内有效单元个数。
在本实施例中,在数据处理模块与数据组帧模块完成一次握手之后,还可以更新有效单元开始位置。具体地更新过程可以结合图10进行如下详细描述。
参照图10,示出了本申请实施例提供的一种有效单元开始位置更新方法的步骤流程图。如图10所示,该有效单元开始位置更新方法可以包括:步骤1001。
步骤1001:在所述数据处理模块与所述数据组帧模块完成握手传输之后,基于所述所需有效单元个数,更新所述有效单元开始位置。
在本申请实施例中,在数据处理模块与数据组帧模块完成握手传输之后,则可以基于所需有效单元个数更新有效单元开始位置。具体地更新过程可以结合图11进行如下详细描述。
参照图11,示出了本申请实施例提供的另一种有效单元开始位置更新方法的步骤流程图。如图11所示,该有效单元开始位置更新方法可以包括:步骤1101、步骤1102和步骤1103。
步骤1101:在所述所需有效单元个数大于第二有效单元个数的情况下,将所述有效单元开始位置更新为所述所需有效单元个数与所述第二有效单元个数的差值。
在本申请实施例中,第二有效单元个数可以用于指示第二缓存单元内有效单元的个数。
在所需有效单元个数大于第二有效单元个数的情况下,可以将有效单元开始位置更新为所需有效单元个数与第二有效单元个数的差值。即当get_num大于vnum1,前后端完成数据握手传输时,start_site更新为get_num-vnum1。
步骤1102:在所述所需有效单元个数小于第二有效单元个数的情况下,将所述有效单元开始位置更新为所述所需有效单元个数与所述有效单元开始位置的和值。
在所需有效单元个数小于第二有效单元个数的情况下,可以将有效单元开始位置更新为所需有效单元个数与有效单元开始位置的和值。即当get_num小于vnum1,前后端完成数据握手传输时,start_site更新为get_num+start_site。
步骤1103:在所述所需有效单元个数等于第二有效单元个数的情况下,将所述有效单元开始位置更新为0。
在所需有效单元个数等于第二有效单元个数的情况下,可以将有效单元开始位置更新为0。即当get_num==vnum1,前后端完成数据握手传输时,将start_site更新为0。
可以理解地,当不是以上情况,缓存单元0的数据为帧数据的一个数据时(sof为1),更新为keep_start_site(即有效单元开始位置)。
本申请实施例通过在完成一次握手之后,即更新有效单元开始位置,可以及时更新有效单元开始位置,便于后续向数据组帧模块传输数据。
在完成一次握手传输之后,缓存单元的协议信号状态会发生改变。具体内容可以结合图14进行如下描述:
缓存单元1的in_valid的判决如下:
当缓存单元0缓存单元1内均有数据且前后端完成数据握手传输时, 缓存单元1的in_valid为0,否则为缓存单元0的out_valid。
缓存单元0的out_ready的判决如下:
当缓存单元0缓存单元1内均有数据且前后端完成数据握手传输时, 缓存单元0的out_ready为1,否则为缓存单元1的in_ready。
缓存单元1的out_ready的判决如下:
当缓存单元1内DW数据被完全取走,缓存单元1的out_ready为1, 否则为0。
本申请实施例提供的数据组帧方法,通过调用数据处理模块获取缓存于先入先出队列中的待组帧数据。将待组帧数据依次缓存于第一缓存单元和第二缓存单元。在数据处理模块与数据组帧模块握手的过程中,根据第一信号和第二信号,确定数据处理模块与数据组帧模块是否完成握手,第一信号为指示数据处理模块缓存的数据中有效单元个数的信号,第二信号为指示数据组帧模块所需有效单元个数的信号。响应于数据处理模块与数据组帧模块完成握手,从第一缓存单元和第二缓存单元内获取所需有效单元个数的待组帧数据,并发送给数据组帧模块进行数据组帧处理。本申请实施例通过使用两个缓存单元,使得可以同时传递两个缓存单元内的待组帧数据,达到重新排列的效果。在传递数据与重新排列的前提下,能够降低时钟开销,提升了带宽利用率,且提高了网络传输性能。
参照图16,示出了本申请实施例提供的一种数据组帧装置的结构示意图。如图16所示,该数据组帧装置1600可以包括以下模块:
组帧数据获取模块1610,用于调用数据处理模块获取缓存于先入先出队列中的待组帧数据;
组帧数据缓存模块1620,用于将所述待组帧数据依次缓存于第一缓存单元和第二缓存单元;
握手完成确定模块1630,用于在所述数据处理模块与数据组帧模块握手的过程中,根据第一信号和第二信号,确定所述数据处理模块与数据组帧模块是否完成握手;所述第一信号为指示数据处理模块缓存的数据中有效单元个数的信号,所述第二信号为指示所述数据组帧模块所需有效单元个数的信号;
组帧数据发送模块1640,用于响应于所述数据处理模块与数据组帧模块完成握手,从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据,并发送给所述数据组帧模块进行数据组帧处理。
可选地,所述装置还包括:
组帧长度获取模块,用于调用数据预取模块获取组帧长度信息;
组帧数据读取模块,用于根据所述组帧长度信息,读取待组帧数据;
待组帧数据缓存模块,用于将所述待组帧数据缓存于所述先入先出队列。
可选地,所述组帧数据缓存模块包括:
转化数据获取单元,用于对所述待组帧数据进行转化计算处理,得到转化计算后的数据;
打拍数据获取单元,用于对所述转化计算后的数据进行寄存器打拍处理,得到打拍后的待组帧数据;
组帧数据缓存单元,用于将所述打拍后的待组帧数据依次缓存于所述第一缓存单元和所述第二缓存单元。
可选地,所述组帧数据缓存单元包括:
第一数据缓存子单元,用于将所述打拍后的待组帧数据缓存于所述第一缓存单元内;
第二数据缓存子单元,用于根据所述第二缓存单元的剩余存储空间,读取所述第一缓存单元内的与所述剩余存储空间相应的待组帧数据,并缓存于所述第二缓存单元内。
可选地,所述握手完成确定模块包括:
大小关系比较模块,用于比较所述有效单元个数与所述所需有效单元个数之间的大小关系;
握手完成确定模块,用于根据所述大小关系,确定所述数据处理模块与数据组帧模块是否完成握手。
可选地,所述组帧数据发送模块包括:
有效开始位置获取单元,用于获取有效单元开始位置;所述有效单元开始位置用于指示所述第二缓存单元的数据中有效单元的起始位置;
组帧数据获取单元,用于基于所述有效单元开始位置,从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据。
可选地,所述装置还包括:
有效单元个数获取模块,用于获取所述第二缓存单元内有效单元的第二有效单元个数;
有效单元个数更新模块,用于在所述数据处理模块与所述数据组帧模块完成握手传输之后,基于所述第二有效单元个数,更新所述第二缓存单元内有效单元的有效单元个数。
可选地,所述有效单元个数更新模块包括:
第一更新单元,用于在所述所需有效单元个数小于所述第二有效单元个数的情况下,将所述第二缓存单元内的有效单元个数更新为所述第二有效单元个数与所述所需有效单元个数的差值。
可选地,所述有效单元个数更新模块包括:
第二更新单元,用于在所述所需有效单元个数大于所述第二有效单元个数的情况下,将所述第二缓存单元内的有效单元个数更新为第一个数,其中,所述第一个数=第一有效单元个数+第二有效单元个数-所需有效单元个数;
其中,所述第一有效单元个数是指所述第一缓存单元内有效单元的个数。
可选地,所述有效单元个数更新模块包括:
第三更新单元,用于在所述所需有效单元个数等于所述第二有效单元个数的情况下,根据所述第一缓存单元内的数据存量,更新所述第二缓存单元内有效单元的有效单元个数。
可选地,所述有效单元个数更新模块包括:
第四更新单元,用于在所述第二缓存单元中没有缓存数据,且所述第一缓存单元中存在缓存数据的情况下,将所述第二缓存单元内的有效单元个数更新为所述第一有效单元个数。
可选地,所述第三更新单元包括:
第一更新子单元,用于在所述第一缓存单元内有数据的情况下,将所述第二缓存单元内的有效单元个数更新为所述第一有效单元个数;
第二更新子单元,用于在所述第一缓存单元内没有数据的情况下,将所述第二缓存单元内的有效单元个数更新为0。
可选地,所述装置还包括:
有效开始位置更新模块,用于在所述数据处理模块与所述数据组帧模块完成握手传输之后,基于所述所需有效单元个数,更新所述有效单元开始位置。
可选地,所述有效开始位置更新模块包括:
第一位置更新单元,用于在所述所需有效单元个数大于第二有效单元个数的情况下,将所述有效单元开始位置更新为所述所需有效单元个数与所述第二有效单元个数的差值;
所述第二有效单元个数是指第二缓存单元内有效单元的个数。
可选地,所述有效开始位置更新模块包括:
第二位置更新单元,用于在所述所需有效单元个数小于第二有效单元个数的情况下,将所述有效单元开始位置更新为所述所需有效单元个数与所述有效单元开始位置的和值。
可选地,所述有效开始位置更新模块包括:
第三位置更新单元,用于在所述所需有效单元个数等于第二有效单元个数的情况下,将所述有效单元开始位置更新为0。
本申请实施例提供的数据组帧装置,通过调用数据处理模块获取缓存于先入先出队列中的待组帧数据。将待组帧数据依次缓存于第一缓存单元和第二缓存单元。在数据处理模块与数据组帧模块握手的过程中,根据第一信号和第二信号,确定数据处理模块与数据组帧模块是否完成握手,第一信号为指示数据处理模块缓存的数据中有效单元个数的信号,第二信号为指示数据组帧模块所需有效单元个数的信号。响应于数据处理模块与数据组帧模块完成握手,从第一缓存单元和第二缓存单元内获取所需有效单元个数的待组帧数据,并发送给数据组帧模块进行数据组帧处理。本申请实施例通过使用两个缓存单元,使得可以同时传递两个缓存单元内的待组帧数据,达到重新排列的效果。在传递数据与重新排列的前提下,能够降低时钟开销,提升了带宽利用率,且提高了网络传输性能。
另外地,本申请实施例还提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述数据组帧方法。
图17示出了本发明实施例的一种电子设备1700的结构示意图。如图17所示,电子设备1700包括中央处理单元(CPU)1701,其可以根据存储在只读存储器(ROM)1702中的计算机程序指令或者从存储单元1708加载到随机访问存储器(RAM)1703中的计算机程序指令,来执行各种适当的动作和处理。在RAM 1703中,还可存储电子设备1700操作所需的各种程序和数据。CPU 1701、ROM1702以及RAM1703通过总线1704彼此相连。输入/输出(I/O)接口1705也连接至总线1704。
电子设备1700中的多个部件连接至I/O接口1705,包括:输入单元1706,例如键盘、鼠标、麦克风等;输出单元1707,例如各种类型的显示器、扬声器等;存储单元1708,例如磁盘、光盘等;以及通信单元1709,例如网卡、调制解调器、无线通信收发机等。通信单元1709允许电子设备1700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,可由处理单元1701执行。例如,上述任一实施例的方法可被实现为计算机软件程序,其被有形地包含于计算机可读介质,例如存储单元1708。在一些实施例中,计算机程序的部分或者全部可以经由ROM1702和/或通信单元1709而被载入和/或安装到电子设备1700上。当计算机程序被加载到RAM1703并由CPU1701执行时,可以执行上文描述的方法中的一个或多个动作。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述数据组帧方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
本领域普通技术人员可以意识到,结合本申请实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (20)
1.一种数据组帧方法,其特征在于,所述方法包括:
调用数据处理模块获取缓存于先入先出队列中的待组帧数据;
将所述待组帧数据依次缓存于第一缓存单元和第二缓存单元;
在所述数据处理模块与数据组帧模块握手的过程中,根据第一信号和第二信号,确定所述数据处理模块与数据组帧模块是否完成握手;所述第一信号为指示数据处理模块缓存的数据中有效单元个数的信号,所述第二信号为指示所述数据组帧模块所需有效单元个数的信号;
响应于所述数据处理模块与数据组帧模块完成握手,从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据,并发送给所述数据组帧模块进行数据组帧处理。
2.根据权利要求1所述的方法,其特征在于,在所述调用数据处理模块获取缓存于先入先出队列中的待组帧数据之前,还包括:
调用数据预取模块获取组帧长度信息;
根据所述组帧长度信息,读取待组帧数据;
将所述待组帧数据缓存于所述先入先出队列。
3.根据权利要求1所述的方法,其特征在于,所述将所述待组帧数据依次缓存于第一缓存单元和第二缓存单元,包括:
对所述待组帧数据进行转化计算处理,得到转化计算后的数据;
对所述转化计算后的数据进行寄存器打拍处理,得到打拍后的待组帧数据;
将所述打拍后的待组帧数据依次缓存于所述第一缓存单元和所述第二缓存单元。
4.根据权利要求3所述的方法,其特征在于,所述将所述打拍后的待组帧数据依次缓存于所述第一缓存单元和第二缓存单元,包括:
将所述打拍后的待组帧数据缓存于所述第一缓存单元内;
根据所述第二缓存单元的剩余存储空间,读取所述第一缓存单元内的与所述剩余存储空间相应的待组帧数据,并缓存于所述第二缓存单元内。
5.根据权利要求1所述的方法,其特征在于,所述根据第一信号和第二信号,确定所述数据处理模块与数据组帧模块是否完成握手,包括:
比较所述有效单元个数与所述所需有效单元个数之间的大小关系;
根据所述大小关系,确定所述数据处理模块与数据组帧模块是否完成握手。
6.根据权利要求1所述的方法,其特征在于,所述从所述第一缓存单元和所述第二缓存单元内,获取所述所需有效单元个数的待组帧数据,包括:
获取有效单元开始位置;所述有效单元开始位置用于指示所述第二缓存单元的数据中有效单元的起始位置;
基于所述有效单元开始位置,从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据。
7.根据权利要求1所述的方法,其特征在于,在所述从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据,并发送给所述数据组帧模块进行数据组帧处理之后,还包括:
获取所述第二缓存单元内有效单元的第二有效单元个数;
在所述数据处理模块与所述数据组帧模块完成握手传输之后,基于所述第二有效单元个数,更新所述第二缓存单元内有效单元的有效单元个数。
8.根据权利要求7所述的方法,其特征在于,所述基于所述第二有效单元个数,更新所述第二缓存单元内有效单元的有效单元个数,包括:
在所述所需有效单元个数小于所述第二有效单元个数的情况下,将所述第二缓存单元内的有效单元个数更新为所述第二有效单元个数与所述所需有效单元个数的差值。
9.根据权利要求7所述的方法,其特征在于,所述基于所述第二有效单元个数,更新所述第二缓存单元内有效单元的有效单元个数,包括:
在所述所需有效单元个数大于所述第二有效单元个数的情况下,将所述第二缓存单元内的有效单元个数更新为第一个数,其中,所述第一个数=第一有效单元个数+第二有效单元个数-所需有效单元个数;
其中,所述第一有效单元个数是指所述第一缓存单元内有效单元的个数。
10.根据权利要求9所述的方法,其特征在于,所述基于所述第二有效单元个数,更新所述第二缓存单元内有效单元的有效单元个数,包括:
在所述所需有效单元个数等于所述第二有效单元个数的情况下,根据所述第一缓存单元内的数据存量,更新所述第二缓存单元内有效单元的有效单元个数。
11.根据权利要求9所述的方法,其特征在于,所述基于所述第二有效单元个数,更新所述第二缓存单元内有效单元的有效单元个数,包括:
在所述第二缓存单元中没有缓存数据,且所述第一缓存单元中存在缓存数据的情况下,将所述第二缓存单元内的有效单元个数更新为所述第一有效单元个数。
12.根据权利要求10所述的方法,其特征在于,所述根据所述第一缓存单元内的数据存量,更新所述第二缓存单元内有效单元的有效单元个数,包括:
在所述第一缓存单元内有数据的情况下,将所述第二缓存单元内的有效单元个数更新为所述第一有效单元个数;
在所述第一缓存单元内没有数据的情况下,将所述第二缓存单元内的有效单元个数更新为0。
13.根据权利要求6所述的方法,其特征在于,在所述从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据,并发送给所述数据组帧模块进行数据组帧处理之后,还包括:
在所述数据处理模块与所述数据组帧模块完成握手传输之后,基于所述所需有效单元个数,更新所述有效单元开始位置。
14.根据权利要求13所述的方法,其特征在于,所述基于所述所需有效单元个数,更新所述有效单元开始位置,包括:
在所述所需有效单元个数大于第二有效单元个数的情况下,将所述有效单元开始位置更新为所述所需有效单元个数与所述第二有效单元个数的差值;
所述第二有效单元个数是指第二缓存单元内有效单元的个数。
15.根据权利要求14所述的方法,其特征在于,所述基于所述所需有效单元个数,更新所述有效单元开始位置,包括:
在所述所需有效单元个数小于第二有效单元个数的情况下,将所述有效单元开始位置更新为所述所需有效单元个数与所述有效单元开始位置的和值。
16.根据权利要求14所述的方法,其特征在于,所述基于所述所需有效单元个数,更新所述有效单元开始位置,包括:
在所述所需有效单元个数等于第二有效单元个数的情况下,将所述有效单元开始位置更新为0。
17.一种数据组帧装置,其特征在于,所述装置包括:
组帧数据获取模块,用于调用数据处理模块获取缓存于先入先出队列中的待组帧数据;
组帧数据缓存模块,用于将所述待组帧数据依次缓存于第一缓存单元和第二缓存单元;
握手完成确定模块,用于在所述数据处理模块与数据组帧模块握手的过程中,根据第一信号和第二信号,确定所述数据处理模块与数据组帧模块是否完成握手;所述第一信号为指示数据处理模块缓存的数据中有效单元个数的信号,所述第二信号为指示所述数据组帧模块所需有效单元个数的信号;
组帧数据发送模块,用于响应于所述数据处理模块与数据组帧模块完成握手,从所述第一缓存单元和所述第二缓存单元内获取所述所需有效单元个数的待组帧数据,并发送给所述数据组帧模块进行数据组帧处理。
18.根据权利要求17所述的装置,其特征在于,所述装置还包括:
组帧长度获取模块,用于调用数据预取模块获取组帧长度信息;
组帧数据读取模块,用于根据所述组帧长度信息,读取待组帧数据;
待组帧数据缓存模块,用于将所述待组帧数据缓存于所述先入先出队列。
19.一种电子设备,其特征在于,包括:
存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至16中任一项所述的数据组帧方法。
20.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行权利要求1至16任一项所述的数据组帧方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311175571.4A CN116909978B (zh) | 2023-09-13 | 2023-09-13 | 数据组帧方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311175571.4A CN116909978B (zh) | 2023-09-13 | 2023-09-13 | 数据组帧方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116909978A true CN116909978A (zh) | 2023-10-20 |
CN116909978B CN116909978B (zh) | 2024-02-02 |
Family
ID=88351504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311175571.4A Active CN116909978B (zh) | 2023-09-13 | 2023-09-13 | 数据组帧方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116909978B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645053A (zh) * | 2009-06-29 | 2010-02-10 | 福建星网锐捷网络有限公司 | 一种提高数据传输效率的方法及装置 |
CN104301024A (zh) * | 2014-09-12 | 2015-01-21 | 上海卫星工程研究所 | 星载多载荷数据帧传输系统 |
CN110413540A (zh) * | 2019-06-28 | 2019-11-05 | 苏州浪潮智能科技有限公司 | 一种fpga数据缓存的方法、系统、设备及存储介质 |
CN111865811A (zh) * | 2020-06-24 | 2020-10-30 | 浪潮(北京)电子信息产业有限公司 | 一种数据处理方法、装置、设备及介质 |
CN112084136A (zh) * | 2020-07-23 | 2020-12-15 | 西安电子科技大学 | 队列缓存管理方法、系统、存储介质、计算机设备及应用 |
CN112272128A (zh) * | 2020-09-26 | 2021-01-26 | 西安电子科技大学 | Hinoc组帧方法、系统、介质、计算机设备及应用 |
CN115695553A (zh) * | 2022-10-28 | 2023-02-03 | 四川恒湾科技有限公司 | 一种fpga片间同步面和管理面的数据传输系统及方法 |
-
2023
- 2023-09-13 CN CN202311175571.4A patent/CN116909978B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645053A (zh) * | 2009-06-29 | 2010-02-10 | 福建星网锐捷网络有限公司 | 一种提高数据传输效率的方法及装置 |
CN104301024A (zh) * | 2014-09-12 | 2015-01-21 | 上海卫星工程研究所 | 星载多载荷数据帧传输系统 |
CN110413540A (zh) * | 2019-06-28 | 2019-11-05 | 苏州浪潮智能科技有限公司 | 一种fpga数据缓存的方法、系统、设备及存储介质 |
CN111865811A (zh) * | 2020-06-24 | 2020-10-30 | 浪潮(北京)电子信息产业有限公司 | 一种数据处理方法、装置、设备及介质 |
CN112084136A (zh) * | 2020-07-23 | 2020-12-15 | 西安电子科技大学 | 队列缓存管理方法、系统、存储介质、计算机设备及应用 |
CN112272128A (zh) * | 2020-09-26 | 2021-01-26 | 西安电子科技大学 | Hinoc组帧方法、系统、介质、计算机设备及应用 |
CN115695553A (zh) * | 2022-10-28 | 2023-02-03 | 四川恒湾科技有限公司 | 一种fpga片间同步面和管理面的数据传输系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116909978B (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180159803A1 (en) | Header replication in accelerated tcp (transport control protocol) stack processing | |
CN111327603B (zh) | 数据传输方法、装置和系统 | |
CN112540952B (zh) | 具有片内并行接口的片上系统 | |
WO2019153553A1 (zh) | 跨广域网数据回导方法、装置、计算机设备及存储介质 | |
CN111277988B (zh) | 一种提高微信小程序蓝牙传输速度的方法 | |
JP2017532908A (ja) | データキャッシング方法、装置及び記憶媒体 | |
CN106605411A (zh) | 对图形域中的视频数据进行流式传输 | |
JP2001502513A (ja) | 非固定バッファサイズを使用する通信システム | |
CN114328348A (zh) | 一种fpga加速板卡及其行情数据处理方法 | |
US8230137B2 (en) | Network processor, reception controller and data reception processing method performing direct memory access transfer | |
WO2022100578A1 (zh) | 5g系统中ofdm变换方法及相关产品 | |
CN116909978B (zh) | 数据组帧方法、装置、电子设备及存储介质 | |
CN116303173B (zh) | 减少rdma引擎片上缓存的方法、装置、系统及芯片 | |
CN110413540B (zh) | 一种fpga数据缓存的方法、系统、设备及存储介质 | |
CN115904259B (zh) | 非易失性存储器标准NVMe指令的处理方法及相关装置 | |
CN115543882A (zh) | 不同位宽总线间的数据转发装置及数据传输方法 | |
WO2008019606A1 (en) | A method and apparatus for adjusting the quality of video communication of instant messaging | |
CN103853675B (zh) | 一种访问内存的方法和设备 | |
KR20160109733A (ko) | 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법 | |
CN114005429B (zh) | 信号合成方法、装置和计算机设备和存储介质 | |
CN111538688B (zh) | 数据处理方法、装置、模组及芯片 | |
CN114978950B (zh) | 基于fpga、cpu协同的网络算法调用方法及系统 | |
CN117234977B (zh) | 数据处理方法、系统、设备及计算机可读存储介质 | |
CN102223285B (zh) | 处理数据报文的方法及网络节点 | |
CN117349214B (zh) | 一种具备拆包组包能力的axi协议转串行通讯协议的转换桥 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |