TWI682278B - 記憶體系統及控制方法 - Google Patents

記憶體系統及控制方法 Download PDF

Info

Publication number
TWI682278B
TWI682278B TW107120756A TW107120756A TWI682278B TW I682278 B TWI682278 B TW I682278B TW 107120756 A TW107120756 A TW 107120756A TW 107120756 A TW107120756 A TW 107120756A TW I682278 B TWI682278 B TW I682278B
Authority
TW
Taiwan
Prior art keywords
block
address
data
host
write
Prior art date
Application number
TW107120756A
Other languages
English (en)
Other versions
TW201931123A (zh
Inventor
菅野伸一
Original Assignee
日商東芝記憶體股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日商東芝記憶體股份有限公司 filed Critical 日商東芝記憶體股份有限公司
Publication of TW201931123A publication Critical patent/TW201931123A/zh
Application granted granted Critical
Publication of TWI682278B publication Critical patent/TWI682278B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/72Masking faults in memories by using spares or by reconfiguring with optimized replacement algorithms
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • G11C29/765Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C2029/1806Address conversion or mapping, i.e. logical to physical address
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Detection And Correction Of Errors (AREA)
  • Hardware Redundancy (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

實施形態提供能夠減小因不良塊數之增加所造成之影響的記憶體系統及控制方法。實施形態之記憶體系統係對複數個並行單元進行管理,上述複數個並行單元各自包含屬於不同之非揮發性記憶體裸片之塊各者。記憶體系統於從主機接收到指定用於識別應寫入之第1資料之第3位址之寫入請求之情形時,記憶體系統參考不良資訊從一個並行單元中所含之非不良塊中選擇出一個塊作為寫入目標塊,決定所選擇之塊內之寫入目標位置,並將第1資料寫入至寫入目標位置。記憶體系統將表示所選擇之塊及寫入目標位置兩者之第1物理位址、及第3位址通知給主機。

Description

記憶體系統及控制方法
本發明之實施形態係關於一種具備非揮發性記憶體之記憶體系統及控制方法。
近年來,具備非揮發性記憶體之記憶體系統得到廣泛普及。作為這種記憶體系統之一,已知基於NAND快閃技術之固態驅動器(SSD,Solid State Disk)。
資料中心之伺服器中亦使用SSD作為儲存器(storage)。
對如伺服器般之主機計算機系統中所利用之儲存器要求高I/O(input/output,輸入/輸出)性能。
因此,最近開始提出主機與儲存器之間之新的介面。
然而,若非揮發性記憶體中所含之不良塊數增加,則會存在如下情形:引起用以將不良塊置換為其他塊之置換資訊量增大、或該置換處理導致之讀取延遲時間增加。
因此,尋求實現一種用以減小因不良塊數之增加所造成之影響之新技術。
本發明之實施形態提供能夠減小因不良塊數之增加所造成之影響之記憶體系統及控制方法。
根據實施形態,其係能夠連接於主機之記憶體系統,且包括:複數個非揮發性記憶體裸片(Die),其等各自包含複數個塊;及控制器,其與上述複數個非揮發性記憶體裸片電性連接,且構成為對複數個並行單元進行管理,上述複數個並行單元各自包含屬於不同之非揮發性記憶體裸片之塊各者。上述複數個並行單元各自具有固有之第1塊位址,各非揮發性記憶體裸片內之複數個塊各自具有固有之第2塊位址,應包含於各並行單元之塊各者之第2塊位址係由各並行單元之第1塊位址基於數學規則而規定。上述控制器對不良資訊進行管理,上述不良資訊中保持針對各並行單元內之每個塊表示可使用或不可使用之至少1位元之資訊。上述控制器係於從上述主機接收到指定用於識別應寫入之第1資料之第3位址之寫入請求之情形時,參考上述不良資訊而從一個並行單元中所含之非不良塊中選擇一個塊作為寫入目標塊,決定上述已選擇之塊內之寫入目標位置,且將上述第1資料寫入至上述寫入目標位置,將表示上述已選擇之塊及上述寫入目標位置兩者之第1物理位址、及上述第3位址通知給上述主機。
以下,參考附圖對實施形態進行說明。
首先,參考圖1對主機與記憶體系統之關係進行說明。
該記憶體系統係以對非揮發性記憶體寫入資料並從非揮發性記憶體讀出資料之方式構成之半導體儲存裝置。該記憶體系統作為基於NAND快閃技術之快閃儲存裝置3實現。
主機(主機裝置)2以控制複數個快閃儲存裝置3之方式構成。主機2由計算機系統實現,該計算機系統構成為將包含複數個快閃儲存裝置3之快閃記憶體陣列用作儲存器。該計算機系統可以是伺服器。
再者,快閃儲存裝置3亦可用作設置於儲存器陣列內之複數個儲存裝置之一。儲存器陣列可經由電纜或網路連接於如伺服器般之計算機系統,儲存器陣列包含對該儲存器陣列內之複數個儲存器(例如複數個快閃儲存裝置3)進行控制之控制器。於快閃儲存裝置3應用於儲存器陣列之情形時,該儲存器陣列之控制器可作為快閃儲存裝置3之主機發揮功能。
以下,例示如伺服器般之計算機系統作為主機2發揮功能之情形進行說明。
主機(伺服器)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,Platform as a Service),(2)向各使用者端(各最終使用者終端61)提供如虛擬伺服器般之基礎設施之基礎設施即服務(IaaS,Infrastructure-as-a-Service)等。
複數個虛擬機器可於作為該主機(伺服器)2發揮功能之物理伺服器上執行。於主機(伺服器)2上運行之該等虛擬機器各自能夠作為虛擬伺服器發揮功能,該虛擬伺服器構成為向對應之一些使用者端(最終使用者終端61)提供各種服務。
主機(伺服器)2包括:對構成快閃記憶體陣列之複數個快閃儲存裝置3進行管理之儲存器管理功能,及分別對最終使用者終端61提供包含儲存器存取在內之各種服務之終端功能(front end function)。
現有型SSD中,NAND型快閃記憶體之塊/頁之階層構造由SSD內之快閃轉譯層(FTL,Flash Translation Layer)所隱蔽。即,現有型SSD之FTL具有下述功能:(1)使用作為邏輯物理位址轉換表發揮功能之查找表,對各邏輯位址與各NAND型快閃記憶體之物理位址之間之映射進行管理,(2)用於隱蔽頁單位之讀取/寫入與塊單位之抹除動作之功能,(3)執行NAND型快閃記憶體之垃圾回收(GC)之功能等。無法從主機看到各邏輯位址與NAND型快閃記憶體之物理位址之間之映射。NAND型快閃記憶體之塊/頁構造亦無法從主機看到。
另一方面,主機中有時亦執行一種位址轉換(應用層位址轉換)。該位址轉換使用應用層位址轉換表,對用於應用之各邏輯位址與各SSD用之邏輯位址之間之映射進行管理。而且,主機中,為了消除SSD用之邏輯位址空間上產生之片段(fragment),有時執行用於變更該邏輯位址空間上之資料配置之一種GC(應用層GC)。
然而,於主機及SSD分別具有位址轉換表般之冗餘構成(SSD具有作為邏輯物理位址轉換表發揮功能之查找表,主機具有應用層位址轉換表)中,為了保持該等位址轉換表要消耗巨大之記憶體資源。進而,包含主機側之位址轉換及SSD側之位址轉換之雙重位址轉換亦成為使系統整體之I/O性能降低之主要因素。
進而,主機側之應用層GC成為使對SSD之資料寫入量增加到實際之使用者資料量之數倍(例如2倍)程度之主要因素。這種資料寫入量之增加雖不會使SSD之寫入放大增加,但會使系統整體之儲存性能降低,且SSD之壽命亦會變短。
因此,本實施形態中,FTL之作用於主機2與快閃儲存裝置3之間得以分擔。主機2對作為邏輯物理位址轉換表發揮功能之查找表進行管理,但寫入時應使用之塊及頁能夠由快閃儲存裝置3決定而並非由主機2決定。而且,GC亦能夠由快閃儲存裝置3執行而並非由主機2執行。以下,將已移至主機2之FTL功能稱作全局FTL。
而且,快閃儲存裝置3為了提高寫入/讀出速度,對各自包含複數個塊(複數個物理塊)之複數個並行單元(複數個超級塊)進行管理。快閃儲存裝置3能夠並行執行針對某一並行單元內之複數個塊之寫入動作及讀出動作。
然而,NAND型快閃記憶體裸片中包含一些不良塊,因而有時為了確保並行度而由其他塊置換並行單元內之各不良塊。然而,若每一個NAND型快閃記憶體裸片中所含之不良塊數增加,則存在用於置換之管理之資訊量增大之可能性。
若舉例一個並行單元中所含之塊數為64之情形,則在根據表示並行單元之塊位址並按照數學規則產生各塊之塊位址之例子中,於由塊位址2049之塊置換64個塊中之第15個塊之情形時,為了表現第15個至少需要6位元,為了表現2049需要12位元。於應置換之塊數多之情形時需要與其成比例之資訊量。於將應置換之塊數設為16個之情形時,每個並行單元需要18位元×16 = 294位元之資訊。
而且,資料讀取動作中,需要使用置換資訊,執行用以將表示不良塊之位址轉換為表示置換目標塊之位址之位址轉換。因此,若不良塊數增加,則伴隨置換資訊之增大而該位址轉換處理所需之時間增加,因而讀取延遲時間(latency)增大。
因此,於用以寫入來自主機2之資料之寫入動作中,快閃儲存裝置3避開寫入對象之並行單元內之不良塊,從該並行單元內之非不良塊中選擇出寫入目標塊,決定該寫入目標塊內之寫入目標位置。來自主機2之資料被寫入至該寫入目標位置。然後,快閃儲存裝置3將表示該寫入目標塊及該寫入目標塊內之寫入位置兩者的物理位址通知給主機2。由此,主機2能夠識別出實際被寫入資料之塊及該塊內之寫入目標位置,因而在需要讀取該資料之情形時,能夠將指定該物理位址之讀取請求發送至快閃儲存裝置3。快閃儲存裝置3基於由該讀取請求指定之物理位址,能夠從上述已選擇之塊內之寫入目標位置讀取資料。因此,快閃儲存裝置3中,不需要位址轉換處理,從而能夠減少讀取延遲時間。
主機2之全局FTL可具有下述功能,即,執行儲存服務之功能,管理查找表(LUT)之功能,損耗控制功能,用於實現高可用性之功能,防止將具有相同內容之複數個重複資料部儲存在儲存器之去除重複(De-duplication)功能等。
另一方面,快閃儲存裝置3能夠執行底層抽象(LLA,low-level abstraction)。LLA係用於NAND型快閃記憶體之抽象之功能。LLA包含輔助資料配置之功能等。輔助資料配置之功能中,包含:決定使用者資料之寫入目標位置(塊位址、該塊內之位置)之功能,將表示寫入了使用者資料之該寫入目標位置之物理位址通知給高階(主機2)之功能,決定用於垃圾回收之複製源塊及複製目標塊之功能,將有效資料之複製目標位置通知給高階(主機2)之功能等。而且,LLA亦具有針對每個域(QoS域)執行快閃儲存裝置3之資源管理之QoS控制功能。
QoS控制功能中包含針對每個QoS域決定存取單位(資料之粒度)之功能。存取單位表示主機2能夠寫入/讀取之最小資料大小(資料之粒度)。快閃儲存裝置3支援單個或複數個存取單位(資料之粒度),主機2於快閃儲存裝置3支援複數個存取單位之情形時,能夠針對每個QoS域,將應使用之存取單位(資料之粒度)指示給快閃儲存裝置3。
而且,QoS控制功能中包含用於儘可能地防止QoS域間之性能干涉之功能。該功能基本上係用於保持穩定之延遲時間之功能。
為了實現該功能,快閃儲存裝置3可將NAND型快閃記憶體內邏輯性地分割為複數個區域(複數個QoS域)。一個區域(一個QoS域)包含一個以上之並行單元(超級塊)。各並行單元(超級塊)僅屬於某一個區域(QoS域)。
圖2表示包含快閃儲存裝置3與主機2之系統整體之階層構造。
主機(伺服器)2中,執行用於向複數個最終使用者提供複數個虛擬機器之虛擬機器服務401。虛擬機器服務401上之各虛擬機器中,執行由對應之最終使用者使用之操作系統及使用者應用程式402。
而且,主機(伺服器)2中,執行與複數個使用者應用程式402對應之複數個I/O服務403。該等I/O服務403中可包含LBA基礎之塊I/O服務、鍵值儲存(Key value Store)服務等。各I/O服務403包含對各邏輯位址與各快閃儲存裝置3之物理位址之間之映射進行管理之查找表(LUT)。此處,邏輯位址係指能夠識別存取對象之資料之標識符(標籤)。該邏輯位址可以係指定邏輯位址空間上之位置之邏輯塊位址(LBA),可以是鍵值儲存之鍵,亦可以是文件名般之文件標識符。
LBA基礎之塊I/O服務中,可使用對各邏輯位址(LBA)與各快閃儲存裝置3之物理位址之間之映射進行管理之LUT。
鍵值儲存服務中,可使用如下之LUT,該LUT對各邏輯位址(如鍵般之標籤)與儲存有和該等邏輯位址(即,如鍵般之標籤)對應之資料之快閃儲存裝置3之各物理位址之間之映射進行管理。該LUT中,可對標籤、儲存有由該標籤識別之資料之物理位址、及該資料之資料長之對應關係進行管理。
各最終使用者能夠選擇應使用之尋址方法(LBA、鍵值儲存之鍵、文件標識符等)。
該等各LUT並非將來自使用者應用程式402之各邏輯位址轉換為快閃儲存裝置3用之各邏輯位址,而是將來自使用者應用程式402之各邏輯位址轉換為各快閃儲存裝置3之物理位址。即,該等各LUT係綜合(合併)了將快閃儲存裝置3用之邏輯位址轉換為物理位址之表和應用層位址轉換表所得之表。
主機(伺服器)2中,I/O服務403存在於每個上述QoS域中。屬於某一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。
圖3表示快閃儲存裝置3之構成例。
快閃儲存裝置3具備控制器4及非揮發性記憶體(NAND型快閃記憶體)5。快閃儲存裝置3亦可具備隨機存取記憶體,例如DRAM(dynamic random access memory,動態隨機存取記憶體)6。
NAND型快閃記憶體5包含記憶體單元陣列,該記憶體單元陣列包含呈矩陣狀配置之複數個記憶體單元。NAND型快閃記憶體5可以是二維構造之NAND型快閃記憶體,亦可以是三維構造之NAND型快閃記憶體。
NAND型快閃記憶體5之記憶體單元陣列包含複數個塊BLK0~BLKm-1。塊BLK0~BLKm-1分別由複數個頁(此處為頁P0~Pn-1)構成。塊BLK0~BLKm-1作為抹除單位發揮功能。塊有時亦被稱作「抹除塊」、「物理塊」、或「物理抹除塊」。頁P0~Pn-1各自包含連接於同一字線之複數個記憶體單元。頁P0~Pn-1係資料寫入動作及資料讀取動作之單位。
控制器4經由如Toggle、開放式NAND快閃介面(ONFI)般之快閃I/O控制電路13,與作為非揮發性記憶體之NAND型快閃記憶體5電性連接。控制器4係以對NAND型快閃記憶體5進行控制之方式構成之記憶體控制器(控制電路)。
NAND型快閃記憶體5包含複數個NAND型快閃記憶體裸片。控制器4對上述複數個並行單元(parallel unit)進行管理。各並行單元由包含分別屬於不同之NAND型快閃記憶體裸片之複數個塊(複數個物理塊)之塊組即超級塊而實現。控制器4能夠並行執行針對各並行單元(超級塊)中所含之複數個塊之寫入動作、讀出動作。複數個並行單元(超級塊)各自具有固有之超級塊位址(第1塊位址)。各非揮發性記憶體裸片內之複數個塊各自具有固有之塊位址(第2塊位址)。各並行單元(超級塊)中所應包含之塊各自之塊位址根據各並行單元之超級塊並基於數學規則而規定。
控制器4包含主機介面11、CPU(Central Processing Unit,中央處理器)12、快閃I/O控制電路13、及DRAM介面14等。該等CPU12、快閃I/O控制電路13、DRAM介面14經由總線10而相互連接。
該主機介面11係以執行與主機2之通信之方式構成之主機介面電路。該主機介面11例如可以是PCIe控制器(NVMe控制器)。主機介面11從主機2接收各種請求(指令)。該等請求(指令)中包含寫入請求(寫入指令)、讀取請求(讀取指令)、其他各種請求(指令)。
CPU12係以對主機介面11、快閃I/O控制電路13、DRAM介面14進行控制之方式構成之處理器。CPU12響應快閃儲存裝置3之電源接通,從NAND型快閃記憶體5或未圖式之ROM將控制程式(固件)裝載至DRAM6,然後,藉由執行該固件進行各種處理。再者,固件亦可裝載至控制器4內之未圖式之SRAM(Static Random Access Memory,靜態隨機存取記憶體)上。該CPU12能夠執行用於對來自主機2之各種指令進行處理之指令處理等。CPU12之動作利用由CPU12執行之上述固件而控制。再者,指令處理之一部分或全部可由控制器4內之專用硬體執行。
CPU12能夠作為寫入動作控制部21、讀取動作控制部22及GC動作控制部23發揮功能。該等寫入動作控制部21、讀取動作控制部22及GC動作控制部23中,安裝著用於實現圖2所示之系統構成之應用編程介面(API)。
寫入動作控制部21從主機2接收寫入請求(寫入指令),該寫入請求(寫入指令)對用於識別應寫入之資料(使用者資料)之邏輯位址(標籤)進行指定。於接收到寫入指令之情形時,寫入動作控制部21首先參考不良資訊管理表33,從寫入對象之並行單元(超級塊)中所含之並非不良之塊(非不良塊)中選擇出一個塊作為寫入目標塊。不良資訊管理表33中保持不良資訊,該不良資訊保持著針對各並行單元(超級塊)中所含之每個塊表示可使用或不可使用之至少1位元之資訊。與各超級塊對應之不良資訊可以是包含與各超級塊中所含之塊數相同數量之位元之位元映射(bit map)。寫入動作控制部21藉由參考與寫入對象之並行單元(超級塊)對應之不良資訊(不良資訊管理表33),能夠識別出寫入對象之並行單元內之各塊係不良塊或非不良塊中之哪一個。
再者,不良資訊不限定於上述位元映射,例如,可將表示各塊之抹除次數(編程/抹除循環數)之資訊代用作不良資訊。該情形時,控制器4可判定具有某閾值以上之抹除次數之塊為不良塊。
不良塊係不可使用之塊,亦作為「壞塊」而參考。於由不良資訊表示之不良塊(壞塊)中,可包含NAND型快閃記憶體之製造過程中產生之不良塊(初級(primary)不良塊),亦可包含快閃儲存裝置3之使用開始後產生之不良塊(增長(grown)不良塊),亦可包含該等初級不良塊與增長不良塊兩者。
寫入動作控制部21決定所選擇之寫入目標塊內之寫入目標位置(頁、及該頁內之位置)。接下來,寫入動作控制部21將來自主機2之資料(寫入資料)寫入至該寫入目標塊之寫入目標位置。該情形時,寫入動作控制部21不僅能夠將來自主機2之資料,亦能夠將該資料與該資料之邏輯位址(標籤)兩者寫入至寫入目標塊。
然後,寫入動作控制部21使經指定之邏輯位址(標籤)與表示寫入目標塊及寫入目標位置兩者的物理位址回到主機2。
該情形時,該物理位址可由裸片標識符、物理塊位址(第2塊位址)、及偏移表示。裸片標識符係各非揮發性記憶體裸片所固有之標識符。該物理位址中所含之裸片標識符表示寫入目標塊所屬之非揮發性記憶體裸片之裸片標識符。物理塊位址係用於識別各非揮發性記憶體裸片內之複數個塊各者之塊位址(塊編號)。該物理位址中所含之塊位址表示該寫入目標塊之塊位址。偏移係塊內偏移。該物理位址中所含之偏移表示從寫入目標塊之開端至寫入目標位置為止之偏移(偏移值)。該偏移可由寫入目標位置所屬之頁之頁位址、及與寫入目標位置對應之頁內偏移表示。
或者,該物理位址可由超級塊位址(第1塊位址)、及偏移表示。超級塊位址係各超級塊所固有之塊位址。該物理位址中所含之超級塊位址表示寫入對象之超級塊之超級塊位址。偏移表示從寫入對象之超級塊之開端至寫入目標位置為止之偏移(偏移值)。該偏移可由寫入目標塊所屬之非揮發性記憶體裸片之裸片標識符、寫入目標位置所屬之頁之頁位址、及與寫入目標位置對應之頁內偏移表示。
物理位址亦作為「快閃記憶體位址」而參考。
再者,寫入指令不僅可指定邏輯位址(標籤),亦可指定超級塊位址。於接收到指定超級塊位址之寫入指令之情形時,寫入動作控制部21從複數個超級塊中,選擇出具有由寫入指令指定之超級塊位址之超級塊作為寫入對象之並行單元(寫入目標超級塊)。
讀取動作控制部22於從主機2接收到指定物理位址(表示讀取對象之塊及該塊內之讀取對象之位置)之讀取請求(讀取指令)之情形時,基於該物理位址,從讀取對象之塊內之讀取對象之位置讀取資料。
GC動作控制部23於執行NAND型快閃記憶體5之垃圾回收之情形時,從NAND型快閃記憶體5內之複數個塊中選擇出用於該垃圾回收之複製源塊(GC源塊)及複製目標塊(GC目之塊)。該等GC源塊及GC目之塊可以分別是超級塊,亦可以分別是物理塊。
GC動作控制部23通常選擇複數個複製源塊(GC源塊)、及一個以上之複製目標塊(GC目之塊)。用於選擇複製源塊(GC源塊)之條件(GC策略)可由主機2指定。例如,可使用優先選擇有效資料量最少之塊作為複製源塊(GC源塊)之GC策略,亦可使用其他GC策略。如此,複製源塊(GC源塊)及複製目標塊(GC目之塊)之選擇可由快閃儲存裝置3之控制器4(GC動作控制部23)執行,並非由主機2執行。控制器4可使用各塊管理表管理各塊之有效資料量。
有效資料/無效資料之管理可使用塊管理表32執行。該塊管理表32例如針對每個超級塊而存在。與某一超級塊對應之塊管理表32中,儲存有表示該超級塊內之各塊之資料各自之有效/無效之位元映射旗標。此處,有效資料係指從LUT得到參考之資料(即根據邏輯位址作為最新之資料關聯之資料),且係指有可能之後從主機2讀取到之資料。無效資料係指不可能從主機2讀取到之資料。例如,與某一邏輯位址建立關聯之資料係有效資料,未與任何邏輯位址建立關聯之資料係無效資料。
GC動作控制部23決定應寫入複製源塊(GC源塊)記憶體儲之有效資料之複製目標塊(GC目之塊)內之位置(複製目標位置),將有效資料複製到複製目標塊(GC目之塊)之該已決定之位置(複製目標位置)。該情形時,GC動作控制部23可將有效資料與該有效資料之邏輯位址兩者複製到複製目標塊(GC目之塊)中。GC動作控制部23藉由參考與複製源塊(GC源塊)對應之塊管理表32而特定出GC源塊內之有效資料。或者,另一實施形態中,主機2可指定GC源塊與GC目之塊。該等GC源塊與GC目之塊可以是超級塊,亦可以是物理塊。
然後,GC動作控制部23將被複製之有效資料之邏輯位址(標籤)、表示被複製之有效資料之舊物理記憶位置之物理位址、及表示被複製之有效資料之新物理記憶位置之物理位址通知給主機2。
本實施形態中,如上述般,寫入動作控制部21能夠將來自主機2之資料(寫入資料)與來自主機2之邏輯位址(標籤)兩者寫入至寫入目標塊。因此,GC動作控制部23能夠容易地從該複製源塊(GC源塊)獲取複製源塊(GC源塊)內之各資料之邏輯位址,因而能夠容易地將被複製之有效資料之邏輯位址通知給主機2。
快閃I/O控制電路13係以在CPU12之控制之下對NAND型快閃記憶體5進行控制之方式構成之記憶體控制電路。DRAM介面14係以於CPU12之控制之下對DRAM6進行控制之方式構成之DRAM控制電路。DRAM6之記憶區域之一部分係為了讀取緩衝區(RB)30、寫入緩衝區(WB)31、塊管理表32、不良資訊管理表33之儲存而使用。再者,該等讀取緩衝區(RB)30、寫入緩衝區(WB)31、塊管理表32、不良資訊管理表33可儲存在控制器4內之未圖式之SRAM中。
接下來,對用作快閃儲存裝置3與主機2之間之軟體介面之API進行說明。本實施形態中,該API大致分為2種API(In-Drive-GC(In-Drive-GC)API與超級塊API。
In-Drive-GC-API包括以快閃儲存裝置3單獨地執行垃圾回收(GC)為前提之指令群。該等指令群中可包含如下指令作為基本指令:寫入指令(Write without Physical Address,未伴隨有物理位址地寫入),讀取指令(Read with Physical Address,伴隨有物理位址地讀取),Trim指令(修剪指令),重複指令(Duplicate),位址更新通知(Address Update Notification (Device Initiated,設備啟動)),強制GC指令(Forced Garbage-Collection,強制垃圾回收),GC控制指令(Garbage Collection Control,垃圾回收控制)等。
寫入指令(Write without Physical Address)係指定識別應寫入之使用者資料之邏輯位址(標籤)而不指定寫入目標之物理位址之寫入指令。
讀取指令(Read with Physical Address)係指定表示讀取對象之物理記憶位置(物理塊、物理塊內之讀取對象位置)之物理位址之讀取指令。
Trim指令(Trim)係指定應設為無效之資料之物理位址且向儲存裝置3指示應使與該物理位址對應之資料無效化之指令。再者,主機2若支援防止具有相同內容之複數個重複資料部儲存於儲存器之去除重複(De-duplication)功能,則將Trim指令(Trim)用作向儲存裝置3指示應將表示參考某一資料之邏輯位址數之參考計數減少之指令。重複指令(Duplicate)係用作向儲存裝置3指示應將表示參考某一資料之邏輯位址數之參考計數增加之指令。
位址更新通知(Address Update Notification (Device Initiated))係於由快閃儲存裝置3執行用於GC之資料複製動作後,用於供快閃儲存裝置3將經複製之資料(有效資料)之邏輯位址、該有效資料之舊物理記憶位置、該有效資料之新物理記憶位置通知給主機2。
強制GC指令(Forced Garbage-Collection)係用於使快閃儲存裝置3強制性地執行GC之指令。
GC控制指令(Garbage Collection Control)係用以開始GC之條件等向快閃儲存裝置3指示之指令。
圖4表示In-Drive-GC-API用之各指令之參數與返回值之例。
圖4中,「Host:」之標記後續記載之內容係由對應之指令指定之參數,「Device:」之標記後續記載之內容係針對該指令之響應中所含之參數(返回值)。
寫入指令(Write without Physical Address)可包含使用者位址、長度、資料、QoS域標識符。使用者位址係用於識別應寫入之資料之邏輯位址(標籤)。使用者位址之例中包含LBA、鍵值儲存之鍵、文件標識符等。
對於寫入指令之響應可包含狀態(成功/失敗)、使用者位址、快閃記憶體位址(物理位址)、長度、剩餘可寫入資料量(distance-to-block-boundary,與塊邊界之距離)。剩餘可寫入資料量(distance-to-block-boundary)係可選擇之返回值,表示可寫入至已寫入資料之超級塊之剩餘資料量。剩餘可寫入資料量(distance-to-block-boundary)亦可由上述資料之粒度之倍數表示。資料有時會跨不良塊之前後之2個非不良塊寫入。因此,對於寫入指令之響應可包含各集合(set)含有使用者位址、快閃記憶體位址(物理位址)及長度之複數個集合。
讀取指令(Read with Physical Address)可包含快閃記憶體位址、長度。讀取指令(Read with Physical Address)可包含各集合含快閃記憶體位址、長度之複數個集合。針對讀取指令之響應可包含狀態、使用者位址、長度、資料。針對讀取指令之響應可包含各集合含使用者位址、長度之複數個集合。
Trim指令(Trim)/重複指令(Duplicate)可包含快閃記憶體位址、長度、參考計數之增減量(reference-count-to-add-or-subtract)。Trim指令(Trim)/重複指令(Duplicate)可包含各集合含快閃記憶體位址、長度、參考計數之增減量之複數個集合。
位址更新通知(Address Update Notification (Device Initiated))可包含使用者位址、舊快閃記憶體位址、新快閃記憶體位址、參考計數、長度,作為由快閃儲存裝置3通知給主機2之輸出參數。例如,快閃儲存裝置3在將資料從舊物理記憶位置複製到新物理記憶位置後,將位址更新通知(Address Update Notification (Device Initiated))發送至主機2。該位址更新通知(Address Update Notification (Device Initiated))中可包含:該資料之使用者位址,表示該資料之舊物理記憶位置之舊快閃記憶體位址,表示該資料之新物理記憶位置之新快閃記憶體位址,表示參考該資料之邏輯位址數之參考計數,及該資料之長度。位址更新通知(Address Update Notification (Device Initiated))可包含各集合含使用者位址、舊快閃記憶體位址、新快閃記憶體位址、參考計數、長度之複數個集合。
強制GC指令(Forced Garbage-Collection)可包含QoS域標識符、源超級塊位址(可選擇)。
GC控制指令(Garbage Collection Control)可包含最大資料數(maximum-number-of-data)、QoS域標識符、GC之方法(策略)。
超級塊API包括以如下為前提之指令群,即,主機2指定邏輯位址(標籤)與超級塊,快閃儲存裝置決定該超級塊內之寫入目標塊及該寫入目標塊內之寫入目標位置。該等指令群中包含如下指令作為基本指令,即,寫入指令(Write without Page Address),讀取指令(Read with Physical Address),超級塊釋放指令(Release Super Block to Unused Super Block Pool,釋放超級塊到未使用之超級塊池中),超級塊分配指令(Allocate Super Block and Open Write Buffer with Block Healing,伴隨有塊修復之分配超級塊及打開寫入緩衝區),關閉超級塊指令(Close Super Block and Write Buffer,關閉超級塊及寫入緩衝區),超級塊資訊指令(Super Block Information),非複製資料設定指令(Set Data not to be Copied,不複製設定資料),資料複製指令(Data Copy without Page Address,不伴隨有頁位址之資料複製)等。
寫入指令(Write without Page Address)係指定邏輯位址(標籤)與超級塊位址之寫入指令。讀取指令與In-Drive-GC-API用之讀取指令相同。超級塊釋放指令(Release Super Block to Unused Super Block Pool)係用於釋放已分配之超級塊之指令。超級塊分配指令(Allocate Super Block and Open Write Buffer with Block Healing)係請求超級塊之分配之指令。超級塊分配指令(Allocate Super Block and Open Write Buffer with Block Healing)可包含指定表示能夠並行存取之塊數之並行數之參數。超級塊資訊指令(Super Block Information)係用於獲取與特定之超級塊相關之資訊之指令。非複製資料設定指令(Set Data not to be Copied)係用於指定超級塊內之不應複製之資料之指令。資料複製指令(Data Copy without Page Address)係用於複製供GC之資料之指令。該等指令之參數與返回值之例表示於圖5中。圖5中,「Host:」之標記後續記載之內容表示由對應之指令指定之參數,「Device:」之標記後續記載之內容表示針對該指令之響應中所含之參數(返回值)。
圖6表示快閃I/O控制電路13與複數個NAND型快閃記憶體裸片之關係。
NAND型快閃記憶體5如圖6所示,包含複數個NAND型快閃記憶體裸片。各NAND型快閃記憶體裸片係非揮發性記憶體裸片,且包括包含複數個塊(物理塊)BLK之記憶體單元陣列及控制該記憶體單元陣列之周邊電路。各個NAND型快閃記憶體裸片能夠獨立地動作。因此,NAND型快閃記憶體裸片作為最小之並行動作單元而發揮功能。NAND型快閃記憶體裸片亦被稱作「NAND型快閃記憶體晶片」或「非揮發性記憶體晶片」。圖6中,例示如下情形,即,快閃I/O控制電路13中連接著16個通道Ch0、Ch1、…Ch15,該等通道Ch0、Ch1、…Ch15各自連接著相同數量(例如每通道有1個裸片)之各NAND型快閃記憶體裸片。各通道包含用於與對應之NAND型快閃記憶體裸片通信之通信線(記憶體總線)。
控制器4經由通道Ch0、Ch1、…Ch15對NAND型快閃記憶體裸片#0~#15進行控制。控制器4能夠同時驅動通道Ch0、Ch1、…Ch15。
圖6之構成例中,能夠使最大16個NAND型快閃記憶體裸片並行動作。
本實施形態中,控制器4對分別包含複數個塊BLK之複數個並行單元(超級塊)進行管理。超級塊不限定於此,亦可包含從連接於不同之通道之NAND型快閃記憶體裸片#0~#15逐個地選擇之共計16個塊BLK。再者,NAND型快閃記憶體裸片#0~#15各自可具有多平面構成。例如,於NAND型快閃記憶體裸片#0~#15各自具有包含2個平面之多平面構成之情形時,一個超級塊可包含從與NAND型快閃記憶體裸片#0~#15對應之32個平面中逐個地選擇之共計32個塊BLK。
圖7中例示一個超級塊SB包含從NAND型快閃記憶體裸片#0~#14中逐個地選擇之共計16個塊BLK之情形。於針對超級塊SB之寫入動作中,資料按照屬於NAND型快閃記憶體裸片#0之塊BLK之頁P0、屬於NAND型快閃記憶體裸片#1之塊BLK之頁P0、…屬於NAND型快閃記憶體裸片#15之塊BLK之頁P0、屬於NAND型快閃記憶體裸片#0之塊BLK之頁P1、屬於NAND型快閃記憶體裸片#2之塊BLK之頁P1、…屬於NAND型快閃記憶體裸片#15之塊BLK之頁P1、…之順序被寫入。
圖8表示超級塊SB之塊位址(超級塊位址)與構成該超級塊SB之複數個塊(物理塊)各自之塊位址之關係。
超級塊SB中所應包含之塊(物理塊)各自之塊位址根據該超級塊SB之塊位址(超級塊位址)且基於某一數學規則而規定。
例如,可將通過對超級塊SB之超級塊位址實施特定之四則運算所獲得之值,決定為該超級塊SB中所應包含之各塊之塊位址。或者,可將通過對表示超級塊SB之超級塊位址之複數個位元實施特定之位元反轉或特定之位元移位所獲得之值,決定為該超級塊SB中所應包含之各塊之塊位址。
圖8中,為了簡化圖示,例示了由具有與超級塊SB之超級塊位址相同之塊位址之各塊構成該超級塊SB之情形。
即,具有超級塊位址0之超級塊SB0包含:NAND型快閃記憶體裸片#0(Die#0)中所含之塊位址0之塊BLK0,NAND型快閃記憶體裸片#1(Die#1)中所含之塊位址0之塊BLK0,NAND型快閃記憶體裸片#2(Die#2)中所含之塊位址0之塊BLK0,…,NAND型快閃記憶體裸片#15(Die#15)中所含之塊位址0之塊BLK0。
同樣地,具有超級塊位址1000之超級塊SB1000包含:NAND型快閃記憶體裸片#0(Die#0)中所含之塊位址1000之塊BLK1000,NAND型快閃記憶體裸片#1(Die#1)中所含之塊位址1000之塊BLK1000,NAND型快閃記憶體裸片#2(Die#2)中所含之塊位址1000之塊BLK1000,…,NAND型快閃記憶體裸片#15(Die#15)中所含之塊位址1000之塊BLK1000。
各Die中有時會包含一些不良塊。通常,不良塊數於每個Die中不同。
圖9中,示出由屬於相同Die之其他塊置換各Die中所含之各不良塊之處理。
圖9中,設想如下情形:各Die包含2048個塊BLK,Die#0包含100個不良塊,Die#1不包含不良塊,Die#2包含20個不良塊,而且Die#15包含30個不良塊。
Die#0中,例如,不良塊BLK1被Die#0之非不良塊BLK1948所置換,不良塊BLK5被Die#0之非不良塊BLK1949所置換。如此,從Die#0之開端算起合計僅1948(=2048-100)個塊為可利用狀態,Die#0之剩餘之塊BLK1948~BLK2047不可利用。
因此,即便在Die#1不包含不良塊之情形時,Die#1之塊BLK1948~BLK2047亦無法為了構築超級塊而得到利用。由此,能夠構築之超級塊SB之數量被限制為不良塊最多之Die#0內之非不良塊數。
圖10表示不置換各不良塊而是從某一超級塊SB內之非不良塊中選擇出寫入目標塊之動作。
圖10中,為了簡化圖示,例示如下情形,即,某一超級塊(此處為超級塊SB5)包含8個塊,即,Die#0內之塊BLK5,Die#1內之塊BLK5,Die#2內之塊BLK5,Die#3內之塊BLK5,Die#4內之塊BLK5,Die#5內之塊BLK5,Die#6內之塊BLK5,及Die#7內之塊BLK5。
本實施形態中,設置著與各超級塊對應之不良資訊管理表33。超級塊SB5用之不良資訊管理表33中,保持著包含針對每個塊表示可使用或不可使用之1位元之資訊之不良資訊(位元映射)。不良資訊(位元映射)中,“0”表示非不良塊,“1”表示不良塊。
圖10中,設想Die#1內之塊BLK5、Die#4內之塊BLK5、Die#5內之塊BLK5為不良塊之情形。
控制器4不執行由Die#1內之其他塊置換Die#1內之塊BLK5之處理、由Die#4內之其他塊置換Die#4內之塊BLK5之處理、由Die#5內之其他塊置換Die#5內之塊BLK5之處理。取而代之,控制器4參考超級塊SB5用之不良資訊管理表33,從超級塊SB5中所含之非不良塊(此處為Die#0內之塊BLK5、Die#2內之塊BLK5、Die#3內之塊BLK5、Die#6內之塊BLK5、Die#7內之塊BLK5)中選擇出一個塊作為寫入目標塊。控制器4決定該寫入目標塊內之寫入目標位置,將來自主機2之寫入資料寫入至該寫入目標塊內之寫入目標位置。然後,控制器4將表示該寫入目標塊及該寫入目標位置兩者的物理位址通知給主機2。
由此,主機2能夠識別出實際被寫入了寫入資料之塊(寫入目標塊)與該塊內之寫入目標位置,因而在需要讀取該資料之情形時,能夠將指定該已被通知之物理位址之讀取請求(讀取指令)發送至快閃儲存裝置3。即,首先,主機2將包含識別應寫入之資料之邏輯位址(標籤)之寫入請求(寫入指令)發送至快閃儲存裝置3。主機2從快閃儲存裝置3接收表示已從除不良塊以外之塊中作為寫入目標塊而選擇之塊及該塊內之寫入目標位置(物理記憶位置)兩者的物理位址、及該資料之邏輯位址(標籤)。然後,主機2更新對各邏輯位址(標籤)與各快閃儲存裝置3之物理位址之間之映射進行管理之主機2上之查找表(LUT),將所接收到之物理位址映射於識別該資料之邏輯位址(標籤)中。於需要讀取該資料之情形時,主機2參考主機2上之查找表(LUT),獲取映射於該資料之邏輯位址(標籤)之物理位址,並將指定所獲取之物理位址之讀取請求(讀取指令)發送至快閃儲存裝置3。
如此,本實施形態中,不需要將寫入對象之超級塊內之不良塊由該不良塊所屬之Die(裸片)內之其他塊所置換,從而能夠正常地執行針對該超級塊之資料寫入及讀出動作。由此,即便不良塊數增加,亦不需要管理大量之置換資訊。而且,因亦不需要用於置換處理之位址轉換處理,故能夠減少讀取延遲時間。進而,基本上,因能夠構築與屬於各Die之塊數相同數量之超級塊,故即便不良塊數增加,亦能夠利用幾乎所有之非不良塊。
圖11表示應用於快閃儲存裝置3之寫入指令(Write without Physical Address)。
該寫入指令係向快閃儲存裝置3請求資料之寫入之指令。該寫入指令亦可以如上述般,包含指令ID、QoS域ID、使用者位址、長度等。
指令ID係表示該指令為寫入指令之ID(指令碼),寫入指令中包含寫入指令用指令ID。
QoS域ID係能夠唯一地識別應寫入資料之QoS域之標識符。根據來自某一最終使用者之寫入請求從主機2發送之寫入指令可包含指定與該最終使用者對應之QoS域之QoS域ID。命名空間ID亦可作為QoS域ID處理。
使用者位址係識別資料之邏輯位址(標籤),例如相當於LBA、鍵、文件標識符。
長度表示應寫入之寫入資料之長度。長度可由LBA數指定,或者其大小可由位元組指定。
圖12表示圖11之針對寫入指令之響應。
該響應包含使用者位址、快閃記憶體位址、長度、剩餘可寫入資料量(distance-to-block-boundary)。
使用者位址係圖11之寫入指令中所含之使用者位址。
快閃記憶體位址表示根據圖11之寫入指令而被寫入了資料之NAND型快閃記憶體5內之物理記憶位置之物理位址。
本實施形態中,該物理位址例如由裸片標識符、塊位址及偏移(塊內偏移)之組合,或者超級塊位址與偏移(超級塊內之偏移)之組合指定。
長度表示所寫入之寫入資料之長度。長度可由LBA數指定,或者其大小可由位元組指定。
剩餘可寫入資料量(distance-to-block-boundary)表示可進一步對進行了資料寫入之超級塊寫入之資料量。
圖13表示應用於快閃儲存裝置3之Trim指令。
該Trim指令包含指令ID、快閃記憶體位址、長度、參考計數之減少量(reference-count-to- subtract)。
指令ID係表示該指令為Trim指令之ID(指令碼),Trim指令中包含Trim指令用指令ID。
快閃記憶體位址表示儲存有應無效之資料(應減少參考計數之資料)之最初之物理記憶位置。本實施形態中,該快閃記憶體位址由裸片標識符、塊位址及偏移(塊內偏移)之組合,或者超級塊位址與偏移(超級塊內之偏移)之組合指定。
長度表示應無效之資料(應減少參考計數之資料)之長度。該長度(資料長)可由位元組指定。
控制器4使用塊管理表32管理表示複數個超級塊之各自所含之各資料之有效/無效之旗標(位元映射旗標)。於從主機2接收到包含表示儲存有應無效之資料之物理記憶位置之快閃記憶體位址之Trim指令之情形時,控制器4更新塊管理表32,將與Trim指令中所含之快閃記憶體位址對應之物理記憶位置之資料所對應之旗標(位元映射旗標)變更為表示無效之值。
於支援去除重複(De-duplication)功能之例子中,塊管理表32中,對與複數個超級塊之各自所含之資料對應之參考計數進行管理。參考計數之減少量表示應減少參考計數之量。
接下來,參考圖14說明對具有不良塊之超級塊寫入資料之動作。
此處,為了簡化圖示,設想某一個超級塊SB0包含4個塊BLK0(Die#0)、BLK0(Die#1)、BLK0(Die#2)、BLK0(Die#3),其中BLK0(Die#2)為不良塊。
控制器4為了避開不良塊,而按照塊BLK0(Die#0)之頁0、塊BLK0(Die#1)之頁0、塊BLK0(Die#3)之頁0、塊BLK0(Die#0)之頁1、塊BLK0(Die#1)之頁1、塊BLK0(Die#3)之頁1、…之順序寫入資料。
在頁大小為16K位元組(16 KB)、資料之粒度為4K位元組(4 KB)之情形時,最初之16K位元組資料(D1~D4)被寫入至塊BLK0(Die#0)之頁0。然後,16K位元組資料(D5~D8)被寫入至塊BLK0(Die#1)之頁0。對BLK0(Die#2)之寫入被跳過,然後16K位元組資料(D9~D12)被寫入至塊BLK0(Die#3)之頁0。
圖15表示圖12之響應中所含之物理位址之構成例。
物理位址如圖15之上部所示,包含作為寫入目標塊被選擇之塊所屬之裸片之裸片標識符、與該所選擇之塊對應之塊位址、及從該所選擇之塊之開端至寫入目標位置為止之偏移。從所選擇之塊之開端至寫入目標位置為止之偏移包含頁位址及頁內偏移。
或者,如圖15之下部所示,物理位址包含與寫入目標塊所屬之超級塊對應之塊位址(超級塊位址)、從超級塊之開端至寫入目標位置為止之偏移。從超級塊之開端至寫入目標位置為止之偏移包含裸片標識符、頁位址、頁內偏移。
圖16表示超級塊之超級塊位址(第1塊位址)與該超級塊中所含之各塊之塊位址(第2塊位址)之關係。
為了簡化說明,設想超級塊SB0、SB1、SB2分別包含4個塊之情形。
超級塊SB0包含塊80、塊81、塊82、及塊83。該等塊80、塊81、塊82、及塊83各自包含根據超級塊SB0之超級塊位址(第1塊位址)並基於數學規則而規定之塊位址(第2塊位址)。於塊81為不良塊之情形時,從主機2將資料寫入至選自塊80、塊82、塊83之寫入目標塊。因此,不良塊81之第2塊位址(不良塊81所屬之裸片之裸片標識符)不會被送回到主機2。
超級塊SB1包含塊84、塊85、塊86、及塊87。該等塊84、塊85、塊86、及塊87各自包含根據超級塊SB1之超級塊位址(第1塊位址)並基於數學規則而規定之塊位址(第2塊位址)。於塊86及塊87為不良塊之情形時,從主機2將資料寫入至選自塊84、塊85之寫入目標塊。因此,不良塊86之第2塊位址(不良塊86所屬之裸片之裸片標識符)及不良塊87之第2塊位址(不良塊87所屬之裸片之裸片標識符)不會被送回到主機2。
超級塊SB2包含塊88、塊89、塊90、及塊91。該等塊88、塊89、塊90、及塊91各自包含根據超級塊SB2之超級塊位址(第1塊位址)並基於數學規則而規定之塊位址(第2塊位址)。於塊88為不良塊之情形時,從主機2將資料寫入至選自塊89、塊90、及塊91之寫入目標塊。因此,不良塊88之第2塊位址(不良塊88所屬之裸片之裸片標識符)不會被送回到主機2。
圖17、圖18表示將邏輯位址與資料之配對寫入至塊內之頁中之動作。
各塊中,各頁可包含用於儲存使用者資料之使用者資料區域及用於儲存管理資料之冗餘區域。頁大小為16 KB+α。
控制器4將4 KB使用者資料及與該4 KB使用者資料對應之邏輯位址(例如LBA)兩者寫入至寫入目標塊BLK。該情形時,如圖17所示,各自包含LBA與4 KB使用者資料之4個資料集合可寫入至相同頁中。塊內偏移可表示集合邊界。
或者,如圖18所示,4個4 KB使用者資料被寫入至頁內之使用者資料區域,與該等4個4 KB使用者資料對應之4個LBA可被寫入至該頁內之冗餘區域。
使用圖19說明將複數個資料部及根據該等資料部算出之糾刪碼寫入至具有不良塊之超級塊之動作。
為了使用超級塊內之複數個塊實現RAID之結構,控制器4如圖19所示,跨及屬於一個超級塊中所含之複數個塊且分別具有相同頁位址之複數個頁,寫入複數個資料部及根據該等複數個資料部算出之1個以上之糾刪碼。屬於複數個塊且分別具有相同相同頁位址之複數個頁作為超級頁參考。
圖19之上部表示在超級塊SB0中,對超級頁寫入資料及糾刪碼。超級頁包含BLK0(Die#0)之頁0、BLK0(Die#1)之頁0、BLK0(Die#2)之頁0、BLK0(Die#3)之頁0、BLK0(Die#4)之頁0、BLK0(Die#5)之頁0、BLK0(Die#6)之頁0、BLK0(Die#7)之頁0。
資料被寫入至作為非不良塊之BLK0(Die#0)、BLK0(Die#2)、BLK0(Die#3)、BLK0(Die#4)之各頁0中。
糾刪碼之例包含讀取所羅門碼、奇偶校驗等。糾刪碼係寫入至非不良塊內之頁中。而且,糾刪碼係作為於各不良塊內之頁中儲存有預先規定之值(例如all“0”之位元序列、或all“1”之位元序列)者而算出。
圖19之上部所示之例中,例示了2個糾刪碼寫入至超級塊SB0之超級頁之情形。2個糾刪碼寫入至最後之2個非不良塊內之頁中。圖19之上部所示之例中,作為最後之塊之BLK0(Die#7)為非不良塊,作為從最後算起之第2個塊之BLK0(Die#6)為不良塊,作為從最後算起之第3個塊之BLK0(Die#5)為非不良塊,因而2個糾刪碼係寫入至BLK0(Die#5)之頁0及BLK0(Die#7)之頁0中。
編碼處理中,控制器4基於寫入至BLK0(Die#0)之資料部、假定寫入至作為不良塊之BLK0(Die#0)之預先規定之值、寫入至BLK0(Die#2)之資料部、寫入至BLK0(Die#3)之資料部、寫入至BLK0(Die#4)之資料部、及假定寫入至BLK0(Die#6)之預先規定之值,算出2個糾刪碼。
由此,能夠與超級塊內之不良塊/非不良塊之樣式(pattern)無關地,容易利用供編碼之相同運算而算出糾刪碼。
而且,控制器4進行使用了糾刪碼之解碼處理,該糾刪碼係作為於各不良塊內之頁中儲存有預先規定之值者。
圖19之下部所示之例中,作為構成超級塊SB1之最後之塊之BLK1(Die#7)為不良塊,作為從最後算起之第2個塊之BLK1(Die#6)為不良塊,作為從最後算起之第3個塊之BLK1(Die#5)為非不良塊,因而2個糾刪碼係寫入至BLK1(Die#5)之頁0、BLK1(Die#6)之頁0中。
接下來,使用圖20說明主機2內之快閃轉譯部2A與快閃儲存裝置3內之寫入動作控制部21之關係。
主機2側,快閃轉譯部2A於進行資料之寫入之情形時,將包含識別該資料之Tag(例如LBA)之寫入指令發送至快閃儲存裝置3。再者,於使用超級塊用之API之情形時,快閃轉譯部2A將指定識別資料之Tag(例如LBA)、與並行單元(Parallel Unit)之塊位址之寫入指令(Write without Page Address)發送至快閃儲存裝置3。因並行單元(Parallel Unit)由一個超級塊實現,故並行單元(Parallel Unit)之塊位址係該超級塊之超級塊位址。
快閃儲存裝置3側包含寫入動作控制部21、快閃I/O控制電路13、不良資訊管理表33、NAND型快閃記憶體裸片。而且,快閃儲存裝置3內保持針對每個超級塊表示可使用或不可使用之至少1位元之資訊之不良資訊由不良資訊管理表33所管理。
於從主機2側接收到包含用於識別應寫入之資料之資訊即Tag(例如LBA)之寫入請求之情形時,寫入動作控制部21參考不良資訊管理表33之不良資訊而從一個超級塊中所含之非不良塊中選擇出一個塊作為寫入目標塊,並決定應寫入資料之所選擇出之塊內之寫入目標位置(寫入目標頁、該頁內之偏移)。
再者,於從主機2接收到指定並行單元之塊位址(超級塊位址)之寫入指令之情形時,寫入動作控制部21從具有該經指定之塊位址(超級塊位址)之超級塊中所含之非不良塊中選擇出寫入目標塊,並決定應寫入資料之所選擇出之塊內之寫入目標位置(寫入目標頁、該頁內之偏移)。
然後,寫入動作控制部21將指定寫入目標塊所屬之裸片之裸片標識符(Die ID)、寫入目標塊之塊位址(Raw Block,原始塊)、寫入目標頁(Raw Page,原始頁)、寫入目標頁內之偏移(Offset)之寫入指示發送至快閃I/O控制電路13。
而且,寫入動作控制部21將表示寫入目標塊及寫入目標位置兩者的快閃記憶體位址(Die ID、Raw Block、Raw Page、Offset)、及Tag(例如LBA)通知給主機2。
接收到寫入指示之快閃I/O控制電路13基於寫入指示對寫入目標位置寫入資料。
主機2側,快閃轉譯部2A於從快閃儲存裝置3接收到快閃記憶體位址(Die ID、Raw Block、Raw Page、Offset)及Tag(例如LBA)時,更新由主機2管理之LUT。此時,使快閃記憶體位址(Die ID、Raw Block、Raw Page、Offset)與Tag(例如LBA)建立對應關係。
快閃轉譯部2A在進行讀取請求之情形時,將指定快閃記憶體位址(Die ID、Raw Block、Raw Page、Offset)之讀取請求發送至快閃儲存裝置3。
快閃儲存裝置3側,於從主機2接收指定快閃記憶體位址(Die ID、Raw Block、Raw Page、Offset)之讀取請求之情形時,快閃I/O控制電路13基於快閃記憶體位址讀取資料。讀取對象之塊由Die ID與Raw Block特定。讀取對象之頁由Raw Page特定。讀取對象之頁內之讀取對象位置由Offset特定。
接下來,使用圖21對由主機2與快閃儲存裝置3執行之寫入動作及讀取動作進行說明。
<寫入動作>  (1)寫入指令之接收  快閃儲存裝置3中,從主機2接收到之包含LBA之寫入指令及資料被暫時地儲存在快閃儲存裝置3內之寫入緩衝區31。
(2)不良資訊之參考  寫入動作控制部21參考由不良資訊管理表33管理之不良資訊,從寫入對象之超級塊中所含之非不良塊中選擇出一個塊作為寫入目標塊,並決定寫入目標塊內之寫入目標位置。
(3)寫入指示  寫入動作控制部21於決定寫入目標塊與寫入目標塊內之寫入目標位置時,將指定表示寫入目標塊與寫入目標塊兩者的快閃記憶體位址(Raw位址)之寫入指示經由寫入緩衝區31發送至快閃I/O控制電路13。此處,Raw位址中包含DieID、Raw Block、Raw Page、Offset。接收到Raw位址之快閃I/O控制電路13基於Raw位址,對已作為寫入目標塊所選擇之塊內之寫入目標位置寫入寫入資料。
(4)對主機之寫入目標之通知  寫入動作控制部21將Raw位址與LBA通知給主機2。由此,主機2能夠更新LUT並將該Raw位址映射到該LBA。
<讀取動作>  (11)LBA之通知  讀取解析器2B在接收到包含LBA之讀取指令時,將LBA通知給快閃轉譯部2A。
(12)Raw位址之獲取  快閃轉譯部2A於從讀取解析器2B接收到LBA時,參考LUT,獲取與所接收到之LBA對應之Raw位址,並將所獲取之Raw位址送回到讀取解析器2B。由此,讀取解析器2B能夠獲取Raw位址,且能夠將包含LBA之讀取指令轉換為包含Raw位址之讀取指令。
(13)讀取指示  讀取解析器2B將包含Raw位址之讀取指令發送至快閃儲存裝置3。快閃儲存裝置3中,接收到包含Raw位址之讀取指令之快閃I/O控制電路13基於Raw位址讀取資料,並將讀取資料發送至讀取緩衝區30。讀取緩衝區30中暫時地記憶讀取資料。
(14)讀取資料向主機之發送  讀取緩衝區30中暫時記憶之讀取資料被發送至主機2。
圖22之序列圖表示由主機2與快閃儲存裝置3執行之寫入動作處理之順序。
主機2將包含QoS域ID、使用者位址(邏輯位址)、寫入資料、長度之寫入指令(Write without Physical Address)發送至快閃儲存裝置3。於快閃儲存裝置3之控制器4接收到該寫入指令時,控制器4從一個超級塊(寫入對象之超級塊)中所含之非不良塊中選擇出一個塊作為寫入目標塊,並決定所選擇之塊內之寫入目標位置(步驟S11)。步驟S11中,該寫入對象之超級塊可以是屬於由QoS域ID特定出之QoS域之超級塊。於複數個超級塊屬於該QoS域之情形時,該等複數個超級塊中之一個被選擇作為寫入對象之超級塊。
控制器4將從主機2接收到之寫入資料寫入至寫入目標位置(步驟S12)。步驟S12中,控制器4將使用者位址(例如LBA)與寫入資料兩者及寫入目標塊之寫入亦寫入至目標位置。
控制器4更新塊管理表32,將與所寫入之資料對應之位元映射旗標(即,與被寫入了該資料之物理記憶位置之物理位址對應之位元映射旗標)從0變更為1(步驟S13)。例如,如圖23所示,設想開始LBA為LBAx之16K位元組更新資料被寫入至與塊BLK11之頁1之偏移+0~+3對應之物理記憶位置之情形。該情形時,如圖24所示,塊BLK11用之塊管理表中,與頁1之偏移+0~+3對應之位元映射旗標分別從0變更為1。
控制器4將針對該寫入指令之響應送回到主機2(步驟S14)。響應中包含使用者位址、物理位址(快閃記憶體位址)、長度。例如,如圖23所示,一旦將開始LBA為LBAx之16K位元組更新資料寫入至與塊BLK11之頁1之偏移+0~+3對應之物理記憶位置,則包含LBAx、快閃記憶體位址(塊BLK11所屬之裸片之裸片標識符、塊BLK11之塊位址、頁位址(=1)、頁內偏移(=+0))、長度(=4)之響應從控制器4發送至主機2。快閃記憶體位址由塊位址、頁位址、頁內偏移之組合表現,但以下之說明中,為了簡化快閃記憶體位址之說明,而省略了快閃記憶體位址內之裸片標識符之說明。
於主機2接收到該響應時,主機2更新由主機2管理之LUT,並將快閃記憶體位址(物理位址)映射到與所寫入之寫入資料對應之各使用者位址中(步驟S21)。如圖25所示,LUT包含與複數個使用者位址(邏輯位址)分別對應之複數個條目。與某一使用者位址(例如某一LBA)對應之條目中儲存有物理位址,該物理位址表示儲存有與該LBA對應之資料之NAND型快閃記憶體5內之位置(物理記憶位置)。如圖23所示,一旦將開始LBA為LBAx之16K位元組更新資料寫入至與塊BLK11之頁1之偏移+0~+3對應之物理記憶位置,則如圖25所示,LUT得到更新,與LBAx對應之條目中儲存有BLK11、頁1、偏移+0,與LBAx+1對應之條目中儲存有BLK11、頁1、偏移+1,與LBAx+2對應之條目中儲存有BLK11、頁1、偏移+2,與LBAx+3對應之條目中儲存有BLK11、頁1、偏移+3。
然後,主機2將Trim指令發送至快閃儲存裝置3,該Trim指令用於利用上述更新資料之寫入而使已不再需要之以前之資料無效。如圖23所示,於以前之資料被儲存在與塊BLK0之頁0之偏移+0、偏移+1、偏移+2、偏移+3對應之位置之情形時,如圖26所示,將指定快閃記憶體位址(塊位址(=BLK0)、頁位址(=頁0)、頁內偏移(=+0))、長度(=4)之Trim指令從主機2發送至快閃儲存裝置3。快閃儲存裝置3之控制器4根據該Trim指令更新塊管理表32(步驟S15)。步驟S15中,如圖26所示,塊BLK0用之塊管理表中,與頁0之偏移+0~+3對應之位元映射旗標分別從1變更為0。
圖27表示應用於快閃儲存裝置3之讀取指令(Read with Physical Address)。
讀取指令係向快閃儲存裝置3請求資料之讀出之指令。該讀取指令包含指令ID、快閃記憶體位址、長度、傳送目標指標。
指令ID係表示該指令為讀取指令之ID(指令碼),讀取指令中包含讀取指令用指令ID。
快閃記憶體位址表示應讀出資料之最初之物理記憶位置之快閃記憶體位址(物理位址)。長度表示應讀取之資料之長度。
傳送目標指標表示應傳送所讀出之資料之主機2內之記憶體上之位置。
一個讀取指令可指定複數個快閃記憶體位址(物理位址)與長度之組。
此處,讀取指令中可包含2組以上之快閃記憶體位址及長度之組。作為包含2組以上之快閃記憶體位址及長度之組,設想為因已進行資料寫入之超級塊中存在不良塊,故寫入資料被寫入至隔著不良塊之2個塊中。
圖28表示讀取動作。
此處,設想從主機2接收到指定塊位址(=BLK2)、頁位址(=頁1)、頁內偏移(=+1)、長度(=3)之讀取指令情形。快閃儲存裝置3之控制器4基於塊位址(=BLK2)、頁位址(=頁1)、頁內偏移(=+1)、長度(=3),從BLK2讀取資料d1~d3。該情形時,控制器4從BLK2之頁1讀取相當於1頁大小之資料,從該讀取資料中抽選出資料d1~資料d3。接下來,控制器4將資料d1~資料d3傳送到由傳送目標指標指定之主機記憶體上。
圖29之序列圖表示由主機2與快閃儲存裝置3執行之讀取處理之順序。
主機2參考由主機2管理之LUT,將來自使用者應用程式之讀取請求中所含之使用者位址(邏輯位址)轉換為快閃記憶體位址。然後,主機2將指定該快閃記憶體位址、長度之讀取指令發送至快閃儲存裝置3。
當快閃儲存裝置3之控制器4從主機2接收到讀取指令時,控制器4基於由該讀取指令指定之快閃記憶體位址,決定讀取對象之塊、讀取對象之頁、讀取對象之頁內位置(步驟S31)。控制器4從NAND型快閃記憶體5讀取由快閃記憶體位址、長度規定之資料(步驟S32),且將該讀取資料發送至主機2。
圖30表示應用於快閃儲存裝置3之垃圾回收(GC)控制指令。
GC控制指令可包含指令ID、策略(GC之方法)、QoS域ID、最大資料數(maximum-number-of-data)等。
指令ID係表示該指令為GC控制指令之ID(指令碼),GC控制指令中包含GC控制指令用指令ID。
策略(GC之方法)係指定用於選擇GC候選塊(GC源塊)之條件(GC策略)之參數。快閃儲存裝置3之控制器4支援複數個GC策略。
由控制器4支援之GC策略中可包含優先選擇有效資料量少之塊作為GC候選塊(GC源塊)般之策略(Greedy)。
而且,由控制器4支援之GC策略中,可包含如下策略,即,比起收集著具有高更新頻率之資料(熱資料(hot data))之塊,更優先選擇收集著具有低更新頻率之資料(冷資料(cold data))之塊作為GC候選塊(GC源塊)。
進而,GC策略可指定GC開始條件。GC開始條件例如可表示剩餘自由塊之個數。
控制器4可利用有效塊表(active block list)管理包含有效資料之超級塊群,於執行GC之情形時,基於由GC控制指令指定之GC策略,從由有效塊表管理之超級塊群中選擇出一個以上之GC候選超級塊(GC源塊)。
QoS域ID係指定應實施GC之QoS域之參數。控制器4從屬於由QoS域ID指定之QoS域之超級塊群,即與該QoS域對應之有效塊表中,選擇出一個以上之GC候選超級塊(GC源塊)。
最大資料數表示執行GC時被複製之資料量之上限值。即,超過最大資料數便不執行GC動作。
控制器4在與QoS域對應之剩餘自由塊數為由策略指定之閾值以下之情形時,可開始GC。
圖31表示應用於快閃儲存裝置3之強制GC指令(Forced Garbage-Collection)。
強制GC指令可包含指令ID、QoS域ID、超級塊位址等。於接收到該強制GC指令時,控制器立即執行GC。
圖32表示從快閃儲存裝置3發送至主機2之位址更新通知(Address Update Notification (Device Initiated))。
位址更新通知用於在快閃儲存裝置3中,將藉由執行GC動作而變更之資料之儲存位置通知給主機2。可包含使用者位址、舊快閃記憶體位址、新快閃記憶體位址、參考計數、長度等。
使用者位址係識別被複製之資料之位址。
舊快閃記憶體位址表示儲存有被複製之資料之舊物理記憶位置之物理位址(舊物理位址)。
新快閃記憶體位址表示儲存有被複製之資料之新物理記憶位置之物理位址(新物理位址)。
參考計數表示參考被複製之資料之使用者位址數。
長度表示被複製之資料之長度。
圖33之序列圖表示由快閃儲存裝置3執行之GC動作之順序。
快閃儲存裝置3之控制器4從屬於由主機2指定之QoS域之超級塊群中,選擇出有效資料與無效資料混合存在之一個以上之GC源塊(GC源超級塊)(步驟S41)。接下來,控制器4從屬於該QoS域之自由塊群(自由超級塊群)中選擇出一個以上之自由塊(自由超級塊),並將所選擇之自由塊作為GC目之塊(GC目之超級塊)分配(步驟S42)。
控制器4將GC源塊(GC源超級塊)內之所有有效資料複製到GC目之塊(GC目之超級塊)(步驟S43)。步驟S43中,控制器4不僅將GC源塊(GC源超級塊)內之有效資料,亦將該有效資料及與該有效資料對應之使用者位址(邏輯位址)兩者從GC源塊(GC源超級塊)複製到GC目之塊(GC目之超級塊)。由此,能夠在GC目之塊(GC目之超級塊)內保持資料與使用者位址(邏輯位址)之配對。
然後,控制器4針對每個被複製之有效資料,使用位址更新通知將使用者位址(邏輯位址)、舊快閃記憶體位址、新快閃記憶體位址、長度通知給主機2(步驟S44)。
於主機2接收到該位址更新通知時,主機2更新由主機2管理之LUT,將新快閃記憶體位址映射到與被複製之各有效資料對應之使用者位址(邏輯位址)(步驟S51)。
圖34表示為了GC而執行之資料複製動作之例。
圖34中,設想如下情形,即,儲存在與GC源塊(此處為塊BLK50)之頁1之偏移+0對應之位置之有效資料(LBA=10)被複製到與GC目之塊(此處為塊BLK100)之頁0之偏移+0對應之位置,儲存在與GC源塊(此處為塊BLK50)之頁2之偏移+2對應之位置之有效資料(LBA=20)被複製到與GC目之塊(此處為塊BLK100)之頁0之偏移+1對應之位置。該情形時,控制器4將{LBA10、舊快閃記憶體位址(BLK50、頁1、偏移(=+0))、新快閃記憶體位址(LBA100、頁0、偏移(=+0))、長度(=1)}、{LBA20、舊快閃記憶體位址(BLK50、頁2、偏移(=+2))、新快閃記憶體位址(LBA100、頁0、偏移(=+1))、長度(=1)}通知給主機2(位址更新通知)。
圖35表示基於圖34之資料複製動作之結果更新之主機2之LUT之內容。
該LUT中,與LBA10對應之快閃記憶體位址(塊位址、頁位址及偏移(頁內偏移))從BLK50、頁1、偏移(=+0)更新為BLK100、頁0、偏移(=+0)。同樣地,與LBA20對應之快閃記憶體位址(塊位址、頁位址、及偏移(頁內偏移))從BLK50、頁2、偏移(=+2)更新為BLK100、頁0、偏移(=+1)。
在更新了LUT後,主機2將指定BLK50、頁1、偏移(=+0)之Trim指令發送至快閃儲存裝置3,可使儲存在與BLK50之頁1之偏移(=+0)對應之位置之資料無效。進而,主機2將指定BLK50、頁2、偏移(=+2)之Trim指令發送至快閃儲存裝置3,可使儲存在與BLK50之頁2之偏移(=+2)對應之位置之資料無效。
圖36表示針對寫入指令之響應與GC用回叫處理(位址更新通知)之關係。
存在如下情形,即,控制器4於複製與某一使用者位址(邏輯位址)對應之有效資料之期間,有時會從主機2接收指定該使用者位址之寫入指令。
圖36中,設想如下情形,即,於圖34之資料複製動作(與LBA10對應之資料複製動作)之執行中,從主機2接收到指定LBA10之寫入指令。
控制器4將從主機2接收到之寫入資料寫入至寫入目標塊(此處寫入至與BLK3之頁0之偏移+0對應之位置)。然後,控制器4將{LBA10、BLK3、頁0、偏移(=+0)}作為針對寫入指令之響應送回到主機2。
主機2更新LUT,將與LBA10對應之塊位址、頁位址、偏移(頁內偏移)從BLK50、頁1、偏移(+0)變更為BLK3、頁0、偏移(+0)。
然後,若LBA10之新快閃記憶體位址從控制器4通知給主機2,則表示儲存有與LBA10對應之最新資料之位置之塊位址、頁位址及偏移(BLK3、頁0、偏移(+0))有可能被錯誤變更為與LBA10對應之新快閃記憶體位址(此處為BLK100、頁0、偏移(=+0))。
本實施形態中,控制器4不僅能夠將LBA10、新快閃記憶體位址(BLK100、頁0、偏移(=+0))、長度=1,亦能夠將舊快閃記憶體位址(BLK50、頁1、偏移(=+0))通知給主機2(位址更新通知)。主機2在舊快閃記憶體位址(BLK50、頁1、偏移(=+0))與利用LUT當前映射到LBA10之塊位址、頁位址、偏移不一致之情形時,不更新LUT。由此,能夠防止表示儲存有與LBA10對應之最新資料之位置之塊位址、頁位址及偏移(BLK3、頁0、偏移(+0))被錯誤變更為與LBA10對應之新快閃記憶體位址(此處為BLK100、頁0、偏移(=+0))。
圖37之流程圖表示由主機2執行之LUT更新處理之順序。
主機2若接收到位址更新通知(步驟S101之是),則將舊快閃記憶體位址與LUT上之當前之物理位址進行比較(步驟S102)。若比較之結果為,舊快閃記憶體位址與當前之物理位址一致(步驟S103之是),則主機2將與使用者位址對應之當前之物理位址更新為新快閃記憶體位址(步驟S104)。接下來,主機2將Trim指令發送至快閃儲存裝置,使儲存在與舊快閃記憶體位址對應之位置之資料無效(步驟S105)。
另一方面,若舊快閃記憶體位址與當前之物理位址不一致(步驟S106之否),則主機2將維持與使用者位址對應之當前之物理位址(步驟S106)。由此,能夠防止表示儲存有由位址更新通知所通知之最新資料之位置之塊位址、頁位址及偏移被錯誤地變更為新快閃記憶體位址。
圖38中,例示了塊BLK1用之塊管理表。
塊BLK1用之塊管理表包含與塊BLK1之頁位址及頁內偏移之各組對應之複數個條目。
例如,於與頁0、偏移+0對應之條目中儲存有與4 KB資料對應之參考計數,該4 KB資料儲存在與塊BLK1之頁0、偏移+0對應之位置。同樣地,於與頁0、偏移+1對應之條目中儲存有與4 KB資料對應之參考計數,該4 KB資料儲存在與塊BLK1之頁0、偏移+1對應之位置。
參考計數為1以上之資料係有效資料,參考計數為0之資料係無效資料。
快閃儲存裝置3基於從主機2接收到之重複指令/Ttim指令,使參考計數遞增/遞減。
圖39表示為了管理參考計數而應用於快閃儲存裝置3之重複指令。
重複指令係向快閃儲存裝置3請求使儲存在某一物理位址(塊位址、頁位址、頁內偏移)之資料之參考計數增加之指令。
該重複指令可包含指令ID、快閃記憶體位址、長度等。
指令ID係表示該指令為重複指令之ID(指令碼),重複指令中包含重複指令用指令ID。
快閃記憶體位址表示儲存有應增加參考計數之資料之最初之物理記憶位置。
長度表示應增加參考計數之資料之長度。
控制器4於從主機2接收到包含表示儲存有應增加參考計數之資料之物理記憶位置之塊位址、頁位址、頁內偏移之重複指令之情形時,更新塊管理表32,使與重複指令中所含之塊編號、頁編號、頁內偏移對應之物理記憶位置之資料所對應之參考計數增加。
圖40之序列圖表示參考計數遞增/遞減處理。
在快閃儲存裝置3之控制器4從主機2接收到重複指令時,控制器4使與由重複指令指定之快閃記憶體位址(塊位址、頁位址、偏移(頁內偏移))對應之參考計數,即,與由該塊位址、頁位址、偏移指定之NAND型快閃記憶體5內之物理記憶位置中儲存之資料對應之參考計數,例如遞增1(步驟S61)。該情形時,控制器4對與具有由重複指令指定之塊位址之塊對應之塊管理表32進行更新。該塊管理表32之更新中,所與由重複指令指定之物理記憶位置對應之塊管理表32內之條目中所儲存之參考計數例如遞增1。於由重複指令指定之長度為2以上之情形時,不僅使與由重複指令指定之頁位址及偏移對應之參考計數,亦使與該頁位址及偏移之後續之一些頁位址及偏移對應之參考計數亦例如遞增1。
在快閃儲存裝置3之控制器4從主機2接收到Trim指令時,控制器4使與由Trim指令指定之快閃記憶體位址(塊位址、頁位址、偏移(頁內偏移))對應之參考計數,即,使與由該塊位址、頁位址、偏移指定之NAND型快閃記憶體5內之物理記憶位置中所儲存之資料對應之參考計數,例如遞減1(步驟S62)。該情形時,控制器4對與具有由Trim指令指定之塊位址之塊對應之塊管理表32進行更新。該塊管理表32之更新中,使與由Trim指令指定之頁位址及偏移對應之塊管理表32內之條目中所儲存之參考計數例如遞減1。於由Trim指令指定之長度為2以上之情形時,不僅使與由Trim指令指定之頁位址及偏移對應之參考計數,亦使與該偏移之後續之一些頁位址及偏移對應之參考計數亦例如遞減1。
GC中,控制器4參考與GC源塊對應之塊管理表,以大小為4 KB之資料單位判定GC源塊內之資料係有效資料亦係無效資料。控制器4判定參考計數為0之資料係無效資料,判定參考計數為1以上之資料係有效資料。然後,控制器4將有效資料(參考計數為1以上之資料)及與該有效資料對應之邏輯位址從GC源塊(GC源超級塊)複製到GC目之塊(GC目之超級塊)。
更詳細來說,控制器4於執行NAND型快閃記憶體5之垃圾回收之情形時,選擇用於垃圾回收之GC源塊(GC源超級塊)及GC目之塊(GC目之超級塊)。控制器4將儲存在GC源塊(GC源超級塊)內之參考計數為1以上之第1資料(有效資料)與第1資料之邏輯位址兩者複製到GC目之塊(GC目之超級塊)。然後,控制器4將第1資料之使用者位址(邏輯位址)、第1資料之複製目標物理記憶位置(新物理記憶位置)之物理位址、及第1資料之複製源物理記憶位置(舊物理記憶位置)之物理位址通知給主機2。
圖41之流程圖表示由快閃儲存裝置3執行之超級塊分配處理之順序。
當接收到來自主機2之超級塊分配請求(並行單元分配請求)時(步驟S71之是),控制器4選擇包含由該分配請求指定之並行數以上之非不良塊之超級塊(步驟S72)。
接下來,控制器4將所選擇之超級塊分配到主機2(步驟S73)。
然後,當接收到來自主機2之寫入請求時(步驟S74之是),控制器4將寫入資料寫入至該經分配之超級塊內之非不良塊(步驟S75)。然後,控制器4將響應送回到主機(步驟S76)。
接下來,使用圖42對以超級塊內之所有非不良塊從該超級塊之開端起連續邏輯地配置之方式轉換存取對象塊之位址之位址轉換動作進行說明。
圖42中,超級塊SB5包含BLK5(Die#0)、BLK5(Die#1)、BLK5(Die#2)、BLK5(Die#3)、BLK5(Die#4)、BLK5(Die#5)、BLK5(Die#6)、BLK5(Die#7),其中,示出BLK5(Die#2)、BLK5(Die#5)為不良塊。而且,BLK5(Die#0)、BLK5(Die#1)、BLK5(Die#2)、BLK5(Die#3)、BLK5(Die#4)、BLK5(Die#5)、BLK5(Die#6)、BLK5(Die#7)分別由塊編號(塊位址)0、1、2、3、4、5、6、7而從外部指定。
位址轉換以如下方式執行,即,將超級塊SB5內之6個非不良塊(BLK5(Die#0)、BLK5(Die#1)、BLK5(Die#3)、BLK5(Die#4)、BLK5(Die#6)、BLK5(Die#7))作為塊編號0~6之塊進行處理。
當執行位址轉換動作時,BLK5(Die#0)、BLK5(Die#1)、BLK5(Die#2)、BLK5(Die#3)、BLK5(Die#4)之各自之塊編號分別被轉換為1→1、2→3、3→4、4→6、5→7。利用該位址轉換動作,能夠使得從超級塊SB5之開端開始之連續之偏移位址內不包含不良塊之塊編號。由此,利用該位址轉換動作,塊SB5內之所有非不良塊從該超級塊SB5之開端起連續邏輯地配置,因而能夠以使超級塊SB5成為猶如不包含不良塊之小尺寸之超級塊(僅由6個非不良塊構成之超級塊)之方式進行處理。其結果,即便為長資料,亦能夠使該資料之物理記憶位置僅由表示其開始物理記憶位置之一個物理位址與一個長度之組合表現。
接下來,使用圖43對供位址轉換動作所使用之不良資訊管理表33與位址轉換之例進行說明。再者,圖43中,塊編號由16進制表示。
不良資訊管理表33表示從開端(從塊編號較小之一端)看到之不良塊數之累計。圖43中示出不良資訊管理表33之塊編號為4、9之塊係不良塊。該情形時,不良資訊管理表33中,於與塊編號0對應之位置、與塊編號1對應之位置、與塊編號2對應之位置、與塊編號3對應之位置儲存“0”,於與塊編號4對應之位置、與塊編號5對應之位置、與塊編號6對應之位置、與塊編號7對應之位置、與塊編號8對應之位置儲存“1”,於與塊編號9對應之位置、與塊編號A對應之位置、與塊編號B對應之位置、與塊編號C對應之位置、與塊編號D對應之位置儲存“1”。即,表示與所儲存之數值發生了變化之部分對應之塊編號之塊係不良塊。
再者,於與不良資訊管理表33之塊編號E及F對應之位置,儲存有不會有之數值。若每一塊之不良資訊之位元數為2位元,則在與塊編號E及F對應之位置儲存“3”。
而且,若執行位址轉換動作,則存取對象之塊之塊編號被轉換為該塊之塊編號與不良塊數之累計之和。例如,關於塊編號0~3,不良塊之累計為“0”,因而塊編號不變。
另一方面,例如,於存取對象之塊之塊編號為4之情形時,該塊編號為+1,被轉換為塊編號“5”。因此,於寫入對象之塊之塊編號為4之情形時,資料實際被寫入至塊編號“5”之塊中。控制器4將塊編號4作為資料寫入目標塊之物理位址通知給主機2。於接收到將塊編號4指定為讀取對象塊之物理位址之讀取請求之情形時,該塊編號4被轉換為塊編號“5”,因而控制器4從塊編號“5”之塊中讀取資料。
同樣地,於存取對象之塊之塊編號為5之情形時,該塊編號為+1,從而被轉換為塊編號“6”。因此,於寫入對象之塊之塊編號為5之情形時,資料實際被寫入至塊編號“6”之塊中。控制器4將塊編號5作為資料寫入目標塊之物理位址通知給主機2。於接收到將塊編號5指定為讀取對象塊之物理位址之讀取請求之情形時,該塊編號5被轉換為塊編號“6”,因而控制器4從塊編號“6”之塊中讀取資料。
圖44表示主機2內之快閃轉譯部2A與快閃儲存裝置3內之不良塊轉換部24之關係。
主機2側,快閃轉譯部2A在進行資料之寫入之情形時,將包含識別該資料之Tag(例如LBA)之寫入指令發送至快閃儲存裝置3。再者,於使用超級塊用之API之情形時,快閃轉譯部2A將指定識別資料之Tag(例如LBA)、與並行單元(Parallel Unit)之塊位址之寫入指令(Write without Page Address)發送至快閃儲存裝置3。因並行單元(Parallel Unit)由一個超級塊實現,故並行單元(Parallel Unit)之塊位址係該超級塊之超級塊位址。
快閃儲存裝置3側包含不良塊轉換部24、快閃I/O控制電路13、不良資訊管理表33、NAND型快閃記憶體裸片。而且,快閃儲存裝置3內保持針對每個超級塊表示可使用或不可使用之至少2位元之資訊之不良資訊由不良資訊管理表33所管理。
於從主機2側接收到包含作為用於識別應寫入之資料之資訊即Tag(例如LBA)之寫入請求之情形時,不良塊轉換部24參考不良資訊,執行位址轉換,該位址轉換係以寫入對象之超級塊中所含之所有非不良塊從寫入對象之超級塊之開端起連續邏輯地配置之方式轉換存取對象塊之位址,由此選擇寫入對象之超級塊內之非不良塊作為寫入目標塊,並決定所選擇之塊內之寫入目標位置(寫入目標頁、該頁內之偏移)。
再者,於從主機2接收到指定並行單元之塊位址(超級塊位址)之寫入指令之情形時,不良塊轉換部24參考不良資訊,選擇具有該指定之塊位址(超級塊位址)之超級塊作為寫入對象之超級塊。
然後,不良塊轉換部24將指定寫入目標塊所屬之裸片之裸片標識符(Die ID)、寫入目標塊之塊位址(Raw Block)、寫入目標頁(Raw Page)、寫入目標頁內之偏移(Offset)之寫入指示發送至快閃I/O控制電路13。
而且,不良塊轉換部24將表示位址轉換前之存取對象塊及寫入目標位置兩者的物理位址、及Tag(例如LBA)通知給主機2。該物理位址可由表示寫入目標之超級塊之並行單元(Parallel Unit)、及該超級塊內之偏移(Offset)表示。表示寫入目標之超級塊之並行單元(Parallel Unit)係寫入目標之超級塊之超級塊位址。
接收到寫入指示之快閃I/O控制電路13基於寫入指示,對寫入目標位置寫入資料。
主機2側,快閃轉譯部2A在接收到物理位址(Parallel Unit、Offset)、及Tag(例如LBA)時,更新由主機2管理之LUT,將所接收到之物理位址映射到所接收之Tag(例如LBA)中。
快閃轉譯部2A於進行讀取請求之情形時,將指定物理位址(Parallel Unit、Offset)之讀取請求發送至快閃儲存裝置3。
快閃儲存裝置3側,於從主機2接收到指定物理位址(Parallel Unit、Offset)之讀取請求之情形時,不良塊轉換部24執行上述之位址轉換,將物理位址(Parallel Unit、Offset)轉換為裸片標識符(Die ID)、塊位址(Raw Block)、頁位址(Raw Page)、頁內之偏移(Offset)。然後,不良塊轉換部24將指定裸片標識符(Die ID)、塊位址(Raw Block)、頁位址(Raw Page)、頁內之偏移(Offset)之寫入指示發送至快閃I/O控制電路13。快閃I/O控制電路13基於裸片標識符(Die ID)、塊位址(Raw Block)、頁位址(Raw Page)、頁內之偏移(Offset)讀取資料。
圖45表示主機2(計算機系統)之構成例。
該主機2(計算機系統)包含處理器(CPU)101、主記憶體102、BIOS-ROM(Basic Input Output System-Read Only Memory,基本輸入輸出系統-只讀記憶體)103、網路控制器105、周邊介面控制器106、控制器107、及嵌入式控制器(EC,embedded controller)108等。
處理器101係以對該計算機系統之各組件之動作進行控制之方式構成之CPU。該處理器101執行從複數個快閃儲存裝置3中之任一個裝載至主記憶體102之各種程式。主記憶體102由DRAM般之隨機存取記憶體構成。由處理器101執行之程式包含應用軟體層41、操作系統(OS)42、文件系統43、驅動器44等。此處,文件系統43中包含快閃儲存管理器45。再者,該快閃儲存管理器45亦可不包含於文件系統43中而包含於驅動器44中。
而且,處理器101亦執行作為非揮發性記憶體之BIOS-ROM103中儲存之基本輸入輸出系統(BIOS)。BIOS係用於硬體控制之系統程式。
網路控制器105係如有線LAN控制器、無線LAN控制器般之通信設備。周邊介面控制器106構成為執行與USB設備般之周邊設備之通信。
控制器107構成為執行與分別連接於複數個連接器107A之設備之通信。複數個快閃儲存裝置3可分別連接於複數個連接器107A。控制器107係SAS expander、PCIe Switch、PCIe expander或RAID控制器等。
EC108作為以執行計算機系統之電力管理之方式構成之系統控制器發揮功能。EC108根據使用者對電源開關之操作將計算機系統電源接通及電源斷開。EC108作為如單晶片微控制器般之處理電路實現。
快閃儲存管理器45係作為上述快閃轉譯部2A發揮功能之程式模塊。快閃儲存管理器45具有對各使用者位址(邏輯位址)與各快閃儲存裝置3之物理位址之間之映射進行管理之上述LUT。於使用LBA作為使用者位址(邏輯位址)之情形時,快閃儲存管理器45可設置於驅動器44內。
快閃儲存管理器45將指定用於識別應寫入之資料(寫入資料)之使用者位址(邏輯位址)與該寫入資料之長度之寫入指令發送至快閃儲存裝置3。快閃儲存管理器45從快閃儲存裝置3接收物理位址、及上述使用者位址(邏輯位址),更新LUT並將該物理位址映射到該使用者位址(邏輯位址),該物理位址表示已由快閃儲存裝置3從除不良塊以外之塊中選擇出之寫入目標塊及寫入目標塊內之寫入目標位置兩者。要接收之物理位址,詳細而言表示寫入目標塊及已寫入了該寫入資料之寫入目標塊內之物理記憶位置兩者,該寫入目標塊係作為用以寫入資料之寫入目標塊而由快閃儲存裝置3從寫入對象之一個並行單元中所含之不良塊以外之塊中選擇出。
而且,快閃儲存管理器45參考LUT,獲取映射到與讀取對象之資料對應之使用者位址(邏輯位址)之物理位址,將指定該物理位址之讀取指令發送至快閃儲存裝置3。
圖46表示內置快閃儲存裝置3之主機(計算機系統)2之構成例。
該計算機系統具備能夠收容在支架之薄箱形殼體201。複數個快閃儲存裝置3可配置於殼體201內。該情形時,各快閃儲存裝置3能夠拆卸地插入到設置於殼體201之前表面201A之插槽中。
系統板(母板)202配置於殼體201內。系統板(母板)202上,安裝著包含CPU101、記憶體102、網路控制器105、控制器107之各種電子零件。該等電子零件作為主機2發揮功能。
圖47之流程圖表示由主機(計算機系統)2執行之寫入動作之順序。
主機2之處理器101藉由執行儲存於主記憶體102之計算機程式(此處為快閃儲存管理器45等)而執行以下之順序。
即,處理器101判定是否需要發送寫入指令(步驟S201),若需要發送寫入指令(步驟S201之是),則將指定使用者位址、快閃記憶體位址、長度之寫入指令發送至快閃儲存裝置3(步驟S202)。
然後,處理器101一旦接收到來自快閃儲存裝置3之寫入動作完成之響應(包含使用者位址、快閃記憶體位址、長度)(步驟S203之是),便更新LUT(步驟S204)。然後,處理器101將指定與舊資料對應之物理位址之Trim指令發送至快閃儲存裝置3,將上述舊資料應無效這一情形(或應使表示參考舊資料之邏輯位址數之參考計數減少這一情形)指示給快閃儲存裝置3(步驟S205)。
圖48之流程圖表示由主機2執行之讀取動作之順序。
處理器101判定是否需要發送讀取指令(步驟S301),若需要發送讀取指令(步驟S301之是),則將指定快閃記憶體位址、長度之讀取指令發送至快閃儲存裝置3(步驟S302)。
然後,處理器101判定是否接收到讀取資料(步驟S303),若接收到讀取資料(步驟S303之是),則動作完成。
圖49之流程圖表示由主機2執行之參考計數遞增/遞減處理之順序。
處理器101判定是否需要發送用於增加舊資料之參考數之重複指令(步驟S401),若需要發送重複指令(步驟S401之是),則將重複指令發送至快閃儲存裝置3(步驟S402)。
而且,處理器101判定是否需要發送用於減少舊資料之參考數之Trim指令(步驟S403),若需要發送Trim指令(步驟S403之是),則將Trim指令發送至快閃儲存裝置3(步驟S404)。
如以上說明,根據本實施形態,無需將寫入對象之並行單元(超級塊)內之不良塊由該不良塊所屬之裸片內之其他塊進行置換,能夠正常地執行針對該並行單元(超級塊)之資料寫入及讀出動作。由此,即便不良塊數增加,亦無需管理大量之置換資訊。而且,亦不需要用於置換處理之位址轉換處理,因而能夠減少讀取延遲時間。進而,基本上,能夠構築與屬於各裸片之塊數相同數量之並行單元(超級塊),因而即便不良塊數增加,亦能夠利用幾乎所有之非不良塊。因此,能夠減小因不良塊數之增加所造成之影響。
而且,快閃儲存裝置3利用如下構成,即,決定寫入目標塊及該寫入目標塊內之寫入目標位置,且將表示寫入目標塊與寫入目標位置兩者的物理位址送回到主機2,而能夠實現高階(主機2)之應用層位址轉換表與現有型SSD之LUT層位址轉換表之結合。
再者,本實施形態中,例示了NAND型快閃記憶體作為非揮發性記憶體。然而,本實施形態之功能亦可應用於例如MRAM(Magnetoresistive Random Access Memory,磁阻式隨機存取記憶體)、PRAM(Phase change Random Access Memory,相變隨機存取記憶體)、ReRAM(Resistive Random Access Memory,可變電阻式隨機存取記憶體)或者FeRAM(Ferroelectric Random Access Memory,鐵電隨機存取記憶體)般之其他各種非揮發性記憶體。
已對本發明之幾個實施形態進行了說明,但該等實施形態係作為示例而提示,並不意圖限定發明之範圍。該等新穎之實施形態能夠由其他各種形態實施,於不脫離發明之主旨之範圍內能夠進行各種省略、置換、變更。該等實施形態或其變形包含在發明之範圍或主旨中,並且包含在請求項所記載之發明及其均等之範圍內。
[相關申請]  本申請案享有以日本專利申請案2017-209317號(申請日:2017年10月30日)為基礎申請案之優先權。本申請案藉由參考該基礎申請案而包含基礎申請案之全部內容。
2                               主機  2A                             快閃轉譯部  2B                             讀取解析器  3                               快閃儲存裝置  4                               控制器  5                               NAND型快閃記憶體  6                               DRAM  10                             總線  11                              主機介面  12                             CPU  13                             快閃I/O控制電路  14                             DRAM介面  21                             寫入動作控制部  22                             讀取動作控制部  23                             GC動作控制部  24                             不良塊轉換部  30                             讀取緩衝區  31                             寫入緩衝區(WB)  32                             塊管理表  33                             不良資訊管理表  41                             應用層  42                             操作系統(OS)  43                             文件系統  44                             驅動器  45                             快閃儲存管理器  50                             介面  51                             網路  61                             最終使用者終端  80                             塊  81                             塊  82                             塊  83                             塊  84                             塊  85                             塊  86                             塊  87                             塊  88                             塊  89                             塊  90                             塊  91                             塊  101                            處理器  102                            主記憶體  103                            BIOS-ROM  105                            網路控制器  106                            周邊介面控制器  107                            控制器  107A                          連接器  201                            薄箱形殼體  201A                          前表面  202                            系統板(母板)  401                            虛擬機器服務  402                            使用者應用程式  403                            I/O服務  500                            I/O隊列  601                            寫入緩衝區(WB)  602                            垃圾回收(GC)功能  603                            NAND快閃記憶體陣列  BLK                           寫入目標塊  BLK0~BLKm-1        塊  Ch0、Ch1、…Ch15          通道  d1~d3                       資料  D1~D24                         資料  LBA                          邏輯位址  LUT                           管理查找表   P0~Pn-1                  頁  SB                             超級塊  SB0                           超級塊  SB1                           超級塊  SB2                           超級塊  SB5                           超級塊  #0~#15                  NAND型快閃記憶體裸片
圖1係表示主機與記憶體系統(快閃儲存裝置)之關係之方塊圖。  圖2係用於說明快閃儲存裝置與主機之間之作用分擔之圖。  圖3係表示快閃儲存裝置之構成例之方塊圖。  圖4係表示In-Drive-GC API(Application Programming Interface,應用編程介面)用指令之圖。  圖5係表示超級塊API用指令之圖。  圖6係表示設置於快閃儲存裝置之快閃I/O控制電路與複數個NAND型快閃記憶體裸片之關係的方塊圖。  圖7係表示由複數個塊之集合構築之超級塊(並行單元)之構成例之圖。  圖8係用於說明超級塊之塊位址與構成該超級塊之複數個塊各自之塊位址之關係之圖。  圖9係用於說明將屬於某一非揮發性記憶體裸片之各不良塊由該非揮發性記憶體裸片之各其他塊進行置換之動作之圖。  圖10係用於說明不對不良塊進行置換而從超級塊內之非不良塊中選擇出寫入目標塊之動作之圖。  圖11係用於說明應用於快閃儲存裝置之寫入指令之圖。  圖12係用於說明針對圖11之寫入指令之響應之圖。  圖13係用於說明應用於快閃儲存裝置之Trim(修剪)指令之圖。  圖14係表示對具有不良塊之超級塊寫入資料之動作之圖。  圖15係表示圖12之響應中所含之物理位址之構成例之圖。  圖16係表示超級塊之塊位址與該超級塊中所含之各塊之塊位址之關係之圖。  圖17係用於說明將邏輯位址與資料之配對(pair)寫入至塊內之頁之動作之圖。  圖18係用於說明將資料寫入至塊內之頁之使用者資料區域且將該資料之邏輯位址寫入至該頁之冗餘區域之動作之圖。  圖19係用於說明將複數個資料部與根據該等資料部算出之糾刪碼(erasure coding)寫入至具有不良塊之超級塊之動作之圖。  圖20係表示主機內之快閃轉譯部與快閃儲存裝置內之寫入動作控制部之關係的方塊圖。  圖21係用於說明由主機與快閃儲存裝置執行之寫入動作及讀取動作之方塊圖。  圖22係表示由主機與快閃儲存裝置執行之寫入動作處理之序列之序列圖。  圖23係表示寫入針對已經寫入之資料之更新資料之資料更新動作之圖。  圖24係用於說明對由快閃儲存裝置管理之塊管理表進行更新之動作之圖。  圖25係用於說明對由主機管理之查找表(邏輯物理位址轉換表)進行更新之動作之圖。  圖26係用於說明根據表示與應無效之資料對應之物理位址的來自主機之通知更新塊管理表之動作之圖。  圖27係用於說明應用於快閃儲存裝置之讀取指令之圖。  圖28係用於說明由快閃儲存裝置執行之讀取動作之圖。  圖29係表示由主機與快閃儲存裝置執行之讀取處理之序列之序列圖。  圖30係用於說明應用於快閃儲存裝置之垃圾回收(GC)控制指令之圖。  圖31係用於說明應用於快閃儲存裝置之強制垃圾回收(GC)指令之圖。  圖32係用於說明從快閃儲存裝置向主機發送之位址更新通知之圖。  圖33係表示由快閃儲存裝置執行之垃圾回收(GC)動作之順序之序列圖。  圖34係用於說明為了垃圾回收(GC)而執行之資料複製動作之例之圖。  圖35係用於說明基於圖34之資料複製動作之結果所更新之主機之查找表之內容之圖。  圖36係用於說明針對寫入指令之響應與GC用回叫處理(位址更新通知)之關係之圖。  圖37係表示由主機執行之查找表更新處理之順序之流程圖。  圖38係表示用以管理參考計數之塊管理表之構成例之圖。  圖39係用於說明應用於快閃儲存裝置之重複指令之圖。  圖40係表示由主機與快閃儲存裝置執行之參考計數遞增/遞減處理之序列圖。  圖41係表示由快閃儲存裝置執行之超級塊分配處理之順序之流程圖。  圖42係用於說明以超級塊內之所有非不良塊從該超級塊之開端連續邏輯地配置之方式對存取對象塊之位址進行轉換之位址轉換動作之圖。  圖43係用於說明供位址轉換動作所使用之不良資訊管理表與位址轉換之例之圖。  圖44係表示主機內之快閃轉譯部與快閃儲存裝置內之不良塊轉換部之關係之方塊圖。  圖45係表示主機(計算機系統)之構成例之方塊圖。  圖46係表示內置快閃儲存裝置之主機之構成例之圖。  圖47係表示由主機執行之寫入動作之順序之流程圖。  圖48係表示由主機執行之讀取動作之順序之流程圖。  圖49係表示由主機執行之參考計數遞增/遞減處理之順序之流程圖。
2                主機  2A              快閃轉譯部  3                快閃儲存裝置  13              快閃I/O控制電路  21              寫入動作控制部  33              不良資訊管理表  #0~#3          NAND型快閃記憶體裸片

Claims (14)

  1. 一種記憶體系統,其能夠與主機連接,且包括:  複數個非揮發性記憶體裸片,其等各自包含複數個塊;及  控制器,其與上述複數個非揮發性記憶體裸片電性連接,且構成為對複數個並行單元進行管理,上述複數個並行單元各自包含屬於不同之非揮發性記憶體裸片之塊各者,  上述複數個並行單元各自具有固有之第1塊位址,各非揮發性記憶體裸片內之複數個塊各自具有固有之第2塊位址,應包含於各並行單元之塊各者之第2塊位址係由各並行單元之第1塊位址基於數學規則而定,  上述控制器係構成為:  對不良資訊進行管理,上述不良資訊中保持針對各並行單元內之每個塊表示可使用或不可使用之至少1位元之資訊,  於從上述主機接收到指定用於識別應寫入之第1資料之第3位址之寫入請求之情形時,參考上述不良資訊而從一個並行單元中所含之非不良塊中選擇一個塊作為寫入目標塊,決定上述已選擇之塊內之寫入目標位置,且將上述第1資料寫入至上述寫入目標位置,將表示上述已選擇之塊及上述寫入目標位置兩者之第1物理位址、及上述第3位址通知給上述主機。
  2. 如請求項1之記憶體系統,其中  上述第1物理位址包括:上述已選擇之塊所屬之非揮發性記憶體裸片之裸片標識符,與上述已選擇之塊對應之第2塊位址,及從上述已選擇之塊之開端至上述寫入目標位置為止之偏移。
  3. 如請求項2之記憶體系統,其中  上述偏移係由上述寫入目標位置所屬之頁之頁位址、及與上述寫入目標位置對應之頁內偏移表示。
  4. 如請求項1之記憶體系統,其中  上述第1物理位址包含:與上述一個並行單元對應之第1塊位址,及從上述一個並行單元之開端至上述寫入目標位置為止之偏移。
  5. 如請求項4之記憶體系統,其中  上述偏移係由上述已選擇之塊所屬之非揮發性記憶體裸片之裸片標識符、上述寫入目標位置所屬之頁之頁位址、及與上述寫入目標位置對應之頁內偏移表示。
  6. 如請求項1之記憶體系統,其中  上述控制器係構成為,於從上述主機接收到指定上述第1物理位址之讀取請求之情形時,基於上述第1物理位址從上述已選擇之塊內之上述寫入目標位置讀取資料。
  7. 如請求項1之記憶體系統,其中  上述控制器係構成為,於從上述主機接收到指定能夠並行存取之塊數之並行單元分配請求之情形時,從上述複數個並行單元中選擇包含上述經指定之塊數以上之非不良塊之並行單元,將上述已選擇之並行單元分配至上述主機,  上述一個並行單元係被分配至上述主機之上述已選擇之並行單元。
  8. 如請求項1之記憶體系統,其中  上述控制器係構成為,跨及複數個頁寫入複數個資料部及根據上述複數個資料部算出之糾刪碼,上述複數個頁具有相同之頁位址且分別屬於各並行單元中所含之複數個塊,  將上述糾刪碼作為於各並行單元內之各不良塊內之頁中儲存有預先規定之值者而算出,  將上述糾刪碼寫入至各並行單元內之非不良塊內之頁中。
  9. 如請求項8之記憶體系統,其中  上述控制器係構成為進行使用上述糾刪碼之解碼處理,上述糾刪碼係作為於各並行單元內之各不良塊內之頁中儲存有預先規定之值者。
  10. 如請求項1之記憶體系統,其中  上述寫入請求係指定上述第3位址、及與一個並行單元對應之第1塊位址,  上述控制器係構成為:  從上述複數個並行單元中選擇具有由上述寫入請求指定之上述第1塊位址之並行單元,  參考上述不良資訊,從上述已選擇之並行單元中所含之非不良塊中選擇一個塊作為上述寫入目標塊。
  11. 一種記憶體系統,其係可與主機連接者,且包括:  複數個非揮發性記憶體裸片,其等各自包含複數個塊;及  控制器,其與上述複數個非揮發性記憶體裸片電性連接,且構成為對複數個並行單元進行管理,上述複數個並行單元各自包含屬於不同之非揮發性記憶體裸片之塊各者,  上述複數個並行單元各自具有固有之第1塊位址,各非揮發性記憶體裸片內之複數個塊各自具有固有之第2塊位址,應包含於各並行單元之塊各者之第2塊位址係由各並行單元之第1塊位址基於數學規則而定,  上述控制器係構成為:  對不良資訊進行管理,上述不良資訊係保持針對各並行單元內之每個塊表示可使用或不可使用之至少1位元之資訊,  於從上述主機接收到指定用於識別應寫入之第1資料之第3位址之寫入請求之情形時,參考上述不良資訊而從寫入對象之並行單元中所含之非不良塊之中選擇一個塊,或者基於上述不良資訊而執行以上述寫入對象之並行單元內之所有非不良塊從上述寫入對象之並行單元之開端邏輯地連續配置之方式轉換存取對象塊之位址的位址轉換,藉此選擇上述寫入對象之並行單元內之非不良塊作為寫入目標塊,  決定上述已選擇之塊內之寫入目標位置,  將上述第1資料寫入至上述寫入目標位置,  將表示上述已選擇之塊及上述寫入目標位置兩者之物理位址、及上述第3位址,或者將表示上述位址轉換前之上述存取對象塊及上述寫入目標位置兩者之物理位址、及上述第3位址,通知給上述主機。
  12. 一種控制方法,其係對各自包含複數個塊之複數個非揮發性記憶體裸片進行控制者,且包括:  對各自包含屬於不同之非揮發性記憶體裸片之各塊之複數個並行單元進行管理,  上述複數個並行單元各自具有固有之第1塊位址,各非揮發性記憶體裸片內之複數個塊各自具有固有之第2塊位址,應包含於各並行單元之塊各者之第2塊位址係由各並行單元之第1塊位址基於數學規則而定;  對不良資訊進行管理,上述不良資訊係保持針對各並行單元內之每個塊表示可使用或不可使用之至少1位元之資訊;  於從上述主機接收到指定用於識別應寫入之第1資料之第3位址之寫入請求之情形時,執行參考上述不良資訊而從一個並行單元中所含之非不良塊之中選擇一個塊作為寫入目標塊之動作、決定上述已選擇之塊內之寫入目標位置之動作、將上述第1資料寫入至上述寫入目標位置之動作、及將表示上述已選擇之塊及上述寫入目標位置兩者之第1物理位址及上述第3位址通知給上述主機之動作。
  13. 如請求項12之控制方法,其進而包括:  於從上述主機接收到指定上述第1物理位址之讀取請求之情形時,基於上述第1物理位址,從上述已選擇之塊內之上述寫入目標位置讀取資料。
  14. 如請求項12之控制方法,其進而包括:於從上述主機接收到指定能夠並行存取之塊數之並行單元分配請求之情形時,執行從上述複數個並行單元中選擇包含上述經指定之塊數以上之非不良塊的並行單元之動作;及將上述已選擇之並行單元分配至上述主機之動作,  上述一個並行單元係被分配至上述主機之上述已選擇之並行單元。
TW107120756A 2017-10-30 2018-06-15 記憶體系統及控制方法 TWI682278B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017209317A JP7074453B2 (ja) 2017-10-30 2017-10-30 メモリシステムおよび制御方法
JP2017-209317 2017-10-30

Publications (2)

Publication Number Publication Date
TW201931123A TW201931123A (zh) 2019-08-01
TWI682278B true TWI682278B (zh) 2020-01-11

Family

ID=66245478

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107120756A TWI682278B (zh) 2017-10-30 2018-06-15 記憶體系統及控制方法

Country Status (4)

Country Link
US (4) US10592409B2 (zh)
JP (1) JP7074453B2 (zh)
CN (1) CN109725847B (zh)
TW (1) TWI682278B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI741671B (zh) * 2020-01-16 2021-10-01 日商鎧俠股份有限公司 記憶體系統

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7074453B2 (ja) * 2017-10-30 2022-05-24 キオクシア株式会社 メモリシステムおよび制御方法
JP6898393B2 (ja) * 2019-03-22 2021-07-07 株式会社日立製作所 ストレージシステム及びデータ転送方法
US11132292B2 (en) * 2019-12-10 2021-09-28 Micron Technology, Inc. Active input/output expander of a memory sub-system
US11287989B2 (en) * 2020-03-24 2022-03-29 Western Digital Technologies, Inc. Dynamic allocation of sub blocks
US11500637B2 (en) * 2020-06-15 2022-11-15 Micron Technology, Inc. Software instruction set update of memory die using page buffers
CN111857586A (zh) * 2020-07-14 2020-10-30 苏州浪潮智能科技有限公司 一种SSD Trim优化方法、系统、终端及存储介质
US11599377B2 (en) * 2020-08-17 2023-03-07 Alibaba Group Holding Limited Open-channel storage device management with FTL on virtual machine
CN112241308B (zh) * 2020-10-21 2022-07-29 海光信息技术股份有限公司 一种虚拟机标识处理方法、装置及相关设备
CN112328172B (zh) * 2020-10-27 2022-04-19 北京百度网讯科技有限公司 数据存储方法、装置及数据读取方法、装置
TW202314471A (zh) * 2021-05-25 2023-04-01 韓商愛思開海力士有限公司 儲存裝置及其操作方法
US11782617B2 (en) 2021-05-25 2023-10-10 SK Hynix Inc. Host device, storage device, and electronic device
US20230052489A1 (en) * 2021-08-13 2023-02-16 Micron Technology, Inc. Die location detection for grouped memory dies
CN114442936B (zh) * 2021-12-29 2024-03-08 山东云海国创云计算装备产业创新中心有限公司 一种闪存转换层的块管理方法、装置、设备及存储介质
TWI805231B (zh) 2022-02-18 2023-06-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
TW202334821A (zh) 2022-02-18 2023-09-01 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
TWI802279B (zh) * 2022-02-18 2023-05-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
CN115687171B (zh) * 2022-10-26 2023-06-06 深圳三地一芯电子股份有限公司 闪存块绑定方法、装置、设备及存储介质
CN116755642B (zh) * 2023-08-24 2023-10-27 四川云海芯科微电子科技有限公司 用于NAND Flash坏块的混合管理方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200622918A (en) * 2004-09-24 2006-07-01 Renesas Tech Corp Semiconductor device
TW200828337A (en) * 2006-07-31 2008-07-01 Toshiba Kk Nonvolatile memory system, and data read/write method for nonvolatile memory system
TW201308081A (zh) * 2011-08-01 2013-02-16 Toshiba Kk 記憶體裝置
TW201314446A (zh) * 2011-09-16 2013-04-01 Toshiba Kk 記憶體裝置
TW201539187A (zh) * 2014-02-05 2015-10-16 Tidal Systems Inc 快閃記憶體之壓縮、讀取方法及應用其方法的裝置
TW201633053A (zh) * 2015-03-06 2016-09-16 Toshiba Kk 記憶裝置之控制方法、及記憶裝置

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
CN1249585C (zh) * 1997-12-16 2006-04-05 Tdk株式会社 闪速存储器系统
US6842580B1 (en) * 1999-01-27 2005-01-11 Matsushita Electric Industrial Co., Ltd. Real-time recording/reproduction on an information recording medium including a defective region
JP2004265162A (ja) 2003-03-03 2004-09-24 Renesas Technology Corp 記憶装置およびアドレス管理方法
JP4173410B2 (ja) 2003-06-26 2008-10-29 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム
JP4956922B2 (ja) * 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
JP2008226040A (ja) 2007-03-14 2008-09-25 Hitachi Ltd 情報処理装置及びコマンド多重度制御方法
JP4702387B2 (ja) 2008-03-31 2011-06-15 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8407400B2 (en) * 2008-11-12 2013-03-26 Micron Technology, Inc. Dynamic SLC/MLC blocks allocations for non-volatile memory
JP4762323B2 (ja) * 2009-03-03 2011-08-31 富士通株式会社 アクセス制御装置、情報処理装置、アクセス制御プログラム及びアクセス制御方法
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US9582431B2 (en) 2010-03-22 2017-02-28 Seagate Technology Llc Storage address space to NVM address, span, and length mapping/converting
JP5612514B2 (ja) * 2010-03-24 2014-10-22 パナソニック株式会社 不揮発性メモリコントローラ及び不揮発性記憶装置
WO2013027642A1 (en) * 2011-08-19 2013-02-28 Kabushiki Kaisha Toshiba Information processing apparatus, method for controlling information processing apparatus, non-transitory recording medium storing control tool, host device, non-transitory recording medium storing performance evaluation tool, and performance evaluation method for external memory device
JP5687648B2 (ja) 2012-03-15 2015-03-18 株式会社東芝 半導体記憶装置およびプログラム
JP5918906B2 (ja) 2012-12-28 2016-05-18 株式会社日立製作所 ストレージ装置及びストレージ制御方法
US10013322B2 (en) 2013-06-03 2018-07-03 Hitachi, Ltd. Storage apparatus and storage apparatus control method
US9569308B1 (en) * 2013-07-15 2017-02-14 Rambus Inc. Reduced-overhead error detection and correction
JP2015038796A (ja) * 2013-08-19 2015-02-26 株式会社東芝 メモリシステムおよび制御方法
WO2015034954A1 (en) 2013-09-03 2015-03-12 Sandisk Technologies Inc. Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses
JP6129699B2 (ja) * 2013-09-18 2017-05-17 株式会社東芝 個体識別装置、記憶装置、個体識別システム、その方法、およびプログラム
US20150339223A1 (en) * 2014-05-22 2015-11-26 Kabushiki Kaisha Toshiba Memory system and method
CN105302677A (zh) * 2014-07-29 2016-02-03 株式会社东芝 信息处理装置和信息处理方法
CN109783017B (zh) * 2015-01-27 2021-05-18 华为技术有限公司 一种存储设备坏块的处理方法、装置及存储设备
US10180805B2 (en) * 2015-03-25 2019-01-15 SK Hynix Inc. Memory system and operating method thereof
US10824553B2 (en) 2015-04-24 2020-11-03 Toshiba Memory Corporation Memory device that controls timing of receiving write data from a host
US20160321010A1 (en) * 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
US9766814B2 (en) * 2015-08-10 2017-09-19 Intel Corporation Method and apparatus for defect management in a non-volatile memory device
US20170139616A1 (en) 2015-11-17 2017-05-18 HGST Netherlands B.V. Method of decreasing write amplification factor and over-provisioning of nand flash by means of diff-on-write approach
JP6448571B2 (ja) 2016-03-08 2019-01-09 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
JP6523193B2 (ja) 2016-03-08 2019-05-29 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法
CN106598493A (zh) * 2016-11-30 2017-04-26 郑州云海信息技术有限公司 一种固态硬盘地址映射表管理方法
JP7074453B2 (ja) * 2017-10-30 2022-05-24 キオクシア株式会社 メモリシステムおよび制御方法
TWI645289B (zh) 2017-10-31 2018-12-21 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體操作方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200622918A (en) * 2004-09-24 2006-07-01 Renesas Tech Corp Semiconductor device
TW200828337A (en) * 2006-07-31 2008-07-01 Toshiba Kk Nonvolatile memory system, and data read/write method for nonvolatile memory system
TW201308081A (zh) * 2011-08-01 2013-02-16 Toshiba Kk 記憶體裝置
TW201314446A (zh) * 2011-09-16 2013-04-01 Toshiba Kk 記憶體裝置
TW201539187A (zh) * 2014-02-05 2015-10-16 Tidal Systems Inc 快閃記憶體之壓縮、讀取方法及應用其方法的裝置
TW201633053A (zh) * 2015-03-06 2016-09-16 Toshiba Kk 記憶裝置之控制方法、及記憶裝置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI741671B (zh) * 2020-01-16 2021-10-01 日商鎧俠股份有限公司 記憶體系統

Also Published As

Publication number Publication date
US10592409B2 (en) 2020-03-17
US11467955B2 (en) 2022-10-11
US20220414002A1 (en) 2022-12-29
US20200218648A1 (en) 2020-07-09
US20190129840A1 (en) 2019-05-02
CN109725847B (zh) 2021-12-07
JP7074453B2 (ja) 2022-05-24
TW201931123A (zh) 2019-08-01
US11023371B2 (en) 2021-06-01
US20210248065A1 (en) 2021-08-12
JP2019082813A (ja) 2019-05-30
CN109725847A (zh) 2019-05-07

Similar Documents

Publication Publication Date Title
TWI682278B (zh) 記憶體系統及控制方法
TWI765289B (zh) 儲存系統
CN114115747B (zh) 存储器系统及控制方法
TWI661301B (zh) 記憶體系統及控制非揮發性記憶體之控制方法
CN109726139B (zh) 存储器系统及控制方法
TWI684098B (zh) 記憶體系統及控制非揮發性記憶體之控制方法
KR20210142863A (ko) 데이터 처리 시스템의 동작 효율성을 높이기 위한 장치 및 방법
JP7490714B2 (ja) メモリシステムおよび制御方法
JP7204020B2 (ja) 制御方法
JP7167295B2 (ja) メモリシステムおよび制御方法
JP7366222B2 (ja) メモリシステムおよび制御方法
JP2023021450A (ja) メモリシステム