[go: up one dir, main page]

TWI659423B - Flash memory apparatus and storage management method for flash memory - Google Patents

Flash memory apparatus and storage management method for flash memory Download PDF

Info

Publication number
TWI659423B
TWI659423B TW107132887A TW107132887A TWI659423B TW I659423 B TWI659423 B TW I659423B TW 107132887 A TW107132887 A TW 107132887A TW 107132887 A TW107132887 A TW 107132887A TW I659423 B TWI659423 B TW I659423B
Authority
TW
Taiwan
Prior art keywords
data
flash memory
character
data block
block
Prior art date
Application number
TW107132887A
Other languages
Chinese (zh)
Other versions
TW201903777A (en
Inventor
楊宗杰
許鴻榮
Original Assignee
慧榮科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 慧榮科技股份有限公司 filed Critical 慧榮科技股份有限公司
Publication of TW201903777A publication Critical patent/TW201903777A/en
Application granted granted Critical
Publication of TWI659423B publication Critical patent/TWI659423B/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1072Adding 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel 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

一種快閃記憶體儲存管理方法包括:提供一快閃記憶體模組,該快閃記憶體模組包括複數個單層單元資料區塊以及至少一多層單元資料區塊;將一筆欲寫入之資料分類為複數群資料;分別執行單層單元資料寫入以及執行一類似容錯式磁碟陣列的錯誤更正編碼操作產生一對應的校驗碼,以將複數群資料以及該對應的校驗碼寫入至該些單層單元資料區塊;當完成該些單層單元資料區塊的寫入時,執行內部複製,將該些單層單元資料區塊所儲存之該複數群資料以及該對應校驗碼,依該些單層單元資料區塊的儲存順序,依序寫入至該至少一多層單元資料區塊。A flash memory storage management method includes: providing a flash memory module, the flash memory module comprising a plurality of single-level unit data blocks and at least one multi-level unit data block; The data is classified into plural group data; performing single-level unit data writing and performing an error correction encoding operation similar to a fault-tolerant disk array to generate a corresponding check code, so as to convert the plural group data and the corresponding check code. Write to the single-level unit data blocks; when the writing of the single-level unit data blocks is completed, perform internal copying, the plural group data stored in the single-level unit data blocks, and the correspondence The check code is sequentially written into the at least one multi-level unit data block according to the storage order of the single-level unit data blocks.

Description

快閃記憶體裝置及快閃記憶體儲存管理方法Flash memory device and flash memory storage management method

本發明係關於一種快閃記憶體裝置,尤指一種執行一類似容錯式磁碟陣列的錯誤更正編碼操作之快閃記憶體裝置與儲存管理方法。The present invention relates to a flash memory device, and more particularly, to a flash memory device and a storage management method that perform an error correction encoding 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 single piece of data to a single-level unit data block or a multi-level unit data block, the traditional mechanism is used, for example, in a data block. On the last page of the character line, check codes corresponding to other data pages of the character line are placed, so that when a write failure occurs, the character line is open, and the character line is shorted, the corresponding check code can be used to perform Some degree of error correction, however, such a data storage rate is too low. For example, if a character line includes 8 data pages, only 7 data pages are used to store data, and another data page is used to store school data. Check the code. In this way, 1/8 of a data block will be used to store the check code, not to store the data. From the perspective of the user, it cannot be accepted.

因此,本發明的目的之一在於提供一種快閃記憶體裝置及對應的快閃記憶體儲存管理方法,採用一類似容錯式磁碟陣列的錯誤更正編碼操作,降低錯誤發生率,降低傳統機制所需要使用的校驗碼數目,同時適當地將所需的校驗碼儲存於對應的資料頁位置,令發生寫入失敗、字元線斷路及字元線短路時仍可利用所需的校驗碼來進行一定程度的錯誤更正,解決了上述的問題。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 encoding operation similar to a fault-tolerant disk array to reduce the occurrence rate of errors and the conventional mechanism. The number of check codes that need to be used, and the required check codes should be appropriately stored in the corresponding data page location, so that the required check can still be used when a write failure occurs, the character line is open, and the character line is shorted. Code to correct errors to some extent, which solves the above problem.

根據本發明一實施例,其揭露了一種快閃記憶體裝置。快閃記憶體裝置包含有一快閃記憶體模組與快閃記憶體控制器,快閃記憶體模組包括複數個單層單元資料區塊以及至少一多層單元資料區塊,快閃記憶體控制器具有複數條通道分別連接至快閃記憶體模組,快閃記憶體控制器係將一筆欲寫入之資料分類為複數群的資料,快閃記憶體控制器分別執行單層單元資料寫入以及執行一類似容錯式磁碟陣列的錯誤更正編碼操作產生一對應的校驗碼,以將複數群的資料以及對應的校驗碼寫入至複數個單層單元資料區塊;當完成複數個單層單元資料區塊的寫入時,快閃記憶體模組係執行內部複製,將複數個單層單元資料區塊所儲存之複數群的資料以及對應的校驗碼,依資料的先後順序,依序搬移寫入至至少一多層單元資料區塊。According to an embodiment of the 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-level unit data blocks and at least one multi-level unit data block. The flash memory The controller has multiple 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 performs single-level unit data writing. Entering and performing an error correction encoding operation similar to a fault-tolerant disk array generates a corresponding check code to write the data of the complex group and the corresponding check code to a plurality of single-level unit data blocks; when the complex number is completed When writing single-level unit data blocks, the flash memory module performs internal copying to copy the data of the plural groups stored in the multiple single-level unit data blocks and the corresponding check code, according to the sequence of the data. Sequentially move and write to at least one multi-level cell data block.

根據本發明一實施例,另揭露了一種快閃記憶體儲存管理方法。該方法包含有:提供一快閃記憶體模組,該快閃記憶體模組包括複數個單層單元資料區塊以及至少一多層單元資料區塊;將一筆欲寫入之資料分類為複數群的資料;分別執行單層單元資料寫入以及執行一類似容錯式磁碟陣列的錯誤更正編碼操作產生一對應的校驗碼,以將複數群的資料以及該對應的校驗碼寫入至該複數個單層單元資料區塊;當完成該複數個單層單元資料區塊的寫入時,執行一內部複製,將該複數個單層單元資料區塊所儲存之該複數群的資料以及該對應的校驗碼,依資料的先後順序,依序搬移寫入至該至少一多層單元資料區塊。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-level unit data blocks and at least one multi-level unit data block; classifying a piece of data to be written into a plurality of numbers Group data; performing single-level unit data writing and performing an error correction encoding operation similar to a fault-tolerant disk array to generate a corresponding check code to write the data of the complex group and the corresponding check code to 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-level unit data block according to the sequence of the data.

請參照第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 flash memory device 100 according to an embodiment of the present invention. The flash memory device 100 includes a flash memory module 105 and a flash memory controller 110. The flash memory module 105 is a flash memory module having a two-dimensional planar structure; however, this is not the case. limit. The flash memory module 105 includes multiple flash memory chips (not shown in FIG. 1). Each flash memory chip includes multiple single-level cell (SLC) data blocks. block) and multiple-lelve-cell blocks, each unit of a single-level unit data block can store 2 bits of data, and each unit of a multi-level unit data block can store 2 N For bit data, N is greater than or equal to 2 and is an integer. For example, a multi-level cell data block includes a MLC block (multi-level cell block), which can store 2 2- bit data, and a TLC block (triple-level). Cell block) can store 2 3 yuan of data, QLC block (quad-level cell block) can store 2 4 bits of data, and so on.

快閃記憶體控制器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 flash memory controller 110 can be connected to the flash memory module 105 through a plurality of channels, so that different channels can be used to write data to different flash memory chips at the same time, increasing the writing efficiency. The controller 110 includes an error correction code encoding circuit 1101 and a parity check code buffer 1102. The error correction code encoding circuit 1101 is configured to encode data with an error correction code, for example, in the embodiment of the present case. Including Reed-Solomon codes (Reed-solomon codes) encoding operation and / or exclusive-OR (XOR) operation encoding operation to generate the corresponding check code, check code buffer 1102 is used The corresponding check code generated is temporarily stored, and the flash memory controller 110 uses a data management mechanism similar to a Redundant Array of Independent Disks (RAID) to write a piece of data to different Flash memory chip to reduce the error rate, and when writing data to the single-level unit data block, the check code of different encoding operations is also considered in the storage location of the single-level unit data block. It is located and stored in the TLC data block, so that when writing data to the single-level unit data block, data errors can be corrected and subsequent flash memory modules 105 are internally copied from the single-level unit area. It is also possible to correct data errors when copying and moving data to TLC data blocks.

實作上,為求資料寫入的效率及降低出錯率,快閃記憶體模組105包括多個通道(本案之實施例為2個通道,但非限定),當一通道執行某一資料頁(page)的寫入時,可採用另一通道來執行另一資料頁的寫入,而不需要等候該通道,每一通道在快閃記憶體控制器110中有各自的序列傳輸器(sequencer)且均包含了多個快閃記憶體晶片(本案之實施例為2個晶片,但非限定),使得一個通道可同時對多個快閃記憶體晶片執行不同資料頁的寫入,而不需要等候其中一個晶片,此外,每一快閃記憶體晶片可具有一折疊設計(folded)而具有不同的兩個平面(plane),令一個快閃記憶體晶片在資料寫入時可同時利用不同兩平面上的兩個資料區塊來執行不同資料頁的寫入,而不需要等候其中某一個資料區塊。因此,快閃記憶體模組105的一個超級資料區塊(super block)係由多個通道的多個快閃記憶體晶片的多個資料頁所組成。上述的快閃記憶體控制器110即係將資料以超級資料區塊為單位來進行寫入,先將資料寫入至快閃記憶體模組105內的單層單元資料區塊,由單層單元資料區塊緩衝,後續再從該些單層單元資料區塊將資料複製搬移至TLC資料區塊內。另外,應注意的是,其他實施例中,每一快閃記憶體晶片可不具有折疊設計,亦即,一個快閃記憶體晶片在資料寫入時係利用一資料區塊來執行一資料頁的寫入,其他資料頁的寫入需要等候時間。In practice, in order to improve the efficiency of data writing and reduce the error rate, the flash memory module 105 includes multiple channels (the embodiment in this case is two channels, but not limited). When one channel executes a certain data page (Page) writing, another channel can be used to perform writing of another data page without waiting for the channel. Each channel has its own sequencer in the flash memory controller 110. ) And each contains multiple flash memory chips (the embodiment in this case is two chips, but not limited), so that one channel can simultaneously write different data pages to multiple flash memory chips without Need to wait for one of the chips. In addition, each flash memory chip can have a folded design with two different planes, so that a flash memory chip can use different data at the same time when writing data. Two data blocks on two planes are used to perform writing of different data pages without waiting for one of the data blocks. Therefore, a super block of the flash memory module 105 is composed of multiple data pages of multiple flash memory chips of multiple channels. The above-mentioned flash memory controller 110 writes data in units of super data blocks, and first writes data to a single-level unit data block in the flash memory module 105. The unit data block is buffered, and then the data is copied and moved from the single-level unit data blocks to the TLC data blocks. In addition, it should be noted that in other embodiments, each flash memory chip may not have a folding design, that is, a flash memory chip uses a data block to execute a data page when writing data. Write, other data pages need to wait for writing.

