TW202201232A - 記憶體系統及控制方法 - Google Patents
記憶體系統及控制方法 Download PDFInfo
- Publication number
- TW202201232A TW202201232A TW110104618A TW110104618A TW202201232A TW 202201232 A TW202201232 A TW 202201232A TW 110104618 A TW110104618 A TW 110104618A TW 110104618 A TW110104618 A TW 110104618A TW 202201232 A TW202201232 A TW 202201232A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- block
- blocks
- command
- secure
- Prior art date
Links
Images
Classifications
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- 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/062—Securing storage systems
-
- 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/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- 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/2143—Clearing memory, e.g. to prevent the data from being stolen
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
本文中所述之實施例係通常有關記憶體系統及用以控制記憶體系統之非揮發性記憶體的控制方法。
依據一個實施例,記憶體系統包括具有複數個區塊的非揮發性記憶體。用於資料拭除操作的最小單元為區塊。記憶體系統中的控制器係電連接至該非揮發性記憶體。該控制器係配置成,回應來自主機請求安全地拭除儲存在由第一邏輯區域識別符所識別之第一邏輯區域中的安全拭除目標資料的第一命令,執行將除了任何安全拭除目標資料以外的有效資料從其中儲存有該安全拭除目標資料之複數個第一區塊的一或多個第一區塊複製到複數個複製目的地區塊的一或多個複製目的地區塊的複製操作。該控制器也被配置成在該複製操作之後,對該一或多個第一區塊執行該資料拭除操作。
Description
本文中所述之實施例係通常有關記憶體系統及用以控制記憶體系統之非揮發性記憶體的控制方法。
近年來,具有非揮發性記憶體的記憶體系統已經變得普遍。作為此種記憶體系統之一者,已知有具有NAND型快閃記憶體的固態硬碟(SSD)。
覆寫、區塊拭除(block erase)、和加密拭除(cryptographic erase)已知為安全且必定拭除SSD中所儲存之資料的安全拭除法。安全拭除法被分類成實體安全拭除法和邏輯安全拭除法,實體安全拭除法為使得所儲存之資料實體上且不可逆地(irreversibly)不可讀的拭除法,邏輯安全拭除法為邏輯上不可讀的拭除法。覆寫和區塊拭除各自為實體安全拭除法之一例。加密拭除為邏輯安全拭除法的範例。
在加密拭除中,當SSD中所儲存之資料被加密時所使用的加密密鑰藉由實體安全拭除法來予以拭除。從而,所儲存之資料不在能夠被解密,而且可以說被邏輯地拭除。
最近,在記憶體系統(諸如,SSD)中所儲存的所有資料中,已經有藉由實體安全拭除法來對特定資料進行安全拭除的需求。
一般而言,依據一個實施例,記憶體系統包括具有複數個區塊的非揮發性記憶體。用於資料拭除操作的最小單元為區塊。記憶體系統中的控制器係電連接至該非揮發性記憶體。該控制器係配置成,回應來自主機(host)、請求安全地拭除儲存在由第一邏輯區域識別符所識別之第一邏輯區域中的安全拭除目標資料的第一命令,執行將除了任何安全拭除目標資料以外的有效資料從其中儲存有該安全拭除目標資料之複數個第一區塊的一或多個第一區塊複製到複數個複製目的地區塊的一或多個複製目的地區塊的複製操作。該控制器也被配置成在該複製操作之後,對該一或多個第一區塊執行該資料拭除操作。
依據該實施例,特定資料可由實體安全拭除方法來予以安全地拭除。
諸實施例提供記憶體系統及控制方法,其能夠藉由實體安全拭除方法而僅對所有儲存資料中的特定資料進行安全拭除。
在下文中,一些範例實施例將參照圖式來做說明。
(第一實施例)
將說明包含依據第一實施例之記憶體系統之資訊處理系統的配置。圖1為例舉包含依據第一實施例之記憶體系統之資訊處理系統1的配置範例的方塊圖。此範例中之記憶體系統為半導體儲存裝置,其係配置成將資料寫至非揮發性記憶體以及從非揮發性記憶體中讀出資料。該記憶體系統被施行為,例如,包含NAND型快閃記憶體的SSD 3。
資訊處理系統1包含主機2(主機裝置)和SSD 3。主機2為配置成控制SSD 3的資訊處理裝置。主機2的可能範例包含個人電腦、伺服器電腦、移動式終端、和車載裝置(in-vehicle device)。
SSD 3可經由電纜或網路而被連接至主機2。或者,SSD 3可被建立或安裝在主機2內。
用來連接主機2和SSD 3的介面可以使用串列ATA、串列附接式SCSI (SAS)、通用快閃儲存器(UFS)、PCI Express (PCIe)®、或者Ethernet®,但不限於此。
SSD 3包含控制器4和非揮發性記憶體(例如,NAND型快閃記憶體5)。SSD 3亦可具有隨機存取記憶體,例如,動態隨機存取記憶體(DRAM)6。
NAND型快閃記憶體5包含具有複數個配置成矩陣之記憶格(memory cell)的記憶格陣列。NAND型快閃記憶體5可為二維結構類型的快閃記憶體或三維結構類型的快閃記憶體。
NAND型快閃記憶體5的記憶格陣列包含複數個區塊BLK0到BLKx-1。區塊BLK0到BLKx-1各自含有複數個頁面(在此,頁面P0到Py-1)。各頁面含有連接至相同字線的記憶格。個別的區塊BLK0到BLKx-1為用於用來拭除來自NAND型快閃記憶體5之資料的資料拭除操作(在下文中,也被稱為區塊拭除)的單元尺寸。此上下文中的區塊也被稱為「拭除區塊」、「實體區塊」、或「實體拭除區塊」。頁面P0到Py-1為用於資料寫操作和資料讀操作的單元尺寸。
控制器4可以藉由諸如系統單晶片(SoC)的電路來予以施行。控制器4經由NAND介面13而被電連接至NAND型快閃記憶體5,NAND介面13符合撥動式NAND快閃介面或開放式NAND快閃介面(ONFI),但不限於此。控制器4操作為配置成控制NAND型快閃記憶體5的記憶體控制器。
控制器4可用作為快閃記憶體轉譯層(flash translation layer(FTL)),其係配置成執行NAND型快閃記憶體5的資料管理及區塊管理。
由FTL所執行的資料管理包含(1)指示NAND型快閃記憶體5的各邏輯區域識別符與各實體位址間之對應的對映資料(mapping data)的管理以及(2)用以隱藏(concealing)NAND型快閃記憶體5之限制的處理(例如,基於頁面的讀/寫操作和基於區塊的拭除操作)。
邏輯區域識別符可以是命名空間識別符、邏輯位址、或命名空間識別符和邏輯位址的組合。
在此上下文中,邏輯位址被主機2所使用來說明SSD 3之邏輯位址空間中的位址。作為邏輯位址,邏輯區塊位址(定址(addressing))(LBA)或者鍵-值(key-value)儲存的鍵可以被使用。
控制器4係配置成創建及管理複數個命名空間(namespace)。該複數個命名空間為彼此獨立的邏輯位址範圍。該複數個命名空間被用來使一個儲存裝置表現得好像該裝置是複數個分開/不同的儲存裝置。該複數個命名空間被主機2所使用來存取SSD 3。命名空間識別符被主機2所使用來說明命名空間。
由主機2所使用來存取SSD 3以及NAND型快閃記憶體5之各實體位址(實際區塊位址)PBA的各邏輯區域識別符間之對映的管理係藉由使用被稱為邏輯到實體位址轉譯表(L2P表)37的位址轉換表來予以執行。L2P表中的邏輯區域識別符包含邏輯位址。控制器4使用L2P表37來管理各邏輯區域識別符與各實體位址之間的對映。對應於某邏輯區域識別符之實體位址指示NAND型快閃記憶體5中的實際儲存位置,其中,對應於此邏輯區域識別符的資料已經最近被寫入。當SSD 3的電力被開啟(啟動)時,L2P表37可從NAND型快閃記憶體5被載入至DRAM 6中。
當LBA被用作為邏輯區域識別符時,L2P表37管理各LBA與各實體位址PBA之間的對映,具有被稱為群集(cluster)的預定管理尺寸。當由LBA所載明之區段(sector)的尺寸小於群集的尺寸,指示群集中之各區段的資料是否為有效資料或無效資料的位元圖(bitmap)資料也可以被儲存在L2P表37中。
當鍵-值儲存中的鍵被用作為邏輯區域識別符時,L2P表37可管理,例如,各鍵的雜湊值、各鍵的指標、對應於各鍵的唯一編號、對應於各鍵之值的大小、以及包含一或多個實體位址的實體位址列表(對應於各鍵的值被儲存於其中)之間的對應,但不限於此。
圖2為例舉L2P表37之配置範例的圖形。在此,當諸如LBA之邏輯位址被用作為邏輯區域識別符時之L2P表37的配置範例將被說明。L2P表37管理SSD 3之邏輯位址空間中的各個邏輯位址與NAND型快閃記憶體5之實體位址空間中的各個實體位址之間的對映,具有被稱為群集之預定管理尺寸的單元。單一群集具有為由邏輯位址所指定之區段的尺寸之整數倍的尺寸(當邏輯位址為LBA時,其也被稱為邏輯區域塊)。該區段之尺寸的範例為512 B或4 KiB,而且該群集之尺寸的範例為4 KiB。在大容量SSD中,群集之尺寸可大於4 KiB。對應於複數個群集的資料可以被儲存在單一頁面中。單一頁面之尺寸的範例為16 KiB。
在L2P表37中,對應於某一邏輯位址的實體位址指示NAND型快閃記憶體5之最近的實際儲存位置,而對應於此邏輯位址的資料被寫至該位置。
該L2P表37包含分別對應於複數個邏輯位址的複數個入口(entry)。對應於某一邏輯位址的各L2P表入口儲存與此邏輯位址相關聯的實體位址。例如,如果控制器4將與某一邏輯位址相關聯的資料寫至NAND型快閃記憶體5中的某一實際儲存位置,則控制器4更新該L2P表37以使只是此儲存位置的實體位址PBA與此邏輯位址相關聯。
圖2例舉實體位址PBA0、PBA2、PBA1、PBA4、PBA5、PBA6分別與實體位址0x000、0x001、0x002、0x005、0x006、0x007相關聯的情況。當對應於某一邏輯位址的資料尚未被寫入NAND型快閃記憶體5中時,則預定常數(Null值)可被儲存在對應於此邏輯位址的入口中。
參考回到圖1的說明,在NAND型快閃記憶體5中,每一含有一頁面之區塊的拭除週期資料僅可以被寫至該頁面一次(程式/拭除週期)。亦即,新資料可以不直接被覆寫至區塊中資料已經被寫至該處的區域。因此,當在拭除週期之前更新該已經被寫入的資料時,控制器4將新的(更新的)資料寫至區塊中(或另一區塊中)仍未被寫的區域,並且將先前被寫的資料當作為無效資料。換言之,控制器4將對應於某一邏輯區域識別符的資料更新到另一實際儲存位置,而不是對應於此邏輯區域識別符的先前資料被儲存至該處的實際儲存位置。接著,控制器4更新L2P表37以使用於最新近被寫之實際儲存位置的新實體位址與此邏輯區域識別符相關聯並且使先前的資料位置無效。
由FTL所執行之區塊管理也可包含有缺陷的區塊(壞的區塊)、損耗平均(wear leveling)、和垃圾回收(壓縮)等管理。
損耗平均為用以使每一區塊之重寫的數目均等(程式/拭除週期的數目)的操作。
垃圾回收為用以減少區塊數量的操作,其中,有效資料和無效資料兩者共存以便增加自由區塊的數量。此上下文中的自由區塊意指不含有效資料的區塊。
此上下文中的有效資料意指與某一邏輯區域識別符相關聯之邏輯區域中所儲存的最近資料。例如,在能夠經由L2P表37而被參考/定址之實際儲存位置中所儲存的資料(亦即,與邏輯區域識別符相關聯的資料作為最近資料)為有效資料。有效資料稍後可以為主機2而可能被讀取。
此上下文中的無效資料意指目前儲存在實際儲存位置中的資料,而在L2P表37中沒有相對應的邏輯位址關聯。例如,儲存在不可經由L2P表37而參考之實際儲存位置中的資料(亦即,與任何邏輯區域識別符無關聯的資料)為無效資料。無效資料為不再有可能從主機2中被讀取的資料。當更新資料被儲存在與某一邏輯區域識別符相關聯之邏輯區域中時,先前與該邏輯區域相關直到那時為止所儲存的任何有效資料變成無效資料,而且該更新資料變成與該邏輯區域識別符相關所儲存之新的有效資料。除此之外,如果對與某一邏輯區域識別符相關聯之邏輯區域進行取消對映(unmap)(將於稍後作說明),則儲存在邏輯區域中之先前有效的資料然後結果變成無效資料。
在垃圾回收中,控制器4將有效資料和無效資料一起存在於其中之少數幾個區塊的有效資料複製到其他區塊(例如,自由區塊)。控制器4更新L2P表3以將目的地實體位址複製到所複製之有效資料的各邏輯區域識別符。在有效資料已被複製到其他區塊後僅含有無效資料的區塊被釋出(指定)作為自由區塊。藉此,此區塊在資料拭除操作後可以被重新使用來寫資料。
除了上述NAND介面(I/F)13之外,控制器4包含主機介面(I/F)11、CPU 12、DRAM介面(I/F)14、直接記憶體存取控制器(DMAC)15、靜態RAM(SRAM)16、和ECC編碼/解碼單元17。主機I/F 11、CPU 12、NAND I/F 13、DRAM I/F 14、DMAC 15、SRAM 16、和ECC編碼/解碼單元17經由匯流排10而互連。
主機I/F 11為配置成執行與主機2之通訊的主機介面電路。主機I/F 11可以是,例如,SATA介面控制器、SAS介面控制器、PCIe控制器、或Ethernet控制器。
主機I/F 11接收來自主機2之各式各樣的命令。SATA介面使用由ATA標準所定義的ATA命令,SAS介面使用由SCSI標準所定義的SCSI命令,以及PCIe介面和Ethernet介面使用由NVM Express (NVMe)®標準所定義的NVMe命令。這些命令包含寫命令、讀命令、和取消對映命令。
寫命令為請求SSD 3將用戶資料(要被寫的用戶資料也被稱為「寫資料」)寫至NAND型快閃記憶體5之對映於由邏輯區域識別符所指示之區域的區域的命令(也被稱為「寫請求」)。當邏輯位址(特別是LBA)和命名空間識別符的組合被用作為邏輯區域識別符時,寫命令可包含,例如,識別某一命名空間的命名空間識別符、此命名空間中的邏輯位址(起始LBA)、寫資料的尺寸(例如,要被寫之區段的數量)、和指示主機2之記憶體中儲存有該寫資料之處的位置之資料指標(諸如,緩衝區(buffer)位址等等)。起始LBA指示在寫資料要被寫至其處之邏輯區域中的一個或更多個區段中第一個區段的LBA。
讀命令為請求SSD 3從NAND型快閃記憶體5之對映於由邏輯區域識別符所指示之區域的區域中讀出資料的命令(也被稱為「讀請求」)。當邏輯位址(特別是LBA)和命名空間識別符的組合被用作為邏輯區域識別符時,讀命令可包含識別某一命名空間的命名空間識別符、此命名空間中的邏輯位址(起始LBA)、要被讀之資料的尺寸(例如,區段的數量)、和指示主機2之記憶體中此資料要被轉移之處的位置之資料指標(諸如,緩衝區位址)。起始LBA指示在要被讀資料被儲存於其中之邏輯區域中的一個或更多個區段中第一個區段的LBA。
取消對映命令通知SSD 3取消對映目標邏輯區域作為邏輯區域識別符。取消對映命令為從L2P表37中刪除指示NAND型快閃記憶體5之對應於該邏輯區域之實際區域的資訊而且使記錄於該實際區域中的資料無效的命令。當邏輯位址(特別是LBA)和命名空間識別符的組合被用作為邏輯區域識別符時,控制器4將NULL值儲存在L2P表37中對應於由取消對映命令所指定之所有邏輯位址範圍(LBA範圍)的入口中、或者從這些入口之各者中刪除實體位址。此取消對映命令操作使與此LBA範圍中之各LBA相關聯的資料無效。
可從主機2接收到之命令可以是請求安全拭除儲存在特定邏輯區域中之特定安全拭除目標資料的命令。此種命令可以被稱為特定安全拭除命令、標定的(targeted)安全拭除命令、或者僅稱為標定的拭除命令。特定邏輯區域為由主機2所指定之邏輯區域識別符所邏輯上識別的區域。
安全拭除目標資料包含現在儲存在特定邏輯區域中的資料以及先前儲存在特定邏輯區域中的資料兩者。現在儲存在特定邏輯區域中的資料意指目前儲存在特定邏輯區域中的有效資料。先前儲存在特定邏輯區域中的資料意指,例如,藉由將更新資料寫至該特定邏輯區域而使之無效的無效資料。在SSD 3中,由於更新資料被寫至另一實際儲存位置而不是舊資料被儲存於其中的實際儲存位置,所以資料可以被更新且同時舊資料仍然在舊的實際儲存位置中作為無效資料。安全拭除目標資料也包含此種無效資料。
在下面的說明中,要被安全拭除的特定邏輯區域能夠被稱為安全拭除目標邏輯區域,而且被儲存及/或先前被儲存在安全拭除目標邏輯區域中的資料能夠被稱為安全拭除目標資料。安全拭除目標邏輯區域在邏輯上被邏輯區域識別符所識別。
特定安全拭除命令為,例如,指定識別安全拭除目標邏輯區域之邏輯區域識別符的命令,而且也請求安全拭除目標資料的安全拭除。
或者,特定安全拭除命令可以是請求安全拭除目標資料的安全拭除而不需指定識別安全拭除目標邏輯區域之邏輯區域識別符的命令。在此情況下,主機2首先將指定識別安全拭除目標邏輯區域之邏輯區域識別符的一或多個命令送至SSD 3。主機2然後將請求安全拭除目標資料之安全拭除的特定安全拭除命令送至SSD 3。
當識別安全拭除目標邏輯區域之邏輯區域識別符為命名空間識別符時,安全拭除目標邏輯區域為由命名空間識別符所識別的命名空間。在此情況下,安全拭除目標資料為現在及/或先前被儲存在由命名空間識別符所識別之命名空間中的資料。
亦即,在控制器4係配置成管理由複數個命名空間識別符所個別識別之複數個命名空間的情況下,命名空間識別符可以被用作為識別安全拭除目標命名空間的邏輯區域識別符。
當識別安全拭除目標邏輯區域的邏輯區域識別符為諸如LBA的邏輯位址時,安全拭除目標邏輯區域為由該邏輯位址所識別的區段,而且安全拭除目標資料為現在及/或先前被儲存在由此邏輯位址所識別之區段中的資料。當有複數個命名空間時,命名空間識別符和邏輯位址的組合可以被用作為識別安全拭除目標邏輯區域的邏輯區域識別符。
特定安全拭除命令可指定識別一或多個安全拭除目標區段的一或多個邏輯位址。在此情況下,特定安全拭除命令可指定邏輯位址範圍(例如,由指示邏輯區域之開始的邏輯位址和從該邏輯位址開始的區段數量所指定之LBA範圍)。當期望將複數個邏輯位址範圍設定為安全拭除目標時,主機2可以首先將各自指定一安全拭除目標邏輯位址範圍的複數個命令送至SSD 3,而後可以將請求安全地拭除先前所識別之安全拭除目標資料的特定安全拭除命令送至SSD 3。特定安全拭除命令亦可包含指定要被標定之複數個邏輯位址範圍的複數個參數。而且,在此情況下,如果有複數個命名空間,則命名空間識別符和邏輯位址範圍的組合可以是識別安全拭除目標邏輯區域的單一個邏輯區域識別符。
當控制器4支援鍵-值儲存時,鍵-值儲存中的鍵可以被用作為識別安全拭除目標邏輯區域的邏輯區域識別符。在此情況下,安全拭除目標邏輯區域為其中儲存有由該鍵所識別出之值的邏輯區域,而且安全拭除目標資料為現在及/或先前被儲存在由此值所識別出之邏輯區域中的資料。特定安全拭除命令可指定識別一或多個安全拭除目標值的一或多個鍵。
在第一實施例中,命名空間識別符和邏輯位址(LBA)的組合被用作為由諸如寫命令或讀命令之I/O命令所指定的邏輯區域識別符。命名空間識別符和由I/O命令所指定的邏輯位址(LBA)的組合指示存取目標邏輯區域。當控制器4支援鍵-值儲存時,鍵-值儲存中的鍵或命名空間識別符和鍵的組合指示存取目標邏輯區域。
圖3為例舉SSD 3中所管理之複數個命名空間的圖形。
圖3例舉控制器4管理命名空間NS#1 (NS#1)、命名空間NS#2 (NS#2)、和命名空間NS#3 (NS#3)的情況。各命名空間係由命名空間識別符(NSID)所識別。各命名空間含有一組複數個連續的邏輯位址(LBA)。對應於各命名空間的邏輯位址範圍從LBA0開始。各命名空間可以被設定為任意尺寸。各命名空間的尺寸對應於各命名空間中所含有之LBA的數量。
圖3例舉命名空間NS#1包含從LBA0到LBA(i-1)的複數個連續的LBA、命名空間NS#2包含從LBA0到LBA(j-1)的複數個連續的LBA、和命名空間NS#3包含從LBA0到LBA(k-1)的複數個連續的LBA的情況。
當命名空間NS#1、命名空間NS#2、和命名空間NS#3係由控制器4所管理時,可以為各命名空間定義基底位址(base address),使得命名空間NS#1、命名空間NS#2、和命名空間NS#3藉由使用單一個L2P表37而被對映至SSD 3的單一個內部邏輯位址。或者,可以為各命名空間創建L2P表37。
參考回到圖1的說明,CPU 12為配置成控制主機I/F 11、NAND I/F 13、DRAM I/F 14、DMAC 15、SRAM 16、和ECC編碼/解碼單元17的處理器。CPU 12藉由回應SSD 3的啟動而從NAND型快閃記憶體5或ROM(未繪示出)將控制程式(韌體)載入於SRAM 16上,並且執行該韌體來進行各式各樣的處理。該韌體可被載入於DRAM 6上。CPU 12可執行,例如,用以處理來自主機2之各種命令的命令處理。CPU 12的操作係由上述的韌體來予以控制。該命令處理之整體的部分可由控制器4中的專用硬體來予以執行。
此韌體致使CPU 12用作為命名空間管理單元21、寫控制器22、讀控制器23、和拭除控制器24。
命名空間管理單元21基於接收自主機2之命名空間管理命令而進行,例如,命名空間的創建、管理、和刪除。
寫控制器22處理經由主機I/F 11而接收自主機2的寫命令。寫命令指定,例如,命名空間識別符(NSID)、起始LBA、和寫資料的尺寸。寫控制器22將與經由主機I/F 11而接收自主機2之寫命令相關聯的寫資料經由NAND I/F 13而寫至NAND型快閃記憶體5。然後,寫控制器22更新L2P表37而使得對應於寫資料的各LBA與寫資料被寫至其中的實體位址。
讀控制器23處理經由主機I/F 11而接收自主機2的讀命令。讀命令指定,例如,命名空間識別符(NSID)、起始LBA、和讀目標資料的尺寸。讀控制器23獲得藉由參考L2P表37而將讀目標資料儲存於其中的實體位址。然後,讀控制器23經由NAND I/F 13而從NAND型快閃記憶體5中讀出該讀目標資料。
回應經由主機I/F 11而接收自主機2的特定安全拭除命令,拭除控制器24藉由實體安全拭除方法來進行在由邏輯區域識別符所識別之安全拭除目標邏輯區域中所儲存之安全拭除目標資料的安全拭除。拭除控制器24可包含取消對映單元24a、垃圾回收(GC)單元24b、和安全拭除單元24c。
取消對映單元24a進行使安全拭除目標資料無效的取消對映操作。例如,取消對映單元24a取消識別安全拭除目標邏輯區域中所有邏輯區域之邏輯區域識別符的對映關係。
GC單元24b將儲存安全拭除目標資料以及除了安全拭除目標資料以外之資料中的有效資料之各區塊選擇作為GC目標區塊(複製來源區塊)。安全拭除目標資料可以是安全拭除目標邏輯區域中的有效資料及/或無效資料。除了安全拭除目標資料以外之資料中的有效資料為安全拭除目標邏輯區域以外之邏輯區域中的有效資料。GC單元24b執行僅將除了安全拭除目標資料以外之資料中的有效資料從複製來源區塊複製到複製目的地區塊的複製操作。由於取消對映操作和複製操作,複製來源區塊變成沒有任何有效資料被儲存於其中的區塊。
在複製操作被執行之後,安全拭除單元24c對包含複製來源區塊之儲存安全拭除目標資料的區塊進行至少資料拭除操作,從而藉由實體安全拭除方法來進行安全拭除目標資料的安全拭除。
控制器4中的其他組件將被說明。
NAND I/F 13為配置成在CPU 12的控制下控制NAND型快閃記憶體5的NAND控制器。
DRAM I/F 14為配置成在CPU 12的控制下控制DRAM 6的DRAM控制器。
DRAM 6之儲存區域的部分可被用作為寫緩衝區31、讀緩衝區32、和命令緩衝區33。此外,DRAM 6之儲存區域的部分可被用作為安全拭除目標區塊列表34、自由區塊列表35、作用區塊列表36、和儲存L2P表37的區域。
寫緩衝區31將要被寫的資料暫時儲存至NAND型快閃記憶體5。
讀緩衝區32暫時儲存從NAND型快閃記憶體5中讀出的資料。
命令緩衝區33暫時儲存從主機2接收到的命令直到該命令被執行為止。
安全拭除目標區塊列表34儲存安全拭除目標資料被儲存於其中之各區塊的區塊識別符。
自由區塊列表35儲存各自由區塊的區塊識別符。自由區塊為沒有任何有效資料被儲存於其中的區塊。
作用區塊列表36儲存各作用區塊的區塊識別符。作用區塊為有效資料被儲存於其中的區塊。
接著,藉由實體安全拭除方法來進行安全且肯定地拭除資料的操作(在下文中,被稱為實體安全拭除操作)將被說明。
圖4例舉在SSD 3中所進行之寫操作及實體安全拭除操作的概述。寫操作的說明之後是實體安全拭除操作的說明。
寫控制器22將寫資料寫至寫緩衝區31。當寫目的地區塊56未被分配(allocate)時,寫控制器22在由自由區塊列表35所管理的自由區塊中選取一個自由區塊,並且對選取的自由區塊進行區塊拭除以將區塊拭除後的自由區塊分配作為寫目的地區塊56。
寫控制器22將寫緩衝區31的寫資料寫至寫目的地區塊56的可寫頁面。寫控制器22更新L2P表37。當寫資料被寫至寫目的地區塊56時,寫目的地區塊56變成資料被部分寫至其中的區塊(在下文中,被稱為在寫當中的區塊)。由於在寫當中的區塊也儲存有效資料,所以此一區塊被管理作為作用區塊。
當因為寫目的地區塊56充滿寫資料而在寫目的地區塊56中沒有任何可寫頁面時,寫控制器22將新的自由區塊分配作為寫目的地區塊,而且將寫緩衝區31的寫資料寫至新近分配之寫目的地區塊的可寫頁面。
接著,在實體安全拭除操作中執行的取消對映操作和垃圾回收操作將被說明。
當從主機2接收到指示安全地拭除由邏輯區域識別符所指定之邏輯區域中的資料之特定安全拭除命令時,取消對映單元24a取消識別由該特定安全拭除命令所指定之所有邏輯區域之邏輯區域識別符的對映關係。換言之,取消對映單元24a執行使安全拭除目標資料無效的取消對映操作。從而,所有的安全拭除目標資料變成無效資料。不具有任何有效資料的作用區塊從作用區塊列表36中被去除,並且反而被自由區塊列表35所管理。
然後,GC單元24b執行垃圾回收操作。在此垃圾回收操作中,GC單元24b僅將除了安全拭除目標資料以外之資料中的有效資料從安全拭除目標資料被儲存於其中的一或多個第一區塊複製到一或多個複製目的地區塊。除了安全拭除目標資料以外的資料為未被指定為安全拭除目標資料的資料。
因此,作用區塊群組並不包含安全拭除目標資料以及除了安全拭除目標資料以外之資料中的有效資料共同存在於其中的區塊。由於一或多個第一區塊(複製來源區塊)並不包含除了安全拭除目標資料以外之資料中的有效資料,所以有可能將該一或多個第一區塊的每一個處理作為自由區塊。因此,該一或多個第一區塊從作用區塊列表36中被去除,並且反而被自由區塊列表35所管理。
接著,由GC單元24b所執行之垃圾回收操作的詳細範例將被說明。安全拭除目標資料為,例如,(i) 當僅一命名空間識別符係由特定安全拭除命令所指定時,由此命名空間識別符所識別之安全拭除目標命名空間的資料(用戶資料),(ii) 當一命名空間識別符和LBA範圍之組合係由特定安全拭除命令所指定時,由此命名空間識別符和LBA範圍所識別之邏輯區域中的資料,和(iii) 當一鍵-值儲存的鍵係由特定安全拭除命令所指定時,由該鍵所識別之資料的任何一者。
GC單元24b將儲存安全拭除目標資料的作用區塊選擇作為複製來源區塊52。
GC單元24b在由自由區塊列表35所管理之自由區塊中選取單一個自由區塊。GC單元24b對所選取之自由區塊進行區塊拭除。接著,GC單元24b將區塊拭除後的自由區塊分配作為複製目的地區塊54。
GC單元24b將除了安全拭除目標資料以外之資料中的有效資料,亦即,非安全拭除目標有效資料,從複製來源區塊52複製到複製目的地區塊54。GC單元24b更新L2P表37以使指示有效資料被複製至其處的複製目的地實際儲存位置與所複製之有效資料的邏輯區域識別符相關聯。複製來源區塊52中的安全拭除目標資料仍然處於取消對映狀態中。有效資料被複製至其處的複製目的地區塊54變成作用區塊而且由作用區塊列表36所管理。
當複製來源區塊52中所有的有效資料全部被複製時,複製來源區塊52變成作用區塊而且由自由區塊列表35所管理。
GC單元24b將儲存安全拭除目標資料之另一作用區塊選取做為新的複製來源區塊52。GC單元24b將非安全拭除目標有效資料從新的複製來源區塊52複製到複製目的地區塊54。GC單元24b更新L2P表37以使指示有效資料被複製至其處的複製目的地實際儲存位置與所複製之有效資料的邏輯區域識別符相關聯。複製來源區塊52中的安全拭除目標資料仍然處於取消對映狀態中。
當複製目的地區塊54充滿資料時,亦即,當複製目的地區塊54中沒有可寫頁面時,GC單元24b在由自由區塊列表35所管理之自由區塊中選取單一個自由區塊。GC單元24b對所選取之自由區塊進行區塊拭除。然後,GC單元24b將區塊拭除後的自由區塊分配作為新的複製目的地區塊54。
由於有效資料從其中被全部複製的複製來源區塊藉由自由區塊列表35而被管理作為自由區塊,所以此一複製來源區塊可以被重新使用作為複製目的地區塊54。GC單元24b可以將藉由複製操作而被做成自由區塊的複製來源區塊選取作為複製目的地區塊。在此情況下,GC單元24b對此所選取的區塊進行區塊拭除。因此,藉由複製操作而被做成自由區塊之複製來源區塊中的安全拭除目標資料被拭除。GC單元24b將區塊拭除後的區塊分配作為新的複製目的地區塊54。接著,GC單元24b將非安全拭除目標有效資料從複製來源區塊52複製到複製目的地區塊54。以此方式,藉由將做成自由區塊之複製來源區塊重新使用作為複製目的地區塊54,複製來源區塊的安全拭除目標資料藉由區塊拭除而被拭除,而且被非安全拭除目標有效資料所覆寫。
以此方式,GC單元24b對藉由複製操作而被做成自由區塊之複製來源區塊(其中,沒有儲存任何有效資料)進行至少區塊拭除。
當對儲存有安全拭除目標資料的所有作用區塊完成垃圾回收操作時,安全拭除目標資料並不存在於自由區塊以外的任何區塊中。
接著,在實體安全拭除操作中執行之上述區塊拭除操作的範例將被說明。
在垃圾回收操作被執行之後,安全拭除單元24c對在由自由區塊列表35所管理之自由區塊中儲存有安全拭除目標資料的一或多個第一自由區塊進行至少區塊拭除。
在此,該一或多個第一自由區塊包含(i) 在藉由複製操作而被做成自由區塊的一或多個複製來源區塊(其中,沒有儲存任何有效資料)中未被使用作為複製目的地區塊的一或多個區塊,和(ii) 在存在於垃圾回收操作的開始之前且將無效資料儲存在安全拭除目標邏輯區域中之自由區塊中未被使用作為複製目的地區塊的一或多個自由區塊的任何一者。在(ii)中,安全拭除目標邏輯區域中的無效資料包含在安全拭除目標邏輯區域中的資料中,實體安全拭除操作的開始之前已經無效的資料。
安全拭除單元24c進行用以從由自由區塊列表35所管理之自由區塊中找出對應於(i)之自由區塊和對應於(ii)之自由區塊的自由區塊之處理,以及對所找到之自由區塊的每一個進行至少區塊拭除。或者,安全拭除單元24c可以對由自由區塊列表35所管理之所有自由區塊的每一個進行至少區塊拭除。
結果是,在垃圾回收操作之後仍然作為自由區塊的每一個區塊中所儲存的安全拭除目標資料藉由至少區塊拭除而被安全地拭除。此外,在被重新使用作為複製目的地區塊之少數幾個區塊中所儲存的安全拭除目標資料藉由覆寫(亦即,區塊拭除+覆寫)而被安全地拭除。
在垃圾回收操作被執行之後,安全拭除單元24c可以對儲存有安全拭除目標資料的每一個自由區塊進行區塊拭除,而且進一步地,可將諸如所有0、所有1、或其組合的特定資料樣式寫在每一個自由區塊上。因此,所有的安全拭除目標資料藉由區塊拭除而被安全地拭除並且被特定資料樣式所覆寫。
下面,假設請求特定命名空間之資料的安全拭除之第一特定命令為特定安全拭除命令。在此範例中,第一特定命令使用將特定命名空間識別為指示安全拭除目標邏輯區域之邏輯區域識別符的命名空間識別符。
圖5為例舉依據第一實施例,在記憶體系統中所執行之實體安全拭除操作程序的流程圖。
當控制器4接收到來自主機2的命令(步驟S102)時,CPU 12確定此所接收到的命令是否為第一特定命令(步驟S104)。
當確定所接收到的命令不是第一特定命令時(步驟S104中的「否」),CPU 12依據所接收到的命令執行處理(步驟S106)。
當確定所接收到的命令是第一特定命令時(步驟S104中的「是」),取消對映單元24a執行使安全拭除目標命名空間無效的取消對映操作(步驟S112)。
在步驟S112中,例如,取消對映單元24a從對應於安全拭除目標命名空間之所有LBA的L2P表37之個別入口中刪除實體位址。取消對映單元24a也將NULL值儲存在這些入口中。藉由此取消對映操作,使L2P表37中之對應於安全拭除目標命名空間的所有群集無效。亦即,與對應於安全拭除目標命名空間之所有群集相關聯的資料在內部被認知為可被丟棄的資料。結果是,安全拭除目標命名空間中所有的資料變成無效資料。
當某作用區塊中所儲存的所有資料為安全拭除目標資料時,此作用區塊變成在取消對映操作的結束時僅儲存無效資料的自由區塊。
當某作用區塊儲存安全拭除目標資料和非安全拭除目標命名空間兩者時,此作用區塊在取消對映操作的結束時儲存安全拭除目標資料之中的無效資料和非安全拭除目標命名空間的有效資料。
GC單元24b執行垃圾回收操作(GC操作),使得安全拭除目標資料(無效資料)和非安全拭除目標命名空間的有效資料共同存在於其中的區塊從作用區塊群組中消失(步驟S114)。
GC單元24b將儲存安全拭除目標命名空間之無效資料的至少所有的作用區塊選取作為GC目標區塊(亦即,複製來源區塊)。或者,當垃圾回收操作被簡單地施行時,GC單元24b可將儲存無效資料之至少所有的作用區塊選取作為複製來源區塊,而不管該無效資料是否為安全拭除目標命名空間的無效資料。
GC單元24b可將被選取作為複製來源區塊之各作用區塊的區塊識別符保存(save)在安全拭除目標區塊列表34中。
GC單元24b可檢查該區塊基於,例如,圖6A和6B中所例舉之資訊而儲存何者命名空間資料。
圖6A和6B例舉寫至一區塊之資料結構的範例。在圖6A的範例中,一對命名空間識別符和由該對所識別之LBA及資料被寫至每一個頁面上。因此,GC單元24b可藉由讀取該對命名空間識別符和每一個頁面上的LBA來確定含有該頁面的區塊是否儲存安全拭除目標命名空間的資料。
在寫至一區塊之資料結構的另一範例中,如圖6B所例舉的,除了圖6A中的資訊以外,含有此區塊中之資料的命名空間之命名空間識別符的列表被寫至任一頁面(例如,最後一頁)。因此,GC單元24b藉由僅讀取各區塊的最後一頁中所儲存之命名空間識別符的列表而不需要讀取各區塊的所有頁面,即可確定此區塊是否儲存安全拭除目標命名空間的資料。
參考回到圖5之步驟S114的說明,GC單元24b自由地選擇自由區塊的任何一個。GC單元24b對選擇到的自由區塊進行區塊拭除。GC單元24b將區塊拭除後的自由區塊分配作為複製目的地區塊54。
GC單元24b將除了安全拭除目標資料以外之資料中的有效資料,亦即,非安全拭除目標命名空間的有效資料,從複製來源區塊52複製到複製目的地區塊54。GC單元24b更新L2P表37以使非安全拭除目標命名空間之有效資料的各LBA對映至各複製目的地實體位址。
當非安全拭除目標命名空間的有效資料被複製時,複製來源區塊52之非安全拭除目標命名空間的有效資料變成無效資料。因為安全拭除目標命名空間的所有LBA在複製操作之前被取消對映,所以複製來源區塊52的所有資料在複製操作之後為無效資料。因此,當儲存在複製來源區塊52中之非安全拭除目標命名空間的所有有效資料被複製到複製目的地區塊時,複製來源區塊52變成自由區塊。因此,當所有複製來源區塊之非安全拭除目標命名空間的所有有效資料被複製到少數幾個複製目的地區塊時,安全拭除目標資料並不存在於自由區塊以外。換言之,安全拭除目標命名空間的無效資料僅存在於少數幾個自由區塊中。
GC單元24b確定是否滿足垃圾回收操作的結束條件(步驟S122)。當非安全拭除目標命名空間的所有有效資料完全從安全拭除目標命名空間的資料和非安全拭除目標命名空間的有效資料共同存在於其中之區塊被複製時,安全拭除目標資料(安全拭除目標命名空間的無效資料)從作用區塊中消失。亦即,安全拭除目標命名空間的無效資料僅存在於自由區塊中。因此,結束條件可以是儲存安全拭除目標命名空間之無效資料的區塊不再存在自作用區塊群組。
GC單元24b繼續執行GC操作直到儲存安全拭除目標命名空間之無效資料的區塊從作用區塊群組中消失為止(步驟S114和步驟S122中的「否」)。
當滿足垃圾回收操作的結束條件(步驟S122中的「是」)時,GC單元24b結束GC操作。此時,儲存安全拭除目標命名空間的無效資料不可能存在於自由區塊以外。
安全拭除單元24c對安全拭除目標命名空間的無效資料被儲存於其中的各自由區塊進行至少區塊拭除(步驟S124)。在步驟S114中,被重新使用作為複製目的地區塊的複製來源區塊已經藉由垃圾回收操作而被區塊拭除。因此,藉由將在步驟S114中所進行之針對各複製來源區塊的區塊拭除操作和步驟S124的區塊拭除操作相結合,安全拭除目標命名空間的所有資料藉由區塊拭除而被安全地拭除。
在步驟S124中,安全拭除單元24c可以對其中儲存有安全拭除目標命名空間之無效資料的每一個自由區塊進行區塊拭除,而且進一步地,可以將特定資料樣式寫至這些自由區塊的每一個。結果是,各自由區塊中所儲存之安全拭除目標命名空間的無效資料係覆寫有特定資料樣式。儲存在被重新使用作為複製目的地區塊之複製來源區塊中之安全拭除目標命名空間的無效資料係藉由步驟S114中之垃圾回收操作而已用另一命名空間的有效資料來予以覆寫。因此,藉由結合步驟S114中的覆寫和步驟S124中的覆寫,安全拭除目標命名空間的所有資料藉由覆寫而被安全地拭除。
安全拭除單元24c可以對所有的自由區塊進行區塊拭除。因此,至少對其中儲存有安全拭除目標命名空間之無效資料的每一個自由區塊進行區塊拭除之步驟S124的處理可以被輕易地實施。
或者,為了減少對其進行區塊拭除之區塊的數量,安全拭除單元24c可以執行用以識別其中儲存有安全拭除目標命名空間之無效資料的一或多個自由區塊的處理,以僅對該一或多個所識別出的自由區塊進行區塊拭除。
在前者及後者兩者中,其中儲存有安全拭除目標命名空間之無效資料的一或多個自由區塊至少是實體安全拭除操作的目標。
在後者情況中,而且僅當儲存安全拭除目標命名空間之無效資料的作用區塊為步驟S114中的GC目標區塊時,安全拭除單元24c可以將存在於步驟S124開始時的自由區塊分類成藉由步驟S114之GC操作所產生的第I群組自由區塊以及第II群組其他的自由區塊。安全拭除單元24c可以輕易地將屬於第I群組的每一個自由區塊識別為其中儲存有安全拭除目標命名空間之無效資料的自由區塊,而不需要檢查每一個自由區塊的內容。安全拭除單元24c可以藉由檢查每一個自由區塊的內容來確定屬於第II群組的每一個自由區塊是否為其中儲存有安全拭除目標命名空間之無效資料的自由區塊。
當完成步驟S124的處理時,拭除控制器24藉由將指示第一特定命令之完成的回應發送給主機2而通知主機2第一特定命令的完成(步驟S126)。
接著,當接收到請求特定命名空間之資料的安全拭除之第一特定命令時I/O命令的處理將被說明。I/O命令的可能範例包含寫命令、讀命令、和取消對映命令。
首先,將說明當第一特定命令(特定的安全拭除命令)被接收到時,已經被接收到但尚未完成之I/O命令的處理。
藉由第一特定命令的處理,安全拭除目標命名空間的資料被安全地拭除。因此,原則上,控制器4應該中止(abort)針對該安全拭除目標命名空間之任何未完成的寫命令或者針對該安全拭除目標命名空間之任何未完成的取消對映命令。
或者,控制器4可以等候未完成之寫命令或取消對映命令的處理被完成,而後可以在這些命令的處理被完成之後開始執行第一特定命令。特別是,有些範例,控制器4可以僅在這些命令的處理已經被完成之後才開始執行第一特定命令,而不需中止這些命令,如果這些命令的處理接近被完成等等的話。
圖7為例舉針對在接收到第一特定命令之前被接收到且未完成之I/O命令的處理程序的流程圖。多個I/O命令可被接收於第一特定命令被接收到之前。在此等情況下,可以針對所接收到之I/O命令的每一個而重複該等處理程序。
控制器4接收來自主機2之請求特定命名空間的資料之安全拭除的第一特定命令(步驟S702)。控制器4確定是否有針對此特定命名空間(安全拭除目標命名空間)之正在被執行的I/O命令,或者針對此特定命名空間而被接收到且尚未開始被執行的I/O命令(在下文中,這些I/O命令也被稱為未完成的命令) (步驟S704)。
當確定有未完成的命令(步驟S704中的「是」)時,控制器4確定是否該未完成的命令為寫命令或取消對映命令(步驟S706)。
當確定該未完成的命令為寫命令或取消對映命令(步驟S706中的「是」)時,控制器4確定該未完成之寫命令或取消對映命令的處理是否快要被完成(步驟S708)。
當確定該未完成之寫命令或取消對映命令的處理並非快要被完成(步驟S708中的「否」)時,控制器4中止該未完成的寫命令或取消對映命令(步驟S712)。當從主機2所接收到的命令在步驟S712中不被允許按照任何順序(亂序)被執行時,例如,當寫命令被中止時,控制器4在接收到此寫命令之後中止從主機2所接收到之所有後續的I/O命令。
在中止該未完成的命令之後,控制器4開始第一特定命令的執行(步驟S714)。
當確定該未完成之寫命令或取消對映命令的處理快要被完成(步驟S708中的「是」)時,控制器4可以不中止該未完成的寫命令或取消對映命令,而且可以等候該未完成之寫命令或取消對映命令之處理的完成(步驟S710)。然後,回應該未完成之寫命令或取消對映命令之處理的完成(步驟S710中的「是」),控制器4開始該第一特定命令的執行(步驟S714)。
當確定針對安全拭除目標命名空間之未完成的命令既不是寫命令也不是取消對映命令時,亦即,當有針對安全拭除目標命名空間的讀命令(步驟S706中的「否」)時,控制器4並不中止該未完成的讀命令,而且等候該未完成之讀命令之處理的完成(步驟S710)。然後,回應該未完成之讀命令之處理的完成,控制器4開始該第一特定命令的執行(步驟S714)。
接著,在第一特定命令的執行期間所接收到之I/O命令的處理將參照圖8來做說明。圖8為例舉針對在第一特定命令的執行期間所接收到之I/O命令的處理程序的流程圖。多個I/O命令可被接收於第一特定命令的執行期間。在此等情況下,可以針對所接收到之I/O命令的每一個而重複該等處理程序。
控制器4接收請求特定命名空間的資料之安全拭除的第一特定命令(步驟S802),並且開始第一特定命令的執行(步驟S804)。當在第一特定命令的執行期間接收到I/O命令(步驟S806)時,控制器4確定所接收到之I/O命令是否為針對此特定命名空間(安全拭除目標命名空間)的I/O命令(步驟S808)。
當確定在第一特定命令的執行期間所接收到之I/O命令為針對該安全拭除目標命名空間的I/O命令(步驟S808中的「是」)時,控制器4中止該接收到的I/O命令(步驟S810)。或者,在步驟S810中,控制器4可以暫停(suspend)該接收到的I/O命令直到第一特定命令的處理被完成為止(亦即,直到第一特定命令的結束被通知給主機2為止),而且在第一特定命令的處理被完成之後可以接著執行該接收到的I/O命令。
當確定在第一特定命令的執行期間所接收到之I/O命令為針對該安全拭除目標命名空間以外之命名空間的I/O命令(步驟S808中的「否」)時,控制器4可以選擇性地使用下面的第一方法或第二方法。因此,控制器4確定該第一方法或第二方法是否為預選的(步驟S812)。當確定該第一方法被預選時,控制器4執行步驟S814的處理。當確定該第二方法被預選時,控制器4執行步驟S816的處理。
第一方法(步驟S814):當針對其他命名空間的I/O命令為寫命令時,控制器4暫停此寫命令的處理直到至少GC操作被完成為止,而後在GC操作已被完成之後執行該寫命令。
當針對其他命名空間的I/O命令為讀命令時,控制器4照常執行此讀命令。然而,當從主機2所接收到的命令不被允許按照任何順序(亂序)被執行時,控制器4按照和這些命令被接收到之順序相同的順序來執行針對其他命名空間的讀命令。然後,當針對其他命名空間的寫命令在針對其他命名空間的讀命令之後被接收到時,控制器4暫停此接收到之寫命令以及在此接收到之寫命令後之針對其他命名空間的所有I/O命令的處理,直到至少GC操作被完成為止。在GC操作被完成之後,控制器4按照和這些命令被接收到之順序相同的順序來執行此接收到之寫命令以及在此接收到之寫命令後之針對其他命名空間的所有I/O命令。
在第一方法的說明中,控制器4可以或可以不以和寫命令相同的方式處理取消對映命令。當控制器4不以和寫命令相同的方式處理取消對映命令時,控制器4照常以和讀命令相同的方式處理取消對映命令。
第二方法(步驟S816):當針對其他命名空間的I/O命令為寫命令、取消對映命令、或讀命令時,控制器4照常執行此I/O命令。此第二方法具有針對其他命名空間之I/O命令的處理並未被顯著地延遲,但是處理第一特定命令所需的時間增加了處理此I/O命令之量的效果。此外,有藉由寫與針對其他命名空間之寫命令相關聯的寫資料(更新後的資料)所產生的無效資料也可能變成GC操作之目標的可能性。在此情況下,處理第一特定命令所需的時間被進一步增加。
接著,針對特定命名空間之資料的安全拭除操作的範例將參照圖9A、9B、10、11A及11B來做說明。
圖9A為例舉在安全拭除操作的開始之前各作用區塊的內容之範例的圖形。圖9A例舉包含區塊BLK0、區塊BLK1、和區塊BLK2之三個區塊為其中儲存有有效資料之作用區塊的情況。
區塊BLK0為在寫當中被分配作為寫目的地區塊的作用區塊。在區塊BLK0中,空白處所例舉之未被寫的儲存區域保持不變。區塊BLK1和區塊BLK2各自為其中資料被寫滿到區塊的最後之完全被寫的作用區塊。
有一種可能性,即當SSD 3中有包含命名空間A、命名空間B、和命名空間C的三個命名空間時,命名空間A的資料、命名空間B的資料、和命名空間C的資料可以共同存在於區塊BLK0、區塊BLK1、和區塊BLK2的每一個之中。此外,有各命名空間的有效資料和無效資料可以共同存在於區塊BLK0、區塊BLK1、和區塊BLK2的每一個之中的可能性。例如,無效資料為藉由寫與此無效資料之LBA相關聯之新的寫資料(更新後的資料),或者藉由來自主機2的取消對映命令而使其無效的資料。
圖9B為例舉在安全拭除操作的開始之前各自由區塊的內容之範例的圖形。圖9B例舉包含區塊BLK3、區塊BLK4、區塊BLK5、和區塊BLK6之四個區塊為其中未儲存有有效資料之自由區塊的情況。
在圖9B中,在自由區塊BLK3中,命名空間A的無效資料和命名空間C的無效資料被儲存,但是命名空間B的無效資料未被儲存。命名空間A的無效資料、命名空間B的無效資料、和命名空間C的無效資料被儲存在自由區塊BLK4到BLK6的每一個之中。
假設有一種情況,其中,在圖9A所例舉之三個作用區塊和圖9B所例舉之四個自由區塊的存在下,SSD 3從主機2接收到請求命名空間B的資料之安全拭除的第一特定命令。
首先,取消對映單元24a執行使分別對應於屬於命名空間B之所有LBA的資料無效之取消對映操作。
圖10為例舉在取消對映操作被執行之後各作用區塊的內容之範例的圖形。在圖10中,粗體字母指示命名空間B由於此取消對映而新近被做成無效資料的資料。
在取消對映操作的執行之前,如圖9A所例舉的,區塊BLK0儲存命名空間B的一個無效資料和命名空間B的兩個有效資料。如圖10所例舉的,由於此取消對映操作,區塊BLK0之命名空間B的兩個有效資料皆變成無效資料。
在取消對映操作的執行之前,如圖9A所例舉的,區塊BLK1儲存命名空間B的兩個無效資料和命名空間B的四個有效資料。如圖10所例舉的,由於此取消對映操作,區塊BLK1之命名空間B的四個有效資料皆變成無效資料。
在取消對映操作的執行之前,如圖9A所例舉的,區塊BLK2儲存命名空間B的三個無效資料和命名空間B的四個有效資料。如圖10所例舉的,由於此取消對映操作,區塊BLK2之命名空間B的四個有效資料皆變成無效資料。
在取消對映操作的執行之後,GC單元24b將儲存命名空間B之無效資料所有的作用區塊選取作為GC目標區塊,亦即,複製來源區塊,並且執行GC操作。
在圖10中,作為作用區塊之區塊BLK0、區塊BLK1、和區塊BLK2的每一個皆儲存命名空間B的無效資料。因此,包含區塊BLK0、區塊BLK1、和區塊BLK2的所有這三個作用區塊皆被選取作為複製來源區塊。
圖11A為例舉在GC操作被執行之後各作用區塊的內容之範例的圖形。在圖11A中,個別實體儲存位置中的符號(A)、(B)、和(C)指示對應於先前儲存在實體儲存位置中之資料的命名空間分別為命名空間A、命名空間B、和命名空間C。
圖11A例舉其中區塊BLK6和區塊BLK5藉由GC操作而被使用作為複製目的地區塊並且藉由有效資料的複製而變成作用區塊的情況,而區塊BLK6和區塊BLK5在GC操作之前為自由區塊。
區塊BLK6藉由將有效資料從區塊BLK1和區塊BLK2的每一個複製到區塊BLK6而變成作用區塊。由於此複製,儲存在區塊BLK1中之命名空間A和命名空間C每一個的所有無效資料以及儲存在區塊BLK2中之命名空間A和命名空間C每一個的所有有效資料皆被儲存在區塊BLK6中。
區塊BLK5藉由將有效資料從區塊BLK0複製到區塊BLK5而變成作用區塊。藉由此複製,儲存在區塊BLK0中之命名空間A和命名空間C每一個的所有有效資料皆被儲存在區塊BLK5中。
在下文中,將區塊BLK6和區塊BLK5的每一個的狀態從圖9B所例舉的自由區塊移到圖11A所例舉的作用區塊的GC操作將被說明。GC單元24b對區塊BLK6進行區塊拭除。接著,GC單元24b將命名空間B以外之命名空間的有效資料從區塊BLK1複製到區塊BLK6。此時,GC單元24b複製命名空間B以外之命名空間的有效資料,以便被連續地排列在區塊BLK6中的複數個實體儲存位置。
此外,GC單元24b將命名空間B以外之命名空間的有效資料從區塊BLK2複製到區塊BLK6。此時,GC單元24b複製命名空間B以外之命名空間的有效資料,以便被連續地排列在區塊BLK6中複數個後續的實體儲存位置。
因此,區塊BLK6係填滿有儲存在區塊BLK1中之命名空間B以外之命名空間的有效資料和儲存在區塊BLK2中之命名空間B以外之命名空間的有效資料。結果是,儲存在區塊BLK6中之命名空間B的無效資料被覆寫有命名空間B以外之命名空間的有效資料,而區塊BLK6在GC操作之前為自由區塊。
在圖11A中,粗體字母指示其中之命名空間B的資料被拭除的實體儲存位置。藉由注視粗體字母來參照圖11A,將會了解到,例如,以有命名空間B以外之命名空間的有效資料來覆寫儲存在區塊BLK6中之命名空間B的無效資料,而區塊BLK6在GC操作之前為自由區塊。
類似地,GC單元24b對區塊BLK5進行區塊拭除。接著,GC單元24b將命名空間B以外之命名空間的有效資料從區塊BLK0複製到區塊BLK5。此時,GC單元24b複製命名空間B以外之命名空間的有效資料,以便被連續地排列在區塊BLK5中的複數個實體儲存位置。在此範例中,資料並未被寫到區塊BLK5中之資料的最後,而是剩下的區塊BLK5可以用諸如全為零的虛擬資料(dummy data)來予以填補。
藉由注視粗體字母而參照回到圖11A,將會了解到,儲存在區塊BLK5中之命名空間B的無效資料不是被命名空間B以外之命名空間的有效資料所覆寫,就是被區塊拭除。
藉由上面的GC操作,儲存命名空間B之資料(無效資料)的區塊BLK0到BLK2變成自由區塊。此外,包含區塊BLK5及區塊BLK6的兩個區塊,其新近被做成作用區塊,僅儲存命名空間B以外之命名空間的有效資料,而且不儲存命名空間B的資料。因此,安全拭除目標命名空間的資料和非安全拭除目標命名空間的有效資料共同存在於其中的區塊並不存在於作用區塊群組中。
圖11B為例舉在GC操作被執行後各自由區塊的內容之範例的圖形。在GC操作被執行之後,由自由區塊列表35所管理的自由區塊包含藉由GC操作而被做成自由區塊的三個區塊(BLK0、BLK1、和BLK2)以及在GC操作的開始之前為自由區塊的兩個區塊(BLK3和BLK4)。
自由區塊BLK0、自由區塊BLK1、和自由區塊BLK2的每一個為藉由GC操作而變成自由區塊並且不被使用作為用於GC操作之複製目的地區塊的區塊。自由區塊BLK0、自由區塊BLK1、和自由區塊BLK2儲存安全拭除目標命名空間B的無效資料,但是不儲存安全拭除目標命名空間A和C的有效資料。因此,有可能對自由區塊BLK0、自由區塊BLK1、和自由區塊BLK2的每一個進行區塊拭除。
藉由對自由區塊BLK0、自由區塊BLK1、和自由區塊BLK2的每一個進行區塊拭除,安全拭除目標命名空間B的資料可已從自由區塊BLK0、自由區塊BLK1、和自由區塊BLK2的每一個中被安全地拭除。
在GC操作中,自由區塊BLK0、自由區塊BLK1、和自由區塊BLK2之中的任何區塊可以被重新使用作為用於GC操作之複製目的地區塊。被重新使用作為複製目的地區塊的區塊首先被區塊拭除。然後,儲存在被重新使用作為複製目的地區塊的區塊中之安全拭除目標命名空間B的資料被非安全拭除目標命名空間之從複製來源區塊所複製的有效資料所覆寫。照這樣,儲存在被重新使用作為複製目的地區塊的區塊中之安全拭除目標命名空間B的資料藉由在GC操作期間所進行之覆寫而被安全地拭除。
自由區塊BLK3為在GC操作的開始之前為自由區塊而且不被使用作為用於GC操作之複製目的地區塊的區塊。
自由區塊BLK3不儲存安全拭除目標命名空間B的資料。因此,不需要對自由區塊BLK3進行區塊拭除。
自由區塊BLK4為在GC操作的開始之前為自由區塊而且不被使用作為用於GC操作之複製目的地區塊的區塊。自由區塊BLK4儲存安全拭除目標命名空間B的無效資料。因此,對自由區塊BLK4進行區塊拭除。結果是,安全拭除目標命名空間B的資料從自由區塊BLK4中被安全地拭除。
如上所述,依據第一實施例,回應從主機2接收到請求特定命名空間之資料的安全拭除之第一特定命令,執行使安全拭除目標命名空間之資料無效的取消對映操作,和將安全拭除目標命名空間以外之命名空間的資料中之有效資料從其中儲存有安全拭除目標命名空間之資料的一或多個區塊(複製來源區塊)複製到一或多個複製目的地區塊的GC操作。
因此,由於其中儲存有安全拭除目標命名空間之資料的一或多個區塊變成自由區塊,所以安全拭除目標命名空間的資料並不存在於自由區塊以外。
當複製來源區塊變成自由區塊時,此自由區塊可以被重新使用作為複製目的地區塊。在此情況下,儲存在自由區塊中之安全拭除目標命名空間的資料能夠藉由區塊拭除而被安全地拭除,然後進一步被安全拭除目標命名空間以外之命名空間的資料中之有效資料所覆寫。
如上所述,在第一實施例中,所指定之特定命名空間之資料(有效資料和無效資料)的一部分可以藉由區塊拭除以及在GC操作期間的覆寫而被安全地拭除。此外,在GC操作之後儲存在一或多個自由區塊中之特定命名空間的資料可以藉由至少區塊拭除而被安全地拭除。結果是,所指定之特定命名空間的所有資料(有效和無效資料)皆被安全地拭除。
接著,依據第一實施例之安全拭除操作的優點將和一些比較範例相比較來做說明。
首先,依據一些比較範例之SSD的配置與依據第一實施例之SSD 3的配置之間的差異將被說明。
<比較範例#1>
在依據比較範例#1的SSD中,複數個耐受力(endurance)群組被管理而使得複數個命名空間屬於彼此不同的複數個耐受力群組。耐受力群組為管理NAND型快閃記憶體之實體資源的單元。NAND型快閃記憶體的所有實體資源被分成複數個耐受力群組,使得NAND型快閃記憶體中的每一個區塊僅被一個耐受力群組使用。當對特定命名空間的資料進行安全拭除時,對應於特定命名空間之耐受力群組的每一個區塊變成安全拭除目標。
<比較範例#2>
在依據比較範例#2的SSD中,NAND型快閃記憶體的所有實體資源僅屬於一個耐受力群組,但是複數個命名空間與複數個區塊之間的對應以一對一的基礎來予以管理,使得不同命名空間的資料將被寫到不同的區塊。當對特定命名空間的資料進行安全拭除時,對映於特定命名空間(一對一)的每一個區塊變成安全拭除目標。
<第一實施例>
在依據第一實施例的SSD 3中,複數個命名空間被管理而讓NAND型快閃記憶體的所有實體資源僅屬於一個耐受力群組,且同時讓不同命名空間的資料能夠共同存在於相同的區塊中。這是因為第一實施例的安全拭除操作可以對由主機2所指定之特定命名空間的資料進行實體安全拭除操作,甚至是在不同命名空間的資料共同存在於相同的區塊中的環境中。
(1) 用戶資料拭除的速度
在依據第一實施例的SSD 3中,需要在區塊拭除之前進行GC操作。因此,用戶資料之安全拭除操作的速度係相對低。然而,針對特定命名空間之資料的安全拭除為保持其中儲存有OS之備份資料(backup data)的命名空間的資料以及拭除命名空間之包含用戶資料的資料之情況,例如,當PC被移交給另一人時。由於使用的頻率小,所以安全拭除的慢速係可接受的。
在比較範例#1和比較範例#2中,用以對用戶資料進行安全拭除之操作的速度取決於其實作,但是操作可以用相對高的速度來進行。
(2) 在寫當中之區塊的數量
在此,假設一種情況,使用一種配置,其中用戶資料從主機被寫至NAND型快閃記憶體之單層單元(single level cell (SLC))儲存區域,而且例如,當SSD係閒置(idle)時,SLC儲存區域中的用戶資料被寫至三層單元(triple level cell (TLC))儲存區域或四層單元(quad level cell (QLC))儲存區域。
在依據第一實施例的SSD 3中,在寫當中之所需區塊的數量為2。在寫當中之兩個區塊的其中一個是用作為用於SLC儲存區域之寫目的地區塊的SLC區塊。在寫當中的另一個區塊是用作為用於TLC/QLC儲存區域之寫目的地區塊的TLC/QLC區塊。
在比較範例#1和比較範例#2中,所需之SLC區塊的數量為命名空間的數量。所需之TLC/QLC區塊的數量為命名空間的數量。
(3) 空間預留(over-provisioning)
在依據第一實施例的SSD 3中和在比較範例#2中,空間預留區域可以為複數個命名空間所共有。
在比較範例#1中,需要個別為每一個命名空間準備空間預留區域。
(4) SLC儲存區域
在依據第一實施例的SSD 3中,由於SLC儲存區域被共享於命名空間之間,所以某命名空間有可能暫時地使用SLC儲存區域的整個容量。
在比較範例#1和比較範例#2中,需要個別為每一個命名空間準備獨立的SLC儲存區域。不管命名空間的尺寸大小,當單一個SLC儲存區域所需的容量係固定時,可以分配給TLC/QLC儲存區域之區塊的數量減少。因此,由於非揮發性記憶體的儲存容量可能未被有效率地使用,所以由TLC/QLC儲存區域之儲存容量和所有SLC儲存區域之儲存容量的和所代表之驅動能力(總容量)與命名空間的數量成比例地減少。
(5) 區塊尺寸與命名空間尺寸之間的對齊
通常,單一個區塊的尺寸為幾十百萬位元組(MB),而每一個命名空間的尺寸為區段(sector)的整數倍。這可能導致區塊尺寸與命名空間尺寸之間的不一致。
在依據第一實施例的SSD 3中,由於複數個區塊可以被複數個命名空間所共有,甚至是當區塊尺寸與命名空間尺寸之間發生不一致時,所以SSD 3不容易受到該不一致所影響而且其容量效率難以被減小。
在比較範例#1和比較範例#2中,當區塊尺寸與命名空間尺寸之間發生不一致時,SSD被不一致所影響而且容量效率減小。
(6) 藉由創建多個命名空間而使驅動能力減小
基於理由(2)到(5),當複數個命名空間被創建於單一個SSD之中時,驅動能力(例如,可用、效應、或可供使用的儲存容量)可以被減小。
在依據第一實施例的SSD 3中,因為僅有一個耐受力群組,所以有可能有效率地創建複數個命名空間。因此,由於複數個命名空間的創建而沒有驅動能力的減小。
在比較範例#1中,因為每一個命名空間需要獨立的耐受力群組,所以由於複數個命名空間之創建而導致驅動能力的減小大。
在比較範例#2中,由於複數個命名空間之創建而對驅動能力的減小之影響的程度在第一實施例與比較範例#1之間的中間。
(第二實施例)
接著,將說明第二實施例。依據第二實施例之SSD的配置和例舉於圖1中依據第一實施例之SSD 3的配置實質上相同。第二實施例在對特定命名空間的資料進行實體安全拭除操作方面類似於第一實施例,但是在與其取消對映操作有關的處理方面不同於第一實施例。在第一實施例中,控制器4在進行GC操作之前先進行取消對映操作,而在第二實施例中,控制器4在GC操作的執行期間進行取消對映操作。
圖12為例舉依據第二實施例在記憶體系統中所執行之實體安全拭除操作之程序的流程圖。和參照圖5所說明之依據第一實施例在記憶體系統中所執行之實體安全拭除操作程序相同之程序的說明將被省略。
當接收到的命令是第一特定命令(步驟S104中的「是」)時,GC單元24b執行GC操作,而且取消對映單元24a在GC操作的執行期間進行取消對映操作(步驟S132)。
在步驟S132中,GC單元24b將至少儲存有安全拭除目標命名空間之資料(亦即,安全拭除目標資料)的作用區塊選取作為GC目標區塊(亦即,複製來源區塊),而不管安全拭除目標命名空間的資料為有效資料或無效資料。或者,當僅施行GC操作時,GC單元24b可以將儲存無效資料之所有的作用區塊選取作為複製來源區塊,而不管安全拭除目標命名空間的資料是否為無效資料。
當複製來源區塊中所儲存的有效資料為安全拭除目標資料時,取消對映單元24a進行使複製來源區塊中所儲存之有效資料無效的取消對映操作。亦即,取消對映單元24a進行使複製來源區塊中所儲存的有效資料之中為安全拭除目標資料的有效資料無效的取消對映操作。因此,使為複製來源區塊中所儲存之安全拭除目標資料部分的有效資料無效。當複製來源區塊中所儲存之非安全拭除目標命名空間的有效資料被複製到複製目的地區塊而且複製來源區塊中所儲存之安全拭除目標命名空間的有效資料也被取消對映時,複製來源區塊變成自由區塊。結果是,安全拭除目標資料並不存在於自由區塊以外。換言之,安全拭除目標命名空間的資料(無效資料)僅存在於某些自由區塊中。
在執行GC操作和取消對映操作(步驟S132)之後,如同在第一實施例中,進行GC操作之結束條件的確定(步驟S122)、區塊拭除操作的執行(步驟S124)、和將命令之完成通知給主機2(步驟S126)。
由於當請求特定命名空間中之資料的安全拭除之第一特定命令被執行時I/O命令的處理和第一實施例中者相同,所以將省略其說明。
在第二實施例中,也可以獲得到和第一實施例相同的功效。
(第三實施例)
接著,將說明第三實施例。依據第三實施例之SSD的配置和例舉於圖1中依據第一實施例之SSD 3的配置相同。在第一及第二實施例中,命名空間識別符被使用作為指示安全拭除目標邏輯區域的邏輯區域識別符,但是在第三實施例中,識別安全拭除目標區段的邏輯位址和來自該邏輯位址之區段的數量被使用作為指示安全拭除目標邏輯區域的邏輯區域識別符。例如,LBA被使用作為邏輯位址。當記憶體系統具有複數個命名空間時,指示安全拭除目標邏輯區域的邏輯區域識別符也包含指示安全拭除目標命名空間的命名空間識別符。
在第三實施例中,安全拭除目標資料為對應於一或多個特定LBA的資料,亦即,現在或先前被儲存在由該一或多個特定LBA所識別之一或多個安全拭除目標區段中的資料。
第三實施例中所使用的第二特定命令為請求進行由該一或多個特定LBA所識別之資料,明確地說,儲存在由該一或多個特定LBA所識別之一或多個安全拭除目標區段中的資料之安全拭除的特定安全拭除命令。第二特定命令可包含指定一或多個特定LBA的參數。該一或多個特定LBA可以由LBA範圍來予以表示。
當主機2將複數個LBA範圍設定為安全拭除目標時,主機2可以首先將各自指定一LBA範圍的複數個命令送至SSD 3,而後可以將請求此等一或多個先前所指定之LBA範圍的安全拭除之第二特定命令送至SSD 3。該第二特定命令也可包含指定複數個LBA範圍的複數個參數。藉由照這樣指定複數個LBA範圍來請求安全拭除,GC操作能夠僅被進行一次。因此,進行區塊拭除之所複製資料的量和次數相較於分別為每一個LBA範圍要求安全拭除的情況可以被減少,而且記憶格損耗(wear)可以被減少。
此外,當主機2將特定命名空間的一或多個LBA或一或多個LBA範圍設定為安全拭除目標時,主機2可以指定識別特定命名空間和一或多個特定LBA或一或多個特定LBA範圍的命名空間識別符。
圖13A為例舉依據第三實施例在記憶體系統中所執行之實體安全拭除操作之程序的流程圖。
當控制器4接收來自主機2的命令(步驟S202)時,CPU 12確定接收到的命令是否為第二特定命令(步驟S204)。第二特定命令請求藉由實體安全拭除方法來進行一或多個特定LBA之資料的安全拭除。
當確定接收到的命令不是第二特定命令(步驟S204中的「否」)時,CPU 12依據接收到的命令執行處理(步驟S206)。
當確定所接收到的命令是第二特定命令時(步驟S204中的「是」),取消對映單元24a進行取消對映操作(步驟S212)。接著,GC單元24b進行GC操作(步驟S214)。
取消對映操作(步驟S212)和GC操作(步驟S214)的程序依據區段尺寸與群集尺寸之間的關係而不同。圖13B為例舉當區段尺寸等於群集尺寸時取消對映操作和GC操作之程序的流程圖。在此情況下,單一個安全拭除目標區段對應於剛好一個群集。圖13C為例舉當區段尺寸小於群集尺寸時取消對映操作和GC操作之程序的流程圖。在此情況下,至少一個安全拭除目標區段可以再儲存有效資料之群集的一部分中。
如圖13B所例舉的,當區段尺寸等於群集尺寸時,取消對映單元24a進行使分別與由主機2所指定之所有安全拭除目標LBA相關聯的資料無效的取消對映操作(步驟S212A)。取消對映單元24a從L2P表37對應於包含在第二特定命令中所有LBA之入口的每一個刪除實體位址。或者,取消對映單元24a將Null值儲存在這些入口中。由於此取消對映操作,使L2P表37之對應於安全拭除目標LBA的資料無效。結果是,對應於所有安全拭除目標LBA的資料變成無效資料。
GC單元24b將至少儲存安全拭除目標LBA之無效資料的所有作用區塊選取作為GC目標區塊(亦即,複製來源區塊)。或者,當GC操作被施行時,GC單元24b將至少儲存無效資料的所有作用區塊選取作為複製來源區塊,而不管無效資料是否為與安全拭除目標LBA相關聯的無效資料。
在安全拭除目標區塊列表34中,GC單元24b可以節省被選取作為複製來源區塊之每一個作用區塊的區塊識別符。
GC單元24b自由地選取任何一個自由區塊。GC單元24b對選取到的自由區塊進行區塊拭除。GC單元24b將區塊拭除後的自由區塊分配作為複製目的地區塊。
GC單元24b將除了安全拭除目標資料以外之資料中的有效資料,亦即,非安全拭除目標LBA的有效資料,從複製來源區塊複製到複製目的地區塊(步驟S214A)。
GC單元24b更新L2P表37以使所複製之有效資料的每一個LBA對映至每一個複製目的地實體位址。
當區段尺寸小於群集尺寸時取消對映操作和GC操作之程序將參照圖13C來做說明。和參照圖13B所說明之取消對映操作和GC操作的程序相同之程序的說明將被省略。
當區段尺寸小於群集尺寸時,指示群集中之每一個區段的資料為有效或無效的位元圖資料被儲存在例如L2P表37中,如上所述。
取消對映單元24a將包含至少一個安全拭除目標區段的群集選取作為取消對映操作的目標。
當群集中所有的區段都是安全拭除目標時,亦即,當群集中所有的資料都是安全拭除目標(步驟S212B-1中的「是」)時,取消對映單元24a執行使此群集中之資料無效的取消對映操作(步驟S212B-4)。
當群集中所有的區段都不是安全拭除目標時(步驟S212B-1中的「否」)時,取消對映單元24a更新位元圖資料而使得群集中的所有安全拭除目標區段都變成無效(步驟S212B-2)。
取消對映單元24a檢查是否群集中的所有區段都藉由此無效而變成無效(步驟S212B-3)。
當確定群集中的所有區段都變成無效區段(步驟S212B-3中的「是」)時,取消對映單元24a執行使此群集中的資料無效的取消對映操作(步驟S212B-4)。
當確定群集中的所有區段都不是無效區段(步驟S212B-3中的「否」)時,由取消對映單元24a對此群集的處理結束。
取消對映單元24a確定是否針對所有取消對映操作目標群集的取消對映操作皆完成(步驟S212B-5)。
當確定針對所有取消對映操作目標群集的取消對映操作並未完成(步驟S212B-5中的「否」)時,取消對映單元24a為下一個群集進行步驟S212B-1的確定。
當確定針對所有取消對映操作目標群集的取消對映操作都完成(步驟S212B-5中的「是」)時,GC單元24b將包含作用區塊中的有效資料之所有群集(亦即,非安全拭除目標資料)從複製來源區塊複製到複製目的地區塊(步驟S214B-1)。
在步驟S214B-1中,當該群集中有無效的區段時,GC單元24b將該區段中的資料改變到適當值而後將該資料複製到複製目的地區塊。該適當值,例如,為皆零、皆1、隨機資料、或其組合。
GC單元24b更新L2P表37的入口以使複製資料的LBA與先前複製之群集的實體位址相關聯。
參考回到圖13A的說明,在執行GC操作(步驟S214)之後,GC單元24b確定是否滿足GC操作的結束條件(步驟S222),如同在第一實施例中。結束條件可以是儲存有安全拭除目標LBA之無效資料的區塊不再從作用區塊群組中存在。
GC單元24b繼續執行GC操作直到儲存有安全拭除目標LBA之無效資料的區塊從作用區塊群組中消失為止(步驟S214和步驟S222中的「否」)。
當確定滿足垃圾回收操作的結束條件(步驟S222中的「是」)時,GC單元24b結束GC操作。此時,沒有安全拭除目標LBA之無效資料可能存在於自由區塊以外的可能性。
當至少所有儲存無效資料的作用區塊被選取作為GC目標區塊而不管該無效資料是否為安全拭除目標LBA的無效資料時,GC操作的結束條件可以是儲存有無效資料的區塊從作用區塊群組中消失而不管該無效資料是否為安全拭除目標LBA的無效資料。然而,因為此降低了GC操作的效率,所以此結束條件可以被採用於當在所有作用區塊的每一個作用區塊中之無效資料對有效資料的比值為大之時。
在確定GC操作的結束條件(步驟S222)之後,安全拭除單元24c對其中儲存有安全拭除目標LBA之無效資料的每一個自由區塊進行至少區塊拭除操作(步驟S224)。因此,安全拭除目標LBA中的所有無效資料藉由區塊拭除而被安全地拭除。
在步驟S224中,安全拭除單元24c可以對其中儲存有安全拭除目標LBA之無效資料的每一個自由區塊進行區塊拭除,而且進一步,可將特定資料樣式寫到每一個自由區塊,如同在第一實施例中。因此,安全拭除目標LBA的所有無效資料藉由覆寫而被安全地拭除。
安全拭除單元24c可以對所有的自由區塊進行區塊拭除而不管該等自由區塊是否儲存安全拭除目標LBA的無效資料。因此,可以容易地進行對其中儲存有安全拭除目標LBA之無效資料的每一個自由區塊進行至少區塊拭除的處理(步驟S224)。
或者,為了減少對其進行區塊拭除之區塊的數量,安全拭除單元24c可以執行指定其中儲存有安全拭除目標LBA之無效資料的一或多個自由區塊而僅對此等一或多個自由區塊進行區塊拭除的處理。
在前者及後者的兩個處理中,其中儲存有安全拭除目標LBA之無效資料的至少一或多個自由區塊可以是安全拭除目標。
當完成步驟S224的處理時,拭除控制器24藉由將指示第二特定命令之結束的回應傳送給主機2來通知主機2該第二特定命令的結束(步驟S226)。
當接收到請求特定LBA之資料的安全拭除之第二特定命令時I/O命令的處理和第一實施例的處理相同,因而其說明將被省略。
如上所述,依據第三實施例,一或多個特定LBA的資料可以藉由實體安全拭除方法而被安全地拭除。此外,當複製來源區塊包含儲存有效資料而且具有安全拭除目標區段存在於其一部分中的群集時,在控制器4將此群集中的所有資料複製到複製目的地區塊時,控制器4將安全拭除目標區段的資料改變到諸如皆1或皆零的資料樣式。因此,甚至在有安全拭除目標區段和非安全拭除目標有效區段共同存在於其中的群集之時,有可能正確地複製安全拭除目標的資料且同時確保實體安全拭除操作的安全性。
(第四實施例)
接著,將說明第四實施例。依據第四實施例之SSD的配置和例舉於圖1中依據第一實施例之SSD 3的配置相同。第四實施例在對特定LBA的資料進行安全拭除方面和第三實施例相同,但是在與取消對映操作有關的處理方面則和第三實施例不同。在第三實施例中,控制器4在GC操作之前先進行取消對映操作,而在第四實施例中,控制器4在GC操作的執行期間進行取消對映操作。
圖14A為例舉依據第四實施例在記憶體系統中所執行之實體安全拭除操作之程序的流程圖。和參照圖13A所說明之依據第三實施例在記憶體系統中所執行之實體安全拭除操作程序相同的程序將被省略。
當接收到的命令為第二特定命令(步驟S204中的「是」)時,GC單元24b執行GC操作,而且取消對映單元24a在GC操作的執行期間進行取消對映操作(步驟S232)。
類似於第三實施例,GC操作和取消對映操作的程序(步驟S232)依據區段尺寸與群集尺寸之間的關係而不同。
圖14B為例舉當區段尺寸等於群集尺寸時GC操作和取消對映操作之程序的流程圖。在此情況下,一個安全拭除目標區段對應於一個群集。
在步驟S232A中,GC單元24b將儲存至少安全拭除目標LBA之資料和非安全拭除目標LBA之有效資料的作用區塊選取作為GC目標區塊(亦即,複製來源區塊)而不管該安全拭除目標LBA的資料為有效資料或無效資料。或者,當GC操作係容易施行時,GC單元24b將儲存無效資料的所有作用區塊選取作為複製來源區塊而不管該無效資料是否為安全拭除目標LBA的資料。
在步驟S232A中,GC單元24b將非安全拭除目標LBA之有效資料從複製來源區塊複製到複製目的地區塊。當安全拭除目標LBA的有效資料被儲存在複製來源區塊中時,取消對映單元24a進行使儲存在複製來源區塊中的有效資料無效的取消對映操作。因此,使儲存在複製來源區塊中之安全拭除目標LBA的有效資料無效。當儲存在複製來源區塊中之非安全拭除目標LBA的有效資料被複製到複製目的地區塊,而且使儲存在複製來源區塊中之安全拭除目標LBA的有效資料無效之取消對映操作也被進行時,複製來源區塊變成自由區塊。因此,安全拭除目標LBA的資料並不存在於自由區塊以外。換言之,安全拭除目標LBA的資料(無效資料)僅存在於某些自由區塊中。
圖14C為例舉當區段尺寸小於群集尺寸時GC操作和取消對映操作之程序的流程圖。在此情況下,指示群集中之各區段的資料為有效資料或無效資料的位元圖資料可以被儲存在,例如,L2P表37中,如上所述。
取消對映單元24a和GC單元24b將包含儲存有效資料的至少一個區段的群集選取作為取消對映操作和GC操作的目標。
當作為處理目標的群集含有至少一個安全拭除目標區段(步驟S232B-1中的「是」)時,取消對映單元24a更新位元圖資料而使得群集中的所有安全拭除目標區段都變成無效(步驟S232B-2)。
取消對映單元24a檢查是否群集中的所有區段都藉由此無效而變成無效(步驟S232B-3)。
當確定群集中的所有區段都變成無效區段(步驟S232B-3中的「是」)時,取消對映單元24a執行使此群集中的資料無效的取消對映操作(步驟S232B-4)。
在步驟S232B-4之後,或者當確定群集中的所有區段都不是無效區段(亦即,當該群集儲存非安全拭除目標有效資料(步驟S232B-3中的「否」))或者當處理目標群集並不包含安全拭除目標區段(步驟S232B-1中的「否」)時,GC單元24b將群集中的有效資料(亦即,非安全拭除目標資料)從複製來源區塊複製到複製目的地區塊(步驟S232B-5)。此時,GC單元24b可以用適當值來取代群集中之無效區段的資料,如同在第三實施例中。在步驟S232B-5之後,當群集中的所有區段為有效時,GC單元24b將所有區段的資料複製到複製目的地區塊,並且更新L2P表37以將複製來源群集位址更新到所複製之目的地群集位址。
針對包含儲存有效資料之區段的所有群集,GC單元24b確定取消對映操作和GC操作皆已完成(步驟S232B-6)。
當確定針對群集之取消對映操作和GC操作並未被完成(步驟S232B-6中的「否」)時,GC單元24b為下一個群集進行步驟S232B-1的確定。
當確定針對群集之取消對映操作和GC操作皆被完成(步驟S232B-6中的「是」)時,由GC單元24b的處理進行到步驟S222。
最後,所有的有效資料被複製到複製目的地區塊,而且複製來源區塊變成自由區塊。因此,安全拭除目標LBA的資料並不存在於自由區塊以外。換言之,安全拭除目標LBA的資料(無效資料)僅存在於某些自由區塊中。
參考回到圖14A的說明,在GC操作的執行(步驟S232)之後,進行GC操作之結束條件的確定(步驟S222)、區塊拭除操作的執行(步驟S224)、以及將命令之結束通知給主機2(步驟S226),如同在第三實施例中。
因為當第二特定命令被執行時I/O命令的處理和第三實施例的處理相同,所以其說明將被省略。
在第四實施例中,可以獲得到實質上和第三實施例中相同的功效。
(第五實施例)
接著,將說明第五實施例。依據第五實施例之SSD的配置和例舉於圖1中依據第一實施例之SSD 3的配置相同。回應於請求將資料寫到由某一邏輯區域識別符所識別之邏輯區域以及與此邏輯區域識別符相關聯之舊資料的安全拭除的特定寫命令,第五實施例的實體安全拭除操作進行舊資料的實體安全拭除。諸如LBA或鍵-值儲存之鍵的邏輯位址可以被使用作為邏輯區域識別符。亦即,第五實施例的實體安全拭除操作也可以被應用於鍵-值儲存。在鍵-值儲存的情況中,回應於請求寫一對應於某鍵之值(資料)以及與此鍵相關聯之舊值(舊資料)的安全拭除的特定寫命令,第五實施例的實體安全拭除操作進行舊資料的實體安全拭除。
在下文中,將說明其中LBA被使用作為邏輯區域識別符的情況。
特定寫命令可包含,例如,LBA(起始LBA)、寫資料的尺寸(區段的數量)、目標命名空間識別符、和指示主機2之記憶體中儲存有該寫資料之處的位置之資料指標(緩衝區位址),以和正常寫命令相同的方式。
依據第五實施例之SSD的控制器4將與特定寫命令相關聯之寫資料寫至NAND型快閃記憶體5,並且更新L2P表37以使該寫資料被寫至其處之實體位址與該寫資料的LBA相關聯。然後,控制器4自動對與該LBA相關聯之舊資料(無效資料)執行實體安全拭除操作。
有一種與此LBA相關聯之舊資料由於GC操作而可以保持在複數個區塊中的可能性。此外,甚至當指定此LBA之特定寫命令被接收於指定某LBA之正常寫命令被接收多次之後時,有一種與此LBA相關聯之舊資料可以保持在複數個區塊中的可能性。
因此,控制器4進行將儲存與此LBA相關聯之舊資料的所有作用區塊選取作為GC目標區塊(複製來源區塊),以及將儲存在這些GC目標區塊中的有效資料複製到一或多個複製目的地區塊的GC操作。因此,舊資料並不存在於自由區塊以外的任何區塊中。
在執行GC操作之後,控制器4對在由自由區塊列表35所管理的自由區塊之中儲存該舊資料的每一個自由區塊進行至少區塊拭除。這使其可能安全地拭除該舊資料。在此情況下,在執行GC操作之後,控制器4可以對由自由區塊列表35所管理的所有自由區塊進行區塊拭除。或者,為了減少對其進行區塊拭除之區塊的數量,控制器4可以執行識別其中儲存有舊資料之一或多個自由區塊的處理,並且可以僅對這些識別出的一或多個自由區塊進行區塊拭除。
圖15為例舉依據第五實施例在記憶體系統中所執行之實體安全拭除操作之程序的流程圖。
當控制器4接收到來自主機2的命令(步驟S302)時,CPU 12確定接收到的命令是否為特定寫命令(步驟S304)。
當確定接收到的命令不是特定寫命令(步驟S304中的「否」)時,CPU 12依據接收到的命令執行處理(步驟S306)。
當確定所接收到的命令是特定寫命令時(步驟S304中的「是」),寫控制器22將與該特定寫命令相關聯的寫資料(更新資料)寫至NAND型快閃記憶體5,並且更新L2P表37。
GC單元24b執行GC操作(步驟S314)。在步驟S314中,GC單元24b可以將儲存與由該特定寫命令所指定之LBA相關聯的舊資料的所有作用區塊選取作為GC目標區塊,亦即,複製來源區塊。
GC單元24b自由地從自由區塊中選取一個自由區塊。GC單元24b對所選取的自由區塊進行區塊拭除。GC單元24b將區塊拭除後的自由區塊分配作為複製目的地區塊。
GC單元24b將有效資料從複製來源區塊複製到複製目的地區塊。
在執行GC操作(步驟S314)之後,GC單元24b確定是否滿足GC操作的結束條件(步驟S322)。結束條件可以是儲存與由該特定寫命令所指定之LBA相關聯的舊資料之區塊不再從作用區塊群組中存在。
GC單元24b繼續執行GC操作直到儲存該舊資料的區塊從作用區塊群組中消失為止(步驟S322中的「否」、步驟S314)。
當確定滿足垃圾回收操作的結束條件(步驟S322中的「是」)時,GC單元24b結束GC操作。此時,沒有該舊資料可能存在於自由區塊以外的可能性。
在那之後,安全拭除單元24c對其中儲存有至少該舊資料的自由區塊進行至少區塊拭除(步驟S324)。因此,該舊資料藉由區塊拭除而被安全地拭除。
當完成步驟S324的處理時,拭除控制器24藉由將指示特定寫命令之結束的回應傳送給主機2來通知主機2該特定寫命令的結束(步驟S326)。
由於執行該特定寫命令要花費長的時間,所以當接收到特定寫命令時,拭除控制器24可以通知主機2該命令的結束。亦即,拭除控制器24可以立即在步驟S312之前執行步驟S326的處理。當特定寫命令的處理未被正常完成時,控制器4可以藉由使用由命令介面標準(command interface standard)所界定之異常通知機制來通知主機2該特定命令的處理並未被正常地完成,或者可以將異常的發生記錄在由該命令介面標準所界定之日誌(log)中。
(修正)
特定寫命令可以被使用,其請求將資料寫至由某一邏輯區域識別符所識別之邏輯區域以及指示被寫至此邏輯區域之資料稍後將變成安全拭除目標資料。在此情況下,回應於從主機2接收到此特定寫命令,控制器4執行將寫資料寫至此邏輯區域的寫操作,並且將指示此邏輯區域為安全拭除目標區域的日誌資訊儲存在,例如,DRAM 6中。每當從主機2接收到此特定寫命令時,控制器4即執行寫操作以及儲存日誌資訊的操作。當最終從主機2接收到請求安全拭除之特定寫命令,控制器4藉由參考該日誌資訊來識別該安全拭除目標區域。然後,控制器4執行安全地拭除儲存在這些安全拭除目標區域中之資料的實體安全拭除操作。藉由照這樣對複數個安全拭除目標區域共同地執行實體安全拭除操作,可以減少所需數量的GC操作。結果是,NAND型快閃記憶體5之重寫次數的增加對SSD 3壽命的影響可以被減小,而且特定寫命令的處理時間可以被縮減。
如上所述,依據第五實施例,與新寫資料之LBA相關聯的舊資料可以藉由實體安全拭除方法而被安全地拭除。
(第六實施例)
接著,將說明第六實施例。依據第六實施例之SSD的配置和例舉於圖1中依據第一實施例之SSD 3的配置實質上相同。依據第六實施例之實體安全拭除操作可以被視為是第三實施例的修正。在第三實施例中,現在與(或先前與)特定LBA相關聯的有效資料和無效資料被安全地拭除。在第六實施例中,在與由邏輯區域識別符所識別之邏輯區域相關聯所儲存的資料之中僅無效資料被安全地拭除,而且在與由邏輯區域識別符所識別之邏輯區域相關聯所儲存的資料之中有效資料並未被拭除。
接下來,其中LBA被使用作為指示安全拭除目標邏輯區域之邏輯區域識別符的情況將被說明為範例。
在第六實施例中,第三實施例的第二特定命令被改為第二特定命令,其僅將一或多個特定LBA的無效資料視為安全拭除目標資料,而未將該一或多個特定LBA的有效資料視為安全拭除目標資料。
當想要僅安全地拭除過去被寫至一或多個指定之特定LBA的舊資料(無效資料),而未拭除可以藉由讀操作而被讀的目前資料(有效資料)時,第六實施例係有用的。
圖16為例舉依據第六實施例在記憶體系統中所執行之實體安全拭除操作之程序的流程圖。依據第六實施例在記憶體系統中所執行之實體安全拭除操作的程序在某些態樣係類似於參照圖13A所說明者。此等類似態樣的說明將不再重複。
當控制器4接收到來自主機2的命令(步驟S402)時,CPU 12確定接收到的命令是否為第三特定命令(步驟S404)。
當確定接收到的命令不是第三特定命令(步驟S404中的「否」)時,CPU 12依據接收到的命令執行處理(步驟S406)。
當確定所接收到的命令是第三特定命令時(步驟S404中的「是」), GC單元24b執行GC操作(步驟S412)。
GC單元24b將儲存與由該第三特定命令所指定之一或多個特定LBA相關聯的無效資料的至少所有作用區塊選取作為GC目標區塊(亦即,複製來源區塊)。
GC單元24b將有效資料從複製來源區塊複製到複製目的地區塊。
在執行GC操作之後,GC單元24b確定是否滿足GC操作的結束條件(步驟S422)。結束條件可以是儲存與該一或多個所指定之特定LBA相關聯的無效資料的每一個區塊不再從作用區塊群組中存在。
GC單元24b繼續執行GC操作直到儲存與所指定之一或多個特定LBA相關聯的無效資料的每一個區塊從作用區塊群組中去除為止(步驟S412和步驟S422中的「否」)。
當確定滿足垃圾回收操作的結束條件(步驟S422中的「是」)時,GC單元24b結束GC操作。此時,沒有與該一或多個所指定之特定LBA相關聯的無效資料存在於自由區塊以外的可能性。
在確定該GC操作的結束條件(步驟S422)之後,安全拭除單元24c對其中儲存有與所指定之一或多個特定LBA相關聯的無效資料的一或多個自由區塊進行至少區塊拭除(步驟S424)。因此,安全拭除目標區段的無效資料藉由區塊拭除而被安全地拭除。
在執行GC操作之後,安全拭除單元24c可以對由自由區塊列表35所管理的所有自由區塊進行區塊拭除。或者,為了減少對其進行區塊拭除之區塊的數量,安全拭除單元24c可以執行指定其中儲存有與該一或多個所指定之特定LBA相關聯的無效資料的一或多個自由區塊的處理,而且可以僅對此等一或多個所指定的自由區塊進行區塊拭除。
當完成步驟S424的處理時,拭除控制器24藉由將指示第三特定命令之結束的回應傳送給主機2來通知主機2該第三特定命令的結束(步驟S426)。
如上所述,依據第六實施例,與該一或多個所指定之特定LBA相關聯的無效資料可以藉由實體安全拭除方法而被安全地拭除。亦即,在第六實施例中,與該一或多個所指定之特定LBA相關聯的無效資料可以是安全拭除目標,但是也在第六實施例的安全拭除操作中,在所指定之特定命名空間中的資料之中的無效資料可以是安全拭除目標。
在此情況下,回應於從主機2接收到請求僅安全地拭除特定命名空間中的無效資料之第四特定命令,控制器4執行僅對在所指定之特定命名空間中的資料之中的無效資料進行安全拭除的實體安全拭除操作。
在上述實施例中,被破壞或者已經超過指定數量的拭除之區塊的處理之說明被省略。可以使諸如這些破壞或老舊之區塊的此等區塊所含有的資料無效而且將其處理作為有缺陷的區塊。因為這些區塊中所含有的資料為無效資料,所以這些區塊可以被集體視為單一個自由區塊,而且在安全拭除之時也可以是區塊拭除目標。或者,當這些區塊最初被製作成(指定為)有缺陷的區塊時,可以進行區塊拭除。
雖然某些實施例已經被說明,但是這些實施例已經經由僅當作範例而被提出,而且不想要限制本發明的範疇。實際上,本文中所說明的新穎實施例可以用各種其他形式來予以具體化;此外,本文中所說明之實施例形式的各種省略、替換和改變可以被做成而沒有違離本發明的精神。附加的申請專利範圍及其等同範疇意欲涵蓋此等形式及變型,如同會落入本發明的範疇及精神之內。
1:資訊處理系統
2:主機
3:固態硬碟
4:控制器
5:NAND型快閃記憶體
6:直接隨機存取記憶體
10:匯流排
11:主機介面(I/F)
12:中央處理單元
13:NAND介面(I/F)
14:DRAM介面(I/F)
15:直接記憶體存取控制器
16:靜態隨機存取記憶體
17:ECC編碼/解碼單元
21:命名空間管理單元
22:寫控制器
23:讀控制器
24:拭除控制器
24a:取消對映單元
24b:垃圾回收(GC)單元
24c:安全拭除單元
31:寫緩衝區
32:讀緩衝區
33:命令緩衝區
34:安全拭除目標區塊列表
35:自由區塊列表
36:作用區塊列表
37:邏輯到實體位址轉譯表(L2P)表
52:複製來源區塊
54:複製目的地區塊
56:寫目的地區塊
[圖1]係依據第一實施例,包含記憶體系統之資訊處理系統的方塊圖。
[圖2]係依據第一實施例,記憶體系統中所使用之邏輯實體位址轉譯表(L2P表)的圖形。
[圖3]係依據第一實施例,例舉記憶體系統中所管理之複數個命名空間的圖形。
[圖4]係依據第一實施例,描述與記憶體系統中所執行之寫操作及實體安全拭除操作有關的態樣。
[圖5]係依據第一實施例,例舉在記憶體系統中所執行之實體安全拭除操作程序的流程圖。
[圖6A和6B]係例舉寫至各區塊中之資料結構的範例的圖形。
[圖7]係例舉針對當接收到第一特定命令時仍未完成之I/O命令的處理程序的流程圖。
[圖8]係例舉針對在第一特定命令的執行期間所接收到之I/O命令的處理程序的流程圖。
[圖9A]係例舉在安全拭除操作的開始之前各作用區塊的內容之範例的圖形。
[圖9B]係例舉在安全拭除操作的開始之前各自由區塊的內容之範例的圖形。
[圖10]係例舉在取消對映操作已經被執行之後各作用區塊的內容之範例的圖形。
[圖11A]係例舉在垃圾回收操作已經被執行之後各作用區塊的內容之範例的圖形。
[圖11B]係例舉在垃圾回收操作已經被執行之後各自由區塊的內容之範例的圖形。
[圖12]係依據第二實施例,例舉在記憶體系統中所執行之實體安全拭除操作之程序的流程圖。
[圖13A]係依據第三實施例,例舉在記憶體系統中所執行之實體安全拭除操作之程序的流程圖。
[圖13B]係依據第三實施例,例舉在記憶體系統中所執行之實體安全拭除操作中所執行之取消對映操作和垃圾回收操作之程序的流程圖。
[圖13C]係依據第三實施例,例舉在記憶體系統中所執行之實體安全拭除操作中所執行之取消對映操作和垃圾回收操作之另一程序的流程圖。
[圖14A]係依據第四實施例,例舉在記憶體系統中所執行之實體安全拭除操作之程序的流程圖。
[圖14B]係依據第四實施例,例舉在記憶體系統中所執行之實體安全拭除操作中所執行之取消對映操作和垃圾回收操作之程序的流程圖。
[圖14C]係依據第四實施例,例舉在記憶體系統中所執行之實體安全拭除操作中所執行之取消對映操作和垃圾回收操作之另一程序的流程圖。
[圖15]係依據第五實施例,例舉實體安全拭除操作之程序的流程圖。
[圖16]係依據第六實施例,例舉實體安全拭除操作之程序的流程圖。
Claims (20)
- 一種記憶體系統,包括: 包含複數個區塊的非揮發性記憶體,每一個區塊為資料拭除操作的最小單元;以及 控制器,係電連接至該非揮發性記憶體,而且被配置成: 回應來自主機請求安全地拭除儲存在由第一邏輯區域識別符所識別之第一邏輯區域中的安全拭除目標資料的第一命令,執行將除了任何安全拭除目標資料以外的有效資料從其中儲存有該安全拭除目標資料之複數個第一區塊的一或多個第一區塊複製到複數個複製目的地區塊的一或多個複製目的地區塊的複製操作;以及 在該複製操作之後,對該一或多個第一區塊執行該資料拭除操作。
- 如請求項1之記憶體系統,其中,該安全拭除目標資料包含有效資料。
- 如請求項1之記憶體系統,其中,該安全拭除目標資料僅包含無效資料。
- 如請求項1之記憶體系統,其中,該控制器被進一步配置成:回應該第一命令,執行使該安全拭除目標資料無效的取消對映操作。
- 如請求項4之記憶體系統,其中,該控制器被配置成在該複製操作之前先執行該取消對映操作。
- 如請求項4之記憶體系統,其中 該控制器被配置成在該複製操作的執行期間執行該取消對映操作,並且 該控制器被配置成使該一或多個第一區塊中所儲存的該安全拭除目標資料之中的有效資料無效。
- 如請求項1之記憶體系統,其中,該控制器被配置成: 從該等第一區塊中選取已經被指定僅儲存無效資料之自由區塊的第二區塊作為該等複製目的地區塊的其中一個; 對該第二區塊執行該資料拭除操作;以及 執行將除了該安全拭除目標資料中之任何有效資料以外的該有效資料從該等第一區塊中的第三區塊複製到該第二區塊的複製操作。
- 如請求項1之記憶體系統,其中,該控制器被進一步配置成:回應該第一命令,對一自由區塊執行該資料拭除操作,該自由區塊係來自在該複製操作的開始之前沒有儲存任何有效資料之該複數個區塊中的多個自由區塊之中,而且在接收到該第一命令時,當該自由區塊先前儲存有包含在該安全拭除目標資料之中的無效資料時未被使用作為該等複製目的地區塊的其中一個。
- 如請求項1之記憶體系統,其中 該控制器被配置成管理分別由複數個命名空間識別符所識別之複數個命名空間,並且 該第一邏輯區域識別符為識別安全拭除目標命名空間的命名空間識別符。
- 如請求項1之記憶體系統,其中,該第一邏輯區域識別符包含識別一或多個安全拭除目標區段的一或多個邏輯位址。
- 如請求項1之記憶體系統,其中,該第一邏輯區域識別符包含識別一或多個安全拭除目標值的一或多個鍵。
- 如請求項1之記憶體系統,其中 該第一邏輯區域識別符包含識別一或多個安全拭除目標區段的一或多個邏輯位址,並且 該控制器被進一步配置成: 使用邏輯實體位址轉譯表來管理每一個邏輯位址與群集單元中之該非揮發性記憶體的每一個實體位址之間的對映; 將儲存在第一群集中之該等安全拭除目標區段的資料改變成第一資料樣式,該第一群集儲存有效資料,而且該等安全拭除目標區段係在該第一群集中;以及 執行將該第一群集複製到該一或多個複製目的地區塊的複製操作。
- 如請求項1之記憶體系統,其中,該安全拭除目標資料包含先前與該第一邏輯區域識別符相關聯的無效資料。
- 如請求項1之記憶體系統,該第一命令指定該第一邏輯識別符。
- 如請求項1之記憶體系統,其中,該第一邏輯識別符係由來自該主機之除了該第一命令以外之命令所指定的。
- 一種記憶體系統,包括: 包含複數個區塊的非揮發性記憶體,每一個區塊為資料拭除操作的最小單元;以及 控制器,係電連接至該非揮發性記憶體,而且被配置成: 回應來自主機請求將資料寫至由第一邏輯區域識別符所識別之第一邏輯區域和該第一邏輯區域中所儲存之舊資料的安全拭除的第一寫命令,執行將有效資料從其中儲存有該舊資料之複數個第一區塊的一或多個第一區塊複製到複數個複製目的地區塊的一或多個複製目的地區塊的複製操作;以及 在該複製操作之後,對該一或多個第一區塊執行該資料拭除操作。
- 如請求項16之記憶體系統,其中,對該一或多個第一區塊的該資料拭除操作係直接在該複製操作的結束之後。
- 如請求項16之記憶體系統,其中,對該一或多個第一區塊的該資料拭除操作係進行於回應來自該主機請求安全拭除目標資料之安全拭除的第二命令,在複製操作的結束之後。
- 一種控制非揮發性記憶體的控制方法,該非揮發性記憶體包含複數個區塊,每一個區塊為資料拭除操作的最小單元,該控制方法包括: 回應來自主機請求安全地拭除儲存在由第一邏輯區域識別符所識別之第一邏輯區域中的安全拭除目標資料的第一命令,執行將除了任何安全拭除目標資料以外的有效資料從其中儲存有該安全拭除目標資料之複數個第一區塊的一或多個第一區塊複製到複數個複製目的地區塊的一或多個複製目的地區塊的複製操作;以及 在該複製操作之後,對該一或多個第一區塊執行該資料拭除操作。
- 如請求項19之控制方法,其中,該安全拭除目標資料包含先前與該第一邏輯區域識別符相關聯的無效資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020-110307 | 2020-06-26 | ||
JP2020110307A JP7475989B2 (ja) | 2020-06-26 | 2020-06-26 | メモリシステムおよび制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202201232A true TW202201232A (zh) | 2022-01-01 |
TWI793519B TWI793519B (zh) | 2023-02-21 |
Family
ID=78972855
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110104618A TWI793519B (zh) | 2020-06-26 | 2021-02-08 | 記憶體系統及控制方法 |
TW112101740A TWI826236B (zh) | 2020-06-26 | 2021-02-08 | 記憶體系統及控制方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112101740A TWI826236B (zh) | 2020-06-26 | 2021-02-08 | 記憶體系統及控制方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11586377B2 (zh) |
JP (1) | JP7475989B2 (zh) |
CN (1) | CN113849420A (zh) |
TW (2) | TWI793519B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI828108B (zh) * | 2022-02-08 | 2024-01-01 | 旺宏電子股份有限公司 | 應用於記憶體定址的資料路徑架構之記憶體 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129623A (zh) * | 2021-03-25 | 2022-09-30 | 京东方科技集团股份有限公司 | 功耗控制方法、装置、板卡、电子设备及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101681282A (zh) * | 2006-12-06 | 2010-03-24 | 弗森多系统公司(dba弗森-艾奥) | 用于共享的、前端、分布式raid的装置、系统和方法 |
US8762431B2 (en) * | 2012-01-17 | 2014-06-24 | Apple Inc. | System and method for secure erase in copy-on-write file systems |
JP5659178B2 (ja) | 2012-03-16 | 2015-01-28 | 株式会社東芝 | 不揮発性記憶装置及び不揮発性メモリの制御方法 |
KR20160103236A (ko) * | 2015-02-23 | 2016-09-01 | 삼성전자주식회사 | 저장 장치 및 그것의 동작 방법 |
WO2016154079A1 (en) | 2015-03-20 | 2016-09-29 | Burlywood, LLC | Configurable multi-level error correction in a storage controller |
JP6523193B2 (ja) * | 2016-03-08 | 2019-05-29 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
US10403369B2 (en) | 2016-10-17 | 2019-09-03 | SK Hynix Inc. | Memory system with file level secure erase and operating method thereof |
JP2019008730A (ja) | 2017-06-28 | 2019-01-17 | 東芝メモリ株式会社 | メモリシステム |
US10534554B2 (en) * | 2017-10-13 | 2020-01-14 | Silicon Storage Technology, Inc. | Anti-hacking mechanisms for flash memory device |
US20190036704A1 (en) * | 2017-12-27 | 2019-01-31 | Intel Corporation | System and method for verification of a secure erase operation on a storage device |
JP2019191910A (ja) | 2018-04-25 | 2019-10-31 | パナソニックIpマネジメント株式会社 | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びメモリ制御方法 |
TWI678618B (zh) * | 2018-06-22 | 2019-12-01 | 慧榮科技股份有限公司 | 快閃記憶裝置的命名空間操作方法及裝置 |
KR102387960B1 (ko) * | 2018-07-23 | 2022-04-19 | 삼성전자주식회사 | 컨트롤러 및 그것의 동작 방법 |
-
2020
- 2020-06-26 JP JP2020110307A patent/JP7475989B2/ja active Active
-
2021
- 2021-02-08 TW TW110104618A patent/TWI793519B/zh active
- 2021-02-08 TW TW112101740A patent/TWI826236B/zh active
- 2021-02-25 US US17/185,493 patent/US11586377B2/en active Active
- 2021-03-10 CN CN202110259414.6A patent/CN113849420A/zh active Pending
-
2023
- 2023-01-18 US US18/155,919 patent/US20230153012A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI828108B (zh) * | 2022-02-08 | 2024-01-01 | 旺宏電子股份有限公司 | 應用於記憶體定址的資料路徑架構之記憶體 |
Also Published As
Publication number | Publication date |
---|---|
US20230153012A1 (en) | 2023-05-18 |
JP7475989B2 (ja) | 2024-04-30 |
TW202318207A (zh) | 2023-05-01 |
US11586377B2 (en) | 2023-02-21 |
TWI826236B (zh) | 2023-12-11 |
CN113849420A (zh) | 2021-12-28 |
TWI793519B (zh) | 2023-02-21 |
JP2022007376A (ja) | 2022-01-13 |
US20210405907A1 (en) | 2021-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109144888B (zh) | 存储器系统 | |
US11669444B2 (en) | Computing system and method for controlling storage device | |
US10789162B2 (en) | Memory system and method for controlling nonvolatile memory | |
US20200218648A1 (en) | Memory system and method for controlling nonvolatile memory | |
TWI644211B (zh) | Memory system and control method for controlling non-volatile memory | |
TW201915742A (zh) | 記憶體系統及控制非揮發性記憶體之控制方法 | |
US20170168951A1 (en) | Memory system and method for controlling nonvolatile memory | |
US20170220292A1 (en) | Cooperative physical defragmentation by a file system and a storage device | |
EP2631916A1 (en) | Data deletion method and device | |
WO2011010348A1 (ja) | フラッシュメモリ装置 | |
US20140195725A1 (en) | Method and system for data storage | |
US11747979B2 (en) | Electronic device, computer system, and control method | |
US20180150390A1 (en) | Data Storage Device and Operating Method Therefor | |
US20230153012A1 (en) | Memory system and control method | |
US20130275655A1 (en) | Memory management method and memory controller and memory storage device using the same | |
US20190265910A1 (en) | Memory system | |
CN111949206A (zh) | 存储器系统、控制器以及控制器的操作方法 | |
CN112306898A (zh) | 存储设备、其操作方法及包括其的电子设备 | |
US11366751B2 (en) | Storage device and storage control method | |
US11853200B2 (en) | Memory system and controller to invalidate data corresponding to a logical address | |
JP7077151B2 (ja) | メモリシステム | |
JP6666405B2 (ja) | メモリシステムおよび制御方法 |