本發(fā)明是有關(guān)于存儲(chǔ)器單元的讀取。
背景技術(shù):
::存儲(chǔ)在存儲(chǔ)器陣列的存儲(chǔ)器單元中的數(shù)據(jù)可通過施加一電壓到存儲(chǔ)器單元而被讀取,此電壓被稱為讀取電壓電平或讀取電平。在一些存儲(chǔ)器陣列中,讀取電平可以是一固定電壓電平。存儲(chǔ)器單元的臨界電壓可隨著時(shí)間改變,使得使用一固定讀取電平會(huì)造成從存儲(chǔ)器單元中讀取數(shù)據(jù)的不精確。技術(shù)實(shí)現(xiàn)要素:本發(fā)明描述改善在存儲(chǔ)器陣列存儲(chǔ)器單元上執(zhí)行的讀取操作的精確性的裝置、系統(tǒng)及技術(shù)。在一實(shí)施例中,當(dāng)寫入數(shù)據(jù)到存儲(chǔ)器陣列中的存儲(chǔ)器單元時(shí),例如一閃存芯片時(shí),計(jì)算數(shù)據(jù)中的「高臨界電壓」或者「低臨界電壓」的位的數(shù)目,并存儲(chǔ)為一紀(jì)錄計(jì)數(shù)數(shù)目(recordedcountnumber,rcn)。在一些實(shí)施例中,高臨界電壓位對(duì)應(yīng)位‘0’,而低臨界電壓位對(duì)應(yīng)位‘1’。然而,在其他實(shí)施例中,高臨界電壓位對(duì)應(yīng)位‘1’,而低臨界電壓位對(duì)應(yīng)位‘0’。當(dāng)接收到一讀取指令時(shí),對(duì)從存儲(chǔ)器單元中感應(yīng)的數(shù)據(jù)使用一第一讀取電平執(zhí)行一第一讀取操作,并再次基于感應(yīng)數(shù)據(jù)計(jì)算高臨界電壓位或者低臨界電壓位的數(shù)目以產(chǎn)生一瞬時(shí)計(jì)數(shù)數(shù)目(instantcounternumber,icn)。取得瞬時(shí)計(jì)數(shù)數(shù)目(icn)與紀(jì)錄計(jì)數(shù)數(shù)目(rcn)之間的差值。如果此差值大于一第一臨界值,這表示存儲(chǔ)器數(shù)據(jù)可能無法被一錯(cuò)誤校正碼(errorcorrectingcode,ecc)校正。在此情況下,使用不同的讀取電平執(zhí)行一或多個(gè)額外的讀取操作。在一實(shí)施例中,如果此差值為負(fù)的,則在執(zhí)行一第二讀取操作時(shí)增加讀取電平。如果此差值為正的,則在執(zhí)行第二讀取操作時(shí)減少讀取電平。進(jìn)一步地,在一些選擇性的實(shí)施例中,如果此差值很大,例如大于一第二臨界值,這表示存儲(chǔ)在數(shù)據(jù)中有大量的位翻轉(zhuǎn)(flipped),則以一大量增加(或視應(yīng)用而減少)讀取電平。第二讀取操作是使用更新的讀取電平來執(zhí)行,且此流程可重復(fù)直到(1)此差值小于第一臨界值,或者(2)讀取操作的次數(shù)超過讀取操作的上限。接著輸出從存儲(chǔ)器中讀取的數(shù)據(jù)。通過此方法,響應(yīng)于一讀取指令,可通過使用不同的讀取電平執(zhí)行讀取操作額外以從存儲(chǔ)器陣列中的存儲(chǔ)器單元讀出數(shù)據(jù),這些讀取電平可在連續(xù)的讀取操作中動(dòng)態(tài)的改變。在一實(shí)施例中,在決定紀(jì)錄計(jì)數(shù)數(shù)目(rcn)之后,在紀(jì)錄計(jì)數(shù)數(shù)目的位上計(jì)算一ecc值并存儲(chǔ)此ecc值。當(dāng)在之后的一讀取操作期間中紀(jì)錄計(jì)數(shù)數(shù)目(rcn)被讀取時(shí),使用此ecc值校正紀(jì)錄計(jì)數(shù)數(shù)目(rcn)。如果此紀(jì)錄計(jì)數(shù)數(shù)目(rcn)無法被校正,則中止額外的讀取操作。根據(jù)本發(fā)明的一個(gè)方面,提供了一種存儲(chǔ)器讀取方法。該存儲(chǔ)器讀取方法包括:使用一第一電壓電平執(zhí)行一第一讀取操作以從一存儲(chǔ)器陣列讀取一數(shù)據(jù);決定對(duì)應(yīng)于從該存儲(chǔ)器陣列中讀取的該數(shù)據(jù)的位的數(shù)目的一瞬時(shí)位計(jì)數(shù);取得對(duì)應(yīng)于一被寫入的數(shù)據(jù)的位的數(shù)目的一記錄位計(jì)數(shù),該被寫入的數(shù)據(jù)于一時(shí)間被寫入到該存儲(chǔ)器陣列;取得該瞬時(shí)位計(jì)數(shù)與該記錄位計(jì)數(shù)之間的一差值;一旦決定該差值為小于或等于一第一臨界值,輸出從該存儲(chǔ)器陣列使用該第一讀取操作讀取的該數(shù)據(jù);以及一旦決定該差值為大于該第一臨界值,執(zhí)行一第二讀取操作以從該存儲(chǔ)器陣列讀取該數(shù)據(jù),該第二讀取操作使用不同于該第一電壓電平的一第二電壓電平。根據(jù)本發(fā)明的另一方面,還提供了一種存儲(chǔ)器裝置。該存儲(chǔ)器裝置包括:一第一存儲(chǔ)單元,用以存儲(chǔ)使用一寫入操作而被寫入到一存儲(chǔ)器陣列的一數(shù)據(jù)的位的數(shù)目對(duì)應(yīng)的一記錄位計(jì)數(shù);一第二存儲(chǔ)單元,用以存儲(chǔ)從該存儲(chǔ)器陣列中使用一第一電壓電平執(zhí)行一第一讀取操作讀取的一數(shù)據(jù)的位的數(shù)目的對(duì)應(yīng)的一瞬時(shí)位計(jì)數(shù);以及一控制器,耦接到該第一存儲(chǔ)單元及該第二存儲(chǔ)單元,并用以執(zhí)行多個(gè)操作。其中,控制器執(zhí)行的多個(gè)操作包含:從該第一存儲(chǔ)單元取得該記錄位計(jì)數(shù)及從該第二存儲(chǔ)單元中取得該瞬時(shí)位計(jì)數(shù);取得該瞬時(shí)位計(jì)數(shù)與該記錄位計(jì)數(shù)之間的一差值;一旦決定該差值為小于或等于一第一臨界值,輸出從該存儲(chǔ)器陣列使用該第一讀取操作讀取的該數(shù)據(jù);以及一旦決定該差值為大于該第一臨界值,執(zhí)行一第二讀取操作以從該存儲(chǔ)器陣列讀取該數(shù)據(jù),該第二讀取操作使用不同于該第一電壓電平的一第二電壓電平。上述技術(shù)的實(shí)施更包含系統(tǒng)、方法、計(jì)算機(jī)程序產(chǎn)品及一計(jì)算機(jī)可讀取媒體。這種計(jì)算機(jī)程序產(chǎn)品適合用在非瞬時(shí)的機(jī)器可讀取媒體,此非瞬時(shí)的機(jī)器可讀取媒體使用一或多個(gè)處理器存儲(chǔ)多個(gè)指令。這些指令用以使一或多個(gè)處理器執(zhí)行上述動(dòng)作。此非瞬時(shí)的機(jī)器可讀取媒體使用一或多個(gè)處理器存儲(chǔ)多個(gè)指令,以在當(dāng)一或多個(gè)處理器執(zhí)行指令時(shí)使一或多個(gè)處理器執(zhí)行上述動(dòng)作。通過此方法,通過使用動(dòng)態(tài)讀取電平執(zhí)行額外的讀取操作,可從存儲(chǔ)器陣列中的存儲(chǔ)器單元可靠地讀出數(shù)據(jù)。通過重復(fù)地執(zhí)行額外的讀取操作,感應(yīng)的存儲(chǔ)器數(shù)據(jù)的錯(cuò)誤位的數(shù)目可降低到小于ecc可被校正的最大位計(jì)數(shù)。據(jù)此,可精確地讀取存儲(chǔ)器資料而不需要增加ecc能力以處理大量的錯(cuò)誤位。通過此方法,此文中所描述的裝置、系統(tǒng)及技術(shù)可在其他存儲(chǔ)器單元發(fā)生退化時(shí)延長存儲(chǔ)器單元的使用生命周期,或者作為保存用。此裝置、系統(tǒng)及技術(shù)可被應(yīng)用到多種非揮發(fā)存儲(chǔ)器陣列,例如nand閃存或nor閃存,或者其他包含對(duì)存儲(chǔ)在存儲(chǔ)器單元中的數(shù)據(jù)具有ecc校正能力的非揮發(fā)存儲(chǔ)器。這些存儲(chǔ)器可包含單階存儲(chǔ)單元(single-levelcells,slcs),或者多階存儲(chǔ)單元(multi-levelcells,mlcs)如三階存儲(chǔ)單元(triple-levelcells,tlcs)或四階存儲(chǔ)單元(quadruple-levelcells,qlcs)等等。以下參照所附的附圖及實(shí)施例描述本發(fā)明的一或多個(gè)應(yīng)用。其他特征、觀點(diǎn)及優(yōu)點(diǎn)可以從下列的實(shí)施例描述、附圖及權(quán)利要求中得知。附圖說明圖1a及圖1b繪示在存儲(chǔ)器單元上使用一固定讀取電平執(zhí)行讀取操作的一例。圖2a及圖2b繪示依據(jù)一實(shí)施例在存儲(chǔ)器單元上使用動(dòng)態(tài)讀取電平執(zhí)行讀取操作的一例。圖3繪示依據(jù)一實(shí)施例決定一動(dòng)態(tài)讀取電平的一例。圖4a及圖4b繪示依據(jù)一實(shí)施例在存儲(chǔ)器單元上使用動(dòng)態(tài)讀取電平執(zhí)行讀取操作的一裝置的一例。圖5a及圖5b繪示依據(jù)一實(shí)施例在存儲(chǔ)器單元上使用動(dòng)態(tài)讀取電平執(zhí)行一讀取操作且具有對(duì)紀(jì)錄計(jì)數(shù)數(shù)目進(jìn)行錯(cuò)誤校正的一裝置的一例。圖6繪示依據(jù)一實(shí)施例在存儲(chǔ)器單元上使用動(dòng)態(tài)讀取電平執(zhí)行讀取操作的一流程的一例。圖7繪示依據(jù)另一實(shí)施例在存儲(chǔ)器單元上使用動(dòng)態(tài)讀取電平執(zhí)行讀取操作的一流程的一例。圖8繪示依據(jù)一實(shí)施例在存儲(chǔ)器單元上使用動(dòng)態(tài)讀取電平執(zhí)行一讀取操作且具有對(duì)紀(jì)錄計(jì)數(shù)數(shù)目進(jìn)行錯(cuò)誤校正的一流程的一例?!痉?hào)說明】110、210:讀取窗112、114、212、214:讀取電平120、130、130’、220、230、230’:臨界電壓分布x1、x2、x2’、v1、v2、v2’:電壓電平m:動(dòng)態(tài)讀取電平臨界值410、510:處理器420、520:存儲(chǔ)器控制器402、502:存儲(chǔ)器陣列404、504:數(shù)據(jù)ecc存儲(chǔ)器406、506:記錄計(jì)數(shù)存儲(chǔ)器407:瞬時(shí)計(jì)數(shù)存儲(chǔ)器508:計(jì)數(shù)ecc存儲(chǔ)器ecc:錯(cuò)誤校正碼cnt:記錄計(jì)數(shù)值cntecc:記錄計(jì)數(shù)值錯(cuò)誤校正碼icn:瞬時(shí)計(jì)數(shù)數(shù)目rcn:紀(jì)錄計(jì)數(shù)數(shù)目600、700、800:流程602~620、702~718、802~826:流程步驟具體實(shí)施方式存儲(chǔ)器陣列中的存儲(chǔ)器單元,例如一nand閃存芯片,可通過施加一特定電壓電平的電壓到存儲(chǔ)器單元的柵極而被讀取而例如取得存儲(chǔ)器單元中存儲(chǔ)的一或多個(gè)位的值,此特定電壓電平被稱為存儲(chǔ)器單元的讀取電平。此讀取電平可以是在容許電壓的限定范圍內(nèi)的一固定值,此容許電壓的限定范圍被稱為讀取窗(讀取窗)。圖1a及圖1b繪示在存儲(chǔ)器單元上使用一固定讀取電平執(zhí)行讀取操作的一例。如圖1a所示,一存儲(chǔ)器陣列的讀取窗,例如存儲(chǔ)器的頁(page)或塊(chunk)的讀取窗被標(biāo)記為110,具有一下限的電壓電平x1及一上限的電壓電平x2。臨界電壓分布120和130用來編程存儲(chǔ)器單元,例如寫入數(shù)據(jù)到存儲(chǔ)器單元,或從存儲(chǔ)器單元抹除數(shù)據(jù)。存儲(chǔ)器陣列中的存儲(chǔ)器單元為可ecc被校正的(ecc-correctable)。也就是說,在存儲(chǔ)器數(shù)據(jù)中的位的數(shù)目并未超過施加ecc校正可校正的一最大位計(jì)數(shù)的情況下,當(dāng)從存儲(chǔ)器單元讀取數(shù)據(jù)時(shí),存儲(chǔ)器數(shù)據(jù)中的位的數(shù)目被翻轉(zhuǎn)(flipped)或改變(例如與寫入數(shù)據(jù)的時(shí)候的值相比,值從‘0’改變到‘1’或者從‘1’改變到‘0’)可被校正。在存儲(chǔ)器位被存儲(chǔ)在存儲(chǔ)器單元中的時(shí)候,有多種原因會(huì)造成存儲(chǔ)器位的值可能會(huì)改變,例如物理?xiàng)l件如溫度的改變,或者編程電壓施加到鄰近的存儲(chǔ)器單元。另外,更可能因?yàn)榇鎯?chǔ)器讀取操作中的缺陷,例如施加的讀取電平相比于存儲(chǔ)器單元的臨界電壓太低或太高造成不精確的讀取而導(dǎo)致存儲(chǔ)器位的值改變。為了啟動(dòng)ecc校正,當(dāng)寫入數(shù)據(jù)到存儲(chǔ)器單元時(shí),使用一合適的ecc算法計(jì)算數(shù)據(jù)上的一ecc值,并存儲(chǔ)此ecc值到一存儲(chǔ)器位置或其他合適的硬件,例如一緩存器或硬盤中。當(dāng)從存儲(chǔ)器陣列中讀取數(shù)據(jù)時(shí),結(jié)合存儲(chǔ)的ecc值與感應(yīng)數(shù)據(jù)(例如在存儲(chǔ)器數(shù)據(jù)與ecc值之間執(zhí)行一xor操作)以校正位中的錯(cuò)誤。使用的ecc算法限制了可被校正的錯(cuò)誤位的最大數(shù)目,或者用來存儲(chǔ)ecc值使用的位計(jì)數(shù)限制了可被校正的錯(cuò)誤位的最大數(shù)目,或者兩者皆限制了可被校正的錯(cuò)誤位的最大數(shù)目。在圖1a中,如果讀取電平位于讀取窗110中,例如介于電壓電平x1和電壓電平x2之間,則執(zhí)行對(duì)應(yīng)的讀取操作感應(yīng)到的存儲(chǔ)器數(shù)據(jù)可通過施加ecc校正而被校正。舉例來說,如果讀取電平位于112,介于電壓電平x1和電壓電平x2之間,則存儲(chǔ)器數(shù)據(jù)讀取是位于存儲(chǔ)器陣列的ecc能力之內(nèi),存儲(chǔ)器數(shù)據(jù)中的錯(cuò)誤位的數(shù)目可通過ecc操作而被校正。然而,如果讀取電平位于讀取窗110之外,例如低于電壓電平x1或高于電壓電平x2,則在存儲(chǔ)器數(shù)據(jù)中錯(cuò)誤位的數(shù)目大于施加ecc校正可校正的最大位計(jì)數(shù)。舉例來說,如果讀取電平位于114,則存儲(chǔ)器數(shù)據(jù)無法使用ecc操作校正。因此,讀取電平是固定在讀取窗110內(nèi)的一值,例如位于112。當(dāng)耦接到存儲(chǔ)器陣列的一處理器發(fā)布一讀取指令時(shí),一存儲(chǔ)器控制器設(shè)定讀取電平到一預(yù)選值,例如112,并對(duì)存儲(chǔ)器單元使用一固定讀取電平執(zhí)行一感應(yīng)操作以得到存儲(chǔ)數(shù)據(jù)。之后,存儲(chǔ)器控制器執(zhí)行ecc操作以校正被讀取的存儲(chǔ)器數(shù)據(jù)中的錯(cuò)誤位。如果錯(cuò)誤位被ecc校正,則讀取操作被視為成功。然而,如果錯(cuò)誤位無法被ecc校正,則讀取操作為失敗。在一些情況中,用于編程或抹除存儲(chǔ)器單元的臨界電壓分布可能會(huì)改變,例如因?yàn)殡S著時(shí)間流逝的數(shù)據(jù)保存、數(shù)據(jù)損失、或者物理磨損(wear)或撕裂(tear)中存儲(chǔ)器單元的退化及其他原因而改變。在此情況下,讀取窗可能會(huì)偏移,例如變小。舉例來說,圖1b繪示了臨界電壓分布130因?yàn)閿?shù)據(jù)保存而改變?yōu)?30’,且讀取窗也隨之改變?yōu)?10’,讀取窗的上限降低為電壓電平x2’。固定讀取電平112現(xiàn)在大于x2’且位于讀取窗110’之外。因此,當(dāng)使用固定讀取電平112執(zhí)行一讀取操作時(shí),存儲(chǔ)器數(shù)據(jù)的錯(cuò)誤位的數(shù)目大于可被ecc校正地最大位計(jì)數(shù)。因此,使用固定讀取電平112讀取的存儲(chǔ)器數(shù)據(jù)不能被精確地讀取。對(duì)更高密度的存儲(chǔ)器,例如縮小工藝的存儲(chǔ)器或者多階存儲(chǔ)單元(mlcs),使用固定讀取電平讀取存儲(chǔ)器數(shù)據(jù)可能更加困難,因?yàn)閿?shù)據(jù)保存或其他存儲(chǔ)器單元的退化導(dǎo)致如上述的讀取窗偏移,讀取窗可能更小且固定讀取電平可能更容易位于讀取窗之外。同時(shí),這種高密度的存儲(chǔ)器單元使用較高的ecc能力以校正因?yàn)榭s小工藝或者多階存儲(chǔ)單元(mlcs)的臨界電壓電平更精細(xì)的變化導(dǎo)致的更多數(shù)量的位錯(cuò)誤。然而,由于讀取窗偏移,當(dāng)使用一固定讀取電平時(shí),存儲(chǔ)器數(shù)據(jù)中的錯(cuò)誤位的數(shù)目仍有可能超過更高的ecc能力。在一些實(shí)施例中,更希望能在存儲(chǔ)器數(shù)據(jù)中的錯(cuò)誤位無法被ecc校正時(shí),改善存儲(chǔ)器讀取操作的精確性,并減少讀取失敗的發(fā)生。如以下段落所述,可通過響應(yīng)于一讀取指令使用動(dòng)態(tài)改變的一讀取電平執(zhí)行額外的讀取操作達(dá)成上述效果。此讀取電平可隨著偵測(cè)大于存儲(chǔ)器陣列的ecc校正能力的存儲(chǔ)器數(shù)據(jù)中的錯(cuò)誤位的數(shù)目而被調(diào)整。額外的讀取操作使用設(shè)定為一值的讀取電平,其中此值會(huì)造成從存儲(chǔ)器讀取的數(shù)據(jù)中的較低數(shù)目的位錯(cuò)誤,且此較低數(shù)目的位錯(cuò)誤可被ecc校正。通過此方法,可減少較高ecc能力的需求而可減輕數(shù)據(jù)保存或其他存儲(chǔ)器單元退化的影響。以下段落描述使用動(dòng)態(tài)讀取電平執(zhí)行多個(gè)讀取操作的存儲(chǔ)器陣列及相關(guān)裝置、系統(tǒng)及技術(shù)。在一實(shí)施例中,以下段落描述的系統(tǒng)、方法及技術(shù)被應(yīng)用到包含ecc能力的一非揮發(fā)存儲(chǔ)器陣列,例如閃存芯片。然而,在其他實(shí)施例中,以下段落描述的系統(tǒng)、方法及技術(shù)也可被應(yīng)用到其他種類的存儲(chǔ)器。圖2a及圖2b說明依據(jù)一實(shí)施例在存儲(chǔ)器單元上使用動(dòng)態(tài)讀取電平執(zhí)行讀取操作的一例。如圖2a所示,一存儲(chǔ)器陣列的讀取窗,例如存儲(chǔ)器單元的頁(page)或塊(chunk)的讀取窗被標(biāo)記為210,具有一下限的電壓電平v1及一上限的電壓電平v2。臨界電壓分布220和230用來編程存儲(chǔ)器單元,或從存儲(chǔ)器單元抹除數(shù)據(jù)。存儲(chǔ)器陣列中的存儲(chǔ)器單元為可被ecc校正的。一讀取電平位于讀取窗210中,例如介于電壓電平v1和電壓電平v2之間,而位于存儲(chǔ)器陣列的ecc校正能力中。舉例來說,使用讀取電平212執(zhí)行一讀取操作,則存儲(chǔ)器數(shù)據(jù)中的錯(cuò)誤位的數(shù)目并未超過可被ecc校正的最大位計(jì)數(shù)而可通過ecc操作而校正數(shù)據(jù)。然而,如果讀取電平位于讀取窗210之外,例如低于電壓電平v1或高于電壓電平v2,則在讀取操作感應(yīng)的存儲(chǔ)器數(shù)據(jù)中錯(cuò)誤位的數(shù)目大于ecc校正可校正的最大位計(jì)數(shù)。舉例來說,如果讀取電平位于214,則無法使用ecc操作校正存儲(chǔ)器數(shù)據(jù)。為了判斷讀取電平是否位于滿足存儲(chǔ)器陣列的ecc校正能力的電壓范圍內(nèi),圖2a和圖2b中的讀取操作執(zhí)行一額外的檢查。一動(dòng)態(tài)讀取電平臨界值m被用于存儲(chǔ)器陣列。在一實(shí)施例中,如圖2a和圖2b所示,m為一正整數(shù),對(duì)應(yīng)于小于可被ecc(ecc校正能力)校正的最大位計(jì)數(shù)的一位計(jì)數(shù)。在另一實(shí)施例中,m可對(duì)應(yīng)為存儲(chǔ)器陣列的ecc能力的相同位計(jì)數(shù)。在一實(shí)施例中,m為針對(duì)裝置400設(shè)定的一系統(tǒng)參數(shù)。在另一實(shí)施例中,m為一組態(tài)參數(shù),例如裝置400的一用戶可在使用此裝置之前設(shè)定參數(shù)m。如下文中更詳細(xì)的描述,當(dāng)響應(yīng)于一讀取指令執(zhí)行一讀取操作時(shí),計(jì)算一位計(jì)數(shù)差值δbc,此位計(jì)數(shù)差值對(duì)應(yīng)一位計(jì)數(shù),此位計(jì)數(shù)為讀取操作與寫入到存儲(chǔ)器陣列的時(shí)候相比存儲(chǔ)器數(shù)據(jù)中值改變的位計(jì)數(shù)。δbc與m進(jìn)行比較。如果絕對(duì)差值|δbc|小于或等于m(即|δbc|≤m),則此值改變的位計(jì)數(shù)被決定為位于存儲(chǔ)器陣列的ecc能力之內(nèi),且讀取操作中觀察到的位錯(cuò)誤可被ecc校正。舉例來說,如果使用讀取電平212執(zhí)行一讀取操作,則|δbc|≤m且存儲(chǔ)器數(shù)據(jù)是可被ecc校正的。在此情況下,不需要額外的存儲(chǔ)器讀取操作。另一方面,如果|δbc|大于m(即|δbc|>m),(i.e.,|δbc|>m),則此值改變的位計(jì)數(shù)可能位于存儲(chǔ)器陣列的ecc能力之外,使得不能確定讀取操作中觀察到的位錯(cuò)誤可被ecc校正。舉例來說,如果使用讀取電平214執(zhí)行一讀取操作,則|δbc|>m且存儲(chǔ)器數(shù)據(jù)可能不是可被ecc校正的。在此情況下,使用不同的讀取電平執(zhí)行一或多個(gè)額外的讀取操作。舉例來說,讀取電平214是低于讀取窗210的下限v1。使用一較高讀取電平,例如一位于讀取窗210之內(nèi)且大于v1的一讀取電平執(zhí)行一第二讀取操作。由于數(shù)據(jù)保存或者存儲(chǔ)器單元的退化等原因,用于編程或抹除存儲(chǔ)器單元的臨界電壓分布可能會(huì)隨時(shí)間改變。在此情況下,讀取窗可能會(huì)偏移,例如變小。舉例來說,圖2b繪示了臨界電壓分布230改變?yōu)?30’,且讀取窗也隨之改變?yōu)?10’,讀取窗的上限降低為電壓電平v2’。讀取電平212大于v2’且位于讀取窗210’之外。因此,如果現(xiàn)在使用讀取電平212執(zhí)行一讀取操作,則存儲(chǔ)器數(shù)據(jù)的錯(cuò)誤不能被ecc校正。在此情況下,使用動(dòng)態(tài)讀取電平執(zhí)行額外的讀取操作。舉例來說,選擇滿足此條件:|δbc|≤m的一新的讀取電平,且使用此讀取電平以執(zhí)行一新的讀取操作。使用新的讀取電平的存儲(chǔ)器數(shù)據(jù)讀取為可被ecc校正的。通過此方法,通過動(dòng)態(tài)調(diào)整讀取電平使其滿足臨界值m,讀取操作中的錯(cuò)誤位的數(shù)目保證為可被ecc校正的。如上所述的,在一實(shí)施例中,m對(duì)應(yīng)為小于存儲(chǔ)器陣列的ecc能力的一位計(jì)數(shù)。在此情況下,滿足此條件:|δbc|≤m的一讀取電平可產(chǎn)生小于可被ecc校正的最大位計(jì)數(shù)的位錯(cuò)誤。因此,通過將m設(shè)定為小于可被ecc校正的最大位計(jì)數(shù),就不需要存儲(chǔ)器陣列的較高ecc能力。在一實(shí)施例中,從可被ecc校正的最大位計(jì)數(shù)的二分之一與可被ecc校正的最大位計(jì)數(shù)之間的范圍選擇m。也就是說,0.5*ecc能力≤m≤ecc能力。如果m小于0.5*ecc能力,則可能需要設(shè)定一另一讀取電平執(zhí)行一外加的讀取操作,而可能降低讀取操作的效率。關(guān)于圖2b如上所描述的例子描述了初始讀取電平大于對(duì)應(yīng)于臨界值m的讀取電平的一種情形,使得讀取電平在隨后的讀取操作中往下調(diào)整。在一些情況下,初始讀取電平可能會(huì)小于對(duì)應(yīng)于臨界值m的讀取電平。在此情況下,讀取電平在隨后的讀取操作中往上調(diào)整。在一實(shí)施例中,判斷從存儲(chǔ)器陣列讀取的數(shù)據(jù)中的位計(jì)數(shù)是大于或者小于當(dāng)數(shù)據(jù)被寫入到存儲(chǔ)器陣列時(shí)記述了數(shù)據(jù)中的位計(jì)數(shù),來決定讀取電平是要?jiǎng)討B(tài)的往上移或往下移。圖3說明了依據(jù)一實(shí)施例決定一動(dòng)態(tài)讀取電平的一例。當(dāng)數(shù)據(jù)被寫入到一存儲(chǔ)器陣列(例如存儲(chǔ)器陣列的頁(page)或塊(chunk))時(shí),計(jì)算數(shù)據(jù)中的「高臨界電壓」的位計(jì)數(shù)(在一實(shí)施例中,位‘0’)或者「低臨界電壓」的位計(jì)數(shù)(在一實(shí)施例中,位‘1’),并且此數(shù)目并存儲(chǔ)為一紀(jì)錄計(jì)數(shù)數(shù)目(rcn)。舉例來說,圖3繪示了當(dāng)資料被寫入到存儲(chǔ)器陣列中的時(shí)存儲(chǔ)器單元,包含k個(gè)高臨界電壓位的及l(fā)個(gè)低臨界電壓位的存儲(chǔ)器數(shù)據(jù)(k和l為正整數(shù))。圖3使用一讀取電平vread執(zhí)行一初始讀取。在一實(shí)施例中,計(jì)算低臨界電壓位的l個(gè)數(shù)目,且此計(jì)數(shù)被存儲(chǔ)為紀(jì)錄計(jì)數(shù)數(shù)目(rcn),例如存儲(chǔ)在合適的存儲(chǔ)單元,如一存儲(chǔ)器位置、一緩存器、或一硬盤等等。當(dāng)執(zhí)行一存儲(chǔ)器讀取操作時(shí),再次計(jì)算從存儲(chǔ)器陣列中讀取的數(shù)據(jù)中的低臨界電壓位的數(shù)目,并設(shè)定為一瞬時(shí)計(jì)數(shù)數(shù)目(icn)。rcn是從存儲(chǔ)單元中取得,并且計(jì)算icn與rcn的差值作為位計(jì)數(shù)差值δbc,此位計(jì)數(shù)差值δbc之后會(huì)與臨界值m做比較。如上所述的,如果|δbc|≤m,則讀取操作感應(yīng)的數(shù)據(jù)中已翻轉(zhuǎn)(‘1’改變到‘0’或者從‘0’改變到‘1’)的位計(jì)數(shù)是位于可被ecc校正的最大位計(jì)數(shù),因此不需要進(jìn)一步的讀取操作。舉例來說,這種情況可能發(fā)生在如第3圖所示的(a)情況所示,當(dāng)讀取電平vread是位于讀取窗之內(nèi)時(shí)。然而,如果|δbc|>m,則已翻轉(zhuǎn)的位計(jì)數(shù)超過了存儲(chǔ)器陣列的ecc校正能力,而使用不同的讀取電平執(zhí)行一或多個(gè)額外的讀取操作。為了判斷下一讀取操作的讀取電平與前一次的讀取電平相比是要增加還是減少,檢查δbc的極性。如果低臨界電壓位讀取的位計(jì)數(shù)小于l,則icn小于rcn且δbc的極性為負(fù)。這種情況可能發(fā)生在,當(dāng)高臨界電壓分布和低臨界電壓分布因?yàn)槿缟纤龅臄?shù)據(jù)保存或數(shù)據(jù)損失或存儲(chǔ)器單元的退化導(dǎo)致的改變而導(dǎo)致讀取窗偏移到與如圖3所示的(a)情況的讀取窗的相比的一較高電壓范圍。因此,如圖3的(b)情況所示,位于(a)情況的讀取窗之內(nèi)的讀取電平vread現(xiàn)在是小于一對(duì)應(yīng)更新讀取窗的較低電壓極限。在此情況中,從更新的讀取窗之內(nèi)選擇一新的讀取電平,其中新的讀取電平位于與vread相比的一較高電壓,且使用此較高的讀取電平執(zhí)行一新的讀取操作。另一方面,當(dāng)從存儲(chǔ)器陣列中讀取數(shù)據(jù)時(shí),如果低臨界電壓位觀察的位計(jì)數(shù)大于l,則icn大于rcn且δbc的極性為正。這可能代表之前的讀取操作使用的讀取電平產(chǎn)生大量的位被不正確的讀取為低臨界電壓位(‘1’)。這種情況可能發(fā)生在,舉例來說,當(dāng)高臨界電壓分布和低臨界電壓分布因?yàn)槿缟纤龅臄?shù)據(jù)保存或數(shù)據(jù)損失或存儲(chǔ)器單元的退化導(dǎo)致的改變而導(dǎo)致讀取窗偏移到與如圖3所示的(a)情況的讀取窗的相比的一較低電壓范圍。因此,如圖3的(c)情況所示,(a)情況使用的讀取電平vread現(xiàn)在是大于一對(duì)應(yīng)更新讀取窗的較高電壓極限。在此情況中,從改變的讀取窗之內(nèi)選擇一新的讀取電平,其中新的讀取電平與vread相比為一較低電壓電平,且使用此較低的讀取電平執(zhí)行一新的讀取操作。以一例子描述,假設(shè)數(shù)據(jù)寫入到包含300個(gè)高臨界電壓位及500個(gè)低臨界電壓位的存儲(chǔ)器陣列(即k=300且l=500)。此存儲(chǔ)器陣列使用校正能力最多為12位的ecc校正。動(dòng)態(tài)讀取電平臨界值m被設(shè)定為8。當(dāng)數(shù)據(jù)被寫入到存儲(chǔ)器陣列時(shí),基于500個(gè)低臨界電壓位計(jì)算rcn并存儲(chǔ)rcn,例如rcn=500。當(dāng)執(zhí)行一讀取操作時(shí),感應(yīng)數(shù)據(jù)的低臨界電壓位的數(shù)目被判斷為500,使得icn=500。在此情況下,|δbc|=|icn-rcn|=0<(m=8)。因此,讀取操作感應(yīng)到的數(shù)據(jù)可被ecc校正,且不需要使用不同的讀取電平執(zhí)行額外的讀取操作。這種情況對(duì)應(yīng)圖3的(a)情況。當(dāng)執(zhí)行一讀取操作時(shí),感應(yīng)數(shù)據(jù)的低臨界電壓位的數(shù)目被判斷為484,使得icn=484。在此情況下,|δbc|=|icn-rcn|=16>(m=8)。因此,讀取操作感應(yīng)到的數(shù)據(jù)不能被ecc校正,且需要執(zhí)行額外的讀取操作。由于δbc=icn-rcn=-16,δbc的極性為負(fù)且讀取電平是往上移。舉例來說,選擇下一次的讀取操作的讀取電平以大于前一次的讀取電平。這種情況對(duì)應(yīng)圖3的(b)情況。當(dāng)執(zhí)行一讀取操作時(shí),感應(yīng)數(shù)據(jù)的低臨界電壓位的數(shù)目被判斷為514,使得icn=514。在此情況下,|δbc|=|icn-rcn|=14>(m=8)。因此,讀取操作感應(yīng)到的數(shù)據(jù)不能被ecc校正,且需要執(zhí)行額外的讀取操作。由于δbc=icn-rcn=14,δbc的極性為正且讀取電平是往下移。舉例來說,選擇下一次的讀取操作的讀取電平以小于前一次的讀取電平。這種情況對(duì)應(yīng)圖3的(c)情況。前述段落描述了基于計(jì)算低臨界電壓位的數(shù)目而決定動(dòng)態(tài)讀取電平。然而,在另一實(shí)施例中,通過計(jì)算高臨界電壓位的數(shù)目而決定動(dòng)態(tài)讀取電平。在此實(shí)施例中,基于在寫入存儲(chǔ)器單元的時(shí)候以及從存儲(chǔ)器單元讀取數(shù)據(jù)的時(shí)候存儲(chǔ)器數(shù)據(jù)中高臨界電壓位的數(shù)目分別計(jì)算rcn和icn。在上述描述的實(shí)施例中(例如計(jì)算低臨界電壓位),當(dāng)δbc的極性為負(fù)時(shí),讀取電平是往上移的。而當(dāng)δbc的極性為正時(shí),讀取電平是往下移的。另一實(shí)施例也是可行的,例如計(jì)算高臨界電壓位。舉例來說,在一實(shí)施例中,當(dāng)δbc的極性為負(fù)時(shí)(例如icn小于rcn時(shí)),讀取電平是往下移或減少的。而當(dāng)δbc的極性為正時(shí)(例如icn大于rcn時(shí)),讀取電平是往上移或增加的。通過上述這種方法,可基于計(jì)算存儲(chǔ)器數(shù)據(jù)中的低臨界電壓位或高臨界電壓位的數(shù)目動(dòng)態(tài)的決定額外讀取操作的讀取電平。另外,在一些實(shí)施例中,當(dāng)一額外讀取操作的讀取電平被調(diào)整時(shí),新的讀取電平的電壓改變量與之前的讀取操作使用的讀取電平相比,是基于icn與rcn之間的差值有多大而決定的。舉例來說,在一實(shí)施例中,除了動(dòng)態(tài)讀取電平臨界值m之外,也設(shè)定一移動(dòng)步長臨界值n。icn與rcn之間的位計(jì)數(shù)差值δbc,也被用來與n比較以決定新的讀取電平是要被設(shè)定為與前次的讀取電平相比的一大值(大的移動(dòng)步長)或一小值(小的移動(dòng)步長)。在一實(shí)施例中,n為針對(duì)裝置400設(shè)定的一系統(tǒng)參數(shù),且n被設(shè)定為以代表icn與rcn之間的大的發(fā)散度(divergence)的一位計(jì)數(shù)。在一實(shí)施例中,n為一組態(tài)參數(shù),例如裝置400的一用戶可在使用此裝置之前設(shè)定參數(shù)n。在一實(shí)施例中,n為一非負(fù)的整數(shù)且n>m。如果|δbc|≥n,則新的讀取電平對(duì)應(yīng)于一大的移動(dòng)步長。然而,如果|δbc|<n,則新的讀取電平對(duì)應(yīng)于一小的移動(dòng)步長。在一實(shí)施例中,大的移動(dòng)步長對(duì)應(yīng)于新讀取電平與之前的讀取電平之間的約為100毫伏特(mv)的一電壓差值,而小的移動(dòng)步長對(duì)應(yīng)于新讀取電平與之前的讀取電平之間的約為50毫伏特(mv)的電壓差值。然而,其他合適的電壓差值也是可行的。大的移動(dòng)步長被設(shè)計(jì)為減少執(zhí)行額外讀取操作的次數(shù),這會(huì)導(dǎo)致較快的讀取時(shí)間以及借此改善存儲(chǔ)器讀取效率。小的移動(dòng)步長設(shè)計(jì)為隨著動(dòng)態(tài)讀取電平接近一理想讀取電平,例如在讀取窗之內(nèi),而可增進(jìn)分辨率。如前所述的例子,假設(shè)相似于之前討論過的一情況,例如數(shù)據(jù)寫入到包含300個(gè)高臨界電壓位及500個(gè)低臨界電壓位的存儲(chǔ)器陣列(即k=300且l=500)。此存儲(chǔ)器陣列使用校正能力最多為12位的ecc校正。動(dòng)態(tài)讀取電平臨界值m被設(shè)定為8且移動(dòng)步長臨界值n被設(shè)定為24。當(dāng)數(shù)據(jù)被寫入到存儲(chǔ)器陣列時(shí),基于低臨界電壓位計(jì)算rcn并存儲(chǔ)rcn,例如rcn=500。當(dāng)在如圖3的(a)情況所示的一讀取窗之內(nèi)的讀取電平vread執(zhí)行一讀取操作時(shí),感應(yīng)數(shù)據(jù)中的低臨界電壓位的數(shù)目被判斷為500,使得icn=500。在此情況下,|δbc|=|icn-rcn|=0<(m=8)。因此,讀取的存儲(chǔ)器數(shù)據(jù)可被ecc校正,且不需要使用不同的讀取電平執(zhí)行額外的讀取操作。當(dāng)讀取窗改變到一較高電壓范圍時(shí),例如圖3的(b)情況所示,但在低于更新的讀取窗之下限的讀取電平vread執(zhí)行一讀取操作時(shí),感應(yīng)數(shù)據(jù)中的低臨界電壓位的數(shù)目被判斷為484,使得icn=484。在此情況下,|δbc|=|icn-rcn|=16>(m=8)。因此,讀取的存儲(chǔ)器數(shù)據(jù)不能被ecc校正,且需要執(zhí)行額外的讀取操作。由于δbc(=icn-rcn=-16)的極性為負(fù)的,所以讀取電平是往上移。進(jìn)一步的,|δbc|=16<(n=24)且因此使用一小的移動(dòng)步長。因此,新的讀取電平相比于前一次的讀取電平是增加了一小的移動(dòng)步長(例如50mv)。當(dāng)讀取窗改變到一較低電壓范圍時(shí),例如圖3的(c)情況所示,但在高于更新的讀取窗之上限的讀取電平vread執(zhí)行一讀取操作時(shí),感應(yīng)數(shù)據(jù)中的低臨界電壓位的數(shù)目被判斷為528,使得icn=528。在此情況下,|δbc|=|icn-rcn|=28>(m=8)。因此,讀取的存儲(chǔ)器數(shù)據(jù)不能被ecc校正,且需要執(zhí)行額外的讀取操作。由于δbc(=icn-rcn=28)的極性為正的,所以讀取電平是往下移。進(jìn)一步的,|δbc|=28>(n=24)且因此使用一大的移動(dòng)步長。因此,新的讀取電平相比于前一次的讀取電平是減少了一大的移動(dòng)步長(例如100mv)。圖4a及圖4b說明了依據(jù)一實(shí)施例在存儲(chǔ)器單元上使用動(dòng)態(tài)讀取電平執(zhí)行讀取操作的一裝置400的一例。裝置400包含一存儲(chǔ)器陣列402、一數(shù)據(jù)ecc存儲(chǔ)器404、一記錄計(jì)數(shù)存儲(chǔ)器406、一瞬時(shí)計(jì)數(shù)存儲(chǔ)器407、一處理器410及一存儲(chǔ)器控制器420。存儲(chǔ)器陣列402為一合適的存儲(chǔ)器單位用以存儲(chǔ)用戶數(shù)據(jù)。舉例來說,存儲(chǔ)器陣列402可以是存儲(chǔ)器的一塊(chunk)或頁(page),而包含多個(gè)存儲(chǔ)器單元。存儲(chǔ)器單元可以是單階存儲(chǔ)單元(slcs),或者多階存儲(chǔ)單元(mlcs)。在一實(shí)施例中,存儲(chǔ)器陣列402是一非揮發(fā)性存儲(chǔ)器單位,例如閃存。然而,在其他實(shí)施例中,存儲(chǔ)器陣列可以是一些其他種類的存儲(chǔ)器。數(shù)據(jù)ecc存儲(chǔ)器404是一合適的存儲(chǔ)單元用以存儲(chǔ)ecc數(shù)據(jù)。舉例來說,數(shù)據(jù)ecc存儲(chǔ)器404可以是包含存儲(chǔ)器陣列402的存儲(chǔ)器裝置的單獨(dú)的一部分?;蛘撸Y料ecc存儲(chǔ)器404可以是單獨(dú)的一存儲(chǔ)器單位、一緩存器、或者其他硬件存儲(chǔ)裝置如一硬盤。記錄計(jì)數(shù)存儲(chǔ)器406是一合適的存儲(chǔ)單元用以存儲(chǔ)紀(jì)錄計(jì)數(shù)數(shù)目(rcn)數(shù)據(jù)。舉例來說,記錄計(jì)數(shù)存儲(chǔ)器406可以是包含存儲(chǔ)器陣列402及/或數(shù)據(jù)ecc存儲(chǔ)器404的存儲(chǔ)器裝置的單獨(dú)的一部分?;蛘撸涗浻?jì)數(shù)存儲(chǔ)器406可以是單獨(dú)的一存儲(chǔ)器單位、一緩存器、一閂鎖器、或者其他硬件存儲(chǔ)裝置如一硬盤。瞬時(shí)計(jì)數(shù)存儲(chǔ)器407是一合適的存儲(chǔ)單元用以存儲(chǔ)瞬時(shí)計(jì)數(shù)數(shù)目(icn)數(shù)據(jù)。舉例來說,瞬時(shí)計(jì)數(shù)存儲(chǔ)器407可以是包含存儲(chǔ)器陣列402及/或數(shù)據(jù)ecc存儲(chǔ)器404的存儲(chǔ)器裝置的單獨(dú)的一部分?;蛘?,瞬時(shí)計(jì)數(shù)存儲(chǔ)器407可以是單獨(dú)的一存儲(chǔ)器單位、一緩存器、一閂鎖器、或者其他硬件存儲(chǔ)裝置如一硬盤。處理器410是一合適的計(jì)算單元用以執(zhí)行多種指令以操作裝置400,這些指令包括在存儲(chǔ)器陣列402和裝置400的其他模塊或者外部裝置之間交換用戶數(shù)據(jù)的指令。處理器410可以是一通用微處理器、一微控制器、或者其他合適的處理單元。在一實(shí)施例中,處理器410控制用于寫入數(shù)據(jù)到存儲(chǔ)器陣列402或從存儲(chǔ)器陣列402讀取數(shù)據(jù)的存儲(chǔ)器控制器420。存儲(chǔ)器控制器420包含硬件及軟件邏輯,用于執(zhí)行多種相關(guān)于耦接到包含數(shù)據(jù)陣列的裝置400的存儲(chǔ)器的操作。在一實(shí)施例中,存儲(chǔ)器控制器420編程存儲(chǔ)器陣列402、從存儲(chǔ)器陣列402讀取數(shù)據(jù)、或者抹除存儲(chǔ)器陣列402中存儲(chǔ)的數(shù)據(jù)等等。存儲(chǔ)器控制器420可包含一微處理器,此微處理器執(zhí)行編程、讀取或抹除存儲(chǔ)器陣列402的指令。在一實(shí)施例中,存儲(chǔ)器控制器420從處理器410接收指令以執(zhí)行相關(guān)于存儲(chǔ)器陣列402的操作。在一實(shí)施例中,存儲(chǔ)器陣列402和存儲(chǔ)器控制器420在同一集成電路芯片上實(shí)施。舉例來說,當(dāng)數(shù)據(jù)ecc存儲(chǔ)器404、記錄計(jì)數(shù)存儲(chǔ)器406和存儲(chǔ)器陣列402為同一存儲(chǔ)器裝置上的一部分時(shí),數(shù)據(jù)ecc存儲(chǔ)器404和記錄計(jì)數(shù)存儲(chǔ)器406也可在同一芯片上實(shí)施。然而,在其他實(shí)施例中,存儲(chǔ)器控制器420在與存儲(chǔ)器陣列402分離的一不同實(shí)體的單元。這可以發(fā)生在,例如當(dāng)存儲(chǔ)器控制器420為一外部計(jì)算機(jī)時(shí)、或者一外部測(cè)試裝置等等。處理器410及/或存儲(chǔ)器控制器420執(zhí)行的指令被存儲(chǔ)在處理器410及/或存儲(chǔ)器控制器420可存取的合適的存儲(chǔ)單元,例如一閃存模塊、或硬盤等等。舉例來說,這些指令可被存儲(chǔ)在包含存儲(chǔ)器陣列402的存儲(chǔ)器裝置的其他部分。圖4a繪示了裝置400執(zhí)行一操作以寫入數(shù)據(jù)到存儲(chǔ)器的一例。用戶資料被編程到存儲(chǔ)器陣列402。在用戶數(shù)據(jù)上計(jì)算一ecc值且此ecc值被編程到數(shù)據(jù)ecc存儲(chǔ)器404。此ecc值可以在寫入用戶數(shù)據(jù)到存儲(chǔ)器陣列402的時(shí)候被計(jì)算,或者此ecc值可以在一不同的時(shí)候被計(jì)算,例如在用戶數(shù)據(jù)被寫入到存儲(chǔ)器陣列402之后的時(shí)候被計(jì)算??梢晳?yīng)用由一處理器410,或者由一存儲(chǔ)器控制器420通過執(zhí)行一合適的ecc算法計(jì)算ecc值。所使用的ecc算法的例子包含漢明算法(hammingalgorithm)、里德-所羅門算法(reed-solomonalgorithm)以及bch算法(bose-chaudhuri-hocquenghemalgorithm,bchalgorithm)等等。除了在用戶數(shù)據(jù)上計(jì)算ecc值之外,基于用戶數(shù)據(jù)中的位及ecc值計(jì)算rcn。rcn可在用戶數(shù)據(jù)及ecc值被編程時(shí)計(jì)算,或者rcn可在一不同的時(shí)候例如在用戶數(shù)據(jù)及ecc值分別被寫入到存儲(chǔ)器陣列402及數(shù)據(jù)ecc存儲(chǔ)器404之后的時(shí)候被計(jì)算。在一實(shí)施例中,通過用戶數(shù)據(jù)中的低臨界位的累積數(shù)目及ecc值計(jì)算rcn。在另一實(shí)施例中,通過計(jì)算用戶數(shù)據(jù)中的高臨界位的累積數(shù)目及ecc值計(jì)算rcn。在一實(shí)施例中,如上所述的,結(jié)合用戶數(shù)據(jù)中的位及ecc值以決定rcn。在一實(shí)施例中,由處理器410、存儲(chǔ)器控制器420、或者其他合適的處理單元如外部測(cè)試裝置計(jì)算rcn。在一實(shí)施例中,在芯片上計(jì)算rcn,例如與存儲(chǔ)器陣列402位于同一芯片上的一存儲(chǔ)器控制器計(jì)算rcn。在一實(shí)施例中,計(jì)算的rcn值被存儲(chǔ)在記錄計(jì)數(shù)存儲(chǔ)器406中。在另一實(shí)施例中,計(jì)算的rcn值被存儲(chǔ)在存儲(chǔ)器控制器420容易存取的一單獨(dú)的存儲(chǔ)單元,例如一緩存器、或一閂鎖器。圖4b繪示了裝置400執(zhí)行一操作以從存儲(chǔ)器讀取數(shù)據(jù)的一例。在讀取操作期間,從記錄計(jì)數(shù)存儲(chǔ)器406(或者視情況從另一合適的存儲(chǔ)單元)讀取rcn。用戶數(shù)據(jù)是從存儲(chǔ)器陣列402使用一第一讀取電平被感應(yīng),而對(duì)應(yīng)的ecc值是從數(shù)據(jù)ecc存儲(chǔ)器404中被讀取?;诟袘?yīng)的用戶數(shù)據(jù)及從數(shù)據(jù)ecc存儲(chǔ)器404中讀取的ecc值計(jì)算一瞬時(shí)計(jì)數(shù)數(shù)目(icn)。在一實(shí)施例中,通過用戶數(shù)據(jù)中的低臨界位的累積數(shù)目及ecc值計(jì)算icn。在另一實(shí)施例中,通過計(jì)算用戶數(shù)據(jù)中的高臨界位的累積數(shù)目及ecc值計(jì)算icn。在一實(shí)施例中,由處理器410、存儲(chǔ)器控制器420、或者其他合適的處理單元如外部測(cè)試裝置計(jì)算icn。在一實(shí)施例中,在芯片上計(jì)算icn,例如與存儲(chǔ)器陣列402位于同一芯片上的一存儲(chǔ)器控制器計(jì)算icn。在一實(shí)施例中,計(jì)算的icn值被存儲(chǔ)在瞬時(shí)計(jì)數(shù)存儲(chǔ)器407。icn與rcn之間的位計(jì)數(shù)差值δbc被計(jì)算,且如此文中描述的,被用于動(dòng)態(tài)地決定額外的讀取操作的讀取電平。如果rcn被不正確的讀取,動(dòng)態(tài)地決定的讀取電平可能是錯(cuò)誤的(例如讀取電平可能在應(yīng)往下移的情況下被錯(cuò)誤地往上移,或者在應(yīng)往上移的情況下被錯(cuò)誤地往下移),這可能會(huì)導(dǎo)致感應(yīng)數(shù)據(jù)中有大量的錯(cuò)誤位無法被ecc校正。因此,在一實(shí)施例中,計(jì)算針對(duì)rcn的一ecc值以改善一讀取操作的時(shí)候取得的rcn的正確性。圖5a及圖5b說明了依據(jù)一實(shí)施例在存儲(chǔ)器單元上使用動(dòng)態(tài)讀取電平執(zhí)行一讀取操作且具有對(duì)紀(jì)錄計(jì)數(shù)數(shù)目進(jìn)行錯(cuò)誤校正的一裝置500的一例。裝置500包含一存儲(chǔ)器陣列502、一數(shù)據(jù)ecc存儲(chǔ)器504、一記錄計(jì)數(shù)存儲(chǔ)器506、一計(jì)數(shù)ecc存儲(chǔ)器508、一處理器510及一存儲(chǔ)器控制器520。存儲(chǔ)器陣列502為一合適的存儲(chǔ)器單位用以存儲(chǔ)用戶數(shù)據(jù)。舉例來說,存儲(chǔ)器陣列502可以是存儲(chǔ)器的一塊(chunk)或頁(page),而包含多個(gè)存儲(chǔ)器單元。存儲(chǔ)器單元可以是單階存儲(chǔ)單元(slcs),或者多階存儲(chǔ)單元(mlcs)。在一實(shí)施例中,存儲(chǔ)器陣列502是一非揮發(fā)性存儲(chǔ)器單位,例如閃存。然而,在其他實(shí)施例中,存儲(chǔ)器陣列可以是一些其他種類的存儲(chǔ)器。在一實(shí)施例中,存儲(chǔ)器陣列502相似于存儲(chǔ)器陣列402。數(shù)據(jù)ecc存儲(chǔ)器504是一合適的存儲(chǔ)單元用以存儲(chǔ)對(duì)應(yīng)于存儲(chǔ)在存儲(chǔ)器陣列502的用戶數(shù)據(jù)的ecc數(shù)據(jù)。數(shù)據(jù)ecc存儲(chǔ)器504可以是包含存儲(chǔ)器陣列502的存儲(chǔ)器裝置的單獨(dú)的一部分。或者,資料ecc存儲(chǔ)器504可以是單獨(dú)的一存儲(chǔ)器單位、一緩存器、或者其他硬件存儲(chǔ)裝置如一硬盤。在一實(shí)施例中,數(shù)據(jù)ecc存儲(chǔ)器504相似于數(shù)據(jù)ecc存儲(chǔ)器404。記錄計(jì)數(shù)存儲(chǔ)器506是一合適的存儲(chǔ)單元用以存儲(chǔ)紀(jì)錄計(jì)數(shù)數(shù)目(rcn)數(shù)據(jù)。舉例來說,記錄計(jì)數(shù)存儲(chǔ)器506可以是包含存儲(chǔ)器陣列502及/或數(shù)據(jù)ecc存儲(chǔ)器504的存儲(chǔ)器裝置的單獨(dú)的一部分。或者,記錄計(jì)數(shù)存儲(chǔ)器506可以是單獨(dú)的一存儲(chǔ)器單位、一緩存器、或者其他硬件存儲(chǔ)裝置如一硬盤。在一實(shí)施例中,記錄計(jì)數(shù)存儲(chǔ)器506相似于記錄計(jì)數(shù)存儲(chǔ)器406。計(jì)數(shù)ecc存儲(chǔ)器508是一合適的存儲(chǔ)單元用以存儲(chǔ)對(duì)應(yīng)于存儲(chǔ)在記錄計(jì)數(shù)存儲(chǔ)器506的rcn數(shù)據(jù)的計(jì)數(shù)ecc。舉例來說,計(jì)數(shù)ecc存儲(chǔ)器508可以是包含存儲(chǔ)器陣列502、資料ecc存儲(chǔ)器504及/或記錄計(jì)數(shù)存儲(chǔ)器506的存儲(chǔ)器裝置的單獨(dú)的一部分。或者,計(jì)數(shù)ecc存儲(chǔ)器508可以是單獨(dú)的一存儲(chǔ)器單位、一緩存器、一閂鎖器、或者其他硬件存儲(chǔ)裝置如一硬盤。處理器510是一合適的計(jì)算單元用以執(zhí)行多種指令以操作裝置500,這些指令包括在存儲(chǔ)器陣列502和裝置500的其他模塊或者外部裝置之間交換用戶數(shù)據(jù)的指令。處理器510可以是一通用微處理器、一微控制器、或者其他合適的處理單元。在一實(shí)施例中,處理器510控制用于寫入數(shù)據(jù)到存儲(chǔ)器陣列502或從存儲(chǔ)器陣列502讀取數(shù)據(jù)的存儲(chǔ)器控制器520。在一實(shí)施例中,處理器510相似于處理器410。存儲(chǔ)器控制器420包含硬件及軟件邏輯,用于執(zhí)行多種相關(guān)于耦接到包含數(shù)據(jù)陣列的裝置500的存儲(chǔ)器的操作。在一實(shí)施例中,存儲(chǔ)器控制器520編程存儲(chǔ)器陣列202、從存儲(chǔ)器陣列202讀取數(shù)據(jù)、或者抹除存儲(chǔ)器陣列502中存儲(chǔ)的數(shù)據(jù)等等。存儲(chǔ)器控制器520可包含一微處理器,此微處理器執(zhí)行編程、讀取或抹除存儲(chǔ)器陣列502的指令。在一實(shí)施例中,存儲(chǔ)器控制器520從處理器510接收指令以執(zhí)行相關(guān)于存儲(chǔ)器陣列502的操作。在一實(shí)施例中,存儲(chǔ)器控制器520相似于存儲(chǔ)器控制器420。在一實(shí)施例中,存儲(chǔ)器陣列502和存儲(chǔ)器控制器520在同一集成電路芯片上實(shí)施。舉例來說,當(dāng)數(shù)據(jù)ecc存儲(chǔ)器504、記錄計(jì)數(shù)存儲(chǔ)器56和存儲(chǔ)器陣列502為同一存儲(chǔ)器裝置上的一部分時(shí),數(shù)據(jù)ecc存儲(chǔ)器504和記錄計(jì)數(shù)存儲(chǔ)器506也可在同一芯片上實(shí)施。然而,在其他實(shí)施例中,存儲(chǔ)器控制器520在與存儲(chǔ)器陣列502分離的一不同實(shí)體的單元。這可以發(fā)生在,例如當(dāng)存儲(chǔ)器控制器520為一外部計(jì)算機(jī)時(shí)、或者一外部測(cè)試裝置等等。處理器510及/或存儲(chǔ)器控制器520執(zhí)行的指令被存儲(chǔ)在處理器510及/或存儲(chǔ)器控制器520可存取的合適的存儲(chǔ)單元,例如一閃存模塊、或硬盤等等。舉例來說,這些指令可被存儲(chǔ)在包含存儲(chǔ)器陣列502的存儲(chǔ)器裝置的其他部分。圖5a繪示了裝置500執(zhí)行一操作以寫入數(shù)據(jù)到存儲(chǔ)器的一例。用戶資料被編程到存儲(chǔ)器陣列502。在用戶數(shù)據(jù)上計(jì)算一ecc值且此ecc值被編程到數(shù)據(jù)ecc存儲(chǔ)器504。此ecc值可以在寫入用戶數(shù)據(jù)到存儲(chǔ)器陣列502的時(shí)候被計(jì)算,或者此ecc值可以在一不同的時(shí)候被計(jì)算,例如在用戶數(shù)據(jù)被寫入到存儲(chǔ)器陣列502之后的時(shí)候被計(jì)算??梢晳?yīng)用由一處理器510,或者由一存儲(chǔ)器控制器520通過執(zhí)行一合適的ecc算法計(jì)算ecc值。所使用的ecc算法的例子包含漢明算法(hammingalgorithm)、里德-所羅門算法(reed-solomonalgorithm)以及bch算法(bose-chaudhuri-hocquenghemalgorithm,bchalgorithm)等等。除了在用戶數(shù)據(jù)上計(jì)算ecc值之外,基于用戶數(shù)據(jù)中的位及ecc值計(jì)算rcn。rcn可在用戶數(shù)據(jù)及ecc值被編程時(shí)計(jì)算,或者rcn可在一不同的時(shí)候例如在用戶數(shù)據(jù)及ecc值分別被寫入到存儲(chǔ)器陣列502及數(shù)據(jù)ecc存儲(chǔ)器504之后的時(shí)候被計(jì)算。在一實(shí)施例中,通過用戶數(shù)據(jù)中的低臨界位的累積數(shù)目及ecc值計(jì)算rcn。在另一實(shí)施例中,通過計(jì)算用戶數(shù)據(jù)中的高臨界位的累積數(shù)目及ecc值計(jì)算rcn。在一實(shí)施例中,如上所述的,結(jié)合用戶數(shù)據(jù)中的位及ecc值以決定rcn。在一實(shí)施例中,由處理器510、存儲(chǔ)器控制器520、或者其他合適的處理單元如外部測(cè)試裝置計(jì)算rcn。在一實(shí)施例中,在芯片上計(jì)算rcn,例如與存儲(chǔ)器陣列502位于同一芯片上的一存儲(chǔ)器控制器計(jì)算rcn。在一實(shí)施例中,計(jì)算的rcn值被存儲(chǔ)在記錄計(jì)數(shù)存儲(chǔ)器506中。在另一實(shí)施例中,計(jì)算的rcn值被存儲(chǔ)在存儲(chǔ)器控制器520容易存取的一單獨(dú)的存儲(chǔ)單元,例如一緩存器、或一閂鎖器。在計(jì)算rcn之后,也基于rcn位計(jì)算ecc值。此針對(duì)rcn的ecc值被編程到計(jì)數(shù)ecc存儲(chǔ)器508。通過使用一合適的ecc算法計(jì)算針對(duì)rcn的ecc值。所使用的ecc算法,例如為漢明算法(hammingalgorithm)、里德-所羅門算法(reed-solomonalgorithm)以及bch算法(bose-chaudhuri-hocquenghemalgorithm,bchalgorithm)等等。在一實(shí)施例中,由一處理器510,或者由一存儲(chǔ)器控制器520、或者其他合適的處理單元例如一外部測(cè)試裝置計(jì)算針對(duì)rcn的ecc。在一實(shí)施例中,在芯片上計(jì)算針對(duì)rcn的ecc值,例如與存儲(chǔ)器陣列502位于同一芯片上的一存儲(chǔ)器控制器計(jì)算針對(duì)rcn的ecc值。圖5b繪示了裝置500執(zhí)行一操作以從存儲(chǔ)器讀取數(shù)據(jù)的一例。在讀取操作期間,從記錄計(jì)數(shù)存儲(chǔ)器506(或者視情況從另一合適的存儲(chǔ)單元)讀取rcn,且從計(jì)數(shù)ecc存儲(chǔ)器508讀取針對(duì)rcn的ecc值。對(duì)rcn和對(duì)應(yīng)的ecc值執(zhí)行一ecc操作。舉例來說,通過結(jié)合rcn值與對(duì)應(yīng)的ecc值執(zhí)行一xor邏輯操作。在一實(shí)施例中,由一處理器510,或者由一存儲(chǔ)器控制器520、或者其他合適的處理單元例如一外部測(cè)試裝置執(zhí)行ecc操作。在一實(shí)施例中,在芯片上執(zhí)行ecc操作,例如與存儲(chǔ)器陣列502位于同一芯片上的一存儲(chǔ)器控制器計(jì)算執(zhí)行ecc操作。ecc操作的結(jié)果代表了rcn是否可被對(duì)應(yīng)的ecc值校正,例如從記錄計(jì)數(shù)存儲(chǔ)器506讀取的rcn中的錯(cuò)誤位的數(shù)目是否位于從計(jì)數(shù)ecc存儲(chǔ)器508讀取的對(duì)應(yīng)ecc值的最大位計(jì)數(shù)之內(nèi)。如果ecc操作的結(jié)果代表了rcn為可校正的,則如下文描述的決定額外讀取操作的動(dòng)態(tài)讀取電平。然而,如果ecc操作的結(jié)果代表了rcn為不可校正的(例如當(dāng)從記錄計(jì)數(shù)存儲(chǔ)器506讀取的rcn中的錯(cuò)誤位的數(shù)目超過從計(jì)數(shù)ecc存儲(chǔ)器508讀取的對(duì)應(yīng)ecc值的最大位計(jì)數(shù)),則不決定動(dòng)態(tài)讀取電平。用戶數(shù)據(jù)是從存儲(chǔ)器陣列502被讀取,而對(duì)應(yīng)的ecc值是從數(shù)據(jù)ecc存儲(chǔ)器504中被讀取。基于從存儲(chǔ)器陣列502讀取的用戶數(shù)據(jù)及從數(shù)據(jù)ecc存儲(chǔ)器504中讀取的ecc值計(jì)算一瞬時(shí)計(jì)數(shù)數(shù)目(icn)。在一實(shí)施例中,通過用戶數(shù)據(jù)中的低臨界位的累積數(shù)目及ecc值計(jì)算icn。在另一實(shí)施例中,通過計(jì)算用戶數(shù)據(jù)中的高臨界位的累積數(shù)目及ecc值計(jì)算icn。在一實(shí)施例中,計(jì)算的icn值被存儲(chǔ)在合適的存儲(chǔ)單元,如一存儲(chǔ)器陣列、一緩存器、一閂鎖器。在一實(shí)施例中,由處理器510、存儲(chǔ)器控制器520、或者其他合適的處理單元如外部測(cè)試裝置計(jì)算icn。在一實(shí)施例中,在芯片上計(jì)算icn,例如與存儲(chǔ)器陣列502位于同一芯片上的一存儲(chǔ)器控制器計(jì)算icn。icn與rcn之間的位計(jì)數(shù)差值δbc被計(jì)算,且如此文中描述的,被用于動(dòng)態(tài)地決定額外的讀取操作的讀取電平。圖6說明了依據(jù)一實(shí)施例在存儲(chǔ)器單元上使用動(dòng)態(tài)讀取電平執(zhí)行讀取操作的一流程600的一例。在一實(shí)施例中,裝置400以執(zhí)行流程600以從存儲(chǔ)器陣列402中讀取用戶數(shù)據(jù)。因此,以下段落參照裝置400描述流程600。然而,在其他實(shí)施例中,可使用其他裝置或系統(tǒng)執(zhí)行流程600。在一實(shí)施例中,由處理器410、存儲(chǔ)器控制器420、或者其他合適的處理單元如外部測(cè)試裝置執(zhí)行流程600。在步驟602,存儲(chǔ)一紀(jì)錄計(jì)數(shù)數(shù)目(rcn)。舉例來說,當(dāng)寫入用戶數(shù)據(jù)到存儲(chǔ)器陣列402時(shí),基于用戶數(shù)據(jù)及對(duì)應(yīng)的ecc值計(jì)算低臨界位(或者根據(jù)應(yīng)用為高臨界位)的累積數(shù)目。計(jì)算的rcn值被存儲(chǔ)在記錄計(jì)數(shù)存儲(chǔ)器406,或者其他合適的存儲(chǔ)單元,如一緩存器、或一閂鎖器。在步驟604中,接收一讀取指令。舉例來說,接收一讀取指令以讀取存儲(chǔ)在存儲(chǔ)器陣列402的用戶數(shù)據(jù)。在步驟606中,設(shè)定讀取電平及嘗試限制次數(shù)。舉例來說,設(shè)定初始讀取電平的臨界電壓(例如212)。由于考慮使用動(dòng)態(tài)讀取電平的額外的讀取操作,也要決定一讀取指令執(zhí)行的讀取操作的次數(shù)的一上限。在一實(shí)施例中,設(shè)定此上限以使一讀取指令不需要執(zhí)行大量的額外的讀取操作(例如當(dāng)不能精確地決定動(dòng)態(tài)讀取電平時(shí)),這可能會(huì)對(duì)存儲(chǔ)器讀取效率有負(fù)面的影響。在步驟608中,執(zhí)行一讀取操作并決定位計(jì)數(shù)差值。舉例來說,通過在步驟606中設(shè)定的初始讀取電平執(zhí)行一感應(yīng)操作而執(zhí)行一第一讀取操作。用戶數(shù)據(jù)是從存儲(chǔ)器陣列402中被讀取,而對(duì)應(yīng)的ecc值是從數(shù)據(jù)ecc存儲(chǔ)器404中被讀取,而rcn是從記錄計(jì)數(shù)存儲(chǔ)器406中被讀取?;趶拇鎯?chǔ)器陣列402中讀取的用戶數(shù)據(jù)及從數(shù)據(jù)ecc存儲(chǔ)器404中讀取的ecc值計(jì)算一瞬時(shí)計(jì)數(shù)數(shù)目(icn)。計(jì)算的icn值被存儲(chǔ)在瞬時(shí)計(jì)數(shù)存儲(chǔ)器407中。icn與rcn之間的差值被決定為位計(jì)數(shù)差值δbc=icn-rcn。在步驟610中,判斷位計(jì)數(shù)差值是否大于一臨界值。舉例來說,比較位計(jì)數(shù)差值的絕對(duì)值|δbc|與動(dòng)態(tài)讀取電平臨界值m以判斷是否|δbc|>m。如果位計(jì)數(shù)差值被判斷為大于動(dòng)態(tài)讀取電平臨界值,則可使用動(dòng)態(tài)調(diào)整的更新的讀取電平執(zhí)行額外的讀取操作。在此情況下,在步驟612中,判斷一讀取嘗試次數(shù)是否大于或等于一上限。舉例來說,在執(zhí)行一額外的讀取操作之前,檢查響應(yīng)于讀取指令已經(jīng)執(zhí)行的讀取操作的次數(shù)是否已超過一讀取指令可執(zhí)行的讀取操作的次數(shù)的上限。如果已經(jīng)執(zhí)行的讀取嘗試的次數(shù)被判斷為低于可執(zhí)行的讀取操作次數(shù)的上限,則在步驟614中,增加讀取嘗試并決定移動(dòng)方向及移動(dòng)步長。舉例來說,檢查δbc的極性。在一實(shí)施例中,如果δbc為正的(例如icn大于rcn),則新的讀取電平是往下移的。另一方面,如果δbc為負(fù)的(例如icn小于rcn),則新的讀取電平是往上移的。也比較位計(jì)數(shù)差值的絕對(duì)值|δbc|與移動(dòng)步長臨界值n。如果|δbc|≥n,則使用一大的移動(dòng)步長,例如選擇與前次讀取電平的相差一大的電壓量(如100mv的)的新的讀取電平。然而,如果|δbc|<n,則使用一小的移動(dòng)步長,例如選擇與前次讀取電平的相差一小的電壓量(如50mv的)的新的讀取電平。在步驟616中,設(shè)定一新的讀取電平。舉例來說,相比于前次讀取操作的讀取電平,基于步驟614中決定的移動(dòng)方向及移動(dòng)步長設(shè)定新的讀取電平。之后在步驟606~618中執(zhí)行一或多個(gè)額外的讀取操作直到|δbc|≤m或者一讀取嘗試的次數(shù)已經(jīng)大于或等于可執(zhí)行的讀取操作的次數(shù)的上限。如果在步驟610中判斷位計(jì)數(shù)差值小于或等于動(dòng)態(tài)讀取電平臨界值(|δbc|≤m),或者在步驟612中判斷讀取嘗試的次數(shù)已經(jīng)大于或等于可執(zhí)行的讀取操作的次數(shù)的上限,則跳過額外的讀取操作,而在步驟618中,執(zhí)行一數(shù)據(jù)ecc校正。舉例來說,在從存儲(chǔ)器陣列402最近一次的讀取操作中讀取的用戶數(shù)據(jù)上使用從數(shù)據(jù)ecc存儲(chǔ)器404讀取的eec值執(zhí)行一ecc操作。在步驟620中,讀出數(shù)據(jù)。舉例來說,被ecc校正后的用戶數(shù)據(jù)被提供到裝置400的另一模塊,或一外部實(shí)體以執(zhí)行相關(guān)于用戶數(shù)據(jù)的其他操作。通過上述方法,流程600可通過使用動(dòng)態(tài)讀取電平執(zhí)行重復(fù)的讀取操作用來減少響應(yīng)于一讀取指令取得的用戶數(shù)據(jù)中的位錯(cuò)誤的數(shù)目。在每一次讀取操作中,基于移動(dòng)方向及移動(dòng)步長調(diào)整讀取電平,以使讀取電平朝向低于動(dòng)態(tài)讀取電平臨界值m的讀取電平的方向移動(dòng),到用戶數(shù)據(jù)中的位錯(cuò)誤的數(shù)目可被ecc校正的時(shí)候。然而,為了限制額外讀取操作的效率影響,額外讀取操作的次數(shù)可被加上一上限。如果達(dá)到此上限,即使在用戶數(shù)據(jù)中的錯(cuò)誤位計(jì)數(shù)超過動(dòng)態(tài)讀取電平臨界值m超過的情況下,仍然讀出用戶數(shù)據(jù)。在一實(shí)施例中,決定rcn并在步驟602中存儲(chǔ)一次,例如在存儲(chǔ)器陣列402中存儲(chǔ)用戶數(shù)據(jù)的時(shí)候或之后存儲(chǔ)rcn。接著,例如當(dāng)執(zhí)行一讀取指令以從存儲(chǔ)器陣列402讀取用戶數(shù)據(jù)時(shí),執(zhí)行多次步驟604~620。rcn可能會(huì)被再次計(jì)算,且在用戶數(shù)據(jù)被更新時(shí),例如新的用戶數(shù)據(jù)被寫入到存儲(chǔ)器陣列402的時(shí)候或之后,存儲(chǔ)一新的rcn值。圖7說明了依據(jù)另一實(shí)施例在存儲(chǔ)器單元上使用動(dòng)態(tài)讀取電平執(zhí)行讀取操作的一流程700的一例。在一實(shí)施例中,裝置400以執(zhí)行流程700以從存儲(chǔ)器陣列402中讀取用戶數(shù)據(jù)。因此,以下段落參照裝置400描述流程700。然而,在其他實(shí)施例中,可使用其他裝置或系統(tǒng)執(zhí)行流程700。在一實(shí)施例中,由處理器410、存儲(chǔ)器控制器420、或者其他合適的處理單元如外部測(cè)試裝置執(zhí)行流程700。在步驟702,存儲(chǔ)一紀(jì)錄計(jì)數(shù)數(shù)目(rcn)。舉例來說,當(dāng)寫入用戶數(shù)據(jù)到存儲(chǔ)器陣列402時(shí),基于用戶數(shù)據(jù)及對(duì)應(yīng)的ecc值計(jì)算低臨界位(或者根據(jù)應(yīng)用為高臨界位)的累積數(shù)目。計(jì)算的rcn值被存儲(chǔ)在記錄計(jì)數(shù)存儲(chǔ)器406,或者其他合適的存儲(chǔ)單元,如一緩存器、或一閂鎖器。在步驟704中,接收一讀取指令。舉例來說,接收一讀取指令以讀取存儲(chǔ)在存儲(chǔ)器陣列402的用戶數(shù)據(jù)。在步驟706中,設(shè)定讀取電平。舉例來說,設(shè)定初始讀取電平的臨界電壓(例如212)。在步驟708中,執(zhí)行一讀取操作并決定位計(jì)數(shù)差值。舉例來說,通過在步驟706中設(shè)定的初始讀取電平執(zhí)行一感應(yīng)操作而執(zhí)行一第一讀取操作。用戶數(shù)據(jù)是從存儲(chǔ)器陣列402中被讀取,而對(duì)應(yīng)的ecc值是從數(shù)據(jù)ecc存儲(chǔ)器404中被讀取,而rcn是從記錄計(jì)數(shù)存儲(chǔ)器406中被讀取?;趶拇鎯?chǔ)器陣列402中讀取的用戶數(shù)據(jù)及從數(shù)據(jù)ecc存儲(chǔ)器404中讀取的ecc值計(jì)算一瞬時(shí)計(jì)數(shù)數(shù)目(icn)。計(jì)算的icn值被存儲(chǔ)在瞬時(shí)計(jì)數(shù)存儲(chǔ)器407中。icn與rcn之間的差值被決定為位計(jì)數(shù)差值δbc=icn-rcn。在步驟710中,判斷位計(jì)數(shù)差值是否大于一臨界值。舉例來說,比較位計(jì)數(shù)差值的絕對(duì)值|δbc|與動(dòng)態(tài)讀取電平臨界值m以判斷是否|δbc|>m。如果位計(jì)數(shù)差值被判斷為大于動(dòng)態(tài)讀取電平臨界值,則可使用動(dòng)態(tài)調(diào)整的更新的讀取電平執(zhí)行額外的讀取操作。在此情況下,在步驟712中,決定移動(dòng)方向。舉例來說,檢查δbc的極性。在一實(shí)施例中,如果δbc為正的(例如icn大于rcn),則新的讀取電平是往下移的。另一方面,如果δbc為負(fù)的(例如icn小于rcn),則新的讀取電平是往上移的。在步驟714中,設(shè)定一新的讀取電平。舉例來說,相比于前次讀取操作的讀取電平,基于步驟712中決定的移動(dòng)方向設(shè)定新的讀取電平。之后在步驟708~714中執(zhí)行一或多個(gè)額外的讀取操作直到|δbc|≤m。如果在步驟710中判斷位計(jì)數(shù)差值小于或等于動(dòng)態(tài)讀取電平臨界值(|δbc|≤m),則跳過額外的讀取操作,而在步驟716中,執(zhí)行一數(shù)據(jù)ecc校正。舉例來說,在從存儲(chǔ)器陣列402最近一次的讀取操作中讀取的用戶數(shù)據(jù)上使用從數(shù)據(jù)ecc存儲(chǔ)器404讀取的eec值執(zhí)行一ecc操作。在步驟620中,讀出數(shù)據(jù)。舉例來說,被ecc校正后的用戶數(shù)據(jù)被提供到裝置400的另一模塊,或一外部實(shí)體以執(zhí)行相關(guān)于用戶數(shù)據(jù)的其他操作。通過上述方法,流程700可通過使用動(dòng)態(tài)讀取電平執(zhí)行重復(fù)的讀取操作用來減少響應(yīng)于一讀取指令取得的用戶數(shù)據(jù)中的位錯(cuò)誤的數(shù)目。在每一次讀取操作中,基于移動(dòng)方向調(diào)整讀取電平,以使讀取電平朝向低于動(dòng)態(tài)讀取電平臨界值m的讀取電平的方向移動(dòng),到用戶數(shù)據(jù)中的位錯(cuò)誤的數(shù)目可被ecc校正的時(shí)候。在一實(shí)施例中,決定rcn并在步驟702中存儲(chǔ)一次。接著,例如當(dāng)執(zhí)行一讀取指令以從存儲(chǔ)器陣列402讀取用戶數(shù)據(jù)時(shí),執(zhí)行多次步驟704~718。rcn可能會(huì)被再次計(jì)算,且在用戶數(shù)據(jù)被更新時(shí),例如新的用戶數(shù)據(jù)被寫入到存儲(chǔ)器陣列402的時(shí)候或之后,存儲(chǔ)一新的rcn值。圖8說明了依據(jù)一實(shí)施例在存儲(chǔ)器單元上使用動(dòng)態(tài)讀取電平執(zhí)行一讀取操作且具有對(duì)紀(jì)錄計(jì)數(shù)數(shù)目進(jìn)行錯(cuò)誤校正的一流程800的一例。在一實(shí)施例中,裝置500以執(zhí)行流程800以從存儲(chǔ)器陣列502中讀取用戶數(shù)據(jù)。因此,以下段落參照裝置500描述流程800。然而,在其他實(shí)施例中,可使用其他裝置或系統(tǒng)執(zhí)行流程800。在一實(shí)施例中,由處理器510、存儲(chǔ)器控制器520、或者其他合適的處理單元如外部測(cè)試裝置執(zhí)行流程800。在步驟802,存儲(chǔ)一紀(jì)錄計(jì)數(shù)數(shù)目(rcn)及對(duì)應(yīng)的ecc值。舉例來說,當(dāng)寫入用戶資料到存儲(chǔ)器陣列502時(shí),基于用戶數(shù)據(jù)及用戶數(shù)據(jù)對(duì)應(yīng)的ecc值計(jì)算低臨界位(或者根據(jù)應(yīng)用為高臨界位)的累積數(shù)目。使用合適的ecc算法計(jì)算針對(duì)rcn的ecc值。計(jì)算的rcn值被存儲(chǔ)在記錄計(jì)數(shù)存儲(chǔ)器506,或者其他合適的存儲(chǔ)單元,如一緩存器、或一閂鎖器,對(duì)應(yīng)的ecc值被存儲(chǔ)在計(jì)數(shù)ecc存儲(chǔ)器508。在步驟804中,接收一讀取指令。舉例來說,接收一讀取指令以讀取存儲(chǔ)在存儲(chǔ)器陣列502的用戶數(shù)據(jù)。在步驟806中,設(shè)定讀取電平及嘗試限制次數(shù)。舉例來說,設(shè)定初始讀取電平的臨界電壓(例如212)。由于考慮使用動(dòng)態(tài)讀取電平的額外的讀取操作,也要決定一讀取指令執(zhí)行的讀取操作的次數(shù)的一上限。在一實(shí)施例中,設(shè)定此上限以使一讀取指令不需要執(zhí)行大量的額外的讀取操作(例如當(dāng)不能精確地決定動(dòng)態(tài)讀取電平時(shí)),這可能會(huì)對(duì)存儲(chǔ)器讀取效率有負(fù)面的影響。嘗試限制次數(shù)是選擇性的。舉例來說,在一實(shí)施例中,不使用嘗試限制次數(shù)。在這樣的實(shí)施一中,在步驟806終止設(shè)定讀取電平。在步驟808中,執(zhí)行一讀取操作并取得rcn。舉例來說,通過在步驟806中設(shè)定的初始讀取電平執(zhí)行一感應(yīng)操作而執(zhí)行一第一讀取操作。用戶數(shù)據(jù)是從存儲(chǔ)器陣列502中被讀取,而對(duì)應(yīng)的ecc值是從數(shù)據(jù)ecc存儲(chǔ)器504中被讀取。并且,rcn值是從記錄計(jì)數(shù)存儲(chǔ)器506或其他存儲(chǔ)位置中被讀取,而計(jì)數(shù)ecc是從計(jì)數(shù)ecc存儲(chǔ)器508中被讀取。在步驟810,判斷rcn是否可被校正。舉例來說,對(duì)應(yīng)于rcn數(shù)據(jù)的ecc值是從計(jì)數(shù)ecc存儲(chǔ)器508中讀取,且基于rcn值和ecc值執(zhí)行一ecc檢查以判斷rcn是否可被ecc值校正。如果判斷rcn是可被ecc校正的,則在步驟812中,對(duì)rcn執(zhí)行ecc校正。舉例來說,基于從記錄計(jì)數(shù)存儲(chǔ)器506讀取的rcn數(shù)據(jù)以及從計(jì)數(shù)ecc存儲(chǔ)器508讀取的對(duì)應(yīng)ecc值執(zhí)行一ecc操作。對(duì)rcn執(zhí)行ecc校正的結(jié)果會(huì)在之后使用。在步驟814中,決定一位計(jì)數(shù)差值。舉例來說,基于從存儲(chǔ)器陣列502中讀取的用戶數(shù)據(jù)及從數(shù)據(jù)ecc存儲(chǔ)器504中讀取的ecc值計(jì)算一瞬時(shí)計(jì)數(shù)數(shù)目(icn)。計(jì)算的icn值被存儲(chǔ)在合適的存儲(chǔ)單元中,例如一存儲(chǔ)器位置、一緩存器或一閂鎖器。icn與rcn之間的差值被決定為位計(jì)數(shù)差值δbc=icn-rcn。在步驟816中,判斷位計(jì)數(shù)差值是否大于一臨界值。舉例來說,比較位計(jì)數(shù)差值的絕對(duì)值|δbc|與動(dòng)態(tài)讀取電平臨界值m以判斷是否|δbc|>m。如果位計(jì)數(shù)差值被判斷為大于動(dòng)態(tài)讀取電平臨界值,則可使用動(dòng)態(tài)調(diào)整的更新的讀取電平執(zhí)行額外的讀取操作。在此情況下,在步驟818中,判斷一讀取嘗試次數(shù)是否大于或等于一上限。舉例來說,在執(zhí)行一額外的讀取操作之前,檢查響應(yīng)于讀取指令已經(jīng)執(zhí)行的讀取操作的次數(shù)是否已超過一讀取指令可執(zhí)行的讀取操作的次數(shù)的上限。此關(guān)于讀取嘗試次數(shù)的判斷是選擇性的。舉例來說,在一實(shí)施例中,不使用嘗試限制次數(shù)。在這樣的實(shí)施例中,就不執(zhí)行步驟818的操作。如果已經(jīng)執(zhí)行的讀取嘗試的次數(shù)被判斷為低于可執(zhí)行的讀取操作次數(shù)的上限,則在步驟820中,增加讀取嘗試并決定移動(dòng)方向及移動(dòng)步長。舉例來說,檢查δbc的極性。在一實(shí)施例中,如果δbc為正的(例如icn大于rcn),則新的讀取電平是往下移的。另一方面,如果δbc為負(fù)的(例如icn小于rcn),則新的讀取電平是往上移的。也比較位計(jì)數(shù)差值的絕對(duì)值|δrc|與移動(dòng)步長臨界值n。如果|δrc|≥n,則使用一大的移動(dòng)步長,例如選擇與前次讀取電平的相差一大的電壓量(如100mv的)的新的讀取電平。然而,如果|δbc|<n,則使用一小的移動(dòng)步長,例如選擇與前次讀取電平的相差一小的電壓量(如50mv的)的新的讀取電平。比較位計(jì)數(shù)差值的絕對(duì)值|δbc|與移動(dòng)步長臨界值n是選擇性的。舉例來說,在一實(shí)施例中,不使用嘗試限制次數(shù)。在這樣的實(shí)施例中,就不比較位計(jì)數(shù)差值的絕對(duì)值|δbc|與移動(dòng)步長臨界值n,且因此不基于這樣的比較結(jié)果產(chǎn)生新的讀取電平。在步驟822中,設(shè)定一新的讀取電平。舉例來說,相比于前次讀取操作的讀取電平,基于步驟820中決定的移動(dòng)方向設(shè)定新的讀取電平。之后在步驟808~822中執(zhí)行一或多個(gè)額外的讀取操作直到|δbc|≤m或者一讀取嘗試的次數(shù)已經(jīng)大于或等于可執(zhí)行的讀取操作的次數(shù)的上限。在一實(shí)施例中,當(dāng)執(zhí)行額外的讀取操作時(shí),更跳過在步驟810中檢查rcn的ecc校正的檢查及步驟820。這樣的情況可能發(fā)生在,舉例來說,當(dāng)在讀取操作之間的rcn值并未被更新的時(shí)候,使得初始讀取操作之后取得的ecc校正后的rcn可被用在額外的讀取操作。如果在步驟810中rcn被判斷為不可被ecc校正的,或者在步驟816中位計(jì)數(shù)差值被判斷為小于或等于動(dòng)態(tài)讀取電平臨界值(|δbc|≤m),又或者在步驟818中讀取嘗試次數(shù)大于或等于讀取指令可執(zhí)行的讀取操作次數(shù)的上限,則跳過額外的讀取操作,而在步驟824中,執(zhí)行數(shù)據(jù)ecc校正。舉例來說,在從存儲(chǔ)器陣列502最近一次的讀取操作中讀取的用戶數(shù)據(jù)上使用從數(shù)據(jù)ecc存儲(chǔ)器504讀取的ecc值執(zhí)行一ecc操作。在步驟826中,讀出數(shù)據(jù)。舉例來說,被ecc校正后的用戶數(shù)據(jù)被提供到裝置500的另一模塊,或一外部實(shí)體以執(zhí)行相關(guān)于用戶數(shù)據(jù)的其他操作。通過上述方法,流程800可通過使用動(dòng)態(tài)讀取電平執(zhí)行重復(fù)的讀取操作用來減少響應(yīng)于一讀取指令取得的用戶數(shù)據(jù)中的位錯(cuò)誤的數(shù)目。在每一次讀取操作中,基于移動(dòng)方向,及選擇性地基于移動(dòng)步長,調(diào)整讀取電平,以使讀取電平朝向動(dòng)態(tài)讀取電平臨界值m之內(nèi)的讀取電平的方向移動(dòng),到用戶數(shù)據(jù)中的位錯(cuò)誤的數(shù)目可被ecc校正的時(shí)候。為了確保額外讀取操作的動(dòng)態(tài)讀取電平的精確性。計(jì)算rcn以使rcn可被ecc校正。進(jìn)一步地,為了限制了額外的讀取操作的效率影響,額外讀取操作的次數(shù)可被加上一上限。在此情況下,如果達(dá)到此上限,即使在用戶數(shù)據(jù)中的錯(cuò)誤位計(jì)數(shù)超過動(dòng)態(tài)讀取電平臨界值m超過的情況下,仍然讀出用戶數(shù)據(jù)。在一實(shí)施例中,決定rcn和對(duì)應(yīng)的ecc值并在步驟802中存儲(chǔ)一次,例如在存儲(chǔ)器陣列502中存儲(chǔ)用戶數(shù)據(jù)的時(shí)候或之后存儲(chǔ)rcn。接著,例如當(dāng)執(zhí)行一讀取指令以從存儲(chǔ)器陣列502讀取用戶數(shù)據(jù)時(shí),執(zhí)行多次步驟804~826。rcn和對(duì)應(yīng)的ecc值可能會(huì)被再次計(jì)算,且在用戶數(shù)據(jù)被更新時(shí),例如新的用戶數(shù)據(jù)被寫入到存儲(chǔ)器陣列502的時(shí)候或之后,存儲(chǔ)一新的rcn值和對(duì)應(yīng)的ecc值。上述揭露的或者其他例子可由一或多個(gè)計(jì)算機(jī)程序產(chǎn)品所執(zhí)行,例如,編碼在計(jì)算機(jī)可讀取媒體內(nèi)的計(jì)算機(jī)程序指令的一或多個(gè)模塊,這些模塊用來執(zhí)行或控制數(shù)據(jù)處理裝置地操作。這些實(shí)施例可包含算法的單獨(dú)或分散的處理。計(jì)算機(jī)可讀取媒體可以為一機(jī)器可讀取的存儲(chǔ)裝置、一機(jī)器可讀取的存儲(chǔ)基板裝置、一存儲(chǔ)器裝置、或上述的一或多個(gè)組合?!笖?shù)據(jù)處理裝置」這個(gè)用語包含了用于處理數(shù)據(jù)的所有設(shè)備、裝置及機(jī)器,例如包含一可編程的處理器、一計(jì)算機(jī)、或多個(gè)處理器或多個(gè)計(jì)算機(jī)。除了硬件之外,設(shè)備可包含創(chuàng)造討論中的計(jì)算機(jī)程序的一指令環(huán)境的程序代碼,例如建立一處理器韌體、一協(xié)議棧(protocolstack)、一數(shù)據(jù)庫管理系統(tǒng)、一操作系統(tǒng)、或上述的一或多個(gè)組合的程序代碼。一系統(tǒng)可包含了用于處理數(shù)據(jù)的所有設(shè)備、裝置及機(jī)器,例如包含一可編程的處理器、一計(jì)算機(jī)、或多個(gè)處理器或多個(gè)計(jì)算機(jī)。除了硬件之外,一系統(tǒng)可包含創(chuàng)造討論中的計(jì)算機(jī)程序的一指令環(huán)境的程序代碼,例如建立一處理器韌體、一協(xié)議棧(protocolstack)、一數(shù)據(jù)庫管理系統(tǒng)、一操作系統(tǒng)、或上述的一或多個(gè)組合的程序代碼。一計(jì)算機(jī)程序(也被稱為程序、軟件、軟件應(yīng)用、腳本、或程序代碼)可以任何形式的程序語言,包含被編譯或翻譯的語言,寫入。計(jì)算機(jī)程序可被以任何形式設(shè)置,例如一獨(dú)立的計(jì)算機(jī)程序、或一模塊、一組件、一子程序或其他使用在計(jì)算機(jī)環(huán)境中適合的單元。一計(jì)算機(jī)程序不需要對(duì)應(yīng)一文件系統(tǒng)中的一檔案。一程序可被存儲(chǔ)在一檔案中的一部分,此檔案更擁有其他程序或數(shù)據(jù),例如一或多個(gè)腳本被存儲(chǔ)在標(biāo)記語言文件中、或者被存儲(chǔ)在專用于討論中的程序的一單一檔案、或多個(gè)互相搭配的檔案(例如存儲(chǔ)一或多個(gè)模塊、子程序、或程序代碼的多個(gè)部分的多個(gè)檔案)。用于執(zhí)行的一計(jì)算機(jī)程序可被設(shè)置在位于一個(gè)網(wǎng)站或者由一通訊網(wǎng)絡(luò)連接的分布式的多個(gè)網(wǎng)站上的一或多個(gè)計(jì)算機(jī)上。本文中描述的流程及邏輯流程可被一或多個(gè)可編程的處理器執(zhí)行,這些處理器執(zhí)行一或多個(gè)計(jì)算機(jī)程序以執(zhí)行本文中描述的功能。本文中描述的流程及邏輯流程及設(shè)備也可被專用邏輯電路執(zhí)行,例如一現(xiàn)場(chǎng)可程序邏輯門陣列(fieldprogrammablegatearray,fpga)、或者一特殊應(yīng)用集成電路(applicationspecificintegratedcircuit,asic)。適合用于執(zhí)行一計(jì)算機(jī)程序的處理器例如包含通用微處理器、專用微處理器、或任何種類的數(shù)字電路的一或多個(gè)處理器。一般來說,處理器會(huì)從一只讀存儲(chǔ)器或一隨機(jī)存取存儲(chǔ)器接收指令和數(shù)據(jù)。一計(jì)算機(jī)的必要元件可包含一處理器以執(zhí)行指令及一或多個(gè)存儲(chǔ)器裝置以存儲(chǔ)指令和數(shù)據(jù)。一般來說,一計(jì)算機(jī)更可包含或耦接以從一或多個(gè)大量存儲(chǔ)裝置(例如磁盤、雌性光盤或光盤)接收數(shù)據(jù),或傳送數(shù)據(jù)到一或多個(gè)大量存儲(chǔ)裝置。然而,計(jì)算機(jī)也可以不需要這些裝置。適合用于存儲(chǔ)計(jì)算機(jī)計(jì)算機(jī)程序指令和數(shù)據(jù)的可讀取媒體可包含任何形式的非揮發(fā)性存儲(chǔ)器、媒體和存儲(chǔ)器裝置,例如半導(dǎo)體存儲(chǔ)器裝置,如eprom、eeprom及閃存裝置??勺x取媒體也可包含磁盤,例如外部硬盤或可移除式硬盤(removabledisks)、磁性光盤、cdrom及dvd-rom。處理器及存儲(chǔ)器可以被補(bǔ)充及被包含在專用邏輯電路內(nèi)。雖然本文見描述了多種性,然而,這不用來限制本發(fā)明所要求的保護(hù)范圍,而應(yīng)如同特定實(shí)施例所描述的。本文件中不同的實(shí)施例所揭露的特定的技術(shù)特征也可被結(jié)合到單一個(gè)實(shí)施例中執(zhí)行。相反地,單一個(gè)實(shí)施例的多個(gè)特征也可被分開到多個(gè)實(shí)施例或任何子組合中執(zhí)行。并且,雖然以上描述的特征一開始被要求保護(hù)且以特定的組合執(zhí)行,在一些情況下要求保護(hù)的組合的一或多個(gè)特征可以從組合中被切割,而所要求保護(hù)的組合可以為子組合或子組合的變型。同樣的,雖然繪示在圖中的操作是有一特定順序,然而應(yīng)當(dāng)理解的是此特定順序執(zhí)行的操作并不限制順序,只要執(zhí)行所有說明的操作以達(dá)到預(yù)期的結(jié)果。只有一些例子和實(shí)施例被揭露??苫谒衣兜睦佣瓿伤衣兜睦雍蛯?shí)施例的變形、修改和加強(qiáng)。當(dāng)前第1頁12當(dāng)前第1頁12