多通道位宽变化的数据传输系统、方法、设备和存储介质与流程

文档序号:23269870发布日期:2020-12-11 19:01阅读:123来源:国知局
多通道位宽变化的数据传输系统、方法、设备和存储介质与流程

本发明涉及集成电路技术领域,尤其涉及一种通道位宽变化的数据传输系统、方法、设备和存储介质。



背景技术:

随着信息技术的进步,网络信息传输得到了高速发展。网络信息基本是按照网络协议、被包装成指定定义格式的数据包传递的。这些数据包会在网络部署节点(如数据汇聚、数据交换等节点),根据应用而进入不同的转发通道。

在转发前后数据位宽可能发生变化,比如常见的网络数据包处理场景要求将一组位宽较大(例如位宽是a字节)的输入数据转换成位宽较小(例如位宽是b字节)的数据进行输出。由于数据输出通道位宽小,可能需要分多个时钟周期将输入数据全部输出。这样在多通道模式下,输出通道可能被某一个或几个输入通道占据,导致其他输入通道没有输出数据的不公平通信情况出现。



技术实现要素:

本发明的目的在于提供一种通道位宽变化的数据传输系统、方法、设备和存储介质。

为实现上述发明目的之一,本发明一实施方式提供一种多通道位宽变化的数据传输系统,所述系统包括写数据单元、数据缓存单元、输出请求单元、输出队列调度单元和读数据单元,其中:

所述写数据单元将位宽为a的输入数据写入到所述数据缓存单元中,并将所述输入数据的关键信息发送给所述输出请求单元;

所述输出请求单元根据收到的输入数据的关键信息,生成d个输出请求后,将所述d个输出请求放入输出请求队列中,所述d=math.ceil(c/b),所述c为输入数据的有效字节数,所述b为输出数据的位宽,所述输入数据的每个输出请求包括所述输入数据的关键信息和输出请求编号;

所述输出队列调度单元在输出请求队列为非空时,根据调度算法选中一个输出请求队列中的输出请求,并根据所述输出请求从所述数据缓存单元中获取输入数据,并将所述输入数据、所述输出请求中输入数据的关键信息和输出请求编号发送给读数据单元;

所述读数据单元根据所述输入数据的关键信息和输出请求编号,从所述输入数据中选择对应的b字节数据作为输出数据发送出去,所述b小于a。

作为本发明一实施方式的进一步改进,所述输入数据的关键信息包括写入数据缓存单元的行地址g、通道编号、输入数据的有效字节数c和输出数据的位宽b。

作为本发明一实施方式的进一步改进,所述读数据单元还用于根据所述关键信息中的通道编号,将所述输出数据发送到对应编号的通道中。

作为本发明一实施方式的进一步改进,所述系统还包括数据缓存地址管理单元,所述数据缓存地址管理单元用于管理所述数据缓存单元的行地址,并为所述输入数据分配有效的行地址。

作为本发明一实施方式的进一步改进,所述输出请求还包括行地址释放标志位,在所述输出请求被所述输出队列调度单元选中后,所述输出队列调度单元还用于将所述行地址释放标志位与所述输出请求的其它信息一起发送给所述读数据单元,其中在所述输入数据的最后一个输出请求中所述地址释放标志位为有效;

所述读数据单元还用于在将输出数据发送出去后,若所述输出请求的地址释放标志位为有效时,给所述数据缓存地址管理单元发送行地址释放消息。

作为本发明一实施方式的进一步改进,所述输出请求队列根据所述通道编号进行划分,所述输出请求单元用于将所述输出请求放入对应通道编号的输出请求队列中。

为实现上述发明目的之一,本发明一实施方式提供一种多通道位宽变化的数据传输方法,所述方法包括:

将位宽为a的输入数据写入到数据缓存单元中;

根据所述输入数据的关键信息生成d个输出请求,将所述d个输出请求放入输出请求队列中,所述d=math.ceil(c/b),所述c为输入数据的有效字节数,所述b为输出数据的位宽,所述输入数据的每个输出请求包括所述输入数据的关键信息和输出请求编号;

在输出请求队列为非空时,根据调度算法选中一个输出请求队列中的输出请求,并根据所述输出请求从所述数据缓存单元中获取输入数据;

根据所述输入数据的关键信息和输出请求编号,从所述输入数据中选择对应的b字节数据作为输出数据发送出去,所述b小于a。

作为本发明一实施方式的进一步改进,所述输出请求还包括行地址释放标志位,所述输入数据的最后一个输出请求中所述地址释放标志位为有效,所述方法还包括:

在将输出数据发送出去后,若所述输出请求的地址释放标志位为有效,将所述输出请求中的行地址发送给所述数据缓存单元进行释放。

为实现上述发明目的之一,本发明一实施方式提供一种电子设备,包括存储器和处理器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任意一项所述多通道位宽变化的数据传输方法中的步骤。

为实现上述发明目的之一,本发明一实施方式提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述多通道位宽变化的数据传输方法中的步骤。

与现有技术相比,本发明的多通道位宽变化的数据传输系统,输入数据只需要存储在数据缓存单元,然后利用输出请求的少量控制信息就可以把输入数据按照要求位宽输出,不需要将输入数据进行多次搬移缓存,特别是对于处理瞬间突发的大量输入数据,极大简化了数据传输过程,并且能大大减小数据存储资源。同时,支持多通道交替输出数据,避免输出通道被某一个通道的输出数据长时间占用。

附图说明

图1是现有技术的数据传输系统的结构示意图。

图2是本发明多通道位宽变化的数据传输系统的结构示意图。

图3是本发明多通道位宽变化的数据传输方法的流程示意图。

具体实施方式

以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。

对于现有技术的多通道位宽变化的数据传输系统,输入数据的位宽为a,输出数据的位宽为b,a>b。请参考图1所示,所述系统包括数据缓存单元、用于管理数据缓存单元的缓存空间的数据缓存管理单元、读数据处理单元、读数据仲裁单元和多通道缓存单元。现有技术的数据传输系统的处理流程如下:

输入数据的写过程包括:

将输入数据写入数据缓存单元。

输出数据的读过程包括:

步骤1.按照“读地址1”从“数据缓存单元”一次最多读出最多a字节的数据;

步骤2.在“读数据处理单元”,从读数据(此处假设最多a字节读数据均有效)里面顺序选出b字节进行输出,还将剩下的a-b字节不能一次性输出,按以照通道编号为索引写入到“多通道缓存单元”;

步骤3.“读数据仲裁单元”会收到来自“数据缓存管理单元”的输出请求1和来自“多通道缓存单元”的输出请求2。如果仲裁决定从“数据缓存管理单元”读数据,那么就到步骤1。如果是仲裁决定从“多通道缓存单元”读数据,那么就到步骤4。

步骤4.按照“读地址2”从“多通道缓存单元”一次最多读出最多a-b字节的数据。在“读数据处理单元”,从读数据里面顺序选出最多b字节进行输出。如果a-b-b>0,即还有剩余数据没有被输出,则将剩余的a-b-b字节数据回写到“多通道缓存单元”。回到步骤3。

现有技术的数据传输系统存在如下问题:

1.从数据缓存单元输出的数据,由于不能一次性输出,剩余的数据还要按照通道编号进行缓存。这样不但需要数据缓存单元,还需要一个多通道缓存单元,大大增加了数据存储资源。而且随着输入数据位宽与输出数据位宽比例的增大,多通道缓存单元的资源开销随之增大。

2.由于输出数据可能来自数据缓存单元,也可能来自多通道缓存单元,因此需要读数据仲裁单元,增加了设计复杂度。

因此,本发明提供一种多通道位宽变化的数据传输系统,所述系统设计简单,并且能够大大减小数据存储资源。

如图2所示,本发明的数据传输系统包括写数据单元10、数据缓存单元20、输出请求单元30、输出队列调度单元40和读数据单元50,其中:

所述写数据单元10将位宽为a的输入数据写入到所述数据缓存单元20中,并将所述输入数据的关键信息发送给所述输出请求单元30。

