CN113849420A - 存储器系统和控制方法 - Google Patents
存储器系统和控制方法 Download PDFInfo
- Publication number
- CN113849420A CN113849420A CN202110259414.6A CN202110259414A CN113849420A CN 113849420 A CN113849420 A CN 113849420A CN 202110259414 A CN202110259414 A CN 202110259414A CN 113849420 A CN113849420 A CN 113849420A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- blocks
- action
- secure
- 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
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/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- 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
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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/1052—Security 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2143—Clearing memory, e.g. to prevent the data from being stolen
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
总体上实施方式涉及存储器系统和用于控制存储器系统的非易失性存储器的控制方法。根据一个实施方式,存储器系统包括具有多个块的非易失性存储器。存储器系统中数据擦除动作的最小单位是一个块。控制器电连接到非易失性存储器,并被配置为响应于来自主机的第一命令而执行复制动作,该第一命令请求对存储在由第一逻辑区域识别符识别的第一逻辑区域中的安全擦除对象数据进行安全擦除,该复制动作将除了任何安全擦除对象数据以外的有效数据从存储有安全擦除对象数据的多个块中的一个或多个第一块复制到所述多个块中的一个或多个复制目的地块。在复制动作之后,控制器对所述一个或多个第一块执行数据擦除动作。
Description
相关申请的交叉引用
本申请基于2020年6月26日提交的日本专利申请No.2020-110307,并要求享受其优先权,故以引用方式将其全部内容并入本文。
技术领域
概括地说,本文描述的实施方式涉及存储器系统和用于控制存储器系统的非易失性存储器的控制方法。
背景技术
近年来,具有非易失性存储器的存储器系统已经变得非常普及。作为这样的存储器系统之一,具有NAND型闪存的固态驱动器(SSD)是众所周知的。
覆盖(overwrite)、块擦除(block erase)和加密擦除(cryptographic erase)被称为安全擦除方法,它们安全可靠地删除SSD中存储的数据。将安全擦除方法分为物理安全擦除方法和逻辑安全擦除方法,物理安全擦除方法是使存储的数据物理地且不可逆地变为不可读的擦除方法,而逻辑安全擦除方法是使存储的数据在逻辑上变为不可读的擦除方法。覆盖和块擦除中的每一个都是物理安全擦除方法的一个例子。加密擦除是逻辑安全擦除方法的一个例子。
在加密擦除中,通过物理安全擦除方法,对加密存储在SSD中的数据时使用的加密密钥进行擦除。由此,存储的数据不再能够被解密,因此可以说是在逻辑上被擦除。
近来,需要通过物理安全擦除方法,对存储在诸如SSD之类的存储器系统中的所有数据中的特定数据执行安全擦除。
发明内容
本发明的目的是,提供能够通过物理安全擦除方法来进行特定数据的安全擦除的存储器系统和控制方法。
总体上,根据一个实施方式,一种存储器系统包括具有多个块的非易失性存储器。用于数据擦除动作的最小单位是块。存储器系统中的控制器电连接到非易失性存储器。控制器被配置为:响应于来自主机的第一命令而执行复制动作,该第一命令请求对存储在由第一逻辑区域识别符识别的第一逻辑区域中的安全擦除对象数据进行安全擦除,该复制动作将除了任何安全擦除对象数据以外的有效数据从存储有安全擦除对象数据的多个块中的一个或多个第一块复制到所述多个块中的一个或多个复制目的地块。控制器还被配置为在复制动作之后,对所述一个或多个第一块执行数据擦除动作。
根据实施方式,可以通过物理安全擦除方法来安全地擦除特定数据。
附图说明
图1是包括根据第一实施方式的存储器系统的信息处理系统的框图。
图2是在根据第一实施方式的存储器系统中使用的逻辑物理地址转换表(L2P表)的图。
图3是示出在根据第一实施方式的存储器系统中管理的多个命名空间的图。
图4描述了与在根据第一实施方式的存储器系统中执行的写动作和物理安全擦除动作有关的方面。
图5是示出在根据第一实施方式的存储器系统中执行的物理安全擦除动作的过程的流程图。
图6A和图6B是示出在各块中写入的数据结构的例子的图。
图7是示出当接收到第一特定命令时未完成的I/O命令的处理过程的流程图。
图8是示出在执行第一特定命令期间接收到的I/O命令的处理过程的流程图。
图9A是示出在开始物理安全擦除动作之前,各活动块的内容的例子的图。
图9B是示出在开始物理安全擦除动作之前,各空闲块的内容的例子的图。
图10是示出在执行了解映射动作之后,各活动块的内容的例子的图。
图11A是示出在执行垃圾回收动作之后,各活动块的内容的例子的图。
图11B是示出在执行垃圾回收动作之后,各空闲块的内容的例子的图。
图12是示出在根据第二实施方式的存储器系统中执行的物理安全擦除动作的过程的流程图。
图13A是示出在根据第三实施方式的存储器系统中执行的物理安全擦除动作的过程的流程图。
图13B是示出在根据第三实施方式的存储器系统中执行的物理安全擦除动作中执行的解映射动作和垃圾回收动作的过程的流程图。
图13C是示出在根据第三实施方式的存储器系统中执行的物理安全擦除动作中执行的解映射动作和垃圾回收动作的另一过程的流程图。
图14A是示出在根据第四实施方式的存储器系统中执行的物理安全擦除动作的过程的流程图。
图14B是示出在根据第四实施方式的存储器系统中执行的物理安全擦除动作中执行的解映射动作和垃圾回收动作的过程的流程图。
图14C是示出在根据第四实施方式的存储器系统中执行的物理安全擦除动作中执行的解映射动作和垃圾回收动作的另一过程的流程图。
图15是示出根据第五实施方式的物理安全擦除动作的过程的流程图。
图16是示出根据第六实施方式的物理安全擦除动作的过程的流程图。
具体实施方式
实施方式提供了能够通过物理安全擦除方法仅对所有存储数据中的特定数据执行安全擦除的存储器系统和控制方法。
在下文中,将参考附图描述某些示例实施方式。
(第一实施方式)
将描述包括有根据第一实施方式的存储器系统的信息处理系统的配置。图1是示出包括有根据第一实施方式的存储器系统的信息处理系统1的配置示例的框图。该示例中的存储器系统是被配置为将数据写入非易失性存储器并从非易失性存储器读取数据的半导体存储设备。将该存储器系统实现为例如包括NAND型闪存的SSD 3。
信息处理系统1包括主机2(主机设备)和SSD3。主机2是被配置为控制SSD 3的信息处理设备。主机2的可能例子包括个人计算机、服务器计算机、移动终端和车载设备。
SSD 3可以经由电缆或网络连接到主机2。或者,可以将SSD 3内置或安装在主机2内。
SSD 3包括控制器4和非易失性存储器(例如,NAND型闪存5)。SSD3还可以具有随机存取存储器,例如,动态随机存取存储器(DRAM)6。
NAND型闪存5包括具有以矩阵状排列的多个存储单元的存储单元阵列。NAND型闪存5可以是二维结构类型的闪存或者三维结构类型的闪存。
NAND型闪存5的存储单元阵列包括多个块BLK0至BLKx-1。块BLK0至BLKx-1中的每一个包含多个页面(page)(这里,页面P0至Py-1)。每个页面包含连接到同一字线的多个存储单元。各个块BLK0至BLKx-1是用于擦除NAND型闪存5的数据的数据擦除动作(在下文中,也称为块擦除)的单位。在该上下文中,这些块也称为“擦除块”、“物理块”或“物理擦除块”。页面P0至Py-1是数据写入动作和数据读取动作的单位。
控制器4可以由诸如片上系统(SoC)之类的电路来实现。控制器4经由NAND接口13电连接至NAND型闪存5,其中NAND接口13与触发NAND闪存接口或开放NAND闪存接口(ONFI)兼容,但并不限于此。控制器4作为被配置为控制NAND型闪存5的存储器控制器而动作。
控制器4可以用作被配置为执行NAND型闪存5的数据管理和块管理的闪存转换层(FTL)。
由FTL执行的数据管理包括:(1)表示每个逻辑区域识别符和NAND型闪存5的每个物理地址之间的对应关系的映射信息的管理;以及(2)用于隐藏NAND型闪存5的限制(例如,页面单位的读/写动作和块单位的擦除动作)的处理。
逻辑区域识别符可以是命名空间识别符、逻辑地址、或者命名空间识别符和逻辑地址的组合。
在该上下文中,主机2使用逻辑地址来指定SSD 3的逻辑地址空间中的地址。作为逻辑地址,可以使用逻辑块地址(寻址)(LBA)或键值存储(key value store)的键(key)。
控制器4被配置为创建和管理多个命名空间。所述多个命名空间是彼此独立的逻辑地址范围。使用所述多个命名空间使一个存储设备如该设备是多个单独的/不同的存储设备那样动作。主机2使用所述多个命名空间来访问SSD3。主机2使用命名空间识别符来指定命名空间。
通过使用称为逻辑到物理地址转换表(L2P表)37的地址转换表,来执行对于主机2用来访问SSD 3的每个逻辑区域识别符和NAND型闪存5的每个物理地址(物理块地址)PBA之间的映射的管理。L2P表中的逻辑区域识别符包括逻辑地址。控制器4使用L2P表37来管理每个逻辑区域识别符和每个物理地址之间的映射。与某个逻辑区域识别符相对应的物理地址表示NAND型闪存5中的与该逻辑区域识别符相对应的数据最新被写入的物理存储位置。当SSD 3的电源开启(启动)时,可以将L2P表37从NAND型闪存5加载到DRAM 6中。
当使用LBA作为逻辑区域识别符时,L2P表37以预定的管理大小(称为簇:cluster)来管理每个LBA和每个物理地址PBA之间的映射。当LBA所指定的扇区的大小小于簇的大小时,表示每个簇中的每个扇区的数据是有效数据还是无效数据的位图数据也可以存储在L2P表37中。
当使用键值存储的键作为逻辑区域识别符时,L2P表37可以管理例如以下项之间的对应关系:每个键的哈希值、指向每个键的指针、与每个键相对应的唯一编号、与每个键相对应的值的大小、以及包括有存储了与每个键相对应的值的一个或多个物理地址的物理地址列表,但不限于此。
图2是示出L2P表37的配置示例的图。这里,将描述当将诸如LBA之类的逻辑地址用作逻辑区域识别符时的L2P表37的配置示例。L2P表37以被称为簇的预定管理大小的单位,来管理SSD 3的逻辑地址空间中的每个逻辑地址与NAND型闪存5的物理地址空间中的每个物理地址之间的映射。单个簇的大小是逻辑地址所指定的扇区(当逻辑地址是LBA时,也称为逻辑块)的大小的整数倍。扇区大小的例子是512B或4KiB,簇大小的例子是4KiB。在大容量SSD中,簇的大小可以大于4KiB。与多个簇相对应的数据可以存储在单个页面中。单个页面的大小的例子是16KiB。
在L2P表37中,与某个逻辑地址相对应的物理地址表示NAND型闪存5中写入与该逻辑地址相对应的数据的最新物理存储位置。
L2P表37包括分别对应于多个逻辑地址的多个条目(entry)。对应于某个逻辑地址的每个LP2表条目,存储有与该逻辑地址相关联的物理地址。例如,如果控制器4将与某个逻辑地址相对应的数据写入NAND型闪存5中的某个物理存储位置,则控制器4更新L2P表37以将表示该存储位置的物理地址PBA与该逻辑地址相关联。
图2示出了其中物理地址PBA0、PBA2、PBA1、PBA4、PBA5和PBA6分别与逻辑地址0x000、0x001、0x002、0x005、0x006和0x007相关联的情况。当与某个逻辑地址相对应的数据尚未写入NAND型闪存5时,可以将预定的常数(例如,NULL:空值)存储在与该逻辑地址相对应的条目中。
返回到图1的描述,在NAND型闪存5中,在包含页面的块的每个擦除周期(编程/擦除周期)中,只能将数据写入该页面一次。也就是说,不能直接将新数据覆盖到块中已写入数据的区域中。因此,当在擦除周期之前更新已经写入的数据时,控制器4将新的(更新的)数据写入到该块(或其它块)中仍未写入的区域,并将先前写入的数据视为无效数据。换句话说,控制器4将与某个逻辑区域识别符相对应的更新数据写入另一个物理存储位置,而不是写入与该逻辑区域识别符相对应的先前数据所存储的物理存储位置。然后,控制器4更新L2P表37,以将用于新写入的物理存储位置的新物理地址与该逻辑区域识别符相关联,并使先前的数据位置无效。
由FTL执行的块管理还可以包括缺陷块(坏块)、磨损均衡(wear leveling)和垃圾回收(garbage collection)(压缩:compaction)的管理。
磨损均衡是用于均衡每个块的重写次数(编程/擦除周期的次数)的动作。
垃圾回收是用于减少有效数据和无效数据共存的块的数量,以增加空闲(free)块的数量的动作。在该上下文中,空闲块是指不包含有效数据的块。
在该上下文中,有效数据是指存储在与某个逻辑区域识别符相关联的逻辑区域中的最新数据。例如,可以通过L2P表37来参考/寻址的物理存储位置中存储的数据(即,作为最新数据与逻辑区域识别符相关联的数据)是有效数据。有效数据是以后可能会从主机2被读取的数据。
在该上下文中,无效数据是指当前存储在L2P表37中没有相应的逻辑地址关联的物理存储位置中的数据。例如,存储在不能通过L2P表37进行参考的物理存储位置中的数据(即,作为最新数据不与任何逻辑区域识别符相关联的数据)为无效数据。无效数据是不再可能从主机2被读取的数据。当更新数据存储在与某个逻辑区域识别符相关联的逻辑区域中时,之前存储在关联逻辑区域中的任何有效数据成为无效数据,并且更新数据成为与该逻辑区域识别符相关联存储的新有效数据。另外,如果对于与某个逻辑区域识别符相关联的逻辑区域执行解映射动作(将在后面进一步描述),则先前存储在该逻辑区域中的有效数据随后变为无效数据。
在垃圾回收中,控制器4将有效数据和无效数据共存的几个块的有效数据一起复制到其它块(例如,空闲块)。控制器4更新L2P表37,以将复制目的地物理地址映射到复制后的有效数据的每个逻辑区域识别符。在将有效数据复制到另一个块之后,仅包含无效数据的块被释放(指定)为空闲块。由此,在数据擦除动作之后,可以重新使用该块以写入数据。
除了上面所描述的NAND接口(I/F)13,控制器4还包括主机接口(I/F)11、CPU 12、DRAM接口(I/F)14、直接存储器访问控制器(DMAC)15、静态RAM(SRAM)16和ECC编码/解码部17。主机I/F 11、CPU 12、NAND I/F 13、DRAM I/F 14、DMAC 15、SRAM 16和ECC编码/解码部17通过总线10互连。
主机I/F 11是被配置为执行与主机2的通信的主机接口电路。主机I/F 11可以是例如SATA接口控制器、SAS接口控制器、PCIe控制器或以太网控制器。
主机I/F 11从主机2接收各种命令。SATA接口使用ATA标准定义的ATA命令,SAS接口使用SCSI标准定义的SCSI命令,而PCIe接口和以太网接口使用由NVM Express(NVMe)标准定义的NVMe命令。这些命令包括写命令、读命令和解映射命令。
写命令是请求SSD 3将用户数据(要写入的用户数据也称为“写入数据”)写入被映射到由逻辑区域识别符表示的区域的NAND型闪存5的区域的命令(也称为“写入请求”)。当使用逻辑地址(特别是LBA)和命名空间识别符的组合作为逻辑区域识别符时,写命令可以例如包括识别某个命名空间的命名空间识别符、该命名空间中的逻辑地址(起始LBA)、写数据的大小(例如,要写入的扇区的数量)、以及表示主机2的存储器中存储该写入数据的位置的数据指针(例如,缓冲区地址等)。起始LBA表示在写入数据应写入的逻辑区域中的一个或多个扇区中的第一扇区的LBA。
读命令是请求SSD 3从被映射到由读命令所指定的逻辑区域识别符所表示的区域的NAND型闪存5的区域读取数据的命令(也称为“读取请求”)。当使用逻辑地址(特别是LBA)和命名空间识别符的组合作为逻辑区域识别符时,读命令可以包括:识别某个命名空间的命名空间识别符、该命名空间中的逻辑地址(起始LBA)、要读取的数据大小(扇区数量)、以及表示该数据应被传输的主机2的存储器中位置的数据指针(缓冲区地址)。起始LBA表示存储有应读取的数据的逻辑区域中的一个或多个扇区中的第一扇区的LBA。
解映射(unmap)命令向SSD 3通知解映射对象逻辑区域通知作为逻辑区域识别符。解映射命令是从L2P表37中删除表示与该逻辑区域相对应的NAND型闪存5的物理区域的信息,并使该物理区域中记录的数据无效的命令。当使用逻辑地址(特别是LBA)和命名空间识别符的组合作为逻辑区域识别符时,控制器4在与解映射命令所指定的所有逻辑地址范围(LBA范围)相对应的L2P表37的条目中存储NULL值,或者从这些条目中的每个条目里删除物理地址。该解映射动作会使与此LBA范围内的每个LBA相关联的数据无效。
可以从主机2接收的命令,可以是请求对存储在特定逻辑区域中的特定安全擦除对象数据进行安全擦除的命令。这样的命令可以称为特定安全擦除命令、对象安全擦除命令,或者更简单地称为对象擦除命令。该特定逻辑区域是通过主机2指定的逻辑区域识别符在逻辑上识别的区域。
安全擦除对象数据包括当前存储在特定逻辑区域中的数据和先前存储在该特定逻辑区域中的数据。当前存储在特定逻辑区域中的数据是指当前存储在该特定逻辑区域中的有效数据。先前存储在特定逻辑区域中的数据是指例如通过将更新数据写入该特定逻辑区域而被无效的无效数据。在SSD 3中,由于将更新数据写入到另一个物理存储位置,而不是写入用于存储旧数据的物理存储位置,因此可以在将旧数据作为无效数据保留在旧物理存储位置的同时来更新数据。安全擦除对象数据还包括这样的无效数据。
在下面的描述中,要被安全擦除的特定逻辑区域可以称为安全擦除对象逻辑区域,并且当前存储在该安全擦除对象逻辑区域中的和/或先前已存储在该安全擦除对象逻辑区域中的数据可以称为安全擦除对象数据。通过逻辑区域识别符,在逻辑上识别安全擦除对象逻辑区域。
例如,特定的安全擦除命令是指定用于识别安全擦除对象逻辑区域的逻辑区域识别符,并且还请求安全擦除对象数据的安全擦除的命令。
或者,特定的安全擦除命令可以是请求对安全擦除对象数据进行安全擦除,而无需指定用于识别安全擦除对象逻辑区域的逻辑区域识别符的命令。在这种情况下,主机2首先向SSD3发送一个或多个命令,所述一个或多个命令指定用于识别安全擦除对象逻辑区域的逻辑区域识别符。然后,主机2向SSD 3发送请求对安全擦除对象数据进行安全擦除的特定安全擦除命令。
当识别安全擦除对象逻辑区域的逻辑区域识别符是命名空间识别符时,安全擦除对象逻辑区域是由命名空间识别符识别的命名空间。在这种情况下,安全擦除对象数据是当前存储在命名空间识别符所识别的命名空间中的和/或已存储在命名空间识别符所识别的命名空间中的数据。
也就是说,在控制器4被配置为管理由多个命名空间识别符分别识别的多个命名空间的情况下,可以将这些命名空间识别符用作识别安全擦除对象命名空间的逻辑区域识别符。
当识别安全擦除对象逻辑区域的逻辑区域识别符是诸如LBA的逻辑地址时,安全擦除对象逻辑区域是通过逻辑地址来识别的扇区,而安全擦除对象数据是当前存储在该逻辑地址所识别的扇区中的数据和/或已存储在该逻辑地址所识别的扇区中的数据。当存在多个命名空间时,可以使用命名空间识别符和逻辑地址的组合作为识别该安全擦除对象逻辑区域的逻辑区域识别符。
特定的安全擦除命令可以指定用于识别一个或多个安全擦除对象扇区的一个或多个逻辑地址。在这种情况下,特定的安全擦除命令可以指定逻辑地址范围(例如,由逻辑地址和从该逻辑地址开始的扇区数量指定的LBA范围,其中该逻辑地址表示逻辑区域的开头)。当期望为安全擦除对象设置多个逻辑地址范围时,主机2可以首先向SSD 3发送分别指定安全擦除对象逻辑地址范围的多个命令,然后可以向SSD3发送请求将先前识别的安全擦除对象数据进行安全擦除的特定安全擦除命令。该特定安全擦除命令还可以包括多个参数,这些参数指定要作为对象的多个逻辑地址范围。另外,在这种情况下,如果存在多个命名空间,则命名空间识别符和逻辑地址范围的组合可以是用于识别安全擦除对象逻辑区域的单个逻辑区域识别符。
当控制器4支持键值存储时,可以使用键值存储的键作为识别安全擦除对象逻辑区域的逻辑区域识别符。在这种情况下,安全擦除对象逻辑区域是其中存储有由该键值所识别的值的逻辑区域,而安全擦除对象数据是当前存储在该键值所识别的逻辑区域中的数据和/或已存储在该键值所识别的逻辑区域中的数据。特定的安全擦除命令可以指定用于识别一个或多个安全擦除对象值的一个或多个键值。
在第一实施方式中,使用命名空间识别符和逻辑地址(LBA)的组合作为例如写命令或读命令这样的I/O命令所指定的逻辑区域识别符。I/O命令指定的命名空间识别符和逻辑地址(LBA)的组合,表示访问对象逻辑区域。当控制器4支持键值存储时,键值存储的键或者命名空间识别符和键的组合表示访问对象逻辑区域。
图3是示出在SSD 3中管理的多个命名空间的图。
图3示出了控制器4管理命名空间NS#1(NS#1)、命名空间NS#2(NS#2)和命名空间NS#3(NS#3)的情况。每个命名空间均由命名空间识别符(NSID)来识别。每个命名空间包含一组多个连续的逻辑地址(LBA)。与每个命名空间相对应的逻辑地址范围从LBA0开始。每个命名空间可以设置为任何大小。每个命名空间的大小对应于每个命名空间中包含的LBA的数量。
图3示出了以下的情况:命名空间NS#1包括从LBA0到LBA(i-1)的多个连续的LBA,命名空间NS#2包括从LBA0到LBA(j-1)的多个连续的LBA,而命名空间NS#3包括从LBA0到LBA(k-1)的多个连续的LBA。
当命名空间NS#1、命名空间NS#2和命名空间NS#3由控制器4管理时,可以为每个命名空间定义基地址(base address),使得通过使用单个L2P表37,将命名空间NS#1、命名空间NS#2和命名空间NS#3映射到SSD 3的单个内部逻辑地址空间。或者,可以为每个命名空间创建L2P表37。
返回参考图1的描述,CPU 12是被配置为控制主机I/F 11、NAND I/F13、DRAM I/F14、DMAC 15、SRAM 16和ECC编码/解码部17的处理器。CPU 12通过响应于SSD 3的电源接通将控制程序(固件)从NAND型闪存5或ROM(没有示出)加载到SRAM 16上并执行该固件,来执行各种处理。可以将固件加载到DRAM 6上。例如,CPU 12可以执行用于处理来自主机2的各种命令的命令处理。通过上面所提及的固件来控制CPU 12的动作。可以通过控制器4中的专用硬件来执行命令处理的一部分或全部。
该固件使CPU 12用作命名空间管理部21、写控制部22、读控制部23和擦除控制部24。
例如,命名空间管理部21基于从主机2接收的命名空间管理命令,执行命名空间的创建、管理和删除。
写控制部22处理经由主机I/F 11从主机2接收的写命令。例如,该写命令指定命名空间识别符(NSID)、起始LBA和写入数据的大小。写控制部22经由NAND I/F 13,将与经由主机I/F 11从主机2接收的写命令相关联的写入数据写至NAND型闪存5。然后,写控制部22更新L2P表37,使得与写入数据相对应的每个LBA与该写入数据所写入的物理地址相关联。
读控制部23处理经由主机I/F 11从主机2接收的读命令。例如,该读命令指定命名空间识别符(NSID)、起始LBA以及读取对象数据的大小。读控制部23通过参考L2P表37,来获取存储有读取对象数据的物理地址。然后,读控制部23经由NAND I/F 13,从NAND型闪存5读出读取对象数据。
响应于经由主机I/F 11从主机2接收到的特定安全擦除命令,擦除控制部24通过物理安全擦除方法,对存储在由逻辑区域识别符所识别的安全擦除对象逻辑区域中的安全擦除对象数据进行安全擦除。擦除控制部24可以包括解映射部24a、垃圾回收(GC)部24b和安全擦除部24c。
解映射部24a执行使安全擦除对象数据无效的解映射动作。例如,解映射部24a对识别安全擦除对象逻辑区域中的所有逻辑区域的逻辑区域识别符进行解映射。
GC部24b选择存储了安全擦除对象数据和除了安全擦除对象数据之外的数据中的有效数据的每个块作为GC对象块(复制源块)。安全擦除对象数据可以是安全擦除对象逻辑区域中的有效数据和/或无效数据。除了安全擦除对象数据之外的数据中的有效数据,是存储在除了安全擦除对象逻辑区域之外的逻辑区域中的有效数据。GC部24b执行复制动作,该复制动作仅将除了安全擦除对象数据之外的数据中的有效数据从复制源块复制到复制目的地块。通过解映射动作和复制动作,复制源块成为在其中未存储有效数据的块。
在执行复制动作之后,安全擦除部24c至少对包括复制源块的存储安全擦除对象数据的块执行数据擦除动作,从而通过物理安全擦除方法对安全擦除对象数据进行安全擦除。
下面描述控制器4中的其它组件。
NAND I/F 13是被配置为在CPU 12的控制下,控制NAND型闪存5的NAND控制器。
DRAM I/F 14是被配置为在CPU 12的控制下,控制DRAM 6的DRAM控制器。
DRAM 6的存储区域的一部分可以用作写缓冲器31、读缓冲器32和命令缓冲器33。此外,DRAM 6的存储区域的一部分可以用作安全擦除对象块列表34、空闲块列表35、活动块列表36和存储L2P表37的区域。
写缓冲器31临时地存储要写入到NAND型闪存5的数据。
读缓冲器32临时地存储从NAND型闪存5读取的数据。
命令缓冲器33临时地存储从主机2接收的命令,直到该命令被执行为止。
安全擦除对象块列表34存储在其中存储有安全擦除对象数据的每个块的块识别符。
空闲块列表35存储每个空闲块的块识别符。空闲块是其中没有存储有效数据的块。
活动块列表36存储每个活动块(active bloc)的块识别符。活动块是存储有效数据的块。
接下来,将描述通过物理安全擦除方法安全且可靠地擦除数据的动作(以下称为物理安全擦除动作)。
图4示出了在SSD 3中执行的写动作和物理安全擦除动作的概述。在描述物理安全擦除动作之前,首先描述写动作。
写控制部22将写入数据写到写缓冲器31。当未分配写目的地块56时,写控制部22从空闲块列表35所管理的空闲块中选择一个空闲块,并对所选择的空闲块执行块擦除,以将进行了块擦除的空闲块分配为写目的地块56。
写控制部22将写缓冲器31的写入数据写到写目的地块56的可写页面。写控制部22更新L2P表37。当将写入数据写到写目的地块56时,写目的地块56成为在其中部分地写入数据的块(在下文中,也称为写入途中的块)。由于写入途中的块也存储有效数据,因此将该块作为活动块进行管理。
当由于写目的地块56写入数据已满而在写目的地块56中没有可写页面时,写控制部22分配新的空闲块作为写目的地块,并将写缓冲器31的写入数据写到新分配的写目的地块的可写页面。
接下来,将描述在物理安全擦除动作中执行的解映射动作和垃圾回收动作。
当从主机2接收到表示对逻辑区域识别符所指定的逻辑区域中的数据进行安全擦除的特定安全擦除命令时,解映射部24a对识别该特定安全擦除命令所指定的所有逻辑区域的逻辑区域识别符进行解映射。换句话说,解映射部24a执行使安全擦除对象数据无效的解映射动作。由此,所有安全擦除对象数据变为无效数据。没有有效数据的活动块从活动块列表36中删除,并且该块替代地由空闲块列表35进行管理。
然后,GC部24b执行垃圾回收动作。在该垃圾回收动作中,GC部24b仅将除了安全擦除对象数据之外的数据中的有效数据从存储有安全擦除对象数据的一个或多个第一块复制到一个或多个复制目的地块。除了安全擦除对象数据之外的数据是未被指定为安全擦除对象数据的数据。
由此,活动块组不包括其中安全擦除对象数据和除安全擦除对象数据之外的数据中的有效数据共存的块。由于一个或多个第一块(复制源块)不包括除了安全擦除对象数据之外的数据中的有效数据,因此可以将所述一个或多个第一块中的每一个作为空闲块进行处理。因此,所述一个或多个第一块从活动块列表36中移除,并且所述一个或多个第一块替代地由空闲块列表35进行管理。
接下来,将描述由GC部24b执行的垃圾回收动作的详细示例。例如,安全擦除对象数据是以下中的任何一项:(i)当特定的安全擦除命令仅指定命名空间识别符时,由该命名空间识别符所识别的安全擦除对象命名空间的数据(用户数据);(ii)当特定的安全擦除命令指定命名空间识别符和LBA范围的组合时,由该命名空间识别符和该LBA范围识别的逻辑区域中的数据;以及(iii)当特定的安全擦除命令指定键值存储的键时,由该键值所识别的值。
GC部24b选择存储安全擦除对象数据的活动块作为复制源块52。
GC部24b从空闲块列表35所管理的空闲块中选择单个空闲块。GC部24b对所选择的空闲块执行块擦除。然后,GC部24b将块擦除后的空闲块分配为复制目的地块54。
GC部24b从复制源块52向复制目的地块54复制除了安全擦除对象数据之外的数据之中的有效数据,即,非安全擦除对象有效数据。GC部24b更新L2P表37以将表示复制了有效数据的复制目的地物理存储位置的物理地址与该被复制的有效数据的逻辑区域识别符建立对应。复制源块52中的安全擦除对象数据保持解映射状态。将复制了有效数据的复制目的地块54成为活动块,并由活动块列表36进行管理。
当对复制源块52中的所有有效数据复制完成时,复制源块52变为空闲块,并由空闲块列表35进行管理。
GC部24b选择存储安全擦除对象数据的其它活动块作为新的复制源块52。GC部24b将非安全擦除对象有效数据从新复制源块52复制到复制目的地块54。GC部24b更新L2P表37,以将表示复制了有效数据的复制目的地物理存储位置的物理地址与该被复制的有效数据的逻辑区域识别符建立对应。复制源块52中的安全擦除对象数据保持解映射状态。
当复制目的地块54数据已满时(即,当复制目的地块54中没有可写页面时),GC部24b从空闲块列表35所管理的空闲块中选择单个空闲块。GC部24b对所选择的空闲块执行块擦除。然后,GC部24b将块擦除后的空闲块分配为新的复制目的地块54。
由于有效数据的复制已完成的复制源块被空闲块列表35作为空闲块进行管理,因此可以将这样的复制源块重新用作复制目的地块54。GC部24b可以选择通过复制动作形成为空闲块的复制源块作为复制目的地块。在这种情况下,GC部24b对该选择的块执行块擦除。由此,擦除了通过复制动作成为空闲块的复制源块中的安全擦除对象数据。GC部24b将块擦除后的块分配为新的复制目的地块54。然后,GC部24b将非安全擦除对象有效数据从复制源块52复制到复制目的地块54。通过以这种方式将成为空闲块的复制源块重新使用为复制目的地块54,复制源块的安全擦除对象数据通过块擦除而被删除,并且被非安全擦除对象有效数据覆盖。
以此方式,GC部24b通过复制动作,至少对成为其中没有存储有效数据的空闲块的复制源块执行块擦除。
当对存储安全擦除对象数据的所有活动块完成垃圾回收动作时,除了空闲块之外,其它任何块中都不存在安全擦除对象数据。
接下来,将描述在物理安全擦除动作中执行的上述块擦除动作的例子。
在执行垃圾回收动作之后,安全擦除部24c至少对空闲块列表35所管理的空闲块之中存储有安全擦除对象数据的一个或多个第一空闲块执行块擦除。
在此,所述一个或多个第一空闲块包括:(i)在通过复制动作而成为未存储有效数据的空闲块的一个或多个复制源块中、未被用作复制目的地块的一个或多个块;以及(ii)在垃圾回收动作开始之前存在并且存储了安全擦除对象逻辑区域中的无效数据的空闲块中、未被用作复制目的地块的一个或多个空闲块。在(ii)中,安全擦除对象逻辑区域中的无效数据包括:在安全擦除对象逻辑区域中的数据中、在物理安全擦除动作开始之前已经无效的数据。
安全擦除部24c执行用于从由空闲块列表35管理的空闲块中找到与(i)相对应的空闲块和与(ii)相对应的空闲块的处理,并且至少对找到的每个空闲块执行块擦除。或者,安全擦除部24c可以至少对空闲块列表35管理的所有空闲块中的每一个空闲块执行块擦除。
结果,通过至少块擦除,在垃圾回收动作之后作为空闲块而留下的每个块中存储的安全擦除对象数据被安全地擦除。此外,通过覆盖(即,块擦除+覆盖)来安全地擦除在被重用为复制目的地块的几个块中存储的安全擦除对象数据。
在执行垃圾回收动作之后,安全擦除部24c可以对存储安全擦除对象数据的每个空闲块执行块擦除,并且可以进一步在每个空闲块上写入诸如全零、全1或其组合之类的特定数据模式。因此,所有安全擦除对象数据通过块擦除和基于特定的数据模式的重写被安全地擦除。
在下文中,假设请求对特定命名空间的数据进行安全擦除的第一特定命令是特定的安全擦除命令。在该例子中,第一特定命令将识别特定命名空间的命名空间识别符使用为表示安全擦除对象逻辑区域的逻辑区域识别符。
图5是示出在根据第一实施方式的存储器系统中执行的物理安全擦除动作的过程的流程图。
当控制器4从主机2接收到命令时(步骤S102),CPU 12判断该接收到的命令是否是第一特定命令(步骤S104)。
当确定接收到的命令不是第一特定命令时(步骤S104中为“否”),CPU12根据接收到的命令执行处理(步骤S106)。
当确定接收到的命令是第一特定命令时(步骤S104中为“是”),解映射部24a执行使安全擦除对象命名空间的所有数据无效的解映射动作(步骤S112)。
在步骤S112中,例如,解映射部24a从与安全擦除对象命名空间的所有LBA相对应的L2P表37的各个条目中删除物理地址。解映射部24a还在这些条目中存储空(NULL)值。通过该解映射动作,使得L2P表37中与安全擦除对象命名空间相对应的所有簇成为无效状态。也就是说,与对应于安全擦除对象命名空间的所有簇相关联的数据,在内部被识别为可以进行丢弃的数据。结果,安全擦除对象命名空间中的所有数据均变为无效数据。
当存储在某个活动块中的所有数据都是安全擦除对象数据时,在解映射动作结束时,该活动块将成为仅存储无效数据的空闲块。
当某个活动块同时存储安全擦除对象数据和非安全擦除对象命名空间的有效数据时,在解映射动作结束时,该活动块存储安全擦除对象数据中的无效数据和非安全擦除对象命名空间的有效数据。
GC部24b执行垃圾回收动作(GC动作),使得在其中共存安全擦除对象数据(无效数据)和非安全擦除对象命名空间的有效数据的块从活动块组中消失(步骤S114)。
GC部24b至少选择存储了安全擦除对象命名空间的无效数据的所有活动块作为GC对象块(即,复制源块)。或者,当简单地执行垃圾回收动作时,GC部24b可以至少选择存储无效数据的所有活动块作为复制源块,而不管该无效数据是否是安全擦除对象命名空间的无效数据。
GC部24b可以将被选择为复制源块的每个活动块的块识别符保存在安全擦除对象块列表34中。
GC部24b可以基于例如图6A和6B中所示的信息,来检查块存储了哪些命名空间数据。
图6A和6B示出了写入到块的数据结构的例子。在图6A的例子中,将一对命名空间识别符和LBA以及通过该对所识别的数据写在每个页面上。因此,GC部24b可以通过读取每个页面上的命名空间识别符和LBA的对,来判断包含该页面的块是否存储安全擦除对象命名空间的数据。
在写入到块的数据结构的另一个例子中,如图6B中所示,除了图6A中的信息之外,在包含该块中的数据的命名空间的命名空间识别符的列表被写入任何页面(例如,最后一页)。因此,GC部24b可以通过仅读取存储在每个块的最后一页中的命名空间识别符的列表,来判断该块是否存储安全擦除对象命名空间的数据,而无需读取每个块的所有页面。
返回参考图5的步骤S114的描述,GC部24b从空闲块中选择任意的一个空闲块。GC部24b对所选定的空闲块执行块擦除。GC部24b将块擦除后的空闲块分配为复制目的地块54。
GC部24b从复制源块52向复制目的地块54复制除了安全擦除对象数据之外的数据中的有效数据、即非安全擦除对象命名空间的有效数据。GC部24b更新L2P表37,以对非安全擦除对象命名空间的有效数据的每个LBA与每个复制对象物理地址进行映射。
当复制了非安全擦除对象命名空间的有效数据时,复制源块52的非安全擦除对象命名空间的有效数据变为无效数据。由于在复制动作之前未解除安全擦除对象命名空间的所有LBA的映射,因此复制源块52的所有数据在复制动作之后均为无效数据。因此,当存储在复制源块52中的非安全擦除对象命名空间的所有有效数据被复制到复制目的地块时,复制源块52成为空闲块。因此,当将所有复制源块的非安全擦除对象命名空间的所有有效数据复制到几个复制目的地块时,除了空闲块之外,不存在安全擦除对象数据。换句话说,仅在几个空闲块中存在安全擦除对象命名空间的无效数据。
GC部24b判断是否满足垃圾回收动作的结束条件(步骤S122)。当从安全擦除对象命名空间的数据和非安全擦除对象命名空间的有效数据共存的块中完全复制了非安全擦除对象命名空间的所有有效数据时,安全擦除对象数据(安全擦除对象命名空间的无效数据)从活动块中消失。即,仅在空闲块中存在安全擦除对象命名空间的无效数据。因此,结束条件可以是活动块组中不再存在存储安全擦除对象命名空间的无效数据的块。
GC部24b继续执行GC动作,直到存储安全擦除对象命名空间的无效数据的块从活动块组中消失为止(步骤S114,以及在步骤S122中为“否”)。
当满足垃圾回收动作的结束条件时(在步骤S122中为“是”),GC部24b结束GC动作。此时,安全擦除对象命名空间的无效数据在空闲块之外不可能存在。
安全擦除部24c对其中存储了安全擦除对象命名空间的无效数据的每个空闲块至少执行块擦除动作(步骤S124)。被重用为复制目的地块的复制源块通过步骤S114的垃圾回收动作已经进行了块擦除。因此,通过将在步骤S114中执行的对每个复制源块的块擦除动作与步骤S124的块擦除动作进行组合,安全擦除对象命名空间的所有数据通过块擦除而被安全地擦除。
在步骤S124中,安全擦除部24c可以对其中存储有安全擦除对象命名空间的无效数据的每个空闲块执行块擦除,并且可以进一步将特定的数据模式写入这些空闲块中的每个空闲块。结果,存储在每个空闲块中的安全擦除对象命名空间的无效数据将被特定的数据模式覆盖。在被重用为复制目的地块的复制源块中存储的安全擦除对象命名空间的无效数据通过步骤S114中的垃圾回收动作,已经用其它命名空间的有效数据被覆盖。因此,通过组合步骤S114中的覆盖和步骤S124中的覆盖,安全擦除对象命名空间的所有数据通过覆盖而被安全地擦除。
安全擦除部24c可以对所有空闲块执行块擦除。因此,可以容易地执行步骤S124的处理,其对存储有安全擦除对象命名空间的无效数据的每个空闲块至少执行块擦除。
或者,为了减少执行块擦除的块的数量,安全擦除部24c可以执行用于确定存储有安全擦除对象命名空间的无效数据的一个或多个空闲块的处理,仅对所确定的一个或多个空闲块执行块擦除。
不论是在前者还是后者的情况下,至少存储安全擦除对象命名空间的无效数据的一个或多个空闲块是物理安全擦除动作的对象。
在后者的情况下,并且当在步骤S114中仅存储安全擦除对象命名空间的无效数据的活动块是GC对象块时,安全擦除部24c可以将在步骤S124开始时存在的空闲块分类为:由步骤S114的GC动作生成的空闲块的组I和其它空闲块的组II。安全擦除部24c可以容易地将属于组I的每个空闲块确定为存储有安全擦除对象命名空间的无效数据的空闲块,而无需检查每个空闲块的内容。安全擦除部24c可以通过检查属于组II的每个空闲块的内容,来判断这些每个空闲块是否是其中存储了安全擦除对象命名空间的无效数据的空闲块。
当步骤S124的处理完成时,擦除控制部24通过向主机2发送表示第一特定命令完成的响应,向主机2通知第一特定命令的完成(步骤S126)。
接下来,将描述在接收到请求对特定命名空间的数据进行安全擦除的第一特定命令时的I/O命令的处理。I/O命令的可能例子包括写命令、读命令和解映射命令。
首先,将描述当接收到第一特定命令(特定安全擦除命令)时已接收到但未完成的I/O命令的处理。
通过第一特定命令的处理,安全擦除对象命名空间的数据被安全地擦除。因此,在原则上,控制器4应当中止(abort)针对该安全擦除对象命名空间的任何未完成的写命令或者针对该安全擦除对象命名空间的任何未完成的解映射命令。
或者,控制器4可以等待未完成的写命令或解映射命令的处理完成,然后可以在这些命令的处理完成之后开始执行第一特定命令。具体而言,在一些例子中,如果这些命令的处理即将完成,则控制器4可以仅在这些命令的处理已经完成之后才开始执行第一特定命令,而不会中止这些命令。
图7是示出在接收到第一特定命令之前接收到的并且未完成的I/O命令的处理过程的流程图。在接收到第一个特定命令之前,可能接收到多个I/O命令。在这种情况下,可以对每个接收到的I/O命令重复该处理过程。
控制器4从主机2接收请求对特定命名空间的数据进行安全擦除的第一特定命令(步骤S702)。控制器4判断是否存在正在执行的针对该特定命名空间(安全擦除对象命名空间)的I/O命令,或者是否存在已接收但尚未开始执行的针对该安全擦除对象命名空间的I/O命令(以下,将这些I/O命令也称为未完成命令)(步骤S704)。
当确定存在未完成的命令时(步骤S704为“是”),控制器4判断该未完成的命令是否是写命令或解映射命令(步骤S706)。
当确定未完成的命令是写命令或解映射命令时(步骤S706中为“是”),控制器4判断未完成的写命令或解映射命令的处理是否即将完成(步骤S708)。
当确定未完成的写命令或解映射命令的处理并非即将完成时(步骤S708中为“否”),控制器4中止未完成的写命令或解映射命令(步骤S712)。当在步骤S712中不允许以任何顺序(Out of order:乱序)执行从主机2接收的命令时,例如,当写命令被中止时,控制器4在接收到该写命令后,中止从主机2接收的所有后续I/O命令。
在中止未完成的命令之后,控制器4开始执行第一特定命令(步骤S714)。
当确定未完成的写命令或解映射命令的处理将要完成时(步骤S708中为“是”),控制器4可以不中止未完成的写命令或解映射命令,并可以等待未完成的写命令或解映射命令的处理完成(步骤S710)。然后,响应于未完成的写命令或解映射命令的处理完成(步骤S710中为“是”),控制器4开始执行第一特定命令(步骤S714)。
当确定用于安全擦除对象命名空间的未完成命令既不是写命令也不是解映射命令时,即,当存在针对安全擦除对象命名空间的未完成的读命令时(步骤S706中为“否”),控制器4并不中止未完成的读命令,而是等待未完成的读命令的处理完成(步骤S710)。然后,响应于未完成的读命令的处理完成,控制器4开始执行第一特定命令(步骤S714)。
接下来,将参考图8描述在执行第一特定命令期间接收到的I/O命令的处理。图8是示出在执行第一特定命令期间接收到的I/O命令的处理过程的流程图。在执行第一特定命令期间可以接收多个I/O命令。在这种情况下,可以对每个接收到的I/O命令,重复该处理过程。
控制器4接收请求对特定命名空间的数据进行安全擦除的第一特定命令(步骤S802),并开始执行第一特定命令(步骤S804)。当在执行第一特定命令期间接收到I/O命令时(步骤S806),控制器4判断接收到的I/O命令是否是针对该特定命名空间(安全擦除对象命名空间)的I/O命令(步骤S808)。
当确定在执行第一特定命令期间接收到的I/O命令是针对安全擦除对象命名空间的I/O命令时(步骤S808中为“是”),控制器4中止接收到的I/O命令(步骤S810)。或者,在步骤S810中,控制器4可以暂停接收到的I/O命令的执行,直到第一特定命令的处理完成为止(即,直到向主机2通知第一特定命令的完成为止),然后可以在完成第一特定命令的处理后,执行接收到的I/O命令。
当确定在执行第一特定命令期间接收到的I/O命令是针对安全擦除对象命名空间之外的其它命名空间的I/O命令时(步骤S808中为“否”),控制器4可以选择性地使用下面的第一方法或第二方法。因此,控制器4判断是预先选择第一方法还是第二方法(步骤S812)。当确定预先选择第一方法时,控制器4执行步骤S814的处理。当确定预先选择第二方法时,控制器4执行步骤S816的处理。
第一方法(步骤S814):当针对其它命名空间的I/O命令是写命令时,控制器4暂停该写命令的执行,直到至少完成GC动作为止,然后在完成GC动作之后,执行该写命令。
当针对其它命名空间的I/O命令是读命令时,控制器4照常执行该读命令。但是,当不允许以任意顺序(乱序)执行从主机2接收的命令时,控制器4将以与接收这些读命令的顺序相同的顺序来执行针对其它命名空间的读命令。然后,当在针对其它命名空间的读命令之后接收到针对该个命名空间的写命令时,控制器4暂停该接收到的写命令以及在该接收的写命令之后接收的针对其它命名空间的所有I/O命令的处理,直到GC动作完成为止。在GC动作完成之后,控制器4以与接收这些命令的顺序相同的顺序,执行该接收的写命令以及在该接收的写命令之后接收的针对其它命名空间的所有I/O命令。
在第一方法的描述中,控制器4可以以与写命令相同的方式来处理解映射命令,也可以按照不同的方式进行处理。当控制器4没有以与写命令相同的方式来处理解映射命令时,控制器4以与读命令相同的方式来照常执行解映射命令。
第二方法(步骤S816):当针对其它命名空间的I/O命令是写命令、解映射命令或读命令时,控制器4照常执行该I/O命令。此第二种方法的效果是,不会显著地延迟针对其它命名空间的I/O命令的处理,但是处理第一个特定命令所需的时间增加了处理该I/O命令的时间量。此外,存在以下的可能性,即,通过写入与针对其它命名空间的写命令相关联的写入数据(更新数据)而生成的无效数据也可能成为GC动作的对象。在这种情况下,处理第一特定命令所需的时间进一步增加。
接下来,将参考图9A、9B、10、11A和图11B来描述针对特定命名空间的数据的安全擦除动作的例子。
图9A是示出在开始安全擦除动作之前,每个活动块的内容的例子的图。图9A示出了包括块BLK0、块BLK1和块BLK2的三个块是其中存储有效数据的活动块的情况。
块BLK0是写入途中的活动块,其被分配为写目的地块。在块BLK0中,留有通过空白示出的未写入的存储区域。块BLK1和块BLK2中的每一个都是数据已写入到该块的末尾的写入完成的活动块。
当SSD 3中存在包括命名空间A、命名空间B和命名空间C的三个命名空间时,命名空间A的数据、命名空间B的数据和命名空间C的数据可能共存于块BLK0、块BLK1和块BLK2中的每一个里。此外,每个命名空间的有效数据和无效数据可能共存于块BLK0、块BLK1和块BLK2中的每一个里。例如,无效数据是通过写入与该无效数据的LBA相关联的新的写入数据(更新数据)或者通过来自主机2的解映射命令而无效的数据。
图9B是示出在开始安全擦除动作之前,每个空闲块的内容的例子的图。图9B示出了包括块BLK3、块BLK4、块BLK5和块BLK6的四个块是没有存储有效数据的空闲块的情况。
在图9B中,在空闲块BLK3中,存储了命名空间A的无效数据和命名空间C的无效数据,但是未存储命名空间B的无效数据。在空闲块BLK4至BLK6的每一个中存储命名空间A的无效数据、命名空间B的无效数据和命名空间C的无效数据。
假设以下的情况,即,在存在图9A中所示的三个活动块和图9B中所示的四个空闲块下,SSD 3从主机2接收到请求对命名空间B的数据进行安全擦除的第一特定命令。
首先,解映射部24a执行使与属于命名空间B的所有LBA分别对应的数据无效的解映射动作。
图10是示出在执行解映射动作之后,每个活动块的内容的例子的图。在图10中,粗体字表示由于该解映射而新变为无效数据的命名空间B的数据。
在执行解映射动作之前,如图9A中所示,块BLK0存储了命名空间B的一个无效数据和命名空间B的两个有效数据。如图10中所示,由于解映射动作,块BLK0的命名空间B的所有两个有效数据全部变为无效数据。
在执行解映射动作之前,如图9A中所示,块BLK1存储了命名空间B的两个无效数据和命名空间B的四个有效数据。如图10中所示,由于解映射动作,块BLK1的命名空间B的所有四个有效数据全部变为无效数据。
在执行解映射动作之前,如图9A中所示,块BLK2存储命名空间B的三个无效数据和命名空间B的四个有效数据。如图10中所示,由于解映射动作,块BLK2的命名空间B的所有四个有效数据全部变为无效数据。
在执行解映射动作之后,GC部24b选择存储命名空间B的无效数据的所有活动块作为GC对象块(即,复制源块),并执行GC动作。
在图10中,作为活动块的块BLK0、块BLK1和块BLK2中的每一个存储命名空间B的无效数据。因此,包括块BLK0、块BLK1和块BLK2的所有这三个活动块都被选择为复制源块。
图11A是示出在执行GC动作之后,每个活动块的内容的例子的图。在图11A中,各个物理存储位置中的符号(A)、(B)和(C)表示与先前存储在这些物理存储位置中的数据相对应的命名空间分别是命名空间A、命名空间B和命名空间C。
图11A示出了在GC动作之前为空闲块的块BLK6和BLK5通过GC动作而被用作复制目的地块,并由于有效数据的复制而变为活动块的情况。
通过将有效数据从块BLK1和块BLK2中的每一个复制到块BLK6,块BLK6变为活动块。作为该复制的结果,存储在块BLK1中的命名空间A和命名空间C的每一个里的所有有效数据以及存储在块BLK2中的命名空间A和命名空间C的每一个里的所有有效数据,存储在BLK6中。
通过将有效数据从块BLK0复制到块BLK5,块BLK5变为活动块。通过该复制,存储在块BLK0中的命名空间A和命名空间C的每一个里的所有有效数据存储在块BLK5中。
在下文中,将描述将块BLK6和BLK5的每一个的状态从图9B所示的空闲块转变为图11A所示的活动块的GC动作。GC部24b对块BLK6执行块擦除。然后,GC部24b将除了命名空间B之外的其它命名空间的有效数据从块BLK1复制到块BLK6。此时,GC部24b复制除了命名空间B之外的其它命名空间的有效数据,以便连续地布置在块BLK6中的多个物理存储位置处。
此外,GC部24b将除了命名空间B之外的其它命名空间的有效数据从块BLK2复制到块BLK6。此时,GC部24b复制除了命名空间B之外的其它命名空间的有效数据,以便连续地布置在块BLK6中的多个后续物理存储位置处。
因此,用存储在块BLK1中的除命名空间B以外的其它命名空间的有效数据和存储在块BLK2中的除命名空间B以外的其它命名空间的有效数据来填充块BLK6。结果,存储在GC动作之前为空闲块的块BLK6中的命名空间B的无效数据,通过除了命名空间B之外的其它命名空间的有效数据而被覆盖。
在图11A中,粗体字表示删除了命名空间B的数据的物理存储位置。参考图11A,通过关注粗体字可以理解,例如,存储在GC动作之前为空闲块的块BLK6中的命名空间B的无效数据,通过除了命名空间B之外的其它命名空间的有效数据而被覆盖。
类似地,GC部24b对块BLK5执行块擦除。然后,GC部24b将除了命名空间B之外的其它命名空间的有效数据从块BLK0复制到块BLK5。此时,GC部24b复制除了命名空间B之外的其它命名空间的有效数据,以便连续地布置在块BLK5中的多个物理存储位置处。在该例子中,没有将数据写入到块BLK5中的数据的末尾,但是块BLK5的其余部分通过诸如全零等的伪(dummy)数据。
返回参考图11A,通过关注粗体字可以理解的是,存储在块BLK5中的命名空间B的无效数据或者被命名空间B以外的其它命名空间的有效数据覆盖,或者被块擦除。
通过上述的GC动作,存储命名空间B的数据(无效数据)的块BLK0至BLK2成为空闲块。此外,新变成为活动块的包括块BLK5和块BLK6的两个块,仅存储除了命名空间B之外的其它命名空间的有效数据,而不存储命名空间B的数据。因此,在活动块组中,不存在安全擦除对象命名空间和非安全擦除对象命名空间的有效数据共存的块。
图11B是示出在执行GC动作之后,每个空闲块的内容的例子的图。在执行GC动作之后,由空闲块列表35管理的空闲块包括通过GC动作成为空闲块的三个块(BLK0、BLK1和BLK2)以及在GC动作开始之前作为空闲块的两个块(BLK3和BLK4)。
空闲块BLK0、空闲块BLK1和空闲块BLK2中的每一个都是通过GC动作变为空闲块并且未被用作用于GC动作的复制目的地块的块。空闲块BLK0、空闲块BLK1和空闲块BLK2存储安全擦除对象命名空间B的无效数据,但不存储非安全擦除对象命名空间A和C的有效数据。因此,可以对空闲块BLK0、空闲块BLK1和空闲块BLK2中的每一个执行块擦除。
通过对空闲块BLK0、空闲块BLK1和空闲块BLK2中的每一个执行块擦除,可以从空闲块BLK0、空闲块BLK1和空闲块BLK2中的每一个中安全地擦除安全擦除对象命名空间B的数据。
在GC动作中,空闲块BLK0、空闲块BLK1和空闲块BLK2之中的任何块可以被重新用作用于GC动作的复制目的地块。首先,对重新用作复制目的地块的块进行块擦除。然后,使用从复制源块复制的非安全擦除对象命名空间的有效数据,来覆盖被重新用作复制目的地块的块中存储的安全擦除对象命名空间B的数据。以这种方式,通过在GC动作期间执行的覆盖,安全地擦除被重新用作复制目的地块的块中存储的安全擦除对象命名空间B的数据。
空闲块BLK3是在GC动作开始之前为空闲块、并且未被用作用于GC动作的复制目的地块的块。
空闲块BLK3未存储安全擦除对象命名空间B的数据。因此,不必对空闲块BLK3执行块擦除。
空闲块BLK4是在GC动作开始之前为空闲块、并且未被用作用于GC动作的复制目的地块的块。空闲块BLK4存储安全擦除对象命名空间B的无效数据。因此,对空闲块BLK4执行块擦除。结果,从空闲块BLK4中安全地擦除了安全擦除对象命名空间B的数据。
如上所述,根据第一实施方式,响应于从主机2接收到请求对特定命名空间的数据进行安全擦除的第一特定命令,执行使安全擦除对象命名空间的数据无效的解映射动作,以及将除了安全擦除对象命名空间以外的其它命名空间的数据中的有效数据从存储安全擦除对象命名空间的数据的一个或多个块(复制源块)复制到一个或多个复制目的地块的GC动作。
因此,由于存储有安全擦除对象命名空间的数据的一个或多个块变为空闲块,因此在空闲块之外,不存在安全擦除对象命名空间的数据。
当复制源块变为空闲块时,该空闲块可以重新用作复制目的地块。在该情况下,可以通过块擦除来擦除存储在该空闲块中的安全擦除对象命名空间的数据,然后使用安全擦除对象命名空间以外的其它命名空间的数据中的有效数据进一步覆盖该空闲块。
如上所述,在第一实施方式中,可以在GC动作期间,通过块擦除和覆盖来安全地擦除指定的特定命名空间的一部分数据(有效数据和无效数据)。此外,可以至少通过块擦除,来安全地擦除GC动作之后存储在一个或多个空闲块中的特定命名空间的数据。结果,安全地擦除了指定的特定命名空间的所有数据(有效和无效数据)。
接下来,与某些比较例相比,将描述根据第一实施方式的安全擦除动作的优点。
首先,将描述根据某些比较例的SSD的配置与根据第一实施方式的SSD 3的配置之间的差异。
<比较例#1>
在根据比较例#1的SSD中,管理多个耐久(endurance)组,使得多个命名空间分别属于彼此不同的多个耐久组。耐久组是管理NAND型闪存的物理资源的单位。将NAND型闪存的所有物理资源分成多个耐久组,使得NAND型闪存中的每一个块仅由一个耐久组使用。当对特定命名空间的数据执行安全擦除时,与该特定命名空间相对应的耐久组中的每个块都将成为安全擦除对象。
<比较例#2>
在根据比较例#2的SSD中,NAND型闪存的所有物理资源仅属于一个耐久组,但是在一对一的基础上管理多个命名空间和多个块之间的对应关系,使得不同命名空间的数据将被写入不同的块。当对特定命名空间的数据执行安全擦除时,一对一地映射到该特定命名空间的每个块成为安全擦除对象。
<第一实施方式>
在根据第一实施方式的SSD 3中,对多个命名空间进行管理以允许NAND型闪存的所有物理资源仅属于一个耐久组,同时允许多个命名空间的数据共存于同一块中。这是因为即使在不同命名空间的数据共存于同一块的环境中,第一实施方式的安全擦除动作也可以对主机2所指定的特定命名空间的数据执行物理安全擦除动作。
(1)用户数据擦除的速度
在根据第一实施方式的SSD 3中,需要在块擦除之前执行GC动作。因此,用户数据的安全擦除动作的速度相对较慢。但是,对于特定命名空间的数据的安全擦除是例如,当将PC移交给他人时,维持存储有OS的备份数据的命名空间的数据并擦除包括用户数据的命名空间的数据的情况。由于使用频度很小,因此安全擦除的缓慢速度是可以接受的。
在比较例#1和比较例#2中,用于对用户数据执行安全擦除的动作的速度取决于其实现方式,但是可以以相对较高的速度执行该动作。
(2)写入途中的块的数量
这里,假设使用以下配置的情况:将来自主机的用户数据写入NAND型闪存的单层单元(SLC:single level cell)存储区域,以及例如当SSD空闲时,将SLC存储区中的用户数据写入三层单元(TLC:triple level cell)存储区或者四层单元(QLC:quad-level cell)存储区。
在根据第一实施方式的SSD 3中,在写入途中的所需块的数量是两个。写入途中的两个块之一是用作SLC存储区的写目的地块的SLC块。写入途中的另一个块是用作TLC/QLC存储区的写目的地块的TLC/QLC块。
在比较例#1和比较例#2中,所需的SLC块的数量是命名空间的数量。所需的TLC/QLC块的数量是命名空间的数量。
(3)预留空间(Over-provisioning)
在根据第一实施方式和比较例#2的SSD 3中,可以由多个命名空间共享预留空间。
在比较例#1中,必须为每个命名空间单独准备预留空间。
(4)SLC存储区
在根据第一实施方式的SSD 3中,由于在命名空间之间共享SLC存储区,所以某个命名空间可以临时地使用SLC存储区的全部容量。
在比较例#1和比较例#2中,必须为每个命名空间准备独立的SLC存储区。当单个SLC存储区所需的容量无论命名空间大小如何而固定时,可以减少为TLC/QLC存储区分配的块的数量。因此,由于不能高效地使用非易失性存储器的存储容量,因此由TLC/QLC存储区的存储容量与所有SLC存储区的存储容量之和表示的驱动容量(总容量)与命名空间的数量成比例地减小。
(5)块大小和命名空间大小之间的对齐
通常,单个块的大小为几十兆字节(MB),而每个命名空间的大小为扇区的整数倍。这可能导致块大小和命名空间大小之间的不一致。
在根据第一实施方式的SSD 3中,由于多个命名空间可以共享多个块,所以即使当块大小和命名空间大小之间发生不一致时,SSD 3也不容易受到不一致的影响,并且其容量效率不容易降低。
在比较例#1和比较例#2中,当在块大小和命名空间大小之间发生不一致时,SSD受到不一致的影响,并且容量效率降低。
(6)通过创建多个命名空间来减少驱动器容量
由于原因(2)至(5),当在单个SSD中创建多个命名空间时,可能减小驱动器容量(例如,可用、有效或可用存储容量)。
在根据第一实施方式的SSD 3中,由于仅存在一个耐久组,因此可以高效地创建多个命名空间。因此,由于创建多个命名空间,驱动器容量没有减少。
在比较例#1中,由于每个命名空间都需要独立的耐久组,因此由于创建多个命名空间而导致的驱动器容量的减少很大。
在比较例#2中,由于创建多个命名空间而对驱动器容量的降低的影响程度在第一实施方式和比较例#1之间。
(第二实施方式)
接下来,将描述第二实施方式。根据第二实施方式的SSD的配置与图1中所示的根据一实施方式的SSD 3的配置基本相同。第二实施方式与第一实施方式的相似之处在于,对特定命名空间的数据执行物理安全擦除动作,但是其与解映射动作有关的处理与第一实施方式的处理不同。在第一实施方式中,控制器4在GC动作之前执行解映射动作,而在第二实施方式中,控制器4在GC动作的执行期间执行解映射动作。
图12是示出在根据第二实施方式的存储器系统中执行的物理安全擦除动作的过程的流程图。将省略与参考图5描述的根据第一实施方式的存储器系统中执行的物理安全擦除动作的过程相同的过程的描述。
当接收到的命令是第一特定命令时(步骤S104中为“是”),GC部24b执行GC动作,并且解映射部24a在执行GC动作期间执行解映射动作(步骤S132)。
在步骤S132中,GC部24b选择至少存储安全擦除对象命名空间的数据——即,安全擦除对象数据的活动块作为GC对象块(即,复制源块),而不管安全擦除对象命名空间的数据是有效数据还是无效数据。或者,当简单地实现GC动作时,GC部24b可以选择存储无效数据的所有活动块作为复制源块,而不管该无效数据是否是安全擦除对象命名空间的数据。
当存储在复制源块中的有效数据是安全擦除对象数据时,解映射部24a执行使存储在复制源块中的有效数据无效的解映射动作。也就是说,解映射部24a执行使存储在复制源块中的有效数据之中的作为安全擦除对象数据的有效数据无效的解映射动作。由此,作为存储在复制源块中的安全擦除对象数据的一部分的有效数据被无效。当存储在复制源块中的非安全擦除对象命名空间的有效数据被复制到复制目的地块,并且还对存储在复制源块中的安全擦除对象命名空间的有效数据进行解映射时,复制源块将变为空闲块。结果,在空闲块之外,不存在安全擦除对象数据。换句话说,安全擦除对象命名空间的数据(无效数据)仅存在于某些空闲块中。
在执行GC动作和解映射动作(步骤S132)之后,与第一实施方式同样,确定GC动作的结束条件(步骤S122),执行块擦除动作(步骤S124),并且向主机2通知命令的完成(步骤S126)。
由于当执行请求对特定命名空间中的数据进行安全擦除的第一特定命令时对I/O命令的处理与第一实施方式中的相同,因此将省略其描述。
在第二实施方式中,也可以获得与第一实施方式相同的效果。
(第三实施方式)
接下来,将描述第三实施方式。根据第三实施方式的SSD的配置与图1中所示的根据第一实施方式的SSD 3的配置相同。在第一和第二实施方式中,使用命名空间识别符作为表示安全擦除对象逻辑区域的逻辑区域识别符,但是在第三实施方式中,使用识别安全擦除对象扇区的逻辑地址和从该逻辑地址开始的扇区数量作为表示安全擦除对象逻辑区域的逻辑区域识别符。例如,将LBA用作逻辑地址。当存储器系统具有多个命名空间时,表示安全擦除对象逻辑区域的逻辑区域识别符还包括表示安全擦除对象命名空间的命名空间识别符。
在第三实施方式中,安全擦除对象数据是与一个或多个特定LBA相对应的数据,即,当前存储或过去存储在所述一个或多个特定LBA所识别的一个或多个安全擦除对象扇区中的数据。
在第三实施方式中使用的第二特定命令是特定安全擦除命令,该特定安全擦除命令请求对一个或多个特定LBA所识别的数据——具体而言是存储在一个或多个特定LBA所识别的一个或多个安全擦除对象扇区中的数据执行安全擦除。第二特定命令可以包括指定一个或多个特定LBA的参数。所述一个或多个特定的LBA可以通过LBA范围来表示。
当主机2将多个LBA范围设置为安全擦除对象时,主机2可以首先向SSD 3发送分别指定LBA范围的多个命令,然后可以向SSD3发送请求对这些一个或多个先前指定的LBA范围进行安全擦除的第二特定命令。第二特定命令还可以包括指定所述多个LBA范围的多个参数。通过以这种方式指定所述多个LBA范围以请求安全擦除,可以只执行一次GC动作。因此,与针对每个LBA范围分别需要安全擦除的情况相比,可以减少复制数据的数量和执行块擦除的次数,并且可以减少存储单元的磨损。
此外,当主机2将特定命名空间的一个或多个特定LBA或者一个或多个特定LBA范围设置为安全擦除对象时,主机2可以指定用于识别特定命名空间的命名空间识别符和一个或多个特定LBA或者一个或多个特定的LBA范围。
图13A是示出在根据第三实施方式的存储器系统中执行的物理安全擦除动作的过程的流程图。
当控制器4从主机2接收到命令时(步骤S202),CPU 12判断接收到的命令是否是第二特定命令(步骤S204)。第二特定命令请求通过物理安全擦除方法对一个或多个特定LBA的数据执行安全擦除。
当确定接收到的命令不是第二特定命令时(步骤S204中为“否”),CPU12根据接收到的命令来执行处理(步骤S206)。
当确定接收到的命令是第二特定命令时(步骤S204中为“是”),解映射部24a执行解映射动作(步骤S212)。接下来,GC部24b执行GC动作(步骤S214)。
解映射动作(步骤S212)和GC动作(步骤S214)的过程根据扇区大小和簇大小之间的关系而不同。图13B是示出当扇区大小等于簇大小时的解映射动作和GC动作的过程的流程图。在这种情况下,单个安全擦除对象扇区仅对应一个簇。图13C是示出当扇区大小小于簇大小时的解映射动作和GC动作的过程的流程图。在这种情况下,至少一个安全擦除对象扇区可以位于存储有效数据的一个簇的一部分中。
如图13B中所示,当扇区大小等于簇大小时,解映射部24a执行使分别与主机2所指定的所有安全擦除对象LBA相关联的数据无效的解映射动作(步骤S212A)。解映射部24a从L2P表37的每个条目中删除与第二特定命令中包括的所有LBA相对应的物理地址。或者,解映射部24a在这些条目中存储NULL值。由于该解映射动作,使得与安全擦除对象LBA相对应的L2P表37的所有簇都无效。结果,与所有安全擦除对象LBA相对应的数据变为无效数据。
GC部24b至少选择存储安全擦除对象LBA的无效数据的所有活动块作为GC对象块(即,复制源块)。或者,当简单实现GC动作时,GC部24b至少选择存储无效数据的所有活动块作为复制源块,而不管该无效数据是否是与安全擦除对象LBA相关联的无效数据。
GC部24b可以将被选择为复制源块的每个活动块的块识别符保存在安全擦除对象块列表34中。
GC部24b自由地选择空闲块中的任何一个。GC部24b对所选定的空闲块执行块擦除。GC部24b将块擦除后的空闲块分配为复制目的地块。
GC部24b将除了安全擦除对象数据之外的数据中的有效数据——即,非安全擦除对象LBA的有效数据,从复制源块复制到复制目的地块(步骤S214A)。
GC部24b更新L2P表37,以将复制的有效数据的每个LBA映射到每个复制目的地物理地址。
参考图13C描述当扇区大小小于簇大小时的解映射动作和GC动作的过程。将省略与参考图13B描述的解映射动作和GC动作的过程相同的过程的描述。
当扇区大小小于簇大小时,将表示簇中的每个扇区的数据有效还是无效的位图数据存储在例如L2P表37中,如上所述。
解映射部24a选择包括至少一个安全擦除对象扇区的簇作为解映射动作的对象。
当簇中的所有扇区都是安全擦除对象时,即,当簇中的所有数据都是安全擦除对象时(步骤S212B-1中为“是”),解映射部24a执行使该簇中的数据无效的解映射动作(步骤S212B-4)。
当簇中的所有扇区都不是安全擦除对象时(步骤S212B-1中为“否”),解映射部24a更新位图数据,以使簇中的所有安全擦除对象扇区均无效(步骤S212B-2)。
解映射部24a检查是否通过该无效使簇中的所有扇区都无效(步骤S212B-3)。
当确定簇中的所有扇区都变为无效扇区时(步骤S212B-3中为“是”),解映射部24a执行使该簇中的数据无效的解映射动作(步骤S212B-4)。
当确定簇中的所有扇区不都是无效扇区时(步骤S212B-3中为“否”),解映射部24a对该簇的处理结束。
解映射部24a判断针对所有解映射动作对象簇的解映射动作是否完成(步骤S212B-5)。
当确定未完成针对所有簇的解映射动作时(步骤S212B-5中为“否”),解映射部24a针对下一簇执行步骤212B-1的判断。
当确定完成了针对所有簇的解映射动作时(步骤S212B-5中为“是”),GC部24b将包括活动块中的有效数据(即,非安全擦除对象数据)的所有簇,从复制源块复制到复制目的地块(步骤S214B-1)。
在步骤S214B-1中,当在簇中存在无效扇区时,GC部24b将该扇区中的数据改变为适当的值,然后将该数据复制到复制目的地块。该适当的值例如是全零或全1、随机数据或者其组合。
GC部24b更新L2P表37的条目,以将复制数据的LBA与先前复制簇的物理地址相关联。
返回参考图13A的描述,与第一实施方式一样,在执行GC动作(步骤S214)之后,GC部24b判断是否满足GC动作的结束条件(步骤S222)。该结束条件可以是在活动块组中不再存在存储安全擦除对象LBA的无效数据的块。
GC部24b继续执行GC动作,直到存储安全擦除对象LBA的无效数据的块从活动块组中消失为止(步骤S214,以及步骤S222中为“否”)。
当确定满足垃圾回收动作的结束条件时(步骤S222中为“是”),GC部24b结束GC动作。此时,在空闲块之外,不可能存在安全擦除对象LBA的无效数据。
当不管无效数据是否是安全擦除对象LBA的无效数据,至少所有存储无效数据的活动块都被选为GC对象块时,GC动作的结束条件可以是存储无效数据的块从活动块组中消失,而不管该无效数据是否是安全擦除对象LBA的无效数据。但是,由于这降低了GC动作的效率,因此当在所有活动块中的每一个活动块中,无效数据相对于有效数据的比例较大时,可以采用该结束条件。
在确定GC动作的结束条件(步骤S222)之后,安全擦除部24c至少对其中存储有安全擦除对象LBA的无效数据的每个空闲块执行块擦除动作(步骤S224)。由此,通过块擦除,安全地擦除了安全擦除对象LBA中的所有无效数据。
在步骤S224中,安全擦除部24c可以对其中存储有安全擦除对象LBA的无效数据的每个空闲块执行块擦除,并且可以与第一实施方式同样进一步将特定的数据模式写入每个空闲块中。因此,安全擦除对象LBA的所有无效数据通过覆盖而被安全地擦除。
安全擦除部24c可以对所有空闲块执行块擦除,而不管这些空闲块是否存储了安全擦除对象LBA的无效数据。因此,可以容易地执行对存储有安全擦除对象LBA的无效数据的每个空闲块至少执行块擦除的处理(步骤S224)。
或者,为了减少要执行块擦除的块的数量,安全擦除部24c可以执行以下的处理:确定存储有安全擦除对象LBA的无效数据的一个或多个空闲块,以仅对所确定的这些一个或多个空闲块执行块擦除。
在前者和后者的任一个情况下,至少存储安全擦除对象LBA的无效数据的一个或多个空闲块是安全擦除对象。
当步骤S224的处理完成时,擦除控制部24通过向主机2发送表示第二特定命令的完成的响应,来向主机2通知第二特定命令的完成(步骤S226)。
当接收到请求对特定LBA中的数据进行安全擦除的第二特定命令时的I/O命令的处理与第一实施方式的相同,因此将省略其描述。
如上所述,根据第三实施方式,可以通过物理安全擦除方法来安全地擦除一个或多个特定LBA的数据。此外,当复制源块包括存储有效数据并且在其一部分中存在安全擦除对象扇区的簇时,控制器4在将该簇的所有数据复制到复制目的地块时,将安全擦除对象扇区的数据改变为诸如全1或全零的数据模式。因此,即使当存在其中安全擦除对象扇区和非安全擦除对象有效扇区共存的簇时,也可以在确保物理安全擦除动作的安全同时,正确地复制非安全擦除对象有效扇区的数据。
(第四实施方式)
接下来,将描述第四实施方式。根据第四实施方式的SSD的配置与图1中所示的根据第一实施方式的SSD 3的配置相同。第四实施方式与第三实施方式的相同之处在于,对特定LBA的数据执行了安全擦除,但是与解映射动作有关的处理与第三实施方式的处理不同。在第三实施方式中,控制器4在GC动作之前执行解映射动作,而在第四实施方式中,控制器4在GC动作的执行期间执行解映射动作。
图14A是示出在根据第四实施方式的存储器系统中执行的物理安全擦除动作的过程的流程图。将省略与参考图13A描述的根据第三实施方式的存储器系统中执行的物理安全擦除动作的过程相同的过程的描述。
当接收到的命令是第二特定命令时(步骤S204中为“是”),GC部24b执行GC动作,并且解映射部24a在执行GC动作期间执行解映射动作(步骤S232)。
类似于第三实施方式,GC动作和非映射动作的过程根据扇区大小和簇大小之间的关系而不同(步骤S232)。
图14B是示出当扇区大小等于簇大小时的GC动作和解映射动作的过程的流程图。在这种情况下,一个安全擦除对象扇区对应于一个簇。
在步骤S232A中,GC部24b选择至少存储安全擦除对象LBA的数据和非安全擦除对象LBA的有效数据的活动块作为GC对象块(即,复制源块),而不管安全擦除对象LBA的数据是有效数据还是无效数据。或者,当简单地实现GC动作时,GC部24b选择存储无效数据的所有活动块作为复制源块,而不管该无效数据是否是安全擦除对象LBA的数据。
在步骤S232A中,GC部24b将非安全擦除对象LBA的有效数据从复制源块复制到复制目的地块。当安全擦除对象LBA的有效数据存储在复制源块中时,解映射部24a执行使存储在复制源块中的有效数据无效的解映射动作。因此,存储在复制源块中的安全擦除对象LBA的有效数据被无效。当将存储在复制源块中的非安全擦除对象LBA的有效数据复制到复制目的地块,并且还执行使存储在复制源块中的安全擦除对象LBA的有效数据无效的解映射动作时,复制源块变为空闲块。因此,在空闲块之外,不存在安全擦除对象LBA的数据。换句话说,安全擦除对象LBA的数据(无效数据)仅存在于某些空闲块中。
图14C是示出当扇区大小小于簇大小时的GC动作和解映射动作的过程的流程图。在这种情况下,如上所述,将表示簇中的每个扇区的数据是有效还是无效的位图数据存储在例如L2P表37中。
解映射部24a和GC部24b将包括存储有效数据的至少一个扇区的簇选择为解映射动作和GC动作的对象。
当作为处理对象的簇包含至少一个安全擦除对象扇区时(步骤S232B-1中为“是”),解映射部24a更新位图数据,以使该簇中的所有安全擦除对象扇区均无效(步骤S232B-2)。
解映射部24a检查是否通过该无效使簇中的所有扇区都无效(步骤S232B-3)。
当确定簇中的所有扇区都被无效时(步骤S232B-3中为“是”),解映射部24a执行使该簇中的数据无效的解映射动作(步骤S232B-4)。
在步骤S232B-4之后,或者当确定簇中的所有扇区没有都被无效时(即,当簇存储有非安全擦除对象有效数据时)(步骤S232B-3中为“否”),或者当处理对象簇不包括安全擦除对象扇区时(步骤S232B-1中为“否”),则GC部24b将簇中的有效数据(即,非安全擦除对象数据)从复制源块复制到复制目的地块(步骤S232B-5)。此时,与在第三实施方式中同样,GC部24b可以用适当的值来替换簇中的无效扇区的数据。在步骤S232B-5中,当簇中的所有扇区均有效时,GC部24b将所有扇区的数据复制到复制目的地块,并且更新L2P表37,以将复制源簇地址更新为复制的目的地簇地址。
GC部24b判断对于包括存储有效数据的扇区的所有簇,解映射动作和GC动作是否都已完成(步骤S232B-6)。
当确定针对所有簇的解映射动作和GC动作未完成时(步骤S232B-6中为“否”),GC部24b针对下一簇执行步骤S232B-1的确定。
当确定针对所有簇的解映射动作和GC动作都完成时(步骤S232B-6中为“是”),GC部24b的处理转到步骤S222。
最后,将所有有效数据复制到复制目的地块,并且复制源块成为空闲块。因此,在空闲块之外,不存在安全擦除对象LBA的数据。换句话说,安全擦除对象LBA的数据(无效数据)仅存在于某些空闲块中。
返回参考图14A的描述,在执行GC动作(步骤S232)之后,与在第三实施方式中同样,确定GC动作的结束条件(步骤S222),执行块擦除动作(步骤S224),并且向主机2通知命令的完成(步骤S226)。
由于当执行第二特定命令时I/O命令的处理与第三实施方式相同,因此将省略其另外描述。
在第四实施方式中,可以获得与第三实施方式基本相同的效果。
(第五实施方式)
接下来,将描述第五实施方式。根据第五实施方式的SSD的配置与图1中所示的根据第一实施方式的SSD 3的配置相同。第五实施方式的物理安全擦除动作响应于请求将数据写入某个逻辑区域识别符所识别的逻辑区域、并对与该逻辑区域识别符相关联的旧数据进行安全擦除的特定写命令,来执行对旧数据的物理安全擦除。可以使用诸如LBA或键值存储的键之类的逻辑地址用作逻辑区域识别符。也就是说,第五实施方式的物理安全擦除动作也可以应用于键值存储。在键值存储的情况下,第五实施方式的物理安全擦除动作响应于请求写入与某个键相对应的值(数据)、并对与该键相关联的旧值(旧数据)进行安全擦除的特定写命令,执行旧值的物理安全擦除。
在下文中,将描述将LBA用作逻辑区域识别符的情况。
例如,与普通写命令相同,特定的写命令可以包括LBA(起始LBA)、写入数据的大小(扇区数量)、对象命名空间识别符、以及表示主机2的存储器中存储该写入数据的位置(缓冲区地址)的数据指针。
根据第五实施方式的SSD的控制器4将与特定写命令相关联的写入数据写入到NAND型闪存5中,并且更新L2P表37,以将写入数据所写入的物理地址与写入数据的LBA相关联。然后,控制器4自动地对与LBA相关联的旧数据(无效数据)执行物理安全擦除动作。
由于GC动作,与该LBA相关联的旧数据可能会保留在多个块中。此外,即使在多次接收到指定某个LBA的普通写命令之后接收到指定该LBA的特定写命令的情况下,与该LBA相关联的旧数据也可能保留在多个块中。
因此,控制器4执行以下的GC动作:选择存储与该LBA相关联的旧数据的所有活动块作为GC对象块(复制源块),并将存储在这些GC对象块中的有效数据复制到一个或多个复制目的地块。因此,在空闲块之外的任何块中不存在旧数据。
在执行GC动作之后,控制器4至少对空闲块列表35所管理的空闲块中存储旧数据的每个空闲块执行块擦除。这使得可以安全地擦除旧数据。在该情况下,控制器4可以在执行GC动作之后,对空闲块列表35管理的所有空闲块执行块擦除。或者,为了减少要执行块擦除的块的数量,控制器4可以执行用于确定存储有旧数据的一个或多个空闲块的处理,并且可以仅对这些确定出的一个或多个空闲块执行块擦除。
图15是示出在根据第五实施方式的存储器系统中执行的物理安全擦除动作的过程的流程图。
当控制器4从主机2接收到命令时(步骤S302),CPU 12判断接收到的命令是否是特定的写命令(步骤S304)。
当确定接收到的命令不是特定的写命令时(步骤S304中为“否”),CPU12根据接收到的命令执行处理(步骤S306)。
当确定接收到的命令是特定的写命令时(步骤S304中为“是”),写控制部22将与该特定的写命令相关联的写入数据(更新数据)写入到NAND型闪存5中,并更新L2P表37。
GC部24b执行GC动作(步骤S314)。在步骤S314中,GC部24b可以选择所有存储与该特定写命令指定的LBA相关联的旧数据的活动块作为GC对象块,即,复制源块。
GC部24b从空闲块中自由地选择一个空闲块。GC部24b对所选定的空闲块执行块擦除。GC部24b将块擦除后的空闲块分配为复制目的地块。
GC部24b将有效数据从复制源块复制到复制目的地块。
在执行GC动作(步骤S314)之后,GC部24b判断是否满足GC动作的结束条件(步骤S322)。该结束条件可以是在活动块组中不再存在存储与该特定写命令指定的LBA相关的旧数据的块。
GC部24b继续执行GC动作,直到存储旧数据的块从活动块组中消失为止(步骤S322中为“否”,步骤S314)。
当确定满足垃圾回收动作的结束条件时(在步骤S322中为“是”),GC部24b结束GC动作。在此时,在空闲块之外,不可能存在旧数据。
之后,安全擦除部24c对至少存在旧数据的空闲块至少执行块擦除(步骤S324)。因此,通过块擦除来安全地擦除旧数据。
当步骤S324的处理完成时,擦除控制部24通过向主机2发送表示特定写命令的完成的响应,来向主机2通知该特定写命令的完成(步骤S326)。
由于执行特定的写命令要花费很长时间,因此擦除控制部24可以在接收到特定的写命令时,向主机2通知该命令的完成。也就是说,擦除控制部24可以在即将进行步骤S312之前执行步骤S326的处理。当特定写命令的处理没有正常完成时,控制器4可以通过使用命令接口标准所定义的异常通知机制,来向主机2通知该特定命令的处理没有正常完成,或者可以在命令接口标准所定义的日志中记录异常的发生。
(变形例)
可以使用特定的写命令,其中该命令请求将数据写入由某个逻辑区域识别符所识别的逻辑区域,并表示写入该逻辑区域的数据以后将成为安全擦除对象数据。在该情况下,例如,响应于从主机2接收到该特定的写命令,控制器4执行将写入数据写入该逻辑区域的写动作,并且例如在DRAM6中存储表示该逻辑区域是安全擦除对象区域的日志信息。无论何时从主机2接收到该特定的写命令,控制器4都执行写动作和存储日志信息的动作。当从主机2接收到请求安全擦除的特定安全擦除命令时,控制器4通过参考日志信息来识别安全擦除对象区域。然后,控制器4执行对存储在这些安全擦除对象区域中的数据进行安全擦除的物理安全擦除动作。通过以这种方式在多个安全擦除对象区域上一并执行物理安全擦除动作,可以减少所需的GC动作的数量。结果,可以减少NAND型闪存5的重写次数的增加对SSD 3的寿命的影响,并且可以减少特定写命令的处理时间。
如上所述,根据第五实施方式,可以通过物理安全擦除方法来安全地擦除与新写入数据的LBA相关联的旧数据。
(第六实施方式)
接下来,将描述第六实施方式。根据第六实施方式的SSD的配置与图1中所示的根据第一实施方式的SSD 3的配置基本相同。可以将第六实施方式的物理安全擦除动作认为是第三实施方式的修改。在第三实施方式中,与特定LBA相关联(或先前与之相关联)的有效数据和无效数据被安全地擦除。在第六实施方式中,仅安全地擦除与逻辑区域识别符所识别的逻辑区域关联存储的数据中的无效数据,并且不擦除与该逻辑区域识别符所识别的逻辑区域关联存储的有效数据。
在下文中,将以LBA用作表示安全擦除对象逻辑区域的逻辑区域识别符的情况为例进行描述。
在第六实施方式中,将第三实施方式的第二特定命令改变为第三特定命令,该第三特定命令仅将一个或多个特定LBA的无效数据作为安全擦除对象数据,而不将所述一个或多个特定LBA的有效数据视作为安全擦除对象数据。
当期望仅安全地擦除过去写入到一个或多个指定的特定LBA的旧数据(无效数据)而不擦除可以通过读动作来读取的当前数据(有效数据)时,第六实施方式是有用的。
图16是示出在根据第六实施方式的存储器系统中执行的物理安全擦除动作的过程的流程图。在根据第六实施方式的存储器系统中执行的用于物理安全擦除动作的过程,在某些方面类似于参考图13A所描述的那些过程。将不再重复这样的类似方面的描述。
当控制器4从主机2接收到命令时(步骤S402),CPU 12判断接收到的命令是否是第三特定命令(步骤S404)。
当确定接收到的命令不是第三特定命令时(步骤S404中为“否”),CPU12根据接收到的命令执行处理(步骤S406)。
当确定接收到的命令是第三特定命令时(步骤S404中为“是”),GC部24b执行GC动作(步骤S412)。
GC部24b至少选择存储有与第三特定命令所指定的一个或多个特定LBA相关联的无效数据的所有活动块作为GC对象块(即,复制源块)。
GC部24b将有效数据从复制源块复制到复制目的地块。
在执行GC动作之后,GC部24b判断是否已经满足GC动作的结束条件(步骤S422)。该结束条件可以是,存储与一个或多个指定的特定LBA相关联的无效数据的每个块在活动块组中不再存在。
GC部24b继续执行GC动作,直到从活动块组中去除了存储有与指定的一个或多个特定LBA相关联的无效数据的每个块(步骤S412、以及步骤S422中的“否”)。
当确定满足垃圾回收动作的结束条件时(步骤S422中为“是”),GC部24b结束GC动作。在此时,不可能在空闲块之外的任何块中存在与一个或多个指定的特定LBA相关联的无效数据。
在确定GC动作的结束条件(步骤S422)之后,安全擦除部24c至少对存储有与指定的特定一个或多个LBA相关联的无效数据的一个或多个空闲块执行块擦除(步骤S424)。因此,通过块擦除来安全地擦除安全擦除对象扇区的无效数据。
在执行GC动作之后,安全擦除部24c可以对空闲块列表35管理的所有空闲块执行块擦除。或者,为了减少执行块擦除的块的数量,安全擦除部24c可以执行指定存储与一个或多个指定的特定LBA相关联的无效数据的一个或多个空闲块的处理,并且仅对这些一个或多个指定的空闲块执行块擦除。
当步骤S424的处理完成时,擦除控制部24通过向主机2发送表示第三特定命令的完成的响应,来向主机2通知第三特定命令的完成(步骤S426)。
如上所述,根据第六实施方式,可以通过物理安全擦除方法来安全地擦除与一个或多个指定的特定LBA相关联的无效数据。也就是说,在第六实施方式中,与一个或多个指定的特定LBA相关联的无效数据可以是安全擦除对象,但是在第六实施方式的安全擦除动作中,在指定的特定命名空间中的数据之中的无效数据可以是安全擦除对象。
在这种情况下,响应于从主机2接收到请求仅对特定命名空间中的无效数据进行安全擦除的第四特定命令,控制器4执行仅对指定的特定命名空间中的数据之中的无效数据进行安全擦除的物理安全擦除动作。
在上述的实施方式中,省略了对损坏的块或者已经超过指定的擦除次数的块的处理的描述。可以对诸如这些损坏或老化的块之类的块中包含的数据进行无效,并作为有缺陷的块进行处理。由于在这些块中包含的数据是无效数据,因此可以将这些块共同地视作为单个空闲块,并且在安全擦除时也可以是块擦除对象。或者,当这些块最初被制成(被指定为)有缺陷的块时,可以执行块擦除。
虽然已经描述了某些实施方式,但是这些实施方式仅仅是通过示例的方式给出,并不旨在限制本公开内容的保护范围。实际上,本文描述的新颖实施方式可以以多种其它形式来体现;此外,在不脱离本公开内容的精神的情况下,可以对本文所描述的实施方式的形式进行各种省略、替换和改变。所附权利要求及其等同物旨在覆盖落入本公开内容的保护范围和精神内的这种形式或修改。
Claims (20)
1.一种存储器系统,包括:
包括多个块的非易失性存储器,其中每个块是数据擦除动作的最小单位;以及
电连接至所述非易失性存储器的控制器,
所述控制器被配置为:
响应于来自主机的第一命令而执行复制动作,所述第一命令请求对存储在由第一逻辑区域识别符识别的第一逻辑区域中的安全擦除对象数据进行安全擦除,所述复制动作将除了任何安全擦除对象数据以外的有效数据从存储有所述安全擦除对象数据的所述多个块中的一个或多个第一块复制到所述多个块中的一个或多个复制目的地块;以及
在所述复制动作之后,对所述一个或多个第一块执行所述数据擦除动作。
2.根据权利要求1所述的存储器系统,其中,
所述安全擦除对象数据包括有效数据。
3.根据权利要求1所述的存储器系统,其中,
所述安全擦除对象数据仅包括无效数据。
4.根据权利要求1所述的存储器系统,其中,
所述控制器还被配置为,响应于所述第一命令,执行使所述安全擦除对象数据无效的解映射动作。
5.根据权利要求4所述的存储器系统,其中,
所述控制器被配置为在所述复制动作之前执行所述解映射动作。
6.根据权利要求4所述的存储器系统,其中:
所述控制器被配置为在执行所述复制动作期间执行所述解映射动作,以及
所述控制器被配置为使所述一个或多个第一块中存储的所述安全擦除对象数据中的所述有效数据无效。
7.根据权利要求1所述的存储器系统,其中,
所述控制器被配置为:
从所述第一块中选择第二块,其中所述第二块被指定为仅存储无效数据的空闲块作为所述复制目的地块之一;
对所述第二块执行所述数据擦除动作;以及
执行复制动作,其中所述复制动作将除了所述安全擦除对象数据中的任何有效数据以外的所述有效数据从所述第一块中的第三块复制到所述第二块。
8.根据权利要求1所述的存储器系统,其中,
所述控制器还被配置为,响应于所述第一命令,对在开始所述复制动作之前没有存储有效数据的所述多个块中的空闲块之中的、当接收到所述第一命令时存储有包括在所述安全擦除对象数据中的无效数据且未被用作所述复制目的地块之一的空闲块,执行所述数据擦除动作。
9.根据权利要求1所述的存储器系统,其中,
所述控制器被配置为管理由多个命名空间识别符分别识别的多个命名空间,以及
所述第一逻辑区域识别符是识别安全擦除对象命名空间的命名空间识别符。
10.根据权利要求1所述的存储器系统,其中,
所述第一逻辑区域识别符包括识别一个或多个安全擦除对象扇区的一个或多个逻辑地址。
11.根据权利要求1所述的存储器系统,其中,
所述第一逻辑区域识别符包括识别一个或多个安全擦除对象值的一个或多个键。
12.根据权利要求1所述的存储器系统,其中:
所述第一逻辑区域识别符包括识别一个或多个安全擦除对象扇区的一个或多个逻辑地址,以及
所述控制器进一步被配置为:
使用逻辑物理地址转换表,以簇为单位管理所述非易失性存储器的每个逻辑地址和每个物理地址之间的映射,
将存储在第一簇中的所述安全擦除对象扇区的数据改变为第一数据模式,其中所述第一簇存储有效数据,并且所述安全擦除对象扇区位于所述第一簇中,以及
执行将所述第一簇复制到所述一个或多个复制目的地块的复制动作。
13.根据权利要求1所述的存储器系统,其中,
所述安全擦除对象数据包括先前与所述第一逻辑区域识别符相关联的无效数据。
14.根据权利要求1所述的存储器系统,其中,
所述第一命令指定所述第一逻辑识别符。
15.根据权利要求1所述的存储器系统,其中,
通过所述第一命令之外的来自所述主机的命令来指定所述第一逻辑识别符。
16.一种存储器系统,包括:
包括多个块的非易失性存储器,其中每个块是数据擦除动作的最小单位;以及
电连接至所述非易失性存储器的控制器,
所述控制器被配置为:
响应于来自主机的第一写命令而执行复制动作,所述第一写命令请求将数据写入由第一逻辑区域识别符识别的第一逻辑区域以及对存储在所述第一逻辑区域中的旧数据进行安全擦除,所述复制动作将有效数据从存储所述旧数据的所述多个块中的一个或多个第一块复制到所述多个块中的一个或多个复制目的地块,以及
在所述复制动作之后,对所述一个或多个第一块执行所述数据擦除动作。
17.根据权利要求16所述的存储器系统,其中,
在所述复制动作完成之后,直接对所述一个或多个第一块进行所述数据擦除动作。
18.根据权利要求16所述的存储器系统,其中,
响应于来自所述主机的请求对安全擦除对象数据进行安全擦除的第二命令,在所述复制动作完成之后,对所述一个或多个第一块执行所述数据擦除动作。
19.一种用于控制包括多个块的非易失性存储器的控制方法,其中每个块是数据擦除动作的最小单位,所述控制方法包括:
响应于来自主机的第一命令而执行复制动作,所述第一命令请求对存储在由第一逻辑区域识别符识别的第一逻辑区域中的安全擦除对象数据进行安全擦除,所述复制动作将除了任何安全擦除对象数据以外的有效数据从存储有所述安全擦除对象数据的所述多个块中的一个或多个第一块复制到所述多个块中的一个或多个复制目的地块;以及
在所述复制动作之后,对所述一个或多个第一块执行所述数据擦除动作。
20.根据权利要求19所述的控制方法,其中,
所述安全擦除对象数据包括先前与所述第一逻辑区域识别符相关联的无效数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020110307A JP7475989B2 (ja) | 2020-06-26 | 2020-06-26 | メモリシステムおよび制御方法 |
JP2020-110307 | 2020-06-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113849420A true CN113849420A (zh) | 2021-12-28 |
Family
ID=78972855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110259414.6A Pending CN113849420A (zh) | 2020-06-26 | 2021-03-10 | 存储器系统和控制方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11586377B2 (zh) |
JP (1) | JP7475989B2 (zh) |
CN (1) | CN113849420A (zh) |
TW (2) | TWI793519B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129623A (zh) * | 2021-03-25 | 2022-09-30 | 京东方科技集团股份有限公司 | 功耗控制方法、装置、板卡、电子设备及存储介质 |
US11782824B2 (en) * | 2022-02-08 | 2023-10-10 | Macronix International Co., Ltd. | Universal data path architecture for different data array |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008070172A2 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for remote direct memory access to a solid-state storage device |
US8762431B2 (en) * | 2012-01-17 | 2014-06-24 | Apple Inc. | System and method for secure erase in copy-on-write file systems |
JP5659178B2 (ja) * | 2012-03-16 | 2015-01-28 | 株式会社東芝 | 不揮発性記憶装置及び不揮発性メモリの制御方法 |
KR20160103236A (ko) * | 2015-02-23 | 2016-09-01 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
WO2016154079A1 (en) | 2015-03-20 | 2016-09-29 | Burlywood, LLC | Configurable multi-level error correction in a storage controller |
JP6523193B2 (ja) * | 2016-03-08 | 2019-05-29 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
US10403369B2 (en) | 2016-10-17 | 2019-09-03 | SK Hynix Inc. | Memory system with file level secure erase and operating method thereof |
JP2019008730A (ja) * | 2017-06-28 | 2019-01-17 | 東芝メモリ株式会社 | メモリシステム |
US10534554B2 (en) * | 2017-10-13 | 2020-01-14 | Silicon Storage Technology, Inc. | Anti-hacking mechanisms for flash memory device |
US20190036704A1 (en) * | 2017-12-27 | 2019-01-31 | Intel Corporation | System and method for verification of a secure erase operation on a storage device |
JP2019191910A (ja) * | 2018-04-25 | 2019-10-31 | パナソニックIpマネジメント株式会社 | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びメモリ制御方法 |
TWI708144B (zh) * | 2018-06-22 | 2020-10-21 | 慧榮科技股份有限公司 | 快閃記憶體的命名空間操作裝置及電腦程式產品 |
KR102387960B1 (ko) * | 2018-07-23 | 2022-04-19 | 삼성전자주식회사 | 컨트롤러 및 그것의 동작 방법 |
-
2020
- 2020-06-26 JP JP2020110307A patent/JP7475989B2/ja active Active
-
2021
- 2021-02-08 TW TW110104618A patent/TWI793519B/zh active
- 2021-02-08 TW TW112101740A patent/TWI826236B/zh active
- 2021-02-25 US US17/185,493 patent/US11586377B2/en active Active
- 2021-03-10 CN CN202110259414.6A patent/CN113849420A/zh active Pending
-
2023
- 2023-01-18 US US18/155,919 patent/US20230153012A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210405907A1 (en) | 2021-12-30 |
TW202201232A (zh) | 2022-01-01 |
US11586377B2 (en) | 2023-02-21 |
TW202318207A (zh) | 2023-05-01 |
JP7475989B2 (ja) | 2024-04-30 |
TWI826236B (zh) | 2023-12-11 |
TWI793519B (zh) | 2023-02-21 |
JP2022007376A (ja) | 2022-01-13 |
US20230153012A1 (en) | 2023-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109144888B (zh) | 存储器系统 | |
US11237769B2 (en) | Memory system and method of controlling nonvolatile memory | |
CN106874217B (zh) | 存储器系统及控制方法 | |
US11657022B2 (en) | Host and storage system for securely deleting files and operating method of the host | |
EP2631916A1 (en) | Data deletion method and device | |
WO2011010348A1 (ja) | フラッシュメモリ装置 | |
US20170139825A1 (en) | Method of improving garbage collection efficiency of flash-oriented file systems using a journaling approach | |
US11042305B2 (en) | Memory system and method for controlling nonvolatile memory | |
US20120260025A1 (en) | Method for controlling memory system, information processing apparatus, and storage medium | |
US20180150390A1 (en) | Data Storage Device and Operating Method Therefor | |
US20230153012A1 (en) | Memory system and control method | |
CN111949206A (zh) | 存储器系统、控制器以及控制器的操作方法 | |
US20170351428A1 (en) | Performance penalty avoidance for solid state drive | |
US20190265910A1 (en) | Memory system | |
CN112306898A (zh) | 存储设备、其操作方法及包括其的电子设备 | |
US11366751B2 (en) | Storage device and storage control method | |
US12079499B2 (en) | Managing superblock writes using data transfer lists | |
US11853200B2 (en) | Memory system and controller to invalidate data corresponding to a logical address | |
US20240303189A1 (en) | Memory system | |
JP2024127539A (ja) | メモリシステム | |
US20240202113A1 (en) | Memory system | |
US12039193B2 (en) | Apparatus, method and computer program for managing memory page updates within non-volatile memory | |
US20220091772A1 (en) | Memory system | |
JP6666405B2 (ja) | メモリシステムおよび制御方法 | |
CN118484132A (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 |