TW202331530A - 記憶體系統 - Google Patents
記憶體系統 Download PDFInfo
- Publication number
- TW202331530A TW202331530A TW111150687A TW111150687A TW202331530A TW 202331530 A TW202331530 A TW 202331530A TW 111150687 A TW111150687 A TW 111150687A TW 111150687 A TW111150687 A TW 111150687A TW 202331530 A TW202331530 A TW 202331530A
- Authority
- TW
- Taiwan
- Prior art keywords
- mentioned
- block
- data
- write
- host
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 219
- 238000000034 method Methods 0.000 claims abstract description 27
- 230000004044 response Effects 0.000 claims description 50
- 230000009471 action Effects 0.000 claims description 28
- 238000013507 mapping Methods 0.000 abstract description 27
- 238000013519 translation Methods 0.000 abstract description 27
- 239000008186 active pharmaceutical agent Substances 0.000 description 226
- 238000010586 diagram Methods 0.000 description 68
- 238000007726 management method Methods 0.000 description 50
- 230000006870 function Effects 0.000 description 37
- 238000012545 processing Methods 0.000 description 30
- 230000008569 process Effects 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 11
- 239000000872 buffer Substances 0.000 description 10
- 238000012005 ligant binding assay Methods 0.000 description 10
- 238000012546 transfer Methods 0.000 description 9
- 230000002950 deficient Effects 0.000 description 7
- 230000003321 amplification Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 238000003199 nucleic acid amplification method Methods 0.000 description 4
- 238000013403 standard screening design Methods 0.000 description 4
- 102220481310 Adhesion G-protein coupled receptor D1_S11A_mutation Human genes 0.000 description 2
- 102220588696 Keratin, type I cytoskeletal 18_S51A_mutation Human genes 0.000 description 2
- 102220588695 Keratin, type I cytoskeletal 18_S53A_mutation Human genes 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 102220480414 Adhesion G-protein coupled receptor D1_S13A_mutation Human genes 0.000 description 1
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 1
- 102220495430 Glutaredoxin-like protein C5orf63_S12A_mutation Human genes 0.000 description 1
- 101001118566 Homo sapiens 40S ribosomal protein S15a Proteins 0.000 description 1
- 102220588438 Keratin, type I cytoskeletal 18_S15A_mutation Human genes 0.000 description 1
- 102220588436 Keratin, type I cytoskeletal 18_S31A_mutation Human genes 0.000 description 1
- 102220588433 Keratin, type I cytoskeletal 18_S42A_mutation Human genes 0.000 description 1
- 102220621241 Proline-rich membrane anchor 1_S32A_mutation Human genes 0.000 description 1
- 102220585520 T cell receptor gamma constant 1_S20A_mutation Human genes 0.000 description 1
- 102220585558 T cell receptor gamma constant 1_S41A_mutation Human genes 0.000 description 1
- 102220536512 THAP domain-containing protein 1_S52A_mutation Human genes 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 125000000524 functional group Chemical group 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 102220247850 rs1421233354 Human genes 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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/1009—Address translation using page tables, e.g. page table structures
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- 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/0662—Virtualisation aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- 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/7202—Allocation control and policies
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Iron Core Of Rotating Electric Machines (AREA)
- Soundproofing, Sound Blocking, And Sound Damping (AREA)
- Vehicle Body Suspensions (AREA)
Abstract
本發明提供一種能選擇性利用與不同種類之介面對應之複數個區域之記憶體系統及控制方法。 當自主機接收到之讀取請求包含表示第1區域之第1標識符時,實施形態之記憶體系統自接收到之讀取請求獲取邏輯位址,並自邏輯實體位址轉換表獲取與上述獲取之邏輯位址對應之實體位址,基於獲取之實體位址自上述一個第1區域讀取資料,該邏輯實體位址轉換表管理各個邏輯位址與上述一個第1區域之各個實體位址之間之映射。當接收到之讀取請求包含表示第2區域之第2標識符時,記憶體系統自接收到之讀取請求獲取實體位址資訊,並基於獲取之實體位址資訊自第2區域讀取資料。
Description
本發明之實施形態係關於一種包含非揮發性記憶體之記憶體系統及其控制方法。
近年來,具備非揮發性記憶體之記憶體系統正在廣泛地普及。
作為此類記憶體系統之一種,已知有基於NAND快閃技術之固體驅動器(SSD)。
最近,開始提出一種主機與儲存器之間之新的介面。
本發明提供一種能夠選擇性利用與不同種類之介面對應之複數個區域之記憶體系統及控制方法。
根據實施形態,能連接於主機之記憶體系統具備:非揮發性記憶體,其包含分別含有複數個頁之複數個塊;及控制器,其電性連接於上述非揮發性記憶體,對上述非揮發性記憶體進行控制。上述控制器對將上述非揮發性記憶體邏輯分割所獲得之複數個區域進行管理。上述複數個區域上述複數個區域包含一個以上之第1區域及一個以上之第2區域,上述第1區域由上述主機使用第1類型介面進行讀取存取,上述第1類型介面指定邏輯位址而不指定上述非揮發性記憶體之實體位址,上述第2區域由上述主機使用第2類型介面進行讀取存取,上述第2類型介面指定上述非揮發性記憶體之一部分或者全部實體位址。上述控制器自上述主機接收讀取請求。上述控制器於上述接收到之讀取請求包含表示上述一個以上之第1區域之一個第1區域之第1標識符時,選擇上述第1類型介面,自上述接收到之讀取請求獲取邏輯位址,並自邏輯實體位址轉換表獲取與上述獲取之邏輯位址對應之實體位址,基於獲取之實體位址自上述一個第1區域讀取資料,上述邏輯實體位址轉換表管理各個邏輯位址與上述一個第1區域之各個實體位址之間之映射。上述控制器於上述接收到之讀取請求包含表示上述一個以上之第2區域之一個第2區域之第2標識符時,選擇上述第2類型介面,並自上述接收到之讀取請求獲取指定上述一個第2區域之一部分或者全部實體位址之實體位址資訊,基於上述獲取之實體位址資訊自上述一個第2區域讀取資料。
以下,參照圖式對實施形態進行說明。
首先,參照圖1,對包含一實施形態之記憶體系統之電腦系統之構成進行說明。
該記憶體系統係半導體儲存裝置,構成為向非揮發性記憶體寫入資料,並自非揮發性記憶體讀出資料。該記憶體系統係作為基於NAND快閃技術之快閃儲存裝置3而實現者。
該電腦系統亦可包含主機(主機裝置)2、及複數個快閃儲存裝置3。主機2可為伺服器,構成為使用包括複數個快閃儲存裝置3之快閃陣列作為儲存器。主機(伺服器)2與複數個快閃儲存裝置3經由介面50而相互連接(內部相互連接)。用於該內部相互連接之介面(實體介面)50並不限定於此,還能使用PCI Express(PCIe)(註冊商標)、NVM Express(NVMe)(註冊商標)、Ethernet(註冊商標)、NVMe over Fabrics(NVMeOF)等。
作為主機2發揮功能之伺服器之典型例列舉資料中心內之伺服器。
於主機2由資料中心內之伺服器實現之情形時,該主機(伺服器)2亦可經由網路51連接於複數個最終使用者終端(客戶端)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性能降低之主要原因。
進而,主機側之應用級GC變成向SSD之資料寫入量增加到實際使用者資料量之數倍(例如2倍)程度之主要原因。此種資料寫入量之增加雖然不會增加SSD之寫入擴增,但會降低系統整體之儲存器性能,且還會縮短SSD之壽命。
為了消除此種問題,亦提出了將傳統型SSD之FTL之功能全部轉移到主機之對策。
但,此種對策需要主機直接處理NAND型快閃記憶體之塊及頁。NAND型快閃記憶體之容量於每一代NAND型快閃記憶體中都會增加,相應地NAND型快閃記憶體之塊大小/頁大小於每一代中亦不同。因此,主機2有必須將不同塊大小、頁大小之NAND型快閃記憶體混合使用之情形。處理不同塊大小/頁大小對於主機來說較為困難。又,可能存在由於各種製造上之理由等產生數不可預測之不良頁(壞頁),所以可預料到塊內實質上可利用之頁數於每一塊中亦不同,此NAND型快閃記憶體內之塊大小亦係每一塊均不同。處理壞頁及不均一塊大小對於主機來說更加困難。
因此,本實施形態之快閃儲存裝置3中,支持用於對NAND型快閃記憶體進行存取之多種介面(軟體介面),可對應NAND型快閃記憶體內之存取對象之每個區域切換應使用之介面。因此,可根據用途使用更適合之介面。
更詳細來說,快閃儲存裝置3對將NAND型快閃記憶體邏輯分割所獲得之複數個區域進行管理。
上述複數個區域中包含一個以上之第1區域,上述一個以上之第1區域係由主機2使用第1類型介面進行讀取存取,上述第1類型介面僅指定邏輯位址而不指定NAND型快閃記憶體之實體位址。
於第1類型介面中,主機2無需指定NAND型快閃記憶體之實體位址,只要指定與應讀取之資料對應之邏輯位址即可。
因此,關於第1區域,主機2無需直接處理NAND型快閃記憶體。要直接處理NAND型快閃記憶體,主機2上必須已經執行用於直接處理NAND型快閃記憶體所需之功能群。但,當自第1區域讀取資料時係不需要該等功能群,因此第1區域可作為用於能啟動操作系統之可啟動區域利用。
進而,於上述複數個區域中,進而包含一個以上之第2區域,上述一個以上之第2區域由主機2使用第2類型介面進行讀取存取,上述第2類型介面指定NAND型快閃記憶體之一部分實體位址(例如僅指定塊編號)或者所有實體位址(例如指定塊編號與塊內偏移)。
當使用第2類型介面(以下稱為實體位址API)讀取資料時,由主機2指定NAND型快閃記憶體之一部分或者全部實體位址。
因此,主機2可根據需要使用實體位址API,藉此可直接對NAND型快閃記憶體進行存取。
實現實體位址API時,FTL之任務亦可於主機2與快閃儲存裝置3之間適當地分擔。此種情形時,亦可僅將傳統型SSD之FTL之部分功能轉移到主機2。以下,將轉移到主機2之FTL功能稱為全局FTL。
主機2之全局FTL亦可具有以下功能:執行儲存服務;對邏輯實體位址轉換表發揮功能之查找表(LUT)(或者僅對各邏輯位址與NAND型快閃記憶體之各塊編號之間之映射進行管理之塊級LUT)進行管理,上述邏輯實體位址轉換表對各邏輯位址與NAND型快閃記憶體之各實體位址之間之映射進行管理;軟硬韌體控制功能;用於實現高可用性之功能;防止將具有相同內容之複數個重複資料部儲存到儲存器之重複排除(De-duplication)功能等。
另一方面,快閃儲存裝置3亦可具有用於低位準抽象(LLA)之功能。LLA係用於實現NAND型快閃記憶體之抽象之功能。LLA可利用於實現實體位址API。
圖2表示快閃儲存裝置3支持之多種介面(多種API)。
快閃儲存裝置3包含控制器4、及NAND型快閃記憶體5。控制器4支持多種API。該等API亦可包含LBA API、實體位址API、鍵值API、及其他API(例如可變長度LUT等)。
LBA API被用作上述第1類型介面。LBA API中,來自主機2之讀取請求僅指定如LBA之邏輯位址,而不指定NAND型快閃記憶體5之實體位址。又,LBA API中,來自主機2之寫入請求亦僅指定如LBA之邏輯位址,而不指定NAND型快閃記憶體5之實體位址。
實體位址API被用作上述第2類型介面。於本實施形態中,三種實體位址API、即實體位址API(類型#1)、實體位址API(類型#2)、實體位址API(類型#3)分別可被用作對NAND型快閃記憶體5之一部分或者全部實體位址進行指定之上述第2類型介面。控制器4可支持實體位址API(類型#1)、實體位址API(類型#2)、實體位址API(類型#3)全部能用之實體位址API,亦可支持實體位址API(類型#1)、實體位址API(類型#2)、實體位址API(類型#3)內僅有任意一種能用之實體位址API。
該等實體位址API(類型#1)、實體位址API(類型#2)、實體位址API(類型#3)具有以下特徵。
<實體位址API(類型#1)> 於實體位址API(類型#1)中,自主機2接收之讀取請求對NAND型快閃記憶體5之所有實體位址(塊編號與塊內偏移兩者)進行指定。塊內偏移係指定塊內位置之塊內實體位址。自主機2接收之寫入請求僅指定邏輯位址。
即,主機2對作為邏輯實體位址轉換表發揮功能之查找表進行管理,應用於寫入之塊之選擇並非由主機2執行,而是由快閃儲存裝置3之控制器4執行。
<實體位址API(類型#2)> 於實體位址API(類型#2)中,自主機2接收之讀取請求對NAND型快閃記憶體5之一部分實體位址(塊編號)、及邏輯位址進行指定。另一方面,自主機2接收之寫入請求對NAND型快閃記憶體5之一部分實體位址(塊編號)、及邏輯位址進行指定。
即,主機2對用於管理各邏輯位址與各塊編號之間之映射之塊級位址轉換表即塊級查找表(塊級LUT)進行管理,快閃儲存裝置3對用於管理各邏輯位址與各塊之塊內實體位址之間之映射之頁位準位址轉換表即塊內查找表(塊內LUT)進行管理。
<實體位址API(類型#3)> 於實體位址API(類型#3)中,自主機2接收之讀取請求對NAND型快閃記憶體5之全部實體位址(塊編號及塊內偏移兩者)進行指定。另一方面,自主機2接收之寫入請求對NAND型快閃記憶體5之一部分實體位址(塊編號)、及邏輯位址進行指定。
即,主機2對作為邏輯實體位址轉換表發揮功能之查找表進行管理,但主機2僅指定應寫入資料之塊之塊編號及與該資料對應之邏輯位址,應寫入該資料之該塊內之位置(寫入目標位置)則係由快閃儲存裝置3決定。將表示決定之該塊內之位置(寫入目標位置)之塊內偏移(塊內實體位址)自快閃儲存裝置3通知主機2。
鍵值API具有以下特徵。
於鍵值API中,鍵值記憶體之鍵值(標籤)、或者鍵值之哈希值係作為一種邏輯位址被使用。
於鍵值API中,來自主機2之讀取請求將鍵值指定為邏輯位址,而不指定NAND型快閃記憶體5之實體位址。又,於鍵值API中,來自主機2之寫入請求亦將鍵值指定為邏輯位址,而不指定NAND型快閃記憶體5之實體位址。
於上述實體位址API(類型#1)、實體位址API(類型#2)、實體位址API(類型#3)中,作為邏輯位址可使用LBA,亦可使用鍵值記憶體之鍵值(標籤)、或者鍵值之哈希值。
與可變長度LUT對應之API具有以下特徵。
與可變長度LUT對應之API係用於處理可變長度資料之API。控制器4對包含與複數個邏輯位址對應之複數個入口之可變長度LUT進行管理。各入口包含保存與某個資料對應之邏輯位址之欄位、保存表示寫入該資料之實體存儲位置之實體位址之欄位、及保存該資料之長度之欄位。與可變長度LUT對應之API可向任意之邏輯位址寫入任意長度之資料。
於本實施形態中,控制器4可將任意之API應用於NAND型快閃記憶體5之任意區域。各區域與各API之對應關係可由主機2指定。
於圖2中,例示了以下情形:將NAND型快閃記憶體5邏輯分割成複數個區域(此處為區域#0~#6),將與區域#0、#1對應之API設定為LBA API,將與區域#2對應之API設定為實體位址API(類型#1),將與區域#3對應之API設定為實體位址API(類型#2),將與區域#4對應之API設定為實體位址API(類型#3),將與區域#5對應之API設定為鍵值API,將與區域#6對應之API設定為其他API。
來自主機2之讀取請求及寫入請求等包含表示存取對象之區域之標識符(ID)。控制器4基於讀取請求/寫入請求所含之標識符(ID),選擇應使用之API。
例如,當自主機2接收到包含指定區域#0之ID#0之讀取請求時,控制器4使用LBA API執行來自區域#0之資料讀取。另一方面,當自主機2接收到包含指定區域#2~#4之任一個之ID(ID#2~#4之任一個)之讀取請求時,控制器4使用實體位址API執行來自指定區域之資料讀取。
更詳細來說,控制器4執行以下之讀取處理之步驟。
(1)控制器4自主機2接收讀取請求(讀取命令)。
(2)控制器4檢查接收到之讀取請求所含之ID。
(3)若接收到之讀取請求包含ID#0,則控制器4使用與區域#0對應之API即LBA API。為了使用LBA API對區域#0進行讀取存取,控制器4自接收到之讀取請求獲取邏輯位址,並自LUT(邏輯實體位址轉換表)獲取與獲取之邏輯位址對應之實體位址,上述LUT對各邏輯位址與區域#0之各實體位址之間之映射進行管理。然後,控制器4基於獲取之實體位址,自區域#0讀取資料。
(4)若接收到之讀取請求包含指定區域#2~#4之任一個之ID(ID#2~#4之任一個),則控制器4選擇與區域#2~#4對應之API即實體位址API。為了使用實體位址API對指定區域進行讀取存取,控制器4自接收到之讀取請求獲取指定一部分或者全部實體位址之實體位址資訊。然後,控制器4基於獲取之實體位址資訊,自指定區域讀取資料。
如此,根據存取對象之區域,自動選擇應使用之API。
複數個區域(此處為區域#0~#6)亦可由複數個命名空間實現。各命名空間係NAND型快閃記憶體5內之一種區域(記憶區域),被分配有邏輯位址空間(LBA範圍)。各個命名空間係利用該等命名空間之標識符(NSID)進行識別。各區域中分配有LBA範圍(LBA0~LBAn-1)。每個區域(每個命名空間)中LBA範圍之大小(即LBA之數)可變。各LBA範圍係自LBA0開始。
當區域#0~#6分別由命名空間實現時,來自主機2之各讀取/寫入請求包含與存取對象之命名空間對應之標識符(NSID)。
當控制器4接收到讀取請求時,控制器4檢查該讀取請求所含之NSID。若接收到之讀取請求包含NSID#0,控制器4選擇與區域#0對應之API即LBA API。為了使用LBA API對命名空間#0進行讀取存取,控制器4自接收到之讀取請求獲取邏輯位址,並自LUT(命名空間#0用之LUT)獲取與獲取之邏輯位址對應之實體位址,上述LUT對與命名空間#0對應之各邏輯位址與NAND型快閃記憶體5之各實體位址之間之映射進行管理。然後,控制器4基於獲取之實體位址,自命名空間#0(即,與命名空間#0對應之NAND型快閃記憶體5內之區域)讀取資料。
若接收到之讀取請求包含NSID#2~#4之任一個,則控制器4選擇實體位址API。為了使用實體位址API對指定之命名空間進行讀取存取,控制器4自接收到之讀取請求獲取指定一部分或者全部實體位址之實體位址資訊。然後,控制器4基於獲取之實體位址資訊,自指定之命名空間(即,與指定之命名空間對應之NAND型快閃記憶體5內之區域)讀取資料。
圖3表示快閃儲存裝置3之構成例。
快閃儲存裝置3如上所述具備控制器4及NAND型快閃記憶體5。快閃儲存裝置3亦可進而具備隨機存取記憶體、例如DRAM6。
NAND型快閃記憶體5包含記憶胞陣列,上述記憶胞陣列包含矩陣狀配置之複數個記憶胞。NAND型快閃記憶體5可為二維構造之NAND型快閃記憶體,亦可為三維構造之NAND型快閃記憶體。
NAND型快閃記憶體5之記憶胞陣列包含複數個塊BLK0~BLKm-1。各個塊BLK0~BLKm-1係由複數個頁(此處係頁P0~Pn-1)組成。塊BLK0~BLKm-1作為刪除單位發揮功能。塊亦被稱為“刪除塊”、“實體塊”、或者“實體刪除塊”。各個頁P0~Pn-1包含連接於同一字元線之複數個記憶胞。頁P0~Pn-1係資料寫入動作及資料讀取動作之單位。
控制器4經由如Toggle、開放NAND快閃介面(ONFI)之NAND介面13,電性連接於非揮發性記憶體NAND型快閃記憶體5。控制器4係構成為對NAND型快閃記憶體5進行控制之記憶體控制器(控制電路)。
NAND型快閃記憶體5如圖4所示包含複數個NAND型快閃記憶體晶片。各NAND型快閃記憶體晶片係非揮發性記憶體晶片,包含含有複數個塊BLK之記憶胞陣列、及對該記憶胞陣列進行控制之周邊電路。各個NAND型快閃記憶體晶片能夠獨立地動作。因此,NAND型快閃記憶體晶片作為並行動作單位發揮功能。NAND型快閃記憶體晶片亦被稱為“NAND型快閃記憶體晶片”或者“非揮發性記憶體晶片”。於圖4中例示了以下情形,NAND介面13上連接有16個通道Ch1、Ch2、…Ch16,該等通道Ch1、Ch2、…Ch16上分別連接有相同數量(例如每個通道2個晶片)之NAND型快閃記憶體晶片。各通道包含用於與對應之NAND型快閃記憶體晶片通信之通信線(記憶體匯流排)。
控制器4經由通道Ch1、Ch2、…Ch16對NAND型快閃記憶體晶片#1~#32進行控制。控制器4能夠同時驅動通道Ch1、Ch2、…Ch16。
連接於通道Ch1~Ch16之16個NAND型快閃記憶體晶片#1~#16可組成為第1記憶組(bank),且連接於通道Ch1~Ch16之剩下之16個NAND型快閃記憶體晶片#17~#32可組成第2記憶組。記憶組係作為用於利用記憶組交錯使複數個記憶體模塊並行動作之單位而發揮功能。於圖5之構成例中,利用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中,例示了以下情形:一個超級塊SB由自NAND型快閃記憶體晶片#1~#32逐個選擇之合計32個塊BLK(圖4中以粗框圍住之塊BLK)構成。
如圖3所示,控制器4包含主機介面11、CPU12、NAND介面13、及DRAM介面14等。上述CPU12、NAND介面13、DRAM介面14經由匯流排10相互連接。
該主機介面11係構成為執行與主機2之通信之主機介面電路。該主機介面11例如亦可為PCIe控制器(NVMe控制器)。主機介面11自主機2接收各種請求(命令)。該等請求(命令)中包含寫入請求(寫入命令)、讀取請求(讀取命令)、及其他各種請求(命令)。
CPU12係構成為對主機介面11、NAND介面13、DRAM介面14進行控制之處理器。CPU12響應快閃儲存裝置3之電源接通,自NAND型快閃記憶體5或者未圖示之ROM加載控制程式(韌體)到DRAM6,然後執行該韌體,藉此執行各種處理。再者,韌體亦可加載到控制器4內之未圖示之SRAM上。該CPU12可執行用於對來自主機2之各種命令進行處理之命令處理等。CPU12之動作係由CPU12執行之上述韌體控制。再者,亦可藉由控制器4內之專用硬體來執行一部分或者全部命令處理。
CPU12可作為API設定/選擇部20、寫入動作控制部21、讀取動作控制部22、及GC動作控制部23發揮功能。
API設定/選擇部20基於來自主機2之請求,對每個區域設定應使用之API。又,API設定/選擇部20基於自主機2接收之讀取/寫入請求所含之ID,選擇應使用於讀取/寫入存取之API。
寫入動作控制部21可執行與上述多種API對應之多種寫入處理。讀取動作控制部22亦可執行與上述多種API對應之多種讀取處理。同樣地,GC動作控制部23亦可執行與上述多種API對應之多種GC動作。
<與實體位址API(類型#1)對應之寫入處理> 於實體位址API(類型#1)中,寫入動作控制部21自主機2接收指定邏輯位址之寫入請求(寫入命令)。邏輯位址係能夠識別應寫入之資料(使用者資料)之標識符,例如可為LBA,或者可為如鍵值記憶體之鍵值之標籤,還可為鍵值之哈希值。
當接收到寫入命令時,寫入動作控制部21首先決定應寫入來自主機2之資料之塊(寫入目標塊)及該塊內之位置(寫入目標位置)。接著,寫入動作控制部21將來自主機2之資料(寫入資料)寫入該寫入目標塊之寫入目標位置。此種情形時,寫入動作控制部21不僅可將來自主機2之資料寫入,還可將該資料與該資料之邏輯位址兩者寫入到寫入目標塊。然後,寫入動作控制部21將指定之邏輯位址、及表示寫入有資料(寫入資料)之NAND型快閃記憶體5內之位置(實體存儲位置)之實體位址返回給主機2。
此種情形時,該實體位址由(1)該寫入目標塊之塊編號、及(2)表示該寫入目標塊內之寫入目標位置之塊內偏移表示。塊編號係指定寫入有資料之塊之標識符。塊編號可使用能夠唯一地識別複數個塊內之任意一個之各種值。
塊內偏移係表示寫入目標塊內之位置之塊內實體位址。該塊內偏移表示自寫入目標塊之開頭到寫入目標位置為止之偏移、即相對於寫入目標塊之開頭之寫入目標位置之偏移。自寫入目標塊之開頭到寫入目標位置為止之偏移之大小以具有不同於頁大小之大小之粒度(Grain)之倍數表示。粒度(Grain)係存取單位。粒度(Grain)之大小之最大值被限制為最大為塊大小。換言之,塊內偏移將自寫入目標塊之開頭到寫入目標位置為止之偏移以具有不同於頁大小之大小之粒度之倍數表示。
粒度(Grain)亦可具有較頁大小小之大小。例如,當頁大小為16K位元組時,粒度(Grain)之大小可以為4K位元組。此種情形時,於某一個塊中,規定各大小為4K位元組時之複數個偏移位置。與塊內之最初之偏移位置對應之塊內偏移例如為0,與塊內之下一偏移位置對應之塊內偏移例如為1,與塊內之再下一偏移位置對應之塊內偏移例如為2。
或者,粒度(Grain)亦可具有較頁大小大之大小。例如,粒度(Grain)亦可為頁大小之數倍之大小。當頁大小為16K位元組時,粒度可為32K位元組之大小。
如此,寫入動作控制部21自身決定應寫入資料之塊及該塊內之位置兩者,然後將表示應寫入來自主機2之資料(使用者資料)之位置之實體位址通知主機2。該實體位址可使用塊編號及塊內偏移。由塊編號指定之塊可為實體塊,亦可為上述超級塊。
主機2可不在意塊大小、頁寫入順序制約、壞頁、頁大小等地,將使用者資料寫入NAND型快閃記憶體5,而且可將塊編號及塊內偏移表示之實體位址映射到該使用者資料之邏輯位址。
<與實體位址API(類型#1)對應之讀取處理> 於實體位址API(類型#1)中,讀取動作控制部22自主機2接收指定實體位址(即,塊編號及塊內偏移(塊內實體位址))之讀取請求(讀取命令)。當自主機2接收到讀取命令時,讀取動作控制部22基於上述塊編號及塊內偏移自NAND型快閃記憶體5讀取資料。讀取對象之塊係藉由塊編號特定。上述塊內之讀取對象之實體存儲位置係藉由塊內偏移特定。
為了獲得讀取對象之實體存儲位置,讀取動作控制部22首先將該塊內偏移除以表示頁大小之粒度之數(此處為4),然後將藉由該除算獲得之商及餘數,分別作為讀取對象之頁編號及讀取對象之頁內偏移而決定。
<與實體位址API(類型#1)對應之GC動作> 於實體位址API(類型#1)中,GC動作控制部23自NAND型快閃記憶體5內之複數個塊中選擇用於無用單元收集之複製源塊(GC源塊)及複製目標塊(GC目標塊)。此種情形時,GC動作控制部23通常會選擇複數個複製源塊(GC源塊)、及一個以上複製目標塊(GC目標塊)。用於選擇複製源塊(GC源塊)之條件(GC策略)可由主機2指定。例如,可使用將有效資料量最少之塊優先選擇為複製源塊(GC源塊)之GC策略,亦可使用其他之GC策略。如此,複製源塊(GC源塊)及複製目標塊(GC目標塊)之選擇並非由主機2執行,而是由快閃儲存裝置3之控制器4(GC動作控制部23)執行。控制器4亦可使用各塊管理表來管理各塊之有效資料量。
有效資料/無效資料之管理亦可使用塊管理表32執行。該塊管理表32例如於每個塊中存在。於與某個塊對應之塊管理表32中,儲存有表示該塊內之各資料之有效/無效之位圖標識。此處,所謂有效資料,係指自LUT參照之資料(即根據邏輯位址作為最新之資料建立關聯之資料),之後有自主機2讀取之可能性之資料。所謂無效資料,係指已經沒有自主機2讀取之可能性之資料。例如,與某個邏輯位址建立關聯之資料係有效資料,未與任何邏輯位址建立關聯之資料係無效資料。
GC動作控制部23決定應寫入複製源塊(GC源塊)內儲存之有效資料之複製目標塊(GC目標塊)內之位置(複製目標位置),並將有效資料複製到複製目標塊(GC目標塊)之上述決定之位置(複製目標位置)。此種情形時,GC動作控制部23亦可將有效資料及該有效資料之邏輯位址兩者複製到複製目標塊(GC目標塊)。GC動作控制部23亦可藉由參照與複製源塊(GC源塊)對應之塊管理表32,來特定GC源塊內之有效資料。或者,於其他實施形態中,亦可由主機2執行有效資料/無效資料之管理。此種情形時,GC動作控制部23亦可自主機2接收表示GC源塊內之各資料之有效/無效之資訊,並基於該接收到之資訊,特定出GC源塊內之有效資料。
並且,GC動作控制部23將複製之有效資料之邏輯位址、複製目標塊(GC目標塊)之塊編號、以上述粒度之倍數表示自複製目標塊(GC目標塊)之開頭到複製目標位置為止之偏移之塊內偏移通知主機2。
如上所述,寫入動作控制部21可將來自主機2之資料(寫入資料)及來自主機2之邏輯位址兩者寫入到寫入目標塊。因此,GC動作控制部23可容易地自該複製源塊(GC源塊)獲取複製源塊(GC源塊)內之各資料之邏輯位址,因此可容易地將複製之有效資料之邏輯位址通知主機2。
<與實體位址API(類型#2)對應之寫入處理> 於實體位址API(類型#2)中,寫入動作控制部21自主機2接收指定塊編號及邏輯位址之寫入請求(寫入命令)。邏輯位址係能夠識別應寫入之資料(使用者資料)之標識符,例如可為LBA,或者可為如鍵值記憶體之鍵值之標籤,亦可為鍵值之哈希值。當接收到寫入命令時,寫入動作控制部21首先決定應寫入來自主機2之資料之、具有所指定之塊編號之塊(寫入目標塊)內之位置(寫入目標位置)。接著,寫入動作控制部21將來自主機2之資料(寫入資料)寫入到上述寫入目標塊之寫入目標位置。此種情形時,寫入動作控制部21不僅可寫入來自主機2之資料,還能將該資料及該資料之邏輯位址兩者寫入到寫入目標塊。
並且,寫入動作控制部21更新對各邏輯位址與該塊之各塊內實體位址之間之映射進行管理之塊內LUT,將表示該寫入目標塊之上述寫入目標位置之塊內實體位址映射到寫入資料之邏輯位址。
此種情形時,該塊內實體位址係由表示該寫入目標塊內之寫入目標位置之塊內偏移表示。
如此,寫入動作控制部21自身決定具有來自主機2之塊編號之塊內之寫入目標位置,然後將來自主機2之寫入資料寫入到該塊內之該寫入目標位置。然後,寫入動作控制部21更新與該塊對應之塊內LUT,將表示寫入目標位置之塊內實體位址(塊內偏移)映射到寫入資料之邏輯位址。藉此,快閃儲存裝置3讓主機2處理塊編號,並可隱藏頁寫入順序制約、壞頁、頁大小等。
結果,主機2可識別塊邊界,可不在意頁寫入順序制約、壞頁、頁大小地,管理哪個使用者資料存在於哪個塊編號。
<與實體位址API(類型#2)對應之讀取處理> 於實體位址API(類型#2)中,讀取動作控制部22自主機2接收指定邏輯位址及塊編號之讀取請求(讀取命令)。邏輯位址係能夠識別應寫入之資料(使用者資料)之標識符,例如可為LBA,或可為如鍵值記憶體之鍵值之標籤,還可為鍵值之哈希值。當自主機2接收到讀取命令時,讀取動作控制部22使用該邏輯位址,參照與具有由該讀取請求指定之塊編號之塊對應之塊內LUT32。藉此,讀取動作控制部22可獲取儲存有與該邏輯位址對應之資料之該塊之塊內實體位址(塊內偏移)。並且,讀取動作控制部22基於讀取請求指定之塊編號、及獲取之塊內實體位址,自NAND型快閃記憶體5讀取與該邏輯位址對應之資料。
此種情形時,讀取對象之塊係由塊編號特定。該塊內之讀取對象之實體存儲位置係由塊內偏移特定。為了獲得讀取對象之實體存儲位置,讀取動作控制部22亦可首先將該塊內偏移除以表示頁大小之粒度之數(此處為4),然後將藉由該除算所得之商及餘數,分別決定為讀取對象之頁編號及讀取對象之頁內偏移。
<與實體位址API(類型#2)對應之GC動作> 於實體位址API(類型#2)中,GC動作控制部23自主機2接收GC控制命令,該GC控制命令指定用於NAND型快閃記憶體5之廢料收集之複製源塊編號(GC源塊編號)及複製目標塊編號(GC目標塊編號)。當自主機2接收到GC控制命令時,GC動作控制部23自NAND型快閃記憶體5之複數個塊中,選擇具有指定之複製源塊編號之塊、及具有指定之複製目標塊編號之塊,作為複製源塊(GC源塊)及複製目標塊編號(GC目標塊)。GC動作控制部23決定應寫入選擇之GC源塊中儲存之有效資料之GC目標塊內之複製目標位置,並將有效資料複製到GC目標塊內之複製目標位置。
並且,GC動作控制部23以將映射到有效資料之邏輯位址之塊內實體位址(塊內偏移),自表示儲存有該有效資料之GC源塊內之複製源位置之塊內實體位址,變更為表示GC目標塊內之複製目標位置之塊內實體位址之方式,更新與GC源塊對應之塊內LUT及與GC目標塊對應之塊內LUT。
如上所述,GC動作控制部23決定應寫入複製源塊(GC源塊)內儲存之有效資料之複製目標塊(GC目標塊)內之位置(複製目標位置),並將有效資料複製到複製目標塊(GC目標塊)之該決定之位置(複製目標位置)。此種情形時,GC動作控制部23亦可將有效資料及該有效資料之邏輯位址兩者,複製到複製目標塊(GC目標塊)。
如上所述,寫入動作控制部21可將來自主機2之資料(寫入資料)及來自主機2之邏輯位址兩者,寫入到寫入目標塊。因此,GC動作控制部23可容易地自該複製源塊(GC源塊)獲取複製源塊(GC源塊)內之各資料之邏輯位址,因此可容易地更新與複製源塊對應之塊內LUT及與複製目標塊對應之塊內LUT。
<與實體位址API(類型#3)對應之寫入處理> 實體位址API(類型#3)係實體位址API(類型#2)與實體位址API(類型#1)之中間之API。不同於實體位址API(類型#2),於實體位址API(類型#3)中並不使用塊內LUT。
於實體位址API(類型#3)中,寫入動作控制部21自主機2接收指定塊編號及邏輯位址之寫入請求(寫入命令)。邏輯位址係能夠識別應寫入之資料(使用者資料)之標識符,例如可為LBA,或者可為如鍵值記憶體之鍵值之標籤,亦可為鍵值之哈希值。當接收到寫入命令時,寫入動作控制部21首先決定應寫入來自主機2之資料之具有該指定之塊編號之塊(寫入目標塊)內之位置(寫入目標位置)。然後,寫入動作控制部21將來自主機2之資料(寫入資料)寫入到該寫入目標塊之寫入目標位置。此種情形時,寫入動作控制部21不僅可寫入來自主機2之資料,還可將該資料及該資料之邏輯位址兩者寫入到寫入目標塊。
並且,寫入動作控制部21將表示該寫入目標塊之上述寫入目標位置之塊內實體位址通知主機2。該塊內實體位址係由表示該寫入目標塊內之寫入目標位置之塊內偏移表示。
如此,寫入動作控制部21自身決定具有來自主機2之塊編號之塊內之寫入目標位置,然後將來自主機2之寫入資料寫入到該塊內之該寫入目標位置。並且,寫入動作控制部21將表示該寫入目標位置之塊內實體位址(塊內偏移)作為與寫入請求對應之響應(返回值)通知主機2。或者,寫入動作控制部21亦可並非僅將塊內實體位址(塊內偏移)通知主機2,而是將邏輯位址、塊編號及塊內實體位址(塊內偏移)之組通知主機2。
因此,快閃儲存裝置3可讓主機2處理塊編號,並隱藏頁寫入順序制約、壞頁、頁大小等。
結果,主機2可識別塊邊界,可不在意頁寫入順序制約、壞頁、頁大小地,管理哪個使用者資料存在於哪個塊編號。
<與實體位址API(類型#3)對應之讀取處理> 於實體位址API(類型#3)中,讀取動作控制部22自主機2接收指定實體位址(即塊編號及塊內偏移)之讀取請求(讀取命令)。當自主機2接收到讀取命令時,讀取動作控制部22基於上述塊編號及塊內偏移,自讀取對象之塊內之讀取對象之實體存儲位置讀取資料。讀取對象之塊由塊編號特定。該塊內之讀取對象之實體存儲位置由塊內偏移特定。
為了獲得讀取對象之實體存儲位置,讀取動作控制部22亦可首先將該塊內偏移除以表示頁大小之粒度之數(當頁大小為16K位元組、粒度(Grain)為4K位元組時,表示頁大小之粒度之數為4),然後將藉由該除算所得之商及餘數,分別決定為讀取對象之頁編號及讀取對象之頁內偏移。
<與實體位址API(類型#3)對應之GC動作> 於實體位址API(類型#3)中,GC動作控制部23自主機2接收GC控制命令,該GC控制命令指定用於NAND型快閃記憶體5之無用單元收集之複製源塊編號(GC源塊編號)及複製目標塊編號(GC目標塊編號)。當自主機2接收到GC控制命令時,GC動作控制部23自NAND型快閃記憶體5之複數個塊中選擇具有指定之複製源塊編號之塊及具有指定之複製目標塊編號之塊,作為複製源塊(GC源塊)及複製目標塊(GC目標塊)。GC動作控制部23決定應寫入選擇之GC源塊中儲存之有效資料之GC目標塊內之複製目標位置,並將有效資料複製到GC目標塊內之複製目標位置。並且,GC動作控制部23將有效資料之邏輯位址、複製目標塊編號、表示GC目標塊內之複製目標位置之塊內實體位址(塊內偏移)通知主機2。
NAND介面13係構成為於CPU12之控制之下控制NAND型快閃記憶體5之記憶體控制電路。DRAM介面14係構成為於CPU12之控制之下控制DRAM6之DRAM控制電路。DRAM6之部分記憶區域用於儲存寫入緩衝器(WB)31。又,DRAM6之另一部分記憶區域用於儲存塊管理表32。於使用實體位址API(類型#2)之情形時,DRAM6之另一部分記憶區域用於儲存塊內LUT。再者,上述寫入緩衝器(WB)31、塊管理表32、塊內LUT亦可儲存到控制器4內之未圖示之SRAM中。
圖6表示擴展命名空間管理命令。
擴展命名空間管理命令係用於創建或刪除區域(此處為命名空間)之管理命令。
擴展命名空間管理命令包含以下參數。 (1)創建/刪除 (2)LBA範圍 (3)實體資源大小 (4)API類型
創建/刪除之參數之值0h向SSD3請求命名空間之創建。創建/刪除之參數之值1h向SSD3請求命名空間之刪除。當請求命名空間之刪除時,將表示刪除對象之命名空間之ID之參數設定為擴展命名空間管理命令。
LBA範圍之參數表示命名空間之LBA範圍(LBA0~n-1)。該LBA範圍映射到該命名空間之使用者區域。
實體資源大小之參數表示應用於確保命名空間之塊之個數。
於其他實施形態中,擴展命名空間管理命令亦可包含表示冗餘容量之大小之參數來代替實體資源大小之參數。
冗餘容量之大小之參數表示應用於確保與命名空間關聯之區域內之冗餘容量區域之塊之個數。若擴展命名空間管理命令包含冗餘容量之大小之參數,則SSD3亦可創建命名空間,且向與該命名空間關聯之區域內之冗餘容量區域分配由該參數指定之個數之塊。
API類型之參數之值與API類型之關係如以下所示。 000:LBA API 001:實體位址API(類型#1) 010:實體位址API(類型#2) 011:實體位址API(類型#3) 100:鍵值API 101:其他API(例如可變長度LUT)
圖7表示由快閃儲存裝置3執行之區域(此處為命名空間)創建處理。
主機2將請求命名空間之創建之擴展命名空間管理命令發送給SSD3。該擴展命名空間管理命令包含指定應用於確保創建對象之區域(此處為命名空間)之塊之個數之實體資源大小參數、以及指定應對創建對象之區域(此處為命名空間)設定之API類型之API類型參數。SSD3內之一個塊之容量會自SSD3報告給主機2,因此主機2可請求適合創建對象之區域(此處為命名空間)之個數之塊。又,主機2可指定適合創建對象之區域(此處為命名空間)之API。例如,當創建能夠啟動操作系統之可啟動區域時,主機2指定LBA API即可。又,當創建I/O性能應優先之區域時,主機2指定實體位址API(類型#1)、實體位址API(類型#2)、或者實體位址API(類型#3)即可。
響應於該擴展命名空間管理命令之接收,SSD3之控制器4創建命名空間(NS#0),預約對該命名空間(NS#0)指定之個數之塊,並將該命名空間(NS#0)之API類型設定為指定種類之API類型(步驟S1)。控制器4將表示命令結束之響應發送給主機2。該響應亦可包含創建之命名空間之ID。
主機2將請求下一命名空間之創建之擴展命名空間管理命令發送給SSD3。該擴展命名空間管理命令包含指定應用於確保創建對象之區域(此處為命名空間)之塊之個數之實體資源大小參數、以及指定應對創建對象之區域(此處為命名空間)設定之API類型之API類型參數。響應於該擴展命名空間管理命令之接收,SSD3之控制器4創建命名空間(NS#1),預約對該命名空間(NS#1)指定之個數之塊,並將該命名空間(NS#1)之API類型設定為指定種類之API類型(步驟S2)。控制器4將表示命令結束之響應發送給主機2。該響應亦可包含創建之命名空間之ID。
同樣地,主機2將請求又一命名空間之創建之擴展命名空間管理命令發送給SSD3。該擴展命名空間管理命令包含指定應用於確保創建對象之區域(此處為命名空間)之塊之個數之實體資源大小參數、以及指定應對創建對象之區域(此處為命名空間)設定之API類型之API類型參數。響應於該擴展命名空間管理命令之接收,SSD3之控制器4創建命名空間(NS#n),預約對該命名空間(NS#n)指定之個數之塊,並將該命名空間(NS#n)之API類型設定為指定種類之API類型(步驟S3)。控制器4將表示命令結束之響應發送給主機2。該響應亦可包含創建之命名空間之ID。
如此,藉由反覆進行創建命名空間之處理,將NAND型快閃記憶體5邏輯分割成複數個區域,並對每個區域設定API類型。各區域與各API類型之間之對應關係係由快閃儲存裝置3之控制器4管理之API類型管理表進行管理。
快閃儲存裝置3之控制器4自主機2接收包含表示存取對象之區域之標識符(命名空間之ID:NSID)之命令(讀取命令、寫入命令、GC控制命令等)。然後,控制器4基於接收到之命令所含之NSID、及API類型管理表,選擇應使用之API。
以下,詳細說明實體位址API(類型#1)、實體位址API(類型#2)、實體位址API(類型#3)。
該等實體位址API(類型#1)、實體位址API(類型#2)、實體位址API(類型#3)中使用之各種命令分別包含指定某個區域(此處為命名空間)之NSID,於以下之各命令之說明中,主要說明命令之特徵,省略NSID之說明。
<實體位址API(類型#1)之詳細> 首先,參照圖8~圖35,說明實體位址API(類型#1)。
圖8表示傳統型SSD與主機之間之任務分擔、及支持實體位址API(類型#1)之快閃儲存裝置3與主機2之間之任務分擔。
圖8之左部分表示包含傳統型SSD及執行虛擬磁碟服務之主機之電腦系統整體之層級構造。
於主機(伺服器)中,執行用於向複數個最終使用者提供複數個虛擬機之虛擬機服務101。虛擬機服務101上之各虛擬機中,執行由對應之最終使用者使用之操作系統及使用者應用程式102。
又,於主機(伺服器)中,執行與複數個使用者應用程式102對應之複數個虛擬磁碟服務103。各虛擬磁碟服務103係將傳統型SSD內之儲存器資源之部分容量分配為對應之使用者應用程式102用之儲存器資源(虛擬磁碟)。於各虛擬磁碟服務103中,還使用應用級位址轉換表,執行將應用級之邏輯位址轉換成SSD用邏輯位址之應用級位址轉換。進而,主機中還執行應用級GC104。
自主機(伺服器)向傳統型SSD之命令發送及自傳統型SSD向主機(伺服器)之命令結束之響應返回,係經由主機(伺服器)及傳統型SSD中分別存在之I/O佇列200執行。
傳統型SSD包含寫入緩衝器(WB)301、查找表(LUT)302、無用單元收集功能303、NAND型快閃記憶體(NAND快閃陣列)304。傳統型SSD僅管理一個查找表(LUT)302,NAND型快閃記憶體(NAND快閃陣列)304之資源則係由複數個虛擬磁碟服務103共用。
該構成中,因包含虛擬磁碟服務103下之應用級GC104及傳統型SSD內之無用單元收集功能303(LUT級GC)之重複GC,寫入擴增變大。又,傳統型SSD中,因來自某個最終使用者或者某個虛擬磁碟服務103之資料寫入量增加,GC之頻度增加,藉此會產生對其他最終使用者或者其他虛擬磁碟服務103之I/O性能劣化等相鄰雜訊問題。
又,因包含各虛擬磁碟服務內之應用級位址轉換表及傳統型SSD內之LUT302之重複資源之存在,消耗了大量之記憶體資源。
圖8之右部分表示包含支持實體位址API(類型#1)之快閃儲存裝置3及主機2之電腦系統整體之層級構造。
於主機(伺服器)2中,執行用於向複數個最終使用者提供複數個虛擬機之虛擬機服務401。於虛擬機服務401上之各虛擬機中,執行由對應之最終使用者使用之操作系統及使用者應用程式402。
又,於主機(伺服器)2中,執行與複數個使用者應用程式402對應之複數個I/O服務403。該等I/O服務403中亦可包含基於LBA之塊I/O服務、鍵值記憶體服務等。各I/O服務403包含查找表(LUT),該查找表(LUT)對各邏輯位址與快閃儲存裝置3之各實體位址之間之映射進行管理。此處,所謂邏輯位址係指能夠識別存取對象之資料之標識符。該邏輯位址可為指定邏輯位址空間上之位置之邏輯塊位址(LBA),或者亦可為鍵值記憶體之鍵值(標籤)。
於基於LBA之塊I/O服務中,亦可使用對各邏輯位址(LBA)與快閃儲存裝置3之各實體位址之間之映射進行管理之LUT。
於鍵值記憶體服務中,亦可使用對各邏輯位址(即,如鍵值之標籤)、與儲存由與該等邏輯位址(即如鍵值之標籤)對應之資料之快閃儲存裝置3之各實體位址之間之映射進行管理之LUT。該LUT中,亦可管理標籤、儲存有利用該標籤識別之資料之實體位址、該資料之資料長度之對應關係。
各最終使用者可選擇應使用之定址方法(LBA、鍵值記憶體之鍵值等)。
上述各LUT並非將來自使用者應用程式402之各邏輯位址轉換成快閃儲存裝置3用之各邏輯位址,而是將來自使用者應用程式402之各邏輯位址轉換成快閃儲存裝置3之各實體位址。即,上述各LUT係將快閃儲存裝置3用之邏輯位址轉換成實體位址之表、與應用級位址轉換表統合(合併)而成之表。
於主機(伺服器)2中,每個上述QoS域均存在I/O服務403。屬於某個QoS域之I/O服務403對由對應之QoS域內之使用者應用程式402使用之各邏輯位址、與屬於分配給對應之QoS域之資源組之塊群之各實體位址之間之映射進行管理。
自主機(伺服器)2向快閃儲存裝置3之命令發送及自快閃儲存裝置3向主機(伺服器)2之命令結束之響應等之返回,係經由主機(伺服器)2及快閃儲存裝置3中分別存在之I/O佇列500執行。該等I/O佇列500亦可分類成與複數個QoS域對應之複數個佇列組。
快閃儲存裝置3包含與複數個QoS域對應之複數個寫入緩衝器(WB)601、與複數個QoS域對應之複數個無用單元收集(GC)功能602、NAND型快閃記憶體(NAND快閃陣列)603。
於該圖8之右部分所示之構成中,傳統型SSD內之LUT302與應用級位址轉換表作為I/O服務403內之一個LUT而合併,因此能減少位址轉換資訊之儲存所消耗之記憶體資源之量。又,位址轉換階段數減少,因此可提昇I/O性能。
進而,並非包含應用級GC與LUT級GC之重複GC,而是僅有快閃儲存裝置3執行用於GC(統一GC)之資料複製。因此,與執行重複GC之構成相比,能大幅減少系統整體之寫入擴增。結果,能改善I/O性能,且能使快閃儲存裝置3之壽命最大化。
圖9表示實體位址API(類型#1)中使用之寫入命令。
寫入命令係向快閃儲存裝置3請求資料寫入之命令。該寫入命令亦可包含命令ID、QoS域ID、邏輯位址、長度等。
命令ID係表示該命令係寫入命令之ID(命令編碼),寫入命令中包含寫入命令用之命令ID。
QoS域ID能夠唯一地識別應寫入資料之QoS域之標識符。根據來自某個最終使用者之寫入請求而自主機2發送之寫入命令亦可包含指定與該最終使用者對應之QoS域之QoS域ID。命名空間ID亦可被用作QoS域ID。
邏輯位址係用於識別應寫入之寫入資料之標識符。該邏輯位址如上所述可為LBA,亦可為鍵值記憶體之鍵值。當邏輯位址係LBA時,該寫入命令所含之邏輯位址(開始LBA)表示應寫入寫入資料之邏輯位置(最初之邏輯位置)。
長度表示應寫入之寫入資料之長度。該長度(資料長度)可由粒度(Grain)之數指定,亦可由LBA之數指定,或者其大小還可以用位元組指定。
控制器4可以NAND型快閃記憶體5內之複數個塊之每一個僅屬於一個組之方式將NAND型快閃記憶體5內之複數個塊分類成複數個組(複數個QoS域)。並且,控制器4可按每個組(QoS域)管理空閒塊列表(空閒塊池)及活動塊列表(活動塊池)。
各塊之狀態大致分為儲存有有效資料之活動塊、及未儲存有效資料之空閒塊。作為活動塊之各塊由活動塊列表管理。另一方面,作為空閒塊之各塊由空閒塊列表管理。
當自主機2接收到寫入命令時,控制器4決定應寫入來自主機2之資料之塊(寫入目標塊)及該寫入目標塊內之位置(寫入目標位置)。控制器4亦可將屬於與QoS域ID對應之QoS域之空閒塊群中之一個決定為寫入目標塊。寫入目標位置係考慮了頁寫入順序之制約及壞頁等而決定。並且,控制器4將來自主機2之資料寫入到寫入目標塊內之寫入目標位置。
再者,若該寫入目標塊整體寫滿了使用者資料,則控制器4將該寫入目標塊移動到活動塊列表(活動塊池)。並且,控制器4再次自與該QoS域對應之空閒塊列表選擇空閒塊,並將該選擇之空閒塊分配為新之寫入目標塊。
當空閒塊列表管理之剩下之空閒塊之數量低於特定策略規定之閾值以下時、或者主機2指示實施無用單元收集時,控制器4亦可開始該QoS域之無用單元收集。
該QoS域之無用單元收集中,控制器4自與該QoS域對應之活動塊群選擇複製源塊(GC源塊)及複製目標塊(GC目標塊)。選擇哪個塊作為GC候補(複製源塊),可按照主機2指定之上述策略決定,亦可由主機2指定。當亦基於策略進行選擇時,例如可選擇有效資料量最少之塊作為GC候補(複製源塊)。
圖10表示與圖9之寫入命令相對之響應。
該響應包含邏輯位址、實體位址、長度。
邏輯位址係圖9之寫入命令中包含之邏輯位址。
實體位址表示根據圖9之寫入命令而寫入有資料之NAND型快閃記憶體5內之實體存儲位置。支持實體位址API(類型#1)之快閃儲存裝置3中,該實體位址係藉由塊編號與偏移(塊內偏移)之組合來指定。塊編號係能夠唯一地識別快閃儲存裝置3內之所有塊之任意一個之標識符。當對所有塊附加了不同塊編號時,亦可直接使用該等塊編號。或者,塊編號亦可藉由晶片編號、晶片內塊編號之組合來表現。長度表示應寫入之寫入資料之長度。該長度(資料長度)可由粒度(Grain)之數指定,亦可由LBA之數指定,或者其大小還可以用位元組指定。
圖11表示實體位址API(類型#1)中使用之Trim命令。
該Trim命令係包含表示儲存有應無效之資料之實體存儲位置之塊編號及塊內偏移之命令。即,該Trim命令並非可指定如LBA之邏輯位址,而是可指定實體位址。該Trim命令包含命令ID、實體位址、長度。
命令ID係表示該命令係Trim命令之ID(命令編碼),Trim命令中包含Trim命令用之命令ID。
實體位址表示儲存有應無效化之資料之最初之實體存儲位置。支持實體位址API(類型#1)之快閃儲存裝置3中,該實體位址係藉由塊編號與偏移(塊內偏移)之組合指定。
長度表示應無效化之資料之長度。該長度(資料長度)可由粒度(Grain)之數指定,亦可由位元組指定。
控制器4使用塊管理表32管理表示複數個塊分別包含之各資料之有效/無效之標識(位圖標識)。當自主機2接收到包含表示儲存有應無效之資料之實體存儲位置之塊編號及偏移(塊內偏移)之Trim命令時,控制器4更新塊管理表32,將將與Trim命令所含之塊編號及塊內偏移對應之實體存儲位置之資料所對應之標識(位圖標識)變更為表示無效之值。
圖12表示對圖10之響應所含之實體位址進行規定之塊編號及偏移(塊內偏移)之例子。
塊編號指定某一個塊BLK。各塊BLK如圖12所示包含複數個頁(此處為頁0~頁n)。
當頁大小(各頁之使用者資料儲存區域)為16K位元組、粒度(Grain)為4 KB之大小之情形時,將該塊BLK邏輯分割成4×(n+1)個區域。
偏移+0表示頁0之最初之4 KB區域,偏移+1表示頁0之第2個4 KB區域,偏移+2表示頁0之第3個4 KB區域,偏移+3表示頁0之第4個4 KB區域。
偏移+4表示頁1之最初之4 KB區域,偏移+5表示頁1之第2個4 KB區域,偏移+6表示頁1之第3個4 KB區域,偏移+7表示頁1之第4個4 KB區域。
圖13表示根據寫入命令執行之寫入動作與相對於該寫入命令之響應所含之返回值之關係。
快閃儲存裝置3之控制器4利用空閒塊列表管理不含有效資料之空閒塊群,自該等空閒塊群中選擇一個塊(空閒塊),並將選擇之塊分配為寫入目標塊。以下假設將塊BLK#1分配為寫入目標塊之情形。控制器4按照頁0、頁1、頁2、…頁n之順序將資料以頁單位寫入塊BLK#1。
於圖13中,假設於塊BLK#1之頁0中已寫入16K位元組之資料之狀態下,自主機2接收到指定邏輯位址(LBAx)及長度(=4)之寫入命令之情形。控制器4將塊BLK#1之頁1決定為寫入目標位置,將自主機2接收之16K位元組之寫入資料寫入到塊BLK#1之頁1。然後,控制器4將相對於該寫入命令之響應(邏輯位址、塊編號、偏移(塊內偏移)、長度)返回給主機2。該情形時,邏輯位址係LBAx,塊編號係BLK#1,偏移(塊內偏移)為+5,長度為4。
圖14表示跳過不良頁(壞頁)之寫入動作。
於圖14中,假設於塊BLK#1之頁0、頁1中已寫滿資料之狀態下,自主機2接收到指定邏輯位址(LBAx+1)及長度(=4)之寫入命令之情形。若塊BLK#1之頁2為不良頁,則控制器4將塊BLK#1之頁3決定為寫入目標位置,並將自主機2接收之16K位元組之寫入資料寫入到塊BLK#1之頁3。然後,控制器4將相對於該寫入命令之響應(邏輯位址、塊編號、偏移(塊內偏移)、長度)返回給主機2。該情形時,邏輯位址為LBAx+1,塊編號係BLK#1,偏移(塊內偏移)為+12,長度係4。
圖15表示跳過不良頁之寫入動作之另一例。
於圖15中,假設跨過夾著不良頁之2個頁而寫入資料之情形。以下,假設塊BLK#2之頁0、頁1中已寫滿資料,且寫入緩衝器31中殘留未寫入之8K位元組之寫入資料。於此狀態下,若接收到指定邏輯位址(LBAy)及長度(=6)之寫入命令,則控制器4使用未寫入之8K位元組寫入資料、及自主機2新接收之24K位元組寫入資料內之最初之8K位元組寫入資料,準備與頁大小對應之16K位元組寫入資料。然後,控制器4將上述準備之16K位元組寫入資料寫入到塊BLK#2之頁2。
若塊BLK#2之下一頁3為不良頁,則控制器4將塊BLK#2之頁4決定為下一寫入目標位置,並將自主機2接收到之24K位元組寫入資料內之剩下之16K位元組寫入資料寫入到塊BLK#2之頁4。
並且,控制器4將相對於該寫入命令之響應(邏輯位址、塊編號、偏移(塊內偏移)、長度)返回給主機2。該情形時,該響應亦可包含LBAy、塊編號(=BLK#2)、偏移(=+10)、長度(=2)、塊編號(=BLK#2)、偏移(=+16)、長度(=4)。
圖16、圖17表示將邏輯位址與資料之對寫入到塊內之頁之動作。
各塊中,各頁亦可包含用於儲存使用者資料之使用者資料區域及用於儲存管理資料之冗餘區域。頁大小為16 KB+α。
控制器4將4 KB使用者資料及與該4 KB使用者資料對應之邏輯位址(例如LBA)兩者寫入到寫入目標塊BLK。此種情形時,如圖16所示,亦可將分別包含LBA及4 KB使用者資料之4個資料集寫入同一頁塊內偏移亦可表示集合邊界。
或者,如圖17所示,亦可將4個4 KB使用者資料寫入到頁內之使用者資料區域,將與這4個4 KB使用者資料對應之4個LBA寫入到該頁內之冗餘區域。
圖18表示使用超級塊時之塊編號與偏移(塊內偏移)之關係。以下,塊內偏移亦僅作為偏移參照。
此處,為了簡化圖示,假設某一個超級塊SB#1由4個塊BLK#11、BLK#21、BLK#31、BLK#41構成之情形。控制器4按照塊BLK#11之頁0、塊BLK#21之頁0、塊BLK#31之頁0、塊BLK#41之頁0、塊BLK#11之頁1、塊BLK#21之頁1、塊BLK#31之頁1、塊BLK#41之頁1、…之順序寫入資料。
偏移+0表示塊BLK#11之頁0之最初之4 KB區域,偏移+1表示塊BLK#11之頁0之第2個4 KB區域,偏移+2表示塊BLK#11之頁0之第3個4 KB區域,偏移+3表示塊BLK#11之頁0之第4個4 KB區域。
偏移+4表示塊BLK#21之頁0之最初之4 KB區域,偏移+5表示塊BLK#21之頁0之第2個4 KB區域,偏移+6表示塊BLK#21之頁0之第3個4 KB區域,偏移+7表示塊BLK#21之頁0之第4個4 KB區域。
同樣地,偏移+12表示塊BLK#41之頁0之最初之4 KB區域,偏移+13表示塊BLK#41之頁0之第2個4 KB區域,偏移+14表示塊BLK#41之頁0之第3個4 KB區域,偏移+15表示塊BLK#41之頁0之第4個4 KB區域。
偏移+16表示塊BLK#11之頁1之最初之4 KB區域,偏移+17表示塊BLK#11之頁1之第2個4 KB區域,偏移+18表示塊BLK#11之頁1之第3個4 KB區域,偏移+19表示塊BLK#11之頁1之第4個4 KB區域。
偏移+20表示塊BLK#21之頁1之最初之4 KB區域,偏移+21表示塊BLK#21之頁1之第2個4 KB區域,偏移+22表示塊BLK#21之頁1之第3個4 KB區域,偏移+23表示塊BLK#21之頁1之第4個4 KB區域。
同樣地,偏移+28表示塊BLK#41之頁1之最初之4 KB區域,偏移+29表示塊BLK#41之頁1之第2個4 KB區域,偏移+30表示塊BLK#41之頁1之第3個4 KB區域,偏移+31表示塊BLK#41之頁1之第4個4 KB區域。
例如,將與指定某個LBA(LBAx)之寫入命令對應之4K位元組資料寫入到與偏移+8對應之位置時,控制器4亦可將邏輯位址(=LBAx)、塊編號(=SB#1)、偏移(=+8)、長度(=1)作為相對於該寫入命令之響應返回給主機2。
圖19之順序圖表示由主機2及支持實體位址API(類型#1)之快閃儲存裝置3執行之寫入動作處理之順序。
主機2將包含QoS域ID、LBA、長度之寫入命令發送給快閃儲存裝置3。快閃儲存裝置3之控制器4接收到該寫入命令時,控制器4決定應寫入來自主機2之寫入資料之寫入目標塊及該寫入目標塊內之位置。更詳細來說,控制器4自空閒塊列表中選擇一個空閒塊,將選擇之空閒塊分配為寫入目標塊(步驟S11)。即,將該選擇之空閒塊及該選擇之空閒塊內之可利用之最初之頁決定為應寫入來自主機2之寫入資料之寫入目標塊及該寫入目標塊內之位置。若寫入目標塊業已分配,則無需執行該步驟11中之寫入目標塊分配處理。將業已分配之寫入目標塊內之可利用之下一頁決定為應寫入來自主機2之寫入資料之寫入目標塊內之位置。
控制器4亦可管理與複數個QoS域對應之複數個空閒塊列表。於與某個QoS域對應之空閒塊列表中,亦可僅登錄對該QoS域預約之塊群。此種情形時,於步驟S12中,控制器4亦可選擇與寫入命令之QoS域ID指定之QoS域對應之空閒塊列表,自該選擇之空閒塊列表中選擇一個空閒塊,並將該選擇之空閒塊分配為寫入目標塊。藉此,可防止與不同QoS域對應之資料混雜於同一塊之情形。
控制器4將自主機2接收之寫入資料寫入到寫入目標塊(步驟S12)。於步驟S12中,控制器4將邏輯位址(此處為LBA)及寫入資料兩者寫入到寫入目標塊。
控制器4更新塊管理表32,將與寫入之資料對應之位圖標識(即,與寫入有該資料之實體存儲位置之實體位址對應之位圖標識)自0變更為1(步驟S13)。例如,如圖20所示,假設將開始LBA為LBAx之16K位元組更新資料寫入到與塊BLK#1之偏移+4~+7對應之實體存儲位置之情形。此種情形時,如圖21所示,於塊BLK#1用之塊管理表中,將與偏移+4~+7對應之位圖標分別自0變更為1。
控制器4將相對於該寫入命令之響應返回給主機2(步驟S14)。例如,如圖20所示,若將開始LBA為LBAx之16K位元組更新資料寫入到與塊BLK#1之偏移+4~+7對應之實體存儲位置,則自控制器4將包含LBAx、塊編號(=BLK1)、偏移(=+4)、長度(=4)之響應發送給控制器4。
當主機2接收到該響應時,主機2更新主機2管理之LUT,於與寫入之寫入資料對應之各邏輯位址上映射實體位址。如圖22所示,LUT包含與複數個邏輯位址(例如LBA)分別對應之複數個入口。與某個邏輯位址(例如某個LBA)對應之入口中,儲存有表示儲存有與該LBA對應之資料之NAND型快閃記憶體5內之位置(實體存儲位置)之實體位址PBA、即塊編號、偏移(塊內偏移)。如圖20所示,若將開始LBA為LBAx之16K位元組更新資料寫入到與塊BLK#1之偏移+4~+7對應之實體存儲位置,則如圖22所示,更新LUT,於與LBAx對應之入口儲存BLK#1、偏移+4,於與LBAx+1對應之入口儲存BLK#1、偏移+5,於與LBAx+2對應之入口儲存BLK#1、偏移+6,於與LBAx+3對應之入口儲存BLK#1、偏移+7。
之後,主機2向快閃儲存裝置3發送Trim命令,該Trim命令用於使因上述更新資料之寫入而變得無用之以前之資料無效化 (步驟S21)。如圖20所示,當以前之資料係儲存在與塊BLK#0之偏移+0、偏移+1、偏移+2、偏移+3對應之位置時,如圖23所示,自主機2將指定塊編號(=BLK#0)、偏移(=+0)、長度(=4)之Trim命令發送給快閃儲存裝置3。快閃儲存裝置3之控制器4根據該Trim命令,更新塊管理表32(步驟S15)。於步驟S15中如圖23所示,於塊BLK#0用之塊管理表中,將與偏移+0~+3對應之位圖標識分別自1變更為0。
圖24表示實體位址API(類型#1)中使用之讀取命令。
讀取命令係向快閃儲存裝置3請求資料讀出之命令。該讀取命令包含命令ID、實體位址PBA、長度、傳輸目標指針。
命令ID係表示該命令係讀取命令之ID(命令編碼),讀取命令中包含讀取命令用之命令ID。
實體位址PBA表示應讀出資料之最初之實體存儲位置。實體位址PBA由塊編號、偏移(塊內偏移)指定。
長度表示應讀取之資料之長度。該資料長度可由Grain之數指定。
傳輸目標指針表示應傳輸讀出資料之主機2內之記憶體上之位置。
一個讀取命令可指定複數個實體位址PBA(塊編號、偏移)與長度之組。
圖25表示與實體位址API(類型#1)對應之讀取動作。
此處,假設自主機2接收到指定塊編號(=BLK#2)、偏移(=+5)、長度(=3)之讀取命令之情形。快閃儲存裝置3之控制器4基於塊編號(=BLK#2)、偏移(=+5)、長度(=3)自BLK#2讀取資料d1~d3。此種情形時,控制器4自BLK#2之頁1讀取1個頁大小之資料,並自該讀取資料中抽出資料d1~資料d3。接著,控制器4將資料d1~資料d3傳輸到傳輸目標指針指定之主機記憶體上。
圖26之順序圖表示與實體位址API(類型#1)對應之讀取處理之順序。
主機2參照主機2管理之LUT,將來自使用者應用程式之讀取請求所含之邏輯位址轉換成塊編號、偏移。然後,主機2將指定該塊編號、偏移、長度之讀取命令發送給快閃儲存裝置3。
當快閃儲存裝置3之控制器4自主機2接收到讀取命令時,控制器4將與該讀取命令指定之塊編號對應之塊決定為讀取對象之塊,並基於該讀取命令指定之偏移決定讀取對象之頁(步驟S31)。於步驟S31中,控制器4亦可首先將讀取命令指定之偏移除以表示頁大小之粒度之數(此處為4)。然後,控制器4亦可將藉由該除算所得之商及餘數分別決定為讀取對象之頁編號及讀取對象之頁內偏移位置。
控制器4自NAND型快閃記憶體5讀取由塊編號、偏移、長度規定之資料(步驟S32),並將該讀取資料發送給主機2。
圖27表示實體位址API(類型#1)中使用之無用單元收集(GC)控制命令。
GC控制命令亦可包含命令ID、策略、源QoS域ID、目標QoS域ID等。
命令ID係表示該命令係GC控制命令之ID(命令編碼),GC控制命令中包含GC控制命令用之命令ID。
策略係指定用於選擇GC候補塊(GC源塊)之條件(GC策略)之參數。快閃儲存裝置3之控制器4支持複數個GC策略。
控制器4支持之GC策略中亦可包含將有效資料量少之塊優先選擇為GC候補塊(GC源塊)之策略(Greedy)。
又,控制器4支持之GC策略中亦可包含相比具有高更新頻度之資料(熱資料)集中之塊,優先將具有低更新頻度之資料(冷資料)集中之塊選擇為GC候補塊(GC源塊)之策略。
進而,GC策略亦可指定GC開始條件。GC開始條件亦可表示例如剩餘空閒塊之個數。
控制器4利用活動塊列表管理包含有效資料之塊群,當執行GC時,基於GC控制命令指定之GC策略,自活動塊列表管理之塊群中選擇一個以上GC候補塊(GC源塊)。
源QoS域ID係指定應將哪個QoS域設為GC源之參數。控制器4自源QoS域ID指定之QoS域所屬之塊群、即與該QoS域對應之活動塊列表中,選擇一個以上GC候補塊(GC源塊)。
目標QoS域ID係指定應將哪個QoS域設為GC目標之參數。控制器4可選擇目標QoS域ID指定之QoS域所屬之空閒塊群內之一個以上空閒塊作為GC目標塊。
源QoS域ID及目標QoS域ID可指定相同QoS域,亦可指定彼此不同之QoS域。即,源QoS域ID及目標QoS域ID分別係指定複數個QoS域中之任意一個之參數。
控制器4亦可於與源QoS域對應之剩餘空閒塊之數量變成策略指定之閾值以下時,開始GC。若接收到包含指定GC強制執行之策略之GC控制命令,則控制器4亦可於自主機2接收到該GC控制命令時立即開始GC。
圖28表示實體位址API(類型#1)中使用之GC用回叫命令。
GC用回叫命令用於向主機2通知表示藉由GC複製之有效資料之邏輯位址及表示該有效資料之複製目標位置之塊編號及偏移。
GC用回叫命令亦可包含命令ID、邏輯位址、長度、目標實體位址、源實體位址(可選)。
命令ID係表示該命令係GC用回叫命令之ID(命令編碼),GC用回叫命令中包含GC用回叫命令用之命令ID。
邏輯位址表示藉由GC自GC源塊複製到GC目標塊之有效資料之邏輯位址。
長度表示該複製之資料之長度。該資料長度亦可由粒度(Grain)之數指定。
目標實體位址表示複製了有效資料之GC目標塊內之位置。目標實體位址由塊編號、偏移(塊內偏移)指定。
源實體位址(可選)表示儲存有有效資料之GC源塊內之位置。源實體位址由塊編號、偏移(塊內偏移)指定。
圖29之順序圖表示與實體位址API(類型#1)對應之無用單元收集(GC)動作之步驟。
快閃儲存裝置3之控制器4基於主機2指定之策略,自源QoS域ID指定之QoS域所屬之塊群中,選擇有效資料與無效資料混雜於一起之一個以上GC源塊(複製源塊)(步驟S41)。接著,控制器4自目標QoS域ID指定之QoS域所屬之空閒塊群選擇一個以上空閒塊,並將選擇之空閒塊分配為GC目標塊(複製目標塊)(步驟S42)。
控制器4將GC源塊(複製源塊)內之所有有效資料複製到GC目標塊(複製目標塊)(步驟S43)。於步驟S43中,控制器4不僅複製GC源塊(複製源塊)內之有效資料,還將該有效資料及與該有效資料對應之邏輯位址兩者自GC源塊(複製源塊)複製到GC目標塊(複製目標塊)。藉此,可向GC目標塊(複製目標塊)內保存資料與邏輯位址之對。
並且,控制器4將複製之有效資料之邏輯位址、及表示複製了該有效資料之GC目標塊(複製目標塊)內之位置之目標實體位址(塊編號、偏移(塊內偏移)),使用GC用回叫命令通知主機2(步驟S44)。再者,於步驟S44中,控制器4亦可不僅將複製之有效資料之邏輯位址及目標實體位址,還將源實體位址亦通知主機2。
當主機2接收到該GC用回叫命令時,主機2更新由主機2管理之LUT,並對與複製之有效資料對應之各邏輯位址映射目標實體位址(步驟S51)。
圖30表示用於執行廢料收集(GC)之資料複製動作之例子。
圖30中,假設將儲存在與GC源塊(此處為塊BLK#50)之偏移+4對應之位置之有效資料(LBA=10),複製到與GC目標塊(此處為塊BLK#100)之偏移+0對應之位置,並將儲存在與GC源塊(此處為塊BLK#50)之偏移+10對應之位置之有效資料(LBA=20),複製到與GC目標塊(此處為塊BLK#100)之偏移+1對應之位置。此種情形時,控制器4將{LBA10、BLK#100、偏移(=+0)、LBA20、BLK#100、偏移(=+1)}通知主機(GC用回叫處理)。
圖31表示基於圖30之資料複製動作之結果而更新之主機2之LUT之內容。
該LUT中,與LBA10對應之塊編號及偏移自BLK#50、偏移(=+4),更新為BLK#100、偏移(=+0)。同樣地,與LBA20對應之塊編號及偏移自BLK#50、偏移(=+10),更新為BLK#100、偏移(=+1)。
更新LUT之後,主機2亦可將指定BLK#50及偏移(=+4)之Trim命令發送給快閃儲存裝置3,將儲存在與BLK#50之偏移(=+4)對應之位置之資料無效化。進而,主機2亦可將指定BLK#50及偏移(=+10)之Trim命令發送給快閃儲存裝置3,將儲存在與BLK#50之偏移(=+10)對應之位置之資料無效化。
圖32表示相對於寫入命令之響應與GC用回叫處理之關係。
於控制器4複製與某個邏輯位址對應之有效資料之期間,有時會發生自主機2接收到指定該邏輯位址之寫入命令之情形。
圖32中,假設了於圖30之資料複製動作(與LBA10對應之資料複製動作)執行過程中,自主機2接收到指定LBA10之寫入命令之情形。
控制器4將自主機2接收之寫入資料寫入到寫入目標塊(此處,寫入到與BLK#3之偏移+0對應之位置)。並且,控制器4將{LBA10、BLK#3、偏移(=+0)}通知主機2。
主機2更新LUT,將與LBA10對應之塊編號及偏移,自BLK#50、偏移(+4)變更為BLK#3、偏移(+0)。
若之後自控制器4向主機2通知LBA10之目標實體位址,則會有將表示儲存有與LBA10對應之最新資料之位置之塊編號及偏移(BLK#3、偏移(+0)),誤變更為與LBA10對應之目標實體位址(此處為BLK#100、偏移(=+0))之可能性。
於支持實體位址API(類型#1)之快閃儲存裝置3中,控制器4不僅將LBA10及目標實體位址(BLK#100、偏移(=+0)),還將源實體位址(BLK#50、偏移(=+4))通知主機2。主機2於源實體位址(BLK#50、偏移(=+4))、與利用LUT對LBA10當前映射之塊編號、偏移不一致時,不更新LUT。藉此,可防止將表示儲存有與LBA10對應之最新資料之位置之塊編號及偏移(BLK#3、偏移(+0)),誤變更為與LBA10對應之目標實體位址(此處為BLK#100、偏移(=+0))之情形。
圖33表示實體位址API(類型#1)中使用之無用單元收集(GC)控制命令之另一例。
該圖33之GC控制命令亦可代替指定源QoS域ID,而是指定源裝置ID及源QoS域ID之對。進而,該圖33之GC控制命令亦可代替指定目標QoS域ID,而是指定目標裝置ID及目標QoS域ID之對。藉此,可使某個快閃儲存裝置3作為GC源動作,使另一快閃儲存裝置3作為GC目標動作。當源裝置ID與目標裝置ID相同時,於一個快閃儲存裝置3內執行GC。
圖34表示實體位址API(類型#1)中使用之GC用回叫命令之另一例。
圖34之GC用回叫命令包含目標裝置ID及目標實體位址之對來代替目標實體位址。又,圖34之GC用回叫命令亦可包含源裝置ID及源實體位址之對(可選)來代替源實體位址(可選)。
以下,假設使裝置ID為1之快閃儲存裝置3作為GC源動作,使裝置ID為2之快閃儲存裝置3作為GC目標動作之情形。主機2亦可將指定源裝置ID#1及目標裝置ID#2之GC控制命令,發送給裝置ID#1之快閃儲存裝置3、及裝置ID#2之快閃儲存裝置3。
裝置ID#1之快閃儲存裝置3自源QoS域ID指定之QoS域所屬之塊群中選擇GC源塊,將GC源塊內之有效資料及該有效資料之邏輯位址發送給目標裝置ID指定之快閃儲存裝置(裝置ID#2之快閃儲存裝置)。將GC源塊內之有效資料及該有效資料之邏輯位址例如經由圖1之介面50自裝置ID#1之快閃儲存裝置3傳輸到裝置ID#2之快閃儲存裝置3。
裝置ID#2之快閃儲存裝置3自目標QoS域ID指定之QoS域所屬之空閒塊群中選擇GC目標塊,並將經由開關1接收之有效資料及邏輯位址寫入到GC目標塊(複製)。
裝置ID#2之快閃儲存裝置3將複製之有效資料之邏輯位址、及複製了該有效資料之目標實體位址(塊編號、偏移)利用GC用回叫命令通知主機2。
裝置ID#1之快閃儲存裝置3將複製之有效資料之邏輯位址、及儲存有該有效資料之源實體位址(塊編號、偏移)利用GC用回叫命令通知主機2。
圖35表示與實體位址API(類型#1)對應之寫入/讀取/GC動作。
首先,對寫入來自主機2之資料之主機寫入動作進行說明。
(1)控制器4自主機2接收LBA及寫入資料。
(2)控制器4將LBA及寫入資料兩者寫入到寫入目標塊。當未分配寫入目標塊時,控制器4自空閒塊列表中選擇一個空閒塊,並將該選擇之空閒塊分配為新之寫入目標塊。然後,控制器4將LBA及寫入資料兩者寫入到該新之寫入目標塊。
(3)控制器4將該LBA、及表示寫入有該寫入資料之寫入目標塊內之位置之實體位址PBA通知主機2。該實體位址PBA係由塊編號及偏移表示。若寫入目標塊全部寫滿資料,則控制器4將該寫入目標塊登錄到活動塊列表中。
接著,對讀取動作進行說明。
(4)主機2按照由主機2管理之LUT,將來自使用者應用程式之讀取請求所含之LBA轉換成讀取用實體位址PBA(塊編號、偏移)。
(5)控制器4基於自主機2接收之讀取用實體位址PBA(塊編號、偏移),將具有該塊編號之塊決定為讀取對象之塊。讀取對象之塊係由活動塊列表管理之塊群(活動塊)之任一個、或者當前之GC源塊、或者當前之寫入目標塊。然後,控制器4基於偏移自讀取對象之塊中讀取資料。
接著,對GC動作進行說明。
(6)控制器4選擇GC源塊(複製源塊)及GC目標塊(複製目標塊),並將GC源塊內儲存之有效資料及該有效資料之LBA兩者複製到GC目標塊。
(7)控制器4將複製之有效資料之LBA、及表示複製了該有效資料之GC目標塊內之位置之PBA(塊編號、偏移)兩者通知主機2。
或者,控制器4亦可將複製之有效資料之LBA、及表示複製了該有效資料之GC目標塊內之位置之PBA(塊編號、偏移)、表示儲存有該有效資料之GC源塊內之位置之PBA(塊編號、偏移)通知主機2。
<實體位址API(類型#2)之詳細> 接下來,參照圖36~圖50,對實體位址API(類型#2)進行說明。
圖36表示傳統型SSD與主機之間之任務分擔、及支持實體位址API(類型#2)之快閃儲存裝置3與主機2之間之任務分擔。
圖36之右部分表示包含支持實體位址API(類型#2)之快閃儲存裝置3及主機2之電腦系統整體之層級構造。
主機(伺服器)2中,執行用於向複數個最終使用者提供複數個虛擬機之虛擬機服務401。虛擬機服務401上之各虛擬機中,執行由對應之最終使用者使用之操作系統及使用者應用程式402。
又,主機(伺服器)2中,執行與複數個使用者應用程式402對應之複數個I/O服務403。該等I/O服務403中亦可包含基於LBA之塊I/O服務、鍵值記憶體服務等。各I/O服務403包含對各邏輯位址與快閃儲存裝置3之各塊編號之間之映射進行管理之塊級LUT。此處,所謂邏輯位址係指能夠識別存取對象之資料之標識符。該邏輯位址可為指定邏輯位址空間上之位置之邏輯塊位址(LBA),或者亦可為鍵值記憶體之鍵值(標籤),還可為鍵值之哈希值。
基於LBA之塊I/O服務中,亦可使用對各邏輯位址(LBA)與快閃儲存裝置3之各塊編號之間之映射進行管理之塊級LUT。
鍵值記憶體服務中,亦可使用對各邏輯位址(即,如鍵值之標籤)、與儲存有與上述邏輯位址(即,如鍵值之標籤)對應之資料之快閃儲存裝置3之各塊編號之間之映射進行管理之塊級LUT。該塊級LUT中,亦可管理標籤、儲存有由該標籤識別之資料之塊編號、及該資料之資料長度之對應關係。
各最終使用者可選擇應使用之定址方法(LBA、鍵值記憶體之鍵值等)。
上述各塊級LUT並非將來自使用者應用程式402之各邏輯位址轉換成快閃儲存裝置3用之各邏輯位址,而是將來自使用者應用程式402之各邏輯位址轉換成快閃儲存裝置3之各塊編號。即,上述各塊級LUT係將快閃儲存裝置3用之邏輯位址轉換成塊編號之表、與應用級位址轉換表統合(合併)而成之表。
又,各I/O服務403包含GC塊選擇功能。GC塊選擇功能可使用對應之塊級LUT來管理各塊之有效資料量,藉此可選擇GC源塊。
主機(伺服器)2中,亦可每個上述QoS域中均存在I/O服務403。屬於某個QoS域之I/O服務403對由對應之QoS域內之使用者應用程式402使用之各邏輯位址、與屬於分配給對應之QoS域之資源組之塊群之各塊編號之間之映射進行管理。
自主機(伺服器)2向快閃儲存裝置3之命令之發送、及自快閃儲存裝置3向主機(伺服器)2之命令結束之響應等之返回,係經由主機(伺服器)2及快閃儲存裝置3中分別存在之I/O佇列500而執行。該等I/O佇列500亦可分類成與複數個QoS域對應之複數個佇列組。
快閃儲存裝置3包含與複數個QoS域對應之複數個寫入緩衝器(WB)601、與複數個QoS域對應之複數個塊內LUT602A、與複數個QoS域對應之複數個無用單元收集(GC)功能603A、及NAND型快閃記憶體(NAND快閃陣列)603。
於該圖36之右部分所示之構成中,上位層級(主機2)可識別塊邊界,因此可考慮塊邊界/塊大小而將使用者資料寫入到各塊。即,主機2可識別NAND型快閃記憶體(NAND快閃陣列)603之各個塊,藉此,可進行例如向一個塊整體一齊寫入資料、藉由刪除或者更新使一個塊內之資料全部無效化等控制。結果,能夠不易產生一個塊內混雜有效資料及無效資料之狀況。因此,可降低需要執行GC之頻度。藉由降低GC之頻度,能降低寫入擴增,提昇快閃儲存裝置3之性能、實現快閃儲存裝置3之壽命最大化。如此,上位層級(主機2)能夠識別塊編號之構成有用。
另一方面,因頁寫入順序制約,當前可寫入之頁於每一塊中僅有1頁。因此,使上位層級可見頁編號,相比使上位層級可見塊編號來說並不有用。
圖37表示主機2管理之塊級LUT(塊級位址轉換表)、及支持實體位址API(類型#2)之快閃儲存裝置3管理之塊內LUT(塊內位址轉換表)。
塊級LUT對各邏輯位址、及與快閃儲存裝置3之複數個塊分別對應之各塊編號之間之映射進行管理。該塊級LUT係將某個邏輯位址轉換成某個塊編號BLK#之表。
於快閃儲存裝置3中,管理與複數個塊分別對應之複數個塊內LUT。各塊內LUT對各邏輯位址、與對應之塊內之各塊內實體位址(塊內偏移)之間之映射進行管理。各塊內LUT係將某個邏輯位址轉換成某個塊內實體位址(塊內PBA)之表。塊內實體位址(塊內PBA)如上所述係由塊內偏移表示。
位址轉換按以下方式執行。
例如,於讀取動作中,主機2使用某個邏輯位址(例如某個LBA),參照塊級LUT,將該邏輯位址(LBA)轉換成塊編號BLK#。將該邏輯位址及塊編號BLK#自主機2發送給快閃儲存裝置3。於支持實體位址API(類型#2)之快閃儲存裝置3中,為了不對各塊分配特定之邏輯位址範圍,便能對任意塊儲存與任意邏輯位址對應之資料,將該邏輯位址自身與塊編號BLK#一齊自主機2發送給快閃儲存裝置3。
於快閃儲存裝置3中,控制器4選擇與塊編號BLK#對應之塊內LUT。例如,若來自主機2之塊編號BLK#表示塊編號BLK#0,則選擇與塊編號BLK#0對應之塊內LUT,若來自主機2之塊編號BLK#表示塊編號BLK#1,則選擇與塊編號BLK#1對應之塊內LUT,若來自主機2之塊編號BLK#表示塊編號BLK#2,則選擇與塊編號BLK#2對應之塊內LUT。
選擇之塊內LUT係藉由來自主機2之邏輯位址參照。並且,與該邏輯位址對應之塊內PBA係自選擇之塊內LUT獲取。
圖38表示實體位址API(類型#2)中使用之寫入命令。
寫入命令係向快閃儲存裝置3請求資料寫入之命令。該寫入命令亦可包含命令ID、塊編號BLK#、邏輯位址、長度等。
命令ID係表示該命令係寫入命令之ID(命令編碼),寫入命令中包含寫入命令用之命令ID。
塊編號BLK#係能夠唯一地識別應寫入資料之標識符(塊位址)。
邏輯位址係用於識別應寫入之寫入資料之標識符。該邏輯位址如上所述可為LBA,亦可為鍵值記憶體之鍵值,還可為鍵值之哈希值。當邏輯位址係LBA時,該寫入命令所含之邏輯位址(開始LBA)表示應寫入寫入資料之邏輯位置(最初之邏輯位置)。
長度表示應寫入之寫入資料之長度。該長度(資料長度)可由粒度(Grain)之數指定,可由LBA之數指定,或者其大小還可由位元組指定。
當自主機2接收到寫入命令時,控制器4決定具有寫入命令指定之塊編號之塊內之寫入目標位置。該寫入目標位置係考慮了頁寫入順序之制約及壞頁等而決定。並且,控制器4將來自主機2之資料寫入到具有寫入命令指定之塊編號之該塊內之該寫入目標位置。
圖39表示實體位址API(類型#2)中使用之Trim命令。
該Trim命令係包含儲存有應無效之資料之塊之塊編號及該資料之邏輯位址之命令。該Trim命令包含命令ID、塊編號BLK#、邏輯位址、長度。
命令ID係表示該命令係Trim命令之ID(命令編碼),Trim命令中包含Trim命令用之命令ID。
塊編號表示儲存有應無效化之資料之塊。
邏輯位址表示應無效化之資料之最初之邏輯位置。
長度表示應無效化之資料之長度。該長度(資料長度)可由邏輯位址之數指定,可由粒度(Grain)之數指定,還可由位元組指定。
控制器4使用塊管理表32管理表示複數個塊分別所含之各資料之有效/無效之標識(位圖標識)。當自主機2接收到包含表示儲存有應無效之資料之塊之塊編號及邏輯位址之Trim命令時,控制器4更新塊管理表32,將與Trim命令所含之塊編號及邏輯位址特定之塊內實體位址對應之標識(位圖標識)變更為表示無效之值。
圖40之順序圖表示與實體位址API(類型#2)對應之寫入處理之順序。
主機2首先自身選擇應用於寫入之塊(空閒塊)、或者向快閃儲存裝置3發送塊分配命令,請求快閃儲存裝置3分配空閒塊。然後,主機2將包含自身選擇之塊之塊編號BLK#(或者快閃儲存裝置3分配之空閒塊之塊編號BLK#)、邏輯位址(LBA)、及長度之寫入命令發送給快閃儲存裝置3(步驟S20A)。
當快閃儲存裝置3之控制器4接收到該寫入命令時,控制器4決定應寫入來自主機2之寫入資料之具有該塊編號BLK#之塊(寫入目標塊BLK#)內之寫入目標位置,並將寫入資料寫入到該寫入目標塊BLK#之寫入目標位置 (步驟S11A)。於步驟S11A中,控制器4亦可將邏輯位址(此處為LBA)及寫入資料兩者寫入到寫入目標塊。
控制器4更新與寫入目標塊BLK#對應之塊內LUT,將表示寫入目標位置之偏移(塊內偏移)映射到該邏輯位址(步驟S12A)。
接著,控制器4更新與寫入目標塊BLK#對應之塊管理表32,將與寫入之資料對應之位圖標識(即,與寫入有該資料之偏移(塊內偏移)對應之位圖標識)自0變更為1(步驟S13A)。
例如,如圖41所示,假設將開始LBA為LBAx之16K位元組更新資料寫入到與塊BLK#1之偏移+4~+7對應之實體存儲位置之情形。此種情形時,如圖42所示,於塊BLK#1用之塊內LUT中,對LBAx~LBAx+3映射偏移+4~+7。又,如圖43所示,於塊BLK#1用之塊管理表中,將與偏移+4~+7對應之位圖標識分別自0變更為1。
控制器4將相對於該寫入命令之響應(成功/失敗)返回給主機2(步驟S14A)。
當主機2接收到該響應時,主機2更新由主機2管理之塊級LUT,並將寫入目標塊BLK#之塊編號BLK#映射到與寫入之寫入資料對應之邏輯位址(步驟S21A)。如圖44所示,塊級LUT包含與複數個邏輯位址(例如LBA)分別對應之複數個入口。於與某個邏輯位址(例如某個LBA)對應之入口,儲存有儲存了與該LBA對應之資料之NAND型快閃記憶體5之塊編號。如圖41所示,若將開始LBA為LBAx之16K位元組更新資料寫入到塊BLK#1,如圖44所示,更新塊級LUT,將與LBAx~LBAx+3對應之塊編號自BLK#0變更為BLK#1。
之後,如圖40所示,主機2將用於使因上述更新資料之寫入而變得無用之以前之資料無效化之Trim命令發送給快閃儲存裝置3。快閃儲存裝置3之控制器4根據該Trim命令,更新塊內LUT、塊管理表(步驟S15A、S16A)。
若如圖41所示,以前之資料儲存在塊BLK#0時,如圖45所示,將指定塊編號(=BLK#0)、LBAx、長度(=4)之Trim命令自主機2發送給快閃儲存裝置3。快閃儲存裝置3之控制器4根據該Trim命令,更新與BLK#0對應之塊內LUT,將表示各LBAx~LBAx+3與各偏移+1~+3之間之映射之資訊刪除。此種情形時,控制器4亦可將上述LBAx~LBAx+3及偏移+1~+3變更為表示無效之值(null)。進而,控制器4更新與BLK#0對應之塊管理表32,將與偏移+0~+3對應之位圖標識分別自1變更為0。
圖46表示實體位址API(類型#2)中使用之讀取命令。
讀取命令係向快閃儲存裝置3請求資料讀出之命令。該讀取命令包含命令ID、塊編號BLK#、邏輯位址、長度、傳輸目標指針。
命令ID係表示該命令係讀取命令之ID(命令編碼),讀取命令中包含讀取命令用之命令ID。
塊編號BLK#表示儲存有應讀取之資料之塊之塊編號。邏輯位址係應讀取之資料之邏輯位址。
長度表示應讀取之資料之長度。該資料長度可由LBA之數表示,亦可由Grain之數表示。
傳輸目標指針表示應傳輸讀出之資料之主機2內之記憶體上之位置。
圖47之順序圖表示與實體位址API(類型#2)對應之讀取動作。
主機2參照由主機2管理之塊內LUT,將來自使用者應用程式之讀取請求所含之邏輯位址(LBA)轉換成塊編號。並且,主機2將指定該塊編號、LBA、長度之讀取命令發送給快閃儲存裝置3。
當快閃儲存裝置3之控制器4自主機2接收到讀取命令時,控制器4選擇與該讀取命令指定之塊編號對應之塊內LUT,使用讀取命令內之LBA,參照該選擇之塊內LUT,獲取與該LBA對應之偏移(塊內偏移)(步驟S31A)。控制器4基於讀取命令指定之塊編號、及獲取之偏移(塊內偏移),自NAND型快閃記憶體5中讀取與該LBA對應之資料(步驟S32A),並將該讀取資料發送給主機2。
圖48表示實體位址API(類型#2)中使用之無用單元收集(GC)控制命令。
GC控制命令用於將GC源塊編號及GC目標塊編號通知快閃儲存裝置3。主機2對各塊之有效資料量/無效資料量進行管理,可選擇有效資料量更少之若干塊作為GC源塊。又,主機2管理空閒塊列表,可選擇若干空閒塊作為GC目標塊。該GC控制命令亦可包含命令ID、GC源塊編號、GC目標塊編號等。
命令ID係表示該命令係GC控制命令之ID(命令編碼),GC控制命令中包含GC控制命令用之命令ID。
GC源塊編號係表示GC源塊之塊編號。主機2可指定應將哪個塊設為GC源塊。主機2亦可將複數個GC源塊編號設定於一個GC控制命令。
GC目標塊編號係表示GC目標塊之塊編號。主機2可指定應將哪個塊設為GC目標塊。主機2亦可將複數個GC目標塊編號設定於一個GC控制命令。
圖49表示實體位址API(類型#2)中使用之GC用回叫命令。
GC用回叫命令用於將包含邏輯位址(LBA)與目標塊編號之複數個對之列表通知主機2。某個對所含之邏輯位址(LBA)係複製之有效資料之邏輯位址。該對所含之目標塊編號係複製了該有效資料之GC目標塊之塊編號。該GC用回叫命令亦可僅於藉由GC控制命令指定了複數個GC源塊編號及複數個目標塊編號時,才自快閃儲存裝置3發送給主機2。
圖50之順序圖表示與實體位址API(類型#2)對應之無用單元收集(GC)動作之步驟。
例如,主機2於主機2管理之空閒塊列表所含之剩餘之空閒塊之數量降低到閾值以下時,選擇GC源塊及GC目標塊,並將GC控制命令發送給快閃儲存裝置3(步驟S41A)。
快閃儲存裝置3之控制器4若接收該GC控制命令,便執行資料複製動作,該資料複製動作包含以下動作:決定應寫入GC源塊內之有效資料之GC目標塊內之位置(複製目標位置);以及將GC源塊內之有效資料複製到GC目標塊內之複製目標位置(步驟S51A)。於步驟S51A中,反覆執行資料複製動作,直到GC源塊內之所有之有效資料之複製結束為止。當藉由GC控制命令指定了複數個GC源塊時,反覆執行資料複製動作,直到所有之GC源塊內之所有之有效資料之複製結束為止。
並且,控制器4將包含邏輯位址(LBA)及目標塊編號之複數個對之列表使用GC用回叫命令通知主機2(步驟S52A),並以映射到複製之有效資料之邏輯位址之偏移(塊內偏移)自表示GC源塊內之複製源位置之偏移(塊內偏移)變更為表示GC目標塊內之複製目標位置之偏移(塊內偏移)之方式,更新與GC源塊對應之塊內LUT及與GC目標塊對應之塊內LUT(步驟S53A)。
主機2基於自快閃儲存裝置3通知之列表,更新塊內LUT(步驟S42A)。
<實體位址API(類型#3)之詳細> 接著,參照圖51~圖60,對實體位址API(類型#3)進行說明。
圖51表示傳統型SSD與主機之間之任務分擔、及支持實體位址API(類型#3)之快閃儲存裝置3與主機2之間之任務分擔。
圖51之右部分表示包含支持實體位址API(類型#3)之快閃儲存裝置3與主機2之電腦系統整體之層級構造。
於主機(伺服器)2中,執行用於向複數個最終使用者提供複數個虛擬機之虛擬機服務401。虛擬機服務401上之各虛擬機中,執行由對應之最終使用者使用之操作系統及使用者應用程式402。
又,主機(伺服器)2中,執行與複數個使用者應用程式402對應之複數個I/O服務403。該等I/O服務403中亦可包含基於LBA之塊I/O服務、鍵值記憶體服務等。各I/O服務403包含對各邏輯位址與快閃儲存裝置3之各實體位址之間之映射進行管理之查找表(LUT)411。此處,所謂邏輯位址係指能夠識別存取對象之資料之標識符。該邏輯位址可為指定邏輯位址空間上之位置之邏輯塊位址(LBA),或者可為鍵值記憶體之鍵值(標籤),還可為鍵值之哈希值。
基於LBA之塊I/O服務中,亦可使用對各邏輯位址(LBA)與快閃儲存裝置3之各實體位址之間之映射進行管理之LUT411。
於鍵值記憶體服務中,亦可使用對各邏輯位址(即,如鍵值之標籤)、與表示儲存有與上述邏輯位址(即,如鍵值之標籤)對應之資料之快閃儲存裝置3內之實體存儲位置之各實體位址之間之映射進行管理之LUT411。該LUT411中,亦可管理標籤、儲存有由該標籤識別之資料之實體位址、及該資料之資料長度之對應關係。
各最終使用者可選擇應使用之定址方法(LBA、鍵值記憶體之鍵值等)。
上述各LUT411並非將來自使用者應用程式402之各邏輯位址轉換成快閃儲存裝置3用之各邏輯位址,而是將來自使用者應用程式402之各邏輯位址轉換成快閃儲存裝置3之各實體位址。即,上述各LUT411係將快閃儲存裝置3用之邏輯位址轉換成實體位址之表、與應用級位址轉換表統合(合併)而成之表。
又,各I/O服務403包含GC塊選擇功能。GC塊選擇功能可使用對應之LUT管理各塊之有效資料量,藉此可選擇GC源塊。
主機(伺服器)2中,亦可每個上述QoS域中均存在I/O服務403。屬於某個QoS域之I/O服務403亦可對由對應之QoS域內之使用者應用程式402使用之各邏輯位址、與分配給對應之QoS域之資源組所屬之塊群之各塊編號之間之映射進行管理。
自主機(伺服器)2向快閃儲存裝置3之命令之發送、及自快閃儲存裝置3向主機(伺服器)2之命令結束之響應等之返回,係經由主機(伺服器)2及快閃儲存裝置3中分別存在之I/O佇列500執行。該等I/O佇列500亦可分類成與複數個QoS域對應之複數個佇列組。
快閃儲存裝置3包含與複數個QoS域對應之複數個寫入緩衝器(WB)601、與複數個QoS域對應之複數個無用單元收集(GC)功能603A、及NAND型快閃記憶體(NAND快閃陣列)603。
該圖51之右部分所示之構成中,上位層級(主機2)能夠識別塊邊界,因此可考慮塊邊界/塊大小而將使用者資料寫入到各塊。即,主機2可識別NAND型快閃記憶體(NAND快閃陣列)603之各個塊,藉此能進行例如向一個塊整體一齊寫入資料、藉由刪除或更新使一個塊內之資料全部無效化等控制。結果,能夠不易產生一個塊內混雜有效資料及無效資料之狀況。因此,可降低需要執行GC之頻度。藉由降低GC之頻度,能降低寫入擴增,提昇快閃儲存裝置3之性能,實現快閃儲存裝置3之壽命最大化。如此,上位層級(主機2)能識別塊編號之構成有用。
另一方面,應寫入資料之塊內之位置並非由上位層級(主機2)決定,而是由快閃儲存裝置3決定。因此,可隱藏不良頁(壞頁),且可遵守頁寫入順序制約。
圖52表示與實體位址API(類型#3)對應之資料寫入動作、及與實體位址API(類型#3)對應之資料讀出動作。
資料寫入動作係按照以下步驟執行。
(1)當主機2之寫入處理部412需要向快閃儲存裝置3寫入資料(寫入資料)時,寫入處理部412亦可請求快閃儲存裝置3分配空閒塊。快閃儲存裝置3之控制器4包含對NAND型快閃記憶體5之空閒塊群進行管理之塊分配部701。塊分配部701自寫入處理部412接收到該請求(塊分配請求)時,塊分配部701將空閒塊群之一個空閒塊分配給主機2,並將分配之塊之塊編號(BLK#)通知主機2。
或者,於寫入處理部412管理空閒塊群之構成中,寫入處理部412亦可自身選擇寫入目標塊。
(2)寫入處理部412將指定與寫入資料對應之邏輯位址(例如LBA)及寫入目標塊之塊編號(BLK#)之寫入請求發送給快閃儲存裝置3。
(3)快閃儲存裝置3之控制器4包含分配資料寫入用之頁之頁分配部702。當頁分配部702接收到寫入請求時,頁分配部702決定表示具有寫入請求指定之塊編號之塊(寫入目標塊)內之寫入目標位置之塊內實體位址(塊內PBA)。塊內實體位址(塊內PBA)可由上述塊內偏移(亦僅作為偏移參照)表示。控制器4基於寫入請求指定之塊編號、及塊內實體位址(塊內PBA),將來自主機2之寫入資料寫入到寫入目標塊內之寫入目標位置。
(4)控制器4將表示寫入目標位置之塊內實體位址(塊內PBA)作為相對於寫入請求之響應通知主機2。或者,控制器4亦可將與寫入資料對應之邏輯位址(LBA)、寫入目標塊之塊編號(BLK#)、表示寫入目標位置之塊內PBA(偏移)之組,作為相對於寫入請求之響應通知主機2。換言之,控制器將塊內實體位址、或者邏輯位址、塊編號及塊內實體位址之組之任一個通知主機2。主機2中,以表示寫入有寫入資料之實體存儲位置之實體位址(塊編號、塊內實體位址(塊內偏移))映射到該寫入資料之邏輯位址之方式,更新LUT411。
資料讀取動作係按照以下步驟執行。
(1)'當主機2需要自快閃儲存裝置3讀取資料時,主機2參照LUT411,自LUT411獲取與應讀取之資料之邏輯位址對應之實體位址(塊編號、塊內實體位址(塊內偏移))。
(2)'主機2將指定獲取之塊編號及塊內實體位址(塊內偏移)之讀取請求發送給快閃儲存裝置3。當快閃儲存裝置3之控制器4自主機2接收到該讀取請求時,控制器4基於塊編號及塊內實體位址,特定出讀取對象之塊及讀取對象之實體存儲位置,並自該讀取對象之塊內之讀取對象之實體存儲位置讀取資料。
圖53表示實體位址API(類型#3)中使用之寫入命令。
寫入命令係向快閃儲存裝置3請求資料寫入之命令。該寫入命令亦可包含命令ID、塊編號BLK#、邏輯位址、長度等。
命令ID係表示該命令係寫入命令之ID(命令編碼),寫入命令中包含寫入命令用之命令ID。
塊編號BLK#係能夠唯一地識別應寫入資料之塊之標識符(塊位址)。
邏輯位址係用於識別應寫入之寫入資料之標識符。該邏輯位址如上所述可為LBA,可為鍵值記憶體之鍵值,還可為鍵值之哈希值。當邏輯位址係LBA時,該寫入命令所含之邏輯位址(開始LBA)表示應寫入之寫入資料之邏輯位置(最初之邏輯位置)。
長度表示應寫入之寫入資料之長度。該長度(資料長度)可由粒度(Grain)之數指定,亦可由LBA之數指定,或者其大小還可由位元組指定。
當自主機2接收到寫入命令時,控制器4決定具有寫入命令指定之塊編號之塊內之寫入目標位置。該寫入目標位置係考慮了頁寫入順序之制約及壞頁等而決定。並且,控制器4將來自主機2之資料寫入到具有寫入命令指定之塊編號之該塊內之該寫入目標位置。
圖54表示相對於圖53之寫入命令之響應。
該響應包含塊內實體位址、長度。塊內實體位址表示應寫入資料之塊內之位置(實體存儲位置)。塊內實體位址如上所述可由塊內偏移指定。長度表示寫入之資料之長度。該長度(資料長度)可由粒度(Grain)之數指定,可由LBA之數指定,或者其大小還可由位元組指定。
或者,該響應亦可不僅包含塊內實體位址及長度,進而包含邏輯位址及塊編號。邏輯位址係包含於圖53之寫入命令之邏輯位址。塊編號係包含於圖53之寫入命令之邏輯位址。
圖55表示實體位址API(類型#3)中使用之Trim命令。
該Trim命令係包含表示儲存有應無效之資料之實體存儲位置之塊編號及塊內實體位址(塊內偏移)之命令。即,該Trim命令並不指定如LBA之邏輯位址,而是可指定實體位址。該Trim命令包含命令ID、實體位址、長度。
命令ID係表示該命令係Trim命令之ID(命令編碼),Trim命令中包含Trim命令用之命令ID。
實體位址表示儲存有應無效化之資料之最初之實體存儲位置。支持實體位址API(類型#3)之快閃儲存裝置3中,該實體位址係藉由塊編號與偏移(塊內偏移)之組合而指定。
長度表示應無效化之資料之長度。該長度(資料長度)可由粒度(Grain)之數指定,亦可由位元組指定。
控制器4使用塊管理表32,對表示複數個塊分別所含之各資料之有效/無效之標識(位圖標識)進行管理。當自主機2接收到包含表示儲存有應無效之資料之實體存儲位置之塊編號及偏移(塊內偏移)之Trim命令時,控制器4更新塊管理表32,將與Trim命令所含之塊編號及塊內偏移對應之實體存儲位置之資料所對應之標識(位圖標識)變更為表示無效之值。
圖56之順序圖表示與實體位址API(類型#3)對應之寫入處理之順序。
主機2首先自身選擇應用於寫入之塊(空閒塊)、或者藉由向快閃儲存裝置3發送塊分配命令而請求快閃儲存裝置3分配空閒塊。然後,主機2將包含自身選擇之塊之塊編號BLK#(或者快閃儲存裝置3分配之空閒塊之塊編號BLK#)、邏輯位址(LBA)、及長度之寫入命令發送給快閃儲存裝置3(步驟S20B)。
當快閃儲存裝置3之控制器4接收到該寫入命令時,控制器4決定應寫入來自主機2之寫入資料之具有該塊編號BLK#之塊(寫入目標塊BLK#)內之寫入目標位置,並將寫入資料寫入到該寫入目標塊BLK#之寫入目標位置(步驟S11B)。於步驟S11B中,控制器4亦可將邏輯位址(此處為LBA)及寫入資料兩者寫入到寫入目標塊。
控制器4更新與寫入目標塊BLK#對應之塊管理表32,並將與寫入之資料對應之位圖標識(即,與寫入有該資料之偏移(塊內偏移)對應之位圖標識)自0變更為1(步驟S12B)。
並且,如圖56所示,控制器4將相對於該寫入命令之響應返回給主機2(步驟S13B)。該響應至少包含應寫入該資料之偏移(塊內偏移)。
當主機2接收到該響應時,主機2更新由主機2管理之LUT411,對與寫入之寫入資料對應之各邏輯位址映射實體位址(步驟S21B)。
之後,主機2將用於使因上述更新資料之寫入而變得無用之以前之資料無效化之Trim命令發送給快閃儲存裝置3。快閃儲存裝置3之控制器4根據該Trim命令,更新塊管理表32(圖56、步驟S14B)。
圖57表示實體位址API(類型#3)中使用之讀取命令。
讀取命令係向快閃儲存裝置3請求資料讀出之命令。該讀取命令包含命令ID、實體位址PBA、長度、傳輸目標指針。
命令ID係表示該命令係讀取命令之ID(命令編碼),讀取命令中包含讀取命令用之命令ID。
實體位址PBA表示應讀出資料之最初之實體存儲位置。實體位址PBA係由塊編號、偏移(塊內偏移)指定。
長度表示應讀取之資料之長度。該資料長度可由Grain之數指定。
傳輸目標指針表示應傳輸讀出之資料之主機2內之記憶體上之位置。
一個讀取命令可指定複數個實體位址PBA(塊編號、偏移)及長度之組。
圖58表示實體位址API(類型#3)中使用之無用單元收集(GC)控制命令。
GC控制命令用於將GC源塊編號及GC目標塊編號通知快閃儲存裝置3。主機2管理各塊之有效資料量/無效資料量,可選擇有效資料量更少之若干塊作為GC源塊。又,主機2管理空閒塊列表,可選擇若干空閒塊作為GC目標塊。該GC控制命令亦可包含命令ID、GC源塊編號、GC目標塊編號等。
命令ID係表示該命令係GC控制命令之ID(命令編碼),GC控制命令包含GC控制命令用之命令ID。
GC源塊編號係表示GC源塊之塊編號。主機2可指定應將哪個塊設為GC源塊。主機2亦可將複數個GC源塊編號設定於一個GC控制命令。
GC目標塊編號係表示GC目標塊之塊編號。主機2可指定應將哪個塊設為GC目標塊。主機2亦可將複數個GC目標塊編號設定於一個GC控制命令。
圖59表示實體位址API(類型#3)中使用之GC用回叫命令。
GC用回叫命令用於將GC複製之有效資料之邏輯位址及表示該有效資料之複製目標位置之塊編號及偏移通知主機2。
GC用回叫命令亦可包含命令ID、邏輯位址、長度、目標實體位址。
命令ID係表示該命令係GC用回叫命令之ID(命令編碼),GC用回叫命令包含GC用回叫命令用之命令ID。
邏輯位址表示藉由GC自GC源塊複製到GC目標塊之有效資料之邏輯位址。
長度表示該複製之資料之長度。該資料長度亦可由粒度(Grain)之數指定。
目標實體位址表示複製了有效資料之GC目標塊內之位置。目標實體位址係由塊編號、偏移(塊內偏移)指定。
圖60之順序圖表示與實體位址API(類型#3)對應之無用單元收集(GC)動作之步驟。
例如,當主機2管理之空閒塊列表所含之剩餘之空閒塊之數降低到閾值以下時,主機2選擇GC源塊及GC目標塊,並將指定選擇之GC源塊及選擇之GC目標塊之GC控制命令發送給快閃儲存裝置3(步驟S41B)。或者,於寫入處理部412管理空閒塊群之構成中,亦可於剩餘之空閒塊之數降低到閾值以下時,寫入處理部412向主機2通知這一狀況,接收到通知之主機2執行塊選擇及GC控制命令之發送。
若快閃儲存裝置3之控制器4接收該GC控制命令,便執行資料複製動作,該資料複製動作包含以下動作:決定應寫入GC源塊內之有效資料之GC目標塊內之位置(複製目標位置);以及將GC源塊內之有效資料複製到GC目標塊內之複製目標位置(步驟S51B)。於步驟S51B中,控制器4不僅複製GC源塊(複製源塊)內之有效資料,還將該有效資料及與該有效資料對應之邏輯位址兩者自GC源塊(複製源塊)複製到GC目標塊(複製目標塊)。藉此,可向GC目標塊(複製目標塊)內保存資料與邏輯位址之對。
又,於步驟S51B中,反覆執行資料複製動作,直到GC源塊內之所有之有效資料之複製結束為止。當藉由GC控制命令指定了複數個GC源塊時,反覆執行資料複製動作,直到所有GC源塊內之所有之有效資料之複製結束為止。
然後,控制器4針對複製之每個有效資料,將該有效資料之邏輯位址(LBA)、及表示該有效資料之複製目標位置之目標實體位址等使用GC用回叫命令通知主機2(步驟S52B)。與某個有效資料對應之目標實體位址係由複製了該有效資料之複製目標塊(GC目標塊)之塊編號、及表示複製了該有效資料之複製目標塊內之實體存儲位置之塊內實體位址(塊內偏移)表示。
當主機2接收到該GC用回叫命令時,主機2更新由主機2管理之LUT411,對與複製之各有效資料對應之邏輯位址映射目標實體位址(塊編號、塊內偏移)(步驟S42B)。
如以上說明,根據本實施形態,支持用於對NAND型快閃記憶體5進行存取之多種介面,可對NAND型快閃記憶體5內之存取對象之每個區域切換應使用之介面。因此,主機2可選擇性利用與不同種類之介面對應之複數個區域。又,上述複數個區域至少包含第1區域及第2區域,上述第1區域由主機2使用第1類型介面進行讀取存取,上述第1類型介面指定邏輯位址而不指定NAND型快閃記憶體5之實體位址,上述第2區域由主機2使用第2類型介面進行讀取存取,上述第2類型介面指定NAND型快閃記憶體5之一部分或者全部實體位址。
於第1類型介面中,主機2無需指定NAND型快閃記憶體之實體位址,只要指定與應讀取之資料對應之邏輯位址即可。因此,於對第1區域進行讀取存取時,主機2上無需已執行用於直接處理NAND型快閃記憶體5之功能群。藉此,第1區域可作為用於能啟動操作系統之可啟動區域使用。
又,於使用第2類型介面(實體位址API)讀取資料時,主機2可指定NAND型快閃記憶體5之一部分或者全部實體位址。因此,主機2可根據需要使用實體位址API,藉此可直接對NAND型快閃記憶體5進行存取。
再者,快閃儲存裝置3亦可作為設置於儲存器陣列內之複數個快閃儲存裝置3中之一個而利用。儲存器陣列亦可經由纜線或者網路而連接於如伺服器電腦之資訊處理裝置。儲存器陣列包含控制器,該控制器對該儲存器陣列內之複數個快閃儲存裝置3進行控制。將快閃儲存裝置3應用於儲存器陣列時,該儲存器陣列之控制器亦可作為快閃儲存裝置3之主機2發揮功能。
又,本實施形態中,作為非揮發性記憶體例示了NAND型快閃記憶體。但,本實施形態之功能亦能應用於例如MRAM(Magnetoresistive Random Access Memory,磁阻式隨機存取記憶體)、PRAM(Phasechange Random Access Memory相變隨機存取記憶體)、ReRAM(Resistive Random Access Memory,電阻式隨機存取記憶體)、或者FeRAM(Ferroelectric Random Access Memory,鐵電隨機存取記憶體)之其他各種非揮發性記憶體。
雖對本發明之若干實施形態進行了說明,但該等實施形態係作為例子提示,並不意圖限定發明之範圍。該等新穎之實施形態能以其他各種形態實施,且於不脫離發明主旨之範圍內,可進行各種省略、置換、變更。該等實施形態及其變化包含於發明之範圍及主旨,且包含於申請專利範圍所記載之發明及其均等範圍內。
[相關申請] 本案享有以日本專利申請2017-208115號(申請日:2017年10月27日)為基礎申請之優先權。本案藉由參照上述基礎申請而包含基礎申請之全部內容。
2:主機
3:快閃儲存裝置
4:控制器
5:NAND型快閃記憶體
6:DRAM
10:匯流排
11:主機介面
12:CPU
13:NAND介面
14:DRAM介面
20:API設定/選擇部
21:寫入動作控制部
22:讀取動作控制部
23:GC動作控制部
31:寫入緩衝器
32:塊管理表
50:介面
51:網路
61:最終使用者終端
101:虛擬機服務
102:使用者應用程式
103:虛擬磁碟服務
104:應用級GC
200:I/O佇列
301:寫入緩衝器(WB)
302:查找表(LUT)
303:無用單元收集功能
304:NAND型快閃記憶體(NAND快閃陣列)
401:虛擬機服務
402:使用者應用程式
403:I/O服務
411:查找表(LUT)
412:寫入處理部
500:I/O佇列
601:寫入緩衝器
602:無用單元收集(GC)功能
603:NAND型快閃記憶體(NAND快閃陣列)603
603A:無用單元收集(GC)功能
701:塊分配部
702:頁分配部
S1~S53A:步驟
圖1係表示主機與實施形態之記憶體系統(快閃儲存裝置)之關係之方塊圖。 圖2係用於對同一實施形態之快閃儲存裝置支持之多種介面進行說明之圖。 圖3係表示同一實施形態之快閃儲存裝置之構成例之方塊圖。 圖4係表示同一實施形態之快閃儲存裝置中設置之NAND介面與複數個NAND型快閃記憶體晶片之關係之方塊圖。 圖5係表示由複數個塊之集合構建之超級塊之構成例之圖。 圖6係用於對應用於同一實施形態之快閃儲存裝置之擴展命名空間管理命令進行說明之圖。 圖7係表示同一實施形態之快閃儲存裝置執行之區域(命名空間)創建處理之順序圖。 圖8係用於對傳統型SSD與主機之間之任務分擔、及支持第1類型介面(實體位址API(類型#1))之同一實施形態之快閃儲存裝置與主機之間之任務分擔進行說明之圖。 圖9係用於對以實體位址API(類型#1)使用之寫入命令進行說明之圖。 圖10係用於說明相對於圖9之寫入命令之響應之圖。 圖11係用於對以實體位址API(類型#1)使用之Trim命令之圖。 圖12係用於說明對圖10之響應中包含之實體位址進行規定之塊編號及偏移之圖。 圖13係用於對根據寫入命令執行之寫入動作及相對於該寫入命令之響應中包含之返回值之關係進行說明之圖。 圖14係用於對跳過不良頁之寫入動作進行說明之圖。 圖15係用於對跳過不良頁之寫入動作之另一例進行說明之圖。 圖16係用於對將邏輯位址及資料之對寫入到塊內之頁之動作進行說明之圖。 圖17係用於對將資料寫入到塊內之頁之使用者資料區域、將該資料之邏輯位址寫入到該頁之冗餘區域之動作進行說明之圖。 圖18係用於對使用超級塊時之塊編號與偏移之關係進行說明之圖。 圖19係表示由主機及同一實施形態之快閃儲存裝置執行之寫入動作處理之順序之順序圖。 圖20係表示寫入相對於已寫入之資料之更新資料之資料更新動作之圖。 圖21係用於對同一實施形態之快閃儲存裝置管理之塊管理表之更新動作進行說明之圖。 圖22係用於對主機管理之查找表(邏輯實體位址轉換表)之更新動作進行說明之圖。 圖23係用於對根據表示與應無效化之資料對應之實體位址之來自主機之通知而更新塊管理表之動作進行說明之圖。 圖24係用於對以實體位址API(類型#1)使用之讀取命令進行說明之圖。 圖25係用於對與實體位址API(類型#1)對應之讀取動作進行說明之圖。 圖26係表示與實體位址API(類型#1)對應之讀取處理之順序之順序圖。 圖27係用於對以實體位址API(類型#1)使用之無用單元收集(GC)控制命令進行說明之圖。 圖28係用於對以實體位址API(類型#1)使用之GC用回叫命令進行說明之圖。 圖29係表示與實體位址API(類型#1)對應之無用單元收集(GC)動作之順序之順序圖。 圖30係用於對用於無用單元收集(GC)而執行之資料複製動作之例進行說明之圖。 圖31係用於對基於圖30之資料複製動作之結果而更新之主機之查找表之內容進行說明之圖。 圖32係用於對相對於寫入命令之響應與GC用回叫處理之關係進行說明之圖。 圖33係用於對以實體位址API(類型#1)使用之無用單元收集(GC)控制命令之另一例進行說明之圖。 圖34係用於對以實體位址API(類型#1)使用之GC用回叫命令之另一例進行說明之圖。 圖35係用於對與實體位址API(類型#1)對應之寫入/讀取/GC動作進行說明之圖。 圖36係用於對傳統型SSD與主機之間之任務分擔、支持第2類型介面(實體位址API(類型#2))之同一實施形態之快閃儲存裝置與主機之間之任務分擔進行說明之圖。 圖37係用於對主機管理之塊級位址轉換表及同一實施形態之快閃儲存裝置管理之塊內位址轉換表進行說明之圖。 圖38係用於對以實體位址API(類型#2)使用之寫入命令進行說明之圖。 圖39係用於對以實體位址API(類型#2)使用之Trim命令進行說明之圖。 圖40係表示與實體位址API(類型#2)對應之寫入處理之順序之順序圖。 圖41係表示寫入相對於已寫入之資料之更新資料之資料更新動作之圖。 圖42係用於對同一實施形態之快閃儲存裝置管理之塊編號BLK#1用之塊內LUT進行說明之圖。 圖43係用於對同一實施形態之快閃儲存裝置管理之塊管理表之更新動作進行說明之圖。 圖44係用於對主機管理之塊級LUT之更新動作進行說明之圖。 圖45係用於對根據表示與應無效化之資料對應之塊編號及邏輯位址之來自主機之通知而更新塊內LUT及塊管理表之動作進行說明之圖。 圖46係用於對以實體位址API(類型#2)使用之讀取命令進行說明之圖。 圖47係用於對與實體位址API(類型#2)對應之讀取動作進行說明之順序圖。 圖48係用於對以實體位址API(類型#2)使用之無用單元收集(GC)控制命令進行說明之圖。 圖49係用於對以實體位址API(類型#2)使用之GC用回叫命令進行說明之圖。 圖50係表示與實體位址API(類型#2)對應之無用單元收集(GC)動作之步驟之順序圖。 圖51係用於對傳統型SSD與主機之間之任務分擔、及支持第3類型介面(實體位址API(類型#3))之同一實施形態之快閃儲存裝置與主機之間之任務分擔進行說明之圖。 圖52係用於對與實體位址API(類型#3)對應之資料寫入動作、及與實體位址API(類型#3)對應之資料讀出動作進行說明之圖。 圖53係用於對以實體位址API(類型#3)使用之寫入命令進行說明之圖。 圖54係用於對相對於圖53之寫入命令之響應進行說明之圖。 圖55係用於對以實體位址API(類型#3)使用之Trim命令進行說明之圖。 圖56係表示與實體位址API(類型#3)對應之寫入處理之順序之順序圖。 圖57係用於對以實體位址API(類型#3)使用之讀取命令進行說明之圖。 圖58係用於對以實體位址API(類型#3)使用之無用單元收集(GC)控制命令進行說明之圖。 圖59係用於對以實體位址API(類型#3)使用之GC用回叫命令進行說明之圖。 圖60係表示與實體位址API(類型#3)對應之無用單元收集(GC)動作之步驟之順序圖。
2:主機
3:快閃儲存裝置
4:控制器
5:NAND型快閃記憶體
Claims (20)
- 一種記憶體系統,其能連接於主機,且包含: 非揮發性記憶體;及 控制器,其電性連接於上述非揮發性記憶體;且 上述控制器構成為: 響應於自上述主機接收第1寫入命令,將第1資料寫入至上述非揮發性記憶體之第1位置,其中上述第1寫入命令請求寫入上述第1資料且使用第1定址方法來指定第1位址,上述第1位址包含與上述第1資料對應(associated)之邏輯位址,但不包含應寫入上述第1資料之塊之標識符; 響應於自上述主機接收第1讀取命令,自上述非揮發性記憶體之上述第1位置讀取上述第1資料,其中上述第1讀取命令使用上述第1定址方法來指定上述第1位址; 響應於自上述主機接收第2寫入命令,將第2資料寫入至上述非揮發性記憶體之第2位置,其中上述第2寫入命令請求寫入上述第2資料且使用第2定址方法來指定第2位址,上述第2定址方法不同於上述第1定址方法;且 響應於自上述主機接收第2讀取命令,自上述非揮發性記憶體之上述第2位置讀取上述第2資料,其中上述第2讀取命令使用第3定址方法來指定第3位址,上述第3定址方法不同於上述第1定址方法與上述第2定址方法。
- 如請求項1之記憶體系統,其中上述非揮發性記憶體包含複數個塊,且上述複數個塊之各個係用於刪除(erase)動作之單位; 上述第2位址包含與上述第2資料對應之邏輯位址,且包含應寫入上述第2資料之塊之標識符。
- 如請求項2之記憶體系統,其中 上述控制器進一步構成為:藉由至少使用被寫入上述第2資料之上述塊的上述標識符,將上述第2位置通知上述主機。
- 如請求項3之記憶體系統,其中 上述控制器構成為:藉由使用上述塊內之偏移位址(offset address)及上述塊之上述標識符,將上述第2位置通知上述主機。
- 如請求項4之記憶體系統,其中 上述複數個塊之各個包含複數個頁,且上述複數個頁之各個係用於寫入動作之單位;且 上述控制器構成為:藉由使用粒度之倍數(a multiple of grain)來指定上述偏移位址,且上述粒度之大小係不同於上述複數個頁之各個之大小。
- 如請求項2之記憶體系統,其中 上述第3位址至少包含被寫入上述第2資料之上述塊之上述標識符。
- 如請求項6之記憶體系統,其中 上述第3位址不包含與上述第2資料對應之上述邏輯位址。
- 如請求項2之記憶體系統,其中 上述控制器進一步構成為:將與上述第2資料對應之上述邏輯位址隨著上述第2資料寫入至上述非揮發性記憶體。
- 如請求項8之記憶體系統,其中 上述控制器進一步構成為: 將上述第2資料與上述邏輯位址複製至上述非揮發性記憶體之第3位置;且 將上述第3位置與上述邏輯位址通知上述主機。
- 如請求項1之記憶體系統,其中 上述非揮發性記憶體包含:複數個塊,且上述複數個塊之各個係用於刪除動作之單位; 上述第2位址包含與上述第2資料對應之邏輯位址,但不包含應寫入上述第2資料之塊之標識符。
- 如請求項10之記憶體系統,其中 上述控制器進一步構成為:藉由至少使用被寫入上述第2資料之上述塊的上述標識符,將上述第2位置通知上述主機。
- 如請求項11之記憶體系統,其中 上述控制器構成為:藉由使用上述塊內之偏移位址及上述塊之上述標識符,將上述第2位置通知上述主機。
- 如請求項12之記憶體系統,其中 上述複數個塊之各個包含複數個頁,且上述複數個頁之各個係用於寫入動作之單位;且 上述控制器構成為:藉由使用粒度之倍數來指定上述偏移位址,且上述粒度之大小係不同於上述複數個頁之各個之大小。
- 如請求項10之記憶體系統,其中 上述第3位址至少包含被寫入上述第2資料之上述塊之上述標識符。
- 如請求項14之記憶體系統,其中 上述第3位址不包含與上述第2資料對應之上述邏輯位址。
- 如請求項10之記憶體系統,其中 上述控制器進一步構成為:將與上述第2資料對應之上述邏輯位址隨著上述第2資料寫入至上述非揮發性記憶體。
- 如請求項16之記憶體系統,其中 上述控制器進一步構成為: 將上述第2資料與上述邏輯位址複製至上述非揮發性記憶體之第3位置;且 將上述第3位置與上述邏輯位址通知上述主機。
- 一種記憶體系統,其能連接於主機,且包含: 非揮發性記憶體,其包含複數個塊,且上述複數個塊之各個係用於刪除動作之單位;及 控制器,其電性連接於上述非揮發性記憶體;且 上述控制器構成為: 響應於自上述主機接收第1寫入命令,將第1資料寫入至上述非揮發性記憶體之第1位置,其中上述第1寫入命令請求寫入上述第1資料且指定與上述第1資料對應之邏輯位址,但不指定應寫入上述第1資料之塊之標識符; 響應於自上述主機接收第1讀取命令,自上述非揮發性記憶體之上述第1位置讀取上述第1資料,其中上述第1讀取命令指定與上述第1資料對應之上述邏輯位址,但不指定被寫入上述第1資料之上述塊之上述標識符; 響應於自上述主機接收第2寫入命令,將第2資料寫入至上述非揮發性記憶體之第2位置,且藉由至少使用被寫入上述第2資料之上述塊的標識符與上述塊內之偏移位址,將上述第2位置通知上述主機,其中上述第2寫入命令請求寫入上述第2資料且指定與上述第2資料對應之邏輯位址,並指定應寫入上述第2資料之塊之上述標識符;且 響應於自上述主機接收第2讀取命令,自上述非揮發性記憶體之上述第2位置讀取上述第2資料,其中上述第2讀取命令至少指定被寫入上述第2資料之上述塊之上述標識符,且指定上述塊內之上述偏移位址。
- 如請求項18之記憶體系統,其中 上述複數個塊分類成複數個組(domain); 上述第2寫入命令進一步指定應寫入上述第2資料之組之標識符;且 上述控制器進一步構成為: 自上述複數個組選擇與上述指定之標識符對應之組,且 自屬於上述選擇之組的塊之群中,分配應寫入上述第2資料之塊。
- 如請求項18之記憶體系統,其中 上述控制器進一步構成為: 將與上述第2資料對應之上述邏輯位址隨著上述第2資料寫入至上述非揮發性記憶體; 將上述第2資料與上述邏輯位址複製至上述非揮發性記憶體之第3位置; 將上述第3位置與上述邏輯位址通知上述主機。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017208115A JP2019079464A (ja) | 2017-10-27 | 2017-10-27 | メモリシステムおよび制御方法 |
JP2017-208115 | 2017-10-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202331530A true TW202331530A (zh) | 2023-08-01 |
Family
ID=66245534
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109105524A TWI791140B (zh) | 2017-10-27 | 2018-07-03 | 記憶體系統 |
TW107122911A TWI689817B (zh) | 2017-10-27 | 2018-07-03 | 記憶體系統及控制方法 |
TW111150687A TW202331530A (zh) | 2017-10-27 | 2018-07-03 | 記憶體系統 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109105524A TWI791140B (zh) | 2017-10-27 | 2018-07-03 | 記憶體系統 |
TW107122911A TWI689817B (zh) | 2017-10-27 | 2018-07-03 | 記憶體系統及控制方法 |
Country Status (4)
Country | Link |
---|---|
US (4) | US10552336B2 (zh) |
JP (1) | JP2019079464A (zh) |
CN (2) | CN109726139B (zh) |
TW (3) | TWI791140B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI678618B (zh) * | 2018-06-22 | 2019-12-01 | 慧榮科技股份有限公司 | 快閃記憶裝置的命名空間操作方法及裝置 |
US10853309B2 (en) | 2018-08-13 | 2020-12-01 | Micron Technology, Inc. | Fuseload architecture for system-on-chip reconfiguration and repurposing |
JP7155028B2 (ja) * | 2019-01-29 | 2022-10-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP2021034091A (ja) * | 2019-08-29 | 2021-03-01 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10963396B1 (en) * | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
CN111045954B (zh) * | 2019-11-29 | 2023-08-08 | 北京航空航天大学青岛研究院 | 基于nand-spin的存内计算加速方法 |
CN113495869B (zh) * | 2020-03-20 | 2024-04-26 | 华为技术有限公司 | 文件***空间的调整方法、装置和电子设备 |
US11550482B2 (en) * | 2020-04-09 | 2023-01-10 | Synaptics Incorporated | Page-based memory access control |
CN111294247B (zh) * | 2020-05-13 | 2020-09-18 | 广东睿江云计算股份有限公司 | 一种存储区域的QoS分配方法及*** |
US11550727B2 (en) * | 2020-06-18 | 2023-01-10 | Micron Technology, Inc. | Zone-aware memory management in memory subsystems |
TWI738390B (zh) * | 2020-06-19 | 2021-09-01 | 群聯電子股份有限公司 | 資料保護方法、記憶體儲存裝置及記憶體控制電路單元 |
US12007887B2 (en) * | 2021-05-25 | 2024-06-11 | SK Hynix Inc. | Method and system for garbage collection |
US11954350B2 (en) | 2021-05-25 | 2024-04-09 | SK Hynix Inc. | Storage device and method of operating the same |
US11733927B2 (en) * | 2021-11-30 | 2023-08-22 | Microsoft Technology Licensing, Llc | Hybrid solid-state drive |
US11822813B2 (en) | 2021-12-28 | 2023-11-21 | Samsung Electronics Co., Ltd. | Storage device, operation method of storage device, and storage system using the same |
US11687447B1 (en) * | 2022-01-04 | 2023-06-27 | Silicon Motion, Inc. | Method and apparatus for performing access control of memory device with aid of additional physical address information |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6883063B2 (en) | 1998-06-30 | 2005-04-19 | Emc Corporation | Method and apparatus for initializing logical objects in a data storage system |
US6804674B2 (en) | 2001-07-20 | 2004-10-12 | International Business Machines Corporation | Scalable Content management system and method of using the same |
US7512957B2 (en) | 2004-12-03 | 2009-03-31 | Microsoft Corporation | Interface infrastructure for creating and interacting with web services |
US7315917B2 (en) | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US7934049B2 (en) * | 2005-09-14 | 2011-04-26 | Sandisk Corporation | Methods used in a secure yet flexible system architecture for secure devices with flash mass storage memory |
US7769978B2 (en) * | 2005-12-21 | 2010-08-03 | Sandisk Corporation | Method and system for accessing non-volatile storage devices |
WO2007073538A2 (en) * | 2005-12-21 | 2007-06-28 | Sandisk Corporation | Non-volatile memories and methods with data alignment in a directly mapped file storage system |
US20080172519A1 (en) * | 2007-01-11 | 2008-07-17 | Sandisk Il Ltd. | Methods For Supporting Readydrive And Readyboost Accelerators In A Single Flash-Memory Storage Device |
US8959280B2 (en) | 2008-06-18 | 2015-02-17 | Super Talent Technology, Corp. | Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear |
WO2009153982A1 (ja) * | 2008-06-20 | 2009-12-23 | パナソニック株式会社 | 複数区分型不揮発性記憶装置およびシステム |
US9323658B2 (en) * | 2009-06-02 | 2016-04-26 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Multi-mapped flash RAID |
US8688894B2 (en) | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
US8255661B2 (en) | 2009-11-13 | 2012-08-28 | Western Digital Technologies, Inc. | Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device |
US20110137966A1 (en) * | 2009-12-08 | 2011-06-09 | Netapp, Inc. | Methods and systems for providing a unified namespace for multiple network protocols |
JP5589205B2 (ja) | 2011-02-23 | 2014-09-17 | 株式会社日立製作所 | 計算機システム及びデータ管理方法 |
US20120246385A1 (en) * | 2011-03-22 | 2012-09-27 | American Megatrends, Inc. | Emulating spi or 12c prom/eprom/eeprom using flash memory of microcontroller |
US20130191580A1 (en) * | 2012-01-23 | 2013-07-25 | Menahem Lasser | Controller, System, and Method for Mapping Logical Sector Addresses to Physical Addresses |
JP5687639B2 (ja) | 2012-02-08 | 2015-03-18 | 株式会社東芝 | コントローラ、データ記憶装置及びプログラム |
JP5597666B2 (ja) * | 2012-03-26 | 2014-10-01 | 株式会社東芝 | 半導体記憶装置、情報処理システムおよび制御方法 |
US9075710B2 (en) * | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
CN103176752A (zh) | 2012-07-02 | 2013-06-26 | 晶天电子(深圳)有限公司 | 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器 |
CN102789427B (zh) | 2012-07-17 | 2015-11-25 | 威盛电子股份有限公司 | 数据储存装置与其操作方法 |
US9575884B2 (en) * | 2013-05-13 | 2017-02-21 | Qualcomm Incorporated | System and method for high performance and low cost flash translation layer |
US20150186259A1 (en) | 2013-12-30 | 2015-07-02 | Sandisk Technologies Inc. | Method and apparatus for storing data in non-volatile memory |
US10812313B2 (en) * | 2014-02-24 | 2020-10-20 | Netapp, Inc. | Federated namespace of heterogeneous storage system namespaces |
KR20150106778A (ko) | 2014-03-12 | 2015-09-22 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 제어 방법 |
US9959203B2 (en) * | 2014-06-23 | 2018-05-01 | Google Llc | Managing storage devices |
US20160041760A1 (en) | 2014-08-08 | 2016-02-11 | International Business Machines Corporation | Multi-Level Cell Flash Memory Control Mechanisms |
KR20160027805A (ko) | 2014-09-02 | 2016-03-10 | 삼성전자주식회사 | 비휘발성 메모리 장치를 위한 가비지 컬렉션 방법 |
US9977734B2 (en) * | 2014-12-11 | 2018-05-22 | Toshiba Memory Corporation | Information processing device, non-transitory computer readable recording medium, and information processing system |
JP6406707B2 (ja) | 2015-03-23 | 2018-10-17 | 東芝メモリ株式会社 | 半導体記憶装置 |
US20160321010A1 (en) | 2015-04-28 | 2016-11-03 | Kabushiki Kaisha Toshiba | Storage system having a host directly manage physical data locations of storage device |
JP2017027388A (ja) | 2015-07-23 | 2017-02-02 | 株式会社東芝 | メモリシステムおよび不揮発性メモリの制御方法 |
US10102138B2 (en) * | 2015-10-22 | 2018-10-16 | Western Digital Technologies, Inc. | Division of data storage in single-storage device architecture |
US10705952B2 (en) * | 2015-11-04 | 2020-07-07 | Sandisk Technologies Llc | User space data storage management |
US9996473B2 (en) * | 2015-11-13 | 2018-06-12 | Samsung Electronics., Ltd | Selective underlying exposure storage mapping |
US9990304B2 (en) | 2015-11-13 | 2018-06-05 | Samsung Electronics Co., Ltd | Multimode storage management system |
US9946642B2 (en) | 2015-11-13 | 2018-04-17 | Samsung Electronics Co., Ltd | Distributed multimode storage management |
US9940028B2 (en) * | 2015-11-13 | 2018-04-10 | Samsung Electronics Co., Ltd | Multimode storage device |
TWI595492B (zh) | 2016-03-02 | 2017-08-11 | 群聯電子股份有限公司 | 資料傳輸方法、記憶體控制電路單元與記憶體儲存裝置 |
JP6444917B2 (ja) * | 2016-03-08 | 2018-12-26 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
JP6523193B2 (ja) | 2016-03-08 | 2019-05-29 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
US20180173619A1 (en) | 2016-12-21 | 2018-06-21 | Sandisk Technologies Llc | System and Method for Distributed Logical to Physical Address Mapping |
JP6709180B2 (ja) * | 2017-02-28 | 2020-06-10 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10338842B2 (en) * | 2017-05-19 | 2019-07-02 | Samsung Electronics Co., Ltd. | Namespace/stream management |
US10592408B2 (en) | 2017-09-13 | 2020-03-17 | Intel Corporation | Apparatus, computer program product, system, and method for managing multiple regions of a memory device |
JP6785205B2 (ja) | 2017-09-21 | 2020-11-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP6982468B2 (ja) | 2017-10-27 | 2021-12-17 | キオクシア株式会社 | メモリシステムおよび制御方法 |
-
2017
- 2017-10-27 JP JP2017208115A patent/JP2019079464A/ja active Pending
-
2018
- 2018-05-21 US US15/984,703 patent/US10552336B2/en active Active
- 2018-07-03 TW TW109105524A patent/TWI791140B/zh active
- 2018-07-03 TW TW107122911A patent/TWI689817B/zh active
- 2018-07-03 TW TW111150687A patent/TW202331530A/zh unknown
- 2018-07-13 CN CN201810768120.4A patent/CN109726139B/zh active Active
- 2018-07-13 CN CN202310947639.XA patent/CN116909941A/zh active Pending
-
2019
- 2019-12-23 US US16/725,094 patent/US11347655B2/en active Active
-
2022
- 2022-03-08 US US17/689,787 patent/US11954043B2/en active Active
-
2024
- 2024-03-01 US US18/593,823 patent/US20240202135A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
TWI689817B (zh) | 2020-04-01 |
TW202024926A (zh) | 2020-07-01 |
CN109726139A (zh) | 2019-05-07 |
US11347655B2 (en) | 2022-05-31 |
US11954043B2 (en) | 2024-04-09 |
US20200133879A1 (en) | 2020-04-30 |
US20220197817A1 (en) | 2022-06-23 |
US20190129862A1 (en) | 2019-05-02 |
US20240202135A1 (en) | 2024-06-20 |
TWI791140B (zh) | 2023-02-01 |
CN109726139B (zh) | 2023-08-18 |
US10552336B2 (en) | 2020-02-04 |
TW201917584A (zh) | 2019-05-01 |
CN116909941A (zh) | 2023-10-20 |
JP2019079464A (ja) | 2019-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI791140B (zh) | 記憶體系統 | |
TWI661301B (zh) | 記憶體系統及控制非揮發性記憶體之控制方法 | |
TWI674502B (zh) | 記憶體系統及控制方法 | |
US11797436B2 (en) | Memory system and method for controlling nonvolatile memory | |
JP7013546B2 (ja) | メモリシステム | |
JP7204020B2 (ja) | 制御方法 | |
JP7167295B2 (ja) | メモリシステムおよび制御方法 | |
JP7490714B2 (ja) | メモリシステムおよび制御方法 | |
JP2023021450A (ja) | メモリシステム | |
JP2022179798A (ja) | メモリシステムおよび制御方法 |