dr的存儲單元210、對應(yīng)于地址Addr的額外列CF1的存儲單元220以及對應(yīng)于地址 Addr的額外列CF2的存儲單元230編程為邏輯位準(zhǔn)"0"(步驟S440),并進行后續(xù)流程。
[0032] 圖4B為根據(jù)本發(fā)明另一實施例所述的快閃存儲器的預(yù)編程程序的流程圖。同時 參考圖2與圖4B,在此實施例中,快閃存儲器的感測放大器(例如圖1的感測放大器120)是 使用原有的讀取/寫入單元來對額外的存儲單元220與230執(zhí)行讀取與寫入操作。首先,在 步驟S410,控制器會根據(jù)地址Addr(例如Addr=0,即起始地址)對對應(yīng)于地址Addr的位元 組或字元組內(nèi)的多個存儲單元210執(zhí)行預(yù)編程驗證。接著,在步驟S420,控制器會判斷預(yù)編 程驗證是否成功,例如判斷對應(yīng)于地址Addr的每一存儲單元210是否為邏輯位準(zhǔn)"0"。若 預(yù)編程驗證的結(jié)果為失?。ɡ鐚?yīng)于地址Addr的至少一存儲單元210為邏輯位準(zhǔn)" 1"), 則控制器會執(zhí)行預(yù)編程寫入操作,以便將對應(yīng)于地址Addr的全部存儲單元210編程為邏輯 位準(zhǔn)"0"(步驟S440)。接著,回到步驟S410。于是,控制器會重新對對應(yīng)于地址Addr的存 儲單元210執(zhí)行預(yù)編程驗證,直到控制器會判定預(yù)編程驗證為成功(步驟S420)。接著,控 制器會判斷地址Addr是否為最后有效列地址Cm(步驟S460)。若地址Addr不是最后有效 列地址Cm,則進行步驟S450。接著,在步驟450,控制器會判斷地址Addr是否已超過最后區(qū) 段地址Addr_last_Sector。若地址Addr已超過最后區(qū)段地址Addr_last_Sector,則完成 預(yù)編程程序。反之,若地址Addr未超過最后區(qū)段地址Addr_laSt_Sect〇r,則控制器會將地 址Addr的位置值加一(例如Addr=Addr+l,即指向下一個地址),以更新地址Addr。于是, 控制器會對對應(yīng)于更新過的地址Addr的存儲單元210執(zhí)行預(yù)編程驗證(步驟S410),并進 行后續(xù)流程。在步驟S460中,若地址Addr為最后有效列地址Cm(即Addr=Rn+Cm),則控制 器會針對額外的位元線CF1與CF2而對對應(yīng)于同一行地址的額外列CF1的存儲單元220與 對應(yīng)于同一行地址的額外列CF2的存儲單元230執(zhí)行預(yù)編程驗證(步驟S480)。接著,在步 驟S482,控制器會判斷預(yù)編程驗證是否成功,例如判斷存儲單元220與230是否為邏輯位準(zhǔn) "0"。若預(yù)編程驗證的結(jié)果為失敗(例如存儲單元220或存儲單元230為邏輯位準(zhǔn)"1"), 則控制器會執(zhí)行預(yù)編程寫入操作,以便將對應(yīng)于額外地址Addr的相同行地址的額外列CF1 的存儲單元220與額外列CF2的存儲單元230編程為邏輯位準(zhǔn)"0"(步驟S484),并回到步 驟S480。于是,控制器會重新對存儲單元220與230執(zhí)行預(yù)編程驗證(步驟S480)。接著, 回到步驟S482,直到控制器判定預(yù)編程驗證為成功,于是進行步驟S450,并進行后續(xù)流程。
[0033] 圖5A為根據(jù)本發(fā)明一實施例所述的快閃存儲器的抹除程序的流程圖。同時參考 圖2與圖5A,在此實施例中,快閃存儲器的感測放大器(例如圖1的感測放大器120)是使用 額外的讀取/寫入單元來對額外的存儲單元220與230執(zhí)行讀取與寫入操作。首先,在步驟 S510,控制器會將一區(qū)段內(nèi)的存儲單元210、220與230進行抹除。接著,在步驟S520,控制 器會根據(jù)地址Addr(例如Addr=0,即起始地址)而對對應(yīng)于地址Addr的位元組或字元組內(nèi) 的多個存儲單元210執(zhí)行抹除驗證。接著,在步驟S530,控制器會判斷抹除驗證是否成功, 例如判斷對應(yīng)于地址Addr的每一存儲單元210是否為邏輯位準(zhǔn)" 1"。若抹除驗證的結(jié)果為 失?。ɡ鐚?yīng)于地址Addr的至少一存儲單元210為邏輯位準(zhǔn)"0"),則回到步驟S510,以 重新抹除該區(qū)段內(nèi)的存儲單元210、220與230。反之,若抹除驗證的結(jié)果為成功,控制器會 判斷地址Addr是否大于最后區(qū)段地址Addr_last_Sector(步驟S540)。若地址Addr已超 過最后區(qū)段地址Addr_laSt_Sect〇r,則完成抹除程序。反之,若地址Addr小于或等于最后 區(qū)段地址Addr_last_Sector,則控制器會將地址Addr的位置值加一(例如Addr=Addr+l, 即指向下一個地址)(步驟S550),以更新地址Addr。接著,在步驟S560,控制器會判斷更新 過的地址Addr是否為最后有效列地址Cm。若更新過的地址Addr不是最后有效列地址Cm, 則回到步驟S520。于是,控制器會對對應(yīng)于更新過的地址Addr的存儲單元210執(zhí)行抹除 驗證,并進行后續(xù)流程。若更新過的地址Addr為最后有效列地址Cm(即Addr=Cm),則控制 器會將額外的位元線CF1與CF2加入(步驟S570),以便能同時地對地址Addr以及對應(yīng)于 相同行地址上的額外列CF1與CF2上的存儲單元進行驗證。于是,控制器會對對應(yīng)于最后 有效列地址Cm的存儲單元210、對應(yīng)于相同行地址的額外列CF1的存儲單元220以及對應(yīng) 于相同行地址的額外列CF2的存儲單元230執(zhí)行抹除驗證(步驟S520)并確認認證的結(jié)果 (步驟S530)。如先前所描述,若抹除驗證的結(jié)果為失敗,例如對應(yīng)于地址Addr上的最后有 效列地址Cm的存儲單元210、對應(yīng)于相同行地址的額外列CF1的存儲單元220以及額外列 CF2的存儲單元230的任一者為邏輯位準(zhǔn)"0",則回到步驟S510,以重新對該區(qū)段內(nèi)的存儲 單元210、220與230進行抹除。
[0034] 圖5B為根據(jù)本發(fā)明另一實施例所述的快閃存儲器的抹除程序的流程圖。同時參 考圖2與圖5B,在此實施例中,快閃存儲器的感測放大器(例如圖1的感測放大器120)是 使用原有的讀取/寫入單元來對額外的存儲單元220與230執(zhí)行讀取與寫入操作。首先,在 步驟S510,控制器會將一區(qū)段內(nèi)的存儲單元210、220與230進行抹除。接著,在步驟S520, 控制器會根據(jù)地址Addr(例如Addr=0,即起始地址)而對對應(yīng)于地址Addr的位元組或字 元組內(nèi)的多個存儲單元210執(zhí)行抹除驗證。接著,在步驟S530,控制器會判斷抹除驗證是 否成功,例如判斷對應(yīng)于地址Addr的每一存儲單元210是否為邏輯位準(zhǔn)" 1"。若抹除驗證 的結(jié)果為失?。ɡ鐚?yīng)于地址Addr的至少一存儲單元210為邏輯位準(zhǔn)"0"),則回到步 驟S510,以重新抹除將該區(qū)段內(nèi)的存儲單元210、220與230。反之,若抹除驗證的結(jié)果為成 功,控制器會判斷地址Addr是否為最后有效列地址Cm(步驟S560)。若地址Addr不是最后 有效列地址Cm,則控制器會判斷地址Addr是否大于最后區(qū)段地址Addr_last_Sector(步 驟S540)。若地址Addr已超過最后區(qū)段地址Addr_last_Sector,則完成抹除程序。反之, 若地址Addr小于或等于最后區(qū)段地址Addr_last_SeCt〇r,則控制器會將地址Addr的位置 值加一(例如Addr=Addr+l,即指向下一個地址)(步驟S550),以更新地址Addr,并回到步 驟S520。于是,控制器會對對應(yīng)于更新過的地址Addr的存儲單元210執(zhí)行抹除驗證,并進 行后續(xù)流程。在步驟S560中,若地址Addr為最后有效列地址Cm(即Addr=Cm),則控制器會 針對額外位元線CF1與CF2而對對應(yīng)于相同行地址上的額外列CF1的存儲單元220與額外 列CF2的存儲單元230執(zhí)行抹除驗證(步驟S580)。接著,在步驟S582,控制器會判斷抹除 驗證是否成功,例如判斷存儲單元220與230是否為邏輯位準(zhǔn)" 1"。若抹除驗證的結(jié)果為失 敗(例如存儲單元220或是存儲單元230為邏輯位準(zhǔn)"0"),則控制器會重新抹除將該區(qū)段 內(nèi)的存儲單元210、220與230 (步驟S584)。接著,控制器會對存儲單元220與230重新執(zhí) 行抹除驗證(步驟S580)。接著,重復(fù)執(zhí)行抹除驗證(步驟S582)以及重新執(zhí)行抹除(步驟 S584),直到控制器會判定抹除驗證為成功,于是進行步驟S540,并進行后續(xù)流程。
[0035] 圖6A為根據(jù)本發(fā)明一實施例所述的快閃存儲器的后編程程序的流程圖。執(zhí)行后 編程程序的目的在于修復(fù)過度抹除的存儲單元。一般而言,當(dāng)經(jīng)過抹除程序之后,快閃存儲 器的存儲單元的臨界電壓值可能會降低。當(dāng)臨界電壓值太低時(例如小于〇),存儲單元會 發(fā)生過度抹除現(xiàn)象,其所引起的漏電流將會導(dǎo)致控制器會無法正確地識別該存儲單元以及 該列其他存儲單元所儲存的數(shù)據(jù)。同時參考圖2與圖6A,在此實施例中,快閃存儲器的感 測放大器(例如圖1的感測放大器120)是使用額外的讀取/寫入單元來對額外的存儲單 元220與230執(zhí)行讀取與寫入操作。首先,在步驟S610,根據(jù)列地址Addr_Col(例如Addr_ C〇1=0,即起始地址),控制器會以列線(column)為單位而對對應(yīng)于列地址Addr_Col的多個 存儲單元210執(zhí)行過度抹除驗證。接著,在步驟S620,控制器會判斷過度抹除驗證是否成 功,例如判斷對應(yīng)于列地址Addr_Col的全部存儲單元210均未選取時,驗證該列線上是否 有漏電流存在。若過度抹除驗證的結(jié)果為失?。ɡ鐚?yīng)于列地址Addr_Col的至少一存 儲單元210有漏電流存在),則以列線為單位而對對應(yīng)于列地址Addr_Col的全部存儲單元 210執(zhí)行后編程寫入操作(或軟編程(soft-program))(步驟S640),以調(diào)整存儲單元210 的臨界電壓值。接著,回到步驟S610,控制器會對對應(yīng)于列地址Addr_Col的多個存儲單元 210執(zhí)行過度抹除驗證(步驟S620),直到過度抹除驗證成功。當(dāng)過度抹除驗證成功時,控 制器會判斷列地址Addr_Col是否已超過最后有效列地址Cm(步驟S650)。若列地址Addr_ Col已超過最后有效列地址Cm,則完成后編程程序。反之,