CN114627938A - 数据写入方法和装置以及存储介质 - Google Patents
数据写入方法和装置以及存储介质 Download PDFInfo
- Publication number
- CN114627938A CN114627938A CN202210258759.4A CN202210258759A CN114627938A CN 114627938 A CN114627938 A CN 114627938A CN 202210258759 A CN202210258759 A CN 202210258759A CN 114627938 A CN114627938 A CN 114627938A
- Authority
- CN
- China
- Prior art keywords
- lun
- page
- pair
- data
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000015654 memory Effects 0.000 claims abstract description 86
- 230000005540 biological transmission Effects 0.000 claims abstract description 34
- 238000004590 computer program Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 10
- 238000012546 transfer Methods 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000012937 correction Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- 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
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/08—Word line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, for word lines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Read Only Memory (AREA)
Abstract
本公开涉及NAND闪存的数据写入方法和装置以及存储介质,该方法包括:配对步骤,用于针对所述NAND闪存的每条通道,对该通道内的所有逻辑单元即LUN进行配对,以使得每个LUN对包括至少两个LUN;以及写入步骤,用于针对每个LUN对,依次对该LUN对中的每个LUN的每个字线所包括的编程模式所对应的多个页面中的一个相同页面进行数据写入,在完成对该LUN对中的所有LUN的该个字线的该相同页面的数据写入之后,依次对该LUN对中的每个LUN的该个字线的该多个页面中的下一相同页面进行数据写入,…,依此类推,直至依次对该LUN对中的每个LUN的该个字线的该多个页面中的最后一个相同页面进行数据写入为止。由此,可以提高NAND总线的传输效率,从而提高NAND闪存的数据写入性能。
Description
技术领域
本公开涉及存储技术领域,尤其涉及一种数据写入方法和装置以及存储介质。
背景技术
固态硬盘(Solid State Drive,简称:SSD)是使用固态电子存储芯片阵列制成的硬盘。SSD可以采用NAND闪存(FLASH)作为存储介质,该SSD可以包括SSD控制器和多个NAND闪存,将SSD控制器和NAND闪存放置在印刷电路板(PCB)上并通过它进行连接。
NAND控制器可以与几个NAND通道(channel)进行通信。每个通道连接到一个或多个CE(Chip Enable,芯片启用)信号,每个CE可以对应于一个或多个逻辑单元(Logic Unit,简称:LUN)。因此,一个通道上可能存在多个LUN。
对于NAND控制器连接到CE组的通道而言,所有目标(target)和LUN共享相同的NAND总线(bus)。因此,NAND总线的传输效率可能影响NAND闪存的数据写入性能(简称写性能)。
发明内容
有鉴于此,本公开提出了一种数据写入方法和装置以及存储介质,以提高NAND总线的传输效率,从而提高NAND闪存的数据写入性能。
根据本公开的第一方面,提供了一种NAND闪存的数据写入方法,应用于NAND控制器,该方法包括:配对步骤,用于针对所述NAND闪存的每条通道,对该通道内的所有逻辑单元即LUN进行配对,以使得每个LUN对包括至少两个LUN;以及写入步骤,用于针对每个LUN对,依次对该LUN对中的每个LUN的每个字线所包括的编程模式所对应的多个页面中的一个相同页面进行数据写入,在完成对该LUN对中的所有LUN的该个字线的该相同页面的数据写入之后,依次对该LUN对中的每个LUN的该个字线的该多个页面中的下一相同页面进行数据写入,…,依此类推,直至依次对该LUN对中的每个LUN的该个字线的该多个页面中的最后一个相同页面进行数据写入为止。
在一种可能的实现方式中,针对所述NAND闪存的每条通道,对该通道内的所有LUN进行配对,以使得每个LUN对包括第一LUN和第二LUN,其中第一LUN和第二LUN的每个字线各自包括LP页面、MP页面和UP页面,针对每个LUN对的每个字线,按照如下方式进行数据写入:对该LUN对中的第一LUN的LP页面进行数据写入;对该LUN对中的第二LUN的LP页面进行数据写入;对该LUN对中的第一LUN的MP页面进行数据写入;对该LUN对中的第二LUN的MP页面进行数据写入;对该LUN对中的第一LUN的UP页面进行数据写入;对该LUN对中的第二LUN的UP页面进行数据写入。
在一种可能的实现方式中,针对所述NAND闪存的每条通道,对该通道内的所有LUN进行配对,以使得每个LUN对包括第一LUN和第二LUN,其中第一LUN和第二LUN的每个字线各自包括LP页面、MP页面、UP页面和TP页面,针对每个LUN对的每个字线,按照如下方式进行数据写入:对该LUN对中的第一LUN的LP页面进行数据写入;对该LUN对中的第二LUN的LP页面进行数据写入;对该LUN对中的第一LUN的MP页面进行数据写入;对该LUN对中的第二LUN的MP页面进行数据写入;对该LUN对中的第一LUN的UP页面进行数据写入;对该LUN对中的第二LUN的UP页面进行数据写入;对该LUN对中的第一LUN的TP页面进行数据写入;对该LUN对中的第二LUN的TP页面进行数据写入。
在一种可能的实现方式中,所述配对步骤包括:针对所述NAND闪存的每条通道,确定LUN对所包括的LUN的数量;对该通道内的所有LUN进行配对,以使得每个LUN对包括所确定的数量个LUN。
在一种可能的实现方式中,确定LUN对所包括的LUN的数量,包括:计算编程缓存忙碌时间相对于数据传输时间的比值;在所述比值小于1的情况下,确定为每个LUN对包括2个LUN;在所述比值等于M的情况下,确定为每个LUN对包括M+1个LUN,其中M为大于1的整数。
根据本公开的第二方面,提供了一种NAND闪存的数据写入装置,应用于NAND控制器,该装置包括:配对模块,用于针对所述NAND闪存的每条通道,对该通道内的所有逻辑单元即LUN进行配对,以使得每个LUN对包括至少两个LUN;以及写入模块,用于针对每个LUN对,依次对该LUN对中的每个LUN的每个字线所包括的编程模式所对应的多个页面中的一个相同页面进行数据写入,在完成对该LUN对中的所有LUN的该个字线的该相同页面的数据写入之后,依次对该LUN对中的每个LUN的该个字线的该多个页面中的下一相同页面进行数据写入,…,依此类推,直至依次对该LUN对中的每个LUN的该个字线的该多个页面中的最后一个相同页面进行数据写入为止。
在一种可能的实现方式中,所述配对模块被配置为:针对所述NAND闪存的每条通道,对该通道内的所有LUN进行配对,以使得每个LUN对包括第一LUN和第二LUN,其中第一LUN和第二LUN的每个字线各自包括LP页面、MP页面和UP页面,所述写入模块被配置为:针对每个LUN对的每个字线,按照如下方式进行数据写入:对该LUN对中的第一LUN的LP页面进行数据写入;对该LUN对中的第二LUN的LP页面进行数据写入;对该LUN对中的第一LUN的MP页面进行数据写入;对该LUN对中的第二LUN的MP页面进行数据写入;对该LUN对中的第一LUN的UP页面进行数据写入;对该LUN对中的第二LUN的UP页面进行数据写入。
在一种可能的实现方式中,所述配对模块被配置为:针对所述NAND闪存的每条通道,对该通道内的所有LUN进行配对,以使得每个LUN对包括第一LUN和第二LUN,其中第一LUN和第二LUN的每个字线各自包括LP页面、MP页面、UP页面和TP页面,所述写入模块被配置为:针对每个LUN对的每个字线,按照如下方式进行数据写入:对该LUN对中的第一LUN的LP页面进行数据写入;对该LUN对中的第二LUN的LP页面进行数据写入;对该LUN对中的第一LUN的MP页面进行数据写入;对该LUN对中的第二LUN的MP页面进行数据写入;对该LUN对中的第一LUN的UP页面进行数据写入;对该LUN对中的第二LUN的UP页面进行数据写入;对该LUN对中的第一LUN的TP页面进行数据写入;对该LUN对中的第二LUN的TP页面进行数据写入。
在一种可能的实现方式中,所述配对模块被配置为:针对所述NAND闪存的每条通道,确定LUN对所包括的LUN的数量;对该通道内的所有LUN进行配对,以使得每个LUN对包括所确定的数量个LUN。
在一种可能的实现方式中,所述配对模块被配置为:计算编程缓存忙碌时间相对于数据传输时间的比值;在所述比值小于1的情况下,确定为每个LUN对包括2个LUN;在所述比值等于M的情况下,确定为每个LUN对包括M+1个LUN,其中M为大于1的整数。
根据本公开的第三方面,提供了一种数据写入装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述方法。
根据本公开的第四方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
根据本公开的数据写入方法和装置以及存储介质,先对NAND闪存的每条通道内的所有LUN进行配对,然后针对每个LUN对依次交替进行数据传输,这样,即使tPCBSY较短也不浪费,在一个LUN短暂的忙碌期间,可以进行LUN对中的其余LUN的数据传输,因此有效利用了较短的tPCBSY交替进行数据传输,由此,可以提高NAND总线的传输效率,从而提高NAND闪存的数据写入性能,甚至可以使得NAND闪存的数据写入性能更接近极限水平。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1a是根据一示例性实施例示出的正常情况下的SSD的数据写入示例图。
图1b是根据一示例性实施例示出的大容量的SSD的数据写入示例图。
图1c是根据一示例性实施例示出的一种数据写入方法的流程图。
图1d是根据一示例性实施例示出的采用本实施例的数据写入方法对大容量的SSD进行数据写入后的数据写入示例图。
图2是根据一示例性实施例示出的一种数据写入方法的流程图。
图3是根据一示例性实施例示出的一种数据写入方法的流程图。
图4是根据一示例性实施例示出的一种数据写入方法的流程图。
图5是根据一示例性实施例示出的一种数据写入装置的框图。
图6是根据一示例性实施例示出的一种数据写入装置的框图。
图7是根据一示例性实施例示出的一种数据写入装置的系统架构框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
应能够理解,每个LUN可以包括一个或多个平面(plane),每个平面可以包括多个区块(block),每个区块可以包括多个字线(word line,简称WL),每个字线可以包括一个或多个页面(page)。例如,每个NAND闪存可以包括2个目标,每个目标可以包括1个LUN,该LUN可以包括2个平面,每个平面可以包括1478个区块,每个区块可以包括768个页面。又如,每个NAND闪存可以包括4个目标,每个目标可以包括2个LUN,每个LUN可以包括2个平面,每个平面可以包括4096个区块,每个区块可以包括256个页面。
NAND闪存的编程模式(program mode)可以包括单层级单元(Single-Level Cell,简称SLC)模式、多层级单元(Multi-Level Cell,简称MLC)模式、三层级单元(Triple-LevelCell,简称TLC)模式、四层级单元(Quadruple-Level Cell,简称QLC)模式。当以SLC模式进行编程(program)时,每次编程需要对1个页面进行编程;当以MLC模式进行编程时,每次编程需要对2个页面进行编程;当以TLC模式进行编程时,每次编程需要对LP(low page)页面、MP(middle page)页面和UP(upper page)页面这3个页面同时进行编程;当以QLC模式进行编程时,每次编程需要对LP页面、MP页面、UP页面和TP(top page)页面这4个页面同时进行编程。
以TCL为例,每个字线可以包括LP页面、MP页面和UP页面这3个页面。以QLC为例,每个字线可以包括LP页面、MP页面、UP页面和TP页面这4个页面。
以TLC模式编程为例,在对LP页面和MP页面进行编程之后存在一个编程缓存忙碌时间(Program Cache Busy Time,简称tPCBSY),tPCBSY比较短,一般小于5微秒(us),相对地,在对UP页面进行编程之后存在一个编程操作时间(Program Operation Time,简称tPROG),tPROG比较长,可能为2或3毫秒(ms)。
由于每条通道上可能连接有多个目标,每个目标可能包括一个或多个LUN,因此,一个通道上可能有多个目标和多个LUN,这多个目标和多个LUN共享相同的NAND总线。针对每个LUN的每个WL,都需要依次对LP页面/MP页面/UP页面进行编程。
相关技术中,假设每个LUN包括WL1、WL2、WL3…WLN-1、WLN个字线,则先按照LP页面/MP页面/UP页面的顺序来编程一个LUN的WL1,然后按照LP页面/MP页面/UP页面的顺序来编程下一个LUN的WL1,接着按照LP页面/MP页面/UP页面的顺序来编程下下一个LUN的WL1,直至遍历完所有的LUN为止;然后开始按照LP页面/MP页面/UP页面的顺序来编程一个LUN的WL2,然后按照LP页面/MP页面/UP页面的顺序来编程下一个LUN的WL2,接着按照LP页面/MP页面/UP页面的顺序来编程下下一个LUN的WL2,直至遍历完所有的LUN为止;然后开始按照LP页面/MP页面/UP页面的顺序来编程一个LUN的WL3,然后按照LP页面/MP页面/UP页面的顺序来编程下一个LUN的WL3,接着按照LP页面/MP页面/UP页面的顺序来编程下下一个LUN的WL3,直至遍历完所有的LUN为止;…,依此类推,直至遍历完所有的LUN的WLN为止。
然而,当需要支持大容量SSD时,或者在NAND总线的传输速度较慢的情况下,在LP页面的编程和MP页面的编程之间,以及在MP页面的编程和UP页面的编程之间(如果以QLC模式编程,则还在UP页面的编程和TP页面的编程之间)存在一段忙碌(busy)的时间(tPCBSY),而在这段忙碌时间内并没有进行数据传输,即NAND总线被闲置。
在NAND总线不是NAND闪存的性能瓶颈(例如,NAND闪存的容量相对较小、LUN的数量相对较少、或者NAND总线的传输速度相对较快)的情况下,NAND总线的传输效率应能够满足NAND闪存的数据写入性能的要求,因而可能没有提高NAND总线的传输效率的必要。
示例性的,假设NAND闪存的一条通道上有LUN0、LUN1、LUN2和LUN3这4个LUN(即,LUN的数量相对较少),则,如图1a所示,对这4个LUN的每个字线按照如下方式进行编程:对LUN0的LP页面进行编程;对LUN0的MP页面进行编程;对LUN0的UP页面进行编程;对LUN1的LP页面进行编程;对LUN1的MP页面进行编程;对LUN1的UP页面进行编程;对LUN2的LP页面进行编程;对LUN2的MP页面进行编程;对LUN2的UP页面进行编程;对LUN3的LP页面进行编程;对LUN3的MP页面进行编程;对LUN3的UP页面进行编程。因此,tPCBSY对NAND闪存的性能影响不是很大,相对地,tPROG是NAND闪存的性能影响较大、即tPROG是NAND闪存的性能瓶颈,因此,即使NAND总线空等tPCBSY这一小段时间也是没有关系的。
然而,在NAND总线成为NAND闪存的性能瓶颈(例如,NAND闪存的容量过大、LUN的数量过多和/或NAND总线的传输速度过慢)的情况下,NAND总线的传输效率可能无法满足NAND闪存的数据写入性能的要求,因此NAND总线的效率有待提高,NAND闪存的数据写入性能有待改进。
示例性的,假设NAND闪存的一条通道上有LUN0、LUN1、LUN2、LUN3、LUN4、LUN5、LUN6、LUN7这8个LUN(即,LUN的数量相对较多),则,如图1b所示,对这8个LUN的每个字线按照如下方式进行编程:对LUN0的LP页面进行编程;对LUN0的MP页面进行编程;对LUN0的UP页面进行编程;对LUN1的LP页面进行编程;对LUN1的MP页面进行编程;对LUN1的UP页面进行编程;对LUN2的LP页面进行编程;对LUN2的MP页面进行编程;对LUN2的UP页面进行编程;对LUN3的LP页面进行编程;对LUN3的MP页面进行编程;对LUN3的UP页面进行编程;对LUN4的LP页面进行编程;对LUN4的MP页面进行编程;对LUN4的UP页面进行编程;对LUN5的LP页面进行编程;对LUN5的MP页面进行编程;对LUN5的UP页面进行编程;对LUN6的LP页面进行编程;对LUN6的MP页面进行编程;对LUN6的UP页面进行编程;对LUN7的LP页面进行编程;对LUN7的MP页面进行编程;对LUN7的UP页面进行编程。
参照图1b,在LP页面和MP页面之间的忙碌时间,NAND控制器在等待NAND总线,NAND总线被闲置而未传输数据。同时,由于LUN的数量较多,一个字线例如WLN对应的一个LUN的传输数据所对应的时间与下一个字线例如WLN+1对应的该一个LUN的传输数据所对应的时间之间的间隔时间较长,该间隔时间超过了tPROG,而LUN还需要等待NAND总线的传输,即NAND阵列(array)内部未进行数据写入操作。
因此,在不同的时刻可能发生NAND总线和NAND阵列互相等待的现象,即,NAND总线未传输数据且NAND阵列内部未进行数据写入操作,从而可能导致NAND闪存的数据写入性能不够理想。
为此,本公开提出一种数据写入方法和装置以及存储介质,以提高NAND总线的传输效率,从而提高NAND闪存的数据写入性能。
图1c示出根据本公开一实施例的NAND闪存的数据写入方法的流程图,该数据写入方法可以应用于NAND闪存的NAND控制器。如图1c所示,该数据写入方法可以包括如下步骤:
在步骤S110中,针对所述NAND闪存的每条通道,对该通道内的所有LUN进行配对,以使得每个LUN对包括至少两个LUN。该步骤对应于配对步骤。
本实施例中,每条通道上有多个LUN,可以按照预定的配对方式对每条通道上的所有LUN进行分组,每一组LUN可称为一个LUN对(LUN pair),每个LUN对中可以包括两个或更多个LUN。
在一种可能的实现方式中,预定的配对方式包括对每条通道上的所有LUN进行分组以使得每一组LUN包括2个LUN。示例性的,对于图1b所示的NAND闪存而言,一条通道上有LUN0、LUN1、LUN2、LUN3、LUN4、LUN5、LUN6、LUN7这8个LUN,按照该预定的配对方式对该条通道所包括的该8个LUN进行分组,可将这8个LUN分组为4个LUN对,这4个LUN对为:由LUN0和LUN1构成的第一LUN对、由LUN2和LUN3构成的第二LUN对、由LUN4和LUN5构成的第三LUN对、由LUN6和LUN7构成的第四LUN对。
在一种可能的实现方式中,预定的配对方式包括对每条通道上的所有LUN进行分组以使得每一组LUN包括预定数量个LUN,其中该预定数量与tPCBSY有关。示例性的,对于图1b所示的NAND闪存而言,按照该预定的配对方式对该条通道所包括的该8个LUN进行分组,可将这8个LUN分组为(8/预定数量)个LUN对,假设预定数量为4,则可以将这8个LUN分组为2个LUN对,这2个LUN对为:由LUN0、LUN1、LUN2和LUN3构成的第一LUN对、由LUN4、LUN5、LUN6和LUN7构成的第二LUN对。
在对通道内的所有LUN进行配对之后,执行下述步骤S130。
在步骤S130中,针对每个LUN对,依次对该LUN对中的每个LUN的每个字线所包括的编程模式所对应的多个页面中的同一页面进行数据写入,在完成对该LUN对中的所有LUN的该个字线的该相同页面的数据写入之后,依次对该LUN对中的每个LUN的该个字线的该多个页面中的下一相同页面进行数据写入,…,依此类推,直至依次对该LUN对中的每个LUN的该个字线的该多个页面中的最后一个相同页面进行数据写入为止。该步骤对应于写入步骤。
本实施例中,针对每个LUN对,依次对该LUN对中的每个LUN的每个字线所包括的编程模式所对应的多个页面中的第1个页面进行数据写入,在完成对该LUN对中的所有LUN的该个字线的第1个页面的数据写入之后,依次对该LUN对中的每个LUN的该个字线的该多个页面中的第2个页面进行数据写入,在完成对该LUN对中的所有LUN的该个字线的第2个页面的数据写入之后,依次对该LUN对中的每个LUN的该个字线的该多个页面中的第3个页面进行数据写入…依此类推,直至完成对该LUN对中的每个LUN的该个字线的该多个页面中的最后一个页面的数据写入为止。
每个字线所包括的编程模式所对应的页面(即上述多个页面)的数量依据NAND闪存的编程模式而不同,对于TLC模式而言,每个字线所包括的页面的数量为3个,这3个页面分别为LP页面、MP页面和UP页面,对于QLC模式而言,每个字线所包括的页面的数量为4个,这4个页面分别为LP页面、MP页面、UP页面和TP页面。
在一种可能的实现方式中,针对所述NAND闪存的每条通道,对该通道内的所有LUN进行配对,以使得每个LUN对包括第一LUN和第二LUN,其中第一LUN和第二LUN的每个字线各自包括LP页面、MP页面和UP页面,针对每个LUN对的每个字线,按照如下方式进行数据写入:对该LUN对中的第一LUN的LP页面进行数据写入;对该LUN对中的第二LUN的LP页面进行数据写入;对该LUN对中的第一LUN的MP页面进行数据写入;对该LUN对中的第二LUN的MP页面进行数据写入;对该LUN对中的第一LUN的UP页面进行数据写入;对该LUN对中的第二LUN的UP页面进行数据写入。
参阅图2,在步骤S210中,针对NAND闪存的每条通道,可以按照对该条通道上的所有LUN进行分组以使得每一组LUN包括2个LUN的配对方式来对该通道内的所有LUN进行配对,以使得每个LUN对包括第一LUN和第二LUN,并且采用TLC模式进行编程,因此第一LUN和第二LUN的每个字线各自包括LP页面、MP页面和UP页面。相应地,在步骤S230中,可以按照如下方式来对每个LUN的每个字线对进行数据写入:依次对该LUN对中的第一LUN和第二LUN的LP页面进行数据写入;依次对该LUN对中的第一LUN和第二LUN的MP页面进行数据写入;依次对该LUN对中的第一LUN和第二LUN的UP页面进行数据写入。
继续上述示例,对于图1b所示的NAND闪存而言,假设将一条通道上的LUN0、LUN1、LUN2、LUN3、LUN4、LUN5、LUN6、LUN7这8个LUN按照预定的配对方式分组为由LUN0和LUN1构成的第一LUN对、由LUN2和LUN3构成的第二LUN对、由LUN4和LUN5构成的第三LUN对、由LUN6和LUN7构成的第四LUN对,并且采用TLC模式进行编程,则可以按照如下方式进行数据写入:
针对第一LUN对的每个字线,对第一LUN对中的LUN0的LP页面进行数据写入,然后对第一LUN对中的LUN1的LP页面进行数据写入,对第一LUN对中的LUN0的MP页面进行数据写入,然后对第一LUN对中的LUN1的MP页面进行数据写入,对第一LUN对中的LUN0的UP页面进行数据写入,然后对第一LUN对中的LUN1的UP页面进行数据写入;
针对第二LUN对的每个字线,对第二LUN对中的LUN2的LP页面进行数据写入,然后对第二LUN对中的LUN3的LP页面进行数据写入,对第二LUN对中的LUN2的MP页面进行数据写入,然后对第二LUN对中的LUN3的MP页面进行数据写入,对第二LUN对中的LUN2的UP页面进行数据写入,然后对第二LUN对中的LUN3的UP页面进行数据写入;
针对第三LUN对的每个字线,对第三LUN对中的LUN4的LP页面进行数据写入,然后对第三LUN对中的LUN5的LP页面进行数据写入,对第三LUN对中的LUN4的MP页面进行数据写入,然后对第三LUN对中的LUN5的MP页面进行数据写入,对第三LUN对中的LUN4的UP页面进行数据写入,然后对第三LUN对中的LUN5的UP页面进行数据写入;
针对第四LUN对的每个字线,对第四LUN对中的LUN6的LP页面进行数据写入,然后对第四LUN对中的LUN7的LP页面进行数据写入,对第四LUN对中的LUN6的MP页面进行数据写入,然后对第四LUN对中的LUN7的MP页面进行数据写入,对第四LUN对中的LUN6的UP页面进行数据写入,然后对第四LUN对中的LUN7的UP页面进行数据写入。
由此,针对第一LUN对、第二LUN对、第三LUN对和第四LUN对的每个字线各自依次交替进行数据传输,这样,在tPCBSY期间,可以进行LUN对中的另一个LUN的数据传输,从而可以有效利用LP页面和MP页面之间的短暂的忙碌时间以及MP页面和UP页面之间的短暂的忙碌时间,进而能够提高NAND总线的传输效率,借此可以提高NAND闪存的数据写入性能。
相较于采用现有技术中的数据写入方式进行数据写入(其数据写入示意图可参阅图1b),采用本实施例的数据写入方法对大容量的SSD进行数据写入,参阅图1d,LUN对依次交替进行数据传输,即使tPCBSY较短也不浪费,在一个LUN短暂的忙碌期间,可以传输LUN对的数据,因此有效利用了较短的tPCBSY交替进行数据传输,由此,可以提高NAND总线的传输效率,从而提高NAND闪存的数据写入性能。
在一种可能的实现方式中,针对所述NAND闪存的每条通道,对该通道内的所有LUN进行配对,以使得每个LUN对包括第一LUN和第二LUN,其中第一LUN和第二LUN的每个字线各自包括LP页面、MP页面、UP页面和TP页面,针对每个LUN对的每个字线,按照如下方式进行数据写入:对该LUN对中的第一LUN的LP页面进行数据写入;对该LUN对中的第二LUN的LP页面进行数据写入;对该LUN对中的第一LUN的MP页面进行数据写入;对该LUN对中的第二LUN的MP页面进行数据写入;对该LUN对中的第一LUN的UP页面进行数据写入;对该LUN对中的第二LUN的UP页面进行数据写入;对该LUN对中的第一LUN的TP页面进行数据写入;对该LUN对中的第二LUN的TP页面进行数据写入。
参阅图3,在步骤S310中,针对NAND闪存的每条通道,可以按照对该条通道上的所有LUN进行分组以使得每一组LUN包括2个LUN的配对方式来对该通道内的所有LUN进行配对,以使得每个LUN对包括第一LUN和第二LUN,并且采用QLC模式进行编程,因此第一LUN和第二LUN的每个字线各自包括LP页面、MP页面、UP页面和TP页面。相应地,在步骤S330中,可以按照如下方式来对每个LUN对的每个字线进行数据写入:依次对该LUN对中的第一LUN和第二LUN的LP页面进行数据写入;依次对该LUN对中的第一LUN和第二LUN的MP页面进行数据写入;依次对该LUN对中的第一LUN和第二LUN的UP页面进行数据写入;依次对该LUN对中的第一LUN和第二LUN的TP页面进行数据写入。
继续上述示例,假设将一条通道上的LUN0、LUN1、LUN2、LUN3、LUN4、LUN5、LUN6、LUN7这8个LUN按照预定的配对方式分组为由LUN0和LUN1构成的第一LUN对、由LUN2和LUN3构成的第二LUN对、由LUN4和LUN5构成的第三LUN对、由LUN6和LUN7构成的第四LUN对,并且采用QLC模式进行编程,则可以按照如下方式进行数据写入:
针对第一LUN对的每个字线,对第一LUN对中的LUN0的LP页面进行数据写入,然后对第一LUN对中的LUN1的LP页面进行数据写入,对第一LUN对中的LUN0的MP页面进行数据写入,然后对第一LUN对中的LUN1的MP页面进行数据写入,对第一LUN对中的LUN0的UP页面进行数据写入,然后对第一LUN对中的LUN1的UP页面进行数据写入,对第一LUN对中的LUN0的TP页面进行数据写入,然后对第一LUN对中的LUN1的TP页面进行数据写入;
针对第二LUN对的每个字线,对第二LUN对中的LUN2的LP页面进行数据写入,然后对第二LUN对中的LUN3的LP页面进行数据写入,对第二LUN对中的LUN2的MP页面进行数据写入,然后对第二LUN对中的LUN3的MP页面进行数据写入,对第二LUN对中的LUN2的UP页面进行数据写入,然后对第二LUN对中的LUN3的UP页面进行数据写入,对第二LUN对中的LUN2的TP页面进行数据写入,然后对第二LUN对中的LUN3的TP页面进行数据写入;
针对第三LUN对的每个字线,对第三LUN对中的LUN4的LP页面进行数据写入,然后对第三LUN对中的LUN5的LP页面进行数据写入,对第三LUN对中的LUN4的MP页面进行数据写入,然后对第三LUN对中的LUN5的MP页面进行数据写入,对第三LUN对中的LUN4的UP页面进行数据写入,然后对第三LUN对中的LUN5的UP页面进行数据写入,对第三LUN对中的LUN4的TP页面进行数据写入,然后对第三LUN对中的LUN5的TP页面进行数据写入;
针对第四LUN对的每个字线,对第四LUN对中的LUN6的LP页面进行数据写入,然后对第四LUN对中的LUN7的LP页面进行数据写入,对第四LUN对中的LUN6的MP页面进行数据写入,然后对第四LUN对中的LUN7的MP页面进行数据写入,对第四LUN对中的LUN6的UP页面进行数据写入,然后对第四LUN对中的LUN7的UP页面进行数据写入,对第四LUN对中的LUN6的TP页面进行数据写入,然后对第四LUN对中的LUN7的TP页面进行数据写入。
由此,针对第一LUN对、第二LUN对、第三LUN对和第四LUN对的每个字线各自依次交替进行数据传输,这样,在tPCBSY期间,可以进行LUN对中的另一个LUN的数据传输,从而可以有效利用LP页面和MP页面之间的短暂的忙碌时间、MP页面和UP页面之间的短暂的忙碌时间、以及UP页面和TP页面之间的短暂的忙碌时间,进而能够提高NAND总线的传输效率,借此可以提高NAND闪存的数据写入性能。
因此,根据本实施例的数据写入方法,先对NAND闪存的每条通道内的所有LUN进行配对,然后针对每个LUN对的每个字线依次交替进行数据传输,这样,即使tPCBSY较短也不浪费,在一个LUN短暂的忙碌期间,可以进行LUN对中的其余LUN的数据传输,因此有效利用了较短的tPCBSY交替进行数据传输,由此,可以提高NAND总线的传输效率,从而提高NAND闪存的数据写入性能,甚至可以使得NAND闪存的数据写入性能更接近极限水平。
在一种可能的实现方式中,可以采用如下方式来对通道内的所有LUN进行配对:针对所述NAND闪存的每条通道,确定LUN对所包括的LUN的数量;对该通道内的所有LUN进行配对,以使得每个LUN对包括所确定的数量个LUN。
本实施例中,要用于配对的配对方式与配对后的LUN对所包括的LUN的数量有关,因此,可以根据要用于配对的配对方式来确定LUN对所包括的LUN的数量。示例性的,假设要用于配对的配对方式为对每条通道上的所有LUN进行分组以使得每一组LUN包括2个LUN,则可以根据该配对方式确定出LUN对所包括的LUN的数量为2。然后,可以将该通道内的该数量个相邻的LUN配成一个LUN对。继续该示例,可以将同一个通道内的每2个LUN配对。配对的具体示例可以参阅前文关于步骤S110的描述,在此不再赘述。
在一种可能的实现方式中,可以采用如下方式来确定LUN对所包括的LUN的数量:计算编程缓存忙碌时间(tPCBSY)相对于数据传输时间的比值;在所述比值小于1的情况下,确定为每个LUN对包括2个LUN;在所述比值等于M的情况下,确定为每个LUN对包括M+1个LUN,其中M为大于1的整数。
参阅图4,可以通过执行步骤S410、S420和S430来确定LUN对所包括的LUN的数量。具言之,可以计算tPCBSY与数据传输时间的比值;判断该比值是小于1还是大于1;如果该比值小于1,则表示数据传输时间大于tPCBSY,两两配对即可,因此LUN对所包括的LUN的数量为2。通常,tPCBSY较短,一般小于5微妙,其是小于数据传输时间的,因此两两配对是合适的。
如果该比值大于1,例如tPCBSY=M倍的数据传输时间,则使M+1个LUN配对,即LUN对所包括的LUN的数量为M+1。由此,在tPCBSY期间,可以进行M个LUN的数据传输。
图5是根据一示例性实施例示出的一种数据写入装置的框图。该数据写入装置500可以应用于NAND闪存的NAND控制器。如图5所示,该数据写入装置500可以包括配对模块510和写入模块520。
配对模块510用于针对所述NAND闪存的每条通道,对该通道内的所有逻辑单元即LUN进行配对,以使得每个LUN对包括至少两个LUN。写入模块520与配对模块510连接,用于针对每个LUN对,依次对该LUN对中的每个LUN的每个字线所包括的编程模式所对应的多个页面中的一个相同页面进行数据写入,在完成对该LUN对中的所有LUN的该个字线的该相同页面的数据写入之后,依次对该LUN对中的每个LUN的该个字线的该多个页面中的下一相同页面进行数据写入,…,依此类推,直至依次对该LUN对中的每个LUN的该个字线的该多个页面中的最后一个相同页面进行数据写入为止。
在一种可能的实现方式中,所述配对模块510可以被配置为:针对所述NAND闪存的每条通道,对该通道内的所有LUN进行配对,以使得每个LUN对包括第一LUN和第二LUN,其中第一LUN和第二LUN的每个字线各自包括LP页面、MP页面和UP页面,所述写入模块520可以被配置为:针对每个LUN对的每个字线,按照如下方式进行数据写入:对该LUN对中的第一LUN的LP页面进行数据写入;对该LUN对中的第二LUN的LP页面进行数据写入;对该LUN对中的第一LUN的MP页面进行数据写入;对该LUN对中的第二LUN的MP页面进行数据写入;对该LUN对中的第一LUN的UP页面进行数据写入;对该LUN对中的第二LUN的UP页面进行数据写入。
在一种可能的实现方式中,所述配对模块510可以被配置为:针对所述NAND闪存的每条通道,对该通道内的所有LUN进行配对,以使得每个LUN对包括第一LUN和第二LUN,其中第一LUN和第二LUN的每个字线各自包括LP页面、MP页面、UP页面和TP页面,所述写入模块520可以被配置为:针对每个LUN对的每个字线,按照如下方式进行数据写入:对该LUN对中的第一LUN的LP页面进行数据写入;对该LUN对中的第二LUN的LP页面进行数据写入;对该LUN对中的第一LUN的MP页面进行数据写入;对该LUN对中的第二LUN的MP页面进行数据写入;对该LUN对中的第一LUN的UP页面进行数据写入;对该LUN对中的第二LUN的UP页面进行数据写入;对该LUN对中的第一LUN的TP页面进行数据写入;对该LUN对中的第二LUN的TP页面进行数据写入。
在一种可能的实现方式中,所述配对模块510可以被配置为:针对所述NAND闪存的每条通道,确定LUN对所包括的LUN的数量;对该通道内的所有LUN进行配对,以使得每个LUN对包括所确定的数量个LUN。
在一种可能的实现方式中,所述配对模块510可以被配置为:计算编程缓存忙碌时间相对于数据传输时间的比值;在所述比值小于1的情况下,确定为每个LUN对包括2个LUN;在所述比值等于M的情况下,确定为每个LUN对包括M+1个LUN,其中M为大于1的整数。
图6是根据一示例性实施例示出的一种数据写入装置的框图。参照图6,该数据写入装置600可包括处理器601、存储有机器可执行指令的机器可读存储介质602。处理器601与机器可读存储介质602可经由系统总线603通信。并且,处理器601通过读取机器可读存储介质602中与数据写入装置的数据写入方法对应的机器可执行指令以执行上文所述的数据写入方法。
本文中提到的机器可读存储介质602可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
图7是根据一示例性实施例示出的一种数据写入装置的系统架构框图。请参阅图7,该系统可以包括:CPU子系统710、DDR_TOP 720、PMU 730、AXI FABRIC 740、NCB 750、BTN760、SRAM 770、PCIe PHY 780、PCIe MAC 790、NVMe 791。
其中,CPU子系统710可以包括4Cortex R5 711和外设712,4Cortex R5 711是ARMCPU,可用于运行相应的软件,外设712可以与SPI/UART/SMB连接。SPI(Serial PeripheralInterface)表示串行外设接口,CPU子系统710可通过SPI外接SPI FLASH。UART(UniversalAsynchronous Receiver/Transmitter)表示通用异步收发传输器,SMB(SystemManagement Bus)表示系统管理总线,SMB可用于调试。
DDR_TOP 720是DDR(Double Data Rate,双倍速率)存储控制器,用于管理DDR内存,DDR_TOP 720可以经由DDR I/F(interface,接口)外接DDR内存,并对DDR内存进行管理。AXI(Advanced eXtensible Interface,先进可扩展接口)FABRIC 740是AXI总线,用于将各个模块连接起来。示例性的,可以经由AXI FABRIC 740将DDR_TOP 720与BTN 760连接起来。BTN(Buffer Table NAND,NAND缓存器表)760用于管理SRAM 770中的dtag(Data tag,数据标签),SRAM 770是可以存放程序和数据的一块存储器,大概几兆。SRAM 770中划分一部分存储器以存储主机(host)数据,该数据一般是4KB左右,每个dtag表示一个4KB的存储单位。
PMU(Power Management Unit)730是电源管理单元,当空闲的时候,由主机触发PMU 730或者PMU 730自行触发,以进入低功耗模式,从而实现低功耗。PCIe(peripheralcomponent interconnect express,外围组件快速互连)PHY(physical layer,物理层)780和PCIe MAC(media access control,媒体访问控制)790是前端接口的部分,也就是连接到主板插槽的部分。NVMe(Non-Volatile Memory express,非易失性存储器标准)791是前端NVMe协议的处理部分。
NCB(NAND Control Block)750表示NAND控制块,其可以包括ECCU 751、FICU 752和NDCU 753,其中,ECCU(Error Correction&Control Unit)751表示错误校正控制单元,主要用于在对数据进行编解码时进行ECC纠错,这是因为,考虑到写入至NAND闪存中的数据可能存在错误位(error bit),因此,假如对写入至NAND闪存中的数据进行ECC奇偶校验(ECCparity)、循环冗余校验(CRC)等处理,则在从NAND闪存中读取出所写入的数据时,可以进行解码检错,如果检测到存在错误,则进行ECC纠错。
FICU(Flash Instruction Control Unit)752表示闪存指令控制单元,主要用于固件和NCB硬件之间的沟通,更多的是使用更抽象的指令进行固件和NCB硬件之间的沟通。FICU 752可以用于解析这些抽象的指令,如果完成对这些抽象的指令的解析,则FICU 752可以进行固件命令完成的通知。
NDCU(NAND Control Unit)753表示NAND控制单元,换言之,NDCU753可以对应于NAND控制器,其主要用于配置NAND协议、发送相应的命令、进行与信号有关的一些配置等处理。请参阅图7,NCB 750还对应配置有通道0、通道1…通道6和通道7共8个通道。当然,应能够理解,NCB 750还可配置其它数量个通道,受篇幅所限,不再展开。针对每个通道的配置及描述,可以参阅前文关于通道的描述,在此不再赘述。
应能够理解,本实施例的数据写入方法和装置可以用于图7所示的系统,在一种可能的实现方式中,在运行该系统时,该数据写入方法和装置可应用于该系统中的NDCU 753中,从而可以提高NAND总线的传输效率,进而可以提高NAND闪存的数据写入性能。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在数据写入装置的处理器中运行时,所述数据写入装置中的处理器执行上述数据写入方法。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (12)
1.一种NAND闪存的数据写入方法,应用于NAND控制器,其特征在于,包括:
配对步骤,用于针对所述NAND闪存的每条通道,对该通道内的所有逻辑单元即LUN进行配对,以使得每个LUN对包括至少两个LUN;以及
写入步骤,用于针对每个LUN对,依次对该LUN对中的每个LUN的每个字线所包括的编程模式所对应的多个页面中的一个相同页面进行数据写入,在完成对该LUN对中的所有LUN的该个字线的该相同页面的数据写入之后,依次对该LUN对中的每个LUN的该个字线的该多个页面中的下一相同页面进行数据写入,…,依此类推,直至依次对该LUN对中的每个LUN的该个字线的该多个页面中的最后一个相同页面进行数据写入为止。
2.根据权利要求1所述的数据写入方法,其特征在于,
针对所述NAND闪存的每条通道,对该通道内的所有LUN进行配对,以使得每个LUN对包括第一LUN和第二LUN,其中第一LUN和第二LUN的每个字线各自包括LP页面、MP页面和UP页面,
针对每个LUN对的每个字线,按照如下方式进行数据写入:
对该LUN对中的第一LUN的LP页面进行数据写入;
对该LUN对中的第二LUN的LP页面进行数据写入;
对该LUN对中的第一LUN的MP页面进行数据写入;
对该LUN对中的第二LUN的MP页面进行数据写入;
对该LUN对中的第一LUN的UP页面进行数据写入;
对该LUN对中的第二LUN的UP页面进行数据写入。
3.根据权利要求1所述的数据写入方法,其特征在于,
针对所述NAND闪存的每条通道,对该通道内的所有LUN进行配对,以使得每个LUN对包括第一LUN和第二LUN,其中第一LUN和第二LUN的每个字线各自包括LP页面、MP页面、UP页面和TP页面,
针对每个LUN对的每个字线,按照如下方式进行数据写入:
对该LUN对中的第一LUN的LP页面进行数据写入;
对该LUN对中的第二LUN的LP页面进行数据写入;
对该LUN对中的第一LUN的MP页面进行数据写入;
对该LUN对中的第二LUN的MP页面进行数据写入;
对该LUN对中的第一LUN的UP页面进行数据写入;
对该LUN对中的第二LUN的UP页面进行数据写入;
对该LUN对中的第一LUN的TP页面进行数据写入;
对该LUN对中的第二LUN的TP页面进行数据写入。
4.根据权利要求1-3中任一项所述的数据写入方法,其特征在于,所述配对步骤包括:
针对所述NAND闪存的每条通道,确定LUN对所包括的LUN的数量;
对该通道内的所有LUN进行配对,以使得每个LUN对包括所确定的数量个LUN。
5.根据权利要求4所述的数据写入方法,其特征在于,确定LUN对所包括的LUN的数量,包括:
计算编程缓存忙碌时间相对于数据传输时间的比值;
在所述比值小于1的情况下,确定为每个LUN对包括2个LUN;
在所述比值等于M的情况下,确定为每个LUN对包括M+1个LUN,其中M为大于1的整数。
6.一种NAND闪存的数据写入装置,应用于NAND控制器,其特征在于,包括:
配对模块,用于针对所述NAND闪存的每条通道,对该通道内的所有逻辑单元即LUN进行配对,以使得每个LUN对包括至少两个LUN;以及
写入模块,用于针对每个LUN对,依次对该LUN对中的每个LUN的每个字线所包括的编程模式所对应的多个页面中的一个相同页面进行数据写入,在完成对该LUN对中的所有LUN的该个字线的该相同页面的数据写入之后,依次对该LUN对中的每个LUN的该个字线的该多个页面中的下一相同页面进行数据写入,…,依此类推,直至依次对该LUN对中的每个LUN的该个字线的该多个页面中的最后一个相同页面进行数据写入为止。
7.根据权利要求6所述的数据写入装置,其特征在于,
所述配对模块被配置为:针对所述NAND闪存的每条通道,对该通道内的所有LUN进行配对,以使得每个LUN对包括第一LUN和第二LUN,其中第一LUN和第二LUN的每个字线各自包括LP页面、MP页面和UP页面,
所述写入模块被配置为:针对每个LUN对的每个字线,按照如下方式进行数据写入:
对该LUN对中的第一LUN的LP页面进行数据写入;
对该LUN对中的第二LUN的LP页面进行数据写入;
对该LUN对中的第一LUN的MP页面进行数据写入;
对该LUN对中的第二LUN的MP页面进行数据写入;
对该LUN对中的第一LUN的UP页面进行数据写入;
对该LUN对中的第二LUN的UP页面进行数据写入。
8.根据权利要求6所述的数据写入装置,其特征在于,
所述配对模块被配置为:针对所述NAND闪存的每条通道,对该通道内的所有LUN进行配对,以使得每个LUN对包括第一LUN和第二LUN,其中第一LUN和第二LUN的每个字线各自包括LP页面、MP页面、UP页面和TP页面,
所述写入模块被配置为:针对每个LUN对的每个字线,按照如下方式进行数据写入:
对该LUN对中的第一LUN的LP页面进行数据写入;
对该LUN对中的第二LUN的LP页面进行数据写入;
对该LUN对中的第一LUN的MP页面进行数据写入;
对该LUN对中的第二LUN的MP页面进行数据写入;
对该LUN对中的第一LUN的UP页面进行数据写入;
对该LUN对中的第二LUN的UP页面进行数据写入;
对该LUN对中的第一LUN的TP页面进行数据写入;
对该LUN对中的第二LUN的TP页面进行数据写入。
9.根据权利要求6-8中任一项所述的数据写入装置,其特征在于,所述配对模块被配置为:
针对所述NAND闪存的每条通道,确定LUN对所包括的LUN的数量;
对该通道内的所有LUN进行配对,以使得每个LUN对包括所确定的数量个LUN。
10.根据权利要求9所述的数据写入装置,其特征在于,所述配对模块被配置为:
计算编程缓存忙碌时间相对于数据传输时间的比值;
在所述比值小于1的情况下,确定为每个LUN对包括2个LUN;
在所述比值等于M的情况下,确定为每个LUN对包括M+1个LUN,其中M为大于1的整数。
11.一种数据写入装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的指令时,实现权利要求1-5中任意一项所述的数据写入方法。
12.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1-5中任意一项所述的数据写入方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210258759.4A CN114627938A (zh) | 2022-03-16 | 2022-03-16 | 数据写入方法和装置以及存储介质 |
US17/831,126 US20230297282A1 (en) | 2022-03-16 | 2022-06-02 | Data writing method and apparatus, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210258759.4A CN114627938A (zh) | 2022-03-16 | 2022-03-16 | 数据写入方法和装置以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114627938A true CN114627938A (zh) | 2022-06-14 |
Family
ID=81902378
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210258759.4A Pending CN114627938A (zh) | 2022-03-16 | 2022-03-16 | 数据写入方法和装置以及存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230297282A1 (zh) |
CN (1) | CN114627938A (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI424435B (zh) * | 2009-08-31 | 2014-01-21 | Phison Electronics Corp | 對快閃記憶體下達程式化指令的方法、控制器與儲存系統 |
US8473947B2 (en) * | 2010-01-18 | 2013-06-25 | Vmware, Inc. | Method for configuring a physical adapter with virtual function (VF) and physical function (PF) for controlling address translation between virtual disks and physical storage regions |
JP5547154B2 (ja) * | 2011-09-21 | 2014-07-09 | 株式会社東芝 | メモリ・デバイス |
WO2015025358A1 (ja) * | 2013-08-20 | 2015-02-26 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの制御方法 |
US10102138B2 (en) * | 2015-10-22 | 2018-10-16 | Western Digital Technologies, Inc. | Division of data storage in single-storage device architecture |
US11216189B2 (en) * | 2019-04-01 | 2022-01-04 | Silicon Motion, Inc. | Method and computer program product for reading partial data of a page on multiple planes |
US11216364B2 (en) * | 2020-02-18 | 2022-01-04 | Micron Technology, Inc. | Sequential read optimization in a memory sub-system that programs sequentially |
US11762552B2 (en) * | 2021-03-15 | 2023-09-19 | Everspin Technologies, Inc. | Systems and methods for NOR page write emulation mode in serial STT-MRAM |
US11868649B2 (en) * | 2022-01-28 | 2024-01-09 | Micron Technology, Inc. | Memory systems for secure sequential storage devices |
-
2022
- 2022-03-16 CN CN202210258759.4A patent/CN114627938A/zh active Pending
- 2022-06-02 US US17/831,126 patent/US20230297282A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230297282A1 (en) | 2023-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
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 | |
US8812784B2 (en) | Command executing method, memory controller and memory storage apparatus | |
US8234466B2 (en) | Flash memory storage system applying SLC NAND flash memory and MLC NAND flash memory and data writing method thereof | |
US8898375B2 (en) | Memory controlling method, memory controller and memory storage apparatus | |
CN109992202B (zh) | 数据存储设备、其操作方法以及包括其的数据处理系统 | |
US10902928B2 (en) | Memory system, operation method thereof, and nonvolatile memory device | |
KR20190102778A (ko) | 전자 장치 및 그것의 동작 방법 | |
US11681462B2 (en) | Memory system, operating method thereof and computing system | |
CN112185440B (zh) | 存储器接口、数据存储设备及其操作方法 | |
US11748025B2 (en) | Nonvolatile memory device, data storage device including the same and operating method thereof | |
US20220229775A1 (en) | Data storage device and operating method thereof | |
KR20190032104A (ko) | 비휘발성 메모리 장치, 비휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법 | |
KR20190019721A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US20210149796A1 (en) | Data storage device and operating method thereof | |
KR102469098B1 (ko) | 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 이를 포함하는 데이터 저장 장치 | |
CN112201296A (zh) | 控制器、存储器系统及其操作方法 | |
TWI752838B (zh) | 電子裝置、記憶體系統及傳送方法 | |
CN114627938A (zh) | 数据写入方法和装置以及存储介质 | |
US11157401B2 (en) | Data storage device and operating method thereof performing a block scan operation for checking for valid page counts | |
US11194512B2 (en) | Data storage device which selectively performs a cache read or a normal read operation depending on work load and operating method thereof | |
CN114546254A (zh) | 写入数据的方法和非易失性存储器装置 | |
CN110100236A (zh) | 数据读取方法及闪存设备 | |
CN113468082A (zh) | 用于ssd的总线多路复用器网格的高级ce编码 | |
KR20190070092A (ko) | 메모리 시스템 및 그것의 동작 방법 | |
US11954347B2 (en) | Memory system and operating method thereof |
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: Room 601-606, No. 40, Lane 565, Shengxia Road, Pudong New Area Free Trade Zone, Shanghai, October 2012 (nominal 6th floor, actual 5th floor) Applicant after: Yingren Technology Co.,Ltd. Address before: 201210 6th floor, No. 40, Lane 565, shengxia Road, Pudong New Area, Shanghai Applicant before: Yingren Technology (Shanghai) Co.,Ltd. |
|
CB02 | Change of applicant information |