CN112256203B - Flash存储器的写入方法、装置、设备、介质及系统 - Google Patents

Flash存储器的写入方法、装置、设备、介质及系统 Download PDF

Info

Publication number
CN112256203B
CN112256203B CN202011154418.XA CN202011154418A CN112256203B CN 112256203 B CN112256203 B CN 112256203B CN 202011154418 A CN202011154418 A CN 202011154418A CN 112256203 B CN112256203 B CN 112256203B
Authority
CN
China
Prior art keywords
flash memory
data
buffer area
processed
writing
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
Application number
CN202011154418.XA
Other languages
English (en)
Other versions
CN112256203A (zh
Inventor
汪明华
孔文
周琦
王�琦
朱文骁
刘倩
马兆军
王庆宝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Gaite Aviation Technology Co ltd
Original Assignee
Shandong Gaite Aviation Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Gaite Aviation Technology Co ltd filed Critical Shandong Gaite Aviation Technology Co ltd
Priority to CN202011154418.XA priority Critical patent/CN112256203B/zh
Publication of CN112256203A publication Critical patent/CN112256203A/zh
Application granted granted Critical
Publication of CN112256203B publication Critical patent/CN112256203B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了FLASH存储器的写入方法、装置、设备、介质及系统,包括:获取待处理数据;将待处理数据存储到第一缓存区中,判断第一缓存区中的缓存数据量是否达到设定阈值;如果是,则将第一缓存区中的数据转移到第二缓存区中,进入下一步;如果否,就继续将待处理数据存储到第一缓存区中;判断第二缓存区中的缓存数据量是否达到设定阈值,如果是,则将第二缓存区中的数据写入FLASH存储器;如果否,则继续将第一缓存区中的数据转移到第二缓存区中;将第二缓存区中的数据写入FLASH存储器的过程中,当前擦除操作的LUN的逻辑号与当前写操作的LUN的逻辑号呈奇偶对应关系。

Description

FLASH存储器的写入方法、装置、设备、介质及系统
技术领域
本申请涉及信息处理技术领域,特别是涉及FLASH存储器的写入方法、装置、设备、介质及系统。
背景技术
本部分的陈述仅仅是提到了与本申请相关的背景技术,并不必然构成现有技术。
FLASH作为非易失性存储器,在消费者、计算机存储、航空航天等各行各业中均得到了广泛的应用,更因其功耗低、容量大、体积小等特点,在嵌入式系统中得到了用户的青睐。FLASH读写操作一般以页为单位进行,在写数据前需先对块进行擦除操作,FLASH的块擦除操作一般需要2~3ms时间,最长可达7ms时间,极端情况下如遇连续坏块,会导致10-20ms内无法写入数据,造成数据的丢失。这在某些珍贵数据应用场合是不可接收的。
随着数据的增多与工艺的发展,FLASH存储器的密度越来越高,容量起来越大,主流FLASH芯片一般设计有四个逻辑单元(LUN),每两个LUN共用一组片选、控制与数据接口。传统的按块擦除、按页写入的操作方法无法高效发挥该类FLASH的性能优势,解决数据吞吐速率低下的问题。
为了提高数据的写入速度,设计人员一般采用增大缓存的方式,即按照数据输入的速率,设计足够大的缓存对数据进行存储,只要可缓冲数据时间大于20ms(擦除及写入时间),就可避免宝贵数据丢失的问题。但增大缓存的方式需要额外PCB面积和成本,并且在慢速时可能导致最后时刻的数据未写入而丢失。
发明内容
为了解决现有技术的不足,本申请提供了FLASH存储器的写入方法、装置、设备、介质及系统;解决平时数据率低,突发数据率高时,FLASH存储出现数据丢失及增大缓存可能造成的最后时间数据无法写入问题。
第一方面,本申请提供了FLASH存储器的写入方法;
FLASH存储器的写入方法,包括:
获取待处理数据;
将待处理数据存储到第一缓存区中,判断第一缓存区中的缓存数据量是否达到设定阈值;如果是,则将第一缓存区中的数据转移到第二缓存区中,进入下一步;如果否,就继续将待处理数据存储到第一缓存区中;
判断第二缓存区中的缓存数据量是否达到设定阈值,如果是,则将第二缓存区中的数据写入FLASH存储器;如果否,则继续将第一缓存区中的数据转移到第二缓存区中;
将第二缓存区中的数据写入FLASH存储器的过程中,当前擦除操作的LUN的逻辑号与当前写操作的LUN的逻辑号呈奇偶对应关系。
第二方面,本申请提供了FLASH存储器的写入装置;
FLASH存储器的写入装置,包括:
获取模块,其被配置为:获取待处理数据;
第一判断模块,其被配置为:将待处理数据存储到第一缓存区中,判断第一缓存区中的缓存数据量是否达到设定阈值;如果是,则将第一缓存区中的数据转移到第二缓存区中,进入下一步;如果否,就继续将待处理数据存储到第一缓存区中;
第二判断模块,其被配置为:判断第二缓存区中的缓存数据量是否达到设定阈值,如果是,则将第二缓存区中的数据写入FLASH存储器;如果否,则继续将第一缓存区中的数据转移到第二缓存区中;
将第二缓存区中的数据写入FLASH存储器的过程中,当前擦除操作的LUN的逻辑号与当前写操作的LUN的逻辑号呈奇偶对应关系。
第三方面,本申请还提供了一种电子设备,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述第一方面所述的方法。
第四方面,本申请还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成第一方面所述的方法。
第五方面,本申请还提供了一种FLASH存储器的写入系统,包括:
第一缓存区,所述第一缓存区的输入端用于输入待处理数据;
所述第一缓存区的输出端与第二缓存区的输入端连接;
所述第二缓存区的输出端与写控制器连接,所述写控制器与地址管理器连接;所述地址管理器与预擦除管理器连接;
所述预擦除管理器与擦除控制器连接;
所述写控制器分别与FLASH存储器的逻辑单元LUN0、逻辑单元LUN1、逻辑单元LUN2、逻辑单元LUN3连接;
所述擦除控制器分别与FLASH存储器的逻辑单元LUN0、逻辑单元LUN1、逻辑单元LUN2、逻辑单元LUN3连接;
将第二缓存区中的数据写入FLASH存储器的过程中,当前擦除操作的LUN的逻辑号与当前写操作的LUN的逻辑号呈奇偶对应关系。
与现有技术相比,本申请的有益效果是:
在执行LUN0逻辑号写操作过程中,在块地址的首页写操作前,先发送LUN1与LUN3的下一块的擦除命令;在执行LUN1逻辑号写操作过程中,在块地址的首页写操作前,先发送LUN0与LUN2的下一块的擦除命令;让FLASH控制器内部自行执行擦除操作。之后立即将程序交由写控制模块,执行写操作。可以提高数据的写入速度,避免数据丢失。
本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为第五个实施例的系统架构图;
图2为第一个实施例的方法流程图;
图3为第一个实施例的预擦除与写控制流程图;
图4为第一个实施例的LUN逻辑号块排列示意图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步地说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
本实施例提供了FLASH存储器的写入方法;
如图2所示,FLASH存储器的写入方法,包括:
S101:获取待处理数据;
S102:将待处理数据存储到第一缓存区中,判断第一缓存区中的缓存数据量是否达到设定阈值;如果是,则将第一缓存区中的数据转移到第二缓存区中,进入S103;如果否,就继续将待处理数据存储到第一缓存区中;
S103:判断第二缓存区中的缓存数据量是否达到设定阈值,如果是,则将第二缓存区中的数据写入FLASH存储器;如果否,则继续将第一缓存区中的数据转移到第二缓存区中;
将第二缓存区中的数据写入FLASH存储器的过程中,当前擦除操作的LUN的逻辑号与当前写操作的LUN的逻辑号呈奇偶对应关系。
作为一个或多个实施例,如图3所示,所述S103中,将第二缓存区中的数据写入FLASH存储器;具体步骤包括:
将第二缓存区中的待处理数据先写入FLASH存储器的LUN0;
当FLASH存储器的LUN0存储满额后,将待处理数据继续写入FLASH存储器的LUN2;
当FLASH存储器的LUN2存储满额后,将待处理数据继续写入FLASH存储器的LUN1;
当FLASH存储器的LUN1存储满额后,将待处理数据继续写入FLASH存储器的LUN3;
当FLASH存储器的LUN3存储满额后,将待处理数据继续写入FLASH存储器的LUN0;
即:写操作按照LUN0、LUN2、LUN1和LUN3的顺序进行轮转。
进一步地,所述方法还包括预擦除步骤:
当前擦除操作的LUN的逻辑号与当前写操作的LUN的逻辑号呈奇偶对应关系;即:
当待处理数据写入FLASH存储器的LUN0时,预擦除操作执行的对象为FLASH存储器的LUN1和LUN3;
当待处理数据写入FLASH存储器的LUN1时,预擦除操作执行的对象为FLASH存储器的LUN0和LUN2;
当待处理数据写入FLASH存储器的LUN2时,预擦除操作执行的对象为FLASH存储器的LUN1和LUN3;
当待处理数据写入FLASH存储器的LUN3时,预擦除操作执行的对象为FLASH存储器的LUN0和LUN2。
进一步地,所述方法还包括预擦除检查步骤:
步骤(a1):向擦除操作对象为LUN1和LUN3发送预擦除指令;
步骤(a2):判断当前写操作的页地址是否达到M的倍数;
如果未达到M的倍数,则暂不执行检查步骤;
如果达到M的倍数,则执行检查步骤,检查擦除是否成功;
如果成功,则结束当前预擦除操作和检查操作;
如果不成功,则继续判断当前写操作的页地址是否达到N的倍数;
如果达到N的倍数,就对块地址加一,返回步骤(a1);
如果没有达到达到N的倍数,则返回步骤(a2)。
其中,M等于8,N等于32。
进一步地,所述向擦除操作对象为LUN1和LUN3发送预擦除指令,指令发出时机为:在写操作过程中,在当前写操作块第0页时,发送预擦除指令。
进一步地,所述方法还包括预擦除检查步骤:
步骤(b1):向擦除操作对象为LUN0和LUN2发送预擦除指令;
步骤(b2):判断当前写操作的页地址是否达到M的倍数;
如果未达到M的倍数,则暂不执行检查步骤;
如果达到M的倍数,则执行检查步骤,检查擦除是否成功;
如果成功,则结束当前预擦除操作和检查操作;
如果不成功,则继续判断当前写操作的页地址是否达到N的倍数;
如果达到N的倍数,就对块地址加一,返回步骤(b1);
如果没有达到达到N的倍数,则返回步骤(b2)。
进一步地,所述向擦除操作对象为LUN0和LUN2发送预擦除指令,指令发出时机为:在写操作过程中,在当前写操作执行到块的第0页时,发送预擦除指令。
进一步地,所述方法,还包括:初始时刻,根据块地址信息,执行连续两块的擦除任务,并检查擦除成功与否,若成功,则完成启动擦除操作,否则,直至完成两块的擦除工作。
实施例二
本实施例提供了FLASH存储器的写入装置;
FLASH存储器的写入装置,包括:
获取模块,其被配置为:获取待处理数据;
第一判断模块,其被配置为:将待处理数据存储到第一缓存区中,判断第一缓存区中的缓存数据量是否达到设定阈值;如果是,则将第一缓存区中的数据转移到第二缓存区中,进入下一步;如果否,就继续将待处理数据存储到第一缓存区中;
第二判断模块,其被配置为:判断第二缓存区中的缓存数据量是否达到设定阈值,如果是,则将第二缓存区中的数据写入FLASH存储器;如果否,则继续将第一缓存区中的数据转移到第二缓存区中;
将第二缓存区中的数据写入FLASH存储器的过程中,当前擦除操作的LUN的逻辑号与当前写操作的LUN的逻辑号呈奇偶对应关系。
此处需要说明的是,上述获取模块、第一判断模块和第二判断模块对应于实施例一中的步骤S101至S103,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为系统的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
上述实施例中对各个实施例的描述各有侧重,某个实施例中没有详述的部分可以参见其他实施例的相关描述。
所提出的系统,可以通过其他的方式实现。例如以上所描述的系统实施例仅仅是示意性的,例如上述模块的划分,仅仅为一种逻辑功能划分,实际实现时,可以有另外的划分方式,例如多个模块可以结合或者可以集成到另外一个系统,或一些特征可以忽略,或不执行。
实施例三
本实施例还提供了一种电子设备,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述实施例一所述的方法。
应理解,本实施例中,处理器可以是中央处理单元CPU,处理器还可以是其他通用处理器、数字信号处理器DSP、专用集成电路ASIC,现成可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据、存储器的一部分还可以包括非易失性随机存储器。例如,存储器还可以存储设备类型的信息。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。
实施例一中的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本领域普通技术人员可以意识到,结合本实施例描述的各示例的单元及算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
实施例四
本实施例还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成实施例一所述的方法。
实施例五
本实施例还提供了一种FLASH存储器的写入系统;
如图1所示,一种FLASH存储器的写入系统,包括:
第一缓存区,所述第一缓存区的输入端用于输入待处理数据;
所述第一缓存区的输出端与第二缓存区的输入端连接;
所述第二缓存区的输出端与写控制器连接,所述写控制器与地址管理器连接;所述地址管理器与预擦除管理器连接;
所述预擦除管理器与擦除控制器连接;
所述写控制器分别与FLASH存储器的逻辑单元LUN0、逻辑单元LUN1、逻辑单元LUN2、逻辑单元LUN3连接;
所述擦除控制器分别与FLASH存储器的逻辑单元LUN0、逻辑单元LUN1、逻辑单元LUN2、逻辑单元LUN3连接;
将第二缓存区中的数据写入FLASH存储器的过程中,当前擦除操作的LUN的逻辑号与当前写操作的LUN的逻辑号呈奇偶对应关系。
进一步地,所述第一缓存区为数据输入缓存128K;第二缓存区为FLASH页缓存8K。由FPGA内部MDK块构成两级FIFO。
进一步地,第一缓存区与前端接收数据电路相连并不断写入数据,只要第一缓存区大于8K时,第一缓存区就往第二缓存区中搬移数据;写控制器监控第二缓存区的满状态,第二缓存区的存储状态满额时将数据往FLASH相应页中写入数据。
进一步地,所述地址管理器,根据当前操作地址选择擦除和写操作的下一个地址,包括LUN、块地址和页地址,由FPGA内部逻辑单元实现。
进一步地,写操作LUN的管理按LUN0—LUN2—LUN1—LUN3顺序进行轮转。擦除操作的下一个LUN与当前写操作LUN呈奇偶对应关系,即当前写操作为LUN0时,相应擦除操作LUN为LUN1和LUN3,当前写操作为LUN1时,相应擦除操作LUN为LUN0和LUN2。
进一步地,块地址管理根据LUN逻辑号进行一一对应,其对应关系见图4的LUN逻辑号块排列。
进一步地,写操作页地址在块中从0顺序增加至127。当页地址增加至128时,LUN逻辑号与块地址需相应进行改变。
进一步地,所述预擦除管理器,包括启动擦除逻辑、预先擦除逻辑及擦除检查逻辑,由FPGA内部逻辑单元实现。
进一步地,启动擦除逻辑在系统启动时,根据地址管理器给出的本次记录的块地址信息,执行连续两块的擦除任务,并检查擦除成功与否,若成功,则完成启动擦除操作,否则直至完成两块的擦除工作;
进一步地,在写操作过程中,在当前写操作块第0页时,根据地址管理器给出的LUN逻辑号和块地址,执行预先擦除逻辑,指示擦除控制器执行块擦除工作,并做好块擦除标记;
进一步地,写操作过程中,在页地址为8的倍数时执行擦除检查逻辑,检查擦除是否成功,若成功,当前预擦除-检查操作结束;若失败,标注坏块,块地址加一,执行预擦除下一块,直至擦除成功。
进一步地,所述擦除控制器包括片选控制、块地址解析与命令控制及读写时序控制,完成向FLASH控制器发送某块地址的擦除命令交互,以实现对该块的内部擦除操作,为后续写入数据做准备,由FPGA内部逻辑单元实现。擦除控制器前端与预擦除管理器相连,后端与FLASH接口相连。
进一步地,片选控制根据给出的块地址信息选择CE0或CE1;块地址解析与命令控制按照FLASH要求给出命令、地址数据;读写时序负责形成满足FLASH存储器接口时序要求的波形信号。
进一步地,所述写控制器包括片选控制、地址解析与命令控制、读写时序控制及页编程完成检查逻辑,完成向FLASH控制器发送写命令、传输页数据操作,并通过R/B信号检查写数据是否完成,由FPGA内部逻辑单元实现。写控制器与地址管理器、第二缓存区及FLASH接口相连。
进一步地,片选控制根据给出的块地址信息选择CE0或CE1;地址解析与命令控制按照FLASH要求给出页地址、页编程命令;读写时序负责形成满足FLASH存储器接口时序要求的波形信号;页编程完成检查逻辑在编程数据传输完成后执行,连续检查相应R/B信号,如为ready,表示页编程成功,若为busy,继续等待。
某型高密度FLASH存储器其内部包括4个LUN(分别为LUN0、LUN1、LUN2、LUN3),LUN0、LUN1共用一组片选、地址命令控制和IO信号,LUN2、LUN3共用一组片选、地址命令控制和IO信号。
每个LUN包括4096个块,每块含128页,每页空间为8K。典型擦除时间为1.5ms,最大擦除时间为7ms,页编程时间为350us。
每个LUN的控制器可单独执行读、写、擦命令,但同一LUN同一时间只能响应一种命令。
设计第一缓存区为128KB,第二缓存区为8K。均由FPGA内的MDK构建为FIFO,当第一缓存区大于8K时,如果写操作为闲状态,按先入先出顺序将数据搬移至第二缓存区,执行写操作,写操作完成后再检查第一缓存区状态。见缓存控制图。
传统的按块擦除-按页写入方法,数据的写入延迟分为两种情况。
第一种情况:当前编程页不是当前块第一页,延迟时间=缓存搬移时间+页编程时间+其它时间损耗(<2us),当读写时钟为50MHz时,缓存搬移时间0.02*8*1024≈162us,总延迟时间≈350+162≈512us。
第二种情况:在块转换时执行写操作,即当前编程页为块的第一页,延迟时间缓存搬移时间+页编程时间+块擦除时间≈1500+350+162≈2012us,按最大擦除时间计算约为7.51ms,极端情况下,如出现连续坏块,则延迟时间会成倍增加。延迟时间主要消耗在块擦除操作上。
此种情况下,意味着在7.51ms内前端数据不能填满第一缓存区(128KB),也就是说数据速率不能大于128K/(7.51ⅹ10-3)≈17MBps,否则会出现FIFO溢出,数据丢失问题。
本方案采用预擦除逻辑预先对当前操作块的下一块进行擦除,以确保在块转换时机,数据的页写入操作均能在512us以内完成。突破了前端数据的输入速率瓶颈,可达至128K/(0.512ⅹ10-6)≈250MBps。
因LUN0与LUN1共用一组片选和IO信号,因此在执行LUN0逻辑号写操作过程中,在块地址的首页写操作前,先发送LUN1与LUN3的下一块的擦除命令;在执行LUN1逻辑号写操作过程中,在块地址的首页写操作前,先发送LUN0与LUN2的下一块的擦除命令;让FLASH控制器内部自行执行擦除操作。之后立即将程序交由写控制模块,执行写操作。写操作通过R/B信号检查是否完成,擦除操作通过读取状态寄存器检查是否擦除成功。
当写操作地址转换至LUN0与LUN1逻辑号的第n块的第0页地址时,执行预擦除操作,理想情况下写8页的时间为512ⅹ8=4.096ms,在页地址为8时擦除检查逻辑应能得到擦除完成结果。极端情况下,在第24页时因擦除时间(512ⅹ24≈16.3ms)已超过FLASH的最大擦除时间,如果此时检查结果仍为擦除未成功,则在第32页时继续执行擦除下一块操作,以此循环进行,直至擦除成功。因每块含有128页,故而在当前块写满的时间段内,最差也可执行四块(128/32)的擦除操作。这样可有效避免FLASH坏块、连续坏块带来的影响。见图:预擦除与写控制逻辑块号顺序见图4。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (5)

1.FLASH存储器的写入方法,其特征是,包括:
获取待处理数据;
将待处理数据存储到第一缓存区中,判断第一缓存区中的缓存数据量是否达到设定阈值;如果是,则将第一缓存区中的数据转移到第二缓存区中,进入下一步;如果否,就继续将待处理数据存储到第一缓存区中;
判断第二缓存区中的缓存数据量是否达到设定阈值,如果是,则将第二缓存区中的数据写入FLASH存储器;如果否,则继续将第一缓存区中的数据转移到第二缓存区中;
将第二缓存区中的数据写入FLASH存储器的过程中,当前擦除操作的LUN的逻辑号与当前写操作的LUN的逻辑号呈奇偶对应关系;
所述方法还包括预擦除步骤:
当前擦除操作的LUN的逻辑号与当前写操作的LUN的逻辑号呈奇偶对应关系;即:
当待处理数据写入FLASH存储器的LUN0时,预擦除操作执行的对象为FLASH存储器的LUN1和LUN3;
当待处理数据写入FLASH存储器的LUN1时,预擦除操作执行的对象为FLASH存储器的LUN0和LUN2;
当待处理数据写入FLASH存储器的LUN2时,预擦除操作执行的对象为FLASH存储器的LUN1和LUN3;
当待处理数据写入FLASH存储器的LUN3时,预擦除操作执行的对象为FLASH存储器的LUN0和LUN2;
将第二缓存区中的数据写入FLASH存储器;具体步骤包括:
将第二缓存区中的待处理数据先写入FLASH存储器的LUN0;
当FLASH存储器的LUN0存储满额后,将待处理数据继续写入FLASH存储器的LUN2;
当FLASH存储器的LUN2存储满额后,将待处理数据继续写入FLASH存储器的LUN1;
当FLASH存储器的LUN1存储满额后,将待处理数据继续写入FLASH存储器的LUN3;
当FLASH存储器的LUN3存储满额后,将待处理数据继续写入FLASH存储器的LUN0;
即:写操作按照LUN0、LUN2、LUN1和LUN3的顺序进行轮转;
所述方法还包括预擦除检查步骤:
步骤(a1):向擦除操作对象为LUN1和LUN3发送预擦除指令;
步骤(a2):判断当前写操作的页地址是否达到M的倍数;
如果未达到M的倍数,则暂不执行检查步骤;
如果达到M的倍数,则执行检查步骤,检查擦除是否成功;
如果成功,则结束当前预擦除操作和检查操作;
如果不成功,则继续判断当前写操作的页地址是否达到N的倍数;
如果达到N的倍数,就对块地址加一,返回步骤(a1);
如果没有达到N的倍数,则返回步骤(a2);
所述向擦除操作对象为LUN1和LUN3发送预擦除指令,指令发出时机为:在写操作过程中,在当前写操作块第0页时,发送预擦除指令;
预擦除检查步骤还包括:
步骤(b1):向擦除操作对象为LUN0和LUN2发送预擦除指令;
步骤(b2):判断当前写操作的页地址是否达到M的倍数;
如果未达到M的倍数,则暂不执行检查步骤;
如果达到M的倍数,则执行检查步骤,检查擦除是否成功;
如果成功,则结束当前预擦除操作和检查操作;
如果不成功,则继续判断当前写操作的页地址是否达到N的倍数;
如果达到N的倍数,就对块地址加一,返回步骤(b1);
如果没有达到N的倍数,则返回步骤(b2);
其中,M等于8,N等于32;
或者,
所述向擦除操作对象为LUN0和LUN2发送预擦除指令,指令发出时机为:在写操作过程中,在当前写操作执行到块的第0页时,发送预擦除指令;
或者,
所述方法,还包括:初始时刻,根据块地址信息,执行连续两块的擦除任务,并检查擦除成功与否,若成功,则完成启动擦除操作,否则,直至完成两块的擦除工作。
2.FLASH存储器的写入装置,其特征是,包括:
获取模块,其被配置为:获取待处理数据;
第一判断模块,其被配置为:将待处理数据存储到第一缓存区中,判断第一缓存区中的缓存数据量是否达到设定阈值;如果是,则将第一缓存区中的数据转移到第二缓存区中,进入下一步;如果否,就继续将待处理数据存储到第一缓存区中;
第二判断模块,其被配置为:判断第二缓存区中的缓存数据量是否达到设定阈值,如果是,则将第二缓存区中的数据写入FLASH存储器;如果否,则继续将第一缓存区中的数据转移到第二缓存区中;
将第二缓存区中的数据写入FLASH存储器的过程中,当前擦除操作的LUN的逻辑号与当前写操作的LUN的逻辑号呈奇偶对应关系;
将第二缓存区中的数据写入FLASH存储器;具体步骤包括:
将第二缓存区中的待处理数据先写入FLASH存储器的LUN0;
当FLASH存储器的LUN0存储满额后,将待处理数据继续写入FLASH存储器的LUN2;
当FLASH存储器的LUN2存储满额后,将待处理数据继续写入FLASH存储器的LUN1;
当FLASH存储器的LUN1存储满额后,将待处理数据继续写入FLASH存储器的LUN3;
当FLASH存储器的LUN3存储满额后,将待处理数据继续写入FLASH存储器的LUN0;
即:写操作按照LUN0、LUN2、LUN1和LUN3的顺序进行轮转。
3.一种电子设备,其特征是,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述权利要求1所述的方法。
4.一种计算机可读存储介质,其特征是,用于存储计算机指令,所述计算机指令被处理器执行时,完成权利要求1所述的方法。
5.一种FLASH存储器的写入系统,其特征是,包括:
第一缓存区,所述第一缓存区的输入端用于输入待处理数据;
所述第一缓存区的输出端与第二缓存区的输入端连接;
所述第二缓存区的输出端与写控制器连接,所述写控制器与地址管理器连接;所述地址管理器与预擦除管理器连接;
所述预擦除管理器与擦除控制器连接;
所述写控制器分别与FLASH存储器的逻辑单元LUN0、逻辑单元LUN1、逻辑单元LUN2、逻辑单元LUN3连接;
所述擦除控制器分别与FLASH存储器的逻辑单元LUN0、逻辑单元LUN1、逻辑单元LUN2、逻辑单元LUN3连接;
将第二缓存区中的数据写入FLASH存储器的过程中,当前擦除操作的LUN的逻辑号与当前写操作的LUN的逻辑号呈奇偶对应关系;
将第二缓存区中的数据写入FLASH存储器;具体步骤包括:
将第二缓存区中的待处理数据先写入FLASH存储器的LUN0;
当FLASH存储器的LUN0存储满额后,将待处理数据继续写入FLASH存储器的LUN2;
当FLASH存储器的LUN2存储满额后,将待处理数据继续写入FLASH存储器的LUN1;
当FLASH存储器的LUN1存储满额后,将待处理数据继续写入FLASH存储器的LUN3;
当FLASH存储器的LUN3存储满额后,将待处理数据继续写入FLASH存储器的LUN0;
即:写操作按照LUN0、LUN2、LUN1和LUN3的顺序进行轮转。
CN202011154418.XA 2020-10-26 2020-10-26 Flash存储器的写入方法、装置、设备、介质及系统 Active CN112256203B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011154418.XA CN112256203B (zh) 2020-10-26 2020-10-26 Flash存储器的写入方法、装置、设备、介质及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011154418.XA CN112256203B (zh) 2020-10-26 2020-10-26 Flash存储器的写入方法、装置、设备、介质及系统

Publications (2)

Publication Number Publication Date
CN112256203A CN112256203A (zh) 2021-01-22
CN112256203B true CN112256203B (zh) 2023-04-28

Family

ID=74262993

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011154418.XA Active CN112256203B (zh) 2020-10-26 2020-10-26 Flash存储器的写入方法、装置、设备、介质及系统

Country Status (1)

Country Link
CN (1) CN112256203B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113703686A (zh) * 2021-08-31 2021-11-26 潍柴动力股份有限公司 一种数据存储方法、装置及系统
CN114328320A (zh) * 2021-12-30 2022-04-12 北京航天测控技术有限公司 一种dma数据传输方法、装置及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110286853A (zh) * 2019-06-06 2019-09-27 大唐微电子技术有限公司 一种数据写入方法和装置、计算机可读存储介质
CN111782146A (zh) * 2020-06-30 2020-10-16 深圳忆联信息系统有限公司 实现写缓存的方法、装置、计算机设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100433195C (zh) * 2003-12-31 2008-11-12 深圳市朗科科技股份有限公司 闪存介质数据写入方法
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US8583868B2 (en) * 2011-08-29 2013-11-12 International Business Machines Storage system cache using flash memory with direct block access
CN103336727B (zh) * 2013-06-20 2016-06-22 酷丰实业(上海)有限公司 对nand闪存存储设备进行数据操作的方法
CN105930282B (zh) * 2016-04-14 2018-11-06 北京时代民芯科技有限公司 一种用于nand flash的数据缓存方法
KR20180050862A (ko) * 2016-11-07 2018-05-16 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110286853A (zh) * 2019-06-06 2019-09-27 大唐微电子技术有限公司 一种数据写入方法和装置、计算机可读存储介质
CN111782146A (zh) * 2020-06-30 2020-10-16 深圳忆联信息系统有限公司 实现写缓存的方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN112256203A (zh) 2021-01-22

Similar Documents

Publication Publication Date Title
US9122611B2 (en) Method for giving read commands and reading data, and controller and storage system using the same
US6529416B2 (en) Parallel erase operations in memory systems
US8732385B2 (en) Non-volatile memory, controller controlling next access
US8356134B2 (en) Memory device with non-volatile memory buffer
US7937523B2 (en) Memory system with nonvolatile semiconductor memory
US8386699B2 (en) Method for giving program commands to flash memory for writing data according to a sequence, and controller and storage system using the same
US20050055493A1 (en) [method for accessing large block flash memory]
JP4643729B2 (ja) インタリーブ制御装置、インタリーブ制御方法及びメモリシステム
CN109669888A (zh) 一种可配置且高效的嵌入式Nor-Flash控制器及控制方法
JP2007087388A (ja) メモリコントローラ及びそれを含んだデータ処理システム
CN112256203B (zh) Flash存储器的写入方法、装置、设备、介质及系统
US9317445B2 (en) Rapid memory buffer write storage system and method
CN103559146A (zh) 一种提高NAND flash控制器读写速度的方法
CN115080471A (zh) 基于FPGA的nand flash接口控制器及读写方法
JP2006040497A (ja) 半導体記憶装置、不揮発性半導体記憶装置
KR100761374B1 (ko) 플래시 메모리 제어 방법 및 장치
CN110874190A (zh) 闪存控制器及方法
US10282328B2 (en) Apparatus having direct memory access controller and method for accessing data in memory
JP3759707B2 (ja) 不揮発性メモリ、複数個の不揮発性メモリを備えたシステム、及びこのシステムのデータリード方法
US8166228B2 (en) Non-volatile memory system and method for reading and storing sub-data during partially overlapping periods
US8180951B2 (en) Memory system and method of controlling the memory system
CN109935252B (zh) 存储器装置及其操作方法
US20220405215A1 (en) Method for accessing flash memory and flash memory controller and electronic device thereof
US10566062B2 (en) Memory device and method for operating the same
KR101175250B1 (ko) 낸드 플래시 메모리 장치와 그의 컨트롤러 및 이들의 라이트 오퍼레이션 방법

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
GR01 Patent grant
GR01 Patent grant