專利名稱::控制非易失性存儲(chǔ)裝置中損耗的存儲(chǔ)器控制器及操作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種在非易失性存儲(chǔ)裝置中均衡靜態(tài)損耗量的方法。本發(fā)明還涉及用于根據(jù)該方法來運(yùn)行非易失性存儲(chǔ)裝置的存儲(chǔ)器控制器。
背景技術(shù):
:具有非易失性存儲(chǔ)單元的陣列的非易失性存儲(chǔ)裝置為本領(lǐng)域中公知的。非易失性存儲(chǔ)器可以是NOR型或NAND型的。在一些類型的非易失性存儲(chǔ)器中,存儲(chǔ)器的特點(diǎn)是具有多個(gè)塊,每一塊具有多個(gè)位,塊中的所有位為可同時(shí)擦除的。因?yàn)橥粔K中的所有位或單元被一起擦除,因此,將其稱為閃速存儲(chǔ)器。在塊被擦除后,在NOR存儲(chǔ)器的情況下可以以一定大小(例如字節(jié))來編程該塊中的單元,或在NAND存儲(chǔ)器的情況下立即編程頁面。參考圖l,示出了現(xiàn)有技術(shù)的存儲(chǔ)器控制器10。該存儲(chǔ)器控制器10具有保存程序指令的NOR存儲(chǔ)器12,該程序指令由用于運(yùn)行NAND存儲(chǔ)裝置20的控制器10來執(zhí)行,NAND存儲(chǔ)裝置20連接于該控制器10??刂破?0還連接于主機(jī)裝置30,其中用戶或主機(jī)裝置30可以給控制器10提供地址信號(hào)、數(shù)據(jù)信號(hào)和控制信號(hào),用以由控制器IO來運(yùn)行NAND存儲(chǔ)裝置20。盡管圖1中所示的控制器10被顯示為在控制NAND存儲(chǔ)裝置20,但對(duì)于本領(lǐng)域的普通技術(shù)人員來說,控制器10還可以控制N0R類型的存儲(chǔ)裝置或具有以下將要描述的性能的任意其他類型的非易失性存儲(chǔ)裝置是清楚的。進(jìn)一步地,盡管所示的NAND控制器10與NAND存儲(chǔ)裝置20"分離",但很顯然這僅僅出于示意的目的,并且可以將控制器IO和存儲(chǔ)裝置20集成在同一集成電路中用以形成單個(gè)整體裝置。因此,如下面所描述,將控制器IO的運(yùn)行認(rèn)為是存儲(chǔ)裝置20的內(nèi)部運(yùn)行。眾所周知,由主機(jī)裝置30提供給控制器10的地址信號(hào)具有邏輯地址的性質(zhì),并且控制器10必須將邏輯地址翻譯為物理地址。進(jìn)一步地,該NAND存儲(chǔ)裝置20的特點(diǎn)是具有多個(gè)塊,每一塊包括被一起擦除的多個(gè)位或存儲(chǔ)單元。因此,在擦除操作中,整個(gè)塊的存儲(chǔ)單元被一起擦除。如以上所討論,對(duì)于所有的閃速存儲(chǔ)裝置這樣的特征是普遍的,其中塊中所有的存儲(chǔ)單元被"閃速"擦除。閃速非易失性存儲(chǔ)裝置存在的問題之一是,在諸如數(shù)據(jù)保留的問題發(fā)生之前存在塊能夠被擦除的有限數(shù)量。所以,期望可以均化"損耗"或每一塊被擦除的周期數(shù)量。因此,期望均衡閃速存儲(chǔ)裝置中的塊的損耗。參考圖2,示出了現(xiàn)有技術(shù)的其中完成損耗均衡的一種方法的示意圖。如前所討論,關(guān)聯(lián)于每一塊的是物理地址,其被映射到用戶邏輯地址。存儲(chǔ)裝置20具有用以保存數(shù)據(jù)的第一多個(gè)塊(被指定為用戶邏輯塊0-977,關(guān)聯(lián)的物理塊地址被指定為200,500,501,502,508,801等到100)。該存儲(chǔ)裝置20還包括包含空閑塊、壞塊和系統(tǒng)開銷塊的第二多個(gè)塊。這些是被擦除塊和不保存數(shù)據(jù)的其他塊。在用于均衡非易失性存儲(chǔ)單元的塊上的損耗的現(xiàn)有技術(shù)的第一實(shí)施例中,當(dāng)更新某一塊,例如具有物理地址501的用戶塊2(下面所有的塊均引用其物理地址)時(shí),將新數(shù)據(jù)或塊501中的一些老數(shù)據(jù)移動(dòng)到被擦除塊。選擇來自被擦除池的諸如塊800的塊,并且將該新數(shù)據(jù)或來自塊501的一些老數(shù)據(jù)寫入該塊。在6圖2的示例中,用以保存新數(shù)據(jù)的是物理塊800。隨后物理塊800關(guān)聯(lián)于第一多個(gè)塊中的邏輯塊2。其后,擦除塊501,并隨后將其"移動(dòng)"為關(guān)聯(lián)于第二多個(gè)被擦除塊(以下為"被擦除池")。通過簡單地更新將用戶邏輯地址塊關(guān)聯(lián)于物理地址塊的表,使物理塊501發(fā)生從第一多個(gè)塊(保存有數(shù)據(jù)的塊)到被擦除池的"移動(dòng)"。這僅示意性地示出為物理地址塊501"移動(dòng)"到被擦除池。當(dāng)物理塊501返回到被擦除池時(shí),其以FIF0(先進(jìn)先出)的方式返回。因此,物理塊501是最后返回到被擦除池的塊。其后當(dāng)另外的被擦除塊返回到被擦除池時(shí),物理塊池被"推"到棧的頂部。參考圖3,示出了現(xiàn)有技術(shù)的用以均衡閃速存儲(chǔ)裝置中的塊的損耗的另一種方法的示意圖。具體地說,關(guān)聯(lián)于多個(gè)被擦除塊中的每一個(gè)物理塊的是計(jì)數(shù)塊已被擦除的次數(shù)的計(jì)數(shù)器。因此,當(dāng)擦除物理塊501時(shí),遞增其關(guān)聯(lián)的擦除計(jì)數(shù)器。在第二多個(gè)塊中,被擦除池中的塊以根據(jù)關(guān)聯(lián)于每一物理塊的擦除計(jì)數(shù)器中的計(jì)數(shù)的方式來布置。將擦除計(jì)數(shù)器中具有最年輕計(jì)數(shù)或最低計(jì)數(shù)的物理塊隨時(shí)準(zhǔn)備著成為要返回到第一多個(gè)塊的第一個(gè)用以存儲(chǔ)數(shù)據(jù)。特別地,如圖3所示,例如物理塊800被示出為"最年輕"的塊,意味著物理塊800具有關(guān)聯(lián)于被擦除池中的被擦除塊的最低計(jì)數(shù)。從第一多個(gè)塊中擦除物理塊501,遞增其關(guān)聯(lián)的擦除計(jì)數(shù)器,并且隨后將物理塊501放置在第二多個(gè)塊當(dāng)中(并且如果該被擦除塊能夠保留數(shù)據(jù),其被返回到被擦除池)。根據(jù)關(guān)聯(lián)于被擦除池中每一個(gè)塊的擦除計(jì)數(shù)器中的計(jì)數(shù)放置該擦除的塊于被擦除池中。如圖3所示,作為示例,在遞增之后,物理塊501中的擦除計(jì)數(shù)器的計(jì)數(shù)使得該物理塊501在物理塊302和物理塊303之間。隨后將物理塊501放置在那個(gè)位置處。以上描述的方法被稱為動(dòng)態(tài)損耗均衡方法,因?yàn)閮H在更新塊中的數(shù)據(jù)時(shí),即當(dāng)任意事件中該塊不得不被擦除時(shí)才考慮損耗均衡。然而,如果沒有數(shù)據(jù)更新到塊,則該動(dòng)態(tài)損耗均衡方法無法運(yùn)行。動(dòng)態(tài)損耗均衡方法存在的問題是,對(duì)于沒有更新數(shù)據(jù)的塊,例如保存操作系統(tǒng)數(shù)據(jù)或不更新或很少更新的其他類型數(shù)據(jù)的那些塊,該損耗均衡技術(shù)無法提供服務(wù)以均化這些塊和在數(shù)據(jù)上變化更頻繁的所有其他塊的損耗。因此,例如如果物理塊200和500保存操作系統(tǒng)數(shù)據(jù),并且完全不更新或很少更新,與具有較大損耗的諸如物理塊501(以及在第一多個(gè)塊中的所有其他塊)的塊相比,那些物理塊可以具有非常少的損耗。這種在物理塊501與物理塊200和500之間的大差異例如可以導(dǎo)致NAND存儲(chǔ)器20中的所有物理塊在所有使用性上的降低。
發(fā)明內(nèi)容—種存儲(chǔ)器控制器控制非易失性存儲(chǔ)裝置的運(yùn)行。該存儲(chǔ)裝置具有數(shù)據(jù)保存段和被擦除的保存段。該數(shù)據(jù)保存段具有第一多個(gè)塊且該被擦除的保存段具有第二多個(gè)塊。該第一和第二多個(gè)塊的每一個(gè)具有被一起擦除的多個(gè)非易失性存儲(chǔ)位。進(jìn)一步地,每一塊具有關(guān)聯(lián)的計(jì)數(shù)器用于保存該塊已被擦除的次數(shù)的計(jì)數(shù)。該存儲(chǔ)器控制器具有程序指令,該程序指令為確定關(guān)聯(lián)于第一多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)以選擇第三個(gè)塊,并且確定關(guān)聯(lián)于第二多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)以選擇第四個(gè)塊。該程序指令還被配置為從該第三個(gè)塊轉(zhuǎn)移數(shù)據(jù)到該第四個(gè)塊,并且使所述第四個(gè)塊關(guān)聯(lián)于所述第一多個(gè)塊。最后該程序指令被配置為擦除所述第三個(gè)塊并且遞增關(guān)聯(lián)于所述第三個(gè)塊的計(jì)數(shù)器,并且使所述第三個(gè)塊關(guān)聯(lián)于所述第二多個(gè)塊。7本發(fā)明還包括根據(jù)以上描述的步驟來運(yùn)行非易失性存儲(chǔ)裝置的方法。圖1是現(xiàn)有技術(shù)的存儲(chǔ)器控制器的示意性框圖,具體化為程序指令的本發(fā)明的方法可以在其中運(yùn)行;圖2是運(yùn)行非易失性存儲(chǔ)裝置的現(xiàn)有技術(shù)方法的第一實(shí)施例的示意圖3是運(yùn)行非易失性存儲(chǔ)裝置的現(xiàn)有技術(shù)方法的第二實(shí)施例的示意圖4是運(yùn)行非易失性存儲(chǔ)裝置的本發(fā)明的方法的示意圖。具體實(shí)施例方式本發(fā)明涉及圖1所示的類型的存儲(chǔ)器控制器IO,用于控制閃速非易失性存儲(chǔ)器20(例如NAND閃速存儲(chǔ)器20)。該控制器10還包括保存程序指令的NOR存儲(chǔ)器12,該程序指令由包括在NAND控制器10中的處理器(未示出)來執(zhí)行。該程序指令使得處理器和NAND控制器10控制NAND存儲(chǔ)器20以下面描述的方式運(yùn)行。本發(fā)明還涉及控制閃速NAND存儲(chǔ)器20的方法。參考圖4,示出了本發(fā)明的方法的示意圖。相似于對(duì)于圖3中所示的實(shí)施例的所示和以上所描述的方法,該NAND存儲(chǔ)裝置20的特征是具有多個(gè)塊,每一塊包括被一起擦除的多個(gè)位或存儲(chǔ)單元。因此,在擦除操作中,整個(gè)塊的存儲(chǔ)單元被一起擦除。進(jìn)一步地,關(guān)聯(lián)于每一塊的是物理地址,該物理地址通過表(稱為映射表)被映射到用戶邏輯地址,其為本領(lǐng)域中公知的。存儲(chǔ)裝置20具有用以保存數(shù)據(jù)的第一多個(gè)塊(被指定為用戶邏輯塊,例如8,200,700,3,3908和0,每一個(gè)具有其關(guān)聯(lián)的物理塊地址,被指定為200,500,501,502,508,801等)。該存儲(chǔ)裝置20還包括第二多個(gè)塊,其包含空閑塊、壞塊和系統(tǒng)開銷塊??臻e塊為被擦除塊并形成被擦除池和沒有保存數(shù)據(jù)的其他塊。進(jìn)一步地,被擦除池中的每一個(gè)物理塊具有計(jì)數(shù)器,該計(jì)數(shù)器計(jì)數(shù)塊已被擦除的次數(shù)。因此,當(dāng)擦除物理塊200時(shí),遞增其關(guān)聯(lián)的擦除計(jì)數(shù)器。被擦除池中的塊是用于交換的候補(bǔ)。該擦除操作可以在將塊放置到被擦除池中之前發(fā)生或在使用該塊并將其移出被擦除池之前立刻發(fā)生。在后者事件中,被擦除池中的塊可以不都是被擦除塊。如之前在本發(fā)明的
背景技術(shù):
中所描述,當(dāng)更新某一塊,例如具有物理地址200的用戶塊8(下面所有的塊均引用其物理地址)時(shí),需要將來自那個(gè)塊的一些數(shù)據(jù)連同新數(shù)據(jù)都寫到來自被擦除池的塊。其后必須擦除塊200并且隨后將其"移動(dòng)"為關(guān)聯(lián)于被擦除池(如果被擦除塊可以仍然保留數(shù)據(jù)的話。否則將該擦除的塊"移動(dòng)"到被認(rèn)為"壞塊"的塊。)通過簡單地更新映射表,使物理塊200發(fā)生從第一多個(gè)塊(存儲(chǔ)有數(shù)據(jù)的塊)到第二多個(gè)塊(被擦除池或壞塊)的"移動(dòng)"。示意性地,這被示出為當(dāng)物理地址塊200"移動(dòng)"到被擦除池。然而在本發(fā)明中,盡管對(duì)來自第一多個(gè)塊的任何塊中的任何數(shù)據(jù)沒有更新,但仍可以采用損耗均衡的方法。這被稱為靜態(tài)損耗均衡。具體地說,在第一多個(gè)塊中,首先確定關(guān)于最不經(jīng)常使用(LFU)的塊,S卩那些保存在擦除計(jì)數(shù)器中具有最低擦除計(jì)數(shù)的塊。該LFU日志可以包括有限數(shù)量的塊,例如在優(yōu)選的實(shí)施例中的16個(gè)塊。因此,如圖4所示,LFU包括物理塊200,500和501,塊200在擦除計(jì)數(shù)器中具有最低計(jì)數(shù)。其后,擦除LFU中在擦除計(jì)數(shù)器中具有最低計(jì)數(shù)的塊,例如物理塊200(即使沒有數(shù)據(jù)將被更新到物理塊200)。隨后將被擦除的物理塊200"移動(dòng)"到第二多個(gè)塊,即被擦除池或壞塊。被擦除池中的多個(gè)被擦除塊也按照從"最年輕"到"最老"的順序來布置,"最年輕"即在擦除計(jì)數(shù)器中計(jì)數(shù)為最低的塊,"最老"即在擦除計(jì)數(shù)器中計(jì)數(shù)為最高的塊。被從第一多個(gè)中擦除的且其擦除計(jì)數(shù)器被遞增的塊將其在擦除計(jì)數(shù)器中的計(jì)數(shù)與被擦除池中所有其他塊的擦除計(jì)數(shù)器相比較,并且被相應(yīng)地布置。該布置無需按物理順序。該布置例如可以通過連接表(linklist)或表清單(tablelist)或任何其他方式來實(shí)現(xiàn)。來自被擦除池的具有最高擦除計(jì)數(shù)的塊,或"最老"塊(例如物理塊20)隨后被用以保存從第一多個(gè)塊中的LFU的"最年輕"塊(物理塊200)中檢索的數(shù)據(jù)。隨后物理塊20返回到第一多個(gè)塊?;谇懊娴拿枋?,在本發(fā)明的靜態(tài)損耗均衡方法中,第一多個(gè)塊中沒有更新或很少更新的塊被"再循環(huán)"到被擦除池中并且被重復(fù)使用,由此使得在NAND存儲(chǔ)器20中的所有塊之間的損耗均衡。應(yīng)該注意在本發(fā)明的方法中,當(dāng)LFU中的"最年輕"塊返回到被擦除池中時(shí),來自被擦除池的"最老"塊被用以替代來自LFU中的"最年輕"塊。這看起來是矛盾的,因?yàn)閬碜訪FU中的"最年輕"隨后可能保留在被擦除池中而從未后續(xù)重新使用。然而這僅涉及到本發(fā)明的靜態(tài)損耗均衡方法。可以理解,當(dāng)要存儲(chǔ)另外的數(shù)據(jù)在NAND存儲(chǔ)器20中并且要求新的被擦除塊時(shí),來自被擦除池的"最年輕"的被擦除塊隨后被用以保存該新的或另外的數(shù)據(jù)。進(jìn)一步地,來自被擦除池的"最年輕"塊還可以在現(xiàn)有技術(shù)的動(dòng)態(tài)損耗均衡方法中使用。因此,來自被擦除池的塊最終將全部被使用。另外,因?yàn)楫?dāng)?shù)綁K的數(shù)據(jù)沒有被替代時(shí)本發(fā)明的靜態(tài)損耗均衡方法運(yùn)行,所以存在一些另外的考慮,例如運(yùn)行的頻率(以便不引起過度損耗)以及資源分配。這些問題將在以下討論。開始,問題是何時(shí)掃描第一多個(gè)塊中的塊用以產(chǎn)生在本發(fā)明的隨后的靜態(tài)損耗均衡方法中所使用的LFU。這可以有很多方式來完成。接下來是各種可能的技術(shù),這僅為示意說明且不是窮舉的。進(jìn)一步地,可以一起共同使用這些方法中的一些。第一,當(dāng)NAND存儲(chǔ)器20首先上電時(shí),控制器10可以掃描第一多個(gè)塊。第二,當(dāng)主機(jī)30發(fā)出特定命令以掃描NAND存儲(chǔ)器20中的第一多個(gè)塊時(shí),控制器10可以掃描該第一多個(gè)塊。作為這個(gè)方法的必然結(jié)果,當(dāng)主機(jī)30發(fā)出READ或WRITE命令以對(duì)NAND存儲(chǔ)器20中的某些塊進(jìn)行讀或?qū)憰r(shí),控制器IO可以掃描該第一多個(gè)塊。其后,控制器IO可以繼續(xù)讀取第一多個(gè)塊中所有剩余的擦除計(jì)數(shù)器。此外,控制器IO可以限定在從主機(jī)30接收到READ或WRITE命令后發(fā)生掃描的時(shí)間量為預(yù)限定的時(shí)間段。第三,控制器10可以在后臺(tái)中掃描第一多個(gè)塊。例如,這可以在諸如5毫秒的一段時(shí)間內(nèi)沒有任何未決的主機(jī)命令時(shí)啟動(dòng),并且在主機(jī)啟動(dòng)控制器10必須響應(yīng)的命令時(shí)停止。第四,控制器10可以在預(yù)定事件后啟動(dòng)掃描,例如在控制器10從主機(jī)30接收到許多ATA命令后。—旦確定了何時(shí)掃描針對(duì)第一多個(gè)塊中的每一個(gè)塊的擦除計(jì)數(shù)器以產(chǎn)生LFU,下一個(gè)確定的要素是掃描該第一多個(gè)塊的擦除計(jì)數(shù)器的方法論。再一次,存在許多方法,并且以下所描述的僅為示意說明且絕不是窮舉的。第一,控制器10可以以線性方式掃描第一多個(gè)塊中的所有塊,從映射表的第一項(xiàng)開始直到最后項(xiàng)。第二,控制器10可以基于來自主機(jī)30的命令來掃描第一多個(gè)塊中的塊。例如,如果主機(jī)30知道諸如操作系統(tǒng)程序的數(shù)據(jù)保存在何處,并且因此哪個(gè)塊更有可能包含"最年輕"塊,則主機(jī)30可以在某一邏輯地址處啟動(dòng)該掃描或指示出應(yīng)該限制掃描的地址。第三,控制器10還可以以隨機(jī)方式掃描第一多個(gè)塊中的所有塊??刂破?0中的處理器可以包括隨機(jī)數(shù)發(fā)生器,其產(chǎn)生被用以與塊的物理地址相關(guān)聯(lián)的隨機(jī)數(shù)。第四,控制器10還可以以偽隨機(jī)方式掃描第一多個(gè)塊中的所有塊??刂破鱅O中的處理器可以包括偽隨機(jī)數(shù)發(fā)生器(例如質(zhì)數(shù)生成器),其產(chǎn)生被用以與塊的物理地址相關(guān)聯(lián)的偽隨機(jī)數(shù)?!┊a(chǎn)生LFU,則可以實(shí)施本發(fā)明的方法。然而,由于本發(fā)明的靜態(tài)損耗均衡方法不依賴于塊中的數(shù)據(jù)更新,問題變成LFU中"最年輕"塊的數(shù)據(jù)與被擦除池中"最老"塊的數(shù)據(jù)何時(shí)發(fā)生交換。這可以有很多方式來完成。再次地,接下來是各種可能的技術(shù),這僅為示意說明且絕不是窮舉的。第一,當(dāng)NAND存儲(chǔ)器20首先上電時(shí),控制器10可以交換有限數(shù)量的塊,諸如16個(gè)。第二,響應(yīng)于主機(jī)30發(fā)出的用于交換一定數(shù)量的塊的特定命令,控制器10可以交換該特定數(shù)量的塊。作為這個(gè)方法的必然結(jié)果,在主機(jī)30發(fā)出READ或WRITE命令以對(duì)NAND存儲(chǔ)器20中某些塊進(jìn)行讀或?qū)懼螅刂破?0還可以交換有限數(shù)量的塊,例如1個(gè)。其后,控制器10可以交換1個(gè)塊。第三,控制器IO可以在后臺(tái)中交換有限數(shù)量的塊,例如16個(gè)。這可以例如在諸如5毫秒的一段時(shí)間內(nèi)沒有任何未決的主機(jī)命令時(shí)啟動(dòng),并且在主機(jī)啟動(dòng)控制器10必須響應(yīng)的命令時(shí)停止。第四,控制器10可以在預(yù)定事件之后交換例如1個(gè)的有限數(shù)量的塊,例如在控制器10從主機(jī)30接收到多個(gè)ATA命令之后。應(yīng)該理解,盡管本發(fā)明的方法均衡了NAND存儲(chǔ)器20中所有塊之間的損耗,從LFU中的一個(gè)塊到被擦除池中另一個(gè)塊的連續(xù)的數(shù)據(jù)交換可以引起過多損耗。有許多方法可以防止不必要的交換。再次地,接下來是各種可能的技術(shù),并且這僅為示意性說明且絕不是窮舉的。進(jìn)一步地,可以共同實(shí)施此處所描述的方法。第一,可以確定在LFU中"最年輕"的和被擦除池的塊中"最老"塊的擦除計(jì)數(shù)器中的計(jì)數(shù)之間的差。如果該差在某一范圍中,則在LFU中"最年輕"和被擦除池中"最老"塊之間的交換不發(fā)生。在LFU中"最年輕"的和被擦除池中"最老"塊的擦除計(jì)數(shù)器中的計(jì)數(shù)之間的差還可以被保存在單獨(dú)的計(jì)數(shù)器中。第二,控制器10可以保持兩個(gè)計(jì)數(shù)器一個(gè)用于保存主機(jī)啟動(dòng)的擦除計(jì)數(shù)的數(shù)值,且另一個(gè)用于保存由于本發(fā)明的靜態(tài)損耗均衡方法的擦除計(jì)數(shù)的數(shù)值。如果在兩個(gè)計(jì)數(shù)器中兩個(gè)數(shù)值之間的差小于預(yù)限定的數(shù)值,則本發(fā)明的靜態(tài)損耗均衡方法不發(fā)生。主機(jī)啟動(dòng)的擦除計(jì)數(shù)的數(shù)值包括由動(dòng)態(tài)損耗均衡所引起的所有擦除計(jì)數(shù),即當(dāng)更新任意塊中的數(shù)據(jù)時(shí),以及引起擦除操作發(fā)生的任意其他事件。第三,控制器10可以設(shè)置關(guān)聯(lián)于每一塊的標(biāo)記。當(dāng)從被擦除池中交換每一塊時(shí),設(shè)置該標(biāo)記。一旦設(shè)置該標(biāo)記,則那個(gè)塊不再適合本發(fā)明的損耗均衡方法,直到第一多個(gè)塊中所有塊的標(biāo)記都被設(shè)置為止。此后,塊的所有標(biāo)記被重復(fù)設(shè)置并且隨后塊再次適合于本發(fā)明的損耗均衡方法。第四,按照本發(fā)明的方法,為第一多個(gè)塊中每一塊配備計(jì)數(shù)器用于保存表示該塊最后被擦除的時(shí)間的數(shù)據(jù)。另外,控制器io提供用于保存針對(duì)第一多個(gè)塊的全局時(shí)間的計(jì)數(shù)器。如果,塊被選擇為使其數(shù)據(jù)與來自被擦除池的塊交換,則將計(jì)數(shù)器存儲(chǔ)的表示何時(shí)最后的擦除操作發(fā)生的時(shí)間與全局時(shí)間比較。如果差小于預(yù)確定的數(shù)值,(指示按照本發(fā)明的靜態(tài)損耗均衡方法最近擦除了所關(guān)注的塊),則該塊不被擦除并且不添加到LFU(或如果已經(jīng)在LFU上,則將塊從其中移除)。如本領(lǐng)域所公知,閃速存儲(chǔ)器,以及尤其NAND存儲(chǔ)器20傾向于有錯(cuò)誤。因此,該控制器10包括錯(cuò)誤檢測和錯(cuò)誤修正軟件。本發(fā)明的方法的另一個(gè)優(yōu)點(diǎn)在于,當(dāng)LFU中的每一塊被讀取時(shí)和隨后數(shù)據(jù)被記錄到來自被擦除池的被擦除塊時(shí),控制器10可以確定來自該所讀取的塊的數(shù)據(jù)包含錯(cuò)誤到什么程度。如果從該所讀取的塊讀取的數(shù)據(jù)是不需要修正的數(shù)據(jù),則將被擦除塊返回到被擦除池。然而,如果從該所讀取的塊讀取的數(shù)據(jù)包含可修正的錯(cuò)誤,(并且依賴于修正的程度),則可以隨后將該被讀取的塊返回到壞塊池。以這樣的方式,勉強(qiáng)好的塊可以被檢測到并且在其中所保存的數(shù)據(jù)變成不可讀的之前不再使用。應(yīng)該理解,本發(fā)明的方法和控制器具有許多優(yōu)點(diǎn)。通過在所有塊之間均化損耗,提高了NAND存儲(chǔ)器20的整個(gè)使用壽命并提高了其可靠性。1權(quán)利要求一種均衡非易失性存儲(chǔ)裝置中的損耗量的方法,該非易失性存儲(chǔ)裝置具有數(shù)據(jù)保存段和被擦除的保存段,其中該數(shù)據(jù)存儲(chǔ)段具有第一多個(gè)塊且該被擦除的存儲(chǔ)段具有第二多個(gè)塊,并且其中該第一和第二多個(gè)塊的每一個(gè)具有被一起擦除的多個(gè)非易失性存儲(chǔ)位,并且每一塊具有關(guān)聯(lián)的計(jì)數(shù)器以用于保存該塊已被擦除的次數(shù)的計(jì)數(shù),其中該方法包括確定關(guān)聯(lián)于該第一多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)以選擇第三個(gè)塊;確定關(guān)聯(lián)于該第二多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)以選擇第四個(gè)塊;從該第三個(gè)塊轉(zhuǎn)移數(shù)據(jù)到該第四個(gè)塊,并且使所述第四個(gè)塊關(guān)聯(lián)于所述第一多個(gè)塊;以及擦除所述第三個(gè)塊并且遞增關(guān)聯(lián)于所述第三個(gè)塊的計(jì)數(shù)器,并且使所述第三個(gè)塊關(guān)聯(lián)于所述第二多個(gè)塊。2.根據(jù)權(quán)利要求1所述的方法,其中根據(jù)關(guān)聯(lián)于該第一多個(gè)塊的計(jì)數(shù)器當(dāng)中的最小計(jì)數(shù)選擇所述第三個(gè)塊。3.根據(jù)權(quán)利要求2所述的方法,其中根據(jù)關(guān)聯(lián)于該第二多個(gè)塊的計(jì)數(shù)器當(dāng)中的最大計(jì)數(shù)選擇所述第四個(gè)塊。4.根據(jù)權(quán)利要求3所述的方法,其中如果該計(jì)數(shù)器中的該最大和最小計(jì)數(shù)之間的差大于預(yù)設(shè)量,則執(zhí)行所述轉(zhuǎn)移和擦除步驟。5.根據(jù)權(quán)利要求3所述的方法,其中如果該計(jì)數(shù)器中的該最大和最小計(jì)數(shù)之間的差在預(yù)定范圍內(nèi),則不執(zhí)行所述掃描、轉(zhuǎn)移和擦除步驟。6.根據(jù)權(quán)利要求1所述的方法,其中基于由該非易失性存儲(chǔ)裝置外部的源提供的命令來執(zhí)行所述掃描、轉(zhuǎn)移和擦除步驟。7.根據(jù)權(quán)利要求6所述的方法,其中所述非易失性存儲(chǔ)裝置還包括命令計(jì)數(shù)器,其中當(dāng)由該非易失性存儲(chǔ)裝置外部的源提供轉(zhuǎn)移和擦除的命令時(shí),遞增所述命令計(jì)數(shù)器。8.根據(jù)權(quán)利要求7所述的方法,其中還基于所述非易失性存儲(chǔ)裝置中的控制器啟動(dòng)內(nèi)部命令,執(zhí)行所述掃描、轉(zhuǎn)移和擦除步驟。9.根據(jù)權(quán)利要求8所述的方法,其中所述非易失性存儲(chǔ)裝置還包括內(nèi)部命令計(jì)數(shù)器,其中當(dāng)接收到用以轉(zhuǎn)移和擦除的內(nèi)部命令時(shí),遞增所述內(nèi)部命令計(jì)數(shù)器。10.根據(jù)權(quán)利要求9所述的方法,其中如果在該命令計(jì)數(shù)器中的計(jì)數(shù)和該內(nèi)部命令計(jì)數(shù)器的計(jì)數(shù)之間的差小于預(yù)設(shè)的數(shù)值,則不執(zhí)行所述掃描、轉(zhuǎn)移和擦除步驟。11.根據(jù)權(quán)利要求3所述的方法,其中所述第一多個(gè)塊的每一個(gè)塊具有與之關(guān)聯(lián)的標(biāo)記。12.根據(jù)權(quán)利要求11所述的方法,其中在按照權(quán)利要求1的方法轉(zhuǎn)移和擦除塊的情況下設(shè)置塊的標(biāo)記。13.根據(jù)權(quán)利要求12所述的方法,其中具有該設(shè)置的標(biāo)記的所述第一和第二多個(gè)塊的塊不經(jīng)歷權(quán)利要求1所述的轉(zhuǎn)移和擦除步驟。14.根據(jù)權(quán)利要求13所述的方法,其中具有該設(shè)置的標(biāo)記的塊不經(jīng)歷該確定步驟。15.根據(jù)權(quán)利要求14所述的方法,還包括步驟在所述第一多個(gè)塊的所有標(biāo)記已被設(shè)置后,重置所述第一多個(gè)塊的所有該塊的標(biāo)記。16.根據(jù)權(quán)利要求1所述的方法,其中,如果來自該第一多個(gè)塊的塊被最近修改,其不經(jīng)歷轉(zhuǎn)移和擦除步驟。17.根據(jù)權(quán)利要求16所述的方法,其中所述第一多個(gè)塊的每一塊具有與其關(guān)聯(lián)的計(jì)時(shí)計(jì)數(shù)器。18.根據(jù)權(quán)利要求17所述的方法,其中所述第一多個(gè)塊具有與其關(guān)聯(lián)的全局計(jì)時(shí)計(jì)數(shù)器。19.根據(jù)權(quán)利要求18所述的方法,其中將關(guān)聯(lián)于被寫塊的該計(jì)時(shí)計(jì)數(shù)器與該全局計(jì)時(shí)計(jì)數(shù)器相比較,并且如果該關(guān)聯(lián)于被寫塊的該計(jì)時(shí)計(jì)數(shù)器與該全局計(jì)時(shí)計(jì)數(shù)器之間的差小于預(yù)定的量時(shí),該塊不經(jīng)歷轉(zhuǎn)移和擦除步驟20.根據(jù)權(quán)利要求1所述的方法,其中所述非易失性存儲(chǔ)裝置是NAND存儲(chǔ)裝置。21.根據(jù)權(quán)利要求1所述的方法,其中所述非易失性存儲(chǔ)裝置是NOR存儲(chǔ)裝置。22.根據(jù)權(quán)利要求1所述的方法,其中所述被擦除的保存段包括被擦除的空閑塊。23.根據(jù)權(quán)利要求1所述的方法,其中響應(yīng)于外部提供給該非易失性存儲(chǔ)裝置的用以確定的命令,執(zhí)行掃描關(guān)聯(lián)于該第一多個(gè)塊的塊的計(jì)數(shù)器的所述步驟。24.根據(jù)權(quán)利要求23所述的方法,其中如果在預(yù)設(shè)的時(shí)間段內(nèi)沒有接收到任何外部提供給該非易失性存儲(chǔ)裝置的命令,則執(zhí)行確定關(guān)聯(lián)于該第一多個(gè)塊的塊和該第二多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)的所述步驟。25.根據(jù)權(quán)利要求1所述的方法,其中響應(yīng)于該非易失性存儲(chǔ)裝置的上電,執(zhí)行確定關(guān)聯(lián)于該第一多個(gè)塊的塊和該第二多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)的所述步驟。26.根據(jù)權(quán)利要求1所述的方法,其中響應(yīng)于外部提供給該非易失性存儲(chǔ)裝置的用于讀或?qū)懙拿?,?zhí)行確定關(guān)聯(lián)于該第一多個(gè)塊的塊和該第二多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)的所述步驟。27.根據(jù)權(quán)利要求1所述的方法,其中響應(yīng)于預(yù)確定的事件,執(zhí)行確定關(guān)聯(lián)于該第一多個(gè)塊的塊和該第二多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)的所述步驟。28.—種用于控制具有數(shù)據(jù)保存段和被擦除的保存段的非易失性存儲(chǔ)裝置的運(yùn)行的存儲(chǔ)器控制器,其中該數(shù)據(jù)保存段具有第一多個(gè)塊且該被擦除的保存段具有第二多個(gè)塊,并且其中該第一和第二多個(gè)塊的每一個(gè)具有被一起擦除的多個(gè)非易失性存儲(chǔ)位,并且每一塊具有關(guān)聯(lián)的計(jì)數(shù)器用于保存該塊已被擦除的次數(shù)的計(jì)數(shù),其中該存儲(chǔ)器控制器具有程序指令,該程序指令被配置為確定關(guān)聯(lián)于該第一多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)以選擇第三個(gè)塊;確定關(guān)聯(lián)于該第二多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)以選擇第四個(gè)塊;從該第三個(gè)塊轉(zhuǎn)移數(shù)據(jù)到該第四個(gè)塊,并且使所述第四個(gè)塊關(guān)聯(lián)于所述第一多個(gè)塊;以及擦除所述第三個(gè)塊并且遞增關(guān)聯(lián)于所述第三個(gè)塊的計(jì)數(shù)器的計(jì)數(shù),并且使所述第三個(gè)塊關(guān)聯(lián)于所述第二多個(gè)塊。29.根據(jù)權(quán)利要求28所述的存儲(chǔ)器控制器,其中所述程序指令被配置為根據(jù)關(guān)聯(lián)于該第一多個(gè)塊的計(jì)數(shù)器當(dāng)中的最小計(jì)數(shù)選擇所述第三個(gè)塊,并且其中所述程序指令被配置為根據(jù)關(guān)聯(lián)于該第二多個(gè)塊的計(jì)數(shù)器當(dāng)中的最大計(jì)數(shù)選擇所述第四個(gè)塊。30.根據(jù)權(quán)利要求29所述的存儲(chǔ)器控制器,其中所述程序指令被配置為如果計(jì)數(shù)器中的該最大計(jì)數(shù)和最小計(jì)數(shù)之間的差大于預(yù)設(shè)量,則執(zhí)行該轉(zhuǎn)移和擦除步驟。31.根據(jù)權(quán)利要求29所述的存儲(chǔ)器控制器,其中所述程序指令被配置為響應(yīng)于由該非易失性存儲(chǔ)裝置外部的源提供的第一命令,確定關(guān)聯(lián)于該第一多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)以選擇第三個(gè)塊;確定關(guān)聯(lián)于該第二多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)以選擇第四個(gè)塊;從該第三個(gè)塊轉(zhuǎn)移數(shù)據(jù)到該第四個(gè)塊,并且使所述第四個(gè)塊關(guān)聯(lián)于所述第一多個(gè)塊;以及擦除所述第三個(gè)塊并且遞增關(guān)聯(lián)于所述第三個(gè)塊的計(jì)數(shù)器,并且使所述第三個(gè)塊關(guān)聯(lián)于所述第二多個(gè)塊。32.根據(jù)權(quán)利要求31所述的存儲(chǔ)器控制器,其中所述控制器還包括命令計(jì)數(shù)器,其中當(dāng)接收該第一命令時(shí),遞增所述命令計(jì)數(shù)器。33.根據(jù)權(quán)利要求32所述的存儲(chǔ)器控制器,其中該程序指令被配置為響應(yīng)于該存儲(chǔ)器控制器內(nèi)部產(chǎn)生的第二命令,確定關(guān)聯(lián)于該第一多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)以選擇第三個(gè)塊;確定關(guān)聯(lián)于該第二多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)以選擇第四個(gè)塊;從該第三個(gè)塊轉(zhuǎn)移數(shù)據(jù)到該第四個(gè)塊,并且使所述第四個(gè)塊關(guān)聯(lián)于所述第一多個(gè)塊;以及擦除所述第三個(gè)塊并且遞增關(guān)聯(lián)于所述第三個(gè)塊的計(jì)數(shù)器,并且使所述第三個(gè)塊關(guān)聯(lián)于所述第二多個(gè)塊。34.根據(jù)權(quán)利要求33所述的存儲(chǔ)器控制器,還包括內(nèi)部命令計(jì)數(shù)器,其中當(dāng)產(chǎn)生該第二命令時(shí),遞增所述內(nèi)部命令計(jì)數(shù)器。35.根據(jù)權(quán)利要求34所述的存儲(chǔ)器控制器,其中該程序指令被配置為如果在該命令計(jì)數(shù)器中的計(jì)數(shù)和該內(nèi)部命令計(jì)數(shù)器中的計(jì)數(shù)之間的差大于預(yù)設(shè)的數(shù)值,則確定關(guān)聯(lián)于該第一多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)以選擇第三個(gè)塊;確定關(guān)聯(lián)于該第二多個(gè)塊的塊的計(jì)數(shù)器中的計(jì)數(shù)以選擇第四個(gè)塊;從該第三個(gè)塊轉(zhuǎn)移數(shù)據(jù)到該第四個(gè)塊,并且使所述第四個(gè)塊關(guān)聯(lián)于所述第一多個(gè)塊;以及擦除所述第三個(gè)塊并且遞增關(guān)聯(lián)于所述第三個(gè)塊的計(jì)數(shù)器,并且使所述第三個(gè)塊關(guān)聯(lián)于所述第二多個(gè)塊。36.根據(jù)權(quán)利要求28所述的存儲(chǔ)器控制器,其中由存儲(chǔ)器控制器控制的該非易失性存儲(chǔ)裝置是NAND存儲(chǔ)裝置。37.—種用于控制具有數(shù)據(jù)保存段和被擦除的保存段的非易失性存儲(chǔ)裝置的運(yùn)行的存儲(chǔ)器控制器,其中該數(shù)據(jù)保存段具有第一多個(gè)塊且該被擦除的保存段具有第二多個(gè)塊,并且其中該第一和第二多個(gè)塊的每一個(gè)具有被一起擦除的多個(gè)非易失性存儲(chǔ)位,并且每一塊具有關(guān)聯(lián)的計(jì)數(shù)器用于保存該塊已被擦除的次數(shù),其中該存儲(chǔ)器控制器具有程序指令,該程序指令被配置為轉(zhuǎn)移來自該第一多個(gè)塊中的具有保存在關(guān)聯(lián)的計(jì)數(shù)器中的最低值的第一個(gè)塊的數(shù)據(jù)到來自該第二多個(gè)塊中的具有保存在關(guān)聯(lián)的計(jì)數(shù)器中的最高值的第二個(gè)塊;使所述第二個(gè)塊關(guān)聯(lián)于所述第一多個(gè)塊;擦除所述第一個(gè)塊并且遞增關(guān)聯(lián)于所述第一個(gè)塊的計(jì)數(shù)器;以及使所述第一個(gè)塊關(guān)聯(lián)于所述第二多個(gè)塊。38.—種均衡非易失性存儲(chǔ)裝置中的損耗量的方法,該非易失性存儲(chǔ)裝置具有數(shù)據(jù)保存段和被擦除的保存段,其中該數(shù)據(jù)保存段具有第一多個(gè)塊且該被擦除的保存段具有第二多個(gè)塊,并且其中該第一和第二多個(gè)塊的每一個(gè)具有被一起擦除的多個(gè)非易失性存儲(chǔ)位,并且每一塊具有關(guān)聯(lián)的計(jì)數(shù)器用于保存該塊已被擦除的次數(shù),其中該方法包括轉(zhuǎn)移來自該第一多個(gè)塊的第一個(gè)塊的數(shù)據(jù)到來自該第二多個(gè)塊的第二個(gè)塊,其中所述第一個(gè)塊具有保存在其關(guān)聯(lián)的計(jì)數(shù)器的第一值,所述第一值為在關(guān)聯(lián)于所述第一多個(gè)的塊的所有計(jì)數(shù)器中的所有值的最低值,其中所述第二個(gè)塊具有保存在其關(guān)聯(lián)的計(jì)數(shù)器中的第二值,所述第二值為在關(guān)聯(lián)于所述第二多個(gè)的塊的所有計(jì)數(shù)器中的所有值的最高值;使所述第二個(gè)塊關(guān)聯(lián)于所述第一多個(gè)塊;擦除所述第一個(gè)塊并且遞增關(guān)聯(lián)于所述第一個(gè)塊的計(jì)數(shù)器;以及使所述第一個(gè)塊關(guān)聯(lián)于所述第二多個(gè)塊。全文摘要一種存儲(chǔ)器控制器控制非易失性存儲(chǔ)裝置的運(yùn)行。該存儲(chǔ)裝置具有數(shù)據(jù)保存段和被擦除的保存段。該數(shù)據(jù)保存段具有第一多個(gè)塊且該被擦除的保存段具有第二多個(gè)塊。該第一和第二多個(gè)塊的每一個(gè)具有被一起擦除的多個(gè)非易失性存儲(chǔ)位。進(jìn)一步地,每一塊具有關(guān)聯(lián)的計(jì)數(shù)器用于保存該塊已被擦除的次數(shù)。該存儲(chǔ)器控制器具有程序指令,使得基于與第一多個(gè)塊的塊關(guān)聯(lián)的在每個(gè)計(jì)數(shù)器中包括的計(jì)數(shù),掃描關(guān)聯(lián)于第一多個(gè)塊的塊的計(jì)數(shù)器以選擇第三個(gè)塊,并且基于與第二多個(gè)塊的塊關(guān)聯(lián)的在每個(gè)計(jì)數(shù)器中包括的計(jì)數(shù),掃描關(guān)聯(lián)于第二多個(gè)塊的塊的計(jì)數(shù)器以選擇第四個(gè)塊。該程序指令還被配置為從該第三個(gè)塊轉(zhuǎn)移數(shù)據(jù)到該第四個(gè)塊,并且使所述第四個(gè)塊關(guān)聯(lián)于所述第一多個(gè)塊。最后該程序指令被配置為擦除所述第三個(gè)塊并且遞增關(guān)聯(lián)于所述第三個(gè)塊的計(jì)數(shù)器,并且使所述第三個(gè)塊關(guān)聯(lián)于所述第二多個(gè)塊。本發(fā)明還包括根據(jù)以上描述的步驟來運(yùn)行非易失性存儲(chǔ)裝置的方法。文檔編號(hào)G06F3/06GK101739344SQ20091020596公開日2010年6月16日申請(qǐng)日期2009年11月17日優(yōu)先權(quán)日2008年11月17日發(fā)明者D·邢,F-L·林,P·庫瑪申請(qǐng)人:超捷公司