CN110515862A - 存储器系统及非易失性存储器的控制方法 - Google Patents
存储器系统及非易失性存储器的控制方法 Download PDFInfo
- Publication number
- CN110515862A CN110515862A CN201811533004.0A CN201811533004A CN110515862A CN 110515862 A CN110515862 A CN 110515862A CN 201811533004 A CN201811533004 A CN 201811533004A CN 110515862 A CN110515862 A CN 110515862A
- Authority
- CN
- China
- Prior art keywords
- block
- address
- encryption key
- data
- host
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003860 storage Methods 0.000 title claims abstract description 146
- 230000015654 memory Effects 0.000 title claims abstract description 127
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000014509 gene expression Effects 0.000 claims description 15
- 230000009471 action Effects 0.000 description 34
- 238000012545 processing Methods 0.000 description 24
- 230000006870 function Effects 0.000 description 22
- 230000004044 response Effects 0.000 description 19
- 230000008859 change Effects 0.000 description 18
- 230000004075 alteration Effects 0.000 description 14
- 230000010076 replication Effects 0.000 description 14
- 230000000694 effects Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 238000013519 translation Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 101100481703 Arabidopsis thaliana TMK2 gene Proteins 0.000 description 2
- 230000003321 amplification Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- VMXUWOKSQNHOCA-UKTHLTGXSA-N ranitidine Chemical compound [O-][N+](=O)\C=C(/NC)NCCSCC1=CC=C(CN(C)C)O1 VMXUWOKSQNHOCA-UKTHLTGXSA-N 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101100481704 Arabidopsis thaliana TMK3 gene Proteins 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000000605 extraction Methods 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
- 230000014759 maintenance of location Effects 0.000 description 1
- 210000003205 muscle Anatomy 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
实施方式实现一种能够对数据进行加密及解码的存储器系统及非易失性存储器的控制方法。实施方式的存储器系统是当从主机接收到指定用来识别应写入的数据的第1地址的写请求时,使用第1加密密钥与所述第1地址对所述数据进行加密,并将所述经加密的数据与所述第1地址一起写入到一个块中。当从主机接收到指定物理地址的读请求时,存储器系统基于所述物理地址,从所述一个块中读出所述经加密的数据与所述第1地址两者,并使用所述第1加密密钥与所述读出的第1地址将所述读出的经加密的数据解码,所述物理地址表示存储着所述经加密的数据的所述一个块内的物理存储位置。
Description
[相关申请]
本申请享有以日本专利申请2018-97908号(申请日:2018年5月22日)作为基础申请的优先权。本申请通过参照该基础申请而包含基础申请的全部内容。
技术领域
本发明的实施方式涉及一种存储器系统及非易失性存储器的控制方法。
背景技术
近年来,具备非易失性存储器的存储器系统广泛普及。作为这种存储器系统之一,已知有基于NAND(Not AND,与非)闪存技术的固态驱动器(SSD)。
像SSD这样的存储器系统被用作服务器计算机、个人计算机等各种计算机的存储器。
最近,在像SSD这样的存储器系统中,也要求实现对数据进行加密及解码的结构。
发明内容
本发明的实施方式提供一种能够对数据进行加密及解码的存储器系统及非易失性存储器的控制方法。
根据实施方式,能够连接于主机的存储器系统具备包含多个块的非易失性存储器、及电连接于所述非易失性存储器的控制器。所述控制器当从所述主机接收到指定用来识别应写入的数据的第1地址的写请求时,使用从多个加密密钥中选择的第1加密密钥与所述第1地址对所述数据进行加密,并将所述经加密的数据与所述第1地址一起写入到所述多个块中的一个块。所述控制器当从所述主机接收到指定物理地址的读请求时,基于所述物理地址,从所述一个块中读出所述经加密的数据与所述第1地址两者,并使用所述第1加密密钥与所述读出的第1地址,将所述读出的经加密的数据解码,所述物理地址表示存储着所述经加密的数据的所述一个块内的物理存储位置。
附图说明
图1是表示包含实施方式的存储器系统(闪速存储装置)的计算机系统的构成例的框图。
图2是用来说明该实施方式的存储器系统与主机之间的任务分担的图。
图3是表示该实施方式的存储器系统的构成例的框图。
图4是表示该实施方式的存储器系统中所使用的多个信道与多个NAND型闪速存储器芯片的关系的框图。
图5是表示该实施方式的存储器系统中所使用的某一超级块的构成例的图。
图6是一并示出由该实施方式的存储器系统执行的各动作的概要及数据、Tag(LBA)、块地址、页面地址、及QoS域ID的流程的图。
图7是用来说明由该实施方式的存储器系统执行的数据的加密及解码动作的图。
图8是用来说明根据块分配指令所执行的块分配处理的图。
图9是表示由该实施方式的存储器系统管理的QoS域/块管理表的图。
图10是表示由该实施方式的存储器系统管理的QoS域/加密密钥管理表的图。
图11是表示由该实施方式的存储器系统管理的块/加密密钥管理表的图。
图12是表示由主机及该实施方式的存储器系统执行的加密密钥变更处理的序列的图。
图13是用来说明根据写指令所执行的写入动作的图。
图14是用来说明根据写指令所执行的写入动作的另一图。
图15是用来说明由该实施方式的存储器系统执行的读出动作的图。
图16是用来说明由该实施方式的存储器系统执行的读出动作的另一图。
图17是表示由主机及该实施方式的存储器系统执行的写入处理的序列的图。
图18是表示写入针对已写入的数据的更新数据的数据更新动作的图。
图19是用来说明对由该实施方式的存储器系统管理的块管理表进行更新的动作的图。
图20是用来说明对由主机管理的查找表(逻辑物理地址转换表)进行更新的动作的图。
图21是用来对根据表示与应无效化的数据对应的块地址及物理地址的来自主机的通知更新块管理表的动作进行说明的图。
图22是表示由主机及该实施方式的存储器系统执行的读出处理的序列的图。
图23是表示由主机及该实施方式的存储器系统执行的无用信息收集(GC)动作的顺序的图。
图24是用来说明为了进行无用信息收集(GC)而执行的数据复制动作的例子的图。
图25是用来说明基于图24的数据复制动作的结果而更新的主机的查找表的内容的图。
图26是表示由主机及该实施方式的存储器系统执行的加密密钥变更处理的另一序列的图。
图27是表示由主机及该实施方式的存储器系统执行的写入处理的另一序列的图。
图28是表示由主机及该实施方式的存储器系统执行的读出处理的另一序列的图。
图29是表示由主机及该实施方式的存储器系统执行的无用信息收集(GC)动作的另一顺序的图。
图30是用来说明为了进行无用信息收集(GC)而执行的数据复制动作的另一例的图。
图31是用来说明基于图30的数据复制动作的结果而更新的主机的查找表的内容的图。
图32是用来说明该实施方式的存储器系统所应用的加密密钥变更指令的图。
图33是用来说明该实施方式的存储器系统所应用的块分配指令(块分配请求)的图。
图34是用来说明对块分配指令的响应的图。
图35是用来说明该实施方式的存储器系统所应用的写指令的图。
图36是用来说明对图35的写指令的响应的图。
图37是用来说明该实施方式的存储器系统所应用的Trim指令的图。
图38是用来说明该实施方式的存储器系统所应用的读指令的图。
图39是用来说明该实施方式的存储器系统所应用的无用信息收集(GC)控制指令的图。
图40是用来说明该实施方式的存储器系统所应用的GC用回调指令的图。
具体实施方式
以下,参照附图对实施方式进行说明。
首先,参照图1对包含一实施方式的存储器系统的计算机系统的构成进行说明。
该存储器系统是以对非易失性存储器写入数据、且从非易失性存储器读出数据的方式构成的半导体存储装置。该存储器系统作为基于NAND闪存技术的闪速存储装置3而实现。
该计算机系统也可以包含主机(主机装置)2、及多个闪速存储装置3。主机2也可以是以将包含多个闪速存储装置3的闪存阵列用作存储器的方式构成的服务器。主机(服务器)2与多个闪速存储装置3经由接口50而相互连接(内部相互连接)。作为用于该内部相互连接的接口50,可使用PCI Express(PCIe,Peripheral Component InterconnectExpress,外围组件互连高速)(注册商标)、NVM Express(NVMe,Non-Volatile Memoryexpress,非易失性存储器高速)(注册商标)、Ethernet(以太网,注册商标)、NVMe overFabrics(NVMeOF)等,但并不限定于此。
作为主机2而发挥功能的服务器的典型例可列举数据中心内的服务器。
在主机2是由数据中心内的服务器实现的实例中,该主机(服务器)2也可以经由网络60而连接于多个最终用户终端(客户端)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(Input/Output,输入/输出)性能下降的因素。
进而,主机侧的应用程序级GC成为使向SSD的数据写入量增加到实际的用户数据量的数倍程度的因素。这种数据写入量的增加与SSD的写放大相互配合使系统整体的存储性能下降,另外,也使SSD的寿命变短。
为了消除这种问题点,也考虑将现有型SSD的FTL的功能全部转移到主机的对策。
然而,为了实现该对策,必须使主机直接处理NAND型闪速存储器的块及页面。在NAND型闪速存储器中,存在页面写入顺序制约,因此,主机难以直接处理页面。另外,在NAND型闪速存储器中,存在块包含不良页面(坏页)的情况。处理坏页对主机来说更加困难。
因此,在本实施方式中,在主机2与闪速存储装置3之间分担FTL的任务。大体来说,例如,主机2也可以只指定应被写入数据的块的块地址及用来识别该数据的地址(以下,称为标签),闪速存储装置3也可以决定应被写入该数据的该块内的物理存储位置(写入目标位置)。标签的典型例是像逻辑块地址(LBA)这样的逻辑地址。此外,也可以将键值存储的键、或该键的杂凑值用作标签。
这样一来,主机2只处理块,块内的位置(例如页面、页面内的位置)由闪速存储装置3来处理。
当需要对闪速存储装置3写入数据时,主机2选择块地址(或请求对闪速存储装置3分配空闲块),将指定像LBA这样的标签、及所选择的块的块地址(或由闪速存储装置3通知的所分配的块的块地址)的写请求(写指令)发送给闪速存储装置3。闪速存储装置3对具有所指定的块地址的块写入来自主机2的数据。在该情况下,闪速存储装置3决定该块内的位置(写入目标位置),并将来自主机2的数据写入到该块内的位置(写入目标位置)。而且,闪速存储装置3将表示该块内的位置(写入目标位置)的块内物理地址作为对写请求的响应(返回值)通知给主机2。块内物理地址也被称为块内偏移。块内偏移也可以利用页面地址及页面内偏移来表示。
当需要从闪速存储装置3读出数据时,主机2将指定物理地址(块地址、块内物理地址)的读请求(读指令)发送给闪速存储装置3,所述物理地址(块地址、块内物理地址)表示存储着该数据的物理存储位置。闪速存储装置3从利用读请求中所包含的物理地址表示的某一块内的物理存储位置将数据读出。在该情况下,应被读出该数据的块由读请求中所包含的块地址指定,应被读出该数据的该块内的物理存储位置由读请求中所包含的块内物理地址指定。
这样一来,本实施方式中,在数据写入与数据读出之间使用互不相同的定址方法。也就是说,在数据写入时,用来识别应写入的数据的地址(像LBA这样的标签)及块地址由主机2指定,在数据读出时,表示存储着应读出的数据的物理存储位置的物理地址(块地址、块内物理地址)由主机2指定。
或者,例如,主机2也可以只指定用来识别应被写入的数据的标签,闪速存储装置3也可以决定应被写入该数据的块与应被写入该数据的该块内的物理存储位置(写入目标位置)两者。在该情况下,也在数据写入与数据读出之间使用互不相同的定址方法。
主机2具有执行存储服务的功能、无用信息收集(GC)块选择功能、及QoS控制功能等。QoS控制功能包含针对每个QoS域(或每个块)决定存取单位的功能。QoS域分别是通过将NAND型闪速存储器逻辑性分割而获得的多个区域。NAND型闪速存储器的多个块各自也可以只属于任一区域。也就是说,各区域包含块的集合。存取单位表示主机2能够进行写/读的最小数据尺寸(Grain)。闪速存储装置3可支持单一、或多个存取单位(Grain),主机2在闪速存储装置3支持多个存取单位的情况下,可针对每个QoS域(或每个块)对闪速存储装置3指示应使用的存取单位。
闪速存储装置3可执行低级抽象。低级抽象是用于NAND型闪速存储器的抽象的功能。低级抽象包含隐藏不良块(坏块)、不良页面(坏页)的功能、遵守页面写入顺序制约的功能。低级抽象还包含GC执行功能。GC执行功能是将由主机2指定的复制源块(GC源块)内的有效数据复制到由主机2指定的复制目标块(GC目的地块)。闪速存储装置3的GC执行功能决定应写入有效数据的GC目的地块内的位置(复制目标位置),将GC源块内的有效数据复制到GC目的地块内的复制目标位置。
进而,闪速存储装置3执行加密/解码动作。加密/解码动作包含应对NAND型闪速存储器写入数据时对该数据进行加密的动作、以及应将该经加密的数据从NAND型闪速存储器读出时将该经加密的数据解码的动作。
该加密/解码动作并非只使用加密密钥对数据进行加密,而是使用加密密钥及写请求中所包含的地址对数据进行加密。在只使用加密密钥对数据进行加密的实例中,于具有相同内容(相同数据图案)的2个数据部分别对应的加密结果相同。另一方面,在使用加密密钥及地址对数据进行加密的实例中,即使为具有相同内容(相同数据图案)的2个数据部分别被加密的情况,这2个数据部的加密结果也不相同。由此,使用加密密钥及地址对数据进行加密的加密方法可获得比只使用加密密钥对数据进行加密的情况更高的安全性。
在本实施方式中,如上所述,在数据写入与数据读出之间使用互不相同的定址方法。也就是说,从主机2接收的写请求指定识别写数据的地址即标签(例如像LBA这样的逻辑地址),从主机2接收的读请求指定表示存储着应被读出的数据的物理存储位置的物理地址,识别该数据的标签未指定。
因此,在利用用来识别数据的地址(例如像LBA这样的逻辑地址)与加密密钥将经加密的数据解码的处理中,如果从主机2接收的读请求中所包含的地址(物理地址)用于该解码处理,那么将无法正确地将经加密的数据解码。
因此,在本实施方式中,闪速存储装置3当从主机2接收到指定用来识别应写入的数据的地址(标签)的写请求时,使用从多个加密密钥中选择的加密密钥(第1加密密钥)与该地址对该数据进行加密,并将经加密的数据与该地址一起写入到NAND型闪速存储器的特定块中。在写请求指定块地址的实例中,该特定块是具有由写请求指定的块地址的块。
而且,当从主机2接收到指定物理地址的读请求时,闪速存储装置3基于该物理地址,从该特定块中读出该经加密的数据与该地址两者,并使用第1加密密钥与读出的地址将读出的经加密的数据解码,所述物理地址表示存储着经加密的数据的NAND型闪速存储器内的物理存储位置。
结果为,在数据写入与数据读出之间使用互不相同的定址方法的构成中,也能使用从NAND型闪速存储器读出的地址(与经加密的数据一起被写入的地址)将利用用来识别数据的地址(例如像LBA这样的逻辑地址)与加密密钥而加密的数据正确地解码。
图2表示闪速存储装置3与主机2之间的任务分担。
在主机(服务器)2中,执行用来对多个最终用户提供多个虚拟机器的虚拟机器服务401。在虚拟机器服务401上的各虚拟机器中,执行由对应的最终用户使用的操作系统及用户应用程序402。
另外,在主机(服务器)2中,执行与多个用户应用程序402对应的多个I/O服务403。这些I/O服务403也可以包含基于LBA的块I/O服务、键值存储服务等。各I/O服务403包含对能够识别存取对象的数据的标签各自与闪速存储装置3的物理地址各自之间的映射进行管理的查找表(LUT)411。
在基于LBA的块I/O服务中,也可以使用对逻辑地址(LBA)各自与闪速存储装置3的物理地址各自之间的映射进行管理的LUT411。
在键值存储服务中,也可以使用对键各自(或键的杂凑值各自)与物理地址各自之间的映射进行管理的LUT411,所述物理地址表示存储着分别对应于这些键(或分别对应于键的杂凑值)的数据的闪速存储装置3内的物理存储位置。
各最终用户可选择应使用的定址方法(LBA、键值存储的键等)。
这些各LUT411并非将来自用户应用程序402的标签(例如LBA)分别转换为闪速存储装置3用的各逻辑地址,而是将来自用户应用程序402的标签(例如LBA)分别直接转换为闪速存储装置3的各物理地址。也就是说,这些各LUT411是整合(合并)了将闪速存储装置3用的逻辑地址转换为物理地址的表格与所述应用程序级地址转换表而成的表格。
另外,各I/O服务403包含GC块选择功能。GC块选择功能可使用对应的LUT对各块的有效数据量进行管理,由此,可选择GC源块。
在主机(服务器)2中,也可以在每个所述QoS域中存在I/O服务403。属于某一QoS域的I/O服务403也可以对标签(例如LBA)各自与块地址各自之间的映射进行管理,所述标签(例如LBA)由对应的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。
在该图2所示的构成中,上位阶层(主机2)能够辨识块边界,所以可考虑块边界/块尺寸而将用户数据写入到各块中。也就是说,主机2可辨识NAND型闪速存储器(NAND闪存阵列)603的各个块,由此,例如,能够进行对一个块整体同时写入数据、通过删除或更新一个块内的数据整体而无效化等控制。结果为,能够使得在一个块中混合存在有效数据与无效数据这一状况不易产生。因此,可降低需要执行GC的频度。通过降低GC的频度,可使写放大下降,从而能够实现闪速存储装置3的性能提升、闪速存储装置3的寿命最大化。这样一来,上位阶层(主机2)能够辨识块地址的构成有用。
另一方面,应被写入数据的块内的位置并非由上位阶层(主机2)决定,而是由闪速存储装置3来决定。因此,可隐藏不良页面(坏页),另外,可遵守页面写入顺序制约。
图3表示闪速存储装置3的构成例。
闪速存储装置3具备控制器4及非易失性存储器(NAND型闪速存储器)5。闪速存储装置3也可以具备随机存取存储器、例如DRAM(Dynamic Random Access Memory,动态随机存取存储器)6。
NAND型闪速存储器5包含存储单元阵列,所述存储单元阵列包含配置成矩阵状的多个存储单元。NAND型闪速存储器5既可为二维构造的NAND型闪速存储器,也可以为三维构造的NAND型闪速存储器。
NAND型闪速存储器5的存储单元阵列包含多个块BLK0~BLKm-1。块BLK0~BLKm-1分别由多个页面(此处为页面P0~Pn-1)编成。块BLK0~BLKm-1作为删除单位而发挥功能。块有时也被称为“删除块”、“物理块”、或“物理删除块”。页面P0~Pn-1分别包含连接于同一字线的多个存储单元。页面P0~Pn-1是数据写入动作及数据读入动作的单位。
控制器4经由像ToggleNAND闪存接口、开放式NAND闪存接口(ONFI)这样的NAND接口13,而电连接于作为非易失性存储器的NAND型闪速存储器5。控制器4是以控制NAND型闪速存储器5的方式构成的存储器控制器(控制电路)。
如图4所示,NAND型闪速存储器5也可以包含多个NAND型闪速存储器芯片(NAND型闪速存储器裸片)。各个NAND型闪速存储器芯片能够独立地进行动作。因此,NAND型闪速存储器芯片作为能够并列动作的单位而发挥功能。在图4中,例示出如下情况:在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。存储体作为用来使多个存储器模块通过存储体交错而并列动作的单位发挥功能。在图4的构成例中,利用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中,例示出一个包含32个块(此处为NAND型闪速存储器芯片#1内的块BLK2、NAND型闪速存储器芯片#2内的块BLK3、NAND型闪速存储器芯片#3内的块BLK7、NAND型闪速存储器芯片#4内的块BLK4、NAND型闪速存储器芯片#5内的块BLK6、…NAND型闪速存储器芯片#32内的块BLK3)的超级块(SB)。
由写请求中所包含的块地址指定的一个块既可为包含能够并列存取的多个块(物理块)的集合的一个超级块,也可以为一个物理块。此外,也可以利用一个超级块只包含一个物理块的构成,在该情况下,一个超级块与一个物理块等效。
如图3所示,控制器4包含主机接口11、CPU(Central Processing Unit,中央处理器)12、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(Read Only Memory,只读存储器)将控制程序(固件)加载到DRAM6,然后,通过执行该固件而进行各种处理。此外,固件也可以被加载到控制器4内的未图示的SRAM(Static RandomAccess Memory,静态随机存取存储器)上。该CPU12可执行用来处理来自主机2的各种指令的指令处理等。CPU12的动作是通过由CPU12执行的所述固件来控制的。此外,指令处理的一部分或全部也可以由控制器4内的专用硬件来执行。
CPU12可作为写动作控制部21、读动作控制部22、及复制动作控制部23而发挥功能。这些写动作控制部21、读动作控制部22、及复制动作控制部23各自的一部分或全部也可以通过控制器4内的专用硬件来实现。
以下,例示将如下构成应用在闪速存储装置3的情况,而对写动作控制部21、读动作控制部22、及复制动作控制部23的动作进行说明,所述构成是主机2指定应被写入数据的块的块地址与用来识别该数据的地址即标签(例如LBA),闪速存储装置3决定应被写入该数据的该块内的物理存储位置(写入目标位置)。
写动作控制部21从主机2接收指定块地址及标签(LBA)的写请求(写指令)。标签是能够识别应写入的数据(用户数据)的地址,例如,可为LBA,或者也可以为键值存储的键,还可以为键的杂凑值。块地址是指定应被写入该数据的块的块标识符。作为块地址,可使用能够唯一地识别多个块中的任意一个的各种值。例如,块地址也可以由芯片地址与块地址的组合表示。由块地址指定的块既可为物理块,也可以为所述超级块。
写指令也可以还指定区域ID。也就是说,控制器4对通过将NAND型闪速存储器5逻辑性分割而获得的多个区域进行管理。各区域包含若干个块。区域ID是指定这些多个区域中的任意区域的标识符。也可以对各最终用户(租户)分配一个区域。在该情况下,来自与各最终用户(租户)对应的用户应用程序的读/写请求也可以包含表示该最终用户(租户)所使用的区域的区域ID。
本实施方式中,在控制器4中管理着用来对从主机2接收的数据(用户数据)进行加密的多个加密密钥。
数据(用户数据)的加密也可以使用在每个区域不同的加密密钥、也就是针对每个租户不同的加密密钥来执行。换句话说,控制器4对管理多个区域与多个加密密钥之间的对应关系的管理表进行管理,当从主机2接收到指定某一区域ID的读/写请求时,选择与由该区域ID表示的区域建立了关联的加密密钥作为应使用于数据的加密(或解码)的加密密钥。
此外,由于表示哪个块属于哪个区域的信息由控制器4管理,所以控制器4也能选择与具有由读/写请求指定的块地址的块所属的区域对应的加密密钥作为应使用于数据的加密(解码)的加密密钥。因此,在本实施方式中,也能利用不包含区域ID的读/写请求。
这多个区域可通过多个QoS域来实现。各个QoS域通过这些QoS域的标识符(QoS域ID)来识别。在这多个区域由多个QoS域实现的实例中,各读/写请求既可包含QoS域ID作为区域ID,也可以不包含QoS域ID。在各读/写请求包含QoS域ID的情况下,控制器4可选择与由从主机2接收到的读/写请求指定的QoS域ID所表示的区域(QoS域)建立了关联的加密密钥作为应使用于数据的加密(或解码)的加密密钥。在各读/写请求不包含QoS域ID的情况下,控制器4可基于由从主机2接收到的读/写请求指定的块地址,选择与具有该指定的块地址的块所属的区域(QoS域)建立了关联的加密密钥作为应使用于数据的加密(或解码)的加密密钥。
或者,这多个区域也可以通过多个域名空间来实现。各域名空间是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接收到的读/写请求指定的块地址,选择与具有该指定的块地址的块建立了关联的加密密钥作为应使用于数据的加密(或解码)的加密密钥。
或者,使多个加密密钥分别建立关联的多个区域也可以通过多个LBA范围来实现。当接收到指定表示某一LBA的地址(标签)的写请求时,选择与该LBA所属的LBA范围对应的加密密钥作为应使用于与该写请求建立了关联的数据的加密的加密密钥。
当从主机2接收到指定块地址及标签(LBA)的写请求(写指令)时,写动作控制部21首先应写入来自主机2的数据,决定具有该指定的块地址的块(写入目标块)内的位置(写入目标位置)。接着,写动作控制部21使用从多个加密密钥中选择的加密密钥(第1加密密钥)与标签(LBA)对来自主机2的数据(写数据)进行加密。在该情况下,用于数据的加密的运算是使用加密/解码电路15来执行的。从多个加密密钥中选择的加密密钥也可以为与该块或与该块所属的区域建立了关联的加密密钥。
然后,写动作控制部21将经加密的数据与标签(LBA)一起写入到块(写入目标块)中。在该情况下,经加密的数据也可以被写入到该写入目标块内的已决定的位置(写入目标位置),标签(LBA)也可以被写入到与该写入目标位置所属的页面相同的页面内。
读动作控制部22从主机2接收指定物理地址的读请求(读指令),所述物理地址表示存储着所述经加密的数据的NAND型闪速存储器5内的物理存储位置。该物理地址由存储着所述经加密的数据的所述块的块地址、及表示存储着所述经加密的数据的该块内的位置(物理存储位置)的块内物理地址(块内偏移)表示。块内偏移表示从该块的开头到该物理存储位置的偏移。该块内偏移也可以由页面地址及页面内偏移表示。
或者,该块内偏移也可以由具有既定尺寸的粒度(Grain)的倍数表示。粒度(Grain)也可以具有比页面尺寸更小的尺寸。例如,在页面尺寸为16K字节的情况下,粒度(Grain)的尺寸也可以为4K字节。在该情况下,在某一个块中,规定分别尺寸为4K字节的多个偏移位置。与块内的最初的偏移位置对应的块内偏移例如为0,与块内的下一个偏移位置对应的块内偏移例如为1,与块内的再下一个偏移位置对应的块内偏移例如为2。
当从主机2接收到该读请求(读指令)时,读动作控制部22基于由该读请求指定的物理地址,从该块中读出经加密的数据与标签(LBA)两者,并使用与该块或与该块所属的区域建立了关联的加密密钥(所述第1加密密钥)及读出的标签(LBA),将读出的经加密的数据解码。在该情况下,用于数据的解码的运算是使用加密/解码电路15来执行的。
复制动作控制部23执行将经加密的数据从复制源块复制到复制目标块的动作。该复制动作例如既可为只将特定的经加密的数据单纯地从复制源块复制到复制目标块的动作,也可以为了无用信息收集而为只将复制源块内的经加密的有效数据复制到复制目标块的动作,还可以为了损耗平均而为将复制源块内的所有经加密的数据复制到复制目标块的动作。在该复制动作中,复制动作控制部23不将经加密的数据解码及重新加密,便将该经加密的数据及与该经加密的数据对应的标签(LBA)两者从复制源块复制到复制目标块。
在控制器4对管理多个块与多个加密密钥之间的对应关系的表格进行管理的实例中,复制动作控制部23将该经加密的数据及与该经加密的数据对应的标签(LBA)两者从复制源块复制到复制目标块后,更新该表格,而将与复制源块建立着关联的加密密钥与复制目标块建立关联。
在控制器4对管理多个区域与多个加密密钥之间的对应关系的表格进行管理、且复制源块与复制目标块属于相同区域的情况下,复制动作控制部23只要不将经加密的数据解码及重新加密,便将该经加密的数据及与该经加密的数据对应的标签(LBA)两者从复制源块复制到复制目标块即可。
NAND接口13是在CPU12的控制下,以控制NAND型闪速存储器5的方式构成的存储器控制电路。DRAM接口14是在CPU12的控制下,以控制DRAM6的方式构成的DRAM控制电路。DRAM6的存储区域的一部分用于写缓冲区(WB)31的存储。另外,DRAM6的存储区域的另一部分用于块管理表32、系统管理信息33的存储。
块管理表32用于有效数据/无效数据的管理。该块管理表32例如也可以针对每个块存在。在与某一块对应的块管理表32中,存储着表示该块内的数据各自的有效/无效的位图旗标。此处,所谓有效数据,是指被从主机2的LUT411参照的数据(也就是作为最新数据与标签(LBA)建立着关联的数据),且之后有可能被从主机2读取的数据。所谓无效数据,是指已经不可能被从主机2读取的数据。例如,与某一标签(LBA)建立了关联的数据为有效数据,未与任一标签(LBA)建立关联的数据为无效数据。
系统管理信息33包含对区域各自与块地址各自的对应关系进行管理的表格、及对区域(或块)各自与加密密钥各自之间的对应关系进行管理的表格等。
这些写缓冲区(WB)31、块管理表32、系统管理信息33也可以存储在控制器4内的未图示的SRAM中。
图6一并表示块分配动作、数据写入动作、数据读出动作、及数据复制动作的概要与数据、标签(LBA)、块地址、页面地址、及QoS域ID的流程。
<块分配动作>
当主机2需要用来写入数据(写数据)的新的空闲块时,主机2也可以请求闪速存储装置3分配空闲块。在该情况下,主机2将包含QoS域ID等区域ID的块分配请求送出到闪速存储装置3。
在闪速存储装置3的控制器4中,写动作控制部21对NAND型闪速存储器5的各个空闲块进行管理。当写动作控制部21接收到来自主机2的块分配请求时,写动作控制部21将空闲块中的一个空闲块分配给主机2。另外,写动作控制部21将分配给主机2的块的块地址与块分配请求中所包含的QoS域ID建立关联。然后,写动作控制部21将所分配的块的块地址与该QoS域ID一起通知给主机2。
由此,主机2可获取块地址(所分配的空闲块的块地址)。
此外,在主机2对各个空闲块进行管理的构成中,主机2可自身选择空闲块中的一个,所以无需将块分配请求发送给闪速存储装置3。
<数据写入动作>
主机2将指定识别写数据的标签(例如逻辑地址(LBA))与写入目标块的块地址(BLK#)的写请求送出到闪速存储装置3。
加密/解码电路15使用写请求中所包含的标签(LBA)、及从存储在加密密钥存储区域80的多个加密密钥中选择的一个加密密钥对写数据进行加密。加密密钥存储区域80包含存储多个加密密钥的加密密钥管理表。在加密密钥存储区域80的加密密钥管理表中,既可存储与多个区域(例如多个QoS域、多个域名空间、或多个LBA范围)分别建立了关联的多个加密密钥,也可以存储与多个块地址分别建立了关联的多个加密密钥。
在与像QoS域或域名空间这样的多个区域分别建立了关联的多个加密密钥存储在加密密钥存储区域80的加密密钥管理表中的情况下,也可以从这多个加密密钥中选择与具有写请求中所包含的块地址的块所属的区域(QoS域或域名空间)建立了关联的加密密钥。此外,在写请求包含QoS域ID或域名空间ID的情况下,也可以从这多个加密密钥中选择与由该QoS域ID或域名空间ID指定的区域(QoS域或域名空间)建立了关联的加密密钥。
在与多个LBA范围分别建立了关联的多个加密密钥存储在加密密钥存储区域80的加密密钥管理表中的情况下,也可以从这多个加密密钥中选择与写请求中所包含的标签(LBA)所属的LBA范围建立了关联的加密密钥。
在与多个块地址分别建立了关联的多个加密密钥存储在加密密钥存储区域80的加密密钥管理表中的情况下,也可以从这多个加密密钥中选择与写请求中所包含的块地址建立了关联的加密密钥。
写动作控制部21决定块内偏移(也简称为偏移加以参照),所述块内偏移表示具有由写请求指定的块地址的块(写入目标块)内的写入目标位置。写入目标位置是应被写入经加密的数据的写入目标块内的位置。块内偏移可利用页面地址及页面内偏移来表达,但在图6中为了简化图示,块内偏移只利用页面地址来表达。
然后,写动作控制部21基于由写请求指定的块地址、及块内偏移(页面地址),将经加密的写数据与写请求中所包含的标签(LBA)一起写入到写入目标块内的写入目标位置。
此外,写动作控制部21也可以从主机2接收写请求与写数据,并将接收到的写数据与接收到的写请求中所包含的标签(LBA)送出到加密/解码电路15,进而从加密密钥存储区域80中选择与接收到的写请求中所包含的区域ID、块地址、或标签(LBA)对应的加密密钥,并将所选择的加密密钥送出到加密/解码电路15。
接着,写动作控制部21可将与写数据对应的标签(LBA)、写入目标块的块地址、及表示写入目标位置的块内偏移(页面地址)的组作为对写请求的响应通知给主机2。或者,写动作控制部21也可以只将表示写入目标位置的块内偏移作为对写请求的响应通知给主机2。
主机2包含对LUT411进行管理的闪存转换部52。闪存转换部52对管理标签(例如LBA)各自与NAND型闪速存储器5的物理地址各自之间的映射的地址转换表即LUT411进行管理。当从闪速存储装置3通知了块地址、块内偏移(页面地址)、及标签(例如LBA)时,闪存转换部52更新LUT411,将所通知的物理地址(块地址、块内偏移(页面地址))映射到所通知的标签(例如LBA)。闪存转换部52可通过参照LUT411,而将来自上位软件(用户应用程序)的读请求中所包含的标签(例如LBA)转换为物理地址(块地址、块内偏移(页面地址)),由此,可将包含物理地址的读请求(读指令)送出到闪速存储装置3。
<数据读动作>
当主机2需要从闪速存储装置3读取数据时,主机2参照LUT411,从LUT411获取与应读取的数据的标签(LBA)对应的物理地址(块地址、块内偏移(页面地址))。
接着,主机2将指定所获取的块地址及块内偏移(页面地址)的读请求送出到闪速存储装置3。当闪速存储装置3的控制器4(读动作控制部22)从主机2接收到该读请求时,控制器4基于块地址及块内偏移(页面地址),特定出读对象的块及读对象的物理存储位置,从该读对象的块内的读对象的物理存储位置读出经加密的数据及与该经加密的数据对应的标签(LBA)两者。
接着,读出的经加密的数据由加密/解码电路15解码。加密/解码电路15使用读出的标签(LBA)、及与读对象的块(或读对象的块所属的区域)建立了关联的加密密钥(或与读出的标签(LBA)所属的LBA范围建立了关联的加密密钥),将读出的经加密的数据解码。然后,控制器4将解码后的数据送出到主机2。
<数据复制动作>
复制动作控制部23读取某一块(复制源块)内的数据,并将该数据写入到另一块(复制目标块)中。在该情况下,复制动作控制部23从复制源块读出经加密的数据及与该经加密的数据对应的标签(LBA)两者,并将这些经加密的数据与标签(LBA)两者写入(复制)到复制目标块。经加密的数据部被解码或重新加密并从复制源块被复制到复制目标块。在将从该复制目标块中读出的经加密的数据解码的处理中,使用与该经加密的数据一起从复制目标块被读出的标签(LBA)、以及和与复制源块建立了关联的加密密钥相同的加密密钥。
图7表示由加密/解码电路15执行的加密及解码动作。
如图7的左部所示,加密/解码电路15内的加密电路15A当接收应加密的写数据、地址信息、及加密密钥时,使用地址信息及加密密钥对写数据进行加密,并输出经加密的写数据。地址信息是从主机2接收的写请求中所包含的标签(LBA)。写数据、地址信息也可以从写动作控制部21被送出到加密电路15A。
加密密钥存储区域80的加密密钥管理表33B保存着与多个区域ID(#0、#1、#2、…)分别建立了关联的多个加密密钥(KEY#0、KEY#1、KEY#2、…)。如果某一区域ID(ID#x)从写动作控制部21被供给到加密密钥存储区域80,那么加密密钥存储区域80的加密密钥管理表33B输出与该区域ID(ID#x)对应的加密密钥(KEY#x)。从加密密钥存储区域80输出的加密密钥(KEY#x)被送出到加密/解码电路15的加密电路15A。
使用地址信息与加密密钥对写数据进行加密的处理可使用各种方法来执行。例如,可使用依据AES-XTS的加密算法,也可以使用其它加密算法。
例如,在使用地址信息与加密密钥对写数据进行加密的处理中,加密电路15A首先可使用地址信息(LBA)变更写数据的位图案,然后可利用加密密钥对该变更后的位图案进行加密。在使用地址信息(LBA)变更写数据的位图案的处理中,也可以首先使用与数据用的所述加密密钥不同的加密密钥对地址信息进行加密,然后,使用该经加密的地址信息变更写数据的位图案。
如图7的右部所示,加密/解码电路15内的解码电路15B当接收经加密的读数据、地址信息、及加密密钥时,使用地址信息与加密密钥,将经加密的读数据解码,并输出解码后的读数据。被供给到加密/解码电路15的经加密的读数据是由读动作控制部22从NAND型闪速存储器5读出的经加密的数据。被供给到加密/解码电路15的地址信息并非从主机2接收的读请求中所包含的地址信息(物理地址),而是与经加密的数据一起由读动作控制部22从NAND型闪速存储器5读出的标签(LBA)。经加密的读数据、地址信息也可以从读动作控制部22被送出到解码电路15B。
如上所述,加密密钥存储区域80的加密密钥管理表33B保存着与多个区域ID(#0、#1、#2、…)分别建立了关联的多个加密密钥(KEY#0、KEY#1、KEY#2、…)。如果某一区域ID(ID#x)从读动作控制部22被供给到加密密钥存储区域80,那么加密密钥存储区域80的加密密钥管理表33B输出与该区域ID(ID#x)对应的加密密钥(KEY#x)。从加密密钥存储区域80输出的加密密钥(KEY#x)被送出到加密/解码电路15的解码电路15B。
在将经加密的读数据解码的处理中,解码电路15B首先可使用地址信息(LBA)变更经加密的读数据的位图案,然后可利用加密密钥将该变更后的位图案解码。
图8表示根据块分配指令所执行的块分配处理。
闪速存储装置3的控制器4利用空闲块列表来管理空闲块的集合。所谓空闲块,是指未存储有效数据的块。在图8中,例示出块BLK#x、块BLK#x+1、块BLK#x+2、…包含在空闲块列表中的情况。
主机2将包含某一QoS域ID(此处为QoS域ID#0)的块分配指令送出到闪速存储装置3。闪速存储装置3的控制器4从空闲块列表所管理的空闲块中选择任意一个空闲块(此处为块BLK#x),并将该所选择的空闲块(块BLK#x)分配为主机2能够利用的写入目标块。在该情况下,控制器4将该空闲块(块BLK#x)的块地址通知给主机2。
控制器4对表示哪个块属于哪个QoS域的信息进行管理。在图8中,例示出块BLK#0、块BLK#1、块BLK#2、块BLK#3、块BLK#4属于QoS域#0(QoS域ID#0的QoS域),块BLK#5、块BLK#6,块BLK#7、块BLK#8属于QoS域#1(QoS域ID#1的QoS域)的情况。在根据包含QoS域ID#0的块分配指令将块BLK#x分配给主机2的情况下,控制器4以块BLK#x属于QoS域#0的方式将块BLK#x与QoS域#0建立关联。
图9表示图3的系统管理信息中所包含的QoS域/块管理表。
QoS域/块管理表33A包含与多个QoS域对应的多个条目。各条目包含QoS域ID字段与块地址字段。QoS域ID字段表示QoS域ID,块地址字段表示块地址的列表。
在图9中,例示出如下情况:块BLK#0、块BLK#1、块BLK#2、块BLK#3、块BLK#4、块BLK#x属于QoS域ID#0的QoS域,块BLK#5、块BLK#6、块BLK#7、块BLK#8属于QoS域ID#1的QoS域,块BLK#9、块BLK#12、块BLK#15属于QoS域ID#2的QoS域,块BLK#10、块BLK#14、块BLK#18属于QoS域ID#3的QoS域,块BLK#11、块BLK#16、块BLK#21属于QoS域ID#4的QoS域,而且,块BLK#31、块BLK#32属于QoS域ID#k的QoS域。
图10表示QoS域/加密密钥管理表。
该QoS域/加密密钥管理表33B’能够用作图7的加密密钥存储区域80中所包含的加密密钥管理表33B。在QoS域/加密密钥管理表33B’中,管理着与QoS域ID#0、QoS域ID#1、QoS域ID#2、QoS域ID#3、QoS域ID#4、…、QoS域ID#k分别对应的加密密钥KEY#0、加密密钥KEY#1、加密密钥KEY#2、加密密钥KEY#3、加密密钥KEY#4、…、加密密钥KEY#k。在将该QoS域/加密密钥管理表33B’用作图7的加密密钥存储区域80中所包含的加密密钥管理表33B的情况下,可在每个QoS域使用不同的加密密钥。由于对使用主机(服务器)2的最终用户(租户)分别分配不同的QoS域,所以通过在每个QoS域使用不同的加密密钥的构成,可针对每个最终用户(租户)使用不同的加密密钥。
图11表示块/加密密钥管理表。
该块/加密密钥管理表33C被用作图7的加密密钥存储区域80中所包含的加密密钥管理表33B。在块/加密密钥管理表33C中,管理着与块地址BLK#0、块地址BLK#1、块地址BLK#2、块地址BLK#3、块地址BLK#4、…分别对应的加密密钥KEY#0、加密密钥KEY#1、加密密钥KEY#2、加密密钥KEY#3、加密密钥KEY#4、…。在将该块/加密密钥管理表33C用作图7的加密密钥存储区域80中所包含的加密密钥管理表33B的情况下,可从加密密钥存储区域80中所包含的多个加密密钥中选择与写/读请求中所包含的块地址对应的加密密钥。
图12表示由主机2与闪速存储装置3执行的加密密钥变更处理的序列。
此处,假设将图10的QoS域/加密密钥管理表33B’用作图7的加密密钥存储区域80中所包含的加密密钥管理表33B的情况。
主机2可视需要将应变更加密密钥的情况对闪速存储装置3请求。在该情况下,主机2将包含QoS域ID的加密密钥变更指令发送给闪速存储装置3。
当闪速存储装置3的控制器4从主机2接收到该加密密钥变更指令时,控制器4将与由该加密密钥变更指令指定的QoS域ID对应的QoS域用加密密钥变更(步骤S11)。然后,控制器4更新QoS域/加密密钥管理表33B’,并将变更后的加密密钥与该QoS域ID建立关联(步骤S12)。
图13表示根据写指令所执行的写入动作。
在本实施方式中,经加密的数据与对应于该经加密的数据的标签(LBA)一起被写入到块中。在该情况下,该经加密的数据与该标签(LBA)两者既可被写入到相同块内的相同页面,也可以被写入到相同块内的不同页面。应被写入与某一经加密的数据对应的标签(LBA)的块内的物理存储位置例如既可为根据被写入该经加密的数据的物理存储位置只通过简单的运算便能够特定出的物理存储位置,也可以为被写入该经加密的数据的物理存储位置相邻的物理存储位置。
在图13中,例示出将经加密的数据及与该经加密的数据对应的标签(LBA)两者写入到相同块(此处为块BLK#0)内的相同页面的情况。块BLK#0的各页面也可以包含用来存储用户数据的用户数据区域及用来存储管理数据的冗余区域。页面尺寸为16KB+α。
标签(LBA)也可以针对每个具有既定尺寸的数据被写入到块BLK#0中。在图13中,例示出针对每个4KB用户数据将标签(LBA)写入到块BLK#0的情况。在该情况下,如图13所示,也可以将各个数据集包含LBA及4KB用户数据(经加密的数据)的4个数据集写入到相同页面。在以图13所示的格式将4KB用户数据(经加密的数据)及与该4KB用户数据对应的标签(LBA)的对(数据集)写入到块BLK#0的实例中,块内偏移也可以表示数据集间的边界。存在于距各数据集的开头为相当于4KB的区域的数据是经加密的数据,存在于各数据集的剩下的区域的信息是与该经加密的数据对应的LBA。
现在,假设如下情况:在块BLK#0的页面0中已写入了4个4K字节用户数据(经加密的数据)及4个LBA的状态下,从主机2接收到指定块地址(=BLK#0)、标签(LBAx)及长度(=4)的写指令。
控制器4将块BLK#0的页面1决定为写入目标位置。控制器4使用加密密钥与LBAx对从主机2接收的相当于16K字节的写数据(用户数据)进行加密。在对16K字节写数据进行加密的处理中,LBAx也可以既定尺寸为单位增加。例如,16K字节写数据内的最初的4KB用户数据可使用该加密密钥与LBAx被加密,16K字节写数据内的第2个4KB用户数据也可以使用该加密密钥与LBAx+1被加密,16K字节写数据内的第3个4KB用户数据也可以使用该加密密钥与LBAx+2被加密,16K字节写数据内的第4个4KB用户数据也可以使用该加密密钥与LBAx+3被加密。
在对该16K字节写数据进行加密的处理中,该16K字节写数据与LBAx被供给到加密电路15A。加密电路15A也可以既定数据尺寸为单位(此处为例如4KB的单位),使应使用于数据的加密的LBA自动地以每次+1的方式增加。
然后,控制器4将4个对、也就是经加密的最初的4KB用户数据与LBAx的对、经加密的第2个4KB用户数据与LBAx+1的对、经加密的第3个4KB用户数据与LBAx+2的对、经加密的第4个4KB用户数据与LBAx+3的对写入到块BLK#0的页面1。
或者,也可以如图14所示那样,将4个经加密的4KB用户数据写入到页面内的用户数据区域,将与这4个经加密的4KB用户数据对应的4个LBA(也就是LBAx、LBAx+1、LBAx+2、LBAx+3)写入到该页面内的冗余区域。
此外,也可以只将包含经加密的16KB用户数据与LBAx的一个对写入到块BLK#0的页面1。
另外,在从主机2接收分别请求4KB数据(长度=1)的写入的4个写指令且这4个写指令分别指定LBA10、LBA20、LBA100、LBA200的情况下,将对应于最初的写指令的经加密的4KB数据与LBA10的对、对应于第2个写指令的经加密的4KB数据与LBA20的对、对应于第3个写指令的经加密的4KB数据与LBA100的对、对应于第4个写指令的经加密的4KB数据与LBA200的对写入到块BLK#0的页面1。
图15、图16表示由闪速存储装置3执行的读出动作。
在图15、图16中,假设从主机2接收到指定块地址(=BLK#0)、偏移(=+4)、长度(=1)的读指令的情况。闪速存储装置3的控制器4基于块地址(=BLK#0)、偏移(=+4)、长度(=1),读出存储在块BLK#0的页面1中的最初的4KB用户数据(经加密的数据)及与该4KB用户数据(经加密的数据)对应的LBAx两者。在该情况下,控制器4从BLK#0的页面1读取相当于1页面尺寸的数据,并从该读数据中提取最初的4KB用户数据(经加密的数据)及与该4KB用户数据(经加密的数据)对应的LBAx。接着,控制器4将该提取的4KB用户数据(经加密的数据)与LBAx送出到解码电路15B。
图17表示由主机2与闪速存储装置3执行的写入处理的序列。
此处,假设将图10中所说明的QoS域/加密密钥管理表33B’用作图7的加密密钥存储区域80中所包含的加密密钥管理表33B的情况。
主机2首先自身选择为了写入而应使用的块(空闲块),或通过将块分配指令发送给闪速存储装置3而请求闪速存储装置3分配空闲块。然后,主机2将包含自身所选择的块的块地址(或由闪速存储装置3分配的空闲块的块地址)、标签(LBA)、及长度的写指令发送给闪速存储装置3(步骤S21)。
当闪速存储装置3的控制器4接收到该写指令时,控制器4特定出具有由该写指令指定的块地址的块所属的QoS域(步骤S31)。接着,控制器4使用该写指令中所包含的标签(LBA)、及与特定出的QoS域对应的加密密钥,对与该写指令建立了关联的写数据进行加密(步骤S32)。
控制器4基于由该写指令指定的块地址选择写入目标块(步骤S33)。在步骤S33中,选择具有所指定的块地址的块作为写入目标块。控制器4将经加密的写数据与明文的标签(LBA)一起写入到该选择的写入目标块中(步骤S34)。明文的标签(LBA)是包含在该写指令中的(LBA)。在步骤S34中,在写数据具有粒度(Grain)的数倍的长度的情况下,如图13、图14所说明那样,也可以将分别与构成写数据的多个4KB数据部对应的多个标签(LBA)写入到写入目标块。
控制器4更新与写入目标块对应的块管理表32,将与被写入的数据对应的位图旗标(也就是与被写入了该数据的偏移(块内偏移)对应的位图旗标)从0变更为1(步骤S35)。
例如,如图18所示,假设将起始LBA为LBAx的16K字节更新数据写入到块BLK#1的与偏移+4~+7对应的物理存储位置的情况。在该情况下,如图19所示,在块BLK#1用块管理表中,与偏移+4~+7对应的位图旗标分别从0变更为1。
然后,控制器4将对该写指令的响应回复给主机2(图17的步骤S36)。该响应至少包含被写入了该数据的偏移(块内偏移)。
当主机2接收到该响应时,主机2更新由主机2管理的LUT411,将物理地址映射到与被写入的写数据对应的各个标签(LBA)(步骤S22)。如图20所示,LUT411包含与多个标签(例如LBA)各自对应的多个条目。在与某一LBA对应的条目中,存储表示存储着与该LBA对应的数据的NAND型闪速存储器5内的位置(物理存储位置)的物理地址PBA、也就是块地址、偏移(块内偏移)。如图18所示,如果将起始LBA为LBAx的16K字节更新数据写入到块BLK#1的与偏移+4~+7对应的物理存储位置,那么如图20所示,LUT411被更新,在与LBAx对应的条目中存储BLK#1、偏移+4,在与LBAx+1对应的条目中存储BLK#1、偏移+5,在与LBAx+2对应的条目中存储BLK#1、偏移+6,在与LBAx+3对应的条目中存储BLK#1、偏移+7。
如图17所示,之后,主机2将用来使通过所述更新数据的写入而不再需要的以前的数据无效化的Trim指令发送给闪速存储装置3。如图18所示,在以前的数据被存储在块BLK#0的与偏移+0、偏移+1、偏移+2、偏移+3对应的位置的情况下,如图21所示,将指定块地址(=BLK#0)、偏移(=+0)、长度(=4)的Trim指令从主机2发送至闪速存储装置3。闪速存储装置3的控制器4根据该Trim指令更新块管理表32(图17、步骤S37)。在步骤S37中,如图21所示,在块BLK#0用块管理表中,与偏移+0~+3对应的位图旗标分别从1变更为0。
此外,在此处,对将标签(LBA)以明文写入到写入目标块的情况进行了说明,但也可以使用特定的加密密钥对标签(LBA)进行加密,将经加密的标签(LBA)写入到写入目标块。特定的加密密钥是与数据用的所述多个加密密钥不同且为了所有地址(标签(LBA))的加密及解码而共通地使用的加密密钥。
图22表示由主机2与闪速存储装置3执行的读出处理的序列。
此处,假设将图10中所说明的QoS域/加密密钥管理表33B’用作图7的加密密钥存储区域80中所包含的加密密钥管理表33B的情况。
主机2参照由主机2管理的LUT411,将来自用户应用程序的读请求中所包含的标签(LBA)转换成块地址、偏移(块内偏移)。然后,主机2将指定该块地址、偏移、长度的读指令发送给闪速存储装置3。
当闪速存储装置3的控制器4从主机2接收到读指令时,控制器4将与由该读指令指定的块地址对应的块决定为读对象的块,并且基于由该读指令指定的偏移决定读对象的页面(步骤S41)。在步骤S41中,控制器4也可以首先以由读指令指定的偏移除以表示页面尺寸的粒度的数量(此处为4)。然后,控制器4也可以将通过该除法运算而获得的商及余数分别决定为读对象的页面地址及读对象的页面内偏移位置。此外,页面地址及页面内偏移也可以作为偏移(块内偏移)包含在读指令中。
控制器4基于块地址、偏移、长度,从NAND型闪速存储器5读出经加密的数据及标签(LBA)(步骤S42)。控制器4特定出块地址表示的块所属的QoS域(步骤S43)。然后,控制器4使用读出的标签(LBA)、及与特定出的QoS域对应的加密密钥,将读出的数据(经加密的数据)解码(步骤S44)。然后,控制器4将解码后的数据发送给主机2。
图23表示无用信息收集(GC)动作的顺序。
此处,假设将图10中所说明的QoS域/加密密钥管理表33B’用作图7的加密密钥存储区域80中所包含的加密密钥管理表33B的情况。
例如,在由主机2管理的空闲块列表中所包含的剩余空闲块的数量下降到阈值以下的情况下,主机2选择GC源块及GC目的地块,并将指定所选择的GC源块及所选择的GC目的地块的GC控制指令发送给闪速存储装置3(步骤S51)。GC源块及GC目的地块是属于相同的QoS域的块。或者,在闪速存储装置3的控制器4管理空闲块列表的构成中,也可以在剩余空闲块的数量下降到阈值以下时控制器4将该意旨通知给主机2,由接收到通知的主机2进行块选择及GC控制指令的发送。
当接收到该GC控制指令时,闪速存储装置3的控制器4执行数据复制动作,所述数据复制动作包含决定应写入GC源块内的有效数据的GC目的地块内的位置(复制目标位置)的动作、以及将GC源块内的有效数据复制到GC目的地块内的复制目标位置的动作(步骤S61)。在步骤S61中,控制器4将GC源块(复制源块)内的有效数据(经加密的有效数据)及与该有效数据对应的标签(LBA)两者从GC源块(复制源块)复制到GC目的地块(复制目标块)。在该情况下,不执行经加密的有效数据的解码及重新加密。由此,可在GC目的地块(复制目标块)内保存经加密的数据与标签(LBA)的对。由于GC目的地块属于与GC源块相同的QoS域,所以在将从GC目的地块读出的经加密的数据解码的处理中,可使用与将数据写入到GC源块时所使用的加密密钥相同的加密密钥。进而,也能从GC目的地块获取将数据写入到GC源块时所使用的标签(LBA)。由此,能正确地将从GC目的地块读出的经加密的数据解码。
另外,在步骤S61中,反复执行数据复制动作,直到GC源块内的所有有效数据的复制结束为止。在多个GC源块由GC控制指令指定的情况下,反复执行数据复制动作直到所有GC源块内的所有有效数据的复制结束为止。
而且,控制器4针对每个经复制的有效数据,使用GC用回调指令将该有效数据的标签(LBA)、及表示该有效数据的复制目标位置的目的地物理地址等通知给主机2(步骤S62)。与某一有效数据对应的目的地物理地址由被复制了该有效数据的复制目标块(GC目的地块)的块地址、及表示被复制了该有效数据的复制目标块内的物理存储位置的块内物理地址(块内偏移)表示。
当主机2接收到该GC用回调指令时,主机2更新由主机2管理的LUT411,将目的地物理地址(块地址、块内偏移)映射到与经复制的各有效数据对应的标签(LBA)(步骤S52)。
图24表示为了进行GC而执行的数据复制动作的例子。
在图24中,假设如下情况:将存储在GC源块(此处为块BLK#0)的与偏移+4对应的位置的有效数据及与该有效数据对应的标签(LBA4)复制到GC目的地块(此处为块BLK#2)的与偏移+0对应的位置,将存储在GC源块(此处为块BLK#0)的与偏移+10对应的位置的有效数据及与该有效数据对应的标签(LBA10)复制到GC目的地块(此处为块BLK#2)的与偏移+1对应的位置。在该情况下,控制器4将{LBA4、BLK#2、偏移(=+0)、LBA10、BLK#2、偏移(=+1)}通知给主机(GC用回调处理)。
图25表示基于图24的数据复制动作的结果而更新的主机2的LUT411的内容。
在该LUT411中,与LBA4对应的块地址及偏移由BLK#0、偏移(=+4)更新为BLK#2、偏移(=+0)。同样地,与LBA10对应的块地址及偏移由BLK#0、偏移(=+10)更新为BLK#2、偏移(=+1)。
LUT411被更新后,主机2也可以将指定BLK#0及偏移(=+4)的Trim指令发送给闪速存储装置3,使存储在与BLK#0的偏移(=+4)对应的位置的数据无效化。进而,主机2也可以将指定BLK#0及偏移(=+10)的Trim指令发送给闪速存储装置3,使存储在与BLK#0的偏移(=+10)对应的位置的数据无效化。
或者,也可以不从主机2发送Trim指令,而作为GC处理的一个环节由控制器4更新块管理表32并使这些数据无效化。
不将经加密的数据解码及重新加密,便将该经加密的数据与标签(LBA)两者从复制源块复制到复制目标块的数据复制动作并不限定于GC,例如,也可以应用在只将特定的经加密的数据单纯地从复制源块复制到复制目标块的动作中,还可以应用在为了损耗平均而将复制源块内的所有经加密的数据复制到复制目标块的动作中。
图26表示由主机2与闪速存储装置3执行的加密密钥变更处理的另一序列。
此处,假设将图11的块/加密密钥管理表33C用作图7的加密密钥存储区域80中所包含的加密密钥管理表33B的情况。
主机2可视需要将应变更加密密钥的情况对闪速存储装置3请求。在该情况下,主机2将包含块地址的加密密钥变更指令发送给闪速存储装置3。
当闪速存储装置3的控制器4从主机2接收到该加密密钥变更指令时,控制器4将具有由该加密密钥变更指令指定的块地址的块用加密密钥变更(步骤S71)。然后,控制器4更新块/加密密钥管理表33C,将变更后的加密密钥与具有该指定的块地址的块建立关联(步骤S72)。
图27表示由主机2与闪速存储装置3执行的写入处理的另一序列。
此处,假设将图11的块/加密密钥管理表33C用作图7的加密密钥存储区域80中所包含的加密密钥管理表33B的情况。
主机2首先自身选择为了写入而应使用的块(空闲块),或通过将块分配指令发送给闪速存储装置3而请求闪速存储装置3分配空闲块。然后,主机2将包含自身所选择的块的块地址(或由闪速存储装置3分配的空闲块的块地址)、标签(LBA)、及长度的写指令发送给闪速存储装置3(步骤S81)。
当闪速存储装置3的控制器4接收到该写指令时,控制器4特定出具有由该写指令指定的块地址的块(步骤S91)。在步骤S91中,选择具有所指定的块地址的块作为写入目标块。接着,控制器4使用该写指令中所包含的标签(LBA)、及与特定出的块(写入目标块)对应的加密密钥,对与该写指令建立了关联的写数据进行加密(步骤S92)。
控制器4将经加密的写数据与明文的标签(LBA)一起写入到该选择的写入目标块中(步骤S93)。明文的标签(LBA)是包含在该写指令中的(LBA)。在步骤S93中,在写数据具有粒度(Grain)的数倍的长度的情况下,也可以如图13、图14中所说明那样,将分别与构成写数据的多个4KB数据部对应的多个标签(LBA)写入到写入目标块。
控制器4更新与写入目标块对应的块管理表32,将与被写入的数据对应的位图旗标(也就是与被写入了该数据的偏移(块内偏移)对应的位图旗标)从0变更为1(步骤S94)。
然后,控制器4将对该写指令的响应回复给主机2(步骤S95)。该响应至少包含被写入了该数据的偏移(块内偏移)。
当主机2接收到该响应时,主机2更新由主机2管理的LUT411,将物理地址映射与被写入的写数据对应的各个标签(LBA)(步骤S82)。之后,主机2将用来使通过该写入而不再需要的以前的数据无效化的Trim指令发送给闪速存储装置3。闪速存储装置3的控制器4根据该Trim指令更新块管理表32(步骤S96)。
此外,在此处,对将标签(LBA)以明文写入到写入目标块的情况进行了说明,但也可以使用特定的加密密钥对标签(LBA)进行加密,将经加密的标签(LBA)写入到写入目标块。特定的加密密钥所与数据用的所述多个加密密钥不同的加密密钥。该特定的加密密钥是为了所有标签(LBA)的加密及解码而共通地使用的。
图28表示由主机2与闪速存储装置3执行的读出处理的另一序列。
此处,假设将图11的块/加密密钥管理表33C用作图7的加密密钥存储区域80中所包含的加密密钥管理表33B的情况。
主机2参照由主机2管理的LUT411,将来自用户应用程序的读请求中所包含的标签(LBA)转换为块地址、偏移(块内偏移)。然后,主机2将指定该块地址、偏移、长度的读指令发送给闪速存储装置3。
当闪速存储装置3的控制器4从主机2接收到读指令时,控制器4将与由该读指令指定的块地址对应的块决定为读对象的块,并且基于由该读指令指定的偏移决定读对象的页面(步骤S101)。在步骤S101中,控制器4也可以首先以由读指令指定的偏移除以表示页面尺寸的粒度的数量(此处为4)。然后,控制器4也可以将通过该除法运算而获得的商及余数分别决定为读对象的页面地址及读对象的页面内偏移位置。此外,页面地址及页面内偏移也可以作为偏移(块内偏移)包含在读指令中。
控制器4基于块地址、偏移、长度,从NAND型闪速存储器5读出经加密的数据及标签(LBA)(步骤S102)。控制器4使用读出的标签(LBA)、及与读指令中所包含的块地址表示的块对应的加密密钥,将读出的数据(经加密的数据)解码(步骤S103)。然后,控制器4将解码后的数据发送给主机2。
图29表示无用信息收集(GC)动作的另一顺序。
此处,假设将图11的块/加密密钥管理表33C用作图7的加密密钥存储区域80中所包含的加密密钥管理表33B的情况。
例如,在由主机2管理的空闲块列表中所包含的剩余空闲块的数量下降到阈值以下的情况下,主机2选择GC源块及GC目的地块,并将指定所选择的GC源块及所选择的GC目的地块的GC控制指令发送给闪速存储装置3(步骤S111)。或者,在闪速存储装置3的控制器4管理空闲块列表的构成中,也可以在剩余空闲块的数量下降到阈值以下时由控制器4将该意旨通知给主机2,接收到通知的主机2进行块选择及GC控制指令的发送。
当接收到该GC控制指令时,闪速存储装置3的控制器4执行数据复制动作,所述数据复制动作包含决定应写入GC源块内的有效数据的GC目的地块内的位置(复制目标位置)的动作、以及将GC源块内的有效数据复制到GC目的地块内的复制目标位置的动作(步骤S121)。在步骤S121中,控制器4将GC源块(复制源块)内的有效数据(经加密的有效数据)及与该有效数据对应的标签(LBA)两者从GC源块(复制源块)复制到GC目的地块(复制目标块)。在该情况下,不执行经加密的有效数据的解码及重新加密。由此,可在GC目的地块(复制目标块)内保存经加密的数据与标签(LBA)的对。
然后,控制器4更新块/加密密钥管理表33C,将与GC源块建立着关联的加密密钥与GC目的地块建立关联(步骤S122)。由此,在将从GC目的地块读出的经加密的数据解码的处理中,可使用与将数据写入到GC源块时所使用的加密密钥相同的加密密钥。进而,也能从GC目的地块获取将数据写入到GC源块时所使用的标签(LBA)。由此,能正确地将从GC目的地块读出的经加密的数据解码。
另外,在步骤S122中,反复执行数据复制动作,直到GC源块内的所有有效数据的复制结束为止。在多个GC源块由GC控制指令指定的情况下,反复执行数据复制动作直到所有GC源块内的所有有效数据的复制结束为止。
然后,控制器4针对每个经复制的有效数据,使用GC用回调指令将该有效数据的标签(LBA)、及表示该有效数据的复制目标位置的目的地物理地址等通知给主机2(步骤S123)。与某一有效数据对应的目的地物理地址由被复制了该有效数据的复制目标块(GC目的地块)的块地址、及表示被复制了该有效数据的复制目标块内的物理存储位置的块内物理地址(块内偏移)表示。
当主机2接收到该GC用回调指令时,主机2更新由主机2管理的LUT411,将目的地物理地址(块地址、块内偏移)映射到与经复制的各有效数据对应的标签(LBA)(步骤S112)。
图30表示为了进行GC而执行的数据复制动作的另一例。
此处,假设将图11的块/加密密钥管理表33C用作图7的加密密钥存储区域80中所包含的加密密钥管理表33B的情况。
在图30中,假设如下情况:将存储在GC源块(此处为块BLK#0)的与偏移+4对应的位置的有效数据及与该有效数据对应的标签(LBA4)复制到GC目的地块(此处为块BLK#x)的与偏移+0对应的位置,将存储在GC源块(此处为块BLK#0)的与偏移+10对应的位置的有效数据及与该有效数据对应的标签(LBA10)复制到GC目的地块(此处为块BLK#x)的与偏移+1对应的位置。
在该情况下,控制器4更新块/加密密钥管理表33C,将与GC源块(块BLK#0)建立着关联的加密密钥KEY#0与GC目的地块(块BLK#x)建立关联。由此,在将从GC目的地块(块BLK#x)读出的数据解码的处理中使用加密密钥KEY#0,所以可将该数据正确地解码。
之后,控制器4将{LBA4、BLK#x、偏移(=+0)、LBA10、BLK#x、偏移(=+1)}通知给主机(GC用回调处理)。
图31表示基于图30的数据复制动作的结果而更新的主机2的LUT411的内容。
在该LUT411中,与LBA4对应的块地址及偏移由BLK#0、偏移(=+4)被更新为BLK#x、偏移(=+0)。同样地,与LBA10对应的块地址及偏移由BLK#0、偏移(=+10)被更新为BLK#x、偏移(=+1)。
LUT411被更新后,主机2也可以将指定BLK#0及偏移(=+4)的Trim指令发送给闪速存储装置3,使存储在与BLK#0的偏移(=+4)对应的位置的数据无效化。进而,主机2也可以将指定BLK#0及偏移(=+10)的Trim指令发送给闪速存储装置3,使存储在与BLK#0的偏移(=+10)对应的位置的数据无效化。
或者,也可以不从主机2发送Trim指令,而作为GC处理的一个环节由控制器4更新块管理表32并使这些数据无效化。
不将经加密的数据解码及重新加密,变将该经加密的数据与标签(LBA)两者从复制源块复制到复制目标块的数据复制动作并不限定于GC,例如,也可以应用在只将特定的经加密的数据单纯地从复制源块复制到复制目标块的动作中,还可以应用在为了损耗平均而将复制源块内的所有经加密的数据复制到复制目标块的动作中。
图32表示闪速存储装置3所应用的加密密钥变更指令。
加密密钥变更指令是请求闪速存储装置3变更加密密钥的指令。主机2通过将加密密钥变更指令发送给闪速存储装置3,而请求闪速存储装置3变更加密密钥,由此,可变更与指定的区域(QoS域)对应的加密密钥。
加密密钥变更指令包含指令ID、QoS域ID。指令ID是表示该指令为加密密钥变更指令的ID(指令代码),加密密钥变更指令中包含加密密钥变更指令用指令ID。QoS域ID是表示NAND型闪速存储器5的多个区域中的一个的标识符,表示与应变更的加密密钥对应的区域(QoS域)。
此外,加密密钥变更指令也可以包含域名空间ID来代替QoS域ID作为区域ID。或者,加密密钥变更指令也可以包含块地址来代替像QoS域ID、域名空间ID这样的区域ID。
图33表示闪速存储装置3所应用的块分配指令。
块分配指令是请求闪速存储装置3分配块(空闲块)的指令(块分配请求)。主机2通过将块分配指令发送给闪速存储装置3,而请求闪速存储装置3分配空闲块,由此,可获取块地址(所分配的空闲块的块地址)。
块分配指令包含指令ID、QoS域ID。指令ID是表示该指令为块分配指令的ID(指令代码),块分配指令中包含块分配指令用指令ID。QoS域ID是表示NAND型闪速存储器5的多个区域中的一个的标识符,新分配给主机2的空闲块的块地址与具有该QoS域ID的QoS域建立关联。
在闪速存储装置3利用空闲块列表来管理各个空闲块,而主机2不管理空闲块的实例中,主机2请求闪速存储装置3来分配空闲块,由此获取块地址。另一方面,在主机2利用空闲块列表来管理各个空闲块的实例中,主机2可自身选择空闲块中的一个,所以无需将块分配指令发送给闪速存储装置3。
图34表示对块分配指令的响应。
当从主机2接收到块分配指令时,闪速存储装置3从空闲块列表中选择应分配给主机2的空闲块,并将包含所选择的空闲块的块地址的响应回复给主机2。
此外,该响应中也可以包含块分配指令中所包含的QoS域ID、也就是表示将所选择的空闲块建立关联而成的QoS域的QoS域ID。
图35表示闪速存储装置3所应用的写指令。
写指令是请求闪速存储装置3进行数据的写入的指令。该写指令也可以包含指令ID、区域ID、块地址、标签、长度等。
指令ID是表示该指令为写指令的ID(指令代码),写指令中包含写指令用指令ID。
区域ID是表示NAND型闪速存储器5的多个区域中的一个区域的标识符,且表示应被写入数据的区域。区域ID既可为QoS域ID,或者也可以为域名空间ID。
块地址表示应被写入数据的块。
标签是用来识别应被写入的写数据的地址。作为标签,也可以使用像LBA(起始LBA)这样的逻辑地址。起始LBA表示应被写入数据的最初的逻辑位置(最初的逻辑地址)。
长度表示应被写入的写数据的长度。该长度(数据长度)既可利用粒度(Grain)的数量来指定,也可以利用LBA的数量来指定,或者该尺寸也可以利用字节来指定。
图36表示对图35的写指令的响应。
该响应也可以包含块地址、块内物理地址、长度。块地址表示被写入了数据的块。块内物理地址表示被写入了数据的块内的位置(物理存储位置)。如上所述,块内物理地址能够利用块内偏移来指定。长度表示被写入的数据的长度。该长度(数据长度)既可利用粒度(Grain)的数量来指定,也可以利用LBA的数量来指定,或者该尺寸也可以利用字节来指定。
或者,该响应也可以不仅包含块地址、块内物理地址及长度,而且还包含标签(LBA)。标签(LBA)是图35的写指令中所包含的标签(LBA)。
图37表示闪速存储装置3所应用的Trim指令。
该Trim指令是包含物理地址(块地址及块内物理地址(块内偏移))的指令,所述物理地址(块地址及块内物理地址(块内偏移))表示存储着应设为无效的数据的物理存储位置。也就是说,该Trim指令并非像LBA这样的逻辑地址,而是能够指定物理地址。该Trim指令包含指令ID、物理地址、长度。
指令ID是表示该指令为Trim指令的ID(指令代码),Trim指令中包含Trim指令用指令ID。
物理地址表示存储着应无效化的数据的最初的物理存储位置。在本实施方式中,该物理地址是利用块地址与偏移(块内偏移)的组合来指定的。
长度表示应无效化的数据的长度。该长度(数据长度)既可利用粒度(Grain)的数量来指定,也可以利用字节来指定。
控制器4使用块管理表32对表示多个块分别所包含的数据各自的有效/无效的旗标(位图旗标)进行管理。当从主机2接收到Trim指令时,所述Trim指令包含表示存储着应设为无效的数据的物理存储位置的块地址及偏移(块内偏移),控制器4更新块管理表32,将与对应于Trim指令中所包含的块地址及块内偏移的物理存储位置的数据对应的旗标(位图旗标)变更为表示无效的值。
图38表示闪速存储装置3所应用的读指令。
读指令是请求闪速存储装置3进行数据的读出的指令。该读指令也可以包含指令ID、区域ID、物理地址PBA、及长度。
指令ID是表示该指令为读指令的ID(指令代码),读指令中包含读指令用指令ID。
区域ID是表示NAND型闪速存储器5的多个区域中的一个区域的标识符,且表示应被读出数据的区域。区域ID既可为QoS域ID,或者也可以为域名空间ID。
物理地址PBA表示应被读出数据的最初的物理存储位置。物理地址PBA利用块地址、偏移(块内偏移)来指定。
长度表示应读取的数据的长度。该数据长度能够利用Grain的数量来指定。
图39表示闪速存储装置3所应用的GC控制指令。
GC控制指令用来将GC源块地址及GC目的地块地址通知给闪速存储装置3。主机2可对各块的有效数据量/无效数据量进行管理,选择有效数据量更少的若干个块作为GC源块。另外,主机2可对空闲块列表进行管理,选择若干个空闲块作为GC目的地块。该GC控制指令也可以包含指令ID、GC源块地址、GC目的地块地址等。
指令ID是表示该指令为GC控制指令的ID(指令代码),GC控制指令中包含GC控制指令用指令ID。
GC源块地址是表示GC源块的块地址。主机2可指定应将哪个块设为GC源块。
GC目的地块地址是表示GC目的地块的块地址。主机2可指定应将哪个块设为GC目的地块。
图40表示GC用回调指令。
GC用回调指令用来将通过GC而被复制的有效数据的标签(LBA)与表示该有效数据的复制目标位置的块地址及偏移通知给主机2。
GC用回调指令可包含指令ID、标签(LBA)、长度、目的地物理地址。
指令ID是表示该指令为GC用回调指令的ID(指令代码),GC用回调指令中包含GC用回调指令用指令ID。
标签是用来识别通过GC而从GC源块被复制到GC目的地块的有效数据的地址。作为标签,也可以使用像LBA(起始LBA)这样的逻辑地址。
长度表示该被复制的数据的长度。该数据长度也可以利用粒度(Grain)的数量来指定。
目的地物理地址表示被复制了有效数据的GC目的地块内的位置。目的地物理地址利用块地址、偏移(块内偏移)来指定。
如以上所说明那样,根据本实施方式,当从主机2接收到指定用来识别应写入的写数据的标签(第1地址)的写请求时,使用从多个加密密钥中选择的第1加密密钥与标签(第1地址)对写数据进行加密,经加密的写数据与标签(第1地址)一起被写入到NAND型闪速存储器5的多个块中的一个块。当从主机2接收到指定物理地址的读请求时,基于该物理地址,从所述一个块中读出经加密的数据与标签(第1地址)两者,所述物理地址表示存储着经加密的数据的所述一个块内的物理存储位置。然后,使用第1加密密钥与读出的标签(第1地址),将读出的经加密的数据解码。
这样一来,在将读出的经加密的数据解码的处理中,使用与经加密的数据一起从NAND型闪速存储器5中被读出的标签(第1地址),而并非由读请求指定的地址(物理地址)。因此,在数据写入与数据读出之间使用互不相同的定址方法的构成中,也能使用用来识别数据的第1地址与第1加密密钥对数据进行加密,从而可使用从NAND型闪速存储器5读出的第1地址(与经加密的数据一起被写入的地址)将该经加密的数据正确地解码。
此外,闪速存储装置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,铁电随机存取存储器)这样的其它各种非易失性存储器。
已对本发明的若干个实施方式进行了说明,但这些实施方式是作为例子而提出的,并非意图限定发明的范围。这些新颖的实施方式能以其它各种方式实施,且能够在不脱离发明主旨的范围内进行各种省略、置换、变更。这些实施方式及其变化包含在发明的范围或主旨中,并且包含在权利要求书所记载的发明及其均等的范围内。
[符号的说明]
2 主机
3 闪速存储装置
4 控制器
5 NAND型闪速存储器
21 写动作控制部
22 读动作控制部
23 复制动作控制部
Claims (13)
1.一种存储器系统,能够连接于主机,且具备:
非易失性存储器,包含多个块;以及
控制器,是电连接于所述非易失性存储器的控制器,且构成为:当从所述主机接收到指定用来识别应写入的数据的第1地址的写请求时,使用从多个加密密钥中选择的第1加密密钥与所述第1地址对所述数据进行加密,并将所述经加密的数据与所述第1地址一起写入到所述多个块中的一个块,且
当从所述主机接收到指定物理地址的读请求时,基于所述物理地址,从所述一个块中读出所述经加密的数据与所述第1地址两者,并使用所述第1加密密钥与所述读出的第1地址将所述读出的经加密的数据解码,所述物理地址表示存储着所述经加密的数据的所述一个块内的物理存储位置。
2.根据权利要求1所述的存储器系统,其中所述控制器构成为:
对通过将所述非易失性存储器逻辑性分割而获得的多个区域与所述多个加密密钥之间的对应关系进行管理,所述写请求及所述读请求分别还指定表示所述多个区域中的一个区域的标识符,且
在接收到所述写请求的情况下,选择与由所述写请求指定且由所述标识符表示的区域建立了关联的加密密钥作为所述第1加密密钥,在接收到所述读请求的情况下,选择与由所述读请求指定且由所述标识符表示的所述区域建立了关联的所述加密密钥作为所述第1加密密钥。
3.根据权利要求1所述的存储器系统,其中所述控制器构成为:
对通过将所述非易失性存储器逻辑性分割而获得的多个区域与所述多个加密密钥之间的对应关系进行管理,所述写请求还指定所述一个块的块地址,由所述读请求指定的所述物理地址包含所述一个块的所述块地址、及表示存储着所述经加密的数据的所述一个块内的位置的块内物理地址,且
在接收到所述写请求的情况下,基于由所述写请求指定的所述块地址,选择与所述一个块所属的区域建立了关联的加密密钥作为所述第1加密密钥,在接收到所述读请求的情况下,基于由所述读请求指定的所述物理地址内的所述块地址,选择与所述一个块所属的所述区域建立了关联的所述加密密钥作为所述第1加密密钥。
4.根据权利要求1所述的存储器系统,其中所述控制器构成为:
对所述多个块与所述多个加密密钥之间的对应关系进行管理,所述写请求还指定所述一个块的块地址,由所述读请求指定的所述物理地址包含所述一个块的所述块地址、及表示存储着所述经加密的数据的所述一个块内的位置的块内物理地址,且
在接收到所述写请求的情况下,基于由所述写请求指定的所述块地址,选择与所述一个块建立了关联的加密密钥作为所述第1加密密钥,在接收到所述读请求的情况下,基于由所述读请求指定的所述物理地址内的所述块地址,选择与所述一个块建立了关联的所述加密密钥作为所述第1加密密钥。
5.根据权利要求1所述的存储器系统,其中所述控制器构成为:将所述第1地址以明文写入到所述一个块中。
6.根据权利要求1所述的存储器系统,其中所述控制器构成为:使用与所述多个加密密钥不同且为了所有地址的加密及解码而共通地使用的特定加密密钥对所述第1地址进行加密,并将所述经加密的第1地址写入到所述一个块中。
7.根据权利要求1所述的存储器系统,其中所述控制器构成为:
对管理所述多个块与所述多个加密密钥之间的对应关系的表格进行管理,
在应将所述经加密的数据从所述一个块复制到所述非易失性存储器内的复制目标块的情况下,不将所述经加密的数据解码及重新加密,便将所述经加密的数据与所述第1地址两者从所述一个块复制到所述复制目标块,且
更新所述表格,将与所述一个块建立着关联的加密密钥与所述复制目标块建立关联。
8.根据权利要求1所述的存储器系统,其中所述控制器构成为:
对管理通过将所述非易失性存储器逻辑性分割而获得的多个区域与所述多个加密密钥之间的对应关系的表格进行管理,且
在应将所述经加密的数据复制到属于与所述一个块所属的区域相同的区域的所述非易失性存储器内的复制目标块的情况下,不将所述经加密的数据解码及重新加密,便将所述经加密的数据与所述第1地址两者从所述一个块复制到所述复制目标块。
9.一种存储器系统,能够连接于主机,且具备:
非易失性存储器,包含多个块;以及
控制器,是电连接于所述非易失性存储器的控制器,且构成为:当从所述主机接收到指定用来识别应写入的数据的第1地址、及第1块地址的写请求时,使用从多个加密密钥中选择的第1加密密钥与所述第1地址对所述数据进行加密,并将所述经加密的数据与所述第1地址一起写入到具有所述第1块地址的第1块,且
当从所述主机接收到指定所述第1块地址及表示存储着所述经加密的数据的所述第1块内的位置的块内物理地址的读请求时,基于所述第1块地址与所述块内物理地址,从所述第1块读出所述经加密的数据与所述第1地址两者,并使用所述第1加密密钥与所述读出的第1地址将所述读出的经加密的数据解码。
10.根据权利要求9所述的存储器系统,其中所述控制器构成为:
对通过将所述非易失性存储器逻辑性分割而获得的多个区域与所述多个加密密钥之间的对应关系进行管理,所述写请求及所述读请求分别还指定表示所述多个区域中的一个区域的标识符,且
在接收到所述写请求的情况下,选择与由所述写请求指定且由所述标识符表示的区域建立了关联的加密密钥作为所述第1加密密钥,在接收到所述读请求的情况下,选择与由所述读请求指定且由所述标识符表示的所述区域建立了关联的所述加密密钥作为所述第1加密密钥。
11.根据权利要求9所述的存储器系统,其中所述控制器构成为:
对通过将所述非易失性存储器逻辑性分割而获得的多个区域与所述多个加密密钥之间的对应关系进行管理,且
在接收到所述写请求的情况下,基于由所述写请求指定的所述第1块地址,选择与所述第1块所属的区域建立了关联的加密密钥作为所述第1加密密钥,在接收到所述读请求的情况下,基于由所述读请求指定的所述第1块地址,选择与所述第1块所属的所述区域建立了关联的所述加密密钥作为所述第1加密密钥。
12.根据权利要求9所述的存储器系统,其中所述控制器构成为:
对所述多个块与所述多个加密密钥之间的对应关系进行管理,且
在接收到所述写请求的情况下,基于由所述写请求指定的所述第1块地址,选择与所述第1块建立了关联的加密密钥作为所述第1加密密钥,在接收到所述读请求的情况下,基于由所述读请求指定的所述第1块地址,选择与所述第1块建立了关联的所述加密密钥作为所述第1加密密钥。
13.一种非易失性存储器的控制方法,所述非易失性存储器包含多个块,所述控制方法具备:
当从主机接收到指定用来识别应写入的数据的第1地址的写请求时,执行如下动作:使用从多个加密密钥中选择的第1加密密钥与所述第1地址对所述数据进行加密;将所述经加密的数据与所述第1地址一起写入到所述多个块中的一个块;以及
当从所述主机接收到指定物理地址的读请求时,基于所述物理地址,从所述一个块中读出所述经加密的数据与所述第1地址两者;使用所述第1加密密钥与所述读出的第1地址,将所述读出的经加密的数据解码;所述物理地址表示存储着所述经加密的数据的所述一个块内的物理存储位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311746842.7A CN117708002A (zh) | 2018-05-22 | 2018-12-14 | 存储器系统及非易失性存储器的控制方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018-097908 | 2018-05-22 | ||
JP2018097908A JP7109992B2 (ja) | 2018-05-22 | 2018-05-22 | メモリシステムおよび制御方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311746842.7A Division CN117708002A (zh) | 2018-05-22 | 2018-12-14 | 存储器系统及非易失性存储器的控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110515862A true CN110515862A (zh) | 2019-11-29 |
CN110515862B CN110515862B (zh) | 2024-01-05 |
Family
ID=68614666
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811533004.0A Active CN110515862B (zh) | 2018-05-22 | 2018-12-14 | 存储器系统及非易失性存储器的控制方法 |
CN202311746842.7A Pending CN117708002A (zh) | 2018-05-22 | 2018-12-14 | 存储器系统及非易失性存储器的控制方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311746842.7A Pending CN117708002A (zh) | 2018-05-22 | 2018-12-14 | 存储器系统及非易失性存储器的控制方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11657163B2 (zh) |
JP (1) | JP7109992B2 (zh) |
CN (2) | CN110515862B (zh) |
TW (1) | TWI702498B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199044A (zh) * | 2020-10-10 | 2021-01-08 | 中国人民大学 | 面向多租户的ftl设置方法、系统、计算机程序及存储介质 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200285574A1 (en) * | 2018-09-26 | 2020-09-10 | Tegze P. Haraszti | Method of using a symbol transformer machine, and symbol transformer machine, for performing information storage and memory functions |
KR102659832B1 (ko) * | 2019-03-05 | 2024-04-22 | 삼성전자주식회사 | 데이터 저장 장치 및 시스템 |
JP7187362B2 (ja) * | 2019-03-15 | 2022-12-12 | キオクシア株式会社 | ストレージ装置及び制御方法 |
US11573892B2 (en) * | 2019-04-26 | 2023-02-07 | EMC IP Holding Company LLC | Garbage collection for a deduplicated cloud tier using microservices |
US11989124B2 (en) | 2019-04-26 | 2024-05-21 | EMC IP Holding Company LLC | Garbage collection for a deduplicated cloud tier with encrypted segments |
US11580015B2 (en) * | 2019-05-03 | 2023-02-14 | EMC IP Holding Company LLC | Garbage collection for a deduplicated cloud tier using functions |
US11176264B2 (en) * | 2019-08-20 | 2021-11-16 | Bank Of America Corporation | Data access control using data block level decryption |
KR20210028335A (ko) * | 2019-09-04 | 2021-03-12 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 |
JP2021043708A (ja) * | 2019-09-11 | 2021-03-18 | キオクシア株式会社 | メモリシステム |
US11733919B2 (en) * | 2019-10-14 | 2023-08-22 | Samsung Electronics Co., Ltd. | Method and system for offloading lookup operation to NAND offload apparatus |
FR3104286B1 (fr) * | 2019-12-04 | 2021-12-17 | Commissariat Energie Atomique | Procédé d’exécution d’un programme d’ordinateur par un appareil électronique |
KR20220020636A (ko) * | 2020-08-12 | 2022-02-21 | 삼성전자주식회사 | 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법 |
US11995223B2 (en) | 2020-10-19 | 2024-05-28 | Western Digital Technologies, Inc. | Data storage device encryption |
US20220123932A1 (en) * | 2020-10-19 | 2022-04-21 | Western Digital Technologies, Inc. | Data storage device encryption |
FR3118268B1 (fr) * | 2020-12-23 | 2024-01-12 | St Microelectronics Sa | Mémoire sécurisée |
JP2022144400A (ja) | 2021-03-19 | 2022-10-03 | 株式会社東芝 | 磁気ディスク装置 |
US11720715B2 (en) * | 2021-03-21 | 2023-08-08 | Western Digital Technologies, Inc. | Secure data storage device and method of encryption |
JP2022147448A (ja) * | 2021-03-23 | 2022-10-06 | キオクシア株式会社 | メモリシステム及びデータ管理方法 |
KR20230056920A (ko) * | 2021-10-21 | 2023-04-28 | 삼성전자주식회사 | 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법 |
KR20230069657A (ko) * | 2021-11-12 | 2023-05-19 | 에스케이하이닉스 주식회사 | 메모리 시스템, 그것의 동작 방법 및 데이터 처리 시스템 |
CN114329361B (zh) * | 2022-03-03 | 2022-05-27 | 北京芯愿景软件技术股份有限公司 | 存储装置和数据读取方法 |
CN115544587A (zh) * | 2022-12-02 | 2022-12-30 | 奉加微电子(昆山)有限公司 | 加密方法、解密方法、芯片和计算机可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080260159A1 (en) * | 2007-04-18 | 2008-10-23 | Hitachi, Ltd. | Computer system, storage system, and data management method for updating encryption key |
US20090132831A1 (en) * | 2002-11-21 | 2009-05-21 | Nxp B.V. | Circuit arrangement with non-volatile memory module and method for en-/decrypting data in the non-volatile memory module |
WO2012148812A2 (en) * | 2011-04-29 | 2012-11-01 | Lsi Corporation | Encrypted transport solid-state disk controller |
US20140032935A1 (en) * | 2012-07-24 | 2014-01-30 | Samsung Electronics Co., Ltd. | Memory system and encryption method in memory system |
EP2958264A1 (en) * | 2014-06-20 | 2015-12-23 | Cypress Semiconductor Corporation | Encryption method for execute-in-place memories |
US20170090815A1 (en) * | 2015-09-29 | 2017-03-30 | Sandisk Technologies Inc. | Zero read on trimmed blocks in a non-volatile memory system |
CN106874211A (zh) * | 2015-12-14 | 2017-06-20 | 株式会社东芝 | 存储器系统及非易失性存储器的控制方法 |
CN107168640A (zh) * | 2016-03-08 | 2017-09-15 | 东芝存储器株式会社 | 存储系统、信息处理系统及非易失性存储器的控制方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8555015B2 (en) * | 2008-10-23 | 2013-10-08 | Maxim Integrated Products, Inc. | Multi-layer content protecting microcontroller |
US8255620B2 (en) * | 2009-08-11 | 2012-08-28 | Texas Memory Systems, Inc. | Secure Flash-based memory system with fast wipe feature |
US8862902B2 (en) * | 2011-04-29 | 2014-10-14 | Seagate Technology Llc | Cascaded data encryption dependent on attributes of physical memory |
JP2013062616A (ja) | 2011-09-12 | 2013-04-04 | Toshiba Corp | 記憶装置、データ記憶方法、及びデータコントローラ |
US8996881B2 (en) | 2012-04-23 | 2015-03-31 | International Business Machines Corporation | Preserving redundancy in data deduplication systems by encryption |
CN103390139A (zh) * | 2012-05-11 | 2013-11-13 | 慧荣科技股份有限公司 | 数据储存装置以及其数据保护方法 |
US20140281587A1 (en) * | 2013-03-14 | 2014-09-18 | Ologn Technologies Ag | Systems, methods and apparatuses for using a secure non-volatile storage with a computer processor |
US9910790B2 (en) * | 2013-12-12 | 2018-03-06 | Intel Corporation | Using a memory address to form a tweak key to use to encrypt and decrypt data |
US10192062B2 (en) * | 2014-06-20 | 2019-01-29 | Cypress Semiconductor Corporation | Encryption for XIP and MMIO external memories |
US9483664B2 (en) | 2014-09-15 | 2016-11-01 | Arm Limited | Address dependent data encryption |
JP6049958B1 (ja) | 2015-04-30 | 2016-12-21 | 真旭 徳山 | 端末装置およびコンピュータプログラム |
US10261919B2 (en) * | 2016-07-08 | 2019-04-16 | Hewlett Packard Enterprise Development Lp | Selective memory encryption |
-
2018
- 2018-05-22 JP JP2018097908A patent/JP7109992B2/ja active Active
- 2018-11-27 TW TW107142238A patent/TWI702498B/zh active
- 2018-12-14 CN CN201811533004.0A patent/CN110515862B/zh active Active
- 2018-12-14 CN CN202311746842.7A patent/CN117708002A/zh active Pending
-
2019
- 2019-02-22 US US16/282,491 patent/US11657163B2/en active Active
-
2023
- 2023-03-27 US US18/190,550 patent/US20230229791A1/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090132831A1 (en) * | 2002-11-21 | 2009-05-21 | Nxp B.V. | Circuit arrangement with non-volatile memory module and method for en-/decrypting data in the non-volatile memory module |
US20080260159A1 (en) * | 2007-04-18 | 2008-10-23 | Hitachi, Ltd. | Computer system, storage system, and data management method for updating encryption key |
WO2012148812A2 (en) * | 2011-04-29 | 2012-11-01 | Lsi Corporation | Encrypted transport solid-state disk controller |
US20140032935A1 (en) * | 2012-07-24 | 2014-01-30 | Samsung Electronics Co., Ltd. | Memory system and encryption method in memory system |
EP2958264A1 (en) * | 2014-06-20 | 2015-12-23 | Cypress Semiconductor Corporation | Encryption method for execute-in-place memories |
US20170090815A1 (en) * | 2015-09-29 | 2017-03-30 | Sandisk Technologies Inc. | Zero read on trimmed blocks in a non-volatile memory system |
CN106874211A (zh) * | 2015-12-14 | 2017-06-20 | 株式会社东芝 | 存储器系统及非易失性存储器的控制方法 |
CN107168640A (zh) * | 2016-03-08 | 2017-09-15 | 东芝存储器株式会社 | 存储系统、信息处理系统及非易失性存储器的控制方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199044A (zh) * | 2020-10-10 | 2021-01-08 | 中国人民大学 | 面向多租户的ftl设置方法、系统、计算机程序及存储介质 |
CN112199044B (zh) * | 2020-10-10 | 2023-04-25 | 中国人民大学 | 面向多租户的ftl设置方法、系统、计算机程序及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2019205031A (ja) | 2019-11-28 |
CN110515862B (zh) | 2024-01-05 |
TWI702498B (zh) | 2020-08-21 |
TW202004502A (zh) | 2020-01-16 |
US20190362081A1 (en) | 2019-11-28 |
CN117708002A (zh) | 2024-03-15 |
JP7109992B2 (ja) | 2022-08-01 |
US11657163B2 (en) | 2023-05-23 |
US20230229791A1 (en) | 2023-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110515862A (zh) | 存储器系统及非易失性存储器的控制方法 | |
TWI746933B (zh) | 控制非揮發性記憶體之記憶體系統及方法 | |
CN109725848A (zh) | 计算机系统及储存装置的控制方法 | |
CN109542333A (zh) | 存储器系统及控制非易失性存储器的控制方法 | |
CN109725847A (zh) | 存储器系统及控制方法 | |
CN109725846A (zh) | 存储器系统及控制方法 | |
CN109726139A (zh) | 存储器系统及控制方法 | |
CN106874211A (zh) | 存储器系统及非易失性存储器的控制方法 | |
CN106874217A (zh) | 存储器系统及控制方法 | |
US20220261187A1 (en) | Memory system and method of controlling nonvolatile memory | |
CN109901791A (zh) | 信息处理装置以及信息处理装置的执行方法 | |
US20220244854A1 (en) | Memory system and method for controlling nonvolatile memory | |
US20230333779A1 (en) | Memory system with controller to write data to memory based on lifetime information in write command | |
US10861580B2 (en) | Memory system for controlling nonvolatile memory | |
JP7366222B2 (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Tokyo Applicant after: Kaixia Co.,Ltd. Address before: Tokyo Applicant before: TOSHIBA MEMORY Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |