CN111813326B - 具多数据流写入的固态存储装置及其相关写入方法 - Google Patents
具多数据流写入的固态存储装置及其相关写入方法 Download PDFInfo
- Publication number
- CN111813326B CN111813326B CN201910298304.3A CN201910298304A CN111813326B CN 111813326 B CN111813326 B CN 111813326B CN 201910298304 A CN201910298304 A CN 201910298304A CN 111813326 B CN111813326 B CN 111813326B
- Authority
- CN
- China
- Prior art keywords
- data
- data stream
- work
- writing
- job
- 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
- 238000000034 method Methods 0.000 title claims abstract description 32
- 239000007787 solid Substances 0.000 claims abstract description 21
- 230000005540 biological transmission Effects 0.000 claims 4
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
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
- 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
- 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/0611—Improving I/O performance in relation to response time
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0656—Data buffering arrangements
Abstract
一种固态存储装置的写入方法,包括下列步骤:将一缓冲器区分为多个区域,并对应至多个数据流;接收该主机的该写入指令,根据该写入指令中的该数据流信息,将该数据流信息所对应的一写入数据存储于该缓冲器中的一对应区域;根据一编程数据量,将该缓冲器中每一该区域中的写入数据分为多个群组;将该些区域中,每一该群组分配一编程指令成为一工作,并排入一数据流工作连接表;以及根据该数据流工作连接表的内容,将每一数据流所对应的工作传递至一非易失性存储器。
Description
技术领域
本发明是有关于一种固态存储装置及其写入方法,且特别是有关于一种具多数据流写入的固态存储装置及其相关写入方法。
背景技术
众所周知,固态存储装置(Solid State Drive,简称SSD)使用非易失性存储器(non-volatile memory)为主要存储元件。也就是说,当数据写入非易失性存储器后,一旦系统电源关闭,数据仍保存在固态存储装置中。
请参照图1A,其所示为习知固态存储装置的示意图。固态存储装置100中包括一控制电路120、一缓冲器130与一非易失性存储器150。其中,非易失性存储器150由多个晶粒(die)11~14组合而成。这些晶粒11~14可为与非门快闪晶粒(NAND flash die)。再者,缓冲器130可为动态随机存取存储器(DRAM),或其它类型的易失性存储器。此外,缓冲器130除了设置于固态存储装置100内之外,亦可设置于主机(host)110内。
在固态存储装置100外部,控制电路120利用一外部总线115与主机(host)110之间进行指令与数据的传递。其中,外部总线115可为USB总线、SATA总线、PCIe总线、M.2总线或者U.2总线等等。
在固态存储装置100内部,控制电路120连接至缓冲器130与非易失性存储器150。控制电路120根据主机110所发出的写入指令先将主机110的写入数据暂时存储于缓冲区130。之后,控制电路120再将暂存于缓冲器130中的写入数据转存入非易失性存储器150。
或者,控制电路120根据主机110所发出的读取指令由非易失性存储器150中取得读取数据,再传递至主机110。
请参照图1B,其所示为非易失性存储器中晶粒的架构。晶粒160中包括多个区块(block)BLK0~BLKx,每个区块又包括多个页(page)Page_0~Page_y。举例来说,一个晶粒中有1024个区块,每个区块有256页,每个页可以存储16K字节(16K bytes)的数据。
基本上,非易失性存储器150的每一个晶粒每次仅能够执行一个运算指令(operation command),其中运算指令可为编程运算(program operation)、读取运算(readoperation)或者抹除运算(erase operation)。举例来说,当晶粒160的区块BLK_1中的页Page_1正在执行编程运算(program operation)时,晶粒160为忙碌状态(busy)。此时,晶粒160无法再执行其他的运算指令。
一般而言,非易失性存储器150的晶粒是以页为单位来进行编程运算以及读取运算。另外,非易失性存储器150的晶粒是以区块为单位来进行抹除运算。
再者,为了让固态存储装置有更高的写入速度与写入效率,一般会进一步将多个晶粒中具有相对应地址的各个区块组成超级区块(superblock)。此外,每个超级区块的多个区块中具有相对应地址的各个页可组成超级页(superpage)。再者,在多平面(multi-plane)的晶粒架构中,每个晶粒可选择单一或多个对应于平面(plane)的区块来组成超级区块(superblock)。
举例来说,非易失性存储器由p个晶粒所组成,每个晶粒内有q个区块,每个区块内有r个页。在2平面(2-plane)的晶粒架构中,可由p个晶粒各提供二个实体区块(physicalblock)即组成一个超级区块,所以非易失性存储器中一个超级区块是由2p个实体区块所组成,且2p个实体区块分别属于p个晶粒。由于每个晶粒中有q个区块,且每个晶粒各提供二个实体区块,因此非易失性存储器中共有q/2个超级区块。另外,每个超级区块中会有r个超级页,每个超级页由2p个实体页(physical page)所组成,且2p个实体页分别属于p个实体区块。
以图1A的非易失性存储器150且2平面(2-plane)的晶粒架构为例,各晶粒11~14中的实体区块BLK_0与BLK_1可组成一个超级区块,而各晶粒11~14中的实体区块BLK_2与BLK_3可组成另一个超级区块,以此类推。此外,在实体区块BLK_0与BLK_1所组成的超级区块中,各实体区块BLK_0与BLK_1中的页Page_0可组成一个超级页,而各实体区块BLK_0与BLK_1中页Page_2可组成另一个超级页,以此类推。在此状况下,控制电路120是以超级页为单位来进行编程运算以及读取运算。另外,控制电路120是以超级区块为单位来进行抹除运算。当晶粒11~14中每个页可以存储16K字节(16K bytes)的数据时,超级页的容量即为2×4×16K字节(128K bytes)。
一般而言,在同一时间中,控制电路120仅会从多个超级区块中指定单一个超级区块作为开启超级区块(open superblock),用以进行编程运算。其他未被指定为开启超级区块的超级区块在当下无法用来进行编程运算。因此,习知主机传送至固态存储装置的写入数据是没有分类的。亦即,主机传送的写入数据中会包含热数据(hot data)与冷数据(colddata),并被存储于非易失性存储器的同一个超级区块中。其中,热数据为时常更新的数据,而冷数据为几乎不会更新的数据。例如,主机持续在运算的数据可视为热数据,而主机的作业系统档案(OS file)可视为冷数据。
如此,当同一个超级区块中同时存储热数据与冷数据时,将会造成控制电路需时常进行无用信息搜集(garbage collection,GC)动作以及损耗平均(wear leveling,WL)动作,而使得非易失性存储器的寿命减损。
为了要解决上述问题,主机在传递写入数据时,可以根据写入数据的特性提供不同的数据流(stream)至固态存储装置。而在同一时间中,固态存储装置可指定多个超级区块作为开启超级区块,以将不同数据流中的写入数据分别存储至固态存储装置中的不同开启超级区块。
然而,由于每个超级区块中的多个区块是分属各个晶粒,且每个晶粒每次仅能够执行一个运算指令,因此在同时设定多个超级区块作为开启超级区块用以分别存储不同数据流时,将会遇到不同数据流需要写入同一晶粒的不同区块,或是某一晶粒没有数据流写入而处于闲置的状况,如此将造成在处理多数据流的写入数据时,会使得控制电路的写入速度与写入效能降低,因此提升具多数据流写入的固态存储装置的写入速度与写入效能为本发明所欲解决的主要问题。
发明内容
本发明有关于一种固态存储装置的写入方法,该固态存储装置连接至一主机,该主机发出的一写入指令中包括一数据流信息,该方法包括下列步骤:将一缓冲器区分为多个区域,并对应至多个数据流;接收该主机的该写入指令,根据该写入指令中的该数据流信息,将该数据流信息所对应的一写入数据存储于该缓冲器中的一对应区域;根据一编程数据量,将该缓冲器中每一该区域中的写入数据分为多个群组;将该些区域中,每一该群组分配一编程指令成为一工作,并排入一数据流工作连接表;以及根据该数据流工作连接表的内容,将每一数据流所对应的工作传递至一非易失性存储器。
本发明有关于一种固态存储装置的写入方法,该固态存储装置连接至一主机,该方法包括下列步骤:将一缓冲器区分为多个区域,并对应至多个数据流;接收该主机的一第一写入数据,并该第一写入数据存储于该缓冲器中的一第一区域;根据该固态存储装置的一内部操作产生一第二写入数据,并该第二写入数据存储于该缓冲器中的一第二区域;根据一编程数据量,将该缓冲器中该第一区域及该第二区域中的该第一写入数据及该第二写入数据分为多个群组;将该第一区域及该第二区域中,每一该群组分配一编程指令成为一工作,并排入一数据流工作连接表;以及根据该数据流工作连接表的内容,将每一数据流所对应的工作传递至一非易失性存储器。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1A为固态存储装置的示意图。
图1B为非易失性存储器中晶粒的架构。
图2为以晶粒为工作单位的非易失性存储器架构。
图3为以记忆库为工作单位的非易失性存储器架构。
图4A为本发明具多数据流写入的固态存储装置。
图4B本发明固态存储装置的多数据流写入方法流程图。
图5A与图5B分别为数据流工作连结表以及工作调度流程图。
具体实施方式
下面结合附图对本发明的结构原理和工作原理作具体的描述:
请参照图2,其所示为以晶粒为工作单位(by die)的非易失性存储器架构。如图2所示,非易失性存储器250包括8个晶粒20~27,并利用4个通道(channel)CH0~CH3以及每个通道各2个晶粒致能信号(chip enable signal)CE0、CE1来控制非易失性存储器250。因此,由非易失性存储器250所组成的固态存储装置称为4通道与2致能信号的固态存储装置(4CH,2CE SSD)。
基本上,每个通道都可独立运作,并传递对应的运算指令。以编程运算为例,可通过动作致能信号CE0使晶粒20被致能(enable),并利用通道CH0来控制对应的晶粒20执行对应的编程指令。
再者,为了让固态存储装置有更高的写入速度与写入效率,各晶粒20~27中具有相对应地址的各个区块可组成超级区块(superblock)。此外,每个超级区块的多个区块中具有相对应地址的各个页可组成超级页(superpage)。再者,在多平面(multi-plane)的晶粒架构中,每个晶粒可选择单一或多个对应于平面(plane)的区块来组成超级区块(superblock)。
在多数据流的写入操作中,至少二个超级区块会被设定为开启超级区块(opensuperblock),用以分别对应至少二个数据流并存储对应数据流的写入数据。换句话说,每个数据流具有各自对应的开启超级区块,并可同时将各自的写入数据编程至对应的开启超级区块。
在以晶粒为工作单位的非易失性存储器架构中,其是以晶粒的单位编程数据量来组成一个工作(job),进而对对应开启超级区块中的晶粒区块进行页编程运算。举例来说,晶粒中每页的数据量为16Kbytes,因此,即可以16Kbytes为编程数据量来将写入数据分为多个群组的编程数据。或者,在多平面的晶粒架构中,则可以Mx16Kbytes为编程数据量来将写入数据分为多个群组的编程数据,其中每个晶粒选择M个对应于平面(plane)的区块来组成超级区块。接着,将每一个群组对应地分配一个编程指令成为一个工作,并对应地分配至对应开启超级区块的晶粒区块。
请参照图3,其所示为以记忆库(bank)为工作单位(by bank)的非易失性存储器架构。如图3所示,非易失性存储器350包括32个晶粒30~67,并利用8个通道CH0~CH7以及每个通道各4个晶粒致能信号CE0~CE3来控制非易失性存储器350。因此,由非易失性存储器350所组成的固态存储装置称为8通道与4致能信号的固态存储装置(8CH,4CE SSD)。
另外,为了增加数据处理量,根据致能信号CE0而运作的8个晶粒30~37可进一步组合成一记忆库bank0。同理,对应致能信号CE1的8个晶粒40~47可组合成记忆库bank1,以此类推。
同样地,为了让固态存储装置有更高的写入速度与写入效率,各晶粒30~67中具有相对应地址的各个区块可组成超级区块(superblock)。此外,每个超级区块的多个区块中具有相对应地址的各个页可组成超级页(superpage)。再者,在多平面(multi-plane)的晶粒架构中,每个晶粒可选择单一或多个对应于平面(plane)的区块来组成超级区块(superblock)。
同样地,在多数据流的写入操作中,非易失性存储器350中的至少二个超级区块会被设定为开启超级区块(open superblock),用以分别对应至少二个数据流并存储对应数据流的写入数据。换句话说,每个数据流具有各自对应的开启超级区块,并可同时将各自的写入数据编程至对应的开启超级区块。
在以记忆库为工作单位的非易失性存储器架构中,其是以记忆库的单位编程数据量来组成一个工作(job),进而对对应开启超级区块中的记忆库进行编程运算。举例来说,一个记忆库中共有8个页,其数据量为128Kbytes(8×16Kbytes),因此,即可以128Kbytes为编程数据量来将写入数据分为多个群组的编程数据。或者,在多平面的晶粒架构中,则可以Mx128Kbytes为编程数据量来将写入数据分为多个群组的编程数据,其中每个晶粒选择M个对应于平面(plane)的区块来组成超级区块。接着,将每一个群组对应地分配一个编程指令成为一个工作,并对应地分配至对应开启超级区块的记忆库。
再者,在多数据流的写入操作中,各数据流是各自独立地对其对应的开启超级区块进行编程运算。换句话说,各数据流会各自组成对应的工作(job),以对其对应的开启超级区块进行编程运算。再者,在对其对应的开启超级区块进行编程运算时,由于非易失性存储器的特性,其是以超级页为单位来进行编程运算。
请参照图4A,其所示为本发明具多数据流写入的固态存储装置。固态存储装置400包括一控制电路410、一缓冲器412与一非易失性存储器450。固态存储装置400的非易失性存储器450包括32个晶粒430~467,共组成4个记忆库bank0~bank3。再者,控制电路410利用8个通道CH0~CH7以及4个晶粒致能信号CE0~CE3来控制非易失性存储器450。因此,固态存储装置400为8通道与4致能信号的固态存储装置(8CH,4CE SSD)。
当然,本发明并不限定非易失性存储器中晶粒的架构,固态存储装置也可以是4通道与2致能信号的固态存储装置(4CH,2CE SSD),或其他的固态存储装置。本发明也不限定是以晶粒为工作单位,也可以记忆库为工作单位,或是其他的工作单位。再者,由于工作单位的单位编程数据量会因实际的非易失性存储器架构及/或晶粒架构设计而有所不同,因此本发明并不限定工作单位的单位编程数据量。以下以8通道与4致能信号的固态存储装置(8CH,4CE SSD)为例来说明。
根据本发明的实施例,主机(未示出)连接至固态存储装置400。且主机(未示出)发出的写入指令中可包括一数据流信息(stream information),因此控制电路410可根据数据流信息来确认写入数据所属的数据流,并将不同数据流的写入数据存储于非易失性存储器450内的不同开启超级区块,即其各自对应的开启超级区块。
此外,控制电路410除了可根据数据流信息来产生多数据流的写入数据之外,控制电路410亦可根据固态存储装置400的内部操作来产生多数据流的写入数据。举例来说,控制电路410对非易失性存储器450进行无用信息搜集(garbage collection)操作时,其搜集的有效数据可规划成另一数据流的写入数据,并与主机传递的单一或多数据流的写入数据,集合成多数据流的写入数据,并将不同数据流的写入数据存储于非易失性存储器450内的不同开启超级区块,即其各自对应的开启超级区块。换句话说,无用信息搜集操作所搜集的有效数据将独立地被存储于对应的超级区块中。再者,本发明的固态存储装置400的内部操作并不限于无用信息搜集操作。
在本发明实施例中,固态存储装置400为具x条数据流写入的固态存储装置,而缓冲器412中会区分为多个区域A1~Ax。另外,控制电路410中更包括一个数据流工作连结表(stream job link list)416用以管理所有数据流所对应的工作。
请参照图4B,其所示为本发明固态存储装置的多数据流写入方法流程图。首先,将缓冲器412区分为多个区域,并对应至不同的数据流(步骤S420)。
接着,控制电路410接收主机发出的写入指令,并根据写入指令中的数据流信息,将写入数据暂存于缓冲器412中对应的区域(步骤S421)。此外,控制电路410亦可将固态存储装置400中对应内部操作所产生的写入数据规划成数据流,并将写入数据暂存于缓冲器412中对应的区域。
举例来说,当主机的发出数据流信息1的写入指令时,控制电路410确认接收的写入数据属于第一数据流,并将第一数据流的写入数据暂存于缓冲器412内的第一区域A1。同理,当主机的发出数据流信息x-1的写入指令时,控制电路410确认接收的写入数据属于第x-1数据流,并将第x-1数据流的写入数据暂存于缓冲器412内的第x-1区域Ax-1。此外,当控制电路410进行固态存储装置400的内部操作,并确认对应上述内部操作所产生的写入数据是属于第x数据流时,控制电路410将第x数据流的写入数据暂存于缓冲器412内的第x区域Ax。
再者,控制电路410会各别处理缓冲器412中不同区域A1~Ax内的写入数据。亦即,控制电路410会根据编程数据量,将缓冲器412中每一个区域A1~Ax的写入数据分为多个群组(步骤S422)。在本发明实施例中,编程数据量是根据工作单位的单位编程数据量来决定。由于工作单位的单位编程数据量会因实际的非易失性存储器架构或晶粒架构设计而有所不同,因此本发明并不限定工作单位的单位编程数据量。
举例来说,假设晶粒中每页的数据量为16Kbytes,则控制电路410可以16Kbytes为编程数据量并将缓冲器412中每个区域A1~Ax对应的写入数据分为多个群组的编程数据。或者,假设一个记忆库的数据量为128Kbytes(8×16Kbytes),则控制电路410可以128Kbytes为编程数据量并将缓冲器412中每个区域A1~Ax对应的写入数据分为多个群组的编程数据。或者,在多平面的晶粒架构中,控制电路410可以Mx16Kbytes或Mx128Kbytes为编程数据量,其中每个晶粒选择M个对应于平面(plane)的区块来组成超级区块。
接着,控制电路410将每个区域A1~Ax中,每一个群组对应地分配一个编程指令成为一个工作,并排入数据流工作连结表(stream job link list)(步骤S424)。
之后,根据数据流工作连接表的内容,控制电路410将不同数据流的工作经由通道传递至非易失性存储器450中的不同开启超级区块(步骤S426)。
以下以4个数据流为例来说明本发明固态存储装置400的数据流工作连结表416及其工作调度流程。请参照图5A与图5B,其分别示出数据流工作连结表以及工作调度流程图。
由于非易失性存储器的特性,在对开启超级区块进行编程运算时,是以超级页为单位,且当一个超级页完成编程后,才可进行下一个超级页的编程。假设控制电路410是以一个记忆库的编程数据量来组成一个工作。由于非易失性存储器450中有4个记忆库bank0~bank3,所以控制电路410会以4个工作为一个循环。亦即,每个数据流中的4个工作可以编程一个开启超级区块中的一个超级页。例如,针对每个数据流的写入数据,一个循环的工作0(job0)~工作3(job3)分别对应至记忆库bank0~bank3以编程一个开启超级区块中的一个超级页,而下一个循环的工作0(job0)~工作3(job3)分别对应至记忆库bank0~bank3以编程同一个开启超级区块中的下一个超级页。
如图5A所示,数据流工作连结表中第一数据流stream1字段中有工作0(job0)尚未处理;第二数据流stream2字段中有工作2(job2)、工作3(job3)、工作0(job0)尚未处理;第三数据流stream3字段中有工作3(job3)、工作0(job0)、工作1(job1)尚未处理;第四数据流stream4字段中有工作1(job1)、工作2(job2)尚未处理。
其中,第二数据流stream2字段中,工作2(job2)与工作3(job3)为开启超级区块中同一超级页的数据,且分别用以对记忆库bank2与记忆库bank3进行编程,而工作0(job0)为开启超级区块中下一超级页的数据,且用以对记忆库bank0进行编程。同理,第三数据流stream3字段中,工作3(job3)为另一开启超级区块中一超级页的数据,且用以对记忆库bank3进行编程,而工作0(job0)与工作1(job1)为另一开启超级区块中下一超级页的数据,且分别用以对记忆库bank0与记忆库bank1进行编程。
另外,当一个工作被传递至非易失性存储器450后,该工作即被移出数据流工作连接表。当后续新的工作产生时,会接续地排列于数据流工作连接表中对应的数据流字段。
根据上述,在数据流工作连结表中,每个数据流(stream1~stream3)分别对应一开启超级区块,每个数据流(stream1~stream3)的数据存储于其对应的开启超级区块。每个数据流(stream1~stream3)的写入数据是根据一工作单位(记忆库或晶粒)的编程数据量来组成一个工作,因此,每个工作(job0~job3)分别对应一工作单位(记忆库或晶粒),并用以对其对应的工作单位(记忆库或晶粒)进行编程。再者,每个数据流(stream1~stream3)中,一个循环中的所有工作(job0~job3)对应一超级页的编程,亦即,完成一个循环中的所有工作(job0~job3)便代表完成一个超级页的编程。
为了提升写入速度与写入效能,根据本发明的实施例,控制电路410会先根据数据流工作连接表中选定数据流字段内所排列的工作次序,将所有的工作依序传递至非易失性存储器450。之后,控制电路410会在其他数据流中决定新选定数据流。其中,新选定数据流的决定条件取决于目前的选定数据流中最后一个工作的工作编号。
其中,如果其他数据流中有一特定数据流,其排在第一位工作的工作编号与目前的选定数据流中最后工作的工作编号为连续工作编号,则该特定数据流被决定为新选定数据流。
图5B中,N包含由0开始递增并对应于一个循环的工作数的多个数值。根据图4A中8通道与4致能信号的固态存储装置400的结构,可以4个工作为一个循环,即一个循环的工作数为4。因此,图5B中,MOD(N+1,4)代表将(N+1)除以一个循环的工作数后的余数。亦即,N会由0递增至3后,再次变更至0,并依此类推。
如图5B所示,控制电路410将选定数据流字段中的工作N传递至非易失性存储器(步骤S502)。接着,将控制电路410将N递增(步骤S504)。接着,控制电路410判断选定数据流字段中是否还有工作N(步骤S506)。
于确认选定数据流字段中有工作N时,则进行步骤S502。于确认选定数据流字段中已无工作N时,控制电路410判断其他数据流字段中是否有排在第一位的工作N(步骤S510)。
于确认有一特定数据流字段有排在第一位的工作N时(步骤S510),控制电路410决定该特定数据流为新选定数据流(步骤S514),并进行步骤S502。反之,当控制电路410确认没有任何数据流字段有排在第一位的工作N时(步骤S510),则将N递增(步骤S512),并进行步骤S510,继续寻找新选定数据流。
以下以图5A的数据流工作连接表为例,来说明图5B的工作调度流程。首先,假设选定数据流为第二数据流stream2,控制电路410将选定数据流(第二数据流stream2)字段的工作2(job2),亦即N=2,传递至非易失性存储器450(步骤S502)。接着,N改变为3(步骤S504)。
控制电路410接着判断选定数据流(第二数据流stream2)字段内还有工作3(job3),亦即N=3(步骤S506)。所以控制电路410将选定数据流(第二数据流stream2)字段的工作3(job3),亦即N=3,传递至非易失性存储器450(步骤S502)。接着,N改变为0(步骤S504)。
控制电路410接着判断选定数据流(第二数据流stream2)字段中还有工作0(job0),亦即N=0(步骤S506)。所以控制电路410将选定数据流(第二数据流stream2)字段的工作0(job0),亦即N=0,传递至非易失性存储器450(步骤S502)。接着,N改变为1(步骤S504)。
控制电路410接着判断选定数据流(第二数据流stream2)字段没有工作1(job1),亦即N=1(步骤S506)。所以控制电路410接着判断是否有工作编号为1(N=1)的工作在其他数据流字段中排在第一位(步骤S510)。
接着,控制电路410确认第四数据流stream4字段中排第一位为工作1(job1),所以控制电路410决定第四数据流stream4字段为新选定数据流(步骤S514)。且控制电路410将选定数据流(第四数据流stream4)字段的工作1(job1),亦即N=1,传递至非易失性存储器450(步骤S502)。接着,N改变为2(步骤S504)。并继续步骤流程S506的动作,其详细运作此处不再赘述。
因此,控制电路410的工作传递顺序为:第二数据流stream2字段的工作2(job2)、第二数据流stream2字段的工作3(job3)、第二数据流stream2字段的工作0(job0)、第四数据流stream4字段的工作1(job1)、第四数据流stream4字段的工作2(job2)、第三数据流stream3字段的工作3(job3)、第三数据流stream3字段的工作0(job0)、第三数据流stream3字段的工作1(job1)、第一数据流stream1字段的工作0(job0)。明显地,在大部分的情况下,控制电路410都是传递连续工作编号的工作至非易失性存储器450,且让每个记忆库bank0~bank3同时皆有对应工作job0~job3可运作。
由以上的说明可知,本发明提出一种具多数据流写入的固态存储装置与相关写入方法。除了根据写入指令中的数据流信息来产生多数据流的写入数据之外,亦可根据固态存储装置400的内部操作来产生多数据流的写入数据。由于控制电路410传递连续工作编号的工作至非易失性存储器450,利用图5B的工作调度流程,可以确定每个工作单位(晶粒或记忆库)皆有工作可同时运作,且收到工作时不会处在忙碌状态,使得固态存储装置400能够达到最佳的写入效能。
再者,在编程运算中,是以工作单位的单位编程数据量来组成一个工作。如在上述的实施例中是以一个记忆库的编程数据量来组成一个工作。在此领域的技术人员也可以用一个晶粒的编程数据量来组成一个工作。因此,在8通道与4致能信号的固态存储装置(8CH,4CE SSD)架构下,当以晶粒为工作单位时,每个数据流可以有36个工作,亦即工作0(job0)至工作35(job35),用以编程一个超级页。
再者,利用图5B的工作调度流程,并将N控制在0~35之间变换即可达成本发明多数据流的写入方法,使固态存储装置以较佳的写入效率来将不同数据流的写入数据存储于非易失性存储器中的不同开启超级区块。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (14)
1.一种固态存储装置的写入方法,该固态存储装置连接至一主机,该主机发出的一写入指令中包括一数据流信息,其特征在于,该方法包括下列步骤:
将一缓冲器区分为多个区域,并对应至多个数据流;
接收该主机的该写入指令,根据该写入指令中的该数据流信息,将该数据流信息所对应的一写入数据存储于该缓冲器中的一对应区域;
根据一编程数据量,将该缓冲器中每一该区域中的写入数据分为多个群组;
将该些区域中,每一该群组分配一编程指令成为一工作,并排入一数据流工作连接表,该数据流工作连接表用以管理该些数据流所对应的该些工作;以及
根据该数据流工作连接表的内容决定该些工作的传递顺序,并依据该传递顺序将每一数据流所对应的工作传递至一非易失性存储器;
其中,每一该数据流的该写入数据是根据一记忆库或晶粒的该编程数据量来组成该工作,每一该工作分别对应一该记忆库或该晶粒,并用以对其对应的该记忆库或该晶粒进行编程。
2.如权利要求1所述的写入方法,其特征在于,其中由一第一区域内的写入数据所形成的该些工作皆有对应工作编号,且根据该些对应工作编号将该些工作排列于该数据流工作连接表的一第一数据流字段内。
3.如权利要求2所述的写入方法,其特征在于,其中由一第二区域内的写入数据所形成的该些工作皆有对应工作编号,且根据该些对应工作编号将该些工作排列于该数据流工作连接表的一第二数据流字段内。
4. 如权利要求3所述的写入方法,其特征在于,更包括下列步骤:
选择该第一数据流为一选定数据流;以及
将该选定数据流字段内所排列该些工作依序传递至该非易失性存储器。
5.如权利要求4所述的写入方法,其特征在于,更包括下列步骤:
当该选定数据流字段内的该些工作传递至该非易失性存储器后,根据该选定数据流字段内最后一个工作的该工作编号来决定一新选定数据流。
6.如权利要求5所述的写入方法,其特征在于,更包括下列步骤:
当该第二数据流字段中,其排在第一位工作的该工作编号与该选定数据流字段中该最后工作的工作编号为连续工作编号时,决定该第二数据流为该新选定数据流。
7.如权利要求1所述的写入方法,其特征在于,其中该非易失性存储器中包括多个晶粒,且以一个晶粒的一单位编程数据量为该编程数据量将该缓冲器中每一该区域中的写入数据分为该些群组。
8.如权利要求1所述的写入方法,其特征在于,其中该非易失性存储器中包括多个晶粒,该些晶粒中的一部分组成一记忆库,且以该记忆库的一单位编程数据量为该编程数据量将该缓冲器中每一该区域中的写入数据分为该些群组。
9.如权利要求1所述的写入方法,其特征在于,其中更包括:根据该数据流工作连接表的内容,将每一数据流所对应的工作传递至该非易失性存储器中各别对应的开启超级区块中。
10.一种固态存储装置的写入方法,该固态存储装置连接至一主机,其特征在于,该方法包括下列步骤:
将一缓冲器区分为多个区域,并对应至多个数据流;
接收该主机的一第一写入数据,并该第一写入数据存储于该缓冲器中的一第一区域;
根据该固态存储装置的一内部操作产生一第二写入数据,并该第二写入数据存储于该缓冲器中的一第二区域;
根据一编程数据量,将该缓冲器中该第一区域及该第二区域中的该第一写入数据及该第二写入数据分为多个群组;
将该第一区域及该第二区域中,每一该群组分配一编程指令成为一工作,并排入一数据流工作连接表,该数据流工作连接表用以管理该些数据流所对应的该些工作;以及
根据该数据流工作连接表的内容决定该些工作的传递顺序,并依据该传递顺序将每一数据流所对应的工作传递至一非易失性存储器;
其中,每一该数据流的该第一写入数据和该第二写入数据是根据一记忆库或晶粒的该编程数据量来组成该工作,每一该工作分别对应一该记忆库或该晶粒,并用以对其对应的该记忆库或该晶粒进行编程。
11.如权利要求10所述的写入方法,其特征在于,其中该第一区域内的该第一写入数据所形成的该些工作皆有对应工作编号,且根据该些对应工作编号将该些工作排列于该数据流工作连接表的一第一数据流字段内,其中该第二区域内的该第二写入数据所形成的该些工作皆有对应工作编号,且根据该些对应工作编号将该些工作排列于该数据流工作连接表的一第二数据流字段内。
12. 如权利要求11所述的写入方法,其特征在于,更包括下列步骤:
选择该第一数据流为一选定数据流;以及
将该选定数据流字段内所排列该些工作依序传递至该非易失性存储器。
13.如权利要求12所述的写入方法,其特征在于,更包括下列步骤:
当该选定数据流字段内的该些工作传递至该非易失性存储器后,根据该选定数据流字段内最后一个工作的该工作编号来决定一新选定数据流。
14.如权利要求13所述的写入方法,其特征在于,更包括下列步骤:
当该第二数据流字段中,其排在第一位工作的该工作编号与该选定数据流字段中该最后工作的工作编号为连续工作编号时,决定该第二数据流为该新选定数据流。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910298304.3A CN111813326B (zh) | 2019-04-12 | 2019-04-12 | 具多数据流写入的固态存储装置及其相关写入方法 |
US16/458,826 US11023170B2 (en) | 2019-04-12 | 2019-07-01 | Writing method for multi-stream write solid state drive |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910298304.3A CN111813326B (zh) | 2019-04-12 | 2019-04-12 | 具多数据流写入的固态存储装置及其相关写入方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111813326A CN111813326A (zh) | 2020-10-23 |
CN111813326B true CN111813326B (zh) | 2024-04-19 |
Family
ID=72749347
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910298304.3A Active CN111813326B (zh) | 2019-04-12 | 2019-04-12 | 具多数据流写入的固态存储装置及其相关写入方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11023170B2 (zh) |
CN (1) | CN111813326B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11907123B2 (en) * | 2021-04-20 | 2024-02-20 | International Business Machines Corporation | Flash memory garbage collection |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0969631A2 (en) * | 1998-07-01 | 2000-01-05 | Nec Corporation | Packet switch system with simplified bus control |
US6711170B1 (en) * | 1999-08-31 | 2004-03-23 | Mosaid Technologies, Inc. | Method and apparatus for an interleaved non-blocking packet buffer |
CN101221465A (zh) * | 2008-01-04 | 2008-07-16 | 东南大学 | 用于降低硬盘功耗的数据缓冲区实现方法 |
TW200945037A (en) * | 2008-04-18 | 2009-11-01 | Phison Electronics Corp | Data writing method, and flash storage system and controller using the same |
CN103123610A (zh) * | 2011-11-18 | 2013-05-29 | 建兴电子科技股份有限公司 | 固态储存装置 |
CN104298465A (zh) * | 2013-07-17 | 2015-01-21 | 光宝科技股份有限公司 | 固态储存装置中的区块分组方法 |
CN104298605A (zh) * | 2013-07-17 | 2015-01-21 | 光宝科技股份有限公司 | 固态储存装置中用于垃圾搜集动作的区块分组方法 |
CN106802867A (zh) * | 2015-11-25 | 2017-06-06 | 光宝电子(广州)有限公司 | 固态储存装置及其数据编程方法 |
CN107092560A (zh) * | 2016-02-17 | 2017-08-25 | 光宝电子(广州)有限公司 | 固态储存装置及运用于其中的快闪转换层对应表重建方法 |
CN107957958A (zh) * | 2016-10-17 | 2018-04-24 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003085677A1 (fr) * | 2002-04-05 | 2003-10-16 | Renesas Technology Corp. | Memoire non volatile |
KR102074329B1 (ko) * | 2013-09-06 | 2020-02-06 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
US9760281B2 (en) * | 2015-03-27 | 2017-09-12 | Intel Corporation | Sequential write stream management |
US10013177B2 (en) * | 2015-04-20 | 2018-07-03 | Hewlett Packard Enterprise Development Lp | Low write amplification in solid state drive |
US10198215B2 (en) * | 2016-06-22 | 2019-02-05 | Ngd Systems, Inc. | System and method for multi-stream data write |
JP2018088137A (ja) * | 2016-11-29 | 2018-06-07 | 東芝メモリ株式会社 | 半導体記憶装置 |
KR20200076946A (ko) * | 2018-12-20 | 2020-06-30 | 삼성전자주식회사 | 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치 |
-
2019
- 2019-04-12 CN CN201910298304.3A patent/CN111813326B/zh active Active
- 2019-07-01 US US16/458,826 patent/US11023170B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0969631A2 (en) * | 1998-07-01 | 2000-01-05 | Nec Corporation | Packet switch system with simplified bus control |
US6711170B1 (en) * | 1999-08-31 | 2004-03-23 | Mosaid Technologies, Inc. | Method and apparatus for an interleaved non-blocking packet buffer |
CN101221465A (zh) * | 2008-01-04 | 2008-07-16 | 东南大学 | 用于降低硬盘功耗的数据缓冲区实现方法 |
TW200945037A (en) * | 2008-04-18 | 2009-11-01 | Phison Electronics Corp | Data writing method, and flash storage system and controller using the same |
CN103123610A (zh) * | 2011-11-18 | 2013-05-29 | 建兴电子科技股份有限公司 | 固态储存装置 |
CN104298465A (zh) * | 2013-07-17 | 2015-01-21 | 光宝科技股份有限公司 | 固态储存装置中的区块分组方法 |
CN104298605A (zh) * | 2013-07-17 | 2015-01-21 | 光宝科技股份有限公司 | 固态储存装置中用于垃圾搜集动作的区块分组方法 |
CN106802867A (zh) * | 2015-11-25 | 2017-06-06 | 光宝电子(广州)有限公司 | 固态储存装置及其数据编程方法 |
CN107092560A (zh) * | 2016-02-17 | 2017-08-25 | 光宝电子(广州)有限公司 | 固态储存装置及运用于其中的快闪转换层对应表重建方法 |
CN107957958A (zh) * | 2016-10-17 | 2018-04-24 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
Non-Patent Citations (1)
Title |
---|
基于闪存的固态存储器的数据管理;朱岩;沈卫华;孙辉先;;计算机工程;20070630(12);第73-75页 * |
Also Published As
Publication number | Publication date |
---|---|
US20200326884A1 (en) | 2020-10-15 |
US11023170B2 (en) | 2021-06-01 |
CN111813326A (zh) | 2020-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101017358B1 (ko) | 복수의 플래시 메모리 유닛을 포함하는 휴대용 데이터 저장장치 | |
US7944762B2 (en) | Non-volatile memory control | |
US10466908B2 (en) | Memory system that buffers data before writing to nonvolatile memory | |
CN101241446B (zh) | 非易失数据存储装置中虚拟文件系统命令调度方法和设备 | |
US7752382B2 (en) | Flash memory storage system and method | |
US7877539B2 (en) | Direct data file storage in flash memories | |
KR101083673B1 (ko) | 반도체 스토리지 시스템 및 그 제어 방법 | |
US20080052446A1 (en) | Logical super block mapping for NAND flash memory | |
KR20080017982A (ko) | 플래시 메모리 시스템 및 그 프로그램 방법 | |
US20060184718A1 (en) | Direct file data programming and deletion in flash memories | |
US20130145087A1 (en) | Memory system and block merge method | |
KR101700720B1 (ko) | 호스트에 연결될 수 있는 통신 디바이스에 의해 포함된 대용량 스토리지를 위한 플래시 메모리를 제어하기 위한 방법, 및 상기 방법을 수행하기 위한 컴퓨터 프로그램 물건 | |
US20100088461A1 (en) | Solid state storage system using global wear leveling and method of controlling the solid state storage system | |
CN1227591C (zh) | 记录系统、数据记录设备、存储设备和数据记录方法 | |
KR20090131146A (ko) | 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법 | |
KR20080002646A (ko) | 불휘발성 반도체 메모리를 구비하는 메모리 시스템 | |
EP1875334A2 (en) | Direct data file storage implementation techniques in flash memories | |
TW200535608A (en) | Adaptive mode switching of flash memory address mapping based on host usage characteristics | |
US8521947B2 (en) | Method for writing data into flash memory | |
US20120198142A1 (en) | System and apparatus for flash memory data management | |
KR102349381B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
JP2013137665A (ja) | 半導体記憶装置、半導体記憶装置の制御方法、およびメモリコントローラ | |
JP2010515162A (ja) | 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用 | |
CN110389712B (zh) | 数据写入方法及其装置、固态硬盘和计算机可读存储介质 | |
CN106598504A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |