本发明涉及随机存取存储器(Random-Access Memory,RAM)的读写领域,尤其涉及一种数据存储方法和存储装置。
背景技术:
在现场可编程门阵列(Field-Prog Random-Access Memory mable Gate Array,FPGA)或特定用途集成电路(Application Specific Integrated Circuit,ASIC)设计中,经常会使用RAM。目前使用的RAM存储空间都是2n M,n是正整数,例如,32M、64M、16M等;但设计时需要的RAM存储空间并非都恰好是2n M。假设设计时需要的RAM存储空间是67M。此时,使用存储空间为64M的RAM不能满足设计需要;使用存储空间为128M的RAM,将会有61深度的RAM空间完全不能被利用,从而造成了存储空间的浪费。
技术实现要素:
为解决上述技术问题,本发明实施例期望提供一种数据存储方法、存储空间设计方法和存储装置,能够最大限度的利用存储空间,减少存储空间的浪费。
本发明的技术方案是这样实现的:
第一方面,提供一种数据存储方法,所述方法包括:
获取寻址空间,所述寻址空间是需要存储第一数据需要的空间;
根据所述寻址空间,在存储器和/或随机存取存储器RAM中存储所述第一数据。
可选的,所述根据所述寻址空间,在存储器和/或随机存取存储器RAM中存储所述第一数据包括:
若所述寻址空间X=2n,则将所述第一数据写入存储空间为2n M的第一 RAM,所述n是正整数;
若所述2n<X≤2n+y,则将所述第一数据中前2n M数据写入所述第一RAM,将剩余的(X-2n)M数据写入存储空间为(X-2n)M的存储器,所述y<2n;
若所述2n+y<X<2n+1,则将所述第一数据写入存储空间为2n+1 M的第二RAM。
可选的,所述y等于
可选的,所述方法还包括:
接收控制信号,所述控制信号用于从所述RAM和/或所述存储器的各个地址中,选择需要读取的第二数据的地址;
根据所述控制信号,将所述第二数据的地址中读出所述第二数据。
第二方面,提供一种存储装置,所述装置包括:
获取单元,用于获取寻址空间,所述寻址空间是需要存储第一数据需要的空间;
存储单元,用于根据所述寻址空间,在存储器和/或随机存取存储器RAM中存储所述第一数据。
可选的,所述存储单元具体用于:
若所述寻址空间X=2n,则将所述第一数据写入存储空间为2n M的第一RAM,所述n是正整数;
若所述2n<X≤2n+y,则将所述第一数据中前2n M数据写入所述第一RAM,将剩余的(X-2n)M数据写入存储空间为(X-2n)M的存储器,所述y<2n;
若所述2n+y<X<2n+1,则将所述第一数据写入存储空间为2n+1 M的第二RAM。
可选的,所述y等于
可选的,所述装置还包括:
接收单元,用于接收控制信号,所述控制信号用于从所述RAM和/或所述 存储器的各个地址中,选择需要读取的第二数据的地址;
读出单元,用于根据所述控制信号,将所述第二数据的地址中读出所述第二数据。
第三方面,提供一种存储装置,所述装置包括:RAM、存储器和连接所述RAM和所述存储器的地址总线;
其中,第一数据根据寻址空间,存入所述存储器和所述RAM,所述寻址空间是需要存储所述第一数据需要的空间。
可选的,当所述第一数据写入所述RAM时,所述RAM的片选位是有效状态;所述存储器的片选位是无效状态;当所述第一数据中未写入所述RAM的数据写入所述存储器时,所述存储器的片选位是有效状态;所述RAM的片选位是无效状态;
其中,所述RAM的片选位是与所述RAM连接的地址总线的最高位;所述存储器的片选位是与所述存储器连接的地址总线的最高位。
优选的,所述存储器是至少一个寄存器。
可选的,所述装置还包括:
多选器,用于根据控制信号,将所述已存储的第二数据读出。
本发明实施例提供了一种数据存储方法和存储装置,该方法包括:先获取寻址空间,所述寻址空间是需要存储第一数据需要的空间;再根据所述寻址空间,在存储器和/或随机存取存储器RAM中存储所述第一数据。这样一来,根据存储装置的存储空间选择RAM和存储器的组合方式,因此,该存储空间不仅仅限于2的几次方,而是最为接近设计需要的存储空间,从而最大限度的利用存储空间,减少存储空间的浪费。
附图说明
图1为本发明实施例提供的一种数据存储方法的流程图;
图2为本发明实施例提供的一种存储装置的结构示意图;
图3为本发明实施例提供的再一种存储装置的结构示意图;
图4为本发明实施例提供的又一种存储装置的结构示意图;
图5为本发明实施例提供的另一种存储装置的结构示意图;
图6为本发明实施例提供的存储空间为67M的存储装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
实施例一
本发明实施例提供一种数据存储方法,如图1所示,应用于存储装置,所述存储装置包括第一RAM、存储器和第二RAM,所述方法包括:
步骤101、获取寻址空间,所述寻址空间是需要存储第一数据需要的空间。
步骤102、根据寻址空间,在存储器和/或RAM中存储第一数据。
具体的,若寻址空间X=2n,则将第一数据写入存储空间为2n M的第一RAM,所述n是正整数;若2n<X≤2n+y,则将第一数据中前2n M数据写入第一RAM,将剩余的(X-2n)M数据写入存储空间为(X-2n)M的存储器,所述y<2n;若2n+y<X<2n+1,则将第一数据写入存储空间为2n+1 M的第二RAM。
值得说明的是,本实施例的存储装置可以分为两种情况。第一种情况,假设存储装置只有RAM只有第一RAM、第二RAM和存储器,若X<2n,则将第一数据写入第一存储器。第二种情况,存储装置具有各个存储空间的RAM,根据寻址地址将第一数据写入最合适的RAM中,若X<2n,在按照本实施例的方法,将第一数据分配到更小数量级的RAM和存储器中。
优选的,y等于
这里,写入过程可以包括:向存储器输入片选信号,所述片选信号使存储器的片选位处于有效状态,将数据写入存储器;向第一RAM或第二RAM输入片选信号,所述片选信号使对应RAM的片选位处于有效状态,将数据写入对应的RAM。
其中,片选位处于有效状态是指片选位处于高电平;片选位处于无效状态是指片选位处于低电平,其中,片选位是地址总线的最高位。
这样一来,根据存储装置的存储空间选择RAM和存储器的组合方式,因此,该存储空间不仅仅限于2的几次方,而是最为接近设计需要的存储空间,从而最大限度的利用存储空间,减少存储空间的浪费。
优选的,所述存储器是至少一个寄存器。
对应的,若2n<X≤2n+y,则将所述第一数据中前2n M数据写入所述第一RAM,将剩余的(X-2n)M数据写入容量为(X-2n)M的存储器包括:
当寄存器的片选位处于有效状态,存储器的片选位处于无效状态时,对寄存器进行写操作;当寄存器的片选位处于无效状态,存储器的片选位处于有效状态时,对第一RAM进行写操作。值得说明的是,本实施例中,存储器可以不仅仅是寄存器,还可以是其他存储器,例如RAM。
对于存储器是多个寄存器时,多个寄存器的统一写口是一个地址比较单元,根据寻址空间,确定出写入哪个寄存器。由于当前寄存器组的总存储空间是mM,该m是正整数,所以,地址比较单元的位宽是zbit,z满足2z-1<m<2z。
进一步的,所述方法还包括:
接收控制信号,所述控制信号用于从RAM和/或存储器的各个地址中,选择需要读取的第二数据的地址;根据所述控制信号,将第二数据的地址中读出第二数据。这里,该RAM为第一RAM或第二RAM。
实施例二
本发明实施例提供一种存储装置20,如图2所示,所述装置20包括:
获取单元201,用于获取寻址空间,所述寻址空间是需要存储第一数据需要的空间。
存储单元202,用于根据所述寻址空间,在存储器和/或RAM中存储所述第一数据。
这样一来,根据存储装置的存储空间选择RAM和存储器的组合方式,因 此,该存储空间不仅仅限于2的几次方,而是最为接近设计需要的存储空间,从而最大限度的利用存储空间,减少存储空间的浪费。
进一步的,所述存储单元202具体用于:
若所述寻址空间X=2n,则将所述第一数据写入存储空间为2n M的第一RAM,所述n是正整数;
若2n<X<2n+y,则将所述第一数据中前2n M数据写入所述第一RAM,将剩余的(X-2n)M数据写入所述存储器,所述y<2n;
若2n+y<X<2n+1,则将第一数据写入存储空间为2n+1 M的第二RAM。这里,X需要小于2n+1。
优选的,所述y等于
进一步的,如图3所示,所述装置20还包括:
接收单元203,用于接收控制信号,所述控制信号用于从所述RAM和/或所述存储器的各个地址中,选择需要读取的第二数据的地址;
读出单元204,用于根据所述控制信号,将所述第二数据的地址中读出所述第二数据。
实施例三
本发明实施例提供一种存储装置20,如图4所示,所述装置20包括:RAM301、存储器302和连接所述RAM301和所述存储器302的地址总线303;
其中,第一数据根据寻址空间,存入所述存储器302和所述RAM301,所述寻址空间是需要存储所述第一数据需要的空间。
这样一来,存储装置的存储空间由RAM和存储器的存储空间共同组成,可以出现许多种组合的可能,因此,该存储空间不仅仅限于2的几次方,而是最为接近设计需要的存储空间,从而最大限度的利用存储空间,减少存储空间的浪费。
进一步的,当第一数据写入所述RAM301时,所述RAM301的片选位是有效状态;所述存储器302的片选位是无效状态;当所述第一数据中未写入所述 RAM301的数据写入所述存储器302时,所述存储器302的片选位是有效状态;所述RAM301的片选位是无效状态;
其中,所述RAM301的片选位是与所述RAM301连接的地址总线的最高位;所述存储器302的片选位是与所述存储器302连接的地址总线的最高位。
优选的,所述存储器302是至少一个寄存器3021。
进一步的,如图5所示,所述装置20还包括:
多选器304,用于根据控制信号,将所述已存储的第二数据读出。
值得说明的是,若存储空间X很接近2n+1,则节省的空间也不是很大,直接使用存储空间为2n+1 M的第二RAM即可,无需使用本实施例这种RAM加存储器的方式。优选的,使用RAM加存储器的方式时,即X应该满足
例如,如图6所示,需要存储空间67M,该存储空间略大于64M,小于(64+64/3)M,因此,使用本实施例提供的RAM301加寄存器3021的方案就非常合适。
具体的,存储空间为67M的存储装置由64M的RAM302和3个1M的寄存器3021组成。
写口上,64M的RAM301和3组寄存器3021使用公用的地址总线。当寻址空间在64以内时,RAM301的片选位处于有效状态,寄存器3021的片选位处于无效状态,此时,对RAM301进行写操作;当寻址空间在64以外时,RAM的片选位处于无效状态,寄存器3021的片选位处于有效状态,此时,对寄存器3021进行写操作。对于3个寄存器3021,写口是一个地址比较单元,由于当前3个寄存器3021的存储空间为3M,所以地址比较单元的位宽只要2bit即可访问当前所有寄存器3021组。
读口上,要求数据出来后不要做复杂逻辑。这个设计上,只是一个MUX(多选器),而且MUX的控制的使能位比数据rd_data提前给出,所以MUX 的通道是提前建立好的。与现有的RAM相比就是多了一个MUX的器件延时。读出数据后按常规设计用寄存器3021打一拍即可。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。