存储器数据处理系统、方法、装置、计算机设备和介质转让专利

申请号 : CN202210433392.5

文献号 : CN114527953B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙立波

申请人 : 深圳云豹智能有限公司

摘要 :

本申请涉及一种存储器数据处理系统、方法、装置、计算机设备和存储介质。所述系统包括:数据写入模块、数据缓存模块以及数据读取模块;其中,数据写入模块,用于获取写数据,以及当前周期针对于写数据的写数据量;在写数据量与数据缓存模块对应的缓存数据量的数据量总和小于或者等于N的情况下,将写数据中与写数据量相适应的目标写数据并行写入数据缓存模块;数据缓存模块用于缓存写入其中的数据,数据缓存模块的宽度为N;数据读取模块,用于获取当前周期对应的读数据量;在读数据量小于或者等于数据缓存模块对应的缓存数据量的情况下,从数据缓存模块中读取出与读数据量相适应的缓存数据。采用本系统能够提高存储器数据处理的灵活性。

权利要求 :

1.一种存储器数据处理系统,其特征在于,包括:数据写入模块、数据缓存模块以及数据读取模块;其中,所述数据写入模块,用于获取写数据,以及当前周期针对于所述写数据的写数据量;在所述写数据量与所述数据缓存模块中存储的缓存数据对应的缓存数据量的数据量总和小于或者等于N的情况下,将所述写数据中与所述写数据量相适应的目标写数据并行写入所述数据缓存模块中所述缓存数据所在的宽度行中;

所述数据缓存模块用于缓存写入其中的数据,所述数据缓存模块的宽度为N;

所述数据读取模块,用于获取当前周期对应的读数据量;在所述读数据量小于或者等于所述数据缓存模块中存储的缓存数据对应的缓存数据量的情况下,从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据。

2.根据权利要求1所述的系统,其特征在于,

所述数据写入模块,进一步用于获取所述数据缓存模块中存储的缓存数据;将所述缓存数据在所述数据缓存模块中的存储地址,按照所述写数据量向所述数据缓存模块的高位地址移动,以及将所述目标写数据写入所述数据缓存模块的低位地址中;

所述数据读取模块,进一步用于从所述数据缓存模块中存储有缓存数据的高位地址中,读取出与所述读数据量相适应的缓存数据。

3.根据权利要求2所述的系统,其特征在于,所述数据写入模块,包括:缓存数据线网复用适配模块;

所述缓存数据线网复用适配模块,用于根据所述缓存数据,获取针对于所述缓存数据的多个高位地址移位结果;基于所述写数据量,从所述多个高位地址移位结果中,确定匹配的目标高位地址移位结果。

4.根据权利要求3所述的系统,其特征在于,所述数据写入模块,还包括:写数据线网复用适配模块;

所述写数据线网复用适配模块,用于根据所述写数据,获取针对于所述写数据的多个高位地址清零结果;基于所述写数据量,从所述多个高位地址清零结果中,确定匹配的目标高位地址清零结果。

5.根据权利要求4所述的系统,其特征在于,所述数据写入模块,还包括:写数据组合模块;

所述写数据组合模块,用于从所述缓存数据线网复用适配模块中获取所述目标高位地址移位结果,以及从所述写数据线网复用适配模块中获取所述目标高位地址清零结果;将所述目标高位地址移位结果,以及所述目标高位地址清零结果进行或运算,并将所述或运算的运算结果写入所述数据缓存模块中。

6.根据权利要求2所述的系统,其特征在于,所述数据读取模块,包括:读数据线网复用适配模块;

所述读数据线网复用适配模块,用于根据所述数据缓存模块中存储的缓存数据,获取针对于所述缓存数据的多个读取数据输出结果;获取所述缓存数据量与所述读数据量的差值,并基于所述差值,从所述多个读取数据输出结果中,获取与所述差值匹配的目标读取数据输出结果;按照所述目标读取数据输出结果,从所述数据缓存模块中读取出相适应的缓存数据。

7.根据权利要求1所述的系统,其特征在于,还包括:指示信号控制模块;

所述指示信号控制模块,用于在所述写数据量与所述缓存数据量的数据量总和大于N的情况下,对第一指示信号进行置位,并停止所述数据写入模块将所述目标写数据写入所述数据缓存模块,以及反馈用于表征目标写数据写入失败的反馈信息;还用于在所述读数据量大于所述缓存数据量的情况下,对第二指示信号进行置位,并停止所述数据读取模块从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据,以及反馈用于表征缓存数据读取失败的反馈信息。

8.一种存储器数据处理方法,其特征在于,所述方法包括:

获取写数据,以及当前周期针对于所述写数据的写数据量;

在所述写数据量与数据缓存模块中存储的缓存数据对应的缓存数据量的数据量总和小于或者等于N的情况下,将所述写数据中与所述写数据量相适应的目标写数据写入数据缓存模块中所述缓存数据所在的宽度行中;所述数据缓存模块用于缓存写入其中的数据,所述数据缓存模块的宽度为N;

获取当前周期对应的读数据量;

在所述读数据量小于或者等于所述数据缓存模块中存储的缓存数据对应的缓存数据量的情况下,从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据。

9.根据权利要求8所述的方法,其特征在于,所述将所述写数据中与所述写数据量相适应的目标写数据写入所述数据缓存模块,包括:获取所述数据缓存模块中存储的缓存数据;

将所述缓存数据在所述数据缓存模块中的存储地址,按照所述写数据量向所述数据缓存模块的高位地址移动,以及将所述目标写数据写入所述数据缓存模块的低位地址中;

所述从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据,包括:从所述数据缓存模块中存储有缓存数据的高位地址中,读取出与所述读数据量相适应的缓存数据。

10.根据权利要求9所述的方法,其特征在于,所述将所述缓存数据在所述数据缓存模块中的存储地址,按照所述写数据量向所述数据缓存模块的高位地址移动,以及将所述目标写数据写入所述数据缓存模块的低位地址中,包括:根据所述缓存数据,获取针对于所述缓存数据的多个高位地址移位结果;

基于所述写数据量,从所述多个高位地址移位结果中,确定匹配的目标高位地址移位结果;

根据所述写数据,获取针对于所述写数据的多个高位地址清零结果;

基于所述写数据量,从所述多个高位地址清零结果中,确定匹配的目标高位地址清零结果;

将所述目标高位地址移位结果,以及所述目标高位地址清零结果进行或运算,并将所述或运算的运算结果写入所述数据缓存模块中。

11.根据权利要求9所述的方法,其特征在于,所述从所述数据缓存模块中存储有缓存数据的高位地址中,读取出与所述读数据量相适应的缓存数据,包括:根据所述数据缓存模块中存储的缓存数据,获取针对于所述缓存数据的多个读取数据输出结果;

获取所述缓存数据量与所述读数据量的差值,并基于所述差值,从所述多个读取数据输出结果中,获取与所述差值匹配的目标读取数据输出结果;

按照所述目标读取数据输出结果,从所述数据缓存模块中读取出相适应的缓存数据。

12.根据权利要求8所述的方法,其特征在于,还包括:

在所述写数据量与所述缓存数据量的数据量总和大于N的情况下,通过指示信号控制模块对第一指示信号进行置位,并停止数据写入模块将所述目标写数据写入所述数据缓存模块,以及反馈用于表征目标写数据写入失败的反馈信息;

在所述读数据量大于所述缓存数据量的情况下,通过指示信号控制模块对第二指示信号进行置位,并停止数据读取模块从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据,以及反馈用于表征缓存数据读取失败的反馈信息。

