CN107506309B - 终端及闪存数据写入方法和计算机可读存储介质 - Google Patents
终端及闪存数据写入方法和计算机可读存储介质 Download PDFInfo
- Publication number
- CN107506309B CN107506309B CN201710531005.0A CN201710531005A CN107506309B CN 107506309 B CN107506309 B CN 107506309B CN 201710531005 A CN201710531005 A CN 201710531005A CN 107506309 B CN107506309 B CN 107506309B
- Authority
- CN
- China
- Prior art keywords
- data
- writing
- written
- command
- preset value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
Abstract
本发明公开了一种闪存数据写入方法,所述闪存数据写入方法包括以下步骤:接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;在所述待写入数据所需的存储空间大于或等于预设值时,将所述待写入数据写入三级单元TLC中;在接收到的写入命令为连续命令时,将接收到的写入命令对应的待写入数据写入三级单元TLC中;在接收到的写入命令存在间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间大于或等于预设值的数据写入。本发明还公开了一种终端及计算机可读存储介质。本发明提高了数据写入的效率,且提高了数据的安全性和稳定性。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及终端及闪存数据写入方法和计算机可读存储介质。
背景技术
随着闪存技术的不断发展,演变至今,出现了3D Nand Flash,三维快闪记忆体,而针对3D TLC Flash One Pass Programming一次编程的特性,当前业界通用处理方案为:所有数据先写到单级单元SLC块中,再从SLC块拷贝到三级单元TLC块,确保已编程数据的稳定性,该方案稳定性好,但由于数据要先存放在SLC,再拷贝到TLC,产生两倍的写入放大,严重影响数据写入性能。
为了提高3D TLC Flash的写入性能,采用直接写入TLC块的方案,可能存在以下问题:
在写入数据过程中,分享页面Shared Pages中存在未完成编程的Page,会导致已编程的Page的数据由于命令的切换、Flash掉电而丢失。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种终端及闪存数据写入方法和计算机可读存储介质,旨在解决目前3D TLC Flash在写入数据过程中,分享页面Shared Pages中存在未完成编程的Page,会导致已编程的Page的数据由于命令的切换、Flash掉电而丢失的技术问题。
为实现上述目的,本发明提供一种闪存数据写入方法,所述闪存数据写入方法包括以下步骤:
接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在所述待写入数据所需的存储空间大于或等于预设值时,将所述待写入数据写入三级单元TLC中;
在接收到的写入命令为连续命令时,将接收到的写入命令对应的待写入数据写入三级单元TLC中;
在接收到的写入命令存在间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间大于或等于预设值的数据写入。
优选地,所述接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值的步骤之后,还包括:
在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
在为间断写入时,将所述待写入数据写入单级单元SLC中。
优选地,所述在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据之后,还包括:
在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中;
在连续写入间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
此外,为实现上述目的,本发明还提供一种闪存数据写入方法,所述闪存数据写入方法包括以下步骤:
接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
在为间断写入时,将所述待写入数据写入单级单元SLC中。
优选地,所述在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据之后,还包括:
在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中;
在连续写入间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
此外,为实现上述目的,本发明还提供一种终端,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的闪存数据写入程序,所述闪存数据写入切换程序被所述处理器执行时实现如下步骤:
接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在所述待写入数据所需的存储空间大于或等于预设值时,将所述待写入数据写入三级单元TLC中;
在接收到的写入命令为连续命令时,将接收到的写入命令对应的待写入数据写入三级单元TLC中;
在接收到的写入命令存在间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间大于或等于预设值的数据写入。
优选地,所述接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值的步骤之后,所述闪存数据写入程序被所述处理器执行时实现如下步骤:
在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
在为间断写入时,将所述待写入数据写入单级单元SLC中。
优选地,所述在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据之后,所述闪存数据写入程序被所述处理器执行时实现如下步骤:
在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中;
在连续写入间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
优选地,所述闪存数据写入程序被所述处理器执行时实现如下步骤:
接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
在为间断写入时,将所述待写入数据写入单级单元SLC中。
优选地,所述在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据之后,所述闪存数据写入程序被所述处理器执行时实现如下步骤:
在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中;
在连续写入间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有闪存数据写入程序,所述闪存数据写入程序被处理器执行时实现如上所述的闪存数据写入切换方法的步骤。
本发明在数据写入闪存时,写入大数据时,直接写入TLC中,且在存在写入命令间断后,查看最后编程页所在的Shared Pages是否已经全部编程完,未编程完填充无效数据,以完成大数据写入。而不会像目前不断的查看填充无效数据,出现数据丢失;或者先写入SLC再写入TLC块,写入放大的问题。有效避免了目前3D TLC Flash在写入数据过程中,分享页面Shared Pages中存在未完成编程的Page,会导致已编程的Page的数据由于命令的切换、Flash掉电而丢失的技术问题。提高了数据写入的效率,且提高了数据的安全性和稳定性。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的终端\装置结构示意图;
图2为本发明闪存数据写入方法一实施例的流程示意图;
图3为本发明闪存数据写入方法另一实施例的流程示意图;
图4为本发明闪存数据写入方法又一实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;在所述待写入数据所需的存储空间大于或等于预设值时,将所述待写入数据写入三级单元TLC中;在接收到的写入命令为连续命令时,将接收到的写入命令对应的待写入数据写入三级单元TLC中;在接收到的写入命令存在间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间大于或等于预设值的数据写入。
由于目前不断的查看填充无效数据,出现数据丢失;或者先写入SLC再写入TLC块,写入放大的问题。有效避免了目前3D TLC Flash在写入数据过程中,分享页面SharedPages中存在未完成编程的Page,会导致已编程的Page的数据由于命令的切换、Flash掉电而丢失的技术问题。本发明提供一种解决方案,在数据写入闪存时,写入大数据时,直接写入TLC中,且在存在写入命令间断后,查看最后编程页所在的Shared Pages是否已经全部编程完,未编程完填充无效数据,以完成大数据写入。而不会像目前不断的查看填充无效数据,出现数据丢失;或者先写入SLC再写入TLC块,写入放大的问题。有效避免了目前3D TLCFlash在写入数据过程中,分享页面Shared Pages中存在未完成编程的Page,会导致已编程的Page的数据由于命令的切换、Flash掉电而丢失的技术问题。提高了数据写入的效率,且提高了数据的安全性和稳定性。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图。
本发明实施例终端为在数据写入闪存时,写入大数据时,直接写入TLC中,且在存在写入命令间断后,查看最后编程页所在的Shared Pages是否已经全部编程完,未编程完填充无效数据,以完成大数据写入。而不会像目前不断的查看填充无效数据,出现数据丢失;或者先写入SLC再写入TLC块,写入放大的问题。有效避免了目前3D TLC Flash在写入数据过程中,分享页面Shared Pages中存在未完成编程的Page,会导致已编程的Page的数据由于命令的切换、Flash掉电而丢失的技术问题。提高了数据写入的效率,且提高了数据的安全性和稳定性。
如图1所示,该终端可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,终端还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器、温度传感器、霍尔曼传感器等其他传感器,在此不再赘述。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及闪存数据写入应用程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的闪存数据写入应用程序,并执行以下操作:
接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在所述待写入数据所需的存储空间大于或等于预设值时,将所述待写入数据写入三级单元TLC中;
在接收到的写入命令为连续命令时,将接收到的写入命令对应的待写入数据写入三级单元TLC中;
在接收到的写入命令存在间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间大于或等于预设值的数据写入。
进一步地,所述接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值的步骤之后,处理器1001可以调用存储器1005中存储的闪存数据写入应用程序,还执行以下操作:
在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
在为间断写入时,将所述待写入数据写入单级单元SLC中。
进一步地,所述在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据之后,处理器1001可以调用存储器1005中存储的闪存数据写入应用程序,还执行以下操作:
在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中;
在连续写入间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
进一步地,处理器1001可以调用存储器1005中存储的闪存数据写入应用程序,还执行以下操作:
接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
在为间断写入时,将所述待写入数据写入单级单元SLC中。
进一步地,处理器1001可以调用存储器1005中存储的闪存数据写入应用程序,还执行以下操作:
在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中;
在连续写入间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
参照图2,本发明的第一实施例提供一种闪存数据写入方法,所述闪存数据写入方法包括:
步骤S10,接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在本发明的一实施例中,在需要向闪存中存储数据时,发出数据写入命令。而写入数据,按写命令之间的间隔长短可分为连续写命令和间隔写命令,按数据大小可分为大数据和小数据。间隔长短可按设定时间来区分,数据大小可按预设值来区分,例如,间隔时间超过预设时间为间隔写命令,而间隔时间在预设时间内为连续写命令,所述预设时间可为1s或2s等,所述预设值可为16k或32k等,根据用户需求设置。连续写命令:只从主机连续不断的收到写命令数据包,命令之间没有间隔,例如,拷贝一部电影文件,由于主机对一个写命令的数据包大小存在限制,一部电影文件需要分成多个写命令数据包,连续写到3D NandFlash中。在发出向闪存中写入数据命令后,终端的闪存接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值,即判断所述数据为大数据还是小数据,在大于或等于预设值时,判断为大数据,在小于预设值时,判断为小数据。具体的,预设值以16k为例,超过16k的数据为大数据,小于16k的数据为小数据。
步骤S20,在所述待写入数据所需的存储空间大于或等于预设值时,将所述待写入数据写入三级单元TLC中;
在所述写入命令的数据为大数据时,将所述待写入数据写入3D Nand Flash的三级单元TLC中。接收下一待写入数据的写入命令。
步骤S30,在接收到的写入命令为连续命令时,将接收到的写入命令对应的待写入数据写入三级单元TLC中;
在接收到的写入命令间的间隔未超过预设时间时,即在接收到的写入命令为连续命令时,将接收到的写入命令对应的待写入数据写入三级单元TLC中。也就是说,从主机端接收到大数据时,直接编程到TLC块中,并继续接收下一条写命令,继续编程。
步骤S40,在接收到的写入命令存在间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间大于或等于预设值的数据写入。
在接收到的写入命令为连续命令时,持续编程,将数据写入TLC块中;而在接收到的写入命令存在间断,即在接收到一个写入命令,而这个写入命令与下一个写入命令为隔断的命令时,为不同数据的写入时,判断最后编程页所在的Shared Pages是否已经全部编程完,如果存在未编程的Page,则填充无效数据编程完Shared Pages剩下的所有Page,该大数据编程完成,例如,在一部电影文件写入完毕后,判断最后编程页是否存在未编程完的Page,存在,用无效数据填充,完成一部电影文件的编程。
本实施例在数据写入闪存时,写入大数据时,直接写入TLC中,且在存在写入命令间断后,查看最后编程页所在的Shared Pages是否已经全部编程完,未编程完填充无效数据,以完成大数据写入。而不会像目前不断的查看填充无效数据,出现数据丢失;或者先写入SLC再写入TLC块,写入放大的问题。有效避免了目前3D TLC Flash在写入数据过程中,分享页面Shared Pages中存在未完成编程的Page,会导致已编程的Page的数据由于命令的切换、Flash掉电而丢失的技术问题。提高了数据写入的效率,且提高了数据的安全性和稳定性。
在本发明一较佳实施例中,参考图3,所述接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值的步骤之后,还包括:
步骤S50,在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
步骤S60,在为间断写入时,将所述待写入数据写入单级单元SLC中;
步骤S70,在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中;
步骤S80,在连续写入间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
本实施例与上述实施例的区别在于,本实施例为小数据的写入操作,从主机接收到小数据时,先预存在Flash Controller闪存控制器的缓存中,继续接收下一条写命令;如果出现命令间断,则将数据写入SLC块中,否则继续收取下一条写命令的数据,写到TLC块中,再继续接收下一条写命令,如果出现命令间断,判断最后编程页所在的Shared Pages是否已经全部编程完,如果存在未编程的Page,则填充无效数据编程完Shared Pages剩下的所有Page,该小数据编程完成。
本实施例在连续的小数据写入时,直接写入TLC块中,而对于间断的小数据写入是将数据写入SLC块中,根据数据类型不同,数据写入的位置不同,而不是全部先写入SLC块,然后再拷贝到TLC块中,避免写入放大,造成写入效率低,闪存块利用率低的问题,提高写入速率,和闪存块利用率。
在本发明一较佳实施例中,参考图4,所述方法,还包括:
步骤S101,接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
步骤S102,在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
步骤S103,在为间断写入时,将所述待写入数据写入单级单元SLC中;
步骤S104,在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中;
步骤S105,在连续写入间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
本实施例与上述各实施例的差异在于,通过区分数据类型,部分数据直接采用SLC编程,防止编程TLC块容易产生数据丢失的问题,提高数据稳定性。具体的,在接收到数据写入指令时,判断是否为小数据,在为小数据写入时,先预存在Flash Controller闪存控制器的缓存中,继续接收下一条写命令;如果出现命令间断,则将数据写入SLC块中,否则继续收取下一条写命令的数据,写到TLC块中,再继续接收下一条写命令,如果出现命令间断,判断最后编程页所在的Shared Pages是否已经全部编程完,如果存在未编程的Page,则填充无效数据编程完Shared Pages剩下的所有Page,该小数据编程完成。小数据连续写直接启动TLC块编程,小数据间断写直接启动SLC块编程。
在一实施例中,本发明还提供一种终端,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的闪存数据写入程序,所述闪存数据写入程序被所述处理器执行时实现如下步骤:
接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在本发明的一实施例中,在需要向闪存中存储数据时,发出数据写入命令。而写入数据,按写命令之间的间隔长短可分为连续写命令和间隔写命令,按数据大小可分为大数据和小数据。间隔长短可按设定时间来区分,数据大小可按预设值来区分,例如,间隔时间超过预设时间为间隔写命令,而间隔时间在预设时间内为连续写命令,所述预设时间可为1s或2s等,所述预设值可为16k或32k等,根据用户需求设置。连续写命令:只从主机连续不断的收到写命令数据包,命令之间没有间隔,例如,拷贝一部电影文件,由于主机对一个写命令的数据包大小存在限制,一部电影文件需要分成多个写命令数据包,连续写到3D NandFlash中。在发出向闪存中写入数据命令后,终端的闪存接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值,即判断所述数据为大数据还是小数据,在大于或等于预设值时,判断为大数据,在小于预设值时,判断为小数据。具体的,预设值以16k为例,超过16k的数据为大数据,小于16k的数据为小数据。
在所述待写入数据所需的存储空间大于或等于预设值时,将所述待写入数据写入三级单元TLC中;
在所述写入命令的数据为大数据时,将所述待写入数据写入3D Nand Flash的三级单元TLC中。接收下一待写入数据的写入命令。
在接收到的写入命令为连续命令时,将接收到的写入命令对应的待写入数据写入三级单元TLC中;
在接收到的写入命令间的间隔未超过预设时间时,即在接收到的写入命令为连续命令时,将接收到的写入命令对应的待写入数据写入三级单元TLC中。也就是说,从主机端接收到大数据时,直接编程到TLC块中,并继续接收下一条写命令,继续编程。
在接收到的写入命令存在间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间大于或等于预设值的数据写入。
在接收到的写入命令为连续命令时,持续编程,将数据写入TLC块中;而在接收到的写入命令存在间断,即在接收到一个写入命令,而这个写入命令与下一个写入命令为隔断的命令时,为不同数据的写入时,判断最后编程页所在的Shared Pages是否已经全部编程完,如果存在未编程的Page,则填充无效数据编程完Shared Pages剩下的所有Page,该大数据编程完成,例如,在一部电影文件写入完毕后,判断最后编程页是否存在未编程完的Page,存在,用无效数据填充,完成一部电影文件的编程。
本实施例在数据写入闪存时,写入大数据时,直接写入TLC中,且在存在写入命令间断后,查看最后编程页所在的Shared Pages是否已经全部编程完,未编程完填充无效数据,以完成大数据写入。而不会像目前不断的查看填充无效数据,出现数据丢失;或者先写入SLC再写入TLC块,写入放大的问题。有效避免了目前3D TLC Flash在写入数据过程中,分享页面Shared Pages中存在未完成编程的Page,会导致已编程的Page的数据由于命令的切换、Flash掉电而丢失的技术问题。提高了数据写入的效率,且提高了数据的安全性和稳定性。
在本发明一较佳实施例中,所述接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值的步骤之后,所述闪存数据写入程序被所述处理器执行时实现如下步骤:
在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
在为间断写入时,将所述待写入数据写入单级单元SLC中;
在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中;
在连续写入间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
本实施例与上述实施例的区别在于,本实施例为小数据的写入操作,从主机接收到小数据时,先预存在Flash Controller闪存控制器的缓存中,继续接收下一条写命令;如果出现命令间断,则将数据写入SLC块中,否则继续收取下一条写命令的数据,写到TLC块中,再继续接收下一条写命令,如果出现命令间断,判断最后编程页所在的Shared Pages是否已经全部编程完,如果存在未编程的Page,则填充无效数据编程完Shared Pages剩下的所有Page,该小数据编程完成。
本实施例在连续的小数据写入时,直接写入TLC块中,而对于间断的小数据写入是将数据写入SLC块中,根据数据类型不同,数据写入的位置不同,而不是全部先写入SLC块,然后再拷贝到TLC块中,避免写入放大,造成写入效率低,闪存块利用率低的问题,提高写入速率,和闪存块利用率。
在本发明一较佳实施例中,所述闪存数据写入程序被所述处理器执行时实现如下步骤:
接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
在为间断写入时,将所述待写入数据写入单级单元SLC中;
在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中;
在连续写入间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
本实施例与上述各实施例的差异在于,通过区分数据类型,部分数据直接采用SLC编程,防止编程TLC块容易产生数据丢失的问题,提高数据稳定性。具体的,在接收到数据写入指令时,判断是否为小数据,在为小数据写入时,先预存在Flash Controller闪存控制器的缓存中,继续接收下一条写命令;如果出现命令间断,则将数据写入SLC块中,否则继续收取下一条写命令的数据,写到TLC块中,再继续接收下一条写命令,如果出现命令间断,判断最后编程页所在的Shared Pages是否已经全部编程完,如果存在未编程的Page,则填充无效数据编程完Shared Pages剩下的所有Page,该小数据编程完成。小数据连续写直接启动TLC块编程,小数据间断写直接启动SLC块编程。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有闪存数据写入程序,所述闪存数据写入程序被处理器执行时实现如下操作:
接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在所述待写入数据所需的存储空间大于或等于预设值时,将所述待写入数据写入三级单元TLC中;
在接收到的写入命令为连续命令时,将接收到的写入命令对应的待写入数据写入三级单元TLC中;
在接收到的写入命令存在间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间大于或等于预设值的数据写入。
进一步地,所述接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值的步骤之后,所述闪存数据写入程序被所述处理器执行时实现如下步骤:
在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
在为间断写入时,将所述待写入数据写入单级单元SLC中。
进一步地,所述在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据之后,所述闪存数据写入程序被所述处理器执行时实现如下步骤:
在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中;
在连续写入间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
进一步地,所述闪存数据写入程序被所述处理器执行时实现如下步骤:
接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
在为间断写入时,将所述待写入数据写入单级单元SLC中。
进一步地,所述闪存数据写入程序被所述处理器执行时实现如下步骤:
在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中;
在连续写入间断时,填充无效数据编程分享页面所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,电视,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种闪存数据写入方法,其特征在于,所述闪存数据写入方法包括以下步骤:
接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在所述待写入数据所需的存储空间大于或等于预设值时,将所述待写入数据写入三级单元TLC中;
在接收到的写入命令为连续命令时,将接收到的写入命令对应的待写入数据写入三级单元TLC中;
在接收到的写入命令存在间断时,填充无效数据至编程待写入数据后所剩下的所有空白页,完成所需存储空间大于或等于预设值的数据写入。
2.如权利要求1所述的闪存数据写入方法,其特征在于,所述接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值的步骤之后,还包括:
在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
在为间断写入时,将所述待写入数据写入单级单元SLC中;
在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中,在连续写入间断时,填充无效数据至编程待写入数据后所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
3.一种闪存数据写入方法,其特征在于,所述闪存数据写入方法包括以下步骤:
接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
在为间断写入时,将所述待写入数据写入单级单元SLC中;
在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中,在连续写入间断时,填充无效数据至编程待写入数据后所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
4.一种终端,其特征在于,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的闪存数据写入程序,所述闪存数据写入程序被所述处理器执行时实现如下步骤:
接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在所述待写入数据所需的存储空间大于或等于预设值时,将所述待写入数据写入三级单元TLC中;
在接收到的写入命令为连续命令时,将接收到的写入命令对应的待写入数据写入三级单元TLC中;
在接收到的写入命令存在间断时,填充无效数据至编程待写入数据后所剩下的所有空白页,完成所需存储空间大于或等于预设值的数据写入。
5.如权利要求4所述的终端,其特征在于,所述接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值的步骤之后,所述闪存数据写入程序被所述处理器执行时实现如下步骤:
在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
在为间断写入时,将所述待写入数据写入单级单元SLC中;
在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中,在连续写入间断时,填充无效数据至编程待写入数据后所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
6.如权利要求5所述的终端,其特征在于,所述闪存数据写入程序被所述处理器执行时实现如下步骤:
接收数据写入命令,判断所述数据写入命令对应的待写入数据所需的存储空间是否小于预设值;
在所述待写入数据小于预设值时,判断是否连续写入小于预设值的数据;
在为间断写入时,将所述待写入数据写入单级单元SLC中;
在连续写入时,将所述待写入数据写入闪存控制器的缓存中,将待写入数据从闪存控制器的缓存写入TLC中,在连续写入间断时,填充无效数据至编程待写入数据后所剩下的所有空白页,完成所需存储空间小于预设值的数据写入。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有闪存数据写入程序,所述闪存数据写入程序被处理器执行时实现如权利要求1至3中任一项所述的闪存数据写入方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710531005.0A CN107506309B (zh) | 2017-06-30 | 2017-06-30 | 终端及闪存数据写入方法和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710531005.0A CN107506309B (zh) | 2017-06-30 | 2017-06-30 | 终端及闪存数据写入方法和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107506309A CN107506309A (zh) | 2017-12-22 |
CN107506309B true CN107506309B (zh) | 2020-05-19 |
Family
ID=60679696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710531005.0A Active CN107506309B (zh) | 2017-06-30 | 2017-06-30 | 终端及闪存数据写入方法和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107506309B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109582248B (zh) * | 2018-12-14 | 2022-02-22 | 深圳市硅格半导体有限公司 | 闪存数据的写入方法、装置及计算机可读存储介质 |
CN111581120B (zh) | 2019-04-30 | 2021-08-17 | 长江存储科技有限责任公司 | 电子设备和管理闪存的读取电平的方法 |
CN111897744A (zh) * | 2019-05-05 | 2020-11-06 | 北京兆易创新科技股份有限公司 | 一种数据写入方法、装置、电子设备及存储介质 |
CN111949560B (zh) * | 2019-05-16 | 2024-01-23 | 兆易创新科技集团股份有限公司 | 一种数据写入方法、装置及存储设备 |
CN110347339B (zh) * | 2019-06-28 | 2020-07-10 | 华中科技大学 | 一种针对机械硬盘的可控连续写方法、调度器及存储系统 |
CN112162703B (zh) * | 2020-09-25 | 2022-02-22 | 杭州宏杉科技股份有限公司 | 缓存实现方法及缓存管理模块 |
CN115469797B (zh) * | 2021-09-09 | 2023-12-29 | 上海江波龙数字技术有限公司 | 一种数据写入方法、存储装置及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104991738A (zh) * | 2015-06-19 | 2015-10-21 | 华中科技大学 | 一种固态盘及其读写操作方法 |
CN105843553A (zh) * | 2015-02-02 | 2016-08-10 | 三星电子株式会社 | 包括能够进行重写操作的存储装置的存储系统的操作方法 |
CN106055643A (zh) * | 2016-05-31 | 2016-10-26 | 成都索贝数码科技股份有限公司 | Mxf文件写入中断的续写方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI471862B (zh) * | 2011-08-19 | 2015-02-01 | Silicon Motion Inc | 快閃記憶體控制器 |
-
2017
- 2017-06-30 CN CN201710531005.0A patent/CN107506309B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105843553A (zh) * | 2015-02-02 | 2016-08-10 | 三星电子株式会社 | 包括能够进行重写操作的存储装置的存储系统的操作方法 |
CN104991738A (zh) * | 2015-06-19 | 2015-10-21 | 华中科技大学 | 一种固态盘及其读写操作方法 |
CN106055643A (zh) * | 2016-05-31 | 2016-10-26 | 成都索贝数码科技股份有限公司 | Mxf文件写入中断的续写方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107506309A (zh) | 2017-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107506309B (zh) | 终端及闪存数据写入方法和计算机可读存储介质 | |
CN112765271B (zh) | 区块链交易索引的存储方法、装置、计算机设备及介质 | |
US10402065B2 (en) | Method and apparatus for operating a virtual keyboard | |
US10007621B2 (en) | Method for setting universal serial bus (USB) interface of electronic device, and electronic device | |
US10402222B2 (en) | Task migration method and apparatus | |
US10545663B2 (en) | Method for changing an input mode in an electronic device | |
KR102221034B1 (ko) | 컨텐츠 표시 제어 방법 및 그 전자 장치 | |
US20150347377A1 (en) | Method for processing contents and electronic device thereof | |
US9043806B2 (en) | Information processing device and task switching method | |
US20150067669A1 (en) | Method for managing application and electronic device thereof | |
CN107577472B (zh) | 软件安装方法、装置及计算机可读存储介质 | |
US9625979B2 (en) | Method for reducing power consumption and electronic device thereof | |
US20210089173A1 (en) | Electronic device and method for changing user interface according to user input | |
CN103501327A (zh) | 基于移动终端应用的下载方法和装置 | |
KR102354016B1 (ko) | 표시 장치에 표시된 콘텐트의 크기를 변경하기 위한 방법 및 그 전자 장치 | |
US10042856B2 (en) | Method and electronic device for processing data | |
CN109558187B (zh) | 一种用户界面渲染方法及装置 | |
US9600048B2 (en) | Devices and methods for controlling operation of arithmetic and logic unit | |
CN103885697A (zh) | 页面操作系统及方法 | |
WO2016023276A1 (zh) | 一种存储卡的数据处理方法及装置 | |
CN105229607B (zh) | 显示控制装置以及显示控制方法 | |
KR20210046426A (ko) | 어플리케이션의 최적화 방법 및 이를 지원하는 전자 장치 | |
US11586564B2 (en) | Head of line entry processing in a buffer memory device | |
CN109857469B (zh) | 显示屏控制方法及相关产品 | |
CN110895592B (zh) | 移动终端上的链接启动方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Units 05-2 and 06-08, 6th floor, Changhong Science and Technology Building, 18 Science and Technology South 12 Road, Nanshan District, Shenzhen City, Guangdong Province Applicant after: Shenzhen SiliconGo Semiconductor Co., Ltd. Address before: Units 05-2 and 06-08, 6th floor, Changhong Science and Technology Building, 18 Science and Technology South 12 Road, Nanshan District, Shenzhen City, Guangdong Province Applicant before: SILICONGO MICROELECTRONICS CO., LTD. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |