TWI501242B - Erase method for flash - Google Patents
Erase method for flash Download PDFInfo
- Publication number
- TWI501242B TWI501242B TW102135958A TW102135958A TWI501242B TW I501242 B TWI501242 B TW I501242B TW 102135958 A TW102135958 A TW 102135958A TW 102135958 A TW102135958 A TW 102135958A TW I501242 B TWI501242 B TW I501242B
- Authority
- TW
- Taiwan
- Prior art keywords
- address
- memory cells
- memory
- erased
- memory cell
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 71
- 230000015654 memory Effects 0.000 claims description 357
- 238000012795 verification Methods 0.000 claims description 58
- 230000008569 process Effects 0.000 claims description 36
- 230000008439 repair process Effects 0.000 claims description 5
- 230000008672 reprogramming Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Landscapes
- Read Only Memory (AREA)
Description
本發明係有關於一種快閃記憶體之抹除方法,特別是有關於能快速判斷空白區段之一種快閃記憶體之抹除方法。The present invention relates to a method of erasing a flash memory, and more particularly to a method of erasing a flash memory capable of quickly determining a blank segment.
快閃記憶體在儲存資料時,係透過編程(program)與抹除(erase)的機制將特定資料寫入。一般而言,根據不同的指令列(command sheet)執行的寫入與抹除演算法,個別會引發出不同的問題,例如過度抹除(over erase)。以一般抹除程序為例,主要包含預編程(pre-program)、抹除與後編程(post-program)步驟,藉以確保每個記憶胞(memory cell)經過抹除程序後均在邏輯位準“1”的狀態。當記憶體反覆執行抹除及編程程序時,隨著寫入次數的增加,抹除程序的執行時間也會逐漸增加,其中用以修復過度抹除之後編程步驟於整個抹除程序中所佔的執行時間最久。當突發狀況發生時,例如突然發生關機狀況時,則有可能會中斷後編程步驟,而導致快閃記憶體的後編程步驟沒有完整被執行。於是,需要花費較多時間來驗證(verify)快閃記憶體,以找尋出空白區段(blank sector),以避免任何過度抹除的記憶胞存在區段中,造成讀取誤判。When storing data, the flash memory writes specific data through a program and erase mechanism. In general, write and erase algorithms that are executed according to different command sheets can cause different problems, such as over erase. Taking a general erase program as an example, it mainly includes pre-program, erase and post-program steps to ensure that each memory cell is in a logical level after being erased. The status of "1". When the memory repeatedly performs the erase and program, as the number of writes increases, the execution time of the erase program will gradually increase, which is used to repair the programming steps in the entire erase program after over-erasing. The execution time is the longest. When an emergency occurs, such as when a shutdown condition suddenly occurs, it is possible that the post-programming step is interrupted, and the post-programming step of the flash memory is not completely performed. Therefore, it takes more time to verify the flash memory to find a blank sector to avoid any over-erased memory cells in the segment, causing read misjudgment.
本發明提供一種抹除方法,適用於一快閃記憶 體。預編程快閃記憶體的複數第一記憶胞,其中第一記憶胞係設置於由複數行線與複數列線所組成之一記憶體陣列。抹除已編程之第一記憶胞。後編程已抹除之第一記憶胞,以修復已過度抹除之第一記憶胞。在後編程已抹除之第一記憶胞之後,編程複數第二記憶胞,其中第二記憶胞係設置在記憶體陣列之一第一特定行線,其中第一特定行線係安排在對應於一最後有效行位址之一最後行線之後。記憶體陣列更包括設置在記憶體陣列之一第二特定行線之複數第三記憶胞,其中第二特定行線係安排在最後行線之後並相鄰於第一特定行線。The invention provides an erasing method suitable for a flash memory body. The first memory cell of the flash memory is preprogrammed, wherein the first memory cell is disposed in a memory array composed of a plurality of row lines and a plurality of column lines. Erasing the programmed first memory cell. The first memory cell that has been erased is programmed to repair the first memory cell that has been over-erased. After programming the erased first memory cell, programming a plurality of second memory cells, wherein the second memory cell is disposed in a first specific row line of one of the memory arrays, wherein the first specific row line is arranged to correspond to After the last line of one of the last valid row addresses. The memory array further includes a plurality of third memory cells disposed on a second particular row line of one of the memory arrays, wherein the second particular row line is arranged after the last row line and adjacent to the first particular row line.
100‧‧‧快閃記憶體100‧‧‧flash memory
110‧‧‧控制器110‧‧‧ Controller
120‧‧‧感測放大器120‧‧‧Sense Amplifier
130‧‧‧位址解碼電路130‧‧‧ address decoding circuit
200‧‧‧記憶體陣列200‧‧‧ memory array
210、220、230‧‧‧記憶胞210, 220, 230‧‧‧ memory cells
C0-Cm、CF1、CF2‧‧‧行線C0-Cm, CF1, CF2‧‧‧ lines
R0-Rn‧‧‧列線R0-Rn‧‧‧ line
S310-S340、S410-S484、S510-S584、S610-S684、S710-S750‧‧‧步驟S310-S340, S410-S484, S510-S584, S610-S684, S710-S750‧‧
第1圖係顯示根據本發明一實施例所述之快閃記憶體;第2圖係顯示第1圖之記憶體陣列的示意圖;第3圖係顯示根據本發明一實施例所述之抹除方法,適用於第1圖之快閃記憶體;第4A圖係根據本發明一實施例所述之快閃記憶體之預編程程序的流程圖;第4B圖係根據本發明另一實施例所述之快閃記憶體之預編程程序的流程圖;第5A圖係根據本發明一實施例所述之快閃記憶體之抹除程序的流程圖;第5B圖係根據本發明另一實施例所述之快閃記憶體之抹除程序的流程圖;第6A圖係根據本發明一實施例所述之快閃記憶體之後編 程程序的流程圖;第6B圖係根據本發明另一實施例所述之快閃記憶體之後編程程序的流程圖;第7圖係根據本發明一實施例所述之快閃記憶體之標記程序的流程圖;第8A圖係根據本發明另一實施例所述之快閃記憶體之標記程序的流程圖;以及第8B圖係根據本發明另一實施例所述之快閃記憶體之標記程序的流程圖。1 is a view showing a flash memory according to an embodiment of the present invention; FIG. 2 is a view showing a memory array of FIG. 1; and FIG. 3 is a view showing an erase according to an embodiment of the present invention. The method is applicable to the flash memory of FIG. 1; FIG. 4A is a flowchart of the pre-programming procedure of the flash memory according to an embodiment of the invention; FIG. 4B is a diagram of another embodiment of the present invention. A flowchart of a pre-programming program for a flash memory; FIG. 5A is a flowchart of a flash memory erasing program according to an embodiment of the invention; FIG. 5B is a diagram of another embodiment of the present invention The flowchart of the flash memory erasing program; FIG. 6A is a flash memory according to an embodiment of the invention. FIG. 6B is a flowchart of a program after flash memory programming according to another embodiment of the present invention; FIG. 7 is a diagram of a flash memory according to an embodiment of the invention; A flowchart of a program; FIG. 8A is a flowchart of a marking procedure of a flash memory according to another embodiment of the present invention; and FIG. 8B is a flash memory according to another embodiment of the present invention. A flowchart of the marking program.
為讓本發明之上述和其他目的、特徵、和優點能更明顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳細說明如下:第1圖係顯示根據本發明一實施例所述之快閃記憶體100。快閃記憶體100包括控制器110、感測放大器120、位址解碼電路130以及記憶體陣列200。第2圖係顯示第1圖之記憶體陣列200的示意圖。記憶體陣列200包括複數記憶胞210、220與230,其中記憶胞210、220與230係設置於由複數列線(row)R0-Rn與複數行線(column)C0-Cm、CF1與CF2所組成之陣列上。在此實施例中,列線R0-Rn為字元線,而行線C0-Cm、CF1與CF2為位元線。此外,在記憶體陣列200,每一列線R0-Rn分別表示一有效列位址,而每一行線C0-Cm分別表示一有效行位址。換言之,控制器(例如第1圖的控制器110)經由位址解碼電路130而透過列線R0-Rn與行線C0-Cm對記憶胞210進行存 取,以便提供儲存在記憶胞210內的資料給其他裝置或對儲存在記憶胞210內的資料進行更新。相較於傳統的記憶體陣列,記憶體陣列200的行線CF1與CF2為額外的位元線或額外行,其中耦接於行線CF1之記憶胞220與耦接於行線CF2之記憶胞230係作為旗標(flag)記憶胞,用以指示所對應之列線上的記憶胞210的狀態。舉例來說,設置在列線R0上的記憶胞220與230係用以指示列線R0上複數記憶胞210的狀態,而設置在列線Rn上的記憶胞220與230係用以指示列線Rn上複數記憶胞210的狀態。於是,控制器可根據每一區段(sector)內的記憶胞220與230的邏輯位準而判斷出該區段是否抹除完整、該區段是否儲存有效資料等資訊。值得注意的是,記憶胞220與230的位置只是個例子,並非用以限定本發明。在一實施例中,記憶胞230係設置在行線F1而記憶胞220係設置在行線F2。The above and other objects, features and advantages of the present invention will become more <RTIgt; The flash memory 100 described in the embodiment. The flash memory 100 includes a controller 110, a sense amplifier 120, an address decoding circuit 130, and a memory array 200. Figure 2 is a schematic diagram showing the memory array 200 of Figure 1. The memory array 200 includes a plurality of memory cells 210, 220, and 230, wherein the memory cells 210, 220, and 230 are disposed by a plurality of column rows R0-Rn and a plurality of columns C0-Cm, CF1, and CF2. On the array of compositions. In this embodiment, the column lines R0-Rn are word lines, and the row lines C0-Cm, CF1, and CF2 are bit lines. Further, in the memory array 200, each of the column lines R0-Rn represents a valid column address, and each of the row lines C0-Cm represents a valid row address. In other words, the controller (for example, the controller 110 of FIG. 1) stores the memory cell 210 through the column line R0-Rn and the row lines C0-Cm via the address decoding circuit 130. The data stored in the memory cell 210 is provided to other devices or the data stored in the memory cell 210 is updated. Compared with the conventional memory array, the row lines CF1 and CF2 of the memory array 200 are additional bit lines or extra lines, wherein the memory cell 220 coupled to the row line CF1 and the memory cell coupled to the row line CF2 The 230 series is used as a flag memory cell to indicate the state of the memory cell 210 on the corresponding column line. For example, the memory cells 220 and 230 disposed on the column line R0 are used to indicate the state of the plurality of memory cells 210 on the column line R0, and the memory cells 220 and 230 disposed on the column line Rn are used to indicate the column lines. The state of the plurality of memory cells 210 on Rn. Therefore, the controller can determine whether the segment erases the complete segment, whether the segment stores valid data, and the like according to the logical levels of the memory cells 220 and 230 in each sector. It should be noted that the locations of memory cells 220 and 230 are merely examples and are not intended to limit the invention. In one embodiment, memory cell 230 is disposed on row line F1 and memory cell 220 is disposed on row line F2.
第3圖係顯示根據本發明一實施例所述之抹除方法,適用於第1圖之快閃記憶體。同時參考第1與3圖,首先,在步驟S310,控制器110會對記憶體陣列200執行預編程程序,以便將記憶體陣列200內的全部記憶胞編程為邏輯位準“0”。接著,在步驟S320,控制器110會對記憶體陣列200執行抹除程序,以便將記憶體陣列200內的全部記憶胞編程抹除為邏輯位準“1”。接著,在步驟S330,控制器110會對記憶體陣列200執行後編程程序,以便對過度抹除之記憶胞執行修復。接著,在步驟S340,控制器110會對記憶體陣列200內之特定記憶胞(例如第2圖之記憶胞220或230)執行標記程序,以紀錄抹除程序的結果。預編程程序、抹除程序、後編程程序以及標記程序將詳 細描述於後。Fig. 3 is a view showing an erasing method according to an embodiment of the present invention, which is suitable for the flash memory of Fig. 1. Referring to FIGS. 1 and 3 simultaneously, first, in step S310, the controller 110 performs a pre-programming process on the memory array 200 to program all of the memory cells in the memory array 200 to a logic level "0". Next, in step S320, the controller 110 performs an erase process on the memory array 200 to erase all memory cells in the memory array 200 to a logic level "1". Next, in step S330, the controller 110 executes a post-programming process on the memory array 200 to perform repair on the over-erased memory cells. Next, in step S340, the controller 110 performs a marking process on a specific memory cell (for example, the memory cell 220 or 230 of FIG. 2) in the memory array 200 to record the result of the erase process. Preprogrammed, erased, postprogrammed, and tagged programs will be detailed Described in detail later.
第4A圖係根據本發明一實施例所述之快閃記憶體之預編程程序的流程圖。執行預編程程序的目的在於使記憶體陣列200中的每個記憶胞在執行抹除程序之前具有相近的電壓位準,以避免需要執行多次抹除程序來降低過渡抹除記憶胞的產生。同時參考第2圖與第4A圖,在此實施例中,快閃記憶體之感測放大器(例如第1圖之感測放大器120)係使用額外的讀取/寫入單元來對額外的記憶胞220與230執行讀取與寫入操作。首先,在步驟S410,控制器會根據位址Addr(例如Addr=0,即起始位址)對對應於位址Addr之位元組或字元組內的複數記憶胞210執行預編程驗證(verify)。接著,在步驟S420,控制器會判斷預編程驗證是否成功,即判斷對應於位址Addr之每一記憶胞210是否為邏輯位準“0”。若預編程驗證的結果為失敗(例如對應於位址Addr之至少一記憶胞210為邏輯位準“1”),則控制器會執行預編程寫入操作,以便將對應於位址Addr之全部記憶胞210編程為邏輯位準“0”(步驟S440)。接著,回到步驟S410,控制器會重新對對應於位址Addr之記憶胞210執行預編程驗證(步驟S410),直到控制器判定預編程驗證為成功(步驟S420)。接著,在步驟450,控制器會判斷位址Addr是否大於最後區段位址Addr_last_Sector。若位址Addr已超過最後區段位址Addr_last_Sector,則完成預編程程序。反之,若位址Addr不是大於最後區段位址Addr_last_Sector,則進行步驟S430。在步驟S430,控制器會將位址Addr的位置值加一(例如Addr=Addr+1,即指向下一個位址),以更新位址Addr。接著,控制器會判斷 更新過的位址Addr是否為最後有效行位址Cm(步驟S460)。若更新過的位址Addr不是最後有效行位址Cm,則回到步驟S410。於是,控制器會對對應於更新過之位址Addr的記憶胞210執行預編程驗證,並進行後續流程。若更新過的位址Addr為最後有效行位址Cm(即Addr=Cm),則控制器會將額外位元線CF1與CF2加入(步驟S470),以便能同時地對位址Addr以及對應相同列之額外行CF1與CF2的記憶胞進行驗證。於是,在步驟S410,控制器會對對應於最後有效行位址Cm之記憶胞210、對應於相同列位址之額外行CF1之記憶胞220以及對應於相同列位址之額外行CF2之記憶胞230執行預編程驗證。如先前所描述,若預編程驗證的結果為失敗,則執行預編程寫入操作,以便將對應於位址Addr之記憶胞210、對應於位址Addr之額外行CF1之記憶胞220以及對應於位址Addr之額外行CF2之記憶胞230編程為邏輯位準“0”(步驟S440),並進行後續流程。4A is a flow chart of a pre-programming process for flash memory according to an embodiment of the invention. The purpose of executing the preprogrammed program is to have each of the memory cells in the memory array 200 have similar voltage levels prior to performing the erase process to avoid the need to perform multiple erase procedures to reduce the generation of the transition erase memory cells. Referring also to Figures 2 and 4A, in this embodiment, a sense amplifier of a flash memory (e.g., sense amplifier 120 of Figure 1) uses an additional read/write unit for additional memory. Cells 220 and 230 perform read and write operations. First, in step S410, the controller performs pre-program verification on the complex memory cells 210 in the byte or character group corresponding to the address Addr according to the address Addr (eg, Addr=0, ie, the start address). Verify). Next, in step S420, the controller determines whether the pre-program verification is successful, that is, whether each memory cell 210 corresponding to the address Addr is a logic level "0". If the result of the preprogrammed verification is a failure (eg, at least one of the memory cells 210 corresponding to the address Addr is a logic level "1"), the controller performs a preprogrammed write operation so as to correspond to the address Addr. The memory cell 210 is programmed to a logic level of "0" (step S440). Next, returning to step S410, the controller will perform pre-program verification on the memory cell 210 corresponding to the address Addr (step S410) until the controller determines that the pre-program verification is successful (step S420). Next, at step 450, the controller determines if the address Addr is greater than the last sector address Addr_last_Sector. If the address Addr has exceeded the last sector address Addr_last_Sector, the pre-programming process is completed. On the other hand, if the address Addr is not greater than the last sector address Addr_last_Sector, then step S430 is performed. In step S430, the controller increments the position value of the address Addr by one (for example, Addr=Addr+1, that is, points to the next address) to update the address Addr. Then the controller will judge Whether the updated address Addr is the last valid row address Cm (step S460). If the updated address Addr is not the last valid row address Cm, then return to step S410. Thus, the controller performs preprogrammed verification on the memory cell 210 corresponding to the updated address Addr and proceeds to the subsequent process. If the updated address Addr is the last valid row address Cm (ie, Addr=Cm), the controller adds the extra bit lines CF1 and CF2 (step S470) so that the address Addr and the corresponding address can be simultaneously The additional rows of CF1 and CF2 memory cells are verified. Then, in step S410, the controller remembers the memory cell 210 corresponding to the last valid row address Cm, the memory cell 220 corresponding to the extra row CF1 of the same column address, and the additional row CF2 corresponding to the same column address. Cell 230 performs pre-program verification. As previously described, if the result of the pre-program verification is a failure, a pre-program write operation is performed to associate the memory cell 210 corresponding to the address Addr, the memory cell 220 corresponding to the extra row CF1 of the address Addr, and the corresponding The memory cell 230 of the extra line CF2 of the address Addr is programmed to the logic level "0" (step S440), and the subsequent flow is performed.
第4B圖係根據本發明另一實施例所述之快閃記憶體之預編程程序的流程圖。同時參考第2圖與第4B圖,在此實施例中,快閃記憶體之感測放大器(例如第1圖之感測放大器120)係使用原有的讀取/寫入單元來對額外的記憶胞220與230執行讀取與寫入操作。首先,在步驟S410,控制器會根據位址Addr(例如Addr=0,即起始位址)對對應於位址Addr之位元組或字元組內的複數記憶胞210執行預編程驗證。接著,在步驟S420,控制器會判斷預編程驗證是否成功,例如判斷對應於位址Addr之每一記憶胞210是否為邏輯位準“0”。若預編程驗證的結果為失敗(例如對應於位址Addr之至少一記憶胞210為邏輯 位準“1”),則控制器會執行預編程寫入操作,以便將對應於位址Addr之全部記憶胞210編程為邏輯位準“0”(步驟S440)。接著,回到步驟S410。於是,控制器會重新對對應於位址Addr之記憶胞210執行預編程驗證,直到控制器會判定預編程驗證為成功(步驟S420)。接著,控制器會判斷位址Addr是否為最後有效行位址Cm(步驟S460)。若位址Addr不是最後有效行位址Cm,則進行步驟S450。接著,在步驟450,控制器會判斷位址Addr是否已超過最後區段位址Addr_last_Sector。若位址Addr已超過最後區段位址Addr_last_Sector,則完成預編程程序。反之,若位址Addr未超過最後區段位址Addr_last_Sector,則控制器會將位址Addr的位置值加一(例如Addr=Addr+1,即指向下一個位址),以更新位址Addr。於是,控制器會對對應於更新過之位址Addr的記憶胞210執行預編程驗證(步驟S410),並進行後續流程。在步驟S460中,若位址Addr為最後有效行位址Cm(即Addr=Rn+Cm),則控制器會針對額外之位元線CF1與CF2而對對應於同一列位址之額外行CF1之記憶胞220與對應於同一列位址之額外行CF2之記憶胞230執行預編程驗證(步驟S480)。接著,在步驟S482,控制器會判斷預編程驗證是否成功,例如判斷記憶胞220與230是否為邏輯位準“0”。若預編程驗證的結果為失敗(例如記憶胞220或記憶胞230為邏輯位準“1”),則控制器會執行預編程寫入操作,以便將對應於額外位址Addr之相同列位址之額外行CF1之記憶胞220與額外行CF2之記憶胞230編程為邏輯位準“0”(步驟S484),並回到步驟S480。於是,控制器會重新對記憶胞220與230執行預編程驗證 (步驟S480)。接著,回到步驟S482,直到控制器判定預編程驗證為成功,於是進行步驟S450,並進行後續流程。4B is a flow chart of a pre-programming procedure for flash memory according to another embodiment of the present invention. Referring to FIG. 2 and FIG. 4B simultaneously, in this embodiment, the sense amplifier of the flash memory (for example, the sense amplifier 120 of FIG. 1) uses the original read/write unit to add additional Memory cells 220 and 230 perform read and write operations. First, in step S410, the controller performs pre-program verification on the complex memory cells 210 in the byte or character group corresponding to the address Addr according to the address Addr (eg, Addr=0, ie, the start address). Next, in step S420, the controller determines whether the pre-program verification is successful, for example, determines whether each of the memory cells 210 corresponding to the address Addr is a logic level "0". If the result of the pre-program verification is a failure (for example, at least one memory cell 210 corresponding to the address Addr is logic The level "1"), the controller will perform a pre-program write operation to program all of the memory cells 210 corresponding to the address Addr to a logic level "0" (step S440). Next, the process returns to step S410. Thus, the controller will re-execute the pre-program verification of the memory cell 210 corresponding to the address Addr until the controller determines that the pre-program verification is successful (step S420). Next, the controller determines whether the address Addr is the last valid row address Cm (step S460). If the address Addr is not the last valid row address Cm, then step S450 is performed. Next, at step 450, the controller determines if the address Addr has exceeded the last sector address Addr_last_Sector. If the address Addr has exceeded the last sector address Addr_last_Sector, the pre-programming process is completed. Conversely, if the address Addr does not exceed the last sector address Addr_last_Sector, the controller increments the position value of the address Addr by one (for example, Addr=Addr+1, that is, points to the next address) to update the address Addr. Thus, the controller performs pre-program verification on the memory cell 210 corresponding to the updated address Addr (step S410), and performs a subsequent process. In step S460, if the address Addr is the last valid row address Cm (ie, Addr=Rn+Cm), the controller will add an additional row CF1 corresponding to the same column address for the additional bit lines CF1 and CF2. The memory cell 220 performs pre-program verification with the memory cell 230 corresponding to the extra row CF2 of the same column address (step S480). Next, in step S482, the controller determines whether the pre-program verification is successful, for example, determines whether the memory cells 220 and 230 are logic level "0". If the result of the preprogrammed verification is a failure (eg, memory cell 220 or memory cell 230 is a logic level "1"), the controller performs a preprogrammed write operation to place the same column address corresponding to the extra address Addr. The memory cell 220 of the extra line CF1 and the memory cell 230 of the extra line CF2 are programmed to logic level "0" (step S484), and return to step S480. The controller will then perform preprogrammed verification on memory cells 220 and 230 again. (Step S480). Next, returning to step S482, until the controller determines that the pre-program verification is successful, then step S450 is performed, and the subsequent flow is performed.
第5A圖係根據本發明一實施例所述之快閃記憶體之抹除程序的流程圖。同時參考第2圖與第5A圖,在此實施例中,快閃記憶體之感測放大器(例如第1圖之感測放大器120)係使用額外的讀取/寫入單元來對額外的記憶胞220與230執行讀取與寫入操作。首先,在步驟S510,控制器會將一區段內之記憶胞210、220與230進行抹除。接著,在步驟S520,控制器會根據位址Addr(例如Addr=0,即起始位址)而對對應於位址Addr之位元組或字元組內的複數記憶胞210執行抹除驗證。接著,在步驟S530,控制器會判斷抹除驗證是否成功,例如判斷對應於位址Addr之每一記憶胞210是否為邏輯位準“1”。若抹除驗證的結果為失敗(例如對應於位址Addr之至少一記憶胞210為邏輯位準“0”),則回到步驟S510,以重新抹除該區段內之記憶胞210、220與230。反之,若抹除驗證的結果為成功,控制器會判斷位址Addr是否大於最後區段位址Addr_last_Sector(步驟S540)。若位址Addr已超過最後區段位址Addr_last_Sector,則完成抹除程序。反之,若位址Addr小於或等於最後區段位址Addr_last_Sector,則控制器會將位址Addr的位置值加一(例如Addr=Addr+1,即指向下一個位址)(步驟S550),以更新位址Addr。接著,在步驟S560,控制器會判斷更新過的位址Addr是否為最後有效行位址Cm。若更新過的位址Addr不是最後有效行位址Cm,則回到步驟S520。於是,控制器會對對應於更新過之位址Addr的記憶胞210執行抹除驗證,並進行後續流 程。若更新過的位址Addr為最後有效行位址Cm(即Addr=Cm),則控制器會將額外之位元線CF1與CF2加入(步驟S570),以便能同時地對位址Addr以及對應於相同列位址上之額外行CF1與CF2上的記憶胞進行驗證。於是,控制器會對對應於最後有效行位址Cm之記憶胞210、對應於相同列位址之額外行CF1之記憶胞220以及對應於相同列位址之額外行CF2之記憶胞230執行抹除驗證(步驟S520)並確認認證的結果(步驟S530)。如先前所描述,若抹除驗證的結果為失敗,例如對應於位址Addr上之最後有效行位址Cm之記憶胞210、對應於相同列位址之額外行CF1之記憶胞220以及額外行CF2之記憶胞230的任一者為邏輯位準“0”,則回到步驟S510,以重新對該區段內之記憶胞210、220與230進行抹除。FIG. 5A is a flow chart of a flash memory erase program according to an embodiment of the invention. Referring also to Figures 2 and 5A, in this embodiment, the sense amplifier of the flash memory (e.g., sense amplifier 120 of Figure 1) uses an additional read/write unit for additional memory. Cells 220 and 230 perform read and write operations. First, in step S510, the controller erases the memory cells 210, 220, and 230 in a sector. Next, in step S520, the controller performs erasure verification on the plurality of memory cells 210 in the byte or the character group corresponding to the address Addr according to the address Addr (for example, Addr=0, that is, the start address). . Next, in step S530, the controller determines whether the erase verification is successful, for example, determines whether each of the memory cells 210 corresponding to the address Addr is a logic level "1". If the result of the erase verification is a failure (for example, at least one memory cell 210 corresponding to the address Addr is a logic level "0"), then returning to step S510 to re-erase the memory cells 210, 220 in the segment. With 230. On the other hand, if the result of the erase verification is successful, the controller determines whether the address Addr is greater than the last sector address Addr_last_Sector (step S540). If the address Addr has exceeded the last sector address Addr_last_Sector, the erase procedure is completed. On the other hand, if the address Addr is less than or equal to the last sector address Addr_last_Sector, the controller increments the position value of the address Addr by one (for example, Addr=Addr+1, that is, points to the next address) (step S550) to update. Address Addr. Next, in step S560, the controller determines whether the updated address Addr is the last valid row address Cm. If the updated address Addr is not the last valid row address Cm, then return to step S520. Then, the controller performs erasure verification on the memory cell 210 corresponding to the updated address Addr, and performs subsequent flow. Cheng. If the updated address Addr is the last valid row address Cm (ie, Addr=Cm), the controller adds the additional bit lines CF1 and CF2 (step S570), so that the address Addr and the corresponding address can be simultaneously The extra cells CF1 and CF2 on the same column address are verified. Thus, the controller performs a wipe on the memory cell 210 corresponding to the last valid row address Cm, the memory cell 220 corresponding to the extra row CF1 of the same column address, and the memory cell 230 corresponding to the extra row CF2 of the same column address. In addition to the verification (step S520) and the result of the authentication is confirmed (step S530). As previously described, if the result of the erase verification is a failure, for example, the memory cell 210 corresponding to the last valid row address Cm on the address Addr, the memory cell 220 corresponding to the extra row CF1 of the same column address, and the extra row If any of the memory cells 230 of CF2 is logic level "0", the process returns to step S510 to erase the memory cells 210, 220, and 230 in the segment.
第5B圖係根據本發明另一實施例所述之快閃記憶體之抹除程序的流程圖。同時參考第2圖與第5B圖,在此實施例中,快閃記憶體之感測放大器(例如第1圖之感測放大器120)係使用原有的讀取/寫入單元來對額外的記憶胞220與230執行讀取與寫入操作。首先,在步驟S510,控制器會將一區段內之記憶胞210、220與230進行抹除。接著,在步驟S520,控制器會根據位址Addr(例如Addr=0,即起始位址)而對對應於位址Addr之位元組或字元組內的複數記憶胞210執行抹除驗證。接著,在步驟S530,控制器會判斷抹除驗證是否成功,例如判斷對應於位址Addr之每一記憶胞210是否為邏輯位準“1”。若抹除驗證的結果為失敗(例如對應於位址Addr之至少一記憶胞210為邏輯位準“0”),則回到步驟S510,以重新抹除將該區段內之 記憶胞210、220與230。反之,若抹除驗證的結果為成功,控制器會判斷位址Addr是否為最後有效行位址Cm(步驟S560)。若位址Addr不是最後有效行位址Cm,則控制器會判斷位址Addr是否大於最後區段位址Addr_last_Sector(步驟S540)。若位址Addr已超過最後區段位址Addr_last_Sector,則完成抹除程序。反之,若位址Addr小於或等於最後區段位址Addr_last_Sector,則控制器會將位址Addr的位置值加一(例如Addr=Addr+1,即指向下一個位址)(步驟S550),以更新位址Addr,並回到步驟S520。於是,控制器會對對應於更新過之位址Addr的記憶胞210執行抹除驗證,並進行後續流程。在步驟S560中,若位址Addr為最後有效行位址Cm(即Addr=Cm),則控制器會針對額外位元線CF1與CF2而對對應於相同列位址上之額外行CF1之記憶胞220與額外行CF2之記憶胞230執行抹除驗證(步驟S580)。接著,在步驟S582,控制器會判斷抹除驗證是否成功,例如判斷記憶胞220與230是否為邏輯位準“1”。若抹除驗證的結果為失敗(例如記憶胞220或是記憶胞230為邏輯位準“0”),則控制器會重新抹除將該區段內之記憶胞210、220與230(步驟S584)。接著,控制器會對記憶胞220與230重新執行抹除驗證(步驟S580)。接著,重複執行抹除驗證(步驟S582)以及重新執行抹除(步驟S584),直到控制器會判定抹除驗證為成功,於是進行步驟S540,並進行後續流程。FIG. 5B is a flow chart of a flash memory erasing program according to another embodiment of the present invention. Referring to FIG. 2 and FIG. 5B simultaneously, in this embodiment, the sense amplifier of the flash memory (for example, the sense amplifier 120 of FIG. 1) uses the original read/write unit to add additional Memory cells 220 and 230 perform read and write operations. First, in step S510, the controller erases the memory cells 210, 220, and 230 in a sector. Next, in step S520, the controller performs erasure verification on the plurality of memory cells 210 in the byte or the character group corresponding to the address Addr according to the address Addr (for example, Addr=0, that is, the start address). . Next, in step S530, the controller determines whether the erase verification is successful, for example, determines whether each of the memory cells 210 corresponding to the address Addr is a logic level "1". If the result of the erase verification is a failure (for example, at least one memory cell 210 corresponding to the address Addr is a logic level "0"), then returning to step S510 to re-erase the segment. Memory cells 210, 220 and 230. On the other hand, if the result of the erase verification is successful, the controller determines whether the address Addr is the last valid row address Cm (step S560). If the address Addr is not the last valid row address Cm, the controller determines whether the address Addr is greater than the last sector address Addr_last_Sector (step S540). If the address Addr has exceeded the last sector address Addr_last_Sector, the erase procedure is completed. On the other hand, if the address Addr is less than or equal to the last sector address Addr_last_Sector, the controller increments the position value of the address Addr by one (for example, Addr=Addr+1, that is, points to the next address) (step S550) to update. The address is Addr and returns to step S520. Then, the controller performs erasure verification on the memory cell 210 corresponding to the updated address Addr, and performs subsequent processes. In step S560, if the address Addr is the last valid row address Cm (ie, Addr=Cm), the controller will store the memory corresponding to the extra row CF1 on the same column address for the extra bit lines CF1 and CF2. The cell 220 and the memory cell 230 of the extra line CF2 perform erasure verification (step S580). Next, in step S582, the controller determines whether the erase verification is successful, for example, determines whether the memory cells 220 and 230 are logic level "1". If the result of the erase verification is a failure (for example, the memory cell 220 or the memory cell 230 is a logic level "0"), the controller will erase the memory cells 210, 220, and 230 in the segment again (step S584). ). Next, the controller re-executes the erase verification on the memory cells 220 and 230 (step S580). Next, the erase verification is repeatedly performed (step S582) and the erase is re-executed (step S584) until the controller determines that the erase verification is successful, and then proceeds to step S540, and the subsequent flow is performed.
第6A圖係根據本發明一實施例所述之快閃記憶體之後編程程序的流程圖。執行後編程程序的目的在於修復過度抹除之記憶胞。一般而言,當經過抹除程序之後,快閃記憶體 的記憶胞之臨界電壓值可能會降低。當臨界電壓值太低時(例如小於0),記憶胞會發生過度抹除現象,其所引起之漏電流將會導致控制器會無法正確地識別該記憶胞以及該行其他記憶胞所儲存的資料。同時參考第2圖與第6A圖,在此實施例中,快閃記憶體之感測放大器(例如第1圖之感測放大器120)係使用額外的讀取/寫入單元來對額外的記憶胞220與230執行讀取與寫入操作。首先,在步驟S610,根據行位址Addr_Col(例如Addr_Col=0,即起始位址),控制器會以行線(column)為單位而對對應於行位址Addr_Col之複數記憶胞210執行過度抹除驗證。接著,在步驟S620,控制器會判斷過度抹除驗證是否成功,例如判斷對應於行位址Addr_Col之全部記憶胞210均未選取時,驗證該行線上是否有漏電流存在。若過度抹除驗證的結果為失敗(例如對應於行位址Addr_Col之至少一記憶胞210有漏電流存在),則以行線為單位而對對應於行位址Addr_Col之全部記憶胞210執行後編程寫入操作(或軟編程(soft-program))(步驟S640),以調整記憶胞210的臨界電壓值。接著,回到步驟S610,控制器會對對應於行位址Addr_Col之複數記憶胞210執行過度抹除驗證(步驟S620),直到過度抹除驗證成功。當過度抹除驗證成功時,控制器會判斷行位址Addr_Col是否已超過最後有效行位址Cm(步驟S650)。若行位址Addr_Col已超過最後有效行位址Cm,則完成後編程程序。反之,若行位址Addr_Col小於或等於最後有效行位址Cm,則控制器會將行位址Addr_Col的位置值加一(例如Addr_Col=Addr_Col+1,即指向下一個行位址),以更新行位址Addr_Col(步驟S630)。接著,控 制器會判斷更新過的行位址Addr_Col是否為最後有效行位址Cm(步驟S660)。若更新過的行位址Addr_Col不是最後有效行位址Cm,則回到步驟S610。於是,控制器會對對應於更新過之行位址Addr_Col的記憶胞210執行過度抹除驗證,並進行後續流程。若更新過的行位址Addr_Col為最後有效行位址Cm(即Addr_Col=Cm),則控制器會將額外位元線CF1與CF2加入(步驟S670),以便能同時地對最後有效行位址Addr_Col以及額外行CF1與CF2的記憶胞進行驗證。於是,在步驟S610,控制器會對對應於最後有效行位址Cm之記憶胞210、額外行CF1之記憶胞220以及額外行CF2之記憶胞230執行過度抹除驗證。如先前所描述,若過度抹除驗證的結果為失敗,則調整對應於行位址Addr_Col之記憶胞210以對應於額外行CF1之記憶胞220以及額外行CF2之記憶胞230的臨界電壓值,並進行後續流程。6A is a flow chart of a program after flash memory programming according to an embodiment of the invention. The purpose of the post-execution programming program is to repair the over-erased memory cells. In general, after the erase process, the flash memory The threshold voltage of the memory cell may decrease. When the threshold voltage is too low (for example, less than 0), the memory cell will be over-erased, and the leakage current will cause the controller to fail to correctly identify the memory cell and other memory cells stored in the bank. data. Referring also to Figures 2 and 6A, in this embodiment, the sense amplifier of the flash memory (e.g., sense amplifier 120 of Figure 1) uses an additional read/write unit for additional memory. Cells 220 and 230 perform read and write operations. First, in step S610, according to the row address Addr_Col (for example, Addr_Col=0, that is, the start address), the controller performs excessive execution on the plurality of memory cells 210 corresponding to the row address Addr_Col in units of a row line (column). Wipe the verification. Next, in step S620, the controller determines whether the over-erase verification is successful. For example, if it is determined that all the memory cells 210 corresponding to the row address Addr_Col are not selected, it is verified whether there is leakage current on the line. If the result of the over-erase verification is a failure (for example, at least one of the memory cells 210 corresponding to the row address Addr_Col has a leakage current), then all the memory cells 210 corresponding to the row address Addr_Col are executed in units of row lines. A program write operation (or soft-program) is performed (step S640) to adjust the threshold voltage value of the memory cell 210. Next, returning to step S610, the controller performs over-erase verification on the complex memory cell 210 corresponding to the row address Addr_Col (step S620) until the over-erase verification is successful. When the over-erase verification is successful, the controller determines whether the row address Addr_Col has exceeded the last valid row address Cm (step S650). If the row address Addr_Col has exceeded the last valid row address Cm, the programming procedure is completed. Conversely, if the row address Addr_Col is less than or equal to the last valid row address Cm, the controller increments the position value of the row address Addr_Col by one (for example, Addr_Col=Addr_Col+1, which points to the next row address) to update. The row address Addr_Col (step S630). Then, control The controller determines whether the updated row address Addr_Col is the last valid row address Cm (step S660). If the updated row address Addr_Col is not the last valid row address Cm, then return to step S610. Then, the controller performs over-erase verification on the memory cell 210 corresponding to the updated row address Addr_Col, and performs a subsequent process. If the updated row address Addr_Col is the last valid row address Cm (ie, Addr_Col=Cm), the controller adds the extra bit lines CF1 and CF2 (step S670), so that the last valid row address can be simultaneously simultaneously. Addr_Col and additional lines CF1 and CF2 memory cells are verified. Then, in step S610, the controller performs over-erase verification on the memory cell 210 corresponding to the last valid row address Cm, the memory cell 220 of the extra row CF1, and the memory cell 230 of the extra row CF2. As previously described, if the result of the over-erase verification is a failure, the memory cell 210 corresponding to the row address Addr_Col is adjusted to correspond to the threshold voltage value of the memory cell 220 of the extra row CF1 and the memory cell 230 of the extra row CF2, And follow-up process.
第6B圖係根據本發明另一實施例所述之快閃記憶體之後編程程序的流程圖。同時參考第2圖與第6B圖,在此實施例中,快閃記憶體之感測放大器(例如第1圖之感測放大器120)係使用原有的讀取/寫入單元來對額外的記憶胞220與230執行讀取與寫入操作。首先,在步驟S610,根據行位址Addr_Col(例如Addr_Col=0,即起始位址),控制器會以行線(column)為單位而對對應於行位址Addr_Col之複數記憶胞210執行過度抹除驗證。接著,在步驟S620,控制器會判斷過度抹除驗證是否成功,例如判斷對應於行位址Addr_Col之全部記憶胞210是否有漏電流存在。若過度抹除驗證的結果為失敗(例如對應於行位址Addr_Col之至少一記憶胞210有漏電流存在),則 以行線為單位而對對應於行位址Addr_Col之全部記憶胞210執行後編程寫入操作(或軟編程(soft-program))(步驟S640),以調整記憶胞210的臨界電壓值。接著,回到步驟S610,控制器會對對應於行位址Addr_Col之複數記憶胞210執行過度抹除驗證(步驟S620),直到過度抹除驗證成功。當過度抹除驗證成功時,控制器會將行位址Addr_Col的位置值加一(例如Addr_Col=Addr_Col+1,即指向下一個行位址),以更新行位址Addr_Col(步驟S630)。接著,在步驟650,控制器會判斷行位址Addr_Col是否已超過最後有效行位址Cm。若行位址Addr_Col小於或等於最後有效行位址Cm,則回到步驟S610。於是,控制器會對對應於更新過之行Addr_Col之記憶胞210執行過度抹除驗證(步驟S610),並進行後續流程。在步驟S650中,若行位址Addr_Col已超過最後有效行位址Cm(即Addr_Col=Cm),則控制器會針對額外的位元線CF1與CF2而對對應於額外行CF1之記憶胞220以及對應於額外行CF2之記憶胞230執行過度抹除驗證(步驟S680)。接著,在步驟S682,控制器會判斷過度抹除驗證是否成功,即判斷記憶胞220與230是否有漏電流。若過度抹除驗證的結果為失敗(例如記憶胞220或記憶胞230有漏電流),則以行線為單位而對對應於額外行CF1之全部記憶胞220以及對應於額外行CF2之全部記憶胞230執行後編程寫入操作(S684),以調整對應於額外行CF1之記憶胞220以及對應於額外行CF2之記憶胞230的臨界電壓值,並回到步驟S680。於是,控制器會對記憶胞220與230重新執行過度抹除驗證(步驟S680)並進行後續程序,直到在步驟S682,控制器會判定過 度抹除驗證為成功,於是進行步驟S650,並進行後續流程。6B is a flow chart of a program after flash memory programming according to another embodiment of the present invention. Referring to FIG. 2 and FIG. 6B simultaneously, in this embodiment, the sense amplifier of the flash memory (for example, the sense amplifier 120 of FIG. 1) uses the original read/write unit to add additional Memory cells 220 and 230 perform read and write operations. First, in step S610, according to the row address Addr_Col (for example, Addr_Col=0, that is, the start address), the controller performs excessive execution on the plurality of memory cells 210 corresponding to the row address Addr_Col in units of a row line (column). Wipe the verification. Next, in step S620, the controller determines whether the over-erase verification is successful, for example, determines whether all of the memory cells 210 corresponding to the row address Addr_Col have leakage current. If the result of the over-erase verification is a failure (for example, at least one of the memory cells 210 corresponding to the row address Addr_Col has a leakage current), then A post-program write operation (or soft-program) is performed on all of the memory cells 210 corresponding to the row address Addr_Col in units of row lines (step S640) to adjust the threshold voltage value of the memory cell 210. Next, returning to step S610, the controller performs over-erase verification on the complex memory cell 210 corresponding to the row address Addr_Col (step S620) until the over-erase verification is successful. When the over-erase verification is successful, the controller increments the position value of the row address Addr_Col by one (for example, Addr_Col=Addr_Col+1, that is, points to the next row address) to update the row address Addr_Col (step S630). Next, at step 650, the controller determines if the row address Addr_Col has exceeded the last valid row address Cm. If the row address Addr_Col is less than or equal to the last valid row address Cm, then return to step S610. Then, the controller performs over-erase verification on the memory cell 210 corresponding to the updated row Addr_Col (step S610), and performs a subsequent process. In step S650, if the row address Addr_Col has exceeded the last valid row address Cm (ie, Addr_Col=Cm), the controller pairs the memory cells 220 corresponding to the extra row CF1 for the additional bit lines CF1 and CF2 and The memory cell 230 corresponding to the extra line CF2 performs over-erase verification (step S680). Next, in step S682, the controller determines whether the over-erase verification is successful, that is, whether the memory cells 220 and 230 have leakage current. If the result of the over-erase verification is a failure (for example, the memory cell 220 or the memory cell 230 has a leakage current), all the memory cells 220 corresponding to the extra row CF1 and all the memories corresponding to the extra row CF2 are stored in units of row lines. The cell 230 performs a post-program write operation (S684) to adjust the threshold voltage value of the memory cell 220 corresponding to the extra row CF1 and the memory cell 230 corresponding to the extra row CF2, and returns to step S680. Then, the controller re-executes the over-erasing verification on the memory cells 220 and 230 (step S680) and performs subsequent procedures until the controller determines in step S682. If the erasure verification is successful, then step S650 is performed and the subsequent process is performed.
第7圖係根據本發明一實施例所述之快閃記憶體之標記程序的流程圖。同時參考第2圖與第7圖,在此實施例中,記憶胞230係用來表示所對應之行線上的記憶胞是否已經完整地完成了抹除程序。值得注意的是,使用記憶胞230來記錄抹除程序的結果僅是個例子,並非用以限定本發明。在一實施例中,可使用記憶胞220來記錄抹除程序的結果。在另一實施例中,更可使用複數個記憶胞230或記憶胞220來記錄抹除程序的結果。首先,在步驟S710,根據列位址Addr_Row(例如Addr_Row=R0,即列起始位址),控制器會將對應於列位址Addr_Row之記憶胞230編程為邏輯位準“0”。接著,在步驟S720,控制器會對記憶胞230執行編程驗證。接著,在步驟S730,控制器會判斷編程驗證是否成功,例如記憶胞230是否為邏輯位準“0”。若編程驗證的結果為失敗(例如記憶胞230為邏輯位準“1”),則回到步驟S710,以重新對記憶胞230進行編程。反之,若編程驗證的結果為成功,控制器會判斷列位址Addr_Row是否已超過最後有效列位址Rn(步驟S740)。若列位址Addr_Row已超過最後有效列位址Rn,則完成標記程序。反之,若列位址Addr_Row小於或是等於最後有效列位址Rn,控制器會將列位址Addr_Row的位置值加一(例如Addr_Row=Addr_Row+1,即指向下一個列位址)(步驟S750),並回到步驟S710。接著,控制器會將對應於更新過之列位址Addr_Row之記憶胞230編程為邏輯位準“0”,並進行後續程序。Figure 7 is a flow chart of a marking procedure of a flash memory according to an embodiment of the invention. Referring to Figures 2 and 7, in this embodiment, the memory cell 230 is used to indicate whether the memory cell on the corresponding row line has completely completed the erase process. It is to be noted that the result of using the memory cell 230 to record the erase program is merely an example and is not intended to limit the invention. In an embodiment, memory cell 220 can be used to record the results of the erase process. In another embodiment, a plurality of memory cells 230 or memory cells 220 may be used to record the results of the erase process. First, in step S710, according to the column address Addr_Row (for example, Addr_Row = R0, that is, the column start address), the controller programs the memory cell 230 corresponding to the column address Addr_Row to a logic level "0". Next, in step S720, the controller performs program verification on the memory cell 230. Next, in step S730, the controller determines whether the program verification is successful, for example, whether the memory cell 230 is a logic level "0". If the result of the program verification is a failure (for example, the memory cell 230 is a logic level "1"), then return to step S710 to reprogram the memory cell 230. On the other hand, if the result of the program verification is successful, the controller determines whether the column address Addr_Row has exceeded the last valid column address Rn (step S740). If the column address Addr_Row has exceeded the last valid column address Rn, the marking procedure is completed. On the other hand, if the column address Addr_Row is less than or equal to the last valid column address Rn, the controller increments the position value of the column address Addr_Row by one (for example, Addr_Row=Addr_Row+1, that is, points to the next column address) (step S750) ), and returns to step S710. Next, the controller will program the memory cell 230 corresponding to the updated column address Addr_Row to a logic level "0" and perform subsequent procedures.
第8A圖係根據本發明另一實施例所述之快閃記憶 體之標記程序的流程圖。同時參考第2圖與第8A圖,在此實施例中,記憶胞220係用來表示所對應之列線上的記憶胞是否曾經執行編程程序。此外,快閃記憶體之感測放大器(例如第1圖之感測放大器120)係使用額外的讀取/寫入單元來對額外的記憶胞220執行讀取與寫入操作。值得注意的是,使用記憶胞220來記錄編程程序的結果僅是個例子,並非用以限定本發明。在一實施例中,可使用記憶胞230來記錄編程程序的結果,而記憶胞220則用來記錄區段是否完整完成抹除流程的標記。在另一實施例中,更可使用複數個記憶胞230或記憶胞220來記錄是否曾經執行編程程序及完成抹除流程的結果。在此實施例中,控制器會根據編程指令而以位元組或字元組為單位來對所選取之區段內之記憶胞210進行編程。首先,在步驟S810,當欲編程之資料為最後位元組資料時,控制器會根據位址Addr,而將最後位元組資料編程至所對應之記憶胞210,並將位在同一列之記憶胞220編程為邏輯位準“0”。接著,在步驟S820,控制器會對對應位址Addr所編程之記憶胞210與220執行編程驗證。接著,在步驟S830,控制器會判斷編程驗證是否成功,例如記憶胞210是否符合編程資料及記憶胞220是否為邏輯位準“0”。若編程驗證的結果為失敗(例如記憶胞220為邏輯位準“1”或是記憶胞210的邏輯位準有誤),則回到步驟S810,以重新對記憶胞210與220進行編程。反之,若編程驗證的結果為成功,則完成標記程序。8A is a flash memory according to another embodiment of the present invention. Flow chart of the body marking program. Referring to FIG. 2 and FIG. 8A simultaneously, in this embodiment, the memory cell 220 is used to indicate whether the memory cell on the corresponding column line has performed a programming procedure. In addition, a sense amplifier of a flash memory (such as sense amplifier 120 of FIG. 1) uses an additional read/write unit to perform read and write operations on additional memory cells 220. It is to be noted that the results of using the memory cell 220 to record programming procedures are merely examples and are not intended to limit the invention. In one embodiment, memory cell 230 can be used to record the results of the programming process, while memory cell 220 is used to record whether the segment completes the marking of the erase process. In another embodiment, a plurality of memory cells 230 or memory cells 220 can be used to record whether the programming process has been performed and the result of the erase process is completed. In this embodiment, the controller programs the memory cells 210 in the selected segment in units of bytes or groups of characters in accordance with programming instructions. First, in step S810, when the data to be programmed is the last byte data, the controller programs the last byte data to the corresponding memory cell 210 according to the address Addr, and places the bits in the same column. The memory cell 220 is programmed to a logic level of "0". Next, in step S820, the controller performs program verification on the memory cells 210 and 220 programmed by the corresponding address Addr. Next, in step S830, the controller determines whether the program verification is successful, for example, whether the memory cell 210 conforms to the programming data and whether the memory cell 220 is a logic level "0". If the result of the program verification is a failure (for example, the memory cell 220 is a logic level "1" or the logic cell 210 has an incorrect logic level), then the process returns to step S810 to reprogram the memory cells 210 and 220. Conversely, if the result of the program verification is successful, the marking process is completed.
第8B圖係根據本發明另一實施例所述之快閃記憶體之標記程序的流程圖。同時參考第2圖與第8B圖,在此實施 例中,記憶胞220係用來表示所對應之列線上的記憶胞是否曾經執行編程程序。此外,快閃記憶體之感測放大器(例如第1圖之感測放大器120)係使用原有的讀取/寫入單元來對額外的記憶胞220與230執行讀取與寫入操作。值得注意的是,使用記憶胞220來記錄編程程序的結果僅是個例子,並非用以限定本發明。在一實施例中,可使用記憶胞230來記錄是否曾經執行編程程序以及記憶胞220用來記錄區段是否完整完成抹除流程的標記之結果。在另一實施例中,更可使用複數個記憶胞230或記憶胞220來記錄編程程序的結果。在此實施例中,控制器會根據編程指令而以位元組或字元組為單位來對所選取之區段內之記憶胞210進行編程。在此實施例中,控制器會根據編程指令而以位元組或字元組為單位來對所選取之區段內之記憶胞210進行編程。首先,在步驟S840,當欲編程之資料為最後位元組資料時,控制器會根據位址Addr,而將最後位元組資料編程至所對應之記憶胞210。接著,在步驟S850,控制器會對所編程之記憶胞210執行編程驗證。接著,在步驟S860,控制器會判斷編程驗證是否成功。若編程驗證的結果為失敗(例如記憶胞210的邏輯位準有誤),則回到步驟S840,以重新對記憶胞210進行編程。反之,若記憶胞210之編程驗證的結果為成功,則將位在同一列之記憶胞220編程為邏輯位準“0”(步驟S870)。接著,在步驟S880,控制器會對所編程之記憶胞220執行編程驗證。接著,在步驟S890,控制器會判斷編程驗證是否成功,例如記憶胞220是否為邏輯位準“0”。若記憶胞220之編程驗證的結果為失敗(例如記憶胞220為邏輯位準“1”),則回到 步驟S870,以重新對記憶胞220進行編程。反之,若編程驗證的結果為成功,則完成標記程序。8B is a flow chart of a marking procedure of a flash memory according to another embodiment of the present invention. Referring to Figures 2 and 8B at the same time, implementation here In the example, the memory cell 220 is used to indicate whether the memory cell on the corresponding column line has performed a programming procedure. In addition, a sense amplifier of a flash memory (such as sense amplifier 120 of FIG. 1) uses a conventional read/write unit to perform read and write operations on additional memory cells 220 and 230. It is to be noted that the results of using the memory cell 220 to record programming procedures are merely examples and are not intended to limit the invention. In one embodiment, memory cell 230 can be used to record whether a program has been executed and the result of the flag used by memory cell 220 to record whether the segment has completely completed the erase process. In another embodiment, a plurality of memory cells 230 or memory cells 220 can be used to record the results of the programming process. In this embodiment, the controller programs the memory cells 210 in the selected segment in units of bytes or groups of characters in accordance with programming instructions. In this embodiment, the controller programs the memory cells 210 in the selected segment in units of bytes or groups of characters in accordance with programming instructions. First, in step S840, when the data to be programmed is the last byte data, the controller programs the last byte data to the corresponding memory cell 210 according to the address Addr. Next, in step S850, the controller performs program verification on the programmed memory cell 210. Next, in step S860, the controller determines whether the program verification is successful. If the result of the program verification is a failure (for example, the logic level of the memory cell 210 is incorrect), then return to step S840 to reprogram the memory cell 210. On the other hand, if the result of the program verification of the memory cell 210 is successful, the memory cell 220 in the same column is programmed to the logic level "0" (step S870). Next, in step S880, the controller performs program verification on the programmed memory cell 220. Next, in step S890, the controller determines whether the program verification is successful, for example, whether the memory cell 220 is a logic level "0". If the result of the program verification of the memory cell 220 is a failure (for example, the memory cell 220 is a logic level "1"), then it is returned. Step S870, to reprogram the memory cell 220. Conversely, if the result of the program verification is successful, the marking process is completed.
一般而言,在對記憶體陣列進行資料編程之前,控制器必須先確認所選用的區段是空白區段,才能將資料編程至該空白區段。一般而言,當有中斷情況發生在傳統之快閃記憶體的抹除過程中,則抹除程序不會被完整地執行。因此,在傳統的快閃記憶體中,控制器有時需要先對所選用的區段中的全部記憶胞進行抹除驗證,並執行過度抹除驗證,以便確認所選用的區段中沒有過度抹除的記憶胞存在,而完成整區段記憶胞的抹除驗證以及過度抹除驗證需要花費較多的時間。此外,對設置在可攜式電子裝置的快閃記憶體而言,為了加速執行抹除驗證以及過度抹除驗證,常藉由增加讀取單元以增加驗證速率,但亦會增加耗電。在本發明實施例中,藉由讀取設置在額外行線(例如第2圖的行線CF1與CF2)上之記憶胞(例如第2圖的記憶胞220與230)的狀態,控制器可確認所選用的區段是否完整地執行了抹除程序並進一步判斷所選用的區段是否為空白區段,而不需要對所選用的區段執行抹除驗證以及過度抹除驗證。因此,可加快判斷是否為空白區段的時間,並降低耗電量。舉例來說,在一實施例中,記憶胞220與記憶胞230係用來表示所對應之行線上的記憶胞是否已經完整地完成了抹除程序。若所選用之區段內的全部記憶胞230為邏輯位準“0”且全部記憶胞220為邏輯位準“1”,則控制器可判定該區段已完整地抹除,如下列表1所顯示。接著,控制器將資料編程至該區段內。在完成資料編程之後,控制器可使用先前所描述之標記程序來對 該區段之記憶胞220進行編程。在此實施例中,記憶胞220係用來表示所對應之行線上的記憶胞是否已被編程。舉例來說,在執行一頁資料編程的過程中,當最後位元組被編程之後,控制器可將相同列線上的記憶胞220編程為邏輯位準“0”。因此,若所選用之區段內的部分記憶胞220為邏輯位準“0”且全部記憶胞230為邏輯位準“0”,則控制器可判定該區段已被使用,並非空白區段。此外,若所選用之區段內的部分記憶胞230為邏輯位準“1”,則控制器可判定該區段未被完整地抹除。尤其是全部記憶胞220為邏輯位準“1”且全部記憶胞230亦為邏輯位準“1”,其係表示該區段發生過抹除中斷的情況,而有可能存在著過度抹除的記憶胞。因此,可根據第3圖之方法來重新對該區段之記憶胞進行抹除,以避免過度抹除的記憶胞存在,而造成資料完整性的誤判。In general, before programming the memory array, the controller must first confirm that the selected segment is a blank segment in order to program the data to the blank segment. In general, when an interrupt occurs during the erasure of a conventional flash memory, the erase program is not completely executed. Therefore, in conventional flash memory, the controller sometimes needs to perform erase verification on all the memory cells in the selected segment and perform over-erase verification to confirm that there is no excessive in the selected segment. The erased memory cell exists, and it takes more time to complete the erase verification of the entire segment of the memory cell and the over-erase verification. In addition, for the flash memory disposed in the portable electronic device, in order to speed up the execution of the erase verification and the over-erase verification, the read rate is often increased to increase the verification rate, but the power consumption is also increased. In the embodiment of the present invention, by reading the state of the memory cells (for example, the memory cells 220 and 230 of FIG. 2) disposed on the extra row lines (for example, the row lines CF1 and CF2 of FIG. 2), the controller may Confirm that the selected segment has completely executed the erase program and further determines whether the selected segment is a blank segment, without performing erase verification and over-erase verification on the selected segment. Therefore, it is possible to speed up the judgment of whether or not it is a blank section and reduce the power consumption. For example, in one embodiment, memory cell 220 and memory cell 230 are used to indicate whether the memory cell on the corresponding row line has completely completed the erase process. If all of the memory cells 230 in the selected segment are logic level "0" and all memory cells 220 are logic level "1", the controller may determine that the segment has been completely erased, as shown in Table 1 below. display. The controller then programs the data into the segment. After completing the data programming, the controller can use the previously described marking program to The memory cells 220 of this segment are programmed. In this embodiment, memory cell 220 is used to indicate whether the memory cells on the corresponding row lines have been programmed. For example, during the execution of a page of data programming, after the last byte is programmed, the controller can program the memory cell 220 on the same column line to a logic level of "0". Therefore, if some of the memory cells 220 in the selected segment are logic level "0" and all memory cells 230 are logic level "0", the controller can determine that the segment has been used, not a blank segment. . In addition, if a portion of the memory cells 230 in the selected segment are logic level "1", the controller can determine that the segment is not completely erased. In particular, all memory cells 220 are logic level "1" and all memory cells 230 are also logic level "1", which indicates that the sector has been erased and interrupted, and there may be excessive erasure. Memory cell. Therefore, the memory cells of the segment can be erased according to the method of FIG. 3 to avoid the existence of excessively erased memory cells and cause misjudgment of data integrity.
如先前所描述,藉由使用額外行線上的記憶胞來記錄記憶體陣列中所對應之列線上記憶胞的使用狀態,控制器可快速地判斷出所選用的區段是否空白。再者,藉由對整行之記憶胞進行標記,可有效分散旗標記憶胞的編程及抹除次數,而能達成與資料記憶胞相等的寫入次數(cycling time)。此外,記憶胞220與230的排列順序以及數量可根據實際應用而決定。As described previously, by using the memory cells on the extra line to record the state of use of the memory cells on the corresponding column lines in the memory array, the controller can quickly determine if the selected segment is blank. Furthermore, by marking the memory cells of the entire row, the programming and erasing times of the flag memory cells can be effectively dispersed, and the number of cycles equal to the data memory cells can be achieved. In addition, the order and number of memory cells 220 and 230 can be determined according to practical applications.
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中包括通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。Although the present invention has been disclosed in the above preferred embodiments, it is not intended to limit the invention, and it is intended that the invention may be modified and modified without departing from the spirit and scope of the invention. Therefore, the scope of the invention is defined by the scope of the appended claims.
S310-S340‧‧‧步驟S310-S340‧‧‧Steps
Claims (12)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW102135958A TWI501242B (en) | 2013-10-04 | 2013-10-04 | Erase method for flash |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW102135958A TWI501242B (en) | 2013-10-04 | 2013-10-04 | Erase method for flash |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201514997A TW201514997A (en) | 2015-04-16 |
| TWI501242B true TWI501242B (en) | 2015-09-21 |
Family
ID=53437714
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW102135958A TWI501242B (en) | 2013-10-04 | 2013-10-04 | Erase method for flash |
Country Status (1)
| Country | Link |
|---|---|
| TW (1) | TWI501242B (en) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP6144741B2 (en) * | 2015-09-28 | 2017-06-07 | ウィンボンド エレクトロニクス コーポレーション | Nonvolatile semiconductor memory |
| US20210035644A1 (en) * | 2019-08-01 | 2021-02-04 | Macronix International Co., Ltd. | Memory apparatus and data access method for memory |
Citations (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7277329B2 (en) * | 2005-10-04 | 2007-10-02 | Elite Semiconductor Memory Technology, Inc. | Erase method to reduce erase time and to prevent over-erase |
| US7558904B2 (en) * | 2004-07-23 | 2009-07-07 | Spansion Llc | Controller, data memory system, data rewriting method, and computer program product |
| US20100034026A1 (en) * | 2008-08-06 | 2010-02-11 | Samsung Electronics Co., Ltd. | Erase method and non-volatile semiconductor memory |
| US7669004B2 (en) * | 2003-12-31 | 2010-02-23 | Sandisk Corporation | Flash storage system with write-erase abort detection mechanism |
| US20120117307A1 (en) * | 2010-11-09 | 2012-05-10 | Eguchi Richard K | Non-volatile memory (nvm) erase operation with brownout recovery technique |
| JP2013033565A (en) * | 2011-08-01 | 2013-02-14 | Renesas Electronics Corp | Nonvolatile semiconductor memory device |
| US8433846B2 (en) * | 2001-08-24 | 2013-04-30 | Micron Technology, Inc. | Methods and apparatus reading erase block management data in subsets of sectors having user data and control data sections |
| WO2013069859A1 (en) * | 2011-11-09 | 2013-05-16 | 한양대학교 산학협력단 | Device and method for controlling flash memory for storing mapping table of block to be erased |
-
2013
- 2013-10-04 TW TW102135958A patent/TWI501242B/en active
Patent Citations (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8433846B2 (en) * | 2001-08-24 | 2013-04-30 | Micron Technology, Inc. | Methods and apparatus reading erase block management data in subsets of sectors having user data and control data sections |
| US7669004B2 (en) * | 2003-12-31 | 2010-02-23 | Sandisk Corporation | Flash storage system with write-erase abort detection mechanism |
| US7558904B2 (en) * | 2004-07-23 | 2009-07-07 | Spansion Llc | Controller, data memory system, data rewriting method, and computer program product |
| US7277329B2 (en) * | 2005-10-04 | 2007-10-02 | Elite Semiconductor Memory Technology, Inc. | Erase method to reduce erase time and to prevent over-erase |
| US20100034026A1 (en) * | 2008-08-06 | 2010-02-11 | Samsung Electronics Co., Ltd. | Erase method and non-volatile semiconductor memory |
| US20120117307A1 (en) * | 2010-11-09 | 2012-05-10 | Eguchi Richard K | Non-volatile memory (nvm) erase operation with brownout recovery technique |
| JP2013033565A (en) * | 2011-08-01 | 2013-02-14 | Renesas Electronics Corp | Nonvolatile semiconductor memory device |
| WO2013069859A1 (en) * | 2011-11-09 | 2013-05-16 | 한양대학교 산학협력단 | Device and method for controlling flash memory for storing mapping table of block to be erased |
Also Published As
| Publication number | Publication date |
|---|---|
| TW201514997A (en) | 2015-04-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7701764B2 (en) | Apparatus and method for reduced peak power consumption during common operation of multi-NAND flash memory devices | |
| US9703698B2 (en) | Data writing method, memory controller and memory storage apparatus | |
| CN106158033B (en) | memory circuit and operation method thereof | |
| US9263155B2 (en) | Data storing system and operating method thereof | |
| TWI482158B (en) | Method and apparatus for leakage suppression in flash memory in response to external commands | |
| TWI399751B (en) | Method for nitride trapping layer memory array word line retry erasing and threshold voltage recovering | |
| JP2003217288A (en) | Flash memory with reduced read disturb | |
| KR20120128014A (en) | Operating method of nonvolatile memory device and operating method of memory system including nonvolatile memory device | |
| US9390807B2 (en) | Erase method for flash | |
| KR20120005848A (en) | Nonvolatile Memory Device and Erasing Method thereof | |
| KR20130110970A (en) | Read voltage generation circuit, memory and memory system including the same | |
| CN114758689A (en) | Erasing method and power-on repair method for nonvolatile memory | |
| JP2015176628A (en) | Semiconductor memory device and memory controller | |
| TWI501242B (en) | Erase method for flash | |
| US10176876B2 (en) | Memory control method and apparatus for programming and erasing areas | |
| TWI663599B (en) | Memory device and method of refreshing data in the same | |
| CN114005479A (en) | Method and device for improving NOR Flash data read-write reliability and application thereof | |
| US20110238889A1 (en) | Semiconductor memory device from which data can be read at low power | |
| CN104102598A (en) | Data reading method, control circuit, memory module and memory storage device | |
| CN102237136A (en) | Memory sub-unit erasing method for memory device | |
| US11003393B2 (en) | Nonvolatile memory device and method of controlling initialization of the same | |
| TWI700702B (en) | Semiconductor memory device | |
| CN102568571B (en) | NOR gate type flash memory and its over-erasing verification and restoration method | |
| TWI442403B (en) | Erase process for use in semiconductor memory device | |
| CN104575604B (en) | The erasing method of flash memory |