CN109725847B - 存储器系统及控制方法 - Google Patents

存储器系统及控制方法 Download PDF

Info

Publication number
CN109725847B
CN109725847B CN201810767080.1A CN201810767080A CN109725847B CN 109725847 B CN109725847 B CN 109725847B CN 201810767080 A CN201810767080 A CN 201810767080A CN 109725847 B CN109725847 B CN 109725847B
Authority
CN
China
Prior art keywords
block
address
data
host
flash memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810767080.1A
Other languages
English (en)
Other versions
CN109725847A (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
Toshiba Memory 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 Toshiba Memory Corp filed Critical Toshiba Memory Corp
Publication of CN109725847A publication Critical patent/CN109725847A/zh
Application granted granted Critical
Publication of CN109725847B publication Critical patent/CN109725847B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • G11C29/765Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
    • 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
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/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]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/72Masking faults in memories by using spares or by reconfiguring with optimized replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C2029/1806Address conversion or mapping, i.e. logical to physical address
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Hardware Redundancy (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

实施方式提供能够减小因不良块数的增加所造成的影响的存储器系统及控制方法。实施方式的存储器系统对多个并行单元进行管理,所述多个并行单元各自包含属于不同的非易失性存储器裸片的各块。存储器系统在从主机接收到指定用于识别应写入的第1数据的第3地址的写入请求的情况下,存储器系统参考不良信息从一个并行单元中所含的非不良块中选择出一个块来作为写入目标块,决定所选择的块内的写入目标位置,并将第1数据写入到写入目标位置。存储器系统将表示所选择的块及写入目标位置的双方的第1物理地址、及第3地址通知给主机。

Description

存储器系统及控制方法
[相关申请]
本申请案享有以日本专利申请案2017-209317号(申请日:2017年10月30日)为基础申请案的优先权。本申请案通过参考该基础申请案而包含基础申请案的全部内容。
技术领域
本发明的实施方式涉及一种具备非易失性存储器的存储器系统及控制方法。
背景技术
近年来,具备非易失性存储器的存储器系统得到广泛普及。作为这种存储器系统之一,已知基于NAND闪速存储技术的固态驱动器(SSD,Solid State Disk)。
数据中心的服务器中也使用SSD作为存储器(storage)。
对如服务器这样的主机计算机系统中所利用的存储器要求高I/O(input/output,输入/输出)性能。
因此,最近开始提出主机与存储器之间的新的接口。
然而,如果非易失性存储器中所含的不良块数增加,那么会存在如下情况:引起用于将不良块置换为其他块的置换信息量增大、或该置换处理导致的读取延迟时间增加。
因此,寻求实现一种用于减小因不良块数的增加所造成的影响的新技术。
发明内容
本发明的实施方式提供能够减小因不良块数的增加所造成的影响的存储器系统及控制方法。
根据实施方式,是能够连接于主机的存储器系统,包括:多个非易失性存储器裸片(Die),各自包含多个块;及控制器,构成为与所述多个非易失性存储器裸片电连接,且对多个并行单元进行管理,所述多个并行单元各自包含属于不同的非易失性存储器裸片的各块。所述多个并行单元各自具有固有的第1块地址,各非易失性存储器裸片内的多个块各自具有固有的第2块地址,应包含于各并行单元的块各自的第2块地址根据各并行单元的第1块地址并基于数学规则来规定。所述控制器对不良信息进行管理,所述不良信息中保存针对各并行单元内的每个块表示可使用或不可使用的至少1比特的信息。所述控制器在从所述主机接收到指定用于识别应写入的第1数据的第3地址的写入请求的情况下,参考所述不良信息从一个并行单元中所含的非不良块中选择出一个块来作为写入目标块,决定所述已选择的块内的写入目标位置,并将所述第1数据写入到所述写入目标位置,将表示所述已选择的块及所述写入目标位置的双方的第1物理地址、及所述第3地址通知给所述主机。
附图说明
图1是表示主机与存储器系统(闪速存储器设备)的关系的框图。
图2是用于说明闪速存储器设备与主机之间的作用分担的图。
图3是表示闪速存储器设备的构成例的框图。
图4是表示In-Drive-GC API(Application Programming Interface,应用编程接口)用指令的图。
图5是表示超级块API用指令的图。
图6是表示设置于闪速存储器设备的闪速存储器I/O控制电路与多个NAND型闪速存储器裸片的关系的框图。
图7是表示由多个块的集合构筑的超级块(并行单元)的构成例的图。
图8是用于说明超级块的块地址与构成该超级块的多个块各自的块地址的关系的图。
图9是用于说明将属于某一非易失性存储器裸片的各不良块由该非易失性存储器裸片的各其他块进行置换的动作的图。
图10是用于说明不对不良块进行置换而从超级块内的非不良块中选择出写入目标块的动作的图。
图11是用于说明适用于闪速存储器设备的写入指令的图。
图12是用于说明针对图11的写入指令的响应的图。
图13是用于说明适用于闪速存储器设备的Trim(修剪)指令的图。
图14是表示对具有不良块的超级块写入数据的动作的图。
图15是表示图12的响应中所含的物理地址的构成例的图。
图16是表示超级块的块地址与该超级块中所含的各块的块地址的关系的图。
图17是用于说明将逻辑地址与数据的配对(pair)写入到块内的页的动作的图。
图18是用于说明将数据写入到块内的页的用户数据区域且将该数据的逻辑地址写入到该页的冗余区域的动作的图。
图19是用于说明将多个数据部与根据这些数据部算出的纠删码(erasurecoding)写入到具有不良块的超级块的动作的图。
图20是表示主机内的闪速存储器转换部与闪速存储器设备内的写入动作控制部的关系的框图。
图21是用于说明由主机与闪速存储器设备执行的写入动作及读取动作的框图。
图22是表示由主机与闪速存储器设备执行的写入动作处理的序列的序列图。
图23是表示写入针对已经写入的数据的更新数据的数据更新动作的图。
图24是用于说明对由闪速存储器设备管理的块管理表进行更新的动作的图。
图25是用于说明对由主机管理的查找表(逻辑物理地址转换表)进行更新的动作的图。
图26是用于说明根据表示与应无效的数据对应的物理地址的来自主机的通知更新块管理表的动作的图。
图27是用于说明适用于闪速存储器设备的读取指令的图。
图28是用于说明由闪速存储器设备执行的读取动作的图。
图29是表示由主机与闪速存储器设备执行的读取处理的序列的序列图。
图30是用于说明适用于闪速存储器设备的垃圾回收(GC)控制指令的图。
图31是用于说明适用于闪速存储器设备的强制垃圾回收(GC)指令的图。
图32是用于说明从闪速存储器设备向主机发送的地址更新通知的图。
图33是表示由闪速存储器设备执行的垃圾回收(GC)动作的顺序的序列图。
图34是用于说明为了垃圾回收(GC)而执行的数据拷贝动作的例的图。
图35是用于说明基于图34的数据拷贝动作的结果所更新的主机的查找表的内容的图。
图36是用于说明针对写入指令的响应与GC用回调处理(地址更新通知)的关系的图。
图37是表示由主机执行的查找表更新处理的顺序的流程图。
图38是表示用于管理参考计数的块管理表的构成例的图。
图39是用于说明适用于闪速存储器设备的重复指令的图。
图40是表示由主机与闪速存储器设备执行的参考计数递增/递减处理的序列图。
图41是表示由闪速存储器设备执行的超级块分配处理的顺序的流程图。
图42是用于说明以超级块内的所有非不良块从该超级块的开端连续逻辑地配置的方式对访问对象块的地址进行转换的地址转换动作的图。
图43是用于说明供地址转换动作所使用的不良信息管理表与地址转换的例的图。
图44是表示主机内的闪速存储器转换部与闪速存储器设备内的不良块转换部的关系的框图。
图45是表示主机(计算机系统)的构成例的框图。
图46是表示内置闪速存储器设备的主机的构成例的图。
图47是表示由主机执行的写入动作的顺序的流程图。
图48是表示由主机执行的读取动作的顺序的流程图。
图49是表示由主机执行的参考计数递增/递减处理的顺序的流程图。
具体实施方式
以下,参考附图对实施方式进行说明。
首先,参考图1对主机与存储器系统的关系进行说明。
该存储器系统是以对非易失性存储器写入数据并从非易失性存储器读出数据的方式构成的半导体存储设备。该存储器系统作为基于NAND闪速存储技术的闪速存储器设备3实现。
主机(主机设备)2以控制多个闪速存储器设备3的方式构成。主机2由计算机系统实现,该计算机系统构成为将包含多个闪速存储器设备3的闪速存储器阵列用作存储器。该计算机系统可以是服务器。
另外,闪速存储器设备3也可用作设置于存储阵列内的多个存储设备之一。存储阵列可经由电缆或网络连接于如服务器那样的计算机系统,存储阵列包含对该存储阵列内的多个存储器(例如多个闪速存储器设备3)进行控制的控制器。在闪速存储器设备3适用于存储阵列的情况下,该存储阵列的控制器可作为闪速存储器设备3的主机发挥功能。
以下,例示如服务器这样的计算机系统作为主机2发挥功能的情况来进行说明。
主机(服务器)2与多个闪速存储器设备3经由接口50相互连接(内部相互连接)。关于用于该内部相互连接的接口50,不限定于此,可使用PCI Express(PCIe)(注册商标)、NVMExpress(NVMe)(注册商标)、Ethernet(注册商标)、NVMe over Fabrics(NVMeOF)等。
关于作为主机2发挥功能的服务器的典型例,可列举数据中心内的服务器。
在主机2由数据中心内的服务器实现的例子中,该主机(服务器)2可经由网络51连接于多个最终用户终端(用户端)61。主机2能够对这些最终用户终端61提供各种服务。
在主机(服务器)2所能够提供的服务的例中,有:(1)向各用户端(各最终用户终端61)提供系统运转平台的平台即服务(PaaS,Platform as a Service),(2)向各用户端(各最终用户终端61)提供如虚拟服务器这样的基础设施的基础设施即服务(IaaS,Infrastructure-as-a-Service)等。
多个虚拟机器可以在作为该主机(服务器)2发挥功能的物理服务器上执行。在主机(服务器)2上运行的这些虚拟机器各自能够作为虚拟服务器发挥功能,该虚拟服务器构成为向对应的一些用户端(最终用户终端61)提供各种服务。
主机(服务器)2包括:对构成闪速存储器阵列的多个闪速存储器设备3进行管理的存储器管理功能,及分别对最终用户终端61提供包含存储器访问在内的各种服务的终端功能(front end function)。
现有型SSD中,NAND型闪速存储器的块/页的阶层构造由SSD内的闪速存储器转换层(FTL,Flash Translation Layer)所隐蔽。即,现有型SSD的FTL具有下述功能:(1)使用作为逻辑物理地址转换表发挥功能的查找表,对各逻辑地址与各NAND型闪速存储器的物理地址之间的映射进行管理,(2)用于隐蔽页单位的读取/写入与块单位的抹除动作的功能,(3)执行NAND型闪速存储器的垃圾回收(GC)的功能等。无法从主机看到各逻辑地址与NAND型闪速存储器的物理地址之间的映射。NAND型闪速存储器的块/页构造也无法从主机看到。
另一方面,主机中有时也执行一种地址转换(应用层地址转换)。该地址转换使用应用层地址转换表,对用于应用的各逻辑地址与各SSD用的逻辑地址之间的映射进行管理。而且,主机中,为了消除SSD用的逻辑地址空间上产生的片段(fragment),有时执行用于变更该逻辑地址空间上的数据配置的一种GC(应用层GC)。
然而,在主机及SSD分别具有地址转换表这样的冗余构成(SSD具有作为逻辑物理地址转换表发挥功能的查找表,主机具有应用层地址转换表)中,为了保存这些地址转换表要消耗巨大的存储器资源。进而,包含主机侧的地址转换及SSD侧的地址转换的双重地址转换也成为使系统整体的I/O性能降低的主要因素。
进而,主机侧的应用层GC成为使对SSD的数据写入量增加到实际的用户数据量的数倍(例如2倍)程度的主要因素。这种数据写入量的增加虽不会使SSD的写入放大增加,但会使系统整体的存储性能降低,且SSD的寿命也会变短。
因此,本实施方式中,FTL的作用在主机2与闪速存储器设备3之间得以分担。主机2对作为逻辑物理地址转换表发挥功能的查找表进行管理,但写入时应使用的块及页能够由闪速存储器设备3来决定而并非由主机2来决定。而且,GC也能够由闪速存储器设备3来执行而并非由主机2来执行。以下,将已移至主机2的FTL功能称作全局FTL。
而且,闪速存储器设备3为了提高写入/读出速度,对各自包含多个块(多个物理块)的多个并行单元(多个超级块)进行管理。闪速存储器设备3能够并行执行针对某一并行单元内的多个块的写入动作及读出动作。
然而,NAND型闪速存储器裸片中包含一些不良块,因而有时为了确保并行度而由其他块来置换并行单元内的各不良块。然而,如果每一个NAND型闪速存储器裸片中所含的不良块数增加,那么存在用于置换的管理的信息量增大的可能性。
如果举例一个并行单元中所含的块数为64的情况,那么在根据表示并行单元的块地址并按照数学规则产生各块的块地址的例子中,在由块地址2049的块来置换64个块中的第15个块的情况下,为了表现第15个至少需要6比特,为了表现2049需要12比特。在应置换的块数多的情况下需要与其成比例的信息量。在将应置换的块数设为16个的情况下,每个并行单元需要18比特×16=294比特的信息。
而且,数据读取动作中,需要使用置换信息,执行用于将表示不良块的地址转换为表示置换目标块的地址的地址转换。因此,如果不良块数增加,那么伴随置换信息的增大而该地址转换处理所需的时间增加,因而读取延迟时间(latency)增大。
因此,在用于写入来自主机2的数据的写入动作中,闪速存储器设备3避开写入对象的并行单元内的不良块,从该并行单元内的非不良块中选择出写入目标块,决定该写入目标块内的写入目标位置。来自主机2的数据被写入到该写入目标位置。然后,闪速存储器设备3将表示该写入目标块及该写入目标块内的写入位置的双方的物理地址通知给主机2。由此,主机2能够识别出实际被写入数据的块及该块内的写入目标位置,因而在需要读取该数据的情况下,能够将指定该物理地址的读取请求发送到闪速存储器设备3。闪速存储器设备3基于由该读取请求指定的物理地址,能够从所述已选择的块内的写入目标位置读取数据。因此,闪速存储器设备3中,不需要地址转换处理,从而能够减少读取延迟时间。
主机2的全局FTL可具有下述功能,即,执行存储服务的功能,管理查找表(LUT)的功能,损耗控制功能,用于实现高可用性的功能,防止将具有相同内容的多个重复数据部存储在存储器的重复数据删除(De-duplication)功能等。
另一方面,闪速存储器设备3能够执行底层抽象(LLA,low-level abstraction)。LLA是用于NAND型闪速存储器的抽象的功能。LLA包含辅助数据配置的功能等。辅助数据配置的功能中,包含:决定用户数据的写入目标位置(块地址、该块内的位置)的功能,将表示写入了用户数据的该写入目标位置的物理地址通知给高阶(主机2)的功能,决定用于垃圾回收的拷贝源块及拷贝目标块的功能,将有效数据的拷贝目标位置通知给高阶(主机2)的功能等。而且,LLA也具有针对每个域(QoS域)执行闪速存储器设备3的资源管理的QoS控制功能。
QoS控制功能中包含针对每个QoS域决定访问单位(数据的粒度)的功能。访问单位表示主机2能够写入/读取的最小数据大小(数据的粒度)。闪速存储器设备3对单个或多个访问单位(数据的粒度)进行支持,主机2在闪速存储器设备3对多个访问单位进行支持的情况下,能够针对每个QoS域,将应使用的访问单位(数据的粒度)指示给闪速存储器设备3。
而且,QoS控制功能中包含用于尽可能地防止QoS域间的性能干涉的功能。该功能基本上是用于保持稳定的延迟时间的功能。
为了实现该功能,闪速存储器设备3可将NAND型闪速存储器内逻辑性地分割为多个区域(多个QoS域)。一个区域(一个QoS域)包含一个以上的并行单元(超级块)。各并行单元(超级块)仅属于某一个区域(QoS域)。
图2表示包含闪速存储器设备3与主机2的系统整体的阶层构造。
主机(服务器)2中,执行用于向多个最终用户提供多个虚拟机器的虚拟机器服务401。虚拟机器服务401上的各虚拟机器中,执行由对应的最终用户使用的操作系统及用户应用402。
而且,主机(服务器)2中,执行与多个用户应用402对应的多个I/O服务403。这些I/O服务403中可包含LBA基础的块I/O服务、键值存储(Key value Store)服务等。各I/O服务403包含对各逻辑地址与各闪速存储器设备3的物理地址之间的映射进行管理的查找表(LUT)。此处,逻辑地址是指能够识别访问对象的数据的标识符(标签)。该逻辑地址可以是指定逻辑地址空间上的位置的逻辑块地址(LBA),可以是键值存储的键,也可以是文件名这样的文件标识符。
LBA基础的块I/O服务中,可使用对各逻辑地址(LBA)与各闪速存储器设备3的物理地址之间的映射进行管理的LUT。
键值存储服务中,可使用如下的LUT,该LUT对各逻辑地址(如键这样的标签)与存储着和这些逻辑地址(即,如键这样的标签)对应的数据的闪速存储器设备3的各物理地址之间的映射进行管理。该LUT中,可对标签、存储着由该标签识别的数据的物理地址、及该数据的数据长的对应关系进行管理。
各最终用户能够选择应使用的寻址方法(LBA、键值存储的键、文件标识符等)。
这些各LUT并非将来自用户应用402的各逻辑地址转换为闪速存储器设备3用的各逻辑地址,而是将来自用户应用402的各逻辑地址转换为各闪速存储器设备3的物理地址。即,这些各LUT是综合(合并)了将闪速存储器设备3用的逻辑地址转换为物理地址的表和应用层地址转换表所得的表。
主机(服务器)2中,I/O服务403存在于每个所述QoS域中。属于某一QoS域的I/O服务403对由对应的QoS域内的用户应用402使用的各逻辑地址与分配到对应的QoS域的区域的各物理地址之间的映射进行管理。
从主机(服务器)2对闪速存储器设备3的指令的发送及从闪速存储器设备3对主机(服务器)2的指令完成的响应等送回,经由主机(服务器)2及闪速存储器设备3的各自存在的I/O队列500来执行。这些I/O队列500也可被分类为与多个QoS域对应的多个队列组。
闪速存储器设备3包含与多个QoS域对应的多个写入缓冲区(WB)601、与多个QoS域对应的多个垃圾回收(GC)功能602、及NAND型闪速存储器(NAND闪速存储器阵列)603。
图3表示闪速存储器设备3的构成例。
闪速存储器设备3具备控制器4及非易失性存储器(NAND型闪速存储器)5。闪速存储器设备3也可具备随机访问存储器,例如DRAM(dynamic random access memory,动态随机访问存储器)6。
NAND型闪速存储器5包含存储器单元阵列,该存储器单元阵列包含呈矩阵状配置的多个存储器单元。NAND型闪速存储器5可以是二维构造的NAND型闪速存储器,也可以是三维构造的NAND型闪速存储器。
NAND型闪速存储器5的存储器单元阵列包含多个块BLK0~BLKm-1。块BLK0~BLKm-1分别由多个页(此处为页P0~Pn-1)构成。块BLK0~BLKm-1作为抹除单位发挥功能。块有时也被称作“抹除块”、“物理块”、或“物理抹除块”。页P0~Pn-1各自包含连接于同一字线的多个存储器单元。页P0~Pn-1是数据写入动作及数据读取动作的单位。
控制器4经由如Toggle、开放式NAND闪速接口(ONFI)这样的闪速存储器I/O控制电路13,与作为非易失性存储器的NAND型闪速存储器5电连接。控制器4是以对NAND型闪速存储器5进行控制的方式构成的存储器控制器(控制电路)。
NAND型闪速存储器5包含多个NAND型闪速存储器裸片。控制器4对所述多个并行单元(parallel unit)进行管理。各并行单元由包含分别属于不同的NAND型闪速存储器裸片的多个块(多个物理块)的块组即超级块而实现。控制器4能够并行执行针对各并行单元(超级块)中所含的多个块的写入动作、读出动作。多个并行单元(超级块)各自具有固有的超级块地址(第1块地址)。各非易失性存储器裸片内的多个块各自具有固有的块地址(第2块地址)。各并行单元(超级块)中所应包含的块各自的块地址根据各并行单元的超级块并基于数学规则来规定。
控制器4包含主机接口11、CPU(Central Processing Unit,中央处理器)12、闪速存储器I/O控制电路13、及DRAM接口14等。这些CPU12、闪速存储器I/O控制电路13、DRAM接口14经由总线10而相互连接。
该主机接口11是以执行与主机2的通信的方式构成的主机接口电路。该主机接口11例如可以是PCIe控制器(NVMe控制器)。主机接口11从主机2接收各种请求(指令)。这些请求(指令)中包含写入请求(写入指令)、读取请求(读取指令)、其他各种请求(指令)。
CPU12是以对主机接口11、闪速存储器I/O控制电路13、DRAM接口14进行控制的方式构成的处理器。CPU12响应闪速存储器设备3的电源接通,从NAND型闪速存储器5或未图式的ROM将控制程序(固件)装载到DRAM6,然后,通过执行该固件进行各种处理。另外,固件也可装载到控制器4内的未图式的SRAM(Static Random Access Memory,静态随机访问存储器)上。该CPU12能够执行用于对来自主机2的各种指令进行处理的指令处理等。CPU12的动作利用由CPU12执行的所述固件来控制。另外,指令处理的一部分或全部可由控制器4内的专用硬件来执行。
CPU12能够作为写入动作控制部21、读取动作控制部22及GC动作控制部23发挥功能。这些写入动作控制部21、读取动作控制部22及GC动作控制部23中,安装着用于实现图2所示的系统构成的应用编程接口(API)。
写入动作控制部21从主机2接收写入请求(写入指令),该写入请求(写入指令)对用于识别应写入的数据(用户数据)的逻辑地址(标签)进行指定。在接收到写入指令的情况下,写入动作控制部21首先参考不良信息管理表33,从写入对象的并行单元(超级块)中所含的并非不良的块(非不良块)中选择出一个块来作为写入目标块。不良信息管理表33中保存不良信息,该不良信息保存着针对各并行单元(超级块)中所含的每个块表示可使用或不可使用的至少1比特的信息。与各超级块对应的不良信息可以是包含与各超级块中所含的块数相同数量的比特的比特映射(bit map)。写入动作控制部21通过参考与写入对象的并行单元(超级块)对应的不良信息(不良信息管理表33),能够识别出写入对象的并行单元内的各块是不良块或非不良块中的哪一个。
另外,不良信息不限定于所述比特映射,例如,可将表示各块的抹除次数(编程/抹除循环数)的信息代用作不良信息。该情况下,控制器4可判定具有某阈值以上的抹除次数的块为不良块。
不良块是不可使用的块,也作为“坏块”而参考。在由不良信息表示的不良块(坏块)中,可包含NAND型闪速存储器的制造过程中产生的不良块(初级(primary)不良块),也可包含闪速存储器设备3的使用开始后产生的不良块(增长(grown)不良块),还可包含这些初级不良块与增长不良块的双方。
写入动作控制部21决定所选择的写入目标块内的写入目标位置(页、及该页内的位置)。接下来,写入动作控制部21将来自主机2的数据(写入数据)写入到该写入目标块的写入目标位置。该情况下,写入动作控制部21不仅能够将来自主机2的数据,还能够将该数据与该数据的逻辑地址(标签)的双方写入到写入目标块。
然后,写入动作控制部21使经指定的逻辑地址(标签)与表示写入目标块及写入目标位置的双方的物理地址回到主机2。
该情况下,该物理地址可由裸片标识符、物理块地址(第2块地址)、及偏移来表示。裸片标识符是各非易失性存储器裸片所固有的标识符。该物理地址中所含的裸片标识符表示写入目标块所属的非易失性存储器裸片的裸片标识符。物理块地址是用于识别各非易失性存储器裸片内的多个块各者的块地址(块编号)。该物理地址中所含的块地址表示该写入目标块的块地址。偏移是块内偏移。该物理地址中所含的偏移表示从写入目标块的开端到写入目标位置为止的偏移(偏移值)。该偏移可由写入目标位置所属的页的页地址、及与写入目标位置对应的页内偏移来表示。
或者,该物理地址可由超级块地址(第1块地址)、及偏移来表示。超级块地址是各超级块所固有的块地址。该物理地址中所含的超级块地址表示写入对象的超级块的超级块地址。偏移表示从写入对象的超级块的开端到写入目标位置为止的偏移(偏移值)。该偏移可由写入目标块所属的非易失性存储器裸片的裸片标识符、写入目标位置所属的页的页地址、及与写入目标位置对应的页内偏移来表示。
物理地址也作为“闪速存储器地址”而参考。
另外,写入指令不仅可指定逻辑地址(标签),还可指定超级块地址。在接收到指定超级块地址的写入指令的情况下,写入动作控制部21从多个超级块中,选择出具有由写入指令指定的超级块地址的超级块来作为写入对象的并行单元(写入目标超级块)。
读取动作控制部22在从主机2接收到指定物理地址(表示读取对象的块及该块内的读取对象的位置)的读取请求(读取指令)的情况下,基于该物理地址,从读取对象的块内的读取对象的位置读取数据。
GC动作控制部23在执行NAND型闪速存储器5的垃圾回收的情况下,从NAND型闪速存储器5内的多个块中选择出用于该垃圾回收的拷贝源块(GC源块)及拷贝目标块(GC目的块)。这些GC源块及GC目的块可以分别是超级块,也可以分别是物理块。
GC动作控制部23通常选择多个拷贝源块(GC源块)、及一个以上的拷贝目标块(GC目的块)。用于选择拷贝源块(GC源块)的条件(GC策略)可由主机2来指定。例如,可使用优先选择有效数据量最少的块来作为拷贝源块(GC源块)的GC策略,也可使用其他GC策略。这样,拷贝源块(GC源块)及拷贝目标块(GC目的块)的选择可由闪速存储器设备3的控制器4(GC动作控制部23)来执行,并非由主机2来执行。控制器4可使用各块管理表管理各块的有效数据量。
有效数据/无效数据的管理可使用块管理表32来执行。该块管理表32例如针对每个超级块而存在。与某一超级块对应的块管理表32中,存储着表示该超级块内的各块的数据各自的有效/无效的比特映射旗标。此处,有效数据是指从LUT得到参考的数据(即根据逻辑地址作为最新的数据关联的数据),且是指有可能之后从主机2读取到的数据。无效数据是指不可能从主机2读取到的数据。例如,与某一逻辑地址建立关联的数据是有效数据,未与任何逻辑地址建立关联的数据是无效数据。
GC动作控制部23决定应写入拷贝源块(GC源块)存储器储的有效数据的拷贝目标块(GC目的块)内的位置(拷贝目标位置),将有效数据拷贝到拷贝目标块(GC目的块)的该已决定的位置(拷贝目标位置)。该情况下,GC动作控制部23可将有效数据与该有效数据的逻辑地址的双方拷贝到拷贝目标块(GC目的块)中。GC动作控制部23通过参考与拷贝源块(GC源块)对应的块管理表32而特定出GC源块内的有效数据。或者,另一实施方式中,主机2可指定GC源块与GC目的块。这些GC源块与GC目的块可以是超级块,也可以是物理块。
然后,GC动作控制部23将被拷贝的有效数据的逻辑地址(标签)、表示被拷贝的有效数据的旧物理存储位置的物理地址、及表示被拷贝的有效数据的新物理存储位置的物理地址通知给主机2。
本实施方式中,如所述那样,写入动作控制部21能够将来自主机2的数据(写入数据)与来自主机2的逻辑地址(标签)的双方写入到写入目标块。因此,GC动作控制部23能够容易地从该拷贝源块(GC源块)获取拷贝源块(GC源块)内的各数据的逻辑地址,因而能够容易地将被拷贝的有效数据的逻辑地址通知给主机2。
闪速存储器I/O控制电路13是以在CPU12的控制之下对NAND型闪速存储器5进行控制的方式构成的存储器控制电路。DRAM接口14是以在CPU12的控制之下对DRAM6进行控制的方式构成的DRAM控制电路。DRAM6的存储区域的一部分是为了读取缓冲区(RB)30、写入缓冲区(WB)31、块管理表32、不良信息管理表33的存储而使用。另外,这些读取缓冲区(RB)30、写入缓冲区(WB)31、块管理表32、不良信息管理表33可存储在控制器4内的未图式的SRAM中。
接下来,对用作闪速存储器设备3与主机2之间的软件接口的API进行说明。本实施方式中,该API大致分为2种API(In-Drive-GC(In-Drive-GC)API与超级块API。
In-Drive-GC-API包括以闪速存储器设备3单独地执行垃圾回收(GC)为前提的指令群。这些指令群中可包含如下指令来作为基本指令:写入指令(Write without PhysicalAddress,未伴随有物理地址地写入),读取指令(Read with Physical Address,伴随有物理地址地读取),Trim指令(修剪指令),重复指令(Duplicate),地址更新通知(AddressUpdate Notification(Device Initiated,设备启动)),强制GC指令(Forced Garbage-Collection,强制垃圾回收),GC控制指令(Garbage Collection Control,垃圾回收控制)等。
写入指令(Write without Physical Address)是指定识别应写入的用户数据的逻辑地址(标签)而不指定写入目标的物理地址的写入指令。
读取指令(Read with Physical Address)是指定表示读取对象的物理存储位置(物理块、物理块内的读取对象位置)的物理地址的读取指令。
Trim指令(Trim)是指定应无效的数据的物理地址,并将与该物理地址对应的数据应无效这一情况指示给存储设备3的指令。另外,主机2在支持重复数据删除(De-duplication)功能的情况下,该重复数据删除(De-duplication)功能防止具有相同内容的多个重复数据部存储在存储器中,Trim指令(Trim)被用作将应使表示参考某一数据的逻辑地址数的参考计数减少这一情况指示给存储设备3的指令。重复指令(Duplicate)被用作将应使表示参考某一数据的逻辑地址数的参考计数增加这一情况指示给存储设备3的指令。
地址更新通知(Address Update notification(Device Initiated))被用于如下,即,在利用闪速存储器设备3执行用于GC的数据拷贝动作后,供闪速存储器设备3将被拷贝的数据(有效数据)的逻辑地址、该有效数据的旧物理存储位置、该有效数据的新物理存储位置通知给主机2。
强制GC指令(Forced Garbage-Collection)是用于使闪速存储器设备3强制性地执行GC的指令。
GC控制指令(Garbage Collection Control)是用于将供GC开始的条件等指示给闪速存储器设备3的指令。
图4表示In-Drive-GC-API用的各指令的参数与返回值的例。
图4中,“Host:”的标记后续记载的内容是由对应的指令指定的参数,“Device:”的标记后续记载的内容是针对该指令的响应中所含的参数(返回值)。
写入指令(Write without Physical Address)可包含用户地址、长度、数据、QoS域标识符。用户地址是用于识别应写入的数据的逻辑地址(标签)。用户地址的例中包含LBA、键值存储的键、文件标识符等。
针对写入指令的响应可包含状态(成功/失败)、用户地址、闪速存储器地址(物理地址)、长度、剩余可写入数据量(distance-to-block-boundary,与块边界的距离)。剩余可写入数据量(distance-to-block-boundary)是可选择的返回值,表示可写入到已写入数据的超级块的剩余数据量。剩余可写入数据量(distance-to-block-boundary)可由所述数据的粒度的倍数来表示。数据有时会跨不良块的前后的2个非不良块写入。因此,针对写入指令的响应可包含各集合(set)含用户地址、闪速存储器地址(物理地址)、长度的多个集合。
读取指令(Read with Physical Address)可包含闪速存储器地址、长度。读取指令(Read with Physical Address)可包含各集合含闪速存储器地址、长度的多个集合。针对读取指令的响应可包含状态、用户地址、长度、数据。针对读取指令的响应可包含各集合含用户地址、长度的多个集合。
Trim指令(Trim)/重复指令(Duplicate)可包含闪速存储器地址、长度、参考计数的增减量(reference-count-to-add-or-subtract)。Trim指令(Trim)/重复指令(Duplicate)可包含各集合含闪速存储器地址、长度、参考计数的增减量的多个集合。
地址更新通知(Address Update notification(Device Initiated))可包含用户地址、旧闪速存储器地址、新闪速存储器地址、参考计数、长度,来作为由闪速存储器设备3通知给主机2的输出参数。例如,闪速存储器设备3在将数据从旧物理存储位置拷贝到新物理存储位置后,将地址更新通知(Address Update notification(Device Initiated))发送到主机2。该地址更新通知(Address Update notification(Device Initiated))中可包含:该数据的用户地址,表示该数据的旧物理存储位置的旧闪速存储器地址,表示该数据的新物理存储位置的新闪速存储器地址,表示参考该数据的逻辑地址数的参考计数,及该数据的长度。地址更新通知(Address Update notification(Device Initiated))可包含各集合含用户地址、旧闪速存储器地址、新闪速存储器地址、参考计数、长度的多个集合。
强制GC指令(Forced Garbage-Collection)可包含QoS域标识符、源超级块地址(可选择)。
GC控制指令(Garbage Collection Control)可包含最大数据数(maximum-number-of-data)、QoS域标识符、GC的方法(策略)。
超级块API包括以如下为前提的指令群,即,主机2指定逻辑地址(标签)与超级块,闪速存储器设备决定该超级块内的写入目标块及该写入目标块内的写入目标位置。这些指令群中包含如下指令作为基本指令,即,写入指令(Write without Page Address),读取指令(Read with Physical Address),超级块释放指令(Release Super Block to UnusedSuper Block Pool,释放超级块到未使用的超级块池中),超级块分配指令(AllocateSuper Block and Open Write Buffer with Block Healing,伴随有块修复的分配超级块及打开写入缓冲区),关闭超级块指令(Close Super Block and Write Buffer,关闭超级块及写入缓冲区),超级块信息指令(Super Block Information),非拷贝数据设定指令(Set Data not to be Copied,不拷贝设定数据),数据拷贝指令(Data Copy withoutPage Address,不伴随有页地址的数据拷贝)等。
写入指令(Write without Page Address)是指定逻辑地址(标签)与超级块地址的写入指令。读取指令与In-Drive-GC-API用的读取指令相同。超级块释放指令(ReleaseSuper Block to Unused Super Block Pool)是用于释放已分配的超级块的指令。超级块分配指令(Allocate Super Block and Open Write Buffer with Block Healing)是请求超级块的分配的指令。超级块分配指令(Allocate Super Block and Open Write Bufferwith Block Healing)可包含指定表示能够并行访问的块数的并行数的参数。超级块信息指令(Super Block Information)是用于获取与特定的超级块相关的信息的指令。非拷贝数据设定指令(Set Data not to be Copied)是用于指定超级块内的不应拷贝的数据的指令。数据拷贝指令(Data Copy without Page Address)是用于拷贝供GC的数据的指令。这些指令的参数与返回值的例表示于图5中。图5中,“Host:”的标记后续记载的内容表示由对应的指令指定的参数,“Device:”的标记后续记载的内容表示针对该指令的响应中所含的参数(返回值)。
图6表示闪速存储器I/O控制电路13与多个NAND型闪速存储器裸片的关系。
NAND型闪速存储器5如图6所示,包含多个NAND型闪速存储器裸片。各NAND型闪速存储器裸片是非易失性存储器裸片,且包括包含多个块(物理块)BLK的存储器单元阵列及控制该存储器单元阵列的周边电路。各个NAND型闪速存储器裸片能够独立地动作。因此,NAND型闪速存储器裸片作为最小的并行动作单元而发挥功能。NAND型闪速存储器裸片也被称作“NAND型闪速存储器芯片”或“非易失性存储器芯片”。图6中,例示如下情况,即,闪速存储器I/O控制电路13中连接着16个信道Ch0、Ch1、…Ch15,这些信道Ch0、Ch1、…Ch15各自连接着相同数量(例如每信道有1个裸片)的各NAND型闪速存储器裸片。各信道包含用于与对应的NAND型闪速存储器裸片通信的通信线(存储器总线)。
控制器4经由信道Ch0、Ch1、…Ch15对NAND型闪速存储器裸片#0~#15进行控制。控制器4能够同时驱动信道Ch0、Ch1、…Ch15。
图6的构成例中,能够使最大16个NAND型闪速存储器裸片并行动作。
本实施方式中,控制器4对分别包含多个块BLK的多个并行单元(超级块)进行管理。超级块不限定于此,也可包含从连接于不同的信道的NAND型闪速存储器裸片#0~#15逐个地选择的共计16个块BLK。另外,NAND型闪速存储器裸片#0~#15各自可具有多平面构成。例如,在NAND型闪速存储器裸片#0~#15各自具有包含2个平面的多平面构成的情况下,一个超级块可包含从与NAND型闪速存储器裸片#0~#15对应的32个平面中逐个地选择的共计32个块BLK。
图7中例示一个超级块SB包含从NAND型闪速存储器裸片#0~#14中逐个地选择的共计16个块BLK的情况。在针对超级块SB的写入动作中,数据按照属于NAND型闪速存储器裸片#0的块BLK的页P0、属于NAND型闪速存储器裸片#1的块BLK的页P0、…属于NAND型闪速存储器裸片#15的块BLK的页P0、属于NAND型闪速存储器裸片#0的块BLK的页P1、属于NAND型闪速存储器裸片#2的块BLK的页P1、…属于NAND型闪速存储器裸片#15的块BLK的页P1、…的顺序被写入。
图8表示超级块SB的块地址(超级块地址)与构成该超级块SB的多个块(物理块)各自的块地址的关系。
超级块SB中所应包含的块(物理块)各自的块地址根据该超级块SB的块地址(超级块地址)且基于某一数学规则来规定。
例如,可将通过对超级块SB的超级块地址实施特定的四则运算所获得的值,决定为该超级块SB中所应包含的各块的块地址。或者,可将通过对表示超级块SB的超级块地址的多个比特实施特定的比特反转或特定的比特移位所获得的值,决定为该超级块SB中所应包含的各块的块地址。
图8中,为了简化图示,例示了由具有与超级块SB的超级块地址相同的块地址的各块构成该超级块SB的情况。
即,具有超级块地址0的超级块SB0包含:NAND型闪速存储器裸片#0(Die#0)中所含的块地址0的块BLK0,NAND型闪速存储器裸片#1(Die#1)中所含的块地址0的块BLK0,NAND型闪速存储器裸片#2(Die#2)中所含的块地址0的块BLK0,…,NAND型闪速存储器裸片#15(Die#15)中所含的块地址0的块BLK0。
同样地,具有超级块地址1000的超级块SB1000包含:NAND型闪速存储器裸片#0(Die#0)中所含的块地址1000的块BLK1000,NAND型闪速存储器裸片#1(Die#1)中所含的块地址1000的块BLK1000,NAND型闪速存储器裸片#2(Die#2)中所含的块地址1000的块BLK1000,…,NAND型闪速存储器裸片#15(Die#15)中所含的块地址1000的块BLK1000。
各Die中有时会包含一些不良块。通常,不良块数在每个Die中不同。
图9中,示出由属于相同Die的其他块来置换各Die中所含的各不良块的处理。
图9中,设想如下情况:各Die包含2048个块BLK,Die#0包含100个不良块,Die#1不包含不良块,Die#2包含20个不良块,而且Die#15包含30个不良块。
Die#0中,例如,不良块BLK1被Die#0的非不良块BLK1948所置换,不良块BLK5被Die#0的非不良块BLK1949所置换。这样,从Die#0的开端算起合计仅1948(=2048-100)个块为可利用状态,Die#0的剩余的块BLK1948~BLK2047不可利用。
因此,即便在Die#1不包含不良块的情况下,Die#1的块BLK1948~BLK2047也无法为了构筑超级块而得到利用。由此,能够构筑的超级块SB的数量被限制为不良块最多的Die#0内的非不良块数。
图10表示不置换各不良块而是从某一超级块SB内的非不良块中选择出写入目标块的动作。
图10中,为了简化图示,例示如下情况,即,某一超级块(此处为超级块SB5)包含8个块,即,Die#0内的块BLK5,Die#1内的块BLK5,Die#2内的块BLK5,Die#3内的块BLK5,Die#4内的块BLK5,Die#5内的块BLK5,Die#6内的块BLK5,及Die#7内的块BLK5。
本实施方式中,设置着与各超级块对应的不良信息管理表33。超级块SB5用的不良信息管理表33中,保存着包含针对每个块表示可使用或不可使用的1比特的信息的不良信息(比特映射)。不良信息(比特映射)中,“0”表示非不良块,“1”表示不良块。
图10中,设想Die#1内的块BLK5、Die#4内的块BLK5、Die#5内的块BLK5为不良块的情况。
控制器4不执行由Die#1内的其他块来置换Die#1内的块BLK5的处理、由Die#4内的其他块来置换Die#4内的块BLK5的处理、由Die#5内的其他块来置换Die#5内的块BLK5的处理。取而代之,控制器4参考超级块SB5用的不良信息管理表33,从超级块SB5中所含的非不良块(此处为Die#0内的块BLK5、Die#2内的块BLK5、Die#3内的块BLK5、Die#6内的块BLK5、Die#7内的块BLK5)中选择出一个块来作为写入目标块。控制器4决定该写入目标块内的写入目标位置,将来自主机2的写入数据写入到该写入目标块内的写入目标位置。然后,控制器4将表示该写入目标块及该写入目标位置的双方的物理地址通知给主机2。
由此,主机2能够识别出实际被写入了写入数据的块(写入目标块)与该块内的写入目标位置,因而在需要读取该数据的情况下,能够将指定该已被通知的物理地址的读取请求(读取指令)发送到闪速存储器设备3。即,首先,主机2将包含识别应写入的数据的逻辑地址(标签)的写入请求(写入指令)发送到闪速存储器设备3。主机2从闪速存储器设备3接收表示已从除不良块以外的块中作为写入目标块而选择的块及该块内的写入目标位置(物理存储位置)的双方的物理地址、及该数据的逻辑地址(标签)。然后,主机2更新对各逻辑地址(标签)与各闪速存储器设备3的物理地址之间的映射进行管理的主机2上的查找表(LUT),将所接收到的物理地址映射在识别该数据的逻辑地址(标签)中。在需要读取该数据的情况下,主机2参考主机2上的查找表(LUT),获取映射在该数据的逻辑地址(标签)的物理地址,并将指定所获取的物理地址的读取请求(读取指令)发送到闪速存储器设备3。
这样,本实施方式中,不需要将写入对象的超级块内的不良块由该不良块所属的Die(裸片)内的其他块所置换,从而能够正常地执行针对该超级块的数据写入及读出动作。由此,即便不良块数增加,也不需要管理大量的置换信息。而且,因也不需要用于置换处理的地址转换处理,所以能够减少读取延迟时间。进而,基本上,因能够构筑与属于各Die的块数相同数量的超级块,所以即便不良块数增加,也能够利用几乎所有的非不良块。
图11表示适用于闪速存储器设备3的写入指令(Write without PhysicalAddress)。
该写入指令是向闪速存储器设备3请求数据的写入的指令。该写入指令也可以如所述那样,包含指令ID、QoS域ID、用户地址、长度等。
指令ID是表示该指令为写入指令的ID(指令码),写入指令中包含写入指令用指令ID。
QoS域ID是能够唯一地识别应写入数据的QoS域的标识符。根据来自某一最终用户的写入请求从主机2发送的写入指令可包含指定与该最终用户对应的QoS域的QoS域ID。命名空间ID也可作为QoS域ID处理。
用户地址是识别数据的逻辑地址(标签),例如相当于LBA、键、文件标识符。
长度表示应写入的写入数据的长度。长度可由LBA数来指定,或者其大小可由字节来指定。
图12表示图11的针对写入指令的响应。
该响应包含用户地址、闪速存储器地址、长度、剩余可写入数据量(distance-to-block-boundary)。
用户地址是图11的写入指令中所含的用户地址。
闪速存储器地址表示根据图11的写入指令而被写入了数据的NAND型闪速存储器5内的物理存储位置的物理地址。
本实施方式中,该物理地址例如由裸片标识符、块地址及偏移(块内偏移)的组合,或者超级块地址与偏移(超级块内的偏移)的组合来指定。
长度表示所写入的写入数据的长度。长度可由LBA数来指定,或者其大小可由字节来指定。
剩余可写入数据量(distance-to-block-boundary)表示可进一步对进行了数据写入的超级块写入的数据量。
图13表示适用于闪速存储器设备3的Trim指令。
该Trim指令包含指令ID、闪速存储器地址、长度、参考计数的减少量(reference-count-to-subtract)。
指令ID是表示该指令为Trim指令的ID(指令码),Trim指令中包含Trim指令用指令ID。
闪速存储器地址表示存储着应无效的数据(应减少参考计数的数据)的最初的物理存储位置。本实施方式中,该闪速存储器地址由裸片标识符、块地址及偏移(块内偏移)的组合,或者超级块地址与偏移(超级块内的偏移)的组合来指定。
长度表示应无效的数据(应减少参考计数的数据)的长度。该长度(数据长)可由字节来指定。
控制器4使用块管理表32来管理表示多个超级块的各自所含的各数据的有效/无效的旗标(比特映射旗标)。在从主机2接收到包含表示存储着应无效的数据的物理存储位置的闪速存储器地址的Trim指令的情况下,控制器4更新块管理表32,将与Trim指令中所含的闪速存储器地址对应的物理存储位置的数据所对应的旗标(比特映射旗标)变更为表示无效的值。
在支持重复数据删除(De-duplication)功能的例子中,块管理表32中,对与多个超级块的各自所含的数据对应的参考计数进行管理。参考计数的减少量表示应减少参考计数的量。
接下来,参考图14说明对具有不良块的超级块写入数据的动作。
此处,为了简化图示,设想某一个超级块SB0包含4个块BLK0(Die#0)、BLK0(Die#1)、BLK0(Die#2)、BLK0(Die#3),其中BLK0(Die#2)为不良块。
控制器4为了避开不良块,而按照块BLK0(Die#0)的页0、块BLK0(Die#1)的页0、块BLK0(Die#3)的页0、块BLK0(Die#0)的页1、块BLK0(Die#1)的页1、块BLK0(Die#3)的页1、…的顺序写入数据。
在页大小为16K字节(16KB)、数据的粒度为4K字节(4KB)的情况下,最初的16K字节数据(D1~D4)被写入到块BLK0(Die#0)的页0。然后,16K字节数据(D5~D8)被写入到块BLK0(Die#1)的页0。对BLK0(Die#2)的写入被跳过,然后16K字节数据(D9~D12)被写入到块BLK0(Die#3)的页0。
图15表示图12的响应中所含的物理地址的构成例。
物理地址如图15的上部所示,包含作为写入目标块被选择的块所属的裸片的裸片标识符、与该所选择的块对应的块地址、及从该所选择的块的开端到写入目标位置为止的偏移。从所选择的块的开端到写入目标位置为止的偏移包含页地址及页内偏移。
或者,如图15的下部所示,物理地址包含与写入目标块所属的超级块对应的块地址(超级块地址)、从超级块的开端到写入目标位置为止的偏移。从超级块的开端到写入目标位置为止的偏移包含裸片标识符、页地址、页内偏移。
图16表示超级块的超级块地址(第1块地址)与该超级块中所含的各块的块地址(第2块地址)的关系。
为了简化说明,设想超级块SB0、SB1、SB2分别包含4个块的情况。
超级块SB0包含块80、块81、块82、及块83。这些块80、块81、块82、及块83各自包含根据超级块SB0的超级块地址(第1块地址)并基于数学规则而规定的块地址(第2块地址)。在块81为不良块的情况下,从主机2将数据写入到选自块80、块82、块83的写入目标块。因此,不良块81的第2块地址(不良块81所属的裸片的裸片标识符)不会被送回到主机2。
超级块SB1包含块84、块85、块86、及块87。这些块84、块85、块86、及块87各自包含根据超级块SB1的超级块地址(第1块地址)并基于数学规则而规定的块地址(第2块地址)。在块86及块87为不良块的情况下,从主机2将数据写入到选自块84、块85的写入目标块。因此,不良块86的第2块地址(不良块86所属的裸片的裸片标识符)及不良块87的第2块地址(不良块87所属的裸片的裸片标识符)不会被送回到主机2。
超级块SB2包含块88、块89、块90、及块91。这些块88、块89、块90、及块91各自包含根据超级块SB2的超级块地址(第1块地址)并基于数学规则而规定的块地址(第2块地址)。在块88为不良块的情况下,从主机2将数据写入到选自块89、块90、及块91的写入目标块。因此,不良块88的第2块地址(不良块88所属的裸片的裸片标识符)不会被送回到主机2。
图17、图18表示将逻辑地址与数据的配对写入到块内的页中的动作。
各块中,各页可包含用于存储用户数据的用户数据区域及用于存储管理数据的冗余区域。页大小为16KB+α。
控制器4将4KB用户数据及与该4KB用户数据对应的逻辑地址(例如LBA)的双方写入到写入目标块BLK。该情况下,如图17所示,各自包含LBA与4KB用户数据的4个数据集合可写入到相同页中。块内偏移可表示集合边界。
或者,如图18所示,4个4KB用户数据被写入到页内的用户数据区域,与这些4个4KB用户数据对应的4个LBA可被写入到该页内的冗余区域。
使用图19,来说明将多个数据部及根据这些数据部算出的纠删码写入到具有不良块的超级块的动作。
为了使用超级块内的多个块来实现RAID的结构,控制器4如图19所示,跨及属于一个超级块中所含的多个块且分别具有相同页地址的多个页,写入多个数据部及根据这些多个数据部算出的1个以上的纠删码。属于多个块且分别具有相同相同页地址的多个页作为超级页参考。
图19的上部表示在超级块SB0中,对超级页写入数据及纠删码。超级页包含BLK0(Die#0)的页0、BLK0(Die#1)的页0、BLK0(Die#2)的页0、BLK0(Die#3)的页0、BLK0(Die#4)的页0、BLK0(Die#5)的页0、BLK0(Die#6)的页0、BLK0(Die#7)的页0。
数据被写入到作为非不良块的BLK0(Die#0)、BLK0(Die#2)、BLK0(Die#3)、BLK0(Die#4)的各页0中。
纠删码的例包含读取所罗门码、奇偶校验等。纠删码被写入到非不良块内的页中。而且,纠删码被视作在各不良块内的页中存储着预先规定的值(例如all“0”的比特序列、或all“1”的比特序列)而算出。
图19的上部所示的例中,例示了2个纠删码被写入到超级块SB0的超级页的情况。2个纠删码被写入到最后的2个非不良块内的页中。图19的上部所示的例中,作为最后的块的BLK0(Die#7)为非不良块,作为从最后算起的第2个块的BLK0(Die#6)为不良块,作为从最后算起的第3个块的BLK0(Die#5)为非不良块,因而2个纠删码被写入到BLK0(Die#5)的页0及BLK0(Die#7)的页0中。
编码处理中,控制器4基于写入到BLK0(Die#0)的数据部、假定写入到作为不良块的BLK0(Die#0)的预先规定的值、写入到BLK0(Die#2)的数据部、写入到BLK0(Die#3)的数据部、写入到BLK0(Die#4)的数据部、及假定写入到BLK0(Die#6)的预先规定的值,来算出2个纠删码。
由此,能够与超级块内的不良块/非不良块的样式(pattern)无关地,容易利用供编码的相同运算而算出纠删码。
而且,控制器4进行使用了纠删码的解码处理,该纠删码被视作在各不良块内的页中存储着预先规定的值。
图19的下部所示的例中,作为构成超级块SB1的最后的块的BLK1(Die#7)为不良块,作为从最后算起的第2个块的BLK1(Die#6)为不良块,作为从最后算起的第3个块的BLK1(Die#5)为非不良块,因而2个纠删码被写入到BLK1(Die#5)的页0、BLK1(Die#6)的页0中。
接下来,使用图20来说明主机2内的闪速存储器转换部2A与闪速存储器设备3内的写入动作控制部21的关系。
主机2侧,闪速存储器转换部2A在进行数据的写入的情况下,将包含识别该数据的Tag(例如LBA)的写入指令发送到闪速存储器设备3。另外,在使用超级块用的API的情况下,闪速存储器转换部2A将指定识别数据的Tag(例如LBA)、与并行单元(Parallel Unit)的块地址的写入指令(Write without Page Address)发送到闪速存储器设备3。因并行单元(Parallel Unit)由一个超级块实现,所以并行单元(Parallel Unit)的块地址是该超级块的超级块地址。
闪速存储器设备3侧包含写入动作控制部21、闪速存储器I/O控制电路13、不良信息管理表33、NAND型闪速存储器裸片。而且,闪速存储器设备3内保存针对每个超级块表示可使用或不可使用的至少1比特的信息的不良信息由不良信息管理表33所管理。
在从主机2侧接收到包含用于识别应写入的数据的信息即Tag(例如LBA)的写入请求的情况下,写入动作控制部21参考不良信息管理表33的不良信息而从一个超级块中所含的非不良块中选择出一个块来作为写入目标块,并决定应写入数据的所选择出的块内的写入目标位置(写入目标页、该页内的偏移)。
另外,在从主机2接收到指定并行单元的块地址(超级块地址)的写入指令的情况下,写入动作控制部21从具有该经指定的块地址(超级块地址)的超级块中所含的非不良块中选择出写入目标块,并决定应写入数据的所选择出的块内的写入目标位置(写入目标页、该页内的偏移)。
然后,写入动作控制部21将指定写入目标块所属的裸片的裸片标识符(Die ID)、写入目标块的块地址(Raw Block,原始块)、写入目标页(Raw Page,原始页)、写入目标页内的偏移(Offset)的写入指示发送到闪速存储器I/O控制电路13。
而且,写入动作控制部21将表示写入目标块及写入目标位置的双方的闪速存储器地址(Die ID、Raw Block、Raw Page、Offset)、及Tag(例如LBA)通知给主机2。
接收到写入指示的闪速存储器I/O控制电路13基于写入指示对写入目标位置写入数据。
主机2侧,闪速存储器转换部2A在从闪速存储器设备3接收到闪速存储器地址(DieID、Raw Block、Raw Page、Offset)及Tag(例如LBA)时,更新由主机2管理的LUT。此时,使闪速存储器地址(Die ID、Raw Block、Raw Page、Offset)与Tag(例如LBA)建立对应关系。
闪速存储器转换部2A在进行读取请求的情况下,将指定闪速存储器地址(Die ID、Raw Block、Raw Page、Offset)的读取请求发送到闪速存储器设备3。
闪速存储器设备3侧,在从主机2接收指定闪速存储器地址(Die ID、Raw Block、Raw Page、Offset)的读取请求的情况下,闪速存储器I/O控制电路13基于闪速存储器地址来读取数据。读取对象的块由Die ID与Raw Block特定。读取对象的页由Raw Page特定。读取对象的页内的读取对象位置由Offset特定。
接下来,使用图21对由主机2与闪速存储器设备3执行的写入动作及读取动作进行说明。
<写入动作>
(1)写入指令的接收
闪速存储器设备3中,从主机2接收到的包含LBA的写入指令及数据被暂时地存储在闪速存储器设备3内的写入缓冲区31。
(2)不良信息的参考
写入动作控制部21参考由不良信息管理表33管理的不良信息,从写入对象的超级块中所含的非不良块中选择出一个块来作为写入目标块,并决定写入目标块内的写入目标位置。
(3)写入指示
写入动作控制部21在决定写入目标块与写入目标块内的写入目标位置时,将指定表示写入目标块与写入目标块的双方的闪速存储器地址(Raw地址)的写入指示经由写入缓冲区31发送到闪速存储器I/O控制电路13。此处,Raw地址中包含DieID、Raw Block、RawPage、Offset。接收到Raw地址的闪速存储器I/O控制电路13基于Raw地址,对已作为写入目标块所选择的块内的写入目标位置写入写入数据。
(4)对主机的写入目标的通知
写入动作控制部21将Raw地址与LBA通知给主机2。由此,主机2能够更新LUT并将该Raw地址映射到该LBA。
<读取动作>
(11)LBA的通知
读取解析器2B在接收到包含LBA的读取指令时,将LBA通知给闪速存储器转换部2A。
(12)Raw地址的获取
闪速存储器转换部2A在从读取解析器2B接收到LBA时,参考LUT,获取与所接收到的LBA对应的Raw地址,并将所获取的Raw地址送回到读取解析器2B。由此,读取解析器2B能够获取Raw地址,且能够将包含LBA的读取指令转换为包含Raw地址的读取指令。
(13)读取指示
读取解析器2B将包含Raw地址的读取指令发送到闪速存储器设备3。闪速存储器设备3中,接收到包含Raw地址的读取指令的闪速存储器I/O控制电路13基于Raw地址来读取数据,并将读取数据发送到读取缓冲区30。读取缓冲区30中暂时地存储着读取数据。
(14)读取数据向主机的发送
读取缓冲区30中暂时存储的读取数据被发送到主机2。
图22的序列图表示由主机2与闪速存储器设备3执行的写入动作处理的顺序。
主机2将包含QoS域ID、用户地址(逻辑地址)、写入数据、长度的写入指令(Writewithout Physical Address)发送到闪速存储器设备3。在闪速存储器设备3的控制器4接收到该写入指令时,控制器4从一个超级块(写入对象的超级块)中所含的非不良块中选择出一个块来作为写入目标块,并决定所选择的块内的写入目标位置(步骤S11)。步骤S11中,该写入对象的超级块可以是属于由QoS域ID特定出的QoS域的超级块。在多个超级块属于该QoS域的情况下,这些多个超级块中的一个被选择作为写入对象的超级块。
控制器4将从主机2接收到的写入数据写入到写入目标位置(步骤S12)。步骤S12中,控制器4将用户地址(例如LBA)与写入数据的双方及写入目标块的写入也写入到目标位置。
控制器4更新块管理表32,将与所写入的数据对应的比特映射旗标(即,与被写入了该数据的物理存储位置的物理地址对应的比特映射旗标)从0变更为1(步骤S13)。例如,如图23所示,设想开始LBA为LBAx的16K字节更新数据被写入到与块BLK11的页1的偏移+0~+3对应的物理存储位置的情况。该情况下,如图24所示,块BLK11用的块管理表中,与页1的偏移+0~+3对应的比特映射旗标分别从0变更为1。
控制器4将针对该写入指令的响应送回到主机2(步骤S14)。响应中包含用户地址、物理地址(闪速存储器地址)、长度。例如,如图23所示,一旦将开始LBA为LBAx的16K字节更新数据写入到与块BLK11的页1的偏移+0~+3对应的物理存储位置,那么包含LBAx、闪速存储器地址(块BLK11所属的裸片的裸片标识符、块BLK11的块地址、页地址(=1)、页内偏移(=+0))、长度(=4)的响应从控制器4发送到主机2。闪速存储器地址由块地址、页地址、页内偏移的组合来表现,但以下的说明中,为了简化闪速存储器地址的说明,而省略了闪速存储器地址内的裸片标识符的说明。
在主机2接收到该响应时,主机2更新由主机2管理的LUT,并将闪速存储器地址(物理地址)映射到与所写入的写入数据对应的各用户地址中(步骤S21)。如图25所示,LUT包含与多个用户地址(逻辑地址)分别对应的多个条目。与某一用户地址(例如某一LBA)对应的条目中存储着物理地址,该物理地址表示存储着与该LBA对应的数据的NAND型闪速存储器5内的位置(物理存储位置)。如图23所示,一旦将开始LBA为LBAx的16K字节更新数据写入到与块BLK11的页1的偏移+0~+3对应的物理存储位置,那么如图25所示,LUT得到更新,与LBAx对应的条目中存储着BLK11、页1、偏移+0,与LBAx+1对应的条目中存储着BLK11、页1、偏移+1,与LBAx+2对应的条目中存储着BLK11、页1、偏移+2,与LBAx+3对应的条目中存储着BLK11、页1、偏移+3。
然后,主机2将Trim指令发送到闪速存储器设备3,该Trim指令用于利用所述更新数据的写入而使已不再需要的以前的数据无效。如图23所示,在以前的数据被存储在与块BLK0的页0的偏移+0、偏移+1、偏移+2、偏移+3对应的位置的情况下,如图26所示,将指定闪速存储器地址(块地址(=BLK0)、页地址(=页0)、页内偏移(=+0))、长度(=4)的Trim指令从主机2发送到闪速存储器设备3。闪速存储器设备3的控制器4根据该Trim指令来更新块管理表32(步骤S15)。步骤S15中,如图26所示,块BLK0用的块管理表中,与页0的偏移+0~+3对应的比特映射旗标分别从1变更为0。
图27表示适用于闪速存储器设备3的读取指令(Read with Physical Address)。
读取指令是向闪速存储器设备3请求数据的读出的指令。该读取指令包含指令ID、闪速存储器地址、长度、传送目标指针。
指令ID是表示该指令为读取指令的ID(指令码),读取指令中包含读取指令用指令ID。
闪速存储器地址表示应读出数据的最初的物理存储位置的闪速存储器地址(物理地址)。长度表示应读取的数据的长度。
传送目标指针表示应传送所读出的数据的主机2内的存储器上的位置。
一个读取指令能够指定多个闪速存储器地址(物理地址)与长度的组。
此处,读取指令中可包含2组以上的闪速存储器地址及长度的组。设下如下情况,即,在包含2组以上的闪速存储器地址及长度的组的情况下,因进行了数据的写入的超级块中存在不良块,所以写入数据被写入到隔着不良块的2个块中。
图28表示读取动作。
此处,设想从主机2接收到指定块地址(=BLK2)、页地址(=页1)、页内偏移(=+1)、长度(=3)的读取指令情况。闪速存储器设备3的控制器4基于块地址(=BLK2)、页地址(=页1)、页内偏移(=+1)、长度(=3),从BLK2读取数据d1~d3。该情况下,控制器4从BLK2的页1读取相当于1页大小的数据,从该读取数据中抽选出数据d1~数据d3。接下来,控制器4将数据d1~数据d3传送到由传送目标指针指定的主机存储器上。
图29的序列图表示由主机2与闪速存储器设备3执行的读取处理的顺序。
主机2参考由主机2管理的LUT,将来自用户应用的读取请求中所含的用户地址(逻辑地址)转换为闪速存储器地址。然后,主机2将指定该闪速存储器地址、长度的读取指令发送到闪速存储器设备3。
在闪速存储器设备3的控制器4从主机2接收到读取指令时,控制器4基于由该读取指令指定的闪速存储器地址,来决定读取对象的块、读取对象的页、读取对象的页内位置(步骤S31)。控制器4从NAND型闪速存储器5读取由闪速存储器地址、长度规定的数据(步骤S32),并将该读取数据发送到主机2。
图30表示适用于闪速存储器设备3的垃圾回收(GC)控制指令。
GC控制指令可包含指令ID、策略(GC的方法)、QoS域ID、最大数据数(maximum-number-of-data)等。
指令ID是表示该指令为GC控制指令的ID(指令码),GC控制指令中包含GC控制指令用指令ID。
策略(GC的方法)是指定用于选择GC候选块(GC源块)的条件(GC策略)的参数。闪速存储器设备3的控制器4支持多个GC策略。
由控制器4支持的GC策略中可包含优先选择有效数据量少的块来作为GC候选块(GC源块)这样的策略(Greedy)。
而且,由控制器4支持的GC策略中,可包含如下策略,即,比起收集着具有高更新频率的数据(热数据(hot data))的块,更优先选择收集着具有低更新频率的数据(冷数据(cold data))的块作为GC候选块(GC源块)。
进而,GC策略可指定GC开始条件。GC开始条件例如可表示剩余自由块的个数。
控制器4可利用有效块表(active block list)来管理包含有效数据的超级块群,在执行GC的情况下,基于由GC控制指令指定的GC策略,从由有效块表管理的超级块群中选择出一个以上的GC候选超级块(GC源块)。
QoS域ID是指定应实施GC的QoS域的参数。控制器4从属于由QoS域ID指定的QoS域的超级块群,即与该QoS域对应的有效块表中,选择出一个以上的GC候选超级块(GC源块)。
最大数据数表示执行GC时被拷贝的数据量的上限值。即,超过最大数据数便不执行GC动作。
控制器4在与QoS域对应的剩余自由块数为由策略指定的阈值以下的情况下,可开始GC。
图31表示适用于闪速存储器设备3的强制GC指令(Forced Garbage-Collection)。
强制GC指令可包含指令ID、QoS域ID、超级块地址等。在接收到该强制GC指令时,控制器立即执行GC。
图32表示从闪速存储器设备3发送到主机2的地址更新通知(Address Updatenotification(Device Initiated))。
地址更新通知用于在闪速存储器设备3中,将通过执行GC动作而变更的数据的存储位置通知给主机2。可包含用户地址、旧闪速存储器地址、新闪速存储器地址、参考计数、长度等。
用户地址是识别被拷贝的数据的地址。
旧闪速存储器地址表示存储着被拷贝的数据的旧物理存储位置的物理地址(旧物理地址)。
新闪速存储器地址表示存储着被拷贝的数据的新物理存储位置的物理地址(新物理地址)。
参考计数表示参考被拷贝的数据的用户地址数。
长度表示被拷贝的数据的长度。
图33的序列图表示由闪速存储器设备3执行的GC动作的顺序。
闪速存储器设备3的控制器4从属于由主机2指定的QoS域的超级块群中,选择出有效数据与无效数据混合存在的一个以上的GC源块(GC源超级块)(步骤S41)。接下来,控制器4从属于该QoS域的自由块群(自由超级块群)中选择出一个以上的自由块(自由超级块),并将所选择的自由块作为GC目的块(GC目的超级块)分配(步骤S42)。
控制器4将GC源块(GC源超级块)内的所有有效数据拷贝到GC目的块(GC目的超级块)(步骤S43)。步骤S43中,控制器4不仅将GC源块(GC源超级块)内的有效数据,还将该有效数据及与该有效数据对应的用户地址(逻辑地址)的双方从GC源块(GC源超级块)拷贝到GC目的块(GC目的超级块)。由此,能够在GC目的块(GC目的超级块)内保存数据与用户地址(逻辑地址)的配对。
然后,控制器4针对每个被拷贝的有效数据,使用地址更新通知将用户地址(逻辑地址)、旧闪速存储器地址、新闪速存储器地址、长度通知给主机2(步骤S44)。
在主机2接收到该地址更新通知时,主机2更新由主机2管理的LUT,将新闪速存储器地址映射到与被拷贝的各有效数据对应的用户地址(逻辑地址)(步骤S51)。
图34表示为了GC而执行的数据拷贝动作的例。
图34中,设想如下情况,即,存储在与GC源块(此处为块BLK50)的页1的偏移+0对应的位置的有效数据(LBA=10)被拷贝到与GC目的块(此处为块BLK100)的页0的偏移+0对应的位置,存储在与GC源块(此处为块BLK50)的页2的偏移+2对应的位置的有效数据(LBA=20)被拷贝到与GC目的块(此处为块BLK100)的页0的偏移+1对应的位置。该情况下,控制器4将{LBA10、旧闪速存储器地址(BLK50、页1、偏移(=+0))、新闪速存储器地址(LBA100、页0、偏移(=+0))、长度(=1)}、{LBA20、旧闪速存储器地址(BLK50、页2、偏移(=+2))、新闪速存储器地址(LBA100、页0、偏移(=+1))、长度(=1)}通知给主机2(地址更新通知)。
图35表示基于图34的数据拷贝动作的结果更新的主机2的LUT的内容。
该LUT中,与LBA10对应的闪速存储器地址(块地址、页地址及偏移(页内偏移))从BLK50、页1、偏移(=+0)更新为BLK100、页0、偏移(=+0)。同样地,与LBA20对应的闪速存储器地址(块地址、页地址、及偏移(页内偏移))从BLK50、页2、偏移(=+2)更新为BLK100、页0、偏移(=+1)。
在更新了LUT后,主机2将指定BLK50、页1、偏移(=+0)的Trim指令发送到闪速存储器设备3,可使存储在与BLK50的页1的偏移(=+0)对应的位置的数据无效。进而,主机2将指定BLK50、页2、偏移(=+2)的Trim指令发送到闪速存储器设备3,可使存储在与BLK50的页2的偏移(=+2)对应的位置的数据无效。
图36表示针对写入指令的响应与GC用回调处理(地址更新通知)的关系。
存在如下情况,即,控制器4在拷贝与某一用户地址(逻辑地址)对应的有效数据的期间,有时会从主机2接收指定该用户地址的写入指令。
图36中,设想如下情况,即,在图34的数据拷贝动作(与LBA10对应的数据拷贝动作)的执行中,从主机2接收到指定LBA10的写入指令。
控制器4将从主机2接收到的写入数据写入到写入目标块(此处写入到与BLK3的页0的偏移+0对应的位置)。然后,控制器4将{LBA10、BLK3、页0、偏移(=+0)}作为针对写入指令的响应送回到主机2。
主机2更新LUT,将与LBA10对应的块地址、页地址、偏移(页内偏移)从BLK50、页1、偏移(+0)变更为BLK3、页0、偏移(+0)。
然后,如果LBA10的新闪速存储器地址从控制器4通知给主机2,那么表示存储着与LBA10对应的最新数据的位置的块地址、页地址及偏移(BLK3、页0、偏移(+0))有可能被错误变更为与LBA10对应的新闪速存储器地址(此处为BLK100、页0、偏移(=+0))。
本实施方式中,控制器4不仅能够将LBA10、新闪速存储器地址(BLK100、页0、偏移(=+0))、长度=1,还能够将旧闪速存储器地址(BLK50、页1、偏移(=+0))通知给主机2(地址更新通知)。主机2在旧闪速存储器地址(BLK50、页1、偏移(=+0))与利用LUT当前映射到LBA10的块地址、页地址、偏移不一致的情况下,不更新LUT。由此,能够防止表示存储着与LBA10对应的最新数据的位置的块地址、页地址及偏移(BLK3、页0、偏移(+0))被错误变更为与LBA10对应的新闪速存储器地址(此处为BLK100、页0、偏移(=+0))。
图37的流程图表示由主机2执行的LUT更新处理的顺序。
主机2如果接收到地址更新通知(步骤S101的是),那么将旧闪速存储器地址与LUT上的当前的物理地址进行比较(步骤S102)。如果比较的结果为,旧闪速存储器地址与当前的物理地址一致(步骤S103的是),那么主机2将与用户地址对应的当前的物理地址更新为新闪速存储器地址(步骤S104)。接下来,主机2将Trim指令发送到闪速存储器设备,使存储在与旧闪速存储器地址对应的位置的数据无效(步骤S105)。
另一方面,如果旧闪速存储器地址与当前的物理地址不一致(步骤S106的否),那么主机2将维持与用户地址对应的当前的物理地址(步骤S106)。由此,能够防止表示存储着由地址更新通知所通知的最新数据的位置的块地址、页地址及偏移被错误地变更为新闪速存储器地址。
图38中,例示了块BLK1用的块管理表。
块BLK1用的块管理表包含与块BLK1的页地址及页内偏移的各组对应的多个条目。
例如,在与页0、偏移+0对应的条目中存储着与4KB数据对应的参考计数,该4KB数据存储在与块BLK1的页0、偏移+0对应的位置。同样地,在与页0、偏移+1对应的条目中存储着与4KB数据对应的参考计数,该4KB数据存储在与块BLK1的页0、偏移+1对应的位置。
参考计数为1以上的数据是有效数据,参考计数为0的数据是无效数据。
闪速存储器设备3基于从主机2接收到的重复指令/Ttim指令,使参考计数递增/递减。
图39表示为了管理参考计数而适用于闪速存储器设备3的重复指令。
重复指令是向闪速存储器设备3请求使存储在某一物理地址(块地址、页地址、页内偏移)的数据的参考计数增加的指令。
该重复指令可包含指令ID、闪速存储器地址、长度等。
指令ID是表示该指令为重复指令的ID(指令码),重复指令中包含重复指令用指令ID。
闪速存储器地址表示存储着应增加参考计数的数据的最初的物理存储位置。
长度表示应增加参考计数的数据的长度。
控制器4在从主机2接收到包含表示存储着应增加参考计数的数据的物理存储位置的块地址、页地址、页内偏移的重复指令的情况下,更新块管理表32,使与重复指令中所含的块编号、页编号、页内偏移对应的物理存储位置的数据所对应的参考计数增加。
图40的序列图表示参考计数递增/递减处理。
在闪速存储器设备3的控制器4从主机2接收到重复指令时,控制器4使与由重复指令指定的闪速存储器地址(块地址、页地址、偏移(页内偏移))对应的参考计数,即,与由该块地址、页地址、偏移指定的NAND型闪速存储器5内的物理存储位置中存储的数据对应的参考计数,例如递增1(步骤S61)。该情况下,控制器4对与具有由重复指令指定的块地址的块对应的块管理表32进行更新。该块管理表32的更新中,所与由重复指令指定的物理存储位置对应的块管理表32内的条目中所存储的参考计数例如递增1。在由重复指令指定的长度为2以上的情况下,不仅使与由重复指令指定的页地址及偏移对应的参考计数,还使与该页地址及偏移的后续的一些页地址及偏移对应的参考计数也例如递增1。
在闪速存储器设备3的控制器4从主机2接收到Trim指令时,控制器4使与由Trim指令指定的闪速存储器地址(块地址、页地址、偏移(页内偏移))对应的参考计数,即,使与由该块地址、页地址、偏移指定的NAND型闪速存储器5内的物理存储位置中所存储的数据对应的参考计数,例如递减1(步骤S62)。该情况下,控制器4对与具有由Trim指令指定的块地址的块对应的块管理表32进行更新。该块管理表32的更新中,使与由Trim指令指定的页地址及偏移对应的块管理表32内的条目中所存储的参考计数例如递减1。在由Trim指令指定的长度为2以上的情况下,不仅使与由Trim指令指定的页地址及偏移对应的参考计数,还使与该偏移的后续的一些页地址及偏移对应的参考计数也例如递减1。
GC中,控制器4参考与GC源块对应的块管理表,以大小为4KB的数据单位来判定GC源块内的数据是有效数据还是无效数据。控制器4判定参考计数为0的数据是无效数据,判定参考计数为1以上的数据是有效数据。然后,控制器4将有效数据(参考计数为1以上的数据)及与该有效数据对应的逻辑地址从GC源块(GC源超级块)拷贝到GC目的块(GC目的超级块)。
更详细来说,控制器4在执行NAND型闪速存储器5的垃圾回收的情况下,选择用于垃圾回收的GC源块(GC源超级块)及GC目的块(GC目的超级块)。控制器4将存储在GC源块(GC源超级块)内的参考计数为1以上的第1数据(有效数据)与第1数据的逻辑地址的双方拷贝到GC目的块(GC目的超级块)。然后,控制器4将第1数据的用户地址(逻辑地址)、第1数据的拷贝目标物理存储位置(新物理存储位置)的物理地址、及第1数据的拷贝源物理存储位置(旧物理存储位置)的物理地址通知给主机2。
图41的流程图表示由闪速存储器设备3执行的超级块分配处理的顺序。
当接收到来自主机2的超级块分配请求(并行单元分配请求)时(步骤S71的是),控制器4选择包含由该分配请求指定的并行数以上的非不良块的超级块(步骤S72)。
接下来,控制器4将所选择的超级块分配到主机2(步骤S73)。
然后,当接收到来自主机2的写入请求时(步骤S74的是),控制器4将写入数据写入到该经分配的超级块内的非不良块(步骤S75)。然后,控制器4将响应送回到主机(步骤S76)。
接下来,使用图42对以超级块内的所有非不良块从该超级块的开端起连续逻辑地配置的方式转换访问对象块的地址的地址转换动作进行说明。
图42中,超级块SB5包含BLK5(Die#0)、BLK5(Die#1)、BLK5(Die#2)、BLK5(Die#3)、BLK5(Die#4)、BLK5(Die#5)、BLK5(Die#6)、BLK5(Die#7),其中,示出BLK5(Die#2)、BLK5(Die#5)为不良块。而且,BLK5(Die#0)、BLK5(Die#1)、BLK5(Die#2)、BLK5(Die#3)、BLK5(Die#4)、BLK5(Die#5)、BLK5(Die#6)、BLK5(Die#7)分别由块编号(块地址)0、1、2、3、4、5、6、7而从外部指定。
地址转换以如下方式执行,即,将超级块SB5内的6个非不良块(BLK5(Die#0)、BLK5(Die#1)、BLK5(Die#3)、BLK5(Die#4)、BLK5(Die#6)、BLK5(Die#7))作为块编号0~6的块进行处理。
当执行地址转换动作时,BLK5(Die#0)、BLK5(Die#1)、BLK5(Die#2)、BLK5(Die#3)、BLK5(Die#4)的各自的块编号分别被转换为1→1、2→3、3→4、4→6、5→7。利用该地址转换动作,能够使得从超级块SB5的开端开始的连续的偏移地址内不包含不良块的块编号。由此,利用该地址转换动作,块SB5内的所有非不良块从该超级块SB5的开端起连续逻辑地配置,因而能够以使超级块SB5成为犹如不包含不良块的小尺寸的超级块(仅由6个非不良块构成的超级块)的方式进行处理。其结果,即便为长数据,也能够使该数据的物理存储位置仅由表示其开始物理存储位置的一个物理地址与一个长度的组合来表现。
接下来,使用图43对供地址转换动作所使用的不良信息管理表33与地址转换的例进行说明。另外,图43中,块编号由16进制表示。
不良信息管理表33表示从开端(从块编号较小的一端)看到的不良块数的累计。图43中示出不良信息管理表33的块编号为4、9的块是不良块。该情况下,不良信息管理表33中,在与块编号0对应的位置、与块编号1对应的位置、与块编号2对应的位置、与块编号3对应的位置存储“0”,在与块编号4对应的位置、与块编号5对应的位置、与块编号6对应的位置、与块编号7对应的位置、与块编号8对应的位置存储“1”,在与块编号9对应的位置、与块编号A对应的位置、与块编号B对应的位置、与块编号C对应的位置、与块编号D对应的位置存储“1”。即,表示与所存储的数值发生了变化的部分对应的块编号的块是不良块。
另外,在与不良信息管理表33的块编号E及F对应的位置,存储着不会有的数值。如果每一块的不良信息的比特数为2比特,那么在与块编号E及F对应的位置存储“3”。
而且,如果执行地址转换动作,那么访问对象的块的块编号被转换为该块的块编号与不良块数的累计之和。例如,关于块编号0~3,不良块的累计为“0”,因而块编号不变。
另一方面,例如,在访问对象的块的块编号为4的情况下,该块编号为+1,被转换为块编号“5”。因此,在写入对象的块的块编号为4的情况下,数据实际被写入到块编号“5”的块中。控制器4将块编号4作为数据写入目标块的物理地址通知给主机2。在接收到将块编号4指定为读取对象块的物理地址的读取请求的情况下,该块编号4被转换为块编号“5”,因而控制器4从块编号“5”的块中读取数据。
同样地,在访问对象的块的块编号为5的情况下,该块编号为+1,从而被转换为块编号“6”。因此,在写入对象的块的块编号为5的情况下,数据实际被写入到块编号“6”的块中。控制器4将块编号5作为数据写入目标块的物理地址通知给主机2。在接收到将块编号5指定为读取对象块的物理地址的读取请求的情况下,该块编号5被转换为块编号“6”,因而控制器4从块编号“6”的块中读取数据。
图44表示主机2内的闪速存储器转换部2A与闪速存储器设备3内的不良块转换部24的关系。
主机2侧,闪速存储器转换部2A在进行数据的写入的情况下,将包含识别该数据的Tag(例如LBA)的写入指令发送到闪速存储器设备3。另外,在使用超级块用的API的情况下,闪速存储器转换部2A将指定识别数据的Tag(例如LBA)、与并行单元(ParallelUnit)的块地址的写入指令(Write without Page Address)发送到闪速存储器设备3。因并行单元(Parallel Unit)由一个超级块实现,所以并行单元(Parallel Unit)的块地址是该超级块的超级块地址。
闪速存储器设备3侧包含不良块转换部24、闪速存储器I/O控制电路13、不良信息管理表33、NAND型闪速存储器裸片。而且,闪速存储器设备3内保存针对每个超级块表示可使用或不可使用的至少2比特的信息的不良信息由不良信息管理表33所管理。
在从主机2侧接收到包含作为用于识别应写入的数据的信息即Tag(例如LBA)的写入请求的情况下,不良块转换部24参考不良信息,执行地址转换,该地址转换是以写入对象的超级块中所含的所有非不良块从写入对象的超级块的开端起连续逻辑地配置的方式转换访问对象块的地址,由此选择写入对象的超级块内的非不良块来作为写入目标块,并决定所选择的块内的写入目标位置(写入目标页、该页内的偏移)。
另外,在从主机2接收到指定并行单元的块地址(超级块地址)的写入指令的情况下,不良块转换部24参考不良信息,选择具有该指定的块地址(超级块地址)的超级块来作为写入对象的超级块。
然后,不良块转换部24将指定写入目标块所属的裸片的裸片标识符(Die ID)、写入目标块的块地址(Raw Block)、写入目标页(Raw Page)、写入目标页内的偏移(Offset)的写入指示发送到闪速存储器I/O控制电路13。
而且,不良块转换部24将表示地址转换前的访问对象块及写入目标位置的双方的物理地址、及Tag(例如LBA)通知给主机2。该物理地址可由表示写入目标的超级块的并行单元(Parallel Unit)、及该超级块内的偏移(Offset)来表示。表示写入目标的超级块的并行单元(Parallel Unit)是写入目标的超级块的超级块地址。
接收到写入指示的闪速存储器I/O控制电路13基于写入指示,对写入目标位置写入数据。
主机2侧,闪速存储器转换部2A在接收到物理地址(Parallel Unit、Offset)、及Tag(例如LBA)时,更新由主机2管理的LUT,将所接收到的物理地址映射到所接收的Tag(例如LBA)中。
闪速存储器转换部2A在进行读取请求的情况下,将指定物理地址(ParallelUnit、Offset)的读取请求发送到闪速存储器设备3。
闪速存储器设备3侧,在从主机2接收到指定物理地址(Parallel Unit、Offset)的读取请求的情况下,不良块转换部24执行所述的地址转换,将物理地址(Parallel Unit、Offset)转换为裸片标识符(Die ID)、块地址(Raw Block)、页地址(Raw Page)、页内的偏移(Offset)。然后,不良块转换部24将指定裸片标识符(Die ID)、块地址(Raw Block)、页地址(Raw Page)、页内的偏移(Offset)的写入指示发送到闪速存储器I/O控制电路13。闪速存储器I/O控制电路13基于裸片标识符(Die ID)、块地址(Raw Block)、页地址(Raw Page)、页内的偏移(Offset)来读取数据。
图45表示主机2(计算机系统)的构成例。
该主机2(计算机系统)包含处理器(CPU)101、主存储器102、BIOS-ROM(BasicInput Output System-Read Only Memory,基本输入输出系统-只读存储器)103、网络控制器105、周边接口控制器106、控制器107、及嵌入式控制器(EC,embedded controller)108等。
处理器101是以对该计算机系统的各组件的动作进行控制的方式构成的CPU。该处理器101执行从多个闪速存储器设备3中的任一个装载到主存储器102的各种程序。主存储器102由DRAM这样的随机访问存储器构成。由处理器101执行的程序包含应用软件层41、操作系统(OS)42、文件系统43、驱动器44等。此处,文件系统43中包含闪速存储管理器45。另外,该闪速存储管理器45也可不包含于文件系统43中而包含于驱动器44中。
而且,处理器101还执行作为非易失性存储器的BIOS-ROM103中存储的基本输入输出系统(BIOS)。BIOS是用于硬件控制的系统程序。
网络控制器105是如有线LAN控制器、无线LAN控制器这样的通信设备。周边接口控制器106构成为执行与USB设备这样的周边设备的通信。
控制器107构成为执行与分别连接于多个连接器107A的设备的通信。多个闪速存储器设备3可分别连接于多个连接器107A。控制器107是SAS expander、PCIe Switch、PCIeexpander或RAID控制器等。
EC108作为以执行计算机系统的电力管理的方式构成的系统控制器发挥功能。EC108根据用户对电源开关的操作将计算机系统电源接通及电源断开。EC108作为如单芯片微控制器这样的处理电路实现。
闪速存储管理器45是作为所述闪速存储器转换部2A发挥功能的程序模块。闪速存储管理器45具有对各用户地址(逻辑地址)与各闪速存储器设备3的物理地址之间的映射进行管理的所述LUT。在使用LBA作为用户地址(逻辑地址)的情况下,闪速存储管理器45可设置于驱动器44内。
闪速存储管理器45将指定用于识别应写入的数据(写入数据)的用户地址(逻辑地址)与该写入数据的长度的写入指令发送到闪速存储器设备3。闪速存储管理器45从闪速存储器设备3接收物理地址、及所述用户地址(逻辑地址),更新LUT并将该物理地址映射到该用户地址(逻辑地址),该物理地址表示已由闪速存储器设备3从除不良块以外的块中选择出的写入目标块及写入目标块内的写入目标位置的双方。要接收的物理地址,详细而言表示写入目标块及已写入了该写入数据的写入目标块内的物理存储位置的双方,该写入目标块是作为用于写入数据的写入目标块而由闪速存储器设备3从写入对象的一个并行单元中所含的不良块以外的块中选择出。
而且,闪速存储管理器45参考LUT,获取映射到与读取对象的数据对应的用户地址(逻辑地址)的物理地址,将指定该物理地址的读取指令发送到闪速存储器设备3。
图46表示内置闪速存储器设备3的主机(计算机系统)2的构成例。
该计算机系统具备能够收容在支架的薄箱形壳体201。多个闪速存储器设备3可配置于壳体201内。该情况下,各闪速存储器设备3能够拆卸地插入到设置于壳体201的前表面201A的插槽中。
系统板(母板)202配置于壳体201内。系统板(母板)202上,安装着包含CPU101、存储器102、网络控制器105、控制器107的各种电子零件。这些电子零件作为主机2发挥功能。
图47的流程图表示由主机(计算机系统)2执行的写入动作的顺序。
主机2的处理器101通过执行存储在主存储器102的计算机程序(此处为闪速存储管理器45等)而执行以下的顺序。
即,处理器101判定是否需要发送写入指令(步骤S201),如果需要发送写入指令(步骤S201的是),那么将指定用户地址、闪速存储器地址、长度的写入指令发送到闪速存储器设备3(步骤S202)。
然后,处理器101一旦接收到来自闪速存储器设备3的写入动作完成的响应(包含用户地址、闪速存储器地址、长度)(步骤S203的是),便更新LUT(步骤S204)。然后,处理器101将指定与旧数据对应的物理地址的Trim指令发送到闪速存储器设备3,将所述旧数据应无效这一情况(或应使表示参考旧数据的逻辑地址数的参考计数减少这一情况)指示给闪速存储器设备3(步骤S205)。
图48的流程图表示由主机2执行的读取动作的顺序。
处理器101判定是否需要发送读取指令(步骤S301),如果需要发送读取指令(步骤S301的是),那么将指定闪速存储器地址、长度的读取指令发送到闪速存储器设备3(步骤S302)。
然后,处理器101判定是否接收到读取数据(步骤S303),如果接收到读取数据(步骤S303的是),那么动作完成。
图49的流程图表示由主机2执行的参考计数递增/递减处理的顺序。
处理器101判定是否需要发送用于增加旧数据的参考数的重复指令(步骤S401),如果需要发送重复指令(步骤S401的是),那么将重复指令发送到闪速存储器设备3(步骤S402)。
而且,处理器101判定是否需要发送用于减少旧数据的参考数的Trim指令(步骤S403),如果需要发送Trim指令(步骤S403的是),那么将Trim指令发送到闪速存储器设备3(步骤S404)。
如以上说明,根据本实施方式,无需将写入对象的并行单元(超级块)内的不良块由该不良块所属的裸片内的其他块进行置换,能够正常地执行针对该并行单元(超级块)的数据写入及读出动作。由此,即便不良块数增加,也无需管理大量的置换信息。而且,也不需要用于置换处理的地址转换处理,因而能够减少读取延迟时间。进而,基本上,能够构筑与属于各裸片的块数相同数量的并行单元(超级块),因而即便不良块数增加,也能够利用几乎所有的非不良块。因此,能够减小因不良块数的增加所造成的影响。
而且,闪速存储器设备3利用如下构成,即,决定写入目标块及该写入目标块内的写入目标位置,且将表示写入目标块与写入目标位置的双方的物理地址送回到主机2,而能够实现高阶(主机2)的应用层地址转换表与现有型SSD的LUT层地址转换表的结合。
另外,本实施方式中,例示了NAND型闪速存储器作为非易失性存储器。然而,本实施方式的功能也可适用于例如MRAM(Magnetoresistive Random Access Memory,磁阻式随机访问存储器)、PRAM(Phase change Random Access Memory,相变随机访问存储器)、ReRAM(Resistive Random Access Memory,可变电阻式随机访问存储器)或者FeRAM(Ferroelectric Random Access Memory,铁电随机访问存储器)这样的其他各种非易失性存储器。
已对本发明的几个实施方式进行了说明,但这些实施方式是作为示例而提示,并不意图限定发明的范围。这些新颖的实施方式能够由其他各种形态来实施,在不脱离发明的主旨的范围内能够进行各种省略、置换、变更。这些实施方式或其变形包含在发明的范围或主旨中,并且包含在权利要求书所记载的发明及其均等的范围内。
[符号的说明]
2 主机
3 闪速存储器设备
4 控制器
5 NAND型闪速存储器
21 写入动作控制部
22 读取动作控制部
23 GC动作控制部

Claims (14)

1.一种存储器系统,能够与主机连接,且包括:
多个非易失性存储器裸片,各自包含多个块;及
控制器,构成为与所述多个非易失性存储器裸片电连接,且对多个并行单元进行管理,所述多个并行单元各自包含属于不同的非易失性存储器裸片的各块,
所述多个并行单元各自具有固有的第1块地址,各非易失性存储器裸片内的多个块各自具有固有的第2块地址,应包含于各并行单元的块各自的第2块地址根据各并行单元的第1块地址并基于数学规则来规定,
所述控制器构成为:
对不良信息进行管理,所述不良信息中保存针对各并行单元内的每个块表示可使用或不可使用的至少1比特的信息,
在从所述主机接收到指定用于识别应写入的第1数据的第3地址的写入请求的情况下,参考所述不良信息从一个并行单元中所含的非不良块中选择出一个块来作为写入目标块,决定所述已选择的块内的写入目标位置,并将所述第1数据写入到所述写入目标位置,将表示所述已选择的块及所述写入目标位置的双方的第1物理地址、及所述第3地址通知给所述主机。
2.根据权利要求1所述的存储器系统,其中
所述第1物理地址包括:所述已选择的块所属的非易失性存储器裸片的裸片标识符,与所述已选择的块对应的第2块地址,及从所述已选择的块的开端到所述写入目标位置为止的偏移。
3.根据权利要求2所述的存储器系统,其中
所述偏移由所述写入目标位置所属的页的页地址、及与所述写入目标位置对应的页内偏移来表示。
4.根据权利要求1所述的存储器系统,其中
所述第1物理地址包含:与所述一个并行单元对应的第1块地址,及从所述一个并行单元的开端到所述写入目标位置为止的偏移。
5.根据权利要求4所述的存储器系统,其中
所述偏移由所述已选择的块所属的非易失性存储器裸片的裸片标识符、所述写入目标位置所属的页的页地址、及与所述写入目标位置对应的页内偏移来表示。
6.根据权利要求1所述的存储器系统,其中
所述控制器构成为,在从所述主机接收到指定所述第1物理地址的读取请求的情况下,基于所述第1物理地址从所述已选择的块内的所述写入目标位置读取数据。
7.根据权利要求1所述的存储器系统,其中
所述控制器构成为,在从所述主机接收到指定能够并行访问的块数的并行单元分配请求的情况下,从所述多个并行单元中选择出包含所述经指定的块数以上的非不良块的并行单元,将所述已选择的并行单元分配给所述主机,
所述一个并行单元是被分配给所述主机的所述已选择的并行单元。
8.根据权利要求1所述的存储器系统,其中
所述控制器构成为,跨及多个页写入多个数据部及根据所述多个数据部算出的纠删码,所述多个页具有相同的页地址且分别属于各并行单元中所含的多个块,
所述纠删码视作在各并行单元内的各不良块内的页中存储着预先规定的值而算出,
所述纠删码被写入到各并行单元内的非不良块内的页中。
9.根据权利要求8所述的存储器系统,其中
所述控制器构成为,进行使用所述纠删码的解码处理,所述纠删码被视作在各并行单元内的各不良块内的页中存储着预先规定的值。
10.根据权利要求1所述的存储器系统,其中
所述写入请求指定所述第3地址、及与一个并行单元对应的第1块地址,
所述控制器构成为:
从所述多个并行单元中选择出具有由所述写入请求指定的所述第1块地址的并行单元,
参考所述不良信息,从所述已选择的并行单元中所含的非不良块中选择出一个块来作为所述写入目标块。
11.一种存储器系统,能够与主机连接,且包括:
多个非易失性存储器裸片,各自包含多个块;及
控制器,构成为与所述多个非易失性存储器裸片电连接,且对多个并行单元进行管理,所述多个并行单元各自包含属于不同的非易失性存储器裸片的各块,
所述多个并行单元各自具有固有的第1块地址,各非易失性存储器裸片内的多个块各自具有固有的第2块地址,应包含于各并行单元的块各自的第2块地址根据各并行单元的第1块地址并基于数学规则来规定,
所述控制器构成为:
对不良信息进行管理,所述不良信息中保存针对各并行单元内的每个块表示可使用或不可使用的至少1比特的信息,
在从所述主机接收到指定用于识别应写入的第1数据的第3地址的写入请求的情况下,参考所述不良信息从写入对象的并行单元中所含的非不良块中选择出一个块,或者基于所述不良信息来执行地址转换,所述地址转换是以所述写入对象的并行单元内的所有非不良块从所述写入对象的并行单元的开端连续逻辑地配置的方式转换访问对象块的地址,由此选择所述写入对象的并行单元内的非不良块来作为写入目标块,
决定所述已选择的块内的写入目标位置,
将所述第1数据写入到所述写入目标位置,
将表示所述已选择的块及所述写入目标位置的双方的物理地址、及所述第3地址,或者将表示所述地址转换前的所述访问对象块及所述写入目标位置的双方的物理地址、及所述第3地址,通知给所述主机。
12.一种控制方法,对各自包含多个块的多个非易失性存储器裸片进行控制,且包括:
对各自包含属于不同的非易失性存储器裸片的各块的多个并行单元进行管理,
所述多个并行单元各自具有固有的第1块地址,各非易失性存储器裸片内的多个块各自具有固有的第2块地址,应包含于各并行单元的块各自的第2块地址根据各并行单元的第1块地址并基于数学规则来规定;
对不良信息进行管理,所述不良信息中保存针对各并行单元内的每个块表示可使用或不可使用的至少1比特的信息;
在从主机接收到指定用于识别应写入的第1数据的第3地址的写入请求的情况下,执行参考所述不良信息从一个并行单元中所含的非不良块中选择出一个块来作为写入目标块的动作、决定所述已选择的块内的写入目标位置的动作、将所述第1数据写入到所述写入目标位置的动作、及将表示所述已选择的块及所述写入目标位置的双方的第1物理地址、及所述第3地址通知给所述主机的动作。
13.根据权利要求12所述的控制方法,其还包括:
在从所述主机接收到指定所述第1物理地址的读取请求的情况下,基于所述第1物理地址从所述已选择的块内的所述写入目标位置读取数据。
14.根据权利要求12所述的控制方法,其还包括:
在从所述主机接收到指定能够并行访问的块数的并行单元分配请求的情况下,执行从所述多个并行单元中选择出包含所述经指定的块数以上的非不良块的并行单元的动作、及将所述已选择的并行单元分配给所述主机的动作,
所述一个并行单元是被分配给所述主机的所述已选择的并行单元。
CN201810767080.1A 2017-10-30 2018-07-13 存储器系统及控制方法 Active CN109725847B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017209317A JP7074453B2 (ja) 2017-10-30 2017-10-30 メモリシステムおよび制御方法
JP2017-209317 2017-10-30

Publications (2)

Publication Number Publication Date
CN109725847A CN109725847A (zh) 2019-05-07
CN109725847B true CN109725847B (zh) 2021-12-07

Family

ID=66245478

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810767080.1A Active CN109725847B (zh) 2017-10-30 2018-07-13 存储器系统及控制方法

Country Status (4)

Country Link
US (4) US10592409B2 (zh)
JP (1) JP7074453B2 (zh)
CN (1) CN109725847B (zh)
TW (1) TWI682278B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7074453B2 (ja) * 2017-10-30 2022-05-24 キオクシア株式会社 メモリシステムおよび制御方法
JP6898393B2 (ja) * 2019-03-22 2021-07-07 株式会社日立製作所 ストレージシステム及びデータ転送方法
US11132292B2 (en) * 2019-12-10 2021-09-28 Micron Technology, Inc. Active input/output expander of a memory sub-system
JP7346311B2 (ja) * 2020-01-16 2023-09-19 キオクシア株式会社 メモリシステム
US11287989B2 (en) * 2020-03-24 2022-03-29 Western Digital Technologies, Inc. Dynamic allocation of sub blocks
US11500637B2 (en) * 2020-06-15 2022-11-15 Micron Technology, Inc. Software instruction set update of memory die using page buffers
CN111857586A (zh) * 2020-07-14 2020-10-30 苏州浪潮智能科技有限公司 一种SSD Trim优化方法、系统、终端及存储介质
US11599377B2 (en) * 2020-08-17 2023-03-07 Alibaba Group Holding Limited Open-channel storage device management with FTL on virtual machine
CN112241308B (zh) * 2020-10-21 2022-07-29 海光信息技术股份有限公司 一种虚拟机标识处理方法、装置及相关设备
CN112328172B (zh) * 2020-10-27 2022-04-19 北京百度网讯科技有限公司 数据存储方法、装置及数据读取方法、装置
TW202246985A (zh) 2021-05-25 2022-12-01 韓商愛思開海力士有限公司 主機裝置、儲存裝置以及電子裝置
US11954350B2 (en) * 2021-05-25 2024-04-09 SK Hynix Inc. Storage device and method of operating the same
US20230052489A1 (en) * 2021-08-13 2023-02-16 Micron Technology, Inc. Die location detection for grouped memory dies
CN114442936B (zh) * 2021-12-29 2024-03-08 山东云海国创云计算装备产业创新中心有限公司 一种闪存转换层的块管理方法、装置、设备及存储介质
TW202334821A (zh) 2022-02-18 2023-09-01 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
TWI802279B (zh) * 2022-02-18 2023-05-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
TWI805231B (zh) 2022-02-18 2023-06-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
CN115687171B (zh) * 2022-10-26 2023-06-06 深圳三地一芯电子股份有限公司 闪存块绑定方法、装置、设备及存储介质
CN116755642B (zh) * 2023-08-24 2023-10-27 四川云海芯科微电子科技有限公司 用于NAND Flash坏块的混合管理方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103890724A (zh) * 2011-08-19 2014-06-25 株式会社东芝 信息处理设备、用于控制信息处理设备的方法、存储控制工具的非临时记录介质、主机装置、存储性能评估工具的非临时记录介质、以及用于外部存储装置的性能评估方法
CN104615550A (zh) * 2015-01-27 2015-05-13 华为技术有限公司 一种存储设备坏块的处理方法、装置及存储设备
CN105302677A (zh) * 2014-07-29 2016-02-03 株式会社东芝 信息处理装置和信息处理方法
CN106598493A (zh) * 2016-11-30 2017-04-26 郑州云海信息技术有限公司 一种固态硬盘地址映射表管理方法
CN107168640A (zh) * 2016-03-08 2017-09-15 东芝存储器株式会社 存储系统、信息处理系统及非易失性存储器的控制方法
CN107229577A (zh) * 2015-03-25 2017-10-03 爱思开海力士有限公司 存储系统及其操作方法

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
WO1999031592A1 (fr) * 1997-12-16 1999-06-24 Tdk Corporation Systeme de memoire flash
DE60001993T2 (de) * 1999-01-27 2004-01-08 Matsushita Electric Industrial Co., Ltd., Kadoma Audiovisueller Daten und Rechnerdaten Aufzeichnungsverfahren und Wiedergabeverfahren, und Aufzeichnungsgerät und Wiedergabegerät, Informationsaufzeichnungssystem und Informationswiedergabesystem, und Informationsaufzeichnungsträger zur Anwendung dieser Verfahren
JP2004265162A (ja) 2003-03-03 2004-09-24 Renesas Technology Corp 記憶装置およびアドレス管理方法
JP4173410B2 (ja) 2003-06-26 2008-10-29 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム
JP4327203B2 (ja) * 2004-09-24 2009-09-09 株式会社ルネサステクノロジ 半導体装置
JP4956922B2 (ja) * 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
EP2428896A1 (en) * 2006-07-31 2012-03-14 Kabushiki Kaisha Toshiba Nonvolatile memory system, and data read/write method for nonvolatile memory system
JP2008226040A (ja) 2007-03-14 2008-09-25 Hitachi Ltd 情報処理装置及びコマンド多重度制御方法
JP4702387B2 (ja) 2008-03-31 2011-06-15 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8407400B2 (en) * 2008-11-12 2013-03-26 Micron Technology, Inc. Dynamic SLC/MLC blocks allocations for non-volatile memory
JP4762323B2 (ja) * 2009-03-03 2011-08-31 富士通株式会社 アクセス制御装置、情報処理装置、アクセス制御プログラム及びアクセス制御方法
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US9582431B2 (en) 2010-03-22 2017-02-28 Seagate Technology Llc Storage address space to NVM address, span, and length mapping/converting
JP5612514B2 (ja) * 2010-03-24 2014-10-22 パナソニック株式会社 不揮発性メモリコントローラ及び不揮発性記憶装置
JP5677336B2 (ja) * 2011-08-01 2015-02-25 株式会社東芝 メモリ・デバイス
JP2013077278A (ja) * 2011-09-16 2013-04-25 Toshiba Corp メモリ・デバイス
JP5687648B2 (ja) 2012-03-15 2015-03-18 株式会社東芝 半導体記憶装置およびプログラム
WO2014102882A1 (en) 2012-12-28 2014-07-03 Hitachi, Ltd. Storage apparatus and storage control method
JP6055544B2 (ja) 2013-06-03 2016-12-27 株式会社日立製作所 ストレージ装置およびストレージ装置制御方法
US9569308B1 (en) * 2013-07-15 2017-02-14 Rambus Inc. Reduced-overhead error detection and correction
JP2015038796A (ja) * 2013-08-19 2015-02-26 株式会社東芝 メモリシステムおよび制御方法
WO2015034954A1 (en) 2013-09-03 2015-03-12 Sandisk Technologies Inc. Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses
JP6129699B2 (ja) * 2013-09-18 2017-05-17 株式会社東芝 個体識別装置、記憶装置、個体識別システム、その方法、およびプログラム
US9927998B2 (en) * 2014-02-05 2018-03-27 Tidal Systems, Inc. Flash memory compression
US20150339223A1 (en) * 2014-05-22 2015-11-26 Kabushiki Kaisha Toshiba Memory system and method
WO2016143009A1 (ja) * 2015-03-06 2016-09-15 株式会社 東芝 メモリデバイスの制御方法、及び、メモリデバイス
US10824553B2 (en) 2015-04-24 2020-11-03 Toshiba Memory Corporation Memory device that controls timing of receiving write data from a host
US20160321010A1 (en) * 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
US9766814B2 (en) * 2015-08-10 2017-09-19 Intel Corporation Method and apparatus for defect management in a non-volatile memory device
US20170139616A1 (en) 2015-11-17 2017-05-18 HGST Netherlands B.V. Method of decreasing write amplification factor and over-provisioning of nand flash by means of diff-on-write approach
JP6448571B2 (ja) 2016-03-08 2019-01-09 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
JP7074453B2 (ja) * 2017-10-30 2022-05-24 キオクシア株式会社 メモリシステムおよび制御方法
TWI645289B (zh) 2017-10-31 2018-12-21 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體操作方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103890724A (zh) * 2011-08-19 2014-06-25 株式会社东芝 信息处理设备、用于控制信息处理设备的方法、存储控制工具的非临时记录介质、主机装置、存储性能评估工具的非临时记录介质、以及用于外部存储装置的性能评估方法
CN105302677A (zh) * 2014-07-29 2016-02-03 株式会社东芝 信息处理装置和信息处理方法
CN104615550A (zh) * 2015-01-27 2015-05-13 华为技术有限公司 一种存储设备坏块的处理方法、装置及存储设备
CN107229577A (zh) * 2015-03-25 2017-10-03 爱思开海力士有限公司 存储系统及其操作方法
CN107168640A (zh) * 2016-03-08 2017-09-15 东芝存储器株式会社 存储系统、信息处理系统及非易失性存储器的控制方法
CN106598493A (zh) * 2016-11-30 2017-04-26 郑州云海信息技术有限公司 一种固态硬盘地址映射表管理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《面向固态硬盘应用的高速闪存映射层的设计和研究》;邹宏飞;《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》;20150915;I137-20 *

Also Published As

Publication number Publication date
CN109725847A (zh) 2019-05-07
TWI682278B (zh) 2020-01-11
US20200218648A1 (en) 2020-07-09
US10592409B2 (en) 2020-03-17
US11023371B2 (en) 2021-06-01
US20220414002A1 (en) 2022-12-29
US20210248065A1 (en) 2021-08-12
JP2019082813A (ja) 2019-05-30
JP7074453B2 (ja) 2022-05-24
US20190129840A1 (en) 2019-05-02
TW201931123A (zh) 2019-08-01
US11467955B2 (en) 2022-10-11

Similar Documents

Publication Publication Date Title
CN109725847B (zh) 存储器系统及控制方法
JP7074454B2 (ja) 計算機システムおよび制御方法
CN109542333B (zh) 存储器系统及控制非易失性存储器的控制方法
CN109725846B (zh) 存储器系统及控制方法
CN109726139B (zh) 存储器系统及控制方法
JP6785204B2 (ja) メモリシステムおよび制御方法
JP2021007059A (ja) メモリシステム
JP7077151B2 (ja) メモリシステム
JP7490714B2 (ja) メモリシステムおよび制御方法
JP7167295B2 (ja) メモリシステムおよび制御方法
JP7204020B2 (ja) 制御方法
JP7366222B2 (ja) メモリシステムおよび制御方法
JP2023021450A (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
CP01 Change in the name or title of a patent holder

Address after: Tokyo

Patentee after: Kaixia Co.,Ltd.

Address before: Tokyo

Patentee before: TOSHIBA MEMORY Corp.

Address after: Tokyo

Patentee after: TOSHIBA MEMORY Corp.

Address before: Tokyo

Patentee before: Pangea Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20220209

Address after: Tokyo

Patentee after: Pangea Co.,Ltd.

Address before: Tokyo

Patentee before: TOSHIBA MEMORY Corp.

TR01 Transfer of patent right