CN115114195A - 存储系统 - Google Patents

存储系统 Download PDF

Info

Publication number
CN115114195A
CN115114195A CN202110955721.8A CN202110955721A CN115114195A CN 115114195 A CN115114195 A CN 115114195A CN 202110955721 A CN202110955721 A CN 202110955721A CN 115114195 A CN115114195 A CN 115114195A
Authority
CN
China
Prior art keywords
write
time
command
data
response
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.)
Granted
Application number
CN202110955721.8A
Other languages
English (en)
Other versions
CN115114195B (zh
Inventor
江坂直纪
菅野伸一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to CN202311456024.3A priority Critical patent/CN117271400A/zh
Publication of CN115114195A publication Critical patent/CN115114195A/zh
Application granted granted Critical
Publication of CN115114195B publication Critical patent/CN115114195B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Iron Core Of Rotating Electric Machines (AREA)
  • Soundproofing, Sound Blocking, And Sound Damping (AREA)
  • Vehicle Body Suspensions (AREA)
  • Memory System (AREA)

Abstract

本发明的一实施方式实现能够在主机所期望的时间内对写入请求进行响应的存储系统。根据实施方式,存储系统具备非易失性存储器和控制器。控制器从主机受理与具有小于第1数据单位的大小的第1数据相关联的第1写入请求,第1数据单位是向非易失性存储器的写入单位。控制器根据从受理到第1写入请求起经过了第1时间,开始进行至少包含第1数据的第2数据向非易失性存储器的写入处理。控制器根据写入处理完成这一情况,向主机发送对于第1写入请求的第1响应。第1时间是从第2时间减去第3时间得到的时间,第2时间作为从受理到第1写入请求到发送第1响应为止的限制时间,由主机指定。

Description

存储系统
本申请享受以日本专利申请2021-43709号(申请日:2021年3月17日)为基础申请的优先权。本申请通过参照该基础申请而包括基础申请的全部内容。
技术领域
本发明的实施方式涉及控制非易失性存储器的技术。
背景技术
近年来,具备非易失性存储器的存储系统(memory system)广为普及。作为这种存储系统之一,已知有具备NAND型闪速存储器(flash memory,闪存)的固态驱动器(SSD:solid state drive,固态硬盘)。SSD被用作各种计算设备的主储存器。
存储系统例如在从主机受理到一个写入请求的情况下,将在受理到该写入请求的同时从主机接收到的用户数据写入非易失性存储器,并向主机返回响应。
或者,存储系统有时会在根据从主机受理到的多个写入请求而被请求写入的用户数据的总量达到特定的数据单位后将该特定的数据单位的用户数据写入非易失性存储器,并向主机返回分别与多个写入请求对应的响应。特定的数据单位例如是通过1次数据写入动作能够写入非易失性存储器的数据量。也就是说,存储系统可以使用如下机制:不立即执行与所受理的一个写入请求相应的写入,而是在根据多个写入请求而被请求写入的用户数据的总量达到特定的数据单位后,执行与这些多个写入请求相应的写入。以下,也将该机制称为延迟写入完成(Delayed Write Completion)。
在延迟写入完成机制中,例如由于将包含分别与多个写入请求对应的多个用户数据的写入单位的用户数据写入非易失性存储器,因此能够有效地利用非易失性存储器的存储区域。但是,在延迟写入完成机制中,到受理与写入单位的用户数据对应的多个写入请求为止,与各个写入请求对应的写入及响应可能会发生延迟。
由于存储系统不根据从主机受理到一个写入请求而立即进行与该写入请求对应的写入及响应,因此主机有可能无法在期望的时间内获得对于写入请求的响应。
发明内容
本发明的一实施方式提供一种能够在主机所期望的时间内对写入请求进行响应的存储系统。
根据实施方式,存储系统具备非易失性存储器和控制器。控制器从主机受理与具有小于第1数据单位的大小(size)的第1数据相关联的第1写入请求,第1数据单位是向非易失性存储器的写入单位。控制器根据从受理到第1写入请求起经过了第1时间,开始进行至少包含第1数据的第2数据向非易失性存储器的写入处理。控制器根据写入处理完成这一情况,向主机发送对于第1写入请求的第1响应。第1时间是从第2时间减去第3时间得到的时间,第2时间作为从受理到第1写入请求到发送第1响应为止的限制时间,由主机指定。
附图说明
图1是表示包括实施方式涉及的存储系统的信息处理系统的构成例的框图。
图2是表示该实施方式的存储系统中所管理的分区命名空间(Zoned Namespace)的构成例的图。
图3是表示该实施方式的存储系统中通过启动(触发)强制响应来执行与写命令(write command)相应的处理的情况下的时间的例子的图。
图4是表示该实施方式的存储系统中控制强制响应的启动所使用的参数的例子的图。
图5是表示该实施方式的存储系统中所使用的逻辑物理地址转换表的构成例的图。
图6是表示该实施方式的存储系统中所使用的命名空间响应管理表的构成例的图。
图7是表示该实施方式的存储系统中所使用的命令响应管理表的构成例的图。
图8是表示该实施方式的存储系统中所使用的写管理表的构成例的图。
图9是表示第1比较例涉及的存储系统中的与写命令相应的动作例的框图。
图10是表示第2比较例涉及的存储系统中的与写命令相应的动作例的框图。
图11是表示该实施方式的存储系统中的与写强制响应设定命令相应的动作例的框图。
图12是表示该实施方式的存储系统中的与写强制响应确认命令相应的动作例的框图。
图13是表示该实施方式的存储系统中的与写命令相应的动作例的框图。
图14是表示该实施方式的存储系统中所执行的设定处理的步骤的例子的流程图。
图15是表示该实施方式的存储系统中所执行的确认处理的步骤的例子的流程图。
图16是表示图1的信息处理系统内的主机中所执行的写入请求处理的步骤的例子的流程图。
图17是表示图1的信息处理系统内的主机中所执行的响应接收处理的步骤的例子的流程图。
图18是表示该实施方式的存储系统中所执行的写控制处理的步骤的例子的流程图。
图19是表示该实施方式的存储系统中所执行的命令受理处理的步骤的例子的流程图。
图20是表示该实施方式的存储系统中所执行的响应处理的步骤的例子的流程图。
标号说明
1信息处理系统;2主机;3存储系统;4控制器;5 NAND型闪速存储器;6 DRAM;11主机I/F(interface,接口);12 CPU(中央处理单元);13 NAND I/F;14 DRAM I/F;121命令受理部;122强制响应管理部;123写控制部;124分区(zone)管理部;21 FW(firmware,固件);22逻辑物理地址转换表;23 NS(命名空间)响应管理表;24命令响应管理表;25分区描述符(zone descriptor);26写管理表。
具体实施方式
以下,参照附图,对实施方式进行说明。
首先,参照图1,说明包括实施方式涉及的存储系统的信息处理系统1的构成。信息处理系统1包括主机设备2(以下称为主机2)和存储系统3。
主机2是信息处理装置。主机2既可以是将大量且多样的数据保存于存储系统3的存储服务器(storage server),也可以是个人计算机(personal computer)。
存储系统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的高速缓存(cache)区域、命名空间响应管理表(NS响应管理表)23、命令响应管理表24、分区描述符25以及写管理表26的存储区域。
FW21是用于控制控制器4的动作的程序。FW21例如从NAND型闪速存储器5加载到DRAM6。
逻辑物理地址转换表22管理各个逻辑地址与NAND型闪速存储器5的各个物理地址之间的映射(mapping)。
NS响应管理表23例如按命名空间管理关于应该对写命令(写入请求)进行响应的时间的信息。
命令响应管理表24管理应该强制开始进行与所受理的写命令相应的处理的时间。
分区描述符25包含表示各分区的构成和/或状态的信息。
写管理表26管理与所受理的写命令有关的信息。
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循环数。某个区块的1次P/E循环包括用于使该区块内的所有存储单元成为擦除状态的擦除动作和向该区块的各页写入数据的写入动作。
控制器4作为构成为控制NAND型闪速存储器5的存储控制器发挥作用。
控制器4也可以作为构成为执行NAND型闪速存储器5的数据管理以及区块管理的闪存转换层(FTL:flash translation layer)发挥作用。由该FTL执行的数据管理包括(1)对表示各个逻辑地址与NAND型闪速存储器5的各个物理地址之间的对应关系的映射信息的管理以及(2)用于隐藏以页为单位的读/写动作与以区块为单位的擦除(消除(erase))动作之间的差异的处理。区块管理包括不良区块的管理、磨损均衡(wear-leveling)以及垃圾回收(garbage collection)。
逻辑地址是为了对存储系统3进行寻址而由主机2使用的地址。逻辑地址例如是逻辑区块地址(LBA)。以下,主要例示用LBA作为逻辑地址的情况。
使用逻辑物理地址转换表22来执行各个LBA与各个物理地址之间的映射的管理。控制器4使用逻辑物理地址转换表22,以特定的管理尺寸为单位,管理各个LBA与各个物理地址之间的映射。与某个LBA对应的物理地址表示该LBA的数据被写入的NAND型闪速存储器5内的物理存储位置。控制器4使用逻辑物理地址转换表22,管理将NAND型闪速存储器5的存储区域进行逻辑划分得到的多个存储区域。这些多个存储区域分别对应于多个LBA。也就是说,这些多个存储区域中的每个存储区域由一个LBA确定。逻辑物理地址转换表22也可以在存储系统3的电源接通(ON)时从NAND型闪速存储器5加载到DRAM6。
每一次P/E循环只能进行1次向一页的数据写入。因此,控制器4并非将与某个LBA对应的更新数据写入存储有与该LBA对应的以前的数据的物理存储位置,而是将该更新数据写入另一物理存储位置。而且,控制器4通过以将该LBA与该另一物理存储位置相关联的方式更新逻辑物理地址转换表22而使以前的数据无效。从逻辑物理地址转换表22参照的数据(即与LBA关联的数据)被称为有效数据。另外,没有与任何LBA关联的数据被称为无效数据。有效数据是之后有可能从主机2读取的数据。无效数据是已不再可能从主机2读取的数据。
控制器4也可以包括主机接口(主机I/F)11、CPU12、NAND接口(NAND I/F)13、DRAM接口(DRAM I/F)14以及计时器16。上述主机I/F11、CPU12、NAND I/F13、DRAM I/F14以及计时器16也可以经由总线10连接。
主机I/F11作为从主机2接收各种命令、例如I/O命令、各种控制命令的电路发挥作用。I/O命令可以包括写命令、读命令以及验证(verify)命令。控制命令可以包括取消映射(unmap)命令(修剪(trim)命令)、格式化(format)命令、设定命令以及确认命令。格式化命令是用于将存储系统3整体进行取消映射的命令。设定命令是用于对存储系统3设定各种参数的命令。确认命令是用于确认对存储系统3设定的各种参数的命令。
NAND I/F13将控制器4与NAND型闪速存储器5电连接。NAND I/F13对应于ToggleDDR、ONFI(Open NAND Flash Interface,开放式NAND闪存接口)等接口标准。
NAND I/F13作为构成为控制NAND型闪速存储器5的NAND控制电路发挥作用。NANDI/F13也可以经由多个通道(Ch)分别与NAND型闪速存储器5内的多个存储芯片(memorychip)连接。通过并行驱动多个存储芯片,能够使对NAND型闪速存储器5整体的访问(access)宽带化。
DRAM I/F14作为构成为控制DRAM6的访问的DRAM控制电路发挥作用。DRAM6的存储区域被分配成用于存储FW21、逻辑物理地址转换表22、NS响应管理表23、命令响应管理表24、分区描述符25以及写管理表26的区域和/或用作读/写缓冲器的缓冲区域。
计时器16计测时间。计时器16可以将计测的时间提供给控制器4内的各部。
CPU12是构成为控制主机I/F11、NAND I/F13、DRAM I/F14以及计时器16的处理器。CPU12通过执行从NAND型闪速存储器5加载到DRAM6的FW21来进行各种处理。FW21是包含用于使CPU12执行各种处理的指令集的控制程序。CPU12能够执行用于处理来自主机2的各种命令的命令处理等。CPU12的动作通过由CPU12执行的FW21来控制。
控制器4内的各部的功能既可以由控制器4内的专用硬件实现,也可以通过CPU12执行FW21来实现。
CPU12例如作为命令受理部121、强制响应管理部122、写控制部123以及分区管理部124发挥作用。CPU12例如通过执行FW21而作为上述各部发挥作用。稍后参照图11至图13对基于命令受理部121、强制响应管理部122、写控制部123以及分区管理部124的具体的动作进行说明。
在此,对命名空间以及分区进行说明。为了访问存储系统3而由主机2使用的逻辑地址空间(LBA空间)整体可以被划分为多个局部空间。各局部空间有时被称为命名空间。
控制器4例如按分区管理存储于NAND型闪速存储器5的数据。控制器4例如使用按NVMe标准规定的分区命名空间(ZNS)作为以分区为单位管理存储于NAND型闪速存储器5的数据的方法。
图2表示ZNS的构成例。在ZNS中,一个命名空间的LBA空间整体可以被划分为多个分区。多个分区中的每个分区可以包括多个LBA。将一个命名空间划分所得到的多个分区中的每个分区对应于由连续且不重叠的多个LBA构成的LBA范围。各分区被用作用于访问NAND型闪速存储器5的单位。
在图2所示的例子中,命名空间对应于z个LBA0~LBA(z-1),具备x个分区0~分区(x-1)。LBA0是分区0的最小的LBA。另外,LBA(z-1)是分区(x-1)的最大的LBA。
一个分区内的写入按顺序(sequential)执行。即,一个分区内的写入以LBA连续的方式执行。一个分区可以对应于NAND型闪速存储器5内的任意的物理单位。例如,一个分区对应于NAND型闪速存储器5内的一个区块。在该情况下,使用分配给一个分区的LBA范围所包含的连续的LBA来访问一个区块内的数据。
各分区可取的状态包括打开(open)状态、写满(full)状态、关闭(close)状态。处于打开状态的分区是能够进行数据写入的分区。处于写满状态的分区是整个分区被写入了数据的分区。处于关闭状态的分区是中断了数据写入的分区。
此外,与某个分区对应的分区描述符25例如包含该分区的开头的LBA(即最小的LBA)、可写入该分区的数据量、该分区的状态等信息。
控制器4构成为,进行基于延迟写入完成机制的写入,同时,在存在受理后的经过时间超过了阈值的写命令的情况下,强制地进行与该写命令相应的处理并响应主机2。
以下,也将在存在受理后的经过时间超过了阈值的写命令的情况下强制地开始进行与该写命令相应的处理这一情况称为启动强制响应。
写命令是请求将与该写命令相关联的用户数据写入NAND型闪速存储器5的命令。与写命令相应的处理是将与该写命令相关联的用户数据写入NAND型闪速存储器5的处理。
延迟写入完成是如下机制:不立即执行与所受理的一个写命令相应的写入,而是例如在由多个写命令请求向一个分区写入的用户数据的总量达到写入单位后,进行与这些多个写命令相应的写入,并响应主机2。写入单位相当于通过1次数据写入动作能够写入NAND型闪速存储器5的数据量。写入单位例如相当于1页的数据量。在一个存储单元存储多位(bit)数据的情况下,写入单位可以相当于多页的数据量。
可以通过四层式存储单元(QLC:Quad-Level Cells)方式向NAND型闪速存储器5写入数据。在QLC方式中,每个存储单元存储4位数据。在QLC方式中,有时会进行多步骤的写入动作。多步骤的写入动作例如是模糊/精细(foggy/fine)写入动作。
模糊/精细写入动作是写入到某个区块所包含的多页中的一页的数据的读取能够在向继该一页之后的一个以上的页写入数据后进行的写入动作。模糊/精细写入动作包括对连接于同一字线的存储单元组的多次写入动作。第一次写入动作是粗略地设定各存储单元的阈值电压的写入动作,被称为模糊写入动作。第二次写入动作是调整各存储单元的阈值电压的写入动作,被称为精细写入动作。模糊/精细写入动作能够降低由编程干扰带来的影响。
在通过模糊/精细写入动作向NAND型闪速存储器5写入数据的情况下,写入单位相当于4页的数据量。
参照图3以及图4,具体对存储系统3中的强制响应的启动进行说明。
图3表示在存储系统3中通过启动强制响应来执行与写命令相应的处理的情况下的时间的例子。以下,例示按命名空间来管理强制响应的启动的情况。此外,强制响应的启动不限定于以命名空间为单位,也可以按各种存储区域的单位进行管理。
控制器4受理由主机2发布的写命令。控制器4在从受理到写命令起经过了时间A的情况下,强制地开始进行与该写命令相应的处理(即,启动强制响应)。由此,控制器4能够在从受理写命令到经过时间B为止的期间完成对写命令的响应。
图4表示在存储系统3中控制强制响应的启动所使用的参数的例子。控制强制响应的启动所使用的参数例如包括forced_completion_time(强制完成时间)和process_time(处理时间)。
forced_completion_time是用于决定有无强制响应的启动以及在启动强制响应的情况下控制器4从受理写命令到完成对该写命令的响应为止的时间的上限(相当于图3的时间B)的参数。也将从受理写命令到完成对该写命令的响应为止的时间的上限称为强制响应完成时间(forced response completion time)。
在存储系统3中,是否对forced_completion_time设定值是任意的。forced_completion_time的值m表示由用户设定的强制响应完成时间。用户通过从主机2发布写强制响应设定命令来设定forced_completion_time的值m。
写强制响应设定命令是请求设定启动强制响应的时间的命令。在写强制响应设定命令中,指定有确定命名空间的识别信息(命名空间ID)和forced_completion_time的值m。写强制响应设定命令例如被实现为按NVMe标准规定的Set Features(设置特性)命令。以下,也将写强制响应设定命令称为设定命令。
例如,在forced_completion_time的值m为0的情况下,控制器4不启动对于写命令的强制响应。此外,在未进行与设定命令相应的关于强制响应的启动的设定的情况下(即缺省状态),控制器4也不启动对于写命令的强制响应。
另外,在forced_completion_time的值m为1以上的情况下,控制器4使用forced_completion_time的值m决定强制响应完成时间。强制响应完成时间表示由主机2期望的对于写命令的响应时间的上限。强制响应完成时间例如为m×100毫秒(ms)。也就是说,控制器4在从受理写命令到经过m×100毫秒为止的期间,完成对于该写命令的响应。控制器4针对对应的命名空间所包含的多个分区中的每个分区共同地管理forced_completion_time的值m。即,对一个命名空间所包含的多个分区共同设定一个forced_completion_time的值m。
process_time是用于决定在启动强制响应的情况下从控制器4受理写命令到强制地开始进行与该写命令相应的处理为止的时间(相当于图3的时间A)的参数。也将从受理写命令到强制地开始进行与该写命令相应的处理为止的时间称为强制响应启动时间(forcedresponse trigger time)。
在存储系统3中,是否对process_time设定值是任意的。另外,process_time的值n例如可以在存储系统3出厂前设定。
在设定有process_time的值n的情况下,控制器4根据受理到设定命令,使用forced_completion_time的值m和process_time的值n,决定强制响应启动时间。强制响应启动时间例如为(m-n)×100毫秒。也就是说,控制器4在从受理到写命令起经过(m-n)×100毫秒的情况下,强制地开始进行与该写命令相应的处理。
此外,n×100毫秒例如对应于从强制地开始进行与写命令相应的处理(写入处理)到成为能够从NAND型闪速存储器5读取对应的用户数据为止的时间(以下,也称为处理时间(process time))。由此,强制响应启动时间是从强制响应完成时间减去处理时间得到的时间。
写入处理包括从控制器4向NAND型闪速存储器5的用户数据的传送(转发)处理以及NAND型闪速存储器5中的用户数据向存储单元的编程处理。写入处理在变为能够从NAND型闪速存储器5读取用户数据时完成。
因此,在存储系统3中,能够基于由用户设定的forced_completion_time的值m,控制对于所受理的写命令的强制响应的启动。更详细而言,控制器4能够使用forced_completion_time的值m和process_time的值n,决定强制响应完成时间和强制响应启动时间。控制器4在从主机2受理到写命令起经过了强制响应启动时间的情况下,强制地开始进行与该写命令对应的用户数据向NAND型闪速存储器5的写入。由此,控制器4能够在主机2所期望的强制响应完成时间内对该写命令进行响应。
接着,参照图5至图8,对在存储系统3中使用的几个表进行说明。
图5表示逻辑物理地址转换表22的一个构成例。逻辑物理地址转换表22管理各个LBA与NAND型闪速存储器5的各个物理地址之间的映射。控制器4可以使用逻辑物理地址转换表22将LBA转换为物理地址。另外,控制器4可以使用逻辑物理地址转换表22将物理地址转换为LBA。
在图5所示的例子中,对LBA“0”、LBA“1”和LBA“2”分别映射有物理地址“X”、物理地址“Y”和物理地址“Z”。
图6表示NS响应管理表23的一个构成例。NS响应管理表23可以包括分别与一个以上的命名空间对应的一个以上的条目(entry)。各条目例如包括命名空间ID字段(field)、强制响应完成时间字段以及强制响应启动时间字段。
在与某个命名空间对应的条目中,命名空间ID字段表示赋予该命名空间的识别信息(命名空间ID)。控制器4能够通过一个命名空间ID确定对应的一个命名空间。
强制响应完成时间字段表示在对应的命名空间包含写命令的写入目的地的情况下控制器4要对该写命令做出响应的时间的上限(即强制响应完成时间)。命名空间包含写命令的写入目的地意味着由写命令指定的LBA位于该命名空间的LBA空间内。控制器4构成为,在从受理写命令到经过强制响应完成时间字段所表示的时间为止的期间,向主机2发送对于该写命令的响应。在强制响应完成时间字段中,例如以毫秒为单位设定时间。
强制响应启动时间字段表示在对应的命名空间包含写命令的写入目的地的情况下控制器4开始进行与该写命令相应的处理的时间(即强制响应启动时间)。也就是说,控制器4在从受理到写命令起经过了强制响应启动时间字段所表示的时间的情况下,开始进行与该写命令相应的处理。在强制响应启动时间字段中,例如以毫秒为单位设定时间。
在图6所示的例子中,命名空间ID“1”与强制响应完成时间“20000”和强制响应启动时间“15000”相关联。
在以下关于NS响应管理表23的说明中,也将命名空间ID字段所示的值简称为命名空间ID。对于NS响应管理表23的其他各字段所示的值以及其他表的各字段所示的值也是同样的。
图7表示命令响应管理表24的一个构成例。命令响应管理表24可以包括分别与一个以上的写命令对应的一个以上的条目。各条目例如包括命令ID字段和到启动为止的时间字段。
在与某个写命令对应的条目中,命令ID字段表示赋予该写命令的识别信息。赋予写命令的识别信息也被称为命令ID。控制器4能够通过一个命令ID确定对应的一个写命令。
到启动为止的时间字段表示到强制地开始进行与对应的写命令相应的处理为止的剩余时间。具体而言,在到启动为止的时间字段中,例如将对包含该写命令的写入目的地的命名空间设定的强制响应启动时间设定为初始值。控制器4使设定于到启动为止的时间字段的时间例如根据计时器16所计测的时间的经过而减少。而且,在设定于到启动为止的时间字段的时间变为0的情况下,强制地开始进行与该写命令相应的处理。在到启动为止的时间字段中,例如以毫秒为单位设定时间。
在图7所示的例子中,命令ID“11”与到启动为止的时间“1200”相关联,命令ID“12”与到启动为止的时间“10000”相关联。
图8表示写管理表26的一个构成例。写管理表26可以包括分别与一个以上的写命令对应的一个以上的条目。各条目例如包括命令ID字段、LBA字段、数据长度字段、数据缓冲区(data buffer)信息字段以及分区字段。
命令ID字段表示对应的写命令的命令ID。
LBA字段表示由对应的写命令指定的LBA。该LBA表示根据写命令用户数据应该被写入的LBA范围的开头的LBA。
数据长度字段表示由对应的写命令指定的数据长度。该数据长度表示根据写命令而应该写入的用户数据的长度。由此,使用由写命令指定的LBA和数据长度,可以确定根据该写命令而应该写入用户数据的LBA范围。
数据缓冲区信息字段表示由对应的写命令指定的数据缓冲区信息。该数据缓冲区信息表示在主机2中存储有根据写命令而应该写入的用户数据的位置。也就是说,控制器4将用户数据从由数据缓冲区信息所表示的主机2内的存储位置向存储系统3传送。
分区字段表示包含由对应的写命令指定的LBA的分区。分区例如由分配给该分区的LBA范围的开头的LBA(即最小的LBA)表示。写管理表26能够使用分区字段所表示的分区,按分区管理与写命令有关的信息。此外,控制器4也可以使用每个分区的多个写管理表26来替代为各条目设置分区字段。
(比较例涉及的存储系统的动作)
在此,使用两个比较例涉及的存储系统,说明与写命令相应的动作例。
图9是表示第1比较例涉及的存储系统3A中的与写命令相应的动作例的框图。第1比较例的存储系统3A例如与本实施方式的存储系统3具有同样的系统构成。
存储系统3A构成为,每当受理到由主机2A发布的一个写命令时,便执行与写命令相应的处理,并向主机2A返回响应。存储系统3A的CPU12A作为命令受理部121A以及写控制部123A发挥作用。
主机2A例如具备提交队列(SQ:submission queue)401A、完成队列(CQ:completion queue)402A以及数据缓冲器403A。
提交队列401A包括多个槽(slot),主机2A将向存储系统3A发布的命令分别写入多个槽。主机2A要写入命令的提交队列401A中的位置(即槽)由SQ尾指针(SQ Tail pointer)指示。存储系统3A要获取(fetch)命令的提交队列401A中的位置由SQ头指针(SQ Headpointer)指示。
完成队列402A包括多个槽,存储系统3A将对于命令的响应分别写入多个槽。存储系统3A要写入响应的完成队列402A中的位置由CQ尾指针指示。主机2A要获取响应的完成队列402A中的位置由CQ头指针指示。
数据缓冲器403A是临时存储要写入存储系统3A的NAND型闪速存储器5A中的用户数据的存储区域。
以下对存储系统3A以及主机2A的具体的动作例进行说明。在此,为了使说明易于理解,例示写入提交队列401A的命令仅为写命令的情况。
首先,主机2A将要写入存储系统3A的NAND型闪速存储器5A的用户数据存储于数据缓冲器403A。然后,主机2A向提交队列401A中的SQ尾指针所示的位置写入写命令(即,发布写命令)。该写命令是请求写入存储于数据缓冲器403A的用户数据的写命令。
接着,主机2A对SQ尾指针加1。此外,在对SQ尾指针加1得到的值达到提交队列401A的槽数量(即队列大小)的情况下,主机2A将SQ尾指针设定为0。然后,主机2A将更新后的SQ尾指针的值写入存储系统3A的SQ Tail doorbell(门铃)寄存器。
存储系统3A的命令受理部121A从提交队列401A中的SQ头指针所示的位置获取写命令(图9中的(1))。在SQ头指针与SQ尾指针有差别的情况下,命令受理部121A能够从提交队列401A获取写命令。命令受理部121A对SQ头指针加1。此外,在对SQ头指针加1得到的值达到提交队列401A的槽数量的情况下,命令受理部121A将SQ头指针设定为0。命令受理部121A将所获取的写命令发送给写控制部123A(图9中的(2))。
写控制部123A根据由命令受理部121A发送来的写命令,将应该写入NAND型闪速存储器5A的用户数据从数据缓冲器403A向DRAM6A传送。写控制部123A将传送来的用户数据写入NAND型闪速存储器5A(即进行编程)(图9中的(3))。然后,写控制部123A在变为能够读取所写入的用户数据的情况下,向命令受理部121A通知与对应的写命令相应的处理的完成(图9中的(4))。
命令受理部121A根据写控制部123A的通知,向完成队列402A中的CQ尾指针所示的位置写入对应的写命令的完成通知,并发布中断(interrupt)(图9中的(5))。命令受理部121A通过发布中断,向主机2A通知在完成队列402A中存在应该被处理的新的完成通知。另外,命令受理部121A对CQ尾指针加1。此外,在对CQ尾指针加1得到的值达到完成队列402A的槽数量的情况下,命令受理部121A将CQ尾指针设定为0。
主机2A根据由命令受理部121A发布的中断,从完成队列402A中的CQ头指针所示的位置获取完成通知。主机2A对CQ头指针加1。此外,在对CQ头指针加1得到的值达到完成队列402A的槽数量的情况下,主机2A将CQ头指针设定为0。主机2A将更新后的CQ头指针值写入存储系统3A的CQ Head doorbell寄存器。主机2A清除从存储系统3A接收到的中断。然后,主机2A基于获取的完成通知,释放存储有完成写入的用户数据的数据缓冲器403A内的区域。
通过以上的动作,第1比较例的存储系统3A每当从主机2A受理到一个写命令时,便进行与写命令相应的处理,并向主机2A返回响应(完成通知)。由此,第1比较例的存储系统3A可以在主机2A所期望的时间内对写命令进行响应。
图10是表示第2比较例涉及的存储系统3B中的与写命令相应的动作例的框图。第2比较例的存储系统3B例如与本实施方式的存储系统3具有同样的系统构成。
存储系统3B构成为,在由多个写命令请求对一个分区写入的用户数据的总量达到写入单位后,将写入单位的用户数据写入NAND型闪速存储器5B,并向主机2B返回对于多个写命令中的每一个的响应。存储系统3B的CPU12B作为命令受理部121B以及写控制部123B发挥作用。
主机2B的构成及动作与前面参照图9所述的第1比较例中的主机2A是同样的。此外,主机2B在发布一个写命令后,可以在获得对于该写命令的响应之前发布后续的写命令。这是因为:如果主机2B构成为等待对于一个写命令的响应然后再发布下一个写命令,则有可能在与要在由多个写命令请求写入的用户数据的总量达到写入单位后进行响应的存储系统3B之间发生死锁(deadlock)。
以下,对于存储系统3B的动作,主要对与第1比较例的存储系统3A的不同之处进行说明。
存储系统3B的命令受理部121B从提交队列401B中的SQ头指针所示的位置获取写命令(图10中的(1))。命令受理部121B将获得的写命令发送给写控制部123B(图10中的(2))。
写控制部123B从由命令受理部121B发送来的写命令,取得由写命令指定的命令ID、LBA、数据长度以及数据缓冲区信息。写控制部123B确定包括所取得的LBA的分区。写控制部123B使用所取得的命令ID、LBA、数据长度以及数据缓冲区信息、和所确定的分区,将写管理表26B更新(图10中的(3))。写控制部123B使用写管理表26B,判定主机2B的数据缓冲器403B是否存储有针对一个分区的写入单位的用户数据。
在主机2B的数据缓冲器403B未存储有针对一个分区的写入单位的用户数据的情况下,写控制部123B不进行向NAND型闪速存储器5B的用户数据的写入。在主机2B的数据缓冲器403B未存储有针对一个分区的写入单位的用户数据的期间,命令受理部121B可以反复进行从提交队列401B的写命令的获取。
在数据缓冲器403B存储有针对一个分区的写入单位的用户数据的情况下,写控制部123B将写入单位的用户数据从数据缓冲器403B向NAND型闪速存储器5B传送,并将传送来的写入单位的用户数据写入NAND型闪速存储器5B(进行编程)(图10中的(4))。此外,也可以将传送的写入单位的用户数据缓存在DRAM6B中。而且,在存在变为能够从NAND型闪速存储器5B读取对应的用户数据的写命令的情况下,写控制部123B向命令受理部121B通知与该写命令相应的处理的完成(图10中的(5))。写控制部123B向命令受理部121B通知分别与和写入单位的用户数据对应的多个写命令相应的处理的完成。
命令受理部121B根据写控制部123B的通知,向完成队列402B中的CQ尾指针所示的位置写入对应的写命令的完成通知,并发布中断(图10中的(6))。发布中断后的命令受理部121B以及主机2B的动作与第1比较例的命令受理部121A以及主机2A的动作是同样的。
通过以上的动作,第2比较例的存储系统3B在从主机2B通过多个写命令请求对一个分区写入的用户数据的总量达到写入单位的情况下,将写入单位的用户数据写入NAND型闪速存储器5B(更详细而言是与该分区对应的NAND型闪速存储器5B的存储区域)。而且,存储系统3B向主机2B返回对多个写命令中的每一个的响应。
根据一个写命令而应该写入的用户数据的大小例如小于NAND型闪速存储器5B所对应的写入单位。在针对一个分区的写入单位的用户数据存储于数据缓冲器403B的情况下,存储系统3B将该写入单位的用户数据写入分区。由此,存储系统3B能够有效地利用NAND型闪速存储器5B的存储区域。
存储系统3B的动作相当于延迟写入完成机制。在延迟写入完成机制中,到受理到与写入单位的用户数据对应的多个写命令为止,与各个写命令对应的写入及响应可能发生延迟。例如,在主机2B发布了请求写入小于写入单位的用户数据的第1写命令后不发布后续的写命令的情况下,数据缓冲器403B内不会存储写入单位的用户数据。由此,不开始进行与第1写命令相应的数据写入,对主机2B的响应有可能延迟。
存储系统3B不根据从主机2B受理到一个写命令而立即进行与该写命令对应的写入及响应,由此主机2B有可能无法在期望的时间内获得对于写命令的响应。在该情况下,写命令可能发生阻塞(stall),可能发生从主机2B向存储系统3B的用户数据的写入失败这一不良情况。
然而,根据受理到一个写命令而立即进行与该写命令对应的写入及响应与延迟写入完成机制相抵触。
因此,本实施方式的存储系统3构成为,进行基于延迟写入完成机制的写入,同时,在主机2所期望的时间内对写命令进行响应。具体而言,存储系统3的控制器4在存在受理后的经过时间达到了强制响应启动时间的写命令的情况下,将与该写命令对应的用户数据写入设置于NAND型闪速存储器5的共享写缓冲区,而不是写入与包括由写命令指定的LBA的分区对应的NAND型闪速存储器5的存储区域。而且,控制器4使包括由写命令指定的LBA的分区转变为关闭状态。强制响应启动时间设定为,使得能够在主机2所期望的时间(强制响应完成时间)内完成与写命令相应的处理。因此,控制器4能够在主机2所期望的时间内对写命令进行响应。
另外,在受理到对应的写命令后的经过时间达到强制响应启动时间之前,存储于数据缓冲器403的应该写入一个分区的用户数据的总量达到写入单位的情况下,控制器4将该写入单位的用户数据写入分区。也就是说,控制器4进行基于延迟写入完成机制的写入。
因此,控制器4能够在主机2所期望的时间内对写命令进行响应,同时有效地利用NAND型闪速存储器5的存储区域。由此,能够提供一种由延迟写入完成机制与QLC闪速存储器这样的需要多步骤的写入动作的闪速存储器的组合所实现的低成本的存储系统3。除此以外,还能够维持与已有的软件堆栈(software stack)的互换性。
参照图11至图13,对本实施方式的存储系统3的具体的动作例进行说明。
图11是表示存储系统3中的与写强制响应设定命令(设定命令)相应的动作例的框图。
主机2向存储系统3发送(发布)设定命令(图11中的(1))。在设定命令中,例如指定了命名空间ID和forced_completion_time的值m。
存储系统3的命令受理部121接收由主机2发送的设定命令。而且,命令受理部121将设定命令发送给强制响应管理部122(图11中的(2))。
强制响应管理部122根据设定命令将NS响应管理表23更新(图11中的(3))。强制响应管理部122使用由设定命令指定的forced_completion_time的值m,决定强制响应完成时间和强制响应启动时间。而且,强制响应管理部122生成表示与由设定命令指定的命名空间ID相关联的强制响应完成时间和强制响应启动时间的条目,并将其追加到NS响应管理表23中。
更具体而言,首先,强制响应管理部122取得由设定命令指定的命名空间ID和forced_completion_time的值m。在此,将由所取得的命名空间ID确定的命名空间称为对象命名空间。
在forced_completion_time的值m为1以上的情况下,强制响应管理部122以使得在基于forced_completion_time的值m的强制响应完成时间内对对象命名空间为写入目的地的写命令进行响应的方式更新NS响应管理表23。更详细而言,强制响应管理部122例如算出m×100毫秒作为强制响应完成时间。
强制响应管理部122取得process_time的值n。process_time的值n例如在存储系统3出厂前已决定。process_time的值n例如存储于NAND型闪速存储器5。而且,强制响应管理部122例如算出(m-n)×100毫秒作为强制响应启动时间。此外,在此虽然表示了m及n由以100毫秒为单位的时间指定的例子,但只要是能够算出强制响应完成时间和强制响应启动时间的值,m及n也可以用任何单位的值来表示。
接着,强制响应管理部122判定算出的强制响应完成时间和强制响应启动时间是否为有效值。例如,在算出的强制响应完成时间比针对NAND型闪速存储器5的编程时间tProg短的情况下,强制响应管理部122判断为强制响应完成时间为无效值。例如,在算出的强制响应启动时间为0以下的值的情况下(即在m为n以下的情况下),强制响应管理部122判断为强制响应启动时间为无效值。另外,例如在算出的强制响应完成时间超过按NVMe标准规定的完成推荐极限(FRL:Finish Recommended Limit)的情况下,强制响应管理部122判断为强制响应完成时间为无效值。FRL是存储系统3的内部参数。FRL表示转变为打开状态的分区达到写满状态为止的极限的时间。
在算出的强制响应完成时间和强制响应启动时间中的至少一方为无效值的情况下,强制响应管理部122向主机2通知设定命令的错误。
在算出的强制响应完成时间和强制响应启动时间为有效值的情况下,强制响应管理部122将表示所取得的命名空间ID、与算出的强制响应完成时间和强制响应启动时间的条目追加到NS响应管理表23中。此外,在NS响应管理表23中已经存在与所取得的命名空间ID对应的条目的情况下,使用算出的强制响应完成时间和强制响应启动时间将该条目更新。
另外,在由设定命令指定的forced_completion_time的值m为0的情况下,强制响应管理部122以不启动强制响应的方式更新NS响应管理表23。更详细而言,在forced_completion_time的值m为0且NS响应管理表23中存在与由设定命令指定的命名空间ID对应的条目的情况下,强制响应管理部122将该条目从NS响应管理表23中删除。另外,在forced_completion_time的值m为0且NS响应管理表23中不存在与由设定命令指定的命名空间ID对应的条目的情况下,强制响应管理部122不在NS响应管理表23中追加与该命名空间ID对应的条目。
根据以上的构成,存储系统3能够根据从主机2接收到的设定命令,按命名空间控制对于写命令的强制响应的启动。
图12是表示存储系统3中的与写强制响应确认命令相应的动作例的框图。写强制响应确认命令是请求提供与直到针对写命令启动强制响应为止的时间有关的信息的命令。写强制响应确认命令例如被实现为按NVMe标准规定的Get Features(取出特性)命令。以下,也将写强制响应确认命令称为确认命令。
主机2向存储系统3发送确认命令(图12中的(1))。在确认命令中,例如指定了命名空间ID。
存储系统3的命令受理部121接收由主机2发送的确认命令。而且,命令受理部121将确认命令发送给强制响应管理部122(图12中的(2))。
强制响应管理部122根据确认命令,从NS响应管理表23取得与启动强制响应的时间有关的信息(图12中的(3))。具体而言,首先,强制响应管理部122取得由确认命令指定的命名空间ID。强制响应管理部122确定NS响应管理表23内的包含所取得的命名空间ID的条目。而且,强制响应管理部122从所确定的条目中取得强制响应完成时间和强制响应启动时间中的至少一方。
强制响应管理部122使用所取得的强制响应完成时间和强制响应启动时间中的至少一方,生成与启动强制响应的时间有关的信息并发送给命令受理部121(图12中的(4))。该信息例如表示强制响应完成时间和强制响应启动时间中的至少一方。或者,该信息也可以表示与强制响应完成时间和强制响应启动时间中的至少一方关联的信息(例如,forced_completion_time的值m、process_time的值n)。
然后,命令受理部121将包含与启动强制响应的时间有关的信息的响应发送到主机2(图12中的(5))。
根据以上的构成,存储系统3能够根据从主机2接收到的确认命令,向主机2提供关于启动与所指定的命名空间对应的强制响应的时间的信息。
图13是表示存储系统3中的与写命令相应的动作例的框图。
存储系统3的控制器4构成为,进行基于延迟写入完成机制的写入,同时,在受理到写命令后的经过时间达到了强制响应启动时间的情况下,强制地开始进行对应的用户数据向NAND型闪速存储器5的写入。控制器4在变为能够读取所写入的用户数据的情况下,向主机2发送表示与对应的写命令相应的处理完成这一情况的响应。
另外,控制器4管理与至少一个分区对应的NAND型闪速存储器5内的至少一个存储区域(称为NAND分区51)和至少一个共享写缓冲区52。NAND分区51是将NAND型闪速存储器5的存储区域进行逻辑划分得到的存储区域。共享写缓冲区52是非易失性地存储要向至少一个NAND分区51写入的用户数据的存储区域。
至少一个NAND分区51中的每一个例如与至少一个共享写缓冲区52中的任一个相关联。另外,一个共享写缓冲区52可以与一个以上的NAND分区51相关联。也就是说,一个共享写缓冲区52可以由一个以上的NAND分区51共享。表示NAND分区51与共享写缓冲区52的对应的信息例如存储于DRAM6。
主机2的构成及动作与第1比较例中的主机2A以及第2比较例中的主机2B是同样的。
以下,对于存储系统3的动作,主要对与第1比较例的存储系统3A以及第2比较例的存储系统3B的不同之处进行说明。
存储系统3的命令受理部121从提交队列401中的SQ头指针所示的位置获取写命令(图13中的(1))。写命令与应该向至少一个分区中的任一分区写入的用户数据相关联。更详细而言,在写命令中,例如指定了命令ID、LBA、数据长度、数据缓冲区信息以及命名空间ID。
命令受理部121将所获取的写命令发送给写控制部123(图13中的(2))。以下,也将所获取的写命令称为第1对象写命令。
写控制部123取得由第1对象写命令指定的命令ID、LBA、数据长度以及数据缓冲区信息。写控制部123确定包括所取得的LBA的分区。写控制部123使用所取得的命令ID、LBA、数据长度以及数据缓冲区信息、和所确定的分区,将写管理表26更新(图13中的(3))。而且,写控制部123使用写管理表26,判定主机2的数据缓冲器403中是否存储有针对一个分区的写入单位的用户数据。
在数据缓冲器403存储有针对一个分区的写入单位的用户数据的情况下,写控制部123将写入单位的用户数据从数据缓冲器403向NAND型闪速存储器5传送,并将传送来的写入单位的用户数据写入(进行编程)NAND型闪速存储器5内的NAND分区51(在此为NAND分区511)(图13中的(4))。此外,也可以将传送的写入单位的用户数据缓存在DRAM6中。写入单位的用户数据例如是将根据多个写命令而分别应该写入的多个用户数据合起来的数据。多个写命令包括第1对象写命令。
然后,写控制部123在存在变为能够从NAND型闪速存储器5读取对应的用户数据的写命令的情况下,向命令受理部121通知与该写命令相应的处理的完成(图13中的(5))。写控制部123向命令受理部121通知分别与和写入单位的用户数据对应的多个写命令相应的处理的完成。另外,写控制部123将与多个写命令的每一个对应的条目从写管理表26中删除(图13中的(6))。
命令受理部121每当接收到写控制部123的通知时,便向主机2发送表示与对应的写命令相应的处理完成这一情况的响应。更具体而言,命令受理部121根据写控制部123的通知,将对应的写命令的完成通知写入到完成队列402中的CQ尾指针所示的位置,并发布中断(图13中的(7))。写控制部123的通知例如包含有处理已完成的写命令的命令ID。发布中断后的命令受理部121以及主机2的动作与第1比较例的命令受理部121A以及主机2A的动作是同样的。
此外,在用户数据的写入(编程)中发生了错误的情况下,写控制部123以及命令受理部121向主机2发送表示在与对应的写命令相应的处理中发生了错误这一情况的响应。也就是说,命令受理部121将针对写命令的错误通知写入到完成队列402中的CQ尾指针所示的位置。
另外,在主机2的数据缓冲器403中未存储有针对一个分区的写入单位的用户数据的情况下,写控制部123不进行向NAND型闪速存储器5的用户数据的写入。另外,写控制部123指示强制响应管理部122管理第1对象写命令(图13中的(8))。在该指示中例如包括由第1对象写命令指定的命令ID和命名空间ID。
强制响应管理部122根据写控制部123的指示,在NS响应管理表23中确定与指示中的命名空间ID对应的条目。强制响应管理部122从所确定的条目中取得强制响应启动时间(图13中的(9))。也就是说,强制响应管理部122从NS响应管理表23取得应该强制开始进行与第1对象写命令相应的处理的强制响应启动时间。
接着,强制响应管理部122将包含由写控制部123发出的指示中的命令ID和所取得的强制响应启动时间的条目追加到命令响应管理表24中(图13中的(10))。强制响应启动时间被用作到强制地开始进行与第1对象写命令相应的处理为止的剩余时间(即,到启动为止的时间)的初始值。
强制响应管理部122使命令响应管理表24中的各条目所包含的到启动为止的时间例如根据计时器16所计测的时间的经过而减少。而且,在到启动为止的时间变为0的情况下(也就是说,在从受理到对应的写命令起经过了强制响应启动时间的情况下),强制响应管理部122指示写控制部123强制地开始进行与对应的写命令相应的处理(图13中的(11))。在该指示中例如包括到启动为止的时间变为0的条目中的命令ID。以下,将由到启动为止的时间变为0的条目表示的写命令(即,应该强制开始对应的处理的写命令)称为第2对象写命令。
写控制部123根据强制响应管理部122的指示,从写管理表26取得包含指示中的命令ID的条目(图13中的(12))。以下,将包含指示中的命令ID的条目称为第1条目。另外,假定与由第1条目表示的分区对应的NAND分区51是NAND分区512。写控制部123使用第1条目,将根据第2对象写命令而应该写入的用户数据从数据缓冲器403向NAND型闪速存储器5传送(图13中的(13))。此外,传送来的用户数据也可以缓存在DRAM6中。
写控制部123以带填充(padding)的方式将传送来的用户数据写入NAND型闪速存储器5的共享写缓冲区52(在此为共享写缓冲区521)(图13中的(13))。写控制部123通过使用第1条目所包含的LBA、数据长度以及数据缓冲区信息,能够确定根据第2对象写命令而应该写入的用户数据。被写入用户数据的共享写缓冲区521与原本应该写入该用户数据的NAND分区51(在此NAND分区512)相关联。另外,以带填充的方式写入用户数据意味着写入由用户数据和填充用数据构成的写入单位的数据。
对于向共享写缓冲区52的数据的写入,也可以使用QLC方式。对于向共享写缓冲区52的数据的写入,也可以使用在每个存储单元存储1位数据的单层式存储单元(SLC:Single-Level Cell)方式。
此外,在写管理表26中存在一个以上的包括与由第1条目表示的分区相同的分区的条目的情况下,写控制部123也可以使用第1条目和上述一个以上的条目,将根据对应的多个写命令而分别应该写入的多个用户数据从数据缓冲器403向NAND型闪速存储器5传送,并以带填充的方式将传送来的多个用户数据写入共享写缓冲区521(图13中的(13))。
在此,对与有别于NAND分区512的NAND分区511也与共享写缓冲区521进行关联的情况下的写控制部123的动作进行说明。在该情况下,写控制部123进一步使用写管理表26内的分别包括与该另一NAND分区511对应的分区的一个以上的条目。写控制部123也可以确定根据对应的一个以上的写命令而分别应该写入的一个以上的用户数据。而且,写控制部123也可以将所确定的一个以上的用户数据包括在成为从前述的数据缓冲器403的传送以及向共享写缓冲区521的写入的对象的用户数据中。此时,也可以考虑在命令响应管理表24中管理的与一个以上的写命令分别对应的到启动为止的时间。例如,也可以仅将与到启动为止的时间小于阈值的写命令对应的用户数据包括在成为从前述的数据缓冲器403的传送以及向共享写缓冲区521的写入的对象的用户数据中。
例如,对如下的情况进行说明:在受理到第2对象写命令起经过强制响应启动时间之前,命令受理部121从提交队列401获取到以与有别于NAND分区512的NAND分区511对应的分区作为对象的写命令。两个NAND分区511、512均与共享写缓冲区521相关联。以下,将获取到的以与NAND分区511对应的分区作为对象的写命令称为第3对象写命令。使用写管理表26以及命令响应管理表24来管理第3对象写命令。
写控制部123在从受理到第2对象写命令起经过了强制响应启动时间的情况下,将根据第2对象写命令而应该写入的用户数据和根据第3对象写命令而应该写入的用户数据从数据缓冲器403向NAND型闪速存储器5传送。而且,写控制部123将包含传送来的用户数据的数据写入共享写缓冲区521。更详细而言,在传送来的用户数据的大小相当于写入单位的情况下,写控制部123将传送来的用户数据写入共享写缓冲区521。另外,在传送来的用户数据的大小小于写入单位的情况下,写控制部123以带填充的方式将传送来的用户数据写入共享写缓冲区521。
如此,在与以经过了强制响应启动时间的第2对象写命令为对象的分区对应的NAND分区51(在此为NAND分区512)和与以第3对象写命令为对象的分区对应的另一NAND分区51(在此为NAND分区511)共同与共享写缓冲区521相关联的情况下,与该第3对象写命令对应的用户数据也能够包括在成为从前述的数据缓冲器403的传送以及向共享写缓冲区521的写入的对象的用户数据中。
接着,在存在变为能够从NAND型闪速存储器5读取对应的用户数据的写命令的情况下,写控制部123向命令受理部121以及强制响应管理部122通知与该写命令相应的处理的完成(图13中的(14))。另外,写控制部123将与一个以上的写命令分别对应的条目从写管理表26中删除(图13中的(15))。从写管理表26中删除的一个以上的写命令包括与第1条目对应的第2对象写命令。
命令受理部121每当接收到写控制部123的通知时,便向主机2发送表示与对应的写命令相应的处理完成这一情况的响应。更具体而言,命令受理部121根据写控制部123的通知,将对应的写命令的完成通知写入到完成队列402中的CQ尾指针所示的位置,并发布中断(图13中的(16))。之后的命令受理部121以及主机2的动作与第1比较例的命令受理部121A以及主机2A的动作是同样的。
此外,在用户数据的写入(编程)中发生了错误的情况下,写控制部123以及命令受理部121向主机2发送表示在与对应的写命令相应的处理中发生了错误这一情况的响应。也就是说,命令受理部121将针对写命令的错误通知写入到完成队列402中的CQ尾指针所示的位置。
另外,强制响应管理部122根据写控制部123的通知,将与一个以上的写命令分别对应的一个以上的条目从命令响应管理表24中删除(图13中的(17))。写控制部123的通知例如可以包括表示处理已完成的一个以上的写命令各自的命令ID的信息、和表示NAND分区51(在此例如为NAND分区512)的信息。通知中包含的NAND分区51是原本应该写入与一个以上的写命令对应的用户数据的NAND分区51。强制响应管理部122指示分区管理部124将与通知中包含的NAND分区51对应的分区的状态从打开状态转变为关闭状态(图13中的(18))。
分区管理部124根据强制响应管理部122的指示,将与NAND分区51对应的分区从打开状态转变为关闭状态(图13中的(19))。分区管理部124例如更新分区描述符25以使得表示与NAND分区512对应的分区为关闭状态。然后,分区管理部124向主机2通知与NAND分区512对应的分区的状态的变更(图13中的(20))。此外,在以与另一NAND分区51(在此为NAND分区511)对应的分区为对象的用户数据也被写入与NAND分区512共同地进行关联的共享写缓冲区521的情况下,写控制部123、强制响应管理部122以及分区管理部124以使得与该另一NAND分区511对应的分区也同样地从打开状态转变为关闭状态的方式进行动作。
此外,在主机2的数据缓冲器403中未存储有针对一个区的写入单位的用户数据且不存在受理后的经过时间达到强制响应启动时间(即,到启动为止的时间变为0)的写命令的情况下,命令受理部121、写控制部123以及强制响应管理部122可以反复进行从提交队列401获取写命令并基于所获取的写命令来更新写管理表26以及命令响应管理表24的动作。
通过以上的动作,在本实施方式的存储系统3中,在从主机2由多个写命令请求对一个分区写入的用户数据的总量达到了写入单位的情况下,控制器4将写入单位的用户数据写入与该分区对应的NAND分区51。而且,控制器4向主机2返回对多个写命令中的每一个的响应。由此,在存储系统3中,能够有效地利用NAND型闪速存储器5的存储区域。
再者,控制器4在存在受理后的经过时间达到了强制响应启动时间的写命令的情况下,将对应的用户数据写入共享写缓冲区52,而不是写入NAND分区51。而且,控制器4向主机2返回对该写命令的完成通知。
如此,在(1)受理到写命令后的经过时间达到强制响应启动时间之前应该向该写命令的写入目的地的分区写入的写入单位的用户数据存储于数据缓冲器403的情况下和(2)存在受理后的经过时间达到了强制响应启动时间的写命令的情况下,控制器4切换用户数据的写入目的地。在(1)的情况下,在受理到写命令后的经过时间达到强制响应启动时间之前开始进行对应的用户数据向NAND分区51的写入,所以控制器4能够在主机2所期望的时间内对写命令进行响应。另外,在(2)的情况下,通过将对应的用户数据写入共享写缓冲区52,控制器4能够在主机2所期望的时间内对写命令进行响应。
因此,在存储系统3中,能够在主机2所期望的时间内对写命令进行响应,同时有效地利用NAND型闪速存储器5的存储区域。
此外,前述的存储系统3中的动作不限于应用于按分区管理存储于NAND型闪速存储器5的数据的情况,也可以应用于按LBA管理存储于NAND型闪速存储器5的数据的情况。在该情况下,不进行分区管理部124的动作(例如,分区的向关闭状态的转变、向主机2通知分区状态的变更)。
在该情况下,控制器4管理NAND型闪速存储器5内的至少一个存储区域和至少一个共享写缓冲区52。至少一个存储区域是将NAND型闪速存储器5的存储区域进行逻辑划分得到的存储区域。至少一个存储区域分别对应于至少一个LBA。
接着,参照图14至图20的流程图,对在存储系统3以及主机2中执行的处理的步骤进行说明。
(存储系统3中的用于设定强制响应的启动的处理)
图14是表示由CPU12执行的设定处理的步骤的例子的流程图。CPU12根据从主机2接收到设定命令,开始进行设定处理。设定处理是用于设定从CPU12受理写命令到强制地开始进行与该写命令相应的处理为止的时间的处理。
首先,CPU12取得由设定命令指定的命名空间ID(步骤S101)。另外,CPU12取得由设定命令指定的forced_completion_time的值m(步骤S102)。m例如是0以上的整数。
接着,CPU12判定所取得的forced_completion_time的值m是否为0(步骤S103)。在forced_completion_time的值m为0的情况下(步骤S103:是),CPU12判定在NS响应管理表23中是否存在与所取得的命名空间ID对应的条目(步骤S104)。在NS响应管理表23中存在与所取得的命名空间ID对应的条目的情况下(步骤S104:是),CPU12从NS响应管理表23中删除与所取得的命名空间ID对应的条目(步骤S105),结束设定处理。由此,CPU12以不会强制地启动以与所取得的命名空间ID相关联的命名空间作为对象的写命令的处理及响应的方式进行设定。
在NS响应管理表23中不存在与所取得的命名空间ID对应的条目的情况下(步骤S104:否),CPU12结束设定处理。也就是说,CPU12已经设定为不会强制地启动以与所取得的命名空间ID相关联的命名空间作为对象的写命令的处理及响应,所以结束设定处理。
另外,在forced_completion_time的值m不为0的情况下(步骤S106:否),即为1以上的情况下,CPU12算出m×100毫秒作为强制响应完成时间(步骤S106)。然后,CPU12取得process_time的值n(步骤S107)。CPU12算出(m-n)×100毫秒作为强制响应启动时间(步骤S108)。
CPU12判定算出的强制响应完成时间和强制响应启动时间是否为有效值(步骤S109)。在算出的强制响应完成时间和强制响应启动时间中的至少一方为无效值的情况下(步骤S109:否),CPU12向主机2通知错误(步骤S110),并结束设定处理。
在算出的强制响应完成时间和强制响应启动时间为有效值的情况下(步骤S109:是),CPU12判定在NS响应管理表23中是否存在与所取得的命名空间ID对应的条目(步骤S111)。在NS响应管理表23中存在与所取得的命名空间ID对应的条目的情况下(步骤S111:是),CPU12使用算出的强制响应完成时间和强制响应启动时间,更新该条目(步骤S112),并结束设定处理。由此,CPU12能够根据设定命令,变更与所指定的命名空间相关联的强制响应完成时间和强制响应启动时间。
另一方面,在NS响应管理表23中不存在与所取得的命名空间ID对应的条目的情况下(步骤S111:否),CPU12将包括所取得的命名空间ID、与算出的强制响应完成时间和强制响应启动时间的条目追加到NS响应管理表23中(步骤S113),并结束设定处理。由此,CPU12能够根据设定命令,设定与所指定的命名空间相关联的强制响应完成时间和强制响应启动时间。
通过以上的设定处理,CPU12能够根据设定命令来设定(变更)在受理了以指定的命名空间作为对象的写命令的情况下是否启动强制响应。另外,CPU12能够根据设定命令来设定从受理写命令到强制地开始进行与该写命令对应的处理为止的时间。
(存储系统3中的用于确认强制响应的启动的处理)
图15是表示由CPU12执行的确认处理的步骤的例子的流程图。CPU12根据从主机2接收到确认命令,开始进行确认处理。确认处理是用于向主机2提供与对命名空间设定的强制响应启动的时间有关的信息的处理。
首先,CPU12取得由设定命令指定的命名空间ID(步骤S201)。CPU12在NS响应管理表23中确定与所取得的命名空间ID对应的条目(步骤S202)。CPU12从所确定的条目中取得强制响应完成时间(步骤S203)。然后,CPU12将所取得的强制响应完成时间发送给主机2(步骤S204)。此外,CPU12也可以将与强制响应完成时间关联的信息发送给主机2。与强制响应完成时间关联的信息例如是将强制响应完成时间转换为以100毫秒为单位的值、即forced_completion_time的值m(=强制响应完成时间/100)。
另外,CPU12也可以从所确定的条目中取得强制响应启动时间,并发送给主机2。或者,CPU12也可以将与强制响应启动时间关联的信息发送给主机2。与强制响应启动时间关联的信息例如是将强制响应启动时间转换为以100毫秒为单位的值、即forced_completion_time的值m与process_time的值n的差量m-n。
通过以上的确认处理,CPU12能够根据确认命令,向主机2提供与对命名空间设定的强制响应完成时间和强制响应启动时间中的至少一方有关的信息。
(主机2中的用于向存储系统3写入用户数据的处理)
图16是表示在主机2中执行的写入请求处理的步骤的例子的流程图。写入请求处理是主机2用于请求向存储系统3写入用户数据的处理。写入请求处理例如通过设置于主机2的处理器执行程序来执行。
主机2将应该写入存储系统3的NAND型闪速存储器5的用户数据存储于数据缓冲器403(步骤S301)。然后,主机2向SQ尾指针所示的提交队列401中的位置写入写命令(步骤S302)。该写命令是请求写入所存储的用户数据的写命令。
接着,主机2对SQ尾指针加1(步骤S303)。此外,在对SQ尾指针加1得到的值达到提交队列401的槽数量的情况下,主机2将SQ尾指针设定为0。然后,主机2将更新后的SQ尾指针值写入存储系统3的SQ Tail doorbell寄存器(步骤S304)。
通过以上的写入请求处理,主机2能够请求存储系统3写入存储于数据缓冲器403的用户数据。主机2经由提交队列401向存储系统3发布写命令,从而请求存储系统3写入用户数据。
图17是表示在主机2中执行的响应接收处理的步骤的例子的流程图。响应接收处理是主机2用于从存储系统3接收对写命令的响应的处理。响应接收处理例如通过设置于主机2的处理器执行程序来执行。主机2根据接收到由存储系统3发布的中断而开始响应接收处理的执行。
首先,主机2从CQ头指针所示的完成队列402中的位置获取完成通知(步骤S401)。该完成通知是表示根据主机2所发布的写命令,对应的用户数据向NAND型闪速存储器5的写入已完成的响应。
接着,主机2对CQ头指针加1(步骤S402)。此外,在对CQ头指针加1得到的值达到完成队列402的槽数量的情况下,主机2将CQ头指针设定为0。主机2将更新后的CQ头指针值写入存储系统3的CQ Head doorbell寄存器(步骤S403)。然后,主机2清除从存储系统3接收到的中断(步骤S404)。
接着,主机2基于所获取的完成通知,释放存储有完成写入的用户数据的数据缓冲器403内的区域(步骤S405)。
通过以上的响应接收处理,主机2能够在与已发出的写命令对应的用户数据的写入完成了的情况下,释放存储有该用户数据的数据缓冲器403内的区域。
此外,主机2还可以在响应接收处理中从存储系统3接收表示分区转变为关闭状态的通知。更具体而言,主机2可以在根据强制响应的启动而进行了与已发布的写命令对应的用户数据的写入的情况下,接收表示原本应该写入该用户数据的分区转变为了关闭状态的通知。主机2根据该通知,例如停止请求对该分区的用户数据的写入的写命令的发出。
(存储系统3中的用于写入用户数据的处理)
图18是表示由CPU12执行的写控制处理的步骤的例子的流程图。写控制处理是CPU12用于受理由主机2发布的写命令并控制与已受理的写命令对应的用户数据的写入的处理。在此,为了使说明易于理解,例示CPU12从主机2的提交队列401受理的命令仅为写命令的情况。
首先,CPU12判定SQ头指针是否与SQ尾指针相等(步骤S501)。也就是说,CPU12使用SQ头指针和SQ尾指针来判定在提交队列401中是否存在应该获取的写命令。
在SQ头指针与SQ尾指针不同的情况下(步骤S501:否),在提交队列401中存在应该获取的写命令,所以CPU12执行命令受理处理(步骤S502)。命令受理处理是CPU12用于受理写命令并取得管理所受理的写命令的信息的处理。更详细而言,在命令受理处理中,根据所受理的写命令来更新写管理表26。写管理表26例如按每个应该写入对应的用户数据的分区管理与所受理的写命令相关的信息。稍后参照图19的流程图对命令受理处理的具体的步骤进行说明。
接着,CPU12判定在主机2的数据缓冲器403中是否存储有针对一个分区的写入单位的用户数据(步骤S503)。在数据缓冲器403中存储有针对一个分区的写入单位的用户数据的情况下(步骤S503:是),CPU12将该写入单位的用户数据从数据缓冲器403向存储系统3的DRAM6传送(步骤S504)。以下,将应该写入该写入单位的用户数据的分区称为第1对象分区。另外,也将与第1对象分区对应的NAND分区51称为第1对象NAND分区51。CPU12将传送来的用户数据向NAND型闪速存储器5传送并写入第1对象NAND分区51(步骤S505)。此外,CPU12也可以将写入单位的用户数据从数据缓冲器403向NAND型闪速存储器5传送,而不缓存在DRAM6中。
接着,CPU12判定是否存在变为能够读取对应的用户数据的写命令(步骤S506)。在不存在变为能够读取对应的用户数据的写命令的情况下(步骤S506:否),CPU12的处理返回到步骤S506。也就是说,由于还无法向主机2通知与写命令相应的用户数据的写入完成这一情况,所以CPU12的处理返回到步骤S506。
在存在变为能够读取对应的用户数据的写命令的情况下(步骤S506:是),CPU12执行响应处理(步骤S507)。响应处理是用于向主机2通知与写命令相应的用户数据的写入已完成并将管理该写命令的信息更新的处理。稍后参照图20的流程图对响应处理的具体的步骤进行说明。
然后,CPU12判定是否对与在步骤S505中写入的写入单位的用户数据对应的所有写命令进行了响应(步骤S508)。在对与写入单位的用户数据对应的写命令中的至少一个没有进行响应的情况下(步骤S508:否),CPU12的处理返回到步骤S506。
另一方面,在对与写入单位的用户数据对应的所有写命令进行了响应的情况下(步骤S508:是),CPU12的处理进入步骤S501。也就是说,CPU12继续进行用于从主机2受理新的写命令并控制与已受理的写命令对应的用户数据的写入的处理。
另外,在主机2的数据缓冲器403中未存储有针对一个分区的写入单位的用户数据的情况下(步骤S503:否),CPU12使用在步骤S502中受理的写命令来更新命令响应管理表24(步骤S509),CPU12的处理进入步骤S510。具体而言,CPU12使用由在步骤S502中受理的写命令指定的命名空间ID,从NS响应管理表23中取得强制响应启动时间。而且,CPU12将包括由写命令指定的命令ID和所取得的强制响应启动时间的条目追加到命令响应管理表24中。所追加的条目中的强制响应启动时间被用作直到强制地开始进行与写命令相应的处理为止的时间(即到启动为止的时间)的初始值。CPU12使命令响应管理表24中的各条目所包含的到启动为止的时间例如根据计时器16所计测的时间的经过而减少。
另外,在SQ头指针与SQ尾指针相等的情况下(步骤S501:是),CPU12的处理也进入步骤S510。
接着,CPU12判定是否存在受理后的经过时间达到了强制响应启动时间的写命令(步骤S510)。具体而言,CPU12例如在命令响应管理表24包括表示到启动为止的时间变为0的写命令的条目的情况下,判断为存在受理后的经过时间达到了强制响应启动时间的写命令。
在不存在受理后的经过时间达到了强制响应启动时间的写命令的情况下(步骤S510:否),CPU12的处理进入步骤S501。
在存在受理后的经过时间达到了强制响应启动时间的写命令的情况下(步骤S510:是),CPU12确定应该写入与该写命令对应的用户数据的分区(以下,称为第2对象分区)(步骤S511)。CPU12例如使用写管理表26来确定第2对象分区。然后,CPU12将应该写入第2对象分区的用户数据从主机2的数据缓冲器403向存储系统3的DRAM6传送(步骤S512)。更具体而言,CPU12例如使用写管理表26来确定应该写入第2对象分区的至少一个用户数据。至少一个用户数据分别对应于至少一个写命令。CPU12将所确定的至少一个用户数据从数据缓冲器403向DRAM6传送。传送来的用户数据的大小小于NAND型闪速存储器5所对应的写入单位。
接着,CPU12以带填充的方式将传送来的用户数据写入共享写缓冲区52(步骤S513)。也就是说,CPU12通过对用户数据添加填充数据,从而将写入单位的数据写入共享写缓冲区52。被写入用户数据的共享写缓冲区52与第2对象分区所对应的NAND分区51相关联。此外,CPU12也可以将用户数据从数据缓冲器403向NAND型闪速存储器5传送,而不缓存在DRAM6中。
接着,CPU12判定是否存在变为能够读取对应的用户数据的写命令(步骤S514)。在不存在变为能够读取对应的用户数据的写命令的情况下(步骤S514:否),CPU12的处理返回到步骤S514。
在存在变为能够读取对应的用户数据的写命令的情况下(步骤S514:是),CPU12执行响应处理(步骤S515)。也就是说,CPU12向主机2通知与写命令相应的用户数据的写入已完成,并将管理该写命令的信息更新。
然后,CPU12判定是否对与在步骤S513中写入的用户数据对应的所有写命令进行了响应(步骤S516)。在对与所写入的用户数据对应的写命令中的至少一个没有进行响应的情况下(步骤S516:否),CPU12的处理返回到步骤S514。
另一方面,在对与所写入的用户数据对应的所有写命令进行了响应的情况下(步骤S516:是),CPU12使第2对象分区转变为关闭状态(步骤S517)。然后,CPU12向主机2通知第2对象分区的状态的变更(步骤S518),CPU12的处理进入步骤S501。
此外,CPU12也可以不使第2对象分区转变为关闭状态,而是取而代之地使第2对象分区成为写满状态。CPU12例如在步骤S513中,以成为向整个第2对象分区写入了数据的状态(写满状态)的方式,将传送来的用户数据和填充数据写入共享写缓冲区52。在该情况下,CPU12在对与所写入的用户数据对应的所有写命令进行了响应后,例如向主机2通知第2对象分区变为写满状态。然后,CPU12的处理进入步骤S501。
通过以上的写控制处理,CPU12能够从主机2受理写命令,并控制与已受理的写命令对应的用户数据的写入。
具体而言,在数据缓冲器403存储有应该写入第1对象分区的写入单位的用户数据的情况下,CPU12将该写入单位的用户数据写入第1对象NAND分区51。并且,CPU12向主机2返回对与完成了写入的用户数据对应的写命令的完成通知。
另外,在存在受理后的经过时间达到了强制响应启动时间的写命令的情况下,CPU12确定应该写入对应的用户数据的第2对象分区。CPU12将存储于数据缓冲器403的应该写入第2对象分区的用户数据写入共享写缓冲区52,而不写入NAND分区51。并且,CPU12向主机2返回对与完成了写入的用户数据对应的写命令的完成通知。
由此,存储系统3能够在主机2所期望的时间内对写命令进行响应,同时有效地利用NAND型闪速存储器5的存储区域。
图19是表示由CPU12执行的命令受理处理的步骤的例子的流程图。命令受理处理是用于受理写命令并取得管理所受理的写命令的信息的处理。命令受理处理相当于在前面参照图18所述的写控制处理的步骤S502。
首先,CPU12从SQ头指针所示的提交队列401中的位置获取写命令(步骤S601)。CPU12对SQ头指针加1(步骤S602)。此外,在对SQ头指针加1的次数达到提交队列401的槽数量的情况下,CPU12将SQ头指针设定为0。
接着,CPU12从所获取的写命令中取得命令ID、LBA、数据长度以及数据缓冲区信息(步骤S603)。CPU12确定包括所取得的LBA的分区(步骤S604)。也就是说,CPU12确定被分配了包括所取得的LBA的LBA范围的分区。
然后,CPU12更新写管理表26(步骤S605),并结束命令受理处理。具体而言,CPU12将表示所取得的命令ID、LBA、数据长度以及数据缓冲区信息和所确定的分区的条目追加到写管理表26中。
通过以上的命令受理处理,CPU12能够从主机2受理写命令并取得用于管理所受理的写命令的信息。CPU12使用用于管理所取得的写命令的信息来更新写管理表26。CPU12能够使用写管理表26来管理根据各写命令而应该写入NAND型闪速存储器5的用户数据。
图20是表示由CPU12执行的响应处理的步骤的例子的流程图。响应处理是用于向主机2通知与写命令相应的用户数据的写入已完成并更新管理该写命令的信息的处理。响应处理相当于在前面参照图18所述的写控制处理的步骤S507以及步骤S515的各处理。
首先,CPU12向CQ尾指针所示的完成队列402中的位置写入对象写命令的完成通知(步骤S701)。对象写命令是对应的用户数据向NAND型闪速存储器5的写入已完成的写命令。
接着,CPU12对CQ尾指针加1(步骤S702)。此外,在对CQ尾指针加1的次数达到完成队列402的槽数量的情况下,CPU12将CQ尾指针设定为0。然后,CPU12向主机2发布中断(步骤S703)。CPU12通过发布中断来向主机2通知在完成队列402中存在应该被处理的新的完成通知。
CPU12更新写管理表26(步骤S704)。具体而言,CPU12将与对象写命令对应的条目从写管理表26中删除。然后,CPU12更新命令响应管理表24(步骤S705),并结束响应处理。具体而言,CPU12将与对象写命令对应的条目从命令响应管理表24中删除。此外,在命令响应管理表24中不存在与对象写命令对应的条目的情况下,CPU12跳过步骤S705的步骤并结束响应处理。例如,在根据CPU12受理了对象写命令而判断为针对一个区的写入用户数据存储于数据缓冲器403的情况下,与对象写命令对应的条目不被追加到命令响应管理表24中。在该情况下,CPU12跳过步骤S705的步骤。
通过以上的响应处理,CPU12能够向主机2通知与写命令相应的用户数据的写入已完成,并更新管理该写命令的信息。
如上所述,根据本实施方式,存储系统3能够在主机2所期望的时间内对写入请求进行响应。控制器4从主机2受理与具有小于作为向NAND型闪速存储器5的写入单位的第1数据单位的大小的第1数据相关联的第1写入请求。控制器4根据从受理到第1写入请求起经过了第1时间,开始进行至少包含第1数据的第2数据向NAND型闪速存储器5的写入处理。控制器4根据写入处理完成这一情况,向主机2发送对于第1写入请求的第1响应。第1时间是从第2时间减去第3时间得到的时间,第2时间作为从受理到第1写入请求到发送第1响应为止的限制时间,由主机2指定。
如此,控制器4根据从受理到第1写入请求起经过了第1时间,强制地开始进行至少包含与第1写入请求相关联的第1数据的第2数据向NAND型闪速存储器5的写入处理,所以能够在主机2所期望的时间内对第1写入请求进行响应。
本实施方式的说明中所记载的各种功能中的每一个功能也可以通过电路(处理电路)来实现。在处理电路的例子中包括中央处理装置(CPU)之类的被编程的处理器。该处理器通过执行存储于存储器的计算机程序(指令集)来执行本实施方式的说明中所记载的各个功能。该处理器也可以是包括电路的微型处理器。在处理电路的例子中,还包括数字信号处理器(DSP)、专用集成电路(ASIC)、微型控制器、控制器、其他电路部件。本实施方式的说明中所记载的CPU以外的其他各个组件(component)也可以也通过处理电路来实现。
说明了本发明的几个实施方式,但是这些实施方式是作为例子而提示的,并非意图限定发明的范围。这些新的实施方式能够以其他各种各样的方式来实施,在不脱离发明要旨的范围内能够进行各种省略、替换、变更。这些实施方式和/或其变形包含于发明的范围和/或要旨内,并且包含于技术方案中记载的发明及与其等同的范围内。

Claims (10)

1.一种存储系统,具备:
非易失性存储器;以及
控制器,其构成为,
从主机受理与具有小于第1数据单位的大小的第1数据相关联的第1写入请求,所述第1数据单位是向所述非易失性存储器的写入单位;
根据从受理到所述第1写入请求起经过了第1时间,开始进行至少包含所述第1数据的第2数据向所述非易失性存储器的写入处理;
根据所述写入处理完成这一情况,向所述主机发送对于所述第1写入请求的第1响应,
所述第1时间是从第2时间减去第3时间得到的时间,所述第2时间作为从受理到所述第1写入请求到发送所述第1响应为止的限制时间,由所述主机指定。
2.根据权利要求1所述的存储系统,
所述第3时间对应于从开始进行所述第2数据向所述非易失性存储器的写入处理到成为能够从所述非易失性存储器读取所述第2数据为止的时间。
3.根据权利要求1所述的存储系统,
所述控制器进一步地,管理将所述存储系统向所述主机提供的逻辑地址空间进行逻辑划分而得到的多个分区、和与所述多个分区对应的至少一个第1存储区域,所述至少一个第1存储区域是将所述非易失性存储器的存储区域进行逻辑划分而得到的局部存储区域,
所述第1写入请求是以所述多个分区中的第1分区为对象的写入请求,
所述控制器将所述第2数据写入与所述第1分区对应的所述第1存储区域。
4.根据权利要求3所述的存储系统,
所述控制器进一步地,
管理与所述多个分区中的每个分区一一对应的多个第2存储区域,所述多个第2存储区域是将所述非易失性存储器的存储区域进行逻辑划分而得到的局部存储区域;
根据从所述主机受理到与具有所述第1数据单位的大小的第3数据相关联并且以所述多个分区中的与所述第1分区不同的第2分区为对象的第2写入请求,将所述第3数据写入与所述第2分区对应的所述多个第2存储区域中的第3存储区域。
5.根据权利要求4所述的存储系统,
所述控制器进一步地,根据在从受理到所述第1写入请求起经过所述第1时间之前从所述主机受理到与具有小于所述第1数据单位的大小的第4数据相关联并且以所述第2分区为对象的第3写入请求,将包含所述第4数据的所述第2数据写入所述第1存储区域。
6.根据权利要求5所述的存储系统,
所述控制器进一步地,使所述第1分区和所述第2分区各自的状态从能够进行数据写入的第1状态转变为中断了数据写入的第2状态。
7.根据权利要求5所述的存储系统,
所述控制器,在所述第1数据的大小与所述第4数据的大小合起来的大小相当于所述第1数据单位的情况下,将包含所述第4数据的所述第2数据写入所述第1存储区域。
8.根据权利要求1所述的存储系统,
所述控制器进一步构成为,
从所述主机接收确认请求;
根据所述确认请求,将与所述第1时间和所述第2时间中的至少一方相关的信息向所述主机发送。
9.根据权利要求3所述的存储系统,
向所述多个分区中的每个分区的数据写入以使与所述数据相关联的逻辑地址连续的方式执行。
10.根据权利要求3所述的存储系统,
所述控制器进一步地,
管理将所述存储系统向所述主机提供的逻辑地址空间进行逻辑划分而得到的至少一个命名空间,所述至少一个命名空间包括所述多个分区;
针对所述至少一个命名空间所包含的所述多个分区中的每个分区,共同管理由所述主机对所述至少一个命名空间所指定的所述第2时间。
CN202110955721.8A 2021-03-17 2021-08-19 存储系统 Active CN115114195B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311456024.3A CN117271400A (zh) 2021-03-17 2021-08-19 存储系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2021-043709 2021-03-17
JP2021043709A JP2022143278A (ja) 2021-03-17 2021-03-17 メモリシステム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311456024.3A Division CN117271400A (zh) 2021-03-17 2021-08-19 存储系统

Publications (2)

Publication Number Publication Date
CN115114195A true CN115114195A (zh) 2022-09-27
CN115114195B CN115114195B (zh) 2023-11-10

Family

ID=83284805

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202311456024.3A Pending CN117271400A (zh) 2021-03-17 2021-08-19 存储系统
CN202110955721.8A Active CN115114195B (zh) 2021-03-17 2021-08-19 存储系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202311456024.3A Pending CN117271400A (zh) 2021-03-17 2021-08-19 存储系统

Country Status (4)

Country Link
US (2) US11861202B2 (zh)
JP (1) JP2022143278A (zh)
CN (2) CN117271400A (zh)
TW (2) TWI824837B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116382576A (zh) * 2023-03-17 2023-07-04 平头哥(上海)半导体技术有限公司 存储控制芯片、固态硬盘和相关方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023063083A1 (ja) 2021-10-11 2023-04-20 日置電機株式会社 測定装置、測定システム及び測定方法
JP2023136083A (ja) * 2022-03-16 2023-09-29 キオクシア株式会社 メモリシステムおよび制御方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4954944A (en) * 1987-04-23 1990-09-04 Nec Corporation Cache control circuit in cache memory unit with unit for enabling to reduce a read access time for cache memory
US8516172B1 (en) * 2007-08-30 2013-08-20 Virident Systems, Inc. Methods for early write termination and power failure with non-volatile memory
CN109240938A (zh) * 2017-07-11 2019-01-18 东芝存储器株式会社 存储系统以及控制非易失性存储器的控制方法
CN110389718A (zh) * 2018-04-16 2019-10-29 东芝存储器株式会社 存储系统及非易失性存储器的控制方法
CN110554972A (zh) * 2018-05-31 2019-12-10 东芝存储器株式会社 存储系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI386795B (zh) * 2004-03-12 2013-02-21 Nvidia Corp 具有改進之拆解及冗餘操作及介面之磁碟控制器方法及裝置
CN100524266C (zh) * 2005-07-11 2009-08-05 辉达公司 在总线上以包的形式传输数据传输请求的方法及设备
US8942248B1 (en) * 2010-04-19 2015-01-27 Altera Corporation Shared control logic for multiple queues
US8782370B2 (en) * 2011-05-15 2014-07-15 Apple Inc. Selective data storage in LSB and MSB pages
US9417754B2 (en) * 2011-08-05 2016-08-16 P4tents1, LLC User interface system, method, and computer program product
TWI479313B (zh) * 2012-07-11 2015-04-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
KR102210961B1 (ko) * 2013-06-12 2021-02-03 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 동적 접근 방법
US9418731B1 (en) * 2015-11-06 2016-08-16 Phison Electronics Corp. Memory management method, memory storage device and memory control circuit unit
JP6414853B2 (ja) 2015-12-14 2018-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
US10991421B2 (en) * 2016-09-19 2021-04-27 Bar-Ilan University Complementary dual-modular redundancy memory cell
KR102398186B1 (ko) 2017-07-03 2022-05-17 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법
US20190074051A1 (en) * 2017-09-07 2019-03-07 Mediatek Inc. Memory system and refresh control method thereof
JP6967959B2 (ja) 2017-12-08 2021-11-17 キオクシア株式会社 メモリシステムおよび制御方法
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
CN110989918B (zh) * 2018-10-03 2023-03-28 慧荣科技股份有限公司 写入控制方法以及数据存储装置及其控制器
US20200089407A1 (en) 2019-11-22 2020-03-19 Intel Corporation Inter zone write for zoned namespaces
JP7346311B2 (ja) 2020-01-16 2023-09-19 キオクシア株式会社 メモリシステム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4954944A (en) * 1987-04-23 1990-09-04 Nec Corporation Cache control circuit in cache memory unit with unit for enabling to reduce a read access time for cache memory
US8516172B1 (en) * 2007-08-30 2013-08-20 Virident Systems, Inc. Methods for early write termination and power failure with non-volatile memory
CN109240938A (zh) * 2017-07-11 2019-01-18 东芝存储器株式会社 存储系统以及控制非易失性存储器的控制方法
CN110389718A (zh) * 2018-04-16 2019-10-29 东芝存储器株式会社 存储系统及非易失性存储器的控制方法
CN110554972A (zh) * 2018-05-31 2019-12-10 东芝存储器株式会社 存储系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116382576A (zh) * 2023-03-17 2023-07-04 平头哥(上海)半导体技术有限公司 存储控制芯片、固态硬盘和相关方法
CN116382576B (zh) * 2023-03-17 2024-02-27 平头哥(上海)半导体技术有限公司 存储控制芯片、固态硬盘和相关方法

Also Published As

Publication number Publication date
JP2022143278A (ja) 2022-10-03
TWI787848B (zh) 2022-12-21
TW202312148A (zh) 2023-03-16
US20240086099A1 (en) 2024-03-14
CN117271400A (zh) 2023-12-22
TWI824837B (zh) 2023-12-01
CN115114195B (zh) 2023-11-10
TW202238571A (zh) 2022-10-01
US11861202B2 (en) 2024-01-02
US20220300182A1 (en) 2022-09-22

Similar Documents

Publication Publication Date Title
CN109144888B (zh) 存储器系统
CN109240938B (zh) 存储系统以及控制非易失性存储器的控制方法
CN109725847B (zh) 存储器系统及控制方法
US20230305754A1 (en) Memory system and method of controlling nonvolatile memory
CN110297600B (zh) 存储设备和操作存储设备的方法
US11030094B2 (en) Apparatus and method for performing garbage collection by predicting required time
CN106874217B (zh) 存储器系统及控制方法
CN115114195B (zh) 存储系统
US11747989B2 (en) Memory system and method for controlling nonvolatile memory
KR102565895B1 (ko) 메모리 시스템 및 그것의 동작 방법
JP7155028B2 (ja) メモリシステムおよび制御方法
US20230325112A1 (en) System and method of writing to nonvolatile memory using write buffers
US11494082B2 (en) Memory system
JP7375215B2 (ja) 順次的にプログラムするメモリサブシステムにおける順次読み出し最適化
JP7353934B2 (ja) メモリシステムおよび制御方法
CN112148632A (zh) 用于改善存储器系统的输入/输出吞吐量的设备和方法
CN113138939A (zh) 用于垃圾收集的存储器系统及其操作方法
TWI709074B (zh) 用於計數器更新操作之設備及方法
JP7381678B2 (ja) メモリシステム
KR20180126656A (ko) 데이터 저장 장치 및 그것의 동작 방법
JP2021033845A (ja) メモリシステムおよび制御方法
KR20200014175A (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
CN113050881A (zh) 提高存储器系统输入/输出吞吐量的设备和方法
EP4287028A1 (en) Storage device providing high purge performance and memory block management method thereof
KR20230040057A (ko) 시스템의 읽기 성능을 개선하기 위한 장치 및 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant