控制非易失性存储器的存储系统以及方法

文档序号:1755337 发布日期:2019-11-29 浏览:34次 >En<

阅读说明:本技术 控制非易失性存储器的存储系统以及方法 (Control the storage system and method for nonvolatile memory ) 是由 菅野伸一 于 2019-02-26 设计创作,主要内容包括:本发明的实施方式提供能够对数据进行加密以及解密的存储系统以及方法。实施方式的存储系统在应向由第1物理地址指定的非易失性存储器的第1物理存储位置写入数据的情况下,使用第1加密密钥和第1物理地址对数据进行加密,将加密后的数据向所述第1物理存储位置写入。所述存储系统在应将所述加密后的数据向第2物理存储位置复制的情况下,使用所述第1加密密钥和所述第1物理地址,对所述加密后的数据进行解密,使用第2加密密钥、和表示所述第2物理存储位置的复制目的地物理地址,对所述解密后的数据进行再加密。(Embodiments of the present invention provide the storage system and method that can be encrypted and be decrypted to data.The storage system of embodiment is in the case where data are written in the 1st physical storage locations of the nonvolatile memory for answering 1 physical address of Xiang You specified, data are encrypted using the 1st encryption key and the 1st physical address, encrypted data are written to the 1st physical storage locations.The storage system is in the case where that should replicate the encrypted data to the 2nd physical storage locations, use the 1st encryption key and the 1st physical address, the encrypted data are decrypted, using the duplication purpose physical addresses of the 2nd encryption key and expression the 2nd physical storage locations, the data after the decryption are re-encrypted.)

控制非易失性存储器的存储系统以及方法

本申请以日本专利申请2018-097907(申请日:2018年5月22日)为基础,从该申请享有优先权。本申请通过参照该申请而包含该申请的全部内容。

技术领域

本发明的实施方式涉及控制非易失性存储器的存储系统以及方法。

背景技术

近年来,具备非易失性存储器的存储系统广泛普及。作为这样的存储系统之一,已知基于NAND闪存技术的固态硬盘(SSD)。

SSD这样的存储系统用作服务器计算机、个人计算机等各种各样的计算机的存储器(storage)。

最近,在SSD这样的存储系统中,也要求实现对数据进行加密以及解密的机制。

发明内容

本发明所要解决的问题是,提供一种能够对数据进行加密以及解密的存储系统以及方法。

根据实施方式,具备非易失性存储器和与所述非易失性存储器电连接的控制器。

所述控制器,在应向由第1物理地址指定的所述非易失性存储器的第1物理存储位置写入数据的情况下,使用从多个加密密钥中选择的第1加密密钥和所述第1物理地址对所述数据进行加密,将所述加密后的数据向所述第1物理存储位置写入。

所述控制器,在应将所述加密后的数据从所述第1物理存储位置向所述非易失性存储器的第2物理存储位置复制的情况下,使用所述第1加密密钥和所述第1物理地址对所述加密后的数据进行解密,使用从所述多个加密密钥中选择的第2加密密钥和表示所述第2物理存储位置的复制目的地物理地址,对所述解密后的数据进行再加密,将所述再加密后的数据向所述第2物理存储位置写入。

根据上述构成的存储系统,在使用写入请求所包含的物理地址进行加密后的数据被复制到了其他区块(block)的情况下,也能够使用用于读取该数据的读取请求所包含的物理地址,对该被复制的数据正确地进行解密。

附图说明

图1是表示包含实施方式的存储系统(闪存存储设备)的计算机系统的构成例的框图。

图2是本实施方式的存储系统的构成例的框图。

图3是表示在本实施方式的存储系统中使用的多个通道与多个NAND型闪存芯片(flash memory chip)的关系的框图。

图4是表示在本实施方式的存储系统中使用的、某超级区块(super block)的构成例的图。

图5是将通过本实施方式的存储系统执行的各动作的概要与数据、物理地址(区块地址、页地址)的流动一起表示的图。

图6是用于说明通过本实施方式的存储系统执行的数据的加密以及解密动作的图。

图7是表示通过本实施方式的存储系统管理的命名空间ID/加密密钥管理表的图。

图8是表示通过本实施方式的存储系统管理的区块/加密密钥管理表的图。

图9是用于说明根据写入命令执行的写入动作的图。

图10是用于说明根据读取命令执行的读出动作的图。

图11是表示通过主机和本实施方式的存储系统执行的写入处理的时序图。

图12是表示通过主机和本实施方式的存储系统执行的读出处理的时序图。

图13是表示通过主机和本实施方式的存储系统执行的复制处理的时序图。

图14是用于说明通过本实施方式的存储系统执行的数据复制动作的例的图。

图15是表示通过主机和本实施方式的存储系统执行的写入处理的其他时序图。

图16是表示通过主机和本实施方式的存储系统执行的读出处理的其他时序图。

图17是表示通过主机和本实施方式的存储系统执行的复制处理的其他时序图。

图18是用于说明通过本实施方式的存储系统执行的数据复制动作的其他例的图。

图19是用于说明本实施方式的存储系统所发出的写入命令的图。

图20是用于说明本实施方式的存储系统所发出的读取命令的图。

图21是用于说明本实施方式的存储系统所发出的复制命令的图。

具体实施方式

以下参照附图对实施方式进行说明。

首先,参照图1,说明包含一实施方式的存储系统的计算机系统的构成。

该存储系统是构成为向非易失性存储器写入数据、从非易失性存储器读出数据的半导体存储设备。该存储系统作为基于NAND闪存技术的闪存存储设备3而被实现。

该计算机系统也可以包含主机(主机设备)2和多个闪存存储设备3。主机2也可以是构成为将通过多个闪存存储设备3构成的闪存阵列作为存储器使用的服务器。主机(服务器)2与多个闪存存储设备3经由接口50相互连接(内部相互连接)。作为用于该内部相互连接的接口50,并不限定于此,可以使用PCI Express(PCIe)(注册商标)、NVM Express(NVMe)(注册商标)、Ethernet(注册商标)、NVMe over Fabrics(NVMeOF)等。

作为主机2发挥功能的服务器的典型例,可列举数据中心内的服务器。在主机2通过数据中心内的服务器实现的事例(case)中,该主机(服务器)2也可以经由网络60与多个最终用户终端(客户端)61连接。主机2能够对这些最终用户终端61提供各种各样的服务。

能够由主机(服务器)2提供的服务例有(1)将系统运行平台向各客户端(各最终用户终端61)提供的平台即服务(PaaS:Platform-as-a-Service)、(2)将虚拟服务器这样的基础设施向各客户端(各最终用户终端61)提供的基础设施即服务(IaaS:infrastructure asa Service)等。

多个虚拟机也可以在作为该主机(服务器)2发挥功能的物理服务器上被执行。在主机(服务器)2上运行的这些虚拟机各自能够作为构成为向对应的几个客户端(最终用户终端61)提供各种服务的虚拟服务器发挥功能。

主机(服务器)2包含对构成闪存阵列的多个闪存存储设备3进行管理的存储器管理功能、和分别对最终用户终端61提供包含存储访问的各种各样的服务的前端(frontend)功能。

在传统型SSD中,NAND型闪存的区块/页的层级构造通过SSD内的闪存转换层(FTL)而被隐藏。也就是说,传统型SSD的FTL具有:(1)使用作为逻辑物理地址转换表发挥功能的查找表,管理各个逻辑地址与NAND型闪存的各个物理地址之间的映射的功能;(2)用于隐藏以页为单位的读取/写入和以区块为单位的擦除动作的功能;(3)执行NAND型闪存的垃圾收集(GC)的功能等。各个逻辑地址与NAND型闪存的物理地址之间的映射对主机不可见。NAND型闪存的区块/页构造也对主机不可见。

另一方面,在主机中,有时执行一种地址转换(应用程序级别地址转换)。该地址转换使用应用程序级别地址转换表,对应用程序级别的各个逻辑地址与SSD用的各个逻辑地址之间的映射进行管理。另外,在主机中,为了进行在SSD用的逻辑地址空间上产生的碎片的消除,执行对该逻辑地址空间上的数据配置进行变更的一种GC(应用程序级别GC)。

但是,在主机以及SSD各自具有地址转换表这一冗余的构成(SSD具有作为逻辑物理地址转换表发挥功能的查找表,主机具有应用程序级别地址转换表)中,为了保持这些地址转换表而消耗膨大的存储器资源。进而,包含主机侧的地址转换和SSD侧的地址转换的2重的地址转换也成为使I/O性能降低的要因。

进而,主机侧的应用程序级别GC成为使向SSD的数据写入量增加至实际的用户数据量的数倍程度的要因。这样的数据写入量的增加使SSD的写入应用以及系统全体的存储器性能降低,还使SSD的寿命缩短。

因此,在本实施方式中,FTL的作用在主机2和闪存存储设备3之间分担。

总的来说,在数据写入处理中,主机2将指定了表示数据应被写入的、NAND型闪存的区块内的物理存储位置的物理地址的写入请求向闪存存储设备3送出,闪存存储设备3将该数据向该区块内的该物理存储位置写入。各写入请求所包含的物理地址包含指定数据应被写入的区块的区块地址、和表示该数据应被写入的、该区块内的物理存储位置的区块内物理地址(区块内偏移)。区块内偏移表示从该区块的开头到该物理存储位置为止的偏移。该区块内偏移也可以由页地址和页内偏移表示。

或者,该区块内偏移也可以由具有预定大小的粒度(Grain)的倍数表示。粒度(Grain)也可以具有比页大小小的大小。例如,在页大小为16K字节的情况下,粒度(Grain)的大小可以为4K字节。该情况下,在某一个区块中,规定有各个大小为4K字节的多个偏移位置。区块内的最初的偏移位置所对应的区块内偏移例如为0,区块内的下一个偏移位置所对应的区块内偏移例如为1,区块内的再下一个偏移位置所对应的区块内偏移例如为2。

在数据读出处理中,主机2存储有应读出的数据,将指定了表示NAND型闪存的区块内的物理存储位置的物理地址的读取请求向闪存存储设备3送出,闪存存储设备3将该数据从该区块内的该物理存储位置读出。读取请求所包含的物理地址也与写入请求所包含的物理地址同样地,由区块地址和区块内偏移表示。

这样,主机2通过将指定物理地址的读取/写入请求向闪存存储设备3送出,主机2能够直接控制闪存存储设备3内的数据配置。

闪存存储设备3构成为执行加密/解密动作。加密/解密动作包含在应向NAND型闪存写入数据时对该数据进行加密的动作、和在应将该加密后的数据从NAND型闪存读出时对该加密后的数据进行解密的动作。

该加密/解密动作并非仅使用加密密钥对数据进行加密,而是使用加密密钥和写入请求所包含的地址对数据进行加密。在仅使用加密密钥对数据进行加密的事例中,具有相同内容(相同数据模式)的2个数据部各自所对应的加密结果变得相同。另一方面,在使用加密密钥和地址对数据进行加密的事例中,即使在具有相同内容(相同数据模式)的2个数据部被分别加密的情况下,这2个数据部的加密结果也不会变得相同。由此,使用加密密钥和地址对数据进行加密这一加密方法与仅使用加密密钥对数据进行加密的情况相比能够得到较高的安全性。

在本实施方式中,如上所述,不仅LBA这样的逻辑地址,表示区块内的物理存储位置的物理地址也由读取/写入请求指定。因此,在数据写入处理中,使用某加密密钥(第1加密密钥)和写入请求所包含的物理地址对数据进行加密,该加密后的数据被向由该写入请求所包含的物理地址(第1物理地址)表示的某区块内的某物理存储位置写入。在用于读出该加密后的数据的读出处理中,从该区块读出该加密后的数据,并且使用上述的加密密钥(第1加密密钥)和读取请求所包含的物理地址对该读出的加密后的数据进行解密。由于该物理地址与为了加密该数据所使用的物理地址(第1物理地址)相同,所以能够对加密后的数据正确地进行解密。

但是,在将该加密后的数据复制到其他区块的复制目的地物理存储位置的情况下,用于将该复制目的地物理存储位置所存储的数据读出的读取请求所包含的物理地址,与用于加密该数据所使用的物理地址(第1物理地址)不同。因此,就复制到复制目的地物理存储位置的加密后的数据而言,如果将用于读出该复制目的地物理存储位置所存储着的数据的读取请求所包含的地址(物理地址)用于该加密后的数据的解密处理,则无法对该加密后的数据正确地进行解密。

因此,在本实施方式中,闪存存储设备3在应将该加密后的数据向其他区块(复制目的地区块)内的某物理存储位置(复制目的地物理存储位置)复制的情况下,首先,使用上述的加密密钥(第1加密密钥)和表示存储有该加密后的数据的物理存储位置的物理地址(第1物理地址)对该加密后的数据进行解密。而且,闪存存储设备3使用某加密密钥和表示该复制目的地区块内的该复制目的地物理存储位置的复制目的地物理地址,对解密后的数据进行再加密,将再加密后的数据向该复制目的地区块内的该复制目的地物理存储位置写入。其结果,由于用于读出该复制目的地物理存储位置所存储着的数据的读取请求所包含的物理地址与为了进行该数据的再加密所使用的物理地址(复制目的地物理地址)相同,所以能够对该再加密后的数据正确地进行解密。

图2表示闪存存储设备3的构成例。

闪存存储设备3具备控制器4以及非易失性存储器(NAND型闪存)5。闪存存储设备3也可以具备随机访问存储器例如DRAM6。

NAND型闪存5包含存储单元阵列,该存储单元阵列包含呈矩阵状配置的多个存储单元。NAND型闪存5既可以是2维构造的NAND型闪存,也可以是3维构造的NAND型闪存。

NAND型闪存5的存储单元阵列包含多个区块BLK0~BLKm-1。区块BLK0~BLKm-1的每一个包含多个页(在此为页P0~Pn-1)。区块BLK0~BLKm-1作为擦除单位发挥功能。区块也有时被称为“擦除区块”、“物理区块”、或“物理擦除区块”。页P0~Pn-1是数据写入动作以及数据读入动作的单位。

控制器4经由ToggleNAND闪存接口、开放式NAND闪存接口(oNFi)这样的NAND接口13,与作为非易失性存储器的NAND型闪存5电连接。控制器4作为构成为控制NAND型闪存5的存储器控制器而工作。该控制器4也可以通过系统单芯片(System-on-a-chip(SoC))这样的电路实现。

NAND型闪存5如图3所示,也可以包含多个NAND型闪存芯片(NAND型闪存裸片)。各个NAND型闪存芯片能够独立工作。因此,NAND型闪存芯片作为能够进行并行工作的单位发挥功能。在图3中,例示有在NAND接口13连接有16个通道Ch.1~Ch.16,在16个通道Ch.1~Ch.16的每一个连接有2个NAND型闪存芯片的情况。该情况下,连接于通道Ch.1~Ch.16的16个NAND型闪存芯片#1~#16可以作为存储体#0而组成,另外连接于通道Ch.1~Ch.16的剩余的16个NAND型闪存芯片#17~#32作为存储体#1而组成。存储体作为用于通过存储体交错存取(Bank interleave)使多个存储模块并行工作的单位发挥功能。在图3的构成例中,通过16个通道、和使用了2个存储体的存储体交错存取,能够使最大32个NAND型闪存芯片并行工作。

擦除动作既可以以一个区块(物理区块)为单位执行,也可以以包含能够并行工作的多个区块的集合的超级区块为单位执行。一个超级区块也可以包含从NAND型闪存芯片#1~#32中逐一选择的共计32个区块,但并不限于此。此外,NAND型闪存芯片#1~#32的每一个也可以具有多平面(Multi plane)构成。例如,在NAND型闪存芯片#1~#32的每一个具有包含2个平面的多平面构成的情况下,一个超级区块也可以包含从NAND型闪存芯片#1~#32所对应的64个平面中逐一选择的共计64个区块。

