CN113360130A - 一种数据传输方法、装置及系统 - Google Patents

一种数据传输方法、装置及系统 Download PDF

Info

Publication number
CN113360130A
CN113360130A CN202110916377.1A CN202110916377A CN113360130A CN 113360130 A CN113360130 A CN 113360130A CN 202110916377 A CN202110916377 A CN 202110916377A CN 113360130 A CN113360130 A CN 113360130A
Authority
CN
China
Prior art keywords
data
lanes
module
preset
buffer area
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
Application number
CN202110916377.1A
Other languages
English (en)
Other versions
CN113360130B (zh
Inventor
朱明霄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou H3C Technologies Co Ltd
New H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN202110916377.1A priority Critical patent/CN113360130B/zh
Publication of CN113360130A publication Critical patent/CN113360130A/zh
Application granted granted Critical
Publication of CN113360130B publication Critical patent/CN113360130B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's

Abstract

本申请实施例提供了一种数据传输方法、装置及系统,该方法包括:获取每个时钟周期内数据总线包括的M个lane分别传输的数据,得到M个数据;将M个数据中的有效数据存储至预设缓冲区;当预设缓冲区中最后一次数据读取位置至最后一次数据存储位置之间的数据长度大于等于预设数据长度时,从预设缓冲区读取M个有效数据,预设数据长度为一个lane传输的最大数据长度的M倍数;通过M个lane分别传输所读取的M个有效数据。应用本申请实施例提供的技术方案,能够提高多lane总线系统的总线利用率,进而在不改变上游模块和下游模块的数据架构的基础上,提高整个多lane总线系统的数据传输效率。

Description

一种数据传输方法、装置及系统
技术领域
本申请涉及网络技术领域,特别是涉及一种数据传输方法、装置及系统。
背景技术
在网络中许多的模块采用多线路(lane)的数据总线(以下简称为多lane总线)连接。具体的系统架构为:上游模块通过多lane总线与异步先进先出(First Input FirstOutput,FIFO)模块连接,异步FIFO模块通过多lane总线与下游模块连接。上游模块通过多lane总线和异步FIFO模块向下游模块发送数据。
该多lane总线系统的总线利用率依赖于异步FIFO模块与下游模块间的总线利用率,FIFO模块与下游模块间的总线利用率又依赖于上游模块与异步FIFO模块间的总线利用率。
然而,该多lane总线系统中,上游模块通过多lane总线发送数据时,在一个时钟周期内,多lane总线中的部分lane上很可能会传输无效数据,这使得整个多lane总线系统的总线利用率较低,进而导致整个多lane总线系统的数据传输效率较低。
发明内容
本申请实施例的目的在于提供一种数据传输方法、装置及系统,以提高多lane总线系统的总线利用率,提高整个多lane总线系统的数据传输效率。具体技术方案如下:
第一方面,本申请实施例提供了一种数据传输方法,所述方法包括:
获取每个时钟周期内数据总线包括的M个lane分别传输的数据,得到M个数据;
将所述M个数据中的有效数据存储至预设缓冲区;
当所述预设缓冲区中最后一次数据读取位置至最后一次数据存储位置之间的数据长度大于等于预设数据长度时,从所述预设缓冲区读取M个有效数据,所述预设数据长度为一个lane传输的最大数据长度的M倍数;
通过所述M个lane分别传输所读取的M个有效数据。
第二方面,本申请实施例提供了一种数据传输装置,所述装置包括:
获取单元,用于获取每个时钟周期内数据总线包括的M个lane分别传输的数据,得到M个数据;
存储单元,用于将所述M个数据中的有效数据存储至预设缓冲区;
读取单元,用于当所述预设缓冲区中最后一次数据读取位置至最后一次数据存储位置之间的数据长度大于等于预设数据长度时,从所述预设缓冲区读取M个有效数据,所述预设数据长度为一个lane传输的最大数据长度的M倍数;
传输单元,用于通过所述M个lane分别传输所读取的M个有效数据。
第三方面,本申请实施例提供了一种数据传输系统,包括上游模块、与所述上游模块连接的数据整合模块、与所述数据整合模块连接的异步FIFO模块,以及与所述异步FIFO模块连接的下游模块;
所述上游模块,用于在每个时钟周期内,通过数据总线包括的M个lane分别向所述数据整合模块传输数据;
所述数据整合模块,用于获取每个时钟周期内所述M个lane分别传输的数据,得到M个数据;将所述M个数据中的有效数据存储至预设缓冲区;当所述预设缓冲区中最后一次数据读取位置至最后一次数据存储位置之间的数据长度大于等于预设数据长度时,从所述预设缓冲区读取M个有效数据,所述预设数据长度为一个lane传输的最大数据长度的M倍数;通过所述M个lane分别向所述异步FIFO模块传输所读取的M个有效数据;
所述异步FIFO模块,用于接收所述数据整合模块传输的所述M个有效数据;通过所述M个lane分别将所述M个有效数据传输至所述下游模块;
所述下游模块,用于通过所述M个lane,接收所述异步FIFO模块传输的所述M个有效数据。
第四方面,本申请实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信,
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面提供的任一数据传输方法步骤。
第五方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面提供的任一数据传输方法步骤。
第六方面,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的数据传输方法。
本申请实施例有益效果:
本申请实施例提供的技术方案中,将M个lane传输的有效数据存储至预设缓冲区,当缓存M个有效数据后,通过M个lane分别传输所读取的M个有效数据。这种情况下,向下游模块传输数据时,M个lane传输的均为有效数据,减少了多lane总线传输的无效数据,提高了多lane总线系统的总线利用率,进而在不改变上游模块和下游模块的数据架构的基础上,提高了整个多lane总线系统的数据传输效率。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为相关技术中数据传输系统的一种结构示意图。
图2为数据传输形式的第一种示意图。
图3为本申请实施例提供的数据传输系统的一种结构示意图。
图4为本申请实施例提供的数据传输方法的第一种流程示意图。
图5为本申请实施例提供的数据传输方法的第二种流程示意图。
图6a为本申请实施例提供的数据重排结果的第一种结构示意图。
图6b为本申请实施例提供的数据重排结果的第二种结构示意图。
图7为本申请实施例提供的数据传输方法的第三种流程示意图。
图8a为本申请实施例提供的数据重排过程的第一种流程示意图。
图8b为本申请实施例提供的数据重排过程的第二种流程示意图。
图8c为本申请实施例提供的数据重排过程的第三种流程示意图。
图9a为数据传输形式的第二种示意图。
图9b为本申请实施例提供的数据重排过程的第四种流程示意图。
图9c为本申请实施例提供的数据重排过程的第五种流程示意图。
图9d为本申请实施例提供的数据重排过程的第六种流程示意图。
图9e为本申请实施例提供的数据重排过程的第七种流程示意图。
图9f为本申请实施例提供的数据重排过程的第八种流程示意图。
图9g为本申请实施例提供的数据重排过程的第九种流程示意图。
图9h为本申请实施例提供的数据重排过程的第十种流程示意图。
图9i为本申请实施例提供的数据重排结果的第三种结构示意图。
图10为本申请实施例提供的数据传输方法的第四种流程示意图。
图11a为本申请实施例提供的预设缓冲区存储数据的第一种示意图。
图11b为本申请实施例提供的预设缓冲区指针的第一种示意图。
图11c为本申请实施例提供的数据传输结果的第一种示意图。
图12为本申请实施例提供的数据传输装置的第一种结构示意图。
图13为本申请实施例提供的电子设备的第一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本申请保护的范围。
为便于理解,下面对本申请实施例中出现的词语进行解释说明。
异步先进先出(First input first output,FIFO):是一种传统的按序执行方法,先进入的指令先完成并引退,然后才执行第二条指令。异步FIFO读写时钟不一致,读写相互独立。
在多lane总线上,每个时钟周期的利用率会直接影响到整个总线的数据传输效率。
如图1所示,在一个多lane总线系统中,模块A为上游模块,模块B为下游模块,模块A与模块B之间有一条多lane总线。为简化表述,本申请实施例中,假设多lane总线为含有4条lane的总线。
基于上述多lane总线,模块A在时钟a的时钟域下,模块B在时钟b时钟域下,时钟a的时钟频率大于等于时钟b的时钟频率。如图1所示,时钟a的时钟频率为2吉赫兹(GHz),时钟b的时钟频率为1GHz。
为了保证模块A与模块B之间正常的数据传输,在模块A与模块B之间加入一个异步FIFO模块。由于时钟a的时钟频率大于时钟b,整个多lane总线系统的总线速率主要依赖异步FIFO模块与模块B之间的总线利用率,而异步FIFO模块与模块B之间的总线利用率又间接依赖模块A的输出总线的瞬时利用率。
异步FIFO模块可以通过准备(ready)信号控制模块A传输数据。例如,ready信号传输的信号值包括第一预设值和第二预设值。第一预设值指示上游模块传输数据;第二预设值指示上游模块停止传输数据。第一预设值和第二预设值可以根据实际需要进行设定。例如,第一预设值为1,第二预设值为0。
模块A接收的异步FIFO模块发送的ready信号的值为第一预设值时,通过4条lane向异步FIFO模块传输数据。模块A接收的异步FIFO模块发送的ready信号的值为第二预设值时,停止通过4条lane向异步FIFO模块传输数据。在一个时钟周期下,当这4条lane中的一条lane传输了有效数据时,则认为该时钟周期下4条lane传输的数据为有效数据,该时钟周期下有效(valid)总线传输第三预设值,该第三预设值指示4条lane传输的数据为有效数据;否则,该时钟周期下valid总线传输第四预设值,该第四预设值指示4条lane传输的数据为无效数据。
第三预设值和第四预设值可以根据实际需要进行设定。以下以第三预设值为1,第四预设值为0为例进行说明。
在一个时钟周期下,valid总线传输的数据为“1”时,异步FIFO模块缓存该时钟周期下多lane总线传输数据,并将该时钟周期下缓存的数据传输给模块B。
由于模块A传输的数据是无法控制的,即valid总线传输的数据为“1”时,只能保证至少有一条lane传输了有效数据,不能保证所有lane都传输有效数据,这就使得模块A的输出总线的瞬时利用率较低,进而导致异步FIFO模块与模块B之间的总线利用率较低,整个多lane总线系统的数据传输效率较低。
例如图2所示的数据传输情况,其中,灰色方块代表有效数据,白色方块代表无效数据。time表示时钟周期。以lane的位宽为1比特(bit)为例。在图2所示的12个时钟周期下,4条lane传输的总数据量为12×4=48bit,其中有效数据有28bit,此时,异步FIFO模块与模块B之间的总线利用率为28÷48×100%=58.3%。
为解决上述问题,本申请实施例提供了一种数据传输系统,如图3所示,该数据传输系统包括:上游模块31、与上游模块31连接的数据整合模块32、与数据整合模块32连接的异步FIFO模块33及与异步FIFO模块33连接的下游模块34。其中,上游模块31、数据整合模块32、异步FIFO模块33及下游模块34之间通过数据总线依次连接,每条数据总线中含有M个lane,该数据总线又可以称为多lane总线。M为大于等于1的正整数,每条lane的位宽为根据实际需求进行设定。
上游模块31与异步FIFO模块33间传输数据的时钟频率大于等于异步FIFO模块33与下游模块34间传输数据的时钟频率。具体的时钟频率大小可以根据实际需求进行设定。一个示例中,上游模块31与异步FIFO模块33间传输数据的时钟频率为2GHz,异步FIFO模块33与下游模块34间传输数据的时钟频率为1GHz。
本申请实施例中,上游模块31、数据整合模块32、异步FIFO模块33及下游模块34可以分别为硬件模块,也可以分别为软件模块。
另外,上游模块31、数据整合模块32、异步FIFO模块33及下游模块34可以位于同一芯片中,例如,网络处理器(Network Processor,NP)中。上游模块31、数据整合模块32、异步FIFO模块33及下游模块34也可以分别位于不同物理设备上。本申请实施例中,对上游模块31、数据整合模块32、异步FIFO模块33及下游模块34的具体实现方式不进行限定。
图3中,valid总线和数据总线的用途,可参见图1部分的描述,此处不再赘述。异步FIFO模块33向数据整合模块32发送预准备(ready_pre)信号或ready信号。ready_pre信号或ready信号的作用下面会进行详细说明,此处不做展开。
本申请实施例中,上游模块31,用于在每个时钟周期内,通过数据总线包括的M个lane分别向数据整合模块32传输数据;
数据整合模块32,用于获取每个时钟周期内M个lane分别传输的数据,得到M个数据;将M个数据中的有效数据存储至预设缓冲区;当预设缓冲区中最后一次数据读取位置至最后一次数据存储位置之间的数据长度大于等于预设数据长度时,从预设缓冲区读取M个有效数据,预设数据长度为一个lane传输的最大数据长度的M倍数;通过M个lane分别向异步FIFO模块33传输所读取的M个有效数据;
异步FIFO模块33,用于接收数据整合模块传输的M个有效数据;通过M个lane分别将M个有效数据传输至下游模块34;
下游模块34,用于通过M个lane,接收异步FIFO模块33传输的M个有效数据。
本申请实施例提供的技术方案中,数据整合模块32进行数据整合,即将M个lane传输的有效数据存储至预设缓冲区,当缓存M个有效数据后,通过M个lane分别传输所读取的M个有效数据。这种情况下,数据整合模块32向下游模块34传输数据时,M个lane传输的均为有效数据,减少了多lane总线传输的无效数据,提高了多lane总线系统的总线利用率,进而在不改变上游模块和下游模块的数据架构的基础上,提高了整个多lane总线系统的数据传输效率。
在本申请的一个实施例中,异步FIFO模块33,还可以用于向数据整合模块32发送数据整合信号。
这种情况下,数据整合模块32,具体可以用于若检测到数据整合信号,则在得到M个数据后,将M个数据中的有效数据存储至预设缓冲区;若未检测到数据整合信号,在得到M个数据后,通过M个lane分别向异步FIFO模块33传输M个数据。
本申请实施例中,上述数据整合信号用于指示数据整合模块32进行数据整合,即上述数据整合信号用于:指示将来自上游模块31的M个数据中的有效数据存储至预设缓冲区。
该数据整合信号可以通过如图3所示的ready_pre信号来实现。ready_pre信号传输的信号值包括第五预设值和第六预设值。第五预设值用于指示数据整合模块进行数据整合。第六预设值用于指示数据整合模块停止进行数据整合。
第五预设值和第六预设值可以根据实际需要进行设定。以下以第五预设值为1,第六预设值为0为例进行说明。也就是,当ready_pre信号传输的信号值为“1”时,则该ready_pre信号可以理解为数据整合信号。
本申请实施例中,通过数据整合信号,实现了数据整合过程可以动态启动的,以进一步提高整个多lane总线系统的数据传输效率。
在本申请的一个实施例中,异步FIFO模块33,具体可以用于在检测到本地存储空间中被占用空间的容量大于第一预设数据量时,向数据整合模块32发送数据整合信号。上述第一预设数据量可以根据实际需求进行设定。例如,第一预设数据量可以为0、1或3bit等。
本申请实施例中,异步FIFO模块33实时检测到本地存储空间(即异步FIFO模块33中的存储空间)中被占用空间的容量是否大于第一预设数据量。若检测到被占用空间的容量小于等于第一预设数据量,则异步FIFO模块33拒绝向数据整合模块32发送数据整合信号;若检测到被占用空间的容量大于第一预设数据量,则向数据整合模块32发送数据整合信号,进而数据整合模块32根据数据整合信号进行数据整合。
本申请实施例中,数据整合过程可以动态启动的,数据整合过程的启动依赖异步FIFO模块的状态。
以第一预设数据量为0bit为例。当异步FIFO模块33中存储有数据时(异步FIFO模块33为非空,即异步FIFO模块33中被占用空间的容量大于第一预设数据量),总线利用率的瓶颈在异步FIFO模块33与下游模块34之间,数据整合模块32启动数据整合过程,对上游模块31发送过来的数据进行数据整合处理,提高总线带宽利用率。
当异步FIFO模块33中没有存储数据时(异步FIFO模块33为空,即异步FIFO模块33中被占用空间的容量小于等于第一预设数据量),总线利用率的瓶颈在上游模块31,数据整合模块33关闭数据整合过程,上游模块31发送过来的数据做透传处理,以此实现动态的速率调整的方案,不会对数据的实时性产生影响。
在本申请的一个实施例中,异步FIFO模块33,还可以用于向数据整合模块32发送第一数据传输信号。
这种情况下,数据整合模块32,具体可以用于在检测到第一数据传输信号的情况下,向上游模块31发送第二数据传输信号。
上游模块31,具体可以用于在检测到第二数据传输信号的情况下,在每个时钟周期内,通过数据总线包括的M个lane分别向数据整合模块32传输数据。
第一数据传输信号和第二数据传输信号可以通过如图3所示的ready信号来实现。ready信号传输的信号值包括第一预设值和第二预设值。以下以第一预设值为1,第二预设值为0为例,进行说明。
当异步FIFO模块33传输的ready信号的信号值为“1”时,则异步FIFO模块33传输的ready信号可以理解为第一数据传输信号。同理,当数据整合模块32传输的ready信号的信号值为“1”时,则数据整合模块32传输的ready信号可以理解为第二数据传输信号。
本申请实施例中,通过第一数据传输信号和第二数据传输信号对数据的传输进行控制,避免出现数据溢出的情况,进而减少数据的丢失。
在本申请的一个实施例中,异步FIFO模块33,具体可以用于在检测到本地存储空间中未被占用空间的容量大于第二预设数据量时,向数据整合模块发送第一数据传输信号。第二预设数据量可以根据实际需要进行设定。例如,第二预设数据量可以为0、1或3bit等。
本申请实施例中,异步FIFO模块33实时检测到本地存储空间(即异步FIFO模块33中的存储空间)中未被占用空间的容量是否大于第二预设数据量。若检测到未被占用空间的容量小于等于第二预设数据量,则异步FIFO模块33拒绝向数据整合模块32发送第一数据传输信号;若检测到未被占用空间的容量大于第二预设数据量,则向数据整合模块32发送第一数据传输信号,进而数据整合模块32向上游模块31发送第二数据传输信号。
以第二预设数据量为0bit为例。当异步FIFO模块33中未被占用空间的容量为0时,表明异步FIFO模块33中无法再缓存其他数据,拒绝向数据整合模块32发送第一数据传输信号,进而数据整合模块32拒绝向上游模块31发送第二数据传输信号。这样,上游模块31停止传输数据,避免出现数据溢出的情况,进而减少数据的丢失。
当异步FIFO模块33中未被占用空间的容量大于0时,表明异步FIFO模块33中还可以缓存其他数据,向数据整合模块32发送第一数据传输信号,进而数据整合模块32向上游模块31发送第二数据传输信号。
在本申请的一个实施例中,数据整合模块32,具体可以用于:重排M个数据,以使M个lane中,有效数据对应的lane相邻,无效数据对应的lane相邻;将重排后的M个数据中的有效数据存储至预设缓冲区。
在本申请的一个实施例中,数据整合模块32,具体可以用于:
将M个lane划分为至少一组lane,其中,每组lane包括两个相邻的lane,且每两组lane包括的lane不同;
分别对比每组lane所对应的两个数据,得到每组lane的对比结果;
根据每组lane的对比结果,分别对每组lane所对应的两个数据进行重排,以使每组lane中,有效数据对应的lane在无效数据对应的lane的指定方向上;
重新执行将M个lane划分为至少一个组lane的步骤,直至重排次数达到预设次数,其中,每次划分得到的至少一组lane与上一次划分得到的至少一组lane不同。
在本申请的一个实施例中,数据整合模块32,具体可以用于:
以预设缓冲区中写指针所指向的位置为起始位置,向预设缓冲区写入M个数据中的有效数据;将写指针指向最后一次数据存储位置的尾部;
当预设缓冲区中写指针与读指针之间的数据长度大于等于预设数据长度时,以预设缓冲区中读指针所指向的位置为起始位置,读取M个有效数据;将读指针指向最后一次数据读取位置的尾部。
在本申请的一个实施例中,上述预设缓冲区的位宽为M个lane的总位宽的预设倍数。
基于上述数据传输系统,本申请实施例提供了一种数据传输方法,如图4所示。该方法可以应用于如图3所示的数据整合模块32。该数据整合模块32可以集成在上游模块31上,也可以为独立软件模块或硬件模块,对此不进行限定。上述数据传输方法包括如下步骤:
步骤S41,获取每个时钟周期内数据总线包括的M个lane分别传输的数据,得到M个数据。
在本申请实施例中,传输数据的多lane总线包括M个lane,M为大于等于1的正整数。对于每个lane,上游模块在每个时钟周期下,分别通过该lane传输一次数据,该数据可能为无效数据,也可能为有效数据。当一个lane的位宽大于1bit且该lane传输的数据为有效数据,该lane传输的每一位数据可以都是有效的,即该lane传输的每一位数据都是有效子数据;也能存在部分位数据是无效的,即部分位数据为无效子数据。例如,一个lane的位宽为128bit,该lane传输的128bit数据中,100bit子数据为有效数据,28bit子数据为无效数据。本申请实施例中,对每一个lane传输的数据的形式不做限定。
对于一个时钟周期,上游模块通过M个lane分别传输数据。一个lane传输一个数据。这种情况下,数据整合模块接收上游模块通过M个lane分别传输的数据,得到M个数据。
步骤S42,将M个数据中的有效数据存储至预设缓冲区。
在本申请实施例中,预先设置了一个缓冲区,即预设缓冲区。为便于管理预设缓冲区,该预设缓冲区的位宽为M个lane的总位宽的预设倍数。预设倍数可以为整数倍,如2倍、5倍或6倍等。预设倍数还可以是非整数倍,如2.3倍、7.5倍或8.6倍等。为了便于管理预设缓冲区,减化预设缓冲区的设置,预设倍数可以取整数倍,如2倍、3倍或4倍等。考虑到预设缓冲区的位宽不宜占用过多资源,可选的,预设倍数可以为2倍,即预设缓冲区的位宽可以为M个lane的总位宽的2倍。该预设缓冲区可以位于数据整合模块上,也可以位于与数据整合模块连接的其他模块上,对此不进行限定。
每个lane传输一个数据,M个lane传输M个数据。在一个时钟周期下,数据整合模块获取到通过M个lane传输的M个数据后,开始进行数据整合,即:从这M个数据中获取有效数据,并将有效数据存储至预设缓冲区。
若这M个数据中不存在有效数据,即这M个数据中均为无效数据,则不执行上述步骤S42。
步骤S43,当预设缓冲区中最后一次数据读取位置至最后一次数据存储位置之间的数据长度大于等于预设数据长度时,从预设缓冲区读取M个有效数据,预设数据长度为一个lane传输的最大数据长度的M倍数。
在本申请实施例中,在一个时钟周期的开始时刻,数据整合模块可以判断最后一次数据读取的位置与最后一次数据存储的位置之间的数据长度是否大于等于预设数据长度。若两者之间的数据长度大于等于预设数据长度,则数据整合模块可以从预设缓冲区中最后一次数据读取位置开始读取M个有效数据。若两者之间的数据长度小于预设数据长度,则若从预设缓冲区中最后一次数据读取位置开始读取数据,数据整合模块无法读取到M个有效数据,数据整合模块不做其他处理,继续判断最后一次数据读取的位置与最后一次数据存储的位置之间的数据长度是否大于等于预设数据长度。
步骤S44,通过M个lane分别传输所读取的M个有效数据。
在本申请实施例中,数据整合模块通过M条lane,传输由预设缓冲区中读取的M个有效数据。例如图3所示,数据整合模块将读取的M个有效数据传输给异步FIFO模块,进而,异步FIFO模块将M个有效数据传输给下游模块完成数据传输。
本申请实施例提供的技术方案中,将M个lane传输的有效数据存储至预设缓冲区,当缓存M个有效数据后,通过M个lane分别传输所读取的M个有效数据。这种情况下,向下游模块传输数据时,M个lane传输的均为有效数据,减少了多lane总线传输的无效数据,提高了多lane总线系统的总线利用率,进而在不改变上游模块和下游模块的数据架构的基础上,提高了整个多lane总线系统的数据传输效率。
本申请实施例中,数据整合模块在获取到M个数据后,可以直接向预设缓冲区中存储这M个数据中的有效数据。
而为了提高向预设缓冲区中存储数据的效率,节约计算资源,在本申请的一个实施例中,本申请实施例还提供了一种数据传输方法,如图5所示,该方法中,上述步骤S42可以细化为如下步骤。
步骤S421,重排M个数据,以使M个lane中,有效数据对应的lane相邻,无效数据对应的lane相邻。
在本申请实施例中,对于每个时钟周期,数据整合模块对该时钟周期下获取的M个lane传输的数据(即上述M个数据)进行重排,重排后,有效数据对应的lane相邻,无效数据对应的lane相邻。此时,仅有一个传输无效数据的lane和一个传输有效数据的lane相邻。
一个示例中,重排后,有效数据对应的lane处于低位,无效数据对应的lane处于高位,如图6a所示。图6a中,数据整合模块对图2所示的数据进行重排,重排后,有效数据对应处于低位的lane0与lane1,无效数据对应处于高位的lane2与lane3。
另一个示例中,重排后,有效数据对应的lane处于高位,无效数据对应的lane处于低位,如图6b所示。图6b中,数据整合模块对图2所示的数据进行重排,重排后,有效数据对应处于高位的lane2与lane3,无效数据对应处于低位的lane0与lane1。
步骤S422,将重排后的M个数据中的有效数据存储至预设缓冲区。
本申请实施例提供的技术方案中,通过对的M个数据进行重排,大大减少了需要处理的数据类型。
以4个lane为例进行说明。每个lane传输数据有2种形式,则4个lane传输的数据类型有24=16种,若不进行重排,需要处理的数据类型与4个lane传输的数据类型相同,即16种;若进行数据重排,需要处理的数据类型只有5种,5<16。
随着lane数量的增多,多lane总线传输的数据类型成指数倍增加,进行数据重排带来的减少需要处理的数据类型的效果越加明显。
而由于进行数据重排,大大减少了需要处理的数据类型,因此,有效提高了向预设缓冲区中存储数据的效率,进而节约了计算资源。
在本申请的一个实施例中,本申请实施例还提供了一种数据传输方法,如图7所示,上述步骤S421可以细化为如下步骤。
步骤S4211,将M个lane划分为至少一组lane,其中,每组lane包括两个相邻的lane,且每两组lane包括的lane不同。
步骤S4212,分别对比每组lane所对应的两个数据,得到每组lane的对比结果。
步骤S4213,根据每组lane的对比结果,分别对每组lane所对应的两个数据进行重排,以使每组lane中,有效数据对应的lane在无效数据对应的lane的指定方向上。
步骤S4214,判断重排次数是否达到预设次数;若是,则执行步骤S422;若否,则返回执行步骤S4211。其中,每次划分得到的至少一组lane与上一次划分得到的至少一组lane不同。预设次数可以根据实际需求进行设定。一个示例中,预设次数可以为M。
下面结合图2、图6a和图8a-图8c所示的数据重排过程,对上述步骤S4211-S4214进行说明。其中,M=4,预设次数为4,指定方向为低位方向。
数据整合模块获得的12个时钟周期的数据,如图2所示。数据整合模块利用4步实现数据重排。
第一步中,数据整合模块将lane0和lane1划分为一组lane,lane2和lane3划分为一组lane,对两组lane执行步骤S4212-S4213,即分别对每组lane对应的两个数据进行数据重排,将空闲的气泡(即无效数据)往高位方向挤,重排后的数据如图8a所示。
本申请实施例中,lane的数字编号越大,lane位置越高。
第二步中,基于图8a所示的数据,数据整合模块将lane1和lane2划分为一组lane,对这一组lane执行步骤S4212-S4213,将空闲的气泡往高位方向挤,重排后的数据如图8b所示。
第三步中,基于图8b所示的数据,数据整合模块可以将lane0和lane1划分为一组lane,lane2和lane3划分为一组lane,对两组lane执行步骤S4212-S4213,将空闲的气泡往高位方向挤,重排后的数据如图8c所示。
第四步中,基于图8c所示的数据,数据整合模块可以将lane1和lane2划分为一组lane,对这一组lane执行步骤S4212-S4213,将空闲的气泡往高位方向挤,重排后的数据如图6a所示。
下面结合图9a-图9i所示的数据重排过程,对上述步骤S4211-S4214进行说明。其中,M=8,预设次数为8,指定方向为低位方向。
数据整合模块获得的12个时钟周期的数据,如图9a所示。数据整合模块利用8步实现数据重排。
第一步中,数据整合模块将lane0和lane1划分为一组lane,lane2和lane3划分为一组lane,lane4和lane5划分为一组lane,lane6和lane7划分为一组lane,对这四组lane执行步骤S4212-S4213,即分别对每组lane对应的两个数据进行数据重排,将空闲的气泡(即无效数据)往高位方向挤,重排后的数据如图9b所示。
第二步中,基于图9b所示的数据,数据整合模块将lane1和lane2划分为一组lane,lane3和lane4划分为一组lane,lane5和lane6划分为一组lane,对这三组lane执行步骤S4212-S4213,将空闲的气泡往高位方向挤,重排后的数据如图9c所示。
第三步中,基于图9c所示的数据,数据整合模块可以将lane0和lane1划分为一组lane,lane2和lane3划分为一组lane,lane4和lane5划分为一组lane,lane6和lane7划分为一组lane,对这四组lane执行步骤S4212-S4213,将空闲的气泡往高位方向挤,重排后的数据如图9d所示。
第四步中,基于图9d所示的数据,数据整合模块可以将lane1和lane2划分为一组lane,lane3和lane4划分为一组lane,lane5和lane6划分为一组lane,对这三组lane执行步骤S4212-S4213,将空闲的气泡往高位方向挤,重排后的数据如图9e所示。
第五步中,基于图9e所示的数据,数据整合模块将lane0和lane1划分为一组lane,lane2和lane3划分为一组lane,lane4和lane5划分为一组lane,lane6和lane7划分为一组lane,对这四组lane执行步骤S4212-S4213,将空闲的气泡往高位方向挤,重排后的数据如图9f所示。
第六步中,基于图9f所示的数据,数据整合模块将lane1和lane2划分为一组lane,lane3和lane4划分为一组lane,lane5和lane6划分为一组lane,对这三组lane执行步骤S4212-S4213,将空闲的气泡往高位方向挤,重排后的数据如图9g所示。
第七步中,基于图9g所示的数据,数据整合模块可以将lane0和lane1划分为一组lane,lane2和lane3划分为一组lane,lane4和lane5划分为一组lane,lane6和lane7划分为一组lane,对这四组lane执行步骤S4212-S4213,将空闲的气泡往高位方向挤,重排后的数据如图9h所示。
第八步中,基于图9h所示的数据,数据整合模块可以将lane1和lane2划分为一组lane,lane3和lane4划分为一组lane,lane5和lane6划分为一组lane,对这三组lane执行步骤S4212-S4213,将空闲的气泡往高位方向挤,重排后的数据如图9i所示。
在本申请实施例中,对于时序紧张的电路,上述预设次数的数据重排的过程可以在一个时钟周期下处理;对于时序宽松的电路,上述预设次数的数据重排的过程可以在预设次数个时钟周期下,即一个时钟周期下执行一次数据重排的处理。
在本申请的一个实施例中,为了提高总线的利用率,本申请实施例还提供了一种数据传输方法,如图10所示,该方法中,上述步骤S42可以细化为步骤S423,上述步骤S43可以细化为步骤S431。
步骤S423,以预设缓冲区中写指针所指向的位置为起始位置,向预设缓冲区写入M个数据中的有效数据;将写指针指向最后一次数据存储位置的尾部。
本申请实施例中,数据整合模块可以建立一个预设缓冲区,预设缓冲区具有读指针和写指针,在初始时刻,数据整合模块可以将写指针和读指针的位置归零,并清空预设缓冲区。在一个时钟周期开始时,数据整合模块可以通过写指针将上游模块传输过来的M个数据中的有效数据写入预设缓冲区中。
步骤S431,当预设缓冲区中写指针与读指针之间的数据长度大于等于预设数据长度时,从预设缓冲区中读指针所指向的位置为起始位置,读取M个有效数据;将所述读指针指向最后一次数据读取位置的尾部。
本申请实施例中,在一个时钟周期开始时,数据整合模块检测预设缓冲区中写指针与读指针之间的数据长度是否大于等于预设数据长度。当预设缓冲区中写指针与读指针之间的数据长度大于等于预设数据长度时,数据整合模块通过读指针读取预设缓冲区的M个数据。
本申请实施例提供的技术方案中,通过读指针和写指针,方便快速的实现了数据整合,提高了数据输出的效率。
下面结合图2,对上述步骤S423和步骤S431进行详细说明。其中,M=4,每个lane的位宽为1bit,则预设数据长度为4bit;预设倍数为2,即预设缓冲区的位宽为4*2=8bit。
初始时刻,写指针和读指针归0,即写指针和读指针均指向bit0的位置;预设缓冲区为空。
如图2所示,time=1时刻,上游模块通过4个lane传输的数据均为有效数据。数据整合从写指针所指向的位置(即bit0位置)开始,将这4个有效数据对应写入预设缓冲区,即将这4个有效数据对应写入bit0~3位置;之后,将写指针指向最后一次数据存储位置的尾部,其中,0+4=4,即将写指针指向bit4位置。
另外,time=1时刻,写指针和读指针均指向bit0位置,写指针与读指针之间的数据长度为0bit,0<4,因此,数据整合模块不读取数据,读指针指向的位置不变。
如图2所示,time=2时刻,上游模块通过4个lane传输的数据中有2个有效数据。数据整合从写指针所指向的位置(即bit4位置)开始,将这2个有效数据对应写入预设缓冲区,即将这2个有效数据对应写入bit4~5;之后,将写指针指向最后一次数据存储位置的尾部,其中,4+2=6,即将写指针指向bit6位置。
另外,time=2时刻,写指针指向bit4位置,读指针指向bit0位置,写指针与读指针之间的数据长度为4bit,4=4,因此,数据整合模块从读指针指向bit0位置开始读取数据,之后,将读指针指向最后一次数据读取位置的尾部其中,0+4=4,即将读指针指向bit4位置。
如图2所示,time=3时刻,上游模块通过4个lane传输的数据中有2个有效数据。数据整合从写指针所指向的位置(即bit6位置)开始,将这2个有效数据对应写入预设缓冲区,即将这2个有效数据对应写入bit6~7;之后,将写指针指向最后一次数据存储位置的尾部。其中,6+2=8,预设缓冲区的位宽为=8bit,因此,当预设缓冲区缓冲了8bit数据后,从bit0位置重新存储数据,即6+2-8=0,将写指针指向bit0位置。
另外,time=3时刻,写指针指向bit6位置,读指针指向bit4位置,写指针与读指针之间的数据长度为6-4=2bit,2<4,因此,数据整合模块不读取数据,读指针指向的位置不变。
如图2所示,time=4时刻,上游模块通过4个lane传输的数据中有1个有效数据。数据整合从写指针所指向的位置(即bit0位置)开始,将这1个有效数据写入预设缓冲区,即将这1个有效数据对应写入bit0;之后,将写指针指向最后一次数据存储位置的尾部。其中,0+1=1,即将写指针指向bit1位置。
另外,time=4时刻,写指针指向bit0位置,读指针指向bit4位置,写指针与读指针之间的数据长度为4-0=4bit,4=4,因此,数据整合模块从读指针指向bit4位置开始读取数据,之后,将读指针指向最后一次数据读取位置的尾部。其中,4+4=8,因此,当预设缓冲区读取了8bit数据后,从bit0位置重新读取数据,即4+4-8=0,将读指针指向bit0位置。
后续以此类推。最终预设缓冲区存储数据的随时间变化如图11a所示,与图11a对应的指针的变化如图11b所示。图11b中,rd表示读指针,wr表示写指针。图11a和图11b中,右侧的0~7数值表示相应的bit位。
结合图11a和图11b可知,在time=2、time=4、time=7、time=10、time=11、time=12时刻(即读指针所指向的位置发生移动的时刻),4条lane均向外传输了有效数据,如图11c所示的数据传输结果的示意图。在这些时刻,异步FIFO模块可以获取一个总线利用率为100%的数据。
进而,本申请实施例中,可以将异步FIFO模块与下游模块之间的总线的利用率从58.3%提高至100%。
上述图11a-图11c以每个lane的位宽为1bit为例进行说明,可以将异步FIFO模块与下游模块之间的总线的利用率从58.3%提高至100%。而实际应用中,每个lane的位宽是不固定的,当lane的位宽大于1bit时,该lane传输的有效数据中包括有效子数据和无效子数据。因此,异步FIFO模块获取数据的总线利用率低于100%。但是,由于每个lane传输的数据都是有效数据,因此,相对于相关技术,本申请实施例提供的技术方案仍然可以明显的提高异步FIFO模块与下游模块之间的总线的利用率,最终提高了整个数据传输系统的数据传输效率。
与上述数据传输方法对应,本申请实施例还提供了一种数据传输装置,如图12所示,包括:
获取单元121,用于获取每个时钟周期内数据总线包括的M个lane分别传输的数据;
存储单元122,用于将所获取的M个数据中的有效数据存储至预设缓冲区;
读取单元123,用于当预设缓冲区中最后一次数据读取位置至最后一次数据存储位置之间的数据长度大于等于预设数据长度时,从预设缓冲区读取M个有效数据,预设数据长度为一个lane传输的最大数据长度的M倍数;
传输单元124,用于通过M个lane分别传输所读取的M个有效数据。
一个可选的实施例中,存储单元122,可以包括:
重排子单元,用于重排M个数据,以使M个lane中,有效数据对应的lane相邻,无效数据对应的lane相邻;
存储子单元,用于将重排后的M个数据中的有效数据存储至预设缓冲区。
一个可选的实施例中,重排子单元,具体可以用于:
将M个lane划分为至少一组lane,其中,每组lane包括两个相邻的lane,且每两组lane包括的lane不同;
分别对比每组lane所对应的两个数据,得到每组lane的对比结果;
根据每组lane的对比结果,分别对每组lane所对应的两个数据进行重排,以使每组lane中,有效数据对应的lane在无效数据对应的lane的指定方向上;
重新执行将M个lane划分为至少一个组lane的步骤,直至重排次数达到预设次数,其中,每次划分得到的至少一组lane与上一次划分得到的至少一组lane不同。
一个可选的实施例中,存储单元122,具体可以用于以预设缓冲区中写指针所指向的位置为起始位置,向预设缓冲区写入M个数据中的有效数据;将写指针指向最后一次数据存储位置的尾部。
读取单元123,具体可以用于当预设缓冲区中写指针与读指针之间的数据长度大于等于预设数据长度时,以预设缓冲区中读指针所指向的位置为起始位置,读取M个有效数据;将读指针指向最后一次数据读取位置的尾部。
一个可选的实施例中,预设缓冲区的位宽为M个lane的总位宽的预设倍数。
本申请实施例提供的技术方案中,将M个lane传输的有效数据存储至预设缓冲区,当缓存M个有效数据后,通过M个lane分别传输所读取的M个有效数据。这种情况下,向下游模块传输数据时,M个lane传输的均为有效数据,减少了多lane总线传输的无效数据,提高了多lane总线系统的总线利用率,进而在不改变上游模块和下游模块的数据架构的基础上,提高了整个多lane总线系统的数据传输效率。
与上述数据传输方法对应,本申请实施例还提供了一种电子设备,如图13所示,包括处理器131、通信接口132、存储器133和通信总线134,其中,处理器131,通信接口132,存储器133通过通信总线134完成相互间的通信,
存储器133,用于存放计算机程序;
处理器131,用于执行存储器133上所存放的程序时,实现图4-图11c方法的步骤。
本申请实施例提供的技术方案中,将M个lane传输的有效数据存储至预设缓冲区,当缓存M个有效数据后,通过M个lane分别传输所读取的M个有效数据。这种情况下,向下游模块传输数据时,M个lane传输的均为有效数据,减少了多lane总线传输的无效数据,提高了多lane总线系统的总线利用率,进而在不改变上游模块和下游模块的数据架构的基础上,提高了整个多lane总线系统的数据传输效率。
通信总线可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据传输方法的步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据传输方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统、装置、电子设备、计算机可读存储介质和包含指令的计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

Claims (14)

1.一种数据传输方法,其特征在于,所述方法包括:
获取每个时钟周期内数据总线包括的M个线路lane分别传输的数据,得到M个数据;
将所述M个数据中的有效数据存储至预设缓冲区;
当所述预设缓冲区中最后一次数据读取位置至最后一次数据存储位置之间的数据长度大于等于预设数据长度时,从所述预设缓冲区读取M个有效数据,所述预设数据长度为一个lane传输的最大数据长度的M倍数;
通过所述M个lane分别传输所读取的M个有效数据。
2.根据权利要求1所述的方法,其特征在于,所述将所述M个数据中的有效数据存储至预设缓冲区的步骤,包括:
重排所述M个数据,以使所述M个lane中,有效数据对应的lane相邻,无效数据对应的lane相邻;
将重排后的M个数据中的有效数据存储至预设缓冲区。
3.根据权利要求2所述的方法,其特征在于,所述重排所述M个数据的步骤,包括:
将所述M个lane划分为至少一组lane,其中,每组lane包括两个相邻的lane,且每两组lane包括的lane不同;
分别对比每组lane所对应的两个数据,得到每组lane的对比结果;
根据每组lane的对比结果,分别对每组lane所对应的两个数据进行重排,以使每组lane中,有效数据对应的lane在无效数据对应的lane的指定方向上;
重新执行所述将所述M个lane划分为至少一个组lane的步骤,直至重排次数达到预设次数,其中,每次划分得到的至少一组lane与上一次划分得到的至少一组lane不同。
4.根据权利要求1所述的方法,其特征在于,所述将所述M个数据中的有效数据存储至预设缓冲区的步骤,包括:
以预设缓冲区中写指针所指向的位置为起始位置,向所述预设缓冲区写入所述M个数据中的有效数据;将所述写指针指向最后一次数据存储位置的尾部;
所述当所述预设缓冲区中最后一次数据读取位置至最后一次数据存储位置之间的数据长度大于等于预设数据长度时,从所述预设缓冲区读取M个有效数据的步骤,包括:
当所述预设缓冲区中所述写指针与读指针之间的数据长度大于等于预设数据长度时,以所述预设缓冲区中所述读指针所指向的位置为起始位置,读取M个有效数据;将所述读指针指向最后一次数据读取位置的尾部。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述预设缓冲区的位宽为所述M个lane的总位宽的预设倍数。
6.一种数据传输装置,其特征在于,所述装置包括:
获取单元,用于获取每个时钟周期内数据总线包括的M个线路lane分别传输的数据,得到M个数据;
存储单元,用于将所述M个数据中的有效数据存储至预设缓冲区;
读取单元,用于当所述预设缓冲区中最后一次数据读取位置至最后一次数据存储位置之间的数据长度大于等于预设数据长度时,从所述预设缓冲区读取M个有效数据,所述预设数据长度为一个lane传输的最大数据长度的M倍数;
传输单元,用于通过所述M个lane分别传输所读取的M个有效数据。
7.一种数据传输系统,其特征在于,包括上游模块、与所述上游模块连接的数据整合模块、与所述数据整合模块连接的异步先进先出FIFO模块,以及与所述异步FIFO模块连接的下游模块;
所述上游模块,用于在每个时钟周期内,通过数据总线包括的M个线路lane分别向所述数据整合模块传输数据;
所述数据整合模块,用于获取每个时钟周期内所述M个lane分别传输的数据,得到M个数据;将所述M个数据中的有效数据存储至预设缓冲区;当所述预设缓冲区中最后一次数据读取位置至最后一次数据存储位置之间的数据长度大于等于预设数据长度时,从所述预设缓冲区读取M个有效数据,所述预设数据长度为一个lane传输的最大数据长度的M倍数;通过所述M个lane分别向所述异步FIFO模块传输所读取的M个有效数据;
所述异步FIFO模块,用于接收所述数据整合模块传输的所述M个有效数据;通过所述M个lane分别将所述M个有效数据传输至所述下游模块;
所述下游模块,用于通过所述M个lane,接收所述异步FIFO模块传输的所述M个有效数据。
8.根据权利要求7所述的系统,其特征在于,所述异步FIFO模块,还用于向所述数据整合模块发送数据整合信号;
所述数据整合模块,具体用于若检测到所述数据整合信号,则在得到所述M个数据后,将所述M个数据中的有效数据存储至预设缓冲区;若未检测到所述数据整合信号,在得到所述M个数据后,通过所述M个lane分别向所述异步FIFO模块传输所述M个数据。
9.根据权利要求8所述的系统,其特征在于,所述异步FIFO模块,具体用于在检测到本地存储空间中被占用空间的容量大于第一预设数据量时,向所述数据整合模块发送数据整合信号。
10.根据权利要求7所述的系统,其特征在于,所述异步FIFO模块,还用于向所述数据整合模块发送第一数据传输信号;
所述数据整合模块,具体用于在检测到所述第一数据传输信号的情况下,向所述上游模块发送第二数据传输信号;
所述上游模块,具体用于在检测到所述第二数据传输信号的情况下,在每个时钟周期内,通过数据总线包括的M个lane分别向所述数据整合模块传输数据。
11.根据权利要求10所述的系统,其特征在于,所述异步FIFO模块,具体用于在检测到本地存储空间中未被占用空间的容量大于第二预设数据量时,向所述数据整合模块发送第一数据传输信号。
12.根据权利要求7所述的系统,其特征在于,所述数据整合模块,具体用于:
重排所述M个数据,以使所述M个lane中,有效数据对应的lane相邻,无效数据对应的lane相邻;
将重排后的M个数据中的有效数据存储至预设缓冲区。
13.根据权利要求12所述的系统,其特征在于,所述数据整合模块,具体用于:
将所述M个lane划分为至少一组lane,其中,每组lane包括两个相邻的lane,且每两组lane包括的lane不同;
分别对比每组lane所对应的两个数据,得到每组lane的对比结果;
根据每组lane的对比结果,分别对每组lane所对应的两个数据进行重排,以使每组lane中,有效数据对应的lane在无效数据对应的lane的指定方向上;
重新执行所述将所述M个lane划分为至少一个组lane的步骤,直至重排次数达到预设次数,其中,每次划分得到的至少一组lane与上一次划分得到的至少一组lane不同。
14.根据权利要求7所述的系统,其特征在于,所述数据整合模块,具体用于:
以预设缓冲区中写指针所指向的位置为起始位置,向所述预设缓冲区写入所述M个数据中的有效数据;将所述写指针指向最后一次数据存储位置的尾部;
当所述预设缓冲区中所述写指针与读指针之间的数据长度大于等于预设数据长度时,以所述预设缓冲区中所述读指针所指向的位置为起始位置,读取M个有效数据;将所述读指针指向最后一次数据读取位置的尾部。
CN202110916377.1A 2021-08-11 2021-08-11 一种数据传输方法、装置及系统 Active CN113360130B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110916377.1A CN113360130B (zh) 2021-08-11 2021-08-11 一种数据传输方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110916377.1A CN113360130B (zh) 2021-08-11 2021-08-11 一种数据传输方法、装置及系统

Publications (2)

Publication Number Publication Date
CN113360130A true CN113360130A (zh) 2021-09-07
CN113360130B CN113360130B (zh) 2021-10-29

Family

ID=77522919

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110916377.1A Active CN113360130B (zh) 2021-08-11 2021-08-11 一种数据传输方法、装置及系统

Country Status (1)

Country Link
CN (1) CN113360130B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114900484A (zh) * 2022-04-29 2022-08-12 上海星秒光电科技有限公司 一种不同网络接口间的数据传输方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101836193A (zh) * 2007-10-05 2010-09-15 提琴存储器公司 一种同步数据总线装置及数据传输方法
US20150193316A1 (en) * 2014-01-06 2015-07-09 International Business Machines Corporation Bus interface optimization by selecting bit-lanes having best performance margins
CN107643993A (zh) * 2016-07-20 2018-01-30 中兴通讯股份有限公司 总线转换接口、总线转换接口的工作方法和通信设备
CN110058207A (zh) * 2019-04-19 2019-07-26 西安微电子技术研究所 一种用于雷达信号传输的多lane数据同步及重组系统与方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101836193A (zh) * 2007-10-05 2010-09-15 提琴存储器公司 一种同步数据总线装置及数据传输方法
US20150193316A1 (en) * 2014-01-06 2015-07-09 International Business Machines Corporation Bus interface optimization by selecting bit-lanes having best performance margins
CN107643993A (zh) * 2016-07-20 2018-01-30 中兴通讯股份有限公司 总线转换接口、总线转换接口的工作方法和通信设备
CN110058207A (zh) * 2019-04-19 2019-07-26 西安微电子技术研究所 一种用于雷达信号传输的多lane数据同步及重组系统与方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘瑞麒等: "射频信号生成系统PCIe总线接口设计", 《计算机工程与设计》 *
尤峰: "基于PCIe总线的高速数据采集系统设计与实现", 《电子测试》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114900484A (zh) * 2022-04-29 2022-08-12 上海星秒光电科技有限公司 一种不同网络接口间的数据传输方法、装置、设备及介质
CN114900484B (zh) * 2022-04-29 2023-11-03 上海星秒光电科技有限公司 一种不同网络接口间的数据传输方法、装置、设备及介质

Also Published As

Publication number Publication date
CN113360130B (zh) 2021-10-29

Similar Documents

Publication Publication Date Title
US7797467B2 (en) Systems for implementing SDRAM controllers, and buses adapted to include advanced high performance bus features
US20090119460A1 (en) Storing Portions of a Data Transfer Descriptor in Cached and Uncached Address Space
CN102841871B (zh) 基于高速串行总线的DMA结构的pipeline读写方法
WO2021120623A1 (zh) 一种数据传输方法、装置及相关组件
US20140101340A1 (en) Efficient Scheduling of Transactions from Multiple Masters
US9690713B1 (en) Systems and methods for effectively interacting with a flash memory
US20240143392A1 (en) Task scheduling method, chip, and electronic device
CN113032293A (zh) 缓存管理器及控制部件
CN113360130B (zh) 一种数据传输方法、装置及系统
CN114051611A (zh) 用于非连续存储器的dma分散和聚集操作
US8527684B2 (en) Closed loop dynamic interconnect bus allocation method and architecture for a multi layer SoC
US7409486B2 (en) Storage system, and storage control method
US20100228901A1 (en) Input output control apparatus with a plurality of ports and single protocol processing circuit
CN116414767B (zh) 一种对基于axi协议乱序响应的重排序方法及系统
CN204390227U (zh) 计算设备扩展装置、以及可扩展的计算系统
CN111290983A (zh) Usb传输设备及传输方法
US8886844B2 (en) Efficient scheduling of read and write transactions in dynamic memory controllers
US8037254B2 (en) Memory controller and method for coupling a network and a memory
US11811897B2 (en) Method for data processing of frame receiving of an interconnection protocol and storage device
KR102338872B1 (ko) 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법
JP7177948B2 (ja) 情報処理装置、及び情報処理方法
EP1704487B1 (en) Dmac issue mechanism via streaming id method
US10185684B2 (en) System interconnect and operating method of system interconnect
CN218996035U (zh) 一种配合xmda使用的rdma高速数据传输系统
CN112069096B (zh) 控制器

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