13.一种存储器数据处理装置,其特征在于,所述装置包括:

写数据量获取模块,用于获取写数据,以及当前周期针对于所述写数据的写数据量;

缓存数据写入模块,用于在所述写数据量与数据缓存模块中存储的缓存数据对应的缓存数据量的数据量总和小于或者等于N的情况下,将所述写数据中与所述写数据量相适应的目标写数据写入数据缓存模块;所述数据缓存模块用于缓存写入其中的数据,所述数据缓存模块的宽度为N;

读数据量获取模块,用于获取当前周期对应的读数据量;

缓存数据读取模块,用于在所述读数据量小于或者等于所述数据缓存模块中存储的缓存数据对应的缓存数据量的情况下,从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据。

14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求8至12中任一项所述的方法的步骤。

15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求8至12中任一项所述的方法的步骤。

说明书 :

存储器数据处理系统、方法、装置、计算机设备和介质

技术领域

[0001] 本申请涉及数据存储技术领域,特别是涉及一种存储器数据处理系统、方法、装置、计算机设备、存储介质和计算机程序产品。

背景技术

[0002] 随着数据存储技术的发展,出现了一种利用FIFO存储器进行数据处理的技术,该存储器内部具备存储容量,在数据写入时,可以按照先后次序将数据写入到存储器的内部缓存,而在数据读出时,也可以按照先后次序将数据从内部缓存读出,从而实现了按照次序保存指令、参数或数据。
[0003] 传统技术中,在一个时钟周期中利用FIFO存储器进行数据写入或者数据读取时,写入或者读取的数据量都是一个固定值,该固定值为FIFO的宽度值,而无法做到随着时钟节拍的运行,实时可变。因此目前利用FIFO存储器进行数据处理的方式中,数据处理的灵活性较低。

发明内容

[0004] 基于此,有必要针对上述技术问题,提供一种能够提高数据处理灵活性的存储器数据处理系统、方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
[0005] 第一方面,本申请提供了一种存储器数据处理系统,包括:数据写入模块、数据缓存模块以及数据读取模块;其中,
[0006] 所述数据写入模块,用于获取写数据,以及当前周期针对于所述写数据的写数据量;在所述写数据量与所述数据缓存模块中存储的缓存数据对应的缓存数据量的数据量总和小于或者等于N的情况下,将所述写数据中与所述写数据量相适应的目标写数据并行写入所述数据缓存模块;
[0007] 所述数据缓存模块用于缓存写入其中的数据,所述数据缓存模块的宽度为N;
[0008] 所述数据读取模块,用于获取当前周期对应的读数据量;在所述读数据量小于或者等于所述数据缓存模块中存储的缓存数据对应的缓存数据量的情况下,从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据。
[0009] 在其中一个实施例中,所述数据写入模块,进一步用于获取所述数据缓存模块中存储的缓存数据;将所述缓存数据在所述数据缓存模块中的存储地址,按照所述写数据量向所述数据缓存模块的高位地址移动,以及将所述目标写数据写入所述数据缓存模块的低位地址中;所述数据读取模块,进一步用于从所述数据缓存模块中存储有缓存数据的高位地址中,读取出与所述读数据量相适应的缓存数据。
[0010] 在其中一个实施例中,所述数据写入模块,包括:缓存数据线网复用适配模块;所述缓存数据线网复用适配模块,用于根据所述缓存数据,获取针对于所述缓存数据的多个高位地址移位结果;基于所述写数据量,从所述多个高位地址移位结果中,确定匹配的目标高位地址移位结果。
[0011] 在其中一个实施例中,所述数据写入模块,还包括:写数据线网复用适配模块;所述写数据线网复用适配模块,用于根据所述写数据,获取针对于所述写数据的多个高位地址清零结果;基于所述写数据量,从所述多个高位地址清零结果中,确定匹配的目标高位地址清零结果。
[0012] 在其中一个实施例中,所述数据写入模块,还包括:写数据组合模块;所述写数据组合模块,用于从所述缓存数据线网复用适配模块中获取所述目标高位地址移位结果,以及从所述写数据线网复用适配模块中获取所述目标高位地址清零结果;将所述目标高位地址移位结果,以及所述目标高位地址清零结果进行或运算,并将所述或运算的运算结果写入所述数据缓存模块中。
[0013] 在其中一个实施例中,所述数据读取模块,包括:读数据线网复用适配模块;所述读数据线网复用适配模块,用于根据所述数据缓存模块中存储的缓存数据,获取针对于所述缓存数据的多个读取数据输出结果;获取所述缓存数据量与所述读数据量的差值,并基于所述差值,从所述多个读取数据输出结果中,获取与所述差值匹配的目标读取数据输出结果;按照所述目标读取数据输出结果,从所述数据缓存模块中读取出相适应的缓存数据。
[0014] 在其中一个实施例中,所述系统还包括:指示信号控制模块;所述指示信号控制模块,用于在所述写数据量与所述缓存数据量的数据量总和大于N的情况下,对第一指示信号进行置位,并停止所述数据写入模块将所述目标写数据写入所述数据缓存模块,以及反馈用于表征目标写数据写入失败的反馈信息;所述指示信号控制模块,还用于在所述读数据量大于所述缓存数据量的情况下,对第二指示信号进行置位,并停止所述数据读取模块从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据,以及反馈用于表征缓存数据读取失败的反馈信息。
[0015] 第二方面,本申请还提供了一种存储器数据处理方法,所述方法包括:
[0016] 获取写数据,以及当前周期针对于所述写数据的写数据量;
[0017] 在所述写数据量与所述数据缓存模块中存储的缓存数据对应的缓存数据量的数据量总和小于或者等于N的情况下,将所述写数据中与所述写数据量相适应的目标写数据写入所述数据缓存模块;所述数据缓存模块用于缓存写入其中的数据,所述数据缓存模块的宽度为N;
[0018] 获取当前周期对应的读数据量;
[0019] 在所述读数据量小于或者等于所述数据缓存模块中存储的缓存数据对应的缓存数据量的情况下,从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据。
[0020] 在其中一个实施例中,所述将所述写数据中与所述写数据量相适应的目标写数据写入所述数据缓存模块,包括:获取所述数据缓存模块中存储的缓存数据;将所述缓存数据在所述数据缓存模块中的存储地址,按照所述写数据量向所述数据缓存模块的高位地址移动,以及将所述目标写数据写入所述数据缓存模块的低位地址中;所述从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据,包括:从所述数据缓存模块中存储有缓存数据的高位地址中,读取出与所述读数据量相适应的缓存数据。
[0021] 在其中一个实施例中,所述将所述缓存数据在所述数据缓存模块中的存储地址,按照所述写数据量向所述数据缓存模块的高位地址移动,以及将所述目标写数据写入所述数据缓存模块的低位地址中,包括:根据所述缓存数据,获取针对于所述缓存数据的多个高位地址移位结果;基于所述写数据量,从所述多个高位地址移位结果中,确定匹配的目标高位地址移位结果;根据所述写数据,获取针对于所述写数据的多个高位地址清零结果;基于所述写数据量,从所述多个高位地址清零结果中,确定匹配的目标高位地址清零结果;将所述目标高位地址移位结果,以及所述目标高位地址清零结果进行或运算,并将所述或运算的运算结果写入所述数据缓存模块中。
[0022] 在其中一个实施例中,所述从所述数据缓存模块中存储有缓存数据的高位地址中,读取出与所述读数据量相适应的缓存数据,包括:根据所述数据缓存模块中存储的缓存数据,获取针对于所述缓存数据的多个读取数据输出结果;获取所述缓存数据量与所述读数据量的差值,并基于所述差值,从所述多个读取数据输出结果中,获取与所述差值匹配的目标读取数据输出结果;按照所述目标读取数据输出结果,从所述数据缓存模块中读取出相适应的缓存数据。
[0023] 在其中一个实施例中,所述方法还包括:在所述写数据量与所述缓存数据量的数据量总和大于N的情况下,通过指示信号控制模块对第一指示信号进行置位,并停止所述数据写入模块将所述目标写数据写入所述数据缓存模块,以及反馈用于表征目标写数据写入失败的反馈信息;在所述读数据量大于所述缓存数据量的情况下,通过指示信号控制模块对第二指示信号进行置位,并停止所述数据读取模块从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据,以及反馈用于表征缓存数据读取失败的反馈信息。
[0024] 第三方面,本申请还提供了一种存储器数据处理装置,所述装置包括:
[0025] 写数据量获取模块,用于获取写数据,以及当前周期针对于所述写数据的写数据量;
[0026] 缓存数据写入模块,用于在所述写数据量与所述数据缓存模块中存储的缓存数据对应的缓存数据量的数据量总和小于或者等于N的情况下,将所述写数据中与所述写数据量相适应的目标写数据写入所述数据缓存模块;所述数据缓存模块用于缓存写入其中的数据,所述数据缓存模块的宽度为N;
[0027] 读数据量获取模块,用于获取当前周期对应的读数据量;
[0028] 缓存数据读取模块,用于在所述读数据量小于或者等于所述数据缓存模块中存储的缓存数据对应的缓存数据量的情况下,从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据。
[0029] 第四方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0030] 获取写数据,以及当前周期针对于所述写数据的写数据量;
[0031] 在所述写数据量与所述数据缓存模块中存储的缓存数据对应的缓存数据量的数据量总和小于或者等于N的情况下,将所述写数据中与所述写数据量相适应的目标写数据写入所述数据缓存模块;所述数据缓存模块用于缓存写入其中的数据,所述数据缓存模块的宽度为N;
[0032] 获取当前周期对应的读数据量;
[0033] 在所述读数据量小于或者等于所述数据缓存模块中存储的缓存数据对应的缓存数据量的情况下,从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据。
[0034] 第五方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0035] 获取写数据,以及当前周期针对于所述写数据的写数据量;
[0036] 在所述写数据量与所述数据缓存模块中存储的缓存数据对应的缓存数据量的数据量总和小于或者等于N的情况下,将所述写数据中与所述写数据量相适应的目标写数据写入所述数据缓存模块;所述数据缓存模块用于缓存写入其中的数据,所述数据缓存模块的宽度为N;
[0037] 获取当前周期对应的读数据量;
[0038] 在所述读数据量小于或者等于所述数据缓存模块中存储的缓存数据对应的缓存数据量的情况下,从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据。
[0039] 第六方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
[0040] 获取写数据,以及当前周期针对于所述写数据的写数据量;
[0041] 在所述写数据量与所述数据缓存模块中存储的缓存数据对应的缓存数据量的数据量总和小于或者等于N的情况下,将所述写数据中与所述写数据量相适应的目标写数据写入所述数据缓存模块;所述数据缓存模块用于缓存写入其中的数据,所述数据缓存模块的宽度为N;
[0042] 获取当前周期对应的读数据量;
[0043] 在所述读数据量小于或者等于所述数据缓存模块中存储的缓存数据对应的缓存数据量的情况下,从所述数据缓存模块中读取出与所述读数据量相适应的缓存数据。
[0044] 上述存储器数据处理系统、方法、装置、计算机设备、存储介质和计算机程序产品,该系统包括:数据写入模块、数据缓存模块以及数据读取模块;其中,数据写入模块,用于获取写数据,以及当前周期针对于写数据的写数据量;在写数据量与数据缓存模块中存储的缓存数据对应的缓存数据量的数据量总和小于或者等于N的情况下,将写数据中与写数据量相适应的目标写数据并行写入数据缓存模块;数据缓存模块用于缓存写入其中的数据,数据缓存模块的宽度为N;数据读取模块,用于获取当前周期对应的读数据量;在读数据量小于或者等于数据缓存模块中存储的缓存数据对应的缓存数据量的情况下,从数据缓存模块中读取出与读数据量相适应的缓存数据。本申请提供的存储器数据处理系统中,在数据写入时,在写数据量与缓存数据量的总和小于或者等于数据缓存模块的宽度N时,即可将写数据中与写数据量相适应的目标写数据并行写入数据缓存模块,同时在数据读取时,在读数据量小于或者等于缓存数据量时,即可从数据缓存模块中读取出相适应的缓存数据,通过上述方式,本申请在一个时钟周期中对存储器进行数据写入或者读取时,写入或者读取的数据量可以实时可变,因此可以提高存储器数据处理的灵活性。