图4中例示有包含32个区块(在此,为NAND型闪存芯片#1内的区块BLK2、NAND型闪存芯片#2内的区块BLK3、NAND型闪存芯片#3内的区块BLK7、NAND型闪存芯片#4内的区块BLK4、NAND型闪存芯片#5内的区块BLK6、…NAND型闪存芯片#32内的区块BLK3)的一个超级区块(SB)。

由读取/写入/复制请求所包含的区块地址指定的一个区块既可以是包含能够并行访问的多个区块(物理区块)的集合的一个超级区块,也可以是一个物理区块。此外,也可以利用一个超级区块仅包含一个物理区块的构成,在该情况下,一个超级区块与一个物理区块等价。

如图2所示,控制器4包含主机接口11、CPU12、NAND接口13、DRAM接口14、以及加密/解密电路15等。这些主机接口11、CPU12、NAND接口13、DRAM接口14、以及加密/解密电路15主线10相互连接。

主机接口11是构成为执行与主机2的通信的主机接口电路。该主机接口11例如也可以是PCIe控制器(NVMe控制器)。主机接口11从主机2接收各种各样的请求(命令)。这些请求(命令)包含写入请求(写入命令)、读取请求(读取命令)、复制请求(复制命令)、他的各种各样的请求(命令)。

CPU12是构成为控制主机接口11、NAND接口13、DRAM接口14、加密/解密电路15的处理器。CPU12响应于闪存存储设备3的电源启动,从NAND型闪存5或未图示的ROM将控制程序(固件)向DRAM6导入(load),并且通过执行该固件进行各种各样的处理。此外,固件也可以被导入至控制器4内的未图示的SRAM上。该CPU12能够执行用于处理来自主机2的各种各样的命令的命令处理等。CPU12的动作通过由CPU12执行的上述的固件而被控制。此外,命令处理的一部分或全部也可以通过控制器4内的专用硬件执行。

CPU12能够作为写入动作控制部21、读取动作控制部22、以及复制动作控制部23发挥功能。这些写入动作控制部21、读取动作控制部22、以及复制动作控制部23的各自一部分或全部也可以通过控制器4内的专用硬件实现。

写入动作控制部21从主机2接收指定了表示数据应被写入的、NAND型闪存5的区块内的物理存储位置的物理地址的写入请求(写入命令)。如上所述,该物理地址包含表示数据应被写入的区块的区块地址、和表示该数据应被写入的该区块内的位置(物理存储位置)的区块内物理地址(区块内偏移)。区块地址是指定该数据应被写入的区块的区块标识符。作为区块地址,可以使用能够唯一识别NAND型闪存5所包含的多个区块内的任意一个的各种各样的值。例如,区块地址也可以由表示某NAND型闪存芯片的芯片地址、和表示该NAND型闪存芯片内的某区块的区块编号的组合表示。由区块地址指定的区块既可以是物理区块,也可以是上述的超级区块。

写入命令还可以指定区域ID。即,控制器4能够管理通过将NAND型闪存5进行逻辑性划分而得到的多个区域。各区域也可以包含几个区块。区域ID是指定这些多个区域内的任意区域的标识符。也可以向各最终用户(租户)分配一个区域。该情况下,来自与各最终用户(租户)对应的用户应用程序的读取/写入请求也可以包含表示该最终用户(租户)将要使用的区域的区域ID。

在本实施方式中,在控制器4中管理有用于对从主机2接收的数据(用户数据)进行加密的多个加密密钥。

数据(用户数据)的加密也可以使用按每个区域不同的加密密钥、也即是按每个租户不同的加密密钥执行。换言之,控制器4对管理多个区域与多个加密密钥之间的对应关系的管理表进行管理,在从主机2接收到指定某区域ID的读取/写入请求的情况下,选择与由该区域ID表示的区域所关联的加密密钥来作为在数据的加密(或解密)中应使用的加密密钥。

此外,由于表示哪个区块属于哪个区域的信息通过控制器4进行管理,所以控制器4能够选择具有由读取/写入请求指定的区块地址的区块所属的区域所对应的加密密钥来作为在数据的加密(或解密)中应使用的加密密钥。因此,在本实施方式中,也能够利用不包含区域ID的读取/写入请求。

这些多个区域也可以通过多个命名空间实现。各命名空间是NAND型闪存5内的一种区域(存储区域),将逻辑地址空间(LBA范围)分配给各命名空间。各个命名空间通过这些命名空间的标识符(命名空间ID:NSID)而被识别。向各区域分配LBA范围(LBA0~LBAn-1)。LBA范围的大小(也即是LBA的数量)按每个区域(命名空间)可变。各LBA范围从LBA0开始。在这些多个区域通过多个命名空间实现的事例中,各读取/写入请求既可以包含命名空间ID来作为区域ID,也可以不包含命名空间ID。在各读取/写入请求包含有命名空间ID的情况下,控制器4能够选择由从主机2接收到的读取/写入请求指定的命名空间ID所表示的区域(命名空间)所关联的加密密钥来作为在数据的加密(或解密)中应使用的加密密钥。在各读取/写入请求不包含命名空间ID的情况下,控制器4能够基于由从主机2接收到的读取/写入请求指定的区块地址,选择具有该指定的区块地址的区块所属的区域(命名空间)所关联的加密密钥来作为在数据的加密(或解密)中应使用的加密密钥。

或者,各个区块也可以作为区域使用。该情况下,数据(用户数据)的加密通常也可以使用按每个区块不同的加密密钥来执行。控制器4能够基于由从主机2接收到的读取/写入请求指定的区块地址,选择具有该指定的区块地址的区块所关联的加密密钥来作为在数据的加密(或解密)中应使用的加密密钥。

在从主机2接收到指定物理地址(区块地址、区块内偏移)的写入请求(写入命令)的情况下,写入动作控制部21首先使用从多个加密密钥中选择的加密密钥(第1加密密钥)和该写入请求所包含的物理地址对来自主机2的数据(写入数据)进行加密。该情况下,用于数据的加密的运算使用加密/解密电路15来执行。从多个加密密钥中选择的加密密钥也可以是与该区块或该区块所属的区域(例如命名空间)关联着的加密密钥。

而且,写入动作控制部21将加密后的数据向由物理地址(区块地址、区块内偏移)指定的该区块(写入目的地区块)内的物理存储位置(写入目的地位置)写入。

读取动作控制部22从主机2接收指定物理地址的读取请求(读取命令),该物理地址表示存储有上述的加密后的数据的NAND型闪存5内的物理存储位置。该物理地址由存储有上述的加密后的数据的上述的区块的区块地址、和表示存储有上述的加密后的数据的该区块内的物理存储位置的区块内偏移表示。

在从主机2接收到该读取请求(读取命令)的情况下,读取动作控制部22基于由该读取请求指定的物理地址,将加密后的数据从该区块读出,使用该区块或该区块所属的区域所关联着的加密密钥(上述的第1加密密钥)和该读取请求所包含的物理地址,对读出的加密后的数据进行解密。该情况下,用于数据的解密的运算使用加密/解密电路15来执行。

复制动作控制部23执行将加密后的数据从复制源区块向复制目的地区块复制的动作。该复制动作例如既可以是仅将特定的加密后的数据从复制源区块向复制目的地区块单纯地复制的动作,也可以是为了进行垃圾收集而仅将复制源区块内的加密后的有效数据向复制目的地区块复制的动作,还可以是为了损耗均衡(wear leveling)而将复制源区块内的全部加密后的数据向复制目的地区块复制的动作。该复制动作可以根据从主机2接收的复制请求(复制命令)而执行。

在应执行将加密后的数据从复制源区块向复制目的地区块内的物理存储位置(复制目的地物理存储位置)复制的动作的情况下,复制动作控制部23使用复制源区块或该复制源区块所属的区域所关联着的加密密钥和表示存储有该加密后的数据的物理存储位置的物理地址,对该加密后的数据进行解密。而且,复制动作控制部23使用复制目的地区块或该复制目的地区块所属的区域所关联着的加密密钥和表示复制目的地区块内的复制目的地物理存储位置的物理地址,对该解密后的数据进行再加密。而且,复制动作控制部23将该再加密后的数据向复制目的地区块内的复制目的地物理存储位置写入。

例如,在复制动作控制部23从主机2接收到复制请求的情况下,复制动作控制部23执行以下的动作。

复制请求指定表示某复制源区块内的某复制源物理存储位置的复制源物理地址和表示某复制目的地区块内的某复制目的地物理存储位置的复制目的地物理地址。复制动作控制部23从该复制源区块内的该复制源物理存储位置读出加密后的数据,使用该复制源区块或该复制源区块所属的区域所关联着的加密密钥、和该复制源物理地址,对读出的加密后的数据进行解密。而且,复制动作控制部23使用该复制目的地区块或该复制目的地区块所属的区域所关联着的加密密钥、和该复制目的地物理地址,对该解密后的数据进行再加密,将该再加密后的数据向该复制目的地区块内的该复制目的地物理存储位置写入。

NAND接口13构成为在CPU12的控制之下对NAND型闪存5进行控制的存储器控制电路。DRAM接口14构成为在CPU12的控制之下对DRAM6进行控制的DRAM控制电路。DRAM6的存储区域的一部分作为读取缓冲器(RB)30以及写入缓冲器(WB)31而被使用。另外,DRAM6的存储区域的其他一部分为了进行系统管理信息33的存储而被使用。

系统管理信息33包含管理各个区域与各个区块地址的对应关系的表、和管理各个区域(或区块)与各个加密密钥之间的对应关系的表等。

这些读取缓冲器(RB)30、写入缓冲器(WB)31、系统管理信息33可以存储于控制器4内的未图示的SRAM。

如上所述,主机2是服务器这样的计算机,并构成为执行各种各样的程序。通过主机2执行的程序包含应用程序软件层41、操作系统42、文件系统43、设备驱动器44等。

众所周知,操作系统42是构成为管理主机2全体、控制主机2内的硬件、执行用于使得应用程序能够使用硬件以及闪存存储设备3的控制的软件。文件系统43以及设备驱动器44也包含于该操作系统42。

文件系统43为了进行用于文件的操作(作成、保存、更新、削除等)的控制而被使用。

各种各样的应用程序软件线程在应用程序软件层41上运行。作为应用程序软件线程的例子,有客户端软件、数据库软件、虚拟机等。

设备驱动器44在文件系统43的控制之下对闪存存储设备3进行控制。

操作系统42还可以包含用于管理作为地址转换表发挥功能的查找表(LUT)2B的闪存转换层(FTL)2A。

查找表(LUT)2B对用于识别各个数据的各个标签(例如,LBA这样的逻辑地址)与表示闪存存储设备3(也就是说,NAND型闪存5)内的各个物理存储位置的各个物理地址之间的映射进行管理。

图5将数据写入动作、数据读出动作、以及数据复制动作的概要与数据、区块地址、以及页地址的流动一起表示。

<数据写入动作>

主机2在需要向闪存存储设备3写入数据(写入数据)时,主机2决定表示写入数据应被写入的位置(物理存储位置)的物理地址。物理地址由指定写入数据应被写入的区块(写入目的地区块)的区块地址、和表示写入数据应被写入的写入目的地区块内的位置的区块内偏移(仅作为偏移而被参照)表现。在此,区块内偏移可以由页地址和页内偏移表现,但在

图5中为了简化图示区块内偏移仅由页地址表现。

在此,主机2如上所述包含管理LUT2B的FTL2A。FTL2A对作为管理各个标签(例如LBA)与NAND型闪存5的各个物理地址之间的映射的地址转换表的LUT2B进行管理。

在主机2决定了写入数据应被写入的物理地址的情况下,FTL2A更新LUT2B,向该写入数据所对应的标签(例如LBA)映射决定了的物理地址(区块地址、区块内偏移(页地址))。

而且,主机2将指定区块地址以及区块内偏移(页地址)的写入请求向闪存存储设备3送出。

加密/解密电路15使用写入请求所包含的物理地址、和从加密密钥存储区域80所存储着的多个加密密钥中选择的一个加密密钥,对写入数据进行加密。加密密钥存储区域80包含存储多个加密密钥的加密密钥管理表。在加密密钥存储区域80的加密密钥管理表中,既可以存储有与多个区域(例如,多个命名空间)分别关联的多个加密密钥,也可以存储有与多个区块地址分别关联的多个加密密钥。

在与命名空间这样的多个区域分别关联的多个加密密钥存储于加密密钥存储区域80的加密密钥管理表的情况下,也可以从这些多个加密密钥中选择具有写入请求所包含的区块地址的区块所属的区域(命名空间)所关联的加密密钥。此外,在写入请求包含命名空间ID的情况下,也可以从这些多个加密密钥中选择由该命名空间ID指定的区域(命名空间)所关联的加密密钥。

在与多个区块地址分别关联的多个加密密钥存储于加密密钥存储区域80的加密密钥管理表的情况下,也可以从这些多个加密密钥中选择写入请求所包含的区块地址所关联的加密密钥。

写入动作控制部21基于由写入请求指定的物理地址(区块地址、区块内偏移(页地址)),向写入目的地区块内的写入目的地位置写入加密后的写入数据。

此外,在数据写入动作中,写入动作控制部21也可以执行以下的动作。

写入动作控制部21也可以从主机2接收写入请求和写入数据,将接收到的写入数据和接收到的写入请求所包含的物理地址(区块地址、区块内偏移(页地址))向加密/解密电路15送出,从加密密钥存储区域80中选择接收到的写入请求所包含的区域ID(或区块地址)所关联的加密密钥,将选择的加密密钥向加密/解密电路15送出。

<数据读取动作>

在主机2需要从闪存存储设备3读出数据时,主机2参照LUT2B,从LUT2B取得应读出的数据的标签(LBA)所对应的物理地址(区块地址、区块内偏移(页地址))。

接着,主机2将指定了取得的区块地址以及区块内偏移(页地址)的读取请求向闪存存储设备3送出。在闪存存储设备3的控制器4(读取动作控制部22)从主机2接收到该读取请求时,控制器4(读取动作控制部22)基于区块地址以及区块内偏移(页地址)确定读取对象的区块和读取对象的区块内的读取对象的物理存储位置。而且,控制器4(读取动作控制部22)从确定的读取对象的区块内的确定的读取对象的物理存储位置读出加密后的数据。

接着,读出的加密后的数据用加密/解密电路15进行解密。加密/解密电路15使用读取命令所包含的物理地址、和读取对象的区块(或读取对象的区块所属的区域)所关联的加密密钥,对读出的加密后的数据进行解密。而且,控制器4将解密后的数据向主机2送出。

<数据复制动作>

主机2在需要执行数据复制动作的情况下,决定复制源物理地址(复制源区块地址、区块内偏移)、和复制目的地物理地址(复制目的地区块地址、区块内偏移)。在此所说的数据复制动作既可以是仅将特定的加密后的数据从复制源区块单纯的向复制目的地区块复制的动作,也可以是为了进行垃圾收集(GC)而仅将复制源区块内的加密后的有效数据向复制目的地区块复制的动作,还可以是为了损耗均衡而将复制源区块内的全部加密后的数据向复制目的地区块复制的动作。

而且,主机2将指定复制源物理地址和复制目的地物理地址的复制请求向闪存存储设备3送出。在闪存存储设备3的复制动作控制部23从主机2接收到该复制请求时,复制动作控制部23基于复制源物理地址,确定存储着复制对象的数据的区块(复制源区块)内的物理存储位置,从该复制源区块内的物理存储位置读出加密后的数据。

接着,读出的加密后的数据用加密/解密电路15进行解密。加密/解密电路15使用复制请求所包含的复制源物理地址、和复制源区块(或复制源区块所属的区域)所关联的加密密钥,对读出的加密后的数据进行解密。

而且,解密后的数据用加密/解密电路15进行再加密。加密/解密电路15使用复制请求所包含的复制目的地物理地址、和复制目的地区块(或复制目的地区块所属的区域)所关联的加密密钥,对解密后的数据进行再加密。

用于对读出的加密后的数据进行解密时使用的加密密钥、与对解密后的数据进行再加密时使用的加密密钥有时相同有时不同。例如,在与命名空间这样的多个区域分别关联有多个加密密钥,复制源区块与复制目的地区块属于同一区域的情况下,在解密动作和再加密动作中使用同一加密密钥,而在复制源区块与复制目的地区块属于不同区域的情况下,在解密动作和再加密动作中使用不同的加密密钥。在与多个区块地址分别关联有多个加密密钥的情况下,在解密动作和再加密动作中使用不同的加密密钥。

而且,复制动作控制部23基于复制请求所包含的复制目的地物理地址,向复制目的地区块内的复制目的地物理存储位置写入再加密后的数据。

此外,在数据复制动作中,复制动作控制部23也可以执行以下的动作。

复制动作控制部23从主机2接收复制请求,将读出的数据和复制请求所包含的复制源物理地址(区块地址、区块内偏移(页地址))向加密/解密电路15送出,从加密密钥存储区域80中选择接收到的复制请求所包含的区域ID(或复制源区块地址)所对应的加密密钥,将选择的加密密钥向加密/解密电路15送出。

另外,复制动作控制部23将解密后的数据、和复制请求所包含的复制目的地物理地址(区块地址、区块内偏移(页地址))向加密/解密电路15送出,从加密密钥存储区域80中选择接收到的复制请求所包含的区域ID(或复制目的地区块地址)所对应的加密密钥,将选择的加密密钥向加密/解密电路15送出。

图6是表示通过加密/解密电路15执行的加密以及解密动作。

如图6的左部所示,加密/解密电路15内的加密电路15A在接收应加密的写入数据、地址信息、以及加密密钥时,使用地址信息和加密密钥对写入数据进行加密,输出加密后的写入数据。地址信息是从主机2接收的写入请求所包含的物理地址。写入数据、地址信息也可以从写入动作控制部21向加密电路15A送出。

此外,在数据复制动作中,地址信息是表示复制目的地物理存储位置的复制目的地物理地址。应被向复制目的地物理存储位置写入的数据(写入数据)、复制目的地物理地址(地址信息)也可以从复制动作控制部23向加密电路15A送出。

加密密钥存储区域80的加密密钥管理表33A保持有与多个区域ID(#0、#1、#2、…)分别关联的多个加密密钥(KEY#0、KEY#1、KEY#2、…)。在某区域ID(ID#x)从写入动作控制部21向加密密钥存储区域80供给时,加密密钥存储区域80的加密密钥管理表33A输出与该区域ID(ID#x)对应的加密密钥(KEY#x)。从加密密钥存储区域80输出的加密密钥(KEY#x)向加密/解密电路15的加密电路15A送出。

使用地址信息和加密密钥对写入数据进行加密的处理能够使用各种各样的方法执行。例如,既可以使用遵照AES-XTS的加密算法,也可以使用其他加密算法。

例如,在使用地址信息和加密密钥对写入数据进行加密的处理中,加密电路15A可以首先使用地址信息(物理地址)变更写入数据的位模式,然后利用加密密钥对该变更后的位模式进行加密。在使用地址信息(物理地址)变更写入数据的位模式的处理中,可以首先使用与数据用的上述的加密密钥不同的加密密钥对地址信息进行加密,然后使用该加密后的地址信息变更写入数据的位模式。

如图6的右部所示,加密/解密电路15内的解密电路15B在接收加密后的读取数据、地址信息、以及加密密钥时,使用地址信息和加密密钥,对加密后的读取数据进行解密,输出解密后的读取数据。供给到加密/解密电路15的加密后的读取数据是通过读取动作控制部22从NAND型闪存5读出的加密后的数据。供给到加密/解密电路15的地址信息是从主机2接收的读取请求所包含的地址信息(物理地址)。加密后的读取数据、地址信息也可以从读取动作控制部22向解密电路15B送出。

此外,在数据复制动作中,地址信息是表示复制源物理存储位置的复制源物理地址。从复制源物理存储位置读出的加密后的数据(读取数据)、复制源物理地址(地址信息)也可以从复制动作控制部23向解密电路15B送出。

如上所述,加密密钥存储区域80的加密密钥管理表33A保持有与多个区域ID(#0、#1、#2、…)分别关联的多个加密密钥(KEY#0、KEY#1、KEY#2、…)。在某区域ID(ID#x)从读取动作控制部22向加密密钥存储区域80供给时,加密密钥存储区域80的加密密钥管理表33A输出与该区域ID(ID#x)对应的加密密钥(KEY#x)。从加密密钥存储区域80输出的加密密钥(KEY#x)向加密/解密电路15的解密电路15B送出。

在对加密后的读取数据进行解密的处理中,解密电路15B首先可以使用地址信息(物理地址),变更加密后的读取数据的位模式,然后利用加密密钥对该变更后的位模式进行解密。

图7表示命名空间/加密密钥管理表。

该命名空间/加密密钥管理表33A’能够作为图6的加密密钥存储区域80所包含的加密密钥管理表33A加以利用。在命名空间/加密密钥管理表33A’中,管理有与NSID#0、NSID#1、NSID#2、NSID#3、NSID#4、…、NSID#k分别对应的加密密钥KEY#0、加密密钥KEY#1、加密密钥KEY#2、加密密钥KEY#3、加密密钥KEY#4、…、加密密钥KEY#k。在该命名空间/加密密钥管理表33A’作为图6的加密密钥存储区域80所包含的加密密钥管理表33A加以利用的情况下,能够使用按每个命名空间而不同的加密密钥。

图8表示区块/加密密钥管理表。

该区块/加密密钥管理表33B作为图6的加密密钥存储区域80所包含的加密密钥管理表33A加以利用。在区块/加密密钥管理表33B中,管理有与区块地址BLK#0、区块地址BLK#1、区块地址BLK#2、区块地址BLK#3、区块地址BLK#4、…分别对应的加密密钥KEY#0、加密密钥KEY#1、加密密钥KEY#2、加密密钥KEY#3、加密密钥KEY#4、…。在该区块/加密密钥管理表33B作为图6的加密密钥存储区域80所包含的加密密钥管理表33A加以利用的情况下,能够从加密密钥存储区域80所包含的多个加密密钥中选择与写入/读取/复制请求所包含的区块地址对应的加密密钥。

图9表示根据写入命令执行的写入动作。

现在,假定写入命令所包含的区块地址表示区块BLK#0的情况。写入动作控制部21将加密后的数据按页0、页1、页2、…页n这一顺序,以页为单位向区块BLK#0写入。

在图9中,假定在区块BLK#0的页0已被写入有与16K字节相应的加密后的数据的状态下,从主机2接收到指定物理地址(BLK#0、偏移+4)以及长度(=4)的写入命令的情况。该情况下,写入动作控制部21将通过加密电路15A加密后的与16K字节相应的写入数据向区块BLK#0的页1写入。

图10表示通过闪存存储设备3执行的读出动作。

在图10中,假定从主机2接收到指定物理地址(BLK#0、偏移(=+4))、长度(=4)的读取命令的情况。闪存存储设备3的读取动作控制部22基于物理地址(BLK#0、偏移(=+4))、长度(=4),读出区块BLK#0的页1所存储着的16KB用户数据(加密后的数据),将读出的16KB用户数据(加密后的数据)向解密电路15B送出。

图11表示通过主机2和闪存存储设备3执行的写入处理的时序图。

在此,假定在图7中说明的命名空间/加密密钥管理表33A’作为图6的加密密钥存储区域80所包含的加密密钥管理表33A加以利用的情况。

主机2首先决定表示写入数据应被写入的位置的物理地址(区块地址、偏移)。然后,主机2将包含由自身决定的物理地址(区块地址、偏移)、命名空间ID、长度的写入命令向闪存存储设备3发送。

闪存存储设备3的控制器4在接收到该写入命令时,控制器4使用该写入命令所包含的物理地址、和与写入命令所包含的命名空间ID对应的加密密钥,对该写入命令所关联的写入数据进行加密(步骤S11)。

接着,写入动作控制部21向该写入命令所包含的物理地址表示的位置写入加密后的写入数据(步骤S12)。

然后,控制器4将相对于写入命令的应答(response)向主机2返回(步骤S13)。该应答为了向主机2通知命令完成而被返回。

图12表示通过主机2和闪存存储设备3执行的读出处理的时序图。

在此,假定在图7中说明的命名空间/加密密钥管理表33A’作为图6的加密密钥存储区域80所包含的加密密钥管理表33A加以利用的情况。

主机2参照由主机2管理的LUT2B,将来自用户应用程序的读取请求所包含的标签(LBA)转换为物理地址(区块地址、偏移)。然后,主机2将指定了该物理地址(区块地址、偏移)、命名空间ID、长度的读取命令向闪存存储设备3发送。

闪存存储设备3的控制器4在从主机2接收到读取命令时,读取动作控制部22从读取命令所包含的物理地址(区块地址、偏移)表示的位置读出加密后的数据(步骤S21)。

在步骤S21中,控制器4选择由读取命令指定的区块地址所对应的区块来作为读取对象的区块,并且基于由该读取命令指定的偏移,选择该读取对象的区块内的读取对象的页。此时,控制器4首先可以用由读取命令指定的偏移除以表示页大小的粒度的数(在此为4)。然后,控制器4也可以分别选择通过该除法运算得到的商以及余数来作为读取对象的页地址以及读取对象的页内偏移位置。此外,页地址以及页内偏移也可以作为偏移(区块内偏移)而包含于读取命令。然后,控制器4基于物理地址(区块地址、偏移)、长度,从NAND型闪存5读出加密后的数据。

接着,控制器4使用读取命令所包含的物理地址、和与读取命令所包含的命名空间ID对应的加密密钥,对读出的数据(加密后的数据)进行解密(步骤S22)。然后,控制器4将解密后的数据向主机2发送。

图13表示数据复制动作的步骤。

在此,假定在图7中说明的命名空间/加密密钥管理表33A’作为图6的加密密钥存储区域80所包含的加密密钥管理表33A加以利用的情况。另外,数据复制动作作为GC动作来进行说明。

例如,主机2在由主机2管理的自由区块列表所包含的剩余自由区块的数降低到阈值以下的情况下,决定复制源物理地址(复制源区块地址、偏移)以及复制目的地物理地址(复制目的地区块地址、偏移),将指定了决定的复制源物理地址(复制源区块地址、偏移)以及复制目的地物理地址(复制目的地区块地址、偏移)的复制命令向闪存存储设备3发送。在此,复制源区块地址表示的复制源区块、和复制目的地区块地址表示的复制目的地区块既可以是属于相同命名空间的不同区块,也可以是属于彼此不同命名空间的不同区块。

在接收到复制命令时,闪存存储设备3的控制器4的复制动作控制部23将作为复制对象的加密后的数据(有效数据)从由复制命令所包含的复制源物理地址表示的位置读出(步骤S31)。

然后,控制器4使用复制命令所包含的复制源物理地址、和复制命令所包含的复制源区块地址表示的复制源区块所属的命名空间所对应的加密密钥,对读出的加密后的数据(有效数据)进行解密(步骤S32)。在此,控制器4基于复制源区块地址,确定复制源区块地址表示的复制源区块,并确定所确定的复制源区块所属的命名空间。然后,控制器4从命名空间/加密密钥管理表33A’取得与确定的命名空间对应的加密密钥,将取得的加密密钥使用于解密动作。

接着,控制器4使用复制命令所包含的复制目的地物理地址、和复制命令所包含的复制目的地区块地址表示的复制目的地区块所属的命名空间所对应的加密密钥,对解密后的数据进行再加密(步骤S33)。在此,控制器4基于复制目的地区块地址,确定复制目的地区块地址表示的复制目的地区块,并确定所确定的复制目的地区块所属的命名空间。然后,控制器4从命名空间/加密密钥管理表33A’取得所确定的命名空间所对应的加密密钥,将取得的加密密钥用于再加密动作。

在复制源区块地址表示的复制源区块、和复制目的地区块地址表示的复制目的地区块属于相同命名空间的情况下,解密时使用的加密密钥、与再加密时使用的加密密钥为同一加密密钥,但是在复制源区块和复制目的地区块属于彼此不同的命名空间的情况下,解密时使用的加密密钥、与再加密时使用的加密密钥彼此不同。

接着,复制动作控制部23将再加密后的数据向由复制目的地物理地址表示的位置写入(步骤S34)。

在步骤S34完成后,控制器4向主机2发送用于通知数据复制动作完成的应答。在主机2侧,当主机2接收来自闪存存储设备3的应答时,FTL2A更新LUT2B,向复制后的数据所对应的标签(例如LBA)映射复制目的地物理地址。

此外,复制命令也可以包含表示多个复制源物理存储位置的多个复制源物理地址、和表示多个复制目的地物理存储位置的多个复制目的地物理地址。该情况下,在数据复制动作中,控制器4对多个加密后的数据部进行解密以及再加密,并执行将这些多个加密后的数据部从多个复制源物理存储位置向多个复制目的地物理存储位置分别复制的动作。

另外,复制命令也可以包含命名空间ID。在复制源区块与复制目的地区块属于同一命名空间的情况下,表示复制源区块与复制目的地区块所属的命名空间的命名空间ID包含于复制命令。另一方面,在复制源区块与复制目的地区块属于各自不同的命名空间的情况下,表示复制源区块所属的命名空间的命名空间ID、和表示复制目的地区块所属的命名空间的命名空间ID包含于复制命令。

在复制命令包含命名空间ID的情况下,控制器4也可以在步骤S32、S33中,从命名空间/加密密钥管理表33A’取得复制命令所包含的命名空间ID所对应的加密密钥。

图14表示数据复制动作例。

在此,假定在图7中说明的命名空间/加密密钥管理表33A’作为图6的加密密钥存储区域80所包含的加密密钥管理表33A加以利用的情况。

在图14中,假定将复制源区块(在此为区块BLK#0)的偏移+4所对应的位置所存储着的数据d4向复制目的地区块(在此为区块BLK#2)的偏移+0所对应的位置复制的情况。另外,假定区块BLK#0与区块BLK#2属于由命名空间ID(NS#0)表示的相同的命名空间。

复制动作控制部23读出复制源物理地址(BLK#0、偏移(=+4))表示的位置所存储着的加密后的数据d4,将加密后的数据d4向加密/解密电路15的解密电路15B送出。加密后的数据d4在加密/解密电路15的解密电路15B中,使用复制源物理地址(BLK#0、偏移(=+4))、和表示复制源区块(区块BLK#0)所属的命名空间的命名空间NS#0所对应的加密密钥KEY#0而被解密。

然后,复制动作控制部23将解密后的数据d4向加密/解密电路15的加密电路15A送出。解密后的数据d4在加密/解密电路15的加密电路15A中,使用复制目的地物理地址(BLK#2、偏移(=+0))、和表示复制目的地区块(区块BLK#2)所属的命名空间的命名空间NS#0所对应的加密密钥KEY#0而被再加密。接着,复制动作控制部23将再加密后的数据d4向复制目的地物理地址(BLK#2、偏移(=+0))表示的位置写入。

此外,在图14中,假定区块BLK#0和区块BLK#2属于命名空间NS#0,但是复制目的地区块与复制源区块也可以属于彼此不同的命名空间。

图15表示由主机2和闪存存储设备3执行的写入处理的其他时序图。

在此,假定图8的区块/加密密钥管理表33B作为图6的加密密钥存储区域80所包含的加密密钥管理表33A加以利用的情况。

主机2首先决定表示写入数据应被写入的位置的物理地址(区块地址、偏移)。然后,主机2将包含由自身决定的物理地址(区块地址、偏移)和长度的写入命令向闪存存储设备3发送。写入命令也可以包含命名空间ID。

闪存存储设备3的控制器4在接收到该写入命令时,控制器4使用该写入命令所包含的物理地址、和由写入命令所包含的区块地址表示的区块所对应的加密密钥,对该写入命令所关联的写入数据进行加密(步骤S41)。

接着,写入动作控制部21向该写入命令所包含的物理地址表示的位置写入加密后的写入数据(步骤S42)。

然后,控制器4将相对于写入命令的应答向主机2返回(步骤S43)。该应答为了向主机2通知命令完成而被返回。

图16表示由主机2和闪存存储设备3执行的读出处理的其他时序图。

在此,假定图8的区块/加密密钥管理表33B作为图6的加密密钥存储区域80所包含的加密密钥管理表33A加以利用的情况。

主机2参照由主机2管理的LUT2B,将来自用户应用的读取请求所包含的标签(LBA)向物理地址(区块地址、偏移)转换。然后,主机2将指定该物理地址(区块地址、偏移)、长度的读取命令向闪存存储设备3发送。读取命令也可以包含命名空间ID。

闪存存储设备3的控制器4在从主机2接收到读取命令时,读取动作控制部22从读取命令所包含的物理地址(区块地址、偏移)表示的位置读出加密后的数据(步骤S51)。

在步骤S51中,控制器4决定由读取命令指定的区块地址所对应的区块来作为读取对象的区块,并且基于由该读取命令指定的偏移决定读取对象的页。此时,控制器4首先也可以用由读取命令指定的偏移除以表示页大小粒度的数(在此为4)。然后,控制器4也可以将通过该除法运算得到的商以及余数分别决定为读取对象的页地址以及读取对象的页内偏移位置。此外,页地址以及页内偏移也可以作为偏移(区块内偏移)包含于读取命令。

然后,控制器4基于物理地址(区块地址、偏移)、长度,从NAND型闪存5中读出加密后的数据。

接着,控制器4使用读取命令所包含的物理地址、和由该读取命令所包含的区块地址(物理地址的一部分)表示的区块所对应的加密密钥,对读出的数据(加密后的数据)进行解密(步骤S52)。然后,控制器4将解密后的数据向主机2发送。

图17表示数据复制动作的其他步骤。

在此,假定图8的区块/加密密钥管理表33B作为图6的加密密钥存储区域80所包含的加密密钥管理表33A加以利用的情况。另外,数据复制动作作为GC动作进行说明。

例如,主机2在由主机2管理的自由区块列表所包含的剩余自由区块的数降低至阈值以下的情况下,决定复制源物理地址(复制源区块地址、偏移)以及复制目的地物理地址(复制目的地区块地址、偏移),将指定了决定的复制源物理地址(复制源区块地址、偏移)以及复制目的地物理地址(复制目的地区块地址、偏移)的复制命令向闪存存储设备3发送。

在接收复制命令时,闪存存储设备3的控制器4的复制动作控制部23将加密后的数据(有效数据)从复制命令所包含的复制源物理地址表示的位置读出(步骤S61)。

然后,控制器4使用复制命令所包含的复制源物理地址、和复制命令所包含的复制源区块地址表示的复制源区块所对应的加密密钥,对读出的加密后的数据(有效数据)进行解密(步骤S62)。在此,控制器4基于复制源区块地址,确定复制源区块地址表示的复制源区块,从区块/加密密钥管理表33B取得所确定的复制源区块所对应的加密密钥,将取得的加密密钥用于解密动作。

接着,控制器4使用复制命令所包含的复制目的地物理地址、和复制命令所包含的复制目的地区块地址表示的复制目的地区块所对应的加密密钥,对解密后的数据进行再加密(步骤S63)。在此,控制器4基于复制目的地区块地址,确定复制目的地区块地址表示的复制目的地区块,从区块/加密密钥管理表33B取得确定后的复制目的地区块所对应的加密密钥,将所取得的加密密钥用于再加密动作。

由于按每个区块对应有加密密钥,所以在解密时使用的加密密钥和在再加密时使用的加密密钥彼此不同。

接着,复制动作控制部23将再加密后的数据向由复制目的地物理地址表示的位置写入(步骤S64)。

在步骤S64完成后,控制器4向主机2发送用于通知数据复制动作的完成的应答。在主机2侧,在主机2接收到来自闪存存储设备3的应答时,FTL2A更新LUT2B,向复制后的数据所对应的标签(例如LBA)映射复制目的地物理地址。

此外,复制命令也可以包含表示多个复制源物理存储位置的多个复制源物理地址、和表示多个复制目的地物理存储位置的多个复制目的地物理地址。

另外,复制命令也可以包含命名空间ID。在复制源区块和复制目的地区块属于同一命名空间的情况下,表示复制源区块和复制目的地区块所属的命名空间的命名空间ID包含于复制命令,在复制源区块和复制目的地区块属于不同命名空间的情况下,包含表示复制源区块所属的命名空间的命名空间ID、和表示复制目的地区块所属的命名空间的命名空间ID。

图18表示数据复制动作的其他例。

在此,假定图8的区块/加密密钥管理表33B作为图6的加密密钥存储区域80所包含的加密密钥管理表33A加以利用的情况。

在图18中,假定将复制源区块(在此为区块BLK#0)的偏移+4所对应的位置所存储着的数据d4向复制目的地区块(在此为区块BLK#1)的偏移+0所对应的位置复制的情况。

复制动作控制部23读出复制源物理地址(BLK#0、偏移(=+4))表示的位置所存储着的加密后的数据d4,将加密后的数据d4向加密/解密电路15的解密电路15B送出。加密后的数据d4在加密/解密电路15的解密电路15B中,使用复制源物理地址(BLK#0、偏移(=+4))、和复制源区块地址(BLK#0)所对应的加密密钥KEY#0而被解密。

然后,复制动作控制部23将解密后的数据d4向加密/解密电路15的加密电路15A送出。解密后的数据d4在加密/解密电路15的加密电路15A中,使用复制目的地物理地址(BLK#1、偏移(=+0))、和复制目的地区块地址(BLK#1)所对应的加密密钥KEY#1而被再加密。接着,复制动作控制部23将再加密后的数据d4向复制目的地物理地址(BLK#1、偏移(=+0))表示的位置写入。

图19表示向闪存存储设备3发出的写入命令。

写入命令是向闪存存储设备3请求数据的写入的命令。该写入命令也可以包含命令ID、命名空间ID、物理地址PBA、长度等。

命令ID是表示该命令是写入命令的ID(命令码),写入命令包含有写入命令用的命令ID。

命名空间ID是表示NAND型闪存5的多个区域内的一个区域的标识符,表示数据应被写入的区域。

物理地址PBA表示数据应被写入的最初的物理存储位置。物理地址PBA由区块地址、偏移(区块内偏移)指定。

长度表示应被写入的写入数据的长度。该长度(数据长)既可以由粒度(Grain)数指定,或者该数据的大小(数据长)也可以由字节指定。

图20表示向闪存存储设备3发出的读取命令。

读取命令是向闪存存储设备3请求数据的读出的命令。该读取命令也可以包含命令ID、命名空间ID、物理地址PBA、以及长度。

命令ID是表示该命令是读取命令的ID(命令码),读取命令包含有读取命令用的命令ID。

命名空间ID是表示NAND型闪存5的多个区域内的一个区域的标识符,表示数据应被读出的区域。

物理地址PBA表示数据应被读出的最初的物理存储位置。物理地址PBA由区块地址、偏移(区块内偏移)指定。

长度表示应读出的数据的长度。该数据长能够由粒度(Grain)数指定。

图21表示向闪存存储设备3发出的复制命令。

复制命令为了向闪存存储设备3通知复制源物理地址以及复制目的地物理地址而被使用。

假定执行GC动作来作为数据复制动作例的情况,主机2管理各区块的有效数据量/无效数据量,能够选择有效数据量较少的几个区块内的有效数据来作为复制对象的数据(复制源物理地址的决定)。另外,主机2管理自由区块列表(free block list),并能够决定某自由区块内的某位置来作为复制对象的数据的复制目的地物理地址。该复制命令也可以包含命令ID、复制源物理地址、复制目的地物理地址等。

命令ID是表示该命令是复制命令的ID(命令码),复制命令包含复制命令用的命令ID。

复制源物理地址表示存储有复制对象的数据的物理存储位置。复制源物理地址由复制源区块地址以及偏移(复制源区块内偏移)指定。

复制目的地物理地址表示应写入复制对象的数据的物理存储位置。复制目的地物理地址由复制目的地区块地址以及偏移(复制目的地区块内偏移)指定。

如以上说明的那样,根据本实施方式,控制器4在从主机2接收到指定了表示写入数据应被写入的、NAND型闪存5的写入目的地区块内的写入目的地位置的第1物理地址的写入请求的情况下,使用从多个加密密钥中选择的第1加密密钥和第1物理地址对写入数据进行加密,加密后的写入数据被向写入目的地区块内的写入目的地位置写入。

另外,控制器4在从主机2接收到指定第1物理地址的读取请求的情况下,从读取对象的区块读出加密后的数据,使用第1加密密钥和读取对象的物理存储位置,对读出后的加密后的数据进行解密。

进而,在应将加密后的数据从复制源区块向NAND型闪存5的复制目的地区块内的复制目的地物理存储位置复制的情况下,使用第1加密密钥和复制源物理地址,对加密后的数据进行解密。另外,使用从多个加密密钥中选择的第2加密密钥、和表示复制目的地区块内的复制目的地物理存储位置的复制目的地物理地址,对解密后的数据进行再加密,将再加密后的数据向第2区块内的第2物理存储位置写入。其结果,由于用于读出该复制目的地物理存储位置所存储着的数据的读取请求所包含的物理地址与为了该数据的再加密所使用的物理地址(复制目的地物理地址)相同,所以能够对该再加密后的数据进行正确的解密。因此,在使用指定了表示数据应被写入的物理存储位置的物理地址的写入请求以及指定了表示存储有应被读出的数据的物理存储位置的物理地址的读取请求的构成中,即使使用写入请求所包含的物理地址将加密后的数据向其他区块进行了复制的情况下,也能够使用用于读取该数据的读取请求所包含的物理地址对该被复制的数据进行正确的解密。

在上述的实施方式中,主要说明了控制器4接受来自主机2的复制请求执行数据复制动作,但是也可以不接受复制请求,在控制器4判断为需要执行数据复制动作的情况下执行数据复制动作。

此外,闪存存储设备3也可以作为设置于存储器阵列内的多个闪存存储设备3中的一个加以利用。存储器阵列也可以经由线缆或网络与服务器计算机的这样的信息处理装置连接。存储器阵列包含控制该存储器阵列内的多个闪存存储设备3的控制器。在将闪存存储设备3适用于存储器阵列的情况下,该存储器阵列的控制器也可以作为闪存存储设备3的主机2发挥功能。

另外,在本实施方式中,作为非易失性存储器例示了NAND型闪存。但是,本实施方式的功能也可以适用于例如,MRAM(Magnetoresistive Random Access Memory:磁阻式随机访问存储器)、PRAM(Phase change Random Access Memory:相变随机访问存储器)、ReRAM(Resistive Random Access Memory电阻式随机访问存储器)、或FeRAM(Ferroelectric Random Access Memory:铁电随机访问存储器)这样的其他各种各样的非易失性存储器。

虽然说明了本发明的几个实施方式,但是这些实施方式作为例子而提示,并不意在限定发明的范围。这些新颖的实施方式能够以其他各种各样的方式实施,在不脱离发明的要旨的范围内可以进行各种省略、置换、变更。这些实施方式及其变形包含于发明的范围、要旨中,并且包含于与权利要求所记载的发明以及与其均等的范围中。

38页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于运维终端向大型主机自动提交作业的方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类