TW202004502A - 記憶體系統及非揮發性記憶體之控制方法 - Google Patents
記憶體系統及非揮發性記憶體之控制方法 Download PDFInfo
- Publication number
- TW202004502A TW202004502A TW107142238A TW107142238A TW202004502A TW 202004502 A TW202004502 A TW 202004502A TW 107142238 A TW107142238 A TW 107142238A TW 107142238 A TW107142238 A TW 107142238A TW 202004502 A TW202004502 A TW 202004502A
- Authority
- TW
- Taiwan
- Prior art keywords
- block
- address
- encryption key
- data
- host
- Prior art date
Links
Images
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)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
實施形態實現一種能夠對資料進行加密及解碼之記憶體系統及非揮發性記憶體之控制方法。 實施形態之記憶體系統係於自主機接收到指定用以識別應寫入之資料之第1位址的寫入要求之情形時,使用第1加密密鑰與上述第1位址對上述資料進行加密,並將上述經加密之資料與上述第1位址一併寫入至一個區塊。於自主機接收到指定實體位址之讀取要求之情形時,記憶體系統基於上述實體位址,自上述一個區塊中讀出上述經加密之資料與上述第1位址兩者,並使用上述第1加密密鑰與上述讀出之第1位址將上述讀出之經加密之資料解碼,上述實體位址表示儲存有上述經加密之資料之上述一個區塊內之實體記憶位置。
Description
本發明之實施形態係關於一種記憶體系統及非揮發性記憶體之控制方法。
近年來,具備非揮發性記憶體之記憶體系統廣泛普及。作為此種記憶體系統之一,已知有基於NAND(Not AND,反及)快閃技術之固態驅動器(SSD)。
如SSD般之記憶體系統被用作伺服器電腦、個人電腦等各種電腦之儲存器。
最近,於如SSD般之記憶體系統中,亦要求實現對資料進行加密及解碼之結構。
本發明之實施形態提供一種能夠對資料進行加密及解碼之記憶體系統及非揮發性記憶體之控制方法。
根據實施形態,能夠連接於主機之記憶體系統具備包含複數個區塊之非揮發性記憶體、及電性連接於上述非揮發性記憶體之控制器。上述控制器於自上述主機接收到指定用以識別應寫入之資料之第1位址的寫入要求之情形時,使用自複數個加密密鑰中選擇之第1加密密鑰與上述第1位址對上述資料進行加密,並將上述經加密之資料與上述第1位址一併寫入至上述複數個區塊中之一個區塊。上述控制器於自上述主機接收到指定實體位址之讀取要求之情形時,基於上述實體位址,自上述一個區塊中讀出上述經加密之資料與上述第1位址兩者,並使用上述第1加密密鑰與上述讀出之第1位址,將上述讀出之經加密之資料解碼,上述實體位址表示儲存有上述經加密之資料之上述一個區塊內之實體記憶位置。
以下,參照圖式對實施形態進行說明。
首先,參照圖1對包含一實施形態之記憶體系統之計算機系統之構成進行說明。
該記憶體系統係以對非揮發性記憶體寫入資料、且自非揮發性記憶體讀出資料之方式構成之半導體儲存裝置。該記憶體系統作為基於NAND快閃技術之快閃儲存裝置3而實現。
該計算機系統亦可包含主機(主機裝置)2、及複數個快閃儲存裝置3。主機2亦可為以將包含複數個快閃儲存裝置3之快閃陣列用作儲存器之方式構成之伺服器。主機(伺服器)2與複數個快閃儲存裝置3經由介面50而相互連接(內部相互連接)。作為用於該內部相互連接之介面50,可使用PCI Express(PCIe,Peripheral Component Interconnect Express,外圍組件互連高速)(註冊商標)、NVM Express(NVMe,Non-Volatile Memory express,非揮發性記憶體高速)(註冊商標)、Ethernet(乙太網路)(註冊商標)、NVMe over Fabrics(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編成為記憶體組(bank)#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 Random Access 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)亦可具有較頁面尺寸更小之尺寸。例如,於頁面尺寸為16 K位元之情形時,粒度(Grain)之尺寸亦可為4 K位元。於該情形時,於某一個區塊中,規定分別尺寸為4 K位元之複數個位移位置。與區塊內之最初之位移位置對應之區塊內位移例如為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之各頁面亦可包含用以儲存使用者資料之使用者資料區域及用以儲存管理資料之冗餘區域。頁面尺寸為16 KB+α。
標籤(LBA)亦可針對每個具有特定尺寸之資料被寫入至區塊BLK#0。於圖13中,例示出針對每個4 KB使用者資料將標籤(LBA)寫入至區塊BLK#0之情形。於該情形時,如圖13所示,亦可將各個資料集包含LBA及4 KB使用者資料(經加密之資料)之4個資料集寫入至相同頁面。於以圖13所示之格式將4 KB使用者資料(經加密之資料)及與該4 KB使用者資料對應之標籤(LBA)之對(資料集)寫入至區塊BLK#0之實例中,區塊內位移亦可表示資料集間之邊界。存在於距各資料集之開頭為相當於4 KB之區域之資料係經加密之資料,存在於各資料集之剩下之區域之資訊係與該經加密之資料對應之LBA。
現在,假定如下情形:於在區塊BLK#0之頁面0已寫入有4個4 K位元使用者資料(經加密之資料)及4個LBA之狀態下,自主機2接收到指定區塊位址(=BLK#0)、標籤(LBAx)及長度(=4)之寫入指令。
控制器4將區塊BLK#0之頁面1決定為寫入目標位置。控制器4使用加密密鑰與LBAx對自主機2接收之相當於16 K位元之寫入資料(使用者資料)進行加密。於對16 K位元寫入資料進行加密之處理中,LBAx亦可以特定尺寸為單位增加。例如,16 K位元寫入資料內之最初之4 KB使用者資料可使用該加密密鑰與LBAx被加密,16 K位元寫入資料內之第2個4 KB使用者資料亦可使用該加密密鑰與LBAx+1被加密,16 K位元寫入資料內之第3個4 KB使用者資料亦可使用該加密密鑰與LBAx+2被加密,16 K位元寫入資料內之第4個4 KB使用者資料亦可使用該加密密鑰與LBAx+3被加密。
於對該16 K位元寫入資料進行加密之處理中,該16 K位元寫入資料與LBAx被供給至加密電路15A。加密電路15A亦可以特定資料尺寸為單位(此處為例如4 KB之單位),使應使用於資料之加密之LBA自動地以每次+1之方式增加。
然後,控制器4將4個對、亦即經加密之最初之4 KB使用者資料與LBAx之對、經加密之第2個4 KB使用者資料與LBAx+1之對、經加密之第3個4 KB使用者資料與LBAx+2之對、經加密之第4個4 KB使用者資料與LBAx+3之對寫入至區塊BLK#0之頁面1。
或者,亦可如圖14所示般,將4個經加密之4 KB使用者資料寫入至頁面內之使用者資料區域,將與該等4個經加密之4 KB使用者資料對應之4個LBA(即LBAx、LBAx+1、LBAx+2、LBAx+3)寫入至該頁面內之冗餘區域。
再者,亦可僅將包含經加密之16 KB使用者資料與LBAx之一個對寫入至區塊BLK#0之頁面1。
又,於自主機2接收分別要求4 KB資料(長度=1)之寫入之4個寫入指令且該等4個寫入指令分別指定LBA10、LBA20、LBA100、LBA200之情形時,將對應於最初之寫入指令之經加密之4 KB資料與LBA10之對、對應於第2個寫入指令之經加密之4 KB資料與LBA20之對、對應於第3個寫入指令之經加密之4 KB資料與LBA100之對、對應於第4個寫入指令之經加密之4 KB資料與LBA200之對寫入至區塊BLK#0之頁面1。
圖15、圖16表示由快閃儲存裝置3執行之讀出動作。
於圖15、圖16中,假定自主機2接收到指定區塊位址(=BLK#0)、位移(=+4)、長度(=1)之讀取指令之情形。快閃儲存裝置3之控制器4基於區塊位址(=BLK#0)、位移(=+4)、長度(=1),讀出儲存於區塊BLK#0之頁面1中之最初之4 KB使用者資料(經加密之資料)及與該4 KB使用者資料(經加密之資料)對應之LBAx兩者。於該情形時,控制器4自BLK#0之頁面1讀取相當於1頁面尺寸之資料,並自該讀取資料中提取最初之4 KB使用者資料(經加密之資料)及與該4KB使用者資料(經加密之資料)對應之LBAx。其次,控制器4將該提取之4 KB使用者資料(經加密之資料)與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所說明般,亦可將分別與構成寫入資料之複數個4 KB資料部對應之複數個標籤(LBA)寫入至寫入目標區塊。
控制器4更新與寫入目標區塊對應之區塊管理表32,將與被寫入之資料對應之位元映像旗標(亦即與被寫入了該資料之位移(區塊內位移)對應之位元映像旗標)自0變更為1(步驟S35)。
例如,如圖18所示,假定將起始LBA為LBAx之16 K位元更新資料寫入至區塊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之16 K位元更新資料寫入至區塊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中所說明般,將分別與構成寫入資料之複數個4 KB資料部對應之複數個標籤(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,鐵電隨機存取記憶體)般之其他各種非揮發性記憶體。
已對本發明之若干個實施形態進行了說明,但該等實施形態係作為示例而提出者,並非意圖限定發明之範圍。該等新穎之實施形態能以其他各種形態實施,且能夠於不脫離發明主旨之範圍內進行各種省略、置換、變更。該等實施形態及其變化包含於發明之範圍或主旨中,並且包含於申請專利範圍所記載之發明及其均等之範圍內。
[相關申請案]
本申請案享有以日本專利申請案2018-97908號(申請日:2018年5月22日)作為基礎申請案之優先權。本申請案藉由參照該基礎申請案而包含基礎申請案之全部內容。
2‧‧‧主機
3‧‧‧快閃儲存裝置
4‧‧‧控制器
5‧‧‧NAND型快閃記憶體
6‧‧‧DRAM
10‧‧‧匯流排
11‧‧‧主機介面
12‧‧‧CPU
13‧‧‧NAND介面
14‧‧‧DRAM介面
15‧‧‧加密/解碼電路
15A‧‧‧加密電路
15B‧‧‧解碼電路
21‧‧‧寫入動作控制部
22‧‧‧讀取動作控制部
23‧‧‧複製動作控制部
31‧‧‧寫入緩衝區(WB)
32‧‧‧區塊管理表
33‧‧‧系統管理資訊
33A‧‧‧QoS域/區塊管理表
33B‧‧‧加密密鑰管理表
33B'‧‧‧QoS域/加密密鑰管理表
33C‧‧‧區塊/加密密鑰管理表
50‧‧‧介面
52‧‧‧快閃轉換部
60‧‧‧網路
61‧‧‧最終使用者終端(用戶端)
80‧‧‧加密密鑰記憶區域
401‧‧‧虛擬機器服務
402‧‧‧使用者應用程式
403‧‧‧I/O服務
411‧‧‧LUT
500‧‧‧I/O隊列
601‧‧‧寫入緩衝區(WB)
602‧‧‧廢料收集(GC)功能
603‧‧‧NAND型快閃記憶體(NAND快閃陣列)
BLK0~BLKm-1‧‧‧區塊
Ch.1~Ch.16‧‧‧通道
P0~Pn-1‧‧‧頁面
S11~S12‧‧‧步驟
S21~S22‧‧‧步驟
S31~S37‧‧‧步驟
S41~S44‧‧‧步驟
S51~S52‧‧‧步驟
S61~S62‧‧‧步驟
S71~S72‧‧‧步驟
S81~S82‧‧‧步驟
S91~S96‧‧‧步驟
S101~S103‧‧‧步驟
S111~S112‧‧‧步驟
S121~S123‧‧‧步驟
圖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用回呼指令之圖。
15‧‧‧加密/解碼電路
15A‧‧‧加密電路
15B‧‧‧解碼電路
33B‧‧‧加密密鑰管理表
80‧‧‧加密密鑰記憶區域
Claims (13)
- 一種記憶體系統,其係能夠連接於主機者,且具備: 非揮發性記憶體,其包含複數個區塊;以及 控制器,其電性連接於上述非揮發性記憶體,且構成為:於自上述主機接收到指定用以識別應寫入之資料之第1位址的寫入要求之情形時,使用自複數個加密密鑰中選擇之第1加密密鑰與上述第1位址對上述資料進行加密,並將上述經加密之資料與上述第1位址一併寫入至上述複數個區塊中之一個區塊,且 於自上述主機接收到指定實體位址之讀取要求之情形時,基於上述實體位址,自上述一個區塊中讀出上述經加密之資料與上述第1位址兩者,並使用上述第1加密密鑰與上述讀出之第1位址將上述讀出之經加密之資料解碼,上述實體位址表示儲存有上述經加密之資料之上述一個區塊內之實體記憶位置。
- 如請求項1之記憶體系統,其中上述控制器構成為: 對藉由將上述非揮發性記憶體邏輯性分割而獲得之複數個區域與上述複數個加密密鑰之間之對應關係進行管理,上述寫入要求及上述讀取要求之各者進而指定表示上述複數個區域中之一個區域之識別碼,且 於接收到上述寫入要求之情形時,選擇與由上述寫入要求指定之上述識別碼表示之區域建立了關聯之加密密鑰作為上述第1加密密鑰,於接收到上述讀取要求之情形時,選擇與由上述讀取要求指定之上述識別碼表示之上述區域建立了關聯之上述加密密鑰作為上述第1加密密鑰。
- 如請求項1之記憶體系統,其中上述控制器構成為: 對藉由將上述非揮發性記憶體邏輯性分割而獲得之複數個區域與上述複數個加密密鑰之間之對應關係進行管理,上述寫入要求進而指定上述一個區塊之區塊位址,由上述讀取要求指定之上述實體位址包含上述一個區塊之上述區塊位址、及表示儲存有上述經加密之資料之上述一個區塊內之位置的區塊內實體位址,且 於接收到上述寫入要求之情形時,基於由上述寫入要求指定之上述區塊位址,選擇與上述一個區塊所屬之區域建立了關聯之加密密鑰作為上述第1加密密鑰,於接收到上述讀取要求之情形時,基於由上述讀取要求指定之上述實體位址內之上述區塊位址,選擇與上述一個區塊所屬之上述區域建立了關聯之上述加密密鑰作為上述第1加密密鑰。
- 如請求項1之記憶體系統,其中上述控制器構成為: 對上述複數個區塊與上述複數個加密密鑰之間之對應關係進行管理,上述寫入要求進而指定上述一個區塊之區塊位址,由上述讀取要求指定之上述實體位址包含上述一個區塊之上述區塊位址、及表示儲存有上述經加密之資料之上述一個區塊內之位置的區塊內實體位址,且 於接收到上述寫入要求之情形時,基於由上述寫入要求指定之上述區塊位址,選擇與上述一個區塊建立了關聯之加密密鑰作為上述第1加密密鑰,於接收到上述讀取要求之情形時,基於由上述讀取要求指定之上述實體位址內之上述區塊位址,選擇與上述一個區塊建立了關聯之上述加密密鑰作為上述第1加密密鑰。
- 如請求項1之記憶體系統,其中上述控制器構成為:將上述第1位址以明文寫入至上述一個區塊。
- 如請求項1之記憶體系統,其中上述控制器構成為:使用與上述複數個加密密鑰不同且為了所有位址之加密及解碼而共通地使用之特定加密密鑰對上述第1位址進行加密,並將上述經加密之第1位址寫入至上述一個區塊。
- 如請求項1之記憶體系統,其中上述控制器構成為: 對管理上述複數個區塊與上述複數個加密密鑰之間之對應關係之表進行管理, 於應將上述經加密之資料自上述一個區塊複製至上述非揮發性記憶體內之複製目標區塊之情形時,不將上述經加密之資料解碼及重新加密,便將上述經加密之資料與上述第1位址兩者自上述一個區塊複製至上述複製目標區塊,且 更新上述表,將與上述一個區塊建立有關聯之加密密鑰與上述複製目標區塊建立關聯。
- 如請求項1之記憶體系統,其中上述控制器構成為: 對管理藉由將上述非揮發性記憶體邏輯性分割而獲得之複數個區域與上述複數個加密密鑰之間之對應關係之表進行管理,且 於應將上述經加密之資料複製至屬於與上述一個區塊所屬之區域相同之區域的上述非揮發性記憶體內之複製目標區塊之情形時,不將上述經加密之資料解碼及重新加密,便將上述經加密之資料與上述第1位址兩者自上述一個區塊複製至上述複製目標區塊。
- 一種記憶體系統,其係能夠連接於主機者,且具備: 非揮發性記憶體,其包含複數個區塊;以及 控制器,其電性連接於上述非揮發性記憶體,且構成為:於自上述主機接收到指定用以識別應寫入之資料之第1位址、及第1區塊位址的寫入要求之情形時,使用自複數個加密密鑰中選擇之第1加密密鑰與上述第1位址對上述資料進行加密,並將上述經加密之資料與上述第1位址一併寫入至具有上述第1區塊位址之第1區塊,且 於自上述主機接收到指定上述第1區塊位址及表示儲存有上述經加密之資料之上述第1區塊內之位置之區塊內實體位址的讀取要求之情形時,基於上述第1區塊位址與上述區塊內實體位址,自上述第1區塊讀出上述經加密之資料與上述第1位址兩者,並使用上述第1加密密鑰與上述讀出之第1位址將上述讀出之經加密之資料解碼。
- 如請求項9之記憶體系統,其中上述控制器構成為: 對藉由將上述非揮發性記憶體邏輯性分割而獲得之複數個區域與上述複數個加密密鑰之間之對應關係進行管理,上述寫入要求及上述讀取要求之各者進而指定表示上述複數個區域中之一個區域之識別碼,且 於接收到上述寫入要求之情形時,選擇與由上述寫入要求指定之上述識別碼表示之區域建立了關聯之加密密鑰作為上述第1加密密鑰,於接收到上述讀取要求之情形時,選擇與由上述讀取要求指定之上述識別碼表示之上述區域建立了關聯之上述加密密鑰作為上述第1加密密鑰。
- 如請求項9之記憶體系統,其中上述控制器構成為: 對藉由將上述非揮發性記憶體邏輯性分割而獲得之複數個區域與上述複數個加密密鑰之間之對應關係進行管理,且 於接收到上述寫入要求之情形時,基於由上述寫入要求指定之上述第1區塊位址,選擇與上述第1區塊所屬之區域建立了關聯之加密密鑰作為上述第1加密密鑰,於接收到上述讀取要求之情形時,基於由上述讀取要求指定之上述第1區塊位址,選擇與上述第1區塊所屬之上述區域建立了關聯之上述加密密鑰作為上述第1加密密鑰。
- 如請求項9之記憶體系統,其中上述控制器構成為: 對上述複數個區塊與上述複數個加密密鑰之間之對應關係進行管理,且 於接收到上述寫入要求之情形時,基於由上述寫入要求指定之上述第1區塊位址,選擇與上述第1區塊建立了關聯之加密密鑰作為上述第1加密密鑰,於接收到上述讀取要求之情形時,基於由上述讀取要求指定之上述第1區塊位址,選擇與上述第1區塊建立了關聯之上述加密密鑰作為上述第1加密密鑰。
- 一種非揮發性記憶體之控制方法,該非揮發性記憶體包含複數個區塊,該非揮發性記憶體之控制方法具備: 於自主機接收到指定用以識別應寫入之資料之第1位址的寫入要求之情形時,執行如下動作:使用自複數個加密密鑰中選擇之第1加密密鑰與上述第1位址對上述資料進行加密;將上述經加密之資料與上述第1位址一併寫入至上述複數個區塊中之一個區塊;以及 於自上述主機接收到指定實體位址之讀取要求之情形時,執行如下動作:基於上述實體位址,自上述一個區塊中讀出上述經加密之資料與上述第1位址兩者;使用上述第1加密密鑰與上述讀出之第1位址,將上述讀出之經加密之資料解碼;其中,上述實體位址表示儲存有上述經加密之資料之上述一個區塊內之實體記憶位置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018097908A JP7109992B2 (ja) | 2018-05-22 | 2018-05-22 | メモリシステムおよび制御方法 |
JP2018-097908 | 2018-05-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202004502A true TW202004502A (zh) | 2020-01-16 |
TWI702498B TWI702498B (zh) | 2020-08-21 |
Family
ID=68614666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107142238A TWI702498B (zh) | 2018-05-22 | 2018-11-27 | 記憶體系統及非揮發性記憶體之控制方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11657163B2 (zh) |
JP (1) | JP7109992B2 (zh) |
CN (2) | CN117708002A (zh) |
TW (1) | TWI702498B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11775187B2 (en) | 2021-03-23 | 2023-10-03 | Kioxia Corporation | Memory system and data management method including block allocation management |
Families Citing this family (24)
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 | 삼성전자주식회사 | 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 장치 및 상기 메모리 컨트롤러의 동작 방법 |
CN112199044B (zh) * | 2020-10-10 | 2023-04-25 | 中国人民大学 | 面向多租户的ftl设置方法、系统、计算机程序及存储介质 |
US11995223B2 (en) | 2020-10-19 | 2024-05-28 | Western Digital Technologies, Inc. | Data storage device encryption |
US12058259B2 (en) | 2020-10-19 | 2024-08-06 | SanDisk Technologies, Inc. | Data storage device encryption |
US20220179972A1 (en) * | 2020-12-04 | 2022-06-09 | Amazon Technologies, Inc. | Highly-available cryptographic keys |
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 |
US20220308756A1 (en) * | 2021-03-26 | 2022-09-29 | Ati Technologies Ulc | Performing Memory Accesses for Input-Output Devices using Encryption Keys Associated with Owners of Pages of Memory |
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 | 奉加微电子(昆山)有限公司 | 加密方法、解密方法、芯片和计算机可读存储介质 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10254320A1 (de) * | 2002-11-21 | 2004-06-03 | Philips Intellectual Property & Standards Gmbh | Schaltungsanordnung mit nicht-flüchtigem Speichermodul und Verfahren zum Ver-/Entschlüsseln von Daten des nicht-flüchtigen Speichermoduls |
JP2008269173A (ja) * | 2007-04-18 | 2008-11-06 | Hitachi Ltd | 計算機システム、ストレージシステムおよびデータ管理方法 |
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 |
US9069703B2 (en) * | 2011-04-29 | 2015-06-30 | Seagate Technology Llc | Encrypted-transport solid-state disk controller |
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 | 慧荣科技股份有限公司 | 数据储存装置以及其数据保护方法 |
KR20140027596A (ko) * | 2012-07-24 | 2014-03-07 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템에서의 암호화 방법 |
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 |
US10169618B2 (en) * | 2014-06-20 | 2019-01-01 | Cypress Semiconductor Corporation | Encryption method for execute-in-place memories |
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 |
US10929550B2 (en) * | 2015-04-30 | 2021-02-23 | Masaaki Tokuyama | Terminal device and computer program |
US10157012B2 (en) * | 2015-09-29 | 2018-12-18 | Sandisk Technologies Llc | Zero read on trimmed blocks in a non-volatile memory system |
JP6414853B2 (ja) * | 2015-12-14 | 2018-10-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP6523193B2 (ja) * | 2016-03-08 | 2019-05-29 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
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 CN202311746842.7A patent/CN117708002A/zh active Pending
- 2018-12-14 CN CN201811533004.0A patent/CN110515862B/zh active Active
-
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
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11775187B2 (en) | 2021-03-23 | 2023-10-03 | Kioxia Corporation | Memory system and data management method including block allocation management |
TWI820439B (zh) * | 2021-03-23 | 2023-11-01 | 日商鎧俠股份有限公司 | 記憶體系統及資料管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110515862B (zh) | 2024-01-05 |
CN117708002A (zh) | 2024-03-15 |
CN110515862A (zh) | 2019-11-29 |
TWI702498B (zh) | 2020-08-21 |
JP2019205031A (ja) | 2019-11-28 |
US20190362081A1 (en) | 2019-11-28 |
US20230229791A1 (en) | 2023-07-20 |
US11657163B2 (en) | 2023-05-23 |
JP7109992B2 (ja) | 2022-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI702498B (zh) | 記憶體系統及非揮發性記憶體之控制方法 | |
US11513707B2 (en) | Memory system and method of controlling nonvolatile memory | |
US11709597B2 (en) | Memory system and method for controlling nonvolatile memory | |
CN109726139B (zh) | 存储器系统及控制方法 | |
TWI674502B (zh) | 記憶體系統及控制方法 | |
US12073122B2 (en) | Memory system with controller to write data to memory based on lifetime information in write command | |
JP7167295B2 (ja) | メモリシステムおよび制御方法 | |
JP2022179798A (ja) | メモリシステムおよび制御方法 |