所述数据缓存单元20为位宽大于等于a、深度为n(即包括n个行地址)的缓存区,所述写数据单元将输入数据写入到数据缓存单元20的空闲行地址中,每个输入数据使用一个空闲的行地址。为了避免浪费,优选所述数据缓存单元的位宽为a。

在一个优选的实施方式中,所述数据传输系统还包括数据缓存地址管理单元60,其用于管理所述数据缓存单元的空闲行地址,并在收到新的输入数据时,将空闲行地址分配给所述输入数据。

所述输出请求单元30根据收到的输入数据的关键信息,生成d个输出请求后,将所述d个输出请求放入输出请求队列中,所述d=math.ceil(c/b),所述c为输入数据的有效字节数,所述b为输出数据的位宽,所述输入数据的每个输出请求包括所述输入数据的关键信息和输出请求编号。

所述输入数据的关键信息包括写入数据缓存单元20的行地址g、通道编号、输入数据的有效字节数c和输出数据的位宽b。所述输出请求单元30根据输入数据的有效字节数c和输出数据的位宽b,计算出需要读取所述输入数据的次数d,也称为输出请求的个数d,所述d=math.ceil(c/b),所述函数math.ceil为向上取整。假设输入数据的有效字节数为200个字节,输出数据的位宽为48个字节,那么d=math.ceil(200/48)=5,即读取所述输入数据,需要分5个输出请求。同时每个输出请求都包括输出请求的编号,所述编号可以是0~d-1,从而通过编号,可以准确获取输入数据对应的b字节的输出数据。例如前文的5个输出请求,编号为0的输出请求获取输入数据的第0~47个字节,编号为1的输出请求获取输入数据的第48~95个字节,依次类推,最后一个输出请求本应该获取输入数据的第192~239个字节,但是因为有效数据c=200,因此最后一个输出请求获取第192~200个字节。

需要说明的是,所述输出请求是按照先进先出的顺序进入所述输出请求队列,并且编号小的输出请求先进入,编号大的后进入,从而保证输入数据分多次输出的顺序正确。

所述输出请求队列可以有m个,m>=1,一个输入数据的d个输出请求按照顺序放入同一个队列,所述输入数据可以随机放入到某个队列,也可以根据输入数据的编号,放入到对应编号的输出请求队列中。如图2所示,一个输出请求队列中可以包括多个输入数据的d个输出请求(例如图2中输出请求队列1中包括输入数据1~输入数据o的d个输出请求,输出请求队列m中包括输入数据p~输入数据q的d个输出请求)。

所述输出队列调度单元40在输出请求队列为非空时,根据调度算法选中一个输出请求队列中的输出请求,并根据所述输出请求从所述数据缓存单元20中获取输入数据,并将所述输入数据、所述输出请求中输入数据的关键信息和输出请求编号发送给读数据单元50。通过输出队列调度单元40对输出请求队列中的输出请求进行调度,能够支持多通道交替输出数据,避免输出通道被某一个通道的输出数据长时间占用。

所述输出请求队列非空是指至少有一个输出请求队列中存在输出请求。所述调度算法为现有技术,例如可以从存在输出请求的队列中随机选中一个队列,也可以根据优先级,选择优先级最高的存在输出请求的队列。在选中一个输出请求队列后,根据先进先出的原则选中一个输出请求。所述输出请求包括输入数据的关键信息和输出请求编号。根据关键信息(行地址g)从数据缓存单元20中读取整个输入数据,发送给读数据单元50,同时也将关键信息和输出请求编号发送给读数据单元50。

所述读数据单元50根据所述输入数据的关键信息和输出请求编号,从所述输入数据中选择对应的位宽为b的数据发送出去,所述b小于a。

所述读数据单元50根据输出请求编号,从所述输入数据中选择对应的b字节数据作为输出数据发送出去。若所述输出请求为所述输入数据的最后一个输出请求,还要根据有效字节数c从所述b字节的数据中选择对应的有效数据作为输出数据发送出去。另外,所述输入数据的关键信息中还包括通道编号,所述读数据单元50将所述输出数据输出到对应编号的通道中。

本发明的多通道位宽变化的数据传输系统,输入数据只需要存储在数据缓存单元,然后利用输出请求的少量控制信息就可以把输入数据按照要求位宽输出,不需要将输入数据进行多次搬移缓存,特别是对于处理瞬间突发的大量输入数据,或者所述输入数据与输出数据位宽比较大时,极大简化了数据传输过程,并且能大大减小数据存储资源。同时,支持多通道交替输出数据,避免输出通道被某一个通道的输出数据长时间占用。

在一个优选的实施方式中,所述输出请求还包括行地址释放标志位,在所述输出请求被所述输出队列调度40单元选中后,所述输出队列调度单元40还用于将所述行地址释放标志位与所述输出请求的其它信息一起发送给所述读数据单元,其中在所述输入数据的最后一个输出请求中所述地址释放标志位为有效,所述输入数据的其它输出请求的地址释放标志位为无效。所述读数据单元50还用于在将输出数据发送出去后,若所述输出请求的地址释放标志位为有效时,给所述数据缓存地址管理单元60发送行地址释放消息。所述数据缓存地址管理单元60对所述行地址进行释放,或标记所述行地址为空闲。

请继续参考图2,在一个具体的实施方式中,写数据单元10收到位宽为a的输入数据,还收到所述输入数据的通道编号、有效字节数c和输出数据的位宽b,然后将所述输入数据写入到数据缓存地址管理单元60分配的数据缓存单元20的空闲行地址g中。之后将所述输入数据的关键信息(包括通道编号、有效字节数c、空闲行地址g和输出数据的位宽b)发送给输出请求单元30。输出请求单元根据所述关键信息,生成所述输入数据的d个输出请求(d=math.ceil(c/b)),放入输出请求队列中。每个所述输出请求都包括有输出请求编号,并且所述输入数据的最后一个输出请求的行地址释放标志位为有效。所述输出队列调度单元40根据调度算法选择一个存有输出请求的队列的第一个输出请求,获取所述输出请求的行地址,从所述数据缓存单元中读出所述行地址对应的输入数据,发送给所述读数据单元50,同时将所述输出请求的关键信息、输出请求编号和行地址释放标志位发送给读数据单元50。读数据单元50根据输出请求编号,从所述输入数据中选择对应的b字节数据作为输出数据发送到对应编号的通道中。并且若所述输出请求为所述输入数据的最后一个输出请求,还要根据有效字节数c从所述b字节的数据中选择对应的有效数据作为输出数据发送出去。然后在行地址释放标志位为有效时,将所述行地址发送给数据缓存地址管理单元进行释放。

如图3所示,本发明还提供一种多通道位宽变化的数据传输方法,所述方法为上述数据传输系统的数据传输方法,所述方法包括:

步骤s100:将位宽为a的输入数据写入到数据缓存单元中。

获取所述数据缓存单元的空闲行地址g,然后将所述输入数据写入到行地址g中。

步骤s200:根据所述输入数据的关键信息生成d个输出请求,将所述d个输出请求放入输出请求队列中,所述d=math.ceil(c/b),所述c为输入数据的有效字节数,所述b为输出数据的位宽,所述输入数据的每个输出请求包括所述输入数据的关键信息和输出请求编号。

步骤s300:在输出请求队列为非空时,根据调度算法选中一个输出请求队列中的输出请求,并根据所述输出请求从所述数据缓存单元中获取输入数据。

步骤s400:根据所述输入数据的关键信息和输出请求编号,从所述输入数据中选择对应的b字节数据作为输出数据发送出去,所述b小于a。

在一个优选的实施方式中,所述输出请求还包括行地址释放标志位,所述输入数据的最后一个输出请求中所述地址释放标志位为有效,所述方法还包括:

在将输出数据发送出去后,若所述输出请求的地址释放标志位为有效,将所述输出请求中的行地址发送给所述数据缓存单元进行释放。

本发明还提供一种电子设备,包括存储器和处理器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述所述多通道位宽变化的数据传输方法中的任意一个步骤,也就是说,实现上述所述多通道位宽变化的数据传输方法中任意一个技术方案中的步骤。

本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述多通道位宽变化的数据传输方法中的任意一个步骤,也就是说,实现上述所述多通道位宽变化的数据传输方法中的任意一个技术方案中的步骤。

应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1