本发明涉及网络技术领域,尤其涉及一种数据流处理方法、装置、计算机可读存储介质及设备。
背景技术:
在现代网络中,数据千变万化,存在多路数据流需合并的情况。当多路数据流需合并时,数据就需要进行缓存并排队发送。当数据进行缓存时,每路数据流都需有相应的存储器进行缓存。
在数据的总数为固定的场景下,各路数据流发送的数据总和为数据的总数。每路数据流发送的数据最多为数据的总数,最少为0,也即每一路数据流发送的数据数是不固定的。为了能将每路数据流的数据全部缓存,存储器的容量设置需基于最大数据数考虑。
如图1所示,以数据总数为8192,共有4路数据流为例,进行说明:当数据总数为8192时,分成4路数据流送出,如果每条数据流送出的数据数都为2048,那每块存储器的深度只需2048;而如果数据流1和数据流2不发送数据,那数据流0和数据流3发送的数据总数就为8192,这时,如果只考虑两条数据流发送数据数均分,都为4096,存储器0和存储器3的深度就需4096;如果只有数据流0发送数据,那存储器0的深度就要为8192。上面只考虑了数据数均分的情况,真实情况会更复杂。这样就导致缓存数据的存储器的深度不能固定,而要根据各个数据流发送的数据数进行调整,这在实际设计中很难实现。而为了最大限度的缓存数据,不使数据丢失,就需要将缓存数据的存储器深度都做到最大数8192,如此设置,将会浪费大量的存储器存储空间。
技术实现要素:
为了实现多路数据流处理时,减小存储器存储空间的浪费,本发明提供一种数据流处理方法,所述数据流包括第一数据流以及第二数据流,所述方法包括:
将所述第一数据流和所述第二数据流传输的数据分别写入缓存中;响应于所述缓存中已写入分别来自所述第一数据流和所述第二数据流的数据,将所述缓存内的所述数据全部写入存储器。
可选地,所述方法还包括:检测所述存储器内的数据是否为空,若是,则直接自所述缓存读出数据。
可选地,所述方法还包括:响应于数据传输结束且所述缓存中只存储了所述第一数据流或所述第二数据流之一的数据,读出所述存储器中的数据直至所述存储器中的数据为空后,自所述缓存内读出数据。
本发明还提供了一种数据流处理装置,应用于处理至少两路数据流,包括:缓存,可由所述至少两路数据流共享以缓存数据;存储器,与所述缓存相连接,能够接收并存储所述缓存中的数据;以及处理器,响应于所述缓存中写入所述至少两路数据流的数据,将所述缓存内的数据写入存储器。
可选地,数据流处理装置还包括仲裁器,与所述缓存与所述存储器分别相连接,用于分发自所述存储器或所述缓存读出的数据。
可选地,所述存储器的宽度为至少两路数据流的数据的宽度之和,所述存储器的深度与至少两路数据流中数据数较大者的数量相等。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质中包括数据流处理方法程序,所述数据流处理方法程序被处理器执行时,实现上述数据流处理方法的步骤。
本发明还提供了一种设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述数据流处理方法。
本申请提供了一种数据流处理装置,能够减少存储器的存储空间,减少存储空间的浪费,另外,基于该数据流处理装置,本申请提供了一种数据流处理方法,能够提高数据传输的效率,并且避免数据传输末期数据残留。
附图说明
图1是现有技术中的数据流处理装置的结构示意图;
图2是本申请实施例中所提供的数据流处理装置的结构示意图。
具体实施方式
以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
本发明一实施例提供了一种数据流处理装置,应用于处理至少两路数据,为了便于描述,本实施例中,以至少两路数据流包括第一数据流10以及第二数据流20作为示例,如图2所示,数据流处理装置包括:缓存1,可由第一数据流10和第二数据路20共享以缓存数据;存储器2,与缓存1相连接,能够接收并存储缓存1中的数据;处理器3,与缓存1和存储器2分别相连接,响应于缓存1中写入第一数据流10和第二数据流20的数据,将缓存1内的存储的第一数据流10和第二数据流20的数据一起写入存储器2;仲裁器4,与缓存1、存储器2以及处理器3分别相连接,用于分发自存储器2或缓存1读出的数据。
具体地,仲裁器4可以基于缓存1和存储器2的存储状态在处理器3的控制下选择自缓存1或存储器2中的存储数据。
例如,在存储器2为空时,仲裁器4直接自缓存1读取数据。
以数据总数为8192、数据宽度为200比特为例,若采用如图1所示的传统的数据流处理方法,存储器所需的总存储空间为2*8192*200=3276800比特,而采用本实施例所提供的数据流处理装置,存储器2的深度可以固定为2048,存储器的宽度为一个数据的宽度的两倍也即400比特,总的存储空间为2048*400=819200比特,也即,相比于传统数据流处理方法,本实施例所提供的数据流处理装置能够节约存储器2约75%的存储空间。
根据本实施例所提供的方案,本领域技术人员容易获知,将该方案应用于n路数据流(n为大于等于2的整数)的处理。
需要说明的是,本实施例给出了两路数据流的宽度和数据数均相同的特殊示例,而在实际应用过程中,各路数据流的宽度和数据数均可能不同,基于此,仍以数据流包括第一数据流10和第二数据流20做为示例,假设第一数据流10的数据的数据数大于第二数据流20的数据的数据数,则可以将存储器2的深度设置为与第一数据流10的数据的数据数相等。另外,可以将存储器2的宽度设置为第一数据流10的数据的宽度和第二数据流20的数据的宽度之和。
现有技术的数据调度,通常采用轮询的方式,自每个存储器读出数据并送出,也即,每次只需送出一个数据即可将对应的存储器读空,而本实施例所提供的数据流处理装置,每次写入存储器2的数据通常为两个,而每次通常只需送出一个数据,故需要两次送出数据后,才能将存储器2读空。
基于此,本实施例提供了一种数据流处理方法,基于上述数据流处理装置处理数据流,所述方法包括:将第一数据流10和第二数据流20传输的数据分别写入缓存1中;
响应于缓存1中已写入分别来自第一数据流10和第二数据流20的数据,将缓存1内的数据全部写入存储器2。
所述方法还包括:检测存储器2内的数据是否为空,若是,则直接自所述缓存1内读出数据。
如此设置,能够使得数据传输的效率更高。
所述方法还包括:响应于数据传输结束且缓存1中只存储了第一数据流10或第二数据流20的数据,读出存储器2中的数据直至存储器2中的数据为空后,自缓存1内读出数据。
如此设置,可以保证数据传输的末期不会有数据残留在缓存1中。
本实施例还提供了一种计算机可读存储介质,计算机可读存储介质中包括数据流处理方法程序,数据流处理方法程序被处理器执行时,实现上述数据流处理方法的步骤。
本实施例还提供了一种设备,包括处理器(未图示)和存储器(未图示),存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述数据流处理方法。
本发明的技术内容及技术特征已揭示如上,然后熟悉本领域的技术人员仍可基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请的权利要求所涵盖。
1.一种数据流处理方法,所述数据流包括第一数据流以及第二数据流,其特征在于,所述方法包括:
将所述第一数据流和所述第二数据流传输的数据分别写入缓存中;
响应于所述缓存中已写入分别来自所述第一数据流和所述第二数据流的数据,将所述缓存内的所述数据全部写入存储器。
2.如权利要求1所述的数据流处理方法,其特征在于,所述方法还包括:检测所述存储器内的数据是否为空,若是,则直接自所述缓存读出数据。
3.如权利要求1所述的数据流处理方法,其特征在于,所述方法还包括:
响应于数据传输结束且所述缓存中只存储了所述第一数据流或所述第二数据流之一的数据,读出所述存储器中的数据直至所述存储器中的数据为空后,自所述缓存内读出数据。
4.一种数据流处理装置,应用于处理至少两路数据流,其特征在于,包括:
缓存,可由所述至少两路数据流共享以缓存数据;
存储器,与所述缓存相连接,能够接收并存储所述缓存中的数据;以及
处理器,与所示缓存和所述存储器分别相连接,响应于所述缓存中写入所述至少两路数据流的数据,将所述缓存内的数据写入存储器。
5.如权利要求4所述的数据流处理装置,其特征在于,还包括:
仲裁器,与所述缓存、所述存储器以及所述处理器分别相连接,用于分发自所述存储器或所述缓存读出的数据。
6.如权利要求4或5所述的数据流处理装置,其特征在于,所述存储器的宽度为至少两路数据流的数据的宽度之和,所述存储器的深度与至少两路数据流中数据数较大者的数量相等。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中包括数据流处理方法程序,所述数据流处理方法程序被处理器执行时,实现如权利要求1-3中任一项所述的一种数据流处理方法的步骤。
8.一种设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1-3中任一项所述的一种数据流处理方法。
技术总结