计算机系统及储存装置的控制方法与流程

文档序号:17600340发布日期:2019-05-07 20:11阅读:187来源:国知局
计算机系统及储存装置的控制方法与流程

本申请享有以日本专利申请2017-209344号(申请日:2017年10月30日)为基础申请的优先权。本申请通过参照该基础申请而包含基础申请的全部内容。

本发明的实施方式涉及一种计算机系统及储存装置(storagedevice)的控制方法。



背景技术:

近年来,具备非易失性存储器的储存装置正广泛地普及。作为这种储存装置之一,已知有基于nand(notand,与非)闪存技术的固态硬盘(ssd)。在数据中心的服务器之类的计算机系统中利用的储存装置中,要求较高的i/o(input/output,输入/输出)性能。因此,最近,开始提出主机侧与储存装置侧之间的新接口。

但是,如果非易失性存储器中包含的不良块的数量增加,则存在如下情况:在储存装置侧,引起用于将不良块置换为其它块的置换信息的量增大,因该置换处理而引起读取延迟时间增加。这有时会成为使系统整体的i/o性能降低的因素。



技术实现要素:

本发明的实施方式提供一种能够改善i/o性能的计算机系统及控制方法。

根据实施方式,对包括分别包含多个块的多个非易失性存储器芯片(nonvolatilememorydie)和控制器的储存装置进行控制的计算机系统具备:存储器;及处理器,构成为与所述存储器电连接,且执行所述存储器中存储的计算机程序。所述处理器将指定用于识别应写入的第1数据的第1逻辑地址与所述第1数据的长度的写入请求发送到所述储存装置。所述处理器从所述储存装置接收第1物理地址、及所述第1逻辑地址,所述第1物理地址表示由所述储存装置从除不良块以外的块中选择为用于所述第1数据的写入目标块的第1块、及写入了所述第1数据的所述第1块内的第1物理存储位置这两者。所述处理器在管理各逻辑地址与所述储存装置的各物理地址之间的映射的第1表中将所述第1物理地址映射到所述第1逻辑地址。

附图说明

图1是表示主机与存储器系统(闪速储存装置)的关系的框图。

图2是用来说明闪速储存装置与主机之间的功能分担的图。

图3是表示闪速储存装置的构成例的框图。

图4是表示in-drive-gcapi用的指令的图。

图5是表示超级块api用的指令的图。

图6是表示设置在闪速储存装置的闪速i/o控制电路与多个nand型闪速存储器芯片的关系的框图。

图7是表示由多个块的集合构筑的超级块(并行单位)的构成例的图。

图8是用来说明超级块的块地址与构成该超级块的多个块各自的块地址的关系的图。

图9是用来说明将属于某非易失性存储器芯片的各个不良块分别利用该非易失性存储器芯片的其它块置换的动作的图。

图10是用来说明不置换不良块而从超级块内的非不良块中选择写入目标块的动作的图。

图11是用来说明对闪速储存装置应用的写入指令的图。

图12是用来说明对图11的写入指令的应答的图。

图13是用来说明对闪速储存装置应用的trim指令的图。

图14是表示对具有不良块的超级块写入数据的动作的图。

图15是表示图12的应答中包含的物理地址的构成例的图。

图16是表示超级块的块地址与该超级块中包含的各块的块地址的关系的图。

图17是用来说明将逻辑地址与数据的对写入到块内的页的动作的图。

图18是用来说明将数据写入到块内的页的用户数据区域并将该数据的逻辑地址写入到该页的冗余区域的动作的图。

图19是用来说明将多个数据部与根据这些数据部算出的消失校正码写入到具有不良块的超级块的动作的图。

图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,并不限定于此,可使用pciexpress(peripheralcomponentinterconnectexpress,外围组件互连高速)(pcie)(注册商标)、nvmexpress(non-volatilememoryexpress,非易失性存储器标准)(nvme)(注册商标)、以太网(ethernet,注册商标)、nvmeoverfabrics(nvmeof,非易失性存储器标准织物)等。

作为以主机2的形式发挥功能的服务器的典型例,可列举数据中心内的服务器。

在主机2以数据中心内的服务器的形式实现的实例中,该主机(服务器)2也可经由网络51而连接于多个最终用户终端(客户端)61。主机2可对这些最终用户终端61提供各种服务。

主机(服务器)2所能提供的服务例如有:(1)向各客户端(各最终用户终端61)提供系统运转平台的平台即服务(paas,platformasaservice);(2)向各客户端(各最终用户终端61)提供虚拟服务器之类的基础设施的基础设施即服务(iaas,infrastructureasaservice)等。

多个虚拟机也可在作为该主机(服务器)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的寿命也变短。

因此,在本实施方式中,使ftl的功能在主机2与闪速储存装置3之间被分担。主机2管理作为逻辑物理地址转换表发挥功能的查找表,但应使用于写入的块及页可由闪速储存装置3决定而并非由主机2决定。另外,gc也可由闪速储存装置3执行而并非由主机2执行。以下,将转移至主机2的ftl功能称为全局ftl。

另外,闪速储存装置3管理分别包括多个块(多个物理块)的多个并行单位(多个超级块),以提高写入/读出速度。闪速储存装置3可并行地执行对于某并行单位内的多个块的写入动作及读出动作。

但是,由于nand型闪速存储器芯片中包含若干个不良块,所以存在将并行单位内的各不良块以其它块置换,以确保并行度的情况。但是,如果每一个nand型闪速存储器芯片中包含的不良块的数量增加,则用于置换管理的信息量有可能增大。