附图说明

[0045] 图1为一个实施例中存储器数据处理系统的结构示意图;
[0046] 图2为一个实施例中存储器数据处理方法的流程示意图;
[0047] 图3为一个实施例中将数据写入数据缓存模块的流程示意图;
[0048] 图4为一个实施例中从数据缓存模块中读取出数据的流程示意图;
[0049] 图5为一个应用实例中FIFO存储器的数据传输示意图;
[0050] 图6为一个应用实例中FIFO存储器的数据存储结构示意图;
[0051] 图7为一个应用实例中数据写入缓存的示意图;
[0052] 图8为一个应用实例中从缓存读取数据的示意图;
[0053] 图9为一个应用实例中并行FIFO的结构示意图;
[0054] 图10为一个应用实例中缓存数据线网复用适配模块的功能示意图;
[0055] 图11为一个应用实例中写数据线网复用适配模块的功能示意图;
[0056] 图12为一个应用实例中写数据组合模块的功能示意图;
[0057] 图13为一个应用实例中读数据线网复用适配模块的功能示意图;
[0058] 图14为一个实施例中存储器数据处理装置的结构框图;
[0059] 图15为一个实施例中计算机设备的内部结构图。

具体实施方式

[0060] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0061] 在一个实施例中,如图1所示,提供了一种存储器数据处理系统,该系统可以包括:数据写入模块101、数据缓存模块102以及数据读取模块103;其中,
[0062] 数据写入模块101是用于将数据写入数据缓存模块102中,该模块可以将接收到的写数据,写入至数据缓存模块102中,写数据则指的是数据写入模块101接收到的用于写入至数据缓存模块102中的数据,而写数据量则指的是在当前时钟周期,即当前周期中,由数据写入模块101最终写入至数据缓存模块102中的数据量,目标写数据则指的是在写数据中,与写数据量相适应的写数据。本实施例中,在一个时钟周期内,数据写入模块101并不一定会将所有的写数据都写入至数据缓存模块102中,而是根据写数据量的大小,动态调节写入至数据缓存模块102的目标写数据。例如,写数据可能包含10位的数据,而在当前时钟周期中,设置的写数据量为4位,那么数据写入模块101在执行针对写数据的写入时,则可以只将写数据中前4位的数据作为目标写数据,写入至数据缓存模块102。
[0063] 而数据缓存模块102则是用于存储缓存数据的模块,该模块可以通过寄存器阵列的形式执行缓存数据的存储,并且该数据缓存模块102的存储宽度为N,而缓存数据量则指的是预先在数据缓存模块102中存储的缓存数据的数据量。本实施例中,每一位的缓存数据存储在数据缓存模块102的不同存储地址位中,在当前周期中,数据写入模块101将目标写数据写入数据缓存模块时,可以先判断数据缓存模块102是否支持将目标写数据进行缓存,即通过判断写数据量与缓存数据量的总和是否小于或者等于数据缓存模块102的宽度N,只有在写数据量与缓存数据量的总和小于或者等于N时,数据写入模块101才会将目标写数据并行写入数据缓存模块102。
[0064] 具体来说,在数据写入模块101得到写数据,以及当前时钟周期针对该写数据的写数据量后,则可以确定出与该写数据量相适应的目标写数据,并且如果写数据量与数据缓存模块中存储的缓存数据的缓存数据量的数据量总和,小于或者等于数据缓存模块的宽度N时,则可以将目标写数据写入至数据缓存模块102。
[0065] 而数据读取模块103则是用于从数据缓存模块102中,读取出缓存数据的模块,读数据量则是在当前时间周期,即当前周期中,数据读取模块103从数据缓存模块102中读取出的缓存数据的数据量。本实施例中,在数据读取模块103从数据缓存模块102中读取出的缓存数据时,也可以先判断数据缓存模块102中存储的缓存数据,是否支持数据读取模块103的读取。即通过判断读数据量是否小于或者等于数据缓存模块102的缓存数据量,只有在读数据量小于或者等于缓存数据量时,数据读取模块103才会从数据缓存模块102中读取出与读数据量相适应的缓存数据。
[0066] 上述存储器数据处理系统中,包括:数据写入模块、数据缓存模块以及数据读取模块;其中,数据写入模块,用于获取写数据,以及当前周期针对于写数据的写数据量;在写数据量与数据缓存模块中存储的缓存数据对应的缓存数据量的数据量总和小于或者等于N的情况下,将写数据中与写数据量相适应的目标写数据并行写入数据缓存模块;数据缓存模块用于缓存写入其中的数据,数据缓存模块的宽度为N;数据读取模块,用于获取当前周期对应的读数据量;在读数据量小于或者等于数据缓存模块中存储的缓存数据对应的缓存数据量的情况下,从数据缓存模块中读取出与读数据量相适应的缓存数据。本申请提供的存储器数据处理系统中,在数据写入时,在写数据量与缓存数据量的总和小于或者等于数据缓存模块的宽度N时,即可将写数据中与写数据量相适应的目标写数据并行写入数据缓存模块,同时在数据读取时,在读数据量小于或者等于缓存数据量时,即可从数据缓存模块中读取出相适应的缓存数据,通过上述方式,本申请在一个时钟周期中对存储器进行数据写入或者读取时,写入或者读取的数据量可以实时可变,因此可以提高存储器数据处理的灵活性。
[0067] 在一个实施例中,数据写入模块101,进一步用于获取数据缓存模块102中存储的缓存数据;将缓存数据在数据缓存模块102中的存储地址,按照写数据量向数据缓存模块102的高位地址移动,以及将目标写数据写入数据缓存模块102的低位地址中;数据读取模块103,进一步用于从数据缓存模块102中存储有缓存数据的高位地址中,读取出与读数据量相适应的缓存数据。
[0068] 本实施例中,在数据写入模块101将目标写数据写入数据缓存模块102时,会从数据缓存模块102的低位地址开始存储,同时在数据写入模块101不断将数据写入数据缓存模块102的过程中,存储的缓存数据会不断向数据缓存模块102的高位地址进行移位。通过上述方式,可以使得数据缓存模块102空出与写数据量相适应的低位地址,并且在空出的低位地址中存入上述目标写数据。
[0069] 例如,当前周期中数据缓存模块102预先未存储有任何缓存数据,此时数据写入模块101写入的目标写数据的数据量为1位,则在数据缓存模块102的最低位地址,即0位地址中写入上述目标写数据。那么此时数据缓存模块102已经在0位地址中存储有缓存数据,如果在下一周期中数据写入模块101写入的目标写数据的数据量为2位,由于此时数据缓存模块102的最低位地址已经被占用,因此数据写入模块101可以将预先存储在0位地址的缓存数据向高位进行移动,同时由于写数据量为2位,因此则将该缓存数据向高位地址移动2位,即将原先存储于0位地址的缓存数据移动至2位地址进行存储,同时将空出的0位地址以及1位地址进行目标写数据的写入。
[0070] 同时,由于本实施例中数据缓存模块102在不断进行数据写入时,缓存数据的存储地址会不断向高位地址进行移动,因此在高位地址中存储的缓存数据,也即相当于先存储入数据缓存模块102中的缓存数据,因此为了保证缓存数据可以按照先入先出的原则,数据读取模块103在读取缓存数据时,可以从数据缓存模块102中存储有缓存数据的高位地址中,读取出与该读数据量相适应的缓存数据。
[0071] 例如,数据缓存模块102存储的缓存数据分别位于2位地址、1位地址,以及0位地址,那么此时数据读取模块103执行数据读取时,则可以先从2位地址存储的缓存数据开始读取,并读取出与读数据量相适应的缓存数据,如果读数据量为1位数据,数据读取模块103则可以将2位地址中存储的缓存数据读出,而如果读数据量为2位数据,数据读取模块103则可以将2位地址以及1位地址中存储的缓存数据读出,从而保证存储器中存储的缓存数据的先入先出。
[0072] 本实施例中,在数据写入模块101将数据写入时,可以按照写数据量对数据缓存模块102中存储的缓存数据的存储地址向高位地址移动,从而可以在空出的低位地址中写入数据,同时在缓存数据读取时,则可以根据读数据量,从数据缓存模块102中存储有缓存数据的高位地址中,读取出相适应的缓存数据,通过上述方式,在实现了写入或者读取的数据量实时可变的前提下,可以保证存储器中存储的缓存数据的先入先出,从而提高存储器数据处理的时序性。
[0073] 在一个实施例中,数据写入模块101,包括:缓存数据线网复用适配模块;缓存数据线网复用适配模块,用于根据缓存数据,获取针对于缓存数据的多个高位地址移位结果;基于写数据量,从多个高位地址移位结果中,确定匹配的目标高位地址移位结果。
[0074] 高位地址移位结果指的是预先生成的,用于对缓存数据进行高位地址移位的结果,并且各个高位地址移位结果可以分别对应于不同的移位数量,例如针对高位地址移位结果1,可以是表示将缓存数据向高位地址移动1位所对应的结果,而针对高位地址移位结果2,则可以表示将缓存数据向高位地址移动2位所对应的结果等等,通过上述方式,数据写入模块101中的缓存数据线网复用适配模块,提前得到针对缓存数据的多个高位地址移位结果。
[0075] 而目标高位地址移位结果,则指的是多个高位地址移位结果中,与写数据量匹配的高位地址移位结果,例如,写数据量为1,那么缓存数据线网复用适配模块则可以将高位地址移位结果1,作为目标高位地址移位结果,而如果写数据量为2,缓存数据线网复用适配模块则可以将高位地址移位结果2作为目标高位地址移位结果,来保证高位地址移位结果可以和写数据量相匹配,从而保证可以空出写数据量相匹配的低位地址。
[0076] 本实施例中,数据写入模块101可以通过其包含的缓存数据线网复用适配模块,预先生成与缓存数据相关的多个高位地址移位结果,并且可以根据写数据量来确定出目标高位地址移位结果,从而实现了保证可以空出写数据量相匹配的低位地址。
[0077] 并且,数据写入模块101,还包括:写数据线网复用适配模块;写数据线网复用适配模块,用于根据写数据,获取针对于写数据的多个高位地址清零结果;基于写数据量,从多个高位地址清零结果中,确定匹配的目标高位地址清零结果。
[0078] 高位地址清零结果则指的是预先生成的针对于写数据的多个高位地址清零结果,通过将写数据的高位地址进行不同位数的置零处理,则可以得到多个高位地址清零结果,例如针对高位地址清零结果1,可以表征只保留写数据的最低位地址,而将其余的高位地址全部清零,而针对高位地址清零结果2,则可以表征只保留写数据的最低2位地址,而将其余的高位地址全部清零,通过上述方式,数据写入模块101中的写数据线网复用适配模块则可以提前得到针对写数据的多个高位地址清零结果。
[0079] 同时,目标高位地址清零结果,则指的是多个高位地址清零结果中,与写数据量匹配的高位地址清零结果,例如,写数据量为1,那么写数据线网复用适配模块则可以将高位地址清零结果1,作为目标高位地址清零结果,而如果写数据量为2,写数据线网复用适配模块则可以将高位地址清零结果2作为目标高位地址清零结果,来保证高位地址清零结果可以和写数据量相匹配,从而保证可以将写数据中与写数据量匹配的目标写数据,可以写入数据缓存模块102的低位地址。
[0080] 本实施例中,数据写入模块101可以通过其包含的写数据线网复用适配模块,预先生成与写数据相关的多个高位地址清零结果,并且可以根据写数据量来确定出目标高位地址清零结果,从而实现了保证目标写数据写入数据缓存模块102的低位地址。
[0081] 进一步地,数据写入模块101,还可以包括:写数据组合模块;写数据组合模块,用于从缓存数据线网复用适配模块中获取目标高位地址移位结果,以及从写数据线网复用适配模块中获取目标高位地址清零结果;将目标高位地址移位结果,以及目标高位地址清零结果进行或运算,并将或运算的运算结果写入数据缓存模块102中。
[0082] 数据写入模块101在通过缓存数据线网复用适配模块确定出目标高位地址移位结果,以及通过写数据线网复用适配模块确定出目标高位地址清零结果,还可以进一步将上述目标高位地址移位结果以及目标高位地址清零结果,输入至其包含的写数据组合模块中,并通过写数据组合模块将目标高位地址移位结果,以及目标高位地址清零结果进行或运算,并将或运算的结果更新写入数据缓存模块102中,通过上述方式,可以使与写数据量相匹配的低位地址中存储的缓存数据,由目标高位地址清零结果提供,而其他地址中存储的缓存数据,则由高位地址移位结果提供,从而实现了目标写数据的写入。
[0083] 例如,写数据量为4位,那么目标高位地址移位结果则可以是高位地址移位结果4,表征将缓存数据向高位移动4位,而空出来的低4位地址,则可以由高位地址清零结果4提供,由于高位地址清零结果4表征仅保留写数据的最低4位,因此通过上述或运算的方式,则可以得到数据缓存模块102在目标写数据写入后存储的缓存数据形式,从而实现了目标写数据的写入。
[0084] 本实施例中,还可以通过写数据组合模块,基于写数据量筛选出目标高位地址移位结果与目标高位地址清零结果后,通过或运算的方式得到最终的运输结果,写入数据缓存模块102中,由于上述多个高位地址移位结果,以及高位地址清零结果可以预先准备,因此可以提高数据写入的效率。
[0085] 在一个实施例中,数据读取模块103,可以包括:读数据线网复用适配模块;读数据线网复用适配模块,用于根据数据缓存模块102中存储的缓存数据,获取针对于缓存数据的多个读取数据输出结果;获取缓存数据量与读数据量的差值,并基于差值,从多个读取数据输出结果中,获取与差值匹配的目标读取数据输出结果;按照目标读取数据输出结果,从数据缓存模块102中读取出相适应的缓存数据。
[0086] 读取数据输出结果则指的是预先生成的,用于对缓存数据进行数据读取的结果,并且各个读取数据输出结果可以分别对应于不同的读取数据量,例如针对读取数据输出结果1,可以是表示将数据缓存模块102中存储所有的缓存数据读取出来对应的输出结果,而针对读取数据输出结果2,则可以表征将数据缓存模块102中,除最低位存储的缓存数据以外的其余缓存数据读取出来对应的输出结果等等,通过上述方式,数据读取模块103可以通过读数据线网复用适配模块提前得到针对存储的缓存数据的多个读取数据输出结果。
[0087] 目标读取数据输出结果,则指的是多个读取数据输出结果中,与缓存数据量与读数据量的差值相匹配的读取数据输出结果,例如,差值为0,则表示缓存中存储的缓存数据量与读数据量相同,因此需要把数据缓存模块102中存储的所有缓存数据读取出来所对应的读取数据输出结果,即读取数据输出结果1作为目标读取数据输出结果,而如果差值为1,则表示需要将数据缓存模块102中除最低位存储的缓存数据以外的其余缓存数据进行读取,即将读取数据输出结果2,作为目标读取数据输出结果。
[0088] 最后,数据读取模块103还可以通过读数据线网复用适配模块,按照上述目标读取数据输出结果,从数据缓存模块102中读取出相适应的缓存数据,从而实现了缓存数据的读取。
[0089] 本实施例中,可以通过预先得到多个读取数据输出结果,并且基于缓存数据量与读数据量的差值筛选出目标读取数据输出结果,由于上述多个读取数据输出结果可以预先准备,因此可以提高数据读取的效率。
[0090] 在一个实施例中,存储器数据处理系统,还可以包括:指示信号控制模块;指示信号控制模块,用于在写数据量与所述缓存数据量的数据量总和大于N的情况下,对第一指示信号进行置位,并停止数据写入模块101将目标写数据写入数据缓存模块102,以及反馈用于表征目标写数据写入失败的反馈信息;指示信号控制模块,还用于在读数据量大于缓存数据量的情况下,对第二指示信号进行置位,并停止数据读取模块103从数据缓存模块102中读取出与读数据量相适应的缓存数据,以及反馈用于表征缓存数据读取失败的反馈信息。
[0091] 指示信号控制模块是存储器数据处理系统中,用于对第一指示信号或者第二指示信号进行控制的模块。其中,第一指示信号可以用于表征是否可以向数据缓存模块102中写入数据,在第一指示信号置位时,则停止数据写入模块101写入目标写数据,并反馈数据写入失败的反馈信息至提供写数据的前级模块中。而第二指示信号则可以用于表征是否可以从数据缓存模块102中读取缓存数据,在第二指示信号置位时,则停止数据读取模块103读取缓存数据,并反馈数据读取失败的反馈信息至需要获取缓存数据的后级模块中。
[0092] 具体来说,在检测到写数据量与缓存数据量的数据量总和大于数据缓存模块的宽度N时,即缓存中剩余的数据量无法支持写数据量的数据写入,那么此时指示信号控制模块则可以对第一指示信号进行置位处理,此时则可以停止数据写入模块101将目标写数据写入至数据缓存模块102中,并且反馈数据写入失败的反馈信息至前级模块,以告知前级模块该次数据写入失败。
[0093] 而在检测到读数据量大于缓存数据量的数据量时,即缓存中剩余的数据量无法支持读数据量的数据读取,那么此时指示信号控制模块则可以对第二指示信号进行置位处理,此时则可以停止数据读取模块103从数据缓存模块102中读取缓存数据,并且反馈数据读取失败的反馈信息至后级模块,以告知后级模块该次数据读取失败。
[0094] 本实施例中,还可以设置指示信号控制模块,在写数据量与缓存数据量的数据量总和大于N的情况下,可以对第一指示信号进行置位,而在读数据量大于缓存数据量的情况下,则可以对第二指示信号进行置位,从而实现了第一指示信号或者第二指示信号的置位可以不需要通过设定的阈值来控制,而根据写数据量与缓存数据量,或者根据读数据量与缓存数据量来实时可变。
[0095] 在一个实施例中,如图2所示,提供了一种存储器数据处理方法,该方法可以应用于FIFO存储器中,包括以下步骤:
[0096] 步骤S201,获取写数据,以及当前周期针对于写数据的写数据量。
[0097] 本实施例中,FIFO存储器可以包括数据写入模块、数据缓存模块以及数据读取模块,其中,数据写入模块是用于将数据写入数据缓存模块的模块,该模块可以将接收到的写数据,写入至数据缓存模块中,而写数据量则指的是在当前周期中,由数据写入模块最终写入至数据缓存模块中的数据量。具体来说,在当前周期中,FIFO存储器可以通过其携带的数据写入模块,得到由前级模块传输的写数据,并且可以确定出当前周期中将写数据写入至数据缓存模块中的数据量,即写数据量。
[0098] 步骤S202,在写数据量与数据缓存模块中存储的缓存数据对应的缓存数据量的数据量总和小于或者等于N的情况下,将写数据中与写数据量相适应的目标写数据写入数据缓存模块;数据缓存模块用于缓存写入其中的数据,数据缓存模块的宽度为N。
[0099] 数据缓存模块则是用于存储缓存数据的模块,该模块可以通过寄存器阵列的形式执行缓存数据的存储,其存储的宽度以N表示,并且每一位的缓存数据存储在数据缓存模块的不同存储地址位中。目标写数据则指的是在写数据中,与写数据量相适应的写数据,即在当前周期中,写入数据缓存模块的写数据。本实施例中,为了保证目标写数据的顺利写入,在数据写入模块将数据写入数据缓存模块时,首先需要确定写入缓存的写数据量与缓存中已存储数据的缓存数据量的总和,是否小于或者等于数据缓存模块的宽度N,只有在写数据量与缓存数据量的总和小于或等于N的情况下,才通过数据写入模块将目标写数据写入数据缓存模块中。
[0100] 步骤S203,获取当前周期对应的读数据量;
[0101] 步骤S204,在读数据量小于或者等于数据缓存模块中存储的缓存数据对应的缓存数据量的情况下,从数据缓存模块中读取出与读数据量相适应的缓存数据。
[0102] 而FIFO存储器中的数据读取模块则是用于从数据缓存模块中,读取出缓存数据的模块,读数据量则是数据读取模块从数据缓存模块中读取出的缓存数据的数据量。本实施例中,为了保证缓存数据的顺利读取,数据读取模块在从数据缓存模块中读取缓存数据时,首先需要保证数据缓存模块中存储的缓存数据的缓存数据量,可以支持进行缓存数据读取,即只有在读数据量小于或等于缓存数据量的情况下,才通过数据读取模块从数据缓存模块中,读取出与该读数据量相适应的缓存数据。
[0103] 上述存储器数据处理方法中,通过获取写数据,以及当前周期针对于写数据的写数据量;在写数据量与数据缓存模块中存储的缓存数据对应的缓存数据量的数据量总和小于或者等于N的情况下,将写数据中与写数据量相适应的目标写数据写入数据缓存模块;数据缓存模块用于缓存写入其中的数据,数据缓存模块的宽度为N;获取当前周期对应的读数据量;在读数据量小于或者等于数据缓存模块中存储的缓存数据对应的缓存数据量的情况下,从数据缓存模块中读取出与读数据量相适应的缓存数据。本申请提供的存储器数据处理方法中,在数据写入时,在写数据量与缓存数据量的总和小于或者等于数据缓存模块的宽度N时,即可将写数据中与写数据量相适应的目标写数据并行写入数据缓存模块,同时在数据读取时,在读数据量小于或者等于缓存数据量时,即可从数据缓存模块中读取出相适应的缓存数据,通过上述方式,本申请在一个时钟周期中对存储器进行数据写入或者读取时,写入或者读取的数据量可以实时可变,因此可以提高存储器数据处理的灵活性。
[0104] 进一步地,步骤S202可以进一步包括:获取数据缓存模块中存储的缓存数据;将缓存数据在数据缓存模块中的存储地址,按照写数据量向数据缓存模块的高位地址移动,以及将目标写数据写入数据缓存模块的低位地址中;步骤S204可以进一步包括:从数据缓存模块中存储有缓存数据的高位地址中,读取出与读数据量相适应的缓存数据。
[0105] 本实施例中,在数据写入数据缓存模块时,会从数据缓存模块的低位地址开始存储,同时在数据写入模块不断将数据写入数据缓存模块的过程中,存储的缓存数据会不断向数据缓存模块的高位地址进行移位。
[0106] 具体来说,在数据写入模块得到写数据,以及当前周期针对该写数据的写数据量后,则可以确定出与该写数据量相适应的目标写数据,并且在将目标写数据写入数据缓存模块时,可以将数据缓存模块中存储的缓存数据的存储地址,按照写数据量向高位地址进行移动,从而可以空出与写数据量相适应的低位地址,并且在空出的低位地址中存入上述目标写数据。
[0107] 同时,由于数据缓存模块在不断进行数据写入时,缓存数据的存储地址会不断向高位地址进行移动,因此在高位地址中存储的缓存数据,也即相当于先存储入数据缓存模块中的缓存数据,因此为了保证缓存数据按照先入先出的原则,数据读取模块在读取缓存数据时,数据读取模块可以从数据缓存模块中存储有缓存数据的高位地址中,读取出与该读数据量相适应的缓存数据。
[0108] 本实施例中,在将数据写入时,可以按照写数据量对数据缓存模块中存储的缓存数据的存储地址向高位地址移动,从而可以在空出的低位地址中写入数据,同时在缓存数据读取时,则可以根据读数据量,从数据缓存模块中存储有缓存数据的高位地址中,读取出相适应的缓存数据,通过上述方式,在实现了写入或者读取的数据量实时可变的前提下,可以保证存储器中存储的缓存数据的先入先出,从而提高存储器数据处理的时序性。
[0109] 进一步地,如图3所示,将缓存数据在数据缓存模块中的存储地址,按照写数据量向数据缓存模块的高位地址移动,以及将目标写数据写入数据缓存模块的低位地址中,可以进一步包括:
[0110] 步骤S301,根据缓存数据,获取针对于缓存数据的多个高位地址移位结果。
[0111] 高位地址移位结果指的是预先生成的,用于对缓存数据进行高位地址移位的结果,并且各个高位地址移位结果可以分别对应于不同的移位数量,例如针对高位地址移位结果1,可以是表示将缓存数据向高位地址移动1位所对应的结果,而针对高位地址移位结果2,则可以表示将缓存数据向高位地址移动2位所对应的结果等等,通过上述方式,可以提前得到针对缓存数据的多个高位地址移位结果。
[0112] 步骤S302,基于写数据量,从多个高位地址移位结果中,确定匹配的目标高位地址移位结果。
[0113] 目标高位地址移位结果,则指的是多个高位地址移位结果中,与写数据量匹配的高位地址移位结果,例如,写数据量为1,那么则可以将高位地址移位结果1,作为目标高位地址移位结果,而如果写数据量为2,则可以将高位地址移位结果2作为目标高位地址移位结果,来保证高位地址移位结果可以和写数据量相匹配,从而保证可以空出写数据量相匹配的低位地址。
[0114] 步骤S303,根据写数据,获取针对于写数据的多个高位地址清零结果。
[0115] 高位地址清零结果指的是预先生成的针对于写数据的多个高位地址清零结果,通过将写数据的高位地址进行不同位数的置零处理,则可以得到多个高位地址清零结果,例如针对高位地址清零结果1,可以表征只保留写数据的最低位地址,而将其余的高位地址全部清零,而针对高位地址清零结果2,则可以表征只保留写数据的最低2位地址,而将其余的高位地址全部清零,通过上述方式,则可以提前得到针对写数据的多个高位地址清零结果。
[0116] 步骤S304,基于写数据量,从多个高位地址清零结果中,确定匹配的目标高位地址清零结果。
[0117] 目标高位地址清零结果,则指的是多个高位地址清零结果中,与写数据量匹配的高位地址清零结果,例如,写数据量为1,那么则可以将高位地址清零结果1,作为目标高位地址清零结果,而如果写数据量为2,则可以将高位地址清零结果2作为目标高位地址清零结果,来保证高位地址清零结果可以和写数据量相匹配,从而保证可以将写数据中与写数据量匹配的目标写数据,可以写入数据缓存模块的低位地址。
[0118] 步骤S305,将目标高位地址移位结果,以及目标高位地址清零结果进行或运算,并将或运算的运算结果写入数据缓存模块中。
[0119] 最后,还可以将目标高位地址移位结果,以及目标高位地址清零结果进行或运算,并将或运算的结果更新写入数据缓存模块中,通过上述方式,可以使与写数据量相匹配的低位地址中存储的缓存数据,由目标高位地址清零结果提供,而其他地址中存储的缓存数据,则由高位地址移位结果提供,从而实现了目标写数据的写入。
[0120] 本实施例中,可以通过预先得到多个高位地址移位结果,以及高位地址清零结果,并且基于写数据量筛选出目标高位地址移位结果与目标高位地址清零结果后,通过或运算的方式得到最终的运输结果,写入数据缓存模块中,由于上述多个高位地址移位结果,以及高位地址清零结果可以预先准备,因此可以提高数据写入的效率。
[0121] 另外,如图4所示,从数据缓存模块中存储有缓存数据的高位地址中,读取出与读数据量相适应的缓存数据,可以进一步包括:
[0122] 步骤S401,根据数据缓存模块中存储的缓存数据,获取针对于缓存数据的多个读取数据输出结果。
[0123] 读取数据输出结果则指的是预先生成的,用于对缓存数据进行数据读取的结果,并且各个读取数据输出结果可以分别对应于不同的读取数据量,例如针对读取数据输出结果1,可以是表示将数据缓存模块中存储所有的缓存数据读取出来对应的输出结果,而针对读取数据输出结果2,则可以表征将数据缓存模块中,除最低位存储的缓存数据以外的其余缓存数据读取出来对应的输出结果等等,通过上述方式,可以提前得到针对存储的缓存数据的多个读取数据输出结果。
[0124] 步骤S402,获取缓存数据量与读数据量的差值,并基于差值,从多个读取数据输出结果中,获取与差值匹配的目标读取数据输出结果。
[0125] 目标读取数据输出结果,则指的是多个读取数据输出结果中,与缓存数据量与读数据量的差值相匹配的读取数据输出结果,例如,差值为0,则表示缓存中存储的缓存数据量与读数据量相同,因此需要把数据缓存模块中存储的所有缓存数据读取出来所对应的读取数据输出结果,即读取数据输出结果1作为目标读取数据输出结果,而如果差值为1,则表示需要将数据缓存模块中除最低位存储的缓存数据以外的其余缓存数据进行读取,即将读取数据输出结果2,作为目标读取数据输出结果。
[0126] 步骤S403,按照目标读取数据输出结果,从数据缓存模块中读取出相适应的缓存数据。
[0127] 最后,还可以按照步骤S402中得到的目标读取数据输出结果,从数据缓存模块中读取出相适应的缓存数据,从而实现了缓存数据的读取。
[0128] 本实施例中,可以通过预先得到多个读取数据输出结果,并且基于缓存数据量与读数据量的差值筛选出目标读取数据输出结果,由于上述多个读取数据输出结果可以预先准备,因此可以提高数据读取的效率。
[0129] 在一个实施例中,存储器数据处理方法,还可以包括:在写数据量与缓存数据量的数据量总和大于N的情况下,通过指示信号控制模块对第一指示信号进行置位,并停止数据写入模块将目标写数据写入数据缓存模块,以及反馈用于表征目标写数据写入失败的反馈信息;在读数据量大于缓存数据量的情况下,通过指示信号控制模块对第二指示信号进行置位,并停止数据读取模块从数据缓存模块中读取出与读数据量相适应的缓存数据,以及反馈用于表征缓存数据读取失败的反馈信息。
[0130] 指示信号控制模块是FIFO存储器中,用于对第一指示信号,或者第二指示信号进行控制的模块。其中,第一指示信号可以用于表征是否可以向数据缓存模块中写入数据,在第一指示信号置位时,则停止写入目标写数据,并反馈数据写入失败的反馈信息至提供写数据的前级模块中。而第二指示信号则可以用于表征是否可以从数据缓存模块中读取缓存数据,在第二指示信号置位时,则停止读取缓存数据,并反馈数据读取失败的反馈信息至需要获取缓存数据的后级模块中。
[0131] 具体来说,在检测到写数据量与缓存数据量的数据量总和大于数据缓存模块的宽度N时,即缓存中剩余的数据量无法支持写数据量的数据写入,那么此时指示信号控制模块则可以对第一指示信号进行置位处理,此时则可以停止将目标写数据写入至数据缓存模块中,并且反馈数据写入失败的反馈信息至前级模块,以告知前级模块该次数据写入失败。
[0132] 而在检测到读数据量大于缓存数据量的数据量时,即缓存中剩余的数据量无法支持读数据量的数据读取,那么此时指示信号控制模块则可以对第二指示信号进行置位处理,此时则可以停止从数据缓存模块中读取缓存数据,并且反馈数据读取失败的反馈信息至后级模块,以告知后级模块该次数据读取失败。
[0133] 本实施例中,还可以设置指示信号控制模块,在写数据量与缓存数据量的数据量总和大于N的情况下,可以对第一指示信号进行置位,而在读数据量大于缓存数据量的情况下,则可以对第二指示信号进行置位,从而实现了第一指示信号或者第二指示信号的置位可以不需要通过设定的阈值来控制,而根据写数据量与缓存数据量,或者根据读数据量与缓存数据量来实时可变。
[0134] 在一个应用实例中,还提供了一种FIFO存储器的数据处理方法,该方法可以应用于如图5所示的FIFO存储器之中,并且将FIFO的内部存储单元,合并为1个完整的寄存器Registers阵列,其数据存储架构可如图6所示。该并行FIFO在运行的过程中,缓存的总数据位宽是M*N Bits,前级链路(数据输入端口),每个时钟周期所写入的数据量是动态可变的;后级链路(数据输出端口),每个时钟周期所读出的数据量是动态可变的。具体来说,可通过以下方式实现:
[0135] 并行FIFO在运行的过程中,当前时钟周期,所写入的数据量为A Bits,其实现过程可如图7所示。
[0136] (1)已经缓存的数据,向高位平移A Bits,给所写入的数据量让出存储空间;
[0137] (2)将所写入的数据量A Bits,缓存至最低数据位A Bits;
[0138] (3)抛弃高位数据,位宽A Bits;
[0139] (4)如果A大于缓存所剩余空间Bits数量,那么Full指示信号置位;同时,向前级模块提供信息,表明数据没有成功写入,需要等待Full信号复位,再进行后续写操作;
[0140] (5)如果A小于等于缓存所剩余空间Bits数量,那么Full指示信号复位;同时,向前级模块提供信息,表明数据已经成功写入。
[0141] 并行FIFO在运行的过程中,当前时钟周期,所写读出的数据量为B Bits,其实现过程可如图8所示。
[0142] (1)从已经缓存的数据中,从高位读取B Bits的数据;
[0143] (2)如果,B大于已经缓存数据Bits数量,那么Empty指示信号置位;同时,向后级模块提供信息,表明数据没有成功读出,需要等待Empty信号复位,再进行后续读操作;
[0144] (3)如果,B小于等于已经缓存数据Bits数量,那么Empty指示信号复位;同时,向后级模块提供信息,表明数据已经成功读出;读出数据位于已经缓存数据的高位(B Bits)。
[0145] 另外,还提供了一种并行FIFO,其结构可如图9所示,并具体包括以下模块:
[0146] (1)缓存数据线网复用适配模块,其内部实现细节可如图10所示,实现的功能是:
[0147] 将内部缓存寄存器阵列Register Array,通过线网连接方式,将Register Array所对应的全部移位结果,提前准备就绪。
[0148] 其中,Data_Element_0代表Register Array左移1位结果,Data_Element_1代表Register Array左移2位结果,Data_Element_2代表Register Array左移3位结果,以此类推。
[0149] 写数据量,Write_Amount决定了多路复用Multiplexer,选择Register Array左移(Write_Amount+1)位结果,作为最终的输出。
[0150] (2)写数据线网复用适配模块,其内部实现细节如图11所示,实现的功能是:
[0151] 将最新写入的数据Write_Data,通过线网连接方式,将所对应的全部需要结果,提前准备就绪。
[0152] 其中,Data_Element_0代表数据Write_Data (M‑1)个无效高位清零结果,Data_Element_1代表数据Write_Data (M‑2)个无效高位清零结果,Data_Element_2代表数据Write_Data (M‑3)个无效高位清零结果,以此类推。
[0153] 写数据量,Write_Amount决定了多路复用Multiplexer,选择Write_Data (M‑Write_Amount‑1)个无效高位清零结果,作为最终的输出。
[0154] (3)写数据组合模块,内部实现细节如图12所示,实现的功能是:
[0155] 将缓存数据线网复用适配模块,输出结果Result0和写数据线网复用适配模块输出结果Result1,按照Bit位进行“逻辑相或”操作;最终,将输出结果按照时钟节拍,写入更新内部缓存寄存器阵列Register Array。
[0156] (4)读数据线网复用适配模块,内部实现细节如图13所示,实现的功能是:
[0157] 将内部缓存寄存器阵列Registers Array的数据,根据当前读指针和读数据量,通过线网连接方式,将读取数据输出给后级模块。
[0158] 上述应用实例提供的并行FIFO,通过缓存数据线网复用适配模块、写数据线网复用适配模块和写数据组合模块,可在单个时钟周期,并行实现任何数据量(用户在写入的时候指定)的格式整合和适配操作,以及通过读数据线网复用适配模块(根据当前的读指针和读数据量),可在单个时钟周期,并行实现任何数据量(用户在读出的时候指定)的格式整合和适配操作。同时,前级链路(数据输入端口),每个时钟周期所写入的数据量,随着时钟节拍的运行,而实时灵活可变;后级链路(数据输出端口),每个时钟周期所读出的数据量,随着时钟节拍的运行,而实时灵活可变。并且,前级链路,在写入数据的时候,所提供Full指示信号,不仅取决于缓存所剩余空间Bits数量,而且取决于当前时钟周期,所写入的数据量;后级链路,在读出数据的时候,所提供Empty指示信号,不仅取决于已经缓存数据Bits数量,而且取决于当前时钟周期,所读出的数据量,从而可以提高数据写入以及数据读取的灵活性。
[0159] 应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0160] 基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的存储器数据处理方法的存储器数据处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个存储器数据处理装置实施例中的具体限定可以参见上文中对于存储器数据处理方法的限定,在此不再赘述。
[0161] 在一个实施例中,如图14所示,提供了一种存储器数据处理装置,包括:写数据量获取模块1401、缓存数据写入模块1402、读数据量获取模块1403和缓存数据读取模块1404,其中:
[0162] 写数据量获取模块1401,用于获取写数据,以及当前周期针对于写数据的写数据量;
[0163] 缓存数据写入模块1402,用于在写数据量与数据缓存模块中存储的缓存数据对应的缓存数据量的数据量总和小于或者等于N的情况下,将写数据中与写数据量相适应的目标写数据写入数据缓存模块;数据缓存模块用于缓存写入其中的数据,数据缓存模块的宽度为N;
[0164] 读数据量获取模块1403,用于获取当前周期对应的读数据量;
[0165] 缓存数据读取模块1404,用于在读数据量小于或者等于数据缓存模块中存储的缓存数据对应的缓存数据量的情况下,从数据缓存模块中读取出与读数据量相适应的缓存数据。
[0166] 在一个实施例中,缓存数据写入模块1402,进一步用于获取数据缓存模块中存储的缓存数据;将缓存数据在数据缓存模块中的存储地址,按照写数据量向数据缓存模块的高位地址移动,以及将目标写数据写入数据缓存模块的低位地址中;缓存数据读取模块1404,进一步用于从数据缓存模块中存储有缓存数据的高位地址中,读取出与读数据量相适应的缓存数据。
[0167] 在一个实施例中,缓存数据写入模块1402,进一步用于根据缓存数据,获取针对于缓存数据的多个高位地址移位结果;基于写数据量,从多个高位地址移位结果中,确定匹配的目标高位地址移位结果;根据写数据,获取针对于写数据的多个高位地址清零结果;基于写数据量,从多个高位地址清零结果中,确定匹配的目标高位地址清零结果;将目标高位地址移位结果,以及目标高位地址清零结果进行或运算,并将或运算的运算结果写入数据缓存模块中。
[0168] 在一个实施例中,缓存数据读取模块1404,进一步用于根据数据缓存模块中存储的缓存数据,获取针对于缓存数据的多个读取数据输出结果;获取缓存数据量与读数据量的差值,并基于差值,从多个读取数据输出结果中,获取与差值匹配的目标读取数据输出结果;按照目标读取数据输出结果,从数据缓存模块中读取出相适应的缓存数据。
[0169] 在一个实施例中,存储器数据处理装置,还包括:信号指示模块,用于在写数据量与缓存数据量的数据量总和大于N的情况下,通过指示信号控制模块对第一指示信号进行置位,并停止数据写入模块将目标写数据写入数据缓存模块,以及反馈用于表征目标写数据写入失败的反馈信息;在读数据量大于缓存数据量的情况下,通过指示信号控制模块对第二指示信号进行置位,并停止数据读取模块从数据缓存模块中读取出与读数据量相适应的缓存数据,以及反馈用于表征缓存数据读取失败的反馈信息。
[0170] 上述存储器数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0171] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图15所示。该计算机设备包括通过系统总线连接的处理器、存储器和通信接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种存储器数据处理方法。
[0172] 本领域技术人员可以理解,图15中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0173] 在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
[0174] 在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0175] 在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0176] 需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
[0177] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read‑Only Memory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
[0178] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0179] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。