專(zhuān)利名稱(chēng):用于非易失性存儲(chǔ)器系統(tǒng)的編織序列計(jì)數(shù)器的制作方法
用于非易失性存儲(chǔ)器系統(tǒng)的編織序列計(jì)數(shù)器
背景技術(shù):
NAND閃存以及其他類(lèi)型的非易失性存儲(chǔ)器(NVM)通常用于大容量存儲(chǔ)器。例如,消費(fèi)性電子產(chǎn)品(例如便攜媒體播放器)通常包括用于存儲(chǔ)音樂(lè)、視頻或其他媒體的閃存。NVM可包括多個(gè)超級(jí)塊,其中每個(gè)超級(jí)塊可以被組織成若干塊。類(lèi)似的,NVM的每個(gè)塊可以被組織成若干頁(yè)。然而,一些關(guān)于NVM內(nèi)容的信息或統(tǒng)計(jì)數(shù)據(jù)可以在塊級(jí)別的“粒度”上提供。換句話(huà)說(shuō),這種信息可以?xún)H僅關(guān)于作為一個(gè)整體的塊是可獲得的,而不提供關(guān)于該塊中的單獨(dú)的頁(yè)的特定信息。這種塊級(jí)別粒度限制了 NVM系統(tǒng)以保持?jǐn)?shù)據(jù)連貫性的方式在塊內(nèi)編織數(shù)據(jù)的能力。沒(méi)有數(shù)據(jù)連貫性,某些NVM操作(諸如回滾、耗損均衡、垃圾收集)可能不能執(zhí)行。因此,需要以連貫性的方式在塊內(nèi)編織數(shù)據(jù)的能力。
發(fā)明內(nèi)容
公開(kāi)了提供用于非易失性存儲(chǔ)器(NVM)系統(tǒng)的編織序列計(jì)數(shù)器(WSC)的系統(tǒng)和方法。WSC可以識(shí)別對(duì)NVM的每頁(yè)編程的序列。“編織”方面可以指兩個(gè)或更多個(gè)塊可以同時(shí)打開(kāi)進(jìn)行編程的事實(shí),從而允許這些塊的頁(yè)以“交織”的方式進(jìn)行編程。WSC可以幫助NVM系統(tǒng),例如,執(zhí)行回滾操作以及重建邏輯到物理表映射。還公開(kāi)了提供主編織序列計(jì)數(shù)器(HWSC)的系統(tǒng)和方法。每次數(shù)據(jù)被最初編程到NVM的一頁(yè)(例如,而不是為了耗損均衡的目的等等被移動(dòng)或重寫(xiě))時(shí),該頁(yè)可以被分配一個(gè)HWSC。不像WSC每次數(shù)據(jù)被移動(dòng)到新的頁(yè)就可以進(jìn)行更新,分配到特定數(shù)據(jù)組的HWSC可以不變。因而,即使當(dāng)為了耗損均衡、垃圾收集等等而將數(shù)據(jù)移動(dòng)到新的頁(yè)時(shí),與該數(shù)據(jù)相關(guān)聯(lián)的HWSC也可能保持不變。HWSC可以幫助NVW系統(tǒng),例如,確定頁(yè)的靜態(tài)與動(dòng)態(tài)狀態(tài)以及執(zhí)行耗損均衡和垃圾收集操作。
結(jié)合附圖考慮到下面的詳細(xì)說(shuō)明,本發(fā)明的上述和其他方面以及優(yōu)點(diǎn)將更加明顯。附圖中相同的參考標(biāo)記自始至終表示相同的部件,并且其中圖1和2是根據(jù)本發(fā)明各種實(shí)施例配置的電子設(shè)備的方框圖;圖3是根據(jù)本發(fā)明各種實(shí)施例進(jìn)行編織的NVM的塊的功能視圖;圖4是根據(jù)本發(fā)明各種實(shí)施例在回滾操作期間的NVM的塊的功能視圖;圖5是根據(jù)本發(fā)明各種實(shí)施例的使用編織序列計(jì)數(shù)器的回滾操作的流程圖;圖6是根據(jù)本發(fā)明各種實(shí)施例的NVM的頁(yè)的靜態(tài)與動(dòng)態(tài)確定的流程圖;圖7是根據(jù)本發(fā)明各種實(shí)施例的耗損均衡的功能視圖;以及圖8是根據(jù)本發(fā)明各種實(shí)施例的耗損均衡程序的流程圖。圖9示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的存儲(chǔ)器接口。圖10示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的存儲(chǔ)器接口。圖11示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的存儲(chǔ)器接口。
具體實(shí)施方式
公開(kāi)了提供用于非易失性存儲(chǔ)器(NVM)系統(tǒng)的編織序列計(jì)數(shù)器(WSC)的系統(tǒng)和 方法。WSC可以識(shí)別NVM的每個(gè)頁(yè)被編程的序列。“編織”方面可以是指兩個(gè)或更多個(gè)塊可 以同時(shí)打開(kāi)以進(jìn)行編程的事實(shí),從而允許這些塊的頁(yè)可以按“交織”的方式進(jìn)行編程。
在非正常關(guān)機(jī)事件或其它系統(tǒng)重啟事件的情況下中,NVM系統(tǒng)需要重建一個(gè)或 多個(gè)NVM的邏輯到物理映射表。而且,該映射表可以?xún)H僅包括有效(未損壞)數(shù)據(jù)。在重 建過(guò)程中,一旦定位了具有無(wú)效數(shù)據(jù)的損壞頁(yè),NVM系統(tǒng)可以檢查NVM的塊的頁(yè)中的WSC值, 以確定該損壞頁(yè)的具體的WSC值。NVM系統(tǒng)可以接著確定具有大于損壞頁(yè)的WSC值的WSC 值的任何頁(yè)可能不被采用,因?yàn)槠淇赡芟鄬?duì)于文件系統(tǒng)和數(shù)據(jù)庫(kù)日志期望是不連貫的。NVM 系統(tǒng)然后可以通過(guò)忽略任何這種無(wú)效頁(yè)并僅僅使用具有小于損壞頁(yè)的WSC值的WSC值的頁(yè) 建立邏輯到物理映射表,“回滾”系統(tǒng)到安全狀態(tài)。
當(dāng)重建邏輯到物理映射表時(shí),保持時(shí)序連貫性。在一些情況下,映射表可以通過(guò) 以WSC值升序的方式順序地檢查頁(yè)來(lái)進(jìn)行重建。在兩個(gè)頁(yè)中的每個(gè)都表明它們映射到相同 的邏輯地址的事件中,包含較高WSC值的頁(yè)可以被給予優(yōu)先權(quán)并覆蓋另一個(gè)頁(yè)。換句話(huà)說(shuō), 由于具有高WSC值的頁(yè)在之后的時(shí)間點(diǎn)被編程到它的邏輯地址,所以可以確定該頁(yè)包含正 確的邏輯到物理映射從而應(yīng)該在映射表中使用。類(lèi)似地,包含較小WSC值的頁(yè)可以被確定 為包含錯(cuò)誤的、過(guò)時(shí)的邏輯到物理映射,從而不應(yīng)該在建立映射表中使用。
還公開(kāi)了用于提供主編織序列計(jì)數(shù)器(HWSC)的系統(tǒng)和方法。每次數(shù)據(jù)被最初寫(xiě) 到NVM的頁(yè)(例如,而不是為了耗損均衡的目的等等而移動(dòng)或重寫(xiě))時(shí),該頁(yè)可以被分配一 個(gè)HWSC。該HWSC可以被設(shè)置為與當(dāng)前的WSC相同的值。不像WSC每次舊數(shù)據(jù)被移動(dòng)到新的 頁(yè)就可以進(jìn)行更新,被分配到特定數(shù)據(jù)組的HWSC可以不變。作為一個(gè)示例場(chǎng)景,假設(shè)與邏 輯塊地址(“LBA”) X相關(guān)聯(lián)的新數(shù)據(jù)存儲(chǔ)在頁(yè)A中。當(dāng)前WSC是23,從而頁(yè)A被分配WSA =23且HWSC = 23。在之后的時(shí)間點(diǎn),當(dāng)當(dāng)前WSC值現(xiàn)在為82時(shí),與LBA X相關(guān)聯(lián)的數(shù)據(jù) 被移動(dòng)到頁(yè)B(例如,為了耗損均衡、垃圾收集等等移動(dòng)數(shù)據(jù))。頁(yè)B被分配新的WSC = 82 并保持舊的HWSC = 23。
在一些實(shí)施例中,HWSC可以幫助NVM系統(tǒng)以確定頁(yè)的靜態(tài)與動(dòng)態(tài)狀態(tài)。特別地, HWSC可以提供頁(yè)內(nèi)存儲(chǔ)的數(shù)據(jù)的年齡的概要。當(dāng)數(shù)據(jù)較年長(zhǎng)時(shí),該數(shù)據(jù)更可能被認(rèn)為是靜 態(tài)的,因?yàn)樗宰畛蹙幊唐饹](méi)有移動(dòng)過(guò)。從而,可以通過(guò)計(jì)算與存儲(chǔ)該數(shù)據(jù)的頁(yè)相關(guān)的當(dāng)前 WSC值和HWSC值之間的差值來(lái)確定數(shù)據(jù)的一般年齡。如果這個(gè)差值大于閾值,則存儲(chǔ)在該 頁(yè)中的數(shù)據(jù)可以被認(rèn)為對(duì)于選擇哪個(gè)塊或那個(gè)超級(jí)塊用于編程數(shù)據(jù)是靜態(tài)的。如果該差值 小于閾值,則存儲(chǔ)在該頁(yè)中的數(shù)據(jù)可以,例如,被認(rèn)為關(guān)于選擇哪個(gè)塊或那個(gè)超級(jí)塊用于編 程數(shù)據(jù)是動(dòng)態(tài)的。
在一些實(shí)施例中,由HWSC提供的靜態(tài)與動(dòng)態(tài)確定可以幫助NVM系統(tǒng)執(zhí)行維護(hù)操 作,例如耗損均衡和垃圾收集。為了延長(zhǎng)NVM的生命周期,優(yōu)選在NVM的所有塊上具有類(lèi)似 的耗損。由于靜態(tài)頁(yè)一般不會(huì)頻繁地被寫(xiě)和重寫(xiě),因此被確定為靜態(tài)的頁(yè)可以一起被存儲(chǔ) 在高循環(huán)塊(例如,已經(jīng)被擦除和編程了=相對(duì)大量次數(shù)的塊)中。這可以通過(guò)減少該塊 將被擦除和重新編程的可能性,來(lái)幫助減少高循環(huán)塊上的進(jìn)一步耗損。類(lèi)似地,被確定為動(dòng) 態(tài)的頁(yè)可以一起被存儲(chǔ)在低循環(huán)塊(例如,僅僅被擦除并編程相對(duì)少量次數(shù)的塊)中。
圖1示例了電子設(shè)備100的方框圖。在一些實(shí)施例中,電子設(shè)備100可以是或者包含便攜媒體播放器、便攜電話(huà)、袖珍個(gè)人電腦、個(gè)人數(shù)字助手(PDA)、臺(tái)式電腦、膝上電腦以及其他適合類(lèi)型的電子設(shè)備。電子設(shè)備100可以包括片上系統(tǒng)(SoC) 110和非易失性存儲(chǔ)器(NVM) 120。非易失性存儲(chǔ)器120可以包括基于浮柵或電荷捕獲技術(shù)的NAND閃存、NOR閃存、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、鐵電RAM(FRAM)、磁阻RAM(MRAM)或其任意組合。NVM120可以被組織為“塊”是可擦除的最小單元,并進(jìn)一步被組織為“頁(yè)”,是可編程或讀取的最小單元。在一些實(shí)施例中,NVMl20可以包括多個(gè)集成電路,其中,每個(gè)集成電路可以具有多個(gè)塊。來(lái)自相應(yīng)的集成電路的存儲(chǔ)器位置(例如,塊或塊的頁(yè))可以形成“超級(jí)塊”。NVM120的每個(gè)存儲(chǔ)器位置(例如,頁(yè)或塊)可以通過(guò)物理地址(例如,物理頁(yè)地址或物理塊地址)引用。元數(shù)據(jù)(諸如ECC數(shù)據(jù))(例如,用于為NVM120中存儲(chǔ)的信息提供錯(cuò)誤檢測(cè)和/或校正)、編織序列計(jì)數(shù)器值、主編織序列計(jì)數(shù)器可以被包含在NVM120的每個(gè)頁(yè)中。片上系統(tǒng)110可以包括SoC控制電路112,存儲(chǔ)器114和NVM接口 118。SoC控制電路112可以控制SoCllO和SoCllO或電子設(shè)備100的其他組件的一般操作或功能。例如,響應(yīng)于用戶(hù)輸入和/或應(yīng)用或操作系統(tǒng)的指令,SoC控制電路112可以發(fā)起讀或?qū)懻?qǐng)求到NVM接口 118,以從NVM120獲取數(shù)據(jù)或存儲(chǔ)數(shù)據(jù)到NVM120。為了清楚起見(jiàn),SoC控制電路112為存儲(chǔ)或取回而請(qǐng)求的數(shù)據(jù)可以稱(chēng)為“用戶(hù)數(shù)據(jù)”,即使該數(shù)據(jù)可能不直接與用戶(hù)或用戶(hù)應(yīng)用相關(guān)。當(dāng)然,用戶(hù)數(shù)據(jù)可以是由SoC控制電路112(例如,通過(guò)應(yīng)用或操作系統(tǒng))生成的或獲取的數(shù)字信息的任意適合序列。SoC控制電路112可以包括硬件、軟件和固件的任意組合以及操作用于驅(qū)動(dòng)電子設(shè)備100的功能的任何組件、電路或邏輯。例如,SoC控制電路112可以包括一個(gè)或多個(gè)處理器,其在NVM120或存儲(chǔ)器114中存儲(chǔ)的軟件/固件的控制之下操作。存儲(chǔ)器114可以包括任何適合類(lèi)型的易失性存儲(chǔ)器,例如隨機(jī)存取存儲(chǔ)器(RAM)(例如靜態(tài)RAM(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)、雙倍數(shù)據(jù)傳輸率(DDR) RAM、高速緩沖存儲(chǔ)器、只讀存儲(chǔ)器(ROM)或其組合。存儲(chǔ)器114可以包括可暫時(shí)存儲(chǔ)用于編程到非易失性存儲(chǔ)器120或從非易失性存儲(chǔ)器120讀出的用戶(hù)數(shù)據(jù)的數(shù)據(jù)源。在一些實(shí)施例中,存儲(chǔ)器114可以作為被實(shí)現(xiàn)為SoC控制電路112的一部分的任何處理器的主存儲(chǔ)器。NVM接口 118可以包括被配置用于作為SoC控制電路112和NVM120之間的接口或驅(qū)動(dòng)的硬件、軟件和/或固件的任意適合的組合。對(duì)于NVM接口 118中包含的任何軟件模塊,相應(yīng)的程序代碼可以存儲(chǔ)在NVM120或存儲(chǔ)器114中。NVM接口 118可以執(zhí)行各種允許SoC控制電路112訪(fǎng)問(wèn)NVM120以及管理NVM120的存儲(chǔ)器位置(例如頁(yè)、塊、超級(jí)塊、集成電路)和其中存儲(chǔ)的數(shù)據(jù)(例如用戶(hù)數(shù)據(jù))的功能。例如,NVM接口 118可以中斷來(lái)自SoC控制電路112的讀或?qū)懻?qǐng)求,執(zhí)行耗損均衡,執(zhí)行垃圾收集,生成與NVM120的總線(xiàn)協(xié)議兼容的讀和編程指令,分配編織序列計(jì)數(shù)器值到頁(yè),并分配主編織序列計(jì)數(shù)器值到頁(yè)。雖然NVM接口 118和SoC控制電路112作為單獨(dú)的模塊示出,這僅僅意圖簡(jiǎn)化本發(fā)明實(shí)施例的描述。應(yīng)理解這些模塊可以共用硬件組件、軟件組件或二者。例如,SoC控制 電路112可以為NVM接口 118執(zhí)行基于軟件的存儲(chǔ)器驅(qū)動(dòng)。
在一些實(shí)施例中,電子設(shè)備100可以包括目標(biāo)設(shè)備,例如閃存驅(qū)動(dòng)或SD卡,其包括 NVM120和NVM接口 118的一些或所有部分。在這些實(shí)施例中,SoCllO或SoC控制電路112 可作為目標(biāo)設(shè)備的主控制器。例如,作為主控制器,SoCIIO可以向目標(biāo)設(shè)備發(fā)起讀和寫(xiě)請(qǐng) 求。
圖2示例了電子設(shè)備200的方框圖,其可以更詳細(xì)地示例根據(jù)各種實(shí)施例的電子 設(shè)備100 (圖1)的一些固件、軟件和/或硬件組件。電子設(shè)備200可以具有任何上述描述 的與圖1相關(guān)的特征和功能,反之亦然。如示出的,虛線(xiàn)劃分出層。可以理解在虛線(xiàn)內(nèi)的組 件的描述僅僅是示意性,并且一個(gè)或多個(gè)組件可以屬于不同的層。
電子設(shè)備200可以包括文件系統(tǒng)210、NVM驅(qū)動(dòng)212、NVM總線(xiàn)控制器216和NVM220。 在一些實(shí)施例中,文件系統(tǒng)210和NVM驅(qū)動(dòng)212可以是軟件或固件模塊,NVM總線(xiàn)控制器216 和NVM220可以是硬件模塊。因此,在這些實(shí)施例中,NVM驅(qū)動(dòng)212可以表示NVM接口 218的 軟件或固件方面,并且NVM總線(xiàn)控制器216可以表示NVM接口 218的硬件方面。
文件系統(tǒng)210可以包括任何適合類(lèi)型的文件系統(tǒng),比如文件分配表(FAT)文件系 統(tǒng)或擴(kuò)展分層文件系統(tǒng)(HFS+),并且可以是電子設(shè)備200的操作系統(tǒng)的一部分(例如,圖1 的SoC控制電路112的一部分)。在一些實(shí)施例中,文件系統(tǒng)210可以包括提供頁(yè)的邏輯到 物理映射的閃存文件系統(tǒng)。在這些實(shí)施例中,文件系統(tǒng)210可以執(zhí)行下面討論的NVM驅(qū)動(dòng) 212的一些或全部功能,并且因此文件系統(tǒng)210和NVM驅(qū)動(dòng)212可以是或不是單獨(dú)的模塊。
文件系統(tǒng)210可以為應(yīng)用和操作系統(tǒng)管理文件和文件夾結(jié)構(gòu)。文件系統(tǒng)210可 以在運(yùn)行于電子設(shè)備200的應(yīng)用或操作系統(tǒng)的控制下操作,并且當(dāng)應(yīng)用或操作系統(tǒng)請(qǐng)求從 NVM220中讀取或向NVM220存儲(chǔ)信息時(shí),提供到NVM驅(qū)動(dòng)212的讀和寫(xiě)請(qǐng)求。連同每個(gè)讀或 寫(xiě)請(qǐng)求,文件系統(tǒng)210可以提供邏輯地址以表明用戶(hù)數(shù)據(jù)應(yīng)該從哪讀出或?qū)懙侥睦铮?邏輯頁(yè)地址或具有頁(yè)偏移的邏輯塊地址
文件系統(tǒng)210可以提供與NVM220不直接兼容的讀和寫(xiě)請(qǐng)求到NVM驅(qū)動(dòng)212。例 如,邏輯地址可以使用基于硬驅(qū)動(dòng)的系統(tǒng)的典型的規(guī)范或協(xié)議?;谟豺?qū)動(dòng)的系統(tǒng),不像閃 存,可以在不先執(zhí)行塊擦除的情況下覆蓋存儲(chǔ)器位置。而且,硬驅(qū)動(dòng)可以不需要耗損均衡以 增加設(shè)備的生命周期。因此,NVM接口 218可以執(zhí)行特定于內(nèi)存、特定于供應(yīng)商或特定于二 者的任何功能,從而以適合于NVM220的方式處理文件系統(tǒng)請(qǐng)求并執(zhí)行其他管理功能。
NVM驅(qū)動(dòng)212可以包括轉(zhuǎn)換層214。在一些實(shí)施例中,轉(zhuǎn)換層214可以是或包含閃 存轉(zhuǎn)換層(FTL)。基于寫(xiě)請(qǐng)求,轉(zhuǎn)換層214可以將提供的邏輯地址映射到NVM220上一個(gè)空 閑的擦除的物理位置?;谧x請(qǐng)求,轉(zhuǎn)換層214可以使用提供的邏輯地址確定請(qǐng)求的數(shù)據(jù) 所存儲(chǔ)的物理地址。因?yàn)槊總€(gè)NVM可以基于NVM的大小和供應(yīng)商而具有不同的布局,因此 這種映射操作可以是針對(duì)特定于存儲(chǔ)器和/或供應(yīng)商的。
除了邏輯到物理地址映射之外,轉(zhuǎn)換層214可以執(zhí)行任何其他適合的閃存轉(zhuǎn)換層 的典型的功能,比如垃圾收集(GC)和耗損均衡。
在一些實(shí)施例中,NVM驅(qū)動(dòng)212可以與NVM總線(xiàn)控制器216接口以完成NVM存取 請(qǐng)求(例如編程、讀和擦除請(qǐng)求)??偩€(xiàn)控制器216可以作為NVM220的硬件接口,并且可以 使用NVM220的總線(xiàn)協(xié)議、數(shù)據(jù)速率和其他規(guī)格與NVM220通信。
NVM接口 218可以基于此處有時(shí)稱(chēng)為“元數(shù)據(jù)”的存儲(chǔ)器管理數(shù)據(jù)來(lái)管理NVM220。元數(shù)據(jù)可以由NVM驅(qū)動(dòng)212生成,或者由在NVM驅(qū)動(dòng)212控制下操作的模塊生成。例如,元數(shù)據(jù)可以包括用于管理邏輯和物理地址之間的映射、故障區(qū)塊管理、耗損均衡的任何信息,用于檢測(cè)或校正數(shù)據(jù)錯(cuò)誤的ECC數(shù)據(jù),分配到頁(yè)的編織序列計(jì)數(shù)器值,分配到頁(yè)的主編織序列計(jì)數(shù)器值,或其任意組合。元數(shù)據(jù)可以包括由文件系統(tǒng)210連同用戶(hù)數(shù)據(jù)一起提供的數(shù)據(jù),例如邏輯地址。因而,通常,“元數(shù)據(jù)”可以指關(guān)于用戶(hù)數(shù)據(jù)或一般用于管理非易失性存儲(chǔ)器的操作和存儲(chǔ)器位置的任何信息。NVM接口 218可以被配置用于在NVM200中存儲(chǔ)元數(shù)據(jù)。在一些實(shí)施例中,NVM接口 218可以在與用戶(hù)數(shù)據(jù)被存儲(chǔ)的存儲(chǔ)器位置(例如,頁(yè))相同的位置存儲(chǔ)與用戶(hù)數(shù)據(jù)關(guān)聯(lián)的元數(shù)據(jù)。例如,NVM接口 218可以存儲(chǔ)用戶(hù)數(shù)據(jù),用于該用戶(hù)數(shù)據(jù)的在NVM220的一個(gè)或多個(gè)存儲(chǔ)器位置處的關(guān)聯(lián)的邏輯地址、ECC數(shù)據(jù)、編織序列計(jì)數(shù)器值以及主編織序列計(jì)數(shù)器值。NVM接口 218還可以在相同的存儲(chǔ)器位置存儲(chǔ)與用戶(hù)數(shù)據(jù)相關(guān)的其他類(lèi)型的元數(shù)據(jù)。NVM接口 218可以存儲(chǔ)邏輯地址,以致于在NVM220上電或NVM220的操作期間,電子設(shè)備200可以確定在該位置駐留的是什么數(shù)據(jù)。具體地,由于文件系統(tǒng)210可以根據(jù)其邏輯地址而非物理地址引用用戶(hù)數(shù)據(jù),NVM接口 218可以一起存儲(chǔ)用戶(hù)數(shù)據(jù)和邏輯地址以保持它們的關(guān)聯(lián)。這樣,即使維護(hù)NVM220中的邏輯到物理映射的單獨(dú)的表過(guò)時(shí)了,NVM接口 218仍然可以例如在電子設(shè)備200上電或重啟時(shí)確定合適的映射。除了邏輯到物理地址映射之外,轉(zhuǎn)換層214可以執(zhí)行任何其他閃存轉(zhuǎn)換層的典型的功能,比如垃圾收集和耗損均衡。例如,轉(zhuǎn)換層214可以執(zhí)行耗損均衡,以在NVM220的所有塊上提供相似的耗損。如前所述,NVM220的塊通??梢砸淮尾脸麄€(gè)塊,而每個(gè)塊的單獨(dú)的頁(yè)可以一次編程一頁(yè)。NVM220的頁(yè)可以用數(shù)據(jù)編程,例如,當(dāng)新數(shù)據(jù)最初被保存到NVM220時(shí)(例如,當(dāng)新的歌曲文件被首次保存到便攜媒體播放器設(shè)備中時(shí))或者當(dāng)舊數(shù)據(jù)被移動(dòng)到不同的頁(yè)時(shí)(例如,當(dāng)為了耗損均衡、垃圾收集或其它維護(hù)操作而移動(dòng)之前存儲(chǔ)的數(shù)據(jù)時(shí))。因此,如此處使用的,術(shù)語(yǔ)“新數(shù)據(jù)”可以指最初被首次編程到NVM的數(shù)據(jù),而術(shù)語(yǔ)“舊數(shù)據(jù)”可以指之前被編程到NVM中并且被從NVM的一個(gè)區(qū)域移動(dòng)(例如,重新編程)到另一個(gè)的數(shù)據(jù)。每當(dāng)數(shù)據(jù)被保存到NVM220的頁(yè)中時(shí)(例如,無(wú)論該數(shù)據(jù)是新或是舊),該頁(yè)可以與順序增加的編織序列計(jì)數(shù)器(WSC)值相關(guān)聯(lián)。每個(gè)頁(yè)可以包括存儲(chǔ)其相關(guān)聯(lián)的WSC值的元數(shù)據(jù)域。每當(dāng)另一頁(yè)被編程數(shù)據(jù)時(shí),WSC值可以增加并且剛剛增加過(guò)的WSC值可以被存儲(chǔ)在該頁(yè)的元數(shù)據(jù)中。以這種方式,WSC可以表示識(shí)別NVM220的每個(gè)頁(yè)被編程的相對(duì)順序的計(jì)數(shù)器值。作為示例,假設(shè)當(dāng)當(dāng)前WSC值等于2時(shí)頁(yè)A被編程數(shù)據(jù)。因此,WSC = 2被存儲(chǔ)到頁(yè)A的元數(shù)據(jù)中,并且當(dāng)前WSC值被增加到3。下一個(gè)被編程數(shù)據(jù)的是頁(yè)B,因而WSC = 3被存儲(chǔ)到頁(yè)B的元數(shù)據(jù)中。存儲(chǔ)和/或控制WSC可以由NVM系統(tǒng)的任何適合的組件執(zhí)行,比如,由NVM接口(例如,圖1中的NVM接口 118)或適合的控制電路(例如,圖1中的SoC控制電路112)。編織序列計(jì)數(shù)器的“編織”方面可以指NVM220的兩個(gè)或更多個(gè)塊可以打開(kāi)以同時(shí)進(jìn)行編程的事實(shí),從而允許這些塊的頁(yè)可以按“交織”的方式進(jìn)行編程。例如,圖3示例了NVM系統(tǒng)300的功能視圖,其中,兩個(gè)塊同時(shí)打開(kāi)進(jìn)行編程。如圖3所示例,塊0的頁(yè)0和I首先進(jìn)行編程,從而分別被分配WSC = 0和WSC = I。塊I的頁(yè)0接著進(jìn)行編程,從而被分配WSC = 2。塊O的頁(yè)2接下來(lái)進(jìn)行編程,從而被分配WSC = 3,如此繼續(xù)。從而,如圖3 所示例,塊O和I的頁(yè)以交織的形式進(jìn)行編程,其中,WSC值可以表明這些頁(yè)被編程的順序。 盡管圖3示例了兩個(gè)塊同時(shí)打開(kāi)進(jìn)行編程的情況,本領(lǐng)域技術(shù)人員可以理解任何數(shù)目的兩 個(gè)或更多個(gè)塊可以同時(shí)打開(kāi)進(jìn)行編程并以這種方式交織。
在一些實(shí)施例中,WSC可以在某些數(shù)目的寫(xiě)循環(huán)之后翻轉(zhuǎn)。例如,WSC可以在 100,000,000個(gè)寫(xiě)循環(huán)之后重置回WSC = O。如果存在翻轉(zhuǎn),那么NVM上可能存在可以檢測(cè) 大的缺口并推斷出較小值的計(jì)數(shù)器實(shí)際上大于較大計(jì)數(shù)器值的各種算法。在一些實(shí)施例 中,WSC計(jì)數(shù)器可以被設(shè)置為大小足夠大以致于在NVM的額定生命周期內(nèi)不翻轉(zhuǎn)。而且,WSC 對(duì)于正在寫(xiě)入的數(shù)據(jù)可以是公正的。例如,WSC可以繼續(xù)增加并分配其當(dāng)前值到目前正在 被編程的頁(yè)的元數(shù)據(jù),而不考慮該頁(yè)正在寫(xiě)入的是新數(shù)據(jù)還是舊數(shù)據(jù)。
在一些實(shí)施例中,WSC可以有助于各NVM操作的性能。例如,可以在NVM系統(tǒng)的回 滾期間使用WSC。在NVM的非正常關(guān)機(jī)之后,NVM系統(tǒng)(例如,NVM系統(tǒng)的一個(gè)或多個(gè)組件, 比如圖1中的NVM接口 118或圖2中的NVM接口 218)可以試圖在由文件系統(tǒng)(例如圖2 的文件系統(tǒng)210)使用的邏輯地址和NVM (例如圖2的NVM220)的物理地址之間重建邏輯到 物理映射表。然而,非正常關(guān)機(jī)可導(dǎo)致數(shù)據(jù)的各個(gè)頁(yè)變成無(wú)效的。通常,當(dāng)一個(gè)頁(yè)變?yōu)闊o(wú)效 時(shí),假設(shè)其后編程的所有頁(yè)也是無(wú)效的,因?yàn)槠潢P(guān)于文件系統(tǒng)和數(shù)據(jù)庫(kù)摘要期望是不連貫 的。NVM系統(tǒng)應(yīng)該優(yōu)選僅僅使用在這種損壞發(fā)生之前存在的有效數(shù)據(jù)重建邏輯到物理映射 表。換句話(huà)說(shuō),NVM系統(tǒng)應(yīng)該“回滾”系統(tǒng)到數(shù)據(jù)仍然是無(wú)差錯(cuò)的穩(wěn)定時(shí)間點(diǎn)。
WSC可以幫助確定如何適合地回滾NVM系統(tǒng)。具體地,由于編程頁(yè)的交織性質(zhì),僅 僅以連續(xù)的方式回滾單一塊到損壞的頁(yè)是不夠的。反而,為了將系統(tǒng)正確地返回到無(wú)差錯(cuò) 狀態(tài),若干塊可能需要同時(shí)回滾。WSC可以幫助確定如何回滾這些交織的塊中的每一個(gè)。例 如,圖4顯示了 NVM系統(tǒng)400的功能視圖,其中,由于非正常關(guān)機(jī),頁(yè)已經(jīng)被損壞。盡管圖4 僅示例了 NVM系統(tǒng)400的兩個(gè)塊,但本領(lǐng)域技術(shù)人員可以領(lǐng)會(huì)這種示例可以被推測(cè)到包括 兩個(gè)或更多塊的任何適合的數(shù)目
如圖4中的WSC值所表明的,塊O和I的頁(yè)已經(jīng)以交織的方式進(jìn)行編程。然而,由 于NVM系統(tǒng)400的非正常關(guān)機(jī),塊O的頁(yè)3被損壞并且此時(shí)是無(wú)效的或不可校正的(例如, 由符號(hào)“X”表明)。NVM系統(tǒng)400 (例如,NVM系統(tǒng)400的一個(gè)或多個(gè)組件,比如圖1中的NVM 接口 118或圖2中的NVM接口 218)可以發(fā)現(xiàn)這個(gè)損壞頁(yè),例如,當(dāng)在重建NVM系統(tǒng)400的 邏輯到物理映射表期間檢查塊O的時(shí)候。在塊O內(nèi),頁(yè)0-2定位在頁(yè)3之前,從而NVM系統(tǒng) 400可以確定頁(yè)0-2可能是無(wú)差錯(cuò)的(例如,由于它們定位在損壞發(fā)生之前)。類(lèi)似地,NVM 系統(tǒng)400可以確定塊O的頁(yè)4可能是損壞的,因?yàn)槠涠ㄎ辉趽p壞頁(yè)3之后(例如,由于在損 壞頁(yè)之后編程的任何頁(yè)都通??赡鼙粨p壞)。然而,為了確定其他塊(例如塊I)的哪些頁(yè) 是無(wú)差錯(cuò)的以及哪些頁(yè)是被損壞的,NVM系統(tǒng)400可以依賴(lài)于檢查NVM頁(yè)的WSC值。
例如,NVM系統(tǒng)400可以檢查塊O中的頁(yè)的元數(shù)據(jù)(例如,頁(yè)0_2,其可能是連貫的, 因?yàn)樗鼈兌ㄎ辉趽p壞頁(yè)3之前)以確定它們與WSC = 1,2和5相關(guān)聯(lián)。NVM系統(tǒng)400然后 可以檢查塊I中的頁(yè)的元數(shù)據(jù)以確定頁(yè)0-2與WSC = 3,4和6相關(guān)聯(lián)。由于所有這些頁(yè)在 WSC值沒(méi)有發(fā)生任何缺口(例如,WSC值從O到6在順序上沒(méi)有任何缺口)時(shí)出現(xiàn),所以NVM 系統(tǒng)400可以確定所有的這些頁(yè)都可能是連貫的。然而,在編織序列計(jì)數(shù)器中可檢測(cè)的下 一個(gè)值是WSC = 8,與塊O的頁(yè)8相關(guān)聯(lián)。由于沒(méi)有檢測(cè)到WSC = 7,因而導(dǎo)致了編織序列計(jì)數(shù)器中的缺口,NVM系統(tǒng)400可以確定WSC = 7是與損壞的塊0的頁(yè)3相關(guān)聯(lián)的WSC值。NVM系統(tǒng)400然后可以確定NVM中任何與大于7的WSC值相關(guān)聯(lián)的頁(yè)都可能是損壞的。換句話(huà)說(shuō),塊0的頁(yè)4 (與WSC = 8相關(guān)聯(lián))和塊I的頁(yè)3-4 (與WSC = 9和10相關(guān)聯(lián))可能被損壞。以這種方式,通過(guò)在編織序列計(jì)數(shù)器中定位缺口,NVM系統(tǒng)可以識(shí)別由非正常關(guān)機(jī)引起的損壞可能從該頁(yè)開(kāi)始的損壞的頁(yè)。NVM系統(tǒng)然后可以通過(guò)忽視相關(guān)聯(lián)的WSC值大于損壞頁(yè)的WSC值的任何頁(yè)來(lái)回滾系統(tǒng)。例如,可以在重建NVM系統(tǒng)的邏輯到物理映射表期間忽略這些頁(yè)。圖5顯示了示例NVM系統(tǒng)以這種方式回滾的過(guò)程500。過(guò)程500可以由NVM系統(tǒng)的任何適合的組件執(zhí)行,該組件比如是NVM接口(例如,圖1的NVM接口 118)或者適合的控制電路(例如,圖1的SoC控制電路112)。過(guò)程500可以從步驟502開(kāi)始。在步驟504,NVM系統(tǒng)可以檢查NVM的頁(yè)。在步驟506,NVM系統(tǒng)接著確定在步驟504檢查的頁(yè)是否有效。響應(yīng)于該頁(yè)是有效的(例如,該頁(yè)是無(wú)差錯(cuò)的),過(guò)程500可以在步驟508繼續(xù)到NVM系統(tǒng)的下一頁(yè)。取決于NVM的特定布局,該下一頁(yè),例如,可以是相同塊中的頁(yè)或不同塊中的頁(yè)。過(guò)程500然后繼續(xù)循環(huán)通過(guò)步驟504、506和508以檢查NVM系統(tǒng)的頁(yè)直到識(shí)別出損壞的頁(yè)。當(dāng)在步驟506發(fā)現(xiàn)無(wú)效的頁(yè)時(shí),過(guò)程500可以繼續(xù)到步驟510。NVM系統(tǒng)接著讀取NVM中的頁(yè)的元數(shù)據(jù)以確定WSC序列中的缺口。從而該WSC缺口值可能對(duì)應(yīng)于在步驟506識(shí)別的無(wú)效頁(yè)的WSC值。在步驟508,過(guò)程500然后可以通過(guò)忽略與大于該WSC缺口值的WSC值相關(guān)聯(lián)的任何頁(yè)回滾NVM系統(tǒng)。例如,這樣的頁(yè)可以被認(rèn)為是不連貫的并且在重建NVM系統(tǒng)的邏輯到物理映射表期間被忽略。過(guò)程500然后在步驟514結(jié)束。當(dāng)在重啟操作期間重建邏輯到物理映射表時(shí),保持了時(shí)序上的連貫性。在一些情況下,映射表可以通過(guò)以WSC值升序的方式順序檢查頁(yè)來(lái)進(jìn)行重建。通常,頁(yè)包括其相關(guān)聯(lián)的存儲(chǔ)在其元數(shù)據(jù)中的邏輯地址。從而邏輯到物理映射表可以通過(guò)檢查這些元數(shù)據(jù)進(jìn)行重建。然而,偶爾地,頁(yè)可以包括將該頁(yè)關(guān)聯(lián)到錯(cuò)誤的邏輯地址的錯(cuò)誤的或過(guò)時(shí)的元數(shù)據(jù)。如示例,與LBA X相關(guān)聯(lián)的數(shù)據(jù)可以被編程到頁(yè)A。在之后的時(shí)間點(diǎn),與LBA X相關(guān)聯(lián)的新數(shù)據(jù)可以被編程到可能定位于不同的塊或超級(jí)塊上的頁(yè)B。然而,頁(yè)A的元數(shù)據(jù)永遠(yuǎn)不被更新以反映這個(gè)改變的邏輯尋址,因此頁(yè)A的元數(shù)據(jù)過(guò)時(shí)且錯(cuò)誤地表明其仍然與LBA X相關(guān)聯(lián)。因此,如果兩個(gè)頁(yè)與相同的邏輯地址相關(guān)聯(lián),則可以假設(shè)具有較高WSC值的頁(yè)是具有最新用戶(hù)數(shù)據(jù)和正確邏輯地址映射的頁(yè)。因此,通過(guò)檢查頁(yè)的WSC值,可以恢復(fù)特定LBA的最新版本。邏輯到物理映射表可以通過(guò)在NVM的一個(gè)或多個(gè)頁(yè)的重放中跟隨WSC序列以時(shí)序順序重建。作為一個(gè)示例場(chǎng)景,與WSC= I相關(guān)聯(lián)的頁(yè)可以表明其與LBA X相關(guān)聯(lián)。邏輯到物理映射表可以被更新以包括該信息。然而,當(dāng)?shù)竭_(dá)與WSC= 12相關(guān)聯(lián)的頁(yè)時(shí),NVM系統(tǒng)可以識(shí)別出該頁(yè)的元數(shù)據(jù)也表明其與LBA X相關(guān)聯(lián)。NVM系統(tǒng)可以假設(shè)該頁(yè)在之后的時(shí)間點(diǎn)寫(xiě)入,從而具有更新的邏輯地址映射。因此,WSC = 12的頁(yè)覆蓋之前的頁(yè),并且邏輯到物理映射表可以被更新以表明WSC = 12的頁(yè)與LBA X相關(guān)聯(lián)。這在為具有多個(gè)寫(xiě)入流(例如動(dòng)態(tài)和靜態(tài)的寫(xiě)入流)的系統(tǒng)保持連貫的時(shí)間線(xiàn)方面尤其重要。除了在元數(shù)據(jù)中存儲(chǔ)WSC值以外,主編織序列計(jì)數(shù)器(HWSC)值也可以存儲(chǔ)在NVM的每個(gè)頁(yè)的元數(shù)據(jù)中。類(lèi)似于WSC值,HWSC值可以是順序的。然而,正如下面更詳細(xì)解釋的,HWSC可能不必須增加。每次新數(shù)據(jù)被最初編程到NVM的頁(yè)(例如,而不是為了耗損均 衡等目的被移動(dòng)或重新編程)時(shí),該頁(yè)可以被分配一個(gè)HWSC值。不像每次舊數(shù)據(jù)被移動(dòng)到 新的頁(yè)就可改變的WSC,分配到特定數(shù)據(jù)組的HWSC可能永遠(yuǎn)不變。反而,特定數(shù)據(jù)組可以在 NVM生命進(jìn)程期間自始至終保持相同的HWSC值。換句話(huà)說(shuō),由于HWSC值是順序的,它們可 以表明文件的關(guān)于何時(shí)該文件最初被保存到NVM中的一般“年齡”。例如,HWSC可以表明歌 曲文件何時(shí)被首次下載到便攜媒體播放器。
將要分配到頁(yè)的特定的HWSC值可以通過(guò)將當(dāng)前的WSC值等化到該頁(yè)的HWSC值而 確定。作為一個(gè)示例場(chǎng)景,假設(shè)新歌曲文件A存儲(chǔ)在頁(yè)X。當(dāng)前WSC是23,從而頁(yè)X被分配 WSC = 23以及HWSC = 23。損均衡過(guò)程之后,WSC目前等于50。此時(shí),另一新歌曲文件B被 存儲(chǔ)在頁(yè)Y,從而頁(yè)Y被分配WSC = 50且HWSC = 50 (從而,分配到新數(shù)據(jù)的HWSC值可以 是順序的,盡管沒(méi)有必要是增加的)。在之后的時(shí)間點(diǎn),當(dāng)當(dāng)前WSC值是目前的82時(shí),與歌 曲文件A相關(guān)聯(lián)的數(shù)據(jù)被移動(dòng)到頁(yè)Z (例如,為了耗損均衡、垃圾收集等等移動(dòng)數(shù)據(jù))。頁(yè)Z 被分配新的WSC = 82并保持舊的HWSC = 23。因此,盡管與歌曲文件A相關(guān)聯(lián)的數(shù)據(jù)已經(jīng) 在NVM內(nèi)重新編程,但是由于其具有較低的HWSC值,系統(tǒng)仍然可以確定歌曲文件A比歌曲 文件B “舊”。換句話(huà)說(shuō),HWSC可以表示,例如,當(dāng)文件或其他數(shù)據(jù)被首次編程到NVM時(shí)的相 對(duì)“時(shí)間戳”。
在一些實(shí)施例中,HWSC可以幫助NVM系統(tǒng)確定頁(yè)的靜態(tài)與動(dòng)態(tài)的狀態(tài)。如此處使 用的,術(shù)語(yǔ)“動(dòng)態(tài)數(shù)據(jù)”可以指更新或擦除并相對(duì)頻繁地重新編程的數(shù)據(jù)。作為示例,動(dòng)態(tài)數(shù) 據(jù)可以包括與天氣預(yù)報(bào)程序相關(guān)聯(lián)的數(shù)據(jù)一這種數(shù)據(jù)可以頻繁地更新以反映目前的天氣 情況。另一方面,如此處使用的,術(shù)語(yǔ)“靜態(tài)數(shù)據(jù)”可以指在相對(duì)長(zhǎng)的時(shí)間周期內(nèi)保持恒定且 不變的數(shù)據(jù)。作為示例,靜態(tài)數(shù)據(jù)可以包括存儲(chǔ)在便攜媒體播放器設(shè)備中的歌曲文件(例 如,.mp3文件)。這種數(shù)據(jù)在NVM生命的自始至終可以通常保持不變。類(lèi)似地,術(shù)語(yǔ)“動(dòng)態(tài) 頁(yè)”和“靜態(tài)頁(yè)”分別是指存儲(chǔ)儲(chǔ)動(dòng)態(tài)和靜態(tài)數(shù)據(jù)的NVM的頁(yè)。
特別的,如上所述,HWSC可以提供頁(yè)內(nèi)存儲(chǔ)的數(shù)據(jù)年齡的概要。當(dāng)數(shù)據(jù)較年長(zhǎng)時(shí), 該數(shù)據(jù)更可能是靜態(tài)的(例如,由于動(dòng)態(tài)數(shù)據(jù)在被擦除之前通常僅僅存在相對(duì)短的時(shí)間 段,因此不能達(dá)到“老的”年齡)。正如下面更加詳細(xì)描述的,這種靜態(tài)與動(dòng)態(tài)的確定對(duì)于執(zhí) 行各種NVM系統(tǒng)操作(諸如耗損均衡或垃圾收集)可以是有用的。
為了確定頁(yè)內(nèi)存儲(chǔ)的數(shù)據(jù)的一般年齡,可以計(jì)算該頁(yè)的當(dāng)前WSC值和HWSC值之間 的差值。如果該差值大于預(yù)先確定的閾值,則存儲(chǔ)在該頁(yè)中的數(shù)據(jù)可以被認(rèn)為是靜態(tài)的。 如果該差值小于該閾值,則該數(shù)據(jù)的狀態(tài)可以,例如,被認(rèn)為是動(dòng)態(tài)數(shù)據(jù)、最近存儲(chǔ)的新數(shù) 據(jù)、或未知(例如,由于可能不知道這是動(dòng)態(tài)數(shù)據(jù)還是僅僅是最近存儲(chǔ)的新靜態(tài)數(shù)據(jù))。
除了使用HWSC值或代替使用HWSC值,各種其他技術(shù)可以用于確定數(shù)據(jù)的靜態(tài)與 動(dòng)態(tài)狀態(tài)。例如,可以檢查特定數(shù)據(jù)組的“文件大小”。在一些情況下,這可以包括確定特定 文件存儲(chǔ)使用了多少頁(yè)。文件大小越大,則該文件越可能是靜態(tài)的。例如,NVM系統(tǒng)可以確 定任何具有大于10頁(yè)(例如,或大于任何其他預(yù)先確定的文件大小)的大小的文件是靜態(tài) 的。作為另一個(gè)例子,NVM系統(tǒng)可以確定編程一個(gè)文件到NVM用了多少時(shí)間。編程該文件 所用的時(shí)間的量越大,這個(gè)文件越可能是靜態(tài)的(例如,由于大文件可能花費(fèi)大量的時(shí)間 用于編程)。還作為另一個(gè)例子,可以監(jiān)視各種系統(tǒng)啟發(fā)以確定NVM系統(tǒng)在文件的編程期間 的行為。在這種情況下,當(dāng)NVM系統(tǒng)投入相對(duì)大量的時(shí)間和努力來(lái)編程一個(gè)文件時(shí),這個(gè)文件更可能是靜態(tài)的(例如,由于較大的文件可能需要更多的時(shí)間和努力來(lái)編程)。圖6顯示了用于確定NVM系統(tǒng)的頁(yè)的靜態(tài)與動(dòng)態(tài)狀態(tài)的過(guò)程600。過(guò)程600在步驟602開(kāi)始。在步驟604可以確定一個(gè)閾值。例如,該閾值可以是NVM系統(tǒng)內(nèi)之前存儲(chǔ)的預(yù)先確定的值。在步驟606,可以確定與感興趣的頁(yè)相關(guān)聯(lián)的HWSC值。例如,HWSC值可以從感興趣的頁(yè)的元數(shù)據(jù)中讀取。在步驟608,可以確定當(dāng)前的WSC值。然后在步驟610,可以計(jì)算HWSC值和當(dāng)前WSC值之間的差值。在步驟612,接著將該差值與在步驟604確定的閾值相比較。響應(yīng)于該差值大于閾值,過(guò)程600繼續(xù)到步驟614,并且感興趣的頁(yè)可以被識(shí)別為靜態(tài)頁(yè)。換句話(huà)說(shuō),由于感興趣的頁(yè)的“年齡”足夠大,因此認(rèn)為該頁(yè)很可能是靜態(tài)頁(yè)。然而,響應(yīng)于在步驟612該差值不大于閾值,過(guò)程600可以替代地繼續(xù)到步驟616。在步驟616,可以得出若干結(jié)論中的一個(gè)。例如,由于感興趣的頁(yè)的年齡相對(duì)小,因此過(guò)程600可以確定該頁(yè)是動(dòng)態(tài)頁(yè)。作為另一個(gè)例子,過(guò)程600可以確定感興趣的頁(yè)僅僅包含最近存儲(chǔ)的新數(shù)據(jù)(例如,其可能是或不是動(dòng)態(tài)數(shù)據(jù))。作為另一個(gè)例子,過(guò)程600可以認(rèn)為該頁(yè)的狀態(tài)是“未知”的。換句話(huà)說(shuō),可能不知道感興趣的頁(yè)是動(dòng)態(tài)頁(yè)還是僅僅是最近存儲(chǔ)的靜態(tài)頁(yè)。在一些實(shí)施例中,不是繼續(xù)到步驟614或步驟616,而是過(guò)程600在步驟612中比較差值和閾值之后繼續(xù)到可選擇步驟618、620、622和624。在這種情況下,不是僅基于HWSC的檢查來(lái)進(jìn)行靜態(tài)與動(dòng)態(tài)確定,過(guò)程600可以在步驟618、620、622和/或624共同地使用一個(gè)或多個(gè)計(jì)算以做出靜態(tài)與動(dòng)態(tài)確定。例如,在步驟618,可以確定與感興趣的頁(yè)相關(guān)聯(lián)的整個(gè)文件的大小。在一些情況下,該步驟可以包含識(shí)別用于存儲(chǔ)整個(gè)文件的頁(yè)數(shù)。如上所述,大文件大小可以表明該文件是靜態(tài)的。作為另一個(gè)例子,在步驟620,可以確定寫(xiě)與感興趣的頁(yè)相關(guān)聯(lián)的整個(gè)文件所需的時(shí)間。類(lèi)似于步驟618,較長(zhǎng)的寫(xiě)時(shí)間可以表明該文件是靜態(tài)的。作為另外一個(gè)例子,在步驟622,可以識(shí)別與整個(gè)文件相關(guān)的各種系統(tǒng)啟發(fā)(例如,用于寫(xiě)整個(gè)文件的時(shí)間和努力)。在步驟624,可以接著基于在步驟612、618、620和622中的一個(gè)或多個(gè)所確定的信息來(lái)做出靜態(tài)與動(dòng)態(tài)確定。在一些實(shí)施例中,比如由圖6的過(guò)程600所示例的靜態(tài)與動(dòng)態(tài)確定可以幫助NVM系統(tǒng)執(zhí)行諸如耗損均衡和垃圾收集的維護(hù)操作。在耗損均衡期間,為了嘗試和維護(hù)NVM的所有塊的均衡耗損,可以在NVM內(nèi)移動(dòng)用戶(hù)數(shù)據(jù)。例如,靜態(tài)數(shù)據(jù)可以被移動(dòng)到高循環(huán)塊(例如,已經(jīng)擦除并編程了相對(duì)大量次數(shù)的塊),并且動(dòng)態(tài)數(shù)據(jù)可以被移動(dòng)到低循環(huán)塊(例如,僅僅擦除并編程了相對(duì)少量次數(shù)的塊)。通常,耗損均衡可以按特定時(shí)間間隔執(zhí)行,例如當(dāng)NVM系統(tǒng)不忙并且因此可能不會(huì)被耗損均衡操作的另外處理要求造成負(fù)面影響的時(shí)候。該系統(tǒng)可以使用垃圾收集處理,以通過(guò)將有效數(shù)據(jù)從編程的塊移動(dòng)到一個(gè)或多個(gè)擦除的塊來(lái)釋放空間,通常,垃圾收集處理可以在可用存儲(chǔ)器低或其他任何需要釋放存儲(chǔ)器空間的時(shí)候觸發(fā)。由于HWSC值可以用于以逐頁(yè)地確定靜態(tài)與動(dòng)態(tài)狀態(tài),因此HWSC還可以允許維護(hù)操作(例如耗損平衡和垃圾收集),以逐頁(yè)檢查和分割數(shù)據(jù)。這比僅僅逐塊或逐超級(jí)塊分割或檢查數(shù)據(jù)的其他系統(tǒng)有優(yōu)勢(shì)。作為示例,圖7顯示了示例性的NVM系統(tǒng)700,其中,為了損耗均衡操作(例如,或?yàn)榱死占蛘呷魏纹渌m合的操作)數(shù)據(jù)逐頁(yè)被分割。
如圖7所示,NVM系統(tǒng)700可以包括具有頁(yè)0_5的塊710。NVM系統(tǒng)700還可以包 括至少一個(gè)高循環(huán)塊720和至少一個(gè)低循環(huán)塊730。例如,高循環(huán)塊720可以是之前經(jīng)歷了 相對(duì)大量的寫(xiě)/擦除循環(huán)的塊,而低循環(huán)塊730可以是經(jīng)歷了相對(duì)少量的寫(xiě)/擦除循環(huán)的 塊。
基于適合的靜態(tài)與動(dòng)態(tài)確定過(guò)程(例如,圖6的過(guò)程600),塊710的每個(gè)頁(yè)可以被 單獨(dú)地檢查。被識(shí)別為靜態(tài)頁(yè)的頁(yè)可以重編程到高循環(huán)塊720,并且被識(shí)別為動(dòng)態(tài)頁(yè)的頁(yè)可 以重編程到低循環(huán)塊730。例如,圖7示例了頁(yè)0、1和3被識(shí)別為靜態(tài)頁(yè)并且因此被重寫(xiě)到 高循環(huán)塊720。類(lèi)似地,圖7示例了頁(yè)2、4和5被識(shí)別為動(dòng)態(tài)頁(yè)并且因此被重寫(xiě)到低循環(huán)塊 730。這樣的逐頁(yè)分割數(shù)據(jù)的系統(tǒng)可以提供增強(qiáng)的準(zhǔn)確性,并且比僅僅逐塊分割數(shù)據(jù)的系統(tǒng) 具有益處。
圖8顯示了用于逐頁(yè)分割數(shù)據(jù)的過(guò)程800。例如,過(guò)程800可以用于在耗損均衡操 作期間,垃圾收集操作期間或在NVM系統(tǒng)的其他適合的操作期間分割數(shù)據(jù)。
過(guò)程800可以在步驟802開(kāi)始。在步驟804,檢查NVM系統(tǒng)的頁(yè)以確定其靜態(tài)與動(dòng) 態(tài)狀態(tài)。例如,可以檢查該頁(yè)的HWSC值,可以檢查與該頁(yè)相關(guān)聯(lián)的文件的大小,可以檢查寫(xiě) 與該頁(yè)相關(guān)聯(lián)的文件所花費(fèi)的時(shí)間量,可以檢查與該頁(yè)相關(guān)的任何系統(tǒng)啟發(fā),或上述的任 何組合。在步驟806,過(guò)程800可以基于在步驟804獲得的信息來(lái)確定該頁(yè)是否是靜態(tài)的。 例如,HWSC值和當(dāng)前WSC值之間的差值可以與閾值比較。如果該差值大于閾值,則該頁(yè)可 被識(shí)別為靜態(tài)頁(yè)。
響應(yīng)于該頁(yè)在步驟806被識(shí)別為是靜態(tài)的,過(guò)程800可以繼續(xù)到步驟808。在步驟 808,該頁(yè)被可被移動(dòng)(例如,編程)到高循環(huán)塊。過(guò)程800然后在步驟810繼續(xù)到NVM系 統(tǒng)的下一頁(yè)。為了定位靜態(tài)頁(yè)并將其移動(dòng)到適合的高循環(huán)塊,步驟804、806、808和810可 以接著繼續(xù)循環(huán)。
在一些實(shí)施例中,響應(yīng)于在步驟806該頁(yè)沒(méi)有被識(shí)別為是靜態(tài)的,過(guò)程800可以繼 續(xù)到可選擇步驟812。在這種情況下,該頁(yè)可以被移動(dòng)到低循環(huán)塊。例如,可選擇步驟812 可發(fā)生在該頁(yè)已經(jīng)被識(shí)別為動(dòng)態(tài)頁(yè)的場(chǎng)景(例如,或者該頁(yè)可能是動(dòng)態(tài)頁(yè)的候選)??梢?在,例如,數(shù)據(jù)的靜態(tài)與動(dòng)態(tài)狀態(tài)未知的情況下省去可選擇步驟812。作為示例,這可以發(fā)生 在HWSC值和WSC值之間的差值小于閾值,并且不知道這表明數(shù)據(jù)是動(dòng)態(tài)的還是僅僅是最近 保存的新靜態(tài)數(shù)據(jù)的情況下。
應(yīng)該理解圖5、6和8的過(guò)程500、600和800可以由系統(tǒng)(例如,圖1的電子設(shè)備 100或圖2的電子設(shè)備200)中的一個(gè)或多個(gè)組件執(zhí)行。例如,過(guò)程中的至少一些步驟可以 由NVM接口(例如,圖1的NVM接口 118或圖2的NVM接口 218)執(zhí)行。本領(lǐng)域技術(shù)人員將 領(lǐng)會(huì)這些步驟中的一個(gè)或多個(gè)可以由控制電路(例如,圖1的SoC控制電路112)執(zhí)行。
進(jìn)一步,應(yīng)該理解圖5、6和8的過(guò)程500、600和800僅僅是示例性的。不脫離本 發(fā)明的范圍的情況下,任何這些步驟都可以被移除、修改或組合,并且可以加入任何另外的 步驟。
圖9顯示了根據(jù)本發(fā)明實(shí)施例的用于訪(fǎng)問(wèn)非易失性存儲(chǔ)器(NVM)的NVM接口 900。 NVM接口 900包括識(shí)別單元91,用于識(shí)別將要編程到NVM中的特定數(shù)據(jù)組;確定單元92, 用于確定當(dāng)前的編織序列計(jì)數(shù)器(WSC)的值,其中,WSC表明NVM內(nèi)的頁(yè)被編程的順序;第 一指示單元93,用于指示要該特定數(shù)據(jù)組編程到NVM的特定頁(yè);第二指示單元94,用于指示W(wǎng)SC的當(dāng)前值存儲(chǔ)到特定頁(yè)的元數(shù)據(jù)中;以及增加單元95,用于順序地增加WSC的當(dāng)前值到
下一值。存儲(chǔ)器接口 900優(yōu)選進(jìn)一步包括重建單元96,用于通過(guò)跟隨NVM的每個(gè)頁(yè)的WSC值以時(shí)序順序檢查NVM的每個(gè)頁(yè)來(lái)重建NVM的邏輯到物理映射表。存儲(chǔ)器接口 900優(yōu)選進(jìn)一步包括執(zhí)行單元97,用于通過(guò)以下操作在NVM上執(zhí)行回滾操作識(shí)別包含不連貫數(shù)據(jù)的NVM的損壞頁(yè);確定與該損壞頁(yè)相關(guān)聯(lián)的WSC值;以及忽略相關(guān)聯(lián)的WSC值大于與該損壞頁(yè)相關(guān)聯(lián)WSC值的任何頁(yè)。忽略任何頁(yè)包括在重建NVM的邏輯到物理映射表期間忽略該任何頁(yè)。存儲(chǔ)器接口 900優(yōu)選進(jìn)一步包括第三指示單元98,用于指示主編織序列計(jì)數(shù)器(HWSC)存儲(chǔ)到該特定頁(yè)的元數(shù)據(jù)中;設(shè)置單元99,用于響應(yīng)于該特定數(shù)據(jù)組為最初編程到NVM中的新數(shù)據(jù)而設(shè)置HWSC的值等于WSC的當(dāng)前值,并且響應(yīng)于該特定數(shù)據(jù)組是從不同的頁(yè)移動(dòng)的舊數(shù)據(jù)而設(shè)置HWSC的值等于與該不同的頁(yè)相關(guān)聯(lián)的之前的HWSC值。圖10顯示了根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于編織非易失性存儲(chǔ)器(NVM)的頁(yè)的編程的存儲(chǔ)器接口 1000。該存儲(chǔ)器接口包括識(shí)別單元101,用于識(shí)別編織序列計(jì)數(shù)器(WSC)的當(dāng)前值,其中,WSC表明NVM的每個(gè)頁(yè)被編程的順序;編程單元102,用于使用第一用戶(hù)數(shù)據(jù)組編程N(yùn)VM的第一個(gè)塊的第一頁(yè);關(guān)聯(lián)單元103,用于關(guān)聯(lián)第一頁(yè)和WSC的當(dāng)前值;以及增加單元104,用于順序地增加WSC為增加的WSC值。編程單元102優(yōu)選地進(jìn)一步被配置用于使用第二用戶(hù)數(shù)據(jù)組編程N(yùn)VM的第二個(gè)塊的第二頁(yè);并且關(guān)聯(lián)單元103被進(jìn)一步配置用于關(guān)聯(lián)第二頁(yè)和該增加的WSC值。關(guān)聯(lián)單元103優(yōu)選地進(jìn)一步被配置用于編程WSC的當(dāng)前值到第一頁(yè)的元數(shù)據(jù)中。存儲(chǔ)器接口 1000優(yōu)選地進(jìn)一步包括第一確定單元105,用于確定第一數(shù)據(jù)組是最初存儲(chǔ)到NVM中的新數(shù)據(jù);以及該關(guān)聯(lián)單元103被配置用于,響應(yīng)于該確定單元,關(guān)聯(lián)第一頁(yè)和主編織序列計(jì)數(shù)器(HWSC)值,其中,HWSC值等于WSC的當(dāng)前值。該關(guān)聯(lián)單元優(yōu)選地進(jìn)一步被配置用于編程HWSC值到第一頁(yè)的元數(shù)據(jù)中。存儲(chǔ)器接口 1000優(yōu)選地進(jìn)一步包括第二確定單元106,用于確定第一數(shù)據(jù)組是從NVM中的不同頁(yè)移動(dòng)到第一頁(yè)的舊數(shù)據(jù);以及該關(guān)聯(lián)單元103被配置用于,響應(yīng)于該用于確定的裝置,關(guān)聯(lián)第一頁(yè)和主編織序列計(jì)數(shù)器(HWSC)值,其中,HWSC值等于該不同頁(yè)的HWSC 值。增加單元104進(jìn)一步被配置用于在不翻轉(zhuǎn)的情況下增加WSC的當(dāng)前值,以致于WSC在NVM的整個(gè)生命內(nèi)繼續(xù)增加到更高的值。增加單元104進(jìn)一步被配置用于在翻轉(zhuǎn)的情況下增加WSC的當(dāng)前值,以致于WSC值在預(yù)定數(shù)目的寫(xiě)循環(huán)之后翻轉(zhuǎn)為零。圖11顯示了根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于耗損均衡非易失性存儲(chǔ)器(NVM)系統(tǒng)的存儲(chǔ)器接口 1100。該存儲(chǔ)器接口 1100包括第一識(shí)別單元111,用于識(shí)別當(dāng)前的編織序列計(jì)數(shù)器(WSC)值,其中,WSC值表明NVM內(nèi)的頁(yè)編程的順序;第二識(shí)別單元112,用于識(shí)別NVM的特定頁(yè)的主編織序列計(jì)數(shù)器(HWSC)值,其中,HWSC值表明特定頁(yè)中的數(shù)據(jù)何時(shí)被最初保存到NVM中;計(jì)算單元113,用于計(jì)算當(dāng)前WSC值和HWSC值之間的差值;以及確定單元114,用于至少部分基于該計(jì)算的差值確定該特定頁(yè)是適合移動(dòng)到高循環(huán)塊的靜態(tài)頁(yè)。確定單元114進(jìn)一步被配置用于比較該計(jì)算的差值和預(yù)先確定的閾值;確定該差值大于該閾值;并響應(yīng)于確定該差值大于該閾值,識(shí)別該特定頁(yè)為靜態(tài)頁(yè)。
存儲(chǔ)器接口 1100進(jìn)一步包括前進(jìn)和重復(fù)單元115,用于前進(jìn)到NVM的下一頁(yè)并 為下一頁(yè)重復(fù)識(shí)別當(dāng)前WSC值、識(shí)別HWSC、并進(jìn)行計(jì)算和確定。
存儲(chǔ)器接口 1100進(jìn)一步包括第一移動(dòng)單元116,用于移動(dòng)特定頁(yè)的數(shù)據(jù)到高循 環(huán)塊的新的頁(yè);以及第一關(guān)聯(lián)單元117,用于關(guān)聯(lián)該特定頁(yè)的HWSC值和該新的頁(yè)。
存儲(chǔ)器接口 1100進(jìn)一步包括第二移動(dòng)單元118,用于移動(dòng)特定頁(yè)的數(shù)據(jù)到高循 環(huán)塊的新的頁(yè);以及第二關(guān)聯(lián)單元119,用于關(guān)聯(lián)當(dāng)前WSC值和該新的頁(yè)的WSC值。
特定頁(yè)是靜態(tài)頁(yè)的確定進(jìn)一步基于至少以下之一該特定頁(yè)相關(guān)聯(lián)的文件大小、; 寫(xiě)與該特定頁(yè)相關(guān)聯(lián)的文件花費(fèi)的時(shí)間量;以及與該特定頁(yè)相關(guān)聯(lián)的文件相關(guān)的系統(tǒng)啟 發(fā)。
靜態(tài)頁(yè)包括了包含在相對(duì)長(zhǎng)的時(shí)間段內(nèi)保持不變的數(shù)據(jù)的頁(yè)。
所描述的本發(fā)明的實(shí)施例以示例而非限制性的目的進(jìn)行提出。
權(quán)利要求
1.一種用于編織非易失性存儲(chǔ)器(NVM)的頁(yè)的編程的方法,該方法包括識(shí)別編織序列計(jì)數(shù)器(WSC)的當(dāng)前值,其中,WSC標(biāo)識(shí)其中NVM的每個(gè)頁(yè)被編程的序列;用第一用戶(hù)數(shù)據(jù)組編程N(yùn)VM的第一塊的第一頁(yè);關(guān)聯(lián)第一頁(yè)和WSC的當(dāng)前值;以及順序地增加WSC到增加的WSC值。
2.如權(quán)利要求1所述的方法,進(jìn)一步包括用第二用戶(hù)數(shù)據(jù)組編程N(yùn)VM的第二塊的第二頁(yè);以及關(guān)聯(lián)第二頁(yè)和所述增加的WSC值。
3.如權(quán)利要求1或2所述的方法,其中,所述關(guān)聯(lián)包括編程WSC的當(dāng)前值到第一頁(yè)的元數(shù)據(jù)中。
4.如權(quán)利要求1或2所述的方法,進(jìn)一步包括確定第一數(shù)據(jù)組是最初存儲(chǔ)在NVM中的新數(shù)據(jù);以及響應(yīng)于確定第一數(shù)據(jù)組是最初存儲(chǔ)在NVM中的新數(shù)據(jù),關(guān)聯(lián)第一頁(yè)和主編織序列計(jì)數(shù)器(HWSC)值,其中所述HWSC值等于WSC的當(dāng)前值。
5.如權(quán)利要求4所述的方法,其中,所述關(guān)聯(lián)第一頁(yè)和HWSC值包括編程HWSC值到第一頁(yè)的元數(shù)據(jù)中。
6.如權(quán)利要求1或2所述的方法,進(jìn)一步包括確定所述第一數(shù)據(jù)組是從NVM中一不同頁(yè)移動(dòng)到第一頁(yè)的舊數(shù)據(jù);以及響應(yīng)于該確定,關(guān)聯(lián)第一頁(yè)和主編織序列計(jì)數(shù)器(HWSC)值,其中,HWSC值等于所述不同頁(yè)的HWSC值。
7.如權(quán)利要求1或2所述的方法,其中順序地增加WSC包括在不翻轉(zhuǎn)的情況下增加 WSC的當(dāng)前值,以致WSC在NVM的整個(gè)生命內(nèi)持續(xù)增加到更高的值。
8.如權(quán)利要求1或2所述的方法,其中順序地增加WSC包括在具有翻轉(zhuǎn)的情況下增加WSC的當(dāng)前值,以致WSC值在預(yù)定數(shù)目的寫(xiě)循環(huán)之后翻轉(zhuǎn)為零。
9.一種用于非易失性存儲(chǔ)器(NVM)系統(tǒng)的耗損均衡的方法,該方法包括識(shí)別當(dāng)前的編織序列計(jì)數(shù)器(WSC)值,其中WSC值表明NVM的頁(yè)被編程的順序;識(shí)別用于NVM的特定頁(yè)的主編織序列計(jì)數(shù)器(HWSC)值,其中,HWSC值表明該特定頁(yè)中的數(shù)據(jù)何時(shí)被最初保存到NVM中;計(jì)算當(dāng)前WSC值和HWSC值之間的差值;至少部分基于所述計(jì)算的差值,確定所述特定頁(yè)是適合移動(dòng)到高循環(huán)塊的靜態(tài)頁(yè)。
10.如權(quán)利要求9所述的方法,其中所述確定包括比較所述計(jì)算的差值和預(yù)先確定的閾值;確定所述差值大于所述閾值;以及響應(yīng)于確定所述差值大于所述閾值,識(shí)別所述特定頁(yè)為靜態(tài)頁(yè)。
11.如權(quán)利要求9或10所述的方法,進(jìn)一步包括前進(jìn)到NVM的下一頁(yè),并為下一頁(yè)重復(fù)識(shí)別當(dāng)前WSC值,識(shí)別HWSC,進(jìn)行計(jì)算和確定。
12.如權(quán)利要求9或10所述的方法,進(jìn)一步包括移動(dòng)所述特定頁(yè)的數(shù)據(jù)到高循環(huán)塊的新的頁(yè);以及關(guān)聯(lián)所述特定頁(yè)的HWSC值和所述新的頁(yè)。
13.如權(quán)利要求9或10所述的方法,進(jìn)一步包括移動(dòng)所述特定頁(yè)的數(shù)據(jù)到高循環(huán)塊的新的頁(yè);以及關(guān)聯(lián)所述當(dāng)前WSC值和所述新的頁(yè)的WSC值。
14.如權(quán)利要求9或10所述的方法,其中所述特定頁(yè)是靜態(tài)頁(yè)的確定進(jìn)一步基于以下至少之一與所述特定頁(yè)相關(guān)聯(lián)的文件大?。粚?xiě)與所述特定頁(yè)相關(guān)聯(lián)的文件所花費(fèi)的時(shí)間量;以及與所述特定頁(yè)相關(guān)聯(lián)的文件有關(guān)的系統(tǒng)啟發(fā)。
15.如權(quán)利要求9或10所述的方法,其中靜態(tài)頁(yè)包括包含在相對(duì)長(zhǎng)時(shí)間段內(nèi)保持不變的數(shù)據(jù)的頁(yè)。
16.一種用于存取非易失性存儲(chǔ)器(NVM)的存儲(chǔ)器接口,所述存儲(chǔ)器接口包括識(shí)別單元,用于識(shí)別要編程到NVM的特定數(shù)據(jù)組;確定單元,用于確定編織序列計(jì)數(shù)器(WSC)的當(dāng)前值,其中WSC表明NVM內(nèi)的頁(yè)被編程的順序;第一指示單元,用于指示所述特定數(shù)據(jù)組編程到NVM的特定頁(yè)中;第二指示單元,用于指示所述WSC的當(dāng)前值存儲(chǔ)到所述特定頁(yè)的元數(shù)據(jù)中;以及增加單元,用于順序地增加WSC的當(dāng)前值到下一值。
17.如權(quán)利要求16所述的存儲(chǔ)器接口,進(jìn)一步包括重建單元,用于通過(guò)按照NVM的每個(gè)頁(yè)的WSC值以時(shí)序順序檢查NVM的每個(gè)頁(yè),來(lái)重建 NVM的邏輯到物理映射表。
18.如權(quán)利要求16或17所述的存儲(chǔ)器接口,進(jìn)一步包括執(zhí)行單元,用于通過(guò)以下操作在NVM上執(zhí)行回滾操作識(shí)別包含不連貫數(shù)據(jù)的NVM的損壞頁(yè);確定與所述損壞頁(yè)相關(guān)聯(lián)的WSC值;以及忽略相關(guān)聯(lián)的WSC值大于所述損壞頁(yè)相關(guān)聯(lián)的WSC值的任何頁(yè)。
19.如權(quán)利要求18所述的存儲(chǔ)器接口,其中,所述忽略任何頁(yè)包括在重建NVM的邏輯到物理映射表期間忽略所述任何頁(yè)。
20.如權(quán)利要求16或17所述的存儲(chǔ)器接口,進(jìn)一步包括第三指示單元,用于指示主編織序列計(jì)數(shù)器(HWSC)存儲(chǔ)到所述特定頁(yè)的元數(shù)據(jù)中; 設(shè)置單元,用于響應(yīng)于所述特定數(shù)據(jù)組是最初編程到NVM中的新數(shù)據(jù)而設(shè)置HWSC的值等于WSC的當(dāng)前值,并且響應(yīng)于所述特定數(shù)據(jù)組是從一不同頁(yè)移動(dòng)的舊數(shù)據(jù)而設(shè)置HWSC的值等于與所述不同頁(yè)相關(guān)聯(lián)的之前的HWSC值。
21.一種用于編織非易失性存儲(chǔ)器(NVM)的頁(yè)的編程的存儲(chǔ)器接口,所述存儲(chǔ)器接口包括識(shí)別單元,用于識(shí)別編織序列計(jì)數(shù)器(WSC)的當(dāng)前值,其中WSC標(biāo)識(shí)其中NVM的每個(gè)頁(yè)被編程的序列;編程單元,用于用第一用戶(hù)數(shù)據(jù)組編程N(yùn)VM的第一塊的第一頁(yè);關(guān)聯(lián)單元,用于關(guān)聯(lián)所述第一頁(yè)和WSC的當(dāng)前值;以及增加單元,用于順序地增加WSC到增加的WSC值。
22.如權(quán)利要求21所述的存儲(chǔ)器接口,其中編程單元進(jìn)一步被配置用于用第二用戶(hù)數(shù)據(jù)組編程N(yùn)VM的第二塊的第二頁(yè);以及關(guān)聯(lián)單元進(jìn)一步被配置用于關(guān)聯(lián)所述第二頁(yè)和所述增加的WSC值。
23.如權(quán)利要求21或22所述的存儲(chǔ)器接口,其中關(guān)聯(lián)單元進(jìn)一步被配置用于編程WSC 的當(dāng)前值到所述第一頁(yè)的元數(shù)據(jù)中。
24.如權(quán)利要求21或22所述的存儲(chǔ)器接口,進(jìn)一步包括第一確定單元,用于確定所述第一數(shù)據(jù)組是最初存儲(chǔ)在NVM中的新數(shù)據(jù);以及所述關(guān)聯(lián)單元配置用于,響應(yīng)于確定所述第一數(shù)據(jù)組是最初存儲(chǔ)在NVM中的新數(shù)據(jù), 關(guān)聯(lián)所述第一頁(yè)和主編織序列計(jì)數(shù)器(HWSC)值,其中,HWSC值等于WSC的當(dāng)前值。
25.如權(quán)利要求24所述的存儲(chǔ)器接口,其中,所述關(guān)聯(lián)單元進(jìn)一步被配置用于編程所述HWSC值到所述第一頁(yè)的元數(shù)據(jù)中。
26.如權(quán)利要求21或22所述的存儲(chǔ)器接口,進(jìn)一步包括第二確定單元,用于確定所述第一數(shù)據(jù)組是從NVM中的一不同頁(yè)移動(dòng)到所述第一頁(yè)的舊數(shù)據(jù);以及所述關(guān)聯(lián)單元被配置用于,響應(yīng)于確定所述第一數(shù)據(jù)組是從NVM中的一不同頁(yè)移動(dòng)到所述第一頁(yè)的舊數(shù)據(jù),關(guān)聯(lián)所述第一頁(yè)和主編織序列計(jì)數(shù)器(HWSC)值,其中,HWSC值等于所述不同頁(yè)的HWSC值。
27.如權(quán)利要求21或22所述的存儲(chǔ)器接口,其中,所述增加單元進(jìn)一步被配置用于在不翻轉(zhuǎn)的情況下增加WSC的當(dāng)前值,以致WSC在NVM的整個(gè)生命內(nèi)繼續(xù)增加到更高的值。
28.如權(quán)利要求21或22所述的存儲(chǔ)器接口,其中,所述增加單元被配置用于在具有翻轉(zhuǎn)的情況下增加WSC的當(dāng)前值,以致WSC值在預(yù)定數(shù)目的寫(xiě)循環(huán)之后翻轉(zhuǎn)為零。
29.一種用于非易失性存儲(chǔ)器(NVM)系統(tǒng)的耗損均衡的存儲(chǔ)器接口,所述存儲(chǔ)器接口包括第一識(shí)別單元,用于識(shí)別當(dāng)前編織序列計(jì)數(shù)器(WSC)值,其中WSC值表明NVM的頁(yè)被編程的順序;第二識(shí)別單元,用于識(shí)別用于NVM的特定頁(yè)的主編織序列計(jì)數(shù)器(HWSC)值,其中,HWSC 值表明所述特定頁(yè)中的數(shù)據(jù)何時(shí)被最初保存到NVM中;計(jì)算單元,用于計(jì)算當(dāng)前WSC值和HWSC值之間的差值;以及確定單元,用于至少部分基于所計(jì)算的差值,確定所述特定頁(yè)是適合移動(dòng)到高循環(huán)塊的靜態(tài)頁(yè)。
30.如權(quán)利要求29所述的存儲(chǔ)器接口,其中所述確定單元進(jìn)一步被配置用于比較所計(jì)算的差值和預(yù)先確定的閾值;確定所述差值大于所述閾值;以及響應(yīng)于確定所述差值大于所述閾值,識(shí)別所述特定頁(yè)為靜態(tài)頁(yè)。
31.如權(quán)利要求29或30所述的存儲(chǔ)器接口,進(jìn)一步包括前進(jìn)和重復(fù)單元,用于前進(jìn)到NVM的下一頁(yè),并為下一頁(yè)重復(fù)識(shí)別當(dāng)前WSC值、識(shí)別 HWSC、進(jìn)行計(jì)算和確定。
32.如權(quán)利要求29或30所述的存儲(chǔ)器接口,進(jìn)一步包括第一移動(dòng)單元,用于移動(dòng)所述特定頁(yè)的數(shù)據(jù)到高循環(huán)塊的新的頁(yè);以及第一關(guān)聯(lián)單元,用于關(guān)聯(lián)所述特定頁(yè)的HWSC值和所述新的頁(yè)。
33.如權(quán)利要求29或30所述的存儲(chǔ)器接口,進(jìn)一步包括第二移動(dòng)單元,用于移動(dòng)所述特定頁(yè)的數(shù)據(jù)到高循環(huán)塊的新的頁(yè);以及第二關(guān)聯(lián)單元,用于關(guān)聯(lián)當(dāng)前WSC值和所述新的頁(yè)的WSC值。
34.如權(quán)利要求29或30所述的存儲(chǔ)器接口,其中,確定所述特定頁(yè)是靜態(tài)頁(yè)進(jìn)一步基于以下至少之一與所述特定頁(yè)相關(guān)聯(lián)的文件大?。粚?xiě)與所述特定頁(yè)相關(guān)聯(lián)的文件所花費(fèi)的時(shí)間量;以及與所述特定頁(yè)相關(guān)聯(lián)的文件有關(guān)的系統(tǒng)啟發(fā)。
35.如權(quán)利要求29或30所述的存儲(chǔ)器接口,其中靜態(tài)頁(yè)包括包含在相對(duì)長(zhǎng)時(shí)間段內(nèi)保持不變的數(shù)據(jù)的頁(yè)。
36.一種電子設(shè)備,包含如權(quán)利要求16-35中的任何一個(gè)所述的存儲(chǔ)器接口。
全文摘要
本公開(kāi)涉及用于非易失性存儲(chǔ)器系統(tǒng)的編織序列計(jì)數(shù)器。公開(kāi)了提供用于非易失性存儲(chǔ)器(NVM)系統(tǒng)的編織序列計(jì)數(shù)器(WSC)的系統(tǒng)和方法。WSC可以識(shí)別NVM的每個(gè)頁(yè)被編程的序列?!熬幙棥狈矫婵梢允侵付鄠€(gè)塊可以一次打開(kāi)進(jìn)行編程的事實(shí),從而允許這些塊的頁(yè)以“交織”的方式進(jìn)行編程。還公開(kāi)了提供主編織序列計(jì)數(shù)器(HWSC)的系統(tǒng)和方法。每次新的數(shù)據(jù)被最初編程到NVM時(shí),該數(shù)據(jù)可以與特定HWSC相關(guān)聯(lián)。與該數(shù)據(jù)相關(guān)聯(lián)的HWSC可以不變,即使當(dāng)該數(shù)據(jù)被移動(dòng)到新的頁(yè)(例如,為了耗損均衡目的等)。WSC和HWSC可以幫助系統(tǒng),例如,執(zhí)行回滾,建立邏輯到物理映射,確定靜態(tài)與動(dòng)態(tài)頁(yè)狀態(tài),以及執(zhí)行維護(hù)操作(例如耗損均衡)。
文檔編號(hào)G06F12/02GK102999431SQ20121044871
公開(kāi)日2013年3月27日 申請(qǐng)日期2012年9月14日 優(yōu)先權(quán)日2011年9月16日
發(fā)明者D·J·波斯特, N·J·瓦卡拉特, V·科麥爾尼斯基 申請(qǐng)人:蘋(píng)果公司