一种数据缓存方法及装置与流程

文档序号:19193726发布日期:2019-11-25 21:25阅读:256来源:国知局
一种数据缓存方法及装置与流程

本发明涉及数据缓存领域,尤其涉及一种大数据的数据缓存方法。



背景技术:

当设备之间传输数据时,如果不设置缓存,接收设备在接收时必须执行中断,令进程去接收数据,严重影响设备自身的工作效率,因此需要一个能够缓存数据功能的机制,使得设备间数据交互时不必进行中断,只需在有冗余资源的时候进行接收即可。目前采用的缓存机制有先入先出队列(fifo,即firstinputfirstoutput),这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。当前缓存算法的缺点在于,队列宽度也是有限的,不能按块写入数据,不能收发大块数据,在写入的时候也无法校验数据正误,容易产生异常。导致极大的使用不便。



技术实现要素:

为了解决上述缓存使用不便的问题,需要提供一种新的数据缓存方法和运用该方法的系统。

为实现上述目的,发明人提供了一种数据缓存方法,包括如下步骤,接收待写入数据包大小信息,根据待写入数据包大小信息和缓存中剩余空间大小信息判断是否可以写入数据包,当可写入时,接收待缓存数据及其在数据包内相对位置偏移,根据缓存中当前写入地址与数据包内相对位置偏移确定写地址,然后从写地址位置开始写入数据;接收待读取数据包大小信息,根据待读取数据包大小信息和缓存中已使用空间大小信息判断是否可以读取数据包,当可读取时,接收需要读取数据在数据包内相对位置偏移,根据缓存中当前读取地址与读取数据在数据包内相对位置偏移确定读地址,并读地址位置读取数据输出。

具体地,还包括步骤:当写地址超过缓存空间大小时,将所述写地址减去一个缓存空间大小作为实际写地址进行数据写入;当读地址超过缓存地址空间大小时,该所述读地址减去一个缓存空间大小作为实际读地址进行数据读取。

具体地,还包括步骤,计算下一个数据包首地址,具体为:当前数据包首地址加上当前数据包大小作为下一个数据包的首地址,若当前数据包首地址加上当前数据包大小的计算结果超出缓存地址空间,则将所述计算结果减去一个缓存空间大小作为下一个数据包的首地址。

进一步地,还包括步骤:通过当前写入地址与当前读取地址计算出当前缓存中已占用的数据空间大小,再根据当前缓存的大小减去现已占有的数据大小可以得到缓存中剩余空间的大小。

具体地,所述步骤“根据缓存中剩余空间大小判断是否可以写入数据包”具体为:比较当前待写入数据包大小与当前缓存中剩余空间,如果当前待写入数据包大小比当前缓存中剩余空间大时,允许写入信号无效;否则允许写入信号有效。只有当允许写入信号有效才判断为可写入。

具体地,所述步骤“根据缓存中存在数据大小判断是否可以读取数据包”具体为:比较当前待读取数据包大小与当前缓存中已占用的数据空间大小,如果当前待读取数据包大小比当前缓存中已占用的数据空间大时,允许读取信号无效;否则允许读取信号有效。只有当允许读取信号有效才判断为可读取。

一种数据缓存装置,包括如下模块,接收模块、判断模块、写入模块、读取模块;所述接收模块用于接收待写入数据包大小信息、待读取数据包大小信息,还用于接收待缓存数据及其在数据包内相对位置偏移、需要读取数据在数据包内相对位置偏移;所述判断模块用于根据待写入数据包大小信息和缓存中剩余空间大小信息判断是否可以写入数据包,还用于根据待读取数据包大小信息和缓存中已使用空间大小信息判断是否可以读取数据包;所述写入模块用于在判断可以写入数据包时根据缓存中当前写入地址与数据包内相对位置偏移确定写地址,然后从写地址位置开始写入数据;所述读取模块用于在判断可以读取数据包时根据缓存中当前读取地址与读取数据在数据包内相对位置偏移确定读地址,并读地址位置读取数据输出。

具体地,所述写入模块还用于在写地址超过缓存空间大小时,将所述写地址减去一个缓存空间大小作为实际写地址进行数据写入;所述读取模块还用于在读地址超过缓存地址空间大小时,该所述读地址减去一个缓存空间大小作为实际读地址进行数据读取。

具体地,还包括首地址更新模块,所述首地址更新模块用于计算下一个数据包首地址,具体为:当前数据包首地址加上当前数据包大小作为下一个数据包的首地址,若当前数据包首地址加上当前数据包大小的计算结果超出缓存地址空间,则将所述计算结果减去一个缓存空间大小作为下一个数据包的首地址。

进一步地,还包括计算模块,所述计算模块用于通过当前写入地址与当前读取地址计算出当前缓存中已占用的数据空间大小,再根据当前缓存的大小减去现已占有的数据大小可以得到缓存中剩余空间的大小。

具体地,所述判断模块“根据缓存中剩余空间大小判断是否可以写入数据包”具体为:比较当前待写入数据包大小与当前缓存中剩余空间,如果当前待写入数据包大小比当前缓存中剩余空间大时,允许写入信号无效;否则允许写入信号有效。只有当允许写入信号有效才判断为可写入。

具体地,所述判断模块“根据缓存中存在数据大小判断是否可以读取数据包”具体为:比较当前待读取数据包大小与当前缓存中已占用的数据空间大小,如果当前待读取数据包大小比当前缓存中已占用的数据空间大时,允许读取信号无效;否则允许读取信号有效。只有当允许读取信号有效才判断为可读取。

区别于现有技术,上述技术方案通过在缓存中判断是否可以写入数据,并以数据包形式存储数据,因此能够写入任意长度的数据,达到了更加方便运用。

附图说明

图1a为本发明某实施例所述的写入方法流程图;

图1b为本发明某实施例所述的读取方法流程图;

图2为本发明某实施例所述的装置模块图。

附图标记说明:

200、接收模块;

202、判断模块;

204、写入模块;

206、首地址更新模块;

208、读取模块;

210、计算模块。

具体实施方式

为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。

请参阅图1a及图1b,为一种数据缓存方法的写入和读取流程图,可以运行于图2所示的一种数据缓存装置中,该装置包括接收模块200、判断模块202、写入模块204、首地址更新模块206、读取模块208和计算模块210。

在某些实施例中,装置进行图1a所示的一种数据缓存方法,包括步骤s100,接收待写入数据包大小信息,步骤s102根据待写入数据包大小信息和缓存中剩余空间大小信息判断是否可以写入数据包,当判断为可写入时,进行步骤s104接收待缓存数据及其在数据包内相对位置偏移,步骤s106根据缓存中当前写入地址与数据包内相对位置偏移确定写地址,然后从写地址位置开始写入数据;在图1b所示的某些实施例中,还包括步骤s110接收待读取数据包大小信息,步骤s112根据待读取数据包大小信息和缓存中已使用空间大小信息判断是否可以读取数据包,当可读取时,进行步骤s114接收需要读取数据在数据包内相对位置偏移,步骤s116根据缓存中当前读取地址与读取数据在数据包内相对位置偏移确定读地址,并读地址位置读取数据输出。

其中,所述缓存为存储电子数据的元件,包括u盘、内存、硬盘等,也可以是上述元件中划分的部分存储区域。所述待写入数据包是待缓存数据以数据包的形式存储,数据包大小为基本数据单位的倍数,所述基本数据单位可以根据需要设定,如byte、word、48bits、64bits、512bits等等,用于适配不同的数据包的待缓存数据类型。这里待写入数据包大小是指待写入数据包的总数据需要占用的存储空间,当外部接口需要向缓存写入数据时需要提供待写入数据包大小信息。缓存在接收到待写入数据包大小后与缓存中剩余空间大小进行比对,只有当缓存中剩余空间大小不小于待写入数据包大小时,才判断为可写入。待写入数据包括待缓存数据以及待缓存数据在数据包内的相对位置偏移。在某些实施例中,待缓存数据包大小为基本数据单位的倍数,待缓存数据相对数据包首地址的存储位置地址差值为其在数据包内的相对位置偏移,当数据包大小固定为1个基本数据单位,即仅存储有一个数据,此时待缓存数据的相对位置偏移默认为0,也可以省略数据偏移地址。在某些进一步的实施例中,待写入数据包包括多个待缓存基本数据,由于在为待写入数据包分配了存储空间后,每个待缓存数据的存储位置可以通过上述相对位置偏移确定,因此通过重复对多个数据分别执行步骤s106,多个待缓存数据可以不按数据包中的先后顺序写入到缓存中,直到待写入数据包都存储完毕。在另一些实施例中,也可以以数据包仅为单位进行读取,通过重复对多条待读取数据分别执行步骤s116,多条待读取数据可以按数据包中的先后顺序读取出来,直到待读取数据包读取完毕,还可以是写入时候仅为单位数据作为固定包大小,读取按照数据包大小进行。在这里值得一提的是,读取时的待读取数据包划分不必与之前写入操作时的待写入数据包划分一致,即可以使用不同的数据包划分方式进行存储和读取(只要用户保证数据逻辑性问题即可),甚至可以是顺序存储,数据包方式读取,或者数据包方式存储,顺序读取等方式。通过上述设计,达到了在向缓存中写入数据时,能够以数据包为单位进行大块数据存储,而同时数据包中的数据可以根据基本数据单位进行乱序存储,提高了缓存存储的速度。另一方便读取的步骤也达到了提升缓存读取速度的效果。

