CN113138713A - 存储器*** - Google Patents

存储器*** Download PDF

Info

Publication number
CN113138713A
CN113138713A CN202010765428.0A CN202010765428A CN113138713A CN 113138713 A CN113138713 A CN 113138713A CN 202010765428 A CN202010765428 A CN 202010765428A CN 113138713 A CN113138713 A CN 113138713A
Authority
CN
China
Prior art keywords
write
data
block
buffer
writing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010765428.0A
Other languages
English (en)
Other versions
CN113138713B (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 CN202311229162.8A priority Critical patent/CN117193653A/zh
Publication of CN113138713A publication Critical patent/CN113138713A/zh
Application granted granted Critical
Publication of CN113138713B publication Critical patent/CN113138713B/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/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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0608Saving storage space on storage systems
    • 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
    • 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/064Management of blocks
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0656Data buffering arrangements
    • 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/0658Controller construction arrangements
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

实施方式实现能够有效地利用非易失性存储器的存储区域的存储器***。实施方式的存储器***的控制器针对多个第1块,分别执行多次第1动作,该第1动作包括以用于向每一存储单元写入m比特的数据的第1写入模式写入数据的写入动作、以及擦除动作。控制器在第2块不是不良块的期间,针对第2块,执行多次第2动作,该第2动作包括以用于向每一存储单元写入n比特的数据的第2写入模式写入数据的写入动作、以及擦除动作。在第2块为不良块的情况下,控制器从多个第1块中选择一个第1块,以第2写入模式向所选择的一个第1块写入数据。

Description

存储器***
关联申请
本申请享受以日本专利申请2020-5292号(申请日:2020年1月16日)为基础申请的优先权。本申请通过参照该基础申请而包括基础申请的全部内容。
技术领域
本发明的实施方式涉及对非易失性存储器进行控制的技术。
背景技术
近年来,具备非易失性存储器的存储器***广泛得到普及。作为这样的存储器***之一,已知具备NAND型闪存的固态硬盘(SSD)。
SSD被用作数据中心的服务器那样的各种主计算机***的储存设备。
SSD中,需要实现用于使非易失性存储器的存储区域能够有效利用的新的技术。
发明内容
本发明的实施方式提供能够有效利用非易失性存储器的存储区域的存储器***。
根据实施方式,能够连接于主机的存储器***具备:非易失性存储器,包含分别为数据擦除动作的单位的多个块;缓冲器;以及控制器,与所述非易失性存储器及所述缓冲器电连接。所述控制器针对所述多个块之中的多个第1块,分别执行多次第1动作,该第1动作包括以用于向每一存储单元写入m比特的数据的第1写入模式写入数据的写入动作、以及擦除动作。所述控制器在所述多个块之中的第2块不是不良块的期间,针对所述第2块,执行多次第2动作,该第2动作包括以用于向每一存储单元写入n比特的数据的第2写入模式写入数据的写入动作、以及擦除动作。所述m为2以上的整数,所述n为1以上且小于所述m的整数。所述第2动作的所述写入动作包括以下动作:对应于从所述主机接收到用于使所述多个第1块中的某一个第1块的状态从被分配为能够进行数据的写入的写入目的地块的第1状态转移到写入被中断的第2状态的第1请求的情况,将与针对所述第1请求所指定的第1块的已接收的一个以上的写入请求建立了关联的写入数据之中的、未传送给所述缓冲器的第1写入数据写入到所述第2块。所述控制器在所述第2块为不良块的情况下,对应于从所述主机接收到用于使所述多个第1块中的某一个第1块的状态从所述第1状态转移到所述第2状态的第2请求的情况,从所述多个第1块中选择一个第1块,将与针对所述第2请求所指定的第1块的已接收的一个以上的写入请求建立了关联的写入数据之中的、未传送给所述缓冲器的第2写入数据,以所述第2写入模式写入到所选择的所述一个第1块。
附图说明
图1是表示实施方式的存储器***与主机的关系的框图。
图2是表示实施方式的存储器***的构成例的框图。
图3是表示作为用户数据存储区域使用的多个四层单元块(QLC块)与由多个QLC块共享的共享闪存缓冲器的关系的框图。
图4是表示作为共享闪存缓冲器使用的QLC缓冲器的框图。
图5是表示作为共享闪存缓冲器使用的单层单元缓冲器(SLC缓冲器)的框图。
图6是表示实施方式的存储器***中使用的多个通道与多个NAND型闪存裸片(die)的关系的框图。
图7是表示实施方式的存储器***中使用的某个块组(超级块)的构成例的图。
图8是用于说明以向每一个存储单元写入4比特的模式向QLC块写入数据的动作的图。
图9是用于说明实施方式的存储器***中执行的对QLC块和共享闪存缓冲器进行控制的动作的图。
图10是用于说明对作为共享闪存缓冲器使用的QLC缓冲器进行控制的动作的图。
图11是用于说明对作为共享闪存缓冲器使用的SLC缓冲器进行控制的动作的图。
图12是用于说明使用静态SLC缓冲器和动态SLC缓冲器的混合SLC缓冲器的图。
图13是用于说明对混合SLC缓冲器进行控制的动作的图。
图14是表示实施方式的存储器***中执行的写入动作的框图。
图15是表示实施方式的存储器***中执行的写入动作的次序和读出动作的次序的例子的框图。
图16是表示实施方式的存储器***中执行的写入动作的次序和读出动作的次序的其他例子的框图。
图17是表示实施方式的存储器***中执行的写入动作的步骤、和使开放的QLC块转移到关闭状态的动作的步骤的流程图。
图18是表示对混合SLC缓冲器进行控制的动作的步骤的流程图。
图19是表示将关闭状态的QLC块再开放的动作的步骤的流程图。
图20的(A)、(B)是用于说明比较例的SSD中所需要的SLC缓冲器的容量、和实施方式的存储器***中所需要的SLC缓冲器的容量的图。
具体实施方式
以下,参照附图对实施方式进行说明。
图1是表示实施方式的存储器***与主机的关系的框图。
该存储器***是构成为向非易失性存储器写入数据、并从非易失性存储器读出数据的半导体储存设备。该存储器***作为包括NAND型闪存的固态硬盘(SSD)3实现。
主机(主机设备)2构成为对多个SSD3进行控制。主机2可以通过构成为将包括多个SSD3的储存阵列作为储存器来使用的信息处理装置实现。该信息处理装置既可以是个人计算机,也可以是服务器计算机。
另外,SSD3也可以作为设置于储存阵列内的多个储存设备之一来利用。储存阵列也可以经由线缆或网络而连接于如服务器计算机那样的信息处理装置。储存阵列也可以包括对该储存阵列内的多个储存器(例如多个SSD3)进行控制的控制器。在SSD3应用到储存阵列的情况下,该储存阵列的控制器作为SSD3的主机发挥功能。
以下,例示出服务器计算机那样的信息处理装置作为主机2发挥功能的情况而进行说明。
主机(服务器)2经由接口50而与多个SSD3相互连接(内部相互连接)。作为用于该相互连接的接口50,并不限定于此,可以使用PCIExpress(PCIe)(注册商标)、NVM Express(NVMe)(注册商标)、Ethernet(注册商标)、NVMe over Fabrics(NVMeOF)等。
作为主机2发挥功能的服务器计算机作为一例可列举数据中心内的服务器计算机(以下,称为服务器)。
在主机2由数据中心内的服务器实现的情形中,该主机(服务器)2也可以经由网络60连接于多个最终用户终端(客户端)61。主机2能够对这些最终用户终端61提供多种服务。
能够由主机(服务器)2提供的服务的例子中,有(1)将***运转平台提供给各客户端(各最终用户终端61)的平台即服务(PaaS,Platform-as-a-Service)、(2)将虚拟服务器那样的基础设施提供给各客户端(各最终用户终端61)的基础设施即服务(IaaS,Infrastructure as a Service)等。
多个虚拟机也可以在作为该主机2发挥功能的物理服务器上执行。在主机2上运行的这些虚拟机分别可以作为构成为向与该虚拟机对应的客户端(最终用户终端61)提供各种服务的虚拟服务器而发挥功能。各虚拟机中,执行由对应的最终用户终端61使用的、操作***以及用户应用。与各虚拟机对应的操作***包括I/O服务。该I/O服务既可以是基于逻辑块地址(LBA)的块I/O服务,或也可以是键值存储服务。
与各虚拟机对应的操作***中,I/O服务响应于来自用户应用的与写入/读出相关的请求,发行I/O指令(写入指令、读取指令)。这些I/O指令经由主机2内的一个以上的提交队列被送出至SSD3。
SSD3的控制器构成为,有选择地使用用于向每一存储单元写入m比特的数据的第1写入模式、和用于向每一存储单元写入n比特的数据的第2写入模式,将来自主机2的写入数据写入到非易失性存储器。在此,m为2以上的整数,n为1以上且m以下的整数。
更详细地讲,SSD3的控制器向非易失性存储器中包含的多个第1存储区域的每一个以向每一存储单元写入m比特的数据的第1写入模式写入数据,向非易失性存储器中包含的第2存储区域以向每一存储单元写入n比特的数据的第2写入模式写入数据。
多个第1存储区域被用作用于保存用户数据的用户数据存储区域。第2存储区域被用于根据需要将应写入到多个第1存储区域的数据非易失地存储。第2存储区域被多个第1存储区域共享,不管是应写入到哪个第1存储区域的数据,都使用第2存储区域来非易失地存储。
图2表示SSD3的构成例。
SSD3具备控制器4和非易失性存储器(例如,NAND型闪存5)。SSD3也可以还具备随机访问存储器,例如DRAM6。
NAND型闪存5包括存储单元阵列,该存储单元阵列包括以矩阵状配置的多个存储单元。NAND型闪存5既可以是二维构造的NAND型闪存,也可以是三维构造的NAND型闪存。
NAND型闪存5的存储单元阵列包含多个块BLK0~BLKx-1。块BLK0~BLKx-1分别包含多个页(在此为页P0~Py-1)。块BLK0~BLKx-1是数据擦除动作的单位。块也有被称为“擦除块”、“物理块”、或“物理擦除块”的情况。页P0~Py-1是数据写入动作以及数据读出动作的单位。
控制器4经由Toggle NAND闪存接口、open NAND闪存接口(ONFI)那样的NAND接口13,与作为非易失性存储器的NAND型闪存5电连接。控制器4作为构成为对NAND型闪存5进行控制的存储器控制器动作。该控制器4也可以由System-on-a-chip(SoC,片上***)那样的电路实现。
NAND型闪存5的存储区域如图3所示,大体分为共享闪存缓冲器201和四层单元区域(QLC区域)202。
QLC区域202包含多个QLC块。多个QLC块的每一个是通过向每一个存储单元存储4比特的写入模式(也称为编程模式)而被写入数据的块。QLC区域202中包含的这些多个QLC块是上述多个第1存储区域的一例。
在向各QLC块写入数据的动作中,通过向每一存储单元写入4比特的数据,4页量的数据被写入到连接于同一字线的多个存储单元。
共享闪存缓冲器201是上述第2存储区域的一例,被用作由QLC区域202中包含的多个QLC块共享的非易失性缓冲器。
如图4所示,共享闪存缓冲器201也可以由QLC缓冲器301实现。图4的QLC缓冲器301包含多个块(多个QLC块)。在向共享闪存缓冲器201中包含的各QLC块写入数据的动作中,通过向每一存储单元写入4比特的数据,4页量的数据被写入到连接于同一字线的多个存储单元。
或者,如图5所示,共享闪存缓冲器201也可以由单层单元缓冲器(SLC缓冲器)401实现。图5的SLC缓冲器401包含多个块(多个SLC块)。在向各SLC块写入数据的动作中,通过向每一存储单元写入1比特的数据,仅1页量的数据被写入到连接于同一字线的多个存储单元(SLC模式)。
SLC块中的每一存储单元的存储密度是1比特(即,每字线1页),QLC块中的每一存储单元的存储密度是4比特(即,每字线4页)。
数据相对于NAND型闪存5的读出速度以及写入速度在存储密度越高时越慢,在存储密度越低时越快。因此,数据相对于QLC块的读出以及写入所需要的时间比数据相对于SLC块的读出以及写入所需要的时间长。
作为适用于QLC区域202的上述第1写入模式,也可以使用模糊(foggy)·精细(fine)写入动作。模糊·精细写入动作是写入模式的一例,在该写入模式中,写入到了块中包含的多个页中的一个页的数据的读出能够在数据向该一个页的后续的1个以上的页写入之后进行。
模糊·精细写入动作通过对连接于相同字线的存储单元群的多次写入动作(模糊写入动作、精细写入动作)而执行。第1次写入动作(模糊写入动作)是粗略地设定各存储单元的阈值电压的写入动作,第2次写入动作(精细写入动作)是对各存储单元的阈值电压进行调整的写入动作。模糊·精细写入动作是能够减少编程干扰的影响的写入模式。
在第1次写入动作(模糊写入动作)中,首先,4页量的数据通过第1次数据传送动作以页大小为单位被传送至NAND型闪存5。也就是说,如果每1页的数据大小(页大小)为16KB,则64KB的数据以页大小为单位被传送至NAND型闪存5。然后,进行用于将4页量的数据编程到NAND型闪存5内的存储单元阵列中的第1次写入动作(模糊写入动作)。
在第2次编程动作(精细写入动作)中,与模糊写入动作同样,4页量的数据通过第2次数据传送动作以页大小为单位再次被传送至NAND型闪存5。通过第2次数据传送动作传送至NAND型闪存5的数据与通过第1次数据传送动作传送的数据相同。然后,进行用于将所传送的4页量的数据编程到NAND型闪存5内的存储单元阵列中的第2次写入动作(精细写入动作)。
进而,即使对连接于某字线的多个存储单元的模糊写入动作结束,也不能立即执行对连接于该字线的多个存储单元的精细写入动作。对连接于该字线的多个存储单元的精细写入动作在对连接于后续的1个以上的字线的存储单元群的模糊写入动作结束之后才能够执行。因此,用于向QLC块写入数据所需要的时间变长。此外,通过模糊写入动作写入到QLC块的连接于某字线的多个存储单元中的数据在对连接于后续的1个以上的字线的存储单元群的模糊写入动作结束、并且对连接于该字线的多个存储单元的精细写入动作结束之前不能读出。
在如图4所示共享闪存缓冲器201由QLC缓冲器301实现的情形中,QLC缓冲器301内的各QLC块内的写入也可以通过模糊·精细写入动作执行。
在如图5所示共享闪存缓冲器201由SLC缓冲器401实现的情形中,作为适用于共享闪存缓冲器201的上述第2写入模式,使用上述SLC模式。SLC模式是如下写入模式,即:向块中包含的多个页内的一个页写入的数据的读出仅通过数据向该一个页的写入就能够立即执行。
向块中包含的多个页内的一个页写入的数据的读出仅通过数据向该一个页的写入就能够立即执行的写入模式的其他例中,还有向每一存储单元写入2比特数据的模式(MLC LM模式)。也可以将MLC LM模式也用作适用于共享闪存缓冲器201的上述第2写入模式。
如图6所示,NAND型闪存5也可以包含多个NAND型闪存裸片(NAND型闪存裸片)。各个NAND型闪存裸片能够独立地动作。因此,NAND型闪存裸片作为能够并行动作的单位发挥功能。图6中例示了在NAND接口13连接有16个通道Ch.1~Ch.16,在16个通道Ch.1~Ch.16的每个通道连接有两个NAND型闪存裸片的情况。在该情况下,既可以是连接于通道Ch.1~Ch.16的16个NAND型闪存裸片#1~#16构成为存储体(bank)#0,并且也可以是连接于通道Ch.1~Ch.16的其余的16个NAND型闪存裸片#17~#32构成为存储体#1。存储体作为用于使多个存储器模块通过存储体交错而并行动作的单位发挥功能。图6的构成例中,通过16个通道和使用了两个存储体的存储体交错,能够使最多32个NAND型闪存裸片并行动作。
擦除动作既可以以一个块(物理块)为单位执行,也可以以包含可并行动作的多个物理块的集合在内的块组为单位执行。关于块组,也可作为超级块来参照。
一个块组、即包含多个物理块的集合的一个超级块不限定于此,也可以包含从NAND型闪存裸片#1~#32中一个一个选择的总计32个物理块。另外,NAND型闪存裸片#1~#32各自也可以具有多平面结构。例如,在NAND型闪存裸片#1~#32各自具有包含两个平面在内的多平面结构的情况下,一个超级块也可以包含从与NAND型闪存裸片#1~#32对应的64个平面中一个一个选择的总计64个物理块。
图7中例示了包含32个物理块(在此为NAND型闪存裸片#1内的物理块BLK2、NAND型闪存裸片#2内的物理块BLK3、NAND型闪存裸片#3内的物理块BLK7、NAND型闪存裸片#4内的物理块BLK4、NAND型闪存裸片#5内的物理块BLK6、……、NAND型闪存裸片#32内的物理块BLK3)的一个超级块(SB)。
图3中说明过的QLC区域202内的各QLC块既可以由一个超级块(QLC超级块)实现,也可以由一个物理块(QLC物理块)实现。另外,也可以利用一个超级块仅包含一个物理块的结构,在该情况下,一个超级块与一个物理块等价。
共享闪存缓冲器201中包含的各块既可以由一个物理块构成,也可以由包含多个物理块的集合的超级块构成。
如上所述,多个第1存储区域(例如多个QLC块)被用作用于存储由主机2写入的数据(用户数据)的用户数据存储区域。多个第1存储区域并不限定于此,例如也可以被用作以NVMe规格规定的ZonedNamespaces(ZNS,分区命名空间)中使用的多个分区(zone)。在该情况下,为了访问SSD3而由主机2使用的逻辑地址空间被分割为多个逻辑地址范围,对多个第1存储区域分别分配多个逻辑地址范围。
接着,对图2的控制器4的结构进行说明。
控制器4可以作为以执行NAND型闪存5的数据管理以及块管理的方式构成的闪存变换层(FTL)发挥功能。由该FTL执行的数据管理中,包括(1)映射信息的管理,其表示逻辑地址各自与NAND型闪存5的物理地址各自之间的对应关系、(2)用于隐藏NAND型闪存5的制约(例如,页单位的读取/写入动作和块单位的擦除动作)的处理等。逻辑地址是为了对SSD3在逻辑地址空间内的逻辑地址进行地址指定而由主机2使用的地址。作为该逻辑地址,可以使用LBA(logical block address(addressing),逻辑块地址(寻址))。
关于为了访问SSD3而由主机2使用的逻辑地址各自与NAND型闪存5的物理地址各自之间的映射的管理,使用地址变换表(逻辑物理地址变换表:L2P表)31来执行。控制器4也可以使用L2P表31以规定的管理大小为单位来管理逻辑地址各自与物理地址各自之间的映射。与某逻辑地址对应的物理地址表示与该逻辑地址对应的被写入了数据的NAND型闪存5内的最新的物理存储位置。L2P表31也可以在SSD3的电源接通时从NAND型闪存5装载到DRAM6。
NAND型闪存5中,在每一擦除周期中仅能够进行一次向页的数据写入。也就是说,不能向已经被写入了数据的块内的区域直接改写新的数据。因此,在更新已经写入的数据的情况下,控制器4向该块(或其他块)内的未写入区域写入新的数据,并且将以前的数据作为无效数据处理。换言之,控制器4将与某逻辑地址对应的更新数据不是写入到与该逻辑地址对应的保存有以前的数据的物理存储位置,而是写入到其他的物理存储位置。并且,控制器4更新L2P表31,将该逻辑地址与该其他的物理存储位置建立关联,将以前的数据无效化。
块管理中包括坏块(不良块)的管理、磨损均衡、以及垃圾收集(GC)等。磨损均衡是用于使块各自的改写次数(编程/擦除周期数)均匀化的动作。
GC是用于增加自由块的个数的动作。自由块是指不包含有效数据的块。GC中,控制器4将有效数据和无效数据混合存在的几个块内的有效数据复制到其他块(例如自由块)。在此,有效数据是指与某逻辑地址建立了关联的数据。例如,从L2P表31参照的数据(即作为最新的数据而与逻辑地址建立了关联的数据)是有效数据,其后有可能由主机2读取。无效数据是指与哪个逻辑地址都没有建立关联的数据。与哪个逻辑地址都没有建立关联的数据是已经不可能由主机2读取的数据。并且,控制器4更新L2P表31,将所复制的有效数据的逻辑地址分别映射到复制目的地的物理地址。通过有效数据被复制到其他块,仅为无效数据的块作为自由块而被解放。由此,该块能够在执行了对该块的擦除动作之后再利用到数据的写入中。
控制器4包括主机接口11、CPU12、NAND接口13、DRAM接口14、直接存储器访问控制器(DMAC)15、静态RAM(SRAM)16、ECC编码/解码部17等。这些主机接口11、CPU12、NAND接口13、DRAM接口14、DMAC15、SRAM16、ECC编码/解码部17经由总线10相互连接。
主机接口11是构成为执行与主机2的通信的主机接口电路。该主机接口11例如也可以是PCIe控制器(NVMe控制器)。或者,在SSD3经由Ethernet(注册商标)而与主机2连接的构成中,主机接口11也可以是NVMe over Fabrics(NVMe-OF)控制器。
主机接口11从主机2接收各种指令。这些指令中包含写入指令、读取指令、停用指令(Inactivate command),分配指令(Allocate command),释放指令等。
写入指令是将应写入的用户数据(写入数据)写入到NAND型闪存5的指令(写入请求),例如包含写入数据的逻辑地址(开始LBA)、该写入数据的大小、表示保存有该写入数据的主机2的写入缓冲器内的位置的数据指针(缓冲器地址)等。
SSD3也可以作为支持分区命名空间的第1类型SSD而实现。第1类型SSD中,也可以将写入请求中包含的逻辑地址的上位比特部作为识别码来使用,该识别码指定与该写入指令建立了关联的应被写入写入数据的写入目的地存储区域(写入目的地QLC块)。
或者,SSD3也可以作为支持流写入的第2类型SSD而实现。第2类型SSD中,也可以将写入请求中包含的流ID作为识别码来使用,该流ID指定与该写入指令建立了关联的应被写入写入数据的写入目的地存储区域(写入目的地QLC块)。
或者,SSD3也可以作为由控制器4决定写入目的地存储区域(写入目的地QLC块)和写入目的地存储区域内的写入目的地位置(写入目的地页)、并将已决定的写入目的地存储区域和已决定的写入目的地位置通知给主机2的第3类型SSD来实现。
第3类型SSD中,控制器4从主机2接收对如quality-of-service域ID(QoS域ID)那样的ID进行指定的块分配请求。QoS域相当于用于NAND型闪存5的资源管理的单位。控制器4分配该块分配请求中包含的应使用于QoS域ID用的写入目的地存储区域。因此,主机2将指定不同的QoS域ID的多个块分配请求发送给第3类型SSD,从而向第3类型SSD请求与多个QoS域分别对应的多个写入目的地存储区域的分配。
从主机2接收的写入请求包含QoS域ID、逻辑地址、以及应写入的数据(写入数据)的大小等。写入请求中包含的QoS域ID被用作应写入数据的写入目的地存储区域的识别码。控制器4将写入数据连续写入至被分配给写入请求中包含的QoS域ID的写入目的地存储区域。并且,控制器4将表示被写入了写入数据的物理存储位置的物理地址(块地址、偏移)通知给主机2。第3类型SSD中,L2P表31不是由控制器4管理,而是由主机2管理。
读取指令是从NAND型闪存5读出数据的指令(读取请求)。
第1类型SSD以及第2类型SSD各自所发出的读取指令包含应读出的数据的逻辑地址(开始LBA)、该数据的大小、表示该数据应被传送的主机2的读取缓冲器内的位置的数据指针(缓冲器地址)等。
第3类型SSD所发行的读取指令包含:表示保存有应读出的数据的物理存储位置的物理地址、该数据的大小、表示该数据应被传送的主机2的读取缓冲器内的位置的数据指针(缓冲器地址)等。
分配指令是将多个第1存储区域(例如多个QLC块)中的一个作为写入目的地存储区域来分配的指令(请求)。写入目的地存储区域是指能够进行数据的写入的存储区域。分区命名空间中使用的开放分区指令(open zone command)为该分配指令的一例。
停用指令是用于使写入目的地存储区域的状态从被分配为能够进行数据的写入的写入目的地存储区域的第1状态(开放状态)转移到写入中断的第2状态(关闭状态)的指令(请求)。分区命名空间中使用的关闭分区指令为该停用指令的一例。
释放指令是用于将第1存储区域(例如QLC块)设为能够再写入的状态(例如自由QLC块)的指令(请求)。分区命名空间中使用的复位分区指令为释放指令的一例。
CPU12是构成为对主机接口11、NAND接口13、DRAM接口14、DMAC15、SRAM16、ECC编码/解码部17进行控制的处理器。CPU12响应于SSD3的电源接通,从NAND型闪存5或未图示的ROM将控制程序(固件)装载到DRAM6,然后通过执行该固件而进行各种处理。另外,固件也可以装载到SRAM16上。CPU12能够执行用于对来自主机2的各种指令进行处理的指令处理等。CPU12的动作由上述的固件控制。另外,指令处理的一部分或全部也可以由控制器4内的专用硬件执行。
CPU12能够作为闪存管理部21以及调度器22发挥功能。另外,这些闪存管理部21以及调度器22各自的一部分或全部也可以由控制器4内的专用硬件实现。
以下,设想将在图3中说明过的QLC区域202中包含的多个QLC块作为上述多个第1存储区域来使用的情形。闪存管理部21对多个第1存储区域与QLC区域202中包含的多个QLC块之间的映射进行管理,对各第1存储区域分配QLC区域202内的某一个QLC块。一个QLC块即可以是一个物理块,也可以是包含多个物理块的一个超级块。
闪存管理部21从主机2接收分别指定数据应被写入的第1存储区域(例如,第1写入目的地存储区域、第2写入目的地存储区域)的一个以上的写入请求的每一个。
响应于从主机2接收到用于向第1写入目的地存储区域写入数据的一个以上的写入请求的每一个,闪存管理部21将与接收到的写入请求的集合建立了关联的写入数据从主机2的写入缓冲器传送给控制器4的内部缓冲器161。SRAM16的存储区域的一部分可以被用作内部缓冲器161,DRAM6的存储区域的一部分也可以被用作内部缓冲器161。
然后,闪存管理部21将传送到内部缓冲器161的写入数据以向每一存储单元写入m比特的数据的第1写入模式写入到第1写入目的地存储区域。例如,闪存管理部21将传送到内部缓冲器161的写入数据以向每一存储单元写入4比特的数据的模糊·精细写入动作写入到被分配给第1写入目的地存储区域的QLC块。
此外,响应于从主机2接收到用于向第2写入目的地存储区域写入数据的一个以上的写入请求的每一个,闪存管理部21将与接收到的写入请求的集合建立了关联的写入数据从主机2的写入缓冲器传送给控制器4的内部缓冲器161。
然后,闪存管理部21将传送到内部缓冲器161的写入数据以向每一存储单元写入m比特的数据的第1写入模式写入到第2写入目的地存储区域。例如,闪存管理部21将传送到内部缓冲器161的写入数据以向每一存储单元写入4比特的数据的模糊·精细写入动作写入到被分配给第2写入目的地存储区域的QLC块。
进而,每当从主机2接收到停用指令(例如分区关闭指令)时,闪存管理部21执行以下的处理。
闪存管理部21从主机2的写入缓冲器取得与对由停用指令指定的第1存储区域的已接收的一个以上的写入请求建立了关联的写入数据之中的、未传送给内部缓冲器161的剩余的写入数据。闪存管理部21将所取得的剩余的写入数据(未传送写入数据)写入到由多个第1存储区域共享的共享闪存缓冲器201,而不是由停用指令指定的第1存储区域。并且,闪存管理部21将由停用指令指定的第1存储区域的状态从被分配为写入目的地存储区域的第1状态(开放状态)转移到写入中断的第2状态(关闭状态)。
如果每当接收到停用指令时执行将剩余的写入数据写入到由停用指令指定的第1存储区域的处理,则有主机2的写入缓冲器会被不能完成向应转移到关闭状态的各个写入目的地存储区域的写入的较多的写入数据独占的情况。
即,由于各写入目的地存储区域内的写入是使用向每一存储单元写入m比特的数据的第1写入模式来执行,所以如果执行了向应转移到关闭状态的写入目的地存储区域写入剩余的写入数据的处理,则最后被写入该写入目的地存储区域的多个页量的数据的写入无法完成。例如,如果以向每一存储单元写入4比特的数据的模糊·精细写入动作向写入目的地存储区域(在此为QLC块)写入了剩余的写入数据,则最后被写入QLC块的4页量的数据的写入无法完成。这是因为,停用指令是使某第1存储区域(在此为QLC块)转移到关闭状态的请求,所以在发送停用指令后的一段时间,主机2不向SSD3发出对该QLC块的写入请求。结果,对最后被写入该QLC块的4页量的数据的精细写入动作无法开始,所以该4页量的数据长时间不能从该QLC块读出。结果,长时间不能释放保存有该4页量的数据的主机2的写入缓冲器内的区域。
在页大小为16KB的情况下,64KB(=4×16KB)大小的数据的写入无法完成。如果各NAND型闪存裸片具有2平面结构,则128KB(=2×4×16KB)大小的数据的写入无法完成。
因此,如果每当接收到停用指令时执行将剩余的数据写入到由停用指令指定的第1存储区域(QLC块)的处理,则需要将无法完成写入的大量的数据维持在主机2的写入缓冲器中。例如,在合计1024个第1存储区域(QLC块)转移到关闭状态的情形中,主机2的写入缓冲器会被具有128MB(=1024×128KB)大小的数据独占。
本实施方式中,闪存管理部21将剩余的写入数据写入到由多个第1存储区域共享的共享闪存缓冲器201,而不是应被关闭的各个第1存储区域(QLC块)。因此,不管是开放状态的第1存储区域之中的哪个第1存储区域被关闭的情况,与应被关闭的各个第1存储区域对应的剩余的写入数据都被写入到共享闪存缓冲器201。因此,与每当接收到停用指令时就将剩余的写入数据写入到由停用指令指定的第1存储区域的构成相比,能够减少无法完成写入的写入数据的量,能够增加主机2的写入缓冲器内的可释放的区域。
例如,设想以下情形:n=m,且第1写入模式及第2写入模式为向块的多个页内的一个页写入的数据的读出在向后续于该一个页的1以上的页的数据的写入后才能够进行的写入模式。该情形相当于,共享闪存缓冲器201由QLC缓冲器301实现(n=m),且向QLC缓冲器301内的各块(QLC块)的写入与向各第1存储区域(QLC块)的写入同样例如使用模糊·精细写入动作来执行的情形。
在该情况下,最后写入到QLC缓冲器301的128KB大小的数据能够在后续的128KB大小的数据的写入后读出。
但是,与关闭对象的QLC块不同,QLC缓冲器301内的写入不会被中断。也就是说,每当接收到停用指令就执行QLC缓冲器301内的写入。因此,即使在例如合计1024个QLC块转移到关闭状态的情况下,应向这些1024个QLC块写入的写入数据之中的、不能从QLC缓冲器301读出的数据的大小能够维持在128KB。因此,与将剩余的写入数据写入到应被关闭的各个第1存储区域(QLC块)的情形相比,能够大幅减少需要在主机2的写入缓冲器中维持的写入数据的量。
进而,在共享闪存缓冲器201由QLC缓冲器301实现的情形中,共享闪存缓冲器201中包含的各个块被用作存储密度高的QLC块,所以能够减少需要分配给共享闪存缓冲器201的块的总数,由此能够增加能够作为用户数据存储区域来使用的块的总数。
接着,设想以下情形:n<m,第1写入模式为向分配给第1存储区域的块的多个页内的一个页写入的数据的读出在向后续于该一个页的1个以上的页写入数据后才能够进行的写入模式,并且第2写入模式为向分配给第2存储区域的块的多个页内的一个页写入的数据的读出仅通过向该一个页的该数据的写入就能够进行的写入模式。
该情形例如相当于,共享闪存缓冲器201由SLC缓冲器401实现(n<m),向各第1存储区域(QLC块)的写入例如使用模糊·精细写入动作来执行,并且向SLC缓冲器401内的各块(SLC块)的写入使用SLC模式来执行的情况。或者,该情形相当于,向各第1存储区域(QLC块)的写入例如使用模糊·精细写入动作来执行,并且向共享闪存缓冲器201内的各块(MLC块)的写入使用MLC LM模式来执行的情况。
在共享闪存缓冲器201由SLC缓冲器401实现的情形中,向SLC缓冲器401内的各块(SLC块)的写入使用SLC模式来执行。因此,写入到SLC缓冲器401的全部的数据在刚写入该数据之后就能够读出。因此,能够将应写入到应被关闭的各个第1存储区域(QLC块)的全部的数据通过SLC缓冲器401非易失地存储,因此每当某QLC块被关闭,就能够将在主机2的写入缓冲器中针对该QLC块确保的区域整体释放。
此外,在本实施方式中,在接收到停用指令之前的期间,写入数据不被写入到SLC缓冲器401(或者QLC缓冲器301),而仅写入到写入目的地QLC块。
因此,与执行将全部的写入数据写入到SLC缓冲器401和写入目的地QLC块双方的处理的情形、或执行将全部的写入数据先仅写入到SLC缓冲器401、并在SSD3空闲(idle)时等从SLC缓冲器401将写入数据写回到写入目的地QLC块的处理的情形相比,能够减少向SLC缓冲器401写入的数据的总量。
结果,能够减少需要分配为SLC缓冲器401的块(SLC块)的数量,所以由此能够增加能够分配为QLC区域202的块(QLC块)的数量。
调度器22从主机2的提交队列取得各个指令。控制器4中管理着与开放的多个QLC块(多个写入目的地QLC块)分别对应的多个指令队列。调度器22将这些取得的指令分类为写入指令(写入请求)群和写入指令以外的其他指令群。
进而,调度器22将写入请求分类为与多个写入目的地QLC块分别对应的多个组。并且,调度器22将属于各组的写入请求群保存在与该组对应的指令队列中。
例如,调度器22将用于向写入目的地QLC块#1写入数据的各写入请求保存在与写入目的地QLC块#1对应的指令队列中,将用于向写入目的地QLC块#2写入数据的各写入请求保存在与写入目的地QLC块#2对应的指令队列中。
闪存管理部21,在与用于向写入目的地QLC块#1写入数据的写入请求的集合建立了关联的写入数据的总大小达到各第1存储区域(QLC块)的最小写入大小(例如64KB)的情况下,将具有最小写入大小的与这些写入请求的集合建立了关联的写入数据从主机2的写入缓冲器传送给内部缓冲器161。另外,在各NAND型闪存裸片包含2平面的情况下,最小写入大小也可以设定为128KB。
此外,闪存管理部21在与用于向写入目的地QLC块#2写入数据的写入请求的集合建立了关联的写入数据的总大小达到各第1存储区域(QLC块)的最小写入大小的情况下,将具有最小写入大小的与这些写入请求的集合建立了关联的写入数据从主机2的写入缓冲器传送给内部缓冲器161。
像这样,通过将写入数据以最小写入大小的单位从主机2的写入缓冲器传送给内部缓冲器161,能够抑制内部缓冲器161被不能写入到NAND型闪存5的小于最小写入大小的多个写入数据独占,由此能够削减需要确保的内部缓冲器161的容量。
NAND接口13是构成为在CPU12的控制下对NAND型闪存5进行控制的存储器控制电路。
DRAM接口14是构成为在CPU12的控制下对DRAM6进行控制的DRAM控制电路。DRAM6的存储区域的一部分也可以作为L2P表31以及块管理表32用的存储区域来利用。块管理表32用于与多个QLC块分别对应的管理信息的保存。
DMAC15在CPU12的控制下,执行主机2的写入缓冲器与内部缓冲器161之间的数据传送。在从主机2的写入缓冲器应向内部缓冲器161传送写入数据的情况下,CPU12对DMAC15指定表示主机2的写入缓冲器内的位置的传送源地址、应传送的写入数据的大小、表示内部缓冲器161内的位置的传送目的地地址。
ECC编码/解码部17在应向NAND型闪存5写入数据时,通过对数据(应写入的数据)进行编码(ECC编码),将纠错码(ECC)作为冗余码附加到该数据。在从NAND型闪存5读取了数据时,ECC编码/解码部17使用附加在所读取的数据中的ECC,进行该数据的纠错(ECC解码)。
图8是用于说明向QLC块以向每一个存储单元写入4比特的模式写入数据的动作的图。
在此,例示在四个字线上往复的情况的模糊·精细写入动作。对QLC块#1的模糊·精细写入动作如以下这样执行。
(1)首先,4页(P0~P3)量的写入数据以页为单位传送至NAND型闪存5,执行用于向连接于QLC块#1内的字线WL0的多个存储单元写入这些4页(P0~P3)量的写入数据的模糊写入动作。
(2)接下来,下一个4页(P4~P7)量的写入数据以页为单位传送至该NAND型闪存5,执行用于向连接于QLC块#1内的字线WL1的多个存储单元写入这些4页(P4~P7)量的写入数据的模糊写入动作。
(3)接下来,下一个4页(P8~P11)量的写入数据以页为单位传送至该NAND型闪存5,执行用于向连接于QLC块#1内的字线WL2的多个存储单元写入这些4页(P8~P11)量的写入数据的模糊写入动作。
(4)接下来,下一个4页(P12~P15)量的写入数据以页为单位传送至该NAND型闪存5,执行用于向连接于QLC块#1内的字线WL3的多个存储单元写入这些4页(P12~P15)量的写入数据的模糊写入动作。
(5)如果对连接于字线WL3的多个存储单元的模糊写入动作结束,则写入对象的字线回到字线WL0,能够执行对连接于字线WL0的多个存储单元的精细写入动作。并且,与对字线WL0的模糊写入动作中使用的4页(P0~P3)量的写入数据相同的4页(P0~P3)量的写入数据,以页为单位再次传送至NAND型闪存5,执行用于向连接于QLC块#1内的字线WL0的多个存储单元写入这些4页(P0~P3)量的写入数据的精细写入动作。由此,对页P0~P3的模糊·精细写入动作结束。结果,能够准确地从QLC块#1读出与页P0~P3对应的数据。
(6)接下来,下一个4页(P16~P19)量的写入数据以页为单位传送至该NAND型闪存5,执行用于向连接于QLC块#1内的字线WL4的多个存储单元写入这些4页(P16~P19)量的写入数据的模糊写入动作。
(7)如果对连接于字线WL4的多个存储单元的模糊写入动作结束,则写入对象的字线回到字线WL1,能够执行对连接于字线WL1的多个存储单元的精细写入动作。并且,与对字线WL1的模糊写入动作中使用的4页(P4~P7)量的写入数据相同的4页(P4~P7)量的写入数据以页为单位再次传送至NAND型闪存5,执行用于向连接于QLC块#1内的字线WL1的多个存储单元写入这些4页(P4~P7)量的写入数据的精细写入动作。由此,对页P4~P7的模糊·精细写入动作结束。结果,能够准确地从QLC块#1读出与页P4~P7对应的数据。
(8)接下来,下一个4页(P20~P23)量的写入数据以页为单位传送至该NAND型闪存5,执行用于向连接于QLC块#1内的字线WL5的多个存储单元写入这些4页(P20~P23)量的写入数据的模糊写入动作。
(9)如果对连接于字线WL5的多个存储单元的模糊写入动作结束,则写入对象的字线回到字线WL2,能够执行对连接于字线WL2的多个存储单元的精细写入动作。并且,与对字线WL2的模糊写入动作中使用的4页(P8~P11)量的写入数据相同的4页(P8~P11)量的写入数据以页为单位再次传送至NAND型闪存5,执行用于向连接于QLC块#1内的字线WL2的多个存储单元写入这些4页(P8~P11)量的写入数据的精细写入动作。由此,对页P8~P11的模糊·精细写入动作结束。结果,能够准确地从QLC块#1读出与页P8~P11对应的数据。
图9是用于说明在SSD3中执行的对QLC块和共享闪存缓冲器201进行控制的动作的图。
SSD3中,控制器4在从主机2接收到用于使写入目的地QLC块#1(或者写入目的地QLC块#2)转移到写入被中断的关闭状态的停用指令(停止请求)之前,将从主机2的写入缓冲器51接收的全部的写入数据以向每一存储单元写入m(>1)比特的数据(在此为4比特的数据)的写入模式(例如模糊·精细写入动作),经由内部缓冲器161仅写入到写入目的地QLC块#1(或者写入目的地QLC块#2),而不写入到共享闪存缓冲器201。
在对写入目的地QLC块#1以及写入目的地QLC块#2各自的数据的写入通过模糊·精细写入动作执行的情形中,在用于向连接于某字线的多个存储单元写入写入数据的模糊写入动作以及精细写入动作双方结束的情况下,控制器4将表示与该写入数据对应的各写入请求的完成(Completion)的通知发送给主机2。也就是说,如果变为写入到写入目的地QLC块#1(或者写入目的地QLC块#2)的数据能够从写入目的地QLC块#1(或者写入目的地QLC块#2)读出,则控制器4将表示与该数据对应的写入请求的完成(Completion)的通知发送给主机2。
如果从主机2接收到用于使写入目的地QLC块#1(或者写入目的地QLC块#2)转移到写入被中断的关闭状态的停用指令(停止请求),则控制器4将未传送给内部缓冲器161的写入数据从主机2的写入缓冲器51传送给内部缓冲器161。
例如,在从主机2接收到对写入目的地QLC块#1的停用指令(停用请求)情况下,控制器4将与用于向写入目的地QLC块#1写入数据的已接收的一个以上的写入请求建立了关联的写入数据之中的、未传送给内部缓冲器161的剩余的写入数据从主机2的写入缓冲器51传送给内部缓冲器161。例如,用于向写入目的地QLC块#1写入数据的已接收的写入请求为写入请求W1~写入请求W5,在写入数据没有传送到内部缓冲器161的写入请求为写入请求W4和写入请求W5的情况下,与写入请求W4建立了关联的写入数据和与写入请求W5建立了关联的写入数据作为剩余的写入数据从主机2的写入缓冲器51传送至内部缓冲器161。
并且,控制器4将传送至内部缓冲器161的剩余的写入数据不写入到写入目的地QLC块#1,以向每一存储单元写入n(m≥n≥1)比特的数据的写入模式仅写入到共享闪存缓冲器201。如果将剩余的写入数据写入到共享闪存缓冲器201,则控制器4使写入目的地QLC块#1的状态从开放状态转移到关闭状态。进而,控制器4将表示与剩余的写入数据对应的写入请求各自的完成的响应和表示停止请求的完成的响应发送给主机2。
对应于表示各写入请求的完成的响应的接收,主机2能够释放保存有与各写入请求对应的写入数据的写入缓冲器51内的区域,例如能够将该区域作为新开放的写入目的地QLC块用的区域来再利用。
如果从主机2接收到用于向关闭状态的QLC块#1再次写入数据的写入请求,则控制器4将QLC块#1作为写入目的地QLC块再次开放。并且,控制器4从共享闪存缓冲器201读出保存在共享闪存缓冲器201中的上述剩余的写入数据,并传送给内部缓冲器161。从共享闪存缓冲器201向内部缓冲器161传送的剩余的写入数据在能够将该写入数据写入到写入目的地QLC块#1的定时被写入到写入目的地QLC块#1。
图10是用于说明对被用作共享闪存缓冲器201的QLC缓冲器301进行控制的动作的图。
SSD3中,控制器4在从主机2接收到用于使写入目的地QLC块#1(或者写入目的地QLC块#2)转移到写入被中断的关闭状态的停用指令(停止请求)之前,将从主机2的写入缓冲器51接收的全部的写入数据以向每一存储单元写入m(>1)比特的数据(在此为4比特的数据)的写入模式(例如模糊·精细写入动作),经由内部缓冲器161仅写入到写入目的地QLC块#1(或者写入目的地QLC块#2),而不写入到QLC缓冲器301。
在通过模糊·精细写入动作执行对写入目的地QLC块#1以及写入目的地QLC块#2各自的数据的写入的情形中,如果用于向连接于某字线的多个存储单元写入写入数据的模糊写入动作以及精细写入动作双方结束,则控制器4将表示与该写入数据对应的各写入请求完成(Completion)的通知发送给主机2。也就是说,如果变为写入到写入目的地QLC块#1(或者写入目的地QLC块#2)的数据能够从写入目的地QLC块#1(或者写入目的地QLC块#2)读出,则控制器4将表示与该数据对应的写入请求完成(Completion)的通知发送给主机2。
如果从主机2接收到用于使写入目的地QLC块#1(或者写入目的地QLC块#2)转移到写入被中断的关闭状态的停用指令(停止请求),则控制器4将未传送给内部缓冲器161的写入数据从主机2的写入缓冲器51传送给内部缓冲器161。
例如,在从主机2接收到对写入目的地QLC块#1的停用指令(停止请求)的情况下,控制器4将与用于向写入目的地QLC块#1写入数据的已接收的一个以上的写入请求建立了关联的写入数据之中的、未传送给内部缓冲器161的剩余的写入数据从主机2的写入缓冲器51传送给内部缓冲器161。然后,控制器4将传送到内部缓冲器161的剩余的写入数据不写入到写入目的地QLC块#1,而是以向每一存储单元写入n(=m)比特的数据的写入模式(例如模糊·精细写入动作)仅写入到QLC缓冲器301。如果剩余的写入数据被写入到QLC缓冲器301,则控制器4使写入目的地QLC块#1的状态从开放状态转移到关闭状态。进而,如果变为写入到QLC缓冲器301的数据能够从QLC缓冲器301读出,则控制器4将表示与该数据对应的写入请求完成(Completion)的通知发送给主机2。
对应于表示各写入请求完成的响应的接收,主机2能够释放保存有与各写入请求对应的写入数据的写入缓冲器51内的区域,例如能够将该区域作为新开放的写入目的地QLC块用的区域来再利用。
如果从主机2接收到用于向关闭状态的QLC块#1再次写入数据的写入请求,则控制器4将QLC块#1作为写入目的地QLC块而再次开放。然后,控制器4从QLC缓冲器301读出保存在QLC缓冲器301中的上述剩余的写入数据,并传送给内部缓冲器161。从QLC缓冲器301传送到内部缓冲器161的剩余的写入数据在能够将该写入数据写入到写入目的地QLC块#1的定时被写入到写入目的地QLC块#1。
图11是用于说明对被用作共享闪存缓冲器201的SLC缓冲器401进行控制的动作的图。
SSD3中,控制器4在从主机2接收到用于使写入目的地QLC块#1(或者写入目的地QLC块#2)转移到写入被中断的关闭状态的停用指令(停止请求)之前,将从主机2的写入缓冲器51接收的全部的写入数据以向每一存储单元写入m(>1)比特的数据(在此为4比特的数据)的写入模式(例如模糊·精细写入动作),经由内部缓冲器161仅写入到写入目的地QLC块#1(或者写入目的地QLC块#2),而不写入到SLC缓冲器401。
在通过模糊·精细写入动作执行对写入目的地QLC块#1以及写入目的地QLC块#2各自的数据的写入的情形中,如果用于向连接于某字线的多个存储单元写入写入数据的模糊写入动作以及精细写入动作双方结束,则控制器4将表示与该写入数据对应的各写入请求完成(Completion)的通知发送给主机2。也就是说,如果变为写入到写入目的地QLC块#1(或者写入目的地QLC块#2)的数据能够从写入目的地QLC块#1(或者写入目的地QLC块#2)读出,则控制器4将表示与该数据对应的写入请求完成(Completion)的通知发送给主机2。
如果从主机2接收到用于使写入目的地QLC块#1(或者写入目的地QLC块#2)转移到写入被中断的关闭状态的停用指令(停止请求),则控制器4将未传送给内部缓冲器161的写入数据从主机2的写入缓冲器51传送给内部缓冲器161。
例如,在从主机2接收到对写入目的地QLC块#1的停用指令(停止请求)的情况下,控制器4将与用于向写入目的地QLC块#1写入数据的已接收的一个以上的写入请求建立了关联的写入数据之中的、未传送给内部缓冲器161的剩余的写入数据从主机2的写入缓冲器51传送给内部缓冲器161。然后,控制器4将传送到内部缓冲器161的剩余的写入数据不写入到写入目的地QLC块#1,而是以向每一存储单元写入n比特的数据(在此为1比特的数据)的写入模式(SLC模式)仅写入到SLC缓冲器401。
SLC模式是写入到块的多个页内的一个页的数据的读出能够仅通过该数据向该一个页的写入来进行的写入模式的一例。
如果剩余的写入数据写入到SLC缓冲器401,则控制器4使写入目的地QLC块#1的状态从开放状态转移到关闭状态,进而将表示与该写入数据对应的写入请求完成(Completion)的通知发送给主机2。
对应于表示各写入请求完成的响应的接收,主机2能够释放保存有与各写入请求对应的写入数据的写入缓冲器51内的区域,例如能够将该区域作为新开放的写入目的地QLC块用的区域来再利用。
如果从主机2接收到用于向关闭状态的QLC块#1再次写入数据的写入请求,则控制器4将QLC块#1作为写入目的地QLC块再次开放。然后,控制器4从SLC缓冲器401读出保存在SLC缓冲器401中的上述剩余的写入数据,并传送给内部缓冲器161。从SLC缓冲器401传送至内部缓冲器161的剩余的写入数据在能够将该写入数据写入到写入目的地QLC块#1的定时被写入到写入目的地QLC块#1。
另外,也可以代替SLC缓冲器401而使用MLC缓冲器。在该情况下,控制器4将剩余的数据以向每一存储单元写入n比特的数据(在此为2比特的数据)的写入模式(MLC LM模式)仅写入到MLC缓冲器。MLC LM模式也是写入到块的多个页内的一个页中的数据的读出仅通过该数据向该一个页的写入就能够进行的写入模式的一例。
图12是用于说明使用静态SLC缓冲器和动态SLC缓冲器的混合SLC缓冲器的图。
静态SLC缓冲器是从NAND型闪存5所包含的多个块中将被分配的固定数量的块分别作为SLC块来使用的非易失性缓冲器。
在仅通过静态SLC缓冲器构成SLC缓冲器401的情形中,可作为SLC缓冲器401来使用的块的数量是固定的。使用SLC模式执行块内的写入的块(SLC块)的最大编程/擦除周期数是,使用向每一存储单元写入4比特的写入模式来执行块内的写入的块(QLC块)的最大编程/擦除周期数的10倍左右。但是,SLC块的容量是QLC块的容量的1/4。
因此,通常,在仅使用静态SLC缓冲器的构成中,需要将比较多的块固定地分配为静态SLC缓冲器用。因此,如图12的(A)所示,在仅使用静态SLC缓冲器的构成中,QLC区域202的容量(用户容量)有被最小化的趋势。
动态SLC缓冲器是通过从QLC区域202用的块群动态地分配SLC缓冲器401用的块而实现的非易失性缓冲器。如图12的(B)所示,在使用动态SLC缓冲器的构成中,能够增加QLC区域202的容量(用户容量)。
但是,动态地分配为SLC缓冲器401用的块不是专用的SLC块,而是以向每一存储单元写入4比特的写入模式执行该块内的写入的块、即被用作QLC块的块。因此,动态地分配为SLC缓冲器401的块的最大编程/擦除周期数不是SLC块的最大编程/擦除周期数,需要由QLC块的最大编程/擦除周期数规定。因此,被用作动态SLC缓冲器的块的寿命有比被用作静态SLC缓冲器的专用的SLC块短的趋势。
图12的(C)表示本实施方式的混合SLC缓冲器。
控制器4将NAND型闪存5内的多个块之中的多个第1块的集合分配为QLC区域202(即QLC区域202内的多个QLC块)用,进而,将NAND型闪存5内的多个块之中的多个第2块的集合分配为SLC缓冲器401用。第2块的集合被作为静态SLC缓冲器401A使用。第2块的数量比第1块的数量少。
控制器4首先仅使用SLC静态SLC缓冲器401A作为缓冲器401。静态SLC缓冲器401A的各块被用作专用的SLC块。也就是说,控制器4以SLC模式向静态SLC缓冲器401A内的各块写入数据。静态SLC缓冲器401A内的各块的最大编程/擦除周期数等于SLC块的最大编程/擦除周期数。
控制器4每当从主机2接收到上述的停止请求时,将上述剩余的写入数据以SLC模式写入到静态SLC缓冲器401A。
随着时间的经过,写入到静态SLC缓冲器401A的数据的总量增加。随着写入到静态SLC缓冲器401A的数据的总量增加,静态SLC缓冲器401A的各块的编程/擦除周期数增加,由此静态SLC缓冲器401A的各块的消耗度增加。
控制器4基于静态SLC缓冲器401A的各块的消耗度(例如,编程/擦除周期数、误码率、编程/擦除错误),检测静态SLC缓冲器401内的不良块。例如,在基于静态SLC缓冲器401A的各块的编程/擦除周期数来检测不良块的情形中,控制器4将静态SLC缓冲器401A的各块的编程/擦除周期数与SLC块的最大编程/擦除周期数进行比较。控制器4将编程/擦除周期数达到SLC块的最大编程/擦除周期数的块作为不良块处理。不良块是已经不能正常利用的块。
随着不良块的增加,静态SLC缓冲器401A内的可利用的剩余块的数量减少。
如果静态SLC缓冲器401A内的可利用的剩余块的数量变得比阈值Th1少,则控制器4判定为静态SLC缓冲器401A已用尽(wear out)。
在该情况下,控制器4将被分配为QLC区域202用的块的集合中包含的一个块(自由QLC块)分配为SLC缓冲器401用的写入目的地块。控制器4每当从主机2接收到上述停止请求时,将上述剩余的写入数据以SLC模式从QLC区域202写入到被分配为SLC缓冲器401用的写入目的地块的块。如果该块整体以数据填满,则控制器4将被分配为QLC区域202用的块的集合中包含的其他一个块(自由QLC块)分配为SLC缓冲器401用的写入目的地块。
从QLC区域202用的块群中作为SLC缓冲器401用的写入目的地块而分配的各块被用作动态SLC缓冲器401B。
像这样,在静态SLC缓冲器401A被用尽之前,控制器4使用静态SLC缓冲器401A进行上述剩余的写入数据的写入。
如果静态SLC缓冲器401A被用尽,则控制器4将QLC区域202用的块群的一个块作为动态SLC缓冲器401B分配给分配SLC缓冲器401,使用动态SLC缓冲器401B来进行上述剩余的写入数据的写入。
静态SLC缓冲器401A中包含的各块的最大编程/擦除周期数能够由SLC块的最大编程/擦除周期数规定,所以与如图12的(B)那样仅使用动态SLC缓冲器的构成相比,能够延长SSD3的寿命。此外,通过使用混合SLC缓冲器,能够与如图12的(A)那样仅使用静态SLC缓冲器的构成相比增加用户容量。
图13是用于说明对混合SLC缓冲器进行控制的动作的图。
静态SLC缓冲器401A预先被分配固定数量的块。如果将与用户容量对应的块的数量设为N,将分配给QLC区域202的块的数量设为M,则M被设定为比N大一定程度的值。可从QLC区域202中分配为动态SLC缓冲器401B的最大块数小于M-N个。
如上所述,在关闭状态的QLC块再开放之后,保存在动态SLC缓冲器401B中的数据被写入到该再开放的QLC块。因此,通过向再开放的QLC块写入数据,仅为无效数据的动态SLC缓冲器401B内的块被释放为自由块。该自由块被返还到QLC区域202。返还的块可以再次作为QLC块来使用,并且也可以再次分配给动态SLC缓冲器401B。
图14是表示SSD3中执行的写入动作的框图。
SSD3的控制器4中管理与开放的多个写入目的地QLC块分别对应的多个指令队列。指令队列#1用来保存用于向写入目的地QLC块#1写入数据的一个以上的写入请求的每一个。指令队列#2用来保存用于向写入目的地QLC块#2写入数据的一个以上的写入请求的每一个。指令队列#3用来保存用于向写入目的地QLC块#3写入数据的一个以上的写入请求的每一个。指令队列#p用来保存用于向写入目的地QLC块#p写入数据的写入请求的每一个。
保存在主机2的提交队列(SQ)中的各个指令由调度器22取得。并且,用于向写入目的地QLC块#1写入数据的各写入请求由调度器22保存在指令队列#1中,用于向写入目的地QLC块#2写入数据的各写入请求由调度器22保存在指令队列#2中,用于向写入目的地QLC块#3写入数据的各写入请求由调度器22保存在指令队列#3中,用于向写入目的地QLC块#p写入数据的各写入请求由调度器22保存在指令队列#p中。
关于各个指令队列,由闪存管理部21检查与所保存的写入请求的集合建立了关联的写入数据的总大小。并且,如果与保存在某指令队列中的写入请求的集合建立了关联的写入数据的总大小达到阈值、例如各QLC块的最小写入大小,则在闪存管理部21的控制下,DMAC15将具有最小写入大小的写入数据从主机2的写入缓冲器51传送给内部缓冲器161。
由此,能够抑制内部缓冲器161被如下写入数据独占的情况,能够削减所需的内部缓冲器161的容量,上述写入数据是,不能开始对写入目的地QLC块的写入的、不足最小写入大小的多个的写入数据。
此外,从主机2的写入缓冲器51向内部缓冲器161进行的写入数据的传送不是以取得写入请求的顺序执行,而是以与将写入数据向各写入目的地QLC块写入的顺序相同的顺序执行。例如,在将与写入目的地QLC块#1的页#0~页#3对应的4页量的写入数据从主机2的写入缓冲器51传送给内部缓冲器161的情况下,闪存管理部21将应向页#0~页#3分别写入的四个16KB写入数据,以应向页#0写入的16KB写入数据、应向页#1写入的16KB写入数据、应向页#2写入的16KB写入数据、应向页#3写入的16KB写入数据这样的顺序,以页为单位从主机2的写入缓冲器51传送给内部缓冲器161。
另外,关于主机2的写入速度慢的特定的QLC块,闪存管理部21可以将各QLC块的容量作为上述的阈值来使用。在该情况下,闪存管理部21判定与用于向该特定的QLC块写入数据的写入请求的集合建立了关联的写入数据的总大小是否达到各QLC块的容量。在与用于向该特定的QLC块写入数据的写入请求的集合建立了关联的写入数据的总大小达到各QLC块的容量的情况下,闪存管理部21使用DMAC15将具有与QLC块的容量对应的大小的写入数据以页为单位从主机2的写入缓冲器51传送给内部缓冲器161。然后,闪存管理部21进行该特定的QLC块的擦除动作,将具有与QLC块的容量对应的大小的写入数据写入到该特定的QLC块。
图15是表示SSD3中执行的写入动作的次序和读出动作的次序的框图。
图15中例示了将SSD3作为支持NVMe标准的分区命名空间的上述第1类型SSD实现的情况。此外,作为共享闪存缓冲器201而使用SLC缓冲器401。
在将SSD3作为第1类型SSD实现的情况下,SSD3作为分区设备(zoned device)动作。分区设备是使用多个逻辑地址范围(多个LBA范围)进行访问的设备,该多个逻辑地址范围是对为了访问SSD3而由主机2使用的逻辑地址空间进行分割而得到的。
SSD3的控制器4对分别分配有多个LBA范围的多个分区进行管理。分区是用于对SSD3的NAND型闪存5进行访问的单位。控制器4构成为对QLC区域202中包含的多个QLC块(多个物理块或多个QLC超级块)与多个分区之间的映射进行管理,能够将任意的QLC块分配为一个分区。
对于与某一个分区对应的一个QLC块,使用被分配给该分区的LBA范围中包含的连续的逻辑地址进行访问。一个分区内的写入基本上按序执行。
从主机2向SSD3发出的写入指令(写入请求)例如包含表示应写入写入数据的最初的扇区(sector)的逻辑地址(开始LBA)、该写入数据的数据大小、表示保存有该写入数据的主机2的存储器(写入缓冲器)内的位置的数据指针(缓冲器地址)等。以下将主机2的存储器还简单称为主机存储器。
写入请求中包含的开始LBA的上位比特部被用作对于应写入与该写入请求建立了关联的写入数据的分区进行指定的识别码。此外,写入请求中包含的开始LBA的下位比特部指定应写入写入数据的该分区内的偏移。因此,由写入请求指定的开始LBA表示多个分区之中的一个分区和应写入写入数据的该分区内的偏移。
写入数据的数据大小例如也可以由扇区(逻辑块)数量指定。一个扇区对应于能够由主机2指定的写入数据的最小数据大小。也就是说,写入数据的数据大小由扇区的倍数表示。扇区也被称为“逻辑块”。
从主机2向SSD3发出的读取指令(读取请求)包含:表示应将读出对象数据读出的最初的扇区的逻辑地址(开始LBA)、读出对象数据的数据大小、表示应将该读出对象数据传送的主机存储器(读取缓冲器)内的位置的数据指针等。
读取请求中包含的开始LBA的上位比特部被用作指定保存有读出对象数据的分区的识别码。此外,读取请求中包含的开始LBA的下位比特部指定保存有读出对象数据的分区内的偏移。因此,由读取指令指定的开始LBA表示分区和保存有读出对象数据的该分区内的偏移。
从主机2向SSD3发出的分区管理指令中包含有开放分区指令(开放请求)、关闭分区指令(关闭请求)、复位分区指令(复位请求)等。
开放分区指令(开放请求)被用作上述分配指令。开放请求是用于使各个空状态的多个分区中的一个分区转移到可利用于数据的写入的开放状态的指令(请求)。开放请求包含对于应转移到开放状态的分区进行指定的逻辑地址。由开放请求指定的逻辑地址的上位比特部被用作指定应转移到开放状态的分区的识别码。
关闭分区指令(关闭请求)被用作上述停用指令。关闭请求是用于使分区的状态从开放状态转移到写入被中断的关闭状态的指令(请求)。关闭请求包含对于应转移到关闭状态的分区进行指定的逻辑地址。由关闭请求指定的逻辑地址的上位比特部被用作指定应转移到关闭状态的分区的识别码。
复位分区指令(复位请求)被用作上述释放指令,复位请求是用于将应执行改写的分区进行复位而使其转移到空状态的请求。例如,复位请求用于使被数据填满的满状态的分区转移到不包含有效数据的空状态。有效数据是指与逻辑地址建立了关联的数据。复位请求包含指定应转移到空状态的分区的逻辑地址。由复位请求指定的逻辑地址的上位比特部被用作指定应转移到空状态的分区的识别码。
作为分区使用的各个QLC块的状态大体分为开放状态(开放分区)、关闭状态(关闭分区)、满状态(满分区)、空状态(空分区)。
开放状态的QLC块是被分配为能够进行数据的写入的写入目的地块的块,被用作开放状态的分区。闪存管理部21使用开放分区列表101对开放状态的各QLC块进行管理。
关闭状态的QLC块是写入被中断的QLC块,相当于关闭状态的分区。写入被中断的QLC块是仅该QLC块的一部分被写入有数据的QLC块、即局部地被写入的QLC块。关闭状态的QLC块中,残留有可利用于数据的写入的几个页。闪存管理部21使用关闭分区列表102对关闭状态的各QLC块进行管理。
满状态的QLC块是该块整体被数据填满的块,相当于满状态的分区。闪存管理部21使用满分区列表103对满状态的各QLC分区进行管理。
空状态的QLC块是自由QLC块,相当于复位的分区。闪存管理部21使用空分区列表104对空状态的各QLC块进行管理。
主机2通过反复执行将开放请求(open request)发送给SSD3的处理,能够使多个QLC块(多个分区)成为开放状态。
在闪存管理部21从主机2接收到用于向开放状态的QLC块#1(分区#1)写入数据的各个写入请求(write request)的情况下,闪存管理部21使用DMAC15将各QLC块的最小写入大小量的写入数据从主机2的写入缓冲器51传送给内部缓冲器161。然后,闪存管理部21将传送到内部缓冲器161的写入数据不写入到SLC缓冲器401,而仅写入到QLC块#1(分区#1)。
此外,在闪存管理部21从主机2接收到用于向开放状态的QLC块#2(分区#2)写入数据的各个写入请求(write request)情况下,闪存管理部21使用DMAC15,将各QLC块的最小写入大小量的写入数据从主机2的写入缓冲器51传送给内部缓冲器161。然后,闪存管理部21将传送到内部缓冲器161的写入数据不写入到SLC缓冲器401,而仅写入到QLC块#2(分区#2)。
在一段时间内不执行对某开放状态的QLC块(分区)的数据的写入的情况下,主机2为了使得能够释放作为该QLC块(分区)用而确保的主机2的写入缓冲器51内的区域,将用于使该QLC块(分区)转移到关闭状态的关闭请求(close request)发送给SSD3。
在从主机2接收到指定表示QLC块#1(分区#1)的逻辑地址的关闭请求(closerequest)时,有可能在与QLC块#1(分区#1)对应的上述指令队列#1中保存有对QLC块#1(分区#1)的写入尚不能开始的写入请求。这是因为存在以下情况:在与应从QLC块#1(分区#1)的下一写入位置写入的4页量的写入数据对应的写入指令的集合积累到指令队列#1中为止,与这些写入指令分别建立了关联的写入数据没有从主机2的写入缓冲器51传送到内部缓冲器161。
闪存管理部21使用DMAC15,将与对QLC块#1(分区#1)的已接收的多个写入指令建立了关联的多个写入数据之中的未传送给内部缓冲器161的剩余的写入数据,从主机2的写入缓冲器51传送给内部缓冲器161。闪存管理部21将传送到内部缓冲器161的剩余的写入数据写入到SLC缓冲器401,而不是写入到QLC块#1(分区#1)。写入到SLC缓冲器401的全部的写入数据能够在刚写入该写入数据之后读出。因此,能够由SLC缓冲器401非易失地存储应向应关闭的QLC块#1(分区#1)写入的全部的数据,所以能够释放针对QLC块#1(分区#1)的在主机2的写入缓冲器51中确保的区域整体。
另外,在内部缓冲器161中存在向QLC块#1(分区#1)的写入没有结束的写入数据、例如仅模糊写入动作结束而精细写入动作没有结束的写入数据的情况下,闪存管理部21将该写入数据也与剩余的写入数据一起写入到SLC缓冲器401。
然后,闪存管理部21使QLC块#1(分区#1)转移到关闭状态。在该情况下,闪存管理部21从开放分区列表101中删除QLC块#1(分区#1),加入到关闭分区列表102。
SLC缓冲器401作为使用静态SLC缓冲器和动态SLC缓冲器的上述混合SLC缓冲器来实现。SLC缓冲器401也可以包含上述的多个SLC块。在静态SLC缓冲器被用尽之前,闪存管理部21每当接收到关闭请求时,就将应向应关闭的QLC块(分区)写入的剩余的写入数据写入到静态SLC缓冲器。
在该情况下,闪存管理部21将剩余的写入数据以SLC模式写入到SLC缓冲器401(静态SLC缓冲器)内的开放的写入目的地SLC块(openSLC块#1)。如果写入目的地SLC块整体被数据填满,则闪存管理部21将该写入目的地SLC块作为满状态的SLC块进行管理。
闪存管理部21也可以使用先进先出(FIFO)列表来管理满状态的全部的SLC块。FIFO列表包含多个条目。如果满状态的一个SLC块进入FIFO列表,则已经保存在FIFO列表的各条目中的各SLC块向FIFO列表的出口侧移动1条目。闪存管理部21将到达FIFO列表的出口的SLC块(最早的SLC块)选择为用于SLC缓冲器401的垃圾回收(GC(GarbageCollection))的复制源块。闪存管理部21判定在所选择的SLC块中是否保存有有效数据。
在所选择的SLC块中没有保存有效数据的情况下,闪存管理部21执行对该选择的SLC块的擦除动作,并且将该选择的SLC块分配为新的写入目的地SLC块。
在所选择的SLC块中保存有有效数据的情况下,闪存管理部21将保存在所选择的SLC块中的有效数据复制到GC用的写入目的地SLC块(open SLC块#2)。然后,闪存管理部21更新L2P表31,将表示有效数据被复制到的写入目的地SLC块内的存储位置的物理地址映射到该复制的有效数据的逻辑地址。在所选择的SLC块内的全部的有效数据的复制完成的情况下,闪存管理部21执行对该选择的SLC块的擦除动作,然后将该所选择的SLC块分配为新的写入目的地SLC块。
这样,静态SLC缓冲器内的固定数量的SLC块通过FIFO方式依次作为写入目的地SLC块而被分配。由此,能够使这些SLC块的编程/擦除周期数以相同速率增加。
如果静态SLC缓冲器内的可利用的剩余SLC块的数量变得比阈值Th1少(磨损(wearout)),则每当需要新的写入目的地SLC块的分配时,即每当写入目的地SLC块整体被数据填满时,闪存管理部21从由空分区列表104管理的自由QLC块群中选择一个QLC块,然后将所选择的一个QLC块分配为SLC缓冲器401用的新的写入目的地SLC块(open SLC块#1)。另外,该一个QLC块也可以被分配为GC用的新的写入目的地SLC块(open SLC块#2)。
该一个QLC块被用作构成动态SLC缓冲器的多个块之中的一个的要素。
即,闪存管理部21例如将该一个QLC块作为SLC缓冲器401用的新的写入目的地SLC块(open SLC块#1)来开放,应向应关闭的QLC块(分区)写入的写入数据以SLC模式写入到该开放的写入目的地SLC块。
如果该开放的写入目的地SLC块整体被数据填满,则闪存管理部21将该写入目的地SLC块加入到FIFO列表中。该写入目的地SLC块在后续的几个QLC块被用作写入目的地SLC块之后到达FIFO列表的出口。
在该情况下,闪存管理部21将到达FIFO列表的出口的SLC块选择为GC用的复制源块。在所选择的SLC块中没有保存有效数据的情况下,闪存管理部21将该选择出的SLC块放入QLC区域202用的空分区列表104,由此将该选择的SLC块返还到QLC区域202。
在所选择的SLC块中保存有有效数据的情况下,闪存管理部21将保存在所选择的SLC块中的有效数据复制到GC用的写入目的地SLC块(open SLC块#2)。然后,闪存管理部21更新L2P表31,将表示有效数据被复制到的写入目的地SLC块内的存储位置的物理地址映射到该被复制的有效数据的逻辑地址。在所选择的SLC块内的全部的有效数据的复制完成的情况下,闪存管理部21将该选择的SLC块放入QLC区域202用的空分区列表104中,由此将该选择的SLC块返还到QLC区域202。
转移到关闭状态的QLC块#1(分区#1)包含可用于写入数据的剩余的页。因此,主机2能够根据需要将用于向关闭状态的QLC块#1(分区#1)写入数据的写入请求发送给SSD3。
如果从主机2接收到用于向关闭状态的QLC块#1(分区#1)写入数据的一个以上的写入请求,则闪存管理部21从SLC缓冲器401读出保存在SLC缓冲器401中的QLC块#1(分区#1)用的写入数据,将读出的写入数据保存到内部缓冲器161。由此,QLC块#1(分区#1)用的写入数据从SLC缓冲器401传送到内部缓冲器161。然后,从SLC缓冲器401传送到内部缓冲器161的写入数据例如在接收到用于写入QLC块#1(分区#1)用的数据的后续的一个以上的写入指令之后被写入到QLC块#1(分区#1)。在该情况下,与后续的一个以上的写入指令建立了关联的QLC块#1(分区#1)用的写入数据被从主机2的写入缓冲器51传送到内部缓冲器161。然后,从SLC缓冲器401传送到内部缓冲器161的写入数据与从主机2的写入缓冲器51传送到内部缓冲器161的QLC块#1(分区#1)用的写入数据一起被写入到QLC块#1(分区#1)。
此外,关于开放状态、关闭状态、或满状态的各个QLC块(分区),闪存管理部21使用块管理表32对该QLC块(分区)的可读出区域、以及对保存有不能从该QLC块(分区)读出的数据的各存储位置进行表示的存储位置信息进行管理。
各存储位置为共享闪存缓冲器201(图15中SLC缓冲器401)内的存储位置、及主机2的写入缓冲器51内的存储位置中的某一个。关于各存储位置,例如可以以具有4KB那样的大小的扇区的单位进行管理。
在闪存管理部21从主机2接收到指定对QLC分区和该QLC分区内的偏移进行表示的开始LBA、以及读取对象数据的数据大小的读取指令(read request)的情况下,闪存管理部21判定与读取对象数据对应的LBA范围是否包含在该QLC块(分区)的可读出区域中。与读取对象数据对应的LBA范围由分别被读取指令指定的偏移和数据大小规定。
在与读取对象数据对应的LBA范围包含在该QLC块(分区)的可读出区域中的情况下,闪存管理部21从该QLC块(分区)读出读取对象数据,使用DMAC15将读出的读取对象数据作为读取命中数据发送给主机2。
在与读取对象数据对应的LBA范围不包含在该QLC块(分区)的可读出区域中的情况下,闪存管理部21基于与该QLC块(分区)对应的存储位置信息,从SLC缓冲器401或主机2的写入缓冲器51读出读取对象数据,使用DMAC15将读出的读取对象数据作为读取命中数据发送给主机2。
另外,闪存管理部21也可以代替从主机2的写入缓冲器51读出读取对象数据,而是仅执行将读取对象数据不存在于SSD3内的情况通知给主机2的处理。在该情况下,闪存管理部21也可以将存在读取对象数据的主机2的写入缓冲器51内的位置通知给主机2。
关于被数据填满的满状态的QLC块(分区),将该QLC分区的LBA范围的全部作为可读出区域进行管理。
在保存在满状态的QLC块(分区)中的全部的数据成为不被利用的不需要数据的情况下,主机2能够将指定表示该QLC块(分区)的逻辑地址的复位请求(reset request)发送给SSD3。对应于从主机2接收到该复位请求(reset request),闪存管理部21使该QLC块(分区)的状态转移到空状态。
在主机2希望向空状态的QLC块(分区)写入数据的情况下,主机2将指定表示该空状态的QLC块(分区)的逻辑地址的开放请求(openrequest)发送给SSD3。对应于从主机2接收到该开放请求(openrequest),闪存管理部21执行对该QLC块(分区)的擦除动作,使该QLC块(分区)的状态从空状态转移到开放状态。
图16是表示SSD3中执行的写入动作的次序和读出动作的次序的其他例的框图。
图16中,作为共享闪存缓冲器201而使用QLC缓冲器301。QLC缓冲器301基本上通过与对上述的动态SLC缓冲器的控制方法相同的控制方法被控制。
图17是表示在SSD3中执行的写入动作的步骤和使开放的QLC块转移到写入被中断的状态(关闭状态)的动作的步骤的流程图。
在此,例示向从多个QLC块中分配的第1写入目的地区域(写入目的地QLC块#1)以及第2写入目的地区域(写入目的地QLC块#2)写入写入数据的情况,在分配了多个写入目的地区域的情况下,对多个写入目的地区域分别执行与向第1写入目的地区域(写入目的地QLC块#1)以及第2写入目的地区域(写入目的地QLC块#2)写入写入数据的处理相同的处理。各写入目的地区域相当于开放的第1存储区域(例如开放的分区)。
在SSD3的控制器4从主机2接收到写入请求的情况下(步骤S11的是),控制器4判定接收到的写入请求是用于向第1写入目的地区域(写入目的地QLC块#1)写入数据的写入请求、及用于向第2写入目的地区域(写入目的地QLC块#2)写入数据的写入请求中的哪一个(步骤S12、S17)。
在接收到的写入请求是用于向第1写入目的地区域(写入目的地QLC块#1)写入数据的写入请求的情况下(步骤S12的是),控制器4将接收到的写入请求保存到与写入目的地QLC块#1对应的指令队列#1,判定是否满足应向写入目的地QLC块#1写入的写入数据的传送开始条件(步骤S13)。
在步骤S13中,控制器4判定与保存在指令队列#1中的写入请求的集合建立了关联的写入数据的总大小是否达到了QLC块的最小写入大小(例如4页量的大小)。
如果与保存在指令队列#1中的写入请求的集合建立了关联的写入数据的总大小达到了QLC块的最小写入大小,则控制器4判定为满足应向写入目的地QLC块#1写入的写入数据的传送开始条件(步骤S13的是)。
在该情况下,控制器4使用DMAC15将与保存在指令队列#1中的写入请求的集合建立了关联的写入数据从主机2的写入缓冲器51传送给内部缓冲器161(步骤S14)。所传送的写入数据具有写入目的地QLC块#1的写入动作所需要的最小写入大小。
控制器4将传送到内部缓冲器161的写入数据以向每一存储单元写入m比特的数据(在此为4比特的数据)的写入模式、例如模糊·精细写入动作写入到写入目的地QLC块#1(步骤S15)。
这样,控制器4每当在指令队列#1中积累了最小写入大小量的写入请求的集合时,就执行从主机2的写入缓冲器51向内部缓冲器161的写入数据的传送、和向写入目的地QLC块#1写入写入数据的动作。在因某写入数据的精细写入动作结束而变得能够从写入目的地QLC块#1读出该写入数据的情况下,控制器4将表示与该成为可读出的写入数据对应的写入请求完成的响应发送给主机2(步骤S16)。
在接收到的写入请求是用于向第2写入目的地区域(写入目的地QLC块#2)写入数据的写入请求的情况下(步骤S17的是),控制器4将接收到的写入请求保存到与写入目的地QLC块#2对应的指令队列#2,判定是否满足应向写入目的地QLC块#2写入的写入数据的传送开始条件(步骤S18)。
在步骤S18中,控制器4判定与保存在指令队列#2中的写入请求的集合建立了关联的写入数据的总大小是否达到了QLC块的最小写入大小(例如4页量的大小)。
如果与保存在指令队列#2中的写入请求的集合建立了关联的写入数据的总大小达到了QLC块的最小写入大小,则控制器4判定为满足应向写入目的地QLC块#2写入的写入数据的传送开始条件(步骤S18的是)。
在该情况下,控制器4使用DMAC15将与保存在指令队列#2中的写入请求的集合建立了关联的写入数据从主机2的写入缓冲器51传送给内部缓冲器161(步骤S19)。所传送的写入数据具有写入目的地QLC块#2的写入动作所需要的最小写入大小。
控制器4将传送到内部缓冲器161的写入数据以向每一存储单元写入m比特的数据(在此为4比特的数据)的写入模式、例如模糊·精细写入动作写入到写入目的地QLC块#2(步骤S20)。
这样,控制器4每当在指令队列#2中累积了最小写入大小量的写入请求的集合时,就执行从主机2的写入缓冲器51向内部缓冲器161的写入数据的传送和向写入目的地QLC块#2写入写入数据的动作。在因某写入数据的精细写入动作结束而变得能够从写入目的地QLC块#2读出该写入数据的情况下,控制器4将表示与该成为可读出的写入数据对应的写入请求完成的响应发送给主机2(步骤S16)。
在从主机2接收到用于使某第1存储区域的状态从可作为写入目的地存储区域来利用的开放状态转移到写入被中断的关闭状态的停止请求(例如关闭请求)的情况下(步骤S21的是),控制器4判定由停止请求指定的第1存储区域是第1写入目的地存储区域(QLC块#1)及第2写入目的地存储区域(QLC块#2)中的哪一个(步骤S22、S26)。
在由停止请求(关闭请求)指定的第1存储区域为第1写入目的地存储区域(QLC块#1)的情况下(步骤S22的是),控制器4从主机2的写入缓冲器51取得对QLC块#1的已接收的一个以上的写入请求之中的、未传送给内部缓冲器161的剩余的写入数据(步骤S23)。
控制器4将从主机2的写入缓冲器51取得的剩余的写入数据以向每一存储单元写入n比特的数据的第2写入模式写入到共享闪存缓冲器201(步骤S24)。在通过模糊·精细写入动作执行第1写入目的地存储区域(QLC块#1)内的写入的情形中,在步骤S24中,控制器4从内部缓冲器161取得尚不能从QLC块#1读出的第1写入数据,将从主机2的写入缓冲器51取得的剩余的写入数据与该第1写入数据一起以第2写入模式写入到共享闪存缓冲器201。由此,仅模糊写入动作结束而精细写入动作尚未执行的第1写入数据也能够使用共享闪存缓冲器201而非易失地存储。
控制器4将表示与变得能够从共享闪存缓冲器201读出的写入数据对应的写入请求各自完成的响应和表示停止请求完成的响应发送给主机2(步骤S25)。在适用于共享闪存缓冲器201的第2写入模式为向被分配给共享闪存缓冲器201的块内的多个页中的一个页写入的数据的读出仅通过向该页的数据的写入就能够进行的写入模式,例如SLC模式或MLCLM模式的情况下,控制器4对应于向共享闪存缓冲器201写入了写入数据的情况,将表示与该写入数据对应的已接收的一个以上的写入请求的完成的响应发送给主机2。另一方面,在适用于共享闪存缓冲器201的第2写入模式为向被分配给共享闪存缓冲器201的块内的多个页中的一个页写入的数据的读出在向后续于该页的1个以上的页的数据的写入后才能够进行的写入模式、例如模糊·精细写入动作的情况下,控制器4在向被分配给共享闪存缓冲器201的块写入的写入数据能够从该块读出的情况下,将表示与该写入数据对应的已接收的一个以上的写入请求完成的响应发送给主机2。
在由停止请求(关闭请求)指定的第1存储区域为第2写入目的地存储区域(QLC块#2)的情况下(步骤S26的是),控制器4从主机2的写入缓冲器51取得对QLC块#2的已接收的一个以上的写入请求之中的、未传送给内部缓冲器的剩余的写入数据(步骤S27)。并且,控制器4执行上述的步骤S24、S25的处理。
图18是表示对混合SLC缓冲器进行控制的动作的步骤的流程图。
首先,控制器4将NAND型闪存5内的多个块之中的多个第1块的集合分配为QLC区域202用,进而将NAND型闪存5内的多个块之中的多个第2块的集合分配为SLC缓冲器401用(步骤S31)。被分配为SLC缓冲器401用的第2块的数量是固定数量,这些第2块被用作静态SLC缓冲器401A。被分配为SLC缓冲器401用的第2块的数量比被分配为QLC区域202用的第1块的数量少。
每当从主机2接收到停止请求(例如关闭请求)时,控制器4从主机2的写入缓冲器51取得与对由停止请求指定的第1存储区域(QLC块)的已接收的一个以上的写入请求建立了关联的写入数据之中的、未传送给内部缓冲器161的剩余的写入数据,将该剩余的写入数据以SLC模式写入到静态SLC缓冲器401A(步骤S32)。在步骤S32中,控制器4首先将被分配为静态SLC缓冲器401A用的块之中的一个块分配为静态SLC缓冲器401A用的写入目的地SLC块。并且,控制器4将剩余的写入数据以SLC模式写入到写入目的地SLC块。在尚不能从由停止请求指定的第1存储区域(QLC块)读出的写入数据保存在内部缓冲器161中的情况下,控制器4从内部缓冲器161取得尚不能读出的写入数据,将剩余的写入数据和尚不能读出的写入数据以SLC模式写入到写入目的地SLC块。
控制器4例如基于静态SLC缓冲器401A内的各块的消耗度,从静态SLC缓冲器401A内的块中检测不良块。在检测不良块的处理中,控制器4例如也可以将静态SLC缓冲器401A内的各块的编程/擦除周期数与SLC块的最大编程/擦除周期数进行比较,将具有达到SLC块的最大编程/擦除周期数的编程/擦除周期数的块检测为不良块。
如果控制器4将静态SLC缓冲器401A内的某块检测为不良块(步骤S33的是),则控制器4将该块追加到不良块列表中(步骤S34)。由此,静态SLC缓冲器401A内的剩余可利用块的数量减少一个。
控制器4在需要分配静态SLC缓冲器401A用的新的写入目的地SLC块的情况下(步骤S35的是),即静态SLC缓冲器401A用的当前的写入目的地SLC块整体被数据填满的情况下,判定静态SLC缓冲器401A内的剩余可利用块的数量是否小于阈值Th1(步骤S36)。
在静态SLC缓冲器401A内的剩余可利用块的数量为阈值Th1以上的情况下(步骤S36的否),控制器4将静态SLC缓冲器401A内的一个块分配为静态SLC缓冲器401A用的新的写入目的地SLC块(步骤S37)。并且,控制器4每当从主机2接收到停止请求(例如关闭请求)时,执行步骤S32的处理。
在静态SLC缓冲器401A内的剩余可利用块的数量小于阈值Th1的情况下(步骤S36的是),控制器4判定为静态SLC缓冲器401A被用尽。
在该情况下,首先,控制器4从被分配为QLC区域202用的块的集合中选择一个块,将该选择的块分配为动态SLC缓冲器401B用的写入目的地块(步骤S38)。在步骤S38中,控制器4从通过空分区列表104管理的空状态的块(自由QLC块)的集合中选择一个块。
控制器4每当从主机2接收到停止请求(例如关闭请求)时,从主机2的写入缓冲器取得与对由停止请求指定的第1存储区域(QLC区域块)的已接收的一个以上的写入请求建立了关联的写入数据之中的、未传送给内部缓冲器161的剩余的写入数据,将该剩余的写入数据以SLC模式写入到动态SLC缓冲器401B用的写入目的地块(步骤S39)。在尚不能从由停止请求指定的第1存储区域(QLC块)读出的写入数据保存在内部缓冲器161中的情况下,控制器4从内部缓冲器161取得尚不能读出的写入数据,将剩余的写入数据和尚不能读出的写入数据以SLC模式写入到动态SLC缓冲器401B用的写入目的地块。
控制器4在需要分配动态SLC缓冲器401B用的新的写入目的地块的情况下(步骤S40的是),即动态SLC缓冲器401B用的当前的写入目的地块整体被数据填满的情况下,再次执行步骤S38的处理,从通过空分区列表104管理的空状态的块(自由QLC块)的集合中选择其他的一个块,将该选择的块分配为动态SLC缓冲器401B用的新的写入目的地块。
图19是表示对应于对关闭状态的QLC块的写入请求的接收而在SSD3中执行的动作的步骤的流程图。
在从主机2接收到用于向关闭状态的QLC块写入数据的写入请求的情况下(步骤S51的是),控制器4再开放该QLC块,使该QLC块的状态从关闭状态转移到开放状态(步骤S52)。
并且,控制器4将保存在共享闪存缓冲器201中的该QLC块用的写入数据从共享闪存缓冲器201传送给内部缓冲器161(步骤S53),执行用于将从共享闪存缓冲器201传送到内部缓冲器161的写入数据和从主机2的写入缓冲器51新传送的该QLC块用的写入数据写入到该QLC块的写入处理(步骤S54)。
图20是用于说明比较例的SSD中所需的SLC缓冲器的容量和SSD3中所需的SLC缓冲器的容量的图。
如图20的(A)所示,比较例的SSD执行如下处理,即:用于将全部的写入数据写入到SLC缓冲器401和写入目的地QLC块双方的处理,或者将全部的写入数据先仅写入到SLC缓冲器401,在比较例的SSD空闲时等从SLC缓冲器401向写入目的地QLC块写回写入数据的处理。因此,比较例的SSD中,向QLC区域202写入的全部的数据还被写入到SLC缓冲器401。
在主机2按序执行QLC区域202的各QLC块内的写入的情形中,QLC区域202的各QLC块不包含无效数据。因此,不执行对QLC区域202的GC。
另一方面,SLC缓冲器401中被写入应向不同的QLC块写入的多种写入数据,因此不需要对SLC缓冲器401的GC。
例如,设想由主机2写入到QLC区域202的数据的总量(TBW:Total Bytes Written]为A[TB]的情况。在该情况下,需要写入到SLC缓冲器401的数据的总量为A×(WA)[TB]。在此,WA表示SLC缓冲器401的写入放大。由于需要对SLC缓冲器401的GC,因此SLC缓冲器401的写入放大WA为大于1的值。
如图20的(B)所示,本实施方式的SSD3中,仅在从主机2接收到停止请求的情况下,执行数据向SLC缓冲器401的写入。
例如,设想由主机2写入到QLC区域202的数据的总量为A[TB]、A[TB]之中的直接写入到QLC区域202的数据的总量为C[TB]、通过全部的停止请求写入到SLC缓冲器401的数据的总量为B[TB]的情况。
A[TB]、B[TB]、C[TB]之间成立以下的关系。
A=B+C
C>0
B<A
写入到QLC区域202的数据的总量为A(=B+C)[TB]。
另一方面,需要写入到SLC缓冲器401的数据的总量为B×(WA)[TB]。由于B少于A,因此在本实施方式中,能够削减需要写入到SLC缓冲器401的数据的总量。
如上说明,根据本实施方式,控制器4在从主机2接收到停止请求的情况下,将与向由停止请求指定的第1存储区域写入数据的已接收的写入请求建立了关联的写入数据之中的、未传送给内部缓冲器161的剩余的写入数据从主机2的写入缓冲器传送给内部缓冲器161。并且,控制器4将该剩余的写入数据写入到由多个第1存储区域共享的第2存储区域(共享闪存缓冲器201)。
因此,无论是开放状态的第1存储区域之中的哪个第1存储区域被关闭的情况,与应关闭的各个第1存储区域对应的剩余的写入数据都被写入到共享闪存缓冲器201。因此,与每当接收到停止请求就将剩余的写入数据写入到由停止请求指定的第1存储区域这样的构成相比,能够减少不能完成写入的写入数据的量,能够增加主机2的写入缓冲器内的可释放的区域。
此外,在本实施方式中,与执行用于将全部的写入数据写入到共享闪存缓冲器201和QLC区域202双方的处理的情形、执行用于将全部的写入数据先仅写入到共享闪存缓冲器201、在SSD3空闲时等从共享闪存缓冲器201向QLC区域202写回写入数据的处理的情形相比,能够削减写入到共享闪存缓冲器201的数据的总量。
结果,能够削减需要分配为共享闪存缓冲器201的块的数量,因此能够增加可分配为QLC区域202的块(QLC块)的数量。
因此,能够有效地利用NAND型闪存5的存储区域,并且能够削减主机2的写入缓冲器51的大小。
主机2的写入缓冲器51也可以由非易失性写入缓冲器实现。非易失性写入缓冲器也可以由储存级存储器(SCM)那样的非易失性存储器实现。
在主机2的写入缓冲器51由非易失性写入缓冲器实现的情况下,即使因停电那样的功率损失而内部缓冲器161内的数据丢失,也能够再次从主机2的非易失性写入缓冲器取得该数据。因此,即使SSD3不具备用于执行功率损失保护功能的电容器,也能够防止因功率损失而内部缓冲器161内的数据丢失。
共享闪存缓冲器201也可以由储存级存储器(SCM)那样的非易失性存储器实现。
对本发明的一些实施方式进行了说明,这些实施方式是作为例子来提示的,并没有要限定发明的范围。这些新的实施方式能够以其他各种形态实施,并且在不脱离发明的主旨的范围内能够进行各种省略、替换、变更。这些实施方式及其变形包含在发明的范围及主旨中,并且包含在权利要求书所记载的发明及其等效的范围中。
附图标记说明
2……主机,3……SSD、4……控制器,5……NAND型闪存,51……主机的写入缓冲器,161……内部缓冲器,201……共享闪存缓冲器,202……QLC区域,301……QLC缓冲器,401……SLC缓冲器,401A……静态SLC缓冲器,401B……动态SLC缓冲器。

Claims (11)

1.一种存储器***,能够连接于主机,其中,具备:
非易失性存储器,包含分别为数据擦除动作的单位的多个块;
缓冲器;以及
控制器,与所述非易失性存储器及所述缓冲器电连接,
所述控制器构成为,
针对所述多个块之中的多个第1块,分别执行多次第1动作,该第1动作包括以用于向每一存储单元写入m比特的数据的第1写入模式写入数据的写入动作、以及擦除动作,
在所述多个块之中的第2块不是不良块的期间,针对所述第2块,执行多次第2动作,该第2动作包括以用于向每一存储单元写入n比特的数据的第2写入模式写入数据的写入动作、以及擦除动作,
所述m为2以上的整数,所述n为1以上且小于所述m的整数,
所述第2动作的所述写入动作包括以下动作:对应于从所述主机接收到第1请求这一情况,将与针对由所述第1请求所指定的第1块的已接收的一个以上的写入请求建立了关联的写入数据之中、未传送给所述缓冲器的第1写入数据写入到所述第2块,所述第1请求用于使所述多个第1块中的某一个第1块的状态从作为能够进行数据的写入的写入目的地块而被分配的第1状态转移到写入被中断的第2状态,
在所述第2块为不良块的情况下,对应于从所述主机接收到第2请求这一情况,从所述多个第1块中选择一个第1块,将与针对由所述第2请求所指定的第1块的已接收的一个以上的写入请求建立了关联的写入数据之中、未传送给所述缓冲器的第2写入数据,以所述第2写入模式写入到所选择的所述一个第1块,所述第2请求用于使所述多个第1块中的某一个第1块的状态从所述第1状态转移到所述第2状态。
2.如权利要求1所述的存储器***,其中,
所述第2块是多个第2块之中的一个,
所述控制器进一步构成为,
将所述多个第2块分配为非易失性缓冲器,
针对被分配为所述非易失性缓冲器的所述多个第2块,分别执行多次所述第2动作,
对应于随着所述多个第2块中包含的不良块的增加而所述多个第2块中包含的可利用的块的数量减少到小于阈值这一情况,从所述多个第1块中选择一个第1块,将所选择的所述一个第1块分配为所述非易失性缓冲器。
3.如权利要求1所述的存储器***,其中,
所述控制器进一步构成为,
在所选择的所述一个第1块整体被以所述第2写入模式写入的数据填满的情况下,对应于从所述主机接收到用于使所述多个第1块中的某一个第1块的状态从所述第1状态转移到所述第2状态的第3请求这一情况,从所述多个第1块中选择其他的一个第1块,将与针对由所述第3请求所指定的第1块的已接收的一个以上的写入请求建立了关联的写入数据之中、未传送给所述缓冲器的第3写入数据,以所述第2写入模式写入到所选择的所述其他的一个第1块。
4.如权利要求1所述的存储器***,其中,
所述控制器进一步构成为,
对应于从所述主机接收到一个以上的第1写入请求这一情况,将与所述一个以上的第1写入请求建立了关联的第1写入数据从所述主机的写入缓冲器传送给所述缓冲器,将传送到所述缓冲器的所述第1写入数据以所述第1写入模式写入到第1写入目的地块,所述第1写入请求用于向从所述多个第1块分配出的所述第1写入目的地块写入数据,
对应于从所述主机接收到一个以上的第2写入请求这一情况,将与所述一个以上的第2写入请求建立了关联的第2写入数据从所述主机的所述写入缓冲器传送给所述缓冲器,将传送到所述缓冲器的所述第2写入数据以所述第1写入模式写入到第2写入目的地块,所述第2写入请求用于向从所述多个第1块分配出的所述第2写入目的地块写入数据。
5.如权利要求1所述的存储器***,其中,
所述非易失性存储器中包含的所述多个块分别包含多个页,
所述第1写入模式是如下写入模式,即:向各块的多个页中的一个页写入的数据的读出在向所述一个页的后续的1个以上的页写入数据之后才能够进行,
所述第2写入模式是如下写入模式,即:向各块的多个页中的一个页写入的数据的读出仅通过向所述一个页的所述数据的写入就能够进行。
6.如权利要求5所述的存储器***,其中,
所述控制器进一步构成为,
从所述缓冲器取得第3写入数据,将所述第1写入数据与所述第3写入数据一起以所述第2写入模式写入到所述第2块,所述第3写入数据是与针对由所述第1请求所指定的所述第1块的所述已接收的一个以上的写入请求建立了关联的所述写入数据之中、尚不能从由所述第1请求所指定的所述第1块读出的写入数据。
7.如权利要求1所述的存储器***,其中,
所述控制器进一步构成为,
对应于从所述主机接收到用于向转移到所述第2状态的所述第1块写入数据的写入请求这一情况,
使所述第1块的状态从所述第2状态转移到所述第1状态,
从所述第2块读出被写入到所述第2块的所述第1写入数据,将读出的所述第1写入数据保存在所述缓冲器中。
8.如权利要求1所述的存储器***,其中,
所述控制器进一步构成为,
将从所述主机接收的各个写入请求分类为第1组和第2组,所述第1组包含用于向从所述多个第1块分配出的第1写入目的地块写入数据的第1写入请求,所述第2组包含用于向从所述多个第1块分配出的第2写入目的地块写入数据的第2写入请求,
在与属于所述第1组的所述第1写入请求建立了关联的写入数据的总大小达到了所述第1写入目的地块的最小写入大小的情况下,将具有所述最小写入大小的与所述第1写入请求建立了关联的写入数据从所述主机的所述写入缓冲器传送给所述缓冲器,
在与属于所述第2组的所述第2写入请求建立了关联的写入数据的总大小达到了所述第2写入目的地块的最小写入大小的情况下,将具有所述最小写入大小的与所述第2写入请求建立了关联的写入数据从所述主机的所述写入缓冲器传送给所述缓冲器。
9.如权利要求4所述的存储器***,其中,
所述主机的所述写入缓冲器是非易失性写入缓冲器。
10.一种存储器***,能够连接于主机,其中,具备:
非易失性存储器,包含分别具有存储单元的多个第1存储区域、和具有存储单元的第2存储区域;
缓冲器;以及
控制器,与所述非易失性存储器及所述缓冲器电连接,
所述控制器构成为,
对应于从所述主机接收到一个以上的第1写入请求这一情况,将与接收到的所述第1写入请求建立了关联的写入数据从所述主机的写入缓冲器传送给所述缓冲器,将传送到所述缓冲器的所述写入数据以用于向每一存储单元写入m比特的数据的第1写入模式写入到第1写入目的地存储区域,所述第1写入请求用于向从所述多个第1存储区域分配出的所述第1写入目的地存储区域写入数据,
对应于从所述主机接收到一个以上的第2写入请求这一情况,将与接收到的所述第2写入请求建立了关联的写入数据从所述主机的所述写入缓冲器传送给所述缓冲器,将传送到所述缓冲器的所述写入数据以所述第1写入模式写入到第2写入目的地存储区域,所述第2写入请求用于向从所述多个第1存储区域分配出的所述第2写入目的地存储区域写入数据,
对应于从所述主机接收到第1请求这一情况,从所述主机的写入缓冲器取得与针对由所述第1请求所指定的第1存储区域的已接收的写入请求建立了关联的写入数据之中、未传送给所述缓冲器的写入数据,将未传送的所述写入数据以用于向每一存储单元写入n比特的数据的第2写入模式写入到由所述多个第1存储区域共享的所述第2存储区域,使由所述第1请求所指定的所述第1存储区域的状态从所述第1状态转移到所述第2状态,所述第1请求用于使所述多个第1存储区域中的某一个第1存储区域的状态从作为能够进行数据的写入的写入目的地存储区域而被分配的第1状态转移到写入被中断的第2状态,
所述m为2以上的整数,所述n为1以上且所述m以下的整数。
11.如权利要求10所述的存储器***,其中,
所述非易失性存储器包括分别包含多个页的多个块,
所述第1写入模式是如下写入模式,即:向被分配为各第1存储区域的块的多个页中的一个页写入的数据的读出在向所述一个页的后续的1个以上的页写入数据之后才能够进行,
所述控制器构成为,
从所述缓冲器取得尚不能从被分配为由所述第1请求所指定的所述第1存储区域块读出的第1写入数据,将未传送的所述写入数据与所述第1写入数据一起以所述第2写入模式写入到所述第2存储区域。
CN202010765428.0A 2020-01-16 2020-08-03 存储器*** Active CN113138713B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311229162.8A CN117193653A (zh) 2020-01-16 2020-08-03 存储器***

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020-005292 2020-01-16
JP2020005292A JP7346311B2 (ja) 2020-01-16 2020-01-16 メモリシステム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311229162.8A Division CN117193653A (zh) 2020-01-16 2020-08-03 存储器***

Publications (2)

Publication Number Publication Date
CN113138713A true CN113138713A (zh) 2021-07-20
CN113138713B CN113138713B (zh) 2023-09-19

Family

ID=76809253

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010765428.0A Active CN113138713B (zh) 2020-01-16 2020-08-03 存储器***
CN202311229162.8A Pending CN117193653A (zh) 2020-01-16 2020-08-03 存储器***

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202311229162.8A Pending CN117193653A (zh) 2020-01-16 2020-08-03 存储器***

Country Status (4)

Country Link
US (3) US11216188B2 (zh)
JP (1) JP7346311B2 (zh)
CN (2) CN113138713B (zh)
TW (1) TWI741671B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114442955A (zh) * 2022-01-29 2022-05-06 苏州浪潮智能科技有限公司 全闪存储阵列的数据存储空间管理方法及装置
CN114489484A (zh) * 2021-12-27 2022-05-13 得一微电子股份有限公司 Ssd的数据存储方法、ssd、终端设备以及存储介质
CN114625321A (zh) * 2022-03-25 2022-06-14 阿里巴巴(中国)有限公司 数据写入方法以及装置
CN115758206A (zh) * 2022-11-07 2023-03-07 武汉麓谷科技有限公司 一种快速查找ZNS固态硬盘中NorFlash上次写结束位置的方法

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210108107A (ko) * 2020-02-25 2021-09-02 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US11734093B2 (en) * 2020-06-23 2023-08-22 Samsung Electronics Co., Ltd. Storage device block-level failure prediction-based data placement
US20220019370A1 (en) * 2020-07-16 2022-01-20 Micron Technology, Inc. Partial zone memory unit handling in a zoned namespace of a memory device
JP2022094705A (ja) * 2020-12-15 2022-06-27 キオクシア株式会社 メモリシステムおよび制御方法
US20220300198A1 (en) * 2020-12-31 2022-09-22 Pure Storage, Inc. Dynamic buffer for storage system
US11422734B2 (en) * 2021-01-06 2022-08-23 Western Digital Technologies, Inc. Managing overwrite data within solid state drives
JP7516300B2 (ja) 2021-03-17 2024-07-16 キオクシア株式会社 メモリシステム
US11748011B2 (en) * 2021-03-31 2023-09-05 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
US11733895B2 (en) * 2021-03-31 2023-08-22 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
US11809328B2 (en) * 2021-04-01 2023-11-07 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
JP2022171208A (ja) 2021-04-30 2022-11-11 キオクシア株式会社 メモリシステムおよび制御方法
US11809745B2 (en) * 2021-05-13 2023-11-07 Western Digital Technologies, Inc. Multi-fetching data for multi-pass programming within storage devices
KR20230019716A (ko) * 2021-08-02 2023-02-09 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
JP2023038769A (ja) * 2021-09-07 2023-03-17 キオクシア株式会社 半導体記憶装置
JP2023044135A (ja) * 2021-09-17 2023-03-30 キオクシア株式会社 メモリシステムおよび制御方法
KR20230060163A (ko) * 2021-10-27 2023-05-04 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
US12014772B2 (en) * 2021-11-17 2024-06-18 Samsung Electronics Co., Ltd. Storage controller and storage device including the same
WO2023235295A1 (en) * 2022-06-03 2023-12-07 Pure Storage, Inc. Dynamic buffer for storage system
US11853203B1 (en) * 2022-06-23 2023-12-26 Western Digital Technologies, Inc. Systems and methods with variable size super blocks in zoned namespace devices
US20240053924A1 (en) * 2022-08-12 2024-02-15 Micron Technology, Inc. Memory sub-system transfer queue retention
US20240069806A1 (en) * 2022-08-30 2024-02-29 Micron Technology, Inc. Managing data compaction for zones in memory devices
EP4332968A3 (en) * 2022-08-31 2024-05-15 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and operating method of storage device
US20240168683A1 (en) * 2022-11-22 2024-05-23 Western Digital Technologies, Inc. Folding Zone Management Optimization in Storage Device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010152778A (ja) * 2008-12-26 2010-07-08 Hitachi Ulsi Systems Co Ltd 半導体記憶装置
CN109144888A (zh) * 2017-06-28 2019-01-04 东芝存储器株式会社 存储器***
CN109144887A (zh) * 2017-06-28 2019-01-04 东芝存储器株式会社 存储器***及控制非易失性存储器的控制方法
US20190095116A1 (en) * 2017-09-22 2019-03-28 Toshiba Memory Corporation Memory system
CN110389718A (zh) * 2018-04-16 2019-10-29 东芝存储器株式会社 存储***及非易失性存储器的控制方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5841709A (en) * 1995-12-29 1998-11-24 Stmicroelectronics, Inc. Memory having and method for testing redundant memory cells
US6278718B1 (en) * 1996-08-29 2001-08-21 Excel, Inc. Distributed network synchronization system
US6505229B1 (en) * 1998-09-25 2003-01-07 Intelect Communications, Inc. Method for allowing multiple processing threads and tasks to execute on one or more processor units for embedded real-time processor systems
US7237022B1 (en) * 2000-06-29 2007-06-26 Microsoft Corporation Suspension and reinstatement of reference handles
US7336536B2 (en) * 2004-06-25 2008-02-26 Micron Technology, Inc. Handling defective memory blocks of NAND memory devices
JP6331773B2 (ja) * 2014-06-30 2018-05-30 富士通株式会社 ストレージ制御装置、およびストレージ制御プログラム
JP2017027388A (ja) 2015-07-23 2017-02-02 株式会社東芝 メモリシステムおよび不揮発性メモリの制御方法
JP2017045288A (ja) * 2015-08-27 2017-03-02 株式会社東芝 メモリシステム
JP2018120439A (ja) 2017-01-25 2018-08-02 東芝メモリ株式会社 メモリシステムおよび制御方法
JP7074453B2 (ja) * 2017-10-30 2022-05-24 キオクシア株式会社 メモリシステムおよび制御方法
US10915440B2 (en) 2017-11-16 2021-02-09 Micron Technology, Inc. Namespace mapping optimization in non-volatile memory devices
JP2019191909A (ja) 2018-04-25 2019-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
US20190042098A1 (en) 2018-06-08 2019-02-07 Intel Corporation Reduction of write amplification of ssd with integrated memory buffer
JP6649452B2 (ja) 2018-10-22 2020-02-19 キオクシア株式会社 メモリシステムおよび不揮発性メモリの制御方法
JP7353934B2 (ja) 2019-11-19 2023-10-02 キオクシア株式会社 メモリシステムおよび制御方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010152778A (ja) * 2008-12-26 2010-07-08 Hitachi Ulsi Systems Co Ltd 半導体記憶装置
CN109144888A (zh) * 2017-06-28 2019-01-04 东芝存储器株式会社 存储器***
CN109144887A (zh) * 2017-06-28 2019-01-04 东芝存储器株式会社 存储器***及控制非易失性存储器的控制方法
US20190095116A1 (en) * 2017-09-22 2019-03-28 Toshiba Memory Corporation Memory system
CN110389718A (zh) * 2018-04-16 2019-10-29 东芝存储器株式会社 存储***及非易失性存储器的控制方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114489484A (zh) * 2021-12-27 2022-05-13 得一微电子股份有限公司 Ssd的数据存储方法、ssd、终端设备以及存储介质
CN114442955A (zh) * 2022-01-29 2022-05-06 苏州浪潮智能科技有限公司 全闪存储阵列的数据存储空间管理方法及装置
CN114442955B (zh) * 2022-01-29 2023-08-04 苏州浪潮智能科技有限公司 全闪存储阵列的数据存储空间管理方法及装置
CN114625321A (zh) * 2022-03-25 2022-06-14 阿里巴巴(中国)有限公司 数据写入方法以及装置
CN115758206A (zh) * 2022-11-07 2023-03-07 武汉麓谷科技有限公司 一种快速查找ZNS固态硬盘中NorFlash上次写结束位置的方法

Also Published As

Publication number Publication date
TWI741671B (zh) 2021-10-01
CN117193653A (zh) 2023-12-08
JP7346311B2 (ja) 2023-09-19
US20210223962A1 (en) 2021-07-22
TW202129501A (zh) 2021-08-01
CN113138713B (zh) 2023-09-19
US20230305704A1 (en) 2023-09-28
US11704021B2 (en) 2023-07-18
US11216188B2 (en) 2022-01-04
US20220083234A1 (en) 2022-03-17
JP2021114039A (ja) 2021-08-05

Similar Documents

Publication Publication Date Title
CN113138713B (zh) 存储器***
JP7366795B2 (ja) メモリシステムおよび制御方法
CN109144888B (zh) 存储器***
CN114115747B (zh) 存储器***及控制方法
US20240036769A1 (en) Method for controlling write and read operations in the nonvolatile memory by a host, using an identifier for a region
JP7353934B2 (ja) メモリシステムおよび制御方法
US11726707B2 (en) System and method of writing to nonvolatile memory using write buffers
CN116414314A (zh) 存储***及非易失性存储器的控制方法
US20230333980A1 (en) Memory system and method of controlling nonvolatile memory
US20230297288A1 (en) Memory system and method of controlling nonvolatile memory and for reducing a buffer size
JP7381678B2 (ja) メモリシステム
JP2021033848A (ja) メモリシステムおよび制御方法
US20230091792A1 (en) Memory system and method of controlling nonvolatile memory
JP2023010765A (ja) メモリシステム
JP2023012773A (ja) メモリシステムおよび制御方法
JP2021033845A (ja) メモリシステムおよび制御方法

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