如果以一个并行单位中包含的块的数量为64的情况为例,则在根据数学规则从表示并行单位的块地址产生各块的块地址的实例中,将64个块中的第15个块以块地址2049的块置换的情况下,为了表达第15个需要至少6比特,为了表达2049需要12比特。在应置换的块数较多的情况下,需要与其成比例的信息量。在将应置换的块的数量设为至多16个的情况下,针对每一并行单位而需要18比特×16=294比特的信息。

另外,在数据读取动作中,必须利用置换信息,执行用于将表示不良块的地址转换为表示置换目标块的地址的地址转换。因此,如果不良块的数量增加,则伴随置换信息增大而该地址转换处理所需的时间增加,因此读取潜伏时间(readlatency)增大。

因此,在用于写入来自主机2的数据的写入动作中,闪速储存装置3避开写入对象的并行单位内的不良块而从该并行单位内的非不良块中选择写入目标块,并决定该写入目标块内的写入目标位置。来自主机2的数据被写入到该写入目标位置。而且,闪速储存装置3将表示该写入目标块及该写入目标块内的写入位置这两者的物理地址通知给主机2。由此,主机2可辨识实际写入了数据的块与该块内的写入目标位置,因此,在必须读取该数据的情况下,可将指定该物理地址的读取请求发送到闪速储存装置3。闪速储存装置3可基于该读取请求所指定的物理地址,从所述所选择的块内的写入目标位置读取数据。因此,在闪速储存装置3,无须进行地址转换处理,可减少读取潜伏时间。

主机2的全局ftl也可具有执行储存服务的功能、管理查找表(lut)的功能、软件硬件控制功能、用于实现高可用性的功能、防止具有相同内容的多个重复数据部存储在储存器的重复数据删除(de-duplication)功能等。

另一方面,闪速储存装置3可执行底层抽象(lla,low-levelabstraction)。lla是用于nand型闪速存储器的抽象的功能。lla包含辅助数据配置的功能等。辅助数据配置的功能中包含决定用户数据的写入目标位置(块地址、该块内的位置)的功能、将表示写入了用户数据的该写入目标位置的物理地址通知给上位层级(主机2)的功能、决定用于垃圾回收的复制源块与复制目标块的功能、将有效数据的复制目标位置通知给上位层级(主机2)的功能等。另外,lla也具有针对每一个域(qos(qualityofservice,服务质量)域)执行闪速储存装置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(logicalblockaddress,逻辑块地址)的块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用的逻辑地址转换为物理地址的表与应用阶层地址转换表整合(合并)所得的表。

在主机(服务器)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。

图3表示闪速储存装置3的构成例。

闪速储存装置3具备控制器4及非易失性存储器(nand型闪速存储器)5。闪速储存装置3也可同时具备随机存取存储器、例如dram(dynamicrandomaccessmemory,动态随机存取存储器)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,opennandflashinterface)之类的闪速i/o控制电路13而电连接于作为非易失性存储器的nand型闪速存储器5。控制器4是构成为控制nand型闪速存储器5的存储器控制器(控制电路)。

nand型闪速存储器5包含多个nand型闪速存储器芯片。控制器4管理所述多个并行单位(并行单元)。各并行单位是以包含分别属于不同的nand型闪速存储器芯片的多个块(多个物理块)的块组即超级块的形式实现。控制器4可并行地执行对于各并行单位(超级块)中包含的多个块的写入动作、读出动作。多个并行单位(超级块)分别具有固有的超级块地址(第1块地址)。各非易失性存储器芯片内的多个块分别具有固有的块地址(第2块地址)。应包含于各并行单位(超级块)的各块的块地址是从各并行单位的超级块基于数学规则确定。

控制器4包含主机接口11、cpu(centralprocessingunit,中央处理器)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(readonlymemory,只读存储器)将控制程序(固件)加载到dram6,然后执行该固件,由此进行各种处理。此外,固件也可加载到控制器4内的未图示的sram(staticrandom-accessmemory,静态随机存取存储器)上。该cpu12可执行用于处理来自主机2的各种指令的指令处理等。cpu12的动作是由cpu12所执行的所述固件控制。此外,指令处理的一部分或全部也可由控制器4内的专用硬件执行。

cpu12可作为写入动作控制部21、读取动作控制部22、及gc动作控制部23发挥功能。在这些写入动作控制部21、读取动作控制部22、及gc动作控制部23中,安装着用于实现图2所示的系统构成的应用程序接口(api)。

