TWI661307B - 資料儲存裝置、主機裝置、以及資料寫入方法 - Google Patents

資料儲存裝置、主機裝置、以及資料寫入方法 Download PDF

Info

Publication number
TWI661307B
TWI661307B TW106142715A TW106142715A TWI661307B TW I661307 B TWI661307 B TW I661307B TW 106142715 A TW106142715 A TW 106142715A TW 106142715 A TW106142715 A TW 106142715A TW I661307 B TWI661307 B TW I661307B
Authority
TW
Taiwan
Prior art keywords
check code
independent disk
data
item
storage device
Prior art date
Application number
TW106142715A
Other languages
English (en)
Other versions
TW201926059A (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 慧榮科技股份有限公司
Priority to TW106142715A priority Critical patent/TWI661307B/zh
Priority to CN201810053071.6A priority patent/CN109885506B/zh
Priority to US16/170,249 priority patent/US10783037B2/en
Application granted granted Critical
Publication of TWI661307B publication Critical patent/TWI661307B/zh
Publication of TW201926059A publication Critical patent/TW201926059A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/061Improving I/O performance
    • 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/0656Data buffering arrangements
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/1016Performance improvement
    • 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/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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

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)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

高容錯力的資料儲存裝置,其中提供一獨立磁碟備援陣列編碼引擎對一資料寫入指令所包括的一使用者資料進行編碼以產生一獨立磁碟備援陣列校驗碼。使用者資料係編程至一非揮發式記憶體上該資料寫入指令所指示的一目的物理位址,並將該獨立磁碟備援陣列校驗碼編程至該非揮發式記憶體的一預設物理位址。該使用者資料與該獨立磁碟備援陣列校驗碼置於一帶狀區塊的一帶狀頁。

Description

資料儲存裝置、主機裝置、以及資料寫入方法
本發明係有關於資料儲存裝置以及其中非揮發式記憶體的操作方法。
非揮發式記憶體有多種形式一例如,快閃記憶體(flash memory)、磁阻式隨機存取記憶體(Magnetoresistive RAM)、鐵電隨機存取記憶體(Ferroelectric RAM)、電阻式隨機存取記憶體(Resistive RAM)、自旋轉移力矩隨機存取記憶體(Spin Transfer Torque-RAM,STT-RAM)…等,用於長時間資料保存。
一非揮發式記憶體可與一控制器結合成一資料儲存裝置,由一主機操作。如何強化如此資料儲存裝置的容錯度為本技術領域一項重要課題。
根據本案一種實施方式所實現的一種資料儲存裝置,包括:非揮發式記憶體;以及微控制器,微控制器包括獨立磁碟備援陣列編碼引擎,獨立磁碟備援陣列(RAID)編碼引擎可對資料寫入指令所包括的使用者資料進行編碼以產生獨立磁碟備援陣列校驗碼,微控制器可將使用者資料編程至非揮發 式記憶體的資料寫入指令所包括的目的物理位址,並將獨立磁碟備援陣列校驗碼編程至非揮發式記憶體的預設物理位址,其中,使用者資料與獨立磁碟備援陣列校驗碼置於帶狀區塊的帶狀頁。
根據本案一種實施方式所實現的一種主機裝置,用以控制一資料儲存裝置的運作,主機裝置令資料儲存裝置將使用者資料儲存至目的物理位址,令資料儲存裝置將獨立磁碟備援陣列(RAID)校驗碼儲存至預設物理位址,其中,主機裝置依據區塊狀態表決定預設物理位址所屬的邏輯單元編號(LUN)。
根據本案一種實施方式實現的一種資料寫入操作的方法,包括:接收資料寫入指令;對資料寫入指令的使用者資料產生獨立磁碟備援陣列(RAID)校驗碼;將使用者資料編程至非揮發式記憶體的資料寫入指令的目標物理位址;接收獨立磁碟備援陣列校驗碼輸出指令;以及依據獨立磁碟備援陣列校驗碼輸出指令而將獨立磁碟備援陣列校驗碼編程至非揮發式記憶體的預設物理位址。其中,使用者資料與獨立磁碟備援陣列校驗碼置於非揮發式記憶體的帶狀區塊的帶狀頁中。
下文特舉實施例,並配合所附圖示,詳細說明本發明內容。
100‧‧‧資料儲存裝置
102‧‧‧快閃記憶體
104‧‧‧微控制器
106‧‧‧主機
108‧‧‧驅動器
112‧‧‧獨立磁碟備援陣列(RAID)編碼引擎
114‧‧‧獨立磁碟備援陣列(RAID)校驗碼緩存器
Blk_Stripe#0、Blk_Stripe#1、Blk_Stripe#2‧‧‧帶狀區塊
DRAM‧‧‧動態隨機存取記憶體
FTL‧‧‧快閃記憶體轉換層
LUN#0…LUN#N‧‧‧邏輯單元編號
Total_LUN‧‧‧LUN可用數量
NFC‧‧‧非及閘快閃記憶體控制器
NVMe‧‧‧非揮發式記憶體快速介面
Parity_LUN‧‧‧校驗碼邏輯單元編號
S402…S414‧‧‧步驟
第1圖為方塊圖,圖解根據本案一種實施方式所實現的一資料儲存裝置100; 第2圖圖解根據本案實施方式實現的RAID編碼;第3圖圖解根據本案實施方式實現的區塊狀態表;以及第4圖為本案主機106對資料儲存裝置100進行資料寫入操作的方法流程圖。
以下敘述列舉本發明的多種實施例。以下敘述介紹本發明的基本概念,且並非意圖限制本發明內容。實際發明範圍應依照申請專利範圍界定之。
非揮發式記憶體可以是快閃記憶體(flash memory)、磁阻式隨機存取記憶體(Magnetoresistive RAM)、鐵電隨機存取記憶體(Ferroelectric RAM)、電阻式記憶體(Resistive RAM,RRAM)、自旋轉移力矩隨機存取記憶體(Spin Transfer Torque-RAM,STT-RAM)…等,提供長時間資料保存之儲存媒體,可用於實現資料儲存裝置、或應用於數據中心。以下特別以快閃記憶體(Flash Memory)為例進行討論。
現今資料儲存裝置常以快閃記憶體為儲存媒體,用來實現記憶卡(Memory Card)、通用序列匯流排閃存裝置(USB Flash Device)、固態硬碟(SSD)...等產品。有一種應用是採多晶片封裝、將快閃記憶體與其控制器包裝在一起-稱為嵌入式快閃記憶體模組(如eMMC)。
以快閃記憶體為儲存媒體的資料儲存裝置可應用於多種電子裝置中。所述電子裝置包括智慧型手機、穿戴裝置、平板電腦、虛擬實境設備…等。電子裝置的運算模塊可視為一主機(Host),操作所使用的資料儲存裝置,以存取其中快 閃記憶體。儲存媒體與主機兩者採用相同的通信介面或通信協定以進行指令或資料的交換或傳送。
快閃記憶體實現的儲存媒體也可用於建構數據中心。例如,伺服器可操作固態硬碟(SSD)陣列形成數據中心。伺服器即可視為一主機,操作所連結之固態硬碟,以存取其中快閃記憶體。
主機端是以邏輯位址(例如,邏輯區塊位址LBA或全域主機頁編號GHP…等)區別快閃記憶體儲存內容。快閃記憶體之儲存空間一般劃分為複數個區塊(Blocks),各區塊包括複數頁(Pages),一頁的大小例如是16KB。各頁可更劃分為複數個儲存單元,儲存單元的大小較佳等於使用者資料的大小,例如4KB。為了最佳化使用快閃記憶體,快閃記憶體之物理位址係動態配置對應主機所識別的邏輯位址。邏輯位址以及物理位址之間的對應關係需以L2P映射表管理。另外,當一個區塊(空白的)被選取並用以儲存使用者資料時,稱之為主動區塊(Active Block),並產生此主動區塊的一P2L映射表,以記錄此主動區塊的使用者資料的物理位址以及邏輯位址之間的對應關。當此主動區塊關閉而不再儲存使用者資料時,P2L映射表通常寫入至此主動區塊的指定位址,例如:最後一頁,並將此主動區塊定義為資料區塊,不再用以儲存新的使用者資料。
另外,為了縮小L2P映射表以及P2L映射表的尺寸,L2P映射表較佳以邏輯位址為索引,項目為物理位址,並依序建立,在此設定下,僅物理位址記錄至L2P映射表;相反地,P2L映射表較佳以物理位址為索引,項目為邏輯位址,並 依序建立,在此設定下,僅邏輯位址記錄至P2L映射表。
主機對快閃記憶體多種操作都需參考、或可能牽動L2P映射表內容。例如,主機對快閃記憶體之讀取需要參考L2P映射表,主機對快閃記憶體之寫入則需更新L2P映射表。特別是,快閃記憶體儲存空間需以區塊為單位進行抹除(Erase)後方能再次使用。由於各區塊可承受的抹除次數有上限,快閃記憶體之操作有抹寫平均(Wear Leveling)議題需要考量。另外,使用者資料更新時,並非將使用者資料寫入原儲存位址,而是將更新的使用者資料寫入另一位址,原儲存位址所儲存的舊的使用者資料則為無效資料。當一資料區塊可能零星留存有效資料,故垃圾回收(Garbage Collection)需求相應產生。一資料區塊中留存的零星有效資料(未被更新的使用者資料)可經垃圾回收技術搬移到一主動區塊,使得徒留無效資料的資料區塊得以被抹除而成為閒置區塊,日後可被選為主動區塊。上述抹寫平均以及垃圾回收技術,都涉及L2P映射表管理。甚至,其他促進快閃記憶體操作效能的技術,也都有可能與L2P映射表相關。如何確保L2P映射表上的資訊正確,又不因L2P映射表維護拖累效能,為本技術領域重要議題。
為了確保資料的正確性,資料儲存裝置可採用獨立磁碟備援陣列(Redundant Array of Independent Disks,RAID)系統,除了儲存使用者資料之外,更儲存使用者資料的RAID校驗碼。如此一來,當使用者資料的內容有錯誤時,主機或微控制器可依據RAID校驗碼進行使用者資料的修復,確保使用者資料的正確性。
然而,產生使用者資料的RAID校驗碼需要花費時間及系統效能,本案提出一種資料寫入操作的方法及裝置,兼顧使用者資料的正確性以及系統效能。
第1圖為方塊圖,圖解根據本案一種實施方式所實現的一資料儲存裝置100。資料儲存裝置100包括一快閃記憶體102、一微控制器104以及一揮發式記憶體(如動態隨機存取記憶體,DRAM)。一主機106可連結該資料儲存裝置100,通過該微控制器104存取該快閃記憶體102,其中利用DRAM進行資訊暫存。另外,為了成本考量,資料儲存裝置100可不配置DRAM,並以微控制器104內建的靜態隨機存取記憶體(SRAM)替代DRAM的功能。
本案較佳採用一種開放通道(Open Channel)架構,由主機106建立並管理L2P映射表,即由主機106決定使用者資料的邏輯位址,亦決定使用者資料在資料儲存裝置的物理位址(目標物理位址)。此外,主機106亦決定RAID校驗碼在資料儲存裝置的物理位址(預設物理位址)。主機106上的驅動器(Driver)108除了提供一非揮發式記憶體快速介面NVMe與微控制器104建立通訊,更提供一快閃記憶體轉換層(Flash Translation Layer,FTL)管理L2P映射表以及P2L映射表。微控制器104包括用以控制快閃記憶體102運作的非及閘快閃記憶體控制器(NAND Flash Controller,NFC),更包括一RAID編碼引擎112以及一RAID校驗碼緩存器(Parity Buffer)114。在另一實施例中,資料儲存裝置100的微控制器104提供FTL以管理L2P映射表以及P2L映射表,並提供L2P映射表的複件至主機 106。
微控制器104可以多通道方式操作該快閃記憶體102,各通道上的快閃記憶體102可更被複數個晶片致動(CE)信號分開驅動。微控制器104可將快閃記憶體102的儲存空間虛擬化,例如:將位於不同通道上的LUN/區塊/頁虛擬化成RAID系統的一帶狀空間(Stripe),而帶狀空間可儲存使用者資料(複數使用者資料)及RAID校驗碼。
如圖2所示,快閃記憶體102包括8個邏輯單元編號(Logical Unit Number,LUN),分別是LUN#0、LUN#1、LUN#2、LUN#3…LUN#7,每一LUN較佳具有相同數量的區塊,例如:1024個區塊,每一區塊較佳具有相同數量的頁,例如:512頁,每一頁較佳提供相同的資料儲存量,例如:16KB。帶狀區塊Blk_Stripe(Block Stripe)可包括LUN#0…LUN#N中同一區塊編號的區塊BLK,例如:帶狀區塊Blk_Stripe#0包括LUN#0~#7中的每個區塊BLK#0,共計8個區塊BLK#0。或者,帶狀區塊Blk_Stripe也可僅包含複數個LUN中同一區塊編號的區塊BLK,例如:帶狀區塊Blk_Stripe#10包括LUN#0~#3提供的區塊BLK#10,帶狀區塊Blk_Stripe#11包括LUN#4~#7提供的區塊BLK#11。帶狀區塊Blk_Stripe中其中一個LUN的區塊BLK可作為RAID校驗碼區塊,用以儲存RAID校驗碼。
帶狀區塊Blk_Stripe可包括複數帶狀頁P_Stripe(Page Stripe),例如:512個帶狀頁P_Stripe,每一帶狀頁P_Stripe由帶狀區塊Blk_Stripe中同一頁編號的頁所組成,例如:帶狀頁P_Stripe#0由帶狀區塊Blk_Stripe#0中的8個頁#0所組成。配 合快閃記憶體的運作特性,本案中以帶狀區塊Blk_Stripe為RAID抹寫單位,帶狀頁P_Stripe為RAID存取單位。當帶狀區塊Blk_Stripe決定後,使用者資料以及對應的RAID校驗碼即可寫入帶狀頁P_Stripe中。當帶狀區塊Blk_Stripe中所有帶狀頁P_Stripe皆已寫滿資料,則主機106選取另一帶狀區塊Blk_Stripe,並重覆上述步驟。上述架構僅方便說明本案,但不以此為限。
來自主機106的使用者資料由微控制器104陸續地儲存至該動態隨機存取記憶體DRAM,待儲存的使用者資料的數量或資料量累積至一預定量,例如4筆使用者資料或資料量或一頁的儲存量時,或超過一資料收集時間時,微控制器104將使用者資料自動態隨機存取記憶體DRAM取出。使用者資料除了經由NFC編程至快閃記憶體102,更交由RAID編碼引擎112進行RAID校驗碼的計算,即對使用者資料進行XOR的計算,再將產出的(更新的)RAID校驗碼儲存至RAID校驗碼緩存器114。
之後,微控制器104依據主機106的指令而將RAID校驗碼緩存器114所緩存的RAID校驗碼經該NFC編程至該快閃記憶體102。其中,使用者資料編程至主機106所指定的物理位址(目的物理位址),使用者資料的邏輯位址及物理位址記錄(更新)至L2P和P2L映射表。RAID校驗碼編程至預設物理位址,RAID校驗碼的邏輯位址及預設物理位址僅記錄(更新)至P2L映射表,其中,主機106將RAID校驗碼的邏輯位址皆設為一預設值,例如:0xFFFF,或以帶狀區塊Blk_Stripe或帶狀頁P_Stripe 的編號作為RAID校驗碼的邏輯位址。使用者資料與對應的RAID校驗碼儲存至同一帶狀頁P_Stripe,預設物理位址為RAID校驗碼區塊中帶狀頁P_Stripe所對應的頁的物理位址。
在另一實施例中,微控制器104將使用者資料以及RAID校驗碼一併輸出至NFC,再由NFC將使用者資料以及RAID校驗碼一併編程至該快閃記憶體102。
為了達到本案的目的,主機106的非揮發式記憶體快速介面NVMe較佳定義一RAID初始化指令RAID_Parity_Init以及一RAID校驗碼輸出指令RAID_Parity_Out。RAID初始化指令RAID_Parity_Init用於重置該RAID編碼引擎112並重置該RAID校驗碼緩存器114,而RAID初始化指令RAID_Parity_Init的校驗碼邏輯單元編號Parity_LUN用來指定儲存RAID校驗碼的LUN,即此LUN的區塊BLK將作為RAID校驗碼區塊,此LUN的區塊BLK的頁用以儲存RAID校驗碼,頁的位址為預設物理位址。RAID校驗碼輸出指令RAID_Parity_Out則指示微控制器104將該RAID校驗碼自該RAID校驗碼緩存器114編程至該快閃記憶體102,即校驗碼邏輯單元編號Parity_LUN所指定的LUN的區塊BLK的頁中。如此一來,主機106可以藉由RAID初始化指令RAID_Parity_Init以及RAID校驗碼輸出指令RAID_Parity_Out控制微控制器104是否產生RAID校驗碼以及是否將RAID校驗碼編程至該快閃記憶體102。
另外,顧及快閃記憶體102的區塊可能的損壞狀況,RAID初始化指令RAID_Parity_Init較佳更提供一LUN可用數量Total_LUN以顯示帶狀區塊Blk_Stripe中可用LUN的總 數,或是LUN中可用區塊的總數。如圖2所示,可用LUN#0~7所提供的區塊BLK#0皆為正常且可用的區塊,在圖3的區塊狀態表中標記為”0”,主機106將這些區塊BLK組成帶狀區塊Blk_Stripe#0,LUN可用數量Total_LUN的值為8,校驗碼邏輯單元編號Parity_LUN的值設定為0,這表示LUN#0的區塊BLK#0將用以儲存RAID校驗碼。待收到RAID校驗碼輸出指令RAID_Parity_Out後,微控制器104輸出RAID校驗碼至NFC,由NFC將RAID校驗碼編程至校驗碼邏輯單元編號Parity_LUN所指定的區塊BLK#0的其中一頁。
在帶狀區塊Blk_Stripe#2中,LUN#2的區塊BLK#2為損壞區塊,在區塊狀態表的標記為”1”,則主機106將LUN可用數量Total_LUN的值設定為7,校驗碼邏輯單元編號Parity_LUN設定為3。待收到RAID校驗碼輸出指令RAID_Parity_Out後,微控制器104可輸出RAID校驗碼至NFC,以將RAID校驗碼編程至LUN#3的BLK#2的其中一個頁。由上述中可知,主機106可依據區塊狀態圖隨時調整LUN可用數量Total_LUN以及校驗碼邏輯單元編號Parity_LUN的值,讓使用者資料以及RAID校驗碼可正確地編程至帶狀區塊Blk_Stripe的帶狀頁中。
在使用者資料的寫入過程中,主機106可將RAID初始化指令RAID_Parity_Init的校驗碼邏輯單元編號Parity_LUN設定至同一個LUN,例如LUN#7,此設定類似RAID-4的設計。或是,利用值為8的餘數(Mod)函數對帶狀區塊Blk_Stripe的編號進行運算,並以函數的值來設定校驗碼邏輯 單元編號Parity_LUN的值,例如:帶狀區塊Blk_Stripe#0的餘數函數值為0,故校驗碼邏輯單元編號Parity_LUN的值為0;帶狀區塊Blk_Stripe#1的餘數函數值為1,故校驗碼邏輯單元編號Parity_LUN的值為1;帶狀區塊Blk_Stripe#2的餘數函數值為2,故校驗碼邏輯單元編號Parity_LUN的值為2,以此類推。此設定類似RAID-5的設計,理論上將RAID校驗碼儲存至不同的LUN可提升快閃記憶體102資料讀取頻寬,因此,本案資料寫入操作的方法較佳採用RAID-5的設計,但不以此為限。
微控制器104可利用LUN可用數量Total_LUN來管理RAID校驗碼的產生。在產生RAID校驗碼的過程中,微控制器104每次輸出使用者資料至RAID編碼引擎112去計算(或更新)RAID校驗碼時,微控制器104就將LUN可用數量Total_LUN遞減1。當接收RAID校驗碼輸出指令RAID_Parity_Out時,LUN可用數量Total_LUN的值應該已遞減至1。如果接收RAID校驗碼輸出指令RAID_Parity_Out時,LUN可用數量Total_LUN並非為1者,這表示主機106並未提供足夠數量或提供過多數量的使用者資料至微控制器104,則微控制器104回報該主機106一錯誤信息,再由主機106進行後續的錯誤管理。
第4圖為流程圖,根據本案一種實施方式說明主機106對資料儲存裝置100進行資料寫入操作的方法。步驟S402,主機106輸出辨識指令(Identify Command)至資料儲存裝置100的微控制器104。
步驟S404,微控制器104回報該快閃記憶體102的RAID編碼最大處理量(Maximum RAID Parity Number)至主機 106。當接收來自主機106的辨識指令後,微控制器104除了回報主機106一組控制參數之後,更回報主機106微控制器104的RAID編碼最大處理量,即帶狀區塊Blk_Stripe最多可跨越的LUN的數量。例如,以4通道且各通道以兩CE信號操作的快閃記憶體102控制架構為例,總共可控制8個LUN,即LUN#0~#7,則RAID編碼最大處理量的值為8。另外,微控制器104更可回回報主機106區塊狀態表,區塊狀態表列出損壞區塊的編號或是每一區塊的狀態(良好或損壞)。當主機106收到區塊狀態表之後,較佳由主機106維持區塊狀態表的更新。
步驟S406,主機106輸出RAID初始化指令RAID_Parity_Init至微控制器104,其中,RAID初始化指令RAID_Parity_Init包括LUN可用數量Total_LUN以及校驗碼邏輯單元編號Parity_LUN。主機106依據微控制器104所回報的RAID編碼最大處理量來設定LUN可用數量Total_LUN以決定帶狀區塊Blk_Stripe的設定值,即帶狀區塊Blk_Stripe所跨越的LUN的數量,例如:數值8。校驗碼邏輯單元編號Parity_LUN的值為快閃記憶體102的其中之一LUN的編號。例如:帶狀區塊Blk_Stripe#0的校驗碼邏輯單元編號Parity_LUN的值為0,則LUN#1~#7的區塊BLK#0用以儲存使用者資料,LUN#0的區塊BLK#0用以儲存RAID校驗碼。更精準地說,帶狀區塊Blk_Stripe#0的帶狀頁P_Stripe#0~#511中,LUN#1~#7的區塊BLK#0的頁P#0~#511用以儲存使用者資料,LUN#0的區塊BLK#0的頁P#0~#511用以儲存RAID校驗碼。
另外,如果利用餘數(Mod)函數所取得的校驗碼邏輯單元編號Parity_LUN的值,如果此時作為校驗碼邏輯單元編號Parity_LUN的區塊BLK為損壞區塊,則微控制器104可直接將LUN可用數量Total_LUN減1,並將校驗碼邏輯單元編號Parity_LUN的值也減1(或如圖2加1)以避開此損壞區塊。
此外,當收到來自主機106的RAID初始化指令RAID_Parity_Init後,微控制器104可重置該RAID編碼引擎112、重置該RAID校驗碼緩存器114,並記錄LUN可用數量Total_LUN以及校驗碼邏輯單元編號Parity_LUN。
步驟S408,主機106輸出資料寫入指令至資料儲存裝置100的微控制器104,其中,資料寫入指令包括使用者資料以及目標物理位址,其中,使用者資料以及目標物理位址較佳為一對一對應,目標物理位址較佳為帶狀區塊Blk_Stripe的帶狀頁P_Stripe的其中之一的物理位址。
步驟S410,微控制器104對資料寫入指令的使用者資料產生RAID校驗碼並將使用者資料編程至快閃記憶體102。微控制器104依據資料寫入指令而取得使用者資料(以及目標物理位址)後,令NFC將使用者資料編程至快閃記憶體102中的目標物理位址,例如,目前選取的是帶狀區塊Blk_Stripe#0的帶狀頁P_Stripe#0,則使用者資料分別編程至LUN#1~#7的區塊BLK#0的頁P#0,並令RAID編碼引擎112依據使用者資料產生RAID校驗碼。在另一實施例中,微控制器104先將使用者資料暫存於該動態隨機存取記憶體DRAM中,待使用者資料累積至預定量或超過資料收集時間後,再令NFC將使用者資料編程至快閃記憶體102中的目標物理位址,並令RAID編碼引擎112依 據使用者資料產生RAID校驗碼。另外,RAID編碼引擎112每次產生(更新)RAID校驗碼後,微控制器104就將LUN可用數量Total_LUN減1。
步驟S412,主機106輸出RAID校驗碼輸出指令RAID_Parity_Out至微控制器104。當收到來自主機106的RAID校驗碼輸出指令RAID_Parity_Out時,微控制器104會先確認LUN可用數量Total_LUN的值是否等於1,如果不是,這表示主機106並未提供預設數量的使用者資料至微控制器104,則微控制器104回報該主機106錯誤信息,再由主機106進行後續的錯誤管理。
步驟S414,微控制器104依據RAID初始化指令的校驗碼邏輯單元編號Parity_LUN而將RAID校驗碼編程至快閃記憶體102的預設物理位址,其中,預設物理位址為校驗碼邏輯單元編號Parity_LUN在帶狀頁P_Stripe中所對應的物理位址。例如,目前選取的是帶狀區塊Blk_Stripe#0的帶狀頁P_Stripe#0,當主機106輸出RAID校驗碼輸出指令RAID_Parity_Out至微控制器104,則微控制器104將RAID編碼引擎112所產生的RAID校驗碼編程至LUN#0的區塊BLK#0的頁P#0,此時,帶狀區塊Blk_Stripe#0的帶狀頁P_Stripe#0完成資料寫入的操作,主機106可以開始對帶狀區塊Blk_Stripe#0的帶狀頁P_Stripe#1進行資料寫入。
帶狀區塊Blk_Stripe的資料寫入操作的順序較佳依LUN編號的順序,但不以此為限。例如,在帶狀區塊Blk_Stripe#1中,使用者資料的編程順序可為LUN#2→LUN#3→LUN#4→LUN#5→LUN#6→LUN#7→LUN#0的區塊Blk#1而RAID校驗碼編程至LUN#1的區塊Blk#1,或是LUN#0→LUN#2→LUN#3→LUN#4→LUN#5→LUN#6→LUN#7的區塊Blk#1而RAID校驗碼編程至LUN#1的區塊Blk#1,或是依據每一通道的準備(Ready)狀態與否來交錯地編程。
物理位址較佳由通道編號、LUN編號、區塊編號、頁編號所組成,而目的物理位址以及預設物理位址具有相同的區塊編號與頁編號。以上述設定為例,初始化指令RAID_Parity_Init的LUN可用數量Total_LUN設為8,帶狀區塊Blk_Stripe包括通道#0~3以及CE#0~1所控制的LUN#0~7。當帶狀區塊Blk_Stripe決定時,則區塊編號亦被決定,例如帶狀區塊Blk_Stripe#1的區塊編號為1。當帶狀頁P_Stripe決定時,則頁編號亦被決定,例如:帶狀頁P_Stripe#2的頁編號為2。假設校驗碼邏輯單元編號Parity_LUN的值為0,則RAID校驗碼的預設物理位址可為通道#0以及CE#0所控制的LUN#0的區塊BLK#1的頁P#2的物理位址;帶狀頁P_Stripe#2的其他位址,即其他LUN的區塊BLK#1的頁P#2的物理位址,皆為目的物理位址。由上述中可知,目的物理位址以及預設物理位址具有相同的區塊編號與頁編號。
在上述說明中以頁為資料管理的最小單位進行說明,然而,頁包括複數區段(sector),微控制器104亦可以以區段,而非頁,作為資料管理的最小單位。在此設定下,目的物理位址則區段的位址,或為偏差值(Offset)。例如,一頁的大小為16KB,區段的大小為4KB,則一頁包括4區段,則帶狀區 塊Blk_Stripe#0的帶狀頁P_Stripe#0可儲存28筆使用者資料。然而,RAID編碼引擎112較佳仍以頁大小的使用者資料進行編碼產生1頁的RAID校驗碼,以提高RAID編碼的速度。RAID編碼引擎112亦可對相同區段編號的使用者資料進行編碼產生1區段的RAID校驗碼,並將此RAID校驗碼編程至帶狀頁P_Stripe#0在校驗碼邏輯單元編號Parity_LUN的頁#0的相同區段編號的區段中。
在完成資料寫入操作之後,主機106可啟動資料讀取操作而自資料儲存裝置100取得使用者資料。當使用者資料損壞或遺失時,主機106得知使用者資料的物理位址,配合校驗碼邏輯單元編號Parity_LUN的值、帶狀區塊Blk_Stripe以及帶狀頁P_Stripe的編號即能得知RAID校驗碼的儲存位置,進而利用RAID校驗碼而進行使用者資料的修復。由於資料修復的方法並非本案的重點,故不多作說明。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。

Claims (25)

  1. 一種資料儲存裝置,包括:一非揮發式記憶體;以及一微控制器,包括一獨立磁碟備援陣列編碼引擎,該獨立磁碟備援陣列(RAID)編碼引擎可對一資料寫入指令所包括的一使用者資料進行編碼以產生一獨立磁碟備援陣列校驗碼,該微控制器可將該使用者資料編程至該非揮發式記憶體的該資料寫入指令所包括的一目的物理位址,並將該獨立磁碟備援陣列校驗碼編程至該非揮發式記憶體的一預設物理位址,其中,該使用者資料與該獨立磁碟備援陣列校驗碼置於一帶狀區塊的一帶狀頁,其中,該帶狀區塊包括複數個邏輯單元編號所提供的複數個區塊,且該等區塊各自提供一頁組成該帶狀頁。
  2. 如申請專利範圍第1項所述之資料儲存裝置,其中該資料寫入指令來自於一主機。
  3. 如申請專利範圍第1項所述之資料儲存裝置,其中該預設物理位址由來自一主機的一獨立磁碟備援陣列初始化指令所決定。
  4. 如申請專利範圍第1項所述之資料儲存裝置,其中,該微控制器依據一獨立磁碟備援陣列校驗碼輸出指令而將該獨立磁碟備援陣列校驗碼編程至該非揮發式記憶體的該預設物理位址。
  5. 如申請專利範圍第1項所述之資料儲存裝置,其中該微控制器更包括一獨立磁碟備援陣列校驗碼緩存器,該獨立磁碟備援陣列校驗碼緩存器用以暫存該獨立磁碟備援陣列校驗碼。
  6. 如申請專利範圍第1項所述之資料儲存裝置,其中該使用者資料與該獨立磁碟備援陣列校驗碼同時編程至該非揮發式記憶體。
  7. 如申請專利範圍第1項所述之資料儲存裝置,其中該使用者資料與該獨立磁碟備援陣列校驗碼依序編程至該非揮發式記憶體。
  8. 如申請專利範圍第1項所述之資料儲存裝置,其中,該微控制器檢查一邏輯單元編號(LUN)可用數量的值是否等於一預設值,如果是,該微控制器將該獨立磁碟備援陣列校驗碼編程至該非揮發式記憶體的該預設物理位址。
  9. 一種主機裝置,用以控制一資料儲存裝置的運作,其中:該主機裝置令該資料儲存裝置將一使用者資料儲存至一目的物理位址,令該資料儲存裝置將一獨立磁碟備援陣列(RAID)校驗碼儲存至一預設物理位址,使該使用者資料與該獨立磁碟備援陣列校驗碼置於一帶狀區塊的一帶狀頁;該帶狀區塊包括複數個邏輯單元編號所提供的複數個區塊,且該等區塊各自提供一頁組成該帶狀頁;且該主機裝置依據一區塊狀態表決定該預設物理位址所屬的一邏輯單元編號(LUN)。
  10. 如申請專利範圍第9項所述之主機裝置,其中該主機裝置更依據一函數以決定該預設物理位址所屬的該邏輯單元編號。
  11. 如申請專利範圍第9項所述之主機裝置,其中該主機裝置將該使用者資料的該目的物理位址記錄至一L2P映射表。
  12. 如申請專利範圍第9項所述之主機裝置,其中該主機裝置將該獨立磁碟備援陣列校驗碼的一邏輯位址記錄至一P2L映射表。
  13. 如申請專利範圍第12項所述之主機裝置,其中,該邏輯位址包括一帶狀區塊或帶狀頁的一編號。
  14. 如申請專利範圍第9項所述之主機裝置,其中,該主機裝置輸出一資料寫入指令至該資料儲存裝置,該資料寫入指令包括該使用者資料以及該目的物理位址。
  15. 如申請專利範圍第9項所述之主機裝置,其中,該獨立磁碟備援陣列校驗碼由該資料儲存裝置自行產生。
  16. 如申請專利範圍第9項所述之主機裝置,其中,該主機裝置藉由一獨立磁碟備援陣列校驗碼輸出指令以令該資料儲存裝置將該獨立磁碟備援陣列校驗碼儲存至該預設物理位址。
  17. 如申請專利範圍第9項所述之主機裝置,其中,該區塊狀態表由該資料儲存裝置所提供。
  18. 如申請專利範圍第9項所述之主機裝置,其中,該區塊狀態表由該主機裝置所維持。
  19. 一種資料寫入操作的方法,包括:接收一資料寫入指令;對該資料寫入指令的一使用者資料產生一獨立磁碟備援陣列(RAID)校驗碼;將該使用者資料編程至一非揮發式記憶體的該資料寫入指令的一目標物理位址;接收一獨立磁碟備援陣列校驗碼輸出指令;以及依據該獨立磁碟備援陣列校驗碼輸出指令而將該獨立磁碟備援陣列校驗碼編程至一非揮發式記憶體的一預設物理位址,其中:該使用者資料與該獨立磁碟備援陣列校驗碼置於一非揮發式記憶體的一帶狀區塊的一帶狀頁;且該帶狀區塊包括複數個邏輯單元編號所提供的複數個區塊,且該等區塊各自提供一頁組成該帶狀頁。
  20. 如申請專利範圍第19項所述之資料寫入操作方法,其中該預設物理位址由來自一獨立磁碟備援陣列初始化指令所決定。
  21. 如申請專利範圍第19項所述之資料寫入操作方法,其中該使用者資料與該獨立磁碟備援陣列校驗碼同時編程至該非揮發式記憶體。
  22. 如申請專利範圍第19項所述之資料寫入操作方法,其中該使用者資料與該獨立磁碟備援陣列校驗碼依序編程至該非揮發式記憶體。
  23. 如申請專利範圍第19項所述之資料寫入操作方法,其中,判斷一邏輯單元編號(LUN)可用數量的值是否等於一預設值,如果是,將該獨立磁碟備援陣列校驗碼編程至該非揮發式記憶體的該預設物理位址。
  24. 如申請專利範圍第23項所述之資料寫入操作方法,其中,該邏輯單元編號可用數量由一獨立磁碟備援陣列初始化指令所提供。
  25. 如申請專利範圍第19項所述之資料寫入操作方法,更包括:依據一辨識指令而輸出一區塊狀態表。
