CN116909941A - 存储器系统及控制非易失性存储器的方法 - Google Patents
存储器系统及控制非易失性存储器的方法 Download PDFInfo
- Publication number
- CN116909941A CN116909941A CN202310947639.XA CN202310947639A CN116909941A CN 116909941 A CN116909941 A CN 116909941A CN 202310947639 A CN202310947639 A CN 202310947639A CN 116909941 A CN116909941 A CN 116909941A
- Authority
- CN
- China
- Prior art keywords
- block
- data
- host
- command
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 202
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000004044 response Effects 0.000 claims description 55
- 230000009471 action Effects 0.000 claims description 22
- 238000012217 deletion Methods 0.000 claims description 11
- 230000037430 deletion Effects 0.000 claims description 11
- 238000004378 air conditioning Methods 0.000 claims 5
- 238000006243 chemical reaction Methods 0.000 abstract description 32
- 238000013507 mapping Methods 0.000 abstract description 27
- 239000008186 active pharmaceutical agent Substances 0.000 description 222
- 238000010586 diagram Methods 0.000 description 65
- 238000007726 management method Methods 0.000 description 50
- 230000006870 function Effects 0.000 description 32
- 238000012545 processing Methods 0.000 description 28
- 230000008569 process Effects 0.000 description 16
- 238000012005 ligant binding assay Methods 0.000 description 12
- 238000012546 transfer Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 239000000872 buffer Substances 0.000 description 7
- 230000002950 deficient Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 230000003321 amplification Effects 0.000 description 4
- 238000003199 nucleic acid amplification method Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 3
- 102220481310 Adhesion G-protein coupled receptor D1_S11A_mutation Human genes 0.000 description 2
- 102220588696 Keratin, type I cytoskeletal 18_S51A_mutation Human genes 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 125000000524 functional group Chemical group 0.000 description 2
- 102220480414 Adhesion G-protein coupled receptor D1_S13A_mutation Human genes 0.000 description 1
- 102220495430 Glutaredoxin-like protein C5orf63_S12A_mutation Human genes 0.000 description 1
- 102220588438 Keratin, type I cytoskeletal 18_S15A_mutation Human genes 0.000 description 1
- 102220588436 Keratin, type I cytoskeletal 18_S31A_mutation Human genes 0.000 description 1
- 102220588433 Keratin, type I cytoskeletal 18_S42A_mutation Human genes 0.000 description 1
- 102220588695 Keratin, type I cytoskeletal 18_S53A_mutation Human genes 0.000 description 1
- 102220621241 Proline-rich membrane anchor 1_S32A_mutation Human genes 0.000 description 1
- 102220585520 T cell receptor gamma constant 1_S20A_mutation Human genes 0.000 description 1
- 102220585558 T cell receptor gamma constant 1_S41A_mutation Human genes 0.000 description 1
- 102220536512 THAP domain-containing protein 1_S52A_mutation Human genes 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 102220247850 rs1421233354 Human genes 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Iron Core Of Rotating Electric Machines (AREA)
- Soundproofing, Sound Blocking, And Sound Damping (AREA)
- Vehicle Body Suspensions (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供一种能够选择性利用和不同种类的接口对应的多个区域的存储器系统及控制非易失性存储器的方法。当从主机接收到的读取请求包含表示第一区域的第一标识符时,实施方式的存储器系统从接收到的读取请求获取逻辑地址,并从逻辑物理地址转换表获取和所述获取的逻辑地址对应的物理地址,基于获取的物理地址从所述一个第一区域读取数据,所述逻辑物理地址转换表管理各个逻辑地址和所述一个第一区域的各个物理地址之间的映射。当接收到的读取请求包含表示第二区域的第二标识符时,存储器系统从接收到的读取请求获取物理地址信息,并基于获取的物理地址信息从第二区域读取数据。
Description
分案申请的相关信息
本案是分案申请。该分案的母案是申请日为2018年7月13日、申请号为201810768120.4、发明名称为“存储器系统及控制方法”的发明专利申请案。
[相关申请]
本申请享有以日本专利申请2017-208115号(申请日:2017年10月27日)为基础申请的优先权。本申请通过参照所述基础申请而包含基础申请的全部内容。
技术领域
本发明的实施方式涉及一种包含非易失性存储器的存储器系统及其控制方法。
背景技术
近年来,具备非易失性存储器的存储器系统正在广泛地普及。
作为此类存储器系统的一种,已知有基于NAND闪存技术的固态驱动器(SSD)。
最近,开始提出一种主机和储存器之间的新的接口。
发明内容
本发明提供一种能够选择性利用与不同种类的接口对应的多个区域的存储器系统及控制方法。
根据实施方式,能连接于主机的存储器系统具备:非易失性存储器,包含分别含有多个页的多个块;及控制器,电连接于所述非易失性存储器,对所述非易失性存储器进行控制。所述控制器对将所述非易失性存储器逻辑分割所获得的多个区域进行管理。所述多个区域所述多个区域包含一个以上第一区域及一个以上第二区域,所述第一区域由所述主机使用第一类型接口进行读取访问,所述第一类型接口指定逻辑地址而不指定所述非易失性存储器的物理地址,所述第二区域由所述主机使用第二类型接口进行读取访问,所述第二类型接口指定所述非易失性存储器的一部分或者全部物理地址。所述控制器从所述主机接收读取请求。所述控制器在所述接收到的读取请求包含表示所述一个以上第一区域的一个第一区域的第一标识符时,选择所述第一类型接口,从所述接收到的读取请求获取逻辑地址,并从逻辑物理地址转换表获取和所述获取的逻辑地址对应的物理地址,基于获取的物理地址从所述一个第一区域读取数据,所述逻辑物理地址转换表管理各个逻辑地址和所述一个第一区域的各个物理地址之间的映射。所述控制器在所述接收到的读取请求包含表示所述一个以上第二区域的一个第二区域的第二标识符时,选择所述第二类型接口,并从所述接收到的读取请求获取指定所述一个第二区域的一部分或者全部物理地址的物理地址信息,基于所述获取的物理地址信息从所述一个第二区域读取数据。
附图说明
图1是表示主机与实施方式的存储器系统(闪速储存装置)的关系的框图。
图2是用于对同一实施方式的闪速储存装置支持的多种接口进行说明的图。
图3是表示同一实施方式的闪速储存装置的构成例的框图。
图4是表示同一实施方式的闪速储存装置中设置的NAND接口与多个NAND型闪速存储器晶片的关系的框图。
图5是表示由多个块的集合构建的超级块的构成例的图。
图6是用于对应用于同一实施方式的闪速储存装置的扩展命名空间管理命令进行说明的图。
图7是表示同一实施方式的闪速储存装置执行的区域(命名空间)创建处理的顺序图。
图8是用于对传统型SSD与主机之间的任务分担、及支持第一类型接口(物理地址API(类型#1))的同一实施方式的闪速储存装置与主机之间的任务分担进行说明的图。
图9是用于对以物理地址API(类型#1)使用的写入命令进行说明的图。
图10是用于说明相对于图9的写入命令的响应的图。
图11是用于对以物理地址API(类型#1)使用的Trim命令的图。
图12是用于说明对图10的响应中包含的物理地址进行规定的块编号及偏移的图。
图13是用于对根据写入命令执行的写入动作及相对于该写入命令的响应中包含的返回值的关系进行说明的图。
图14是用于对跳过不良页的写入动作进行说明的图。
图15是用于对跳过不良页的写入动作的另一例进行说明的图。
图16是用于对将逻辑地址及数据的对写入到块内的页的动作进行说明的图。
图17是用于对将数据写入到块内的页的用户数据区域、将该数据的逻辑地址写入到该页的冗余区域的动作进行说明的图。
图18是用于对使用超级块时的块编号与偏移的关系进行说明的图。
图19是表示由主机及同一实施方式的闪速储存装置执行的写入动作处理的顺序的顺序图。
图20是表示写入相对于已写入的数据的更新数据的数据更新动作的图。
图21是用于对同一实施方式的闪速储存装置管理的块管理表的更新动作进行说明的图。
图22是用于对主机管理的查找表(逻辑物理地址转换表)的更新动作进行说明的图。
图23是用于对根据表示与应无效化的数据对应的物理地址的来自主机的通知而更新块管理表的动作进行说明的图。
图24是用于对以物理地址API(类型#1)使用的读取命令进行说明的图。
图25是用于对与物理地址API(类型#1)对应的读取动作进行说明的图。
图26是表示与物理地址API(类型#1)对应的读取处理的顺序的顺序图。
图27是用于对以物理地址API(类型#1)使用的无用单元收集(GC)控制命令进行说明的图。
图28是用于对以物理地址API(类型#1)使用的GC用回调命令进行说明的图。
图29是表示与物理地址API(类型#1)对应的无用单元收集(GC)动作的顺序的顺序图。
图30是用于对用于无用单元收集(GC)而执行的数据复制动作的例进行说明的图。
图31是用于对基于图30的数据复制动作的结果而更新的主机的查找表的内容进行说明的图。
图32是用于对相对于写入命令的响应与GC用回调处理的关系进行说明的图。
图33是用于对以物理地址API(类型#1)使用的无用单元收集(GC)控制命令的另一例进行说明的图。
图34是用于对以物理地址API(类型#1)使用的GC用回调命令的另一例进行说明的图。
图35是用于对与物理地址API(类型#1)对应的写入/读取/GC动作进行说明的图。
图36是用于对传统型SSD与主机之间的任务分担、支持第二类型接口(物理地址API(类型#2))的同一实施方式的闪速储存装置与主机之间的任务分担进行说明的图。
图37是用于对主机管理的块级地址转换表及同一实施方式的闪速储存装置管理的块内地址转换表进行说明的图。
图38是用于对以物理地址API(类型#2)使用的写入命令进行说明的图。
图39是用于对以物理地址API(类型#2)使用的Trim命令进行说明的图。
图40是表示与物理地址API(类型#2)对应的写入处理的顺序的顺序图。
图41是表示写入相对于已写入的数据的更新数据的数据更新动作的图。
图42是用于对同一实施方式的闪速储存装置管理的块编号BLK#1用的块内LUT进行说明的图。
图43是用于对同一实施方式的闪速储存装置管理的块管理表的更新动作进行说明的图。
图44是用于对主机管理的块级LUT的更新动作进行说明的图。
图45是用于对根据表示与应无效化的数据对应的块编号及逻辑地址的来自主机的通知而更新块内LUT及块管理表的动作进行说明的图。
图46是用于对以物理地址API(类型#2)使用的读取命令进行说明的图。
图47是用于对与物理地址API(类型#2)对应的读取动作进行说明的顺序图。
图48是用于对以物理地址API(类型#2)使用的无用单元收集(GC)控制命令进行说明的图。
图49是用于对以物理地址API(类型#2)使用的GC用回调命令进行说明的图。
图50是表示与物理地址API(类型#2)对应的无用单元收集(GC)动作的步骤的顺序图。
图51是用于对传统型SSD与主机之间的任务分担、及支持第三类型接口(物理地址API(类型#3))的同一实施方式的闪速储存装置与主机之间的任务分担进行说明的图。
图52是用于对与物理地址API(类型#3)对应的数据写入动作、及与物理地址API(类型#3)对应的数据读出动作进行说明的图。
图53是用于对以物理地址API(类型#3)使用的写入命令进行说明的图。
图54是用于对相对于图53的写入命令的响应进行说明的图。
图55是用于对以物理地址API(类型#3)使用的Trim命令进行说明的图。
图56是表示与物理地址API(类型#3)对应的写入处理的顺序的顺序图。
图57是用于对以物理地址API(类型#3)使用的读取命令进行说明的图。
图58是用于对以物理地址API(类型#3)使用的无用单元收集(GC)控制命令进行说明的图。
图59是用于对以物理地址API(类型#3)使用的GC用回调命令进行说明的图。
图60是表示与物理地址API(类型#3)对应的无用单元收集(GC)动作的步骤的顺序图。
具体实施方式
以下,参照附图对实施方式进行说明。
首先,参照图1,对包含一实施方式的存储器系统的计算机系统的构成进行说明。
该存储器系统是半导体储存装置,构成为向非易失性存储器写入数据,并从非易失性存储器读出数据。该存储器系统是作为基于NAND闪存技术的闪速储存装置3而实现的。
该计算机系统也可以包含主机(主机装置)2、及多个闪速储存装置3。主机2可以是服务器,构成为使用包括多个闪速储存装置3的闪存阵列作为储存器。主机(服务器)2与多个闪速储存装置3经由接口50而相互连接(内部相互连接)。用于该内部相互连接的接口(物理接口)50并不限定于此,还能使用PCI Express(PCIe)(注册商标)、NVM Express(NVMe)(注册商标)、Ethernet(注册商标)、NVMe over Fabrics(NVMeOF)等。
作为主机2发挥功能的服务器的典型例列举数据中心内的服务器。
在主机2由数据中心内的服务器实现的情况下,该主机(服务器)2也可以经由网络51连接于多个最终用户终端(客户端)61。主机2可向这些最终用户终端61提供各种各样的服务。
主机(服务器)2可提供的服务的例子有:(1)将系统运行平台提供给各客户端(各最终用户终端61)的平台即服务(PaaS)、(2)将比如虚拟服务器这样的基础设施提供给各客户端(各最终用户终端61)的基础设施即服务(IaaS)等。
多个虚拟机可以在作为该主机(服务器)2发挥功能的物理服务器上执行。在主机(服务器)2上运行的这些各个虚拟机可作为虚拟服务器发挥功能,所述虚拟服务器构成为向对应的若干客户端(最终用户终端61)提供各种服务。
主机(服务器)2包含对构成闪存阵列的多个闪速储存装置3进行管理的储存器管理功能、及向各个最终用户终端61提供包括储存器存取在内的各种服务的前端功能。
在传统型SSD中,NAND型闪速存储器的块/页的层级结构被SSD内的闪速转移层(FTL)隐藏。即,传统型SSD的FTL具有:(1)使用作为逻辑物理地址转换表发挥功能的查找表,对各逻辑地址与NAND型闪速存储器的各物理地址之间的映射进行管理的功能、(2)用于将页单位的读取/写入与块单位的删除动作隐藏的功能、(3)执行NAND型闪速存储器的无用单元收集(GC)的功能等。从主机无法发现各逻辑地址与NAND型闪速存储器的各物理地址之间的映射。NAND型闪速存储器的块/页结构也无法从主机发现。
另一方面,主机中有时也会执行一种地址转换(应用级地址转换)。该地址转换使用应用级地址转换表,对应用用的各逻辑地址与SSD用的各逻辑地址之间的映射进行管理。此外,主机中,为了消除SSD用的逻辑地址空间上产生的碎片,还会执行用于变更该逻辑地址空间上的数据配置的一种GC(应用级GC)。
但,主机及SSD分别具有地址转换表的冗余构成(SSD具有作为逻辑物理地址转换表发挥功能的查找表,主机具有应用级地址转换表)中,为了保持这些地址转换表会消耗庞大的存储器资源。而且,包含主机侧的地址转换与SSD侧的地址转换的双重地址转换也是I/O性能降低的主要原因。
而且,主机侧的应用级GC变成向SSD的数据写入量增加到实际用户数据量的数倍(例如2倍)程度的主要原因。这种数据写入量的增加虽然不会增加SSD的写入扩增,但会降低系统整体的储存器性能,且还会缩短SSD的寿命。
为了消除这种问题,也提出了将传统型SSD的FTL的功能全部转移到主机的对策。
但,这种对策需要主机直接处理NAND型闪速存储器的块及页。NAND型闪速存储器的容量在每一代NAND型闪速存储器中都会增加,相应地NAND型闪速存储器的块大小/页大小在每一代中也不同。因此,主机2有必须将不同块大小、页大小的NAND型闪速存储器混合使用的情况。处理不同块大小/页大小对于主机来说是困难的。此外,可能存在由于各种制造上的理由等产生数不可预测的不良页(坏页),所以可预料到块内实质上可利用的页数在每一块中也不同,此NAND型闪速存储器内的块大小也是每一块均不同。处理坏页及不均一块大小对于主机来说更加困难。
因此,本实施方式的闪速储存装置3中,支持用于对NAND型闪速存储器进行存取的多种接口(软件接口),可对应NAND型闪速存储器内的存取对象的每个区域切换应使用的接口。因此,可根据用途使用更适合的接口。
更详细来说,闪速储存装置3对将NAND型闪速存储器逻辑分割所获得的多个区域进行管理。
所述多个区域中包含一个以上第一区域,所述一个以上第一区域是由主机2使用第一类型接口进行读取访问的,所述第一类型接口只指定逻辑地址而不指定NAND型闪速存储器的物理地址。
在第一类型接口中,主机2无需指定NAND型闪速存储器的物理地址,只要指定与应读取的数据对应的逻辑地址即可。
因此,关于第一区域,主机2无需直接处理NAND型闪速存储器。要直接处理NAND型闪速存储器,主机2上必须已经执行用于直接处理NAND型闪速存储器所需的功能群。但,当从第一区域读取数据时是不需要这些功能群的,因此第一区域可作为用于能启动操作系统的可启动区域利用。
而且,在所述多个区域中,还包含一个以上第二区域,所述一个以上第二区域由主机2使用第二类型接口进行读取访问,所述第二类型接口指定NAND型闪速存储器的一部分物理地址(例如只指定块编号)或者所有物理地址(例如指定块编号与块内偏移)。
当使用第二类型接口(以下称为物理地址API)读取数据时,由主机2指定NAND型闪速存储器的一部分或者全部物理地址。
因此,主机2可根据需要使用物理地址API,由此可直接对NAND型闪速存储器进行存取。
实现物理地址API时,FTL的任务也可以在主机2与闪速储存装置3之间适当地分担。这种情况下,也可以只将传统型SSD的FTL的部分功能转移到主机2。以下,将转移到主机2的FTL功能称为全局FTL。
主机2的全局FTL也可以具有以下功能:执行储存服务;对逻辑物理地址转换表发挥功能的查找表(LUT)(或者只对各逻辑地址与NAND型闪速存储器的各块编号之间的映射进行管理的块级LUT)进行管理,所述逻辑物理地址转换表对各逻辑地址与NAND型闪速存储器的各物理地址之间的映射进行管理;软硬固件控制功能;用于实现高可用性的功能;防止将具有相同内容的多个重复数据部储存到储存器的重复排除(De-duplication)功能等。
另一方面,闪速储存装置3也可以具有用于低电平抽象(LLA)的功能。LLA是用于实现NAND型闪速存储器的抽象的功能。LLA可利用于实现物理地址API。
图2表示闪速储存装置3支持的多种接口(多种API)。
闪速储存装置3包含控制器4、及NAND型闪速存储器5。控制器4支持多种API。这些API也可以包含LBAAPI、物理地址API、键值API、及其他API(例如可变长度LUT等)。
LBAAPI被用作所述第一类型接口。LBA API中,来自主机2的读取请求只指定比如LBA这样的逻辑地址,而不指定NAND型闪速存储器5的物理地址。此外,LBA API中,来自主机2的写入请求也只指定比如LBA这样的逻辑地址,而不指定NAND型闪速存储器5的物理地址。
物理地址API被用作所述第二类型接口。在本实施方式中,三种物理地址API、即物理地址API(类型#1)、物理地址API(类型#2)、物理地址API(类型#3)分别可被用作对NAND型闪速存储器5的一部分或者全部物理地址进行指定的所述第二类型接口。控制器4可支持物理地址API(类型#1)、物理地址API(类型#2)、物理地址API(类型#3)全部能用的物理地址API,也可以支持物理地址API(类型#1)、物理地址API(类型#2)、物理地址API(类型#3)内只有任意一种能用的物理地址API。
这些物理地址API(类型#1)、物理地址API(类型#2)、物理地址API(类型#3)具有以下特征。
<物理地址API(类型#1)>
在物理地址API(类型#1)中,从主机2接收的读取请求对NAND型闪速存储器5的所有物理地址(块编号与块内偏移两者)进行指定。块内偏移是指定块内位置的块内物理地址。从主机2接收的写入请求只指定逻辑地址。
即,主机2对作为逻辑物理地址转换表发挥功能的查找表进行管理,应用于写入的块的选择并非由主机2执行,而是由闪速储存装置3的控制器4执行。
<物理地址API(类型#2)>
在物理地址API(类型#2)中,从主机2接收的读取请求对NAND型闪速存储器5的一部分物理地址(块编号)、及逻辑地址进行指定。另一方面,从主机2接收的写入请求对NAND型闪速存储器5的一部分物理地址(块编号)、及逻辑地址进行指定。
即,主机2对用于管理各逻辑地址与各块编号之间的映射的块级地址转换表即块级查找表(块级LUT)进行管理,闪速储存装置3对用于管理各逻辑地址与各块的块内物理地址之间的映射的页电平地址转换表即块内查找表(块内LUT)进行管理。
<物理地址API(类型#3)>
在物理地址API(类型#3)中,从主机2接收的读取请求对NAND型闪速存储器5的全部物理地址(块编号及块内偏移两者)进行指定。另一方面,从主机2接收的写入请求对NAND型闪速存储器5的一部分物理地址(块编号)、及逻辑地址进行指定。
即,主机2对作为逻辑物理地址转换表发挥功能的查找表进行管理,但主机2只指定应写入数据的块的块编号及与该数据对应的逻辑地址,应写入该数据的该块内的位置(写入目标位置)则是由闪速储存装置3决定的。将表示决定的该块内的位置(写入目标位置)的块内偏移(块内物理地址)从闪速储存装置3通知给主机2。
键值API具有以下特征。
在键值API中,键值存储器的键值(标签)、或者键值的哈希值是作为一种逻辑地址被使用。
在键值API中,来自主机2的读取请求将键值指定为逻辑地址,而不指定NAND型闪速存储器5的物理地址。此外,在键值API中,来自主机2的写入请求也将键值指定为逻辑地址,而不指定NAND型闪速存储器5的物理地址。
在所述物理地址API(类型#1)、物理地址API(类型#2)、物理地址API(类型#3)中,作为逻辑地址可使用LBA,也可以使用键值存储器的键值(标签)、或者键值的哈希值。
与可变长度LUT对应的API具有以下特征。
与可变长度LUT对应的API是用于处理可变长度数据的API。控制器4对包含与多个逻辑地址对应的多个入口的可变长度LUT进行管理。各入口包含保存与某个数据对应的逻辑地址的字段、保存表示写入该数据的物理存储位置的物理地址的字段、及保存该数据的长度的字段。与可变长度LUT对应的API可向任意的逻辑地址写入任意长度的数据。
在本实施方式中,控制器4可将任意的API应用于NAND型闪速存储器5的任意区域。各区域与各API的对应关系可由主机2指定。
在图2中,例示了以下情况:将NAND型闪速存储器5逻辑分割成多个区域(于此为区域#0~#6),将与区域#0、#1对应的API设定为LBA API,将与区域#2对应的API设定为物理地址API(类型#1),将与区域#3对应的API设定为物理地址API(类型#2),将与区域#4对应的API设定为物理地址API(类型#3),将与区域#5对应的API设定为键值API,将与区域#6对应的API设定为其他API。
来自主机2的读取请求及写入请求等包含表示存取对象的区域的标识符(ID)。控制器4基于读取请求/写入请求所含的标识符(ID),选择应使用的API。
例如,当从主机2接收到包含指定区域#0的ID#0的读取请求时,控制器4使用LBAAPI执行来自区域#0的数据读取。另一方面,当从主机2接收到包含指定区域#2~#4的任一个的ID(ID#2~#4的任一个)的读取请求时,控制器4使用物理地址API执行来自指定区域的数据读取。
更详细来说,控制器4执行以下的读取处理的步骤。
(1)控制器4从主机2接收读取请求(读取命令)。
(2)控制器4检查接收到的读取请求所含的ID。
(3)若接收到的读取请求包含ID#0,则控制器4使用与区域#0对应的API即LBAAPI。为了使用LBA API对区域#0进行读取访问,控制器4从接收到的读取请求获取逻辑地址,并从LUT(逻辑物理地址转换表)获取与获取的逻辑地址对应的物理地址,所述LUT对各逻辑地址与区域#0的各物理地址之间的映射进行管理。然后,控制器4基于获取的物理地址,从区域#0读取数据。
(4)若接收到的读取请求包含指定区域#2~#4的任一个的ID(ID#2~#4的任一个),则控制器4选择与区域#2~#4对应的API即物理地址API。为了使用物理地址API对指定区域进行读取访问,控制器4从接收到的读取请求获取指定一部分或者全部物理地址的物理地址信息。然后,控制器4基于获取的物理地址信息,从指定区域读取数据。
像这样,根据存取对象的区域,自动选择应使用的API。
多个区域(于此为区域#0~#6)也可以由多个命名空间实现。各命名空间是NAND型闪速存储器5内的一种区域(存储区域),被分配了逻辑地址空间(LBA范围)。各个命名空间是利用这些命名空间的标识符(NSID)进行识别的。各区域中分配了LBA范围(LBA0~LBAn-1)。每个区域(每个命名空间)中LBA范围的大小(即LBA的数)可变。各LBA范围是从LBA0开始的。
当区域#0~#6分别由命名空间实现时,来自主机2的各读取/写入请求包含与存取对象的命名空间对应的标识符(NSID)。
当控制器4接收到读取请求时,控制器4检查该读取请求所含的NSID。若接收到的读取请求包含NSID#0,控制器4选择与区域#0对应的API即LBA API。为了使用LBA API对命名空间#0进行读取访问,控制器4从接收到的读取请求获取逻辑地址,并从LUT(命名空间#0用的LUT)获取与获取的逻辑地址对应的物理地址,所述LUT对与命名空间#0对应的各逻辑地址与NAND型闪速存储器5的各物理地址之间的映射进行管理。然后,控制器4基于获取的物理地址,从命名空间#0(即,与命名空间#0对应的NAND型闪速存储器5内的区域)读取数据。
若接收到的读取请求包含NSID#2~#4的任一个,则控制器4选择物理地址API。为了使用物理地址API对指定的命名空间进行读取访问,控制器4从接收到的读取请求获取指定一部分或者全部物理地址的物理地址信息。然后,控制器4基于获取的物理地址信息,从指定的命名空间(即,与指定的命名空间对应的NAND型闪速存储器5内的区域)读取数据。
图3表示闪速储存装置3的构成例。
闪速储存装置3如上所述具备控制器4及NAND型闪速存储器5。闪速储存装置3也可以还具备随机存取存储器、例如DRAM6。
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)的NAND接口13,电连接于非易失性存储器NAND型闪速存储器5。控制器4是构成为对NAND型闪速存储器5进行控制的存储器控制器(控制电路)。
NAND型闪速存储器5如图4所示包含多个NAND型闪速存储器晶片。各NAND型闪速存储器晶片是非易失性存储器晶片,包含含有多个块BLK的存储单元阵列、及对该存储单元阵列进行控制的周边电路。各个NAND型闪速存储器晶片能够独立地动作。因此,NAND型闪速存储器晶片作为并行动作单位发挥功能。NAND型闪速存储器晶片也被称为“NAND型闪速存储器晶片”或者“非易失性存储器晶片”。在图4中例示了以下情况,NAND接口13上连接着16个通道Ch1、Ch2、…Ch16,这些通道Ch1、Ch2、…Ch16上分别连接着相同数量(例如每个通道2个晶片)的NAND型闪速存储器晶片。各通道包含用于与对应的NAND型闪速存储器晶片通信的通信线(存储器总线)。
控制器4经由通道Ch1、Ch2、…Ch16对NAND型闪速存储器晶片#1~#32进行控制。控制器4能够同时驱动通道Ch1、Ch2、…Ch16。
连接于通道Ch1~Ch16的16个NAND型闪速存储器晶片#1~#16可组成为第一存储体(bank),且连接于通道Ch1~Ch16的剩下的16个NAND型闪速存储器晶片#17~#32可组成第二存储体。存储体是作为用于利用存储体交错使多个存储器模块并行动作的单位而发挥功能的。在图5的构成例中,利用16通道、及使用2个存储体的存储体交错,能够使最大32个NAND型闪速存储器晶片并行动作。
在本实施方式中,控制器4可对分别由多个块BLK构成的多个块(以下称为超级块)进行管理,也可以超级块的单位执行删除动作。
超级块并不限定于此,也可以包含从NAND型闪速存储器晶片#1~#32逐个选择的合计32个块BLK。另外,NAND型闪速存储器晶片#1~#32分别也可以具有多平面构成。例如,当NAND型闪速存储器晶片#1~#32分别具有包含2个平面的多平面构成时,一个超级块也可以包含从与NAND型闪速存储器晶片#1~#32对应的64个平面逐个选择的合计64个块BLK。在图5中,例示了以下情况:一个超级块SB由从NAND型闪速存储器晶片#1~#32逐个选择的合计32个块BLK(图4中以粗框围住的块BLK)构成。
如图3所示,控制器4包含主机接口11、CPU12、NAND接口13、及DRAM接口14等。所述CPU12、NAND接口13、DRAM接口14经由总线10相互连接。
该主机接口11是构成为执行与主机2的通信的主机接口电路。该主机接口11例如也可以是PCIe控制器(NVMe控制器)。主机接口11从主机2接收各种请求(命令)。这些请求(命令)中包含写入请求(写入命令)、读取请求(读取命令)、及其他各种请求(命令)。
CPU12是构成为对主机接口11、NAND接口13、DRAM接口14进行控制的处理器。CPU12响应闪速储存装置3的电源接通,从NAND型闪速存储器5或者未图示的ROM加载控制程序(固件)到DRAM6,然后执行该固件,由此执行各种处理。另外,固件也可以加载到控制器4内的未图示的SRAM上。该CPU12可执行用于对来自主机2的各种命令进行处理的命令处理等。CPU12的动作是由CPU12执行的所述固件控制的。另外,也可以通过控制器4内的专用硬件来执行一部分或者全部命令处理。
CPU12可作为API设定/选择部20、写入动作控制部21、读取动作控制部22、及GC动作控制部23发挥功能。
API设定/选择部20基于来自主机2的请求,对每个区域设定应使用的API。此外,API设定/选择部20基于从主机2接收的读取/写入请求所含的ID,选择应使用于读取/写入存取的API。
写入动作控制部21可执行与所述多种API对应的多种写入处理。读取动作控制部22也可执行与所述多种API对应的多种读取处理。同样地,GC动作控制部23也可执行与所述多种API对应的多种GC动作。
<与物理地址API(类型#1)对应的写入处理>
在物理地址API(类型#1)中,写入动作控制部21从主机2接收指定逻辑地址的写入请求(写入命令)。逻辑地址是能够识别应写入的数据(用户数据)的标识符,例如可为LBA,或者可为比如键值存储器的键值这样的标签,还可以是键值的哈希值。
当接收到写入命令时,写入动作控制部21首先决定应写入来自主机2的数据的块(写入目标块)及该块内的位置(写入目标位置)。接着,写入动作控制部21将来自主机2的数据(写入数据)写入该写入目标块的写入目标位置。这种情况下,写入动作控制部21不仅可将来自主机2的数据写入,还可将该数据与该数据的逻辑地址两者写入到写入目标块。然后,写入动作控制部21将指定的逻辑地址、及表示写入了数据(写入数据)的NAND型闪速存储器5内的位置(物理存储位置)的物理地址返回给主机2。
这种情况下,该物理地址由(1)该写入目标块的块编号、及(2)表示该写入目标块内的写入目标位置的块内偏移表示。块编号是指定写入了数据的块的标识符。块编号可使用能够唯一地识别多个块内的任意一个的各种值。
块内偏移是表示写入目标块内的位置的块内物理地址。该块内偏移表示从写入目标块的开头到写入目标位置为止的偏移、即相对于写入目标块的开头的写入目标位置的偏移。从写入目标块的开头到写入目标位置为止的偏移的大小以具有不同于页大小的大小的粒度(Grain)的倍数表示。粒度(Grain)是存取单位。粒度(Grain)的大小的最大值被限制为最大为块大小。换句话说,块内偏移将从写入目标块的开头到写入目标位置为止的偏移以具有不同于页大小的大小的粒度的倍数表示。
粒度(Grain)也可以具有比页大小小的大小。例如,当页大小为16K字节时,粒度(Grain)的大小可以为4K字节。这种情况下,在某一个块中,规定各大小为4K字节时的多个偏移位置。与块内的最初的偏移位置对应的块内偏移例如为0,与块内的下一偏移位置对应的块内偏移例如为1,与块内的再下一偏移位置对应的块内偏移例如为2。
或者,粒度(Grain)也可以具有比页大小大的大小。例如,粒度(Grain)也可以是页大小的数倍的大小。当页大小为16K字节时,粒度可为32K字节的大小。
像这样,写入动作控制部21自身决定应写入数据的块及该块内的位置两者,然后将表示应写入来自主机2的数据(用户数据)的位置的物理地址通知给主机2。该物理地址可使用块编号及块内偏移。由块编号指定的块可以是物理块,也可以是所述超级块。
主机2可不在意块大小、页写入顺序制约、坏页、页大小等地,将用户数据写入NAND型闪速存储器5,而且可将块编号及块内偏移表示的物理地址映射到该用户数据的逻辑地址。
<与物理地址API(类型#1)对应的读取处理>
在物理地址API(类型#1)中,读取动作控制部22从主机2接收指定物理地址(即,块编号及块内偏移(块内物理地址))的读取请求(读取命令)。当从主机2接收到读取命令时,读取动作控制部22基于所述块编号及块内偏移从NAND型闪速存储器5读取数据。读取对象的块是通过块编号特定的。所述块内的读取对象的物理存储位置是通过块内偏移特定的。
为了获得读取对象的物理存储位置,读取动作控制部22首先将该块内偏移除以表示页大小的粒度的数(于此为4),然后将通过该除算获得的商及余数,分别作为读取对象的页编号及读取对象的页内偏移而决定。
<与物理地址API(类型#1)对应的GC动作>
在物理地址API(类型#1)中,GC动作控制部23从NAND型闪速存储器5内的多个块中选择用于无用单元收集的复制源块(GC源块)及复制目标块(GC目标块)。这种情况下,GC动作控制部23通常会选择多个复制源块(GC源块)、及一个以上复制目标块(GC目标块)。用于选择复制源块(GC源块)的条件(GC策略)可以由主机2指定。例如,可以使用将有效数据量最少的块优先选择为复制源块(GC源块)的GC策略,也可以使用其他的GC策略。像这样,复制源块(GC源块)及复制目标块(GC目标块)的选择并非由主机2执行,而是由闪速储存装置3的控制器4(GC动作控制部23)执行的。控制器4也可以使用各块管理表来管理各块的有效数据量。
有效数据/无效数据的管理也可以使用块管理表32执行。该块管理表32例如在每个块中存在。在与某个块对应的块管理表32中,储存着表示该块内的各数据的有效/无效的位图标识。于此,所谓有效数据,是指从LUT参照的数据(即根据逻辑地址作为最新的数据建立关联的数据),之后有从主机2读取的可能性的数据。所谓无效数据,是指已经没有从主机2读取的可能性的数据。例如,与某个逻辑地址建立关联的数据是有效数据,未与任何逻辑地址建立关联的数据是无效数据。
GC动作控制部23决定应写入复制源块(GC源块)内储存的有效数据的复制目标块(GC目标块)内的位置(复制目标位置),并将有效数据复制到复制目标块(GC目标块)的所述决定的位置(复制目标位置)。这种情况下,GC动作控制部23也可以将有效数据及该有效数据的逻辑地址两者复制到复制目标块(GC目标块)。GC动作控制部23也可以通过参照与复制源块(GC源块)对应的块管理表32,来特定GC源块内的有效数据。或者,在其他实施方式中,也可以由主机2执行有效数据/无效数据的管理。这种情况下,GC动作控制部23也可以从主机2接收表示GC源块内的各数据的有效/无效的信息,并基于该接收到的信息,特定出GC源块内的有效数据。
并且,GC动作控制部23将复制的有效数据的逻辑地址、复制目标块(GC目标块)的块编号、以所述粒度的倍数表示从复制目标块(GC目标块)的开头到复制目标位置为止的偏移的块内偏移通知给主机2。
如上所述,写入动作控制部21可将来自主机2的数据(写入数据)及来自主机2的逻辑地址两者写入到写入目标块。因此,GC动作控制部23可容易地从该复制源块(GC源块)获取复制源块(GC源块)内的各数据的逻辑地址,因此可容易地将复制的有效数据的逻辑地址通知给主机2。
<与物理地址API(类型#2)对应的写入处理>
在物理地址API(类型#2)中,写入动作控制部21从主机2接收指定块编号及逻辑地址的写入请求(写入命令)。逻辑地址是能够识别应写入的数据(用户数据)的标识符,例如可为LBA,或者可以是比如键值存储器的键值这样的标签,也可以是键值的哈希值。当接收到写入命令时,写入动作控制部21首先决定应写入来自主机2的数据的、具有所指定的块编号的块(写入目标块)内的位置(写入目标位置)。接着,写入动作控制部21将来自主机2的数据(写入数据)写入到所述写入目标块的写入目标位置。这种情况下,写入动作控制部21不仅可写入来自主机2的数据,还能将该数据及该数据的逻辑地址两者写入到写入目标块。
并且,写入动作控制部21更新对各逻辑地址与该块的各块内物理地址之间的映射进行管理的块内LUT,将表示该写入目标块的所述写入目标位置的块内物理地址映射到写入数据的逻辑地址。
这种情况下,该块内物理地址是由表示该写入目标块内的写入目标位置的块内偏移表示的。
像这样,写入动作控制部21自身决定具有来自主机2的块编号的块内的写入目标位置,然后将来自主机2的写入数据写入到该块内的该写入目标位置。然后,写入动作控制部21更新与该块对应的块内LUT,将表示写入目标位置的块内物理地址(块内偏移)映射到写入数据的逻辑地址。由此,闪速储存装置3让主机2处理块编号,并可隐藏页写入顺序制约、坏页、页大小等。
结果,主机2可识别块边界,可不在意页写入顺序制约、坏页、页大小地,管理哪个用户数据存在于哪个块编号。
<与物理地址API(类型#2)对应的读取处理>
在物理地址API(类型#2)中,读取动作控制部22从主机2接收指定逻辑地址及块编号的读取请求(读取命令)。逻辑地址是能够识别应写入的数据(用户数据)的标识符,例如可为LBA,或者可为比如键值存储器的键值这样的标签,还可为键值的哈希值。当从主机2接收到读取命令时,读取动作控制部22使用该逻辑地址,参照与具有由该读取请求指定的块编号的块对应的块内LUT32。由此,读取动作控制部22可获取储存着与该逻辑地址对应的数据的该块的块内物理地址(块内偏移)。并且,读取动作控制部22基于由读取请求指定的块编号、及获取的块内物理地址,从NAND型闪速存储器5读取与该逻辑地址对应的数据。
这种情况下,读取对象的块是由块编号特定的。该块内的读取对象的物理存储位置是由块内偏移特定的。为了获得读取对象的物理存储位置,读取动作控制部22也可以首先将该块内偏移除以表示页大小的粒度的数(于此为4),然后将通过该除算所得的商及余数,分别决定为读取对象的页编号及读取对象的页内偏移。
<与物理地址API(类型#2)对应的GC动作>
在物理地址API(类型#2)中,GC动作控制部23从主机2接收GC控制命令,该GC控制命令指定用于NAND型闪速存储器5的无用单元收集的复制源块编号(GC源块编号)及复制目标块编号(GC目标块编号)。当从主机2接收到GC控制命令时,GC动作控制部23从NAND型闪速存储器5的多个块中,选择具有指定的复制源块编号的块、及具有指定的复制目标块编号的块作为复制源块(GC源块)及复制目标块编号(GC目标块)。GC动作控制部23决定应写入选择的GC源块中储存的有效数据的GC目标块内的复制目标位置,并将有效数据复制到GC目标块内的复制目标位置。
并且,GC动作控制部23以将映射到有效数据的逻辑地址的块内物理地址(块内偏移),从表示储存着该有效数据的GC源块内的复制源位置的块内物理地址,变更为表示GC目标块内的复制目标位置的块内物理地址的方式,更新与GC源块对应的块内LUT及与GC目标块对应的块内LUT。
如上所述,GC动作控制部23决定应写入复制源块(GC源块)内储存的有效数据的复制目标块(GC目标块)内的位置(复制目标位置),并将有效数据复制到复制目标块(GC目标块)的该决定的位置(复制目标位置)。这种情况下,GC动作控制部23也可以将有效数据及该有效数据的逻辑地址两者复制到复制目标块(GC目标块)。
如上所述,写入动作控制部21可将来自主机2的数据(写入数据)及来自主机2的逻辑地址两者写入到写入目标块。因此,GC动作控制部23可容易地从该复制源块(GC源块)获取复制源块(GC源块)内的各数据的逻辑地址,因此可容易地更新与复制源块对应的块内LUT及与复制目标块对应的块内LUT。
<与物理地址API(类型#3)对应的写入处理>
物理地址API(类型#3)是物理地址API(类型#2)与物理地址API(类型#1)的中间的API。不同于物理地址API(类型#2),在物理地址API(类型#3)中并不使用块内LUT。
在物理地址API(类型#3)中,写入动作控制部21从主机2接收指定块编号及逻辑地址的写入请求(写入命令)。逻辑地址是能够识别应写入的数据(用户数据)的标识符,例如可为LBA,或者可为比如键值存储器的键值这样的标签,也可以为键值的哈希值。当接收到写入命令时,写入动作控制部21首先决定应写入来自主机2的数据的具有该指定的块编号的块(写入目标块)内的位置(写入目标位置)。然后,写入动作控制部21将来自主机2的数据(写入数据)写入到该写入目标块的写入目标位置。这种情况下,写入动作控制部21不仅可写入来自主机2的数据,还可将该数据及该数据的逻辑地址两者写入到写入目标块。
并且,写入动作控制部21将表示该写入目标块的所述写入目标位置的块内物理地址通知给主机2。该块内物理地址是由表示该写入目标块内的写入目标位置的块内偏移表示的。
像这样,写入动作控制部21自身决定具有来自主机2的块编号的块内的写入目标位置,然后将来自主机2的写入数据写入到该块内的该写入目标位置。并且,写入动作控制部21将表示该写入目标位置的块内物理地址(块内偏移)作为与写入请求对应之响应(返回值)通知给主机2。或者,写入动作控制部21也可以并非只将块内物理地址(块内偏移)通知给主机2,而是将逻辑地址、块编号及块内物理地址(块内偏移)的组通知给主机2。
因此,闪速储存装置3可让主机2处理块编号,并隐藏页写入顺序制约、坏页、页大小等。
结果,主机2可识别块边界,可不在意页写入顺序制约、坏页、页大小地,管理哪个用户数据存在于哪个块编号。
<与物理地址API(类型#3)对应的读取处理>
在物理地址API(类型#3)中,读取动作控制部22从主机2接收指定物理地址(即块编号及块内偏移)的读取请求(读取命令)。当从主机2接收到读取命令时,读取动作控制部22基于所述块编号及块内偏移,从读取对象的块内的读取对象的物理存储位置读取数据。读取对象的块由块编号特定。该块内的读取对象的物理存储位置由块内偏移特定。
为了获得读取对象的物理存储位置,读取动作控制部22也可以首先将该块内偏移除以表示页大小的粒度的数(当页大小为16K字节、粒度(Grain)为4K字节时,表示页大小的粒度的数为4),然后将通过该除算所得的商及余数,分别决定为读取对象的页编号及读取对象的页内偏移。
<与物理地址API(类型#3)对应的GC动作>
在物理地址API(类型#3)中,GC动作控制部23从主机2接收GC控制命令,该GC控制命令指定用于NAND型闪速存储器5的无用单元收集的复制源块编号(GC源块编号)及复制目标块编号(GC目标块编号)。当从主机2接收到GC控制命令时,GC动作控制部23从NAND型闪速存储器5的多个块中选择具有指定的复制源块编号的块及具有指定的复制目标块编号的块,作为复制源块(GC源块)及复制目标块(GC目标块)。GC动作控制部23决定应写入选择的GC源块中储存的有效数据的GC目标块内的复制目标位置,并将有效数据复制到GC目标块内的复制目标位置。并且,GC动作控制部23将有效数据的逻辑地址、复制目标块编号、表示GC目标块内的复制目标位置的块内物理地址(块内偏移)通知给主机2。
NAND接口13是构成为在CPU12的控制之下控制NAND型闪速存储器5的存储器控制电路。DRAM接口14是构成为在CPU12的控制之下控制DRAM6的DRAM控制电路。DRAM6的部分存储区域用于储存写入缓冲器(WB)31。此外,DRAM6的另一部分存储区域用于储存块管理表32。在使用物理地址API(类型#2)的情况下,DRAM6的另一部分存储区域用于储存块内LUT。另外,所述写入缓冲器(WB)31、块管理表32、块内LUT也可以储存到控制器4内的未图示的SRAM中。
图6表示扩展命名空间管理命令。
扩展命名空间管理命令是用于创建或删除区域(于此为命名空间)的管理命令。
扩展命名空间管理命令包含以下参数。
(1)创建/删除
(2)LBA范围
(3)物理资源大小
(4)API类型
创建/删除的参数的值0h向SSD3请求命名空间的创建。创建/删除的参数的值1h向SSD3请求命名空间的删除。当请求命名空间的删除时,将表示删除对象的命名空间的ID的参数设定为扩展命名空间管理命令。
LBA范围的参数表示命名空间的LBA范围(LBA0~n-1)。该LBA范围映射到该命名空间的用户区域。
物理资源大小的参数表示应用于确保命名空间的块的个数。
在其他实施方式中,扩展命名空间管理命令也可以包含表示冗余容量的大小的参数来代替物理资源大小的参数。
冗余容量的大小的参数表示应用于确保与命名空间关联的区域内的冗余容量区域的块的个数。若扩展命名空间管理命令包含冗余容量的大小的参数,则SSD3也可以创建命名空间,且向与该命名空间关联的区域内的冗余容量区域分配由该参数指定的个数的块。
API类型的参数的值与API类型的关系如以下所示。
000:LBA API
001:物理地址API(类型#1)
010:物理地址API(类型#2)
011:物理地址API(类型#3)
100:键值API
101:其他API(例如可变长度LUT)
图7表示由闪速储存装置3执行的区域(于此为命名空间)创建处理。
主机2将请求命名空间的创建的扩展命名空间管理命令发送给SSD3。该扩展命名空间管理命令包含指定应用于确保创建对象的区域(于此为命名空间)的块的个数的物理资源大小参数、以及指定应对创建对象的区域(于此为命名空间)设定的API类型的API类型参数。SSD3内的一个块的容量会从SSD3报告给主机2,因此主机2可请求适合创建对象的区域(于此为命名空间)的个数的块。此外,主机2可指定适合创建对象的区域(于此为命名空间)的API。例如,当创建能够启动操作系统的可启动区域时,主机2指定LBA API即可。此外,当创建I/O性能应优先的区域时,主机2指定物理地址API(类型#1)、物理地址API(类型#2)、或者物理地址API(类型#3)即可。
响应于该扩展命名空间管理命令的接收,SSD3的控制器4创建命名空间(NS#0),预约对该命名空间(NS#0)指定的个数的块,并将该命名空间(NS#0)的API类型设定为指定种类的API类型(步骤S1)。控制器4将表示命令结束的响应发送给主机2。该响应也可以包含创建的命名空间的ID。
主机2将请求下一命名空间的创建的扩展命名空间管理命令发送给SSD3。该扩展命名空间管理命令包含指定应用于确保创建对象的区域(于此为命名空间)的块的个数的物理资源大小参数、以及指定应对创建对象的区域(于此为命名空间)设定的API类型的API类型参数。响应于该扩展命名空间管理命令的接收,SSD3的控制器4创建命名空间(NS#1),预约对该命名空间(NS#1)指定的个数的块,并将该命名空间(NS#1)的API类型设定为指定种类的API类型(步骤S2)。控制器4将表示命令结束的响应发送给主机2。该响应也可以包含创建的命名空间的ID。
同样地,主机2将请求又一命名空间的创建的扩展命名空间管理命令发送给SSD3。该扩展命名空间管理命令包含指定应用于确保创建对象的区域(于此为命名空间)的块的个数的物理资源大小参数、以及指定应对创建对象的区域(于此为命名空间)设定的API类型的API类型参数。响应于该扩展命名空间管理命令的接收,SSD3的控制器4创建命名空间(NS#n),预约对该命名空间(NS#n)指定的个数的块,并将该命名空间(NS#n)的API类型设定为指定种类的API类型(步骤S3)。控制器4将表示命令结束的响应发送给主机2。该响应也可以包含创建的命名空间的ID。
像这样,通过反复进行创建命名空间的处理,将NAND型闪速存储器5逻辑分割成多个区域,并对每个区域设定API类型。各区域与各API类型之间的对应关系是由闪速储存装置3的控制器4管理的API类型管理表进行管理的。
闪速储存装置3的控制器4从主机2接收包含表示存取对象的区域的标识符(命名空间的ID:NSID)的命令(读取命令、写入命令、GC控制命令等)。然后,控制器4基于接收到的命令所含的NSID、及API类型管理表,选择应使用的API。
以下,详细说明物理地址API(类型#1)、物理地址API(类型#2)、物理地址API(类型#3)。
这些物理地址API(类型#1)、物理地址API(类型#2)、物理地址API(类型#3)中使用的各种命令分别包含指定某个区域(于此为命名空间)的NSID,在以下的各命令的说明中,主要说明命令的特征,省略NSID的说明。
<物理地址API(类型#1)的详细>
首先,参照图8~图35,说明物理地址API(类型#1)。
图8表示传统型SSD与主机之间的任务分担、及支持物理地址API(类型#1)的闪速储存装置3与主机2之间的任务分担。
图8的左部分表示包含传统型SSD及执行虚拟盘服务的主机的计算机系统整体的层级结构。
在主机(服务器)中,执行用于向多个最终用户提供多个虚拟机的虚拟机服务101。虚拟机服务101上的各虚拟机中,执行由对应的最终用户使用的操作系统及用户应用程序102。
此外,在主机(服务器)中,执行与多个用户应用程序102对应的多个虚拟盘服务103。各虚拟盘服务103是将传统型SSD内的储存器资源的部分容量分配为对应的用户应用程序102用的储存器资源(虚拟盘)。在各虚拟盘服务103中,还使用应用级地址转换表,执行将应用级的逻辑地址转换成SSD用逻辑地址的应用级地址转换。而且,主机中还执行应用级GC104。
从主机(服务器)向传统型SSD的命令发送及从传统型SSD向主机(服务器)的命令结束的响应返回,是经由主机(服务器)及传统型SSD中分别存在的I/O队列200执行的。
传统型SSD包含写入缓冲器(WB)301、查找表(LUT)302、无用单元收集功能303、NAND型闪速存储器(NAND闪存阵列)304。传统型SSD只管理一个查找表(LUT)302,NAND型闪速存储器(NAND闪存阵列)304的资源则是由多个虚拟盘服务103共用。
该构成中,因包含虚拟盘服务103下的应用级GC104及传统型SSD内的无用单元收集功能303(LUT级GC)的重复GC,写入扩增变大。此外,传统型SSD中,因来自某个最终用户或者某个虚拟盘服务103的数据写入量增加,GC的频度增加,由此会产生对其他最终用户或者其他虚拟盘服务103的I/O性能劣化等相邻噪声问题。
此外,因包含各虚拟盘服务内的应用级地址转换表及传统型SSD内的LUT302的重复资源的存在,消耗了大量的存储器资源。
图8的右部分表示包含支持物理地址API(类型#1)的闪速储存装置3及主机2的计算机系统整体的层级结构。
在主机(服务器)2中,执行用于向多个最终用户提供多个虚拟机的虚拟机服务401。在虚拟机服务401上的各虚拟机中,执行由对应的最终用户使用的操作系统及用户应用程序402。
此外,在主机(服务器)2中,执行与多个用户应用程序402对应的多个I/O服务403。这些I/O服务403中也可以包含基于LBA的块I/O服务、键值存储器服务等。各I/O服务403包含查找表(LUT),该查找表(LUT)对各逻辑地址与闪速储存装置3的各物理地址之间的映射进行管理。于此,所谓逻辑地址是指能够识别存取对象的数据的标识符。该逻辑地址可为指定逻辑地址空间上的位置的逻辑块地址(LBA),或者也可为键值存储器的键值(标签)。
在基于LBA的块I/O服务中,也可以使用对各逻辑地址(LBA)与闪速储存装置3的各物理地址之间的映射进行管理的LUT。
在键值存储器服务中,也可以使用对各逻辑地址(即,比如键值这样的标签)、与储存由与这些逻辑地址(即比如键值这样的标签)对应的数据的闪速储存装置3的各物理地址之间的映射进行管理的LUT。该LUT中,也可以管理标签、储存着利用该标签识别的数据的物理地址、该数据的数据长度的对应关系。
各最终用户可选择应使用的定址方法(LBA、键值存储器的键值等)。
所述各LUT并非将来自用户应用程序402的各逻辑地址转换成闪速储存装置3用的各逻辑地址,而是将来自用户应用程序402的各逻辑地址转换成闪速储存装置3的各物理地址。即,所述各LUT是将闪速储存装置3用的逻辑地址转换成物理地址的表、与应用级地址转换表统合(合并)而成的表。
在主机(服务器)2中,每个所述QoS域均存在I/O服务403。属于某个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。
在该图8的右部分所示的构成中,传统型SSD内的LUT302与应用级地址转换表作为I/O服务403内的一个LUT而合并,因此能减少地址转换信息的储存所消耗的存储器资源的量。此外,地址转换阶段数减少,因此可提升I/O性能。
而且,并非包含应用级GC与LUT级GC的重复GC,而是只有闪速储存装置3执行用于GC(统一GC)的数据复制。因此,与执行重复GC的构成相比,能大幅减少系统整体的写入扩增。结果,能改善I/O性能,且能使闪速储存装置3的寿命最大化。
图9表示物理地址API(类型#1)中使用的写入命令。
写入命令是向闪速储存装置3请求数据写入的命令。该写入命令也可以包含命令ID、QoS域ID、逻辑地址、长度等。
命令ID是表示该命令是写入命令的ID(命令编码),写入命令中包含写入命令用的命令ID。
QoS域ID能够唯一地识别应写入数据的QoS域的标识符。根据来自某个最终用户的写入请求而从主机2发送的写入命令也可以包含指定与该最终用户对应的QoS域的QoS域ID。命名空间ID也可以被用作QoS域ID。
逻辑地址是用于识别应写入的写入数据的标识符。该逻辑地址如上所述可以是LBA,也可以是键值存储器的键值。当逻辑地址是LBA时,该写入命令所含的逻辑地址(开始LBA)表示应写入写入数据的逻辑位置(最初的逻辑位置)。
长度表示应写入的写入数据的长度。该长度(数据长度)可由粒度(Grain)的数指定,也可以由LBA的数指定,或者其大小还可以用字节指定。
控制器4可以NAND型闪速存储器5内的多个块的每一个只属于一个组的方式将NAND型闪速存储器5内的多个块分类成多个组(多个QoS域)。并且,控制器4可按每个组(QoS域)管理空闲块列表(空闲块池)及活动块列表(活动块池)。
各块的状态大致分为储存着有效数据的活动块、及未储存有效数据的空闲块。作为活动块的各块由活动块列表管理。另一方面,作为空闲块的各块由空闲块列表管理。
当从主机2接收到写入命令时,控制器4决定应写入来自主机2的数据的块(写入目标块)及该写入目标块内的位置(写入目标位置)。控制器4也可以将属于与QoS域ID对应的QoS域的空闲块群中的一个决定为写入目标块。写入目标位置是考虑了页写入顺序的制约及坏页等而决定的。并且,控制器4将来自主机2的数据写入到写入目标块内的写入目标位置。
另外,若该写入目标块整体写满了用户数据,则控制器4将该写入目标块移动到活动块列表(活动块池)。并且,控制器4再次从与该QoS域对应的空闲块列表选择空闲块,并将该选择的空闲块分配为新的写入目标块。
当空闲块列表管理的剩下的空闲块的数量低于特定策略规定的阈值以下时、或者主机2指示实施无用单元收集时,控制器4也可以开始该QoS域的无用单元收集。
该QoS域的无用单元收集中,控制器4从与该QoS域对应的活动块群选择复制源块(GC源块)及复制目标块(GC目标块)。选择哪个块作为GC候补(复制源块),可按照主机2指定的所述策略决定,也可以由主机2指定。当也基于策略进行选择时,例如可选择有效数据量最少的块作为GC候补(复制源块)。
图10表示与图9的写入命令相对的响应。
该响应包含逻辑地址、物理地址、长度。
逻辑地址是图9的写入命令中包含的逻辑地址。
物理地址表示根据图9的写入命令而写入了数据的NAND型闪速存储器5内的物理存储位置。支持物理地址API(类型#1)的闪速储存装置3中,该物理地址是通过块编号与偏移(块内偏移)的组合来指定的。块编号是能够唯一地识别闪速储存装置3内的所有块的任意一个的标识符。当对所有块附加了不同块编号时,也可以直接使用这些块编号。或者,块编号也可以通过晶片编号、晶片内块编号的组合来表现。长度表示应写入的写入数据的长度。该长度(数据长度)可由粒度(Grain)的数指定,也可以由LBA的数指定,或者其大小还可以用字节指定。
图11表示物理地址API(类型#1)中使用的Trim命令。
该Trim命令是包含表示储存着应无效的数据的物理存储位置的块编号及块内偏移的命令。即,该Trim命令并非可指定比如LBA这样的逻辑地址,而是可指定物理地址。该Trim命令包含命令ID、物理地址、长度。
命令ID是表示该命令是Trim命令的ID(命令编码),Trim命令中包含Trim命令用的命令ID。
物理地址表示储存着应无效化的数据的最初的物理存储位置。支持物理地址API(类型#1)的闪速储存装置3中,该物理地址是通过块编号与偏移(块内偏移)的组合指定的。
长度表示应无效化的数据的长度。该长度(数据长度)可由粒度(Grain)的数指定,也可以由字节指定。
控制器4使用块管理表32管理表示多个块分别包含的各数据的有效/无效的标识(位图标识)。当从主机2接收到包含表示储存着应无效的数据的物理存储位置的块编号及偏移(块内偏移)的Trim命令时,控制器4更新块管理表32,将将与Trim命令所含的块编号及块内偏移对应的物理存储位置的数据所对应的标识(位图标识)变更为表示无效的值。
图12表示对图10的响应所含的物理地址进行规定的块编号及偏移(块内偏移)的例子。
块编号指定某一个块BLK。各块BLK如图12所示包含多个页(于此为页0~页n)。
当页大小(各页的用户数据储存区域)为16K字节、粒度(Grain)为4KB的大小的情况下,将该块BLK逻辑分割成4×(n+1)个区域。
偏移+0表示页0的最初的4KB区域,偏移+1表示页0的第2个4KB区域,偏移+2表示页0的第3个4KB区域,偏移+3表示页0的第4个4KB区域。
偏移+4表示页1的最初的4KB区域,偏移+5表示页1的第2个4KB区域,偏移+6表示页1的第3个4KB区域,偏移+7表示页1的第4个4KB区域。
图13表示根据写入命令执行的写入动作与相对于该写入命令的响应所含的返回值的关系。
闪速储存装置3的控制器4利用空闲块列表管理不含有效数据的空闲块群,从这些空闲块群中选择一个块(空闲块),并将选择的块分配为写入目标块。以下假设将块BLK#1分配为写入目标块的情况。控制器4按照页0、页1、页2、…页n的顺序将数据以页单位写入块BLK#1。
在图13中,假设在块BLK#1的页0中已写入16K字节的数据的状态下,从主机2接收到指定逻辑地址(LBAx)及长度(=4)的写入命令的情况。控制器4将块BLK#1的页1决定为写入目标位置,将从主机2接收的16K字节的写入数据写入到块BLK#1的页1。然后,控制器4将相对于该写入命令的响应(逻辑地址、块编号、偏移(块内偏移)、长度)返回给主机2。该情况下,逻辑地址是LBAx,块编号是BLK#1,偏移(块内偏移)为+5,长度为4。
图14表示跳过不良页(坏页)的写入动作。
在图14中,假设在块BLK#1的页0、页1中已写满数据的状态下,从主机2接收到指定逻辑地址(LBAx+1)及长度(=4)的写入命令的情况。若块BLK#1的页2为不良页,则控制器4将块BLK#1的页3决定为写入目标位置,并将从主机2接收的16K字节的写入数据写入到块BLK#1的页3。然后,控制器4将相对于该写入命令的响应(逻辑地址、块编号、偏移(块内偏移)、长度)返回给主机2。该情况下,逻辑地址为LBAx+1,块编号是BLK#1,偏移(块内偏移)为+12,长度是4。
图15表示跳过不良页的写入动作的另一例。
在图15中,假设跨过夹着不良页的2个页而写入数据的情况。以下,假设块BLK#2的页0、页1中已写满数据,且写入缓冲器31中残留未写入的8K字节的写入数据。在此状态下,若接收到指定逻辑地址(LBAy)及长度(=6)的写入命令,则控制器4使用未写入的8K字节写入数据、及从主机2新接收的24K字节写入数据内的最初的8K字节写入数据,准备与页大小对应的16K字节写入数据。然后,控制器4将所述准备的16K字节写入数据写入到块BLK#2的页2。
若块BLK#2的下一页3为不良页,则控制器4将块BLK#2的页4决定为下一写入目标位置,并将从主机2接收到的24K字节写入数据内的剩下的16K字节写入数据写入到块BLK#2的页4。
并且,控制器4将相对于该写入命令的响应(逻辑地址、块编号、偏移(块内偏移)、长度)返回给主机2。该情况下,该响应也可以包含LBAy、块编号(=BLK#2)、偏移(=+10)、长度(=2)、块编号(=BLK#2)、偏移(=+16)、长度(=4)。
图16、图17表示将逻辑地址与数据的对写入到块内的页的动作。
各块中,各页也可以包含用于储存用户数据的用户数据区域及用于储存管理数据的冗余区域。页大小为16KB+α。
控制器4将4KB用户数据及与该4KB用户数据对应的逻辑地址(例如LBA)两者写入到写入目标块BLK。这种情况下,如图16所示,也可以将分别包含LBA及4KB用户数据的4个数据集写入同一页块内偏移也可以表示集合边界。
或者,如图17所示,也可以将4个4KB用户数据写入到页内的用户数据区域,将与这4个4KB用户数据对应的4个LBA写入到该页内的冗余区域。
图18表示使用超级块时的块编号与偏移(块内偏移)的关系。以下,块内偏移也只作为偏移参照。
于此,为了简化图示,假设某一个超级块SB#1由4个块BLK#11、BLK#21、BLK#31、BLK#41构成的情况。控制器4按照块BLK#11的页0、块BLK#21的页0、块BLK#31的页0、块BLK#41的页0、块BLK#11的页1、块BLK#21的页1、块BLK#31的页1、块BLK#41的页1、…的顺序写入数据。
偏移+0表示块BLK#11的页0的最初的4KB区域,偏移+1表示块BLK#11的页0的第2个4KB区域,偏移+2表示块BLK#11的页0的第3个4KB区域,偏移+3表示块BLK#11的页0的第4个4KB区域。
偏移+4表示块BLK#21的页0的最初的4KB区域,偏移+5表示块BLK#21的页0的第2个4KB区域,偏移+6表示块BLK#21的页0的第3个4KB区域,偏移+7表示块BLK#21的页0的第4个4KB区域。
同样地,偏移+12表示块BLK#41的页0的最初的4KB区域,偏移+13表示块BLK#41的页0的第2个4KB区域,偏移+14表示块BLK#41的页0的第3个4KB区域,偏移+15表示块BLK#41的页0的第4个4KB区域。
偏移+16表示块BLK#11的页1的最初的4KB区域,偏移+17表示块BLK#11的页1的第2个4KB区域,偏移+18表示块BLK#11的页1的第3个4KB区域,偏移+19表示块BLK#11的页1的第4个4KB区域。
偏移+20表示块BLK#21的页1的最初的4KB区域,偏移+21表示块BLK#21的页1的第2个4KB区域,偏移+22表示块BLK#21的页1的第3个4KB区域,偏移+23表示块BLK#21的页1的第4个4KB区域。
同样地,偏移+28表示块BLK#41的页1的最初的4KB区域,偏移+29表示块BLK#41的页1的第2个4KB区域,偏移+30表示块BLK#41的页1的第3个4KB区域,偏移+31表示块BLK#41的页1的第4个4KB区域。
例如,将与指定某个LBA(LBAx)的写入命令对应的4K字节数据写入到与偏移+8对应的位置时,控制器4也可以将逻辑地址(=LBAx)、块编号(=SB#1)、偏移(=+8)、长度(=1)作为相对于该写入命令的响应返回给主机2。
图19的顺序图表示由主机2及支持物理地址API(类型#1)的闪速储存装置3执行的写入动作处理的顺序。
主机2将包含QoS域ID、LBA、长度的写入命令发送给闪速储存装置3。闪速储存装置3的控制器4接收到该写入命令时,控制器4决定应写入来自主机2的写入数据的写入目标块及该写入目标块内的位置。更详细来说,控制器4从空闲块列表中选择一个空闲块,将选择的空闲块分配为写入目标块(步骤S11)。即,将该选择的空闲块及该选择的空闲块内的可利用的最初的页决定为应写入来自主机2的写入数据的写入目标块及该写入目标块内的位置。若写入目标块业已分配,则无需执行该步骤11中的写入目标块分配处理。将业已分配的写入目标块内的可利用的下一页决定为应写入来自主机2的写入数据的写入目标块内的位置。
控制器4也可以管理与多个QoS域对应的多个空闲块列表。在与某个QoS域对应的空闲块列表中,也可以只登录对该QoS域预约的块群。这种情况下,在步骤S12中,控制器4也可以选择与写入命令的QoS域ID指定的QoS域对应的空闲块列表,从该选择的空闲块列表中选择一个空闲块,并将该选择的空闲块分配为写入目标块。由此,可防止与不同QoS域对应的数据混杂在同一块的情况。
控制器4将从主机2接收的写入数据写入到写入目标块(步骤S12)。在步骤S12中,控制器4将逻辑地址(于此为LBA)及写入数据两者写入到写入目标块。
控制器4更新块管理表32,将与写入的数据对应的位图标识(即,与写入了该数据的物理存储位置的物理地址对应的位图标识)从0变更为1(步骤S13)。例如,如图20所示,假设将开始LBA为LBAx的16K字节更新数据写入到与块BLK#1的偏移+4~+7对应的物理存储位置的情况。这种情况下,如图21所示,在块BLK#1用的块管理表中,将与偏移+4~+7对应的位图标分别从0变更为1。
控制器4将相对于该写入命令的响应返回给主机2(步骤S14)。例如,如图20所示,若将开始LBA为LBAx的16K字节更新数据写入到与块BLK#1的偏移+4~+7对应的物理存储位置,则从控制器4将包含LBAx、块编号(=BLK1)、偏移(=+4)、长度(=4)的响应发送给控制器4。
当主机2接收到该响应时,主机2更新主机2管理的LUT,在与写入的写入数据对应的各逻辑地址上映射物理地址。如图22所示,LUT包含与多个逻辑地址(例如LBA)分别对应的多个入口。与某个逻辑地址(例如某个LBA)对应的入口中,储存着表示储存着与该LBA对应的数据的NAND型闪速存储器5内的位置(物理存储位置)的物理地址PBA、即块编号、偏移(块内偏移)。如图20所示,若将开始LBA为LBAx的16K字节更新数据写入到与块BLK#1的偏移+4~+7对应的物理存储位置,则如图22所示,更新LUT,在与LBAx对应的入口储存BLK#1、偏移+4,在与LBAx+1对应的入口储存BLK#1、偏移+5,在与LBAx+2对应的入口储存BLK#1、偏移+6,在与LBAx+3对应的入口储存BLK#1、偏移+7。
之后,主机2向闪速储存装置3发送Trim命令,该Trim命令用于使因所述更新数据的写入而变得无用的以前的数据无效化(步骤S21)。如图20所示,当以前的数据是储存在与块BLK#0的偏移+0、偏移+1、偏移+2、偏移+3对应的位置时,如图23所示,从主机2将指定块编号(=BLK#0)、偏移(=+0)、长度(=4)的Trim命令发送给闪速储存装置3。闪速储存装置3的控制器4根据该Trim命令,更新块管理表32(步骤S15)。在步骤S15中如图23所示,在块BLK#0用的块管理表中,将与偏移+0~+3对应的位图标识分别从1变更为0。
图24表示物理地址API(类型#1)中使用的读取命令。
读取命令是向闪速储存装置3请求数据读出的命令。该读取命令包含命令ID、物理地址PBA、长度、传输目标指针。
命令ID是表示该命令是读取命令的ID(命令编码),读取命令中包含读取命令用的命令ID。
物理地址PBA表示应读出数据的最初的物理存储位置。物理地址PBA由块编号、偏移(块内偏移)指定。
长度表示应读取的数据的长度。该数据长度可由Grain的数指定。
传输目标指针表示应传输读出数据的主机2内的存储器上的位置。
一个读取命令可指定多个物理地址PBA(块编号、偏移)与长度的组。
图25表示与物理地址API(类型#1)对应的读取动作。
于此,假设从主机2接收到指定块编号(=BLK#2)、偏移(=+5)、长度(=3)的读取命令的情况。闪速储存装置3的控制器4基于块编号(=BLK#2)、偏移(=+5)、长度(=3)从BLK#2读取数据d1~d3。这种情况下,控制器4从BLK#2的页1读取1个页大小的数据,并从该读取数据中抽出数据d1~数据d3。接着,控制器4将数据d1~数据d3传输到传输目标指针指定的主机存储器上。
图26的顺序图表示与物理地址API(类型#1)对应的读取处理的顺序。
主机2参照主机2管理的LUT,将来自用户应用程序的读取请求所含的逻辑地址转换成块编号、偏移。然后,主机2将指定该块编号、偏移、长度的读取命令发送给闪速储存装置3。
当闪速储存装置3的控制器4从主机2接收到读取命令时,控制器4将与该读取命令指定的块编号对应的块决定为读取对象的块,并基于该读取命令指定的偏移决定读取对象的页(步骤S31)。在步骤S31中,控制器4也可以首先将读取命令指定的偏移除以表示页大小的粒度的数(于此为4)。然后,控制器4也可以将通过该除算所得的商及余数分别决定为读取对象的页编号及读取对象的页内偏移位置。
控制器4从NAND型闪速存储器5读取由块编号、偏移、长度规定的数据(步骤S32),并将该读取数据发送给主机2。
图27表示物理地址API(类型#1)中使用的无用单元收集(GC)控制命令。
GC控制命令也可以包含命令ID、策略、源QoS域ID、目标QoS域ID等。
命令ID是表示该命令是GC控制命令的ID(命令编码),GC控制命令中包含GC控制命令用的命令ID。
策略是指定用于选择GC候补块(GC源块)的条件(GC策略)的参数。闪速储存装置3的控制器4支持多个GC策略。
控制器4支持的GC策略中也可以包含将有效数据量少的块优先选择为GC候补块(GC源块)的策略(Greedy)。
此外,控制器4支持的GC策略中也可以包含相比具有高更新频度的数据(热数据)集中的块,优先将具有低更新频度的数据(冷数据)集中的块选择为GC候补块(GC源块)的策略。
而且,GC策略也可以指定GC开始条件。GC开始条件也可以表示例如剩余空闲块的个数。
控制器4利用活动块列表管理包含有效数据的块群,当执行GC时,基于GC控制命令指定的GC策略,从活动块列表管理的块群中选择一个以上GC候补块(GC源块)。
源QoS域ID是指定应将哪个QoS域设为GC源的参数。控制器4从源QoS域ID指定的QoS域所属的块群、即与该QoS域对应的活动块列表中,选择一个以上GC候补块(GC源块)。
目标QoS域ID是指定应将哪个QoS域设为GC目标的参数。控制器4可选择目标QoS域ID指定的QoS域所属的空闲块群内的一个以上空闲块作为GC目标块。
源QoS域ID及目标QoS域ID可指定相同QoS域,也可以指定彼此不同的QoS域。即,源QoS域ID及目标QoS域ID分别是指定多个QoS域中的任意一个的参数。
控制器4也可以在与源QoS域对应的剩余空闲块的数量变成策略指定的阈值以下时,开始GC。若接收到包含指定GC强制执行的策略的GC控制命令,则控制器4也可以在从主机2接收到该GC控制命令时立即开始GC。
图28表示物理地址API(类型#1)中使用的GC用回调命令。
GC用回调命令用于向主机2通知表示通过GC复制的有效数据的逻辑地址及表示该有效数据的复制目标位置的块编号及偏移。
GC用回调命令也可以包含命令ID、逻辑地址、长度、目标物理地址、源物理地址(可选)。
命令ID是表示该命令是GC用回调命令的ID(命令编码),GC用回调命令中包含GC用回调命令用的命令ID。
逻辑地址表示通过GC从GC源块复制到GC目标块的有效数据的逻辑地址。
长度表示该复制的数据的长度。该数据长度也可以由粒度(Grain)的数指定。
目标物理地址表示复制了有效数据的GC目标块内的位置。目标物理地址由块编号、偏移(块内偏移)指定。
源物理地址(可选)表示储存着有效数据的GC源块内的位置。源物理地址由块编号、偏移(块内偏移)指定。
图29的顺序图表示与物理地址API(类型#1)对应的无用单元收集(GC)动作的步骤。
闪速储存装置3的控制器4基于主机2指定的策略,从源QoS域ID指定的QoS域所属的块群中,选择有效数据与无效数据混杂在一起的一个以上GC源块(复制源块)(步骤S41)。接着,控制器4从目标QoS域ID指定的QoS域所属的空闲块群选择一个以上空闲块,并将选择的空闲块分配为GC目标块(复制目标块)(步骤S42)。
控制器4将GC源块(复制源块)内的所有有效数据复制到GC目标块(复制目标块)(步骤S43)。在步骤S43中,控制器4不仅复制GC源块(复制源块)内的有效数据,还将该有效数据及与该有效数据对应的逻辑地址两者从GC源块(复制源块)复制到GC目标块(复制目标块)。由此,可向GC目标块(复制目标块)内保存数据与逻辑地址的对。
并且,控制器4将复制的有效数据的逻辑地址、及表示复制了该有效数据的GC目标块(复制目标块)内的位置的目标物理地址(块编号、偏移(块内偏移)),使用GC用回调命令通知给主机2(步骤S44)。另外,在步骤S44中,控制器4也可以不仅将复制的有效数据的逻辑地址及目标物理地址,还将源物理地址也通知给主机2。
当主机2接收到该GC用回调命令时,主机2更新由主机2管理的LUT,并对与复制的有效数据对应的各逻辑地址映射目标物理地址(步骤S51)。
图30表示用于执行无用单元收集(GC)的数据复制动作的例子。
图30中,假设将储存在与GC源块(于此为块BLK#50)的偏移+4对应的位置的有效数据(LBA=10),复制到与GC目标块(于此为块BLK#100)的偏移+0对应的位置,并将储存在与GC源块(于此为块BLK#50)的偏移+10对应的位置的有效数据(LBA=20),复制到与GC目标块(于此为块BLK#100)的偏移+1对应的位置。这种情况下,控制器4将{LBA10、BLK#100、偏移(=+0)、LBA20、BLK#100、偏移(=+1)}通知给主机(GC用回调处理)。
图31表示基于图30的数据复制动作的结果而更新的主机2的LUT的内容。
该LUT中,与LBA10对应的块编号及偏移从BLK#50、偏移(=+4)更新为BLK#100、偏移(=+0)。同样地,与LBA20对应的块编号及偏移从BLK#50、偏移(=+10)更新为BLK#100、偏移(=+1)。
更新LUT之后,主机2也可以将指定BLK#50及偏移(=+4)的Trim命令发送给闪速储存装置3,将储存在与BLK#50的偏移(=+4)对应的位置的数据无效化。而且,主机2也可以将指定BLK#50及偏移(=+10)的Trim命令发送给闪速储存装置3,将储存在与BLK#50的偏移(=+10)对应的位置的数据无效化。
图32表示相对于写入命令的响应与GC用回调处理的关系。
在控制器4复制与某个逻辑地址对应的有效数据的期间,有时会发生从主机2接收到指定该逻辑地址的写入命令的情况。
图32中,假设了在图30的数据复制动作(与LBA10对应的数据复制动作)执行过程中,从主机2接收到指定LBA10的写入命令的情况。
控制器4将从主机2接收的写入数据写入到写入目标块(于此,写入到与BLK#3的偏移+0对应的位置)。并且,控制器4将{LBA10、BLK#3、偏移(=+0)}通知给主机2。
主机2更新LUT,将与LBA10对应的块编号及偏移从BLK#50、偏移(+4)变更为BLK#3、偏移(+0)。
若之后从控制器4向主机2通知LBA10的目标物理地址,则会有将表示储存着与LBA10对应的最新数据的位置的块编号及偏移(BLK#3、偏移(+0))误变更为与LBA10对应的目标物理地址(于此为BLK#100、偏移(=+0))的可能性。
在支持物理地址API(类型#1)的闪速储存装置3中,控制器4不仅将LBA10及目标物理地址(BLK#100、偏移(=+0)),还将源物理地址(BLK#50、偏移(=+4))通知给主机2。主机2在源物理地址(BLK#50、偏移(=+4))、与利用LUT对LBA10当前映射的块编号、偏移不一致时,不更新LUT。由此,可防止将表示储存着与LBA10对应的最新数据的位置的块编号及偏移(BLK#3、偏移(+0)),误变更为与LBA10对应的目标物理地址(于此为BLK#100、偏移(=+0))的情况。
图33表示物理地址API(类型#1)中使用的无用单元收集(GC)控制命令的另一例。
该图33的GC控制命令也可以代替指定源QoS域ID,而是指定源装置ID及源QoS域ID的对。而且,该图33的GC控制命令也可以代替指定目标QoS域ID,而是指定目标装置ID及目标QoS域ID的对。由此,可使某个闪速储存装置3作为GC源动作,使另一闪速储存装置3作为GC目标动作。当源装置ID与目标装置ID相同时,在一个闪速储存装置3内执行GC。
图34表示物理地址API(类型#1)中使用的GC用回调命令的另一例。
图34的GC用回调命令包含目标装置ID及目标物理地址的对来代替目标物理地址。此外,图34的GC用回调命令也可以包含源装置ID及源物理地址的对(可选)来代替源物理地址(可选)。
以下,假设使装置ID为1的闪速储存装置3作为GC源动作,使装置ID为2的闪速储存装置3作为GC目标动作的情况。主机2也可以将指定源装置ID#1及目标装置ID#2的GC控制命令,发送给装置ID#1的闪速储存装置3、及装置ID#2的闪速储存装置3。
装置ID#1的闪速储存装置3从源QoS域ID指定的QoS域所属的块群中选择GC源块,将GC源块内的有效数据及该有效数据的逻辑地址发送给目标装置ID指定的闪速储存装置(装置ID#2的闪速储存装置)。将GC源块内的有效数据及该有效数据的逻辑地址例如经由图1的接口50从装置ID#1的闪速储存装置3传输到装置ID#2的闪速储存装置3。
装置ID#2的闪速储存装置3从目标QoS域ID指定的QoS域所属的空闲块群中选择GC目标块,并将经由开关1接收的有效数据及逻辑地址写入到GC目标块(复制)。
装置ID#2的闪速储存装置3将复制的有效数据的逻辑地址、及复制了该有效数据的目标物理地址(块编号、偏移)利用GC用回调命令通知给主机2。
装置ID#1的闪速储存装置3将复制的有效数据的逻辑地址、及储存着该有效数据的源物理地址(块编号、偏移)利用GC用回调命令通知给主机2。
图35表示与物理地址API(类型#1)对应的写入/读取/GC动作。
首先,对写入来自主机2的数据的主机写入动作进行说明。
(1)控制器4从主机2接收LBA及写入数据。
(2)控制器4将LBA及写入数据两者写入到写入目标块。当未分配写入目标块时,控制器4从空闲块列表中选择一个空闲块,并将该选择的空闲块分配为新的写入目标块。然后,控制器4将LBA及写入数据两者写入到该新的写入目标块。
(3)控制器4将该LBA、及表示写入了该写入数据的写入目标块内的位置的物理地址PBA通知给主机2。该物理地址PBA是由块编号及偏移表示的。若写入目标块全部写满数据,则控制器4将该写入目标块登录到活动块列表中。
接着,对读取动作进行说明。
(4)主机2按照由主机2管理的LUT,将来自用户应用程序的读取请求所含的LBA转换成读取用物理地址PBA(块编号、偏移)。
(5)控制器4基于从主机2接收的读取用物理地址PBA(块编号、偏移),将具有该块编号的块决定为读取对象的块。读取对象的块是由活动块列表管理的块群(活动块)的任一个、或者当前的GC源块、或者当前的写入目标块。然后,控制器4基于偏移从读取对象的块中读取数据。
接着,对GC动作进行说明。
(6)控制器4选择GC源块(复制源块)及GC目标块(复制目标块),并将GC源块内储存的有效数据及该有效数据的LBA两者复制到GC目标块。
(7)控制器4将复制的有效数据的LBA、及表示复制了该有效数据的GC目标块内的位置的PBA(块编号、偏移)两者通知给主机2。
或者,控制器4也可以将复制的有效数据的LBA、及表示复制了该有效数据的GC目标块内的位置的PBA(块编号、偏移)、表示储存着该有效数据的GC源块内的位置的PBA(块编号、偏移)通知给主机2。
<物理地址API(类型#2)的详细>
接下来,参照图36~图50,对物理地址API(类型#2)进行说明。
图36表示传统型SSD与主机之间的任务分担、及支持物理地址API(类型#2)的闪速储存装置3与主机2之间的任务分担。
图36的右部分表示包含支持物理地址API(类型#2)的闪速储存装置3及主机2的计算机系统整体的层级结构。
主机(服务器)2中,执行用于向多个最终用户提供多个虚拟机的虚拟机服务401。虚拟机服务401上的各虚拟机中,执行由对应的最终用户使用的操作系统及用户应用程序402。
此外,主机(服务器)2中,执行与多个用户应用程序402对应的多个I/O服务403。这些I/O服务403中也可以包含基于LBA的块I/O服务、键值存储器服务等。各I/O服务403包含对各逻辑地址与闪速储存装置3的各块编号之间的映射进行管理的块级LUT。于此,所谓逻辑地址是指能够识别存取对象的数据的标识符。该逻辑地址可以是指定逻辑地址空间上的位置的逻辑块地址(LBA),或者也可以是键值存储器的键值(标签),还可以是键值的哈希值。
基于LBA的块I/O服务中,也可以使用对各逻辑地址(LBA)与闪速储存装置3的各块编号之间的映射进行管理的块级LUT。
键值存储器服务中,也可以使用对各逻辑地址(即,比如键值这样的标签)、与储存着与所述逻辑地址(即,比如键值这样的标签)对应的数据的闪速储存装置3的各块编号之间的映射进行管理的块级LUT。该块级LUT中,也可以管理标签、储存着由该标签识别的数据的块编号、及该数据的数据长度的对应关系。
各最终用户可选择应使用的定址方法(LBA、键值存储器的键值等)。
所述各块级LUT并非将来自用户应用程序402的各逻辑地址转换成闪速储存装置3用的各逻辑地址,而是将来自用户应用程序402的各逻辑地址转换成闪速储存装置3的各块编号。即,所述各块级LUT是将闪速储存装置3用的逻辑地址转换成块编号的表、与应用级地址转换表统合(合并)而成的表。
此外,各I/O服务403包含GC块选择功能。GC块选择功能可使用对应的块级LUT来管理各块的有效数据量,由此可选择GC源块。
主机(服务器)2中,也可以每个所述QoS域中均存在I/O服务403。属于某个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域对应的多个块内LUT602A、与多个QoS域对应的多个无用单元收集(GC)功能603A、及NAND型闪速存储器(NAND闪存阵列)603。
在该图36的右部分所示的构成中,上位层级(主机2)可识别块边界,因此可考虑块边界/块大小而将用户数据写入到各块。即,主机2可识别NAND型闪速存储器(NAND闪存阵列)603的各个块,由此,可进行例如向一个块整体一齐写入数据、通过删除或者更新使一个块内的数据全部无效化等控制。结果,能够不易产生一个块内混杂有效数据及无效数据的状况。因此,可降低需要执行GC的频度。通过降低GC的频度,能降低写入扩增,提升闪速储存装置3的性能、实现闪速储存装置3的寿命最大化。像这样,上位层级(主机2)能够识别块编号的构成是有用的。
另一方面,因页写入顺序制约,当前可写入的页在每一块中中只有1页。因此,使上位层级可见页编号,相比使上位层级可见块编号来说并不有用。
图37表示主机2管理的块级LUT(块级地址转换表)、及支持物理地址API(类型#2)的闪速储存装置3管理的块内LUT(块内地址转换表)。
块级LUT对各逻辑地址、及与闪速储存装置3的多个块分别对应的各块编号之间的映射进行管理。该块级LUT是将某个逻辑地址转换成某个块编号BLK#的表。
在闪速储存装置3中,管理与多个块分别对应的多个块内LUT。各块内LUT对各逻辑地址、与对应的块内的各块内物理地址(块内偏移)之间的映射进行管理。各块内LUT是将某个逻辑地址转换成某个块内物理地址(块内PBA)的表。块内物理地址(块内PBA)如上所述是由块内偏移表示。
地址转换按以下方式执行。
例如,在读取动作中,主机2使用某个逻辑地址(例如某个LBA),参照块级LUT,将该逻辑地址(LBA)转换成块编号BLK#。将该逻辑地址及块编号BLK#从主机2发送给闪速储存装置3。在支持物理地址API(类型#2)的闪速储存装置3中,为了不对各块分配特定的逻辑地址范围,便能对任意块储存与任意逻辑地址对应的数据,将该逻辑地址自身与块编号BLK#一齐从主机2发送给闪速储存装置3。
在闪速储存装置3中,控制器4选择与块编号BLK#对应的块内LUT。例如,若来自主机2的块编号BLK#表示块编号BLK#0,则选择与块编号BLK#0对应的块内LUT,若来自主机2的块编号BLK#表示块编号BLK#1,则选择与块编号BLK#1对应的块内LUT,若来自主机2的块编号BLK#表示块编号BLK#2,则选择与块编号BLK#2对应的块内LUT。
选择的块内LUT是通过来自主机2的逻辑地址参照的。并且,与该逻辑地址对应的块内PBA是从选择的块内LUT获取的。
图38表示物理地址API(类型#2)中使用的写入命令。
写入命令是向闪速储存装置3请求数据写入的命令。该写入命令也可以包含命令ID、块编号BLK#、逻辑地址、长度等。
命令ID是表示该命令是写入命令的ID(命令编码),写入命令中包含写入命令用的命令ID。
块编号BLK#是能够唯一地识别应写入数据的标识符(块地址)。
逻辑地址是用于识别应写入的写入数据的标识符。该逻辑地址如上所述可以是LBA,也可以是键值存储器的键值,还可以是键值的哈希值。当逻辑地址是LBA时,该写入命令所含的逻辑地址(开始LBA)表示应写入写入数据的逻辑位置(最初的逻辑位置)。
长度表示应写入的写入数据的长度。该长度(数据长度)可由粒度(Grain)的数指定,可由LBA的数指定,或者其大小还可由字节指定。
当从主机2接收到写入命令时,控制器4决定具有写入命令指定的块编号的块内的写入目标位置。该写入目标位置是考虑了页写入顺序的制约及坏页等而决定的。并且,控制器4将来自主机2的数据写入到具有写入命令指定的块编号的该块内的该写入目标位置。
图39表示物理地址API(类型#2)中使用的Trim命令。
该Trim命令是包含储存着应无效的数据的块的块编号及该数据的逻辑地址的命令。该Trim命令包含命令ID、块编号BLK#、逻辑地址、长度。
命令ID是表示该命令是Trim命令的ID(命令编码),Trim命令中包含Trim命令用的命令ID。
块编号表示储存着应无效化的数据的块。
逻辑地址表示应无效化的数据的最初的逻辑位置。
长度表示应无效化的数据的长度。该长度(数据长度)可由逻辑地址的数指定,可由粒度(Grain)的数指定,还可由字节指定。
控制器4使用块管理表32管理表示多个块分别所含的各数据的有效/无效的标识(位图标识)。当从主机2接收到包含表示储存着应无效的数据的块的块编号及逻辑地址的Trim命令时,控制器4更新块管理表32,将与Trim命令所含的块编号及逻辑地址特定的块内物理地址对应的标识(位图标识)变更为表示无效的值。
图40的顺序图表示与物理地址API(类型#2)对应的写入处理的顺序。
主机2首先自身选择应用于写入的块(空闲块)、或者向闪速储存装置3发送块分配命令,请求闪速储存装置3分配空闲块。然后,主机2将包含自身选择的块的块编号BLK#(或者闪速储存装置3分配的空闲块的块编号BLK#)、逻辑地址(LBA)、及长度的写入命令发送给闪速储存装置3(步骤S20A)。
当闪速储存装置3的控制器4接收到该写入命令时,控制器4决定应写入来自主机2的写入数据的具有该块编号BLK#的块(写入目标块BLK#)内的写入目标位置,并将写入数据写入到该写入目标块BLK#的写入目标位置(步骤S11A)。在步骤S11A中,控制器4也可以将逻辑地址(于此为LBA)及写入数据两者写入到写入目标块。
控制器4更新与写入目标块BLK#对应的块内LUT,将表示写入目标位置的偏移(块内偏移)映射到该逻辑地址(步骤S12A)。
接着,控制器4更新与写入目标块BLK#对应的块管理表32,将与写入的数据对应的位图标识(即,与写入了该数据的偏移(块内偏移)对应的位图标识)从0变更为1(步骤S13A)。
例如,如图41所示,假设将开始LBA为LBAx的16K字节更新数据写入到与块BLK#1的偏移+4~+7对应的物理存储位置的情况。这种情况下,如图42所示,在块BLK#1用的块内LUT中,对LBAx~LBAx+3映射偏移+4~+7。此外,如图43所示,在块BLK#1用的块管理表中,将与偏移+4~+7对应的位图标识分别从0变更为1。
控制器4将相对于该写入命令的响应(成功/失败)返回给主机2(步骤S14A)。
当主机2接收到该响应时,主机2更新由主机2管理的块级LUT,并将写入目标块BLK#的块编号BLK#映射到与写入的写入数据对应的逻辑地址(步骤S21A)。如图44所示,块级LUT包含与多个逻辑地址(例如LBA)分别对应的多个入口。在与某个逻辑地址(例如某个LBA)对应的入口,储存着储存了与该LBA对应的数据的NAND型闪速存储器5的块编号。如图41所示,若将开始LBA为LBAx的16K字节更新数据写入到块BLK#1,如图44所示,更新块级LUT,将与LBAx~LBAx+3对应的块编号从BLK#0变更为BLK#1。
之后,如图40所示,主机2将用于使因所述更新数据的写入而变得无用的以前的数据无效化的Trim命令发送给闪速储存装置3。闪速储存装置3的控制器4根据该Trim命令,更新块内LUT、块管理表(步骤S15A、S16A)。
若如图41所示,以前的数据储存在块BLK#0时,如图45所示,将指定块编号(=BLK#0)、LBAx、长度(=4)的Trim命令从主机2发送给闪速储存装置3。闪速储存装置3的控制器4根据该Trim命令,更新与BLK#0对应的块内LUT,将表示各LBAx~LBAx+3与各偏移+1~+3之间的映射的信息删除。这种情况下,控制器4也可以将所述LBAx~LBAx+3及偏移+1~+3变更为表示无效的值(null)。而且,控制器4更新与BLK#0对应的块管理表32,将与偏移+0~+3对应的位图标识分别从1变更为0。
图46表示物理地址API(类型#2)中使用的读取命令。
读取命令是向闪速储存装置3请求数据读出的命令。该读取命令包含命令ID、块编号BLK#、逻辑地址、长度、传输目标指针。
命令ID是表示该命令是读取命令的ID(命令编码),读取命令中包含读取命令用的命令ID。
块编号BLK#表示储存着应读取的数据的块的块编号。逻辑地址是应读取的数据的逻辑地址。
长度表示应读取的数据的长度。该数据长度可由LBA的数表示,也可由Grain的数表示。
传输目标指针表示应传输读出的数据的主机2内的存储器上的位置。
图47的顺序图表示与物理地址API(类型#2)对应的读取动作。
主机2参照由主机2管理的块内LUT,将来自用户应用程序的读取请求所含的逻辑地址(LBA)转换成块编号。并且,主机2将指定该块编号、LBA、长度的读取命令发送给闪速储存装置3。
当闪速储存装置3的控制器4从主机2接收到读取命令时,控制器4选择与该读取命令指定的块编号对应的块内LUT,使用读取命令内的LBA,参照该选择的块内LUT,获取与该LBA对应的偏移(块内偏移)(步骤S31A)。控制器4基于读取命令指定的块编号、及获取的偏移(块内偏移),从NAND型闪速存储器5中读取与该LBA对应的数据(步骤S32A),并将该读取数据发送给主机2。
图48表示物理地址API(类型#2)中使用的无用单元收集(GC)控制命令。
GC控制命令用于将GC源块编号及GC目标块编号通知给闪速储存装置3。主机2对各块的有效数据量/无效数据量进行管理,可选择有效数据量更少的若干块作为GC源块。此外,主机2管理空闲块列表,可选择若干空闲块作为GC目标块。该GC控制命令也可以包含命令ID、GC源块编号、GC目标块编号等。
命令ID是表示该命令是GC控制命令的ID(命令编码),GC控制命令中包含GC控制命令用的命令ID。
GC源块编号是表示GC源块的块编号。主机2可指定应将哪个块设为GC源块。主机2也可以将多个GC源块编号设定于一个GC控制命令。
GC目标块编号是表示GC目标块的块编号。主机2可指定应将哪个块设为GC目标块。主机2也可以将多个GC目标块编号设定于一个GC控制命令。
图49表示物理地址API(类型#2)中使用的GC用回调命令。
GC用回调命令用于将包含逻辑地址(LBA)与目标块编号的多个对的列表通知给主机2。某个对所含的逻辑地址(LBA)是复制的有效数据的逻辑地址。该对所含的目标块编号是复制了该有效数据的GC目标块的块编号。该GC用回调命令也可以只在通过GC控制命令指定了多个GC源块编号及多个目标块编号时,才从闪速储存装置3发送给主机2。
图50的顺序图表示与物理地址API(类型#2)对应的无用单元收集(GC)动作的步骤。
例如,主机2在主机2管理的空闲块列表所含的剩余的空闲块的数量降低到阈值以下时,选择GC源块及GC目标块,并将GC控制命令发送给闪速储存装置3(步骤S41A)。
闪速储存装置3的控制器4若接收该GC控制命令,便执行数据复制动作,该数据复制动作包含以下动作:决定应写入GC源块内的有效数据的GC目标块内的位置(复制目标位置);以及将GC源块内的有效数据复制到GC目标块内的复制目标位置(步骤S51A)。在步骤S51A中,反复执行数据复制动作,直到GC源块内的所有的有效数据的复制结束为止。当通过GC控制命令指定了多个GC源块时,反复执行数据复制动作,直到所有的GC源块内的所有的有效数据的复制结束为止。
并且,控制器4将包含逻辑地址(LBA)及目标块编号的多个对的列表使用GC用回调命令通知给主机2(步骤S52A),并以映射到复制的有效数据的逻辑地址的偏移(块内偏移)从表示GC源块内的复制源位置的偏移(块内偏移)变更为表示GC目标块内的复制目标位置的偏移(块内偏移)的方式,更新与GC源块对应的块内LUT及与GC目标块对应的块内LUT(步骤S53A)。
主机2基于从闪速储存装置3通知的列表,更新块内LUT(步骤S42A)。
<物理地址API(类型#3)的详细>
接着,参照图51~图60,对物理地址API(类型#3)进行说明。
图51表示传统型SSD与主机之间的任务分担、及支持物理地址API(类型#3)的闪速储存装置3与主机2之间的任务分担。
图51的右部分表示包含支持物理地址API(类型#3)的闪速储存装置3与主机2的计算机系统整体的层级结构。
在主机(服务器)2中,执行用于向多个最终用户提供多个虚拟机的虚拟机服务401。虚拟机服务401上的各虚拟机中,执行由对应的最终用户使用的操作系统及用户应用程序402。
此外,主机(服务器)2中,执行与多个用户应用程序402对应的多个I/O服务403。这些I/O服务403中也可以包含基于LBA的块I/O服务、键值存储器服务等。各I/O服务403包含对各逻辑地址与闪速储存装置3的各物理地址之间的映射进行管理的查找表(LUT)411。于此,所谓逻辑地址是指能够识别存取对象的数据的标识符。该逻辑地址可以是指定逻辑地址空间上的位置的逻辑块地址(LBA),或者可以是键值存储器的键值(标签),还可以是键值的哈希值。
基于LBA的块I/O服务中,也可以使用对各逻辑地址(LBA)与闪速储存装置3的各物理地址之间的映射进行管理的LUT411。
在键值存储器服务中,也可以使用对各逻辑地址(即,比如键值这样的标签)、与表示储存着与所述逻辑地址(即,比如键值这样的标签)对应的数据的闪速储存装置3内的物理存储位置的各物理地址之间的映射进行管理的LUT411。该LUT411中,也可以管理标签、储存着由该标签识别的数据的物理地址、及该数据的数据长度的对应关系。
各最终用户可选择应使用的定址方法(LBA、键值存储器的键值等)。
所述各LUT411并非将来自用户应用程序402的各逻辑地址转换成闪速储存装置3用的各逻辑地址,而是将来自用户应用程序402的各逻辑地址转换成闪速储存装置3的各物理地址。即,所述各LUT411是将闪速储存装置3用的逻辑地址转换成物理地址的表、与应用级地址转换表统合(合并)而成的表。
此外,各I/O服务403包含GC块选择功能。GC块选择功能可使用对应的LUT管理各块的有效数据量,由此可选择GC源块。
主机(服务器)2中,也可以每个所述QoS域中均存在I/O服务403。属于某个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)功能603A、及NAND型闪速存储器(NAND闪存阵列)603。
该图51的右部分所示的构成中,上位层级(主机2)能够识别块边界,因此可考虑块边界/块大小而将用户数据写入到各块。即,主机2可识别NAND型闪速存储器(NAND闪存阵列)603的各个块,由此能进行例如向一个块整体一齐写入数据、通过删除或更新使一个块内的数据全部无效化等控制。结果,能够不易产生一个块内混杂有效数据及无效数据的状况。因此,可降低需要执行GC的频度。通过降低GC的频度,能降低写入扩增,提升闪速储存装置3的性能,实现闪速储存装置3的寿命最大化。像这样,上位层级(主机2)能识别块编号的构成是有用的。
另一方面,应写入数据的块内的位置并非由上位层级(主机2)决定,而是由闪速储存装置3决定。因此,可隐藏不良页(坏页),且可遵守页写入顺序制约。
图52表示与物理地址API(类型#3)对应的数据写入动作、及与物理地址API(类型#3)对应的数据读出动作。
数据写入动作是按照以下步骤执行的。
(1)当主机2的写入处理部412需要向闪速储存装置3写入数据(写入数据)时,写入处理部412也可以请求闪速储存装置3分配空闲块。闪速储存装置3的控制器4包含对NAND型闪速存储器5的空闲块群进行管理的块分配部701。块分配部701从写入处理部412接收到该请求(块分配请求)时,块分配部701将空闲块群的一个空闲块分配给主机2,并将分配的块的块编号(BLK#)通知给主机2。
或者,在写入处理部412管理空闲块群的构成中,写入处理部412也可以自身选择写入目标块。
(2)写入处理部412将指定与写入数据对应的逻辑地址(例如LBA)及写入目标块的块编号(BLK#)的写入请求发送给闪速储存装置3。
(3)闪速储存装置3的控制器4包含分配数据写入用的页的页分配部702。当页分配部702接收到写入请求时,页分配部702决定表示具有写入请求指定的块编号的块(写入目标块)内的写入目标位置的块内物理地址(块内PBA)。块内物理地址(块内PBA)可由所述块内偏移(也只作为偏移参照)表示。控制器4基于写入请求指定的块编号、及块内物理地址(块内PBA),将来自主机2的写入数据写入到写入目标块内的写入目标位置。
(4)控制器4将表示写入目标位置的块内物理地址(块内PBA)作为相对于写入请求的响应通知给主机2。或者,控制器4也可以将与写入数据对应的逻辑地址(LBA)、写入目标块的块编号(BLK#)、表示写入目标位置的块内PBA(偏移)的组,作为相对于写入请求的响应通知给主机2。换句话说,控制器将块内物理地址、或者逻辑地址、块编号及块内物理地址的组的任一个通知给主机2。主机2中,以表示写入了写入数据的物理存储位置的物理地址(块编号、块内物理地址(块内偏移))映射到该写入数据的逻辑地址的方式,更新LUT411。
数据读取动作是按照以下步骤执行。
(1)'当主机2需要从闪速储存装置3读取数据时,主机2参照LUT411,从LUT411获取与应读取的数据的逻辑地址对应的物理地址(块编号、块内物理地址(块内偏移))。
(2)'主机2将指定获取的块编号及块内物理地址(块内偏移)的读取请求发送给闪速储存装置3。当闪速储存装置3的控制器4从主机2接收到该读取请求时,控制器4基于块编号及块内物理地址,特定出读取对象的块及读取对象的物理存储位置,并从该读取对象的块内的读取对象的物理存储位置读取数据。
图53表示物理地址API(类型#3)中使用的写入命令。
写入命令是向闪速储存装置3请求数据写入的命令。该写入命令也可以包含命令ID、块编号BLK#、逻辑地址、长度等。
命令ID是表示该命令是写入命令的ID(命令编码),写入命令中包含写入命令用的命令ID。
块编号BLK#是能够唯一地识别应写入数据的块的标识符(块地址)。
逻辑地址是用于识别应写入的写入数据的标识符。该逻辑地址如上所述可为LBA,可为键值存储器的键值,还可为键值的哈希值。当逻辑地址是LBA时,该写入命令所含的逻辑地址(开始LBA)表示应写入的写入数据的逻辑位置(最初的逻辑位置)。
长度表示应写入的写入数据的长度。该长度(数据长度)可由粒度(Grain)的数指定,也可以由LBA的数指定,或者其大小还可由字节指定。
当从主机2接收到写入命令时,控制器4决定具有写入命令指定的块编号的块内的写入目标位置。该写入目标位置是考虑了页写入顺序的制约及坏页等而决定的。并且,控制器4将来自主机2的数据写入到具有写入命令指定的块编号的该块内的该写入目标位置。
图54表示相对于图53的写入命令的响应。
该响应包含块内物理地址、长度。块内物理地址表示应写入数据的块内的位置(物理存储位置)。块内物理地址如上所述可由块内偏移指定。长度表示写入的数据的长度。该长度(数据长度)可由粒度(Grain)的数指定,可由LBA的数指定,或者其大小还可由字节指定。
或者,该响应也可以不仅包含块内物理地址及长度,还包含逻辑地址及块编号。逻辑地址是包含于图53的写入命令的逻辑地址。块编号是包含于图53的写入命令的逻辑地址。
图55表示物理地址API(类型#3)中使用的Trim命令。
该Trim命令是包含表示储存着应无效的数据的物理存储位置的块编号及块内物理地址(块内偏移)的命令。即,该Trim命令并不指定比如LBA这样的逻辑地址,而是可指定物理地址。该Trim命令包含命令ID、物理地址、长度。
命令ID是表示该命令是Trim命令的ID(命令编码),Trim命令中包含Trim命令用的命令ID。
物理地址表示储存着应无效化的数据的最初的物理存储位置。支持物理地址API(类型#3)的闪速储存装置3中,该物理地址是通过块编号与偏移(块内偏移)的组合而指定的。
长度表示应无效化的数据的长度。该长度(数据长度)可由粒度(Grain)的数指定,也可由字节指定。
控制器4使用块管理表32,对表示多个块分别所含的各数据的有效/无效的标识(位图标识)进行管理。当从主机2接收到包含表示储存着应无效的数据的物理存储位置的块编号及偏移(块内偏移)的Trim命令时,控制器4更新块管理表32,将与Trim命令所含的块编号及块内偏移对应的物理存储位置的数据所对应的标识(位图标识)变更为表示无效的值。
图56的顺序图表示与物理地址API(类型#3)对应的写入处理的顺序。
主机2首先自身选择应用于写入的块(空闲块)、或者通过向闪速储存装置3发送块分配命令而请求闪速储存装置3分配空闲块。然后,主机2将包含自身选择的块的块编号BLK#(或者闪速储存装置3分配的空闲块的块编号BLK#)、逻辑地址(LBA)、及长度的写入命令发送给闪速储存装置3(步骤S20B)。
当闪速储存装置3的控制器4接收到该写入命令时,控制器4决定应写入来自主机2的写入数据的具有该块编号BLK#的块(写入目标块BLK#)内的写入目标位置,并将写入数据写入到该写入目标块BLK#的写入目标位置(步骤S11B)。在步骤S11B中,控制器4也可以将逻辑地址(于此为LBA)及写入数据两者写入到写入目标块。
控制器4更新与写入目标块BLK#对应的块管理表32,并将与写入的数据对应的位图标识(即,与写入了该数据的偏移(块内偏移)对应的位图标识)从0变更为1(步骤S12B)。
并且,如图56所示,控制器4将相对于该写入命令的响应返回给主机2(步骤S13B)。该响应至少包含应写入该数据的偏移(块内偏移)。
当主机2接收到该响应时,主机2更新由主机2管理的LUT411,对与写入的写入数据对应的各逻辑地址映射物理地址(步骤S21B)。
之后,主机2将用于使因所述更新数据的写入而变得无用的以前的数据无效化的Trim命令发送给闪速储存装置3。闪速储存装置3的控制器4根据该Trim命令,更新块管理表32(图56、步骤S14B)。
图57表示物理地址API(类型#3)中使用的读取命令。
读取命令是向闪速储存装置3请求数据读出的命令。该读取命令包含命令ID、物理地址PBA、长度、传输目标指针。
命令ID是表示该命令是读取命令的ID(命令编码),读取命令中包含读取命令用的命令ID。
物理地址PBA表示应读出数据的最初的物理存储位置。物理地址PBA是由块编号、偏移(块内偏移)指定的。
长度表示应读取的数据的长度。该数据长度可由Grain的数指定。
传输目标指针表示应传输读出的数据的主机2内的存储器上的位置。
一个读取命令可指定多个物理地址PBA(块编号、偏移)及长度的组。
图58表示物理地址API(类型#3)中使用的无用单元收集(GC)控制命令。
GC控制命令用于将GC源块编号及GC目标块编号通知给闪速储存装置3。主机2管理各块的有效数据量/无效数据量,可选择有效数据量更少的若干块作为GC源块。此外,主机2管理空闲块列表,可选择若干空闲块作为GC目标块。该GC控制命令也可以包含命令ID、GC源块编号、GC目标块编号等。
命令ID是表示该命令是GC控制命令的ID(命令编码),GC控制命令包含GC控制命令用的命令ID。
GC源块编号是表示GC源块的块编号。主机2可指定应将哪个块设为GC源块。主机2也可以将多个GC源块编号设定于一个GC控制命令。
GC目标块编号是表示GC目标块的块编号。主机2可指定应将哪个块设为GC目标块。主机2也可以将多个GC目标块编号设定于一个GC控制命令。
图59表示物理地址API(类型#3)中使用的GC用回调命令。
GC用回调命令用于将GC复制的有效数据的逻辑地址及表示该有效数据的复制目标位置的块编号及偏移通知给主机2。
GC用回调命令也可以包含命令ID、逻辑地址、长度、目标物理地址。
命令ID是表示该命令是GC用回调命令的ID(命令编码),GC用回调命令包含GC用回调命令用的命令ID。
逻辑地址表示通过GC从GC源块复制到GC目标块的有效数据的逻辑地址。
长度表示该复制的数据的长度。该数据长度也可以由粒度(Grain)的数指定。
目标物理地址表示复制了有效数据的GC目标块内的位置。目标物理地址是由块编号、偏移(块内偏移)指定的。
图60的顺序图表示与物理地址API(类型#3)对应的无用单元收集(GC)动作的步骤。
例如,当主机2管理的空闲块列表所含的剩余的空闲块的数降低到阈值以下时,主机2选择GC源块及GC目标块,并将指定选择的GC源块及选择的GC目标块的GC控制命令发送给闪速储存装置3(步骤S41B)。或者,在写入处理部412管理空闲块群的构成中,也可以在剩余的空闲块的数降低到阈值以下时,写入处理部412向主机2通知这一情况,接收到通知的主机2执行块选择及GC控制命令的发送。
若闪速储存装置3的控制器4接收该GC控制命令,便执行数据复制动作,该数据复制动作包含以下动作:决定应写入GC源块内的有效数据的GC目标块内的位置(复制目标位置);以及将GC源块内的有效数据复制到GC目标块内的复制目标位置(步骤S51B)。在步骤S51B中,控制器4不仅复制GC源块(复制源块)内的有效数据,还将该有效数据及与该有效数据对应的逻辑地址两者从GC源块(复制源块)复制到GC目标块(复制目标块)。由此,可向GC目标块(复制目标块)内保存数据与逻辑地址的对。
此外,在步骤S51B中,反复执行数据复制动作,直到GC源块内的所有的有效数据的复制结束为止。当通过GC控制命令指定了多个GC源块时,反复执行数据复制动作,直到所有GC源块内的所有的有效数据的复制结束为止。
然后,控制器4针对复制的每个有效数据,将该有效数据的逻辑地址(LBA)、及表示该有效数据的复制目标位置的目标物理地址等使用GC用回调命令通知给主机2(步骤S52B)。与某个有效数据对应的目标物理地址是由复制了该有效数据的复制目标块(GC目标块)的块编号、及表示复制了该有效数据的复制目标块内的物理存储位置的块内物理地址(块内偏移)表示的。
当主机2接收到该GC用回调命令时,主机2更新由主机2管理的LUT411,对与复制的各有效数据对应的逻辑地址映射目标物理地址(块编号、块内偏移)(步骤S42B)。
如以上说明,根据本实施方式,支持用于对NAND型闪速存储器5进行存取的多种接口,可对NAND型闪速存储器5内的存取对象的每个区域切换应使用的接口。因此,主机2可选择性利用与不同种类的接口对应的多个区域。此外,所述多个区域至少包含第一区域及第二区域,所述第一区域由主机2使用第一类型接口进行读取访问,所述第一类型接口指定逻辑地址而不指定NAND型闪速存储器5的物理地址,所述第二区域由主机2使用第二类型接口进行读取访问,所述第二类型接口指定NAND型闪速存储器5的一部分或者全部物理地址。
在第一类型接口中,主机2无需指定NAND型闪速存储器的物理地址,只要指定与应读取的数据对应的逻辑地址即可。因此,在对第一区域进行读取访问时,主机2上无需已执行用于直接处理NAND型闪速存储器5的功能群。由此,第一区域可作为用于能启动操作系统的可启动区域使用。
此外,在使用第二类型接口(物理地址API)读取数据时,主机2可指定NAND型闪速存储器5的一部分或者全部物理地址。因此,主机2可根据需要使用物理地址API,由此可直接对NAND型闪速存储器5进行存取。
另外,闪速储存装置3也可以作为设置在储存器阵列内的多个闪速储存装置3中的一个而利用。储存器阵列也可以经由缆线或者网络而连接于比如服务器计算机这样的信息处理装置。储存器阵列包含控制器,该控制器对该储存器阵列内的多个闪速储存装置3进行控制。将闪速储存装置3应用于储存器阵列时,该储存器阵列的控制器也可以作为闪速储存装置3的主机2发挥功能。
此外,本实施方式中,作为非易失性存储器例示了NAND型闪速存储器。但,本实施方式的功能也能应用于例如MRAM(Magnetoresistive Random Access Memory,磁阻式随机存取存储器)、PRAM(Phasechange Random Access Memory相变随机存取存储器)、ReRAM(Resistive Random Access Memory,电阻式随机存取存储器)、或者FeRAM(FerroelectricRandom Access Memory,铁电随机存取存储器)这样的其他各种非易失性存储器。
虽然对本发明的若干实施方式进行了说明,但这些实施方式是作为例子提示的,并不意图限定发明的范围。这些新颖的实施方式能以其他各种形态实施,且在不脱离发明主旨的范围内,可进行各种省略、置换、变更。这些实施方式及其变化包含于发明的范围及主旨,且包含于权利要求记载的发明及其均等范围内。
[符号的说明]
2 主机
3 闪速储存装置
4 控制器
5 NAND型闪速存储器
20 API设定/选择部
21 写入动作控制部
22 读取动作控制部
23 GC动作控制部
Claims (20)
1.一种存储器系统,具备:
非易失性存储器;及
控制器,电连接于所述非易失性存储器,且构成为:
管理多个命名空间;及
响应于从主机接收命令,允许所述主机指定所述多个命名空间中的命名空间及选择要应用于所述指定的命名空间的定址方法而发布与所述指定的命名空间对应的访问命令,所述命令包含所述多个命名空间中的命名空间的标识符且指定用于所述命名空间的定址方法。
2.根据权利要求1所述的存储器系统,其中
所述非易失性存储器包含多个块,所述多个块中的每一个为用于删除动作的单位,
所述多个命名空间包含至少第一命名空间和第二命名空间,且
所述控制器构成为:
允许所述主机选择用于所述第一命名空间的第一定址方法而发布与所述第一命名空间对应的第一写入命令,
在所述第一定址方法中,所述第一写入命令的目标数据即第一数据使用与所述第一数据对应的逻辑地址来指定,而不使用应写入所述第一数据的块的标识符来指定,且
允许所述主机选择用于所述第二命名空间的第二定址方法而发布与所述第二命名空间对应的第二写入命令,
在所述第二定址方法中,所述第二写入命令的目标数据即第二数据至少使用应写入所述第二数据的块的标识符来指定。
3.根据权利要求2所述的存储器系统,其中
所述控制器构成为:
响应于从所述主机接收所述第一写入命令,将所述第一数据写入到所述非易失性存储器的第一块中的第一位置,所述第一写入命令指定与所述第一数据对应的逻辑地址,但不包含应写入所述第一数据的所述第一块的标识符;及
响应于从所述主机接收所述第二写入命令,将所述第二数据写入到所述非易失性存储器的第二块中的第二位置,所述第二写入命令指定应写入所述第二数据的所述第二块的标识符。
4.根据权利要求3所述的存储器系统,其中
所述控制器进一步构成为:通过使用所述第二块中的偏移地址,将所述第二位置通知所述主机。
5.根据权利要求3所述的存储器系统,其中
所述第二写入命令进一步指定与所述第二数据对应的逻辑地址。
6.根据权利要求2所述的存储器系统,其中
所述控制器构成为:
允许所述主机选择用于所述第一命名空间的第三定址方法而发布与所述第一命名空间对应的第三读取命令,
在所述第三定址方法中,所述第三读取命令的目标数据即第三数据使用与所述第三数据对应的逻辑地址来指定,而不使用应读取所述第三数据的块的标识符来指定。
7.根据权利要求6所述的存储器系统,其中
所述控制器构成为:
响应于从所述主机接收所述第三读取命令,从所述非易失性存储器的第三块中的第三位置读取所述第三数据,所述第三读取命令指定与所述第三数据对应的逻辑地址,但不指定应读取所述第三数据的所述第三块的标识符。
8.根据权利要求2所述的存储器系统,其中
所述控制器构成为:
允许所述主机选择用于所述第二命名空间第四定址方法的而发布与所述第二命名空间对应的第四读取命令,
在所述第四定址方法中,所述第四读取命令的目标数据即的第四数据至少使用应读取所述第四数据的块的标识符来指定。
9.根据权利要求8所述的存储器系统,其中
所述控制器构成为:
响应于从所述主机接收所述第四读取命令,从所述非易失性存储器的第四块中的第四位置读取所述第四数据,所述第四读取命令指定应读取所述第四数据的所述第四块的标识符。
10.根据权利要求9所述的存储器系统,其中
所述第四读取命令进一步指定所述第四块中的所述第四位置。
11.一种控制非易失性存储器的方法,具备:
管理多个命名空间;及
响应于从主机接收命令,允许所述主机指定所述多个命名空间中的命名空间及选择应用于所述指定的命名空间的定址方法而发布与所述指定的命名空间对应的访问命令,所述命令包含所述多个命名空间中的命名空间的标识符且指定用于所述命名空间的定址方法。
12.根据权利要求11所述的方法,其中
所述非易失性存储器包含多个块,所述多个块中的每一个为用于删除动作的单位,
所述多个命名空间包含至少第一命名空间和第二命名空间,且
所述方法进一步具备:
允许所述主机选择用于所述第一命名空间的第一定址方法而发布与所述第一命名空间对应的第一写入命令,在所述第一定址方法中,所述第一写入命令的目标数据即第一数据使用与所述第一数据对应的逻辑地址来指定,而不使用应写入所述第一数据的块的标识符来指定,及
允许所述主机选择用于所述第二命名空间的第二定址方法而发布与所述第二命名空间对应的第二写入命令,在所述第二定址方法中,所述第二写入命令的目标数据即第二数据至少使用应写入所述第二数据的块的标识符来指定。
13.根据权利要求12所述的方法,进一步具备:
响应于从所述主机接收所述第一写入命令,将所述第一数据写入到所述非易失性存储器的所述第一块中的第一位置,所述第一写入命令指定与所述第一数据对应的逻辑地址,但不包含应写入所述第一数据的第一块的标识符;及
响应于从所述主机接收所述第二写入命令,将所述第二数据写入到所述非易失性存储器的所述第二块中的第二位置,所述第二写入命令指定应写入所述第二数据的第二块的标识符。
14.根据权利要求13所述的方法,进一步具备:
通过使用所述第二块中的偏移地址,将所述第二位置通知所述主机。
15.根据权利要求13所述的方法,其中
所述第二写入命令进一步指定与所述第二数据对应的逻辑地址。
16.根据权利要求12所述的方法,进一步具备:
允许所述主机选择用于所述第一命名空间的第三定址方法而发布与所述第一命名空间对应的第三读取命令,在所述第三定址方法中,所述第三读取命令的目标数据即第三数据使用与所述第三数据对应的逻辑地址来指定,而不使用应读取所述第三数据的块的标识符来指定。
17.根据权利要求16所述的方法,进一步具备:
响应于从所述主机接收所述第三读取命令,从所述非易失性存储器的第三块中的第三位置读取所述第三数据,所述第三读取命令指定与所述第三数据对应的逻辑地址,但不指定应读取所述第三数据的所述第三块的标识符。
18.根据权利要求12所述的方法,进一步具备:
允许所述主机选择用于所述第二命名空间的第四定址方法而发布与所述第二命名空间对应的第四读取命令,在所述第四定址方法中,所述第四读取命令的目标数据即第四数据是至少使用应读取所述第四数据的块的标识符指定。
19.根据权利要求18所述的方法,进一步具备:
响应于从所述主机接收所述第四读取命令,从所述非易失性存储器的第四块中的第四位置读取所述第四数据,所述第四读取命令指定应读取所述第四数据的所述第四块的标识符。
20.根据权利要求19所述的方法,其中
所述第四读取命令进一步指定所述第四块中的所述第四位置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017208115A JP2019079464A (ja) | 2017-10-27 | 2017-10-27 | メモリシステムおよび制御方法 |
JP2017-208115 | 2017-10-27 | ||
CN201810768120.4A CN109726139B (zh) | 2017-10-27 | 2018-07-13 | 存储器系统及控制方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810768120.4A Division CN109726139B (zh) | 2017-10-27 | 2018-07-13 | 存储器系统及控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116909941A true CN116909941A (zh) | 2023-10-20 |
Family
ID=66245534
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810768120.4A Active CN109726139B (zh) | 2017-10-27 | 2018-07-13 | 存储器系统及控制方法 |
CN202310947639.XA Pending CN116909941A (zh) | 2017-10-27 | 2018-07-13 | 存储器系统及控制非易失性存储器的方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810768120.4A Active CN109726139B (zh) | 2017-10-27 | 2018-07-13 | 存储器系统及控制方法 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10552336B2 (zh) |
JP (1) | JP2019079464A (zh) |
CN (2) | CN109726139B (zh) |
TW (3) | TWI689817B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115421671A (zh) * | 2018-06-22 | 2022-12-02 | 慧荣科技股份有限公司 | 闪存存储装置的命名空间操作方法 |
US10853309B2 (en) | 2018-08-13 | 2020-12-01 | Micron Technology, Inc. | Fuseload architecture for system-on-chip reconfiguration and repurposing |
JP7155028B2 (ja) * | 2019-01-29 | 2022-10-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP2021034091A (ja) | 2019-08-29 | 2021-03-01 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10963396B1 (en) * | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
CN111045954B (zh) * | 2019-11-29 | 2023-08-08 | 北京航空航天大学青岛研究院 | 基于nand-spin的存内计算加速方法 |
CN113495869B (zh) * | 2020-03-20 | 2024-04-26 | 华为技术有限公司 | 文件系统空间的调整方法、装置和电子设备 |
US11550482B2 (en) * | 2020-04-09 | 2023-01-10 | Synaptics Incorporated | Page-based memory access control |
CN111294247B (zh) * | 2020-05-13 | 2020-09-18 | 广东睿江云计算股份有限公司 | 一种存储区域的QoS分配方法及系统 |
US11550727B2 (en) * | 2020-06-18 | 2023-01-10 | Micron Technology, Inc. | Zone-aware memory management in memory subsystems |
TWI738390B (zh) * | 2020-06-19 | 2021-09-01 | 群聯電子股份有限公司 | 資料保護方法、記憶體儲存裝置及記憶體控制電路單元 |
US20220382673A1 (en) * | 2021-05-25 | 2022-12-01 | SK Hynix Inc. | Storage device and method of operating the same |
US11954350B2 (en) | 2021-05-25 | 2024-04-09 | SK Hynix Inc. | Storage device and method of operating the same |
US11733927B2 (en) * | 2021-11-30 | 2023-08-22 | Microsoft Technology Licensing, Llc | Hybrid solid-state drive |
US11822813B2 (en) | 2021-12-28 | 2023-11-21 | Samsung Electronics Co., Ltd. | Storage device, operation method of storage device, and storage system using the same |
US11687447B1 (en) * | 2022-01-04 | 2023-06-27 | Silicon Motion, Inc. | Method and apparatus for performing access control of memory device with aid of additional physical address information |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6883063B2 (en) | 1998-06-30 | 2005-04-19 | Emc Corporation | Method and apparatus for initializing logical objects in a data storage system |
US6804674B2 (en) | 2001-07-20 | 2004-10-12 | International Business Machines Corporation | Scalable Content management system and method of using the same |
US7512957B2 (en) | 2004-12-03 | 2009-03-31 | Microsoft Corporation | Interface infrastructure for creating and interacting with web services |
US7315917B2 (en) | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US7934049B2 (en) * | 2005-09-14 | 2011-04-26 | Sandisk Corporation | Methods used in a secure yet flexible system architecture for secure devices with flash mass storage memory |
US7769978B2 (en) * | 2005-12-21 | 2010-08-03 | Sandisk Corporation | Method and system for accessing non-volatile storage devices |
WO2007073538A2 (en) * | 2005-12-21 | 2007-06-28 | Sandisk Corporation | Non-volatile memories and methods with data alignment in a directly mapped file storage system |
US20080172518A1 (en) * | 2007-01-11 | 2008-07-17 | Sandisk Il Ltd. | Systems For Supporting Readydrive And Readyboost Accelerators In A Single Flash-Memory Storage Device |
US8959280B2 (en) | 2008-06-18 | 2015-02-17 | Super Talent Technology, Corp. | Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear |
US8312247B2 (en) * | 2008-06-20 | 2012-11-13 | Panasonic Corporation | Plural-partitioned type nonvolatile storage device and system |
US9323658B2 (en) * | 2009-06-02 | 2016-04-26 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Multi-mapped flash RAID |
US8688894B2 (en) | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
US8255661B2 (en) | 2009-11-13 | 2012-08-28 | Western Digital Technologies, Inc. | Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device |
US20110137966A1 (en) * | 2009-12-08 | 2011-06-09 | Netapp, Inc. | Methods and systems for providing a unified namespace for multiple network protocols |
JP5589205B2 (ja) | 2011-02-23 | 2014-09-17 | 株式会社日立製作所 | 計算機システム及びデータ管理方法 |
US20120246385A1 (en) * | 2011-03-22 | 2012-09-27 | American Megatrends, Inc. | Emulating spi or 12c prom/eprom/eeprom using flash memory of microcontroller |
US20130191580A1 (en) * | 2012-01-23 | 2013-07-25 | Menahem Lasser | Controller, System, and Method for Mapping Logical Sector Addresses to Physical Addresses |
JP5687639B2 (ja) | 2012-02-08 | 2015-03-18 | 株式会社東芝 | コントローラ、データ記憶装置及びプログラム |
JP5597666B2 (ja) * | 2012-03-26 | 2014-10-01 | 株式会社東芝 | 半導体記憶装置、情報処理システムおよび制御方法 |
US9075710B2 (en) * | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
CN103176752A (zh) | 2012-07-02 | 2013-06-26 | 晶天电子(深圳)有限公司 | 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器 |
CN102789427B (zh) | 2012-07-17 | 2015-11-25 | 威盛电子股份有限公司 | 数据储存装置与其操作方法 |
US9575884B2 (en) * | 2013-05-13 | 2017-02-21 | Qualcomm Incorporated | System and method for high performance and low cost flash translation layer |
US20150186259A1 (en) | 2013-12-30 | 2015-07-02 | Sandisk Technologies Inc. | Method and apparatus for storing data in non-volatile memory |
US10812313B2 (en) * | 2014-02-24 | 2020-10-20 | Netapp, Inc. | Federated namespace of heterogeneous storage system namespaces |
KR20150106778A (ko) | 2014-03-12 | 2015-09-22 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 제어 방법 |
US9959203B2 (en) * | 2014-06-23 | 2018-05-01 | Google Llc | Managing storage devices |
US20160041760A1 (en) | 2014-08-08 | 2016-02-11 | International Business Machines Corporation | Multi-Level Cell Flash Memory Control Mechanisms |
KR20160027805A (ko) | 2014-09-02 | 2016-03-10 | 삼성전자주식회사 | 비휘발성 메모리 장치를 위한 가비지 컬렉션 방법 |
US9977734B2 (en) * | 2014-12-11 | 2018-05-22 | Toshiba Memory Corporation | Information processing device, non-transitory computer readable recording medium, and information processing system |
JP6406707B2 (ja) | 2015-03-23 | 2018-10-17 | 東芝メモリ株式会社 | 半導体記憶装置 |
US20160321010A1 (en) | 2015-04-28 | 2016-11-03 | Kabushiki Kaisha Toshiba | Storage system having a host directly manage physical data locations of storage device |
JP2017027388A (ja) | 2015-07-23 | 2017-02-02 | 株式会社東芝 | メモリシステムおよび不揮発性メモリの制御方法 |
US10102138B2 (en) * | 2015-10-22 | 2018-10-16 | Western Digital Technologies, Inc. | Division of data storage in single-storage device architecture |
US10705952B2 (en) * | 2015-11-04 | 2020-07-07 | Sandisk Technologies Llc | User space data storage management |
US9940028B2 (en) * | 2015-11-13 | 2018-04-10 | Samsung Electronics Co., Ltd | Multimode storage device |
US9946642B2 (en) * | 2015-11-13 | 2018-04-17 | Samsung Electronics Co., Ltd | Distributed multimode storage management |
US9996473B2 (en) * | 2015-11-13 | 2018-06-12 | Samsung Electronics., Ltd | Selective underlying exposure storage mapping |
US9990304B2 (en) | 2015-11-13 | 2018-06-05 | Samsung Electronics Co., Ltd | Multimode storage management system |
TWI595492B (zh) | 2016-03-02 | 2017-08-11 | 群聯電子股份有限公司 | 資料傳輸方法、記憶體控制電路單元與記憶體儲存裝置 |
JP6523193B2 (ja) | 2016-03-08 | 2019-05-29 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
JP6444917B2 (ja) * | 2016-03-08 | 2018-12-26 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
US20180173619A1 (en) | 2016-12-21 | 2018-06-21 | Sandisk Technologies Llc | System and Method for Distributed Logical to Physical Address Mapping |
JP6709180B2 (ja) * | 2017-02-28 | 2020-06-10 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10338842B2 (en) * | 2017-05-19 | 2019-07-02 | Samsung Electronics Co., Ltd. | Namespace/stream management |
US10592408B2 (en) | 2017-09-13 | 2020-03-17 | Intel Corporation | Apparatus, computer program product, system, and method for managing multiple regions of a memory device |
JP6785205B2 (ja) | 2017-09-21 | 2020-11-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP6982468B2 (ja) | 2017-10-27 | 2021-12-17 | キオクシア株式会社 | メモリシステムおよび制御方法 |
-
2017
- 2017-10-27 JP JP2017208115A patent/JP2019079464A/ja active Pending
-
2018
- 2018-05-21 US US15/984,703 patent/US10552336B2/en active Active
- 2018-07-03 TW TW107122911A patent/TWI689817B/zh active
- 2018-07-03 TW TW109105524A patent/TWI791140B/zh active
- 2018-07-03 TW TW111150687A patent/TW202331530A/zh unknown
- 2018-07-13 CN CN201810768120.4A patent/CN109726139B/zh active Active
- 2018-07-13 CN CN202310947639.XA patent/CN116909941A/zh active Pending
-
2019
- 2019-12-23 US US16/725,094 patent/US11347655B2/en active Active
-
2022
- 2022-03-08 US US17/689,787 patent/US11954043B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20190129862A1 (en) | 2019-05-02 |
CN109726139B (zh) | 2023-08-18 |
US20200133879A1 (en) | 2020-04-30 |
US10552336B2 (en) | 2020-02-04 |
US11347655B2 (en) | 2022-05-31 |
US11954043B2 (en) | 2024-04-09 |
CN109726139A (zh) | 2019-05-07 |
TWI689817B (zh) | 2020-04-01 |
TW202331530A (zh) | 2023-08-01 |
TWI791140B (zh) | 2023-02-01 |
US20220197817A1 (en) | 2022-06-23 |
TW202024926A (zh) | 2020-07-01 |
JP2019079464A (ja) | 2019-05-23 |
TW201917584A (zh) | 2019-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109726139B (zh) | 存储器系统及控制方法 | |
US11669444B2 (en) | Computing system and method for controlling storage device | |
US11709597B2 (en) | Memory system and method for controlling nonvolatile memory | |
CN114115747B (zh) | 存储器系统及控制方法 | |
US11467955B2 (en) | Memory system and method for controlling nonvolatile memory | |
US11797436B2 (en) | Memory system and method for controlling nonvolatile memory | |
JP7167295B2 (ja) | メモリシステムおよび制御方法 | |
JP7204020B2 (ja) | 制御方法 | |
JP2022179798A (ja) | メモリシステムおよび制御方法 | |
JP2022121655A (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 |