就資料寫入的流程而言,一筆資料會先被快閃記憶體控制器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 will be written into multiple single-level unit data blocks 1051A ~ 1051C by the flash memory controller 110, and then moved from these single-level unit data blocks 1051A ~ 1051C. To the multi-level unit data block 1052, for example, in this embodiment, the TLC unit is used as an example of the multi-level data block structure. The TLC unit can store 23 bits of information, that is, three single-level unit data Block (hereinafter referred to as the SLC data block) data of 1051A ~ 1051C will be written to a TLC data block 1052. Based on this, considering the need to jointly write the SLC data blocks 1051A ~ 1051C and the TLC data area Block 1052 is written for error correction protection. The flash memory controller 110 classifies a piece of data into three groups of data. It should be noted that if it is a multi-layer data block based on the MLC unit for example, due to the MLC unit can store 22 bits of information, the flash memory controller 110 of the series will be classified as two groups of data, and if the department to QLC unit data block is a multi-layer architecture For example, because the QLC unit can be stored 2 4 bits of information, so the flash memory controller 110 classifies the data into four groups of data; and so on. That is, when the unit of the multi-level cell data block 1052 can store 2 N bits of information, N is greater than or equal to 2 and is an integer, and the number of single-level cell data blocks will be designed as N SLC data blocks. The flash memory controller 110 classifies the data to be written into data of N groups to write to N SLC data blocks respectively.

在本實施例中,當快閃記憶體控制器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 flash memory controller 110 classifies the data into three groups of data, it will then execute the first data write (SLC program) to write the data of the first group into the above. The first SLC data block 1051A and the corresponding correction code generated by the error correction code encoding circuit 1101 are written into the first SLC data block 1051A. This completes the writing operation of the SLC data block, and thereafter The flash memory controller 110 then executes a second data write (SLC program) to write the second group of data into the second SLC data block 1051B and generates a corresponding check using the error correction code encoding circuit 1101. The code is written to the second SLC data block 1051B, so that the second write operation of the SLC data block is completed, and the flash memory controller 110 then performs the third data write (SLC program) write the third group of data into the third SLC data block 1051C and generate a corresponding check code using the error correction code encoding circuit 1101 and write it into the third SLC data block 1051C. Third SLC Feed block write operation.

當快閃記憶體控制器110執行某一次的資料寫入(SLC program)將某一群的資料寫入某一個SLC資料區塊時,或該次資料寫入之後,快閃記憶體控制器110會檢測是否出錯,如果資料有錯,例如發生某一SLC資料區塊寫入的寫入失敗(program fail)、一字元線斷路(one word line open)及/或兩字元線短路(two word line short)的情況,快閃記憶體控制器110會利用錯誤更正碼編碼電路1101於該次資料寫入時所產生之對應校驗碼來更正上述的錯誤。When the flash memory controller 110 executes a certain data write (SLC program) to write a certain group of data to a certain SLC data block, or after the data write, the flash memory controller 110 will Detect if there is an error, if there is an error in the data, such as a write fail (program fail), one word line open, and / or two word short (two word line) line short), the flash memory controller 110 will use the corresponding check code generated by the error correction code encoding circuit 1101 when the data is written to correct the above errors.

當前述三個群的資料均寫入至三個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 aforementioned three groups are written to three SLC data blocks, when the data writing of 1051A ~ 1051C or a certain SLC data block is completed, the flash memory module 105 performs internal copying. Copy and move three groups of data or a group of data in some SLC data blocks 1051A ~ 1051C or one SLC data block and perform data writing (TLC program) to a TLC data area in the order of the data of the three groups Block 1052 (that is, the aforementioned super data block), the TLC data block 1052 is composed of data pages of word lines of different flash memory chips of different channels, for example, one character of the TLC data block 1052 A data page of the line includes an upper page, a middle page, and a lower page. The internal copy of the flash memory module 105 is, for example, an SLC data area in order. Multiple data pages on the Nth character line of the block are written to multiple upper data pages on one character line of the TLC data block 1052, and multiple data pages on the N + 1 character line of the SLC data block Data pages written to the same character line of TLC data block 1052 Multiple intermediate data pages of the SLC data block, and multiple data pages on the N + 2 character line of the SLC data block to multiple lower data pages on the same character line of the TLC data block 1052. After the data of all three groups are written to the TLC data block 1052, the writing operation of the super data block is completed.

應注意的是,為了令內部複製易於實現、符合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, comply with the randomizer seed rule requirements of TLC data block 1052, and consider the error correction coding ability to reduce the error rate, the internal copy operation is only based on the data The data is moved to the upper, middle, and lower data page positions of the multiple character lines in the TLC data block 1052. The flash memory controller 110 writes data of different groups and correspondingly generates a check. When the code reaches these SLC data blocks 1051A ~ 1051C, according to the random number seed rule requirements of the TLC data block and the write storage location of the check code that considers the error correction code, the error corrects the error of the code encoding circuit 1101. The correction coding capability can correct errors caused by a write failure of the SLC data block, a broken one-character line, and / or a short-circuited two-character line when performing a write operation of the SLC data block, and can execute the super Correct the errors caused by the write failure of TLC data block 1052, the broken one-word line, and / or the short-circuited two-word line during the writing operation of the data block.

此外,如果快閃記憶體模組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 flash memory module 105 performs memory garbage collection, the flash memory controller 110 reads the data from the SLC data blocks 1051A ~ 1051C through external reading and re-reads the data. Perform error correction coding to perform data writing (SLC program), and / or read data from TLC data block 1052 and perform error correction coding again to perform data writing (SLC program). In addition, when writing data (SLC program) to an SLC data block and a sudden shutdown occurs, the flash memory controller 110 reads back data from the SLC data block and re-encodes and corrects the error correction. (SLC program) to another new SLC data block. In addition, if a TLC program is written to the TLC data block 1052 and a sudden shutdown occurs, the flash memory module 105 discards the data currently stored in the TLC data block 1052 and removes the data from the SLC. In blocks 1051A to 1051C, TLC data is written into the corresponding TLC data block 1052 again by internal copying.

請參照第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 flash memory controller 110 shown in FIG. 1 of the first embodiment of the present invention to execute an SLC data write (SLC program) to write a group of data to the flash memory. A schematic diagram of performing an SLC data block write operation on one SLC data block in the module 105. The error correction code encoding circuit 1101 of the flash memory controller 110 performs a Reed Solomon (RS) encoding operation on the data using a similar fault-tolerant disk array to generate a corresponding check code. The checksum buffer 1102 is used to temporarily store the corresponding checksum generated.

快閃記憶體模組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 flash memory module 105 includes two channels, and includes two flash memory chips and two sets of blocks of each chip have two different planes. For writing efficiency, the flash memory controller 110 It writes data to two blocks of two flash memory chips in the flash memory module 105 through two channels. As shown in the embodiment in FIG. 2, an SLC data block includes, for example, 128 character lines (represented by WL0 to WL127, respectively). The SLC data block may be an SLC data block or a group of The composition of the SLC sub-data block varies depending on the definition of the SLC data block. For the convenience of description, the embodiment includes 128 character lines as the size of an SLC data block, where each character line includes For example, there are 8 data pages. Taking the first word line WL0 of the SLC data block as an example, the flash memory controller 110 writes the data pages P1 and P2 to the channel CH0 and the folding planes PLN0 and PLN1. Flash memory chip CE0, then the data page P3, P4 is written to another flash memory chip CE1 by the same channel CH0 and the folding planes PLN0, PLN1, and then by another channel CH1 and the folding planes PLN0, PLN1 The data pages P5 and P6 are written to the flash memory chip CE0, and then the data pages P7 and P8 are written to the flash memory chip CE1 through the channel CH1 and the folding planes PLN0 and PLN1. The rest can be deduced by analogy.

快閃記憶體控制器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 flash memory controller 110 is to classify multiple M word lines WL0 to WL127 of a SLC data block in order into a group of each M word lines, where M is a positive integer greater than or equal to 2, for example, M Is 3, for example, the character lines WL0 ~ WL2 are the first group, the character lines WL3 ~ WL5 are the second group, the character lines WL6 ~ WL8 are the third group, and the character lines WL9 ~ WL11 are the fourth group ... The element lines WL120 ~ WL122 are the penultimate group, the character lines WL123 ~ WL125 are the penultimate group, and the last group of character lines are WL126, WL127, among which the characters of the first, third, fifth groups, etc. The lines are odd array character lines, and the second, fourth, sixth group, etc. character lines are even array character lines. The flash memory controller 110 writes data of one set of character lines at a time. (Including the data of the three character lines), using the error correction code encoding circuit 1101 to perform error correction encoding on the data of the group of character lines, and output the corresponding parity code of the corresponding part to The check code buffer 1102 stores a part of the check code temporarily.

校驗碼緩衝器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。The check code buffer 1102 stores the check code corresponding to the odd array character line data in a first buffer 1102A, and stores the check code corresponding to the odd array character line data in the temporary storage part of the check code. Part of the check code is stored in a second buffer 1102B. For example, when writing the data pages P1 to P24 of the character lines WL0 to WL2, the error correction code encoding circuit 1101 performs an error on the data pages P1 to P24. Correct the code, and output the corresponding check code to the check code buffer 1102, and temporarily store it in the first buffer 1102A; then write the data pages P1 to P24 of the word lines WL3 to WL5, The error correction code encoding circuit 1101 performs error correction encoding on the data pages P1 to P24, and outputs the corresponding check code generated to the check code buffer 1102, which is temporarily stored in the second buffer 1102B; When the data pages P25 to P48 of the character lines WL6 to WL8 are written, the error correction code encoding circuit 1101 performs error correction encoding on the data pages P25 to P48, and outputs the corresponding part of the check code to the check. The code buffer 1102 is temporarily stored in the first buffer 1102A; The data page writing and encoding operations are performed by analogy, etc .; when the data page of the character line WL120 ~ WL122 is written, the error correction code encoding circuit 1101 performs encoding on the data page of the character line WL120 ~ WL122, and The generated corresponding check code is output to the check code buffer 1102 and temporarily stored in the first buffer 1102A.

接著,快閃記憶體控制器110於寫入偶數組字元線的最後一組字元線(WL123~WL125)時,除了執行資料寫入(SLC program)與對應的錯誤更正編碼外,亦將第二緩衝區1102B所暫存之所有偶數組字元線之資料的部分校驗碼讀回,並將偶數組字元線之資料所對應之所有校驗碼寫入至最後一組偶數組字元線之最後一條字元線WL125的資料頁,例如最後3個資料頁(標記為205),以儲存偶數組字元線之資料所對應的里德-所羅門校驗碼。Next, when the flash memory controller 110 writes the last set of character lines (WL123 ~ WL125) of the even array character lines, in addition to executing the data writing (SLC program) and corresponding error correction coding, it also Read back some check codes of the data of all the even array character lines temporarily stored in the second buffer 1102B, and write all the check codes corresponding to the data of the even array character lines to the last even array of characters. The data page of the last character line WL125 of the meta line, such as the last 3 data pages (labeled 205), stores the Reed-Solomon check code corresponding to the data of the even array character line.

另外,對於寫入最後一組奇數組字元線的最後一條字元線WL127時,快閃記憶體控制器110除了執行資料寫入(SLC program)與對應的錯誤更正編碼外,會將第一緩衝區1102A所暫存之所有奇數組字元線之資料的部分校驗碼讀回,並將奇數組字元線之資料所對應之所有校驗碼寫入至最後一組奇數組字元線之最後一條字元線WL127的資料頁,例如最後3個資料頁(標記為210),以儲存奇數組字元線之資料所對應的里德-所羅門校驗碼。如此便完成一次SLC資料區塊的寫入。因此,就里德-所羅門編碼操作而言,奇數組字元線之資料所對應的校驗碼係儲存於最後一組奇數組字元線之最後一條字元線WL127的最後複數張資料頁的位置,而偶數組字元線之資料所對應的校驗碼係儲存於最後一組偶數組字元線之最後一條字元線WL125的最後複數張資料頁的位置。In addition, when writing the last character line WL127 of the last set of odd array character lines, the flash memory controller 110 will execute the SLC program and the corresponding error correction encoding, and the first Partial check codes of all the data of the odd array character lines temporarily stored in the buffer 1102A are read back, and all the check codes corresponding to the data of the odd array character lines are written to the last set of odd array character lines. The data page of the last character line WL127, such as the last 3 data pages (marked 210), stores the Reed-Solomon check code corresponding to the data of the odd array character line. This completes the writing of the SLC data block. Therefore, for the Reed-Solomon encoding operation, the check code corresponding to the data of the odd array character lines is stored in the last plurality of data pages of the last character line WL127 of the last set of odd array character lines. Position, and the check code corresponding to the data of the even array character line is stored in the position of the last plural data pages of the last character line WL125 of the last even array character line.

此外,錯誤更正碼編碼電路1101在第2圖所示之實施例所執行的是里德-所羅門編碼操作,可更正發生在SLC資料區塊之任意三個位置之資料頁的出錯,舉例來說,錯誤更正碼編碼電路1101對於字元線WL0~WL2的三條字元線的資料執行錯誤更正編碼並產生相對應的部分校驗碼,如果同一通道的相同晶片的同一摺疊平面的三個資料頁出錯,例如資料頁P1、P9、P17出錯,錯誤更正碼編碼電路1101可利用所產生之相對應的部分校驗碼,將該三個資料頁的錯誤更正。In addition, the error correction code encoding circuit 1101 in the embodiment shown in FIG. 2 performs a Reed-Solomon encoding operation, which can correct an error of a data page occurring at any three positions of the SLC data block. For example, The error correction code encoding circuit 1101 performs error correction encoding on the data of the three character lines of the character lines WL0 to WL2 and generates a corresponding partial check code. If three data pages of the same folding plane of the same chip of the same channel are used An error occurs, for example, the data pages P1, P9, and P17 are erroneous. The error correction code encoding circuit 1101 may use the corresponding partial check code generated to correct the errors of the three data pages.

如果於執行該次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 occurrence probability, for example, a data page P9 write failure is detected, the error correction code encoding circuit 1101 may Use the corresponding part of the check code to correct the error on the data page P9.

如果於執行該次SLC資料區塊的寫入時檢測到發生一字元線斷路(one word line open)而造成例如資料頁P9錯誤,錯誤更正碼編碼電路1101可利用所產生之相對應的部分校驗碼,將資料頁P9的錯誤更正。If it is detected that one word line open occurs during the writing of the SLC data block, such as a data page P9 error, the error correction code encoding circuit 1101 can use the corresponding part generated Check code to correct the error on the data page P9.

如果於執行該次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 both wrong, the error correction code encoding circuit 1101 can use the generated phase The corresponding part of the check code corrects the errors on the data pages P9 and P17. If a short circuit between two character lines causes, for example, the data page P17 of the character line WL2 and the data page P1 of the character line WL3 to fail, the error correction code encoding circuit 1101 may use a partial check code of a set of character lines WL0 to WL2 And another part of the check code of the character lines WL3 to WL5 corrects the error of the data page P17 of the character line WL2 and the data page P1 of the character line WL3, respectively. If a short circuit between two character lines causes, for example, an error in the data pages P1 and P2 of the character line WL0, the error correction code encoding circuit 1101 may use a partial check code of a set of character lines WL0 to WL2 to respectively separate the character lines WL0. Correction of errors on the data pages P1, P2.

因此,無論是在執行SLC資料區塊寫入時發生寫入失敗、一字元線斷路或兩字元線短路所造成的資料頁錯誤,錯誤更正碼編碼電路1101均可對應地更正該些錯誤的資料頁。Therefore, regardless of a data page error caused by a write failure, a one-character line break, or a two-character line short while performing SLC data block write, the error correction code encoding circuit 1101 can correct the errors accordingly. 'S profile page.

請參照第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 writing data into a TLC data block 1052 by an internal copy of one SLC data block in the flash memory module 105. As shown in Figure 3, a group of three character line data in an SLC data block is written to a character line in the TLC data block 1052, correspondingly forming the least significant bit of the data page of one of the character lines. The data of the LSB, the middle significant bit CSB, and the most significant MSB, for example, the character line data WL0 ~ WL2 of the SLC data block are written to the TLC data block 1052, which is the lowest of the character line WL0 of the TLC data block 1052. Data of significant bit LSB, intermediate significant bit CSB, and most significant bit MSB; the character line data WL3 ~ WL5 of the SLC data block are written to the TLC data block 1052 as the word line WL1 of the TLC data block 1052 The data of the least significant bit LSB, the middle significant bit CSB, and the most significant bit MSB; the character line data WL6 ~ WL8 of the SLC data block is written to the TLC data block 1052 as the character line WL2 of the TLC data block 1052 The data of the least significant bit LSB, the middle significant bit CSB, and the most significant bit MSB; that is, the internal copy of the flash memory module 105 moves and writes the data of the SLC data block in the order of the character line Fill in the character line of the TLC data block.

請參照第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 shows the flash memory controller 110 shown in FIG. 1 of the first embodiment of the present invention writing data of three groups to a plurality of SLCs in the flash memory module 105. Schematic diagram of data block 1051A ~ 1051C and transferring data into TLC data block by internal copy to form a super data block. Due to the error correction code encoding circuit 1101, each time the SLC data block is written, the data is classified into two groups of odd array character lines and even array character lines, and the corresponding generated check code is stored in the odd The last 3 data pages of the last character line of the array character line and the last 3 data pages of the last character line of the even array character line. Therefore, when writing the TLC data block, As shown in Figure 4, the corresponding check code of the odd array character line of the data of the first group is stored in the last three data pages (labeled 401A) of the middle significant bit CSB of the character line WL42 of the superblock. ), And the corresponding check code of the even array character line of the data of the first group is stored in the last three data pages (labeled 401B) of the most significant MSB of the character line WL41 of the super block; The corresponding check code of the odd array character line of the data of the second group is stored in the last three data pages (labeled 402A) of the least significant bit LSB of the character line WL85 of the superblock, and the second The corresponding check code of the even array character line of the data of each group is stored in the super block The last three data pages of the most significant MSB of the zigzag line WL84 (labeled 402B); the corresponding check codes for the odd array word lines of the third group of data are stored in the characters of the superblock The last three data pages (labeled 403A) of the MSB of the most significant bit of line WL127, and the corresponding check code of the even array character line of the third group of data is stored in the character line WL127 of the superblock. The last three data pages of the LSB of the least significant bit (labeled 403B).

如果檢測到兩字元線短路而造成例如該超級區塊之字元線WL0、WL1的兩資料頁(如框線404所標示)發生錯誤,快閃記憶體模組105可利用字元線WL42之中間有效位CSB的最後三張資料頁上儲存之校驗碼401A來更正字元線WL0之資料頁的錯誤,以及利用字元線WL41之最高有效位MSB之最後三張資料頁上儲存之校驗碼401B來更正字元線WL1之資料頁的錯誤。If a short circuit between the two character lines is detected, for example, an error occurs on the two data pages (as indicated by the frame line 404) of the character lines WL0, WL1 of the super block, the flash memory module 105 can use the character line WL42 The check code 401A stored on the last three data pages of the middle significant bit CSB is used to correct the error of the data page of the character line WL0, and the data stored on the last three data pages of the MSB of the character line WL41 are used. The check code 401B corrects the data page error of the character line WL1.

相同地,如果檢測到兩字元線短路而造成例如該超級區塊之字元線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 between two character lines is detected and an error occurs in the two data pages (for example, indicated by a frame line 405) of the character lines WL43 and WL44 of the super block, the flash memory module 105 can use the word The check code 402A stored on the least significant bit LSB of the last three data pages of the meta line WL85 corrects the least significant bit LSB, the middle significant bit CSB error, and the character of one of the data pages of the word line WL43 indicated by 405. The error of the MSB of the data page of line WL44 is incorrect, and the check code 402B stored on the middle significant bit CSB of the last three data pages of character line WL84 is used to correct the character line WL43 marked by 405. The error of the most significant bit MSB of the data page and the error of the least significant bit LSB and the middle significant bit CSB of the data page of word line WL44.

相同地,如果是檢測到兩字元線短路而造成例如該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 short circuit between two character lines is detected and an error occurs in the two data pages (for example, indicated by a frame line 406) of the character lines WL125 and WL126 of the TLC data block, the flash memory module 105 may Use the check code 403A stored on the most significant MSB of the last three data pages of the character line WL127 to correct the middle significant CSB, most significant MSB error, and word of the data line WL125 marked one data page. The error of the MSB of the most significant bit of the data page of the line WL126 and the check code 403B stored on the least significant bit LSB of the last three data pages of the character line WL127 are used to correct the character line WL125 of the 406 mark. The error of the least significant bit LSB of the data page, and the error of the middle significant bit CSB and the most significant bit MSB of the data line WL126 of a data page indicated by 406.

如果是檢測到一字元線斷路或寫入失敗而造成超級區塊之任一字元線的任一資料頁發生錯誤(亦即連續任意三張子資料頁出錯),則快閃記憶體模組105均可利用對應儲存之校驗碼來更正連續任意三張子資料頁的錯誤。If an error occurs in any data page of any character line in the super block (ie, any three consecutive data pages in error), a flash memory module is detected if a character line is disconnected or a write failure occurs 105 can use the corresponding stored check code to correct the error of any three consecutive sub-data pages.

也就是說,通過快閃記憶體控制器110寫入三個群組之資料至快閃記憶體模組105內的多個SLC資料區塊1051A~1051C的校驗碼之儲存位置管理設計,當快閃記憶體模組105通過內部複製將該些資料從多個SLC資料區塊1051A~1051C複製寫入至TLC資料區塊而形成一個超級資料區塊時,如果檢測到一字元線斷路、兩字元線短路或寫入失敗的錯誤,均可由多個SLC資料區塊1051A~1051C所儲存之校驗碼來進行更正。In other words, the flash memory controller 110 writes three groups of data to multiple SLC data blocks 1051A ~ 1051C in the flash memory module 105. The storage location management design, When the flash memory module 105 copies the data from multiple SLC data blocks 1051A ~ 1051C to the TLC data block through internal copy to form a super data block, if a word line break is detected, Errors such as short circuit or write failure of the two character lines can be corrected by the check codes stored in multiple SLC data blocks 1051A to 1051C.

再者,請參照第5圖,第5圖為本發明第二實施例第1圖所示之快閃記憶體控制器110執行資料寫入(SLC program)以寫入一個群之資料至快閃記憶體模組105內之SLC資料區塊以完成一次SLC資料區塊寫入操作的示意圖。快閃記憶體控制器110之錯誤更正碼編碼電路1101係對資料執行以一類似容錯式磁碟陣列的互斥或運算的編碼操作,產生相對應的校驗碼,而校驗碼緩衝器1102用以暫存所產生之相對應的校驗碼。此外,錯誤更正碼編碼電路1101的互斥或運算包括有三個不同的編碼引擎以對SLC資料區塊的不同字元線資料進行互斥或運算;詳細操作內容如下所述。Furthermore, please refer to FIG. 5. FIG. 5 is a flash memory controller 110 shown in FIG. 1 of the second embodiment of the present invention performing a data write (SLC program) to write data of a group to the flash memory. The schematic diagram of the SLC data block in the memory module 105 to complete a write operation of the SLC data block. The error correction code encoding circuit 1101 of the flash memory controller 110 performs an encoding operation similar to the mutual exclusion or operation of the fault-tolerant disk array on the data to generate a corresponding check code, and the check code buffer 1102 It is used to temporarily store the corresponding check code generated. In addition, the mutually exclusive OR operation of the error correction code encoding circuit 1101 includes three different encoding engines to perform mutually exclusive OR operations on different character line data of the SLC data block; detailed operation contents are described below.

快閃記憶體模組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 flash memory module 105 includes two channels and includes two flash memory chips. For writing efficiency, the flash memory controller 110 writes data to the flash memory through two channels. The two flash memory chips in the module 105 program the data pages of one SLC data block into different flash memory chips, and one write operation of the SLC data block of the flash memory controller 110 The written data includes 128 character lines (represented by WL0 to WL127 respectively), and each character line includes 8 data pages. For example, taking the character line WL0 as an example, the error correction code encoding circuit 1101 uses a channel. CH0, PLN0, and PLN1 write data pages P1 and P2 to the flash memory chip CE0, and then write data pages P3 and P4 to another flash memory chip CE1 through the same channel CH0, PLN0, and PLN1, and then The data pages P5 and P6 are written into the flash memory chip CE0 by the other channels CH1, PLN0, and PLN1, and then the data pages P7 and P8 are written into the flash memory chip CE1 through the channels CH1, PLN0, and PLN1.

錯誤更正碼編碼電路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 code encoding circuit 1101 is to classify multiple M word lines WL0 to WL127 of an SLC data block in order into a group of M word lines, where M is a positive integer greater than or equal to 2, and M is, for example, 3. For example, the character lines WL0 ~ WL2 are the first group, the character lines WL3 ~ WL5 are the second group, the character lines WL6 ~ WL8 are the third group, and the character lines WL9 ~ WL11 are the fourth group ..., characters Lines WL120 to WL122 are the penultimate group, character lines WL123 to WL125 are the penultimate group, and the last group of character lines are WL126, WL127, of which the first, third, fifth, etc. character lines Are odd array character lines, and the second, fourth, sixth group, etc. character lines are even array character lines. The flash memory controller 110 writes data of one set of character lines at a time ( Including the data of the three character lines), is the use of error correction code encoding circuit 1101 to perform mutually exclusive OR operation on the data of the group of character line error correction encoding, and the corresponding parity code (partial parity) code) is output to the check code buffer 1102 to temporarily store a part of the check code.

錯誤更正碼編碼電路1101每次寫入資料至一組三條不同字元線時,係採用三個不同的編碼引擎對於所寫入之資料執行互斥或運算的編碼,並將所產生之對應之部分的校驗碼輸出至校驗碼緩衝器1102,以暫存部分的校驗碼,而校驗碼緩衝器1102於暫存部分的校驗碼時係將奇數組之字元線資料所對應之部分的校驗碼儲存於一第一緩衝區,將偶數組之字元線資料所對應之部分的校驗碼儲存於一第二緩衝區。Each time the error correction code encoding circuit 1101 writes data to a set of three different character lines, it uses three different encoding engines to perform mutually exclusive or operation encoding on the written data, and generates the corresponding Part of the check code is output to the check code buffer 1102 to temporarily store the part of the check code, and the check code buffer 1102 corresponds to the character line data of the odd array when temporarily storing the part of the check code. A part of the check code is stored in a first buffer, and a part of the check code corresponding to the character line data of the even array is stored in a second buffer.

舉例來說,錯誤更正碼編碼電路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 code encoding circuit 1101 includes a first encoding engine, a second encoding engine, and a third encoding engine. When the data pages P1 to P24 of the character lines WL0 to WL2 are written, the first encoding engine is sequentially used. Perform a mutually exclusive OR operation on the data pages P1 ~ P8 of the character line WL0 to generate a first partial check code, and use a second encoding engine to perform a mutually exclusive OR operation on the data pages P9 ~ P16 of the character line WL1 to generate a first A two-part check code and a third encoding engine are used to perform a mutually exclusive OR operation on the data pages P17 to P24 of the word line WL2 to generate a third part check code, and output the generated part check codes separately To the check code buffer 1102, temporarily stored in the first buffer; then the error correction code encoding circuit 1101 writes the data pages P1 to P24 of the character lines WL3 to WL5, and sequentially uses the first encoding engine for the character line WL3 The data pages P1 ~ P8 on the data page perform a mutually exclusive OR operation to generate another first part check code, and the second encoding engine is used to perform a mutually exclusive OR operation on the data page P9 ~ P16 of the character line WL4 to generate another second part calibration. Check code and use the third encoding engine for word line WL5 The data pages P17 ~ P24 on the data pages perform mutual exclusion or operation to generate another third part check code, and output the generated part check codes to the check code buffer 1102, respectively, and temporarily store them in the second buffer. .

後續的資料頁寫入與編碼操作係依此類推…,也就是說,對於一組奇數組字元線的第一條字元線的資料、第二條字元線的資料、第三條字元線的資料以及對於一組偶數組字元線的第一條字元線的資料、第二條字元線的資料、第三條字元線的資料,均分別執行不同次的互斥或運算,產生相對應的校驗碼。之後為了寫入該些對應的校驗碼於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 performed by analogy, that is, for the data of the first character line, the data of the second character line, and the third word of a set of odd array character lines The data of the meta lines and the data of the first character line, the data of the second character line, and the data of the third character line of a set of even array of character lines are respectively executed different times of mutual exclusion or Operation to generate the corresponding check code. In order to write the corresponding check codes in the appropriate storage location of the SLC data block, the error correction code encoding circuit 1101 writes the data pages of the last 6 word lines WL122 to WL127, corresponding to these. The check code is written on the last data page of the last 6 character lines WL122 ~ WL127 (as shown by the rectangular diagonal line box in Figure 5). For example, when writing the data page of character line WL122, the word Element line WL122 is the third character line of a set of odd array character lines. The error correction code encoding circuit 1101 is written in the last data page of character line WL122. The check code corresponding to the data of the character line (that is, all the third part check codes generated by the third encoding engine in the odd array character line), and when writing the data page of the character line WL123 The character line WL123 is the first character line of the last group of even array character lines. The error correction code encoding circuit 1101 is written in all the even array character lines in the last data page of the character line WL123. The check code corresponding to the data of all the first character lines (that is, All the first part check codes generated by the first encoding engine), and when writing the data page of the character line WL124, the character line WL124 is the second character line of the last group of even array character lines, The error correction code encoding circuit 1101 writes the check code corresponding to the data of all the second character lines in all even array character lines in the last data page of character line WL124 (that is, even array characters All the second part check codes generated by the second encoding engine in the line), and when writing to the data page of the character line WL125, the character line WL125 is the third word of the last set of even array character lines Element line, error correction code encoding circuit 1101 writes the check code corresponding to the data of all the third character lines in all even array character lines in the last data page of character line WL125 (that is, even numbers) All the third part check codes generated by the third encoding engine in the group of character lines), and when writing the data page of the character line WL126, the character line WL126 is the first of the last set of odd array character lines One character line, the error correction code encoding circuit 1101 is the last one of the character line WL126 The check code corresponding to the data of all the first character lines in all odd array character lines is written in the material page (that is, all the first part of the check code generated by the first encoding engine in the odd array character lines ), And when writing the data page of the character line WL127, the character line WL127 is the second character line of the last set of odd array character lines, and the error correction code encoding circuit 1101 is at the end of the character line WL127 A data page writes the check code corresponding to the data of all the second character lines in all odd array character lines (that is, all the second parts in the odd array character lines generated by the second encoding engine) Check code). This completes the writing of the SLC data block.

也就是說,當快閃記憶體控制器110寫入一群的資料至一SLC資料區塊時,快閃記憶體控制器110係將該SLC資料區塊的所有字元線依順序每M條字元線編類為一組字元線,以產生複數組奇數組的字元線及複數組偶數組的字元線,以及對一組奇數組的每一條字元線及一組偶數組的每一條字元線,分別執行不同M次的互斥或運算的編碼操作,產生該組奇數組的每一條字元線的M個部分校驗碼以及該組偶數組的每一條字元線的M個部分校驗碼,寫入並儲存該複數組奇數組的每一條字元線的M個部分校驗碼於該複數組奇數組字元線中最後M條字元線之最後一張資料頁、寫入並儲存該複數組偶數組的每一條字元線的M個部分校驗碼於該複數組偶數組字元線中最後M條字元線之最後一張資料頁。而以上述實施例,M為3,然此並非是本案的限制。That is to say, when the flash memory controller 110 writes a group of data to an SLC data block, the flash memory controller 110 sequentially all the character lines of the SLC data block every M words The metaline is classified as a set of character lines to generate the character lines of the odd array of the complex array and the character lines of the even array of the complex array, and each character line of the odd array and each of the set of even array. One character line, which performs different M exclusive or OR encoding operations, to generate M partial check codes for each character line of the odd array and M for each character line of the even array. M partial check codes, write and store M partial check codes for each character line of the odd array of the complex array on the last data page of the last M word lines of the odd array of odd lines of the complex array Write and store the M partial check codes of each character line of the complex array even array on the last data page of the last M character lines of the complex array even character line. In the above embodiment, M is 3, but this is not a limitation of this case.

錯誤更正碼編碼電路1101在第5圖所示之實施例所執行的是互斥或運算編碼操作,可更正發生在SLC資料區塊之一條字元線上一個位置的資料頁錯誤,舉例來說,如果於執行該次SLC資料區塊的寫入時檢測到發生寫入失敗的情況,例如檢測到字元線WL1的資料頁P9寫入失敗,錯誤更正碼編碼電路1101可利用第二編碼引擎於處理第一組字元線的字元線WL1時所產生之相對應的部分校驗碼及同一字元線WL1之的其他正確的資料頁P10~P16,更正字元線WL1的資料頁P9的錯誤。The error correction code encoding circuit 1101 in the embodiment shown in FIG. 5 performs a mutex or arithmetic encoding operation, which can correct a data page error that occurs at a position on a character line of an SLC data block. For example, If a write failure is detected during the writing of the SLC data block, for example, a write failure of the data page P9 of the word line WL1 is detected, the error correction code encoding circuit 1101 may use the second encoding engine to The corresponding partial check code generated when processing the character line WL1 of the first group of character lines and other correct data pages P10 ~ P16 of the same character line WL1, and the data page P9 of the character line WL1 is corrected. error.

如果於執行該次SLC資料區塊的寫入時檢測到發生一字元線斷路而造成例如字元線WL1的資料頁P9錯誤,錯誤更正碼編碼電路1101亦可利用第二編碼引擎於處理第一組字元線的字元線WL1時所產生之相對應的部分校驗碼及同一字元線WL1之其他正確的資料頁P10~P16,更正字元線WL1的資料頁P9的錯誤。If it is detected that a character line disconnection occurs during the writing of the SLC data block, for example, the data page P9 of the character line WL1 is incorrect, the error correction code encoding circuit 1101 may also use the second encoding engine to process The corresponding partial check code generated by the character line WL1 of a group of character lines and other correct data pages P10 ~ P16 of the same character line WL1, and the error of the data page P9 of the character line WL1 is corrected.

如果於執行該次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 it is detected that a short of two character lines occurs during the writing of the SLC data block, for example, the data page P9 of the character line WL1 and the P17 of the character line WL2 are both wrong. The error correction code encoding circuit 1101 can be used. The corresponding partial check code generated by the second encoding engine when processing the character line WL1 of the first group of character lines and other correct data pages P10 to P16 of the same character line WL1, and correcting the character line WL1 The error of the data page P9, and the corresponding partial check code generated by the third encoding engine when processing the character line WL2 of the first group of character lines, and other correct data pages P18 of the same character line WL2 ~ P24, Correct the error of the data page P17 of the character line WL2. If the data page P17 of the character line WL2 and the data page P1 of the character line WL3 are in error, the error correction code encoding circuit 1101 can use the third encoding engine to process the character line WL2 of the first group of character lines. The corresponding partial check code and other correct data pages P18 ~ P24 of the same character line WL2 are generated, errors of the data page P17 of the character line WL2 are corrected, and the first encoding engine is used to process the second set of characters The corresponding part of the check code generated by the character line WL3 of the line and other correct data pages P2 to P8 of the same character line WL3, and the error of the data page P1 of the character line WL3 is corrected. Therefore, regardless of a data page error caused by a write failure, a one-character line break, or a two-character line short while performing SLC data block write, the error correction code encoding circuit 1101 can correct the errors accordingly. 'S profile page. The operation of the flash memory module 105 writing data into the TLC data block through the internal copy of the SLC data block is the same as the content of FIG. 3 described above, and will not be described again.

接著請參照第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)。Please refer to FIG. 6. FIG. 6 is a diagram of the flash memory controller 110 shown in FIG. 1 of the second embodiment of the present invention writing data of three groups to a plurality of SLCs in the flash memory module 105. Schematic diagram of data blocks 1051A ~ 1051C and transferring the data of these SLC data blocks 1051A ~ 1051C to TLC data block 1052 by internal copying to form a super block. The error correction code encoding circuit 1101 classifies data into odd array character lines and even array character lines each time the SLC data block is written, and stores the corresponding generated check codes in all odd array words. The last 3 data lines of the last 3 character lines in the meta line and the last 3 data lines of the last 3 character lines of all even array character lines, as shown in Figure 6, execute the TLC data block When writing, according to the order of data writing, the corresponding check code of the character line data in the first group, as indicated by 605A, is the last one of the character line WL40 written and stored in the TLC data block 1052. The MSB of the data page, the LSB of the last data page of the character line WL41, and the LSB of the last data page of the character line WL42 and the middle significant bit CSB, among which the SLC data in the first group The parity code of the odd array character line of the block is stored in the most significant bit MSB of the last data page of character line WL40 and the least significant bit LSB and middle significant bit CSB of the last data page of character line WL42. , And the even array of character lines of the SLC data block in the first group Check code stored in the word line WL41 of the last profile page (including the least significant bit LSB, CSB middle significant bit and the most significant bit MSB).

第二個群中的字元線資料的對應校驗碼,如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 character line data in the second group, as indicated by 605B, is written and stored in the last data page of the last data page of the character line WL83 in the TLC data block 1052 and the highest significant bit MSB, the least significant bit LSB of the last data page of character line WL84 and the last data page of character line WL85, where the odd array character line data in the SLC data block in the second group All third part check codes generated by the third encoding engine are stored in the middle significant bit CSB of the last data page of the word line WL83 of the TLC data block 1052, and all are generated by the first encoding engine. The first part of the check code is stored in the MSB of the last data page of the word line WL84 of the TLC data block 1052. All the second part of the check code generated by the second encoding engine is stored in the TLC data. The least significant bit LSB of the last data page of the character line WL85 in block 1052, and for the even array of character line data in the SLC data block in the second group, all the Part of the check code is stored in the TLC data area The MSB of the most significant bit of the last data page of the word line WL83 of 1052, all the second part check codes generated by the second encoding engine are stored in the last page of the word line WL84 of the TLC data block 1052 The least significant bit LSB of the data page, all the third part check codes generated by the third encoding engine are stored in the middle significant bit CSB of the last data page of the word line WL84 of the TLC data block 1052.

