发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种节省主控SRAM的存储器数据写入方法及装置,旨在解决现有技术中NAND Flash写入数据时,主控需要占用较多的SRAM,主控成本大,数据写入速度慢的技术问题。
本发明的技术方案如下:
一种节省主控SRAM的存储器数据写入方法,所述方法包括:
接收待写入的数据,对接收数据的数据长度进行监测;
判断数据长度是否小于等于第一阈值;
若接收数据的数据长度小于等于第一阈值,则将接收数据写入存储单元;
若接收数据的数据长度大于第一阈值,则将数据长度为第一阈值的接收数据存储到缓存,将大于第一阈值的数据长度的接收数据部分存储至主控SRAM中,检测到数据传输结束后,将缓存中的数据写入存储单元,再将主控SRAM中的数据写入存储单元。
进一步地,所述接收数据传输设备发送的数据,包括:
通过SD接口或USB接口接收待写入的数据。
进一步优选地,所述检测到数据传输结束后,将缓存中的数据写入存储单元,再将主控SRAM中的数据写入存储单元前,包括:
判断主控SRAM接收数据的数据长度大于等于第二阈值;
若接收数据的数据长度大于等于第二阈值,则将缓存中的数据写入TLC中,将主控SRAM中的数据依次写到TLC块中;
若接收数据的数据长度小于第二阈值,则将缓存中的数据写入当前TLC所在的SLC块中,再将主控SRAM中的数据写入SLC块中。
进一步优选地,所述将接收数据写入存储单元,包括:
通过发送直接寻址数据传送指令将接收数据写入SLC块中。
优选地,所述将数据长度为第一阈值的接收数据存储到缓存,包括:
将数据长度为第一阈值的接收数据通过直接存储器访问的方式写入存储器的缓存中。
进一步地,所述将缓存中的数据写入当前TLC所在的SLC块中,包括:
通过发送直接寻址数据传送指令将缓存中的数据写入到当前TLC所在的SLC块中。
进一步地,所述若接收数据的数据长度大于等于第二阈值,则将缓存中的数据写入TLC中,将主控SRAM中的数据依次写到TLC块中后,还包括:
若检测到存在待写入的数据,则继续判断待写入的数据长度进行监测,根据数据长度执行数据写入操作。
本发明的另一实施例提供了一种节省主控SRAM的存储器数据写入装置,所述装置包括至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的节省主控SRAM的存储器数据写入方法。
本发明的另一实施例还提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行上述的节省主控SRAM的存储器数据写入方法。
本发明的另一种实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被处理器执行时,使所述处理器执行上述的节省主控SRAM的存储器数据写入方法。
有益效果:本发明实施例将NAND Flash的cache当作主控的数据缓存区域,减少主控需要SRAM的同时不影响写入数据的速度。
具体实施方式
为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。以下结合附图对本发明实施例进行介绍。
本发明实施例提供了一种节省主控SRAM的存储器数据写入方法。请参阅图1,图1为本发明一种节省主控SRAM的存储器数据写入方法较佳实施例的流程图。如图1所示,其包括步骤:
步骤S100、接收待写入的数据,对接收数据的数据长度进行监测;
步骤S200、判断数据长度是否小于等于第一阈值,如果是,则执行步骤S300,如果否,则执行步骤S400;
步骤S300、将接收数据写入存储单元;
步骤S400、将数据长度为第一阈值的接收数据存储到缓存,将大于第一阈值的数据长度的接收数据部分存储至主控SRAM中,检测到数据传输结束后,将缓存中的数据写入存储单元,再将主控SRAM中的数据写入存储单元。
具体实施时,本发明实施例应用于Nand Flash存储器的数据写入。具体地,是使用NAND Flash的cache当作主控的数据缓存区域。具体地,接收待写入的数据,检测主控SRAM接收的数据长度,判断数据写入的位置;
若数据写入位置为TLC,写数据到NAND Flash的缓存后,继续接收数据;
如果数据大于第一阈值,则将NAND Flash的缓存中的数据写入到SLC的块中;如则NAND Flash的缓存中的数据和静态存储器满足一次完整的TLC直接写的数据,则先发编程命令将缓存中的数据写入到Flash中,再将剩下的数据写入Flash中。
以第一阈值为16KB为例进行介绍,如果接收的数据长度小于或等于16KB,则直接写SLC,本次写结束;
如果接收到16KB数据后还有需要接收数据,则将前面收到的第一个16KB的数据用DMA的方式写入到NandFlash的cache中,不发编程命令。
在接收第二个16KB的数据时,如果接收到的数据小于或等于16KB后没有数据,则需要先发85h命令用copy back写的方式将NAND Flash的cache中的数据写入到当前plane所对应的SLC块中,再将收到主控的SRAM中的数据写入到SLC的块中。
进一步地,接收数据传输设备发送的数据,包括:
通过SD接口或USB接口接收待写入的数据。
具体实施时,假定Flash的页大小为16KB,一次TLC写需要写3个页,接收的数据从SD接口或者USB接口发送下来。
进一步地,检测到数据传输结束后,将缓存中的数据写入存储单元,再将主控SRAM中的数据写入存储单元前,包括:
判断主控SRAM接收数据的数据长度大于等于第二阈值;
若接收数据的数据长度大于等于第二阈值,则将缓存中的数据写入TLC中,将主控SRAM中的数据依次写到TLC块中;
若接收数据的数据长度小于第二阈值,则将缓存中的数据写入当前TLC所在的SLC块中,再将主控SRAM中的数据写入SLC块中。
具体实施时,以第二阈值为32KB为例进行介绍,则如果收到第二个16KB的数据后还有数据,则继续接收第三个16KB的数据,如果在接收第三个16K时实际的数据小于16K,则需要重复将NandFlash的cache中的数据写入到SLC的块中的步骤,再将剩余的数据写到SLC的块中;如果接收到16KB数据,则先发送编程命令将第一个16KB数据写到TLC中,再依次将主控SRAM中的32K数据写入到TLC中,一次完整的TLC编程就完成了,后续还有数据则从步骤S100开始执行。
进一步地,将接收数据写入存储单元,包括:
通过发送直接寻址数据传送指令将接收数据写入SLC块中。
具体实施时,发85H命令将NandFlash的cache中的数据写入到SLC的块.85H命令为直接寻址数据传送指令,指令功能:内部RAM低123单元或专用寄存器之间的相互传送。
进一步地,将数据长度为第一阈值的接收数据存储到缓存,包括:
将数据长度为第一阈值的接收数据通过直接存储器访问的方式写入存储器的缓存中。
具体实施时,将数据长度为第一阈值的接收数据通过DMA的方式写入存储器的缓存中。DMA(Direct Memory Access,直接存储器访问)是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于CPU的大量中断负载。
进一步地,将缓存中的数据写入当前TLC所在的SLC块中,包括:
通过发送直接寻址数据传送指令将缓存中的数据写入到当前TLC所在的SLC块中。
具体实施时,发85H命令将NandFlash的cache中的数据写入到当前TLC所在SLC的块中。
进一步地,若接收数据的数据长度大于等于第二阈值,则将缓存中的数据写入TLC中,将主控SRAM中的数据依次写到TLC块中后,还包括:
若检测到存在待写入的数据,则继续判断待写入的数据长度进行监测,根据数据长度执行数据写入操作。
具体实施时,先发送编程命令将第一个16KB数据写到TLC中,再依次将主控SRAM中的32K数据写入到TLC中,一次完整的TLC编程就完成了,后续还有数据则从步骤S100开始执行。
本发明实施例中16KB的数据放到了Flash的cache中,剩下的32KB的数据在主控的SRAM中,只要32KB的SRAM就可以实现直接写TLC块,如果全部数据收到主控SRAM中,在写TLC,则需要16KB*3=48KB的SRAM,可以节省16KB的SRAM。为了提高写的速度,一般会需要多个plane绑定,2个plane绑定时,如果全部将数据收到主控SRAM中,则一次完整的TLC写需要的SRAM为:16KB*3*2=96KB,如果使用Flash的cache来缓存数据,则需要的SRAM为:96KB-16KB*2=64KB,节省了32KB的SRAM。
由以上方法实施例可知,本发明实施例提供了一种节省主控SRAM的存储器数据写入方法,利用NAND Flash的特性,将NAND Flash的cache当做主控的数据缓存,在不降低写入速度的前提下,减少了主控需要的SRAM,节省了芯片的成本。
需要说明的是,上述各步骤之间并不必然存在一定的先后顺序,本领域普通技术人员,根据本发明实施例的描述可以理解,不同实施例中,上述各步骤可以有不同的执行顺序,亦即,可以并行执行,变可以交换执行等等。
本发明另一实施例提供一种节省主控SRAM的存储器数据写入装置,如图2所示,装置10包括:
一个或多个处理器110以及存储器120,图2中以一个处理器110为例进行介绍,处理器110和存储器120可以通过总线或者其他方式连接,图2中以通过总线连接为例。
处理器110用于完成,装置10的各种控制逻辑,其可以为通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、单片机、ARM(Acorn RISCMachine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,处理器110还可以是任何传统处理器、微处理器或状态机。处理器110也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP核、或任何其它这种配置。
存储器120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的节省主控SRAM的存储器数据写入方法对应的程序指令。处理器110通过运行存储在存储器120中的非易失性软件程序、指令以及单元,从而执行装置10的各种功能应用以及数据处理,即实现上述方法实施例中的节省主控SRAM的存储器数据写入方法。
存储器120可以包括存储程序区和存储数据区,其中,存储程序区可存储操作装置、至少一个功能所需要的应用程序;存储数据区可存储根据装置10使用所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器120可选包括相对于处理器110远程设置的存储器,这些远程存储器可以通过网络连接至装置10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个单元存储在存储器120中,当被一个或者多个处理器110执行时,执行上述任意方法实施例中的节省主控SRAM的存储器数据写入方法,例如,执行以上描述的图1中的方法步骤S100至步骤S400。
本发明实施例提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如,执行以上描述的图1中的方法步骤S100至步骤S400。
作为示例,非易失性存储介质能够包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦ROM(EEPROM)或闪速存储器。易失性存储器能够包括作为外部高速缓存存储器的随机存取存储器(RAM)。通过说明并非限制,RAM可以以诸如同步RAM(SRAM)、动态RAM、(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、Synchl ink DRAM(SLDRAM)以及直接Rambus(兰巴斯)RAM(DRRAM)之类的许多形式得到。本文中所描述的操作环境的所公开的存储器组件或存储器旨在包括这些和/或任何其他适合类型的存储器中的一个或多个。
本发明的另一种实施例提供了一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使处理器执行上述方法实施例的节省主控SRAM的存储器数据写入方法。例如,执行以上描述的图1中的方法步骤S100至步骤S400。
以上所描述的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存在于计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行各个实施例或者实施例的某些部分的方法。
除了其他之外,诸如"能够'、"能"、"可能"或"可以"之类的条件语言除非另外具体地陈述或者在如所使用的上下文内以其他方式理解,否则一般地旨在传达特定实施方式能包括(然而其他实施方式不包括)特定特征、元件和/或操作。因此,这样的条件语言一般地还旨在暗示特征、元件和/或操作对于一个或多个实施方式无论如何都是需要的或者一个或多个实施方式必须包括用于在有或没有输入或提示的情况下判定这些特征、元件和/或操作是否被包括或者将在任何特定实施方式中被执行的逻辑。
已经在本文中在本说明书和附图中描述的内容包括能够提供节省主控SRAM的存储器数据写入方法及装置的示例。当然,不能够出于描述本公开的各种特征的目的来描述元件和/或方法的每个可以想象的组合,但是可以认识到,所公开的特征的许多另外的组合和置换是可能的。因此,显而易见的是,在不脱离本公开的范围或精神的情况下能够对本公开做出各种修改。此外,或在替代方案中,本公开的其他实施例从对本说明书和附图的考虑以及如本文中所呈现的本公开的实践中可能是显而易见的。意图是,本说明书和附图中所提出的示例在所有方面被认为是说明性的而非限制性的。尽管在本文中采用了特定术语,但是它们在通用和描述性意义上被使用并且不用于限制的目的。