写入动作控制部21从主机2接收指定用于识别应写入的数据(用户数据)的逻辑地址(标签)的写入请求(写入指令)。在接收到写入指令的情况下,写入动作控制部21首先查阅不良信息管理表33,从写入对象的并行单位(超级块)中包含的并非不良的块(非不良块)中选择一个块作为写入目标块。不良信息管理表33保存不良信息,所述不良信息保存针对各并行单位(超级块)中包含的每一块表示可使用或不可使用的至少1比特的信息。与各超级块对应的不良信息也可为包含与各超级块中包含的块的数量为相同数量的比特的位图。写入动作控制部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目的地块)的选择并非由主机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源块与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(内置驱动gc(in-drive-gc)api、超级块api。

in-drive-gc-api包含以闪速储存装置3单独执行垃圾回收(gc)为前提的指令群。这些指令群中也可包含写入指令(writewithoutphysicaladdress,不包含物理地址的写入)、读取指令(readwithphysicaladdress,包含物理地址的读取)、禁用删除指令(trim)、重复指令(duplicate)、地址更新通知(addressupdatenotification(deviceinitiated,由装置发起))、强制gc指令(forcedgarbage-collection,强制垃圾回收)、gc控制指令(garbagecollectioncontrol)等作为基本指令。

写入指令(writewithoutphysicaladdress)是指定识别应写入的用户数据的逻辑地址(标签),但不指定写入目标的物理地址的写入指令。

读取指令(readwithphysicaladdress)是指定表示读取对象的物理存储位置(物理块、物理块内的读取对象位置)的物理地址的读取指令。

禁用删除指令(trim)是指定应设为无效的数据的物理地址,并对储存装置3指示应使与该物理地址对应的数据无效化的指令。此外,在主机2支持防止具有相同内容的多个重复数据部存储在储存器的重复数据删除(de-duplication)功能的情况下,禁用删除指令(trim)用作对储存装置3指示应使表示查阅某数据的逻辑地址的数量的查阅计数减小的指令。重复指令(duplicate)用作对储存装置3指示应使表示查阅某数据的逻辑地址的数量的查阅计数增加的指令。

地址更新通知(addressupdatenotification(deviceinitiated))用于在闪速储存装置3执行用于gc的数据复制动作之后,闪速储存装置3将所复制的数据(有效数据)的逻辑地址、该有效数据的旧物理存储位置、该有效数据的新物理存储位置通知给主机2。

强制gc指令(forcedgarbage-collection)是用于使闪速储存装置3强制性地执行gc的指令。

gc控制指令(garbagecollectioncontrol)是用于对闪速储存装置3指示用于开始gc的条件等的指令。

图4表示in-drive-gc-api用的各指令的参数与返回值的例子。

在图4中,接续于「主机:」的标记而记载的内容是由对应的指令指定的参数,接续于「装置:」的标记而记载的内容是对该指令的应答中包含的参数(返回值)。

写入指令(writewithoutphysicaladdress)也可包含用户地址、长度、数据、qos域标识符。用户地址是用于识别应写入的数据的逻辑地址(标签)。用户地址例如包含lba、键值存储的键、文件标识符等。

对写入指令的应答也可包含状态(成功/失败)、用户地址、闪存地址(物理地址)、长度、剩余的可写入数据量(distance-to-block-boundary,至块边界的距离)。剩余的可写入数据量(distance-to-block-boundary)是可选的返回值,表示可写入到写入了数据的超级块的剩余数据量。剩余的可写入数据量(distance-to-block-boundary)也可以所述数据粒度的倍数表示。数据有时跨及不良块的前后的2个非不良块写入。因此,对写入指令的应答也可包含各集包含用户地址、闪存地址(物理地址)、长度的多个集。

读取指令(readwithphysicaladdress)也可包含闪存地址、长度。读取指令(readwithphysicaladdress)也可包含各集包含闪存地址、长度的多个集。对读取指令的应答也可包含状态、用户地址、长度、数据。对读取指令的应答也可包含各集包含用户地址、长度的多个集。

禁用删除指令(trim)/重复指令(duplicate)也可包含闪存地址、长度、查阅计数的增减量(reference-count-to-add-or-subtract)。禁用删除指令(trim)/重复指令(duplicate)也可包含各集包含闪存地址、长度、查阅计数的增减量的多个集。

地址更新通知(addressupdatenotification(deviceinitiated))也可包含用户地址、旧闪存地址、新闪存地址、查阅计数、长度作为由闪速储存装置3通知给主机2的输出参数。例如,闪速储存装置3从旧物理存储位置将数据复制到新物理存储位置之后,将地址更新通知(addressupdatenotification(deviceinitiated))发送到主机2。该地址更新通知(addressupdatenotification(deviceinitiated))中也可包含该数据的用户地址、表示该数据的旧物理存储位置的旧闪存地址、表示该数据的新物理存储位置的新闪存地址、表示查阅该数据的逻辑地址的数量的查阅计数、该数据的长度。地址更新通知(addressupdatenotification(deviceinitiated))也可包含各集包含用户地址、旧闪存地址、新闪存地址、查阅计数、长度的多个集。

强制gc指令(forcedgarbage-collection)也可包含qos域标识符、源超级块地址(可选)。

gc控制指令(garbagecollectioncontrol)也可包含最大数据数(maximum-number-of-data)、qos域标识符、gc的方法(策略)。

超级块api包含以主机2指定逻辑地址(标签)与超级块且闪速储存装置决定该超级块内的写入目标块与该写入目标块内的写入目标位置为前提的指令群。这些指令群中包含写入指令(writewithoutpageaddress,不包含页地址的写入)、读取指令(readwithphysicaladdress)、超级块释放指令(releasesuperblocktounusedsuperblockpool,释放超级块至未用的超级块池)、超级块分配指令(allocatesuperblockandopenwritebufferwithblockhealing,分配超级块以及以块修复的方式打开写入缓冲器)、关闭超级块指令(closesuperblockandwritebuffer,关闭超级块与写入缓冲器)、超级块信息指令(superblockinformation)、非复制数据设定指令(setdatanottobecopied)、数据复制指令(datacopywithoutpageaddress,不包含页地址的数据复制)等作为基本指令。

写入指令(writewithoutpageaddress)是指定逻辑地址(标签)与超级块地址的写入指令。读取指令与in-drive-gc-api用的读取指令相同。超级块释放指令(releasesuperblocktounusedsuperblockpool)是用于将已分配的超级块释放的指令。超级块分配指令(allocatesuperblockandopenwritebufferwithblockhealing)是请求超级块的分配的指令。超级块分配指令(allocatesuperblockandopenwritebufferwithblockhealing)也可包含指定表示可并行访问的块的数量的并行数的参数。超级块信息指令(superblockinformation)是用于获取与特定的超级块相关的信息的指令。非复制数据设定指令(setdatanottobecopied)是用于指定超级块内的不应复制的数据的指令。数据复制指令(datacopywithoutpageaddress)是用于为了gc而复制数据的指令。这些指令的参数与返回值的例子表示在图5中。在图5中,接续于「主机:」的标记而记载的内容表示由对应的指令指定的参数,接续于「装置:」的标记而记载的内容表示对该指令的应答中包含的参数(返回值)。

图6表示闪速i/o控制电路13与多个nand型闪速存储器芯片的关系。

如图6所示,nand型闪速存储器5包含多个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(芯片#0)中包含的块地址0的块blk0、nand型闪速存储器芯片#1(芯片#1)中包含的块地址0的块blk0、nand型闪速存储器芯片#2(芯片#2)中包含的块地址0的块blk0、…、nand型闪速存储器芯片#15(芯片#15)中包含的块地址0的块blk0所构成。

同样地,具有超级块地址1000的超级块sb1000是由nand型闪速存储器芯片#0(芯片#0)中包含的块地址1000的块blk1000、nand型闪速存储器芯片#1(芯片#1)中包含的块地址1000的块blk1000、nand型闪速存储器芯片#2(芯片#2)中包含的块地址1000的块blk1000、…、nand型闪速存储器芯片#15(芯片#15)中包含的块地址1000的块blk1000所构成。

存在各芯片中包含若干个不良块的情况。通常,不良块的数量针对每一芯片而不同。

在图9中,示出将各芯片中包含的各不良块以属于同一芯片的其它块置换的处理。

在图9中,设想如下情况:各芯片包含2048个块blk,芯片#0包含100个不良块,芯片#1不包含不良块,芯片#2包含20个不良块,而且,芯片#15包含30个不良块。

在芯片#0中,例如,不良块blk1由芯片#0的非不良块blk1948置换,不良块blk5由芯片#0的非不良块blk1949置换。这样一来,仅从芯片#0的开头起合计1948(=2048-100)个块成为可利用状态,芯片#0的其余的块blk1948~blk2047不可利用。

因此,即使在芯片#1不包含不良块的情况下,芯片#1的块blk1948~blk2047也无法用于构筑超级块。因此,可构筑的超级块sb的数量被限制为不良块最多的芯片#0内的非不良块的数量。

图10表示不置换各不良块而从某超级块sb内的非不良块中选择写入目标块的动作。

在图10中,为了简化图示,例示出如下情况:某超级块(此处为超级块sb5)是由8个块、也就是芯片#0内的块blk5、芯片#1内的块blk5、芯片#2内的块blk5、芯片#3内的块blk5、芯片#4内的块blk5、芯片#5内的块blk5、芯片#6内的块blk5、及芯片#7内的块blk5所构成。

在本实施方式中,设置着与各超级块对应的不良信息管理表33。在超级块sb5用的不良信息管理表33中,保存着包含针对每一个块表示可使用或不可使用的1比特的信息的不良信息(位图)。在不良信息(位图)中,“0”表示非不良块,“1”表示不良块。

在图10中,设想芯片#1内的块blk5、芯片#4内的块blk5、芯片#5内的块blk5为不良块的情况。

控制器4不执行将芯片#1内的块blk5以芯片#1内的其它块置换的处理、将芯片#4内的块blk5以芯片#4内的其它块置换的处理、将芯片#5内的块blk5以芯片#5内的其它块置换的处理。但,控制器4查阅超级块sb5用的不良信息管理表33,从超级块sb5中包含的非不良块(此处为芯片#0内的块blk5、芯片#2内的块blk5、芯片#3内的块blk5、芯片#6内的块blk5、芯片#7内的块blk5)中选择一个块作为写入目标块。控制器4决定该写入目标块内的写入目标位置,将来自主机2的写入数据写入到该写入目标块内的写入目标位置。而且,控制器4将表示该写入目标块及该写入目标位置这两者的物理地址通知给主机2。

由此,主机2可辨识实际写入了写入数据的块(写入目标块)与该块内的写入目标位置,因此,在必须读取该数据的情况下,可将指定该通知的物理地址的读取请求(读取指令)发送到闪速储存装置3。也就是说,首先,主机2将包含识别应写入的数据的逻辑地址(标签)的写入请求(写入指令)发送到闪速储存装置3。主机2从闪速储存装置3接收表示从除不良块以外的块中选择为写入目标块的块及该块内的写入目标位置(物理存储位置)这两者的物理地址、及该数据的逻辑地址(标签)。而且,主机2更新管理各逻辑地址(标签)与闪速储存装置3的各物理地址之间的映射的主机2上的查找表(lut),将所接收到的物理地址映射到识别该数据的逻辑地址(标签)。在必须读取该数据的情况下,主机2查阅主机2上的查找表(lut),获取映射到该数据的逻辑地址(标签)的物理地址,将指定所获取的物理地址的读取请求(读取指令)发送到闪速储存装置3。

像这样,在本实施方式中,不将写入对象的超级块内的不良块以该不良块所属的芯片内的其它块置换,即可正常地执行对于该超级块的数据写入及读出动作。因此,即使不良块的数量增加,也无须管理大量的置换信息。另外,也不需要用于置换处理的地址转换处理,因此可减少读取潜伏时间。进而,基本上可构筑与属于各芯片的块的数量为相同数量的超级块,因此,即使不良块的数量增加,也可利用几乎所有的非不良块。

图11表示对闪速储存装置3应用的写入指令(writewithoutphysicaladdress)。

该写入指令是对闪速储存装置3请求数据的写入的指令。如上所述,该写入指令也可包含指令id(identifier,标识符)、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(芯片#0)、blk0(芯片#1)、blk0(芯片#2)、blk0(芯片#3)所构成,其中,blk0(芯片#2)为不良块。

控制器4是以避开不良块的方式,按照块blk0(芯片#0)的页0、块blk0(芯片#1)的页0、块blk0(芯片#3)的页0、块blk0(芯片#0)的页1、块blk0(芯片#1)的页1、块blk0(芯片#3)的页1、…的顺序写入数据。

在页尺寸为16k字节(16kb),且数据粒度为4k字节(4kb)的情况下,最初的16k字节数据(d1~d4)被写入到块blk0(芯片#0)的页0。随后的16k字节数据(d5~d8)被写入到块blk0(芯片#1)的页0。对于blk0(芯片#2)的写入被跳过,随后的16k字节数据(d9~d12)被写入到块blk0(芯片#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(redundantarraysofindependentdisks,独立磁盘冗余阵列)的机制,控制器4如图19所示,跨及属于一个超级块中包含的多个块且分别具有相同页地址的多个页,将多个数据部与根据这些多个数据部算出的1个以上的消失校正码写入。属于多个块且分别具有相同页地址的多个页被作为超级页加以查阅。

在图19的上部,示出在超级块sb0中对超级页写入数据及消失校正码的情况。超级页包括blk0(芯片#0)的页0、blk0(芯片#1)的页0、blk0(芯片#2)的页0、blk0(芯片#3)的页0、blk0(芯片#4)的页0、blk0(芯片#5)的页0、blk0(芯片#6)的页0、blk0(芯片#7)的页0。

数据被写入到作为非不良块的blk0(芯片#0)、blk0(芯片#2)、blk0(芯片#3)、blk0(芯片#4)的各页0。

消失校正码例如包含里德-所罗门码、奇偶性(parity)等。消失校正码被写入到非不良块内的页。另外,消失校正码是视为在各不良块内的页存储着预先规定的值(例如,全为“0”的比特串、或全为“1”的比特串)而算出。

在图19的上部所示的例子中,例示出将2个消失校正码写入到超级块sb0的超级页的情况。2个消失校正码被写入到最后的2个非不良块内的页。在图19的上部所示的例子中,最后的块即blk0(芯片#7)为非不良块,从最后数起为第2个的块即blk0(芯片#6)为不良块,从最后数起为第3个的块即blk0(芯片#5)为非不良块,因此,2个消失校正码被写入到blk0(芯片#5)的页0与blk0(芯片#7)的页0。

在编码处理中,控制器4是基于写入到blk0(芯片#0)的数据部、假定为写入到作为不良块的blk0(芯片#0)的预先规定的值、写入到blk0(芯片#2)的数据部、写入到blk0(芯片#3)的数据部、写入到blk0(芯片#4)的数据部、及假定为写入到blk0(芯片#6)的预先规定的值,算出2个消失校正码。

由此,与超级块内的不良块/非不良块的模式无关,通过用于编码的相同运算便可容易地算出消失校正码。

另外,控制器4是视为在各不良块内的页存储着预先规定的值而进行使用消失校正码的解码处理。

在图19的下部所示的例子中,构成超级块sb1的最后的块即blk1(芯片#7)为不良块,从最后数起为第2个的块即blk1(芯片#6)为不良块,从最后数起为第3个的块即blk1(芯片#5)为非不良块,因此,2个消失校正码被写入到blk1(芯片#5)的页0与blk1(芯片#6)的页0。

接下来,利用图20,对主机2内的闪存转换部2a与闪速储存装置3内的写入动作控制部21的关系进行说明。

在主机2侧,闪存转换部2a是在进行数据的写入的情况下,将包含识别该数据的标签(例如lba)的写入指令发送到闪速储存装置3。此外,在使用超级块用的api的情况下,闪存转换部2a将指定识别数据的标签(例如lba)与并行单位(parallelunit)的块地址的写入指令(writewithoutpageaddress)发送到闪速储存装置3。由于并行单位(parallelunit)通过一个超级块而实现,所以并行单位(parallelunit)的块地址是该超级块的超级块地址。

闪速储存装置3侧包括写入动作控制部21、闪速i/o控制电路13、不良信息管理表33、nand型闪速存储器芯片。另外,在闪速储存装置3内,以不良信息管理表33管理保存针对每一超级块表示可使用或不可使用的至少1比特的信息的不良信息。

在从主机2侧接收到包含作为用于识别应写入的数据的信息的标签(例如lba)的写入请求的情况下,写入动作控制部21是查阅不良信息管理表33的不良信息,从一个超级块中包含的非不良块中选择一个块作为写入目标块,并决定应写入数据的所选择的块内的写入目标位置(写入目标页、该页内的偏移)。

此外,在从主机2接收到指定并行单位的块地址(超级块地址)的写入指令的情况下,写入动作控制部21是从具有该指定的块地址(超级块地址)的超级块中包含的非不良块中选择写入目标块,并决定应写入数据的所选择的块内的写入目标位置(写入目标页、该页内的偏移)。

而且,写入动作控制部21将指定写入目标块所属的芯片的芯片标识符(芯片id)、写入目标块的块地址(原始块(rawblock))、写入目标页(原始页(rawpage))、写入目标页内的偏移(offset)的写入指示发送到闪速i/o控制电路13。

另外,写入动作控制部21将表示写入目标块及写入目标位置这两者的闪存地址(芯片id、原始块、原始页、偏移)、及标签(例如lba)通知给主机2。

接收到写入指示的闪速i/o控制电路13基于写入指示,将数据写入到写入目标位置。

在主机2侧,闪存转换部2a如果从闪速储存装置3接收闪存地址(芯片id、原始块、原始页、偏移)、及标签(例如lba),则更新主机2中管理的lut。此时,将闪存地址(芯片id、原始块、原始页、偏移)与标签(例如lba)建立对应。

闪存转换部2a是在进行读取请求的情况下,将指定闪存地址(芯片id、原始块、原始页、偏移)的读取请求发送到闪速储存装置3。

在闪速储存装置3侧,从主机2接收到指定闪存地址(芯片id、原始块、原始页、偏移)的读取请求的情况下,闪速i/o控制电路13基于闪存地址,读取数据。读取对象的块根据芯片id与原始块而特定出。读取对象的页根据原始页而特定出。读取对象的页内的读取对象位置根据偏移而特定出。

接下来,利用图21,对通过主机2与闪速储存装置3执行的写入动作及读取动作进行说明。

<写入动作>

(1)写入指令的接收

在闪速储存装置3中,从主机2接收的包含lba的写入指令、及数据被暂时存储在闪速储存装置3内的写入缓冲器31。

(2)不良信息的查阅

写入动作控制部21是查阅以不良信息管理表33管理的不良信息,从写入对象的超级块中包含的非不良块中选择一个块作为写入目标块,并决定写入目标块内的写入目标位置。

(3)写入指示

写入动作控制部21当决定写入目标块与写入目标块内的写入目标位置时,将指定表示写入目标块与写入目标块这两者的闪存地址(原始地址)的写入指示经由写入缓冲器31发送到闪速i/o控制电路13。此处,原始地址中包含芯片id、原始块、原始页、偏移。接收到原始地址的闪速i/o控制电路13是基于原始地址,将写入数据写入到选择为写入目标块的块内的写入目标位置。

(4)向主机的写入目标的通知

写入动作控制部21将原始地址与lba通知给主机2。由此,主机2可更新lut并将该原始地址映射到该lba。

<读取动作>

(11)lba的通知

读取剖析器2b如果接收包含lba的读取指令,则将lba通知给闪存转换部2a。

(12)原始地址的获取

闪存转换部2a如果从读取剖析器2b接收lba,则查阅lut,获取与所接收到的lba对应的原始地址,并将所获取的原始地址返回给读取剖析器2b。由此,读取剖析器2b可获取原始地址,从而可将包含lba的读取指令转换为包含原始地址的读取指令。

(13)读取指示

读取剖析器2b将包含原始地址的读取指令发送到闪速储存装置3。在闪速储存装置3中,接收到包含原始地址的读取指令的闪速i/o控制电路13基于原始地址,读取数据,并将读取数据发送到读取缓冲器30。在读取缓冲器30,暂时存储读取数据。

(14)读取数据向主机的发送

读取缓冲器30中暂时存储的读取数据被发送到主机2。

图22的序列图表示通过主机2与闪速储存装置3执行的写入动作处理的顺序。

主机2将包含qos域id、用户地址(逻辑地址)、写入数据、长度的写入指令(writewithoutphysicaladdress)发送到闪速储存装置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。如图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应用的读取指令(readwithphysicaladdress)。

读取指令是对闪速储存装置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源块)的策略(贪心)。

另外,控制器4所支持的gc策略中也可包含如下策略:将集中有具有较低更新频率的数据(冷数据)的块优先在集中有具有较高更新频率的数据(热数据)的块选择为gc候补块(gc源块)。

进而,gc策略也可指定gc开始条件。gc开始条件例如也可表示剩余空闲块的个数。

控制器4也可利用活动块列表管理包含有效数据的超级块群,在执行gc的情况下,基于由gc控制指令指定的gc策略,从活动块列表所管理的超级块群中选择一个以上的gc候补超级块(gc源块)。

qos域id是指定应实施gc的qos域的参数。控制器4是从属于由qos域id指定的qos域的超级块群、也就是该qos域对应的活动块列表中,选择一个以上的gc候补超级块(gc源块)。

最大数据数表示执行gc时复制的数据量的上限值。也就是说,gc动作不可超过最大数据数而执行。

控制器4也可在与qos域对应的剩余空闲块的数量成为策略所指定的阈值以下的情况下,开始gc。

图31表示对闪速储存装置3应用的强制gc指令(forcedgarbage-collection)。

强制gc指令也可包含指令id、qos域id、超级块地址等。当接收到该强制gc指令时,控制器立即执行gc。

图32表示从闪速储存装置3发送到主机2的地址更新通知(addressupdatenotification(deviceinitiated))。

地址更新通知用于将闪速储存装置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的是(yes)),则将旧闪存地址与lut上的当前的物理地址加以比较(步骤s102)。比较的结果,如果旧闪存地址与当前的物理地址一致(步骤s103的是),则主机2将与用户地址对应的当前的物理地址更新为新闪存地址(步骤s104)。接着,主机2将trim指令发送到闪速储存装置,使与旧闪存地址对应的位置上存储的数据无效化(步骤s105)。

另一方面,如果旧闪存地址与当前的物理地址不一致(步骤s106的否(no)),则主机2维持与用户地址对应的当前的物理地址(步骤s106)。由此,可防止地址更新通知所通知的表示存储着最新数据的位置的块地址、页地址及偏移被错误地变更为新闪存地址。

在图38中,例示出块blk1用的块管理表。

块blk1用的块管理表包含与块blk1的页地址及页内偏移的组分别对应的多个条目。

例如,在页0、偏移+0对应的条目,存储块blk1的页0、偏移+0对应的位置上存储的4kb数据所对应的查阅计数。同样地,在页0、偏移+1对应的条目,存储块blk1的页0、偏移+1对应的位置上存储的4kb数据所对应的查阅计数。

查阅计数为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(芯片#0)、blk5(芯片#1)、blk5(芯片#2)、blk5(芯片#3)、blk5(芯片#4)、blk5(芯片#5)、blk5(芯片#6)、blk5(芯片#7)所构成,其中,blk5(芯片#2)、blk5(芯片#5)为不良块。另外,blk5(芯片#0)、blk5(芯片#1)、blk5(芯片#2)、blk5(芯片#3)、blk5(芯片#4)、blk5(芯片#5)、blk5(芯片#6)、blk5(芯片#7)分别以块编号(块地址)0、1、2、3、4、5、6、7从外部指定。

地址转换是以超级块sb5内的6个非不良块(blk5(芯片#0)、blk5(芯片#1)、blk5(芯片#3)、blk5(芯片#4)、blk5(芯片#6)、blk5(芯片#7))作为块编号0~6的块进行处理的方式执行。

当执行地址转换动作时,blk5(芯片#0)、blk5(芯片#1)、blk5(芯片#2)、blk5(芯片#3)、blk5(芯片#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是在进行数据的写入的情况下,将包含识别该数据的标签(例如lba)的写入指令发送到闪速储存装置3。此外,在使用超级块用的api的情况下,闪存转换部2a将指定识别数据的标签(例如lba)与并行单位(parallelunit)的块地址的写入指令(writewithoutpageaddress)发送到闪速储存装置3。由于并行单位(parallelunit)通过一个超级块而实现,所以并行单位(parallelunit)的块地址是该超级块的超级块地址。

闪速储存装置3侧包括不良块转换部24、闪速i/o控制电路13、不良信息管理表33、nand型闪速存储器芯片。另外,在闪速储存装置3内,以不良信息管理表33管理保存针对每一超级块表示可使用或不可使用的至少2比特的信息的不良信息。

在从主机2侧接收到包含作为用于识别应写入数据的信息的标签(例如lba)的写入请求的情况下,不良块转换部24是查阅不良信息,执行以写入对象的超级块中包含的所有非不良块从写入对象的超级块的开头连续地逻辑性地配置的方式转换访问对象块的地址的地址转换,由此,选择写入对象的超级块内的非不良块作为写入目标块,并决定所选择的块内的写入目标位置(写入目标页、该页内的偏移)。

此外,在从主机2接收到指定并行单位的块地址(超级块地址)的写入指令的情况下,不良块转换部24查阅不良信息,选择具有该指定的块地址(超级块地址)的超级块作为写入对象的超级块。

而且,不良块转换部24将指定写入目标块所属的芯片的芯片标识符(芯片id)、写入目标块的块地址(原始块)、写入目标页(原始页)、写入目标页内的偏移(offset)的写入指示发送到闪速i/o控制电路13。

另外,不良块转换部24将表示地址转换前的访问对象块及写入目标位置这两者的物理地址、及标签(例如lba)通知给主机2。该物理地址也可由表示写入目标的超级块的并行单位(parallelunit)、及该超级块内的偏移(offset)表示。表示写入目标的超级块的并行单位(parallelunit)是写入目标的超级块的超级块地址。

接收到写入指示的闪速i/o控制电路13基于写入指示,将数据写入到写入目标位置。

在主机2侧,闪存转换部2a如果接收物理地址(并行单位、偏移)、及标签(例如lba),则更新主机2中管理的lut,将所接收到的物理地址映射到所接收到的标签(例如lba)。

闪存转换部2a是在进行读取请求的情况下,将指定物理地址(并行单位、偏移)的读取请求发送到闪速储存装置3。

在闪速储存装置3侧,从主机2接收到指定物理地址(并行单位、偏移)的读取请求的情况下,不良块转换部24执行所述地址转换,将物理地址(并行单位、偏移)转换为芯片标识符(芯片id)、块地址(原始块)、页地址(原始页)、页内的偏移(offset)。而且,不良块转换部24将指定芯片标识符(芯片id)、块地址(原始块)、页地址(原始页)、页内的偏移(offset)的写入指示发送到闪速i/o控制电路13。闪速i/o控制电路13基于芯片标识符(芯片id)、块地址(原始块)、页地址(原始页)、页内的偏移(offset),读取数据。

图45表示主机2(计算机系统)的构成例。

该主机2(计算机系统)包含处理器(cpu)101、主存储器102、bios(basicinput/outputsystem,基本输入输出系统)-rom103、网络控制器105、周边接口控制器106、控制器107、及嵌入式控制器(ec)108等。

处理器101是以控制该计算机系统的各组件的动作的方式构成的cpu。该处理器101执行从多个闪速储存装置3的任一个加载到主存储器102的各种程序。主存储器102包含dram之类的随机存取存储器。由处理器101执行的程序包含应用软件层41、操作系统(os)42、文件系统43、驱动器44等。此处,文件系统43中包含闪速储存管理器(flashstoragemanager)45。此外,该闪速储存管理器45也可包含于驱动器44,而并非包含于文件系统43。

另外,处理器101也执行作为非易失性存储器的bios-rom103中存储的基本入输出系统(bios)。bios是用于硬件控制的系统程序。

网络控制器105是有线lan(localareanetwork,局域网)控制器、无线lan控制器之类的通信装置。周边接口控制器106是以执行与usb(universalserialbus,通用串行总线)装置之类的周边装置的通信的方式构成。

控制器107是以执行与分别连接于多个连接器107a的装置的通信的方式构成。多个闪速储存装置3也可分别连接于多个连接器107a。控制器107为sas(serialattachedscsi(smallcomputersysteminterface,小型计算机系统接口),串行连接scsi)扩展器、pcie交换器、pcie扩展器、或raid控制器等。

ec108作为构成为执行计算机系统的电力管理的系统控制器发挥功能。ec108根据用户对电源开关的操作而将计算机系统接通电源及断开电源。ec108是以单芯片微控制器之类的处理电路的形式实现。

闪速储存管理器45是作为所述闪存转换部2a发挥功能的程序模块。闪速储存管理器45具有管理各用户地址(逻辑地址)与闪速储存装置3的各物理地址之间的映射的所述lut。在使用lba作为用户地址(逻辑地址)的情况下,闪速储存管理器45也可设置在驱动器44内。

闪速储存管理器45将指定用于识别应写入的数据(写入数据)的用户地址(逻辑地址)与该写入数据的长度的写入指令发送到闪速储存装置3。闪速储存管理器45是从闪速储存装置3接收表示由闪速储存装置3从除不良块以外的块中选择的写入目标块及写入目标块内的写入目标位置这两者的物理地址、及所述用户地址(逻辑地址),更新lut而将该物理地址映射到该用户地址(逻辑地址)。详细来说,接收的物理地址表示由闪速储存装置3从写入对象的一个并行单位中包含的不良块以外的块中选择为用于写入数据的写入目标块的写入目标块、及写入了该写入数据的写入目标块内的物理存储位置这两者。

另外,闪速储存管理器45查阅lut,获取映射到读取对象的数据对应的用户地址(逻辑地址)的物理地址,并将指定该物理地址的读取指令发送到闪速储存装置3。

图46表示内置闪速储存装置3的主机(计算机系统)2的构成例。

该计算机系统具备能够收容于机架的薄箱形的壳体201。也可在壳体201内配置多个闪速储存装置3。在该情况下,各闪速储存装置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)。

像以上所说明的那样,根据本实施方式,主机(计算机系统)2将指定用于识别写入数据的逻辑地址的写入请求发送到储存装置3,并从储存装置3接收物理地址、及该逻辑地址,所述物理地址表示由储存装置3从除不良块以外的块中选择为用于写入数据的写入目标块的写入目标块、及写入了写入数据的写入目标块内的物理存储位置这两者。而且,主机(计算机系统)2更新lut,将所接收到的物理地址映射到所接收到的逻辑地址。因此,可利用主机(计算机系统)2的lut管理直接表示不良块以外的物理存储位置的物理地址,所以主机(计算机系统)2可视需要将指定直接表示该物理存储位置的物理地址的读取请求发送到储存装置3。结果,在储存装置3侧,不将不良块以该不良块所属的芯片内的其它块置换,便可正常地执行对于不良块以外的块的数据写入及读出动作。因此,即使不良块的数量增加,也无须管理大量的置换信息。另外,也不需要用于置换处理的地址转换处理,因此可减少读取潜伏时间。因此,可提升系统整体的i/o性能。

此外,在本实施方式中,例示出nand型闪速存储器作为非易失性存储器。但是,本实施方式的功能例如也可应用于mram(magnetoresistiverandomaccessmemory,磁阻式随机存取存储器)、pram(phasechangerandomaccessmemory,相变随机存取存储器)、reram(resistiverandomaccessmemory,阻变式随机存取存储器)、或feram(ferroelectricrandomaccessmemory,铁电随机存取存储器)之类的其它各种非易失性存储器。

已对本发明的若干实施方式进行了说明,但这些实施方式是作为例子而提出的,并不意图限定发明的范围。这些新颖的实施方式能以其它多种方式实施,能够在不脱离发明主旨的范围内进行各种省略、置换、变更。这些实施方式或其变化包含在发明的范围或主旨中,并且包含在权利要求书所记载的发明及其均等的范围内。

[符号的说明]

2主机

3闪速储存装置

4控制器

5nand型闪速存储器

21写入动作控制部

22读取动作控制部

23gc动作控制部

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1