專利名稱::非易失性存儲器子系統(tǒng)及其存儲器控制器的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及非易失性存儲器子系統(tǒng),并且更具體地,涉及非易失性存儲器控制器。本發(fā)明還涉及控制非易失性存儲器設(shè)備的操作的方法。
背景技術(shù):
:具有非易失性存儲單元陣列的非易失性存儲器設(shè)備在本領(lǐng)域是公知的。非易失性存儲器可以是NOR類型或是NAND類型。在特定類型的非易失性存儲器中,該存儲器的特征在于具有多個塊,每一個塊具有多個位,在塊中的所有位可以在同一時間全部被擦除。因為在同一塊中的所有位或單元被一起擦除,所以這些稱為閃速存儲器。在該塊被擦除之后,在該塊中的單元能夠以特定尺寸(例如字節(jié))編程,如在NOR存儲器的情況中那樣,或者一次編程一頁,如在NAND存儲器的情況中那樣。閃速非易失性存儲器設(shè)備的一個問題是數(shù)據(jù)的保持。由于包圍浮柵的絕緣體將隨時間泄露,所以出現(xiàn)數(shù)據(jù)保持的問題。進一步,浮柵的擦除/編程加劇了這個問題,由此當浮柵遭受更多的擦除/編程周期時這使得保持時間惡化。因此,期望每個塊被擦除的"損耗"或周期數(shù)平均。因此期望均衡閃速存儲器設(shè)備中的塊的損耗。參考圖1,示出了現(xiàn)有技術(shù)的實現(xiàn)損耗均衡的一種方法的示意圖。與每一個塊相關(guān)聯(lián)的是物理地址,其被映射到用戶邏輯地址。存儲器設(shè)備具有用于保存數(shù)據(jù)的第一多個塊(標以用戶邏輯塊0-977,相關(guān)聯(lián)的物理塊地址被標為200、500、501、502、508、801等等直到100)。該存儲器設(shè)備還包括第二多個塊,其包括備用塊、壞塊和附加塊(overheadblock)。備用塊可以是被擦除的塊和沒有保存數(shù)據(jù)或者保存了尚未被擦除的數(shù)據(jù)或者保存可以被控制器14使用的狀態(tài)/信息數(shù)據(jù)的其它塊。在用于均衡非易失性存儲單元的塊上的損耗的現(xiàn)有技術(shù)的第一實施例中,當具有物理地址501(下文中所有塊都將被它們的物理地址指向)的、諸如用戶塊2的特定塊被更新時,在塊501中的新數(shù)據(jù)或一些舊數(shù)據(jù)被移動到被擦除的塊。選擇一個來自被擦除的池的塊,例如塊800,并且來自塊501的新數(shù)據(jù)或一些舊數(shù)據(jù)被寫入到該塊中。在圖1所示的例子中,這是用于保存新數(shù)據(jù)的物理塊800。物理塊800然后與在第一多個塊中的邏輯塊2相關(guān)聯(lián)。之后,塊501被擦除,并且然后被"移動"以便與第二多個被擦除的塊(下文中"被擦除的池")相關(guān)聯(lián)。通過簡單地更新將用戶邏輯地址塊與物理地址塊相關(guān)聯(lián)的表來發(fā)生物理塊501從該第一多個塊(被保存數(shù)據(jù)塊)到被擦除的池的"移動"。示意地,示出了物理地址塊501被"移動"到被擦除的池。當物理塊501返回到被擦除的池時,它以FIFO(先進先出)方式返回。因此,物理塊501是返回到被擦除的池的最后的塊。之后,當附加的被擦除的塊返回到被擦除的池時,物理塊池被"推"到該堆棧的頂部。參考圖2,示出了現(xiàn)有技術(shù)的均衡閃速存儲器設(shè)備中的塊的損耗的另一種方法的示意圖。具體地,與多個被擦除的塊中的每一個物理塊相關(guān)聯(lián)的是計數(shù)器,該計數(shù)器計數(shù)該塊已經(jīng)被擦除的次數(shù)。因此,當物理塊501被擦除時,其相關(guān)聯(lián)的擦除計數(shù)器遞增。在第二多個塊中,被擦除的池中的塊以依賴于與每一物理塊相關(guān)聯(lián)的擦除計數(shù)器中的計數(shù)的方式6被布置。具有在擦除計數(shù)器中最小計數(shù)或最低計數(shù)的物理塊準備好第一個返回到第一多個塊以用于保存數(shù)據(jù)。特別地,如圖2所示,例如,物理塊800被示為"最年輕"i央,意味著該物理塊800具有和在被擦除的池中的被擦除的塊相關(guān)聯(lián)的最低計數(shù)。來自第一多個塊的物理塊501被擦除,與其關(guān)聯(lián)的擦除計數(shù)器遞增,然后將該物理塊501置于該第二多個塊中(并且如果被擦除的塊能夠保持數(shù)據(jù),其返回到被擦除的池)。取決于與被擦除的池中的每一個塊相關(guān)聯(lián)的擦除計數(shù)器中的計數(shù),被擦除的塊被置于該被擦除的池中。如圖2中所示,通過舉例,物理塊501中的擦除計數(shù)器在遞增之后可以具有將物理塊501置于物理塊302和物理塊303之間的計數(shù)。然后物理塊501被置于該位置。上述的方法被稱為動態(tài)損耗均衡法,其中只有在塊中的數(shù)據(jù)被更新時,即在任何情況下塊必須被擦除時,才考慮損耗均衡。然而,如果沒有數(shù)據(jù)更新到塊,則不操作該動態(tài)損耗均衡方法。該動態(tài)損耗均衡方法的問題是對于沒有數(shù)據(jù)被更新的塊,例如保存了操作系統(tǒng)數(shù)據(jù)或者保存沒有更新或者很少更新的其它類型數(shù)據(jù)的那些塊,損耗均衡技術(shù)沒有用來導(dǎo)致這些塊與數(shù)據(jù)更頻繁變化的所有其它塊一起損耗均衡。因此,例如如果物理塊200和500保存了操作系統(tǒng)數(shù)據(jù),并且完全沒有更新或者很少更新,與可能已經(jīng)具有較大損耗的塊例如物理塊501(以及在第一多個塊中的所有其它塊)相比,這些物理塊可能幾乎沒有損耗。在物理塊501與物理塊200和500之間的這個大的差異例如可能導(dǎo)致在NAND存儲器20的所有物理塊的整體使用下降。與閃速非易失性存儲器設(shè)備相關(guān)聯(lián)的另一個問題是耐久性。該耐久性是指在對塊的寫/讀錯誤對于該閃速存儲器設(shè)備的錯誤校正電路來說變得太大以至于不能檢測和糾正之前該塊可以遭受的讀/寫周期的數(shù)量。通常,耐久性是保持力的反函數(shù)。典型地,隨著塊遭受更多的寫周期,與該塊相關(guān)聯(lián)的保持時間就更少。而且,隨著集成度增加,B卩非易失性存儲器設(shè)備的幾何尺寸縮小,保持力和耐久性的問題將變得更差。最后,保持力和耐久性對于所保存數(shù)據(jù)的類型也具有特異性。因此,對于具有編程代碼性質(zhì)的數(shù)據(jù)來說,保持力是非常重要的。相反,對于具有經(jīng)常改變數(shù)據(jù)的性質(zhì)的數(shù)據(jù),例如實時數(shù)據(jù),則耐久性變得很重要。
發(fā)明內(nèi)容在本發(fā)明中,非易失性存儲器子系統(tǒng)包括非易失性存儲器設(shè)備和存儲器控制器。該存儲器控制器控制該非易失性存儲器設(shè)備的操作,該存儲器控制器具有用于執(zhí)行計算機程序指令以便將該非易失性存儲器設(shè)備劃分為多個分區(qū)的處理器,每一個分區(qū)具有用于損耗均衡和數(shù)據(jù)保持的可調(diào)參數(shù)。該存儲器子系統(tǒng)還包括用于提供時序信號給存儲器控制器的時鐘。本發(fā)明還涉及用于控制非易失性存儲器設(shè)備的存儲器控制器。該存儲器控制器包括處理器和用于保存由該處理器執(zhí)行的計算機程序指令的存儲器。程序指令被配置成將該非易失性存儲器設(shè)備劃分成多個分區(qū),每一個分區(qū)具有用于損耗均衡和數(shù)據(jù)保持的可調(diào)參數(shù)。圖1是執(zhí)行非易失性存儲器子系統(tǒng)的損耗均衡操作的現(xiàn)有技術(shù)方法的第一實施例的示意圖。圖2是執(zhí)行非易失性存儲器子系統(tǒng)的損耗均衡操作的現(xiàn)有技術(shù)方法的第二實施例的示意圖。圖3是本發(fā)明的存儲器子系統(tǒng)的示意性框圖。圖4是連接到NAND非易失性存儲器設(shè)備的本發(fā)明的存儲器控制器的詳細的示意性框圖。圖5是能夠在本發(fā)明的存儲器子系統(tǒng)中使用的NAND類型存儲器設(shè)備的框圖。圖6是執(zhí)行非易失性存儲器設(shè)備的損耗均衡操作的方法的示意圖。具體實施例方式參考圖3,示出了本發(fā)明的存儲器子系統(tǒng)10。該存儲器子系統(tǒng)10可連接到主機設(shè)備8。該子系統(tǒng)IO包括存儲器控制器14,NAND閃速存儲器12,和實時時鐘16。如圖4中所示,存儲器控制器14包括處理器20和非易失性存儲器22,該非易失性存儲器22具有用于保存由處理器20執(zhí)行的程序指令代碼的NOR存儲器的性質(zhì)。處理器20執(zhí)行保存在存儲器22中的代碼從而以下文描述的方式操作子系統(tǒng)10??刂破?4通過地址總線28和數(shù)據(jù)總線30連接到NAND存儲器設(shè)備12??偩€28和30可以是并行或者串行的。另外,它們也可以是多路復(fù)用的。因此,控制器14控制NAND閃速存儲器設(shè)備12的讀取和編程(或?qū)?和擦除。公知的,NAND閃速存儲器設(shè)備12具有多個塊,每一個塊具有在同一時間被一起擦除的多個存儲單元。控制器14還通過多個總線連接到主機8,這些總線是地址總線32、數(shù)據(jù)總線34和控制總線36。這些總線32、34和36也可以是并行或串行的。另外,它們也可以是多路復(fù)用的。該子系統(tǒng)10還包括實時時鐘(RTC)16。該RTC16能夠提供時鐘信號給控制器14。在控制器14和RTC16之間的通信是經(jīng)由串行數(shù)據(jù)地址(SDA)總線的。當然,具有控制器14和RTC16之間的任一其它類型總線的任一其它形式的通信都在本發(fā)明的范圍內(nèi)??刂破?4能夠經(jīng)由SDA從RTC16中讀取實時時鐘信號。另外,該控制器14能夠經(jīng)由從控制器14到RTC16的SDA信號設(shè)置報警時間。進一步,RTC16具有經(jīng)時計時器/計數(shù)器。由此,控制器14能夠通過SDA設(shè)置經(jīng)時計時器/計數(shù)器。當計時器超時,RTC16將在INTft引腳上產(chǎn)生提供給控制器14的中斷信號。另外,RTC16能夠產(chǎn)生用于主機8的中斷信號。因為RTC16可以是電池供電的,所以這特別有用。當所有主機8掉電或關(guān)機以節(jié)省功率消耗(除了功率管理控制軟件之外)時,在由RTC16產(chǎn)生中斷信號時,該中斷信號將引起主機8使用其功率管理控制軟件來提供功率給子系統(tǒng)10以開始操作。正如將要看到的,這樣的操作可以包括保持掃描/刷新操作。在本發(fā)明中,控制器14通過處理器20執(zhí)行保存在存儲器22中的程序代碼以使得NAND存儲器12被劃分為多個分區(qū),每一個分區(qū)具有不同于其它分區(qū)的用于損耗均衡和數(shù)據(jù)保持的可調(diào)參數(shù)。特別地,對于損耗均衡的操作,通過使用不同參數(shù),控制器14能夠控制如在圖1和2中所述的前述現(xiàn)有技術(shù)的方法。例如,物理塊501可以在更新其內(nèi)容后立刻返回到被擦除塊的池,或者其可以在返回到被擦除塊的池之前被重新使用多次。由此,利用現(xiàn)有技術(shù)的動態(tài)損耗均衡方法,當塊中的數(shù)據(jù)更新時,不同分區(qū)可以具有與其相關(guān)聯(lián)的不同參數(shù)??蛇x擇地,以下的損耗均衡方法對于NAND存儲器12的不同分區(qū)也可以使用不同參數(shù)。損耗均衛(wèi)參考圖6,示出了本發(fā)明的方法的示意圖。與圖l和2中示出的實施例的所述方法類似,該NAND存儲器設(shè)備12的特征在于具有多個塊,每一個塊包括多個位或存儲單元,它們被一起擦除。因此,在擦除操作中整個塊的存儲單元被一起擦除。進一步,與每一個塊相關(guān)聯(lián)的是物理地址,其通過被稱為映射表的表被映射到用戶邏輯地址,這在本領(lǐng)域是公知的。存儲器設(shè)備12具有用于保存數(shù)據(jù)的第一多個塊(被標以用戶邏輯塊,例如8、200、700、3、3908和0,每一個塊具有與其相關(guān)聯(lián)的標以200、500、501、502、508、801等的物理塊地址)。存儲器設(shè)備12還包括第二多個塊,第二多個塊包括備用塊、壞塊和附加塊。該備用塊可以是被擦除的塊并且形成被擦除的池和沒有保存數(shù)據(jù)或者保存了尚未被擦除的數(shù)據(jù)或者保存可以被控制器14使用的狀態(tài)/信息數(shù)據(jù)的其它塊。進一步,在被擦除的池中的每一個物理塊具有計數(shù)該塊已經(jīng)被擦除的次數(shù)的計數(shù)器。由此,隨著物理塊200被擦除,其相關(guān)聯(lián)的擦除計數(shù)器遞增。在被擦除的池中的塊是用于交換的候選者。在塊被置于被擦除的池之前發(fā)生擦除操作或者在所述塊被使用并移出被擦除的池之前立刻發(fā)生擦除操作。在后者的情況中,被擦除的池中的塊可以不全是被擦除的塊。當具有物理地址200(下文中所有塊都指它們的物理地址)的特定塊,例如用戶塊8,被更新時,來自該塊的一些數(shù)據(jù)連同新數(shù)據(jù)可能需要被寫入到來自被擦除的池的塊。之后,塊200必須被擦除并且然后"移動"以便與被擦除的池相關(guān)聯(lián)(如果該被擦除的塊仍然能夠保持數(shù)據(jù)的話。否則,該被擦除的塊"移動"到被認為是"壞塊"的塊)。通過簡單地更新映射表來發(fā)生物理塊200從第一多個塊(保存數(shù)據(jù)塊)到第二多個塊(被擦除的池或壞塊)的"移動"。示意性地,示出了物理地址塊200"移動"到被擦除的池。然而,在本發(fā)明中,即使沒有更新來自第一多個塊的任一塊中的任何數(shù)據(jù),也可以使用損耗均衡方法。該方法被稱為靜態(tài)損耗均衡。具體的,在第一多個塊中,首先確定最少頻率使用(LFU)塊,即這些塊具有保存在擦除計數(shù)器中的最低擦除計數(shù)。在優(yōu)選的實施例中,該LFU日志可以包含有限數(shù)量的塊,例如16個塊。因此,如圖6所示,該LFU包括物理塊200、500和501,塊200具有在擦除計數(shù)器中的最低計數(shù)。之后,在LFU中具有擦除計數(shù)器中的最低計數(shù)的塊(例如物理塊200)被擦除(即使沒有數(shù)據(jù)被更新到物理塊200)。被擦除的物理塊200然后"移動"到第二多個塊,即被擦除的池或壞塊??蛇x擇的,該塊在被擦除之前可以被移到第二多個塊。在被擦除的池中的多個被擦除的塊也可以以從"最年輕"(即具有在擦除計數(shù)器中的最低計數(shù)的塊)到"最老"(即具有在擦除計數(shù)器中的最高計數(shù)的塊)排列的次序布置。從第一多個塊中被擦除的并且其擦除計數(shù)器遞增的塊將其在擦除計數(shù)器的計數(shù)與被擦除的池中的所有其它塊的擦除計數(shù)器進行比較并且進行相應(yīng)地布置。該布置不需要以物理順序進行。該布置例如可以通過鏈接表或列表(tablelist)或任意其它方式來實現(xiàn)。具有最高擦除計數(shù)的塊,或者來自被擦除的池的"最老"塊(例如物理塊20)然后被用于保存從來自第一多個塊中的LFU的"最年輕"塊(物理塊200)中獲得的數(shù)據(jù)。物理塊20然后返回到第一多個塊。基于前面的描述,可以知道利用本發(fā)明的靜態(tài)損耗均衡方法,在第一多個塊中沒有更新或者很少更新的塊將要被"回收"到被擦除的池中并且被重新使用,由此來均衡NAND存儲器12中的所有塊中的損耗。應(yīng)該注意到,在本發(fā)明的方法中,當在LFU中的"最年輕"塊返回到被擦除的池時,來自被擦除的池的"最老"塊被使用以替換來自LFU的"最年輕"塊。這似乎是矛盾的,其中來自LFU的"最年輕"塊然后可以駐留在被擦除的池中而不會在隨后被重新使用。然而,這僅僅是關(guān)于本發(fā)明的靜態(tài)損耗均衡方法。可以預(yù)料,當附加數(shù)據(jù)被保存到NAND存儲器12中并且請求新的被擦除的塊時,來自被擦除的池的"最年輕"的被擦除的塊然后被用于保存該新的或者附加數(shù)據(jù)。進一步,來自被擦除的池的"最年輕"塊也可以在現(xiàn)有技術(shù)的動態(tài)損耗均衡方法中使用。因此,來自被擦除的池的塊將最終被使用。而且,因為在到塊的數(shù)據(jù)沒在被替換時運行本發(fā)明的靜態(tài)損耗均衡方法,所以存在附加的考慮,例如操作頻率(以不引起過度損耗)以及資源分配。例如操作頻率的這些參數(shù)對于存儲器設(shè)備12的不同分區(qū)可以是不同的。這些問題在下文中被討論。起先,該問題是何時掃描第一多個塊中的塊以創(chuàng)建LFU、哪一個在本發(fā)明的隨后的靜態(tài)損耗均衡方法中被使用。存在這樣操作的多種方式。下列所述是多種可行的技術(shù),這些技術(shù)是示例性的,絕不表示窮舉的意思。進一步,這些方法的一些可以被一起共同地使用。再者,所有這些參數(shù)對于存儲器設(shè)備12的不同分區(qū)可以是不同的。首先,當NAND存儲器12開始上電時,控制器14可以掃描第一多個塊。第二,當主機8發(fā)出掃描NAND存儲器12中的第一多個塊的特定命令時,該控制器14可以掃描第一多個塊。作為這個方法的結(jié)果,當主機8發(fā)出讀或?qū)慛AND存儲器12中的特定塊的讀或?qū)懨顣r控制器14可以掃描第一多個塊。此后,控制器14能夠繼續(xù)讀取該第一多個塊中的所有剩余的擦除計數(shù)器。另外,在收到來自主機8的讀或?qū)懨钪螅刂破?4可以限制將發(fā)生掃描的預(yù)定周期的時間量。第三,控制器14可以在幕后掃描第一多個塊。這可以例如當在例如5msec的一段時間段內(nèi)沒有任何未決的主機命令時啟動,并且可以當主機啟動控制器14必須響應(yīng)的命令時停止。第四,控制器14可以在預(yù)定事件之后啟動掃描,例如在控制器14接收到來自主機8的多個ATA命令之后?!┐_定何時掃描第一多個塊中的每一個塊的擦除計數(shù)器以創(chuàng)建LFU,則下一個確定要素是掃描第一多個塊的擦除計數(shù)器的方法。再者,存在多個方法,并且下面所描述的方法僅僅是示例性的,絕不是窮舉的。首先,控制器14可以按照從映射表中的第一項目開始直到最后項目的線性方式來掃描第一多個塊中的所有塊。第二,控制器14能夠基于來自主機8的命令來掃描在第一多個塊中的塊。例如,如果主機8知道例如操作系統(tǒng)程序的數(shù)據(jù)被保存的地方和由此哪一些塊更可能包含了"最年輕"塊,則該主機8可以啟動在特定邏輯地址處的掃描或者指示掃描應(yīng)該受限制的地址。第三,控制器14還可以以隨機方式掃描第一多個塊的所有塊。在控制器14中的處理器可以包括隨機數(shù)發(fā)生器,其產(chǎn)生用于和塊的物理地址相關(guān)聯(lián)的隨機數(shù)。第四,控制器14還能夠以偽隨機方式掃描第一多個塊的所有塊。在控制器14中的處理器能夠包括偽隨機數(shù)發(fā)生器(例如素數(shù)發(fā)生器),其產(chǎn)生可以用于和塊的物理地址相關(guān)聯(lián)的偽隨機數(shù)?!﹦?chuàng)建LFU,則可以實施本發(fā)明的方法。然而,因為本發(fā)明的靜態(tài)損耗均衡方法不依賴于塊中的數(shù)據(jù)更新,所以這個問題變成了何時進行在LFU中的"最年輕"塊和在被擦除的池中"最老"塊之間的數(shù)據(jù)交換。存在多種方法來實現(xiàn)。這些參數(shù)對于存儲器設(shè)備12的不同分區(qū)也可以是不同的。再者,下列所述是多種可行的技術(shù),其是示例性地,絕不是窮舉的。第一,在NAND存儲器12首次上電時,控制器14能夠交換有限數(shù)量的塊,例如16個。第二,控制器14可以響應(yīng)于主機8發(fā)出交換塊的數(shù)量的特定命令,交換多個塊。作為該方法的結(jié)果,在主機8發(fā)出讀或?qū)懨钜宰x或者寫NAND存儲器12中的特定塊之后,控制器14還可以交換有限數(shù)量的塊,例如1個。之后,控制器14可以交換一個塊。第三,控制器14能夠在后臺交換有限數(shù)量的塊,例如16個。這可以例如當在例如5msec的一段時間段內(nèi)沒有任何未決的主機命令時啟動,并且當主機啟動控制器14必須響應(yīng)的命令時可以停止。第四,控制器14可以能夠在預(yù)定事件之后,例如在控制器14接收到來自主機8的多個ATA命令之后,交換有限數(shù)量的塊,例如1個。應(yīng)該明白,盡管本發(fā)明的方法均衡了NAND存儲器12中的所有塊中的損耗,但是數(shù)據(jù)從LFU中的一個塊持續(xù)交換到在被擦除的池中的另一個塊能夠引起過度的損耗。存在多種方法來防止不必要的交換。再者,這些參數(shù)對于存儲器設(shè)備12的每一個分區(qū)也可以是不同的。下列所述是各種可行技術(shù),其是示例性的并且絕不是窮舉的。而且,這里描述的方法可以被共同地執(zhí)行。首先,在LFU中的"最年輕"塊的擦除計數(shù)器中的計數(shù)和被擦除的池的塊中的"最老"塊的擦除計數(shù)器中的計數(shù)之間做出確定。如果差值在特定范圍內(nèi),將不發(fā)生在LFU中的"最年輕"塊和被擦除的池中的"最老"塊之間的交換。在LFU中的"最年輕"塊的擦除計數(shù)器中的計數(shù)和被擦除的池的"最老"塊的擦除計數(shù)器中的計數(shù)之間的差值也可以保存在單獨的計數(shù)器中,第二,控制器14可以保持兩個計數(shù)器一個用于保存主機啟動擦除計數(shù)的數(shù)目,另一個用于保存由于本發(fā)明的靜態(tài)損耗均衡方法帶來的擦除計數(shù)的數(shù)目。如果在這兩個計數(shù)器中的兩個數(shù)值之間的差小于預(yù)定數(shù),則將不會發(fā)生本發(fā)明的靜態(tài)損耗均衡方法。主機啟動擦除計數(shù)的數(shù)目包括由于動態(tài)損耗均衡引起的所有擦除計數(shù),即當任一塊中的數(shù)據(jù)更新時,則在任何情況中都將導(dǎo)致發(fā)生擦除操作。第三,控制器14可以設(shè)置與每一個塊相關(guān)聯(lián)的標志。當從被擦除的池中交換每一個塊時,該標志被置位。一旦該標志被置位,則該塊不再適合本發(fā)明的損耗均衡方法,直到在第一多個塊中的所有塊的標志都被置位為止。之后,這些塊的所有標志被復(fù)位,然后該塊再次適合于本發(fā)明的損耗均衡方法。第四,根據(jù)本發(fā)明的方法,計數(shù)器被配備給第一多個塊中的每一個塊以用于保存表示該塊最近被擦除的時間的數(shù)據(jù)。此外,控制器14提供用于保存對于第一多個塊的全局時間的計數(shù)器。如果塊被選擇為使其數(shù)據(jù)與來自被擦除的池的塊交換,則將計數(shù)器保存的表示發(fā)生最近擦除操作的時間與所述全局時間相比較。如果該差值小于預(yù)定數(shù),(指示根據(jù)本發(fā)明的靜態(tài)損耗均衡方法感興趣的塊最近被擦除),則該塊不被擦除并且不被添加到LFU中(或者如果已經(jīng)在LFU中,則從其移除)。如本領(lǐng)域公知的,閃速存儲器,特別是NAND存儲器12易于出現(xiàn)故障。因此,控制器14包括錯誤檢測和錯誤糾正軟件。本發(fā)明的方法的另一個優(yōu)點是當LFU中的每一個塊被讀取,并且然后數(shù)據(jù)被記錄到來自被擦除的池的被擦除的塊,控制器14可以確定來自讀取的塊的數(shù)據(jù)包含錯誤到什么程度。如果從讀取的塊中讀取的數(shù)據(jù)是不需要糾正的數(shù)據(jù),則被擦除的塊返回到被擦除的池中。然而,如果從讀取的塊中讀取的數(shù)據(jù)包含可糾正的錯誤,(并且根據(jù)糾正的程度),則讀取的塊可以返回到壞塊池。以這樣的方式,處于臨界良好的塊能夠被檢測并且在其中保存的數(shù)據(jù)變成不可讀取之前報廢。因此,正如從前面可以知道的,對NAND存儲器12的不同分區(qū)可以調(diào)整各種參數(shù)??刂破?4還操作以執(zhí)行對于每一分區(qū)具有不同參數(shù)的數(shù)據(jù)保持的功能。特別是,實現(xiàn)數(shù)據(jù)保持的一種方法如下籠船寺在本發(fā)明的方法中,當上電時,控制器14獲得保存在N0R非易失性存儲器22中的計算機程序代碼。該控制器14然后讀取來自RTC16的時間戳信號。來自RTC22的時間戳信號指示"當前"時間??刂破?4比較如在時間戳信號中提供的"當前"時間和保存在NOR非易失性存儲器22中的時間信號以確定自控制器14已經(jīng)執(zhí)行了對NAND存儲器12的數(shù)據(jù)保持操作的最近時間以來是否已經(jīng)過去了足夠的時間。認為是"足夠"的時間量對于每一分區(qū)可以是變化的。如果自控制器14已經(jīng)執(zhí)行了對NAND存儲器12的數(shù)據(jù)保持操作的最近時間以來已經(jīng)過去了足夠的時間,則該控制器14啟動該方法以檢查數(shù)據(jù)保持。在該情況中,通過讀取來自NAND存儲器12中的塊之一的每一個存儲單元的數(shù)據(jù),控制器14執(zhí)行數(shù)據(jù)保持并且對NAND存儲器12執(zhí)行刷新操作。因為控制器14具有錯誤糾正編碼,如果讀取的數(shù)據(jù)包含錯誤,則這樣的數(shù)據(jù)被控制器14糾正。被糾正的數(shù)據(jù)(如果存在的話)然后被寫回到NAND存儲器設(shè)備12中與數(shù)據(jù)被讀取的塊不同的塊中。如果讀取的數(shù)據(jù)是正確的并且不要求錯誤糾正,則該數(shù)據(jù)繼續(xù)保存在當前塊中??刂破?4然后繼續(xù)讀取NAND存儲器12的其余全部塊的數(shù)據(jù)。可選擇地,如果指示錯誤的讀取的數(shù)據(jù)被糾正,則數(shù)據(jù)被從中讀取的塊被擦除,并且被糾正的數(shù)據(jù)被寫入到被擦除的塊中。在被糾正的數(shù)據(jù)被寫入之后,保持時間被重置。如果保持錯誤是軟故障,可以使用將被糾正的數(shù)據(jù)寫入到其被從中讀取的同一塊。在該情況中,該塊沒有損傷并且可以重新使用??蛇x擇地,控制器14能夠比較從塊的每一個存儲單元讀取的數(shù)據(jù)和容限信號。對于塊中的所有的存儲單元,如果從存儲單元讀取的信號大于或者小于容限信號,則該數(shù)據(jù)被繼續(xù)保存在其被從中讀取的塊中。然而,如果來自塊的一個存儲單元的信號大于或者小于容限信號,則來自塊的存儲單元的所有信號被寫入到與來自存儲單元的信號被讀取的塊不同的塊中。再者,如果錯誤是軟故障,則糾正的數(shù)據(jù)可以被寫入到該數(shù)據(jù)被讀取的被擦除的塊中。盡管前面描述了RTC16發(fā)出時間戳信號給控制器14,但是數(shù)據(jù)保持操作的方法還能夠按著下述完成。在正常操作期間,主機設(shè)備8可以發(fā)出命令給控制器14以啟動數(shù)據(jù)保持檢查操作??蛇x擇地,NAND設(shè)備12中的存儲單元的每一個塊可以具有與其相關(guān)聯(lián)的寄存器。在"正常"讀取操作期間,如果讀取操作顯示數(shù)據(jù)需要被糾正或者從存儲單元讀取的信號與容限信號相比在容限之外,則與該塊相關(guān)聯(lián)的寄存器被置位。一旦寄存器已經(jīng)被置位,NAND設(shè)備12的塊然后可以被讀取并且被寫入到同一或其它位置。啟動數(shù)據(jù)保持方法的其它可能是在控制器14上電或者掉電時啟動數(shù)據(jù)保持操作,即不必等候來自RTC16的時間戳信號。其它可能的啟動方法包括具有周期性執(zhí)行數(shù)據(jù)保持操作的休眠電路的控制器14,其中數(shù)據(jù)保持操作包括從塊中讀取數(shù)據(jù)并且或者確定該數(shù)據(jù)是否正確或者是否在容限內(nèi)并且什么都不做、或者將該數(shù)據(jù)寫入到同一或不同塊中。參考圖5,示出了在本發(fā)明的系統(tǒng)10中使用的NAND類型存儲器12的框圖。眾所周知,NAND存儲器12包括以多個行和列布置的NAND存儲單元的陣列114。地址緩沖器鎖存器118接收用于尋址陣列114的地址信號。行譯碼器116譯碼在地址鎖存器118中接收的地址信號并且選擇在陣列114中適當?shù)拇鎯卧?。被選擇的存儲單元通過列多路復(fù)用器120被多路復(fù)用并且被讀取放大器122讀取。參考偏置電路130產(chǎn)生三個不同的讀取電平信號(或容限信號),分別用四個容限信號X1、X2、X3和X4表示,它們在讀取操作期間被提供給讀取放大器122。容限信號XI提供數(shù)據(jù)所需要的最小容限信號以便以最小量的電荷保持在其浮柵上。這將確保在要求刷新操作的情況中在一段時間內(nèi)有足夠的電荷保持。容限信號X2是為正常的容限讀取信號的用戶模式容限信號。容限信號X3是表示錯誤模式的容限信號并且在數(shù)據(jù)停留在該電平時提供要求刷新操作的標志。最后,容限信號X4是表示數(shù)據(jù)要求ECC(錯誤糾正檢查)協(xié)議以將其糾正的容限信號。有三個可能的輸出來自讀取放大器122:容限模式、用戶模式和錯誤模式。如果信號是容限模式輸出或者用戶模式輸出,則該信號被提供給比較器132。來自該比較器132的信號被提供給匹配電路134。如果該匹配電路134指示不匹配,則用于被尋址的存儲單元的特定行的標志被置位以指示需要執(zhí)行刷新操作。如果匹配電路134指示匹配,則控制器14做出錯誤位是否被置位的決定。如果不置位,則數(shù)據(jù)保持在正常范圍內(nèi)并且不需要進行刷新操作。即使通過ECC糾正了該數(shù)據(jù),讀取放大器122的錯誤模式輸出也置位錯誤位。如果錯誤位被置位,則該數(shù)據(jù)被寫入陣列114的另一部分中并且需要進行數(shù)據(jù)刷新操作。根據(jù)上述可以知道,通過將NAND存儲器12分成多個分區(qū),每個分區(qū)具有損耗均衡和數(shù)據(jù)保持的不同的參數(shù),該對于其中保存的數(shù)據(jù)(或代碼)的類型的特定分區(qū)可以優(yōu)化數(shù)據(jù)(或代碼)在NAND存儲器12中關(guān)于數(shù)據(jù)保持和耐久性的保存。權(quán)利要求一種非易失性存儲器子系統(tǒng),包括非易失性存儲器設(shè)備;存儲器控制器,用于控制所述非易失性存儲器設(shè)備的操作,所述存儲器控制器包括用于執(zhí)行計算機程序指令以便將所述存儲器設(shè)備分成多個分區(qū)的處理器,每一個分區(qū)具有用于損耗均衡和數(shù)據(jù)保持的可調(diào)節(jié)參數(shù);和用于提供時序信號給所述存儲器控制器的時鐘。2.根據(jù)權(quán)利要求l的存儲器子系統(tǒng),其中所述非易失性存儲器設(shè)備是NAND存儲器。3.根據(jù)權(quán)利要求1的存儲器子系統(tǒng),其中所述非易失性存儲器設(shè)備具有數(shù)據(jù)存儲部分和被擦除的存儲部分,其中該數(shù)據(jù)存儲部分具有第一多個塊并且該被擦除的存儲部分具有第二多個塊,并且其中第一多個塊和第二多個塊的每一個都具有被一起擦除的多個非易失性存儲位,每一個塊具有相關(guān)聯(lián)的、用于保存該塊已經(jīng)被擦除的次數(shù)的計數(shù)的計數(shù)器,其中該存儲器控制器具有用于控制損耗均衡的程序指令,該程序指令被配置成根據(jù)與第一多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第三塊;根據(jù)與第二多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第四塊;將來自該第三塊的數(shù)據(jù)轉(zhuǎn)移到該第四塊,并且將所述第四塊與所述第一多個塊相關(guān)聯(lián);和擦除所述第三塊并且使與所述第三塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)遞增,并且將所述第三塊與所述第二多個塊相關(guān)聯(lián)。4.根據(jù)權(quán)利要求3的存儲器子系統(tǒng),其中所述程序指令被配置成基于與第一多個塊相關(guān)聯(lián)的計數(shù)器中的最小的計數(shù)來選擇該第三塊,并且其中所述程序指令被配置成基于與第二多個塊相關(guān)聯(lián)的計數(shù)器中的最大的計數(shù)來選擇該第四塊。5.根據(jù)權(quán)利要求4的存儲器子系統(tǒng),其中所述程序指令被配置成在計數(shù)器中的最大和最小計數(shù)之間的差大于預(yù)設(shè)數(shù)時執(zhí)行轉(zhuǎn)移和擦除步驟。6.根據(jù)權(quán)利要求4的存儲器子系統(tǒng),其中所述程序指令被配置成響應(yīng)于非易失性存儲器設(shè)備外部的源所提供的第一命令,根據(jù)與第一多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第三塊;根據(jù)與第二多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第四塊;將來自該第三塊的數(shù)據(jù)轉(zhuǎn)移到該第四塊,并且將所述第四塊與所述第一多個塊相關(guān)聯(lián);并且擦除所述第三塊并且使與所述第三塊相關(guān)聯(lián)的計數(shù)器遞增,并且將所述第三塊與所述第二多個塊相關(guān)聯(lián)。7.根據(jù)權(quán)利要求6的存儲器子系統(tǒng),其中所述存儲器控制器還包括命令計數(shù)器,其中當收到所述第一命令時所述命令計數(shù)器遞增。8.根據(jù)權(quán)利要求7的存儲器子系統(tǒng),其中所述程序指令被配置成響應(yīng)于該存儲器控制器內(nèi)部產(chǎn)生的第二命令,根據(jù)與第一多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第三塊;根據(jù)與第二多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第四塊;將來自該第三塊的數(shù)據(jù)轉(zhuǎn)移到該第四塊,并且將所述第四塊與所述第一多個塊相關(guān)聯(lián);擦除所述第三塊并且使與所述第三塊相關(guān)聯(lián)的計數(shù)器遞增,并且將所述第三塊與所述第二多個塊相關(guān)聯(lián)。9.根據(jù)權(quán)利要求8的存儲器子系統(tǒng),還包括內(nèi)部命令計數(shù)器,其中當產(chǎn)生第二命令時所述內(nèi)部命令計數(shù)器遞增。10.根據(jù)權(quán)利要求9的存儲器子系統(tǒng),其中所述程序指令被配置成當在該命令計數(shù)器中的計數(shù)和該內(nèi)部命令計數(shù)器中的計數(shù)之間的差大于預(yù)設(shè)數(shù)時,根據(jù)與第一多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第三塊;根據(jù)與第二多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第四塊;將來自該第三塊的數(shù)據(jù)轉(zhuǎn)移到該第四塊,并且將所述第四塊與所述第一多個塊相關(guān)聯(lián);和擦除所述第三塊并且使與所述第三塊相關(guān)聯(lián)的計數(shù)器遞增,并且將所述第三塊與所述第二多個塊相關(guān)聯(lián)。11.根據(jù)權(quán)利要求l的存儲器子系統(tǒng),其中所述存儲器控制器與所述時鐘連接以接收時間戳信號,用于控制數(shù)據(jù)保持的所述程序指令被配置成通過所述存儲器控制器接收該時間戳信號;將接收到的時間戳信號與保存的信號相比較,其中該保存的信號是由該存儲器控制器在更早的時間接收的時間戳信號;禾口基于比較步驟確定何時對于保存在存儲器陣列中的數(shù)據(jù)執(zhí)行數(shù)據(jù)保持和刷新操作。12.根據(jù)權(quán)利要求ll的存儲器子系統(tǒng),其中所述非易失性存儲器設(shè)備具有多個塊,每一個塊具有被一起擦除的多個存儲單元,其中所述程序指令還被配置成a)從所述塊之一中的每一個存儲單元中讀取數(shù)據(jù);b)如果需要則由該存儲器控制器糾正所述讀取的數(shù)據(jù)以形成糾正的數(shù)據(jù);c)如果存在糾正的數(shù)據(jù)則將該糾正的數(shù)據(jù)寫入到所述陣列的不同塊中;禾口d)對于陣列的不同塊重復(fù)步驟a)-c),直到所有的塊都已經(jīng)被讀取。13.根據(jù)權(quán)利要求ll的存儲器子系統(tǒng),其中所述非易失性存儲器設(shè)備具有多個塊,每一個塊具有被一起擦除的多個存儲單元,其中所述程序指令還被配置成a)從所述塊之一中的每一個存儲單元中讀取數(shù)據(jù)信號;b)比較該讀取的數(shù)據(jù)信號和容限信號;c)在比較步驟b)的結(jié)果指示有必要將對應(yīng)于該數(shù)據(jù)信號的數(shù)據(jù)寫到不同的存儲單元中時,將對應(yīng)于該數(shù)據(jù)信號的數(shù)據(jù)寫到所述陣列的不同塊的不同存儲單元中;禾口d)對于陣列的不同塊重復(fù)步驟a)-c),直到所有的塊都已經(jīng)被讀取。14.一種用于控制非易失性存儲器設(shè)備的操作的存儲器控制器,所述存儲器控制器包括處理器;存儲器,用于保存由所述處理器執(zhí)行的計算機程序指令,所述程序指令被配置成將所述非易失性存儲器設(shè)備分成多個分區(qū),每一個分區(qū)具有用于損耗均衡和數(shù)據(jù)保持的可調(diào)節(jié)參數(shù)。15.根據(jù)權(quán)利要求14的存儲器控制器,其中所述非易失性存儲器設(shè)備具有數(shù)據(jù)存儲部分和被擦除的存儲部分,其中該數(shù)據(jù)存儲部分具有第一多個塊并且該被擦除的存儲部分具有第二多個塊,并且其中第一多個塊和第二多個塊的每一個都具有被一起擦除的多個非易失性存儲位,每一個塊具有相關(guān)聯(lián)的、用于保存該塊已經(jīng)被擦除的次數(shù)的計數(shù)的計數(shù)器,其中保存在該存儲器中的用于控制損耗均衡的程序指令被配置成根據(jù)與第一多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第三塊;根據(jù)與第二多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第四塊;將來自該第三塊的數(shù)據(jù)轉(zhuǎn)移到該第四塊,并且將所述第四塊與所述第一多個塊相關(guān)聯(lián);和擦除所述第三塊并且使與所述第三塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)遞增,并且將所述第三塊與所述第二多個塊相關(guān)聯(lián)。16.根據(jù)權(quán)利要求15的存儲器控制器,其中所述程序指令被配置成基于與第一多個塊相關(guān)聯(lián)的計數(shù)器中的最小的計數(shù)來選擇該第三塊,并且其中所述程序指令被配置成基于與第二多個塊相關(guān)聯(lián)的計數(shù)器中的最大的計數(shù)來選擇該第四塊。17.根據(jù)權(quán)利要求16的存儲器控制器,其中所述程序指令被配置成在計數(shù)器中的最大和最小計數(shù)之間的差大于預(yù)設(shè)數(shù)時執(zhí)行轉(zhuǎn)移和擦除步驟。18.根據(jù)權(quán)利要求16的存儲器控制器,其中所述程序指令被配置成響應(yīng)于非易失性存儲器設(shè)備外部的源所提供的第一命令,根據(jù)與第一多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第三塊;根據(jù)與第二多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第四塊;將來自該第三塊的數(shù)據(jù)轉(zhuǎn)移到該第四塊,并且將所述第四塊與所述第一多個塊相關(guān)聯(lián);并且擦除所述第三塊并且使與所述第三塊相關(guān)聯(lián)的計數(shù)器遞增,并且將所述第三塊與所述第二多個塊相關(guān)聯(lián)。19.根據(jù)權(quán)利要求18的存儲器控制器,其中所述存儲器控制器還包括命令計數(shù)器,其中當收到所述第一命令時所述命令計數(shù)器遞增。20.根據(jù)權(quán)利要求19的存儲器控制器,其中所述程序指令被配置成響應(yīng)于存儲器控制器內(nèi)部產(chǎn)生的第二命令,根據(jù)與第一多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第三塊;根據(jù)與第二多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第四塊;將來自該第三塊的數(shù)據(jù)轉(zhuǎn)移到該第四塊,并且將所述第四塊與所述第一多個塊相關(guān)聯(lián);和擦除所述第三塊并且使與所述第三塊相關(guān)聯(lián)的計數(shù)器遞增,并且將所述第三塊與所述第二多個塊相關(guān)聯(lián)。21.根據(jù)權(quán)利要求20的存儲器控制器,還包括內(nèi)部命令計數(shù)器,其中當產(chǎn)生第二命令時所述內(nèi)部命令計數(shù)器遞增。22.根據(jù)權(quán)利要求21的存儲器控制器,其中所述程序指令被配置成當在該命令計數(shù)器中的計數(shù)和該內(nèi)部命令計數(shù)器中的計數(shù)之間的差大于預(yù)設(shè)數(shù)時,根據(jù)與第一多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第三塊;根據(jù)與第二多個塊中的塊相關(guān)聯(lián)的計數(shù)器中的計數(shù)確定選擇第四塊;將來自該第三塊的數(shù)據(jù)轉(zhuǎn)移到該第四塊,并且將所述第四塊與所述第一多個塊相關(guān)聯(lián);和擦除所述第三塊并且使與所述第三塊相關(guān)聯(lián)的計數(shù)器遞增,并且將所述第三塊與所述第二多個塊相關(guān)聯(lián)。23.根據(jù)權(quán)利要求14的存儲器控制器,其中所述存儲器控制器與所述時鐘連接以接收時間戳信號,用于控制數(shù)據(jù)保持的所述程序指令被配置成通過所述存儲器控制器接收該時間戳信號;將接收到的時間戳信號與保存的信號相比較,其中該保存的信號是由該存儲器控制器在更早的時間接收的時間戳信號;禾口基于比較步驟確定何時對于保存在存儲器陣列中的數(shù)據(jù)執(zhí)行數(shù)據(jù)保持和刷新操作。24.根據(jù)權(quán)利要求14的存儲器控制器,其中所述非易失性存儲器設(shè)備具有多個塊,每一個塊具有被一起擦除的多個存儲單元,其中所述程序指令還被配置成a)從所述塊之一中的每一個存儲單元中讀取數(shù)據(jù);b)如果需要則由該存儲器控制器糾正所述讀取的數(shù)據(jù)以形成糾正的數(shù)據(jù);c)如果存在糾正的數(shù)據(jù)則將該糾正的數(shù)據(jù)寫入到所述陣列的不同塊中;禾口d)對于陣列的不同塊重復(fù)步驟a)-c),直到所有的塊都已經(jīng)被讀取。25.根據(jù)權(quán)利要求14的存儲器控制器,其中所述非易失性存儲器設(shè)備具有多個塊,每一個塊具有被一起擦除的多個存儲單元,其中所述程序指令還被配置成a)從所述塊之一中的每一個存儲單元中讀取數(shù)據(jù)信號;b)比較該讀取的數(shù)據(jù)信號和容限信號;c)在比較步驟b)的結(jié)果指示有必要將對應(yīng)于該數(shù)據(jù)信號的數(shù)據(jù)寫到不同的存儲單元中時,將對應(yīng)于該數(shù)據(jù)信號的數(shù)據(jù)寫入所述陣列的不同塊的不同存儲單元中;禾口d)對于陣列的不同塊重復(fù)步驟a)-c),直到所有的塊都已經(jīng)被讀取。全文摘要在本發(fā)明中,一種非易失性存儲器子系統(tǒng)包括非易失性存儲器設(shè)備和存儲器控制器。該存儲器控制器控制所述非易失性存儲器設(shè)備的操作,所述存儲器控制器包括用于執(zhí)行計算機程序指令以便將所述非易失性存儲器設(shè)備分成多個分區(qū)的處理器,每一個分區(qū)具有用于損耗均衡和數(shù)據(jù)保持的可調(diào)節(jié)參數(shù)。該存儲器子系統(tǒng)還包括用于提供時序信號給所述存儲器控制器的時鐘。文檔編號G06F12/06GK101794256SQ20101011026公開日2010年8月4日申請日期2010年2月2日優(yōu)先權(quán)日2009年2月4日發(fā)明者P·庫瑪,林豐隆,邢東生申請人:超捷公司