TW106142715A 2017-12-06 2017-12-06 資料儲存裝置、主機裝置、以及資料寫入方法 TWI661307B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW106142715A TWI661307B (zh) 2017-12-06 2017-12-06 資料儲存裝置、主機裝置、以及資料寫入方法
CN201810053071.6A CN109885506B (zh) 2017-12-06 2018-01-19 数据储存装置、主机装置、以及数据写入方法
US16/170,249 US10783037B2 (en) 2017-12-06 2018-10-25 Data storage device, host device for data storage device operations, and data writing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW106142715A TWI661307B (zh) 2017-12-06 2017-12-06 資料儲存裝置、主機裝置、以及資料寫入方法

Publications (2)

Publication Number Publication Date
TWI661307B true TWI661307B (zh) 2019-06-01
TW201926059A TW201926059A (zh) 2019-07-01

Family

ID=66659177

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106142715A TWI661307B (zh) 2017-12-06 2017-12-06 資料儲存裝置、主機裝置、以及資料寫入方法

Country Status (3)

Country Link
US (1) US10783037B2 (zh)
CN (1) CN109885506B (zh)
TW (1) TWI661307B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI718710B (zh) * 2019-06-25 2021-02-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
US11218164B2 (en) 2019-06-25 2022-01-04 Silicon Motion, Inc. Data storage device and non-volatile memory control method
US11334480B2 (en) 2019-06-25 2022-05-17 Silicon Motion, Inc. Data storage device and non-volatile memory control method

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347586B2 (en) * 2018-07-25 2022-05-31 ScaleFlux, Inc. Realizing high-speed and low-latency RAID across multiple solid-state storage device with host-side FTL
US11269562B2 (en) * 2019-01-29 2022-03-08 EMC IP Holding Company, LLC System and method for content aware disk extent movement in raid
CN112099985B (zh) * 2019-06-17 2023-09-12 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN112783684A (zh) * 2019-11-06 2021-05-11 华为技术有限公司 一种校验数据计算方法及装置
US11449271B2 (en) 2019-12-30 2022-09-20 Micron Technology, Inc. Implementing fault tolerant page stripes on low density memory systems
US11709601B2 (en) 2021-08-20 2023-07-25 Micron Technology, Inc. Redundancy metadata for multi-plane memory access failure
CN115878020A (zh) * 2021-09-29 2023-03-31 慧荣科技股份有限公司 编码历程信息的存取方法和计算机可读取存储介质和装置
US11860775B2 (en) 2021-09-29 2024-01-02 Silicon Motion, Inc. Method and apparatus for programming data into flash memory incorporating with dedicated acceleration hardware
TWI797905B (zh) * 2021-12-23 2023-04-01 慧榮科技股份有限公司 驅動獨立磁碟冗餘陣列引擎的裝置及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200903260A (en) * 2007-05-09 2009-01-16 Kingston Technology Corp Secure and scalable solid state disk system
TW201013400A (en) * 2008-09-22 2010-04-01 Promise Technology Inc Memory control system, data recovery method and date reading method thereof
CN101772807A (zh) * 2007-08-08 2010-07-07 英特尔公司 在多通道大容量存储装置中的ecc功能块布局
TW201432702A (zh) * 2012-12-27 2014-08-16 Lsi Corp 經由冗餘陣列之非揮發性記憶體程式錯誤修復

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
CN101566924B (zh) * 2008-04-23 2011-07-13 中兴通讯股份有限公司 一种磁盘阵列的数据读写方法
US9548108B2 (en) * 2008-06-18 2017-01-17 Super Talent Technology, Corp. Virtual memory device (VMD) application/driver for enhanced flash endurance
US8725940B2 (en) * 2010-02-27 2014-05-13 Cleversafe, Inc. Distributedly storing raid data in a raid memory and a dispersed storage network memory
US20130019057A1 (en) * 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
US20130304970A1 (en) * 2012-04-20 2013-11-14 Stec, Inc. Systems and methods for providing high performance redundant array of independent disks in a solid-state device
CN105556480B (zh) * 2013-09-16 2017-06-30 上海宝存信息科技有限公司 在基于闪存的存储系统中构建raid的方法及系统
US10346059B2 (en) * 2013-10-15 2019-07-09 Dell Products, Lp System and method for supporting read requests and write requests for drives having different sector alignments without a RAID
KR102177421B1 (ko) * 2014-10-15 2020-11-11 삼성전자주식회사 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러
US9910786B2 (en) * 2015-11-03 2018-03-06 Intel Corporation Efficient redundant array of independent disks (RAID) write hole solutions
US10218789B2 (en) * 2016-03-04 2019-02-26 Western Digital Technologies, Inc. Erasure correcting coding using temporary erasure data
KR20180040767A (ko) * 2016-10-12 2018-04-23 삼성전자주식회사 Raid 방식으로 데이터를 저장하는 스토리지 장치
KR20180051703A (ko) * 2016-11-07 2018-05-17 삼성전자주식회사 Raid 방식으로 데이터를 저장하는 스토리지 장치
US10540231B2 (en) * 2018-04-04 2020-01-21 International Business Machines Corporation Log-structured array (LSA) partial parity eviction and reassembly

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200903260A (en) * 2007-05-09 2009-01-16 Kingston Technology Corp Secure and scalable solid state disk system
CN101772807A (zh) * 2007-08-08 2010-07-07 英特尔公司 在多通道大容量存储装置中的ecc功能块布局
TW201013400A (en) * 2008-09-22 2010-04-01 Promise Technology Inc Memory control system, data recovery method and date reading method thereof
TW201432702A (zh) * 2012-12-27 2014-08-16 Lsi Corp 經由冗餘陣列之非揮發性記憶體程式錯誤修復

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI718710B (zh) * 2019-06-25 2021-02-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
US11218164B2 (en) 2019-06-25 2022-01-04 Silicon Motion, Inc. Data storage device and non-volatile memory control method
US11334480B2 (en) 2019-06-25 2022-05-17 Silicon Motion, Inc. Data storage device and non-volatile memory control method

