用于改進(jìn)閃存的可靠性和壽命的系統(tǒng)和方法
【專利說明】
[0001] 優(yōu)先權(quán)要求
[0002] 本申請(qǐng)要求于2013年4月12日提交的題為"SYSTEMS AND METHODS TO頂PROVE THE RELIABILITY AND LIFESPAN OF FLASH MEMORY(用于改進(jìn)閃存的可靠性和壽命的系統(tǒng) 和方法)"的美國(guó)專利申請(qǐng)S/N. 13/861,691的優(yōu)先權(quán),其通過援引整體納入于此。
技術(shù)領(lǐng)域
[0003] 本公開一般涉及閃存。具體而言,本公開涉及用于改進(jìn)閃存的可靠性和壽命的系 統(tǒng)和方法。
【背景技術(shù)】
[0004] 電子設(shè)備(蜂窩電話、無線調(diào)制解調(diào)器、計(jì)算機(jī)、數(shù)字音樂播放器、全球定位系統(tǒng) 單元、個(gè)人數(shù)字助理、游戲設(shè)備等)已成為日常生活的一部分。小型計(jì)算設(shè)備如今被放置在 從汽車到住房用鎖等每件事物中。在過去的幾年里電子設(shè)備的復(fù)雜度有了急劇的上升。例 如,許多電子設(shè)備具有一個(gè)或多個(gè)幫助控制該設(shè)備的處理器、以及支持該處理器及該設(shè)備 的其他部件的數(shù)個(gè)數(shù)字電路。
[0005] 電子設(shè)備往往在存儲(chǔ)器中存儲(chǔ)數(shù)據(jù)。該存儲(chǔ)器可以是閃存,具體而言,可以是NAND 閃存(即,使用NAND邏輯的閃存)。因此,可通過改進(jìn)閃存的可靠性和壽命來達(dá)成益處。
[0006] 概沭
[0007] 描述了一種用于控制閃存的方法。該方法包括選擇提供比當(dāng)前前向糾錯(cuò)(FEC)參 數(shù)集更大的冗余度的新FEC參數(shù)集。在對(duì)閃存中的第一已損壞頁(yè)的寫操作期間使用新FEC 參數(shù)集來編碼源信息比特。將第一已損壞頁(yè)和閃存中的至少一個(gè)附加已損壞頁(yè)映射到具有 期望頁(yè)大小的單個(gè)邏輯頁(yè)。
[0008] 該選擇可以是響應(yīng)于對(duì)第一已損壞頁(yè)的寫失敗或者在從第一已損壞頁(yè)的讀操作 期間所估計(jì)頁(yè)差錯(cuò)率超過FEC閾值時(shí)執(zhí)行的。該選擇可包括從多個(gè)FEC參數(shù)集當(dāng)中選擇新 FEC參數(shù)集,該多個(gè)FEC參數(shù)集中的每個(gè)FEC參數(shù)集提供不同量的冗余度。新FEC參數(shù)集與 當(dāng)前FEC參數(shù)集相比每頁(yè)具有更高數(shù)目的能被糾正的比特差錯(cuò)。
[0009] 該方法還可包括在第一已損壞頁(yè)中存儲(chǔ)新FEC參數(shù)集以及在該至少一個(gè)附加已 損壞頁(yè)中存儲(chǔ)另一 FEC參數(shù)集。該方法可進(jìn)一步包括在第一已損壞頁(yè)和該至少一個(gè)附加已 損壞頁(yè)中存儲(chǔ)映射指示符,該映射指示符指示從第一已損壞頁(yè)和該至少一個(gè)附加已損壞頁(yè) 到單個(gè)邏輯頁(yè)的映射。該方法可附加地包括在第一已損壞頁(yè)和該至少一個(gè)附加已損壞頁(yè)中 存儲(chǔ)次序信息,該次序信息指示存儲(chǔ)在第一已損壞頁(yè)和該至少一個(gè)附加已損壞頁(yè)中的數(shù)據(jù) 安排。該方法還可包括基于所接收到的指令對(duì)該單個(gè)邏輯頁(yè)讀和寫數(shù)據(jù)。
[0010] 該方法還可包括將第一已損壞頁(yè)記錄到部分降級(jí)頁(yè)列表。可在部分降級(jí)頁(yè)列表中 搜索該至少一個(gè)附加已損壞頁(yè)。該方法還可包括確定第一已損壞頁(yè)和該至少一個(gè)附加已損 壞頁(yè)的可用數(shù)據(jù)字節(jié)總和大于或等于期望頁(yè)大小??稍谶壿嬳?yè)信息表中記錄編組信息???將編組信息記錄到第一已損壞頁(yè)和該至少一個(gè)附加已損壞頁(yè)的元數(shù)據(jù)。
[0011] 該方法還可包括維持該單個(gè)邏輯頁(yè)的接口 一致性。該方法可進(jìn)一步包括估計(jì)頁(yè)差 錯(cuò)率??苫陧?yè)差錯(cuò)率來選擇新FEC參數(shù)集。
[0012] 還描述了一種用于控制閃存的電子設(shè)備。該電子設(shè)備包括處理器以及與處理器處 于電子通信的存儲(chǔ)器。該存儲(chǔ)器包括可執(zhí)行指令。選擇提供比當(dāng)前前向糾錯(cuò)(FEC)參數(shù)集 更大的冗余度的新FEC參數(shù)集。在對(duì)閃存中的第一已損壞頁(yè)的寫操作期間使用新FEC參數(shù) 集來編碼源信息比特。將第一已損壞頁(yè)和閃存中的至少一個(gè)附加已損壞頁(yè)映射到具有期望 頁(yè)大小的單個(gè)邏輯頁(yè)。
[0013] 還描述了一種用于控制閃存的計(jì)算機(jī)程序產(chǎn)品。該計(jì)算機(jī)程序產(chǎn)品包括其上具有 指令的非瞬態(tài)有形計(jì)算機(jī)可讀介質(zhì)。該指令包括用于使電子設(shè)備選擇提供比當(dāng)前前向糾錯(cuò) (FEC)參數(shù)集更大的冗余度的新FEC參數(shù)集的代碼。該指令還包括用于使電子設(shè)備在對(duì)閃 存中的第一已損壞頁(yè)的寫操作期間使用新FEC參數(shù)集來編碼源信息比特的代碼。該指令進(jìn) 一步包括用于使電子設(shè)備將第一已損壞頁(yè)和閃存中的至少一個(gè)附加已損壞頁(yè)映射到具有 期望頁(yè)大小的單個(gè)邏輯頁(yè)的代碼。
[0014] 還描述了一種用于控制閃存的電子設(shè)備。該電子設(shè)備包括被配置成選擇提供比當(dāng) 前前向糾錯(cuò)(FEC)參數(shù)集更大的冗余度的新FEC參數(shù)集的電路系統(tǒng)。該電路系統(tǒng)還被配置 成在對(duì)閃存中的第一已損壞頁(yè)的寫操作期間使用新FEC參數(shù)集來編碼源信息比特。該電路 系統(tǒng)進(jìn)一步被配置成將第一已損壞頁(yè)和閃存中的至少一個(gè)附加已損壞頁(yè)映射到具有期望 頁(yè)大小的單個(gè)邏輯頁(yè)。
[0015] 還描述了一種用于控制閃存的設(shè)備。該設(shè)備包括用于選擇提供比當(dāng)前前向糾錯(cuò) (FEC)參數(shù)集更大的冗余度的新FEC參數(shù)集的裝置。該設(shè)備還包括用于在對(duì)閃存中的第一 已損壞頁(yè)的寫操作期間使用新FEC參數(shù)集來編碼源信息比特的裝置。該設(shè)備進(jìn)一步包括用 于將第一已損壞頁(yè)和閃存中的至少一個(gè)附加已損壞頁(yè)映射到具有期望頁(yè)大小的單個(gè)邏輯 頁(yè)的裝置。
[0016] 還描述了一種用于控制閃存的方法。該方法包括向閃存中的頁(yè)寫數(shù)據(jù)。確定可用 存儲(chǔ)器指示符,該可用存儲(chǔ)器指示符指示該頁(yè)的可用數(shù)據(jù)字節(jié)和已損壞數(shù)據(jù)字節(jié)的量。存 儲(chǔ)可用存儲(chǔ)器指示符?;诳捎么鎯?chǔ)器指示符來確定是否要在該頁(yè)中存儲(chǔ)附加數(shù)據(jù)。
[0017] 該存儲(chǔ)可包括在該頁(yè)中存儲(chǔ)可用存儲(chǔ)器指示符。該存儲(chǔ)還可包括在閃存控制器中 存儲(chǔ)可用存儲(chǔ)器指示符。該可用存儲(chǔ)器指示符可指示該頁(yè)的可用數(shù)據(jù)字節(jié)的量小于操作系 統(tǒng)的期望頁(yè)大小。
[0018] 該方法還可包括執(zhí)行對(duì)該頁(yè)的后續(xù)寫操作或后續(xù)讀操作??苫趯?duì)該頁(yè)的后續(xù)寫 操作或后續(xù)讀操作來估計(jì)頁(yè)差錯(cuò)率??苫陧?yè)差錯(cuò)率來更新可用存儲(chǔ)器指示符。
[0019] 還描述了一種用于控制閃存的電子設(shè)備。該電子設(shè)備包括處理器以及與處理器處 于電子通信的存儲(chǔ)器。該存儲(chǔ)器包括可執(zhí)行指令。向閃存中的頁(yè)寫數(shù)據(jù)。確定可用存儲(chǔ)器 指示符,該可用存儲(chǔ)器指示符指示該頁(yè)的可用數(shù)據(jù)字節(jié)和已損壞數(shù)據(jù)字節(jié)的量。存儲(chǔ)可用 存儲(chǔ)器指示符?;诳捎么鎯?chǔ)器指示符來確定是否要在該頁(yè)中存儲(chǔ)附加數(shù)據(jù)。
[0020] 還描述了一種用于控制閃存的計(jì)算機(jī)程序產(chǎn)品。該計(jì)算機(jī)程序產(chǎn)品包括其上具有 指令的非瞬態(tài)有形計(jì)算機(jī)可讀介質(zhì)。該指令包括用于使電子設(shè)備向閃存中的頁(yè)寫數(shù)據(jù)的代 碼。該指令還包括用于使電子設(shè)備確定可用存儲(chǔ)器指示符的代碼,該可用存儲(chǔ)器指示符指 示該頁(yè)的可用數(shù)據(jù)字節(jié)和已損壞數(shù)據(jù)字節(jié)的量。該指令進(jìn)一步包括用于使電子設(shè)備存儲(chǔ)可 用存儲(chǔ)器指示符的代碼。該指令附加地包括用于使電子設(shè)備基于可用存儲(chǔ)器指示符來確定 是否要在該頁(yè)中存儲(chǔ)附加數(shù)據(jù)的代碼。
[0021] 還描述了一種用于控制閃存的電子設(shè)備。該電子設(shè)備包括被配置成向閃存中的頁(yè) 寫數(shù)據(jù)的電路系統(tǒng)。該電路系統(tǒng)還被配置成確定可用存儲(chǔ)器指示符,該可用存儲(chǔ)器指示符 指示該頁(yè)的可用數(shù)據(jù)字節(jié)和已損壞數(shù)據(jù)字節(jié)的量。該電路系統(tǒng)被進(jìn)一步配置成存儲(chǔ)可用存 儲(chǔ)器指示符。該電路系統(tǒng)被附加地配置成基于可用存儲(chǔ)器指示符來確定是否要在該頁(yè)中存 儲(chǔ)附加數(shù)據(jù)。
[0022] 還描述了一種用于控制閃存的設(shè)備。該設(shè)備包括用于向閃存中的頁(yè)寫數(shù)據(jù)的裝 置。該設(shè)備還包括用于確定可用存儲(chǔ)器指示符的裝置,該可用存儲(chǔ)器指示符指示該頁(yè)的可 用數(shù)據(jù)字節(jié)和已損壞數(shù)據(jù)字節(jié)的量。該設(shè)備進(jìn)一步包括用于存儲(chǔ)可用存儲(chǔ)器指示符的裝 置。該設(shè)備附加地包括用于基于可用存儲(chǔ)器指示符來確定是否要在該頁(yè)中存儲(chǔ)附加數(shù)據(jù)的 裝置。
[0023] 附圖簡(jiǎn)沐
[0024] 圖1是解說包括用于改進(jìn)閃存的可靠性和壽命的閃存控制器的電子設(shè)備的框圖;
[0025] 圖2是解說用于控制閃存的方法的流程圖;
[0026] 圖3是解說閃存中的未損壞頁(yè)和已損壞頁(yè)的框圖;
[0027] 圖4是解說用于改進(jìn)閃存的可靠性和壽命的閃存控制器的更詳細(xì)配置的框圖;
[0028] 圖5是解說用于向閃存寫數(shù)據(jù)的方法的流程圖;
[0029] 圖6是解說用于從邏輯頁(yè)讀數(shù)據(jù)的方法的流程圖;
[0030] 圖7是解說閃存中的已損壞頁(yè)的另一配置的框圖;
[0031] 圖8是解說用于控制閃存的另一方法的流程圖;以及
[0032] 圖9解說了可被包括在電子設(shè)備內(nèi)的某些組件。
[0033] 詳細(xì)描沐
[0034] 當(dāng)今許多消費(fèi)者電子設(shè)備使用NAND閃存。閃存是即使在移除電力之后還能保留 所存儲(chǔ)的數(shù)據(jù)的非易失性存儲(chǔ)器。作為一種類型的閃存,NAND閃存是高密度設(shè)計(jì)并且具有 勝過其它類型存儲(chǔ)器的某些優(yōu)點(diǎn),包括大存儲(chǔ)容量(例如,1吉比特或更大)、良好的連續(xù)存 取速度、以及低成本。然而,NAND閃存也具有固有的缺點(diǎn),包括在NAND閃存的工作壽命期 間對(duì)比特差錯(cuò)的增大敏感性。
[0035] NAND閃存可以是單級(jí)單元NAND閃存或多級(jí)單元(MLC)NAND閃存。與單級(jí)單元 NAND閃存相比,MLC NAND閃存可提供高存儲(chǔ)器容量,這以較低可靠性為代價(jià)。NAND閃存通 常以頁(yè)為單位來被訪問(例如,經(jīng)由讀和寫操作),一次一頁(yè),其中每一頁(yè)的可用數(shù)據(jù)字節(jié) 為特定大?。ɡ?,512字節(jié)、2048字節(jié)或4096字節(jié))。NAND閃存對(duì)其壽命中的寫循環(huán)數(shù) 目具有限制。閃存設(shè)備差錯(cuò)的類型可被分類為程序差錯(cuò)、保留差錯(cuò)、擦除差錯(cuò)和讀差錯(cuò)。一 般而言,所有類型的差錯(cuò)將隨著原始閃存單元已被編程的循環(huán)數(shù)目而增大。本發(fā)明的系統(tǒng) 和方法可被用來增大閃存歸因于所有類型的差錯(cuò)的可靠性和壽命。一些閃存控制器(或閃 存驅(qū)動(dòng)器)可將頁(yè)標(biāo)記為壞的并將該頁(yè)重映射到存儲(chǔ)器的另一個(gè)塊,即,閃存的容量隨著 每個(gè)丟失的頁(yè)而減小。因此,通過修改如何確定頁(yè)為壞的以及如何將頁(yè)與其它頁(yè)進(jìn)行映射 可實(shí)現(xiàn)益處。
[0036] 圖1是解說包括用于改進(jìn)閃存106的可靠性和壽命的閃存控制器104的電子設(shè)備 102的框圖。閃存控制器104可充當(dāng)閃存106與操作系統(tǒng)或其它用戶應(yīng)用之間的接口。閃 存控制器104可隱藏管理閃存106內(nèi)的物理單元(例如,頁(yè)120)的復(fù)雜度。操作系統(tǒng)或其 它用戶應(yīng)用可將要存儲(chǔ)在閃存106中的源信息比特提供給閃存控制器104,閃存控制器104 向閃存106存儲(chǔ)該源信息比特和從閃存106檢索該源信息比特。應(yīng)注意,閃存控制器104 可被實(shí)現(xiàn)為硬件(例如,電路系統(tǒng))、軟件(例如,閃存驅(qū)動(dòng)程序)、或者硬件和軟件的組合。 還應(yīng)當(dāng)注意,在一些配置中,圖1中解說的元素中的一個(gè)或多個(gè)元素可在電路系統(tǒng)(例如, 集成電路系統(tǒng))中實(shí)現(xiàn)。
[0037] 在向閃存106寫之前,閃存控制器104可用前向糾錯(cuò)(FEC)碼122來編碼源信息 比特以產(chǎn)生碼字。持久存儲(chǔ)器存儲(chǔ)(諸如閃存106)可利用FEC碼122來編碼源信息比特。 FEC碼122是被用于控制數(shù)據(jù)存儲(chǔ)差錯(cuò)的算法。源信息比特可使用糾錯(cuò)碼(ECC)以冗余方 式來存儲(chǔ)。與FEC相關(guān)聯(lián)的冗余度可允許閃存控制器104檢測(cè)可在寫/讀過程期間發(fā)生的 有限數(shù)目的差錯(cuò),并且往往在不參考原始源信息比特的情況下糾正這些差錯(cuò)。
[0038] 在一種配置中,閃存控制器104可將源信息比特轉(zhuǎn)換成碼字。例如,寫過程可將源 信息比特(或碼元)編碼成碼字,并將經(jīng)編碼碼字存儲(chǔ)到閃存106。讀過程可從閃存106檢 索碼字并且將碼字解碼成源信息比特。在此過程期間,F(xiàn)EC碼122可被用來檢錯(cuò)并且在一 些情形中糾錯(cuò)。存在可被用來編碼源信息比特的不同類型的FEC碼122。例如,F(xiàn)EC碼122 可