專利名稱:從閃速存儲器中的錯誤恢復(fù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在讀取錯誤可能發(fā)生的系統(tǒng)中從閃速存儲器中讀取數(shù)據(jù)。
背景技術(shù):
單位和多位閃速存儲單元
閃速存儲設(shè)備已經(jīng)存在許多年。典型地,閃速存儲i殳備內(nèi)的每個(gè) 存儲單元存儲一位的信息。在閃速存儲單元中存儲一位的傳統(tǒng)方法是 通過支持存儲單元的兩種狀態(tài)。 一種狀態(tài)表示邏輯"O"而另一種狀態(tài) 表示邏輯"l"。
在閃速存儲單元中,兩種狀態(tài)通過使浮動?xùn)艠O位于單元通道(連 接單元晶體管的源極和漏極元件的區(qū)域)上,以及使電荷量的兩種有
效狀態(tài)存儲在該浮動?xùn)艠O內(nèi)而實(shí)現(xiàn)。典型地, 一種狀態(tài)是在浮動?xùn)艠O 中具有零電荷并且是擦除之后單元的初始未寫入狀態(tài)(通常定義為表 示"l,,狀態(tài)),而另一種狀態(tài)是在浮動?xùn)艠O中具有一定量的負(fù)電荷 (通常定義為表示"0,,狀態(tài))。在柵極中具有負(fù)電荷使得單元晶體管 的閾值電壓(也就是必須施加到晶體管的控制柵極以便使得晶體管傳 導(dǎo)的電壓)增加。現(xiàn)在,通過檢查羊元的閾值電壓讀取存儲位是可能 的-如杲閾值電壓處于較高狀態(tài)則位值為"O",并且如果閣值電壓處 于較低狀態(tài)則位值為"l"。實(shí)際上,不需要準(zhǔn)確地讀取單元的閾值電 壓 - 需要的是正確地識別單元當(dāng)前處于兩種狀態(tài)的哪種。為了這個(gè)目 的,相對于處于兩種狀態(tài)之間中間的參考電壓值進(jìn)行比較,從而確定 單元的閾值電壓低于還是高于該參考值是足夠的。
圖1A圖示顯示這如何工作。具體地,圖1A顯示大量單元的閾 值電壓的分布。因?yàn)殚W存設(shè)備中的單元在它們的特性和行為方面并不完全相同(例如因?yàn)殡s質(zhì)濃度的小偏差或硅結(jié)構(gòu)中的缺陷),將相同 壓。(注意,;由于歷史原因,、將數(shù)據(jù)寫入閃速存儲器通常:作"編程,,
閃速存儲器)。代替地,閾值電壓類似于圖1A中顯示的方式分布。 存儲"l,,值的單元典型地具有負(fù)的閾值電壓,使得大多數(shù)單元具有與 由圖1A的左峰值顯示的值接近的閾值電壓, 一些較少數(shù)目的單元具 有較低或較高的閾值電壓。類似地,存儲"O,,值的單元典型地具有正 的閾值電壓,使得大多數(shù)單元具有與由圖1A的右峰值顯示的值接近 的閾值電壓, 一些較少數(shù)目的單元具有較低或較高的閾值電壓。
近年來, 一種使用常規(guī)稱作"多級單元,,或縮寫MLC技術(shù)的新的 閃存設(shè)備已經(jīng)在市場上出現(xiàn)。(該名稱令人誤解,因?yàn)橄惹邦愋偷拈W 存單元也具有多于一級;它們具有兩級,如上所述。因此,兩種閃存 單元在這里稱作"單位單元"(SBC)和"多位單元"(MBC)。)由 MBC閃存帶來的改進(jìn)在于每個(gè)單元中存儲兩位。(原則上,MBC 也包括每個(gè)單元多于兩位的存儲,但是這種單元當(dāng)前還沒有存在于市 場上。為了簡化說明,這里著重于兩位的情況。但是應(yīng)當(dāng)理解,本發(fā) 明可同等地適用于支持每個(gè)單元任意位數(shù)的閃速存儲設(shè)備)。為了使 得單個(gè)單元存儲兩位信息,單元必須能夠處于四種不同狀態(tài)的一種。 因?yàn)閱卧?狀態(tài),,由它的閾值電壓表示,顯然MBC單元應(yīng)當(dāng)支持閾 值電壓的四種不同有效范圍。圖1B顯示典型MBC單元的閾值電壓 分布。如期望的,圖1B具有四個(gè)峰值,每個(gè)對應(yīng)一種狀態(tài)。如對于 SBC情況一樣,每種狀態(tài)實(shí)際上是一個(gè)范圍而不是單個(gè)數(shù)值。當(dāng)讀 取單元的內(nèi)容時(shí),必須保證的是正確地識別單元的閾值電壓所處的范 圍。對于MBC閃存設(shè)備的現(xiàn)有技術(shù)實(shí)例,參看Harari的美國專利 5,434,825號,在此以引用方式將該專利完全并入本文中。
當(dāng)經(jīng)由四種狀態(tài)編碼MBC單元中的兩位時(shí),通常4吏得圖1B中 的最左側(cè)狀態(tài)(典型地具有負(fù)的閾值電壓)表示兩位都具有"l,,值的 情況。(在下面的討論中,使用下面的表示-單元的兩位稱作"低位" 和"高位"。位的確切值寫作["高位""低位"I的形式,低位值在右側(cè)。所以低位為"0,,且高位為"1,,的情況寫作"10"。必須理解,該術(shù)語和表
示法的選擇是任意的,并且其他名稱和編碼是可能的)。使用這種表 示法,最左側(cè)狀態(tài)表示"ll,,的情況。其他三種狀態(tài)典型地從左到右由
下面的次序指定"10", "00", "01"。在Chen的美國專利6,522,580 號中可以看到使用這種編碼的MBC NAND閃存設(shè)備的實(shí)現(xiàn)實(shí)例,在 此以引用方式將該專利完全并入本文中。特別地參考Chen專利的圖 8。應(yīng)當(dāng)注意,雖然關(guān)于狀態(tài)的該指定沒有限制,并且可以使用任何 其他的排序。當(dāng)讀取MBC單元的內(nèi)容時(shí),必須正確地識別單元的閾 值電壓所處的范圍;僅在該情況下,這不能總是通過與僅一個(gè)參考電 壓比較而實(shí)現(xiàn),并且?guī)状伪容^可能是必需的。例如,在圖1B中說明 的情況下,讀取低位的一種方法是首先將單元的閾值電壓與參考比較 電壓K比較,然后取決于比較的結(jié)果,將單元的閾值電壓與零參考 比較電壓或參考比較電壓K2比較。讀取低位的另一種方法是將單元 的閾值電壓與零參考電壓和K2無條件比較。在任一情況下,需要兩 次比較。
MBC器件提供極大的成本優(yōu)勢-使用類似尺寸的單元一個(gè)存儲 兩位而不是一位。但是,使用MBC閃存也存在一些缺點(diǎn)-MBC存 儲器的平均讀寫時(shí)間比SBC存儲器長,導(dǎo)致較低的性能。而且, MBC的可靠性低于SBC。這可以容易地理解-MBC中閾值電壓范 圍之間的差比SBC中小得多。因此,在SBC中因?yàn)閮煞N狀態(tài)之間的 大間隙而可能未引起注意的閾值電壓中的千擾(例如引起閾值電壓漂 移的存儲電荷的泄漏,來自相鄰單元上操作的干擾等),可能使得 MBC單元從一種狀態(tài)移至另一種狀態(tài),導(dǎo)致錯誤位。最后結(jié)果是 MBC單元對于許多寫入/擦除周期在數(shù)據(jù)保持時(shí)間或設(shè)備持久性方面 的較低質(zhì)量規(guī)范。因此,取決于應(yīng)用的需求,使用MBC單元和SBC 單元都可能是有利的。
雖然上面的說明涉及浮動?xùn)艠O閃速存儲單元,存在其他類型的閃 速存儲技術(shù)。例如,在NROM閃速存儲技術(shù)中,不存在導(dǎo)電的浮動 柵極而是存在捕獲電荷的絕緣層。本發(fā)明即使描述在浮動?xùn)艠O技術(shù)的上下文中給出也可同等地適用于所有閃速存儲器類型。 當(dāng)從閃存單元中讀取數(shù)據(jù)時(shí)的錯誤校正
如上所述,閃存單元,特別是MBC閃存單元可能被錯誤地讀 取,如果它們的閾值電壓漂移遠(yuǎn)離它們的初始值。如果閾值電壓漂移 的量足夠大,讀取過程可能發(fā)現(xiàn)單元處于用作單元兩種狀態(tài)之間的邊 界線的讀取參考電壓的錯誤一側(cè)。即使通常使用糾錯碼(ECC)校 正從閃速存儲器中讀取的數(shù)據(jù)中的錯誤,校正能力典型地局限于讀取 的數(shù)據(jù)頁內(nèi)的錯誤的某個(gè)固定數(shù)目,并且最終錯誤的累積數(shù)目可能超 出ECC機(jī)制的校正能力。
Auclair等人的標(biāo)題為"EEPROM器件中的軟錯誤處理"的美國專 利5,657,332 (在下文稱"Auclair,,)解決由閾值電壓漂移引起的閃速 存儲器錯誤的該問題。在此以引用方式將該專利完全并入本文中。 Auclair提供錯誤問題的兩種解決方法。第一種通過檢測接近越過邊 界線的單元,并且通過將它們的內(nèi)容重寫回存儲器"固定"它們,從而 將閾值電壓"復(fù)位"到它們的正確初始值來消除錯誤的產(chǎn)生。Auclair 的第二種解決方法接受漂移錯誤的存在作為給定事實(shí),并且在錯誤已
經(jīng)存在之后嘗試提高存儲系統(tǒng)的堅(jiān)固性。該第二解決方法在Auclair 中13欄14-27行中討論。
用于從閃速存儲器中讀取數(shù)據(jù)的Auclair的方法首先嘗試使用讀 取參考電壓(或在MBC閃速存儲器的情況下多個(gè)讀取參考電壓)的 默認(rèn)值進(jìn)行常規(guī)讀取。假設(shè)該首次讀取嘗試導(dǎo)致如此多的錯誤以至于 ECC機(jī)制不能校正它們,Auclair使用兩個(gè)階段的恢復(fù)計(jì)劃
A.讀取參考電壓從它們的默認(rèn)值變成另一組預(yù)先確定的值,并 且使用該組新的預(yù)先確定參考值嘗試讀取。典型地,新值將稍微低于 默認(rèn)值。預(yù)期單元的閾值電壓隨著時(shí)間漂移到較低值是合理的(也就 是,在圖1A和IB中向左移動),因?yàn)槠剖请姾尚孤┏龈訓(xùn)艠O 的結(jié)果。因此,向左移動比較"邊界,,具有將漂移后的狀態(tài)彼此分離的 良好機(jī)會。如果在使用校正后的參考值的讀取結(jié)果中仍然存在錯誤, 它們由ECC機(jī)制處理。如果仍然存在太多錯誤以至于不能校正,過
12程重復(fù)-選擇另 一組預(yù)先確定的讀取參考值并且進(jìn)行另 一次讀取和校 正。有希望地,該重復(fù)過程以成功校正并可以假設(shè)不具有錯誤的數(shù)據(jù) 結(jié)束。
一旦我們到達(dá)該點(diǎn),我們移至第二階段。
B.從第一階段獲得的數(shù)據(jù)寫回到單元,使得下一次使用默認(rèn)讀 取參考值讀取它時(shí),它將不提供像當(dāng)前讀取情況一樣如此多的錯誤。
圖2提供描述根據(jù)Auclair中公開的現(xiàn)有技術(shù)由具有控制器和閃 速存儲器(也就是包括閃速存儲單元)的閃存設(shè)備處理讀取請求的流 程圖。在接收到110讀取請求之后,閃存控制器使用默i/v參考電壓從 閃速存儲器212中讀取112A數(shù)據(jù)位。嘗試114使用ECC實(shí)現(xiàn)讀取 數(shù)據(jù)位的校正。如果錯誤校正成功116,設(shè)備可以通過發(fā)送校正后的 讀取數(shù)據(jù)(例如通過發(fā)送數(shù)據(jù)到主機(jī)設(shè)備)響應(yīng)118讀取請求。在響 應(yīng)118讀取請求之后,設(shè)備準(zhǔn)備處理另一個(gè)讀取請求。
如果錯誤校正不成功116,設(shè)備使用包括至少一個(gè)預(yù)先確定的修 改119參考電壓的一組參考電壓從閃速存儲器中重新讀取112B數(shù)據(jù) 位。在使用一個(gè)或多個(gè)"新的,,預(yù)先確定參考電壓(也就是使用至少預(yù) 先確定的修改119參考電壓)重新讀取112B數(shù)據(jù)位之后,嘗試114 另一次錯誤校正。如果另一次錯誤校正116失敗,重復(fù)^f吏用不同的預(yù) 先修改119參考電壓并且重新讀取112B數(shù)據(jù)位的該過程,直到ECC 可以成功地執(zhí)行116數(shù)據(jù)位的錯誤校正。
在該點(diǎn),存儲單元"復(fù)原,,以便減小當(dāng)隨后讀取該單元(使用它們 的"正常,,默認(rèn)參考電壓)時(shí)錯誤校正失敗的可能性。這通過利用在成 功的錯誤校正之后,正常數(shù)據(jù)現(xiàn)在可用并且可以重寫到124存儲單元 中的事實(shí)實(shí)現(xiàn)。因此,根據(jù)Auclair的講授,假設(shè)在數(shù)據(jù)重寫之后, 下一次使用默認(rèn)的讀取參考值讀取112A該數(shù)據(jù)時(shí)(也就是在另一個(gè) 數(shù)據(jù)請求110之后),閃速存儲單元將更可能提供具有較少錯誤的數(shù) 據(jù)(也就是因?yàn)橐呀?jīng)校正了參考電壓"漂移,,),提供可以使用ECC 校正的讀取數(shù)據(jù)。
注意Auclair的前述恢復(fù)方法遭受一個(gè)大的缺點(diǎn)。每當(dāng)使用恢復(fù) 過程時(shí),數(shù)據(jù)再次寫入。在閃速存儲器中,寫入操作比讀取操作慢得多。例如在SBC NAND閃速存儲器中, 一個(gè)數(shù)據(jù)頁的寫入花費(fèi)大約 200微秒,而一個(gè)數(shù)據(jù)頁的讀取花費(fèi)大約15微秒。在MBC NAND 閃速存儲器中情況更糟,其中一頁的寫入可能花費(fèi)800微秒而一頁的 讀取可能花費(fèi)30微秒。該事實(shí)意味著使用Auclair的恢復(fù)數(shù)據(jù)頁的 方法可能是非常慢的操作。典型地,發(fā)起讀取請求并等待數(shù)據(jù)的軟件 應(yīng)用程序期望數(shù)據(jù)在幾十微秒內(nèi)可獲得,而它可能實(shí)際上不得不等待 更長的數(shù)量級。對于實(shí)時(shí)軟件應(yīng)用程序,這可能是不可接受的。即使 Auclair的寫入階段延遲到隨后的時(shí)間,使得一旦數(shù)據(jù)可用軟件應(yīng)用 程序就接收到它,而不等待恢復(fù)過程完成,仍然存在因額外的寫入操 作而引起的存儲系統(tǒng)吞吐量的降低。
因此需要在錯誤存在的情況下從閃速存儲器中恢復(fù)數(shù)據(jù),同時(shí)在 相對短的時(shí)間內(nèi)實(shí)現(xiàn)恢復(fù)的方法。
發(fā)明內(nèi)容
前述需求的一些或全部,以及其他需求由本發(fā)明的幾個(gè)方面滿足。
現(xiàn)在首次公開一種在包括多個(gè)閃速存儲單元以及錯誤檢測和校正 模塊的系統(tǒng)中讀取數(shù)據(jù)的方法。當(dāng)前公開的方法包括步驟(a)從多 個(gè)閃速存儲單元中讀取數(shù)據(jù)位;(b)嘗試使用錯誤檢測和校正模塊 校正讀取數(shù)據(jù)位的錯誤;(c )如果錯誤檢測和校正模塊的錯誤校正 失敗,使用至少一個(gè)修改參考電壓從多個(gè)閃速存儲單元中至少一次重 新讀取數(shù)據(jù)位,直到模塊成功地校正錯誤;以及(d)對于數(shù)據(jù)位重 復(fù)步驟(a) 、 (b)和(c)而不在其間(也就是,在使用至少修改 參考電壓的步驟(c)的成功錯誤校正之后,以及在步驟(a)的讀取 之前)將數(shù)據(jù)位重寫到存儲單元。
根據(jù)一些實(shí)施方案,重復(fù)之前的初始讀取是響應(yīng)第一讀取請求, 并且與重復(fù)相關(guān)聯(lián)的隨后讀取是響應(yīng)隨后的讀取請求。
現(xiàn)在首次公開一種在包括多個(gè)閃速存儲單元以及錯誤檢測和校正 模塊的系統(tǒng)中讀取數(shù)據(jù)的方法。當(dāng)前公開的方法包括步驟(a)從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;(b)嘗試使用錯誤檢測和校正模塊 校正讀取數(shù)據(jù)位的錯誤;(c )如果錯誤檢測和校正模塊的錯誤校正 失敗,使用至少一個(gè)修改參考電壓從多個(gè)閃速存儲單元中至少一次重 新讀取數(shù)據(jù)位,直到模塊成功地校正錯誤;(d)在校正之后,存儲 模塊成功校正錯誤的至少一個(gè)讀取參考電壓;(e)在存儲之后,取 回存儲的至少一個(gè)讀取參考電壓;以及g)在取回之后,使用取回的
至少一個(gè)讀取參考電壓從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位。
該至少一個(gè)讀取參考電壓可以存儲在易失性和/或非易失性存儲 器的任何組合中。
根據(jù)一些實(shí)施方案,至少一個(gè)讀取參考電壓存儲在閃速存儲單元 的一個(gè)或多個(gè)中。
根據(jù)一些實(shí)施方案,讀取數(shù)據(jù)位使用閃存控制器讀取,并且至少 一個(gè)讀取參考電壓存儲在閃存控制器中(也就是在閃存控制器的易失 性和/或非易失性存儲器的任何組合中)。
根據(jù)一些實(shí)施方案,存儲之前的初始讀取是響應(yīng)第一讀取請求, 并且使用取回的至少 一個(gè)讀取參考電壓的隨后讀取是響應(yīng)隨后的讀取 請求。
現(xiàn)在首次公開一種在包括多個(gè)閃速存儲單元以及錯誤檢測和校正 模塊的系統(tǒng)中讀取數(shù)據(jù)的方法。當(dāng)前公開的方法包括步驟(a)從多
個(gè)閃速存儲單元中讀取數(shù)據(jù)位;b)嘗試使用錯誤檢測和校正模塊校 正讀取數(shù)據(jù)位的錯誤;c)如果錯誤檢測和校正模塊的錯誤校正失敗 并且在讀取之后,導(dǎo)出至少一個(gè)新的讀取參考電壓;以及d)使用導(dǎo) 出的至少一個(gè)新的讀取參考電壓從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位。
根據(jù)一些實(shí)施方案,該導(dǎo)出的至少一個(gè)新的電壓至少部分地根據(jù) 由錯誤檢測和校正模塊提供的信息確定。
根據(jù)一些實(shí)施方案,該導(dǎo)出的至少一個(gè)新的電壓至少部分地隨機(jī) 確定。
現(xiàn)在首次公開 一種在包括多個(gè)閃速存儲單元以及錯誤檢測和校正
模塊的系統(tǒng)中讀取數(shù)據(jù)的方法。當(dāng)前公開的方法包括步驟(a)從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;b)使用錯誤檢測和校正模塊校正讀 取數(shù)據(jù)位的錯誤;以及c)在校正之后,使用至少一個(gè)修改參考電壓 從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位。
根據(jù)一些實(shí)施方案,即使在其間(也就是,在步驟(a)的數(shù)據(jù) 位的讀取之后以及在使用至少一個(gè)修改參考電壓重新讀取之前)不存 在錯誤校正檢測和校正模塊的錯誤校正失敗,執(zhí)行使用至少一個(gè)修改 參考電壓的數(shù)據(jù)位的隨后讀取。
根據(jù)一些實(shí)施方案,在校正之后和在使用至少一個(gè)修改參考電壓 讀取之前,不寫入多個(gè)存儲單元。
根據(jù)一些實(shí)施方案,至少一個(gè)修改參考電壓至少部分地根據(jù)由錯 誤檢測和校正模塊提供的信息(例如指示許多錯誤的信息)而導(dǎo)出。
根據(jù)一些實(shí)施方案,校正之前的初始讀取是響應(yīng)第一讀取請求, 并且校正之后的隨后讀取是響應(yīng)隨后的讀取請求。
現(xiàn)在首次公開一種數(shù)據(jù)存儲器的閃速存儲設(shè)備,包括a)用于存 儲數(shù)據(jù)位的多個(gè)閃速存儲單元;b)用于檢測和校正數(shù)據(jù)位中錯誤的 錯誤檢測和校正模塊;以及c)用于從存儲單元中讀取數(shù)據(jù)位的控制 器,其中(0控制器操作以通過從多個(gè)閃速存儲單元中讀取數(shù)據(jù) 位來響應(yīng)第一讀取請求,并且如果錯誤檢測和校正模塊不能校正數(shù)據(jù) 位,使用至少一個(gè)修改參考電壓重新讀取數(shù)據(jù)位直到模塊成功地校正 錯誤;以及ii)控制器進(jìn)一步操作以對于隨后的讀取請求重復(fù)該響 應(yīng),而不在其間(也就是,在與第一讀取請求的數(shù)據(jù)位的重新讀取相 關(guān)聯(lián)的成功錯誤校正之后,以及在與第一個(gè)隨后的讀取請求相關(guān)聯(lián)的 數(shù)據(jù)位的首次讀取之前)將數(shù)據(jù)位重寫到存儲單元。
現(xiàn)在首次公開一種數(shù)據(jù)存儲器的閃速存儲設(shè)備,包括a)用于存 儲數(shù)據(jù)位的多個(gè)閃速存儲單元;b)用于檢測和校正數(shù)據(jù)位中錯誤的 錯誤檢測和校正模塊;以及c)用于從存儲單元中讀取數(shù)據(jù)位的控制 器,其中(I)控制器操作以響應(yīng)第一讀取請求,通過i)從多個(gè) 閃速存儲單元中讀取數(shù)據(jù)位;ii)嘗試使用錯誤檢測和校正模塊校正 讀取數(shù)據(jù)位的錯誤;iii)如果錯誤檢測和校正模塊的錯誤校正失敗,使用至少一個(gè)修改參考電壓從多個(gè)閃速存儲單元中至少一次重新讀取
數(shù)據(jù)位,直到^^莫塊成功地校正錯誤;以及iv)在校正之后,存儲(例 如,在控制器的輔助存儲器中,或者在任何其他存儲器中)模塊成功 校正錯誤的至少一個(gè)讀取參考電壓;以及,在存儲之后,(II)控制 器進(jìn)一步操作以響應(yīng)隨后的讀取請求,通過i)取回存儲的至少一個(gè) 讀取參考電壓;以及ii)在取回之后,使用取回的至少一個(gè)讀取參考 電壓從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位。
根據(jù)一些實(shí)施方案,控制器操作以將至少一個(gè)讀取參考電壓存儲 在易失性存儲器中。
根據(jù)一些實(shí)施方案,控制器操作以將至少一個(gè)讀取參考電壓存儲 在非易失性存儲器中。
根據(jù)一些實(shí)施方案,控制器操作以將至少一個(gè)讀取參考電壓存儲 在閃速存儲單元的一個(gè)或多個(gè)中。
根據(jù)一些實(shí)施方案,控制器操作以將至少一個(gè)讀取參考電壓存儲 在控制器(例如閃存控制器的易失性和/或非易失性存儲器)中。
現(xiàn)在首次公開一種數(shù)據(jù)存儲器的閃速存儲設(shè)備,包括a)用于存 儲數(shù)據(jù)位的多個(gè)閃速存儲單元;b)用于檢測數(shù)據(jù)位中錯誤的錯誤檢 測和校正模塊;以及e)用于從閃速存儲單元中讀取數(shù)據(jù)位的控制 器,其中控制器操作以響應(yīng)讀取請求,通過(i)從多個(gè)閃速存儲 單元中讀取數(shù)據(jù)位;(ii)嘗試使用錯誤檢測和校正模塊校正讀取數(shù) 據(jù)位的錯誤;(iii)如果錯誤檢測和校正模塊的錯誤校正失敗并且在 讀取之后,導(dǎo)出至少一個(gè)新的讀取參考電壓;以及(iv)使用導(dǎo)出的 至少一個(gè)新的讀取參考電壓從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位。
根據(jù)一些實(shí)施方案,控制器操作以至少部分地根據(jù)由錯誤檢測和 校正模塊提供的信息導(dǎo)出該至少一個(gè)新的電壓。
根據(jù)一些實(shí)施方案,控制器操作以至少部分地隨機(jī)導(dǎo)出該至少一 個(gè)新的電壓。
現(xiàn)在首次公開一種數(shù)據(jù)存儲器的閃速存儲設(shè)備,包括a)用于存 儲數(shù)據(jù)位的多個(gè)閃速存儲單元;b)用于檢測數(shù)據(jù)位中錯誤的錯誤檢測和校正模塊;以及c)用于從閃速存儲單元中讀取數(shù)據(jù)位的控制 器,其中(I)控制器操作以響應(yīng)笫一讀取請求,通過i)從多個(gè)閃 速存儲單元中讀取數(shù)據(jù)位;以及ii)使用所述錯誤檢測和校正模塊校 正所述讀取數(shù)據(jù)位的錯誤,以及(II)控制器進(jìn)一步操作以響應(yīng)隨后 的讀取請求,通過iii)使用至少一個(gè)修改參考電壓從多個(gè)閃速存儲 單元中讀取數(shù)據(jù)位。
根據(jù)一些實(shí)施方案,控制器操作以響應(yīng)第一和隨后的讀取請求, 而不在校正之后和使用該至少一個(gè)修改參考電壓讀取之前寫入多個(gè)存 儲單元。
根據(jù) 一 些實(shí)施方案,控制器操作以至少部分地根據(jù)由錯誤檢測和 校正模塊提供的信息導(dǎo)出至少 一個(gè)修改參考電壓。
一種計(jì)算機(jī)可讀存儲介質(zhì),具有包含在計(jì)算機(jī)可讀存儲介質(zhì)中的
計(jì)算機(jī)可讀代碼,該計(jì)算機(jī)可讀代碼包括用于在包括多個(gè)閃速存儲單 元以及錯誤檢測和校正模塊的系統(tǒng)中讀取數(shù)據(jù)的指令,其中指令包括 指令a)從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;b)嘗試使用錯誤檢測 和校正模塊校正讀取數(shù)據(jù)位的錯誤;c)如果錯誤檢測和校正模塊的 錯誤校正失敗,使用至少一個(gè)修改參考電壓從多個(gè)閃速存儲單元中至 少一次重新讀取數(shù)據(jù)位,直到模塊成功地校正錯誤;以及d)重復(fù)步 驟(a)、 (b)和(c)而不在其間(也就是,在使用至少修改參考 電壓的步驟(c)的成功錯誤校正之后,以及在步驟(a)的讀取之 前)將數(shù)據(jù)位重寫到存儲單元。
現(xiàn)在首次公開一種計(jì)算機(jī)可讀存儲介質(zhì),具有包含在計(jì)算機(jī)可讀 存儲介質(zhì)中的計(jì)算機(jī)可讀代碼,該計(jì)算機(jī)可讀代碼包括用于在包括多 個(gè)閃速存儲單元以及錯誤檢測和校正模塊的系統(tǒng)中讀取數(shù)據(jù)的指令, 其中指令包括指令a)從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;b)嘗試 使用錯誤檢測和校正模塊校正讀取數(shù)據(jù)位的錯誤;c)如果錯誤檢測 和校正模塊的錯誤校正失敗,使用至少一個(gè)修改參考電壓從多個(gè)閃速 存儲單元中至少一次重新讀取數(shù)據(jù)位,直到模塊成功地校正錯誤; d)在校正之后,存儲模塊成功校正錯誤的至少一個(gè)讀取參考電壓;
18e)在存儲之后,取回存儲的至少一個(gè)讀取參考電壓;以及g)在取 回之后,使用取回的至少一個(gè)讀取參考電壓從多個(gè)閃速存儲單元中讀 取數(shù)據(jù)位。
現(xiàn)在首次公開一種計(jì)算機(jī)可讀存儲介質(zhì),具有包含在計(jì)算機(jī)可讀 存儲介質(zhì)中的計(jì)算機(jī)可讀代碼,該計(jì)算機(jī)可讀代碼包括用于在包括多 個(gè)閃速存儲單元以及錯誤檢測和校正模塊的系統(tǒng)中讀取數(shù)據(jù)的指令, 其中指令包括指令a)從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;b)嘗試 使用錯誤檢測和校正模塊校正讀取數(shù)據(jù)位的錯誤;c)如果錯誤檢測 和校正模塊的錯誤校正失敗并且在讀取之后,導(dǎo)出至少一個(gè)新的讀取 參考電壓;以及d)使用導(dǎo)出的至少一個(gè)新的讀取參考電壓從多個(gè)閃 速存儲單元中讀取數(shù)據(jù)位。
一種計(jì)算機(jī)可讀存儲介質(zhì),具有包含在計(jì)算機(jī)可讀存儲介質(zhì)中的
計(jì)算機(jī)可讀代碼,該計(jì)算機(jī)可讀代碼包括用于在包括多個(gè)閃速存儲單 元以及錯誤檢測和校正模塊的系統(tǒng)中讀取數(shù)據(jù)的指令,其中指令包括 指令a)從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;b)使用錯誤檢測和校 正模塊校正讀取數(shù)據(jù)位的錯誤;以及c)在校正之后,使用至少一個(gè) 修改參考電壓從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位。
這些和更多實(shí)施方案將從下面的詳細(xì)描述和實(shí)例中明白。
圖1A-1B提供大量存儲單元的鬮值電壓分布的圖解說明(現(xiàn)有 技術(shù))。
圖2提供描述現(xiàn)有技術(shù)錯誤恢復(fù)方案的流程圖3提供根據(jù)本發(fā)明實(shí)例實(shí)施方案的閃速存儲設(shè)備的框圖。 圖4-7每個(gè)提供描述根據(jù)本發(fā)明一些實(shí)施方案由閃存設(shè)備處理一 個(gè)或多個(gè)讀取請求的流程圖。
具體實(shí)施例方式
現(xiàn)在根據(jù)具體的實(shí)例實(shí)施方案描述本發(fā)明。應(yīng)當(dāng)理解,本發(fā)明并不局限于公開的實(shí)例實(shí)施方案。同樣應(yīng)當(dāng)理解,并不是當(dāng)前公開的用 于從閃速存儲器中的錯誤恢復(fù)的方法、設(shè)備和計(jì)算機(jī)可讀代碼的每個(gè) 特征對于實(shí)現(xiàn)本發(fā)明都是必需的,如附加權(quán)利要求書中任何特定一個(gè) 要求的。描述了設(shè)備的各種元件和特征以能夠充分實(shí)現(xiàn)本發(fā)明。同樣 應(yīng)當(dāng)理解,遍及顯示或描述過程或方法的該公開內(nèi)容,方法的步驟可 以任何次序或同時(shí)地執(zhí)行,除非從上下文中顯然一個(gè)步驟依賴于另一 個(gè)步驟首先執(zhí)行。
圖3的閃速存儲設(shè)備
圖3提供根據(jù)本發(fā)明實(shí)例實(shí)施方案的閃速存儲設(shè)備50的框圖。 閃速存儲設(shè)備50包括具有多個(gè)閃速存儲單元的閃速存儲器30,以及 閃存控制器10。閃存控制器10操作以從閃速存儲單元30中讀取數(shù) 據(jù),并且可選地,也操作以將數(shù)據(jù)寫入閃速存儲單元30中。閃存設(shè) 備50也包括錯誤檢測和校正電路系統(tǒng)20,或者作為閃存控制器10 的一部分(如圖3中所示),或者獨(dú)立地。閃存控制器10可以根據(jù) 從閃存設(shè)備50的外部接收的,例如來自主機(jī)設(shè)備(沒有顯示)的指 令存取閃速存儲器30。 圖4的描述
圖4提供描述根據(jù)本發(fā)明一些實(shí)施方案由閃存設(shè)備50處理一個(gè) 或多個(gè)讀取請求的流程圖。在接收到110讀取請求之后,閃存控制器 10使用一組參考電壓(例如,默認(rèn)的參考電壓,或者任何其他組參 考電壓-因此每個(gè)存儲單元使用各自的參考電壓被讀取)從閃速存儲 器30中讀取112C數(shù)據(jù)位。進(jìn)行嘗試114使用ECC實(shí)現(xiàn)讀取數(shù)據(jù)位 的校正。如果錯誤校正成功116,控制器10可以通過發(fā)送校正后的 數(shù)據(jù)(例如到主機(jī)設(shè)備)來響應(yīng)118讀取請求。在響應(yīng)118讀取請求 之后,設(shè)備50準(zhǔn)備處理另一個(gè)讀取請求。
如果錯誤校正不成功116,控制器10可以使用至少一個(gè)修改120 參考電壓(也就是,至少一個(gè)各自電壓與在先前讀取-112C中使用 的不同)從閃速存儲器中重新讀取112B數(shù)據(jù)位。在重新讀取112B 之后,再次嘗試114另一次錯誤校正。如果該錯誤校正不成功116,控制器10可以使用至少一個(gè)修改參考電壓(也就是,至少一個(gè)各自 電壓與先前讀取-112B中使用的不同)再次從存儲單元30中讀取 112B數(shù)據(jù)位。^吏用《務(wù)改電壓重新讀取112B和嘗試錯誤校正114重 復(fù),直到存在成功的錯誤校正116。
此時(shí),響應(yīng)118可以發(fā)送到讀取請求,并且控制器準(zhǔn)備響應(yīng)另一 個(gè)讀取請求110。注意根據(jù)圖4中描述的實(shí)施方案,在成功的錯誤校 正之后,數(shù)據(jù)不重寫到閃速存儲單元中。
注意在圖4中,錯誤恢復(fù)過程包括使用修改120參考電壓至少一 次重新讀取112B閃速存儲單元。雖然不是圖4的要求,在一些實(shí)施 方案中,可以預(yù)先確定修改參考電壓的序列,并且對于每次重復(fù),可 以使用一組不同的預(yù)先確定參考電壓。作為選擇,可以例如使用閃存 控制器10的微處理器計(jì)算一個(gè)或多個(gè)修改參考電壓。 與圖4相關(guān)的討論
因?yàn)椴恢貙憯?shù)據(jù),當(dāng)處理第一讀取請求時(shí)遇到的相同數(shù)據(jù)錯誤可 能在處理隨后的讀取請求時(shí)再次遇到(也就是,因?yàn)榇鎯卧獩]有使 用重寫數(shù)據(jù)復(fù)原以減小當(dāng)使用默認(rèn)參考電壓時(shí)錯誤校正失敗的可能 性)。因此,當(dāng)處理隨后的讀取請求時(shí),設(shè)備將需要再次調(diào)用錯誤恢 復(fù)程序,例如圖4中描述的程序。
本發(fā)明者現(xiàn)在首次公開,在許多情況下,與消除重寫數(shù)據(jù)到閃速 存儲器中(參看圖2的124)的耗時(shí)步驟相關(guān)聯(lián)的速度獲益(也就是 通過調(diào)用更快的恢復(fù)程序)可能超過與多次讀取重復(fù)相關(guān)聯(lián)的效率損 失,以及更頻繁地從讀取錯誤中恢復(fù)的需求。因此,本發(fā)明者公開存 在圖4的程序平均比圖2的程序更快的許多情況。 圖5的描述
圖5提供描述根據(jù)本發(fā)明一些實(shí)施方案由閃存設(shè)備50處理一個(gè) 或多個(gè)讀取請求的流程圖。在接收到IIO讀取請求之后,閃存控制器 10使用一組參考電壓(例如,默認(rèn)的參考電壓,或者任何其他組參 考電壓-因此每個(gè)存儲單元使用各自的參考電壓被讀取)從閃速存儲 器30中讀取112C數(shù)據(jù)位。嘗試114使用ECC實(shí)現(xiàn)讀取數(shù)據(jù)位的校
21正。如果錯誤校正成功116,控制器10可以通過發(fā)送校正后的數(shù)據(jù) (例如到主機(jī)設(shè)備)來響應(yīng)118讀取請求。在響應(yīng)118讀取請求之 后,設(shè)備50準(zhǔn)備處理另一個(gè)讀取請求。
如果錯誤校正不成功116,控制器10可以使用至少一個(gè)修改120 參考電壓(也就是,至少一個(gè)各自電壓與在先前讀取-112C中使用 的不同)從閃速存儲器中重新讀取112B數(shù)據(jù)位。在重新讀取112B 之后,再次嘗試114另一次錯誤校正。如果該錯誤校正不成功116, 控制器10可以使用至少一個(gè)修改參考電壓(也就是,至少一個(gè)各自 電壓與先前讀取-112B中使用的不同)再次從存儲單元30中讀取 112B數(shù)據(jù)位。使用修改電壓重新讀取112B和嘗試錯誤校正114重 復(fù),直到存在成功的錯誤校正116。
此時(shí),響應(yīng)118可以發(fā)送到讀取請求。
根據(jù)圖5中描繪的實(shí)施方案,在成功的錯誤校正116之后(也就 是在成功恢復(fù)之后),"成功的,,參考電壓130的一個(gè)或多個(gè)可以存儲 在存儲器中,供隨后使用。
當(dāng)接收到隨后的讀取請求110時(shí),可以取回132這些存儲的參考 電壓的一個(gè)或多個(gè)(也就是當(dāng)處理前一個(gè)讀取請求時(shí)在成功恢復(fù)之后 存儲130的),并且在讀取112D閃速存儲器以處理隨后的讀取請求 時(shí)使用。
雖然圖S中沒有顯式地寫入并且不是圖5的限制,但是應(yīng)當(dāng)理 解,在一些實(shí)施方案中,像圖4中一樣,從閃存單元中取回的實(shí)際數(shù) 據(jù)不需要重寫到閃存單元中。 圖5的討論
雖然不是限制,圖5可以看作當(dāng)描述圖4時(shí)上面公開內(nèi)容的"改 進(jìn)"。在上面圖4的描述中,應(yīng)當(dāng)注意,因?yàn)閿?shù)據(jù)沒有重寫到閃速存 儲單元(也就是,為了避免耗時(shí)的閃存寫入操作),在處理隨后的請 求時(shí)可能遇到相同的錯誤(也就是,因?yàn)榇鎯卧獩]有使用重寫數(shù)據(jù) 復(fù)原以減小當(dāng)使用默認(rèn)參考電壓時(shí)錯誤校正失敗的可能性)。
圖5的程序可以用于減少在錯誤恢復(fù)之后當(dāng)響應(yīng)隨后的讀取請求時(shí)所需讀取重復(fù)的次數(shù)。更具體地,在許多情況下,存儲的成功參考 電壓(也就是,來自前一個(gè)讀取請求)可能在隨后的讀取請求中提供 適當(dāng)參考電壓的良好第一近似。因此,通過在錯誤恢復(fù)之后存儲這些 參考電壓并且隨后取回這些電壓,可以獲得速度的再次凈增益。
例如,假設(shè)在SBC閃存中(其中僅存在一個(gè)讀取參考值) 一個(gè) 特定閃存單元的讀取參考在每次連續(xù)重復(fù)中修改(也就是步驟120) 25毫伏。如果單元的閾值電壓已經(jīng)漂移的實(shí)際漂移為100毫伏,那 么讀取數(shù)據(jù)的首次嘗試(也就是步驟112C)將在5次讀取重復(fù)之后 成功(假設(shè)為了簡單,默認(rèn)的讀取參考值非常接近分布邊緣而沒有安 全裕度,這典型地不是閃速存儲設(shè)備的情況)。在成功讀取之后,存 儲100毫伏的值供隨后使用。
在接收到隨后的讀取請求之后,當(dāng)該數(shù)據(jù)被再次讀取112D時(shí), 取回并使用100毫伏的存儲值。根據(jù)一種實(shí)施方案(也就是如圖5中 說明的),可以調(diào)過默認(rèn)讀取并且讀取可以從遠(yuǎn)離默i人值100毫伏的 參考開始。作為選擇,當(dāng)接收到隨后的讀取請求時(shí),可以嘗試使用默 認(rèn)參考電壓的初始讀取,并且僅當(dāng)不能校正數(shù)據(jù)時(shí),將嘗試使用100 毫伏漂移值的讀取。這樣,僅發(fā)生一次或兩次讀取重復(fù)的開銷,而不 是五次。
注意,閃速存儲器的各個(gè)頁(讀取的塊)的成功參考值可以存儲 130在易失性存儲器、非易失性存儲器或其任何組合中。例如,成功 參考值可以存儲130在閃存控制器內(nèi)的RAM中的表格中,或者閃存 設(shè)備內(nèi)。RAM中的存儲快速且有效,因此用于加速過程的目的。缺 點(diǎn)在于一旦電源關(guān)閉,存儲的參考丟失。但是,這仍然是可接受的, 因?yàn)榇鎯Φ闹悼赡軐τ诖鎯ο到y(tǒng)操作不是必要的。如果數(shù)據(jù)塊的存儲 參考值丟失,那么在該塊數(shù)據(jù)的下次讀取時(shí),可以初始地使用較慢的 完全重復(fù)過程(例如圖4中所示),但是仍然可以正確地取回?cái)?shù)據(jù)。 圖6的描述和討論
在圖4中,注意對于可以如何修改120參考電壓沒有限制。在圖 6中,公開至少一個(gè)電壓可以某種方法導(dǎo)出140或計(jì)算(例如,使用閃存控制器10的微處理器)。在該部分中,將描述用于導(dǎo)出或計(jì)算 140 —個(gè)或多個(gè)參考電壓的兩種實(shí)例程序。笫一種程序涉及根據(jù)由 ECC模塊提供的信息計(jì)算140參考電壓,并且第二種程序涉及使用 隨機(jī)選擇的電壓導(dǎo)出140參考電壓。雖然圖5或6中沒有顯式地寫 入,注意典型地,在數(shù)據(jù)恢復(fù)之后數(shù)據(jù)不重寫到閃速存儲單元。 導(dǎo)出140參者電壓的第一種程序
在一些實(shí)施方案中(并且如圖6中說明的),當(dāng)它不能校正數(shù)據(jù) 時(shí)利用由ECC模塊提供的信息是可能的。例如,可以配置一些ECC 模塊以提供它們不能校正的數(shù)據(jù)中錯誤嚴(yán)重性的指示。該環(huán)境中錯誤 的嚴(yán)重性典型地表示數(shù)據(jù)中錯誤的數(shù)目。所以即使ECC模塊可能不 知道確切的錯誤(并且甚至可能不知道它們的確切數(shù)目),仍然可以 存在指示錯誤數(shù)目高還是低的信息。當(dāng)使用可以提供這種信息的 ECC模塊時(shí),這可以用于減小讀取重復(fù)的次數(shù)。預(yù)期大量錯誤與閾 值電壓的大的漂移相關(guān)是合理的,而少量錯誤與較小的漂移相關(guān)。
以最簡單的形式,僅當(dāng)二元"大量/少量錯誤"指示由ECC模塊提 供時(shí),該實(shí)施方案如下操作。當(dāng)基于第一默認(rèn)值的讀取失敗時(shí),向 ECC模塊詢問錯誤的嚴(yán)重性。然后使用基于該嚴(yán)重性確定的參考值 進(jìn)行下一次讀取嘗試。如果存在許多錯誤可以使用參考值的大的漂 移,而如果存在錯誤可以使用較小的漂移。這樣,下一次讀取嘗試將 成功的概率較高,并且每個(gè)讀取操作的讀取重復(fù)的平均次數(shù)將減小。
注意,通過導(dǎo)出用于每個(gè)重復(fù)的參考電壓(例如,根據(jù)由ECC 模塊提供的信息),可以提供參考電壓不預(yù)先確定的錯誤恢復(fù)方案。 因此,參考電壓的序列可能對于不同的數(shù)據(jù)頁而不同,并且甚至可能 對于相同頁的兩個(gè)讀取操作而不同。
顯然,如果結(jié)果我們對于參考電壓的預(yù)測失敗,返回到圖4或圖 5中描述的方案,或者任何其他方案總是可能的。 導(dǎo)出140參考電壓的第二種程序
存在錯誤恢復(fù)期間期望隨機(jī)地導(dǎo)出140至少一個(gè)參考電壓,而不 是使用預(yù)先確定值的許多情況。例如,如果ECC模塊不能提供關(guān)于錯誤嚴(yán)重性的信息,像許多簡單的ECC方案例如BCH或漢明碼的 情況,根據(jù)從數(shù)據(jù)位獲得的信息選擇讀取參考電壓或許是不可能的。 因此,可以期望使用隨機(jī)值。當(dāng)在不同頁之間存在可能漂移量的大變 化時(shí),隨機(jī)選擇可以具有優(yōu)于預(yù)先確定選擇的優(yōu)點(diǎn)。使用隨機(jī)選擇可 以提供每個(gè)讀取操作的讀取重復(fù)次數(shù)的平均,因此可以提供較少依賴 于安裝在系統(tǒng)中的具體閃存設(shè)備的更穩(wěn)定性能。 圖7的描述和討論
已經(jīng)描述了使用修改電壓(也就是預(yù)先確定的修改電壓,或者 "重新,,計(jì)算的電壓)重新讀取數(shù)據(jù)單元的錯誤恢復(fù)程序。
然而,注意本發(fā)明也提供即使在數(shù)據(jù)的初始讀取成功的情況下仍 然從閃速存儲單元中讀取數(shù)據(jù)的程序。
參考圖7,注意在接收到第一讀取請求110A之后,使用一組給 定的參考電壓(例如默認(rèn)參考電壓)讀取112C閃存數(shù)據(jù)單元。讀取 數(shù)據(jù)使用ECC成功地校正150,并且可以提供118響應(yīng)到第一讀取 請求。
雖然數(shù)據(jù)響應(yīng)第一讀取請求110A成功地讀取和校正(也就是不 存在對錯誤恢復(fù)例程的需要),然而,響應(yīng)第二讀取請求110B,修 改參考電壓。
典型地,在校正第一讀取請求的讀取數(shù)據(jù)之后根據(jù)由ECC提供 的信息修改參考電壓,雖然這不是限制。特別地,注意大多數(shù)ECC 方案,如果在校正數(shù)據(jù)時(shí)成功,可以提供關(guān)于校正的錯誤數(shù)目的信 息。因此,存在校正錯誤的嚴(yán)重性的可用指示,即使在"成功錯誤校 正,,的情況下嚴(yán)重性可能不是非常高,因?yàn)榉駝t校正已經(jīng)失敗?;?該指示,可以確定嚴(yán)重性是否足夠高以至于需要調(diào)節(jié)讀取參考電壓, 其將作為相同數(shù)據(jù)的下一次讀取請求的開始點(diǎn)。從調(diào)節(jié)后的值開始可 以在下一次讀取時(shí)節(jié)省一次或多次讀取重復(fù)。如圖5中描述的實(shí)施方 案中,可以在易失性(例如RAM)和/或非易失性存儲器(例如閃速 存儲器)的任何組合中存儲用于各個(gè)數(shù)據(jù)頁的參考電壓供隨后使用。
因此,應(yīng)當(dāng)注意,即使在數(shù)據(jù)位的初始讀取112C之后不存在錯誤檢測和校正模塊的錯誤校正失敗,仍然可以執(zhí)行使用修改參考電壓
的讀取112B。 實(shí)例實(shí)施方案的一般討論
如上所述,本發(fā)明的實(shí)施方案涉及從閃速存儲設(shè)備中讀取數(shù)據(jù)的 方法。 一些實(shí)施方案提供根據(jù)這里描述的方法的任何一種操作以從閃 速存儲單元陣列中讀取的閃速存儲控制器。本發(fā)明的一些實(shí)施方案提 供閃速存儲設(shè)備,其組合閃速存儲單元陣列和根據(jù)任何當(dāng)前公開方法 從陣列中讀取的閃速存儲控制器。
應(yīng)當(dāng)理解,本發(fā)明可同等地適用于SBC和MBC閃速存儲器。 在SBC單元中,僅存在一個(gè)讀取參考電壓,而在MBC中存在多個(gè) 讀取參考電壓。當(dāng)前公開的用于讀取閃速存儲單元的程序適用于兩種 情況,其中在MBC的情況下,參考的偏移可能并行地應(yīng)用于所有參 考或者獨(dú)立地應(yīng)用于每個(gè)參考電壓。 錯誤校正失敗的討論
在一些實(shí)施方案中,如果設(shè)備指示ECC失敗(例如,如果每個(gè) 給定大小的數(shù)據(jù)塊存在多于預(yù)先確定數(shù)目的錯誤),"ECC失敗"事 件發(fā)生。然而,這不是本發(fā)明的限制。例如,可以確定,即使當(dāng) ECC模塊指示成功的錯誤校正時(shí),根據(jù)與讀取的數(shù)據(jù)塊中錯誤的數(shù) 目和/或類型相關(guān)的備選預(yù)先確定"錯誤校正失敗"標(biāo)準(zhǔn),"錯誤校正失 敗,,事件實(shí)際上已經(jīng)發(fā)生。
因此,本發(fā)明的實(shí)施方案(特別地,參考圖3-6描述的實(shí)施方 案)涉及與ECC模塊的那些不同的定義"錯誤校正失敗事件,,的預(yù)先 確定標(biāo)準(zhǔn)由閃速存儲控制器IO使用的情況。
根據(jù)一個(gè)實(shí)例,如果ECC模塊操作接近它的最大錯誤校正能 力,依賴于ECC模塊是不期望的。假設(shè)例如ECC模塊可以校正從 閃速存儲器中讀取的一個(gè)數(shù)據(jù)塊中至多四個(gè)錯誤。根據(jù)該實(shí)例,可以 假設(shè)當(dāng)校正三個(gè)或更少錯誤為高度可靠的,校正四個(gè)錯誤不可靠(也 就是,這是錯誤校正失敗事件的"預(yù)先確定標(biāo)準(zhǔn)"的一個(gè)實(shí)例-每個(gè)數(shù) 據(jù)塊的錯誤數(shù)目超出預(yù)先確定的值)。這是因?yàn)楫?dāng)存在四個(gè)錯誤時(shí),存在真實(shí)數(shù)據(jù)不是ECC模塊返回的數(shù)據(jù)的某種非零概率,但是有些 不同。因此,可以選擇將四個(gè)錯誤的情況看作校正失敗并且使用由本 發(fā)明的一些實(shí)施方案提供的錯誤恢復(fù)技術(shù)(例如圖4-6中公開的那 些)獲得更可靠的讀取,即使ECC或許能夠?qū)嶋H地提供校正的事 實(shí)。因此,實(shí)例情況適用于這里描述的任何實(shí)施方案,并且應(yīng)當(dāng)理 解,術(shù)語"不能校正錯誤,,也包括"不能校正錯誤或者根據(jù)其他預(yù)先確 定的錯誤標(biāo)準(zhǔn)校正被認(rèn)為是不可靠的"。
在本申請的描述和權(quán)利要求中,動詞"包括"、"包含"和"具有,,的 每個(gè),及其組合用來指示動詞的一個(gè)或多個(gè)賓語不一定是動詞的一個(gè) 或多個(gè)主語的成員、組件、元件或部分的完整列表。
這里陳述的所有參考文獻(xiàn)在此以引用方式并入本文中。參考文獻(xiàn)
的引用不構(gòu)成參考文獻(xiàn)是現(xiàn)有技術(shù)的認(rèn)可。
冠詞"一"和"一個(gè),,在這里用來表示冠詞的符合語法的賓語的一個(gè)
或多于一個(gè)(也就是至少一個(gè))。作為實(shí)例,"一個(gè)元件"意味著一個(gè) 元件或多于一個(gè)元件。
術(shù)語"包括"在這里用來表示短語"包括但不局限于",并且可互換 地使用。
術(shù)語"或者,,在這里用來表示術(shù)語"和/或",并且可互換地使用, 除非上下文另外清晰地指示。
術(shù)語"例如"在這里用來表示短語"例如但不局限于",并且可互換 地使用。
已經(jīng)使用作為實(shí)例提供但不打算限制本發(fā)明范圍的實(shí)施方案的詳 細(xì)描述而描述了本發(fā)明。描述的實(shí)施方案包括不同的特征,并不是全 部特征在本發(fā)明的所有實(shí)施方案中都是必需的。本發(fā)明的一些實(shí)施方 案僅使用特征的一些或者特征的可能組合。描述的本發(fā)明的實(shí)施方案 的變化以及包括在描述的實(shí)施方案中陳述的特征的不同組合的本發(fā)明 的實(shí)施方案將由本領(lǐng)域技術(shù)人員想到。
2權(quán)利要求
1.在包括多個(gè)閃速存儲單元以及錯誤檢測和校正模塊的系統(tǒng)中,一種讀取數(shù)據(jù)的方法,該方法包括a)從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;b)嘗試使用錯誤檢測和校正模塊校正所述讀取數(shù)據(jù)位的錯誤;c)如果錯誤檢測和校正模塊的錯誤校正失敗,使用至少一個(gè)修改參考電壓從多個(gè)閃速存儲單元中至少一次重新讀取所述數(shù)據(jù)位,直到該模塊成功地校正所述錯誤;以及d)對于所述數(shù)據(jù)位重復(fù)步驟(a)、(b)和(c)而不在其間將所述數(shù)據(jù)位重寫到存儲單元。
2. 根據(jù)權(quán)利要求1的方法,其中所述重復(fù)之前的初始的所述讀 取是響應(yīng)第一讀取請求,并且與所述重復(fù)相關(guān)聯(lián)的隨后讀取是響應(yīng)隨 后的讀取請求。
3. 在包括多個(gè)閃速存儲單元以及錯誤檢測和校正模塊的系統(tǒng) 中, 一種讀取數(shù)據(jù)的方法,該方法包括a) 從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;b) 嘗試使用錯誤檢測和校正模塊校正所述讀取數(shù)據(jù)位的錯誤;c) 如果錯誤檢測和校正模塊的錯誤校正失敗,使用至少一個(gè)修 改參考電壓從多個(gè)閃速存儲單元中至少一次重新讀取所述數(shù)據(jù)位,直到該模塊成功地校正所述錯誤;d) 在所述校正之后,存儲該模塊成功地校正所述錯誤的至少一個(gè)讀取參考電壓;e) 在所述存儲之后,取回所述存儲的至少一個(gè)讀取參考電壓;以及g)在所述取回之后,使用所述取回的至少一個(gè)讀取參考電壓從 所述多個(gè)閃速存儲單元中讀取數(shù)據(jù)位。
4. 根據(jù)權(quán)利要求3的方法,其中至少一個(gè)所述讀取參考電壓存 儲在易失性存儲器中。
5. 根據(jù)權(quán)利要求3的方法,其中至少一個(gè)所述讀取參考電壓存 儲在非易失性存儲器中。
6. 根據(jù)權(quán)利要求3的方法,其中至少一個(gè)所述讀取參考電壓存 儲在閃速存儲單元的一個(gè)或多個(gè)中。
7. 根據(jù)權(quán)利要求3的方法,其中所述讀取數(shù)據(jù)位^f吏用閃存控制 器讀取,并且至少一個(gè)所述讀取參考電壓存儲在所述閃存控制器中。
8. 根據(jù)權(quán)利要求3的方法,其中所述存儲之前的初始的所述讀 取是響應(yīng)第一讀取請求,并且使用所述取回的至少一個(gè)讀取參考電壓 的隨后讀取是響應(yīng)隨后的讀取請求。
9. 在包括多個(gè)閃速存儲單元以及錯誤檢測和校正模塊的系統(tǒng) 中, 一種讀取數(shù)據(jù)的方法,該方法包括a) 從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;b) 嘗試使用錯誤檢測和校正模塊校正所述讀取數(shù)據(jù)位的錯誤;c) 如果錯誤檢測和校正模塊的錯誤校正失敗并且在所述讀取之 后,導(dǎo)出至少一個(gè)新的讀取參考電壓;以及d) 使用所述導(dǎo)出的至少一個(gè)新的讀取參考電壓從多個(gè)閃速存儲 單元中讀取所述數(shù)據(jù)位。
10. 根據(jù)權(quán)利要求9的方法,其中所述導(dǎo)出的至少一個(gè)新的電壓 至少部分地根據(jù)由錯誤檢測和校正模塊提供的信息確定。
11. 根據(jù)權(quán)利要求9的方法,其中所述導(dǎo)出的至少一個(gè)新的電壓 至少部分地隨機(jī)確定。
12. 在包括多個(gè)閃速存儲單元以及錯誤檢測和校正模塊的系統(tǒng) 中, 一種讀取數(shù)據(jù)的方法,該方法包括a) 從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;b) 使用錯誤檢測和校正模塊校正所述讀取數(shù)據(jù)位的錯誤;以及c) 在所述校正之后,使用至少一個(gè)修改參考電壓從多個(gè)閃速存 儲單元中讀取所述數(shù)據(jù)位。
13. 根據(jù)權(quán)利要求12的方法,其中在所述校正之后和在使用所 述至少一個(gè)修改參考電壓所述讀取之前,所述多個(gè)存儲單元不被寫入。
14. 根據(jù)權(quán)利要求12的方法,其中至少一個(gè)所述^^改參考電壓 至少部分地根據(jù)由錯誤檢測和校正模塊提供的信息導(dǎo)出。
15. 根據(jù)權(quán)利要求12的方法,其中所述校正之前的初始的所述 讀取是響應(yīng)第 一讀取請求,并且所述校正之后的所述隨后讀取是響應(yīng) 隨后的讀取請求。
16. —種用于數(shù)據(jù)存儲的閃速存儲設(shè)備,該設(shè)備包括a) 用于存儲數(shù)據(jù)位的多個(gè)閃速存儲單元;b) 用于檢測和校正所述數(shù)據(jù)位中的錯誤的錯誤檢測和校正模 塊;以及c) 用于從所述存儲單元中讀取所述數(shù)據(jù)位的控制器,其中i) 所述控制器被用以通過從所述多個(gè)閃速存儲單元中讀取 數(shù)據(jù)位來響應(yīng)第一讀取請求,并且如果所述錯誤檢測和校正模塊 校正所述數(shù)據(jù)位失敗,使用至少一個(gè)修改參考電壓重新讀取數(shù)據(jù) 位直到所述模塊成功地校正所述錯誤;以及ii) 所述控制器進(jìn)一步被用以對于隨后的讀取請求重復(fù)所述 響應(yīng),而不在其間將所述數(shù)據(jù)位重寫到存儲單元。
17. —種用于數(shù)據(jù)存儲的閃速存儲設(shè)備,該設(shè)備包括a) 用于存儲數(shù)據(jù)位的多個(gè)閃速存儲單元;b) 用于檢測和校正所述數(shù)據(jù)位中的錯誤的錯誤檢測和校正模 塊;以及c) 用于從所述閃速存儲單元中讀取所述數(shù)據(jù)位的控制器,其中 所述控制器被用以響應(yīng)第一讀取請求,這通過i) 從所述多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;ii) 嘗試使用所述錯誤檢測和校正模塊校正所述讀取數(shù)據(jù)位 的錯誤;iii) 如果錯誤檢測和校正模塊的錯誤校正失敗,使用至少一 個(gè)修改參考電壓從所述多個(gè)閃速存儲單元中至少 一次重新讀取數(shù) 據(jù)位,直到所述模塊成功地校正所述錯誤;以及iv)在所述校正之后,存儲該模塊成功地校正所述錯誤的至少一個(gè)讀取參考電壓;以及,在所述存儲之后,所述控制器進(jìn)一步被用以響應(yīng)隨后的讀 取請求,這通過i) 取回所述存儲的至少一個(gè)讀取參考電壓;以及ii) 在所迷取回之后,使用所迷取回的至少一個(gè)讀取參考電 壓從所述多個(gè)閃速存儲單元中讀取數(shù)據(jù)位。
18. 根據(jù)權(quán)利要求17的設(shè)備,其中所述控制器4皮用以將至少一 個(gè)所述讀取參考電壓存儲在易失性存儲器中。
19. 根據(jù)權(quán)利要求17的設(shè)備,其中所述控制器^L用以將至少一 個(gè)所述讀取參考電壓存儲在非易失性存儲器中。
20. 根據(jù)權(quán)利要求17的設(shè)備,其中所述控制器^L用以將至少一 個(gè)所述讀取參考電壓存儲在所述閃速存儲單元的一個(gè)或多個(gè)中。
21. 根據(jù)權(quán)利要求17的設(shè)備,其中所述控制器4皮用以將至少一 個(gè)所述讀取參考電壓存儲在所述控制器中。
22. —種用于數(shù)據(jù)存儲的閃速存儲設(shè)備,該設(shè)備包括a) 用于存儲數(shù)據(jù)位的多個(gè)閃速存儲單元;b) 用于檢測所述數(shù)據(jù)位中的錯誤的錯誤檢測和校正模塊;以及c) 用于從所迷閃速存儲單元中讀取所述數(shù)據(jù)位的控制器,其中 所述控制器被用以響應(yīng)讀取請求,這通過i) 從所述多個(gè)閃速存儲單元中讀取所述數(shù)據(jù)位;ii) 嘗試使用錯誤檢測和校正模塊校正所迷讀取數(shù)據(jù)位的錯誤;iii) 如果錯誤檢測和校正模塊的錯誤校正失敗并且在所述讀 取之后,導(dǎo)出至少一個(gè)新的讀取參考電壓;以及iv) 使用所迷導(dǎo)出的至少一個(gè)新的讀取參考電壓從所迷多個(gè) 閃速存儲單元中讀取所述數(shù)據(jù)位。
23. 根據(jù)權(quán)利要求22的設(shè)備,其中所述控制器^f皮用以至少部分 地根據(jù)由錯誤檢測和校正模塊提供的信息導(dǎo)出所逸至少 一個(gè)新的電壓。
24. 根據(jù)權(quán)利要求22的設(shè)備,其中所述控制器被用以至少部分 地隨機(jī)導(dǎo)出所述至少一個(gè)新的電壓。
25. —種用于數(shù)據(jù)存儲的閃速存儲設(shè)備,該設(shè)備包括a) 用于存儲數(shù)據(jù)位的多個(gè)閃速存儲單元;b) 用于檢測所述數(shù)據(jù)位中的錯誤的錯誤檢測和校正模塊;以及c) 用于從所述閃速存儲單元中讀取所述數(shù)據(jù)位的控制器,其中 所述控制器被用以響應(yīng)第一讀取請求,這通過i) 從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;以及ii) 使用所述錯誤檢測和校正模塊校正所述讀取數(shù)據(jù)位的錯誤,以及所述控制器被用以響應(yīng)隨后的讀取請求,這通過iii) 使用至少一個(gè)修改參考電壓從多個(gè)閃速存儲單元中讀取 數(shù)據(jù)位。
26. 根據(jù)權(quán)利要求25的設(shè)備,其中所述控制器-皮用以響應(yīng)所述 第 一和所述隨后的讀取請求,而不在所述校正之后和4吏用所述至少一 個(gè)修改參考電壓在所述讀取之前寫入所述多個(gè)存儲單元。
27. 根據(jù)權(quán)利要求25的設(shè)備,其中所述控制器,皮用以至少部分 地根據(jù)由所述錯誤檢測和校正模塊提供的信息導(dǎo)出至少 一 個(gè)所述修改 參考電壓。
28. —種計(jì)算機(jī)可讀存儲介質(zhì),具有包含在所述計(jì)算機(jī)可讀存儲 介質(zhì)中的計(jì)算機(jī)可讀代碼,所述計(jì)算機(jī)可讀代碼包括用于在包括多個(gè) 閃速存儲單元以及錯誤檢測和校正模塊的系統(tǒng)中讀取數(shù)據(jù)的指令,其 中所述指令包括指令用于a) 從所述多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;b) 嘗試使用所述錯誤檢測和校正模塊校正所迷讀取數(shù)據(jù)位的錯誤;c) 如果錯誤檢測和校正模塊的錯誤校正失敗,4吏用至少一個(gè)修 改參考電壓從所述多個(gè)閃速存儲單元中至少一次重新讀取所述數(shù)據(jù)位,直到該模塊成功地校正所述錯誤;以及d)重復(fù)步驟(a) 、 (b)和(c)而不在其間將所述數(shù)據(jù)位重寫 到存儲單元。
29. —種計(jì)算機(jī)可讀存儲介質(zhì),具有包含在所述計(jì)算機(jī)可讀存儲 介質(zhì)中的計(jì)算機(jī)可讀代碼,所述計(jì)算機(jī)可讀代碼包括用于在包括多個(gè) 閃速存儲單元以及錯誤檢測和校正模塊的系統(tǒng)中讀取數(shù)據(jù)的指令,其 中所述指令包括指令用于a) 從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;b) 嘗試使用錯誤檢測和校正模塊校正所述讀取數(shù)據(jù)位的錯誤;c) 如果錯誤檢測和校正模塊的錯誤校正失敗,使用至少一個(gè)修 改參考電壓從所述多個(gè)閃速存儲單元中至少一次重新讀取所述數(shù)據(jù) 位,直到該模塊成功地校正所述錯誤;d) 在所述校正之后,存儲該模塊成功地校正所述錯誤的至少一個(gè)讀取參考電壓;e) 在所述存儲之后,取回所述存儲的至少一個(gè)讀取參考電壓;以及g)在所述取回之后,使用所述取回的至少一個(gè)讀取參考電壓從 所述多個(gè)閃速存儲單元中讀取數(shù)據(jù)位。
30. —種計(jì)算機(jī)可讀存儲介質(zhì),具有包含在所迷計(jì)算機(jī)可讀存儲 介質(zhì)中的計(jì)算機(jī)可讀代碼,所述計(jì)算機(jī)可讀代碼包括用于在包括多個(gè) 閃速存儲單元以及錯誤檢測和校正模塊的系統(tǒng)中讀取數(shù)據(jù)的指令,其 中所述指令包括指令用于a) 從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;b) 嘗試使用錯誤檢測和校正模塊校正所述讀取數(shù)據(jù)位的錯誤;c) 如果錯誤檢測和校正模塊的錯誤校正失敗并且在所述讀取之 后,導(dǎo)出至少一個(gè)新的讀取參考電壓;以及d) 使用所迷導(dǎo)出的至少一個(gè)新的讀取參考電壓從所述多個(gè)閃速 存儲單元中讀取所述數(shù)據(jù)位。
31. —種計(jì)算機(jī)可讀存儲介質(zhì),具有包含在所述計(jì)算機(jī)可讀存儲介質(zhì)中的計(jì)算機(jī)可讀代碼,所述計(jì)算機(jī)可讀代碼包括用于在包括多個(gè) 閃速存儲單元以及錯誤檢測和校正模塊的系統(tǒng)中讀取數(shù)據(jù)的指令,其中所述指令包括指令用于a) 從多個(gè)閃速存儲單元中讀取數(shù)據(jù)位;b) 使用錯誤檢測和校正模塊校正所述讀取數(shù)據(jù)位的錯誤;以及c) 在所述校正之后,使用至少一個(gè)修改參考電壓從所述多個(gè)閃 速存儲單元中讀取所述數(shù)據(jù)位。
全文摘要
公開了用于從一個(gè)或多個(gè)閃速存儲單元中讀取數(shù)據(jù)并且用于從讀取錯誤中恢復(fù)的方法、設(shè)備和計(jì)算機(jī)可讀代碼。在一些實(shí)施方案中,如果錯誤檢測和校正模塊的錯誤校正失敗,使用一個(gè)或多個(gè)修改參考電壓至少一次重新讀取閃速存儲單元,例如,直到可以執(zhí)行成功的錯誤校正。在一些實(shí)施方案中,在成功的錯誤校正之后,處理隨后的讀取請求而不在其間將數(shù)據(jù)(例如讀取數(shù)據(jù)的可靠值)重寫到閃速存儲單元。在一些實(shí)施方案中,與錯誤被校正的讀取相關(guān)聯(lián)的參考電壓可以存儲在存儲器中,并且在響應(yīng)隨后的讀取請求時(shí)取回。
文檔編號G11C11/34GK101529522SQ200680047669
公開日2009年9月9日 申請日期2006年10月24日 優(yōu)先權(quán)日2005年10月25日
發(fā)明者M·拉塞爾, M·莫林 申請人:晟碟以色列有限公司