在某些具体的实施例中,装置还进行步骤:当写地址超过缓存空间大小时,将所述写地址减去一个缓存空间大小作为实际写地址进行数据写入;当读地址超过缓存地址空间大小时,该所述读地址减去一个缓存空间大小作为实际读地址进行数据读取。其中,写地址为待写入数据包首地址加上相对位置偏移得到的计算结果,读地址为待读取数据包首地址加上相对位置便宜得到的计算结果。在某些实施例中,当缓存使用到存储空间末端时,写地址或读地址的运算结果将会超过缓存的空间大小,此时如若还需要进行写入或读取操作可能导致错误,将写地址减去一个缓存空间大小作为实际写地址进行数据写入,以及将读地址减去一个缓存空间大小作为实际读地址进行读取,能够使得原先超出缓存空间的地址返回到缓存空间起始位置。使得缓存能够循环使用,提高了缓存的利用效率。

在进一步的实施例中,装置在当前数据写入完成或读取完毕后还包括步骤,s108计算下一个数据包首地址,具体步骤为:当前数据包首地址加上当前数据包大小作为下一个数据包的首地址,若当前数据包首地址加上当前数据包大小的计算结果超出缓存地址空间,则将所述计算结果减去一个缓存空间大小作为下一个数据包的首地址。这里的数据包在写入状态下对应为待写入数据包,在读取状态中对应为待读取数据包。在某些实施例中,系统对当前数据包的写入或读取操作完成后,根据之前接收的数据包大小信息,将数据包大小加上当前数据包首地址,作为下一个数据包的首地址,若上述加式结果超出了缓存地址空间,将加式结果减去一个缓存空间大小作为下一个数据包首地址。在需要对下一个数据包进行操作的场合(如前述计算写地址、读地址),则用下一个数据包的首地址参与计算。通过上述步骤,使得下一个数据包的数据能够正常进行读取或写入,提高了本方法的实用性与稳定性。并且由于首地址在计算结果超出缓存空间大小时返回缓存空间初始位置,循环使用物理存储空间,也进一步提高了缓存的利用效率。

在某些实施例中,装置还进行步骤:通过当前写入地址与当前读取地址计算出当前缓存中已占用的数据空间大小,再根据当前缓存的大小减去现已占有的数据大小可以得到缓存中剩余空间的大小。通过上述步骤,能够准确的计算出缓存中剩余空间的大小,以用于与待写入数据包进行对比,或计算已使用空间大小,提高了本方法的实用性。

在某些具体的实施例中,所述步骤“根据缓存中剩余空间大小判断是否可以写入数据包”具体为:比较当前待写入数据包大小与当前缓存中剩余空间,如果当前待写入数据包大小比当前缓存中剩余空间大时,允许写入信号无效;否则允许写入信号有效。只有当允许写入信号有效才判断为可写入。所述允许写入信号用于向系统提供是否允许写入信息,可以为高低电平,如“1”代表允许写入信号有效,“0”代表允许写入信号无效等等。待写入数据包大小信息由外部提供,剩余空间由上述方法计算,比较二者大小便能够准确在当前待写入数据包大小小于或等于当前缓存中剩余空间的时候才进行写入,避免了写入错误等异常情况的发生。同时提高了本方法的实用性。

在另一些具体的实施例中,所述步骤“根据缓存中存在数据大小判断是否可以读取数据包”具体为:比较当前待读取数据包大小与当前缓存中已占用的数据空间大小,如果当前待读取数据包大小比当前缓存中已占用的数据空间大时,允许读取信号无效;否则允许读取信号有效。允许读取信号的原理与上述允许写入信号类似,读者可以合理推定,此处不再赘述。只有当允许读取信号有效才判断为可读取。待读取数据包大小信息由外部提供,已占用的数据空间大小由缓存空间大小减去剩余空间大小计算获得,比较二者大小便能够准确在当前待读取数据包大小小于或等于当前缓存中剩余空间的时候才进行写入,避免了读取错误等异常情况的发生,进一步提高了本方法的实用性。