Also Published As

Publication number Publication date
CN109885506B (zh) 2022-11-11
CN109885506A (zh) 2019-06-14
TW201926059A (zh) 2019-07-01
US20190171522A1 (en) 2019-06-06
US10783037B2 (en) 2020-09-22

Similar Documents

Publication Publication Date Title
TWI661307B (zh) 資料儲存裝置、主機裝置、以及資料寫入方法
US11354187B2 (en) Physical page, logical page, and codeword correspondence
US10282252B2 (en) RAID storage device and method of management thereof
CN109840215B (zh) 未对齐写入的处理
US20180341606A1 (en) Offloaded Disaggregated Storage Architecture
US8612836B2 (en) Non-volatile memory device with uncorrectable information region and operation method using the same
US20130019057A1 (en) Flash disk array and controller
US9898216B2 (en) Data storage system and specific command execution method thereof
CN107957958A (zh) 存储器系统及其操作方法
KR20190004400A (ko) 메모리 컨트롤러의 동작 방법 및 사용자 장치의 동작 방법
US11681472B2 (en) Unmap data pattern for coarse mapping memory sub-system
CN112099985A (zh) 数据储存装置以及非挥发式存储器控制方法
TWI718709B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
CN110119326B (zh) 数据存储装置及其操作方法
CN107808686B (zh) 读出错测试方法与装置
KR20210156090A (ko) 저장 장치 및 그 동작 방법
CN109815157B (zh) 编程命令处理方法与装置
TWI723581B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
TWI822407B (zh) 非揮發性記憶體之控制方法
CN106935265A (zh) 非易失性存储器装置以及包括该非易失性存储器装置的数据存储装置
CN112711377A (zh) 分布式存储系统的存储节点及其操作方法
US11797444B2 (en) Storage device for storing address information and data in memory device in response to occurrence of power loss and operating method of the storage device
CN110928482A (zh) 部分页条带与使用部分页条带的存储设备及其方法
US20240103723A1 (en) Unaligned deallocated logical blocks datapath support