TWI759673B - Flash memory apparatus, flash memory controller, and storage management method for flash memory - Google Patents
Flash memory apparatus, flash memory controller, and storage management method for flash memory Download PDFInfo
- Publication number
- TWI759673B TWI759673B TW109100013A TW109100013A TWI759673B TW I759673 B TWI759673 B TW I759673B TW 109100013 A TW109100013 A TW 109100013A TW 109100013 A TW109100013 A TW 109100013A TW I759673 B TWI759673 B TW I759673B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- flash memory
- word line
- group
- data block
- Prior art date
Links
Images
Classifications
-
- 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
- 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
-
- 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
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- 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
- 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
- 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/44—Indication or identification of errors, e.g. for repair
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- 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)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
Description
本發明係關於一種快閃記憶體裝置,尤指一種執行一類似容錯式磁碟陣列的錯誤更正編碼操作之快閃記憶體裝置與儲存管理方法。 The present invention relates to a flash memory device, and more particularly, to a flash memory device and a storage management method for performing an error correction coding operation similar to a fault-tolerant disk array.
一般而言,對於一快閃記憶體控制器執行資料寫入以寫入一筆資料至單層單元資料區塊或是多層單元資料區塊,傳統的機制係採用於例如在一資料區塊的一字元線的最後一頁放置該字元線之其他資料頁所對應的校驗碼,使得當發生寫入失敗、字元線斷路及字元線短路時可利用該對應的校驗碼來進行一定程度的錯誤更正,然而,這樣的資料儲存率過低,例如一字元線如果包括8張資料頁,則僅有7張資料頁用來存資料,另一張資料頁是用來儲存校驗碼,如此一來,一個資料區塊中將會有1/8的比例是用來儲存校驗碼,而非用來儲存資料,就使用者的角度來說,無法被接受。 Generally speaking, for a flash memory controller to perform data writing to write a piece of data to a single-level cell data block or a multi-level cell data block, the conventional mechanism is used, for example, in a data block. The last page of the word line is to place the check codes corresponding to other data pages of the word line, so that the corresponding check codes can be used in the event of write failure, word line open circuit and word line short circuit. A certain degree of error correction, however, such data storage rate is too low, for example, if a word line includes 8 data pages, only 7 data pages are used to store data, and the other data page is used to store school data. As a result, 1/8 of a data block will be used to store the verification code instead of the data, which is unacceptable from the user's point of view.
因此,本發明的目的之一在於提供一種快閃記憶體裝置及對應的快閃記憶體儲存管理方法,採用一類似容錯式磁碟陣列的錯誤更正編碼操作,降低錯誤發生率,降低傳統機制所需要使用的校驗碼數目,同時適當地將所需的校驗碼儲存於對應的資料頁位置,令發生寫入失敗、字元線斷路及字元線短路時仍可利用所需的校驗碼來進行一定程度的錯誤更正,解決了上述的問題。 Therefore, one of the objectives of the present invention is to provide a flash memory device and a corresponding flash memory storage management method, which adopts an error correction coding operation similar to a fault-tolerant disk array, reduces the occurrence rate of errors, and reduces the problems caused by traditional mechanisms. The number of check codes to be used, and the required check codes are properly stored in the corresponding data page location, so that the required check codes can still be used in the event of write failure, word line open circuit and word line short circuit code to perform a certain degree of error correction, which solves the above problems.
根據本發明一實施例,其揭露了一種快閃記憶體裝置。快閃記憶體裝置包含有一快閃記憶體模組與快閃記憶體控制器,快閃記憶體模組包括複數個單層單元資料區塊以及至少一多層單元資料區塊,快閃記憶體控制器具有複數條通道分別連接至快閃記憶體模組,快閃記憶體控制器係將一筆欲寫入之資料分類為複數群的資料,快閃記憶體控制器分別執行單層單元資料寫入以及執行一類似容錯式磁碟陣列的錯誤更正編碼操作產生一對應的校驗碼,以將複數群的資料以及對應的校驗碼寫入至複數個單層單元資料區塊;當完成複數個單層單元資料區塊的寫入時,快閃記憶體模組係執行內部複製,將複數個單層單元資料區塊所儲存之複數群的資料以及對應的校驗碼,依資料的先後順序,依序搬移寫入至至少一多層單元資料區塊。 According to an embodiment of the present invention, a flash memory device is disclosed. The flash memory device includes a flash memory module and a flash memory controller. The flash memory module includes a plurality of single-layer unit data blocks and at least one multi-layer unit data block. The flash memory The controller has a plurality of channels respectively connected to the flash memory module. The flash memory controller classifies a piece of data to be written into a plurality of groups of data, and the flash memory controller executes single-layer unit data writing respectively. input and perform an error correction coding operation similar to a fault-tolerant disk array to generate a corresponding check code, so as to write the data of the complex group and the corresponding check code into the plurality of single-level unit data blocks; when the complex number is completed When writing a single-level unit data block, the flash memory module performs internal replication, and copies the data of the plural groups and the corresponding check codes stored in the plural single-level unit data blocks according to the order of the data. The sequence is transferred and written to at least one multi-layer unit data block in sequence.
根據本發明一實施例,另揭露了一種快閃記憶體儲存管理方法。該方法包含有:提供一快閃記憶體模組,該快閃記憶體模組包括複數個單層單元資料區塊以及至少一多層單元資料區塊;將一筆欲寫入之資料分類為複數群的資料;分別執行單層單元資料寫入以及執行一類似容錯式磁碟陣列的錯誤更正編碼操作產生一對應的校驗碼,以將複數群的資料以及該對應的校驗碼寫入至該複數個單層單元資料區塊;當完成該複數個單層單元資料區塊的寫入時,執行一內部複製,將該複數個單層單元資料區塊所儲存之該複數群的資料以及該對應的校驗碼,依資料的先後順序,依序搬移寫入至該至少一多層單元資料區塊。 According to an embodiment of the present invention, a flash memory storage management method is further disclosed. The method includes: providing a flash memory module, the flash memory module including a plurality of single-layer unit data blocks and at least one multi-layer unit data block; classifying a piece of data to be written into a plurality of group data; perform single-layer cell data writing and error correction coding operations similar to a fault-tolerant disk array to generate a corresponding check code, so as to write the data of the complex group and the corresponding check code to the the plurality of single-level unit data blocks; when the writing of the plurality of single-level unit data blocks is completed, an internal copy is performed, the data of the plurality of groups stored in the plurality of single-level unit data blocks and The corresponding check code is sequentially transferred and written to the at least one multi-layer unit data block according to the sequence of the data.
100:快閃記憶體裝置 100: Flash memory device
105:快閃記憶體模組 105: Flash memory module
110:快閃記憶體控制器 110: Flash memory controller
205、210、401A、401B、402A、402B、403A、403B、605A、605B、605C:校驗碼儲存位置 205, 210, 401A, 401B, 402A, 402B, 403A, 403B, 605A, 605B, 605C: check code storage location
404、405、406、610、615、620:TLC資料區塊的資料頁 404, 405, 406, 610, 615, 620: Data pages for TLC data blocks
1051A、1051B、1051C:SLC資料區塊 1051A, 1051B, 1051C: SLC data block
1052:TLC資料區塊 1052: TLC data block
1101:錯誤更正碼編碼電路 1101: Error Correction Code Encoding Circuit
1102:校驗碼緩衝器 1102: Check code buffer
1102A、1102B:緩衝區 1102A, 1102B: Buffer
第1圖為本發明一實施例之快閃記憶體裝置的裝置示意圖。 FIG. 1 is a schematic diagram of a flash memory device according to an embodiment of the present invention.
第2圖為本發明第一實施例第1圖所示之快閃記憶體控制器執行SLC資料寫入 將某一群之資料寫入至快閃記憶體模組內之一SLC資料區塊以執行一次SLC資料區塊寫入操作的示意圖。 FIG. 2 is a first embodiment of the present invention. The flash memory controller shown in FIG. 1 executes SLC data writing. A schematic diagram of writing data of a certain group to an SLC data block in the flash memory module to perform an SLC data block write operation.
第3圖為快閃記憶體模組內之一SLC資料區塊通過內部複製將資料寫入至TLC資料區塊的示意圖。 FIG. 3 is a schematic diagram of an SLC data block in the flash memory module writing data to the TLC data block through internal copying.
第4圖為本發明第一實施例第1圖所示之快閃記憶體控制器寫入三個群的資料至快閃記憶體模組內的多個SLC資料區塊並通過內部複製將資料搬移寫入至TLC資料區塊而形成一個超級區塊的示意圖。 FIG. 4 is a first embodiment of the present invention. The flash memory controller shown in FIG. 1 writes data of three groups to a plurality of SLC data blocks in the flash memory module and copies the data through internal replication. A schematic diagram of moving and writing to TLC data blocks to form a super block.
第5圖為本發明第二實施例第1圖所示之快閃記憶體控制器執行SLC資料寫入以寫入一個群之資料至快閃記憶體模組內之SLC資料區塊以完成一次SLC資料區塊寫入操作的示意圖。 FIG. 5 is a second embodiment of the present invention. The flash memory controller shown in FIG. 1 executes SLC data writing to write data of a group to the SLC data block in the flash memory module to complete one time. Schematic diagram of SLC data block write operation.
第6圖為本發明第二實施例第1圖所示之快閃記憶體控制器寫入三個群之資料至快閃記憶體模組內的多個SLC資料區塊並通過內部複製將該些SLC資料區塊之資料搬移寫入至TLC資料區塊而形成一個超級區塊的示意圖。 FIG. 6 is a second embodiment of the present invention. The flash memory controller shown in FIG. 1 writes data of three groups to a plurality of SLC data blocks in the flash memory module and replicates the data internally. A schematic diagram of the data movement of the SLC data blocks and writing to the TLC data blocks to form a super block.
請參照第1圖,其係為本發明一實施例之快閃記憶體裝置100的裝置示意圖。快閃記憶體裝置100包含快閃記憶體模組105及快閃記憶體控制器110,快閃記憶體模組105為一個具有二維平面架構的快閃記憶體模組;然此並非本案的限制。快閃記憶體模組105包含多個快閃記憶體晶片(並未繪示於第1圖),每一快閃記憶體晶片包括多個單層單元資料區塊(single-level cell(SLC)block)及多個多層單元資料區塊(multiple-lelve-cell block),單層單元資料區塊的每一單元可儲存2位元的資料,多層單元資料區塊的每一單元可儲存2N位元的資料,N大於或等於2並為整數,多層單元資料區塊例如包括有MLC區塊(multi-level cell block)之單元可儲存22位元的資料、TLC區塊(triple-level cell block)之單元可儲
存23元的資料、QLC區塊(quad-level cell block)之單元可儲存24位元的資料,依此類推。
Please refer to FIG. 1 , which is a schematic diagram of a
快閃記憶體控制器110可通過複數條通道連接至快閃記憶體模組105,使可利用不同條通道同時寫入資料至不同的快閃記憶體晶片,增加寫入效率,快閃記憶體控制器110包括一錯誤更正碼編碼電路1101及一校驗碼(parity check code)緩衝器1102,錯誤更正碼編碼電路1101用以對資料進行以一錯誤更正碼編碼操作,例如本案之實施例中包括里德-所羅門碼(Reed-solomon codes)的編碼操作及/或互斥或(exclusive-OR,XOR)運算的編碼操作,以產生相對應的校驗碼,校驗碼緩衝器1102用以暫存所產生之相對應的校驗碼,而快閃記憶體控制器110係用以一類似容錯式磁碟陣列(Redundant Array of Independent Disks,RAID)的資料管理機制,將一筆資料寫入不同的快閃記憶體晶片,降低出錯率,並在寫入資料至單層單元資料區塊時即同時考慮不同編碼操作的校驗碼於單層單元資料區塊的儲位位置以及於TLC資料區塊的儲存位置,令在寫入資料至單層單元資料區塊時可更正資料出錯以及後續快閃記憶體模組105通過內部複製(internal copy)操作由單層單元區塊將資料複製搬移至TLC資料區塊時亦可更正資料出錯。
The
實作上,為求資料寫入的效率及降低出錯率,快閃記憶體模組105包括多個通道(本案之實施例為2個通道,但非限定),當一通道執行某一資料頁(page)的寫入時,可採用另一通道來執行另一資料頁的寫入,而不需要等候該通道,每一通道在快閃記憶體控制器110中有各自的序列傳輸器(sequencer)且均包含了多個快閃記憶體晶片(本案之實施例為2個晶片,但非限定),使得一個通道可同時對多個快閃記憶體晶片執行不同資料頁的寫入,而不需要等候其中一個晶片,此外,每一快閃記憶體晶片可具有一折疊設計(folded)而具有不同的兩個平面(plane),令一個快閃記憶體晶片在資料寫入時可同時利用不同兩
平面上的兩個資料區塊來執行不同資料頁的寫入,而不需要等候其中某一個資料區塊。因此,快閃記憶體模組105的一個超級資料區塊(super block)係由多個通道的多個快閃記憶體晶片的多個資料頁所組成。上述的快閃記憶體控制器110即係將資料以超級資料區塊為單位來進行寫入,先將資料寫入至快閃記憶體模組105內的單層單元資料區塊,由單層單元資料區塊緩衝,後續再從該些單層單元資料區塊將資料複製搬移至TLC資料區塊內。另外,應注意的是,其他實施例中,每一快閃記憶體晶片可不具有折疊設計,亦即,一個快閃記憶體晶片在資料寫入時係利用一資料區塊來執行一資料頁的寫入,其他資料頁的寫入需要等候時間。
In practice, in order to achieve the efficiency of data writing and reduce the error rate, the
就資料寫入的流程而言,一筆資料會先被快閃記憶體控制器110寫入至多個單層單元資料區塊1051A~1051C,之後再從該些單層單元資料區塊1051A~1051C搬移至多層單元資料區塊1052,例如,在本實施例,係以TLC單元為架構的多層資料區塊為例,TLC單元可儲存23位元的資訊,也就是說,三個單層單元資料區塊(以下簡稱為SLC資料區塊)1051A~1051C的資料會被寫入至一個TLC資料區塊1052,據此,考量到需要共同對SLC資料區塊1051A~1051C的寫入以及TLC資料區塊1052的寫入進行錯誤更正的保護,快閃記憶體控制器110係將一筆資料分類為三個群(group)的資料,應注意的是,如果係以MLC單元為架構的多層資料區塊為例,由於MLC單元可儲存22位元的資訊,所以快閃記憶體控制器110會將該筆資料分類為兩個群的資料,而如果係以QLC單元為架構的多層資料區塊為例,由於QLC單元可儲存24位元的資訊,所以快閃記憶體控制器110會將該筆資料分類為四個群的資料;依此類推。也就是說,當上述多層單元資料區塊1052之單元可儲存具有2N位元的資訊,N大於等於2並為整數,單層單元資料區塊的數目會設計為N個SLC資料區塊,快閃記憶體控制器110係將該筆欲寫入之資料分類為N個群的資料,以分別寫入至N個SLC資料區塊。
As far as the data writing process is concerned, a piece of data is first written to the single-level
在本實施例中,當快閃記憶體控制器110將該筆資料分類為三個群的資料後,會接著執行第一次的資料寫入(SLC program)將第一群的資料寫入上述第一個SLC資料區塊1051A以及利用錯誤更正碼編碼電路1101產生對應的校驗碼並寫入至第一個SLC資料區塊1051A中,如此便完成一次SLC資料區塊的寫入操作,之後快閃記憶體控制器110接著執行第二次的資料寫入(SLC program)將第二群的資料寫入上述第二個SLC資料區塊1051B以及利用錯誤更正碼編碼電路1101產生對應的校驗碼並寫入至第二個SLC資料區塊1051B中,如此便完成第二次的SLC資料區塊的寫入操作,以及快閃記憶體控制器110接著執行第三次的資料寫入(SLC program)將第三群的資料寫入上述第三個SLC資料區塊1051C以及利用錯誤更正碼編碼電路1101產生對應的校驗碼並寫入至第三個SLC資料區塊1051C中,如此便完成第三次的SLC資料區塊的寫入操作。
In this embodiment, after the
當快閃記憶體控制器110執行某一次的資料寫入(SLC program)將某一群的資料寫入某一個SLC資料區塊時,或該次資料寫入之後,快閃記憶體控制器110會檢測是否出錯,如果資料有錯,例如發生某一SLC資料區塊寫入的寫入失敗(program fail)、一字元線斷路(one word line open)及/或兩字元線短路(two word line short)的情況,快閃記憶體控制器110會利用錯誤更正碼編碼電路1101於該次資料寫入時所產生之對應校驗碼來更正上述的錯誤。
When the
當前述三個群的資料均寫入至三個SLC資料區塊時1051A~1051C或者某一個SLC資料區塊的資料寫入已完成時,快閃記憶體模組105係執行內部複製,從該些SLC資料區塊1051A~1051C或某一個SLC資料區塊中將三個群的資料或某一群的資料複製搬移並依三個群的資料順序執行資料寫入(TLC program)至一個TLC資料區塊1052(亦即前述的超級資料區塊),TLC資料區塊1052係由不同通道的不同快閃記憶體晶片的字元線的資料頁所組成,例如,TLC資料區塊1052的一字元線的一資料頁包括有上資料頁(upper page)、中間資料頁(middle
page)以及下資料頁(lower page),快閃記憶體模組105的內部複製係依順序例如將一SLC資料區塊的第N條字元線上的多個資料頁寫入至TLC資料區塊1052之一字元線的多個上資料頁,將該SLC資料區塊的第N+1條字元線上的多個資料頁寫入至TLC資料區塊1052之同一字元線的多個中間資料頁,以及將該SLC資料區塊的第N+2條字元線上的多個資料頁寫入至TLC資料區塊1052之同一字元線的多個下資料頁。待所有三個群的資料均寫入至TLC資料區塊1052,如此便完成了該超級資料區塊的寫入操作。
When the data of the above three groups are all written to the three SLC data blocks 1051A~1051C or when the data writing of a certain SLC data block is completed, the
應注意的是,為了令內部複製易於實現、符合TLC資料區塊1052的亂數種子數(randomizer seed)規則要求、以及同時考量錯誤更正編碼能力以降低出錯率,該內部複製操作係只是依資料的順序將資料搬移至TLC資料區塊1052的多條字元線的上、中、下資料頁的位置,而由快閃記憶體控制器110於寫入不同群的資料以及對應產生之校驗碼至該些SLC資料區塊1051A~1051C時,同時依據TLC資料區塊的亂數種子數規則要求以及考量錯誤更正編碼之校驗碼的寫入儲存位置,令錯誤更正碼編碼電路1101的錯誤更正編碼能力可於執行一次SLC資料區塊的寫入操作時更正SLC資料區塊的寫入失敗、一字元線斷路及/或兩字元線短路所造成的錯誤,以及可於執行該超級資料區塊的寫入操作時更正TLC資料區塊1052的寫入失敗、一字元線斷路及/或兩字元線短路所造成的錯誤。
It should be noted that, in order to make the internal copy easy to implement, meet the requirements of the randomizer seed rule of the
此外,如果快閃記憶體模組105進行記憶體垃圾回收(garbage collection),快閃記憶體控制器110係通過外部讀取,從該些SLC資料區塊1051A~1051C中讀取出資料並重新進行錯誤更正的編碼來執行資料寫入(SLC program),及/或從TLC資料區塊1052中讀取出資料並重新進行錯誤更正的編碼來執行資料寫入(SLC program)。此外,如果寫入資料(SLC program)至一SLC資料區塊且突然發生關機時,快閃記憶體控制器110係從該SLC資料區塊讀回資料並重新進行錯誤更正的編碼、寫入資料(SLC program)至另一新的SLC資料區塊。
此外,如果寫入資料(TLC program)至TLC資料區塊1052且突然發生關機時,快閃記憶體模組105係放棄該TLC資料區塊1052中目前所儲存之資料,並從該些SLC資料區塊1051A~1051C,通過內部複製重新將對應的資料執行TLC資料寫入(TLC program)至該TLC資料區塊1052。
In addition, if the
請參照第2圖,第2圖為本發明第一實施例第1圖所示之快閃記憶體控制器110執行SLC資料寫入(SLC program)將某一群之資料寫入至快閃記憶體模組105內之一SLC資料區塊以執行一次SLC資料區塊寫入操作的示意圖。快閃記憶體控制器110之錯誤更正碼編碼電路1101係對資料執行以一類似容錯式磁碟陣列的里德-所羅門(Reed Solomon,RS)編碼操作,產生相對應的校驗碼,而校驗碼緩衝器1102用以暫存所產生之相對應的校驗碼。
Please refer to FIG. 2. FIG. 2 is a first embodiment of the present invention. The
快閃記憶體模組105內包括有兩個通道,並包括兩個快閃記憶體晶片及每一晶片的兩組區塊有兩不同平面,為求寫入效率,快閃記憶體控制器110係通過兩個通道寫入資料至快閃記憶體模組105內的兩個快閃記憶體晶片的兩區塊。如第2圖之實施方式所示,一SLC資料區塊包括有例如128條字元線(分別由WL0至WL127表示之),該SLC資料區塊可以是由一個SLC資料區塊或是一組SLC子資料區塊所組成,視SLC資料區塊的定義而變,為方便描述,在實施例係將包括128條字元線視為一個SLC資料區塊的大小,其中每一條字元線包括有例如8個資料頁,以該SLC資料區塊的第一條字元線WL0為例,快閃記憶體控制器110藉由通道CH0及摺疊平面PLN0、PLN1將資料頁P1、P2寫入至快閃記憶體晶片CE0,接著藉由同一通道CH0及摺疊平面PLN0、PLN1將資料頁P3、P4寫入至另一快閃記憶體晶片CE1,接著由另一通道CH1及摺疊平面PLN0、PLN1將資料頁P5、P6寫入至快閃記憶體晶片CE0,接著藉由通道CH1及摺疊平面PLN0、PLN1將資料頁P7、P8寫入至快閃記憶體晶片CE1。其他則依此類推。
The
快閃記憶體控制器110係將一個SLC資料區塊的多個字元線WL0至
WL127依順序將每M條字元線編類為一組,M為大於或等於2的正整數,M例如為3,例如字元線WL0~WL2為第一組,字元線WL3~WL5為第二組,字元線WL6~WL8為第三組,字元線WL9~WL11為第四組…,字元線WL120~WL122為倒數第三組,字元線WL123~WL125為倒數第二組,最後一組字元線為WL126、WL127,其中第一、第三、第五組…等等的字元線為奇數組字元線,而第二、第四、第六組…等等的字元線為偶數組字元線,快閃記憶體控制器110每次寫入一組字元線之資料(包括三條字元線之資料),係利用錯誤更正碼編碼電路1101對於該組字元線之資料執行錯誤更正編碼,並將所產生之對應之部分的校驗碼(partial parity code)輸出至校驗碼緩衝器1102,以暫存部分的校驗碼。
The
校驗碼緩衝器1102於暫存部分的校驗碼時係將奇數組字元線資料所對應之部分的校驗碼儲存於一第一緩衝區1102A,將偶數組字元線資料所對應之部分的校驗碼儲存於一第二緩衝區1102B,舉例來說,當寫入字元線WL0~WL2之資料頁P1~P24時,錯誤更正碼編碼電路1101係對於資料頁P1~P24執行錯誤更正編碼,並將所產生之對應之部分的校驗碼輸出至校驗碼緩衝器1102,暫存於第一緩衝區1102A;接著當寫入字元線WL3~WL5之資料頁P1~P24,錯誤更正碼編碼電路1101係對於資料頁P1~P24執行錯誤更正編碼,並將所產生之對應之部分的校驗碼輸出至校驗碼緩衝器1102,暫存於第二緩衝區1102B;接著錯誤當寫入字元線WL6~WL8之資料頁P25~P48,錯誤更正碼編碼電路1101係對於資料頁P25~P48執行錯誤更正編碼,並將所產生之對應之部分的校驗碼輸出至校驗碼緩衝器1102,暫存於第一緩衝區1102A;後續的資料頁寫入與編碼操作係依此類推…;之後,當寫入字元線WL120~WL122之資料頁,錯誤更正碼編碼電路1101係對於字元線WL120~WL122之資料頁執行編碼,並將所產生之對應之部分的校驗碼輸出至校驗碼緩衝器1102,暫存於第一緩衝區1102A。
When temporarily storing part of the check code, the
接著,快閃記憶體控制器110於寫入偶數組字元線的最後一組字元線
(WL123~WL125)時,除了執行資料寫入(SLC program)與對應的錯誤更正編碼外,亦將第二緩衝區1102B所暫存之所有偶數組字元線之資料的部分校驗碼讀回,並將偶數組字元線之資料所對應之所有校驗碼寫入至最後一組偶數組字元線之最後一條字元線WL125的資料頁,例如最後3個資料頁(標記為205),以儲存偶數組字元線之資料所對應的里德-所羅門校驗碼。
Next, the
另外,對於寫入最後一組奇數組字元線的最後一條字元線WL127時,快閃記憶體控制器110除了執行資料寫入(SLC program)與對應的錯誤更正編碼外,會將第一緩衝區1102A所暫存之所有奇數組字元線之資料的部分校驗碼讀回,並將奇數組字元線之資料所對應之所有校驗碼寫入至最後一組奇數組字元線之最後一條字元線WL127的資料頁,例如最後3個資料頁(標記為210),以儲存奇數組字元線之資料所對應的里德-所羅門校驗碼。如此便完成一次SLC資料區塊的寫入。因此,就里德-所羅門編碼操作而言,奇數組字元線之資料所對應的校驗碼係儲存於最後一組奇數組字元線之最後一條字元線WL127的最後複數張資料頁的位置,而偶數組字元線之資料所對應的校驗碼係儲存於最後一組偶數組字元線之最後一條字元線WL125的最後複數張資料頁的位置。
In addition, when writing the last word line WL127 of the last odd group of word lines, the
此外,錯誤更正碼編碼電路1101在第2圖所示之實施例所執行的是里德-所羅門編碼操作,可更正發生在SLC資料區塊之任意三個位置之資料頁的出錯,舉例來說,錯誤更正碼編碼電路1101對於字元線WL0~WL2的三條字元線的資料執行錯誤更正編碼並產生相對應的部分校驗碼,如果同一通道的相同晶片的同一摺疊平面的三個資料頁出錯,例如資料頁P1、P9、P17出錯,錯誤更正碼編碼電路1101可利用所產生之相對應的部分校驗碼,將該三個資料頁的錯誤更正。
In addition, the error correction
如果於執行該次SLC資料區塊的寫入時檢測到發生寫入失敗(program fail)的情況,例如以發生機率來說,例如檢測到資料頁P9寫入失敗,
錯誤更正碼編碼電路1101可利用所產生之相對應的部分校驗碼,將資料頁P9的錯誤更正。
If a program fail is detected during the writing of the SLC data block, for example, in terms of probability, for example, it is detected that the data page P9 fails to be written,
The error correction
如果於執行該次SLC資料區塊的寫入時檢測到發生一字元線斷路(one word line open)而造成例如資料頁P9錯誤,錯誤更正碼編碼電路1101可利用所產生之相對應的部分校驗碼,將資料頁P9的錯誤更正。
If a word line open (one word line open) is detected during the writing of the SLC data block, such as a data page P9 error, the error correction
如果於執行該次SLC資料區塊的寫入時檢測到發生兩字元線短路(two word line short)而造成例如資料頁P9、P17均錯誤,錯誤更正碼編碼電路1101可利用所產生之相對應的部分校驗碼,將資料頁P9、P17的錯誤更正。如果發生兩字元線短路而造成例如字元線WL2的資料頁P17與字元線WL3的資料頁P1出錯,錯誤更正碼編碼電路1101可利用一組字元線WL0~WL2的部分校驗碼以及另一組字元線WL3~WL5的部分校驗碼,分別將字元線WL2的資料頁P17與字元線WL3的資料頁P1的錯誤更正。如果發生兩字元線短路而造成例如字元線WL0的資料頁P1、P2錯誤,錯誤更正碼編碼電路1101可利用一組字元線WL0~WL2的部分校驗碼,分別將字元線WL0的資料頁P1、P2的錯誤更正。
If it is detected that a two word line short occurs during the writing of the SLC data block, for example, the data pages P9 and P17 are all wrong, the error correction
因此,無論是在執行SLC資料區塊寫入時發生寫入失敗、一字元線斷路或兩字元線短路所造成的資料頁錯誤,錯誤更正碼編碼電路1101均可對應地更正該些錯誤的資料頁。
Therefore, regardless of the data page error caused by the write failure, the open circuit of one word line or the short circuit of two word lines during the writing of the SLC data block, the error correction
請參照第3圖,第3圖為快閃記憶體模組105內之一SLC資料區塊通過內部複製將資料寫入至TLC資料區塊1052的示意圖。如第3圖所示,一SLC資料區塊之一組三條字元線資料係寫入至TLC資料區塊1052之一字元線,對應地形成該字元線之一資料頁的最低有效位LSB、中間有效位CSB及最高有效位MSB的資料,例如SLC資料區塊之字元線資料WL0~WL2寫入至TLC資料區塊1052,作為該TLC資料區塊1052之字元線WL0之最低有效位LSB、中間有效位CSB及最高有效位MSB的資料;SLC資料區塊之字元線資料WL3~WL5寫入至TLC資料區塊1052,
作為該TLC資料區塊1052之字元線WL1之最低有效位LSB、中間有效位CSB及最高有效位MSB的資料;SLC資料區塊之字元線資料WL6~WL8寫入至TLC資料區塊1052,作為該TLC資料區塊1052之字元線WL2之最低有效位LSB、中間有效位CSB及最高有效位MSB的資料;也就是說,快閃記憶體模組105的內部複製係將SLC資料區塊之資料依字元線的順序搬移並寫入填入至TLC資料區塊的字元線內。
Please refer to FIG. 3 . FIG. 3 is a schematic diagram of an SLC data block in the
請參照第4圖,第4圖為本發明第一實施例第1圖所示之快閃記憶體控制器110寫入三個群組之資料至快閃記憶體模組105內的多個SLC資料區塊1051A~1051C並通過內部複製將資料搬移寫入至TLC資料區塊而形成一個超級資料區塊的示意圖。由於錯誤更正碼編碼電路1101於每次執行SLC資料區塊的寫入時,均把資料分類為奇數組字元線及偶數組字元線兩組,並將對應產生之校驗碼儲存於奇數組字元線之最後一字元線的最後3張資料頁及偶數組字元線之最後一字元線的最後3張資料頁,因此,當執行TLC資料區塊的寫入時,如第4圖所示,第一個群組之資料的奇數組字元線的對應之校驗碼係儲存於超級區塊之字元線WL42的中間有效位CSB的最後三個資料頁(標記為401A),而第一個群組之資料的偶數組字元線的對應之校驗碼係儲存於超級區塊之字元線WL41的最高有效位MSB的最後三個資料頁(標記為401B);第二個群組之資料的奇數組字元線的對應之校驗碼係儲存於超級區塊之字元線WL85的最低有效位LSB的最後三個資料頁(標記為402A),而第二個群組之資料的偶數組字元線的對應之校驗碼係儲存於超級區塊之字元線WL84的最高有效位MSB的最後三個資料頁(標記為402B);第三個群組之資料的奇數組字元線的對應之校驗碼係儲存於超級區塊之字元線WL127的最高有效位MSB的最後三個資料頁(標記為403A),而第三個群組之資料的偶數組字元線的對應之校驗碼係儲存於超級區塊之字元線WL127之最低有效位LSB的最後三個資料頁(標記為403B)。
Please refer to FIG. 4 . FIG. 4 is a first embodiment of the present invention. The
如果檢測到兩字元線短路而造成例如該超級區塊之字元線WL0、
WL1的兩資料頁(如框線404所標示)發生錯誤,快閃記憶體模組105可利用字元線WL42之中間有效位CSB的最後三張資料頁上儲存之校驗碼401A來更正字元線WL0之資料頁的錯誤,以及利用字元線WL41之最高有效位MSB之最後三張資料頁上儲存之校驗碼401B來更正字元線WL1之資料頁的錯誤。
If a two-word line short circuit is detected, such as the word line WL0 of the super block,
An error occurs in the two data pages of WL1 (as indicated by the frame line 404), and the
相同地,如果檢測到兩字元線短路而造成例如該超級區塊之字元線WL43、WL44的兩資料頁(如框線405所標示)發生錯誤,快閃記憶體模組105可利用字元線WL85之最後三張資料頁之最低有效位LSB上儲存之校驗碼402A來更正405所標示之字元線WL43之一資料頁之最低有效位LSB、中間有效位CSB的錯誤以及字元線WL44之一資料頁之最高有效位MSB的錯誤,以及利用字元線WL84之最後三張資料頁之中間有效位CSB上儲存之校驗碼402B,來更正405所標示之字元線WL43一資料頁之最高有效位MSB之錯誤以及字元線WL44一資料頁之最低有效位LSB、中間有效位CSB的錯誤。
Similarly, if a short circuit of two word lines is detected, causing errors such as two data pages (as indicated by frame line 405 ) of word lines WL43 and WL44 of the super block, the
相同地,如果是檢測到兩字元線短路而造成例如該TLC資料區塊之字元線WL125、WL126的兩資料頁(如框線406所標示)發生錯誤,快閃記憶體模組105可利用字元線WL127之最後三張資料頁之最高有效位MSB上儲存之校驗碼403A來更正406所標示之字元線WL125一資料頁之中間有效位CSB、最高有效位MSB的錯誤以及字元線WL126一資料頁之最高有效位MSB的錯誤,以及利用字元線WL127之最後三張資料頁之最低有效位LSB上儲存之校驗碼403B,來更正406所標示之字元線WL125一資料頁之最低有效位LSB之錯誤以及406所標示之字元線WL126一資料頁之中間有效位CSB、最高有效位MSB的錯誤。
Similarly, if a two-word-line short circuit is detected, for example, an error occurs in the two data pages (as indicated by the frame line 406 ) of the word-lines WL125 and WL126 of the TLC data block, the
如果是檢測到一字元線斷路或寫入失敗而造成超級區塊之任一字元線的任一資料頁發生錯誤(亦即連續任意三張子資料頁出錯),則快閃記憶體模組105均可利用對應儲存之校驗碼來更正連續任意三張子資料頁的錯誤。 If an error occurs in any data page of any word line in the super block due to a word line disconnection or write failure (that is, any three consecutive sub data pages are in error), the flash memory module will 105 can use the corresponding stored check code to correct the errors of any three consecutive sub-data pages.
也就是說,通過快閃記憶體控制器110寫入三個群組之資料至快閃記
憶體模組105內的多個SLC資料區塊1051A~1051C的校驗碼之儲存位置管理設計,當快閃記憶體模組105通過內部複製將該些資料從多個SLC資料區塊1051A~1051C複製寫入至TLC資料區塊而形成一個超級資料區塊時,如果檢測到一字元線斷路、兩字元線短路或寫入失敗的錯誤,均可由多個SLC資料區塊1051A~1051C所儲存之校驗碼來進行更正。
That is, the data of three groups are written to the flash memory through the
再者,請參照第5圖,第5圖為本發明第二實施例第1圖所示之快閃記憶體控制器110執行資料寫入(SLC program)以寫入一個群之資料至快閃記憶體模組105內之SLC資料區塊以完成一次SLC資料區塊寫入操作的示意圖。快閃記憶體控制器110之錯誤更正碼編碼電路1101係對資料執行以一類似容錯式磁碟陣列的互斥或運算的編碼操作,產生相對應的校驗碼,而校驗碼緩衝器1102用以暫存所產生之相對應的校驗碼。此外,錯誤更正碼編碼電路1101的互斥或運算包括有三個不同的編碼引擎以對SLC資料區塊的不同字元線資料進行互斥或運算;詳細操作內容如下所述。
Furthermore, please refer to FIG. 5. FIG. 5 is a second embodiment of the present invention. The
快閃記憶體模組105內包括有兩個通道,並包括兩個快閃記憶體晶片,為求寫入效率,快閃記憶體控制器110係通過兩個通道寫入資料至快閃記憶體模組105內的兩個快閃記憶體晶片,將一個SLC資料區塊之資料頁分別程式化至不同快閃記憶體晶片內,快閃記憶體控制器110的一次SLC資料區塊寫入操作所寫入的資料包括128條字元線(分別由WL0至WL127表示之),每一條字元線包括8個資料頁,例如以字元線WL0為例,錯誤更正碼編碼電路1101藉由通道CH0及PLN0、PLN1將資料頁P1、P2寫入至快閃記憶體晶片CE0,接著藉由同一通道CH0及PLN0、PLN1將資料頁P3、P4寫入至另一快閃記憶體晶片CE1,接著由另一通道CH1及PLN0、PLN1將資料頁P5、P6寫入至快閃記憶體晶片CE0,接著藉由通道CH1及PLN0、PLN1將資料頁P7、P8寫入至快閃記憶體晶片CE1。
The
錯誤更正碼編碼電路1101係將一個SLC資料區塊的多個字元線WL0
至WL127依順序將每M條字元線編類為一組,M為大於或等於2的正整數,M例如為3,例如字元線WL0~WL2為第一組,字元線WL3~WL5為第二組,字元線WL6~WL8為第三組,字元線WL9~WL11為第四組…,字元線WL120~WL122為倒數第三組,字元線WL123~WL125為倒數第二組,最後一組字元線為WL126、WL127,其中第一、第三、第五組…等等的字元線為奇數組字元線,而第二、第四、第六組…等等的字元線為偶數組字元線,快閃記憶體控制器110每次寫入一組字元線之資料(包括三條字元線之資料),係利用錯誤更正碼編碼電路1101對於該組字元線之資料執行互斥或運算的錯誤更正編碼,並將所產生之對應之部分的校驗碼(partial parity code)輸出至校驗碼緩衝器1102,以暫存部分的校驗碼。
The error correction
錯誤更正碼編碼電路1101每次寫入資料至一組三條不同字元線時,係採用三個不同的編碼引擎對於所寫入之資料執行互斥或運算的編碼,並將所產生之對應之部分的校驗碼輸出至校驗碼緩衝器1102,以暫存部分的校驗碼,而校驗碼緩衝器1102於暫存部分的校驗碼時係將奇數組之字元線資料所對應之部分的校驗碼儲存於一第一緩衝區,將偶數組之字元線資料所對應之部分的校驗碼儲存於一第二緩衝區。
Each time the error correction
舉例來說,錯誤更正碼編碼電路1101包括有第一編碼引擎、第二編碼引擎及第三編碼引擎,當寫入字元線WL0~WL2之資料頁P1~P24,依序利用第一編碼引擎對於字元線WL0的資料頁P1~P8執行互斥或運算以產生一第一部分校驗碼、利用第二編碼引擎對於字元線WL1的資料頁P9~P16進行互斥或運算以產生一第二部分校驗碼以及利用第三編碼引擎對於字元線WL2的資料頁P17~P24進行互斥或運算以產生一第三部分校驗碼,並將所產生之該些部分校驗碼分別輸出至校驗碼緩衝器1102,暫存於第一緩衝區;接著錯誤更正碼編碼電路1101寫入字元線WL3~WL5之資料頁P1~P24,依序利用第一編碼引擎對於字元線WL3的資料頁P1~P8執行互斥或運算以產生另一第一部分校驗碼、利用第二編碼引擎對於
字元線WL4的資料頁P9~P16執行互斥或運算以產生另一第二部分校驗碼以及利用第三編碼引擎對於字元線WL5的資料頁P17~P24執行互斥或運算以產生另一第三部分校驗碼,並將所產生之該些部分校驗碼分別輸出至校驗碼緩衝器1102,暫存於第二緩衝區。
For example, the error correction
後續的資料頁寫入與編碼操作係依此類推…,也就是說,對於一組奇數組字元線的第一條字元線的資料、第二條字元線的資料、第三條字元線的資料以及對於一組偶數組字元線的第一條字元線的資料、第二條字元線的資料、第三條字元線的資料,均分別執行不同次的互斥或運算,產生相對應的校驗碼。之後為了寫入該些對應的校驗碼於SLC資料區塊的適當儲存位置,錯誤更正碼編碼電路1101在寫入最後6條字元線WL122~WL127之資料頁時,係將該些相對應的校驗碼寫入於最後6條字元線WL122~WL127之最後一張資料頁(如第5圖之長方形斜線框所示),例如,在寫入字元線WL122之資料頁時,字元線WL122為一組奇數組字元線的第三條字元線,錯誤更正碼編碼電路1101係於字元線WL122的最後一張資料頁中寫入所有奇數組字元線中所有第三條字元線之資料所對應的校驗碼(亦即奇數組字元線中由第三編碼引擎所產生之所有第三部分校驗碼),而在寫入字元線WL123之資料頁時,字元線WL123為最後一組偶數組字元線的第一條字元線,錯誤更正碼編碼電路1101係於字元線WL123的最後一張資料頁中寫入所有偶數組字元線中所有第一條字元線之資料所對應的校驗碼(亦即偶數組字元線中由第一編碼引擎所產生之所有第一部分校驗碼),而在寫入字元線WL124之資料頁時,字元線WL124為最後一組偶數組字元線的第二條字元線,錯誤更正碼編碼電路1101係於字元線WL124的最後一張資料頁中寫入所有偶數組字元線中所有第二條字元線之資料所對應的校驗碼(亦即偶數組字元線中由第二編碼引擎所產生之所有第二部分校驗碼),而在寫入字元線WL125之資料頁時,字元線WL125為最後一組偶數組字元線的第三條字元線,錯誤更正碼編
碼電路1101係於字元線WL125的最後一張資料頁中寫入所有偶數組字元線中所有第三條字元線之資料所對應的校驗碼(亦即偶數組字元線中由第三編碼引擎所產生之所有第三部分校驗碼),而在寫入字元線WL126之資料頁時,字元線WL126為最後一組奇數組字元線的第一條字元線,錯誤更正碼編碼電路1101係於字元線WL126的最後一張資料頁中寫入所有奇數組字元線中所有第一條字元線之資料所對應的校驗碼(亦即奇數組字元線中由第一編碼引擎所產生之所有第一部分校驗碼),而在寫入字元線WL127之資料頁時,字元線WL127為最後一組奇數組字元線的第二條字元線,錯誤更正碼編碼電路1101係於字元線WL127的最後一張資料頁中寫入所有奇數組字元線中所有第二條字元線之資料所對應的校驗碼(亦即奇數組字元線中由第二編碼引擎所產生之所有第二部分校驗碼)。如此便完成一次SLC資料區塊的寫入。
Subsequent data page writing and encoding operations are done in the same way..., that is, for a set of odd word lines, the data of the first word line, the data of the second word line, the data of the third word line The data of the element line and the data of the first word line, the data of the second word line, and the data of the third word line of a group of word lines of an even group are respectively executed different times of mutual exclusion or operation to generate the corresponding check code. Then, in order to write the corresponding check codes into the appropriate storage locations of the SLC data block, the error correction
也就是說,當快閃記憶體控制器110寫入一群的資料至一SLC資料區塊時,快閃記憶體控制器110係將該SLC資料區塊的所有字元線依順序每M條字元線編類為一組字元線,以產生複數組奇數組的字元線及複數組偶數組的字元線,以及對一組奇數組的每一條字元線及一組偶數組的每一條字元線,分別執行不同M次的互斥或運算的編碼操作,產生該組奇數組的每一條字元線的M個部分校驗碼以及該組偶數組的每一條字元線的M個部分校驗碼,寫入並儲存該複數組奇數組的每一條字元線的M個部分校驗碼於該複數組奇數組字元線中最後M條字元線之最後一張資料頁、寫入並儲存該複數組偶數組的每一條字元線的M個部分校驗碼於該複數組偶數組字元線中最後M條字元線之最後一張資料頁。而以上述實施例,M為3,然此並非是本案的限制。
That is, when the
錯誤更正碼編碼電路1101在第5圖所示之實施例所執行的是互斥或運算編碼操作,可更正發生在SLC資料區塊之一條字元線上一個位置的資料頁錯誤,舉例來說,如果於執行該次SLC資料區塊的寫入時檢測到發生寫入失敗的情
況,例如檢測到字元線WL1的資料頁P9寫入失敗,錯誤更正碼編碼電路1101可利用第二編碼引擎於處理第一組字元線的字元線WL1時所產生之相對應的部分校驗碼及同一字元線WL1之的其他正確的資料頁P10~P16,更正字元線WL1的資料頁P9的錯誤。
The error correction
如果於執行該次SLC資料區塊的寫入時檢測到發生一字元線斷路而造成例如字元線WL1的資料頁P9錯誤,錯誤更正碼編碼電路1101亦可利用第二編碼引擎於處理第一組字元線的字元線WL1時所產生之相對應的部分校驗碼及同一字元線WL1之其他正確的資料頁P10~P16,更正字元線WL1的資料頁P9的錯誤。
If it is detected that a word line disconnection occurs during the writing of the SLC data block, for example, the data page P9 of the word line WL1 is wrong, the error correction
如果於執行該次SLC資料區塊的寫入時檢測到發生兩字元線短路而造成例如字元線WL1的資料頁P9與字元線WL2的P17均錯誤,錯誤更正碼編碼電路1101可利用第二編碼引擎於處理第一組字元線的字元線WL1時所產生之相對應的部分校驗碼及同一字元線WL1的其他正確的資料頁P10~P16,更正字元線WL1的資料頁P9的錯誤,以及利用第三編碼引擎於處理第一組字元線的字元線WL2時所產生之相對應的部分校驗碼及同一字元線WL2的其他正確的資料頁P18~P24,更正字元線WL2的資料頁P17的錯誤。而如果是字元線WL2的資料頁P17與字元線WL3的資料頁P1出錯,則錯誤更正碼編碼電路1101可利用第三編碼引擎於處理第一組字元線之字元線WL2時所產生之相對應的部分校驗碼及同一字元線WL2的其他正確的資料頁P18~P24,更正字元線WL2的資料頁P17的錯誤,以及利用第一編碼引擎於處理第二組字元線之字元線WL3時所產生之相對應的部分校驗碼及同一字元線WL3之其他正確的資料頁P2~P8,更正字元線WL3的資料頁P1的錯誤。因此,無論是在執行SLC資料區塊寫入時發生寫入失敗、一字元線斷路或兩字元線短路所造成的資料頁錯誤,錯誤更正碼編碼電路1101均可對應地更正該些錯誤的資料頁。快閃記憶體模組105通過內部複製將上述SLC資料區塊將資料寫入至TLC資料區塊的操作如同前述第3圖的內容,不再贅述。
If a short circuit of two word lines is detected during the writing of the SLC data block, for example, the data page P9 of the word line WL1 and the data page P17 of the word line WL2 are both wrong, the error correction
接著請參照第6圖,第6圖為本發明第二實施例第1圖所示之快閃記憶體控制器110寫入三個群之資料至快閃記憶體模組105內的多個SLC資料區塊1051A~1051C並通過內部複製將該些SLC資料區塊1051A~1051C之資料搬移寫入至TLC資料區塊1052而形成一個超級區塊的示意圖。錯誤更正碼編碼電路1101於每次執行SLC資料區塊的寫入時,均把資料分類為奇數組字元線與偶數組字元線,並將對應產生之校驗碼儲存於所有奇數組字元線中最後3條字元線之最後每一張資料頁以及所有偶數組字元線之最後3條字元線之最後每一張資料頁,如第6圖所示,執行TLC資料區塊寫入時,依資料寫入的順序,第一群中的字元線資料的對應校驗碼,如605A所標示,係寫入並儲存於TLC資料區塊1052之字元線WL40之最後一張資料頁之最高有效位MSB、字元線WL41之最後一張資料頁以及字元線WL42之最後一張資料頁之最低有效位LSB與中間有效位CSB,其中第一個群中的SLC資料區塊的奇數組字元線的校驗碼儲存於字元線WL40之最後一張資料頁之最高有效位MSB以及字元線WL42之最後一張資料頁之最低有效位LSB與中間有效位CSB,而第一個群中的SLC資料區塊的偶數組字元線的校驗碼儲存於字元線WL41之最後一張資料頁(包括最低有效位LSB、中間有效位CSB與最高有效位MSB)。
Next, please refer to FIG. 6 . FIG. 6 is a second embodiment of the present invention. The
第二個群中的字元線資料的對應校驗碼,如605B所標示,係寫入並儲存於TLC資料區塊1052之字元線WL83之最後一張資料頁之中間有效位CSB與最高有效位MSB、字元線WL84之最後一張資料頁以及字元線WL85之最後一張資料頁之最低有效位LSB,其中對於第二個群中在SLC資料區塊的奇數組字元線資料,由第三編碼引擎所產生之所有第三部分校驗碼係儲存於TLC資料區塊1052的字元線WL83之最後一張資料頁之中間有效位CSB,由第一編碼引擎所產生之所有第一部分校驗碼係儲存於TLC資料區塊1052的字元線WL84之最後一張資料頁之最高有效位MSB,由第二編碼引擎所產生之所有第二部分校驗碼係儲存於TLC
資料區塊1052的字元線WL85之最後一張資料頁之最低有效位LSB,而對於第二個群中在SLC資料區塊的偶數組字元線資料,由第一編碼引擎所產生之所有第一部分校驗碼係儲存於TLC資料區塊1052的字元線WL83之最後一張資料頁之最高有效位MSB,由第二編碼引擎所產生之所有第二部分校驗碼係儲存於TLC資料區塊1052的字元線WL84之最後一張資料頁之最低有效位LSB,由第三編碼引擎所產生之所有第三部分校驗碼係儲存於TLC資料區塊1052的字元線WL84之最後一張資料頁之中間有效位CSB。
The corresponding check code of the word line data in the second group, as indicated by 605B, is written and stored in the last data page of the word line WL83 of the
第三個群之字元線資料的對應校驗碼,如605C所標示,係寫入並儲存於TLC資料區塊1052之字元線WL126、127之最後一張資料頁(包括最低有效位LSB、中間有效位CSB與最高有效位MSB),其中對於第三個群中在SLC資料區塊的奇數組字元線資料,由第三編碼引擎所產生之所有第三部分校驗碼係儲存於TLC資料區塊1052的字元線WL126之最後一張資料頁之最低有效位LSB,由第一編碼引擎所產生之所有第一部分校驗碼係儲存於TLC資料區塊1052的字元線WL127之最後一張資料頁之中間有效位CSB,由第二編碼引擎所產生之所有第二部分校驗碼係儲存於TLC資料區塊1052的字元線WL127之最後一張資料頁之最高有效位MSB,而對於第三個群中在SLC資料區塊的偶數組字元線資料,由第一編碼引擎所產生之所有第一部分校驗碼係儲存於TLC資料區塊1052的字元線WL126之最後一張資料頁之中間有效位CSB,由第二編碼引擎所產生之所有第二部分校驗碼係儲存於TLC資料區塊1052的字元線WL126之最後一張資料頁之最高有效位MSB,由第三編碼引擎所產生之所有第三部分校驗碼係儲存於TLC資料區塊1052的字元線WL127之最後一張資料頁之最低有效位LSB。 The corresponding check code of the word line data of the third group, as indicated by 605C, is written and stored in the last data page (including the least significant bit LSB) of word lines WL126 and 127 of the TLC data block 1052 , the middle significant bit CSB and the most significant bit MSB), wherein for the odd group word line data in the SLC data block in the third group, all the third part check codes generated by the third encoding engine are stored in The least significant bit LSB of the last data page of word line WL126 of TLC data block 1052, all the first part of the check code generated by the first encoding engine are stored in word line WL127 of TLC data block 1052 The middle significant bit CSB of the last data page, all the second part check codes generated by the second encoding engine are stored in the most significant bit MSB of the last data page of the word line WL127 of the TLC data block 1052 , and for the even group word line data in the SLC data block in the third group, all the first partial check codes generated by the first encoding engine are stored in the last word line WL126 of the TLC data block 1052 The middle significant bit CSB of a data page, all the second part check codes generated by the second encoding engine are stored in the most significant bit MSB of the last data page of the word line WL126 of the TLC data block 1052, All third-part check codes generated by the third encoding engine are stored in the LSB of the last data page of word line WL127 of TLC data block 1052 .
因此,當快閃記憶體模組105透過內部複製操作從該些SLC資料區塊1051A~1051C搬移寫入資料至TLC資料區塊1052時,如果檢測到兩字元線短路而造成例如TLC資料區塊1052之字元線WL0、WL1的兩資料頁(如框線610所標示)
發生錯誤,快閃記憶體模組105可利用儲存於TLC資料區塊1052之字元線WL42之最後一張資料頁之中間有效位CSB的第一部分校驗碼以及字元線WL0之其他資料頁的最低有效位LSB的資料,更正610所標記之字元線WL0之資料頁的最低有效位LSB的資料,利用儲存於TLC資料區塊1052之字元線WL42之最後一張資料頁之最高有效位MSB的第二部分校驗碼以及字元線WL0之其他資料頁的中間有效位CSB的資料,來更正610所標記之字元線WL0之資料頁的中間有效位CSB的資料,以及利用儲存於TLC資料區塊1052之字元線WL40之最後一張資料頁之最高有效位MSB的第三部分校驗碼以及字元線WL0之其他資料頁的最高有效位MSB的資料,來更正610所標記之字元線WL0之資料頁的最高有效位MSB的資料。相同地,快閃記憶體模組105可利用儲存於TLC資料區塊1052之字元線WL41之最後一張資料頁之最低有效位LSB的第一部分校驗碼以及字元線WL1之其他資料頁的最低有效位LSB的資料,來更正610所標記之字元線WL1之資料頁的最低有效位LSB的資料,利用儲存於TLC資料區塊1052之字元線WL41之最後一張資料頁之中間有效位CSB的第二部分校驗碼以及字元線WL1之其他資料頁的中間有效位CSB的資料,來更正610所標記之字元線WL1之資料頁的中間有效位CSB的資料,以及利用儲存於TLC資料區塊1052之字元線WL41之最後一張資料頁之最高有效位MSB的第三部分校驗碼以及字元線WL1之其他資料頁的最高有效位MSB的資料,來更正610所標記之字元線WL1之資料頁的最高有效位MSB的資料。
Therefore, when the
相似地,如果兩字元線短路而造成之錯誤是發生在超級區塊之任兩連續字元線的之連續資料頁(例如如615、620所標示的錯誤位置),快閃記憶體模組105均可利用每一群組中一SLC資料區塊之最後6條字元線之最後一資料頁所儲存之相對應的校驗碼來更正錯誤。此外,如果是檢測到一字元線斷路或寫入失敗而造成TLC資料區塊1052之任一字元線的任一資料頁發生錯誤(亦即同一資料頁的三個有效位均出錯或是連續兩不同資料頁的不同有效位出錯),則快閃
記憶體模組105均可利用對應儲存之校驗碼來更正連續任意三個有效位的錯誤。
Similarly, if the error caused by the short circuit of the two word lines occurs in the consecutive data pages of any two consecutive word lines in the super block (for example, the error positions indicated by 615 and 620), the
也就是說,通過快閃記憶體控制器110寫入三個群的資料至快閃記憶體模組105內的多個SLC資料區塊1051A~1051C的校驗碼儲存位置管理設計,當快閃記憶體模組105通過內部複製將該些資料從多個SLC資料區塊1051A~1051C複製搬移寫入至TLC資料區塊時,如果檢測到一字元線斷路、兩字元線短路或寫入失敗的錯誤,均可由多個SLC資料區塊1051A~1051C儲存之校驗碼來進行更正。
That is to say, through the
再者,本案上述的實施例亦適用於MLC資料區塊或QLC資料區塊等架構,當使用於MLC資料區塊時,上述三個群資料改為分類為兩個群的資料,而對於如果是執行互斥或運算的編碼操作,則改用兩個編碼引擎來實現,其他的條件則與前述使用於TLC資料區塊時相同;因此,如果是使用於QLC資料區塊時,上述三個群資料改為分類為四個群的資料,而對於如果是執行互斥或運算的編碼操作,則改用四個編碼引擎來實現,其他的條件則與前述使用於TLC資料區塊時相同;其他資料區塊的架構則依此類推。 Furthermore, the above-mentioned embodiments of this case are also applicable to structures such as MLC data blocks or QLC data blocks. When used in MLC data blocks, the above three groups of data are changed to be classified into two groups of data. It is an encoding operation that performs a mutually exclusive OR operation, and two encoding engines are used instead. Other conditions are the same as those used for the TLC data block. Therefore, if it is used for the QLC data block, the above three The group data is changed to be classified into four groups, and if the encoding operation is to perform a mutually exclusive OR operation, four encoding engines are used instead, and other conditions are the same as those used for the TLC data block; Other data blocks are structured in the same way.
以資料儲存的成本(overhead)來看,如果是採用兩個通道寫入兩個記憶體晶片,且每一記憶體晶片具有折疊平面設計使可同時寫入兩個區塊,則以一個SLC資料區塊的資料寫入而言,128條字元線共有8*128個資料頁,而僅需要使用到6個資料頁來儲存對應的校驗碼,成本的百分比不到1%(6/(128*8)),亦即對於SLC資料區塊的寫入以及TLC資料區塊的寫入,只需使用低於1%的資料空間作為儲存相對應的錯誤更正校驗碼之用,資料空間的使用效率極高。而如果是採用4個通道寫入4個記憶體晶片,且每一記憶體晶片具有折疊平面設計使可同時寫入2個區塊,則以一個SLC資料區塊的資料寫入而言,128條字元線共有4*4*2*128個資料頁,而僅需要使用到6個資料頁來儲存對應的校驗碼,成本的百分比將可更低,約為0.15%(6/(128*4*4*2)),亦即對於SLC資料區塊的寫入以及TLC資料區塊的寫入,只需使用約為0.15%的資料空間作為儲存相對應的錯誤更 正校驗碼之用,資料空間的使用效率更高。 From the perspective of data storage cost (overhead), if two channels are used to write two memory chips, and each memory chip has a folded planar design so that two blocks can be written simultaneously, then one SLC data is used. For the data writing of the block, there are 8*128 data pages in 128 word lines, and only 6 data pages are needed to store the corresponding check code, and the cost percentage is less than 1% (6/( 128*8)), that is, for the writing of the SLC data block and the writing of the TLC data block, it is only necessary to use less than 1% of the data space for storing the corresponding error correction check code. of high efficiency. And if 4 channels are used to write 4 memory chips, and each memory chip has a folded plane design so that 2 blocks can be written at the same time, for the data writing of one SLC data block, 128 A character line has a total of 4*4*2*128 data pages, and only 6 data pages need to be used to store the corresponding check code, the cost percentage will be lower, about 0.15% (6/(128 *4*4*2)), that is, for the writing of the SLC data block and the writing of the TLC data block, only about 0.15% of the data space is needed to store the corresponding error correction. For positive check codes, the use of data space is more efficient.
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。 The above descriptions are only preferred embodiments of the present invention, and all equivalent changes and modifications made according to the scope of the patent application of the present invention shall fall within the scope of the present invention.
100:快閃記憶體裝置 100: Flash memory device
105:快閃記憶體模組 105: Flash memory module
110:快閃記憶體控制器 110: Flash memory controller
1051A、1051B、1051C:SLC資料區塊 1051A, 1051B, 1051C: SLC data block
1052:TLC資料區塊 1052: TLC data block
1101:錯誤更正碼編碼電路 1101: Error Correction Code Encoding Circuit
1102:校驗碼緩衝器 1102: Check code buffer
1102A、1102B:緩衝區 1102A, 1102B: Buffer
Claims (13)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662328025P | 2016-04-27 | 2016-04-27 | |
US62/328,025 | 2016-04-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202014890A TW202014890A (en) | 2020-04-16 |
TWI759673B true TWI759673B (en) | 2022-04-01 |
Family
ID=61022891
Family Applications (15)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108110612A TWI689930B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW106105508A TWI618070B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW107132887A TWI659423B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW109130011A TWI740629B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW109105951A TWI707345B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW110130076A TWI771151B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW106144650A TWI650755B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW111121269A TWI806649B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW112118732A TWI841391B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW106106328A TWI643062B (en) | 2016-04-27 | 2017-02-24 | Flash memory apparatus and storage management method for flash memory |
TW112125378A TWI845371B (en) | 2016-04-27 | 2017-02-24 | Flash memory apparatus, flash memory controller, and storage management method for flash memory |
TW109100013A TWI759673B (en) | 2016-04-27 | 2017-02-24 | Flash memory apparatus, flash memory controller, and storage management method for flash memory |
TW112106392A TWI812576B (en) | 2016-04-27 | 2017-02-24 | Flash memory apparatus, flash memory controller, and storage management method for flash memory |
TW107136718A TWI684857B (en) | 2016-04-27 | 2017-02-24 | Flash memory apparatus and storage management method for flash memory |
TW111106129A TWI797996B (en) | 2016-04-27 | 2017-02-24 | Flash memory apparatus, flash memory controller, and storage management method for flash memory |
Family Applications Before (11)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108110612A TWI689930B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW106105508A TWI618070B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW107132887A TWI659423B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW109130011A TWI740629B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW109105951A TWI707345B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW110130076A TWI771151B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW106144650A TWI650755B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW111121269A TWI806649B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW112118732A TWI841391B (en) | 2016-04-27 | 2017-02-20 | Flash memory apparatus and storage management method for flash memory |
TW106106328A TWI643062B (en) | 2016-04-27 | 2017-02-24 | Flash memory apparatus and storage management method for flash memory |
TW112125378A TWI845371B (en) | 2016-04-27 | 2017-02-24 | Flash memory apparatus, flash memory controller, and storage management method for flash memory |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112106392A TWI812576B (en) | 2016-04-27 | 2017-02-24 | Flash memory apparatus, flash memory controller, and storage management method for flash memory |
TW107136718A TWI684857B (en) | 2016-04-27 | 2017-02-24 | Flash memory apparatus and storage management method for flash memory |
TW111106129A TWI797996B (en) | 2016-04-27 | 2017-02-24 | Flash memory apparatus, flash memory controller, and storage management method for flash memory |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111710358B (en) |
TW (15) | TWI689930B (en) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI656442B (en) * | 2017-11-30 | 2019-04-11 | 慧榮科技股份有限公司 | Method for access control in a memory device, and memory device and controller thereof |
US10956049B2 (en) | 2019-06-12 | 2021-03-23 | International Business Machines Corporation | Wear-aware block mode conversion in non-volatile memory |
CN112130749B (en) * | 2019-06-25 | 2023-12-22 | 慧荣科技股份有限公司 | Data storage device and non-volatile memory control method |
US11119855B2 (en) | 2019-10-24 | 2021-09-14 | International Business Machines Corporation | Selectively storing parity data in different types of memory |
US11573737B2 (en) * | 2020-03-02 | 2023-02-07 | Silicon Motion, Inc. | Method and apparatus for performing disk management of all flash array server |
US11809748B2 (en) * | 2022-03-10 | 2023-11-07 | Silicon Motion, Inc. | Control method of flash memory controller and associated flash memory controller and electronic device |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWM369528U (en) * | 2008-08-05 | 2009-11-21 | Super Talent Electronics Inc | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US20120173920A1 (en) * | 2010-12-30 | 2012-07-05 | Seong Hun Park | Memory system and method of operating the same |
TW201535114A (en) * | 2013-12-09 | 2015-09-16 | Ibm | Recording dwell time in a non-volatile memory system |
TW201603047A (en) * | 2013-08-23 | 2016-01-16 | 慧榮科技股份有限公司 | Methods for accessing a storage unit of a flash memory and apparatuses using the same |
TW201612908A (en) * | 2014-07-03 | 2016-04-01 | Sandisk Technologies Inc | On-chip copying of data between NAND flash memory and ReRAM of a memory die |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3534585B2 (en) * | 1997-10-21 | 2004-06-07 | 株式会社日立製作所 | Data storage control method and apparatus for external storage device using a plurality of flash memories |
US6906961B2 (en) * | 2003-06-24 | 2005-06-14 | Micron Technology, Inc. | Erase block data splitting |
JP2008257773A (en) * | 2007-04-02 | 2008-10-23 | Toshiba Corp | Nonvolatile semiconductor memory device, method for controlling the same, nonvolatile semiconductor memory system, and memory card |
US8131920B2 (en) * | 2007-12-06 | 2012-03-06 | Hitachi Global Storage Technologies, Netherlands B.V. | Method and system for dynamically allocating read and write sequence randomizer |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US8898374B2 (en) * | 2010-07-21 | 2014-11-25 | Silicon Motion, Inc. | Flash memory device and method for managing flash memory device |
US8892981B2 (en) * | 2010-09-30 | 2014-11-18 | Apple Inc. | Data recovery using outer codewords stored in volatile memory |
US8949568B2 (en) * | 2011-05-24 | 2015-02-03 | Agency For Science, Technology And Research | Memory storage device, and a related zone-based block management and mapping method |
US9141533B2 (en) * | 2012-05-31 | 2015-09-22 | Silicon Motion, Inc. | Data storage device and flash memory control method for performing garbage collection |
US9417958B2 (en) * | 2012-06-06 | 2016-08-16 | Silicon Motion Inc. | Flash memory control method, controller and electronic apparatus |
US9286985B2 (en) * | 2013-02-12 | 2016-03-15 | Kabushiki Kaisha Toshiba | Semiconductor device with power mode transitioning operation |
US8656255B1 (en) * | 2013-03-15 | 2014-02-18 | Avalanche Technology, Inc. | Method for reducing effective raw bit error rate in multi-level cell NAND flash memory |
US9230677B2 (en) * | 2013-07-25 | 2016-01-05 | Aplus Flash Technology, Inc | NAND array hiarchical BL structures for multiple-WL and all-BL simultaneous erase, erase-verify, program, program-verify, and read operations |
CN108447516B (en) * | 2013-08-23 | 2020-04-24 | 慧荣科技股份有限公司 | Method for accessing memory cell in flash memory and device using the same |
CN107632904B (en) * | 2013-08-23 | 2020-12-22 | 慧荣科技股份有限公司 | Method for accessing storage unit in flash memory and device using the same |
CN104424127A (en) * | 2013-08-23 | 2015-03-18 | 慧荣科技股份有限公司 | Method for accessing storage unit in flash memory and device using the same |
US20150170747A1 (en) * | 2013-12-17 | 2015-06-18 | Skymedi Corporation | Method and system for programming a multi-bit per cell non-volatile memory |
US9262268B2 (en) * | 2013-12-20 | 2016-02-16 | Seagate Technology Llc | Method to distribute user data and error correction data over different page types by leveraging error rate variations |
US9361182B2 (en) * | 2014-05-20 | 2016-06-07 | Transcend Information, Inc. | Method for read disturbance management in non-volatile memory devices |
US20160041760A1 (en) * | 2014-08-08 | 2016-02-11 | International Business Machines Corporation | Multi-Level Cell Flash Memory Control Mechanisms |
JP6313245B2 (en) * | 2014-09-09 | 2018-04-18 | 東芝メモリ株式会社 | Semiconductor memory device |
KR102233074B1 (en) * | 2014-10-08 | 2021-03-30 | 삼성전자주식회사 | Storage device and reliability verification method thereof |
US9959059B2 (en) * | 2014-10-20 | 2018-05-01 | Sandisk Technologies Llc | Storage error management |
KR20160046391A (en) * | 2014-10-20 | 2016-04-29 | 삼성전자주식회사 | Hybrid DIMM structure and Driving Method thereof |
-
2017
- 2017-02-20 TW TW108110612A patent/TWI689930B/en active
- 2017-02-20 TW TW106105508A patent/TWI618070B/en active
- 2017-02-20 TW TW107132887A patent/TWI659423B/en active
- 2017-02-20 TW TW109130011A patent/TWI740629B/en active
- 2017-02-20 TW TW109105951A patent/TWI707345B/en active
- 2017-02-20 TW TW110130076A patent/TWI771151B/en active
- 2017-02-20 TW TW106144650A patent/TWI650755B/en active
- 2017-02-20 TW TW111121269A patent/TWI806649B/en active
- 2017-02-20 TW TW112118732A patent/TWI841391B/en active
- 2017-02-24 TW TW106106328A patent/TWI643062B/en active
- 2017-02-24 TW TW112125378A patent/TWI845371B/en active
- 2017-02-24 TW TW109100013A patent/TWI759673B/en active
- 2017-02-24 TW TW112106392A patent/TWI812576B/en active
- 2017-02-24 TW TW107136718A patent/TWI684857B/en active
- 2017-02-24 TW TW111106129A patent/TWI797996B/en active
- 2017-04-26 CN CN202010384012.4A patent/CN111710358B/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWM369528U (en) * | 2008-08-05 | 2009-11-21 | Super Talent Electronics Inc | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US20120173920A1 (en) * | 2010-12-30 | 2012-07-05 | Seong Hun Park | Memory system and method of operating the same |
TW201603047A (en) * | 2013-08-23 | 2016-01-16 | 慧榮科技股份有限公司 | Methods for accessing a storage unit of a flash memory and apparatuses using the same |
TW201535114A (en) * | 2013-12-09 | 2015-09-16 | Ibm | Recording dwell time in a non-volatile memory system |
TW201612908A (en) * | 2014-07-03 | 2016-04-01 | Sandisk Technologies Inc | On-chip copying of data between NAND flash memory and ReRAM of a memory die |
Also Published As
Publication number | Publication date |
---|---|
TW201903777A (en) | 2019-01-16 |
TWI797996B (en) | 2023-04-01 |
TWI812576B (en) | 2023-08-11 |
TW202014890A (en) | 2020-04-16 |
TW201810280A (en) | 2018-03-16 |
TWI845371B (en) | 2024-06-11 |
TWI740629B (en) | 2021-09-21 |
TW202343265A (en) | 2023-11-01 |
TWI684857B (en) | 2020-02-11 |
TWI841391B (en) | 2024-05-01 |
TWI771151B (en) | 2022-07-11 |
TW202341158A (en) | 2023-10-16 |
TWI643062B (en) | 2018-12-01 |
TW201928977A (en) | 2019-07-16 |
TW202238601A (en) | 2022-10-01 |
CN111710358B (en) | 2022-06-03 |
TWI689930B (en) | 2020-04-01 |
TW202115732A (en) | 2021-04-16 |
TW201812583A (en) | 2018-04-01 |
TWI650755B (en) | 2019-02-11 |
TWI659423B (en) | 2019-05-11 |
TW202223651A (en) | 2022-06-16 |
CN111710358A (en) | 2020-09-25 |
TWI618070B (en) | 2018-03-11 |
TWI806649B (en) | 2023-06-21 |
TW201907300A (en) | 2019-02-16 |
TW201738892A (en) | 2017-11-01 |
TWI707345B (en) | 2020-10-11 |
TW202324097A (en) | 2023-06-16 |
TW202147326A (en) | 2021-12-16 |
TW202025163A (en) | 2020-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391026B (en) | Flash memory device and flash memory management method | |
CN107403646B (en) | Flash memory device and flash memory management method | |
TWI759673B (en) | Flash memory apparatus, flash memory controller, and storage management method for flash memory | |
US20240154624A1 (en) | Flash memory apparatus and storage management method for flash memory | |
TWI855978B (en) | Flash memory apparatus and storage management method for flash memory | |
TW202433301A (en) | Flash memory apparatus, flash memory controller, and storage management method for flash memory | |
TW202431265A (en) | Flash memory apparatus and storage management method for flash memory |