一种数据缓存装置,包括如下模块,接收模块200、判断模块202、写入模块204、读取模块208;所述接收模块用于接收待写入数据包大小信息、待读取数据包大小信息,还用于接收待缓存数据及其在数据包内相对位置偏移、需要读取数据在数据包内相对位置偏移;所述判断模块用于根据待写入数据包大小信息和缓存中剩余空间大小信息判断是否可以写入数据包,还用于根据待读取数据包大小信息和缓存中已使用空间大小信息判断是否可以读取数据包;所述写入模块用于在判断可以写入数据包时根据缓存中当前写入地址与数据包内相对位置偏移确定写地址,然后从写地址位置开始写入数据;所述读取模块用于在判断可以读取数据包时根据缓存中当前读取地址与读取数据在数据包内相对位置偏移确定读地址,并读地址位置读取数据输出。通过上述模块设计,达到了在向缓存中写入数据时,能够以数据包为单位进行大块数据存储,而同时数据包中的数据可以根据基本数据单位进行乱序存储,提高了缓存存储的速度。另一方便读取的步骤也达到了提升缓存读取速度的效果。

在进一步的实施例中,所述写入模块202还用于在写地址超过缓存空间大小时,将所述写地址减去一个缓存空间大小作为实际写地址进行数据写入;所述读取模块还用于在读地址超过缓存地址空间大小时,该所述读地址减去一个缓存空间大小作为实际读地址进行数据读取。通过该设计,使得缓存能够循环使用,提高了缓存的利用效率。

具体地,还包括首地址更新模块206,所述首地址更新模块用于计算下一个数据包首地址,具体为:当前数据包首地址加上当前数据包大小作为下一个数据包的首地址,若当前数据包首地址加上当前数据包大小的计算结果超出缓存地址空间,则将所述计算结果减去一个缓存空间大小作为下一个数据包的首地址。通过设计首地址更新模块206,使得下一个数据包的数据能够正常进行读取或写入,提高了本方法的实用性与稳定性。并且由于首地址在计算结果超出缓存空间大小时返回缓存空间初始位置,也进一步提高了缓存的利用效率。

在某些进一步的实施例中,还包括计算模块208,所述计算模块用于通过当前写入地址与当前读取地址计算出当前缓存中已占用的数据空间大小,再根据当前缓存的大小减去现已占有的数据大小可以得到缓存中剩余空间的大小。设计计算模块208能够准确的计算出缓存中剩余空间的大小,以用于与待写入数据包进行对比,或计算已使用空间大小,提高了本方法的实用性。

具体地,所述判断模块“根据缓存中剩余空间大小判断是否可以写入数据包”具体为:比较当前待写入数据包大小与当前缓存中剩余空间,如果当前待写入数据包大小比当前缓存中剩余空间大时,允许写入信号无效;否则允许写入信号有效。只有当允许写入信号有效才判断为可写入。通过上述设计能够准确在当前待写入数据包大小小于或等于当前缓存中剩余空间的时候才进行写入,避免了写入错误等异常情况的发生。

具体地,所述判断模块“根据缓存中存在数据大小判断是否可以读取数据包”具体为:比较当前待读取数据包大小与当前缓存中已占用的数据空间大小,如果当前待读取数据包大小比当前缓存中已占用的数据空间大时,允许读取信号无效;否则允许读取信号有效。只有当允许读取信号有效才判断为可读取。上述模块设计能够准确在当前待读取数据包大小小于或等于当前缓存中剩余空间的时候才进行写入,避免了读取错误等异常情况的发生,进一步提高了本方法的实用性。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的要素。此外,在本文中,“大于”、“小于”、“超过”等理解为不包括本数;“以上”、“以下”、“以内”等理解为包括本数。

本领域内的技术人员应明白,上述各实施例可提供为方法、装置、或计算机程序产品。这些实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。上述各实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,包括但不限于:ram、rom、磁碟、磁带、光盘、闪存、u盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。

上述各实施例是参照根据实施例所述的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到计算机设备的处理器以产生一个机器,使得通过计算机设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机设备以特定方式工作的计算机设备可读存储器中,使得存储在该计算机设备可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机设备上,使得在计算机设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上所述仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。

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