CN114637706B - 存储*** - Google Patents
存储*** Download PDFInfo
- Publication number
- CN114637706B CN114637706B CN202110955607.5A CN202110955607A CN114637706B CN 114637706 B CN114637706 B CN 114637706B CN 202110955607 A CN202110955607 A CN 202110955607A CN 114637706 B CN114637706 B CN 114637706B
- Authority
- CN
- China
- Prior art keywords
- data
- integrity
- storage area
- verification
- time
- 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
- 238000012795 verification Methods 0.000 claims description 364
- 238000005192 partition Methods 0.000 claims description 194
- 238000000034 method Methods 0.000 claims description 113
- 230000008569 process Effects 0.000 claims description 107
- 125000004122 cyclic group Chemical group 0.000 claims description 5
- 238000012545 processing Methods 0.000 description 305
- 238000012790 confirmation Methods 0.000 description 89
- 238000007726 management method Methods 0.000 description 82
- 238000006243 chemical reaction Methods 0.000 description 32
- 238000012005 ligant binding assay Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 238000012937 correction Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 238000010200 validation analysis Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 230000010365 information processing Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 238000007689 inspection Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 238000004140 cleaning Methods 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000008685 targeting Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000005201 scrubbing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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]
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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Iron Core Of Rotating Electric Machines (AREA)
- Soundproofing, Sound Blocking, And Sound Damping (AREA)
- Vehicle Body Suspensions (AREA)
- Memory System (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
本发明的一个实施方式实现能够减轻非易失性存储器的疲弊并同时使数据完整的存储***。根据实施方式,存储***具备非易失性存储器以及控制器。控制器管理将非易失性存储器的存储区域进行逻辑划分得到的至少一个存储区域。控制器管理与分别存储于至少一个存储区域中的一个以上的存储区域内的数据的完整性最后得到确认的时间有关的信息。
Description
本申请享受以日本专利申请2020-208475号(申请日:2020年12月16日)为基础申请的优先权。本申请通过参照该基础申请而包括基础申请的全部内容。
技术领域
本发明的一个实施方式涉及控制具备非易失性存储器的存储***(memorysystem)的技术。
背景技术
近年来,具备非易失性存储器的存储***广为普及。作为这种存储***之一,已知有具备NAND型闪速存储器(flash memory,闪存)的固态驱动器(SSD,固态硬盘)。SSD被用作各种计算设备的主储存器。
存储***和主机可以分别进行用于使写入非易失性存储器的数据完整(保持完整性)的处理。
存储***例如定期进行被称为巡检(patrol)的处理。在巡检处理中,从非易失性存储器读取数据,并进行对读取的数据的纠错处理。例如,在被纠错的位(bit)数超过阈值的情况下,存储有该数据的区块(block)将成为刷新(refresh)处理或者垃圾回收(GC:garbage collection)的对象。
另外,主机例如定期进行被称为清理(scrubbing)的处理。在清理处理中,从非易失性存储器读取所有数据,并进行对读取的数据的验证(例如校验和的确认)。
在巡检处理和清理处理中,会产生对非易失性存储器的访问(access)。对非易失性存储器的访问增加会使非易失性存储器疲弊(受到消耗、衰竭、疲劳不堪)。因此,需要实现能够减轻非易失性存储器的疲弊并同时使数据完整的新功能。
发明内容
实施方式之一提供一种能够减轻非易失性存储器的疲弊并同时使数据完整的存储***。
根据实施方式,存储***具备非易失性存储器以及控制器。控制器管理将非易失性存储器的存储区域进行逻辑划分得到的至少一个存储区域。控制器管理与分别存储于至少一个存储区域中的一个以上的存储区域内的数据的完整性最后得到确认的时间有关的信息。
附图说明
图1是表示包括第1实施方式涉及的存储***的信息处理***的构成例的框图。
图2是表示第1实施方式的存储***中所使用的逻辑物理地址转换表的构成例的图。
图3是表示第1实施方式的存储***中所使用的验证(verify)状况管理表的构成例的图。
图4是表示第1实施方式的存储***中与一个逻辑区块地址(LBA)相关联的数据结构的例子的图。
图5是表示第1实施方式的存储***中的与状态查询(询问)命令(command)相应的动作(工作)的例子的框图。
图6是表示第1实施方式的存储***中的与强制的验证命令相应的动作的例子的框图。
图7是表示第1实施方式的存储***中的与指定了容许时间范围的验证命令相应的动作的例子的框图。
图8是表示第1实施方式的存储***中的巡检处理所附带的验证处理的例子的框图。
图9是表示第1实施方式的存储***中所执行的验证命令处理的步骤的例子的流程图。
图10是表示第1实施方式的存储***中所执行的验证处理的步骤的例子的流程图。
图11是表示第1实施方式的存储***中所执行的验证命令处理的步骤的另一例的流程图。
图12是表示第1实施方式的存储***中所执行的巡检处理所附带的验证处理的步骤的例子的流程图。
图13是表示第2实施方式涉及的存储***中所管理的分区命名空间(ZonedNamespace)的构成例的图。
图14是表示包括第2实施方式的存储***的信息处理***的构成例的框图。
图15是表示第2实施方式的存储***中所使用的分区(zone,区间、区域)-物理地址转换表的构成例的图。
图16是表示第2实施方式的存储***中所使用的验证状况管理表的构成例的图。
图17是表示第2实施方式的存储***中的与强制的验证命令相应的动作的例子的框图。
图18是表示第2实施方式的存储***中的与指定了容许时间范围的验证命令相应的动作的例子的框图。
图19是表示第2实施方式的存储***中的巡检处理所附带的验证处理的例子的框图。
图20是表示第2实施方式的存储***中所执行的验证命令处理的步骤的例子的流程图。
图21是表示第2实施方式的存储***中所执行的验证命令处理的步骤的另一例的流程图。
图22是表示第2实施方式的存储***中所执行的巡检处理所附带的验证处理的步骤的例子的流程图。
标号说明
1信息处理***;2主机;3存储***;4控制器;5NAND型闪速存储器;6DRAM;11主机I/F(interface,接口);12CPU(中央处理单元);13NAND I/F;14DRAM I/F;121命令处理部;122读(read)处理部;123验证处理部;124巡检处理部;125验证状况管理部;21FW(firmware,固件);22逻辑物理地址转换表;23验证状况管理表;25分区-物理地址转换表;26分区描述符(zone descriptor)。
具体实施方式
以下,参照附图,对实施方式进行说明。
(第1实施方式)
首先,参照图1,说明包括第1实施方式涉及的存储***的信息处理***1的构成。信息处理***1包括主机设备2(以下称为主机2)以及存储***3。
主机2是信息处理装置。主机2既可以是将大量且多样的数据保存于存储***3的存储服务器,也可以是个人计算机。
存储***是构成为向NAND型闪速存储器这样的非易失性存储器写入数据、从非易失性存储器读取数据的半导体存储设备。存储***也被称为存储设备。存储***例如被实现为固态驱动器(SSD)。
存储***3可以用作主机2的储存器。存储***3既可以内置于主机2,也可以经由线缆或者网络与主机2连接。
用于将主机2与存储***3连接的接口遵照SCSI(小型计算机***接口标准)、SAS(Serial Attached SCSI,串行SCSI)、ATA(AT Attachment,高级技术附件规格)、SATA(Serial ATA,串行ATA)、PCIe(PCI Express,高速串行计算机扩展总线标准)(注册商标)、Ethernet(以太网)(注册商标)、Fibre Channel(光纤通道)、NVMe(NVM Express,非易失性内存标准)(注册商标)等标准。
存储***3例如具备控制器4、NAND型闪速存储器5以及动态随机存取存储器(DRAM)6。控制器4可以由片上***(SoC:System-on-a-chip)这样的电路实现。控制器4也可以内置静态随机存取存储器(SRAM)。另外,DRAM6也可以内置于控制器4。
在DRAM6等RAM中设置有固件(FW)21的存储区域、逻辑物理地址转换表22的高速缓存区域以及验证状况管理表23的存储区域。
FW21是用于控制控制器4的动作的程序。FW21例如从NAND型闪速存储器5加载到DRAM6。
逻辑物理地址转换表22管理各个逻辑地址与NAND型闪速存储器5的各个物理地址之间的映射。逻辑地址是为了对存储***3进行寻址而由主机2使用的地址。逻辑地址例如为逻辑区块地址(LBA)。以下,主要例示用LBA作为逻辑地址的情况。
验证状况管理表23管理与各LBA的数据的完整性最后得到确认的时间有关的信息。各LBA的数据可以根据来自主机2的验证命令或者通过巡检处理所附带的验证处理,确认其完整性。
验证状况管理表23例如管理(A)从各LBA的数据的完整性最后得到确认起经过的时间或者(B)各LBA的数据的完整性最后得到确认的时刻。在以下的说明中,最终确认时间这一用语用于表示(A)或者(B)的意思。
图2表示逻辑物理地址转换表22的一个结构例。逻辑物理地址转换表22管理各个LBA与NAND型闪速存储器5的各个物理地址之间的映射。控制器4可以使用逻辑物理地址转换表22将LBA转换为物理地址。另外,控制器4可以使用逻辑物理地址转换表22将物理地址转换为LBA。
在图2所示的例子中,对LBA“0”、LBA“1”和LBA“2”分别映射有物理地址“X”、物理地址“Y”和物理地址“Z”。
图3表示验证状况管理表23的一个结构例。验证状况管理表23可以包括分别与多个LBA对应的多个条目(entry)。各条目包含LBA的字段(field)和最终确认时间的字段。
在与某个LBA对应的条目中,LBA的字段表示该LBA。
另外,最终确认时间的字段表示该LBA的用户数据的最终确认时间。最终确认时间的字段所示的时间例如表示从对应的LBA的用户数据的完整性最后得到确认起经过的时间。该经过时间例如由以分(minute)为单位的时间表示。另外,最终确认时间的字段所示的时间也可以表示对应的LBA的用户数据的完整性最后得到确认的时刻。
在图3所示的例子中,从LBA“1”的用户数据的完整性得到确认起经过的时间为1分钟。从LBA“100”的用户数据的完整性得到确认起经过的时间为14400分钟。从LBA“101”的用户数据的完整性得到确认起经过的时间为108000分钟。
验证状况管理表23的一个条目例如根据对应的LBA的用户数据被写入NAND型闪速存储器5而被追加(生成)。或者,验证状况管理表23的一个条目也可以根据在对应的LBA的用户数据被写入NAND型闪速存储器5后该用户数据的完整性最初得到确认而被追加。
另外,验证状况管理表23的一个条目例如可以根据从主机2接收到指定了对应的LBA的取消映射(unmap)命令而被删除。也即是说,验证状况管理表23的一个条目可以在对应的LBA在逻辑物理地址转换表22中不与任何物理地址相关联的情况下被删除。
此外,LBA与最终确认时间的对应关系不限于表,也可以用树结构这样的各种数据结构来管理。
回到图1。NAND型闪速存储器5包括多个区块B0~Bm-1。区块B0~Bm-1中的每个区块包括多页(page)(在此为页P0~Pn-1)。区块B0~Bm-1作为数据消除动作的最小单位而发挥功能。区块有时也被称为“消除区块”或者“物理区块”。页P0~Pn-1中的每页包括与同一字线连接的多个存储单元。页P0~Pn-1作为数据写入动作以及数据读取动作的单位而发挥功能。此外,字线也可以作为数据写入动作以及数据读取动作的单位而发挥功能。
对于各区块B0~Bm-1的编程/擦除循环数(P/E循环数)具有上限,被称为最大P/E循环数。某个区块的一次P/E循环包括用于使该区块内的所有存储单元成为消除状态的消除动作和向该区块的各页写入数据的写入动作。
控制器4作为构成为控制NAND型闪速存储器5的存储控制器而发挥功能。
控制器4也可以作为构成为执行NAND型闪速存储器5的数据管理以及区块管理的闪存转换层(FTL:Flash translation layer)而发挥功能。由该FTL执行的数据管理包括(1)对表示各个LBA与NAND型闪速存储器5的各个物理地址之间的对应关系的映射信息的管理以及(2)用于隐藏以页为单位的读/写动作和以区块为单位的消除(擦除)动作的处理。区块管理包括不良区块的管理、磨损均衡(wear leveling)以及垃圾回收。
使用逻辑物理地址转换表22来执行各个LBA与各个物理地址之间的映射的管理。控制器4使用逻辑物理地址转换表22,以特定的管理尺寸为单位,管理各个LBA与各个物理地址之间的映射。与某个LBA对应的物理地址表示该LBA的数据被写入的NAND型闪速存储器5内的物理存储位置。控制器4使用逻辑物理地址转换表22,管理将NAND型闪速存储器5的存储区域进行逻辑划分得到的多个存储区域。这些多个存储区域分别与多个LBA对应。也即是说,这些多个存储区域中的每个存储区域由一个LBA确定。逻辑物理地址转换表22也可以在存储***3的电源接通(ON)时从NAND型闪速存储器5加载到DRAM6。
每一次P/E循环仅能进行一次向一页的数据写入。因此,控制器4并非将与某个LBA对应的更新数据写入到存储有与该LBA对应的以前的数据的物理存储位置,而是将该更新数据写入到另一物理存储位置。而且,控制器4通过以将该LBA与该另一物理存储位置相关联的方式更新逻辑物理地址转换表22而使以前的数据无效。将从逻辑物理地址转换表22参照的数据(即与LBA关联的数据)称为有效数据。另外,将没有与任何LBA关联的数据称为无效数据。有效数据是之后有可能从主机2读取的数据。无效数据是已经不可能从主机2读取的数据。
图4表示与一个LBAx相关联的数据结构的例子。LBAx是控制器4管理的LBA空间内的任一个LBA。与LBAx相关联的数据结构50是逻辑上存储于LBAx的数据。
数据结构50例如包括LBA51、用户数据52、保护信息(PI:protectioninformation)53、循环冗余校验(CRC)码54以及纠错码(ECC:Error Correcting Code)55。
LBA51是与该数据结构相关联的LBA(LBAx)。用户数据52是与指定LBAx的写入请求一起从主机2接收到的用户数据。
PI53是用于保护用户数据52的信息。PI53既可以与写入请求以及用户数据52一起从主机2接收,也可以由控制器4生成。PI53例如包括Guard字段531、Application Tag字段532以及Reference Tag字段533。
Guard字段531包含针对用户数据52计算出的CRC码(例如CRC-16)。ApplicationTag字段532包含不由控制器4解释的数据,可以用于使PI53的校验无效。Reference Tag字段533包含用于使用户数据52与地址关联的信息。Reference Tag字段533例如包含由与用户数据52一起接收到的写入请求所指定的LBA的至少一部分。
CRC码54是针对用户数据52和PI53计算出的CRC码。CRC码54由控制器4计算。CRC码54可以用于验证从NAND型闪速存储器5读取到的用户数据52和PI53的完整性。
ECC55是针对用户数据52、PI53和CRC码54计算出的ECC。ECC55由控制器4计算。ECC55可以用于纠正从NAND型闪速存储器5读取到的用户数据52、PI53和CRC码54的错误。
此外,数据结构50也可以包括PI53和CRC码54中的任一方。
回到图1。控制器4也可以包括主机接口(主机I/F)11、CPU12、NAND I/F13以及DRAM接口(DRAM I/F)14。上述主机I/F11、CPU12、NAND I/F13以及DRAM I/F14也可以经由总线10连接。
主机I/F11作为从主机2接收各种命令、例如I/O命令、各种控制命令的电路而发挥功能。I/O命令可以包括写命令、读命令以及验证命令。控制命令可以包括取消映射命令(修剪(trim)命令)以及格式化(format)命令。格式化命令是用于将存储***3整体进行取消映射的命令。
NAND I/F13将控制器4与NAND型闪速存储器5电连接。NAND I/F13与Toggle DDR、ONFI(Open NAND Flash Interface,开放式NAND闪存接口)等接口标准对应。
NAND I/F13作为构成为控制NAND型闪速存储器5的NAND控制电路而发挥功能。NAND I/F13也可以经由多个通道(Ch)分别连接于NAND型闪速存储器5内的多个存储芯片。通过多个存储芯片并行驱动,能够使对于NAND型闪速存储器5整体的访问宽带化。
DRAM I/F14作为构成为控制DRAM6的访问的DRAM控制电路而发挥功能。DRAM6的存储区域被分配为用于存储FW21、逻辑物理地址转换表22、验证状况管理表23等的区域和/或被作为读/写缓冲器利用的缓冲区域。
CPU12是构成为控制主机I/F11、NAND I/F13以及DRAM I/F14的处理器。CPU12通过执行从NAND型闪速存储器5加载到DRAM6的FW21来进行各种处理。FW21是包含用于使CPU12执行各种处理的指令集的控制程序。CPU12能够执行用于处理来自主机2的各种命令的命令处理等。CPU12的动作通过由CPU12执行的FW21来控制。
控制器4内的各部的功能既可以由控制器4内的专用硬件来实现,也可以通过CPU12执行FW21来实现。
CPU12例如作为命令处理部121、读处理部122、验证处理部123、巡检处理部124以及验证状况管理部125而发挥功能。CPU12例如通过执行FW21来作为这些各部而发挥功能。
另外,存储***3(更详细而言是控制器4)和主机2可以分别进行用于使写入NAND型闪速存储器5的数据完整的处理。存储***3例如定期进行巡检处理。主机2例如定期进行清理处理。
或者,主机2可以向存储***3发送验证命令。验证命令例如是按NVMe标准规定的用于验证存储于NAND型闪速存储器5的用户数据的完整性的命令。存储***3的控制器4根据验证命令,从NAND型闪速存储器5读取数据(例如数据结构50),使用读取到的数据所包含的信息(例如PI53),对数据内的用户数据的完整性进行验证。
控制器4在与验证命令相应的处理中不将读取到的数据传送给主机2。因此,主机2与存储***3之间的总线带宽无损。另外,主机2无需进行对读取的数据的处理。
然而,在存储***3中,为了使写入NAND型闪速存储器5的数据完整,不仅要进行巡检处理,而且也会进行与验证命令相应的处理。在巡检处理和与验证命令相应的处理中的任一方,都会产生对NAND型闪速存储器5的访问。对NAND型闪速存储器5的访问增加会使NAND型闪速存储器5疲弊。
因此,在本实施方式的存储***3中,在减轻NAND型闪速存储器5的疲弊的同时使数据完整。具体而言,控制器4使用验证状况管理表23,管理关于与多个LBA中的每一个相关联的用户数据的最终确认时间的信息。控制器4使用各LBA的用户数据的最终确认时间,控制进行验证处理的定时(timing)。或者,主机2使用各LBA的用户数据的最终确认时间,控制验证命令的发送定时。由此,能够减少从NAND型闪速存储器5读取数据的次数,因此能够减轻NAND型闪速存储器5的疲弊并同时使数据完整。
以下,对存储***3中的具体的动作例进行说明。
图5表示存储***3中的与状态查询命令相应的动作的例子。状态查询命令是主机2为了查询存储于NAND型闪速存储器5的用户数据的验证状况而发布的命令。
在此,对在验证状况管理表23中管理的最终确认时间进行说明。最终确认时间例如使用设置于验证状况管理部125的计时器(timer)决定。
(A)在最终确认时间表示从各LBA的用户数据的完整性最后得到确认起经过的时间的情况下,根据某个LBA的用户数据的完整性得到确认,作为与该LBA相关联的最终确认时间,在验证状况管理表23中设定为0。验证状况管理部125在到该LBA的用户数据的完整性下一次被确认为止的期间,例如定期地根据基于计时器的时间的经过,使所设定的最终确认时间增加。在该LBA的用户数据的完整性下一次得到确认的情况下,作为与该LBA相关联的最终确认时间,再次设定为0。
(B)在最终确认时间表示各LBA的用户数据的完整性最后得到确认的时刻的情况下,根据某个LBA的用户数据的完整性得到确认,作为与该LBA相关联的最终确认时间,将使用验证状况管理部125的计时器取得的当前时刻设定于验证状况管理表23。在该LBA的用户数据的完整性下一次得到确认的情况下,用再次使用验证状况管理部125的计时器取得的当前时刻更新所设定的最终确认时间。
命令处理部121经由主机I/F11从主机2接收状态查询命令。命令处理部121根据接收到的状态查询命令,从验证状况管理表23取得例如与最早的时刻相当的最终确认时间。
更具体而言,在验证状况管理表23的最终确认时间表示从对应的LBA的用户数据的完整性得到确认起经过的时间的情况下,命令处理部121从验证状况管理表23所包含的一个以上的最终确认时间中取得最大值。例如在图3所示的验证状况管理表23中,命令处理部121取得3个最终确认时间中的最大值即“108000”。
而且,命令处理部121将表示取得的最大的最终确认时间的信息经由主机I/F11发送给主机2。
由此,主机2能够取得存储于NAND型闪速存储器5的用户数据中的最大的最终确认时间。主机2能够根据所取得的最大的最终确认时间,判断是否应该向存储***3发送验证命令。
例如,在所取得的最大的最终确认时间(经过时间)超过阈值的情况下,主机2判断为应该向存储***3发送验证命令。由此,能够在基于最大的最终确认时间的适当的定时,使存储***3进行验证处理。
另外,在所取得的最大的最终确认时间为阈值以下的情况下,主机2判断为可以先不向存储***3发送验证命令。由此,主机2能够控制由存储***3进行验证处理的频率。因此,能减少对NAND型闪速存储器5的访问次数。
状态查询命令也可以指定LBA。在该情况下,命令处理部121将关于与指定的LBA对应的最终确认时间的信息发送给主机2。
另外,状态查询命令也可以指定LBA范围。在该情况下,命令处理部121将关于与指定的LBA范围的各LBA对应的最终确认时间的信息、或者与指定的LBA范围的各LBA对应的最终确认时间中的最大值发送给主机2。
在状态查询命令不指定LBA或者LBA范围的情况下,命令处理部121也可以与关于最大的最终确认时间的信息一起,将与其对应的LBA或者LBA范围发送给主机2。
接下来,参照图6以及图7,说明在从主机2接收到验证命令的情况下的存储***3的动作。验证命令指定LBA或者LBA范围。验证命令是请求验证所指定的LBA或者LBA范围的用户数据的完整性的命令。
更具体而言,验证命令包含成为验证对象的数据的开头LBA和该数据的大小(size)。成为验证对象的数据的大小例如可以由扇区(sector)的数量指定。扇区也被称为逻辑区块。
以下,为了使说明易于理解,主要对验证命令指定了一个LBA的情况进行说明。此外,在验证命令指定了LBA范围的情况下,对LBA范围所包含的各LBA进行与以下的说明同样的动作。
图6表示存储***3中的与第1验证命令相应的动作的例子。在存储***3中,根据第1验证命令,验证所指定的LBA的用户数据的完整性。也即是说,第1验证命令是强制性地使存储***3进行对指定的LBA的用户数据的完整性的验证的命令。下面对具体的动作进行说明。以下,也将由第1验证命令指定的LBA称为对象LBA。
首先,命令处理部121经由主机I/F11从主机2接收第1验证命令。命令处理部121使用逻辑物理地址转换表22,取得与对象LBA对应的物理地址。命令处理部121将取得的物理地址发送给读处理部122。另外,命令处理部121将对象LBA发送给验证处理部123。
读处理部122使用由命令处理部121发送来的物理地址,从NAND型闪速存储器5读取该物理地址的数据。以下,也将读处理部122读取到的数据称为读数据。另外,读数据具有如上参照图4所述的数据结构50的构成。
读处理部122将读数据发送给验证处理部123。此外,读处理部122也可以将读数据存储于DRAM6(更详细而言是读缓冲区)。
验证处理部123验证读数据所包含的用户数据52的完整性。验证处理部123例如使用读数据所包含的PI53验证用户数据52的完整性。
具体而言,验证处理部123计算读数据所包含的用户数据52的CRC码。而且,验证处理部123判定计算出的CRC码是否与PI53的Guard字段531所包含的CRC码一致。在计算出的CRC码与Guard字段531的CRC码一致的情况下,验证处理部123判断为确认到用户数据52的完整性。在计算出的CRC码与Guard字段531的CRC码不同的情况下,验证处理部123判断为没有确认到用户数据52的完整性。
此外,在计算出的CRC码与Guard字段531的CRC码一致的情况下,验证处理部123也可以进一步使用读数据所包含的LBA51和PI53的Reference Tag字段533,验证用户数据52的完整性。在读数据所包含的LBA51与Reference Tag字段533所包含的LBA一致的情况下,验证处理部123判断为确认到用户数据52的完整性。在读数据所包含的LBA51与ReferenceTag字段533所包含的LBA不同的情况下,验证处理部123判断为没有确认到用户数据52的完整性。此外,验证处理部123也可以使用由第1验证命令指定的LBA代替读数据所包含的LBA51。
或者,验证处理部123也可以使用读数据所包含的CRC码54验证用户数据52的完整性。例如在读数据没有包含PI53的情况下,验证处理部123使用CRC码54验证用户数据52的完整性。
具体而言,验证处理部123计算对于读数据所包含的用户数据52和PI53的CRC码。而且,验证处理部123判定计算出的CRC码是否与读数据所包含的CRC码54一致。在计算出的CRC码与读数据所包含的CRC码54一致的情况下,验证处理部123判断为确认到用户数据52的完整性。在计算出的CRC码与读数据所包含的CRC码54不同的情况下,验证处理部123判断为没有确认到用户数据52的完整性。
在确认到用户数据52的完整性的情况下,验证处理部123在验证状况管理表23中将与对象LBA相关联的最终确认时间更新。而且,验证处理部123将对象LBA的用户数据52的完整性得到确认这一情况通知给主机2。
在没有确认到用户数据52的完整性的情况下,验证处理部123将对象LBA的用户数据52的完整性没有得到确认这一情况通知给主机2。在没有确认到用户数据52的完整性的情况下,验证处理部123不在验证状况管理表23中更新与对象LBA相关联的最终确认时间。
此外,验证处理部123例如可以使用NVMe的LBA格式数据结构(Format DataStructure)的Metadata Size(元数据大小)字段,判定与LBA相关联的数据(例如与LBAx相关联的数据50)是否包含PI。具体而言,在Metadata Size字段被设定为0的情况下,验证处理部123判断为与LBA相关联的数据不包含PI。另一方面,在Metadata Size字段被设定为0以外的值的情况下,验证处理部123判断为与LBA相关联的数据包含PI。
通过以上的动作,存储***3能够验证由第1验证命令所指定的LBA(或者LBA范围)的用户数据的完整性。
图7表示存储***3中的与第2验证命令相应的动作的例子。第2验证命令除了LBA或者LBA范围之外还指定容许时间范围。控制器4根据第2验证命令,在所指定的LBA的用户数据(或者所指定的LBA范围的各LBA的用户数据)的完整性最后得到确认的时间在容许时间范围外的情况下,对该LBA的用户数据的完整性进行验证。另外,控制器4在所指定的LBA的用户数据的完整性最后得到确认的时间在容许时间范围内的情况下,不对该LBA的用户数据的完整性进行验证。也即是说,控制器4在所指定的LBA的用户数据的完整性最后得到确认的时间在容许时间范围内的情况下,跳过对于该LBA的验证动作。下面对具体的动作进行说明。以下,也将由第2验证命令指定的LBA称为对象LBA。
首先,命令处理部121经由主机I/F11从主机2接收第2验证命令。命令处理部121从验证状况管理表23取得与对象LBA相关联的最终确认时间。
接下来,命令处理部121判定所取得的最终确认时间是否在由第2验证命令指定的容许时间范围内。
在取得的最终确认时间在容许时间范围内的情况下,命令处理部121进行控制以使得不进行验证对象LBA的用户数据的完整性的动作。具体而言,命令处理部121不将与对象LBA对应的物理地址发送给读处理部122。另外,命令处理部121不将对象LBA发送给验证处理部123。由此,读处理部122不从NAND型闪速存储器5读取与对象LBA对应的物理地址的数据,验证处理部123不验证对象LBA的用户数据的完整性。因此,命令处理部121在对象LBA的最终确认时间在容许时间范围内的情况下,跳过对于对象LBA的验证动作。此外,命令处理部121也可以将对象LBA的用户数据的完整性在容许时间范围内的时间已经确认这一情况通知给主机2。
另一方面,在取得的最终确认时间在容许时间范围外的情况下,命令处理部121使用逻辑物理地址转换表22,取得与对象LBA对应的物理地址。命令处理部121将取得的物理地址发送给读处理部122。另外,命令处理部121将对象LBA发送给验证处理部123。以后的读处理部122以及验证处理部123的动作如上参照图6所述。因此,能够在对象LBA的最终确认时间在容许时间范围外的情况下进行对于对象LBA的验证动作。
通过以上的动作,存储***3能够在对象LBA的用户数据的最终确认时间在容许时间范围内的情况下,跳过对于对象LBA的验证动作。也即是说,在使用指定容许时间范围的第2验证命令的情况下,能够考虑与对象LBA相关联的最终确认时间,控制是否进行验证动作。因此,例如与使用不指定容许时间范围的第1验证命令的情况相比,有可能能够减少从NAND型闪速存储器5读取数据的次数。由此,能减轻NAND型闪速存储器5的疲弊。
接下来,说明对在巡检处理中读取到的数据进行的验证处理。
图8表示存储***3中的巡检处理所附带的验证处理的例子。巡检处理是用于检测NAND型闪速存储器5所包含的多个区块中的、存储有误比特数超过阈值的数据的各个区块的处理。检测出的各区块例如成为刷新处理或者GC的对象。由此,能够将检测出的各区块内的有效数据重新写入NAND型闪速存储器5内的其他区块。
写入到NAND型闪速存储器5的数据被写入后经过的时间越长则产生错误的可能性越高。另外,写入到NAND型闪速存储器5的数据被读取的次数越多则产生错误的可能性越高。控制器4例如通过每隔一定时间进行巡检处理,能够检测存储有误比特数超过阈值的数据的区块。
另外,巡检处理所附带的验证处理是对于在巡检处理中读取到的数据的验证处理。在该情况下,由于利用在巡检处理中读取到的数据,因此无需为了进行验证处理而重新从NAND型闪速存储器5读取数据。因此,通过随着巡检处理进行验证处理,能够减少从NAND型闪速存储器5读取数据的次数。下面对具体的动作进行说明。
首先,巡检处理部124决定读取对象的物理地址。巡检处理部124将存储于NAND型闪速存储器5的数据按特定的顺序以预定数据长度为单位进行读取。更详细而言,巡检处理部124从NAND型闪速存储器5所包含的多个区块中例如按区块编号顺序选择一个区块。此外,巡检处理部124也可以跳过对写入访问中的区块的选择。巡检处理部124例如为了从选择出的区块的开头依次以预定数据长度为单位读取数据而决定读取对象的物理地址。巡检处理部124将所决定的读取对象的物理地址发送给读处理部122。以下,也将读取对象的物理地址称为对象物理地址。此外,在巡检处理中从NAND型闪速存储器5读取数据的顺序以及读取的数据的单位根据NAND型闪速存储器5的规格等任意决定。
巡检处理部124使用逻辑物理地址转换表22,取得与对象物理地址对应的LBA(对象LBA)。巡检处理部124将取得的对象LBA发送给验证处理部123。
读处理部122使用由巡检处理部124发送来的对象物理地址,从NAND型闪速存储器5读取对象物理地址的数据。在此,读取到的数据(读数据)具有如上参照图4所述的数据结构50的构成。
读处理部122将读数据发送给巡检处理部124和验证处理部123。此外,读处理部122也可以将读数据存储于DRAM6(更详细而言是读缓冲区)。
巡检处理部124使用读数据所包含的ECC55进行纠错处理。巡检处理部124在通过纠错处理纠正了错误的位数(即ECC误比特数)超过阈值的情况下,将存储有读数据的区块设定为刷新对象或者GC对象的区块。由此,在刷新处理或者GC处理中,能够将刷新对象或者GC对象的区块内的有效数据重新写入其他区块。
另外,验证处理部123验证读数据所包含的用户数据52的完整性。验证处理部123的用于验证用户数据52的完整性的动作如上参照图6所述。在确认了用户数据52的完整性的情况下,验证处理部123在验证状况管理表23中将与对象LBA相关联的最终确认时间更新。另一方面,在没能确认用户数据52的完整性的情况下,不在验证状况管理表23中更新与对象LBA相关联的最终确认时间。
通过以上的动作,在存储***3中,能够将在定期的巡检处理中从NAND型闪速存储器5读取到的数据也用于验证处理。由此,相比于如定期进行巡检处理并进而根据验证命令进行验证处理这样的分别进行巡检处理和验证处理的情况,能够减少从NAND型闪速存储器5读取数据的次数。因此,能够减轻NAND型闪速存储器5的疲弊并同时使数据完整。
此外,在以LBA为单位管理用户数据的最终确认时间的情况下,验证状况管理表23的数据量可能会变得庞大。
主机2例如针对最终确认时间超过特定的界限值的用户数据,判断为需要再次进行验证处理。因此,验证状况管理表23内的包含超过界限值的最终确认时间的条目的信息对于主机2而言是不需要的信息。因此,主机2例如也可以将指定界限值的命令发送给存储***3。由此,主机2能够将包含超过所指定的界限值的最终确认时间的条目的信息对于主机2而言是不需要的信息这一情况通知给存储***3。
存储***3的验证处理部123按照命令所指定的最终确认时间的界限值,将验证状况管理表23简并。也即是说,验证处理部123将包含超过由命令指定的界限值的最终确认时间的条目从验证状况管理表23中删除。
具体而言,例如在图3所示的验证状况管理表23中,作为最终确认时间,表示了从对应的LBA的用户数据的完整性得到确认起经过的时间。在该情况下,验证处理部123例如按照将界限值指定为100000的命令,将包含超过界限值的最终确认时间(108000)的LBA101的条目从验证状况管理表23中删除。
由此,能够缩小为了存储验证状况管理表23所设置的DRAM6内的区域的大小。
此外,主机2也可以向存储***3发送表示将最终确认时间的界限值的指定解除的命令。存储***3的验证处理部123根据该命令,停止对验证状况管理表23的简并。
图9是表示由CPU12执行的验证命令处理的步骤的例子的流程图。CPU12根据从主机2接收到强制的验证命令(第1验证命令)而执行该验证命令处理。在此,例示验证命令指定了成为验证处理的对象的LBA范围的情况。
首先,CPU12决定验证对象的LBA(步骤S101)。验证对象的LBA是由验证命令指定的LBA范围内的一个LBA。也将所决定的验证对象的LBA称为对象LBA。
CPU12使用逻辑物理地址转换表22,确定与对象LBA对应的物理地址(步骤S102)。然后,CPU12从NAND型闪速存储器5读取所确定的物理地址的数据(步骤S103)。读取的数据是预定长度的数据。此外,以下也将读取到的数据称为读数据。
接下来,CPU12使用读数据进行验证处理(步骤S104)。验证处理是用于验证读数据所包含的用户数据的完整性的处理。作为验证处理的结果,CPU12例如获得表示用户数据的完整性得到确认的信息和表示用户数据的完整性没有得到确认的信息中的任一方。关于验证处理的具体的步骤,稍后参照图10的流程图进行说明。
CPU12的处理根据验证处理的结果来分支(步骤S105)。
具体而言,在验证处理的结果表示用户数据的完整性得到确认的情况下(步骤S105:是),CPU12在验证状况管理表23中将与对象LBA相关联的最终确认时间更新(步骤S106)。例如,在最终确认时间表示从用户数据的完整性得到确认起经过的时间的情况下,CPU12设定0作为与对象LBA相关联的最终确认时间。在该情况下,在验证状况管理表23中,最终确认时间构成为随着时间的经过而增加。或者,CPU12也可以设定当前时刻作为与对象LBA相关联的最终确认时间。然后,CPU12将对象LBA的用户数据的完整性得到确认这一情况通知给主机2(步骤S107),CPU12的处理进入步骤S109。此外,CPU12也可以将与由验证命令指定的LBA范围所包含的所有LBA的用户数据有关的验证结果统一通知给主机2。
在验证处理的结果表示用户数据的完整性没有得到确认的情况下(步骤S105:否),CPU12将对象LBA的用户数据的完整性没有得到确认这一情况通知给主机2(步骤S108),CPU12的处理进入步骤S109。也即是说,在用户数据的完整性没有得到确认的情况下,CPU12不在验证状况管理表23中更新与对象LBA相关联的最终确认时间。
接下来,CPU12判定是否存在验证对象的另一LBA(步骤S109)。也即是说,CPU12判定在由验证命令指定的LBA范围内是否剩有尚未进行对用户数据的验证处理的LBA。
在存在验证对象的另一LBA的情况下(步骤S109:是),CPU12的处理回到步骤S101,进行以该另一LBA为对象的处理。
另一方面,在没有验证对象的另一LBA的情况下(步骤S109:否),即完成了对于由验证命令指定的LBA范围内的所有LBA的用户数据的验证处理的情况下,CPU12结束验证命令处理。
通过以上的验证命令处理,CPU12能更新验证状况管理表23。具体而言,CPU12对由验证命令指定的LBA范围内的各LBA的用户数据的完整性进行验证。而且,CPU12将与确认了完整性的用户数据的LBA相关联的最终确认时间更新。由此,能够在存储***3中管理存储于各LBA的用户数据的完整性的最终确认时间。
图10是表示由CPU12执行的验证处理的步骤的例子的流程图。验证处理是用于验证用户数据的完整性的处理。验证处理例如相当于如上参照图9所述的验证命令处理的步骤S104。在此,例示CPU12使用从NAND型闪速存储器5读取到的对象LBA的数据(读数据)来进行验证处理的情况。另外,例示读数据中包含有用户数据52、PI53以及LBA51的情况。
首先,CPU12使用用户数据52计算CRC码(步骤S201)。然后,CPU12判定计算出的CRC码是否与PI53所包含的Guard字段531内的CRC码一致(步骤S202)。
在计算出的CRC码与Guard字段531内的CRC码不同的情况下(步骤S202:否),CPU12生成表示用户数据52的完整性没有得到确认的验证结果(步骤S203),并结束验证处理。
在计算出的CRC码与Guard字段531内的CRC码一致的情况下(步骤S202:是),CPU12判定读数据内的LBA51是否与PI53所包含的Reference Tag字段533内的LBA一致(步骤S204)。此外,CPU12也可以判定对象LBA是否与Reference Tag字段533内的LBA一致。
在读数据内的LBA51与PI53所包含的Reference Tag字段533内的LBA一致的情况下(步骤S204:是),CPU12生成表示用户数据52的完整性得到确认的验证结果(步骤S205),并结束验证处理。
另一方面,在读数据内的LBA51与PI53所包含的Reference Tag字段533内的LBA不同的情况下(步骤S204:否),CPU12生成表示用户数据52的完整性没有得到确认的验证结果(步骤S203),并结束验证处理。
通过以上的验证处理,CPU12能够使用PI53验证用户数据52的完整性。此外,也可以省略对读数据内的LBA51与Reference Tag字段533内的LBA进行比较的步骤S204的处理。
另外,在读数据没有包含PI53的情况下,CPU12也可以使用与读数据所包含的PI53等同的信息(例如CRC码54)验证用户数据52的完整性。具体而言,CPU12使用用户数据52计算CRC码,并判定计算出的CRC码是否与读数据内的CRC码54一致。在计算出的CRC码与读数据内的CRC码54一致的情况下,CPU12生成表示用户数据52的完整性得到确认的验证结果。另一方面,在计算出的CRC码与读数据内的CRC码54不同的情况下,CPU12生成表示用户数据52的完整性没有得到确认的验证结果。
图11是表示由CPU12执行的验证命令处理的步骤的另一例的流程图。CPU12根据从主机2接收到指定了容许时间范围的验证命令(第2验证命令)而执行该验证命令处理。在此,例示验证命令指定了成为验证处理的对象的LBA范围的情况。
首先,CPU12决定验证对象的LBA(对象LBA)(步骤S301)。CPU12从验证状况管理表23取得与对象LBA相关联的最终确认时间(步骤S302)。
CPU12判定所取得的最终确认时间是否在由验证命令指定的容许时间范围内(步骤S303)。
在取得的最终确认时间在容许时间范围外的情况下(步骤S303:否),CPU12通过步骤S304到步骤S310的处理,进行用于验证对象LBA的用户数据的完整性并将该验证结果通知给主机2的处理。步骤S304到步骤S310的处理与如上参照图9所述的验证命令处理的步骤S102到步骤S108的处理是同样的,因此省略其说明。然后,CPU12判定是否存在验证对象的另一LBA(步骤S311)。在存在验证对象的另一LBA的情况下(步骤S311:是),CPU12的处理回到步骤S301,进行以该另一LBA为对象的处理。另一方面,在没有验证对象的另一LBA的情况下(步骤S311:否),CPU12结束验证命令处理。
在取得的最终确认时间在容许时间范围内的情况下(步骤S303:是),CPU12判定是否存在验证对象的另一LBA(步骤S311)。在存在验证对象的另一LBA的情况下(步骤S311:是),CPU12的处理回到步骤S301,进行以该另一LBA为对象的处理。另一方面,在没有验证对象的另一LBA的情况下(步骤S311:否),CPU12结束验证命令处理。也即是说,在取得的最终确认时间在容许时间范围内的情况下,CPU12可以不进行用于验证对象LBA的用户数据的完整性的处理,而进行以另一LBA为对象的处理。此外,在取得的最终确认时间在容许时间范围内的情况下,CPU12也可以将已经在容许时间范围内的时间确认过对象LBA的用户数据的完整性这一情况通知给主机2。
通过以上的验证命令处理,CPU12能在与对象LBA对应的最终确认时间在容许时间范围外的情况下更新验证状况管理表23。由此,能够在存储***3中管理存储于各LBA的用户数据的最终确认时间。
另外,在与对象LBA对应的最终确认时间在容许时间范围内的情况下,CPU12不进行用于验证对象LBA的用户数据的完整性的验证处理。也即是说,CPU12不对在容许时间范围内已确认了用户数据的完整性的LBA进行验证处理。如此,CPU12通过利用记录于验证状况管理表23的最终确认时间,能减少从NAND型闪速存储器5读取各LBA的用户数据的次数。因此,能够减轻NAND型闪速存储器5的疲弊。
图12是表示由CPU12执行的巡检处理所附带的验证处理的步骤的例子的流程图。CPU12例如每隔一定时间执行巡检处理以及巡检处理所附带的验证处理。
首先,CPU12通过步骤S401到步骤S406的处理,进行对NAND型闪速存储器5的巡检处理。
具体而言,CPU12决定读取对象的物理地址(步骤S401)。CPU12在巡检处理中将存储于NAND型闪速存储器5的数据按特定的顺序以预定数据长度为单位进行读取。CPU12为了按照该特定的顺序以预定数据长度为单位读取数据,决定读取对象的物理地址。以下,也将所决定的读取对象的物理地址称为对象物理地址。
CPU12从NAND型闪速存储器5读取对象物理地址的数据(步骤S402)。然后,CPU12使用逻辑物理地址转换表22,确定与对象物理地址对应的LBA(步骤S403)。
CPU12判定是否确定了与对象物理地址对应的LBA(步骤S404)。换言之,CPU12判定读取到的对象物理地址的数据(读数据)是有效数据还是无效数据。
在没能确定与对象物理地址对应的LBA的情况下(步骤S404:否),也即是说在读数据为无效数据的情况下,CPU12的处理进入步骤S411。CPU12不对作为无效数据的读数据进行任何处理,而进入用于后续数据的处理。
在确定了与对象物理地址对应的LBA的情况下(步骤S404:是),也即是说在读数据为有效数据的情况下,CPU12对读数据进行使用ECC55的纠错处理(步骤S405)。CPU12判定通过纠错处理纠正了错误的位数是否超过了阈值(步骤S406)。在通过纠错处理纠正了错误的位数超过阈值的情况下(步骤S406:是),CPU12将存储有读数据的区块设定为刷新或者GC对象的区块(步骤S407),CPU12的处理进入步骤S408。在刷新处理或者GC处理中,刷新或者GC对象的区块内的有效数据被写入其他区块。另一方面,在通过纠错处理纠正了错误的位数为阈值以下的情况下(步骤S406:否),CPU12的处理进入步骤S408。
接下来,CPU12使用读数据进行验证处理(步骤S408)。验证处理是用于验证读数据所包含的用户数据52的完整性的处理。验证处理的具体的步骤如上参照图10的流程图所述。此外,读数据是为了巡检处理而在步骤S402中已读取到的数据,因此,CPU12无需为了进行验证处理而重新从NAND型闪速存储器5读取数据。
CPU12的处理根据验证处理的结果来分支(步骤S409)。
具体而言,在验证处理的结果表示用户数据的完整性得到确认的情况下(步骤S409:是),CPU12在验证状况管理表23中将与通过步骤S403确定的LBA(对象LBA)相关联的最终确认时间更新(步骤S410),CPU12的处理进入步骤S411。
在验证处理的结果表示用户数据的完整性没有得到确认的情况下(步骤S409:否),CPU12的处理进入步骤S411。也即是说,在用户数据的完整性没有得到确认的情况下,CPU12不在验证状况管理表23中更新与对象LBA相关联的最终确认时间。
接下来,CPU12判定是否完成了对于NAND型闪速存储器5的所有数据的巡检处理(步骤S411)。也即是说,CPU12判定NAND型闪速存储器5内的区块中是否剩有尚未通过巡检处理读取的数据。
在没有完成对所有数据的巡检处理的情况下(步骤S411:否),CPU12的处理回到步骤S401,进行以尚未读取的数据为对象的巡检处理。
另一方面,在完成了对所有数据的巡检处理的情况下(步骤S411:是),CPU12结束巡检处理以及验证处理。
通过以上的巡检处理以及验证处理,CPU12能够对通过巡检处理读取到的数据也进行验证处理。由此,相比于CPU12分别进行巡检处理和验证处理的情况,能够减少从NAND型闪速存储器5读取数据的次数。因此,能够减轻NAND型闪速存储器5的疲弊并同时使数据完整。
(第2实施方式)
在第1实施方式中,数据的验证状况以逻辑地址为单位(例如以LBA为单位)来管理。与此相对,在第2实施方式中,数据的验证状况以分区(zone)为单位来管理。
第2实施方式涉及的存储***3的构成与第1实施方式的存储***3是同样的。在第2实施方式和第1实施方式中,只有用于按分区管理验证状况的构成是不同的。以下,主要说明与第1实施方式的不同之处。
第2实施方式涉及的存储***3例如使用按NVMe标准规定的分区命名空间(ZNS:Zoned Namespaces)作为将存储于NAND型闪速存储器5的数据以分区为单位进行管理的方法。
参照图13,对分区命名空间进行说明。为了访问存储***3而由主机2使用的LBA空间整体可以被划分为多个局部空间。各局部空间有时被称为命名空间。在分区命名空间中,一个命名空间的LBA空间整体可以被划分为多个分区。多个分区中的每个分区可以包含多个LBA。将一个命名空间划分所得到的多个分区中的每个分区对应于由连续且不重复的多个LBA构成的LBA范围。各分区被用作用于访问NAND型闪速存储器5的单位。
在图13所示的例子中,命名空间与z个LBA0~LBA(z-1)对应,具备x个分区0~分区(x-1)。LBA0是分区0的最小的LBA。另外,LBA(z-1)是分区(x-1)的最大的LBA。
一个分区内的写入按顺序(sequential)执行。一个分区可以与NAND型闪速存储器5内的任意的物理单位对应。例如,一个分区与NAND型闪速存储器5内的一个区块对应。在该情况下,使用分配给一个分区的LBA范围所包含的连续的LBA来访问一个区块。
图14表示包括第2实施方式涉及的存储***3的信息处理***1的构成例。在DRAM6中设置有FW21的存储区域、分区-物理地址转换表25的高速缓存区域以及验证状况管理表23的存储区域。也即是说,在第2实施方式的存储***3中,使用分区-物理地址转换表25代替在第1实施方式的存储***3中使用的逻辑物理地址转换表22。
在DRAM6中也可以还设置有分区描述符26的存储区域。分区描述符26包含表示各分区的构成和/或状态的信息。与某个分区对应的分区描述符26例如包含该分区的开头的LBA(即最小的LBA)、可写入该分区的容量等信息。
图15表示分区-物理地址转换表25的一个结构例。分区-物理地址转换表25管理各个分区与NAND型闪速存储器5的各个物理地址之间的映射。在分区-物理地址转换表25中,一个分区例如由分配给该分区的LBA范围的开头的LBA(例如LBA)表示。
在图15所示的例子中,对分区“0”、分区“1”和分区“2”分别映射有物理地址“X”、物理地址“Y”和物理地址“Z”。
控制器4使用分区-物理地址转换表25,管理将NAND型闪速存储器5的存储区域进行逻辑划分得到的多个存储区域。这些多个存储区域分别对应于多个分区。多个分区中的每个分区例如由分配给该分区的LBA范围的开头的LBA确定。
图16表示验证状况管理表23的一个结构例。验证状况管理表23可以包括分别与各分区的开头的LBA对应的多个条目。各条目包含LBA的字段和最终确认时间的字段。
在与某个分区对应的条目中,LBA的字段表示分配给该分区的LBA范围的开头的LBA。
另外,最终确认时间的字段表示该分区的用户数据的完整性最后得到确认的时间。最终确认时间的字段中所示的时间例如表示(A)从对应的分区的用户数据的完整性最后得到确认起经过的时间。经过时间例如由以分为单位的时间表示。另外,最终确认时间的字段中所示的时间也可以表示(B)对应的分区的用户数据的完整性最后得到确认的时刻。在以下的说明中,最终确认时间这一用语用于表示(A)或者(B)的意思。
在图16所示的例子中,从Zone“1”的用户数据的完整性得到确认起经过的时间为1分钟。从Zone“100”的用户数据的完整性得到确认起经过的时间为14400分钟。从Zone“101”的用户数据的完整性得到确认起经过的时间为108000分钟。
此外,也可以使最终确认时间包含于分区描述符26,以代替使用验证状况管理表23。
接下来,例示按分区管理验证状况的情况下的命令处理部121、读处理部122、验证处理部123、巡检处理部124以及验证状况管理部125的动作。
首先,对在验证状况管理表23中管理的最终确认时间进行说明。最终确认时间例如使用设置于验证状况管理部125的计时器决定。
(A)在最终确认时间表示从各分区的用户数据的完整性最后得到确认起经过的时间的情况下,根据某个分区的用户数据的完整性得到确认,作为与该分区相关联的最终确认时间,在验证状况管理表23中设定为0。验证状况管理部125在到该分区的用户数据的完整性下一次被确认为止的期间,例如定期地根据基于计时器的时间的经过,使所设定的最终确认时间增加。在该分区的用户数据的完整性下一次得到确认的情况下,作为与该分区相关联的最终确认时间,再次设定为0。
(B)在最终确认时间表示各分区的用户数据的完整性最后得到确认的时刻的情况下,根据某个分区的数据的完整性得到确认,作为与该分区相关联的最终确认时间,将使用验证状况管理部125的计时器取得的当前时刻设定于验证状况管理表23。在该分区的数据的完整性下一次得到确认的情况下,用再次使用验证状况管理部125的计时器取得的当前时刻更新所设定的最终确认时间。
参照图17以及图18,说明在从主机2接收到验证命令的情况下的存储***3的动作。以下,为了使说明易于理解,主要对验证命令指定了分配给一个分区的LBA范围的情况进行说明。如前所述,验证命令包含成为验证对象的数据的开头LBA和该数据的大小。在此,由验证命令指定的开头LBA对应于一个分区的开头LBA。因此,由验证命令指定的开头LBA被用作识别分区的信息。此外,在验证命令指定了跨多个分区的LBA范围的情况下,按每个与一个分区对应的LBA范围,进行与以下的说明同样的动作。
图17表示存储***3中的与第1验证命令相应的动作的例子。存储***3的控制器4根据第1验证命令,验证与指定的LBA范围对应的分区的用户数据的完整性。下面对具体的动作进行说明。以下,也将根据由第1验证命令指定的开头LBA所识别的分区称为对象分区。
首先,命令处理部121经由主机I/F11从主机2接收第1验证命令。命令处理部121使用分区-物理地址转换表25,取得与由接收到的第1验证命令指定的开头LBA对应的物理地址。命令处理部121将取得的物理地址(对象物理地址)发送给读处理部122。另外,命令处理部121将由第1验证命令指定的开头LBA发送给验证处理部123。
读处理部122使用由命令处理部121发送来的物理地址,从NAND型闪速存储器5读取该物理地址的数据。例如,在对象分区与由NAND型闪速存储器5内的对象物理地址所确定的一个区块对应的情况下,读处理部122也可以将该区块内的数据从开头按顺序以预定数据长度为单位进行读取。以下,也将读处理部122读取到的以预定数据长度为单位的数据称为读数据。另外,读数据具有如上参照图4所述的数据结构50的构成。
读处理部122将读数据发送给验证处理部123。此外,读处理部122也可以将读数据存储于DRAM6(更详细而言是读缓冲区)。
验证处理部123验证读数据所包含的用户数据52的完整性。验证处理部123的用于验证用户数据52的完整性的动作如在第1实施方式中所述。验证处理部123例如通过将由读处理部122发送来的以预定数据长度为单位的读数据按顺序进行处理,从而验证对象分区内的所有用户数据的完整性。一个分区内的所有用户数据是分配给该分区的LBA范围所包含的所有LBA的用户数据。
在确认到对象分区内的所有用户数据的完整性的情况下,验证处理部123在验证状况管理表23中将与开头LBA相关联的最终确认时间更新。而且,验证处理部123将所指定的LBA范围(即分区)的用户数据的完整性得到确认这一情况通知给主机2。
另外,在对象分区内的至少一部分用户数据的完整性没有得到确认的情况下,验证处理部123不在验证状况管理表23中更新与开头LBA相关联的最终确认时间。而且,验证处理部123将所指定的LBA范围(分区)的用户数据的完整性没有得到确认这一情况通知给主机2。
通过以上的动作,存储***3能够验证由第1验证命令指定的LBA范围(分区)的用户数据的完整性。
图18表示存储***3中的与第2验证命令相应的动作的例子。第2验证命令指定LBA范围和容许时间范围。控制器4根据第2验证命令,在与所指定的LBA范围对应的分区的用户数据的完整性最后得到确认的时间在容许时间范围外的情况下,对该分区的用户数据的完整性进行验证。另外,控制器4在与所指定的LBA范围对应的分区的用户数据的完整性最后得到确认的时间在容许时间范围内的情况下,不对该分区的用户数据的完整性验证。也即是说,控制器4在与所指定的LBA范围对应的分区的用户数据的完整性最后得到确认的时间在容许时间范围内的情况下,跳过对于该分区的验证动作。下面对具体的动作进行说明。以下,也将根据由第2验证命令指定的开头LBA所识别的分区称为对象分区。
首先,命令处理部121经由主机I/F11从主机2接收第2验证命令。命令处理部121使用由第2验证命令指定的开头LBA,从验证状况管理表23取得与对象分区相关联的最终确认时间。
接下来,命令处理部121判定所取得的最终确认时间是否在由第2验证命令指定的容许时间范围内。
在取得的最终确认时间在容许时间范围内的情况下,命令处理部121进行控制以使得不进行验证对象分区的用户数据的完整性的动作。具体而言,命令处理部121不将与对象分区对应的物理地址(例如与开头LBA对应的物理地址)发送给读处理部122。另外,命令处理部121不将用于识别对象分区的开头LBA发送给验证处理部123。由此,读处理部122不从NAND型闪速存储器5读取与对象分区对应的物理地址的数据,验证处理部123不验证对象分区的用户数据的完整性。因此,命令处理部121在对象分区的最终确认时间在容许时间范围内的情况下,跳过对于对象分区的验证动作。此外,命令处理部121也可以将对象分区的用户数据的完整性在容许时间范围内的时间已经确认这一情况通知给主机2。
另一方面,在取得的最终确认时间在容许时间范围外的情况下,命令处理部121使用分区-物理地址转换表25,取得与开头LBA对应的物理地址。命令处理部121将取得的物理地址发送给读处理部122。另外,命令处理部121将开头LBA发送给验证处理部123。以后的读处理部122以及验证处理部123的动作如上参照图17所述。因此,能够在对象分区的最终确认时间在容许时间范围外的情况下进行对于对象分区的验证动作。
通过以上的动作,存储***3能够在对象分区的所有用户数据的最终确认时间在容许时间范围内的情况下,跳过对于对象分区的验证动作。也即是说,在使用指定容许时间范围的第2验证命令的情况下,能够考虑与对象分区相关联的最终确认时间,控制是否进行验证动作。因此,例如与使用不指定容许时间范围的第1验证命令的情况相比,有可能能够减少从NAND型闪速存储器5读取数据的次数。由此,能减轻NAND型闪速存储器5的疲弊。
此外,存储***3中的与状态查询命令相应的动作与第1实施方式的同样。
图19表示存储***3中的巡检处理所附带的验证处理的例子。
首先,巡检处理部124决定读取对象的物理地址(对象物理地址)。巡检处理部124将所决定的对象物理地址发送给读处理部122。决定对象物理地址的方法如在第1实施方式中所述的那样。
另外,巡检处理部124使用分区-物理地址转换表25,取得与对象物理地址对应的LBA(对象LBA)。分区-物理地址转换表25表示了分区的开头LBA与物理地址的对应关系。巡检处理部124例如能够基于与分区的开头LBA对应的物理地址和对象物理地址之间的相对关系,取得与对象物理地址对应的LBA。巡检处理部124将取得的对象LBA发送给验证处理部123。
读处理部122使用由巡检处理部124发送来的对象物理地址,从NAND型闪速存储器5读取对象物理地址的数据。读取到的数据(读数据)具有如上参照图4所述的数据结构50的构成。
读处理部122将读数据发送给巡检处理部124和验证处理部123。此外,读处理部122也可以将读数据存储于DRAM6(更详细而言是读缓冲区)。
巡检处理部124使用读数据所包含的ECC55进行纠错处理。巡检处理部124也可以在通过纠错处理纠正了错误的位数(即ECC误比特数)超过阈值的情况下,向主机2通知存储有读数据的分区的复位(reset)或者变更。分区的复位通知例如使用NVMe的复位分区建议(Reset Zone Recommended)。分区的变更通知包括将分区设定为脱机(offline)。
另外,验证处理部123验证读数据所包含的用户数据52的完整性。验证处理部123的用于验证用户数据52的完整性的动作如在第1实施方式中所述。验证处理部123例如通过将由读处理部122发送来的以预定数据长度为单位的读数据按顺序进行处理,从而验证分区各自的所有用户数据的完整性。
在确认了一个分区的所有用户数据的完整性的情况下,验证处理部123在验证状况管理表23中将与该分区相关联的最终确认时间更新。另一方面,在没能确认一个分区的至少一部分用户数据的完整性的情况下,验证处理部123不在验证状况管理表23中更新与对象分区相关联的最终确认时间。此外,在没能确认一个分区的至少一部分用户数据的完整性的情况下,验证处理部123也可以向主机2通知分区的复位或者变更。
通过以上的动作,在存储***3中,能够将在定期的巡检处理中从NAND型闪速存储器5读取到的数据也用于验证处理。由此,相比于如定期进行巡检处理并进而进行与验证命令相应的验证处理这样的分别进行巡检处理和验证处理的情况,能够减少从NAND型闪速存储器5读取数据的次数。因此,能够减轻NAND型闪速存储器5的疲弊并同时使数据完整。
另外,在将最终确认时间以分区为单位进行管理的情况下,相比于以LBA为单位进行管理的情况,能够减少验证状况管理表23的数据量。
图20是表示由CPU12执行的验证命令处理的步骤的例子的流程图。CPU12根据从主机2接收到强制的验证命令(第1验证命令)而执行该验证命令处理。在此,例示验证命令利用开头LBA和大小指定了成为验证处理的对象的LBA范围的情况。另外,假设所指定的LBA范围可能对应于一个以上的分区。
首先,CPU12决定验证对象的LBA(对象LBA)(步骤S601)。验证对象的LBA是由验证命令指定的LBA范围内的一个LBA。然后,CPU12确定包括对象LBA的分区(步骤S602)。CPU12例如使用分区描述符26,确定包括对象LBA的分区。以下,也将所确定的分区称为对象分区。
接下来,CPU12通过步骤S603到步骤S605的处理,进行对对象LBA的用户数据52的验证处理,验证对象LBA的用户数据52的完整性。步骤S603到步骤S605的处理与如上参照图9所述的验证命令处理的步骤S102到步骤S104的处理是同样的。
接下来,CPU12的处理根据验证处理的结果来分支(步骤S606)。
在验证处理的结果表示用户数据的完整性没有得到确认的情况下(步骤S606:否),CPU12将对象分区的用户数据的完整性没有得到确认这一情况通知给主机2(步骤S607),CPU12的处理进入步骤S611。此外,在用户数据的完整性没有得到确认的情况下,CPU12不在验证状况管理表23中更新与对象分区相关联的最终确认时间。
另一方面,在验证处理的结果表示用户数据的完整性得到确认的情况下(步骤S606:是),CPU12判定验证是否已完成到对象分区的末端(步骤S608)。具体而言,CPU12例如使用分区描述符26,判定当前的对象LBA是否为与对象分区对应的LBA范围的末端的LBA。在当前的对象LBA为与对象分区对应的LBA范围的末端的LBA的情况下,CPU12判断为验证已完成到对象分区的末端。
在验证没有完成到对象分区的末端的情况下(步骤S608:否),CPU12的处理回到步骤S601,继续进行以后续的LBA为对象的处理。
在验证已完成到对象分区的末端的情况下(步骤S608:是),CPU12在验证状况管理表23中将与对象分区相关联的最终确认时间更新(步骤S609)。例如,在最终确认时间表示从用户数据的完整性得到确认起经过的时间的情况下,CPU12设定0作为与对象分区相关联的最终确认时间。或者,CPU12也可以设定当前时刻作为与对象分区相关联的最终确认时间。然后,CPU12将对象分区的用户数据的完整性得到确认这一情况通知给主机2(步骤S610),CPU12的处理进入步骤S611。此外,CPU12也可以将关于与由验证命令指定的LBA范围对应的所有分区的用户数据的验证结果统一通知给主机2。
接下来,CPU12判定是否存在另一分区的验证对象的LBA(步骤S611)。也即是说,CPU12判定在由验证命令指定的LBA范围内是否剩有尚未进行对用户数据的验证处理的另一分区的LBA。
在存在另一分区的验证对象的LBA的情况下(步骤S611:是),CPU12的处理回到步骤S601,进行以该另一分区的LBA为对象的处理。
另一方面,在没有另一分区的验证对象的LBA的情况下(步骤S611:否),即完成了对于与由验证命令指定的LBA范围对应的所有分区的验证处理的情况下,CPU12结束验证命令处理。
通过以上的验证命令处理,CPU12能更新验证状况管理表23。具体而言,CPU12对与由验证命令指定的LBA范围对应的一个以上的分区各自的用户数据的完整性进行验证。而且,CPU12将与确认了完整性的用户数据的分区相关联的最终确认时间更新。由此,能够在存储***3中管理存储于各分区的用户数据的完整性的最终确认时间。
图21是表示由CPU12执行的验证命令处理的步骤的另一例的流程图。CPU12根据从主机2接收到指定了容许时间范围的验证命令(第2验证命令)而执行该验证命令处理。在此,例示验证命令指定了成为验证处理的对象的LBA范围的情况。另外,假设所指定的LBA范围可能对应于一个以上的分区。
首先,CPU12决定验证对象的LBA(对象LBA)(步骤S701)。CPU12确定包括对象LBA的分区(对象分区)(步骤S702)。然后,CPU12从验证状况管理表23取得与对象分区相关联的最终确认时间(步骤S703)。
CPU12判定所取得的最终确认时间是否在由验证命令指定的容许时间范围内(步骤S704)。
在取得的最终确认时间在容许时间范围外的情况下(步骤S704:否),CPU12通过步骤S705到步骤S712的处理,进行用于验证对象LBA的用户数据的完整性并将验证完成到末端的分区的验证结果通知给主机2的处理。步骤S705到步骤S712的处理与如上参照图20所述的验证命令处理的步骤S603到步骤S610的处理是同样的,因此省略其说明。然后,CPU12判定是否存在另一分区的验证对象的LBA(步骤S713)。在存在另一分区的验证对象的LBA的情况下(步骤S713:是),CPU12的处理回到步骤S701,进行以该另一分区的LBA为对象的处理。另一方面,在没有另一分区的验证对象LBA的情况下(步骤S713:否),CPU12结束验证命令处理。
在取得的最终确认时间在容许时间范围内的情况下(步骤S704:是),CPU12判定是否存在另一分区的验证对象的LBA(步骤S713)。在存在另一分区的验证对象的LBA的情况下(步骤S713:是),CPU12的处理回到步骤S701,进行以该另一分区的LBA为对象的处理。另一方面,在没有另一分区的验证对象的LBA的情况下(步骤S713:否),CPU12结束验证命令处理。也即是说,在取得的最终确认时间在容许时间范围内的情况下,CPU12可以不进行用于验证对象分区的用户数据的完整性的处理,而进行以另一分区为对象的处理。此外,在取得的最终确认时间在容许时间范围内的情况下,CPU12也可以将已经在容许时间范围内的时间确认过对象分区的用户数据的完整性这一情况通知给主机2。
通过以上的验证命令处理,CPU12能在与对象分区对应的最终确认时间在容许时间范围外的情况下更新验证状况管理表23。由此,能够在存储***3中管理存储于各分区的用户数据的最终确认时间。
另外,在与对象分区对应的最终确认时间在容许时间范围内的情况下,CPU12不进行用于验证对象分区的用户数据(即分配给对象分区的LBA范围的用户数据)的完整性的验证处理。也即是说,CPU12不对在容许时间范围内已确认了用户数据的完整性的分区进行验证处理。如此,CPU12通过利用记录于验证状况管理表23的最终确认时间,能减少从NAND型闪速存储器5读取各分区的用户数据的次数。因此,能够减轻NAND型闪速存储器5的疲弊。
图22是表示由CPU12执行的巡检处理所附带的验证处理的步骤的例子的流程图。CPU12例如每隔一定时间执行巡检处理以及巡检处理所附带的验证处理。
首先,CPU12通过步骤S801到步骤S806的处理,进行对NAND型闪速存储器5的巡检处理。巡检处理是用于检测NAND型闪速存储器5所包含的多个区块中的、存储有误比特数超过阈值的数据的各个区块的处理。CPU12例如在检测到的区块的物理地址与某个分区所包含的LBA对应的情况下,向主机2通知该分区的复位或者变更。
具体而言,CPU12决定读取对象的物理地址(步骤S801)。CPU12从NAND型闪速存储器5读取对象物理地址的数据(步骤S802)。然后,CPU12使用分区-物理地址转换表25,取得与对象物理地址对应的LBA(步骤S803)。
CPU12判定是否确定了与对象物理地址对应的LBA(步骤S804)。换言之,CPU12判定读取到的对象物理地址的数据(读数据)是有效数据还是无效数据。
在没能确定与对象物理地址对应的LBA的情况下(步骤S804:否),也即是说在读数据为无效数据的情况下,CPU12的处理进入步骤S816。CPU12不对作为无效数据的读数据进行任何处理,而进入用于后续数据的处理。
在确定了与对象物理地址对应的LBA的情况下(步骤S804:是),也即是说在读数据为有效数据的情况下,CPU12确定包括所确定的LBA的分区(对象分区)(步骤S805)。然后,CPU12对读数据进行使用ECC55的纠错处理(步骤S806)。CPU12判定通过纠错处理纠正了错误的位数是否超过了阈值(步骤S807)。在通过纠错处理纠正了错误的位数超过阈值的情况下(步骤S807:是),CPU12向主机2通知对象分区的复位或者变更(步骤S808),CPU12的处理进入步骤S809。主机2可以根据该通知而将对象分区进行复位或者变更。另一方面,在通过纠错处理纠正了错误的位数为阈值以下的情况下(步骤S807:否),CPU12的处理进入步骤S809。
接下来,CPU12使用读数据进行验证处理(步骤S809)。验证处理的具体的步骤如上参照图10的流程图所述。此外,读数据是为了巡检处理而在步骤S802已读取到的数据,因此,CPU12无需为了进行验证处理而重新从NAND型闪速存储器5读取数据。
CPU12的处理根据验证处理的结果来分支(步骤S810)。
具体而言,在验证处理的结果表示用户数据的完整性得到确认的情况下(步骤S810:是),CPU12的处理进入步骤S812。另一方面,在验证处理的结果表示用户数据的完整性没有得到确认的情况下(步骤S810:否),CPU12建立对象分区的错误标志(error flag)(步骤S811),CPU12的处理进入步骤S812。错误标志表示在对应的分区内至少有一个LBA的用户数据的完整性没得到确认。也即是说,错误标志表示在对应的分区存储有完整性没得到确认的用户数据。此外,在开始进行巡检处理所附带的验证处理时,各分区的错误标志为被清除(cleared)的状态。
接下来,CPU12判定对象分区整体的验证是否完成(步骤S812)。在对象分区整体的验证未完成的情况下(步骤S812:否),CPU12的处理进入步骤S816。
在对象分区整体的验证完成的情况下(步骤S812:是),CPU12判定是否建立有对象分区的错误标志(步骤S813)。在对象分区的错误标志被清除的情况下(步骤S813:否),CPU12在验证状况管理表23中将与对象分区相关联的最终确认时间更新(步骤S814),CPU12的处理进入步骤S816。也即是说,在存储于对象分区的所有用户数据的完整性得到确认的情况下,CPU12在验证状况管理表23中将与对象分区相关联的最终确认时间更新。
另一方面,在建立有对象分区的错误标志的情况下(步骤S813:是),CPU12向主机2通知对象分区的复位或者变更(步骤S815),CPU12的处理进入步骤S816。在存储于对象分区的至少一部分用户数据的完整性没有得到确认的情况下,CPU12不在验证状况管理表23中更新与对象分区相关联的最终确认时间。
接下来,CPU12判定是否完成了对于NAND型闪速存储器5的所有数据的巡检处理(步骤S816)。也即是说,CPU12判定NAND型闪速存储器5内的区块中是否剩有尚未通过巡检处理读取的数据。
在没有完成对所有数据的巡检处理的情况下(步骤S816:否),CPU12的处理回到步骤S801,进行以尚未读取的数据为对象的处理。
另一方面,在完成了对所有数据的巡检处理的情况下(步骤S816:是),CPU12结束巡检处理以及验证处理。
通过以上的巡检处理以及验证处理,CPU12能够对通过巡检处理读取到数据也进行验证处理。由此,相比于CPU12分别进行巡检处理和验证处理的情况,能够减少从NAND型闪速存储器5读取数据的次数。因此,能够减轻NAND型闪速存储器5的疲弊并同时使数据完整。
如上所述,根据第1和第2实施方式,能够减轻非易失性存储器的疲弊并同时使数据完整。控制器4管理将NAND型闪速存储器5的存储区域进行逻辑划分得到的至少一个存储区域。控制器4管理与分别存储于至少一个存储区域中的一个以上的存储区域内的数据的完整性最后得到确认的时间有关的信息(例如验证状况管理表23)。
通过使用该信息,能够控制对分别存储于一个以上的存储区域内的数据进行验证处理的定时。据此,能够减少从NAND型闪速存储器5读取数据的次数,因此,能够减轻NAND型闪速存储器5的疲弊并同时使数据完整。
第1和第2实施方式所记载的各种功能分别也可以通过电路(处理电路)实现。处理电路的例子包括如中央处理装置(CPU)这样的被程序化的处理器。该处理器通过执行存储于存储器的计算机程序(指令集)来实现所记载的各个功能。该处理器也可以是包括电路的微型处理器。处理电路的例子也包括数字信号处理器(DSP)、面向特定用途的集成电路(ASIC)、微型控制器、控制器、其他电路部件。这些实施方式所记载的CPU以外的其他组件分别也可以通过处理电路实现。
说明了本发明的几个实施方式,但是这些实施方式是作为例子而提示的,并非意图限定发明的范围。这些新的实施方式能够以其他各种各样的方式来实施,在不脱离发明要旨的范围内能够进行各种省略、替换、变更。这些实施方式和/或其变形包含于发明的范围和/或要旨内,并且包含于技术方案中记载的发明及与其等同的范围内。
Claims (40)
1.一种存储***,可与主机连接,所述存储***具备:
具有存储区域的非易失性存储器;以及
控制器,其构成为管理将所述非易失性存储器的存储区域进行逻辑划分得到的第1存储区域和第2存储区域,
所述控制器构成为管理与分别存储于所述第1存储区域和所述第2存储区域内的数据的完整性最后得到确认的时间有关的信息,
所述控制器,根据从主机收到的验证请求,向所述主机发送与存储于所述第1存储区域或所述第2存储区域内的数据的完整性最后得到确认的时间有关的信息,
所述控制器进一步构成为,
从主机接收指定了所述第1存储区域和容许时间范围的验证请求,
根据所述验证请求,
在基于所述信息的、存储于所述第1存储区域的第1数据的完整性最后得到确认的时间在所述容许时间范围外的情况下,从所述第1存储区域读取所述第1数据,
对读取到的所述第1数据的完整性进行验证,
在读取到的所述第1数据的完整性得到确认的情况下,将与所述第1数据的完整性最后得到确认的时间有关的信息更新。
2.根据权利要求1所述的存储***,
存储于所述第1存储区域或所述第2存储区域内的数据的完整性最后得到确认的时间表示从所述数据的完整性最后得到确认起经过的时间,
所述控制器进一步构成为,
从主机接收查询;
根据所述查询,使用所述信息,将表示从存储于所述第1存储区域或所述第2存储区域内的数据的完整性最后得到确认起经过的时间中的最大值的信息发送给所述主机。
3.根据权利要求1所述的存储***,
存储于所述第1存储区域或所述第2存储区域内的数据的完整性最后得到确认的时间表示所述数据的完整性最后得到确认的时刻,
所述控制器进一步构成为,
从主机接收查询;
根据所述查询,使用所述信息,将表示存储于所述第1存储区域或所述第2存储区域内的数据的完整性最后得到确认的时刻中的最早的时刻的信息发送给所述主机。
4.根据权利要求1所述的存储***,
所述控制器进一步构成为,
从主机接收指定了所述第1存储区域的查询;
根据所述查询,将与存储于所述第1存储区域的数据的完整性最后得到确认的时间有关的信息发送给所述主机。
5.根据权利要求1所述的存储***,
所述控制器进一步构成为,
从主机接收指定了所述第1存储区域的验证请求,
根据所述验证请求,
从所述第1存储区域读取第1数据,
对读取到的所述第1数据的完整性进行验证,
在读取到的所述第1数据的完整性得到确认的情况下,将与所述第1数据的完整性最后得到确认的时间有关的信息更新。
6.根据权利要求1所述的存储***,
所述控制器进一步构成为,
进行对所述非易失性存储器的巡检处理,从所述第1存储区域读取第1数据,对读取到的所述第1数据的完整性进行验证,
在读取到的所述第1数据的完整性得到确认的情况下,将与所述第1数据的完整性最后得到确认的时间有关的信息更新。
7.根据权利要求1所述的存储***,
所述控制器使用与所述第1数据一起从所述第1存储区域读取到的保护信息,验证所述第1数据的完整性。
8.根据权利要求1所述的存储***,
所述控制器使用与所述第1数据一起从所述第1存储区域读取到的循环冗余校验码即CRC码,验证所述第1数据的完整性。
9.根据权利要求1所述的存储***,
所述第1存储区域和所述第2存储区域分别与第1和第2逻辑地址对应。
10.根据权利要求1所述的存储***,
所述第1存储区域和所述第2存储区域分别与第1和第2分区对应,
所述第1和第2分区中的每个分区与逻辑地址范围对应。
11.一种存储***,可与主机连接,所述存储***具备:
具有存储区域的非易失性存储器;以及
控制器,其构成为管理将所述非易失性存储器的存储区域进行逻辑划分得到的第1存储区域和第2存储区域,
所述控制器构成为管理与分别存储于所述第1存储区域和所述第2存储区域内的数据的完整性最后得到确认的时间有关的信息,
所述控制器,根据从主机收到的验证请求,向所述主机发送与存储于所述第1存储区域或所述第2存储区域内的数据的完整性最后得到确认的时间有关的信息,
所述控制器进一步构成为,
从主机接收指定了所述第1存储区域和容许时间范围的验证请求,
根据所述验证请求,
在基于所述信息的、存储于所述第1存储区域的第1数据的完整性最后得到确认的时间在所述容许时间范围内的情况下,跳过从所述第1存储区域的所述第1数据的读取,向所述主机通知所述第1数据的完整性已经确认这一情况。
12.根据权利要求11所述的存储***,
存储于所述第1存储区域或所述第2存储区域内的数据的完整性最后得到确认的时间表示从所述数据的完整性最后得到确认起经过的时间,
所述控制器进一步构成为,
从主机接收查询;
根据所述查询,使用所述信息,将表示从存储于所述第1存储区域或所述第2存储区域内的数据的完整性最后得到确认起经过的时间中的最大值的信息发送给所述主机。
13.根据权利要求11所述的存储***,
存储于所述第1存储区域或所述第2存储区域内的数据的完整性最后得到确认的时间表示所述数据的完整性最后得到确认的时刻,
所述控制器进一步构成为,
从主机接收查询;
根据所述查询,使用所述信息,将表示存储于所述第1存储区域或所述第2存储区域内的数据的完整性最后得到确认的时刻中的最早的时刻的信息发送给所述主机。
14.根据权利要求11所述的存储***,
所述控制器进一步构成为,
从主机接收指定了所述第1存储区域的查询;
根据所述查询,将与存储于所述第1存储区域的数据的完整性最后得到确认的时间有关的信息发送给所述主机。
15.根据权利要求11所述的存储***,
所述控制器进一步构成为,
从主机接收指定了所述第1存储区域的验证请求,
根据所述验证请求,
从所述第1存储区域读取第1数据,
对读取到的所述第1数据的完整性进行验证,
在读取到的所述第1数据的完整性得到确认的情况下,将与所述第1数据的完整性最后得到确认的时间有关的信息更新。
16.根据权利要求11所述的存储***,
所述控制器进一步构成为,
进行对所述非易失性存储器的巡检处理,从所述第1存储区域读取第1数据,对读取到的所述第1数据的完整性进行验证,
在读取到的所述第1数据的完整性得到确认的情况下,将与所述第1数据的完整性最后得到确认的时间有关的信息更新。
17.根据权利要求11所述的存储***,
所述控制器使用与所述第1数据一起从所述第1存储区域读取到的保护信息,验证所述第1数据的完整性。
18.根据权利要求11所述的存储***,
所述控制器使用与所述第1数据一起从所述第1存储区域读取到的循环冗余校验码即CRC码,验证所述第1数据的完整性。
19.根据权利要求11所述的存储***,
所述第1存储区域和所述第2存储区域分别与第1和第2逻辑地址对应。
20.根据权利要求11所述的存储***,
所述第1存储区域和所述第2存储区域分别与第1和第2分区对应,
所述第1和第2分区中的每个分区与逻辑地址范围对应。
21.一种存储***,具备:
非易失性存储器;以及
控制器,其构成为管理将所述非易失性存储器的存储区域进行逻辑划分得到的至少一个存储区域,
所述控制器构成为管理与分别存储于所述至少一个存储区域中的一个以上的存储区域内的数据的完整性最后得到确认的时间有关的信息,
分别存储于所述一个以上的存储区域内的数据的完整性最后得到确认的时间表示从所述数据的完整性最后得到确认起经过的时间,
所述控制器进一步构成为,
从主机接收查询;
根据所述查询,使用所述信息,将表示从存储于所述一个以上的存储区域中的每个存储区域内的数据的完整性最后得到确认起经过的时间中的最大值的信息发送给所述主机。
22.根据权利要求21所述的存储***,
所述控制器进一步构成为,
从主机接收指定了所述一个以上的存储区域中的第1存储区域的查询;
根据所述查询,将与存储于所述第1存储区域的数据的完整性最后得到确认的时间有关的信息发送给所述主机。
23.根据权利要求21所述的存储***,
所述控制器进一步构成为,
从主机接收指定了所述一个以上的存储区域中的第1存储区域的验证请求,
根据所述验证请求,
从所述第1存储区域读取第1数据,
对读取到的所述第1数据的完整性进行验证,
在读取到的所述第1数据的完整性得到确认的情况下,将与所述第1数据的完整性最后得到确认的时间有关的信息更新。
24.根据权利要求21所述的存储***,
所述控制器进一步构成为,
从主机接收指定了所述一个以上的存储区域中的第1存储区域和容许时间范围的验证请求,
根据所述验证请求,
在基于所述信息的、存储于所述第1存储区域的第1数据的完整性最后得到确认的时间在所述容许时间范围外的情况下,从所述第1存储区域读取所述第1数据,
对读取到的所述第1数据的完整性进行验证,
在读取到的所述第1数据的完整性得到确认的情况下,将与所述第1数据的完整性最后得到确认的时间有关的信息更新。
25.根据权利要求21所述的存储***,
所述控制器进一步构成为,
从主机接收指定了所述一个以上的存储区域中的第1存储区域和容许时间范围的验证请求,
根据所述验证请求,
在基于所述信息的、存储于所述第1存储区域的第1数据的完整性最后得到确认的时间在所述容许时间范围内的情况下,跳过从所述第1存储区域的所述第1数据的读取,向所述主机通知所述第1数据的完整性已经确认这一情况。
26.根据权利要求21所述的存储***,
所述控制器进一步构成为,
进行对所述非易失性存储器的巡检处理,从所述一个以上的存储区域中的第1存储区域读取第1数据,对读取到的所述第1数据的完整性进行验证,
在读取到的所述第1数据的完整性得到确认的情况下,将与所述第1数据的完整性最后得到确认的时间有关的信息更新。
27.根据权利要求23所述的存储***,
所述控制器使用与所述第1数据一起从所述第1存储区域读取到的保护信息,验证所述第1数据的完整性。
28.根据权利要求23所述的存储***,
所述控制器使用与所述第1数据一起从所述第1存储区域读取到的循环冗余校验码即CRC码,验证所述第1数据的完整性。
29.根据权利要求21所述的存储***,
所述至少一个存储区域分别与至少一个逻辑地址对应。
30.根据权利要求21所述的存储***,
所述至少一个存储区域分别与至少一个分区对应,
所述至少一个分区中的每个分区与逻辑地址范围对应。
31.一种存储***,具备:
非易失性存储器;以及
控制器,其构成为管理将所述非易失性存储器的存储区域进行逻辑划分得到的至少一个存储区域,
所述控制器构成为管理与分别存储于所述至少一个存储区域中的一个以上的存储区域内的数据的完整性最后得到确认的时间有关的信息,
分别存储于所述一个以上的存储区域内的数据的完整性最后得到确认的时间表示所述数据的完整性最后得到确认的时刻,
所述控制器进一步构成为,
从主机接收查询;
根据所述查询,使用所述信息,将表示存储于所述一个以上的存储区域中的每个存储区域内的数据的完整性最后得到确认的时刻中的最早的时刻的信息发送给所述主机。
32.根据权利要求31所述的存储***,
所述控制器进一步构成为,
从主机接收指定了所述一个以上的存储区域中的第1存储区域的查询;
根据所述查询,将与存储于所述第1存储区域的数据的完整性最后得到确认的时间有关的信息发送给所述主机。
33.根据权利要求31所述的存储***,
所述控制器进一步构成为,
从主机接收指定了所述一个以上的存储区域中的第1存储区域的验证请求,
根据所述验证请求,
从所述第1存储区域读取第1数据,
对读取到的所述第1数据的完整性进行验证,
在读取到的所述第1数据的完整性得到确认的情况下,将与所述第1数据的完整性最后得到确认的时间有关的信息更新。
34.根据权利要求31所述的存储***,
所述控制器进一步构成为,
从主机接收指定了所述一个以上的存储区域中的第1存储区域和容许时间范围的验证请求,
根据所述验证请求,
在基于所述信息的、存储于所述第1存储区域的第1数据的完整性最后得到确认的时间在所述容许时间范围外的情况下,从所述第1存储区域读取所述第1数据,
对读取到的所述第1数据的完整性进行验证,
在读取到的所述第1数据的完整性得到确认的情况下,将与所述第1数据的完整性最后得到确认的时间有关的信息更新。
35.根据权利要求31所述的存储***,
所述控制器进一步构成为,
从主机接收指定了所述一个以上的存储区域中的第1存储区域和容许时间范围的验证请求,
根据所述验证请求,
在基于所述信息的、存储于所述第1存储区域的第1数据的完整性最后得到确认的时间在所述容许时间范围内的情况下,跳过从所述第1存储区域的所述第1数据的读取,向所述主机通知所述第1数据的完整性已经确认这一情况。
36.根据权利要求31所述的存储***,
所述控制器进一步构成为,
进行对所述非易失性存储器的巡检处理,从所述一个以上的存储区域中的第1存储区域读取第1数据,对读取到的所述第1数据的完整性进行验证,
在读取到的所述第1数据的完整性得到确认的情况下,将与所述第1数据的完整性最后得到确认的时间有关的信息更新。
37.根据权利要求33所述的存储***,
所述控制器使用与所述第1数据一起从所述第1存储区域读取到的保护信息,验证所述第1数据的完整性。
38.根据权利要求33所述的存储***,
所述控制器使用与所述第1数据一起从所述第1存储区域读取到的循环冗余校验码即CRC码,验证所述第1数据的完整性。
39.根据权利要求31所述的存储***,
所述至少一个存储区域分别与至少一个逻辑地址对应。
40.根据权利要求31所述的存储***,
所述至少一个存储区域分别与至少一个分区对应,
所述至少一个分区中的每个分区与逻辑地址范围对应。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020-208475 | 2020-12-16 | ||
JP2020208475A JP2022095257A (ja) | 2020-12-16 | 2020-12-16 | メモリシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114637706A CN114637706A (zh) | 2022-06-17 |
CN114637706B true CN114637706B (zh) | 2024-05-24 |
Family
ID=81942447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110955607.5A Active CN114637706B (zh) | 2020-12-16 | 2021-08-19 | 存储*** |
Country Status (4)
Country | Link |
---|---|
US (1) | US11816344B2 (zh) |
JP (1) | JP2022095257A (zh) |
CN (1) | CN114637706B (zh) |
TW (1) | TWI788860B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7107272B1 (en) * | 2002-12-02 | 2006-09-12 | Storage Technology Corporation | Independent distributed metadata system and method |
CN101903866A (zh) * | 2007-11-21 | 2010-12-01 | 提琴存储器公司 | 非易失存储介质中的数据存储的方法和*** |
EP2542995A2 (de) * | 2010-03-01 | 2013-01-09 | Robert Bosch GmbH | Verfahren zum verifizieren eines speicherblocks eines nicht-flüchtigen speichers |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149946B2 (en) * | 2003-06-13 | 2006-12-12 | Microsoft Corporation | Systems and methods for enhanced stored data verification utilizing pageable pool memory |
US7173852B2 (en) * | 2003-10-03 | 2007-02-06 | Sandisk Corporation | Corrected data storage and handling methods |
TWI386795B (zh) * | 2004-03-12 | 2013-02-21 | Nvidia Corp | 具有改進之拆解及冗餘操作及介面之磁碟控制器方法及裝置 |
US7677441B2 (en) * | 2005-04-01 | 2010-03-16 | Microsoft Corporation | Relaxed currency constraints |
DE602006019010D1 (de) * | 2006-10-20 | 2011-01-27 | Fujitsu Ltd | Speicheranordnung und auffrisch-justierverfahren |
US8156392B2 (en) * | 2008-04-05 | 2012-04-10 | Fusion-Io, Inc. | Apparatus, system, and method for bad block remapping |
JP5596143B2 (ja) | 2010-06-29 | 2014-09-24 | パナソニック株式会社 | 不揮発性記憶システム、メモリシステム用の電源回路、フラッシュメモリ、フラッシュメモリコントローラ、および不揮発性半導体記憶装置 |
US9417754B2 (en) * | 2011-08-05 | 2016-08-16 | P4tents1, LLC | User interface system, method, and computer program product |
US20140351832A1 (en) | 2013-05-21 | 2014-11-27 | Samsung Electronics Co., Ltd. | Electronic device using framework interface for communication |
CN103854700B (zh) * | 2014-02-28 | 2018-05-01 | 北京兆易创新科技股份有限公司 | 一种非易失性存储器的擦除方法和装置 |
WO2015162681A1 (ja) * | 2014-04-22 | 2015-10-29 | 株式会社日立製作所 | ストレージシステムおよび記憶デバイスの制御方法 |
US11556396B2 (en) * | 2015-05-08 | 2023-01-17 | Seth Lytle | Structure linked native query database management system and methods |
US10157093B2 (en) * | 2015-05-27 | 2018-12-18 | Nxp Usa, Inc. | Data integrity check within a data processing system |
US10394634B2 (en) * | 2017-06-30 | 2019-08-27 | Intel Corporation | Drive-based storage scrubbing |
US10579538B2 (en) | 2018-02-21 | 2020-03-03 | Western Digital Technologies, Inc. | Predicting addresses in non-volatile storage |
US10649841B2 (en) * | 2018-03-05 | 2020-05-12 | Alibaba Group Holding Limited | Supporting multiple page lengths with unique error correction coding via galois field dimension folding |
US20200026427A1 (en) * | 2018-07-23 | 2020-01-23 | Reduxio Systems Ltd. | System and method for handling data storage on storage devices |
US10951544B2 (en) * | 2019-01-30 | 2021-03-16 | The Boeing Company | Apparatus and method of crosschecking data copies using one or more voter elements |
-
2020
- 2020-12-16 JP JP2020208475A patent/JP2022095257A/ja active Pending
-
2021
- 2021-05-31 TW TW110119612A patent/TWI788860B/zh active
- 2021-08-19 CN CN202110955607.5A patent/CN114637706B/zh active Active
- 2021-09-08 US US17/468,880 patent/US11816344B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7107272B1 (en) * | 2002-12-02 | 2006-09-12 | Storage Technology Corporation | Independent distributed metadata system and method |
CN101903866A (zh) * | 2007-11-21 | 2010-12-01 | 提琴存储器公司 | 非易失存储介质中的数据存储的方法和*** |
EP2542995A2 (de) * | 2010-03-01 | 2013-01-09 | Robert Bosch GmbH | Verfahren zum verifizieren eines speicherblocks eines nicht-flüchtigen speichers |
Non-Patent Citations (1)
Title |
---|
Anubis: ultra-low overhead and recovery time for secure non-volatile memories;Kazi Abu Zubair etc.;Proceedings of the 46th International Symposium on Computer Architecture;全文 * |
Also Published As
Publication number | Publication date |
---|---|
US11816344B2 (en) | 2023-11-14 |
TW202226232A (zh) | 2022-07-01 |
JP2022095257A (ja) | 2022-06-28 |
US20220188005A1 (en) | 2022-06-16 |
CN114637706A (zh) | 2022-06-17 |
TWI788860B (zh) | 2023-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7446482B2 (ja) | 順次的にプログラムするメモリサブシステムにおいて非同期電力損失をハンドリングすること | |
US9792069B2 (en) | Offline deduplication for solid-state storage devices | |
US6865658B2 (en) | Nonvolatile data management system using data segments and link information | |
JP7358594B2 (ja) | メモリシステム | |
JP2009512022A (ja) | フラッシュメモリの管理 | |
US10310764B2 (en) | Semiconductor memory device and storage apparatus comprising semiconductor memory device | |
US10642731B2 (en) | Memory management method and storage controller | |
US11263147B2 (en) | Memory system including logical-to-physical address translation table in a first cache and a compressed logical-to-physical address translation table in a second cache | |
JP7053399B2 (ja) | 情報処理システム | |
JP2000011677A (ja) | フラッシュメモリシステム | |
JP4242245B2 (ja) | フラッシュrom制御装置 | |
JP2012058770A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4488048B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP5066894B2 (ja) | 記憶媒体制御装置 | |
CN114637706B (zh) | 存储*** | |
US11853200B2 (en) | Memory system and controller to invalidate data corresponding to a logical address | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2005115562A (ja) | フラッシュrom制御装置 | |
US20150067237A1 (en) | Memory controller, semiconductor memory system, and memory control method | |
JP5204265B2 (ja) | 半導体記憶装置及び半導体記憶装置の制御方法 | |
WO2020039927A1 (ja) | 不揮発性記憶装置、ホスト装置、及びデータ記憶システム | |
JP2012068764A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
US20240202113A1 (en) | Memory system | |
US11907567B2 (en) | Memory system having a controller with a data erasure processing function | |
CN113010448B (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 |