第三個群之字元線資料的對應校驗碼,如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 character line data of the third group, as indicated by 605C, is the last data page (including the least significant bit LSB) written and stored in the TLC data block 1052 of the character line WL126, 127 , The middle significant bit (CSB) and the most significant bit (MSB)). For the third group of odd-line character line data in the SLC data block, 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 the character line WL126 of the TLC data block 1052. All the first part of the check code generated by the first encoding engine are stored in the character line WL127 of the 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 MSB of the last data page of the word line WL127 of the TLC data block 1052. For the even array of character line data in the SLC data block in the third group, all the first part check codes generated by the first encoding engine are stored at the end of the character line WL126 in the TLC data block 1052 CSB in the middle of a data page All the second part check codes generated by the second encoding engine are stored in the MSB of the last data page of the last data page of the word line WL126 in the TLC data block 1052, and all are generated by the third encoding engine. The third part of the check code is the least significant bit LSB of the last data page of the word line WL127 stored in the 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 flash memory module 105 moves and writes data from the SLC data blocks 1051A to 1051C to the TLC data block 1052 through an internal copy operation, if a short circuit between the two word lines is detected, for example, the TLC data area An error occurred on the two data pages of the character line WL0 and WL1 of block 1052 (as indicated by the frame line 610). The flash memory module 105 can use the last data stored in the character line WL42 of the TLC data block 1052. The first part check code of the middle significant bit CSB of the page and the data of the least significant bit LSB of the other data pages of the word line WL0. Correct the data of the least significant bit LSB of the data page of the word line WL0 marked by 610. The second part of the MSB of the most significant bit MSB of the last data page of the word line WL42 in the TLC data block 1052 and the data of the middle significant bit CSB of the other data pages of the word line WL0 are corrected to 610. The data of the middle significant bit CSB of the data page of the marked character line WL0, and the third part of the check code using the most significant MSB of the last data page of the word line WL40 stored in TLC data block 1052 And the other word line WL0 The MSB data of the data page is used to correct the MSB data of the data page of the character line WL0 marked by 610. Similarly, the flash memory module 105 can use the first part of the LSB check code of the least significant bit LSB of the last data page of the word line WL41 stored in the TLC data block 1052 and other data pages of the word line WL1. The data of the least significant bit of LSB is used to correct the data of the least significant bit of LSB of the data page of the character line WL1 marked by 610, using the middle of the last data page of the character line WL41 of the word line 1052 of TLC The second part check code of the significant bit CSB and the data of the middle significant bit CSB of the other data pages of the word line WL1, to correct the data of the middle significant bit CSB of the data page of the word line WL1 marked 610, and use The third part check code of the most significant MSB of the last data page of the word line WL41 in the TLC data block 1052 and the data of the most significant MSB of the other data pages of the word line WL1 are corrected to 610. Data of the MSB of the data page of the marked character line WL1.

相似地,如果兩字元線短路而造成之錯誤是發生在超級區塊之任兩連續字元線的之連續資料頁(例如如615、620所標示的錯誤位置),快閃記憶體模組105均可利用每一群組中一SLC資料區塊之最後6條字元線之最後一資料頁所儲存之相對應的校驗碼來更正錯誤。此外,如果是檢測到一字元線斷路或寫入失敗而造成TLC資料區塊1052之任一字元線的任一資料頁發生錯誤(亦即同一資料頁的三個有效位均出錯或是連續兩不同資料頁的不同有效位出錯),則快閃記憶體模組105均可利用對應儲存之校驗碼來更正連續任意三個有效位的錯誤。Similarly, if the two-character line is short-circuited and the error occurs on the continuous data page of any two consecutive character lines in the superblock (for example, the error position indicated by 615, 620), the flash memory module 105 can use the corresponding check code stored in the last data page of the last 6 character lines of an SLC data block in each group to correct the error. In addition, if a word line break or write failure is detected and an error occurs on any data page of any word line in the TLC data block 1052 (that is, all three valid bits of the same data page are wrong or Different consecutive significant bits of two different data pages are in error), then the flash memory module 105 can use the corresponding stored check code to correct the error of any three consecutive significant bits.

也就是說,通過快閃記憶體控制器110寫入三個群的資料至快閃記憶體模組105內的多個SLC資料區塊1051A~1051C的校驗碼儲存位置管理設計,當快閃記憶體模組105通過內部複製將該些資料從多個SLC資料區塊1051A~1051C複製搬移寫入至TLC資料區塊時,如果檢測到一字元線斷路、兩字元線短路或寫入失敗的錯誤,均可由多個SLC資料區塊1051A~1051C儲存之校驗碼來進行更正。In other words, the flash memory controller 110 writes three groups of data to the multiple SLC data blocks 1051A ~ 1051C in the flash memory module 105. The storage location management design is designed to When the memory module 105 copies the data from multiple SLC data blocks 1051A ~ 1051C to the TLC data block by internal copying, if one word line is disconnected, two word lines are short-circuited or written Failure errors can be corrected by the check codes stored in multiple SLC data blocks 1051A ~ 1051C.

再者,本案上述的實施例亦適用於MLC資料區塊或QLC資料區塊等架構,當使用於MLC資料區塊時,上述三個群資料改為分類為兩個群的資料,而對於如果是執行互斥或運算的編碼操作,則改用兩個編碼引擎來實現,其他的條件則與前述使用於TLC資料區塊時相同;因此,如果是使用於QLC資料區塊時,上述三個群資料改為分類為四個群的資料,而對於如果是執行互斥或運算的編碼操作,則改用四個編碼引擎來實現,其他的條件則與前述使用於TLC資料區塊時相同;其他資料區塊的架構則依此類推。Furthermore, the above-mentioned embodiments in this case are also applicable to the MLC data block or QLC data block structure. When used in the MLC data block, the above three groups of data are changed to data classified into two groups. For encoding operations that perform mutual exclusion or operations, use two encoding engines instead. The other conditions are the same as those used in the TLC data block. Therefore, if used in the QLC data block, the above three Group data is classified into four groups of data. For encoding operations that perform mutual exclusion or operations, use four encoding engines to implement the other conditions. The other conditions are the same as those used in the TLC data block. The structure of other data blocks is the same.

以資料儲存的成本(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%的資料空間作為儲存相對應的錯誤更正校驗碼之用,資料空間的使用效率更高。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。In terms of the cost of data storage (overhead), if two channels are used to write two memory chips, and each memory chip has a folded flat design so that two blocks can be written simultaneously, one SLC data is used. As for the data writing of the block, the 128 character lines have a total of 8 * 128 data pages, and only 6 data pages need to be used to store the corresponding check code. The cost percentage is less than 1% (6 / ( 128 * 8)), that is, for writing SLC data blocks and writing TLC data blocks, you only need to use less than 1% of the data space as the corresponding error correction check code. Data space The use efficiency is extremely high. And if 4 channels are used to write 4 memory chips, and each memory chip has a folded flat design so that 2 blocks can be written at the same time, in terms of the data writing of an SLC data block, 128 Each character line has 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 writing SLC data blocks and writing TLC data blocks, you only need to use about 0.15% of the data space as the corresponding error correction check code. , More efficient use of data space. The above description is only a preferred embodiment of the present invention, and all equivalent changes and modifications made in accordance with the scope of 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

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資料區塊的資料頁Data pages for 404, 405, 406, 610, 615, 620‧‧‧TLC data blocks

1051A、1051B、1051C‧‧‧SLC資料區塊1051A, 1051B, 1051C‧‧‧SLC data blocks

1052‧‧‧TLC資料區塊1052‧‧‧TLC data block

1101‧‧‧錯誤更正碼編碼電路1101‧‧‧Error correction code encoding circuit

1102‧‧‧校驗碼緩衝器1102‧‧‧Check code buffer

1102A、1102B‧‧‧緩衝區 1102A, 1102B‧‧‧Buffer zone

第1圖為本發明一實施例之快閃記憶體裝置的裝置示意圖。 第2圖為本發明第一實施例第1圖所示之快閃記憶體控制器執行SLC資料寫入將某一群之資料寫入至快閃記憶體模組內之一SLC資料區塊以執行一次SLC資料區塊寫入操作的示意圖。 第3圖為快閃記憶體模組內之一SLC資料區塊通過內部複製將資料寫入至TLC資料區塊的示意圖。 第4圖為本發明第一實施例第1圖所示之快閃記憶體控制器寫入三個群的資料至快閃記憶體模組內的多個SLC資料區塊並通過內部複製將資料搬移寫入至TLC資料區塊而形成一個超級區塊的示意圖。 第5圖為本發明第二實施例第1圖所示之快閃記憶體控制器執行SLC資料寫入以寫入一個群之資料至快閃記憶體模組內之SLC資料區塊以完成一次SLC資料區塊寫入操作的示意圖。 第6圖為本發明第二實施例第1圖所示之快閃記憶體控制器寫入三個群之資料至快閃記憶體模組內的多個SLC資料區塊並通過內部複製將該些SLC資料區塊之資料搬移寫入至TLC資料區塊而形成一個超級區塊的示意圖。FIG. 1 is a schematic diagram of a flash memory device according to an embodiment of the present invention. FIG. 2 is a diagram of the flash memory controller shown in FIG. 1 of the first embodiment of the present invention performing SLC data writing to write a certain group of data to an SLC data block in the flash memory module for execution. Schematic diagram of an SLC data block write operation. FIG. 3 is a schematic diagram of writing data into a TLC data block by an internal copy of an SLC data block in a flash memory module. FIG. 4 is a diagram showing a flash memory controller shown in FIG. 1 of the first embodiment of the present invention, which writes data of three groups to a plurality of SLC data blocks in the flash memory module and internally copies the data. Schematic diagram of moving to the TLC data block to form a super block. Fig. 5 is a flash memory controller shown in Fig. 1 of the second embodiment of the present invention performing SLC data writing to write data of a group to the SLC data block in the flash memory module to complete once Schematic diagram of SLC data block write operation. FIG. 6 is a diagram of the flash memory controller shown in FIG. 1 of the second embodiment of the present invention, which writes data of three groups to a plurality of SLC data blocks in the flash memory module and copies the data by internal copying. The data transfer of some SLC data blocks is written into the TLC data blocks to form a super block diagram.

Claims (13)

一種快閃記憶體裝置,包含有: 一快閃記憶體模組,包括複數個第一資料區塊以及至少一第二資料區塊;以及 一快閃記憶體控制器,具有複數條通道分別連接至該快閃記憶體模組,該快閃記憶體控制器係先將一筆欲寫入之資料分類為複數群的資料,該快閃記憶體控制器分別執行單層單元資料寫入(SLC program)以及執行一類似容錯式磁碟陣列的互斥或運算的一錯誤更正編碼操作產生一對應的校驗碼,以將該複數群的資料以及該對應的校驗碼寫入至該複數個第一資料區塊,其中該複數個第一資料區塊中的一單元儲存一個位元的資料;完成該複數個第一資料區塊的寫入後,該快閃記憶體模組係執行一內部複製(internal copy),將該複數個第一資料區塊所儲存之該複數群的資料以及該對應的校驗碼,搬移寫入至該至少一第二資料區塊,其中該至少一第二資料區塊中的一單元儲存至少兩個位元的資料。A flash memory device includes: a flash memory module including a plurality of first data blocks and at least one second data block; and a flash memory controller having a plurality of channels respectively connected To the flash memory module, the flash memory controller first classifies a piece of data to be written into a plurality of groups of data, and the flash memory controller separately performs single-level unit data writing (SLC program ) And an error correction encoding operation similar to the mutual exclusion or operation of a fault-tolerant disk array generates a corresponding check code to write the data of the complex group and the corresponding check code to the plurality of first A data block, wherein one unit of the plurality of first data blocks stores one bit of data; after the writing of the plurality of first data blocks is completed, the flash memory module executes an internal Internal copy, transferring the data of the plural group stored in the plural first data blocks and the corresponding check code to the at least one second data block, wherein the at least one second Capital A storage unit in the block at least two data bits. 如申請專利範圍第1項所述之快閃記憶體裝置,其中該至少一第二資料區塊為一TLC資料區塊,儲存三個位元的資料,該快閃記憶體控制器係將該筆欲寫入之資料分類為三個群的資料,以分別寫入至三個SLC資料區塊。According to the flash memory device described in item 1 of the scope of patent application, wherein the at least one second data block is a TLC data block and stores three bits of data, the flash memory controller The data to be written is classified into three groups of data to be written into three SLC data blocks respectively. 如申請專利範圍第1項所述之快閃記憶體裝置,其中該複數個第一資料區塊為複數個SLC資料區塊,當快閃記憶體控制器寫入一群的資料至一SLC資料區塊時,該快閃記憶體控制器係將該SLC資料區塊的所有字元線(word line)依順序每M條字元線編類為一組字元線,以產生複數組奇數組的字元線及複數組偶數組的字元線,以及對一組奇數組的每一條字元線及一組偶數組的每一條字元線,分別執行不同M次的互斥或運算的編碼操作,產生該組奇數組的每一條字元線的M個部分校驗碼以及該組偶數組的每一條字元線的M個部分校驗碼,寫入並儲存該複數組奇數組的每一條字元線的M個部分校驗碼於該複數組奇數組字元線中最後M條字元線之最後一張資料頁、寫入並儲存該複數組偶數組的每一條字元線的M個部分校驗碼於該複數組偶數組字元線中最後M條字元線之最後一張資料頁。The flash memory device described in item 1 of the scope of patent application, wherein the plurality of first data blocks are a plurality of SLC data blocks, and when the flash memory controller writes a group of data to an SLC data region At the time of the block, the flash memory controller classifies all the word lines of the SLC data block into a group of word lines in order every M word lines in order to generate a complex array of odd arrays. The character lines and the character lines of the complex and even arrays, and each M line of each set of odd arrays and each of the character lines of a set of even arrays are coded separately for M times of mutually exclusive operations. To generate M partial check codes for each character line of the odd array and M partial check codes for each character line of the even array, write and store each of the odd array of the complex array The M partial check codes of the character line are written on the last data page of the last M character lines in the odd array character line of the complex array, and the M of each character line of the even array of the complex array is written and stored. Partial check code is the last one of the last M character lines in the complex and even array character lines Material page. 如申請專利範圍第1項所述之快閃記憶體裝置,其中當進行記憶體垃圾回收(garbage collection)時,該快閃記憶體控制器係從外部讀取出該複數個第一資料區塊之資料並進行重新編碼與寫入,或從外部讀取出該至少一第二資料區塊並進行重新編碼與寫入。The flash memory device according to item 1 of the scope of the patent application, wherein when the garbage collection is performed, the flash memory controller reads the plurality of first data blocks from the outside. The data is re-encoded and written, or the at least one second data block is read from the outside and re-encoded and written. 如申請專利範圍第1項所述之快閃記憶體裝置,其中當寫入資料至該至少一第二資料區塊且突然發生關機時,該快閃記憶體控制器係放棄該至少一第二資料區塊所儲存之資料,並執行該內部複製,從該些複數第一資料區塊搬移寫入資料至該至少一第二資料區塊。The flash memory device according to item 1 of the scope of patent application, wherein when writing data to the at least one second data block and a sudden shutdown occurs, the flash memory controller abandons the at least one second The data stored in the data block is internally copied, and the written data is moved from the plurality of first data blocks to the at least one second data block. 如申請專利範圍第1項所述之快閃記憶體裝置,其中當寫入資料至該些第一資料區塊時,該快閃記憶體控制器係依據該至少一第二資料區塊之一亂數種子數(randomizer seed)規則,寫入資料至該些複數第一資料區塊。The flash memory device according to item 1 of the scope of patent application, wherein when writing data to the first data blocks, the flash memory controller is based on one of the at least one second data block The randomizer seed rule writes data to the plural first data blocks. 一種快閃記憶體儲存管理方法,其係用於一快閃記憶體模組,該快閃記憶體模組包括複數個第一資料區塊以及至少一第二資料區塊,該方法包含有: 將一筆欲寫入之資料分類為複數群的資料; 分別執行單層單元資料寫入以及執行一類似容錯式磁碟陣列的互斥或運算之一錯誤更正編碼操作產生一對應的校驗碼,以將該複數群的資料以及該對應的校驗碼寫入至該複數個第一資料區塊,其中該複數個第一資料區塊中的一單元儲存一個位元的資料; 令該快閃記憶體模組執行一內部複製,將該複數個第一資料區塊所儲存之該複數群的資料以及該對應的校驗碼寫入至該至少一第二資料區塊,其中該至少一第二資料區塊中的一單元儲存至少兩個位元的資訊。A flash memory storage management method is used for a flash memory module. The flash memory module includes a plurality of first data blocks and at least one second data block. The method includes: Classifying a piece of data to be written into a plurality of pieces of data; performing a single-level unit data write and performing a mutually exclusive or operation similar to a fault-tolerant disk array, respectively; an error correction encoding operation generates a corresponding check code, Write the data of the plurality of groups and the corresponding check code to the plurality of first data blocks, wherein a unit in the plurality of first data blocks stores one bit of data; make the flash The memory module performs an internal copy, and writes the data of the plurality of groups stored in the plurality of first data blocks and the corresponding check code to the at least one second data block, where the at least one first A unit in the two data blocks stores at least two bits of information. 如申請專利範圍第7項所述之快閃記憶體儲存管理方法,其中該至少一第二資料區塊為一TLC資料區塊,儲存三個位元的資料,以及將該筆欲寫入之資料分類為該複數群的資料的步驟包括:將該筆欲寫入之資料分類為三個群的資料,以分別寫入至三個SLC資料區塊。The flash memory storage management method described in item 7 of the scope of the patent application, wherein the at least one second data block is a TLC data block, storing three bits of data, and writing the The step of classifying the data into the data of the plurality of groups includes: classifying the data to be written into data of three groups to write to the three SLC data blocks respectively. 如申請專利範圍第7項所述之快閃記憶體儲存管理方法,其中該複數個第一資料區塊為複數個SLC資料區塊,以及該快閃記憶體儲存管理方法另包括: 當寫入一群的資料至一SLC資料區塊時,該快閃記憶體控制器係將該SLC資料區塊的所有字元線依順序每M條字元線編類為一組字元線,以產生複數組奇數組的字元線及複數組偶數組的字元線; 對一組奇數組的每一條字元線及一組偶數組的每一條字元線,分別執行不同M次的互斥或運算的編碼操作,產生該組奇數組的每一條字元線的M個部分校驗碼以及該組偶數組的每一條字元線的M個部分校驗碼;以及 寫入並儲存該複數組奇數組的每一條字元線的M個部分校驗碼於該複數組奇數組字元線中最後M條字元線之最後一張資料頁、寫入並儲存該複數組偶數組的每一條字元線的M個部分校驗碼於該複數組偶數組字元線中最後M條字元線之最後一張資料頁。The flash memory storage management method described in item 7 of the scope of the patent application, wherein the plurality of first data blocks are a plurality of SLC data blocks, and the flash memory storage management method further includes: when writing When a group of data is in an SLC data block, the flash memory controller classifies all the character lines of the SLC data block into a group of character lines in order every M character lines in order to generate a complex number Groups of character lines of odd arrays and character lines of even arrays of complex arrays; each M character line of a set of odd arrays and each character line of a set of even arrays are executed for M times of exclusive exclusions or operations, respectively Encoding operation, generating M partial check codes for each character line of the odd array and M partial check codes for each character line of the even array; and writing and storing the complex array odd The M partial check code of each character line of the array is written in the last data page of the last M character lines in the odd array character line of the complex array, and each word of the even array of the complex array is written and stored The M partial check codes of the meta line are the most Finally, a data page of the M word lines. 如申請專利範圍第7項所述之快閃記憶體儲存管理方法,其另包含有: 當進行記憶體垃圾回收時,從外部讀取出該複數個第一資料區塊之資料並進行重新編碼與寫入,或從外部讀取出該至少一第二資料區塊並進行重新編碼與寫入。According to the flash memory storage management method described in item 7 of the scope of the patent application, it further includes: when the memory garbage is collected, the data of the plurality of first data blocks is read from the outside and re-encoded And write, or read the at least one second data block from the outside and re-encode and write. 如申請專利範圍第7項所述之快閃記憶體儲存管理方法,其另包含有: 當寫入資料至該至少一第二資料區塊且突然發生關機時,放棄該至少一第二資料區塊所儲存之資料,並執行該內部複製,從該些複數第一資料區塊搬移寫入資料至該至少一第二資料區塊。The flash memory storage management method described in item 7 of the scope of patent application, further comprising: when writing data to the at least one second data block and a sudden shutdown occurs, abandon the at least one second data area Blocks the stored data, and executes the internal copy to move the written data from the plurality of first data blocks to the at least one second data block. 如申請專利範圍第7項所述之快閃記憶體儲存管理方法,其另包含有: 當寫入資料至該些第一資料區塊時,依據該至少一第二資料區塊之一亂數種子數規則,寫入資料至該些複數第一資料區塊。The flash memory storage management method described in item 7 of the scope of patent application, further comprising: when writing data to the first data blocks, according to one of the at least one second data block The seed number rule writes data to the plural first data blocks. 一種快閃記憶體控制器,包含: 複數條通道,分別連接至一快閃記憶體模組,該快閃記憶體模組包括複數個第一資料區塊以及至少一第二資料區塊;以及 一錯誤更正碼編碼電路; 其中該快閃記憶體控制器係先將一筆欲寫入之資料分類為複數群的資料,分別執行單層單元資料寫入以及採用該錯誤更正碼編碼電路來執行一類似容錯式磁碟陣列的互斥或運算的一錯誤更正編碼操作產生一對應的校驗碼,以將該複數群的資料以及該對應的校驗碼寫入至該複數個第一資料區塊,其中該複數個第一資料區塊中的一單元儲存一個位元的資料;完成該複數個第一資料區塊的寫入後,該快閃記憶體控制器令該快閃記憶體模組係執行一內部複製,將該複數個第一資料區塊所儲存之該複數群的資料以及該對應的校驗碼,搬移寫入至該至少一第二資料區塊,其中該至少一第二資料區塊中的一單元儲存至少兩個位元的資料。A flash memory controller includes: a plurality of channels respectively connected to a flash memory module, the flash memory module including a plurality of first data blocks and at least one second data block; and An error correction code encoding circuit; wherein the flash memory controller first classifies a piece of data to be written into a plurality of groups of data, performs single-level unit data writing, and uses the error correction code encoding circuit to execute a An error correction encoding operation similar to the mutual exclusion or operation of the fault-tolerant disk array generates a corresponding check code to write the data of the plural group and the corresponding check code to the plurality of first data blocks. Wherein one unit of the plurality of first data blocks stores one bit of data; after the writing of the plurality of first data blocks is completed, the flash memory controller causes the flash memory module to An internal copy is performed, and the data of the plural group stored in the plural first data blocks and the corresponding check code are moved and written to the at least one second data block, where the at least one Two data blocks in a storage unit of at least two bits of information.
TW107132887A 2016-04-27 2017-02-20 Flash memory apparatus and storage management method for flash memory TWI659423B (en)

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
TW201903777A TW201903777A (en) 2019-01-16
TWI659423B true TWI659423B (en) 2019-05-11

Family

ID=61022891

Family Applications (20)

Application Number Title Priority Date Filing Date
TW114103715A TWI895219B (en) 2016-04-27 2017-02-20 Flash memory apparatus, storage management method for flash memory, and flash memory controller
TW108110612A TWI689930B (en) 2016-04-27 2017-02-20 Flash memory apparatus and storage management method for flash memory
TW113129614A TWI877059B (en) 2016-04-27 2017-02-20 Flash memory apparatus, storage management method for flash memory, and flash memory controller
TW110130076A TWI771151B (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
TW106105508A TWI618070B (en) 2016-04-27 2017-02-20 Flash memory apparatus and storage management method for flash memory
TW113112295A TWI855978B (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
TW106144650A TWI650755B (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
TW111121269A TWI806649B (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
TW107136718A TWI684857B (en) 2016-04-27 2017-02-24 Flash memory apparatus 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
TW113116326A TWI875586B (en) 2016-04-27 2017-02-24 Flash memory apparatus, flash memory controller, and storage management method for flash memory
TW114102411A TWI892940B (en) 2016-04-27 2017-02-24 Flash memory apparatus, flash memory controller, 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 (10)

Application Number Title Priority Date Filing Date
TW114103715A TWI895219B (en) 2016-04-27 2017-02-20 Flash memory apparatus, storage management method for flash memory, and flash memory controller
TW108110612A TWI689930B (en) 2016-04-27 2017-02-20 Flash memory apparatus and storage management method for flash memory
TW113129614A TWI877059B (en) 2016-04-27 2017-02-20 Flash memory apparatus, storage management method for flash memory, and flash memory controller
TW110130076A TWI771151B (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
TW106105508A TWI618070B (en) 2016-04-27 2017-02-20 Flash memory apparatus and storage management method for flash memory
TW113112295A TWI855978B (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
TW106144650A TWI650755B (en) 2016-04-27 2017-02-20 Flash memory apparatus and storage management method for flash memory

Family Applications After (9)

Application Number Title Priority Date Filing Date
TW111121269A TWI806649B (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
TW107136718A TWI684857B (en) 2016-04-27 2017-02-24 Flash memory apparatus 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
TW113116326A TWI875586B (en) 2016-04-27 2017-02-24 Flash memory apparatus, flash memory controller, and storage management method for flash memory
TW114102411A TWI892940B (en) 2016-04-27 2017-02-24 Flash memory apparatus, flash memory controller, 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 (20) TWI895219B (en)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
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
US11568938B2 (en) * 2020-11-03 2023-01-31 Western Digital Technologies, Inc. QLC data programming
US11861195B2 (en) 2021-03-15 2024-01-02 Western Digital Technologies, Inc. TLC data programming with hybrid parity
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
TWI865349B (en) * 2024-02-29 2024-12-01 慧榮科技股份有限公司 Error handling method based on redundant array of independent disks type check and related memory controller and data storage device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150058700A1 (en) * 2013-08-23 2015-02-26 Silicon Motion, Inc. Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same
US20150058699A1 (en) * 2013-08-23 2015-02-26 Silicon Motion, Inc. Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same
US20150058661A1 (en) * 2013-08-23 2015-02-26 Silicon Motion, Inc. Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same
US20150255159A1 (en) * 2007-04-02 2015-09-10 Kabushiki Kaisha Toshiba Method for controlling a non-volatile semiconductor memory, and semiconductor storage system

Family Cites Families (31)

* Cited by examiner, † Cited by third party
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
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US6906961B2 (en) * 2003-06-24 2005-06-14 Micron Technology, Inc. Erase block data splitting
US7414891B2 (en) * 2007-01-04 2008-08-19 Atmel Corporation Erase verify method for NAND-type flash memories
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
US7746705B2 (en) * 2007-12-10 2010-06-29 Spansion Llc Selective application of word line bias to minimize fringe effects in electromagnetic fields during erase of nonvolatile memory
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
TWI415128B (en) * 2009-08-03 2013-11-11 Phison Electronics Corp Data writing method for a flash memory and control circuit and storage system using the same
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
KR101214285B1 (en) * 2010-12-30 2012-12-20 에스케이하이닉스 주식회사 Memory system and operating method thereof
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
US9116792B2 (en) * 2012-05-18 2015-08-25 Silicon Motion, Inc. Data storage device and method for flash block management
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
TW201435730A (en) * 2013-03-08 2014-09-16 Innostor Technology Corp Method of data moving in flash memory
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
WO2015013689A2 (en) * 2013-07-25 2015-01-29 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
TWI649760B (en) * 2013-08-23 2019-02-01 慧榮科技股份有限公司 Methods for accessing a storage unit of a flash memory and apparatuses using the same
US9262316B2 (en) * 2013-12-09 2016-02-16 International Business Machines Corporation Recording dwell time in a non-volatile memory system
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
US9397110B2 (en) * 2014-05-21 2016-07-19 Macronix International Co., Ltd. 3D independent double gate flash memory
US9105333B1 (en) * 2014-07-03 2015-08-11 Sandisk Technologies Inc. On-chip copying of data between NAND flash memory and ReRAM of a memory die
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150255159A1 (en) * 2007-04-02 2015-09-10 Kabushiki Kaisha Toshiba Method for controlling a non-volatile semiconductor memory, and semiconductor storage system
US20150058700A1 (en) * 2013-08-23 2015-02-26 Silicon Motion, Inc. Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same
US20150058699A1 (en) * 2013-08-23 2015-02-26 Silicon Motion, Inc. Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same
US20150058661A1 (en) * 2013-08-23 2015-02-26 Silicon Motion, Inc. Methods for Accessing a Storage Unit of a Flash Memory and Apparatuses using the Same

Also Published As

Publication number Publication date
TW202238601A (en) 2022-10-01
TW202343265A (en) 2023-11-01
TW202014890A (en) 2020-04-16
TWI707345B (en) 2020-10-11
TWI812576B (en) 2023-08-11
TWI740629B (en) 2021-09-21
TWI806649B (en) 2023-06-21
TWI643062B (en) 2018-12-01
TWI877059B (en) 2025-03-11
TW201812583A (en) 2018-04-01
TW202025163A (en) 2020-07-01
TW202518275A (en) 2025-05-01
TWI892940B (en) 2025-08-01
TW201810280A (en) 2018-03-16
TW202449790A (en) 2024-12-16
TWI771151B (en) 2022-07-11
TW202115732A (en) 2021-04-16
TWI759673B (en) 2022-04-01
TW202324097A (en) 2023-06-16
TW202223651A (en) 2022-06-16
CN111710358B (en) 2022-06-03
CN111710358A (en) 2020-09-25
TW201738892A (en) 2017-11-01
TWI618070B (en) 2018-03-11
TWI845371B (en) 2024-06-11
TW202341158A (en) 2023-10-16
TW201903777A (en) 2019-01-16
TW202147326A (en) 2021-12-16
TW201907300A (en) 2019-02-16
TW202520273A (en) 2025-05-16
TWI684857B (en) 2020-02-11
TW201928977A (en) 2019-07-16
TW202433301A (en) 2024-08-16
TW202542914A (en) 2025-11-01
TWI875586B (en) 2025-03-01
TWI797996B (en) 2023-04-01
TWI650755B (en) 2019-02-11
TWI841391B (en) 2024-05-01
TWI689930B (en) 2020-04-01
TW202431265A (en) 2024-08-01
TWI895219B (en) 2025-08-21
TWI855978B (en) 2024-09-11

Similar Documents

Publication Publication Date Title
CN107391026B (en) Flash memory device and flash memory storage management method
CN107403646B (en) Flash memory device and flash memory management method
TWI659423B (en) Flash memory apparatus and storage management method for flash memory
CN111679787B (en) Flash memory device, flash memory controller, and flash memory storage management method
TWI910076B (en) Flash memory apparatus, storage management method for flash memory, and flash memory controller