TW201707005A - 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 - Google Patents
存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 Download PDFInfo
- Publication number
- TW201707005A TW201707005A TW104125905A TW104125905A TW201707005A TW 201707005 A TW201707005 A TW 201707005A TW 104125905 A TW104125905 A TW 104125905A TW 104125905 A TW104125905 A TW 104125905A TW 201707005 A TW201707005 A TW 201707005A
- Authority
- TW
- Taiwan
- Prior art keywords
- flash memory
- error correction
- data
- block
- group
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/109—Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
Abstract
一種存取一快閃記憶體模組的方法,包含有:依序將第N~(N+K)筆資料分別寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並分別對該第N~(N+K)筆資料進行編碼以產生第N~(N+K)組錯誤更正碼,其中該第N~(N+K)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第N~(N+K)筆資料進行錯誤更正,其中N、K為一正整數;以及將第(N+K+1)筆資料寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,並使用該第N~(N+K)組錯誤更正碼中至少其一來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
Description
本發明係有關於快閃記憶體,尤指一種存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置。
為了讓快閃記憶體能夠有更高的密度以及更大的容量,快閃記憶體的製程也朝向立體化的發展,而產生了幾種不同的立體NAND型快閃記憶體(3D NAND-type flash)。在立體NAND型快閃記憶體中,由於整體結構的不同以及浮閘形狀位置的改變,因此在資料的寫入以及讀取上也較傳統的平面NAND型快閃記憶體多出了些許的問題。舉例來說,在某些立體NAND型快閃記憶體中,會將多條字元線(word line)定義為一字元線組,而該字元線組會共同具有部分的控制電路,進而導致當資料寫入到該字元線組之一條字元線上的浮閘電晶體發生失敗時(寫入失敗),會連帶導致該字元線組的其他字元線上的浮閘電晶體的資料發生錯誤;此外,若是該字元線組中的一條字元線發生斷路或短路的狀況時,也會連帶影響到該字元線組的其他字元線上的浮閘電晶體的資料發生錯誤,因此,如何就上述問題提出一種錯誤更正方式,以盡可能地維持資料的正確性,且又不會浪費記憶體空間以節省成本,是一個重要的課題。
因此,本發明的目的之一在於提出一種存取一快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置,其使用類似容錯式磁碟陣列(Redundant Array of Independent Disks,RAID)的錯誤更正方式,但是卻不會大幅浪費記憶體空間,以解決先前技術中的問題。
依據本發明一實施例,一種存取一快閃記憶體模組的方法包含有:對第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對該第N筆資料進行錯誤更正,其中N為一正整數;將該第N筆資料寫入至該快閃記憶體模組中;將該第N組錯誤更正碼寫入至該快閃記憶體模組中;當該第N筆資料成功寫入至該快閃記憶體模組後,刪除該快閃記憶體模組中的該第N組錯誤更正碼中至少一部分,但在該快閃記憶體模組中保留該第N筆資料。
依據本發明一實施例,一種存取一快閃記憶體模組的方法,包含有:將第N筆資料寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並對該第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對寫入至該多個快閃記憶體晶片中的該第N筆資料進行錯誤更正,其中N為一正整數;當判斷該第N筆資料已成功寫入至該多個快閃記憶體晶片中之後,保留該第N組錯誤更正碼;依序將第(N+1)~(N+M)筆資料分別寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,並分別對該第(N+1)~(N+M)筆資料進行編碼以產生第(N+1)~(N+M)組錯誤更正碼,其中該第(N+1)~(N+M)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第(N+1)~(N+M)筆資料進行錯誤更正,其中M為一正整數;以及當判斷該第(N+M)筆資料已成功寫入至該多個快閃記憶體晶片中時,才刪除該第N~(N+M)組錯誤更正碼。
依據本發明另一實施例,揭露了一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有:一記憶體,用來儲存一程式碼;一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及一編碼器;其中該微處理器對第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對該第N筆資料進行錯誤更正,其中N為一正整數;該微處理器將該第N筆資料寫入至該快閃記憶體模組中,並將該第N組錯誤更正碼寫入至該快閃記憶體模組中;當該第N筆資料成功寫入至該快閃記憶體模組後,該微處理器刪除該快閃記憶體模組中的該第N組錯誤更正碼中至少一部分,但在該快閃記憶體模組中保留該第N筆資料。
依據本發明另一實施例,揭露了一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有:一記憶體,用來儲存一程式碼;一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及一編碼器;其中該微處理器將第N筆資料寫入至該快閃記憶體模組中的多個快閃記憶體晶片,且該編碼器對該第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對寫入至該多個快閃記憶體晶片中的該第N筆資料進行錯誤更正,其中N為一正整數;當該微處理器判斷該第N筆資料已成功寫入至該多個快閃記憶體晶片中之後,保留該第N組錯誤更正碼;該微處理器依序將第(N+1)~(N+M)筆資料分別寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,且該編碼器分別對該第(N+1)~(N+M)筆資料進行編碼以產生第(N+1)~(N+M)組錯誤更正碼,其中該第(N+1)~(N+M)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第(N+1)~(N+M)筆資料進行錯誤更正,其中M為一正整數;以及當該微處理器判斷該第(N+M)筆資料已成功寫入至該多個快閃記憶體晶片中時,才刪除該第N~(N+M)組錯誤更正碼。
依據本發明另一實施例,一種記憶裝置包含有:一快閃記憶體模組;以及一快閃記憶體控制器,用來存取該快閃記憶體;其中該快閃記憶體控制器對第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對該第N筆資料進行錯誤更正,其中N為一正整數;將該第N筆資料寫入至該快閃記憶體模組中;將該第N組錯誤更正碼寫入至該快閃記憶體模組中;該第N筆資料成功寫入至該快閃記憶體模組後,刪除該快閃記憶體模組中的該第N組錯誤更正碼中至少一部分,但在該快閃記憶體模組中保留該第N筆資料。
依據本發明另一實施例,一種記憶裝置包含有:一快閃記憶體模組;以及一快閃記憶體控制器,用來存取該快閃記憶體;其中該快閃記憶體控制器將第N筆資料寫入至該快閃記憶體模組中的多個快閃記憶體晶片,且對該第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對寫入至該多個快閃記憶體晶片中的該第N筆資料進行錯誤更正,其中N為一正整數;當該快閃記憶體控制器判斷該第N筆資料已成功寫入至該多個快閃記憶體晶片中之後,保留該第N組錯誤更正碼;該快閃記憶體控制器依序將第(N+1)~(N+M)筆資料分別寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,並分別對該第(N+1)~(N+M)筆資料進行編碼以產生第(N+1)~(N+M)組錯誤更正碼,其中該第(N+1)~(N+M)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第(N+1)~(N+M)筆資料進行錯誤更正,其中M為一正整數;以及當判斷該第(N+M)筆資料已成功寫入至該多個快閃記憶體晶片中時,該快閃記憶體控制器才刪除該第N~(N+M)組錯誤更正碼。
依據本發明另一實施例,一種存取一快閃記憶體模組的方法包含有:依序將第N~(N+K)筆資料分別寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並分別對該第N~(N+K)筆資料進行編碼以產生第N~(N+K)組錯誤更正碼,其中該第N~(N+K)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第N~(N+K)筆資料進行錯誤更正,其中N、K為一正整數;以及將第(N+K+1)筆資料寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,並使用該第N~(N+K)組錯誤更正碼中至少其一來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
依據本發明另一實施例,揭露一種快閃記憶體控制器,其中該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有:一記憶體,用來儲存一程式碼;一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及一編碼器;其中該微處理器依序將第N~(N+K)筆資料分別寫入至該快閃記憶體模組中的多個快閃記憶體晶片,且該編碼器分別對該第N~(N+K)筆資料進行編碼以產生第N~(N+K)組錯誤更正碼,其中該第N~(N+K)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第N~(N+K)筆資料進行錯誤更正,且N、K為一正整數;以及該微處理器將第(N+K+1)筆資料寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,且該編碼器使用該第N~(N+K)組錯誤更正碼中至少其一來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
依據本發明另一實施例,一種記憶裝置,其包含有:一快閃記憶體模組;以及一快閃記憶體控制器,用來存取該快閃記憶體;其中該快閃記憶體控制器依序將第N~(N+K)筆資料分別寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並分別對該第N~(N+K)筆資料進行編碼以產生第N~(N+K)組錯誤更正碼,其中該第N~(N+K)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第N~(N+K)筆資料進行錯誤更正,且N、K為一正整數;以及該快閃記憶體控制器將第(N+K+1)筆資料寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,且使用該第N~(N+K)組錯誤更正碼中至少其一來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
請參考第1圖,第1圖為依據本發明一實施例之一種記憶裝置100的示意圖,其中本實施例之記憶裝置100尤其係為可攜式記憶裝置(例如:符合SD/MMC、CF、MS、XD標準之記憶卡)。記憶裝置100包含有一快閃記憶體(Flash Memory)模組120以及一快閃記憶體控制器110,且快閃記憶體控制器110用來存取快閃記憶體模組120。依據本實施例,快閃記憶體控制器110包含一微處理器112、一唯讀記憶體(Read Only Memory, ROM)112M、一控制邏輯114、一緩衝記憶體116、與一介面邏輯118。唯讀記憶體係用來儲存一程式碼112C,而微處理器112則用來執行程式碼112C以控制對快閃記憶體模組120之存取(Access)。
於典型狀況下,快閃記憶體模組120包含複數個區塊(Block),而該控制器(例如:透過微處理器112執行程式碼112C之快閃記憶體控制器110)對快閃記憶體模組120進行複製、抹除、合併資料等運作係以區塊為單位來進行複製、抹除、合併資料。另外,一區塊可記錄特定數量的資料頁(Page),其中該控制器(例如:透過微處理器112執行程式碼112C之記憶體控制器110)對快閃記憶體模組120進行寫入資料之運作係以資料頁為單位來進行寫入。
實作上,透過微處理器112執行程式碼112C之快閃記憶體控制器110可利用其本身內部之元件來進行諸多控制運作,例如:利用控制邏輯114來控制快閃記憶體模組120之存取運作(尤其是對至少一區塊或至少一資料頁之存取運作)、利用緩衝記憶體116進行所需之緩衝處理、以及利用介面邏輯118來與一主裝置(Host Device)溝通。
另一方面,在本實施例中,控制邏輯114包含了一第一編解碼器(codec)132以及一第二編解碼器134,其中第一編解碼器132係用來對寫入到快閃記憶體模組120之一區塊中的資料進行編碼,以產生對應的錯誤更正碼(error correction code),其中第一編解碼器132所產生的錯誤更正碼僅是根據寫入到一資料頁中一區段(sector)的內容所產生的,且所產生的錯誤更正碼會連同該區段的資料內容一併寫入到該資料頁中。另外,第二編解碼器134為一容錯式磁碟陣列(RAID)編解碼器,其是用來對寫入至多個快閃記憶體晶片中的資料進行編碼,以產生對應的錯誤更正碼,其操作將於以下內容中詳述。
在本實施例中,快閃記憶體模組120係為一立體NAND型快閃記憶體(3D NAND-type flash)模組,請參考第2圖,其為一立體NAND型快閃記憶體的範例示意圖,如第2圖所示,立體NAND型快閃記憶體包含了多個浮閘電晶體202,其透過多條位元線(圖示僅繪示了BL1~BL3)及多條字元線(例如圖示的WL1~WL3)來構成立體NAND型快閃記憶體架構。在第2圖中,以最上面的一個平面為例,字元線WL0上的所有浮閘電晶體構成了至少一資料頁,字元線WL1上的所有浮閘電晶體構成了另至少一資料頁,而字元線WL2的所有浮閘電晶體構成了再另至少一資料頁…以此類堆。此外,根據快閃記憶體寫入方式的不同,字元線WL0與資料頁(邏輯資料頁)之間的定義也會有所不同,詳細來說,當使用單層式儲存(Single-Level Cell,SLC)的方式寫入時,字元線WL0上的所有浮閘電晶體僅對應到單一邏輯資料頁;當使用多層式儲存(Multiple-Level Cell,MLC)的方式寫入時,字元線WL0上的所有浮閘電晶體僅對應到兩個邏輯資料頁;當使用三層式儲存(Triple-Level Cell,TLC)的方式寫入時,字元線WL0上的所有浮閘電晶體僅對應到三個邏輯資料頁;以及當使用四層式儲存(Quad-Level Cell,QLC)的方式寫入時,字元線WL0上的所有浮閘電晶體僅對應到四個邏輯資料頁。由於本技術領域中具有通常知識者應能了解立體NAND型快閃記憶體的結構以及字元線及資料頁之間的關係,故相關的細節在此不予贅述。另外,在快閃記憶體控制器110的操作中,“資料頁”為一最小寫入單位,且“區塊”為一最小抹除單位。
請參考第3圖,其為浮閘電晶體202結構的概念示意圖,如第3圖所示,每一個浮閘電晶體的閘極及浮閘是圍繞在源極與汲極周圍(gate all around),以增強通道感應能力。
需注意的是,第2、3圖所示的僅為立體NAND型快閃記憶體與浮閘電晶體202的範例,而並非是作為本發明的限制,本技術領域中具有通常知識者應能了解立體NAND型快閃記憶體尚有其他種型式,例如部分的字元線可彼此連接..等等,且浮閘電晶體202的設計也能有些許的改變。
如先前技術中所述,在某些立體NAND型快閃記憶體中,會將多條字元線定義為一字元線組,而該字元線組會共同具有部分的控制電路,進而導致當資料寫入到該字元線組之一條字元線上的浮閘電晶體發生失敗時(寫入失敗),會連帶導致該字元線組的其他字元線上的浮閘電晶體的資料發生錯誤。舉例來說,參考第4圖,其為一區塊中多個字元線組的示意圖,在第4圖中係假設該區塊包含了192條字元線上的所有浮閘電晶體,且一個字元線組包含了4條字元線,因此,在第4圖中的區塊係包含了48個字元線組WL_G0~WL_G47;另外,在圖示中該區塊為三層式儲存(TLC)區塊,亦即每一條字元線上的浮閘電晶體可用來儲存三個資料頁的資料,如第4圖所示,以字元線組WL_G0為例,其包含之字元線WL0上的浮閘電晶體可用來儲存低資料頁P0L、中間資料頁P0M及高資料頁P0U,字元線WL1上的浮閘電晶體可用來儲存低資料頁P1L、中間資料頁P1M及高資料頁P1U,字元線WL2上的浮閘電晶體可用來儲存低資料頁P2L、中間資料頁P2M及高資料頁P2U,以及字元線WL3上的浮閘電晶體可用來儲存低資料頁P3L、中間資料頁P3M及高資料頁P3U。當控制器中將資料寫入到字元線組WL_G0的資料頁中時,係循序將資料寫入到字元線WL0、WL1、WL2、WL3中的浮閘電晶體,而假設字元線WL0、WL1上的資料都成功寫入正確,但是當資料寫入字元線WL2時發生寫入錯誤,則會連帶使得字元線WL0、WL1上原本寫入成功的資料也發生錯誤,因此,在以下的實施例中將敘述如何修正此一錯誤的方法。
先參考第5圖,第5圖為快閃記憶體控制器110將資料寫入到快閃記憶體模組120的示意圖。如第5圖所示,快閃記憶體模組120包含了多個通道(在本實施例中,係以兩個通道510、520為例),且每一個通道在快閃記憶體控制器110中有各自的序列傳輸器(sequencer)且均包含了多個快閃記憶體晶片,而在本實施例中通道510包含了快閃記憶體晶片512、514,且通道520包含了快閃記憶體晶片522、524。另外,每一個快閃記憶體晶片512、514、522、524中的一個區塊會被組態為一個超級區塊(super block)530,而快閃記憶體控制器110會將資料以超級區塊530為單位來進行寫入。
請同時參考第5、6圖,其中第6圖為依據本發明一第一實施例之快閃記憶體控制器110將資料寫入到超級區塊530的示意圖,其中在以下的敘述中,每一筆資料係寫入到快閃記憶體晶片512、514、522、524的一個資料頁,亦即第1筆資料會被寫入到每一個快閃記憶體晶片512、514、522、524中的第一個資料頁P0,第2筆資料會被寫入到每一個快閃記憶體晶片512、514、522、524中的第二個資料頁P1,…,第N筆資料會被寫入到每一個快閃記憶體晶片512、514、522、524中的第N個資料頁P(N-1)。參考第6圖,當快閃記憶體控制器110需要將第1筆資料寫入至超級區塊530中時,首先,快閃記憶體控制器110中的第二編解碼器134會先對第1筆資料進行編碼以產生第1組錯誤更正碼S0,其中第二編解碼器134可以採用里德-所羅門 ( Reed Solomon,RS )編碼方式或是互斥或(exclusive-OR,XOR)運算來對寫入到每一個快閃記憶體晶片512、514、522、524中的第一個資料頁P0的資料進行編碼,以產生第1組錯誤更正碼S0;接著,第一編解碼器132分別對第1筆資料進行編碼以產生對應的錯誤更正碼,並將第一筆資料與第一編解碼器132所產生的錯誤更正碼一併寫入到每一個快閃記憶體晶片512、514、522、524中的第一個資料頁P0中,詳細來說,第一編解碼器132對第1筆資料中第一部分資料進行編碼以產生錯誤更正碼,並將第一部分資料與其錯誤更正碼寫入到快閃記憶體晶片512的第一個資料頁P0;第一編解碼器132對第1筆資料中第二部分資料進行編碼以產生錯誤更正碼,並將第二部分資料與其錯誤更正碼寫入到快閃記憶體晶片514的第一個資料頁P0;第一編解碼器132對第1筆資料中第三部分資料進行編碼以產生錯誤更正碼,並將第三部分資料與其錯誤更正碼寫入到快閃記憶體晶片522的第一個資料頁P0;以及第一編解碼器132對第1筆資料中第四部分資料(最後一部分資料)進行編碼以產生錯誤更正碼,並將第四部分資料與其錯誤更正碼寫入到快閃記憶體晶片524的第一個資料頁P0。
第二編解碼器134所產生的第1組錯誤更正碼S0係用來當快閃記憶體晶片512、514、522或524中的第一個資料頁P0發生資料錯誤時進行錯誤更正,舉例來說,假設當快閃記憶體晶片512中的第一個資料頁P0的資料發生無法利用本身的資料進行更正的錯誤時,第二編解碼器134可以讀取快閃記憶體晶片512、514、522、524中所有第一個資料頁P0的資料,再加上第1組錯誤更正碼S0,來進行錯誤更正。
另外,在第1筆資料寫入的過程中,快閃記憶體控制器110會對寫入的資料進行讀取檢查的操作,以確定資料是否成功寫入,而在快閃記憶體控制器110判斷第1筆資料已經成功寫入到快閃記憶體晶片512、514、522、524中第一個資料頁P0後,快閃記憶體控制器110保留第1組錯誤更正碼S0。其中,快閃記憶體控制器110可以先暫時將第1組錯誤更正碼S0儲存在本身的記憶體中,或是將第1組錯誤更正碼S0透過第一編解碼器132進行編碼後存入到快閃記憶體晶片512、514、522、524中的一特定區塊中,且該特定區塊不屬於超級區塊530中的資料頁。
接著,當快閃記憶體控制器110需要將第2筆資料寫入至超級區塊530中時,首先,快閃記憶體控制器110中的第二編解碼器134會先對第2筆資料進行編碼以產生第2組錯誤更正碼S1,其中第二編解碼器134可以採用里德-所羅門編碼方式或是互斥或運算來對寫入到每一個快閃記憶體晶片512、514、522、524中的第二個資料頁P1的資料進行編碼,以產生第2組錯誤更正碼S1;接著,第一編解碼器132分別對第2筆資料進行編碼以產生對應的錯誤更正碼,並將第二筆資料與第一編解碼器132所產生的錯誤更正碼一併寫入到每一個快閃記憶體晶片512、514、522、524中的第二個資料頁P1中。另外,在第2筆資料寫入的過程中,快閃記憶體控制器110會對寫入的資料進行讀取檢查的操作,以確定資料是否成功寫入,而在快閃記憶體控制器110判斷第2筆資料已經成功寫入到快閃記憶體晶片512、514、522、524中第二個資料頁P1後,快閃記憶體控制器110保留第2組錯誤更正碼S1。其中,快閃記憶體控制器110可以先暫時將第2組錯誤更正碼S1儲存在本身的記憶體中,或是將第2組錯誤更正碼S1存入到快閃記憶體晶片512、514、522、524中的該特定區塊中,且該特定區塊不屬於超級區塊530。
當第2筆資料寫入的過程中也發生寫入錯誤的情形,則由於P1、P0是屬於同一個字元線組WL_G0,因此,快閃記憶體晶片512、514、522、524中的資料頁P0也有可能發生損壞。舉例來說,假設快閃記憶體晶片514的資料頁P1在資料寫入的過程中發生錯誤,則先前以成功寫入的快閃記憶體晶片514的資料頁P0也會發生錯誤,因此,先前所保留下來的第1組錯誤更正碼S0便可以在之後用來更正資料頁P0的錯誤。
接著,當快閃記憶體控制器110需要將第3筆資料寫入至超級區塊530中時,首先,快閃記憶體控制器110中的第二編解碼器134會先對第3筆資料進行編碼以產生第3組錯誤更正碼S2,其中第二編解碼器134可以採用里德-所羅門編碼方式或是互斥或運算來對寫入到每一個快閃記憶體晶片512、514、522、524中的第三個資料頁P2的資料進行編碼,以產生第3組錯誤更正碼S2;接著,第一編解碼器132分別對第3筆資料進行編碼以產生對應的錯誤更正碼,並將第三筆資料與第一編解碼器132所產生的錯誤更正碼一併寫入到每一個快閃記憶體晶片512、514、522、524中的第三個資料頁P2中。另外,在第3筆資料寫入的過程中,快閃記憶體控制器110會對寫入的資料進行讀取檢查的操作,以確定資料是否成功寫入,而在快閃記憶體控制器110判斷第3筆資料已經成功寫入到快閃記憶體晶片512、514、522、524中第三個資料頁P2後,快閃記憶體控制器110保留第3組錯誤更正碼S2。其中,快閃記憶體控制器110可以先暫時將第3組錯誤更正碼S2儲存在本身的記憶體中,或是將第3組錯誤更正碼S2存入到快閃記憶體晶片512、514、522、524中的該特定區塊中,且該特定區塊不屬於超級區塊530。
接著,當快閃記憶體控制器110需要將第4筆資料寫入至超級區塊530中時,首先,快閃記憶體控制器110中的第二編解碼器134會先對第4筆資料進行編碼以產生第4組錯誤更正碼S3,其中第二編解碼器134可以採用里德-所羅門編碼方式或是互斥或運算來對寫入到每一個快閃記憶體晶片512、514、522、524中的第四個資料頁P3的資料進行編碼,以產生第4組錯誤更正碼S3;接著,第一編解碼器132分別對第4筆資料進行編碼以產生對應的錯誤更正碼,並將第四筆資料與第一編解碼器132所產生的錯誤更正碼一併寫入到每一個快閃記憶體晶片512、514、522、524中的第四個資料頁P3中。另外,在第4筆資料寫入的過程中,快閃記憶體控制器110會對寫入的資料進行讀取檢查的操作,以確定資料是否成功寫入,而在快閃記憶體控制器110判斷第4筆資料已經成功寫入到快閃記憶體晶片512、514、522、524中第四個資料頁P2後,快閃記憶體控制器110保留第4組錯誤更正碼S3。其中,快閃記憶體控制器110可以先暫時將第4組錯誤更正碼S3儲存在本身的記憶體中,或是將第4組錯誤更正碼S3存入到快閃記憶體晶片512、514、522、524中的該特定區塊中,且該特定區塊不屬於超級區塊530。
同樣地,當第3、4筆資料寫入的過程中也發生寫入錯誤的情形,則由於P0、P1、P3、P4是屬於同一個字元線組WL_G0,因此,快閃記憶體晶片512、514、522、524中的資料頁P0、P1也有可能發生損壞。舉例來說,假設快閃記憶體晶片524的資料頁P3在資料寫入的過程中發生錯誤,則先前以成功寫入的快閃記憶體晶片524的資料頁P0、P1、P2也會發生錯誤,因此,先前所保留下來的第1、2、3組錯誤更正碼S0、S1、S2便可以在之後分別用來更正資料頁P0、P1、P2的錯誤。
在字元線組WL_G0上的頁面都已經寫完資料之後,先前所保留的錯誤更正碼S0、S1、S2、S3若是儲存在快閃記憶體控制器110中的記憶體時,則可以將之搬移到該特定區塊中,以減少快閃記憶體控制器110中記憶體的容量需求。
接著,類似以上步驟,快閃記憶體控制器110將接下來的第5~192筆資料寫入至快閃記憶體晶片512、514、522、524中,並對該第5~192筆資料進行編碼以分別產生第5~192組錯誤更正碼S4~S191。
當超級區塊530在資料寫入的過程中發生錯誤時,由於快閃記憶體無法直接對已寫入的資料做修正,故需要將已寫入的資料讀出之後再使用儲存在該特定區塊中的錯誤更正碼進行更正,並將更正後的資料連同其他不需更正的資料一併寫入到另一個區塊中。
由於錯誤更正碼S0~S191需要很大的容量且也占據了該特定區塊的空間,因此,在確定超級區塊530中的所有資料都已經成功寫入之後,該特定區塊中所儲存的錯誤更正碼S0~S191便可以刪除,亦即快閃記憶體控制器110會抹除該特定區塊以刪除錯誤更正碼S0~S191(在對應的資料第一次被讀取之前)。需注意的是,上述“刪除”錯誤更正碼S0~S191並不代表要立刻將該特定區塊立刻抹除,而是可以將該特定區塊標示為“無效化”,等到後續適合的時間(例如,快閃記憶體控制器110空閒的時候)再將該特定區塊整個抹除。
需注意的是,第6圖所繪示的P0~P191所代表的可能不只是一個資料頁,而可能是1~4個資料頁。詳細來說,當是單層式儲存(SLC)的區塊時,則一個字元線上的浮閘電晶體則構成一個資料頁(例如字元線WL0僅包含一個資料頁P0);當是多層式儲存(MLC)的區塊時,則一個字元線上的浮閘電晶體則構成二個資料頁(例如圖示的P0包含兩個資料頁);當是三層式儲存(TLC)的區塊時,則一個字元線上的浮閘電晶體則構成三個資料頁(例如圖示的P0包含第4圖所示的三個資料頁P0L、P0M、P0U);以及當是四層式儲存(QLC)的區塊時,則一個字元線上的浮閘電晶體則構成四個資料頁。
在本實施例中,超級區塊530可以是多層式儲存區塊、三層式儲存區塊或是四層式儲存區塊,然而,由於用來儲存錯誤更正碼S0~S191的該特定區塊會頻繁地被寫入與抹除,因此,為了增加該特定區塊的壽命,該特定區塊會採用單層式儲存的寫入方式。另一方面,需注意的是,當超級區塊530是採用三層式儲存方式時,則由於每一個字元線會對應到三個資料頁,因此錯誤更正碼S0~S191實際上會需要由三個特定區塊(單層式儲存區塊)來儲存。
需注意的是,在以上的實施例中,係假設超級區塊530是一空白區塊,且快閃記憶體控制器110係將資料由每一個快閃記憶體晶片的第一個資料頁開始寫起,然而,本發明並不以此為限,在其他實施例中,超級區塊530可以已經存有其他資料,而快閃記憶體控制器110將資料循序存進超級區塊530的剩下資料頁中,並產生對應錯誤更正碼(S0~SN),這些設計上的變化均應隸屬於本發明的範疇。
另一方面,在以上的實施例中,資料會先經過第二編解碼器134的編碼之後,才會再進行第一編解碼器132的編碼已寫入到快閃記憶體模組120之中,然而,在其他實施例中,第一編解碼器132與第二編解碼器134的執行順序亦可相反,以達到相同的結果。
請參考第7圖,其為依據本發明一實施例之存取快閃記憶體模組120的方法的流程圖,參考第1~7圖及以上所揭露的內容,流程敘述如下:
步驟700:流程開始。
步驟702:將第N筆資料寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並對該第N筆資料進行編碼以產生一第N組錯誤更正碼,其中該第N組錯誤更正碼係用來對寫入至該多個快閃記憶體晶片中的該第N筆資料進行錯誤更正;
步驟704:當判斷該第N筆資料已成功寫入至該多個快閃記憶體晶片中之後,保留該第N組錯誤更正碼;
步驟706:依序將第(N+1)~(N+M)筆資料分別寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,並分別對該第(N+1)~(N+M)筆資料進行編碼以產生第(N+1)~(N+M)組錯誤更正碼,其中該第(N+1)~(N+M)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第(N+1)~(N+M)筆資料進行錯誤更正;以及
步驟708:當判斷該第(N+M)筆資料已成功寫入至該多個快閃記憶體晶片中時,才刪除該第N~(N+M)組錯誤更正碼。
藉由以上所揭露的實施例,可以確實地更正立體NAND型快閃記憶體在資料寫入時發生的錯誤,且由於錯誤更正碼S0~S191在確定超級區塊530中的資料都完全成功寫入之後便可以抹除,因此便也可以節省記憶體的空間。
另外,在某些情況下,已經成功寫入的資料可能在後續的讀取中會發生無法讀取或是讀取錯誤的情形,例如快閃記憶體512、514、522、524中可能有部分的字元線發生斷路(open)的情形,因而造成無法讀取資料的情形。此外,如先前所述,一個字元線組中只要有一條字元線發生斷路,便會造成整個字元線組的資料都會發生錯誤。因此,本發明另提出以下的實施例來避免後續因為字元線斷路而造成資料讀取錯誤的情形。
為了方便敘述,以下實施例一樣採用第4~5圖的例子,亦即快閃記憶體控制器110要將資料寫入到超級區塊530中。參考第8圖,其為依據本發明一第二實施例之快閃記憶體控制器110將資料寫入到超級區塊530的示意圖,為了方便以下實施例的說明,在以下的敘述中,一筆資料指的是寫入到一個字元線組的資料,而非是第6圖之實施例所述的一個字元線上的資料,然而,此定義並非是作為本發明的限制。當快閃記憶體控制器110需要將第1筆資料寫入至超級區塊530中時,類似第6圖的實施例所述,快閃記憶體控制器110中的第二編解碼器134會對第1筆資料進行編碼以產生第1組錯誤更正碼S0~S3,且將第1筆資料分別寫入到每一個快閃記憶體晶片512、514、522、524中的資料頁P0~P3中,並將錯誤更正碼S0~S3存入到快閃記憶體晶片512、514、522或524中的一特定區塊中,且該特定區塊不屬於超級區塊530。
接著,當快閃記憶體控制器110需要將第2筆資料(包含4個資料頁的資料)寫入至超級區塊530中時,首先,快閃記憶體控制器110中的第二編解碼器134會先對要寫入到快閃記憶體晶片512、514、522、524之資料頁P4的資料以及錯誤更正碼S0進行編碼以產生錯誤更正碼S4,其中第二編解碼器134可以採用里德-所羅門編碼方式或是互斥或運算來對寫入到每一個快閃記憶體晶片512、514、522、524中的第五個資料頁P4的資料以及錯誤更正碼S0進行編碼,以產生錯誤更正碼S4;接著,第一編解碼器132分別對要寫入到快閃記憶體晶片512、514、522、524之資料頁P4的資料進行編碼以產生對應的錯誤更正碼,並將此資料與第一編解碼器132所產生的錯誤更正碼一併寫入到每一個快閃記憶體晶片512、514、522、524中的第五個資料頁P4中。其中,快閃記憶體控制器110可以先暫時將錯誤更正碼S4儲存在本身的記憶體中,或是將錯誤更正碼S4存入到快閃記憶體晶片512、514、522、524中的該特定區塊中,且該特定區塊不屬於超級區塊530。如上所述,與錯誤更正碼S0~S3比較不同的是,錯誤更正碼S4的產生過程中有使用到錯誤更正碼S0。
接著,記憶體控制器110需要將第2筆資料中要寫入到快閃記憶體晶片512、514、522、524之資料頁P5~P7的資料寫入至超級區塊530中,並同時產生了錯誤更正碼S5~S7,其中錯誤更正碼S5~S7的產生過程中有分別使用到錯誤更正碼S1~S3。
再接著,記憶體控制器110需要將第3筆資料寫入至超級區塊530中,並同時產生了第3組錯誤更正碼S8~S11,其中類似第2組錯誤更正碼S4~S7,第3組錯誤更正碼S8~S11的產生過程中有分別使用到第2組錯誤更正碼S4~S7。
類似以上步驟,快閃記憶體控制器110將接下來的第4~48筆資料寫入至快閃記憶體晶片512、514、522、524中,並對該第4~48筆資料進行編碼以分別產生第4~48組錯誤更正碼S12~S191。
當超級區塊530在資料寫入的過程中發生錯誤時,由於快閃記憶體無法直接對已寫入的資料做修正,故需要將已寫入的資料讀出之後再使用儲存在該特定區塊中的錯誤更正碼進行更正,並將更正後的資料連同其他不需更正的資料一併寫入到另一個區塊中。
需注意的是,由於上述每一組錯誤更正碼都是參考前一組錯誤更正碼的內容所產生的,因此,第48組錯誤更正碼S188~S191實質上便帶有先前每一組錯誤更正碼的資訊,亦即,每一組錯誤更正碼的資訊都可由第48組錯誤更正碼所得到。舉例來說,錯誤更正碼S184可以由第二編解碼器134根據快閃記憶體晶片512、514、522、524之資料頁P188的內容以及錯誤更正碼S188而得到,錯誤更正碼S180可以由第二編解碼器134根據快閃記憶體晶片512、514、522、524之資料頁P184的內容以及錯誤更正碼S184而得到,錯誤更正碼S176可以由第二編解碼器134根據快閃記憶體晶片512、514、522、524之資料頁P180的內容以及錯誤更正碼S180而得到…如此不斷計算最後便可以得到錯誤更正碼S0。因此,為了節省記憶體空間,在確定超級區塊530中的所有資料都已經成功寫入之後,快閃記憶體控制器110僅需要將錯誤更正碼S188~S191複製到另外一個區塊中,並可以將該特定區塊整個抹除以節省記憶體空間。
如上所述,由於快閃記憶體控制器110有保留錯誤更正碼S188~S191,且錯誤更正碼S188~S191可以用來獲得錯誤更正碼S0~S187,因此,即使後續快閃記憶體晶片512、514、522、524有一個快閃記憶體晶片發生字元線發生斷路(open)的情形,也可以透過相對應的錯誤更正碼S0~ S191來進行更正,而不會發生資料無法修復的情形。
在本實施例中,超級區塊530可以是多層式儲存(MLC)區塊、三層式儲存(TLC)區塊或是四層式儲存(QLC)區塊,然而,由於用來儲存錯誤更正碼S0~S191的該特定區塊會頻繁地被寫入與抹除,因此,為了增加該特定區塊的壽命,該特定區塊會採用單層式儲存(SLC)的寫入方式。另一方面,需注意的是,當超級區塊530是採用三層式儲存方式時,則由於每一個字元線會對應到三個資料頁,因此錯誤更正碼S0~S191實際上會需要由三個特定區塊(單層式儲存區塊)來儲存。此外,在快閃記憶體控制器110將錯誤更正碼S188~191複製的過程中,可以錯誤更正碼S188~S191複製到一個三層式儲存區塊,以進一步地節省記憶體空間。
需注意的是,第8圖所繪示的P0~P191所代表的可能不只是一個資料頁,而可能是1~4個資料頁。詳細來說,當是單層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成一個資料頁(例如字元線WL0僅包含一個資料頁P0);當是多層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成二個資料頁(例如圖示的P0包含兩個資料頁);當是三層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成三個資料頁(例如圖示的P0包含第4圖所示的三個資料頁P0L、P0M、P0U);以及當是四層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成四個資料頁。
請參考第9圖,其為依據本發明一實施例之存取快閃記憶體模組120的方法的流程圖,參考第8、9圖及以上所揭露的內容,流程敘述如下:
步驟900:流程開始。
步驟902:依序將第N~(N+K)筆資料分別寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並分別對該第N~(N+K)筆資料進行編碼以產生第N~(N+K)組錯誤更正碼,其中該第N~(N+K)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第N~(N+K)筆資料進行錯誤更正;以及
步驟904:將第(N+K+1)筆資料寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,並使用該第(N+K)組錯誤更正碼來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼,其中K為1。
以上第8~9的實施例可以避免快閃記憶體晶片512、514、522、524有一個快閃記憶體晶片發生字元線發生斷路而造成資料無法修復的情形,然而,若是兩個字元線組中的兩條相鄰的字元線發生短路(short),例如第8圖中快閃記憶體晶片512的字元線WL3與WL4發生短路,則會造成快閃記憶體晶片512中的兩個字元線組WL_G0與WL_G1上的資料均無法成功讀取,因此,以下提出一實施例以克服兩個字元線組中的兩條相鄰的字元線發生短路(short)的情形。
為了方便敘述,以下實施例一樣採用第4~5圖的例子,亦即快閃記憶體控制器110要將資料寫入到超級區塊530中。參考第10圖,其為依據本發明一第三實施例之快閃記憶體控制器110將資料寫入到超級區塊530的示意圖,為了方便以下實施例的說明,在以下的敘述中,一筆資料指的是寫入到一個字元線組的資料,而非是第6圖之實施例所述的一個字元線上的資料,然而,此定義並非是作為本發明的限制。當快閃記憶體控制器110需要將第1筆資料寫入至超級區塊530中時,類似第6圖的實施例所述,快閃記憶體控制器110中的第二編解碼器134會對第1筆資料進行編碼以產生第1組錯誤更正碼S0~S3,且將第1筆資料分別寫入到每一個快閃記憶體晶片512、514、522、524中的資料頁P0~P3中,並將錯誤更正碼S0~S3存入到快閃記憶體晶片512、514、522或524中的一特定區塊中,且該特定區塊不屬於超級區塊530。接著,第二編解碼器134會對第2筆資料進行編碼以產生第2組錯誤更正碼S0~S3,且將第2筆資料分別寫入到每一個快閃記憶體晶片512、514、522、524中的資料頁P4~P7中,並將錯誤更正碼S4~S7存入到該特定區塊中。
接著,當快閃記憶體控制器110需要將第3筆資料(包含4個資料頁的資料)寫入至超級區塊530中時,首先,快閃記憶體控制器110中的第二編解碼器134會先對要寫入到快閃記憶體晶片512、514、522、524之資料頁P8的資料以及錯誤更正碼S0進行編碼以產生錯誤更正碼S8,其中第二編解碼器134可以採用里德-所羅門編碼方式或是互斥或運算來對寫入到每一個快閃記憶體晶片512、514、522、524中的第九個資料頁P8的資料以及錯誤更正碼S0進行編碼,以產生錯誤更正碼S8;接著,第一編解碼器132分別對要寫入到快閃記憶體晶片512、514、522、524之資料頁P8的資料進行編碼以產生對應的錯誤更正碼,並將此資料與第一編解碼器132所產生的錯誤更正碼一併寫入到每一個快閃記憶體晶片512、514、522、524中的第九個資料頁P8中。其中,快閃記憶體控制器110可以先暫時將錯誤更正碼S8儲存在本身的記憶體中,或是將錯誤更正碼S8存入到快閃記憶體晶片512、514、522、524中的該特定區塊中,且該特定區塊不屬於超級區塊530。如上所述,與錯誤更正碼S0~S7比較不同的是,錯誤更正碼S8的產生過程中有使用到錯誤更正碼S0。
接著,記憶體控制器110需要將第3筆資料中要寫入到快閃記憶體晶片512、514、522、524之資料頁P9~P11的資料寫入至超級區塊530中,並同時產生了錯誤更正碼S9~S11,其中錯誤更正碼S9~S11的產生過程中有分別使用到錯誤更正碼S1~S3。
再接著,記憶體控制器110需要將第4筆資料寫入至超級區塊530中,並同時產生了第4組錯誤更正碼S12~S15,其中類似第3組錯誤更正碼S8~S11,第4組錯誤更正碼S12~S15的產生過程中有分別使用到第2組錯誤更正碼S4~S7。
類似以上步驟,快閃記憶體控制器110將接下來的第5~48筆資料寫入至快閃記憶體晶片512、514、522、524中,並對該第5~48筆資料進行編碼以分別產生第5~48組錯誤更正碼S16~S191。
當超級區塊530在資料寫入的過程中發生錯誤時,由於快閃記憶體無法直接對已寫入的資料做修正,故需要將已寫入的資料讀出之後再使用儲存在該特定區塊中的錯誤更正碼進行更正,並將更正後的資料連同其他不需更正的資料一併寫入到另一個區塊中。
需注意的是,由於上述每一組錯誤更正碼都是參考前前組錯誤更正碼的內容所產生的,因此,第47、48組錯誤更正碼S188~S191實質上便帶有先前每一組錯誤更正碼的資訊,亦即,每一組錯誤更正碼的資訊都可由第47組或第48組錯誤更正碼所得到。舉例來說,錯誤更正碼S180可以由第二編解碼器134根據快閃記憶體晶片512、514、522、524之資料頁P188的內容以及錯誤更正碼S188而得到,錯誤更正碼S172可以由第二編解碼器134根據快閃記憶體晶片512、514、522、524之資料頁P180的內容以及錯誤更正碼S180而得到,錯誤更正碼S164可以由第二編解碼器134根據快閃記憶體晶片512、514、522、524之資料頁P172的內容以及錯誤更正碼S172而得到…如此不斷計算最後便可以得到錯誤更正碼S0。因此,為了節省記憶體空間,在確定超級區塊530中的所有資料都已經成功寫入之後,快閃記憶體控制器110僅需要將第47、48組錯誤更正碼S184~S191複製到另外一個區塊中,並可以將該特定區塊整個抹除以節省記憶體空間。
如上所述,由於快閃記憶體控制器110有保留錯誤更正碼S184~S191,且錯誤更正碼S184~S191可以用來獲得錯誤更正碼S0~S183,因此,即使後續快閃記憶體晶片512、514、522、524有一個快閃記憶體晶片發生字元線發生短路的情形,也可以透過相對應的錯誤更正碼S0~191來進行更正,而不會發生資料無法修復的情形。
在本實施例中,超級區塊530可以是多層式儲存(MLC)區塊、三層式儲存(TLC)區塊或是四層式儲存(QLC)區塊,然而,由於用來儲存錯誤更正碼S0~S191的該特定區塊會頻繁地被寫入與抹除,因此,為了增加該特定區塊的壽命,該特定區塊會採用單層式儲存(SLC)的寫入方式。另一方面,需注意的是,當超級區塊530是採用三層式儲存方式時,則由於每一個字元線會對應到三個資料頁,因此錯誤更正碼S0~S191實際上會需要由三個特定區塊(單層式儲存區塊)來儲存。此外,在快閃記憶體控制器110將錯誤更正碼S184~S191複製的過程中,可以錯誤更正碼S184~S191複製到一個三層式儲存區塊,以進一步地節省記憶體空間。
需注意的是,第10圖所繪示的P0~P191所代表的可能不只是一個資料頁,而可能是1~4個資料頁。詳細來說,當是單層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成一個資料頁(例如字元線WL0僅包含一個資料頁P0);當是多層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成二個資料頁(例如圖示的P0包含兩個資料頁);當是三層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成三個資料頁(例如圖示的P0包含第4圖所示的三個資料頁P0L、P0M、P0U);以及當是四層式儲存的區塊時,則一個字元線上的浮閘電晶體則構成四個資料頁。
請參考第11圖,其為依據本發明一實施例之存取快閃記憶體模組120的方法的流程圖,參考第10、11圖及以上所揭露的內容,流程敘述如下:
步驟1100:流程開始。
步驟1102:依序將第N~(N+K)筆資料分別寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並分別對該第N~(N+K)筆資料進行編碼以產生第N~(N+K)組錯誤更正碼,其中該第N~(N+K)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第N~(N+K)筆資料進行錯誤更正;以及
步驟1104:將第(N+K+1)筆資料寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,並使用該第N組錯誤更正碼來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼,其中K為1。
需注意的是,在以上的實施例說明中,快閃記憶體模組120為一立體NAND型快閃記憶體模組,然而,在其他實施例中,快閃記憶體模組120亦可為平面NAND型快閃記憶體模組,由於本領域技術人員應可輕易了解如何將上述實施例應用在平面NAND型快閃記憶體模組中,故相關細節不再贅述。
簡要歸納本發明,在本發明之存取一快閃記憶體模組的方法中,係使用類似容錯式磁碟陣列的錯誤更正方式來產生錯誤更正碼,以解決立體NAND型快閃記憶體中寫入錯誤的情形,且上述錯誤更正碼可以暫時地儲存在快閃記憶體中,並等到區塊資料都成功寫入之後再刪除,因此可以有效地節省快閃記憶體控制器中的記憶體需求,且也不會浪費快閃記憶體模組中的空間。此外,上述產生的錯誤更正碼可以僅保留其中一部分來更正後續因為字元線斷路/短路時所發生的錯誤,因此除了可以更進一步確保資料的安全性之外,也不會太浪費快閃記憶體模組中的儲存空間。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100‧‧‧記憶裝置
110‧‧‧快閃記憶體控制器
112‧‧‧微處理器
112C‧‧‧程式碼
112M‧‧‧唯讀記憶體
114‧‧‧控制邏輯
116‧‧‧緩衝記憶體
118‧‧‧介面邏輯
120‧‧‧快閃記憶體模組
132‧‧‧第一編解碼器
134‧‧‧第二編解碼器
202‧‧‧浮閘電晶體
510、520‧‧‧通道
512、514、516、518‧‧‧快閃記憶體晶片
530‧‧‧超級區塊
700~708、900~904、1100~1104‧‧‧步驟
B1~B3‧‧‧位元線
WL0~WL47‧‧‧字元線
WL_G0~WL_G47‧‧‧字元線組
110‧‧‧快閃記憶體控制器
112‧‧‧微處理器
112C‧‧‧程式碼
112M‧‧‧唯讀記憶體
114‧‧‧控制邏輯
116‧‧‧緩衝記憶體
118‧‧‧介面邏輯
120‧‧‧快閃記憶體模組
132‧‧‧第一編解碼器
134‧‧‧第二編解碼器
202‧‧‧浮閘電晶體
510、520‧‧‧通道
512、514、516、518‧‧‧快閃記憶體晶片
530‧‧‧超級區塊
700~708、900~904、1100~1104‧‧‧步驟
B1~B3‧‧‧位元線
WL0~WL47‧‧‧字元線
WL_G0~WL_G47‧‧‧字元線組
第1圖為依據本發明一實施例之一種記憶裝置的示意圖。 第2圖為一立體NAND型快閃記憶體的範例示意圖。 第3圖為浮閘電晶體結構的概念示意圖。 第4圖為一區塊中多個字元線組的示意圖。 第5圖為快閃記憶體控制器將資料寫入到快閃記憶體模組的示意圖。 第6圖為依據本發明一第一實施例之快閃記憶體控制器將資料寫入到超級區塊的示意圖。 第7圖為依據本發明一實施例之存取快閃記憶體模組的方法的流程圖。 第8圖為依據本發明一第二實施例之快閃記憶體控制器將資料寫入到超級區塊的示意圖。 第9圖為依據本發明一實施例之存取快閃記憶體模組的方法的流程圖。 第10圖為依據本發明一第三實施例之快閃記憶體控制器將資料寫入到超級區塊的示意圖。 第11圖為依據本發明一實施例之存取快閃記憶體模組的方法的流程圖。
100‧‧‧記憶裝置
110‧‧‧快閃記憶體控制器
112‧‧‧微處理器
112C‧‧‧程式碼
112M‧‧‧唯讀記憶體
114‧‧‧控制邏輯
116‧‧‧緩衝記憶體
118‧‧‧介面邏輯
120‧‧‧快閃記憶體模組
132‧‧‧第一編解碼器
134‧‧‧第二編解碼器
Claims (34)
- 一種存取一快閃記憶體模組的方法,包含有: 依序將第N~(N+K)筆資料分別寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並分別對該第N~(N+K)筆資料進行編碼以產生第N~(N+K)組錯誤更正碼,其中該第N~(N+K)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第N~(N+K)筆資料進行錯誤更正,其中N、K為一正整數;以及 將第(N+K+1)筆資料寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,並使用該第N~(N+K)組錯誤更正碼中至少其一來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
- 如申請專利範圍第1項所述之方法,其中K為1,且產生該第(N+K+1)組錯誤更正碼的步驟包含有: 使用該第(N+K)組錯誤更正碼來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
- 如申請專利範圍第1項所述之方法,其中K為1,且產生該第(N+K+1)組錯誤更正碼的步驟包含有: 使用該第N組錯誤更正碼來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
- 如申請專利範圍第1項所述之方法,其中第N~(N+K+1)筆資料係寫入至該多個快閃記憶體晶片中每一個快閃記憶體晶片之不同字元線組(word line group)上的浮閘電晶體,其中每一個字元線組包含了多條字元線。
- 如申請專利範圍第1項所述之方法,其中K為1~M之間的任意值,以及該第N筆資料係寫入到該多個快閃記憶體晶片的一超級區塊(super block)中的第一個資料頁,其中該超級區塊包含了該多個快閃記憶體晶片中每一個快閃記憶體晶片的一個區塊(block);以及該第(N+M+1)筆資料係寫入到該多個快閃記憶體晶片的該超級區塊的最後一個資料頁。
- 如申請專利範圍第5項所述之方法,其中產生該第(N+K+1)組錯誤更正碼的步驟包含有: 使用該第(N+K)組錯誤更正碼來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
- 如申請專利範圍第5項所述之方法,其中產生該第(N+K+1)組錯誤更正碼的步驟包含有: 使用該第(N+K-1)組錯誤更正碼來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
- 如申請專利範圍第5項所述之方法,另包含有: 將該第N~(N+K+1)組錯誤更正碼寫入到該快閃記憶體模組的至少一特定區塊中。
- 如申請專利範圍第8項所述之方法,其中該至少一特定區塊中為一單層式儲存(Single-Level Cell,SLC)的區塊。
- 如申請專利範圍第8項所述之方法,其中K為1~M之間的任意值,以及該第N筆資料係寫入到該多個快閃記憶體晶片的一超級區塊中的第一個資料頁,其中該超級區塊包含了該多個快閃記憶體晶片中每一個快閃記憶體晶片的一個區塊;以及該第(N+M+1)筆資料係寫入到該多個快閃記憶體晶片的該超級區塊的最後一個資料頁。
- 如申請專利範圍第10項所述之方法,另包含有: 僅將儲存在該至少一特定區塊中的該第(N+K+1)組錯誤更正碼,或是僅將儲存在該至少一特定區塊中的該第(N+K)組及第(N+K+1)組錯誤更正碼,寫入到另一區塊中。
- 如申請專利範圍第11項所述之方法,其中該至少一特定區塊為一單層式儲存(Single-Level Cell,SLC)的區塊,而該另一區塊為多層式儲存(Multiple-Level Cell,MLC)、三層式儲存(Triple-Level Cell,TLC)、或是四層式儲存(Quad-Level Cell,QLC)的區塊。
- 如申請專利範圍第11項所述之方法,另包含有: 在第(N+K+1)組錯誤更正碼,或是將第(N+K)組及第(N+K+1)組錯誤更正碼寫入到該另一區塊之後,抹除該至少一特定區塊。
- 如申請專利範圍第11項所述之方法,另包含有: 讀取該超級區塊中的一特定資料; 當讀取該特定資料時發生無法由該超級區塊中本身的錯誤更正碼來進行更正的錯誤時,讀取該另一區塊中所儲存之該第(N+K+1)組錯誤更正碼、或是該第(N+K)組及第(N+K+1)組錯誤更正碼,來對該特定資料進行錯誤更正。
- 如申請專利範圍第14項所述之方法,其中該特定資料為該超級區塊中任意資料頁中的資料。
- 如申請專利範圍第11項所述之方法,另包含有: 將該第N~(N+K+1)組錯誤更正碼寫入到該快閃記憶體模組的至少一特定區塊中,其中該至少一特定區塊中為一單層式儲存(Single-Level Cell,SLC)的區塊。
- 一種快閃記憶體控制器,該快閃記憶體控制器係用來存取一快閃記憶體模組,且該快閃記憶體控制器包含有: 一記憶體,用來儲存一程式碼; 一微處理器,用來執行該程式碼以控制對該快閃記憶體模組之存取;以及 一編碼器; 其中該微處理器依序將第N~(N+K)筆資料分別寫入至該快閃記憶體模組中的多個快閃記憶體晶片,且該編碼器分別對該第N~(N+K)筆資料進行編碼以產生第N~(N+K)組錯誤更正碼,其中該第N~(N+K)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第N~(N+K)筆資料進行錯誤更正,且N、K為一正整數;以及該微處理器將第(N+K+1)筆資料寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,且該編碼器使用該第N~(N+K)組錯誤更正碼中至少其一來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
- 如申請專利範圍第17項所述之快閃記憶體控制器,其中K為1,且該編碼器使用該第(N+K)組錯誤更正碼來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
- 如申請專利範圍第17項所述之快閃記憶體控制器,其中K為1,且該編碼器使用該第N組錯誤更正碼來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
- 如申請專利範圍第17項所述之快閃記憶體控制器,其中第N~(N+K+1)筆資料係寫入至該多個快閃記憶體晶片中每一個快閃記憶體晶片之不同字元線組上的浮閘電晶體,其中每一個字元線組包含了多條字元線。
- 如申請專利範圍第17項所述之快閃記憶體控制器,其中K為1~M之間的任意值,以及該第N筆資料係寫入到該多個快閃記憶體晶片的一超級區塊中的第一個資料頁,其中該超級區塊包含了該多個快閃記憶體晶片中每一個快閃記憶體晶片的一個區塊;以及該第(N+M+1)筆資料係寫入到該多個快閃記憶體晶片的該超級區塊的最後一個資料頁。
- 如申請專利範圍第21項所述之快閃記憶體控制器,其中該編碼器使用該第(N+K)組錯誤更正碼來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
- 如申請專利範圍第21項所述之快閃記憶體控制器,其中該編碼器使用該第(N+K-1)組錯誤更正碼來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
- 如申請專利範圍第21項所述之快閃記憶體控制器,其中該微處理器將該第N~(N+K+1)組錯誤更正碼寫入到該快閃記憶體模組的至少一特定區塊中。
- 如申請專利範圍第24項所述之快閃記憶體控制器,其中該至少一特定區塊中為一單層式儲存的區塊。
- 如申請專利範圍第24項所述之快閃記憶體控制器,其中K為1~M之間的任意值,以及該第N筆資料係寫入到該多個快閃記憶體晶片的一超級區塊中的第一個資料頁,其中該超級區塊包含了該多個快閃記憶體晶片中每一個快閃記憶體晶片的一個區塊;以及該第(N+M+1)筆資料係寫入到該多個快閃記憶體晶片的該超級區塊的最後一個資料頁。
- 如申請專利範圍第26項所述之快閃記憶體控制器,其中該微處理器僅將儲存在該至少一特定區塊中的該第(N+K+1)組錯誤更正碼,或是僅將儲存在該至少一特定區塊中的該第(N+K)組及第(N+K+1)組錯誤更正碼,寫入到另一區塊中。
- 如申請專利範圍第27項所述之快閃記憶體控制器,其中該至少一特定區塊為一單層式儲存的區塊,而該另一區塊為多層式儲存、三層式儲存、或是四層式儲存的區塊。
- 如申請專利範圍第27項所述之快閃記憶體控制器,其中在該微處理器將第(N+K+1)組錯誤更正碼,或是將第(N+K)組及第(N+K+1)組錯誤更正碼寫入到該另一區塊之後,抹除該至少一特定區塊。
- 如申請專利範圍第27項所述之快閃記憶體控制器,其中該微處理器讀取該超級區塊中的一特定資料;以及當讀取該特定資料時發生無法由該超級區塊中本身的錯誤更正碼來進行更正的錯誤時,該微處理器讀取該另一區塊中所儲存之該第(N+K+1)組錯誤更正碼、或是該第(N+K)組及第(N+K+1)組錯誤更正碼,來對該特定資料進行錯誤更正。
- 如申請專利範圍第30項所述之快閃記憶體控制器,其中該特定資料為該超級區塊中任意資料頁中的資料。
- 如申請專利範圍第27項所述之快閃記憶體控制器,其中該微處理器將該第N~(N+K+1)組錯誤更正碼寫入到該快閃記憶體模組的至少一特定區塊中,其中該至少一特定區塊中為一單層式儲存的區塊。
- 一種記憶裝置,其包含有: 一快閃記憶體模組;以及 一快閃記憶體控制器,用來存取該快閃記憶體; 其中該快閃記憶體控制器依序將第N~(N+K)筆資料分別寫入至該快閃記憶體模組中的多個快閃記憶體晶片,並分別對該第N~(N+K)筆資料進行編碼以產生第N~(N+K)組錯誤更正碼,其中該第N~(N+K)組錯誤更正碼係分別用來對寫入至該多個快閃記憶體晶片中的該第N~(N+K)筆資料進行錯誤更正,且N、K為一正整數;以及該快閃記憶體控制器將第(N+K+1)筆資料寫入至該快閃記憶體模組中的該多個快閃記憶體晶片,且使用該第N~(N+K)組錯誤更正碼中至少其一來與該第(N+K+1)筆資料一併進行編碼,以產生第(N+K+1)組錯誤更正碼。
- 如申請專利範圍第33項所述之快閃記憶體控制器,其中該快閃記憶體控制器將該第N~(N+K+1)筆資料係寫入至該快多個快閃記憶體晶片的多個區塊中,且該多個區塊為多層式儲存、三層式儲存、或是四層式儲存的區塊;以及該快閃記憶體控制器將該第N~(N+K+1)組錯誤更正碼寫入到該快閃記憶體模組的至少一特定區塊中,其中該至少一特定區塊中為一單層式儲存的區塊。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104125905A TWI575531B (zh) | 2015-08-10 | 2015-08-10 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
CN201610599287.3A CN106445723B (zh) | 2015-08-10 | 2016-07-27 | 存取闪存模块的方法、闪存控制器以及记忆装置 |
CN201910231128.1A CN110147295B (zh) | 2015-08-10 | 2016-07-27 | 存取闪存模块的方法、闪存控制器以及记忆装置 |
US15/232,814 US10089174B2 (en) | 2015-08-10 | 2016-08-10 | Flash memory controller and memory device for accessing flash memory module, and associated method |
KR1020160101939A KR101887557B1 (ko) | 2015-08-10 | 2016-08-10 | 플래시 메모리 모듈에 액세스하기 위한 플래시 메모리 제어기 및 메모리 장치, 그리고 관련된 방법 |
US16/115,570 US10324789B2 (en) | 2015-08-10 | 2018-08-29 | Flash memory controller and memory device for accessing flash memory module, and associated method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104125905A TWI575531B (zh) | 2015-08-10 | 2015-08-10 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201707005A true TW201707005A (zh) | 2017-02-16 |
TWI575531B TWI575531B (zh) | 2017-03-21 |
Family
ID=57995508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104125905A TWI575531B (zh) | 2015-08-10 | 2015-08-10 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10089174B2 (zh) |
KR (1) | KR101887557B1 (zh) |
CN (2) | CN106445723B (zh) |
TW (1) | TWI575531B (zh) |
Families Citing this family (97)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US9910772B2 (en) | 2016-04-27 | 2018-03-06 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
CN107391026B (zh) | 2016-04-27 | 2020-06-02 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
US10019314B2 (en) | 2016-04-27 | 2018-07-10 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
CN111679787B (zh) | 2016-04-27 | 2023-07-18 | 慧荣科技股份有限公司 | 闪存装置、闪存控制器及闪存存储管理方法 |
US10289487B2 (en) | 2016-04-27 | 2019-05-14 | Silicon Motion Inc. | Method for accessing flash memory module and associated flash memory controller and memory device |
US10025662B2 (en) | 2016-04-27 | 2018-07-17 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
US10133664B2 (en) | 2016-04-27 | 2018-11-20 | Silicon Motion Inc. | Method, flash memory controller, memory device for accessing 3D flash memory having multiple memory chips |
US10110255B2 (en) | 2016-04-27 | 2018-10-23 | Silicon Motion Inc. | Method for accessing flash memory module and associated flash memory controller and memory device |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US10593398B2 (en) * | 2016-09-13 | 2020-03-17 | Toshiba Memory Corporation | Semiconductor storage device including a controller configured to execute a first write and a second write |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
KR20180052154A (ko) * | 2016-11-09 | 2018-05-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
TWI605457B (zh) * | 2016-11-16 | 2017-11-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US10860475B1 (en) * | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
JP2019139824A (ja) * | 2018-02-09 | 2019-08-22 | 東芝メモリ株式会社 | メモリシステム |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US10938419B2 (en) | 2018-03-16 | 2021-03-02 | SK Hynix Inc. | Encoding method and system for memory device including QLC cells |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US11367488B2 (en) * | 2018-12-11 | 2022-06-21 | SK Hynix Inc. | Memory system and method for read operation based on grouping of word lines |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11762569B2 (en) | 2019-10-29 | 2023-09-19 | International Business Machines Corporation | Workload based relief valve activation for hybrid controller architectures |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US11500719B1 (en) * | 2020-03-31 | 2022-11-15 | Amazon Technologies, Inc. | Reliability improvements for memory technologies |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
JP2023012706A (ja) * | 2021-07-14 | 2023-01-26 | キオクシア株式会社 | 半導体記憶装置 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4271520A (en) * | 1979-06-25 | 1981-06-02 | Motorola, Inc. | Synchronizing technique for an error correcting digital transmission system |
US6957378B2 (en) * | 2001-06-04 | 2005-10-18 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
US7581103B2 (en) * | 2001-06-13 | 2009-08-25 | Intertrust Technologies Corporation | Software self-checking systems and methods |
US9116823B2 (en) * | 2006-12-06 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for adaptive error-correction coding |
US9495241B2 (en) * | 2006-12-06 | 2016-11-15 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive data storage |
TW200828328A (en) * | 2006-12-28 | 2008-07-01 | Genesys Logic Inc | Method of improving accessing reliability of flash memory |
US8145975B2 (en) * | 2008-02-28 | 2012-03-27 | Ip Video Communications Corporation | Universal packet loss recovery system for delivery of real-time streaming multimedia content over packet-switched networks |
CN101982022A (zh) * | 2008-03-31 | 2011-02-23 | Nxp股份有限公司 | 波形检测和组合的分步和线性调光控制 |
US8645749B2 (en) * | 2009-02-04 | 2014-02-04 | Micron Technology, Inc. | Systems and methods for storing and recovering controller data in non-volatile memory devices |
CN102033814B (zh) * | 2009-09-25 | 2013-04-10 | 慧荣科技股份有限公司 | 存取一闪存的方法以及相关的记忆装置 |
US8634240B2 (en) * | 2009-10-28 | 2014-01-21 | SanDisk Technologies, Inc. | Non-volatile memory and method with accelerated post-write read to manage errors |
WO2011073710A1 (en) * | 2009-12-16 | 2011-06-23 | Sandisk Il Ltd | Auxiliary parity bits for data written in multi-level cells |
WO2011101000A1 (en) * | 2010-02-16 | 2011-08-25 | Telefonaktiebolaget L M Ericsson (Publ) | Technique of encoding harq feedback information with two separate codewords with unequal error protection for dtx and ack/nack |
US8732543B1 (en) * | 2010-08-05 | 2014-05-20 | Marvell International Ltd. | Tensor product codes for flash |
US8874958B2 (en) * | 2010-11-09 | 2014-10-28 | International Business Machines Corporation | Error detection in a mirrored data storage system |
KR101712619B1 (ko) * | 2011-01-19 | 2017-03-06 | 삼성전자주식회사 | 에러 정정 코드의 인코딩 및 디코딩 방법 |
US8484542B2 (en) * | 2011-02-08 | 2013-07-09 | Sandisk Technologies Inc. | Data recovery using additional error correction coding data |
US8954822B2 (en) * | 2011-11-18 | 2015-02-10 | Sandisk Enterprise Ip Llc | Data encoder and decoder using memory-specific parity-check matrix |
US8681569B2 (en) * | 2012-02-22 | 2014-03-25 | Silicon Motion, Inc. | Method for reading data stored in a flash memory according to a threshold voltage distribution and memory controller and system thereof |
US8996960B1 (en) * | 2012-06-26 | 2015-03-31 | Inphi Corporation | Vertical error correction code for DRAM memory |
CN102929741B (zh) * | 2012-09-29 | 2013-12-25 | 邹粤林 | 一种提高闪存芯片纠错码使用效率的方法、系统及控制器 |
US9141299B2 (en) * | 2013-03-14 | 2015-09-22 | Intel Corporation | Method for reducing power consumption in solid-state storage device |
KR102083547B1 (ko) * | 2013-04-12 | 2020-03-02 | 삼성전자주식회사 | 플래시 메모리와 메모리 컨트롤러를 포함하는 데이터 저장 장치 및 그것의 배드 페이지 관리 방법 |
CN104425019B (zh) * | 2013-08-23 | 2018-07-06 | 慧荣科技股份有限公司 | 存取快闪存储器中存储单元的方法以及使用该方法的装置 |
CN104424127A (zh) * | 2013-08-23 | 2015-03-18 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN104424040B (zh) * | 2013-08-23 | 2017-10-31 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
FR3013924A1 (fr) * | 2013-11-28 | 2015-05-29 | Orange | Procede et dispositif de codage de paquets de donnees numeriques, et procede et dispositif de correction d'effacements |
TWI527048B (zh) * | 2013-11-29 | 2016-03-21 | 慧榮科技股份有限公司 | 應用於快閃記憶體裝置的錯誤更正碼單元、自我測試方法及相關的控制器 |
US9384093B1 (en) * | 2014-05-28 | 2016-07-05 | Microsemi Storage Solutions (U.S.), Inc. | Raid enabled NVME device |
US10228990B2 (en) * | 2015-11-12 | 2019-03-12 | Sandisk Technologies Llc | Variable-term error metrics adjustment |
-
2015
- 2015-08-10 TW TW104125905A patent/TWI575531B/zh active
-
2016
- 2016-07-27 CN CN201610599287.3A patent/CN106445723B/zh active Active
- 2016-07-27 CN CN201910231128.1A patent/CN110147295B/zh active Active
- 2016-08-10 KR KR1020160101939A patent/KR101887557B1/ko active IP Right Grant
- 2016-08-10 US US15/232,814 patent/US10089174B2/en active Active
-
2018
- 2018-08-29 US US16/115,570 patent/US10324789B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
TWI575531B (zh) | 2017-03-21 |
CN110147295B (zh) | 2022-10-21 |
US10324789B2 (en) | 2019-06-18 |
KR20170018796A (ko) | 2017-02-20 |
CN106445723A (zh) | 2017-02-22 |
US20180373593A1 (en) | 2018-12-27 |
CN106445723B (zh) | 2019-04-26 |
US20170046225A1 (en) | 2017-02-16 |
KR101887557B1 (ko) | 2018-08-10 |
CN110147295A (zh) | 2019-08-20 |
US10089174B2 (en) | 2018-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI575531B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 | |
CN107403640B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN107391296B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN107423158B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
TWI629690B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 | |
US20190354478A1 (en) | On-Chip Copy with Data Folding in Three-Dimensional Non-Volatile Memory Array | |
CN112463433B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
CN113113076A (zh) | 解码方法及相关的闪存控制器与电子装置 | |
CN111951855B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
TWI575530B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與記憶裝置 | |
CN112214348B (zh) | 存取闪存模块的方法及相关的闪存控制器与记忆装置 | |
TWI691967B (zh) | 解碼方法及相關的快閃記憶體控制器與電子裝置 | |
JP2013196673A (ja) | メモリシステム |