亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于裸芯上緩沖式非易失性存儲(chǔ)器的選擇性回拷的制作方法

文檔序號(hào):11814656閱讀:563來(lái)源:國(guó)知局
用于裸芯上緩沖式非易失性存儲(chǔ)器的選擇性回拷的制作方法與工藝

該申請(qǐng)要求題為“ON DIE BUFFERED NON-VOLATILE MEMORY MANAGEMENT”的由Jea Hyun等人于2014年1月9日提交的美國(guó)臨時(shí)專利申請(qǐng)?zhí)?1/925,549的利益,其完整內(nèi)容出于所有目的通過(guò)引用合并到此。

技術(shù)領(lǐng)域

本公開(kāi)在各個(gè)實(shí)施例中涉及存儲(chǔ)器管理,更具體地說(shuō),涉及對(duì)裸芯上緩沖式非易失性存儲(chǔ)器的管理。



背景技術(shù):

某些閃速存儲(chǔ)器和其它固態(tài)存儲(chǔ)設(shè)備實(shí)現(xiàn)了多級(jí)式單元(MLC)存儲(chǔ)器介質(zhì)、三級(jí)式單元(TLC)存儲(chǔ)器介質(zhì)等,以將多個(gè)比特的數(shù)據(jù)存儲(chǔ)在同一存儲(chǔ)器單元中。通常,MLC存儲(chǔ)器單元和TLC存儲(chǔ)器單元可編程為均由分離的電壓閾值表征的多個(gè)狀態(tài)。作為示例,兩比特MLC存儲(chǔ)器單元可以編程為四個(gè)不同狀態(tài)之一,或三個(gè)比特TLC存儲(chǔ)器單元可以編程為八個(gè)不同狀態(tài)之一,其中,每個(gè)狀態(tài)對(duì)應(yīng)于唯一電壓范圍。

如果具有MLC存儲(chǔ)器介質(zhì)和/或TLC存儲(chǔ)器介質(zhì)的同一設(shè)備中包括單級(jí)式單元(SLC)存儲(chǔ)器介質(zhì),則必須管理不同類型的存儲(chǔ)器介質(zhì)的分配和使用。SLC存儲(chǔ)器介質(zhì)、MLC存儲(chǔ)器介質(zhì)和TLC存儲(chǔ)器介質(zhì)可以具有不同的寫(xiě)入時(shí)間、讀取時(shí)間、編程要求、可靠性、錯(cuò)誤率等。此外,在不同類型的存儲(chǔ)器介質(zhì)之間拷貝數(shù)據(jù)可能引入錯(cuò)誤,隨著數(shù)據(jù)被拷貝而放大錯(cuò)誤的引入。如果在數(shù)據(jù)正從一種類型的存儲(chǔ)器介質(zhì)拷貝到另一類型的存儲(chǔ)器介質(zhì)的同時(shí)功率丟失或設(shè)備關(guān)斷,則數(shù)據(jù)可能被破壞或丟失。不同數(shù)據(jù)也可能具有可能與特定類型的存儲(chǔ)器介質(zhì)不一致或?qū)τ谔囟愋偷拇鎯?chǔ)器介質(zhì)并非優(yōu)化的不同使用模式、優(yōu)先級(jí)等。



技術(shù)實(shí)現(xiàn)要素:

提出用于裸芯上緩沖式(ODB)非易失性存儲(chǔ)器管理的方法。在一個(gè)實(shí)施例中,方法包括:將數(shù)據(jù)存儲(chǔ)在第一非易失性存儲(chǔ)器單元集合中。在另一實(shí)施例中,方法包括:確定與數(shù)據(jù)關(guān)聯(lián)的一個(gè)或多個(gè)屬性。在特定實(shí)施例中,方法包括:基于與數(shù)據(jù)關(guān)聯(lián)的一個(gè)或多個(gè)屬性而確定是否將數(shù)據(jù)存儲(chǔ)在第二非易失性存儲(chǔ)器單元集合中。在另一實(shí)施例中,第二非易失性存儲(chǔ)器單元集合被配置為:存儲(chǔ)比第一非易失性存儲(chǔ)器單元集合更多的每單元的比特。

提出用于裸芯上緩沖式(ODB)非易失性存儲(chǔ)器管理的裝置。在一個(gè)實(shí)施例中,緩沖器模塊被配置為:將數(shù)據(jù)存儲(chǔ)在第一非易失性存儲(chǔ)單元集合中。在另一實(shí)施例中,回拷模塊被配置為:基于一個(gè)或多個(gè)數(shù)據(jù)因素而確定是否將數(shù)據(jù)存儲(chǔ)在第二非易失性存儲(chǔ)單元集合中。在另一實(shí)施例中,第二非易失性存儲(chǔ)單元集合使用比第一非易失性存儲(chǔ)單元集合更多的每單元的存儲(chǔ)狀態(tài)來(lái)表示數(shù)據(jù)。

提出用于裸芯上緩沖式(ODB)非易失性存儲(chǔ)器管理的系統(tǒng)。在特定實(shí)施例中,非易失性存儲(chǔ)器元件包括單級(jí)式單元(SLC)非易失性存儲(chǔ)器單元集合以及三級(jí)式單元(TLC)非易失性存儲(chǔ)器單元集合。在一個(gè)實(shí)施例中,控制器有選擇地確定將數(shù)據(jù)從SLC非易失性存儲(chǔ)器單元集合拷貝到TLC非易失性存儲(chǔ)器單元集合。在另一實(shí)施例中,控制器基于用于SLC非易失性存儲(chǔ)器單元集合的一個(gè)或多個(gè)存儲(chǔ)介質(zhì)特性而調(diào)整用于所述SLC非易失性存儲(chǔ)器單元集合的一個(gè)或多個(gè)讀取電壓閾值,以用于將數(shù)據(jù)從所述SLC非易失性存儲(chǔ)器單元集合拷貝到TLC非易失性存儲(chǔ)器單元集合。

附圖說(shuō)明

為了將容易理解本公開(kāi)的優(yōu)點(diǎn),將通過(guò)參照附圖所示的特定實(shí)施例提出以上簡(jiǎn)要描述的本公開(kāi)的更特定描述。理解這些附圖僅描述本公開(kāi)的典型實(shí)施例,并且因此不被看作限制其范圍,將通過(guò)使用附圖用附加特性和細(xì)節(jié)來(lái)描述并且解釋本公開(kāi),其中:

圖1是示出用于裸芯上緩沖式(on die buffered,ODB)非易失性存儲(chǔ)器管理的系統(tǒng)的一個(gè)實(shí)施例的示意性框圖;

圖2是示出非易失性存儲(chǔ)器系統(tǒng)的實(shí)施例的示意性框圖;

圖3A是示出管理模塊的一個(gè)實(shí)施例的示意性框圖;

圖3B是示出管理模塊的另一實(shí)施例的示意性框圖;

圖4是示出三層式存儲(chǔ)器單元的一個(gè)實(shí)施例的示意性框圖;

圖5是示出非易失性存儲(chǔ)器元件的一個(gè)實(shí)施例的示意性框圖;

圖6是示出映射結(jié)構(gòu)、邏輯地址空間和基于日志的寫(xiě)入結(jié)構(gòu)的一個(gè)實(shí)施例的示意性框圖;

圖7是示出用于將數(shù)據(jù)存儲(chǔ)在多層式存儲(chǔ)器單元中的系統(tǒng)的一個(gè)實(shí)施例的示意性框圖;

圖8A是示出非易失性存儲(chǔ)器介質(zhì)的存儲(chǔ)元件陣列的一個(gè)實(shí)施例的示意性框圖;

圖8B是示出非易失性存儲(chǔ)器介質(zhì)的存儲(chǔ)元件陣列的另一實(shí)施例的示意性框圖;

圖9A是示出非易失性存儲(chǔ)器設(shè)備的單元中的狀態(tài)的一個(gè)實(shí)施例的圖;

圖9B是示出由非易失性存儲(chǔ)器設(shè)備的單元對(duì)多個(gè)比特進(jìn)行編碼的一個(gè)實(shí)施例的表;

圖10是示出用于三級(jí)式單元存儲(chǔ)器的編碼模型的狀態(tài)的一系列圖;

圖11是示出用于裸芯上緩沖式(ODB)非易失性存儲(chǔ)器管理的方法的一個(gè)實(shí)施例的示意性流程圖示圖;

圖12是示出用于裸芯上緩沖式(ODB)非易失性存儲(chǔ)器管理的方法的另一實(shí)施例的示意性流程圖示圖;以及

圖13是示出用于裸芯上緩沖式(ODB)非易失性存儲(chǔ)器管理的方法的又一實(shí)施例的示意性流程圖示圖。

具體實(shí)施方式

本公開(kāi)的各方面可以實(shí)施為裝置、系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。相應(yīng)地,本公開(kāi)的各方面可以采取完全硬件實(shí)施例、完全軟件實(shí)施例(包括固件、駐留軟件、微碼等)或組合軟件方面和硬件方面的實(shí)施例的形式,其可以全都一般在此稱為“電路”、“裝置”或“系統(tǒng)”。此外,本公開(kāi)的各方面可以采取存儲(chǔ)計(jì)算機(jī)可讀和/或可執(zhí)行程序代碼的一個(gè)或多個(gè)非瞬時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。

該說(shuō)明書(shū)中所描述的很多功能單元已經(jīng)標(biāo)記為模塊,以更具體地強(qiáng)調(diào)它們的實(shí)現(xiàn)方式獨(dú)立性。例如,模塊可以實(shí)現(xiàn)為包括定制VLSI電路或門(mén)陣列、現(xiàn)貨半導(dǎo)體(例如邏輯芯片)、晶體管或其它分立式組件的硬件電路。模塊也可以實(shí)現(xiàn)于可編程硬件設(shè)備(例如現(xiàn)場(chǎng)可編程門(mén)陣列、可編程陣列邏輯、可編程邏輯設(shè)備等)中。

也可以通過(guò)至少部分地用于通過(guò)各種類型的處理器執(zhí)行的軟件來(lái)實(shí)現(xiàn)模塊。所標(biāo)識(shí)的可執(zhí)行代碼的模塊可以例如包括可以例如被組織為對(duì)象、過(guò)程或函數(shù)的計(jì)算機(jī)指令的一個(gè)或多個(gè)物理或邏輯塊。然而,所標(biāo)識(shí)的模塊的可執(zhí)行無(wú)需物理上位于一起,而是可以包括不同位置中所存儲(chǔ)的全異指令,其當(dāng)邏輯上結(jié)合在一起時(shí)包括模塊并且實(shí)現(xiàn)所聲明的模塊的目的。

實(shí)際上,可執(zhí)行代碼的模塊可以包括單個(gè)指令,或很多指令,并且可以甚至分布在若干不同代碼段上、在不同程序當(dāng)中、遍及若干存儲(chǔ)器設(shè)備等。在模塊或模塊的部分實(shí)現(xiàn)于軟件中的情況下,軟件部分可以存儲(chǔ)在一個(gè)或多個(gè)計(jì)算機(jī)可讀和/或可執(zhí)行存儲(chǔ)介質(zhì)上??梢岳靡粋€(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的任何組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以包括例如但不限于電子、磁、光、電磁、紅外或半導(dǎo)體系統(tǒng)、裝置或設(shè)備或前述項(xiàng)的任何合適的組合,但將不包括傳輸信號(hào)。在該文獻(xiàn)的上下文中,計(jì)算機(jī)可讀和/或可執(zhí)行存儲(chǔ)介質(zhì)可以是任何可以包含或存儲(chǔ)用于指令執(zhí)行系統(tǒng)、裝置、處理器或設(shè)備使用或與之結(jié)合的程序。

可以通過(guò)一種或多種編程語(yǔ)言的任何組合來(lái)寫(xiě)出用于執(zhí)行用于本公開(kāi)各方面的操作的計(jì)算機(jī)程序代碼,包括面向?qū)ο蟮木幊陶Z(yǔ)言(例如Python、Java、Smalltalk、C++,C#、對(duì)象C等)、傳統(tǒng)過(guò)程編程語(yǔ)言(例如“C”編程語(yǔ)言、腳本編程語(yǔ)言和/或其它相似的編程語(yǔ)言)。程序代碼可以通過(guò)數(shù)據(jù)網(wǎng)絡(luò)等在用戶的計(jì)算機(jī)和/或遠(yuǎn)程計(jì)算機(jī)或服務(wù)器中的一個(gè)或多個(gè)上部分地或完整地執(zhí)行。

在此所使用的組件包括有形的物理非瞬時(shí)設(shè)備。例如,組件可以實(shí)現(xiàn)為包括定制VLSI電路、門(mén)陣列或其它集成電路的硬件邏輯電路;現(xiàn)成半導(dǎo)體(例如邏輯芯片、晶體管或其它分立式設(shè)備);和/或其它機(jī)械設(shè)備或電設(shè)備。組件也可以實(shí)現(xiàn)于可編程硬件設(shè)備(例如現(xiàn)場(chǎng)可編程門(mén)陣列、可編程陣列邏輯、可編程邏輯設(shè)備等)中。組件可以包括通過(guò)印制電路板(PCB)等的電線路與一個(gè)或多個(gè)其它組件電連通的一個(gè)或多個(gè)硅集成電路設(shè)備(例如芯片、裸芯、裸芯平面、封裝))或其它分立式電設(shè)備。在此所描述的模塊中的每一個(gè)可以替代地由組件實(shí)施或?qū)崿F(xiàn)為組件。

貫穿該說(shuō)明書(shū)對(duì)“一個(gè)實(shí)施例”或“實(shí)施例”或相似語(yǔ)言的引用表示本公開(kāi)的至少一個(gè)實(shí)施例中包括結(jié)合實(shí)施例所描述的特定特征、結(jié)構(gòu)或特性。因此,出現(xiàn)短語(yǔ)“在一個(gè)實(shí)施例中”、“在實(shí)施例中”以及相似的語(yǔ)言貫穿該說(shuō)明書(shū)可以但不一定全部指代同一實(shí)施例,而是表示“一個(gè)或多個(gè)但非所有實(shí)施例”,除非另外明確指定。術(shù)語(yǔ)“包括”、“包含”、“具有”及其變形因此表示“包括但不限于”,除非另外明確指定。枚舉式列出各項(xiàng)并不暗指任何或所有項(xiàng)相互排除和/或相互包括,除非另外明確指定。術(shù)語(yǔ)“一個(gè)”、“某個(gè)”和“所述”也指代“一個(gè)或多個(gè)”,除非另外明確地指定。

以下參照根據(jù)本公開(kāi)實(shí)施例的方法、裝置、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品的示意性流程圖示圖和/或示意性框圖來(lái)描述本公開(kāi)的各方面。應(yīng)理解,示意性流程圖示圖和/或示意性框圖的每個(gè)塊以及示意性流程圖示圖和/或示意性框圖中的各塊的組合可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給計(jì)算機(jī)或另外可編程數(shù)據(jù)處理裝置的處理器以制造機(jī)器,從而經(jīng)由處理器或另外可編程數(shù)據(jù)處理裝置執(zhí)行的指令創(chuàng)建用于實(shí)現(xiàn)一個(gè)或多個(gè)示意性流程圖示圖和/或示意性框圖塊中所指定的功能和/或動(dòng)作的手段。

還應(yīng)注意,在一些替選實(shí)現(xiàn)方式中,塊中所標(biāo)注的功能可以不按附圖中所標(biāo)注的順序產(chǎn)生。例如,取決于所涉及的功能性,相繼示出的兩個(gè)塊實(shí)際上可以基本上同時(shí)地運(yùn)行,或各塊可以有時(shí)按相反順序運(yùn)行。可以構(gòu)想在功能、邏輯或效果方面與所示附圖的一個(gè)或多個(gè)塊或其部分等同的其它步驟和方法。雖然在流程圖和/或框圖中可以采用各種箭頭類型和線類型,但它們應(yīng)理解為并非限制對(duì)應(yīng)實(shí)施例的范圍。例如,箭頭可以指示所描述的實(shí)施例的所枚舉的各步驟之間的未指定的持續(xù)性時(shí)間的等待或監(jiān)控時(shí)段。

在以下詳細(xì)描述中,參照形成其一部分的附圖。前述發(fā)明內(nèi)容僅是說(shuō)明性的,而非意圖以任何方式限制。除了以上描述的說(shuō)明性方面、實(shí)施例和特征之外,其它方面、實(shí)施例和特征將通過(guò)參照附圖和以下詳細(xì)描述變得清楚。每個(gè)附圖中的要素的描述可以引用在前附圖的要素。相同標(biāo)號(hào)在附圖中可以指代相同要素,包括相同要素的替選實(shí)施例。

根據(jù)各個(gè)實(shí)施例,非易失性存儲(chǔ)器控制器管理一個(gè)或多個(gè)非易失性存儲(chǔ)器設(shè)備。非易失性存儲(chǔ)器設(shè)備可以包括存儲(chǔ)器或存儲(chǔ)設(shè)備(例如固態(tài)存儲(chǔ)設(shè)備),其被布置和/或分區(qū)為多個(gè)可尋址介質(zhì)存儲(chǔ)位置。如在此所使用的那樣,介質(zhì)存儲(chǔ)位置指代存儲(chǔ)器的任何物理單元(例如非易失性存儲(chǔ)器設(shè)備上的物理存儲(chǔ)介質(zhì)的任何量)。存儲(chǔ)器單元可以包括但不限于:頁(yè)面、存儲(chǔ)器分區(qū)、擦除塊、扇區(qū)、塊、物理存儲(chǔ)位置的集合體或集合(例如下述邏輯頁(yè)面、邏輯擦除塊)等。

非易失性存儲(chǔ)器控制器可以包括存儲(chǔ)管理層(SML),其可以將邏輯地址空間呈現(xiàn)給一個(gè)或多個(gè)存儲(chǔ)客戶機(jī)。SML的一個(gè)示例是猶他州鹽湖城的Fusion-io公司的Virtual Storage替代地,每個(gè)非易失性存儲(chǔ)器設(shè)備可以包括非易失性存儲(chǔ)器介質(zhì)控制器,其可以將邏輯地址空間呈現(xiàn)給存儲(chǔ)客戶機(jī)。如在此所使用的那樣,邏輯地址空間指代存儲(chǔ)器資源的邏輯表示。邏輯地址空間可以包括多個(gè)(例如一系列)邏輯地址。如在此所使用的那樣,邏輯地址指代用于引用存儲(chǔ)器資源(例如數(shù)據(jù))的任何標(biāo)識(shí)符,包括但不限于:邏輯塊地址(LBA)、柱/頭/扇區(qū)(CHS)地址、文件名、對(duì)象標(biāo)識(shí)符、索引節(jié)點(diǎn)、通用唯一標(biāo)識(shí)符(UUID)、全局唯一標(biāo)識(shí)符(GUID)、散列碼、簽名、索引項(xiàng)、范圍、限度等。

SML可以保存元數(shù)據(jù)(例如前向索引),以將邏輯地址空間的邏輯地址映射為非易失性存儲(chǔ)器設(shè)備上的介質(zhì)存儲(chǔ)位置。SML可以提供從邏輯地址到物理存儲(chǔ)資源的任意任何對(duì)任何映射。如在此所使用的那樣,“任何對(duì)任何”映射可以將任何邏輯地址映射為任何物理存儲(chǔ)資源。相應(yīng)地,在邏輯地址與特定介質(zhì)存儲(chǔ)位置和/或介質(zhì)地址之間可以不存在預(yù)定或預(yù)設(shè)的映射。如在此所使用的那樣,介質(zhì)地址指代對(duì)管理多個(gè)存儲(chǔ)器資源的控制器唯一地標(biāo)識(shí)一個(gè)存儲(chǔ)器資源區(qū)別于另一存儲(chǔ)器資源的存儲(chǔ)器資源的地址。通過(guò)示例的方式,介質(zhì)地址包括但不限于介質(zhì)存儲(chǔ)位置的地址、物理存儲(chǔ)器單元、物理存儲(chǔ)器單元的集合體(例如邏輯存儲(chǔ)器單元)、存儲(chǔ)器單元的部分(例如邏輯存儲(chǔ)器單元地址和偏移、范圍和/或限度)等。相應(yīng)地,SML可以將邏輯地址映射為任何大小和/或粒度的物理數(shù)據(jù)資源,其可以對(duì)應(yīng)于或不對(duì)應(yīng)于非易失性存儲(chǔ)器設(shè)備的潛在數(shù)據(jù)分區(qū)方案。例如,在一些實(shí)施例中,非易失性存儲(chǔ)器控制器被配置為:將數(shù)據(jù)存儲(chǔ)在通過(guò)在邏輯上組合多個(gè)物理存儲(chǔ)器單元所形成的邏輯存儲(chǔ)器單元內(nèi),這樣可以允許非易失性存儲(chǔ)器控制器支持很多不同的虛擬存儲(chǔ)器單元大小和/或粒度。

如在此所使用的那樣,邏輯存儲(chǔ)器元件指代(例如經(jīng)由I/O和/或控制總線)并行地或能夠被管理的兩個(gè)或更多個(gè)非易失性存儲(chǔ)器元件的集合。邏輯存儲(chǔ)器元件可以包括多個(gè)邏輯存儲(chǔ)器單元(例如邏輯頁(yè)面、邏輯存儲(chǔ)器分區(qū)(例如邏輯擦除塊)等)。如在此所使用的那樣,邏輯存儲(chǔ)器單元指代組合兩個(gè)或更多個(gè)物理存儲(chǔ)器單元的邏輯構(gòu)造,每個(gè)物理存儲(chǔ)器單元在各個(gè)邏輯存儲(chǔ)器元件中的各個(gè)非易失性存儲(chǔ)器元件上(每個(gè)非易失性存儲(chǔ)器元件是可并行訪問(wèn)的)。如在此所使用的那樣,邏輯存儲(chǔ)器分區(qū)指代兩個(gè)或更多個(gè)物理存儲(chǔ)器分區(qū)的集合,每個(gè)物理存儲(chǔ)器分區(qū)在各個(gè)邏輯存儲(chǔ)器元件中的各個(gè)非易失性存儲(chǔ)器元件上。

存儲(chǔ)管理層所呈現(xiàn)的邏輯地址空間可以具有可以與邏輯地址空間中的可用邏輯地址的數(shù)量以及邏輯地址所引用的數(shù)據(jù)的大小(或粒度)對(duì)應(yīng)的邏輯容量。例如,包括均引用2048字節(jié)(2KiB)數(shù)據(jù)的2^32個(gè)唯一邏輯地址的邏輯地址空間的邏輯容量可以是2^43個(gè)字節(jié)。(如在此所使用的那樣,千字節(jié)(KiB)指代1024字節(jié))。在一些實(shí)施例中,可以稀薄地提供邏輯地址空間。如在此所使用的那樣,“稀薄地提供的”邏輯地址空間指代具有超過(guò)潛在非易失性存儲(chǔ)器設(shè)備的物理容量的邏輯容量的邏輯地址空間。例如,存儲(chǔ)管理層可以將超過(guò)潛在非易失性存儲(chǔ)器設(shè)備的物理容量的64比特邏輯地址空間(例如64比特邏輯地址所引用的邏輯地址空間)呈現(xiàn)給存儲(chǔ)客戶機(jī)。大的邏輯地址空間可以在減少命名沖突的機(jī)會(huì)的同時(shí)允許存儲(chǔ)客戶機(jī)分配和/或引用邏輯地址的毗鄰范圍。存儲(chǔ)管理層可以促使邏輯地址與物理存儲(chǔ)資源之間的任何對(duì)任何映射獨(dú)立于潛在物理存儲(chǔ)設(shè)備而管理邏輯地址空間。例如,存儲(chǔ)管理層可以根據(jù)需要并且在不改變存儲(chǔ)客戶機(jī)所使用的邏輯地址的情況下無(wú)縫地加入和/或移除物理存儲(chǔ)資源。

非易失性存儲(chǔ)器控制器可以被配置為:以上下文式格式(contextual format)來(lái)存儲(chǔ)數(shù)據(jù)。如在此所使用的那樣,上下文式格式指代自身描述數(shù)據(jù)格式,其中,持續(xù)性上下文式元數(shù)據(jù)隨數(shù)據(jù)存儲(chǔ)在物理存儲(chǔ)介質(zhì)上。持續(xù)性上下文式元數(shù)據(jù)提供用于隨之存儲(chǔ)的數(shù)據(jù)的上下文。在特定實(shí)施例中,持續(xù)性上下文式元數(shù)據(jù)唯一地標(biāo)識(shí)持續(xù)性上下文式元數(shù)據(jù)隨之存儲(chǔ)的數(shù)據(jù)。例如,持續(xù)性上下文式元數(shù)據(jù)可以唯一地標(biāo)識(shí)存儲(chǔ)客戶機(jī)所擁有的數(shù)據(jù)的一個(gè)扇區(qū)區(qū)別于存儲(chǔ)客戶機(jī)所擁有的數(shù)據(jù)的其它扇區(qū)。在另一實(shí)施例中,持續(xù)性上下文式元數(shù)據(jù)標(biāo)識(shí)對(duì)數(shù)據(jù)執(zhí)行的操作。在另一實(shí)施例中,持續(xù)性上下文式元數(shù)據(jù)標(biāo)識(shí)對(duì)數(shù)據(jù)執(zhí)行的操作序列。在另一實(shí)施例中,持續(xù)性上下文式元數(shù)據(jù)標(biāo)識(shí)數(shù)據(jù)的安全性控制、數(shù)據(jù)類型或其它屬性。在特定實(shí)施例中,持續(xù)性上下文式元數(shù)據(jù)標(biāo)識(shí)多個(gè)方面中的至少一個(gè),包括數(shù)據(jù)類型、唯一數(shù)據(jù)標(biāo)識(shí)符、對(duì)數(shù)據(jù)執(zhí)行的操作以及操作序列。持續(xù)性上下文式元數(shù)據(jù)可以包括但不限于:數(shù)據(jù)的邏輯地址、數(shù)據(jù)的標(biāo)識(shí)符(例如文件名、對(duì)象id、標(biāo)簽、唯一標(biāo)識(shí)符等)、對(duì)其它數(shù)據(jù)的引用(例如該數(shù)據(jù)與其它數(shù)據(jù)關(guān)聯(lián)的指示符)、該數(shù)據(jù)相對(duì)于其它數(shù)據(jù)的相對(duì)位置或偏移(例如文件偏移等)、數(shù)據(jù)大小和/或范圍等。上下文式數(shù)據(jù)格式可以包括包含數(shù)據(jù)分段以及一個(gè)或多個(gè)頭的分組格式。替代地,上下文式數(shù)據(jù)格式可以通過(guò)其它方式(例如以非易失性存儲(chǔ)器介質(zhì)上的專用索引、存儲(chǔ)器分區(qū)索引等)將數(shù)據(jù)與上下文信息關(guān)聯(lián)。

在一些實(shí)施例中,上下文式數(shù)據(jù)格式可以允許數(shù)據(jù)上下文基于非易失性存儲(chǔ)器介質(zhì)的內(nèi)容并且獨(dú)立于其它元數(shù)據(jù)(例如上述任意任何對(duì)任何映射)而得以確定(和/或重構(gòu))。由于數(shù)據(jù)的介質(zhì)位置獨(dú)立于數(shù)據(jù)的邏輯地址,因此僅基于數(shù)據(jù)的介質(zhì)位置或介質(zhì)地址而確定數(shù)據(jù)的上下文可能是低效的(或不可能的)。將數(shù)據(jù)以上下文式格式存儲(chǔ)在非易失性存儲(chǔ)器介質(zhì)上可以允許在沒(méi)有對(duì)其它元數(shù)據(jù)的引用的情況下確定數(shù)據(jù)上下文。例如,上下文式數(shù)據(jù)格式可以允許僅基于非易失性存儲(chǔ)器介質(zhì)的內(nèi)容而重構(gòu)元數(shù)據(jù)(例如,重構(gòu)邏輯地址與介質(zhì)位置之間的任何對(duì)任何映射)。

在一些實(shí)施例中,非易失性存儲(chǔ)器控制器可以被配置為:將數(shù)據(jù)存儲(chǔ)在一個(gè)或多個(gè)不對(duì)稱的一次寫(xiě)入介質(zhì)(例如固態(tài)存儲(chǔ)介質(zhì))上。如在此所使用的那樣,“寫(xiě)入一次”存儲(chǔ)介質(zhì)指代每次在其上寫(xiě)入或編程新的數(shù)據(jù)就重新初始化(例如擦除)的存儲(chǔ)介質(zhì)。如在此所使用的那樣,“不對(duì)稱”存儲(chǔ)介質(zhì)指代關(guān)于不同存儲(chǔ)操作具有不同延時(shí)的存儲(chǔ)介質(zhì)。很多類型的固態(tài)存儲(chǔ)介質(zhì)是不對(duì)稱的;例如,讀取操作可以遠(yuǎn)比寫(xiě)入/編程操作更快,寫(xiě)入/編程操作可以遠(yuǎn)比擦除操作更快(例如,讀取介質(zhì)可以比擦除更快幾百倍,并且比對(duì)介質(zhì)進(jìn)行編程更快幾十倍)。為了特別考慮介質(zhì)的不對(duì)稱性質(zhì),存儲(chǔ)器介質(zhì)可以分區(qū)為可以成組地擦除的存儲(chǔ)器分區(qū)(例如擦除塊)。故此,原地修改單個(gè)數(shù)據(jù)分段可能要求擦除包括數(shù)據(jù)的整個(gè)擦除塊,并且將修改后的數(shù)據(jù)連同初始的未改變的數(shù)據(jù)一起重寫(xiě)到擦除塊。這樣可能導(dǎo)致低效的“寫(xiě)入放大”,其可能過(guò)度損耗介質(zhì)。因此,在一些實(shí)施例中,非易失性存儲(chǔ)器控制器可以被配置為:異地寫(xiě)入數(shù)據(jù)。如在此所使用的那樣,“異地”寫(xiě)入數(shù)據(jù)指代將數(shù)據(jù)寫(xiě)入到不同的介質(zhì)存儲(chǔ)位置,而非“原地”蓋寫(xiě)(overwrite)數(shù)據(jù)(例如,蓋寫(xiě)數(shù)據(jù)的初始物理位置)。由于無(wú)需擦除或重新拷貝具有待修改的數(shù)據(jù)的擦除塊上的現(xiàn)有有效數(shù)據(jù),因此異地修改數(shù)據(jù)可以避免寫(xiě)入放大。此外,異地寫(xiě)入數(shù)據(jù)可以從很多存儲(chǔ)操作的延時(shí)路徑消除擦除(擦除延時(shí)不再是寫(xiě)入操作的關(guān)鍵路徑的部分)。

非易失性存儲(chǔ)器控制器可以包括在用于服務(wù)于存儲(chǔ)操作的常規(guī)路徑(用于執(zhí)行存儲(chǔ)操作和/或服務(wù)于存儲(chǔ)請(qǐng)求的“路徑”)外部操作的一個(gè)或多個(gè)處理。如在此所使用的那樣,“用于服務(wù)于存儲(chǔ)請(qǐng)求的路徑”或“用于服務(wù)于存儲(chǔ)操作的路徑”(又稱為“關(guān)鍵路徑”)指代服務(wù)于存儲(chǔ)操作或請(qǐng)求所需的一系列處理操作(例如讀取、寫(xiě)入、修改等)。用于服務(wù)于存儲(chǔ)請(qǐng)求的路徑可以包括:從存儲(chǔ)客戶機(jī)接收請(qǐng)求;標(biāo)識(shí)請(qǐng)求的邏輯地址;對(duì)非易失性存儲(chǔ)器介質(zhì)執(zhí)行一個(gè)或多個(gè)存儲(chǔ)操作;以及返回結(jié)果(例如確認(rèn)或數(shù)據(jù))。產(chǎn)生在用于服務(wù)于存儲(chǔ)請(qǐng)求的路徑外部的處理可以包括但不限于:梳理器(groomer)、去重(de-duplication)等。這些處理可以自主地或在后臺(tái)中實(shí)現(xiàn),從而它們不干擾或影響執(zhí)行其它存儲(chǔ)操作和/或請(qǐng)求。相應(yīng)地,這些處理可以獨(dú)立于服務(wù)于存儲(chǔ)請(qǐng)求而操作。

在一些實(shí)施例中,非易失性存儲(chǔ)器控制器包括梳理器,其被配置為:回收存儲(chǔ)器分區(qū)(例如擦除塊),以用于復(fù)用。非易失性存儲(chǔ)器控制器所實(shí)現(xiàn)的寫(xiě)入異地范例可以產(chǎn)生非易失性存儲(chǔ)器介質(zhì)上剩余的過(guò)時(shí)或無(wú)效數(shù)據(jù)。例如,以數(shù)據(jù)Y來(lái)蓋寫(xiě)數(shù)據(jù)X可以導(dǎo)致將Y存儲(chǔ)在新的存儲(chǔ)器分區(qū)上(而非原地蓋寫(xiě)X),并且更新元數(shù)據(jù)的任何對(duì)任何映射,以將Y標(biāo)識(shí)為數(shù)據(jù)的有效的最新版本。由于如上所述,擦除X可能涉及擦除整個(gè)存儲(chǔ)器分區(qū),這是耗時(shí)的操作并且可能導(dǎo)致寫(xiě)入放大,因此數(shù)據(jù)X的過(guò)時(shí)的版本可以標(biāo)記為無(wú)效的,但可以不立即被移除(例如擦除)。相似地,可以不立即移除不再使用的數(shù)據(jù)(例如刪除的或修整的數(shù)據(jù))。非易失性存儲(chǔ)器介質(zhì)可能累計(jì)可觀量的無(wú)效數(shù)據(jù)。梳理器處理可以在用于服務(wù)于存儲(chǔ)操作的關(guān)鍵路徑外部操作。梳理器處理可以回收存儲(chǔ)器分區(qū),從而它們可以對(duì)于其它存儲(chǔ)操作而得以復(fù)用。如在此所使用的那樣,回收存儲(chǔ)器分區(qū)指代擦除存儲(chǔ)器分區(qū),從而新的數(shù)據(jù)可以存儲(chǔ)/編程于其上?;厥沾鎯?chǔ)器分區(qū)可以包括:將存儲(chǔ)器分區(qū)上的有效數(shù)據(jù)重新定位到新的位置。梳理器可以基于包括但不限于以下項(xiàng)的一個(gè)或多個(gè)因素而標(biāo)識(shí)用于回收的存儲(chǔ)器分區(qū):存儲(chǔ)器分區(qū)中的無(wú)效數(shù)據(jù)量、存儲(chǔ)器分區(qū)中的有效數(shù)據(jù)量、存儲(chǔ)器分區(qū)上的損耗(擦除周期的數(shù)量)、自從對(duì)存儲(chǔ)器分區(qū)進(jìn)行編程或刷新以來(lái)的時(shí)間等。

非易失性存儲(chǔ)器控制器可以進(jìn)一步被配置為:以日志格式來(lái)存儲(chǔ)數(shù)據(jù)。如上所述,日志格式指代定義對(duì)非易失性存儲(chǔ)器介質(zhì)執(zhí)行的有序存儲(chǔ)操作序列。在一些實(shí)施例中,日志格式包括:按非易失性存儲(chǔ)器介質(zhì)的預(yù)定介質(zhì)地址序列(例如,在介質(zhì)的順序頁(yè)面和/或擦除塊內(nèi))存儲(chǔ)數(shù)據(jù)。日志格式可以還包括:將數(shù)據(jù)(例如每個(gè)分組或數(shù)據(jù)分段)與各個(gè)序列指示符關(guān)聯(lián)。序列指示符可以單獨(dú)地應(yīng)用于數(shù)據(jù)(例如,應(yīng)用于每個(gè)數(shù)據(jù)分組),和/或應(yīng)用于數(shù)據(jù)成組(例如順序存儲(chǔ)在存儲(chǔ)器分區(qū)(例如擦除塊)上的分組)。在一些實(shí)施例中,當(dāng)回收(例如,擦除)存儲(chǔ)器分區(qū)時(shí),如上所述,和/或當(dāng)存儲(chǔ)器分區(qū)首先用于存儲(chǔ)數(shù)據(jù)時(shí),序列指示符可以應(yīng)用于存儲(chǔ)器分區(qū)。

在一些實(shí)施例中,日志格式可以包括:按“僅附接(append only)”范例來(lái)存儲(chǔ)數(shù)據(jù)。非易失性存儲(chǔ)器控制器可以在非易失性存儲(chǔ)器設(shè)備的介質(zhì)地址處保留當(dāng)前附接點(diǎn)。附接點(diǎn)可以是當(dāng)前存儲(chǔ)器分區(qū)和/或存儲(chǔ)器分區(qū)內(nèi)的偏移。數(shù)據(jù)可以于是得以順序從附接點(diǎn)附接。因此可以基于與存儲(chǔ)器分區(qū)內(nèi)的數(shù)據(jù)序列組合的數(shù)據(jù)的存儲(chǔ)器分區(qū)的序列指示符而確定數(shù)據(jù)的順序排序。在到達(dá)存儲(chǔ)器分區(qū)的末端時(shí),非易失性存儲(chǔ)器控制器可以標(biāo)識(shí)“下一”可用存儲(chǔ)器分區(qū)(得以初始化并且準(zhǔn)備存儲(chǔ)數(shù)據(jù)的下一存儲(chǔ)器分區(qū))。梳理器可以回收包括無(wú)效的、陳舊的和/或刪除的數(shù)據(jù)的存儲(chǔ)器分區(qū),以確保數(shù)據(jù)可以繼續(xù)附接到介質(zhì)日志。

在此所描述的日志格式可以允許基于非易失性存儲(chǔ)器介質(zhì)的內(nèi)容并且獨(dú)立于其它元數(shù)據(jù)而區(qū)分有效數(shù)據(jù)與無(wú)效數(shù)據(jù)。如上所述,可以直到回收包括數(shù)據(jù)的存儲(chǔ)器分區(qū)才從非易失性存儲(chǔ)器介質(zhì)移除無(wú)效數(shù)據(jù)。因此,具有相同上下文的數(shù)據(jù)的多個(gè)“版本”(例如具有相同邏輯地址的數(shù)據(jù)的多個(gè)版本)可以存在于非易失性存儲(chǔ)器介質(zhì)上。與數(shù)據(jù)關(guān)聯(lián)的序列指示符可以用于區(qū)分?jǐn)?shù)據(jù)的無(wú)效版本與數(shù)據(jù)的當(dāng)前最新版本;日志中的最新近的數(shù)據(jù)是當(dāng)前版本,并且此前的版本可以標(biāo)識(shí)為無(wú)效的。

在以下詳細(xì)描述中,參照形成其一部分的附圖。前述發(fā)明內(nèi)容僅是說(shuō)明性的,并且不意圖以任何方式限制。除了以上描述的說(shuō)明性方面、實(shí)施例和特征之外,其它方面、實(shí)施例和特征將通過(guò)參照附圖和以下詳細(xì)描述變得清楚。

圖1是包括管理模塊150的系統(tǒng)100的一個(gè)實(shí)施例的框圖。通常,管理模塊150被配置為:動(dòng)態(tài)地和/或智能地管理用于非易失性存儲(chǔ)器介質(zhì)122的回拷和/或內(nèi)部數(shù)據(jù)移動(dòng)(IDM)操作,以優(yōu)化不同類型的存儲(chǔ)單元(例如SLC、MLC、TLC)之間的數(shù)據(jù)的拷貝或移動(dòng)和/或數(shù)據(jù)的訪問(wèn)。在特定實(shí)施例中,管理模塊150可以被配置為:有選擇地確定是否在內(nèi)部拷貝或移動(dòng)數(shù)據(jù);基于數(shù)據(jù)的一個(gè)或多個(gè)屬性(例如數(shù)據(jù)因素)而從第一非易失性存儲(chǔ)單元集合(例如SLC存儲(chǔ)單元)到第二非易失性存儲(chǔ)單元集合(例如TLC存儲(chǔ)單元)使用回拷操作、IDM操作等。在另一實(shí)施例中,管理模塊150可以被配置為:基于數(shù)據(jù)的一個(gè)或多個(gè)屬性(例如數(shù)據(jù)因素)等而有選擇地確定是否刷新回拷或IDM操作的數(shù)據(jù)(例如,對(duì)數(shù)據(jù)進(jìn)行解碼,以糾正一個(gè)或多個(gè)錯(cuò)誤,并且對(duì)糾正后的數(shù)據(jù)進(jìn)行重新編碼)。在一個(gè)實(shí)施例中,管理模塊150可以被配置為:調(diào)整用于第一非易失性存儲(chǔ)單元集合(例如SLC存儲(chǔ)單元)的一個(gè)或多個(gè)讀取電壓閾值,以減少用于將數(shù)據(jù)拷貝或移動(dòng)到第二非易失性存儲(chǔ)單元集合(例如TLC存儲(chǔ)單元)的數(shù)據(jù)中的錯(cuò)誤。

管理模塊150可以是存儲(chǔ)管理層(SML)130的部分和/或與之進(jìn)行通信。SML 130可以在計(jì)算設(shè)備110的非易失性存儲(chǔ)器系統(tǒng)102上操作,計(jì)算設(shè)備110可以包括處理器111、易失性存儲(chǔ)器112和通信接口113。處理器111可以包括一個(gè)或多個(gè)中央處理單元、一個(gè)或多個(gè)通用處理器、一個(gè)或多個(gè)專用處理器、一個(gè)或多個(gè)虛擬處理器(例如,計(jì)算設(shè)備110可以是在主機(jī)內(nèi)操作的虛擬機(jī))、一個(gè)或多個(gè)處理器內(nèi)核等。通信接口113可以包括網(wǎng)絡(luò)接口,被配置為:以通信方式將計(jì)算設(shè)備110(和/或非易失性存儲(chǔ)器控制器124)耦合到通信網(wǎng)絡(luò)(例如互聯(lián)網(wǎng)協(xié)議網(wǎng)絡(luò)、存儲(chǔ)域網(wǎng)絡(luò)等)。

計(jì)算設(shè)備110可以還包括非瞬時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)114。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)114可以包括可執(zhí)行指令,被配置為:使得計(jì)算設(shè)備110(例如處理器111)執(zhí)行在此所公開(kāi)的方法中的一個(gè)或多個(gè)的步驟。替代地或附加地,存儲(chǔ)管理層130和/或其一個(gè)或多個(gè)模塊可以實(shí)施為非瞬時(shí)存儲(chǔ)介質(zhì)114上所存儲(chǔ)的一個(gè)或多個(gè)指令。

存儲(chǔ)管理層130可以被配置為:將存儲(chǔ)服務(wù)提供給一個(gè)或多個(gè)存儲(chǔ)客戶機(jī)116。存儲(chǔ)客戶機(jī)116可以包括計(jì)算設(shè)備110上操作的本地存儲(chǔ)客戶機(jī)116和/或可經(jīng)由網(wǎng)絡(luò)(和網(wǎng)絡(luò)接口113)訪問(wèn)的遠(yuǎn)程存儲(chǔ)客戶機(jī)116,。存儲(chǔ)客戶機(jī)116可以包括但不限于操作系統(tǒng)、文件系統(tǒng)、數(shù)據(jù)庫(kù)應(yīng)用、服務(wù)器應(yīng)用、內(nèi)核級(jí)處理、用戶級(jí)處理、應(yīng)用等。

存儲(chǔ)管理層130包括和/或以通信方式耦合到一個(gè)或多個(gè)非易失性存儲(chǔ)器設(shè)備120。非易失性存儲(chǔ)器設(shè)備120可以包括不同類型的非易失性存儲(chǔ)器設(shè)備,包括但不限于:固態(tài)存儲(chǔ)設(shè)備、硬驅(qū)動(dòng)器、SAN存儲(chǔ)資源等。非易失性存儲(chǔ)器設(shè)備120可以包括一個(gè)或多個(gè)各個(gè)非易失性存儲(chǔ)器介質(zhì)控制器126以及非易失性存儲(chǔ)器介質(zhì)122。SML 130可以提供經(jīng)由傳統(tǒng)塊I/O接口131對(duì)一個(gè)或多個(gè)非易失性存儲(chǔ)器設(shè)備120的訪問(wèn)。附加地,SML 130可以提供通過(guò)SML接口132對(duì)增強(qiáng)的功能性(大的虛擬地址空間)的訪問(wèn)。元數(shù)據(jù)135可以用于管理和/或跟蹤通過(guò)塊I/O接口131、SML接口132、緩存接口133或其它有關(guān)接口中的任一所執(zhí)行的存儲(chǔ)操作。

緩存接口133可以顯露可經(jīng)由存儲(chǔ)管理層130訪問(wèn)的緩存特定特征。此外,在一些實(shí)施例中,呈現(xiàn)給存儲(chǔ)客戶機(jī)116的SML接口132提供對(duì)一個(gè)或多個(gè)非易失性存儲(chǔ)器設(shè)備120和/或一個(gè)或多個(gè)非易失性存儲(chǔ)器介質(zhì)控制器126所實(shí)現(xiàn)的數(shù)據(jù)變換的訪問(wèn)。

SML 130可以通過(guò)可以包括但不限于以下接口的一個(gè)或多個(gè)接口提供存儲(chǔ)服務(wù):塊I/O接口、擴(kuò)展的存儲(chǔ)管理層接口、緩存接口等。SML 130通過(guò)一個(gè)或多個(gè)接口將邏輯地址空間134呈現(xiàn)給存儲(chǔ)客戶機(jī)116。如上所述,邏輯地址空間134可以包括均與一個(gè)或多個(gè)非易失性存儲(chǔ)器設(shè)備120上的各個(gè)介質(zhì)位置對(duì)應(yīng)的多個(gè)邏輯地址。SML 130可以保存包括邏輯地址與介質(zhì)位置之間的任何對(duì)任何映射的元數(shù)據(jù)135,如上所述。

SML 130可以還包括日志存儲(chǔ)模塊137,其被配置為:以上下文式日志格式來(lái)存儲(chǔ)數(shù)據(jù)。上下文式日志數(shù)據(jù)格式可以包括:將數(shù)據(jù)與持續(xù)性上下文式元數(shù)據(jù)(例如數(shù)據(jù)的邏輯地址等)關(guān)聯(lián)。上下文式日志格式可以還包括:將數(shù)據(jù)與定義對(duì)一個(gè)或多個(gè)非易失性存儲(chǔ)器設(shè)備120執(zhí)行的有序存儲(chǔ)操作序列的非易失性存儲(chǔ)器介質(zhì)122上的各個(gè)序列標(biāo)識(shí)符關(guān)聯(lián),如上所述。

SML 130可以還包括非易失性存儲(chǔ)器設(shè)備接口139,被配置為:通過(guò)包括但不限于以下總線的總線125將數(shù)據(jù)、命令和/或詢問(wèn)傳送到一個(gè)或多個(gè)非易失性存儲(chǔ)器設(shè)備120:外圍組件互連高速(PCI高速或PCIe)總線、串行高級(jí)技術(shù)附連(ATA)總線、并行ATA總線、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)、火線、光纖通道、通用串行總線(USB)、PCIe高級(jí)切換(PCIe-AS)總線、網(wǎng)絡(luò)、無(wú)限帶、SCSI RDMA等。非易失性存儲(chǔ)器設(shè)備接口139可以使用輸入-輸出控制(IO-CTL)命令、IO-CTL命令擴(kuò)展、遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)等與一個(gè)或多個(gè)非易失性存儲(chǔ)器設(shè)備120進(jìn)行通信。通信接口113可以包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口,被配置為:以通信方式將計(jì)算設(shè)備110(和/或非易失性存儲(chǔ)器控制器124)耦合到網(wǎng)絡(luò)115和/或一個(gè)或多個(gè)遠(yuǎn)程網(wǎng)絡(luò)可訪問(wèn)存儲(chǔ)客戶機(jī)116。

計(jì)算設(shè)備110可以包括非易失性存儲(chǔ)器控制器124,其被配置為:將存儲(chǔ)服務(wù)提供給存儲(chǔ)客戶機(jī)116。存儲(chǔ)客戶機(jī)116可以包括計(jì)算設(shè)備110上操作的本地存儲(chǔ)客戶機(jī)116和/或可經(jīng)由網(wǎng)絡(luò)115(和網(wǎng)絡(luò)接口113)訪問(wèn)的遠(yuǎn)程存儲(chǔ)客戶機(jī)116。非易失性存儲(chǔ)器控制器124包括一個(gè)或多個(gè)非易失性存儲(chǔ)器設(shè)備120。雖然圖1B描述單個(gè)非易失性存儲(chǔ)器設(shè)備120,但本公開(kāi)不限于此,并且可以適用于合并任何數(shù)量的非易失性存儲(chǔ)器設(shè)備120。

非易失性存儲(chǔ)器設(shè)備120可以包括非易失性存儲(chǔ)器介質(zhì)122,其可以包括但不限于:NAND閃速存儲(chǔ)器、NOR閃速存儲(chǔ)器、納米隨機(jī)訪問(wèn)存儲(chǔ)器(納米R(shí)AM或NRAM)、基于納米晶體引線的存儲(chǔ)器、基于二氧化硅的亞10納米工藝存儲(chǔ)器、石墨烯存儲(chǔ)器、硅-氧化物-氮化物-氧化物-硅(SONOS)、阻性RAM(RRAM)、可編程金屬化單元(PMC)、導(dǎo)電橋接RAM(CBRAM)、磁阻式RAM(MRAM)、動(dòng)態(tài)RAM(DRAM)、相變存儲(chǔ)器(PRAM或PCM)、磁存儲(chǔ)介質(zhì)(例如硬盤(pán)、帶)、光存儲(chǔ)介質(zhì)等。雖然非易失性存儲(chǔ)器介質(zhì)122在各個(gè)實(shí)施例中在此稱為“存儲(chǔ)器介質(zhì)”,但非易失性存儲(chǔ)器介質(zhì)122可以更一般地包括能夠記錄數(shù)據(jù)的非易失性記錄介質(zhì),其可以稱為非易失性存儲(chǔ)器介質(zhì)、非易失性存儲(chǔ)介質(zhì)等。此外,非易失性存儲(chǔ)器設(shè)備120在各個(gè)實(shí)施例中可以包括非易失性記錄設(shè)備、非易失性存儲(chǔ)器設(shè)備、非易失性存儲(chǔ)設(shè)備等。

非易失性存儲(chǔ)器介質(zhì)122可以包括用于存儲(chǔ)數(shù)據(jù)的多個(gè)單元。如在此所使用的那樣,單元指代非易失性存儲(chǔ)器介質(zhì)122的存儲(chǔ)器件或存儲(chǔ)器的最小物理單元。在一些實(shí)施例中,每個(gè)單元具有可以被改動(dòng)以對(duì)數(shù)據(jù)進(jìn)行編碼或另外存儲(chǔ)數(shù)據(jù)的物理和/或電性質(zhì)。雖然非易失性存儲(chǔ)器介質(zhì)122的單元一般在此稱為“存儲(chǔ)器單元”或“存儲(chǔ)單元”,但單元可以更一般地包括能夠記錄數(shù)據(jù)的記錄單元。此外,雖然在此主要關(guān)于非易失性存儲(chǔ)器介質(zhì)122描述管理模塊150,但在特定實(shí)施例中,管理模塊150可以按實(shí)質(zhì)上相似的方式操作,以管理易失性存儲(chǔ)器介質(zhì)。

非易失性存儲(chǔ)器介質(zhì)122可以包括一個(gè)或多個(gè)非易失性存儲(chǔ)器元件123,其可以包括但不限于:芯片、封裝、平面、裸芯等。非易失性存儲(chǔ)器介質(zhì)控制器126可以被配置為管理非易失性存儲(chǔ)器介質(zhì)122上的存儲(chǔ)操作,并且可以包括一個(gè)或多個(gè)處理器、可編程處理器(例如現(xiàn)場(chǎng)可編程門(mén)陣列)等。在一些實(shí)施例中,非易失性存儲(chǔ)器介質(zhì)控制器126被配置為:以上述上下文式日志格式將數(shù)據(jù)存儲(chǔ)在(并且將數(shù)據(jù)讀取自)非易失性存儲(chǔ)器介質(zhì)122上,將數(shù)據(jù)傳送入/出非易失性存儲(chǔ)器設(shè)備120等。

非易失性存儲(chǔ)器介質(zhì)控制器126可以通過(guò)總線127的方式以通信方式耦合到非易失性存儲(chǔ)器介質(zhì)122??偩€127可以包括I/O總線,用于將數(shù)據(jù)傳遞入/出非易失性存儲(chǔ)器元件123。總線127可以還包括控制總線,用于將尋址和另外命令和控制信息傳遞到非易失性存儲(chǔ)器元件123。在一些實(shí)施例中,總線127可以并行地以通信方式將非易失性存儲(chǔ)器元件123耦合到非易失性存儲(chǔ)器介質(zhì)控制器126。這種并行訪問(wèn)可以允許非易失性存儲(chǔ)器元件123作為形成邏輯存儲(chǔ)器元件129的群組而被管理。如上所述,邏輯存儲(chǔ)器元件可以分區(qū)為各個(gè)邏輯存儲(chǔ)器單元(例如邏輯頁(yè)面)和/或邏輯存儲(chǔ)器分區(qū)(例如邏輯擦除塊)??梢酝ㄟ^(guò)在邏輯上組合非易失性存儲(chǔ)器元件中的每一個(gè)的物理存儲(chǔ)器單元來(lái)形成邏輯存儲(chǔ)器單元。例如,如果非易失性存儲(chǔ)器介質(zhì)122包括二十五(25)個(gè)非易失性存儲(chǔ)器元件,則每個(gè)邏輯存儲(chǔ)器單元可以包括二十五(25)個(gè)頁(yè)面(非易失性存儲(chǔ)器介質(zhì)122的每個(gè)元件的頁(yè)面)。

非易失性存儲(chǔ)器控制器124可以包括SML 130和非易失性存儲(chǔ)器介質(zhì)控制器126。SML 130可以經(jīng)由一個(gè)或多個(gè)接口131、132和/或133將存儲(chǔ)服務(wù)提供給存儲(chǔ)客戶機(jī)116。在一些實(shí)施例中,SML 130提供塊設(shè)備I/O接口131,存儲(chǔ)客戶機(jī)116通過(guò)其執(zhí)行塊等級(jí)I/O操作。替代地或附加地,SML 130可以提供存儲(chǔ)管理層(SML)接口132,其可以將其它存儲(chǔ)服務(wù)提供給存儲(chǔ)客戶機(jī)116。在一些實(shí)施例中,SML接口132可以包括對(duì)塊設(shè)備接口131的擴(kuò)展(例如,存儲(chǔ)客戶機(jī)116可以通過(guò)對(duì)塊設(shè)備的接口131的擴(kuò)展來(lái)訪問(wèn)SML接口132)。替代地或附加地,SML接口132可以提供為分離的API、服務(wù)和/或庫(kù)。SML 130可以進(jìn)一步被配置為:提供緩存接口133,以用于使用非易失性存儲(chǔ)器系統(tǒng)102來(lái)緩存數(shù)據(jù)。

如上所述,SML 130可以(通過(guò)接口131、132和/或133)將邏輯地址空間134呈現(xiàn)給存儲(chǔ)客戶機(jī)116。SML 130可以保存包括邏輯地址空間134中的邏輯地址與非易失性存儲(chǔ)器設(shè)備120上的介質(zhì)位置之間的任何對(duì)任何映射的元數(shù)據(jù)135。元數(shù)據(jù)135可以包括具有映射邏輯地址空間134中的邏輯地址和非易失性存儲(chǔ)器設(shè)備120上的介質(zhì)位置的項(xiàng)的邏輯到物理映射結(jié)構(gòu)。元數(shù)據(jù)135的邏輯到物理映射結(jié)構(gòu)在一個(gè)實(shí)施例中稀疏地遍布有用于非易失性存儲(chǔ)器設(shè)備120存儲(chǔ)數(shù)據(jù)的邏輯地址的項(xiàng),但沒(méi)有用于非易失性存儲(chǔ)器設(shè)備120當(dāng)前不存儲(chǔ)數(shù)據(jù)的邏輯地址的項(xiàng)。元數(shù)據(jù)135在特定實(shí)施例中按塊等級(jí)來(lái)跟蹤數(shù)據(jù),其中,SML 130將數(shù)據(jù)管理為塊。

非易失性存儲(chǔ)器系統(tǒng)102可以還包括日志存儲(chǔ)模塊137,其如上所述可以被配置為:以上下文式日志格式將數(shù)據(jù)存儲(chǔ)在非易失性存儲(chǔ)器設(shè)備120上。上下文式日志數(shù)據(jù)格式可以包括:將數(shù)據(jù)與非易失性存儲(chǔ)器介質(zhì)122上的邏輯地址關(guān)聯(lián)。上下文式日志格式可以還包括:將數(shù)據(jù)與定義對(duì)非易失性存儲(chǔ)器介質(zhì)122執(zhí)行的有序存儲(chǔ)操作序列的非易失性存儲(chǔ)器介質(zhì)122上的各個(gè)序列標(biāo)識(shí)符關(guān)聯(lián),如上所述。非易失性存儲(chǔ)器控制器124可以還包括非易失性存儲(chǔ)器設(shè)備接口139,其被配置為:通過(guò)總線125將數(shù)據(jù)、命令和/或詢問(wèn)傳送到非易失性存儲(chǔ)器介質(zhì)控制器126,如上所述。

在特定實(shí)施例中,非易失性存儲(chǔ)器介質(zhì)122包括多個(gè)不同類型的介質(zhì)(例如SLC存儲(chǔ)單元、MLC存儲(chǔ)單元、TLC存儲(chǔ)單元等)。例如,非易失性存儲(chǔ)器介質(zhì)122的每個(gè)芯片、裸芯、裸芯平面等可以包括SLC存儲(chǔ)單元的一個(gè)或多個(gè)擦除塊,以緩沖或另外存儲(chǔ)用于TLC存儲(chǔ)單元的一個(gè)或多個(gè)擦除塊的數(shù)據(jù)。在另一實(shí)施例中,擦除塊內(nèi)的單獨(dú)字線和/或頁(yè)面可以通過(guò)各種組合而被配置和/或使用作為SLC存儲(chǔ)單元、MLC存儲(chǔ)單元、TLC存儲(chǔ)單元等。例如,特定類型的3D NAND閃速存儲(chǔ)器介質(zhì)122可以包括具有單獨(dú)地可配置為SLC、MLC、TLC、四級(jí)式單元(quad-level-cell,QLC)等的字線或頁(yè)面的擦除塊。

包括不同層式或類型的介質(zhì)的非易失性存儲(chǔ)器介質(zhì)122可以稱為“裸芯上緩沖式”存儲(chǔ)器介質(zhì)122,如在此所使用的那樣。在其它實(shí)施例中,非易失性存儲(chǔ)器介質(zhì)122可以包括:SLC存儲(chǔ)單元,用于緩沖用于MLC存儲(chǔ)單元的數(shù)據(jù);MLC存儲(chǔ)單元,用于緩沖用于TLC存儲(chǔ)單元的數(shù)據(jù);或第一源存儲(chǔ)單元的另一組合,用于緩沖用于具有比第一源存儲(chǔ)單元更多的每單元的存儲(chǔ)狀態(tài)和比特的第二目的地存儲(chǔ)單元的數(shù)據(jù)。雖然在此為的簡(jiǎn)化的目的而描述執(zhí)行從SLC存儲(chǔ)單元到TLC存儲(chǔ)單元的回拷操作,但該描述同等地應(yīng)用于對(duì)于不同模式或不同類型中的其它存儲(chǔ)單元集合從SLC到MLC、從MLC到TLC、從SLC到QLC、從MLC到QLC、從TLC到QLC存儲(chǔ)單元等的回拷操作。

隨著每單元的存儲(chǔ)狀態(tài)和比特的數(shù)量增加,讀取時(shí)間、寫(xiě)入/編程時(shí)間等也可能增加。此外,在特定實(shí)施例中,存儲(chǔ)單元集合中的每個(gè)存儲(chǔ)單元被配置為存儲(chǔ)的數(shù)據(jù)的比特越多,在對(duì)存儲(chǔ)單元集合進(jìn)行編程之前可以緩沖數(shù)據(jù)越多。并非在非易失性存儲(chǔ)器介質(zhì)控制器126、SML 130、主機(jī)計(jì)算設(shè)備110等的易失性存儲(chǔ)器中緩沖數(shù)據(jù),管理模塊150可以在非易失性存儲(chǔ)器介質(zhì)122中緩沖數(shù)據(jù)。例如,管理模塊150可以在SLC存儲(chǔ)單元的三個(gè)擦除塊中緩沖或存儲(chǔ)數(shù)據(jù),以用于存儲(chǔ)在TLC存儲(chǔ)單元等的單個(gè)擦除塊中。

如在此所使用的那樣,回拷或IDM操作、過(guò)程或處理包括:將數(shù)據(jù)從第一源存儲(chǔ)單元集合拷貝或移動(dòng)到第二目的地存儲(chǔ)單元集合。通過(guò)將數(shù)據(jù)從較不密集的存儲(chǔ)單元拷貝或移動(dòng)到較密集的存儲(chǔ)單元(例如,將數(shù)據(jù)從SLC存儲(chǔ)單元拷貝到MLC存儲(chǔ)單元或TLC存儲(chǔ)單元),IDM操作可以壓縮所拷貝的數(shù)據(jù)。在數(shù)據(jù)緩存在第一存儲(chǔ)單元集合中以用于存儲(chǔ)第二存儲(chǔ)單元集合中的實(shí)施例等中,回拷或IDM可以還包括:降級(jí)(destage)。

管理模塊150可以使用回拷或IDM操作來(lái)管理不同存儲(chǔ)單元集合(例如頁(yè)面、擦除塊等)之間的數(shù)據(jù)的拷貝或移動(dòng)。例如,非易失性存儲(chǔ)器介質(zhì)122可以支持或提供用于執(zhí)行回拷操作的回拷或IDM命令,管理模塊150可以使用其以在內(nèi)部拷貝或移動(dòng)數(shù)據(jù)。在其它實(shí)施例中,管理模塊150可以使用通用讀取和寫(xiě)入/編程命令等在沒(méi)有回拷或IDM命令的情況下執(zhí)行回拷或IDM操作。管理模塊150在一個(gè)實(shí)施例中被配置為:動(dòng)態(tài)地和/或智能地管理用于非易失性存儲(chǔ)器介質(zhì)122的回拷和/或IDM操作,以優(yōu)化不同類型的存儲(chǔ)單元(例如SLC、MLC、TLC)之間的數(shù)據(jù)的拷貝或移動(dòng)和/或數(shù)據(jù)的訪問(wèn)。

在特定實(shí)施例中,管理模塊150可以被配置為:基于一個(gè)或多個(gè)數(shù)據(jù)因素(data factor)而有選擇地確定是否使用從第一非易失性存儲(chǔ)單元集合(例如SLC存儲(chǔ)單元)到第二非易失性存儲(chǔ)單元集合(例如TLC存儲(chǔ)單元)的回拷操作、IDM操作等來(lái)在內(nèi)部拷貝或移動(dòng)數(shù)據(jù)。例如,管理模塊150可以在至少臨時(shí)地將較高優(yōu)先級(jí)和/或較頻繁訪問(wèn)的數(shù)據(jù)留在較快的較不密集的存儲(chǔ)單元中的同時(shí)、在內(nèi)部將較低優(yōu)先級(jí)和/或較不頻繁訪問(wèn)的數(shù)據(jù)從較快的較不密集的存儲(chǔ)單元(例如SLC存儲(chǔ)單元)回拷或移動(dòng)到較慢的較密集的存儲(chǔ)單元(例如TLC存儲(chǔ)單元),由此對(duì)于較高優(yōu)先級(jí)和/或較頻繁訪問(wèn)的數(shù)據(jù)提供更高的性能、可靠性等。

在另一實(shí)施例中,管理模塊150可以被配置為:基于一個(gè)或多個(gè)數(shù)據(jù)因素等而有選擇地確定是否刷新回拷或IDM操作的數(shù)據(jù)(例如,對(duì)數(shù)據(jù)進(jìn)行解碼,以糾正一個(gè)或多個(gè)錯(cuò)誤,并且對(duì)糾正后的數(shù)據(jù)進(jìn)行重新編碼)。通過(guò)對(duì)數(shù)據(jù)進(jìn)行解碼并且重新編碼來(lái)刷新數(shù)據(jù)可以包括:將數(shù)據(jù)從非易失性存儲(chǔ)器元件123(例如芯片、裸芯、裸芯平面)拷貝或移動(dòng)到非易失性存儲(chǔ)器介質(zhì)控制器126、存儲(chǔ)管理層130和/或用于解碼并且重新編碼的另一實(shí)體。在管理模塊150可以在不刷新數(shù)據(jù)的情況下回拷或移動(dòng)數(shù)據(jù)的實(shí)施例中,數(shù)據(jù)可以保留在單個(gè)非易失性存儲(chǔ)器元件123(例如芯片、裸芯、裸芯平面)內(nèi),從而回拷和/或IDM過(guò)程可以完成,而沒(méi)有將數(shù)據(jù)拷貝或移動(dòng)離開(kāi)非易失性存儲(chǔ)器元件123以用于解碼并且重新編碼以及將重新編碼后的數(shù)據(jù)拷貝或移動(dòng)回到非易失性存儲(chǔ)器元件123的性能懲罰。以此方式,管理模塊150可以刷新特定數(shù)據(jù),以在不刷新數(shù)據(jù)的情況下拷貝或移動(dòng)返回其它數(shù)據(jù)的同時(shí)減少或防止錯(cuò)誤。

在一個(gè)實(shí)施例中,管理模塊150可以被配置為:調(diào)整用于第一非易失性存儲(chǔ)單元集合(例如SLC存儲(chǔ)單元)的一個(gè)或多個(gè)讀取電壓閾值,以減少用于將數(shù)據(jù)拷貝或移動(dòng)到第二非易失性存儲(chǔ)單元集合(例如TLC存儲(chǔ)單元)的數(shù)據(jù)中的錯(cuò)誤。在不管理用于源非易失性存儲(chǔ)單元的讀取電壓閾值的情況下,在數(shù)據(jù)變?yōu)槭軗p并且錯(cuò)誤被引入之前,管理模塊150可能具有對(duì)于數(shù)據(jù)執(zhí)行回拷和/或IDM操作的有限時(shí)間。在源非易失性存儲(chǔ)單元(例如SLC存儲(chǔ)單元)中引入到數(shù)據(jù)的任何錯(cuò)誤可能通過(guò)將受損的數(shù)據(jù)拷貝或移動(dòng)到目的地非易失性存儲(chǔ)單元(例如TLC存儲(chǔ)單元)而被放大或加劇。通過(guò)調(diào)整用于源非易失性存儲(chǔ)單元的一個(gè)或多個(gè)讀取電壓閾值,管理模塊150可以在有或無(wú)刷新數(shù)據(jù)的情況下減少或消除數(shù)據(jù)錯(cuò)誤,允許數(shù)據(jù)存儲(chǔ)在源非易失性存儲(chǔ)單元中達(dá)比如果使用默認(rèn)讀取電壓閾值更長(zhǎng)的時(shí)間段。

在一個(gè)實(shí)施例中,管理模塊150可以包括存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)114上以用于在處理器111上執(zhí)行的可執(zhí)行軟件代碼(例如用于非易失性存儲(chǔ)器設(shè)備120、SML 130等的設(shè)備驅(qū)動(dòng)程序)。在另一實(shí)施例中,管理模塊150可以包括一個(gè)或多個(gè)非易失性存儲(chǔ)器設(shè)備120的邏輯硬件,例如非易失性存儲(chǔ)器介質(zhì)控制器126、非易失性存儲(chǔ)器控制器124、設(shè)備控制器、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或另外可編程邏輯、用于FPGA或另外可編程邏輯的固件、用于在微控制器上執(zhí)行的微碼、專用集成電路(ASIC)等。在另一實(shí)施例中,管理模塊150可以包括可執(zhí)行軟件代碼和邏輯硬件二者的組合。

在一個(gè)實(shí)施例中,管理模塊150被配置為:經(jīng)由總線125等從SML 130接收存儲(chǔ)請(qǐng)求。管理模塊150可以進(jìn)一步被配置為:經(jīng)由總線125將數(shù)據(jù)傳送入/出SML 130和/或存儲(chǔ)客戶機(jī)116。相應(yīng)地,管理模塊150在一些實(shí)施例中可以包括一個(gè)或多個(gè)直接存儲(chǔ)器訪問(wèn)(DMA)模塊、遠(yuǎn)程DMA模塊、總線控制器、橋、緩沖器等和/或與之進(jìn)行通信,以促進(jìn)傳送存儲(chǔ)請(qǐng)求和關(guān)聯(lián)數(shù)據(jù)。在另一實(shí)施例中,管理模塊150可以從存儲(chǔ)客戶機(jī)116接收存儲(chǔ)請(qǐng)求作為來(lái)自存儲(chǔ)客戶機(jī)116的API調(diào)用、作為IO-CTL命令等。以下關(guān)于圖3A和圖3B更詳細(xì)地描述管理模塊150。

“單元(cell)”指代非易失性存儲(chǔ)器介質(zhì)122的存儲(chǔ)或存儲(chǔ)器的最小物理單元。在一些實(shí)施例中,每個(gè)單元具有可以被改動(dòng)以對(duì)數(shù)據(jù)進(jìn)行編碼或另外存儲(chǔ)數(shù)據(jù)的物理和/或電性質(zhì)。例如,在閃速存儲(chǔ)器中,單元可以包括浮置柵極晶體管,并且用于對(duì)數(shù)據(jù)進(jìn)行編碼的物理性質(zhì)可以是存儲(chǔ)在浮置柵極上的電荷、當(dāng)施加到控制柵極時(shí)足以使得晶體管導(dǎo)通的閾值電壓Vt等。作為另一示例,在相變存儲(chǔ)器中,單元可以是硫族(chalcogenide)玻璃的區(qū)域,并且用于對(duì)數(shù)據(jù)進(jìn)行編碼的物理性質(zhì)可以是區(qū)域的結(jié)晶程度、單元的電阻等。如以上關(guān)于非易失性存儲(chǔ)器介質(zhì)122所描述的那樣,很多類型的單元可以對(duì)非易失性存儲(chǔ)器設(shè)備120的數(shù)據(jù)進(jìn)行編碼,以用于隨管理模塊150一起使用。

在一個(gè)實(shí)施例中,用于單元的數(shù)據(jù)編碼物理性質(zhì)的可能值的范圍劃分為離散編程狀態(tài)或停留態(tài)(abode),從而每個(gè)編程狀態(tài)或停留態(tài)對(duì)一個(gè)或多個(gè)可能數(shù)據(jù)值進(jìn)行編碼。在一些實(shí)施例中,編程狀態(tài)或停留態(tài)被配置為:對(duì)用于多個(gè)比特的值進(jìn)行編碼。例如,如果單元使用兩個(gè)狀態(tài)來(lái)存儲(chǔ)單個(gè)比特(例如,在SLC模式下),則第一狀態(tài)可以對(duì)二進(jìn)制一“1”進(jìn)行編碼,而第二狀態(tài)可以對(duì)二進(jìn)制零“0”進(jìn)行編碼。如果單元使用四個(gè)狀態(tài)來(lái)存儲(chǔ)兩個(gè)比特(例如,在MLC模式下),則每個(gè)狀態(tài)可以對(duì)用于單元的兩個(gè)比特的不同值(例如“11”、“01”、“00”或“10”)進(jìn)行編碼。如果單元使用八個(gè)狀態(tài)來(lái)存儲(chǔ)三個(gè)比特(例如,在TLC模式下),則每個(gè)狀態(tài)可以對(duì)用于單元的三個(gè)比特的不同值(例如“111”、“011”、“001”、“101”、“100”、“000”、“010”或“110”)進(jìn)行編碼。在另一實(shí)施例中,可以通過(guò)保護(hù)帶或分離距離來(lái)分離單元的狀態(tài)或停留態(tài)。如在此所使用的那樣,編程“狀態(tài)”或“停留態(tài)”指代用于單元的數(shù)據(jù)編碼物理性質(zhì)的可能值的子范圍,從而每個(gè)狀態(tài)與一個(gè)或多個(gè)數(shù)據(jù)值的單個(gè)集合對(duì)應(yīng)。停留態(tài)、編程狀態(tài)(program stage)、編程化狀態(tài)(programming state)或存儲(chǔ)狀態(tài)可以包括與一個(gè)或多個(gè)數(shù)據(jù)值的特定集合關(guān)聯(lián)的讀取等級(jí)的范圍(例如用于閃速介質(zhì)的讀取電壓電平、用于PCM介質(zhì)的讀取電阻率等級(jí)等)。讀取閾值(例如讀取電壓閾值、讀取電阻率閾值等)可以分開(kāi)停留態(tài)或編程狀態(tài)。以下關(guān)于圖9A更詳細(xì)地描述狀態(tài)/停留態(tài)和保護(hù)帶。

在一些實(shí)施例中,編碼將單元的狀態(tài)或停留態(tài)映射為數(shù)據(jù)值。通常,編碼是允許單元的每個(gè)狀態(tài)或停留態(tài)表示對(duì)應(yīng)數(shù)據(jù)值或數(shù)據(jù)值集合的映射。例如,在具有兩個(gè)狀態(tài)的單元(例如SLC)中,編碼可以將較低狀態(tài)(lower state)映射為二進(jìn)制“1”,并且將較高狀態(tài)(upper state)映射為“0”,從而單元存儲(chǔ)一個(gè)比特的信息。作為另一示例,在具有四個(gè)狀態(tài)的單元(例如MLC)中,Gray碼編碼等可以將四個(gè)狀態(tài)L0、L1、L2和L3分別映射為“11”、“01”、“00”和“10”,從而單元存儲(chǔ)兩個(gè)比特的信息。相似地,在具有八個(gè)狀態(tài)的單元(例如TLC)中,Gray碼編碼等可以將八個(gè)狀態(tài)L0、L1、L2、L3、L4、L5、L6和L7映射為數(shù)據(jù)值“111”、“011”、“001”、“101”、“100”、“000”、“010”以及“110”,從而單元存儲(chǔ)、包括和/或編碼三個(gè)比特的信息。非易失性存儲(chǔ)器介質(zhì)122可以使用其它編碼來(lái)存儲(chǔ)數(shù)據(jù)。以下關(guān)于圖9B更詳細(xì)地描述編碼。

如下所述,多層式或MLC存儲(chǔ)器單元存儲(chǔ)至少兩個(gè)比特:最高有效比特(MSB)和最低有效比特(LSB)。一種類型的MLC存儲(chǔ)器介質(zhì)是三級(jí)式單元(TLC)存儲(chǔ)器介質(zhì),其對(duì)三個(gè)比特——MSB、中間有效比特(CSB)和LSB進(jìn)行存儲(chǔ)或編碼。MLC存儲(chǔ)器介質(zhì)的其它實(shí)施例可以對(duì)每單元多于三個(gè)比特進(jìn)行存儲(chǔ)或編碼(例如對(duì)四個(gè)比特進(jìn)行編碼的具有每單元十六個(gè)停留態(tài)或編程狀態(tài)的四級(jí)式單元等)。在特定實(shí)施例中,MSB、CSB和/或LSB雖然是同一物理存儲(chǔ)器單元的部分,但可以分配給非易失性存儲(chǔ)器介質(zhì)122的不同頁(yè)面(例如較高頁(yè)面、中間頁(yè)面或較低頁(yè)面)。

在特定實(shí)施例中,多個(gè)多層式存儲(chǔ)單元在非易失性存儲(chǔ)器介質(zhì)122(例如NAND閃速存儲(chǔ)器介質(zhì))上組織為物理頁(yè)面。在特定非易失性存儲(chǔ)器介質(zhì)122中,物理頁(yè)面是可以寫(xiě)入或編程到非易失性存儲(chǔ)器介質(zhì)122的最小單元。在這些實(shí)施例中,存儲(chǔ)器單元可以與包括用于單元的每個(gè)比特的頁(yè)面(例如用于MLC的兩個(gè)頁(yè)面或頁(yè)面對(duì)、用于TLC的三個(gè)頁(yè)面)的頁(yè)面元組關(guān)聯(lián)。頁(yè)面元組是與單個(gè)普通物理存儲(chǔ)器單元集合關(guān)聯(lián)的頁(yè)面集合(例如上、中和/或下)。例如,存儲(chǔ)器單元可以與包括較高頁(yè)面和較低頁(yè)面的頁(yè)面對(duì)、包括較高頁(yè)面、中間頁(yè)面和較低頁(yè)面的頁(yè)面元組(tuple)等關(guān)聯(lián)。較高頁(yè)面可以與MSB關(guān)聯(lián),中間頁(yè)面可以與CSB關(guān)聯(lián),較低頁(yè)面可以與LSB關(guān)聯(lián),或反之。物理頁(yè)面在特定實(shí)施例中可以成組或組織為邏輯頁(yè)面,其中,每個(gè)邏輯頁(yè)面包括多個(gè)物理頁(yè)面。

因此,存儲(chǔ)器單元的MSB、CSB和LSB可以在非易失性存儲(chǔ)器設(shè)備120中具有不同的地址。在特定實(shí)施例中,較高頁(yè)面包括多個(gè)存儲(chǔ)器單元的MSB,中間頁(yè)面包括多個(gè)存儲(chǔ)器單元的CBS,較低頁(yè)面包括相同普通存儲(chǔ)器單元集合或多個(gè)存儲(chǔ)器單元的LSB。基于用于存儲(chǔ)器單元的停留態(tài)或編程狀態(tài)的數(shù)據(jù)編碼,針對(duì)較高頁(yè)面的寫(xiě)入可以因此產(chǎn)生僅關(guān)聯(lián)存儲(chǔ)器單元的MSB的改變,針對(duì)中間頁(yè)面的寫(xiě)入可以產(chǎn)生僅關(guān)聯(lián)存儲(chǔ)器單元的CSB的改變,針對(duì)較低頁(yè)面的寫(xiě)入可以產(chǎn)生僅關(guān)聯(lián)存儲(chǔ)器單元的LSB的改變。

管理模塊150在特定實(shí)施例中寫(xiě)入數(shù)據(jù)和/或使得數(shù)據(jù)根據(jù)用于非易失性存儲(chǔ)器介質(zhì)122的有序頁(yè)面編程順序而編碼到存儲(chǔ)器單元集合。例如,有序頁(yè)面編程順序可以指示:在對(duì)第二/中間頁(yè)面進(jìn)行編程之前對(duì)第一/較低頁(yè)面進(jìn)行編程,在對(duì)第三/較高頁(yè)面進(jìn)行編程之前對(duì)第二/中間頁(yè)面進(jìn)行編程,或用于單元集合的頁(yè)面編程的另一預(yù)先定義的順序。非易失性存儲(chǔ)器介質(zhì)122可以要求多級(jí)編程處理(例如兩級(jí)編程處理(例如較低頁(yè)面,然后較高頁(yè)面,或反之亦然))、三級(jí)編程處理(例如較低頁(yè)面,然后中間頁(yè)面,然后較高頁(yè)面)等。在另一實(shí)施例中,特定非易失性存儲(chǔ)器介質(zhì)122可以要求存儲(chǔ)器單元集合的每個(gè)頁(yè)面或比特是已知的,出現(xiàn),準(zhǔn)備被編程,和/或同時(shí)被編程(例如,在對(duì)較低頁(yè)面進(jìn)行編程之前,數(shù)據(jù)的中間頁(yè)面和/或較高頁(yè)面被編程或準(zhǔn)備編程)。

在一些實(shí)施例中,每個(gè)非易失性存儲(chǔ)器單元具有2^X個(gè)可能的編程狀態(tài)或停留態(tài),其中,X等于每非易失性存儲(chǔ)器單元的比特的數(shù)量。例如,MLC非易失性存儲(chǔ)器單元可以存儲(chǔ)兩個(gè)比特的信息,并且相應(yīng)地具有四個(gè)可能的編程狀態(tài)或停留態(tài)。作為另一示例,TLC非易失性存儲(chǔ)器單元可以存儲(chǔ)三個(gè)比特的信息,并且相應(yīng)地具有八個(gè)可能的編程狀態(tài)或停留態(tài)。

如上所述,即使MSB、CSB和LSB是同一物理三層式存儲(chǔ)器單元402的部分,MSB、CSB和LSB也可以分配給介質(zhì)的不同物理和/或邏輯頁(yè)面。在特定實(shí)施例中,多個(gè)非易失性存儲(chǔ)器單元在邏輯上組織為非易失性存儲(chǔ)器設(shè)備120上的一個(gè)或多個(gè)頁(yè)面。頁(yè)面可以用作可以寫(xiě)入或編程到非易失性存儲(chǔ)器設(shè)備120的最小單元的指定。此外,非易失性存儲(chǔ)器單元可以與頁(yè)面元組關(guān)聯(lián)。頁(yè)面元組是與單個(gè)普通物理非易失性存儲(chǔ)器單元集合關(guān)聯(lián)的頁(yè)面集合(例如,指定為較低頁(yè)面、中間頁(yè)面和/或較高頁(yè)面)。在一個(gè)示例中,兩比特非易失性存儲(chǔ)器單元與頁(yè)面對(duì)關(guān)聯(lián),其中,MSB與較高頁(yè)面關(guān)聯(lián),LSB與較低頁(yè)面關(guān)聯(lián)。在特定實(shí)施例中用于將MSB/CSB/LSB與上/中/較低頁(yè)面進(jìn)行相關(guān)的特定慣例并非一定限制可以在其它實(shí)施例中使用的其它慣例。因此,同一非易失性存儲(chǔ)器單元中的MSB、CSB和LSB在非易失性存儲(chǔ)器設(shè)備120中可以具有不同邏輯和/或物理地址。

此外,可以在一個(gè)或多個(gè)級(jí)中實(shí)現(xiàn)寫(xiě)入操作,并且每個(gè)級(jí)可以包括一個(gè)或多個(gè)增量電壓電平改變(例如增量步長(zhǎng)(step)脈沖編程)。例如,將非易失性存儲(chǔ)器單元的狀態(tài)從擦除狀態(tài)/L0改變?yōu)闋顟B(tài)A/L1可以遍及多個(gè)增量電壓電平改變而產(chǎn)生在單個(gè)編程階段中,每個(gè)電壓電平改變將非易失性存儲(chǔ)器單元的電壓電平增加擦除狀態(tài)/L0與A/L1狀態(tài)之間的小部分差異。在另一示例中,可以遍及單個(gè)電壓電平改變(具有相對(duì)高的編程電壓)或遍及多個(gè)增量電壓電平改變(均使用相對(duì)低的編程電壓)在單個(gè)編程階段中執(zhí)行將非易失性存儲(chǔ)器單元的狀態(tài)從擦除狀態(tài)/L0改變?yōu)長(zhǎng)M狀態(tài)。

在一些實(shí)施例中,可以在不同的停留態(tài)或編程狀態(tài)之間以讀取電壓閾值來(lái)執(zhí)行一個(gè)或多個(gè)讀取操作,以確定讀取電壓落入哪個(gè)停留態(tài)或編程狀態(tài)下。例如,對(duì)于MLC存儲(chǔ)器單元,可以對(duì)非易失性存儲(chǔ)器單元執(zhí)行第一讀取操作,以確定讀取電壓是否處于ERASE/L0狀態(tài)與A/L1狀態(tài)之間,可以執(zhí)行第二讀取操作,以在A/L1狀態(tài)與B/L2狀態(tài)之間進(jìn)行區(qū)分,并且可以執(zhí)行第三讀取操作,以在B/L2與C/L3狀態(tài)之間進(jìn)行區(qū)分。因?yàn)槊總€(gè)編程化狀態(tài)與兩個(gè)(或更多個(gè))比特對(duì)應(yīng),所以一旦標(biāo)識(shí)編程化狀態(tài),就可以獲知MSB和LSB二者。在特定實(shí)施例中,響應(yīng)于對(duì)非易失性存儲(chǔ)器設(shè)備120上所存儲(chǔ)的數(shù)據(jù)的請(qǐng)求而讀取數(shù)據(jù)比特。

圖2描述包括管理模塊150的非易失性存儲(chǔ)器控制器124的一個(gè)實(shí)施例。非易失性存儲(chǔ)器設(shè)備120可以包括非易失性存儲(chǔ)器介質(zhì)控制器126和非易失性存儲(chǔ)器介質(zhì)122。非易失性存儲(chǔ)器介質(zhì)122可以包括多個(gè)非易失性存儲(chǔ)器元件123,其可以經(jīng)由總線127通過(guò)通信方式耦合到非易失性存儲(chǔ)器介質(zhì)控制器126,如上所述。

非易失性存儲(chǔ)器介質(zhì)控制器126可以包括寫(xiě)入流水線240,其被配置為:響應(yīng)于經(jīng)由管理模塊150接收到的請(qǐng)求而以上下文式格式將數(shù)據(jù)存儲(chǔ)在非易失性存儲(chǔ)器介質(zhì)122上。請(qǐng)求可以包括和/或引用待存儲(chǔ)在非易失性存儲(chǔ)器介質(zhì)122上的數(shù)據(jù),可以包括數(shù)據(jù)的邏輯地址等。如上所述,上下文式格式可以包括:在非易失性存儲(chǔ)器介質(zhì)122上存儲(chǔ)與數(shù)據(jù)關(guān)聯(lián)的數(shù)據(jù)的邏輯地址。例如,寫(xiě)入流水線240可以被配置為:將數(shù)據(jù)格式化為分組,并且可以在分組頭(或其它分組字段)中包括數(shù)據(jù)的邏輯地址。寫(xiě)入流水線240在特定實(shí)施例中可以使用糾錯(cuò)碼(ECC)(例如分組碼、卷積碼、Bose-Chaudhuri-Hocquenghem(BCH)碼、低密度奇偶校驗(yàn)(LDPC)碼、Hamming碼、Reed-Solomon碼、turbo碼等)來(lái)對(duì)數(shù)據(jù)進(jìn)行編碼和/或保護(hù)。寫(xiě)入流水線240可以被配置為:緩沖數(shù)據(jù),以用于存儲(chǔ)在非易失性存儲(chǔ)器介質(zhì)122上。在一些實(shí)施例中,寫(xiě)入流水線240可以包括一個(gè)或多個(gè)同步緩沖器,以將非易失性存儲(chǔ)器介質(zhì)控制器126的時(shí)鐘域與非易失性存儲(chǔ)器介質(zhì)122(和/或總線127)的時(shí)鐘域同步。

日志存儲(chǔ)模塊248可以被配置為:選擇用于數(shù)據(jù)的介質(zhì)位置,并且可以經(jīng)由總線127將尋址和/或控制信息提供給非易失性存儲(chǔ)器元件123。在一些實(shí)施例中,日志存儲(chǔ)模塊248被配置為:以日志格式有序地將數(shù)據(jù)存儲(chǔ)在非易失性存儲(chǔ)器介質(zhì)內(nèi)。日志存儲(chǔ)模塊248可以進(jìn)一步被配置為:梳理非易失性存儲(chǔ)器介質(zhì)。在特定實(shí)施例中,日志存儲(chǔ)模塊248實(shí)質(zhì)上與上述日志存儲(chǔ)模塊137相似。日志存儲(chǔ)模塊248可以由SML 130和/或非易失性存儲(chǔ)器介質(zhì)控制器126執(zhí)行。

在將數(shù)據(jù)寫(xiě)入到非易失性存儲(chǔ)器介質(zhì)時(shí),非易失性存儲(chǔ)器介質(zhì)控制器126可以被配置為:更新元數(shù)據(jù)135(例如前向索引),以將數(shù)據(jù)的邏輯地址與非易失性存儲(chǔ)器介質(zhì)122上的數(shù)據(jù)的介質(zhì)地址關(guān)聯(lián)。在一些實(shí)施例中,元數(shù)據(jù)135可以保存在非易失性存儲(chǔ)器介質(zhì)控制器126上;例如,元數(shù)據(jù)135可以存儲(chǔ)在非易失性存儲(chǔ)器介質(zhì)122、易失性存儲(chǔ)器(未示出)等上。替代地或附加地,元數(shù)據(jù)135可以保存在SML 130內(nèi)(例如圖1的計(jì)算設(shè)備110的易失性存儲(chǔ)器112上)。在一些實(shí)施例中,元數(shù)據(jù)135可以由SML 130保存在易失性存儲(chǔ)器中,并且可以周期性地存儲(chǔ)在非易失性存儲(chǔ)器介質(zhì)122上。

非易失性存儲(chǔ)器介質(zhì)控制器126可以還包括讀取流水線241,其被配置為:響應(yīng)于經(jīng)由管理模塊150接收到的請(qǐng)求而從非易失性存儲(chǔ)器介質(zhì)122讀取上下文式數(shù)據(jù)。請(qǐng)求可以包括所請(qǐng)求的數(shù)據(jù)的邏輯地址、所請(qǐng)求的數(shù)據(jù)的介質(zhì)地址等。讀取流水線241在特定實(shí)施例中可以使用糾錯(cuò)碼(ECC)(例如分組碼、卷積碼、Bose-Chaudhuri-HocquenghemBCH)碼、低密度奇偶校驗(yàn)(LDPC)碼、Hamming碼、Reed-Solomon碼、turbo碼等)來(lái)對(duì)關(guān)于數(shù)據(jù)的一個(gè)或多個(gè)數(shù)據(jù)錯(cuò)誤進(jìn)行解碼和/或糾正。讀取流水線241可以被配置為:從非易失性存儲(chǔ)器介質(zhì)122讀取以上下文式格式存儲(chǔ)的數(shù)據(jù),并且將數(shù)據(jù)提供給SML 130和/或存儲(chǔ)客戶機(jī)116。讀取流水線241可以被配置為:使用數(shù)據(jù)的邏輯地址和元數(shù)據(jù)135來(lái)確定數(shù)據(jù)的介質(zhì)地址。替代地或附加地,SML130可以存儲(chǔ)數(shù)據(jù)的介質(zhì)地址,并且可以在請(qǐng)求中包括介質(zhì)地址。日志存儲(chǔ)模塊248可以將介質(zhì)地址提供給非易失性存儲(chǔ)器元件123,并且數(shù)據(jù)可以經(jīng)由緩沖器流送到讀取流水線241中。讀取流水線241可以包括一個(gè)或多個(gè)讀取同步緩沖器,以用于時(shí)鐘域同步,如上所述。

非易失性存儲(chǔ)器介質(zhì)控制器126可以還包括復(fù)用器249,其被配置為:有選擇地將數(shù)據(jù)和/或命令路由入/出寫(xiě)入流水線240和讀取流水線241。在一些實(shí)施例中,非易失性存儲(chǔ)器介質(zhì)控制器126可以被配置為在填充寫(xiě)入流水線240的緩沖器的同時(shí)讀取數(shù)據(jù),和/或可以交錯(cuò)非易失性存儲(chǔ)器元件123的一個(gè)或多個(gè)組(未示出)上的一個(gè)或多個(gè)存儲(chǔ)操作。

圖3A描述管理模塊150的一個(gè)實(shí)施例。管理模塊150可以實(shí)質(zhì)上與以上關(guān)于圖1所描述的管理模塊150相似。在所描述的實(shí)施例中,管理模塊150包括緩沖器模塊302、刷新模塊304和回拷模塊306。

在一個(gè)實(shí)施例中,緩沖器模塊302在第一非易失性存儲(chǔ)單元集合(例如SLC存儲(chǔ)單元的一個(gè)或多個(gè)擦除塊)中緩沖或另外存儲(chǔ)數(shù)據(jù)(例如寫(xiě)入請(qǐng)求的用戶數(shù)據(jù)或其它工作量數(shù)據(jù))。緩沖器模塊302可以從一個(gè)或多個(gè)存儲(chǔ)客戶機(jī)116接收與一個(gè)或多個(gè)寫(xiě)入/編程請(qǐng)求等關(guān)聯(lián)的數(shù)據(jù)。緩沖器模塊302可以臨時(shí)將數(shù)據(jù)存儲(chǔ)或搬運(yùn)在易失性存儲(chǔ)器緩沖器(例如主機(jī)計(jì)算設(shè)備110的易失性存儲(chǔ)器112、非易失性存儲(chǔ)器設(shè)備120的易失性存儲(chǔ)器等)中,以促進(jìn)將數(shù)據(jù)編程到非易失性存儲(chǔ)器介質(zhì)122的存儲(chǔ)單元集合。

在特定實(shí)施例中,緩沖器模塊302可以將被緩沖的數(shù)據(jù)存儲(chǔ)在非易失性存儲(chǔ)器設(shè)備120自身的非易失性存儲(chǔ)器介質(zhì)122內(nèi)(例如被配置為或分區(qū)為SLC存儲(chǔ)器單元的一個(gè)或多個(gè)第一/源擦除塊中),從而數(shù)據(jù)得以持續(xù)性地存儲(chǔ),但從而有序編程順序不應(yīng)用。例如,非易失性存儲(chǔ)器設(shè)備120內(nèi)可能不存在足夠的易失性存儲(chǔ)器,用于非易失性存儲(chǔ)器設(shè)備120的保持時(shí)間可孟并非長(zhǎng)得足以對(duì)所有被緩沖的數(shù)據(jù)等進(jìn)行編程,并且將數(shù)據(jù)緩沖在非易失性存儲(chǔ)器介質(zhì)122中可以保護(hù)數(shù)據(jù)不受功率故障,從而在從來(lái)自一個(gè)或多個(gè)第一/源擦除塊的功率不足的恢復(fù)之后仍可以對(duì)數(shù)據(jù)進(jìn)行編程。例如,為了提供更大的數(shù)據(jù)吞吐量、寫(xiě)入帶寬等,非易失性存儲(chǔ)器控制器124、126和/或緩沖器模塊302可以使用交錯(cuò)的編程順序。對(duì)于具有每單元三個(gè)頁(yè)面或比特的TLC存儲(chǔ)器單元,緩沖器模塊302可以指令非易失性存儲(chǔ)器設(shè)備120按交錯(cuò)順序編程(例如第一存儲(chǔ)器單元集合的較低頁(yè)面、第二存儲(chǔ)器單元集合的較低頁(yè)面、第三存儲(chǔ)器單元集合的較低頁(yè)面、第一存儲(chǔ)器單元集合的中間頁(yè)面、第二存儲(chǔ)器單元集合的中間頁(yè)面、第三存儲(chǔ)器單元集合的中間頁(yè)面、第一存儲(chǔ)器單元集合的較高頁(yè)面、第二存儲(chǔ)器單元集合的較高頁(yè)面、以及第三存儲(chǔ)器單元集合的較高頁(yè)面等)。在該實(shí)施例中,緩沖器模塊302可以一次緩沖若干頁(yè)面。

在特定實(shí)施例中,非易失性存儲(chǔ)器介質(zhì)122可以要求在對(duì)任何頁(yè)面進(jìn)行編程之前獲知用于存儲(chǔ)器單元集合的數(shù)據(jù)的所有三個(gè)頁(yè)面,或同時(shí)對(duì)所有三個(gè)頁(yè)面進(jìn)行編程。如果并未對(duì)所有三個(gè)頁(yè)面進(jìn)行編程,則若重啟事件產(chǎn)生,那么甚至所編程的頁(yè)面可能丟失。出于至少這些原因,在特定實(shí)施例中,緩沖器模塊302可以緩沖或存儲(chǔ)用于存儲(chǔ)單元集合的數(shù)據(jù)的所有三個(gè)頁(yè)面。在另一實(shí)施例中,為了提供上述交錯(cuò),緩沖器模塊302可以緩沖九個(gè)頁(yè)面,三個(gè)用于三個(gè)不同存儲(chǔ)單元集合(例如在一個(gè)擦除塊內(nèi)、在一個(gè)或多個(gè)不同的擦除塊內(nèi)等的頁(yè)面或字線)中的每一個(gè)。

緩沖器模塊302在各個(gè)實(shí)施例中可以將數(shù)據(jù)緩沖或存儲(chǔ)在SLC存儲(chǔ)單元中以用于拷貝到TLC存儲(chǔ)單元,將數(shù)據(jù)緩沖或存儲(chǔ)在SLC存儲(chǔ)單元中以用于拷貝到MLC存儲(chǔ)單元,將數(shù)據(jù)緩沖或存儲(chǔ)在MLC存儲(chǔ)單元中以用于拷貝到TLC存儲(chǔ)單元,或另外將數(shù)據(jù)緩沖或存儲(chǔ)在第一存儲(chǔ)單元集合中以用于拷貝到具有比第一存儲(chǔ)單元集合更多的每單元存儲(chǔ)狀態(tài)或比特的第二存儲(chǔ)單元集合。例如,緩沖器模塊302可以將數(shù)據(jù)緩沖或存儲(chǔ)在三個(gè)SLC擦除塊中,以用于拷貝或移動(dòng)回到TLC擦除塊等。緩沖器模塊302可以從讀取流水線241接收用于緩沖或存儲(chǔ)的數(shù)據(jù),如以上關(guān)于圖2所描述的那樣,這樣可以對(duì)數(shù)據(jù)進(jìn)行分組,通過(guò)糾錯(cuò)碼(ECC)對(duì)數(shù)據(jù)進(jìn)行編碼,壓縮數(shù)據(jù),和/或?qū)?shù)據(jù)執(zhí)行其它操作。

在一個(gè)實(shí)施例中,刷新模塊304有選擇地刷新來(lái)自第一非易失性存儲(chǔ)單元集合(例如SLC存儲(chǔ)單元)的數(shù)據(jù),以用于將數(shù)據(jù)拷貝或移動(dòng)回到第二非易失性存儲(chǔ)單元集合(例如TLC存儲(chǔ)單元)。如在此所使用的那樣,刷新數(shù)據(jù)包括:對(duì)數(shù)據(jù)執(zhí)行一個(gè)或多個(gè)操作或處理。在一個(gè)實(shí)施例中,用于數(shù)據(jù)的ECC刷新包括:執(zhí)行ECC解碼,以糾正關(guān)于數(shù)據(jù)的錯(cuò)誤;以及執(zhí)行用于數(shù)據(jù)的ECC重新編碼,以保護(hù)數(shù)據(jù)不受隨后錯(cuò)誤。例如,刷新模塊304在特定實(shí)施例中可以使用ECC解碼器,以對(duì)數(shù)據(jù)進(jìn)行解碼,和/或糾正數(shù)據(jù)中的一個(gè)或多個(gè)數(shù)據(jù)錯(cuò)誤,并且可以使用ECC編碼器,以對(duì)數(shù)據(jù)進(jìn)行重新編碼。在另一實(shí)施例中,刷新模塊304可以通過(guò)對(duì)數(shù)據(jù)進(jìn)行重新分組(例如,移除頭或其它元數(shù)據(jù)并且以新的頭或其它元數(shù)據(jù)來(lái)重新格式化數(shù)據(jù))來(lái)對(duì)數(shù)據(jù)進(jìn)行刷新和/或重新編碼。對(duì)數(shù)據(jù)進(jìn)行重新分組在特定實(shí)施例中可以為刷新模塊304提供用于從正被刷新的頁(yè)面或擦除塊移除無(wú)效數(shù)據(jù)(例如已經(jīng)通過(guò)對(duì)同一邏輯地址的寫(xiě)入請(qǐng)求所蓋寫(xiě)的數(shù)據(jù))的機(jī)會(huì)。

并非刷新回拷模塊306如下所述拷貝回到更密集的存儲(chǔ)單元(例如從SLC存儲(chǔ)單元到TLC存儲(chǔ)單元)的所有數(shù)據(jù),刷新模塊304可以有選擇地刷新數(shù)據(jù),基于用于數(shù)據(jù)的一個(gè)或多個(gè)屬性(例如數(shù)據(jù)因素)等而確定是否刷新數(shù)據(jù)。以下關(guān)于圖3B的數(shù)據(jù)因素模塊322更詳細(xì)地描述確定數(shù)據(jù)因素或數(shù)據(jù)的其它屬性。在一個(gè)實(shí)施例中,與數(shù)據(jù)關(guān)聯(lián)的屬性(例如數(shù)據(jù)因素)包括與所存儲(chǔ)的數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)的非易失性存儲(chǔ)單元等關(guān)聯(lián)的特征或方面。數(shù)據(jù)因素或其它與數(shù)據(jù)關(guān)聯(lián)的屬性在特定實(shí)施例中可以包括關(guān)聯(lián)數(shù)據(jù)具有一個(gè)或多個(gè)數(shù)據(jù)錯(cuò)誤的似然率(likelihood)的指示符。數(shù)據(jù)因素或與數(shù)據(jù)關(guān)聯(lián)的其它的屬性在各個(gè)實(shí)施例中可以包括以下項(xiàng)中的一個(gè)或多個(gè):用于數(shù)據(jù)的服務(wù)質(zhì)量(QoS)等級(jí)或其它優(yōu)先級(jí)、用于數(shù)據(jù)的錯(cuò)誤率(例如原始誤比特率(RBER)或不可糾正的誤比特率(UBER))、用于數(shù)據(jù)的年齡(例如保留時(shí)間或自從寫(xiě)入以來(lái)的時(shí)間)、用于第一/源非易失性存儲(chǔ)單元集合的編程/擦除周期計(jì)數(shù)、用于數(shù)據(jù)的寫(xiě)入頻率、用于數(shù)據(jù)的讀取頻率、關(guān)于第一/源非易失性存儲(chǔ)單元集合所滿足的容量閾值等。例如,刷新模塊304可以僅刷新具有特定錯(cuò)誤率的數(shù)據(jù)、具有特定服務(wù)質(zhì)量等級(jí)的數(shù)據(jù)、比特定年齡或保留時(shí)間閾值更舊的數(shù)據(jù)等,允許回拷模塊306在數(shù)據(jù)不被刷新的情況下回拷或移動(dòng)其它數(shù)據(jù)。

在一個(gè)實(shí)施例中,刷新模塊304和/或數(shù)據(jù)因素模塊322可以基于數(shù)據(jù)因素或僅用于數(shù)據(jù)子集(例如單個(gè)ECC碼字或片塊(chunk)等)的其它屬性并且對(duì)讀取數(shù)據(jù)子集的結(jié)果進(jìn)行的因素分解(factoring)以確定一個(gè)或多個(gè)數(shù)據(jù)因素或其它屬性,來(lái)確定是否刷新第一源存儲(chǔ)單元集合(例如邏輯或物理SLC頁(yè)面、邏輯或物理SLC擦除塊)。例如,在刷新模塊304被配置為在頁(yè)面接頁(yè)面(page by page)的基礎(chǔ)上刷新數(shù)據(jù)、并且物理或邏輯頁(yè)面包括多個(gè)ECC碼字或片塊的實(shí)施例中,刷新模塊304和/或數(shù)據(jù)因素模塊322可以對(duì)一個(gè)或多個(gè)ECC碼字的子集進(jìn)行讀取和/或解碼,并且基于讀取ECC碼字的子集的結(jié)果(例如錯(cuò)誤率、錯(cuò)誤的數(shù)量、隨數(shù)據(jù)所存儲(chǔ)的元數(shù)據(jù)所指示的服務(wù)質(zhì)量或優(yōu)先級(jí)等級(jí)等)而確定是否刷新整個(gè)物理或邏輯頁(yè)面。例如,如果刷新模塊304和/或數(shù)據(jù)因素模塊322確定來(lái)自邏輯或物理頁(yè)面的樣本ECC碼字沒(méi)有任何錯(cuò)誤,沒(méi)有任何不可糾正的錯(cuò)誤,具有不滿足預(yù)先確定的錯(cuò)誤閾值的多個(gè)錯(cuò)誤等,則刷新模塊304可以確定回拷模塊306可以在不刷新數(shù)據(jù)的情況下在內(nèi)部將邏輯或物理頁(yè)面拷貝或移動(dòng)回到第二目的地存儲(chǔ)單元集合(例如TLC存儲(chǔ)單元的頁(yè)面)。

在回拷和/或IDM操作包括拷貝或移動(dòng)多個(gè)頁(yè)面(例如,將三個(gè)SLC頁(yè)面拷貝到與相同TLC存儲(chǔ)單元集合關(guān)聯(lián)的三個(gè)TLC頁(yè)面)的實(shí)施例中,刷新模塊304可以在不刷新一個(gè)或多個(gè)其它頁(yè)面的情況下刷新回拷和/或IDM操作的一個(gè)或多個(gè)頁(yè)面。刷新模塊304在特定實(shí)施例中可以與回拷模塊306協(xié)作,以訪問(wèn)用于刷新的數(shù)據(jù)、用于確定是否刷新數(shù)據(jù)、等等。在一個(gè)實(shí)施例中,回拷模塊306如下所述可以將數(shù)據(jù)從第一存儲(chǔ)單元集合(例如SLC頁(yè)面和/或擦除塊)讀取、加載、移動(dòng)和/或拷貝到易失性存儲(chǔ)器(例如易失性讀取緩沖器、易失性編程緩沖器、緩存緩沖器等),并且刷新模塊304可以讀取或另外訪問(wèn)來(lái)自易失性緩沖器的數(shù)據(jù),以確定是否刷新數(shù)據(jù)、以刷新數(shù)據(jù)、等等。

對(duì)于刷新模塊304刷新的數(shù)據(jù),在特定實(shí)施例中,刷新模塊304可以將刷新后的重新編碼后的數(shù)據(jù)移動(dòng)、拷貝或加載回到易失性存儲(chǔ)器中,從而回拷模塊306可以使用刷新后的重新編碼后的數(shù)據(jù)完成回拷和/或IDM操作。如以下關(guān)于圖4更詳細(xì)地描述的那樣,單個(gè)非易失性存儲(chǔ)器元件123(例如非易失性存儲(chǔ)器介質(zhì)122的芯片、裸芯、裸芯平面、封裝、組、通道等)可以包括具有對(duì)不同數(shù)量的比特進(jìn)行編碼的不同數(shù)量的存儲(chǔ)狀態(tài)或停留態(tài)的非易失性存儲(chǔ)單元(例如一個(gè)或多個(gè)SLC擦除塊、一個(gè)或多個(gè)MLC擦除塊、一個(gè)或多個(gè)TLC擦除塊等)以及易失性存儲(chǔ)器(例如易失性讀取緩沖器、易失性編程緩沖器、緩存緩沖器等)。

在特定實(shí)施例中,刷新模塊304并未刷新的數(shù)據(jù)在整個(gè)回拷或IDM過(guò)程(例如從第一存儲(chǔ)單元集合拷貝或移動(dòng)到易失性存儲(chǔ)器并且從易失性存儲(chǔ)器拷貝或移動(dòng)到第二存儲(chǔ)單元集合)期間被保留在同一非易失性存儲(chǔ)器元件123內(nèi)。刷新模塊304刷新和/或重新編碼的數(shù)據(jù)在一個(gè)實(shí)施例中可以通過(guò)總線127、125、離開(kāi)關(guān)聯(lián)的非易失性存儲(chǔ)器元件123去往非易失性存儲(chǔ)器介質(zhì)控制器126、SML 130、主機(jī)易失性存儲(chǔ)器112等,以用于刷新。

在特定實(shí)施例中,一旦刷新模塊304已經(jīng)對(duì)數(shù)據(jù)進(jìn)行刷新和/或重新編碼,刷新模塊304就可以將數(shù)據(jù)移動(dòng)、拷貝或加載回到關(guān)聯(lián)非易失性存儲(chǔ)器元件123的易失性存儲(chǔ)器中,從而回拷和/或IDM操作可以完成。在另一實(shí)施例中,至少對(duì)于特定類型的刷新或重新編碼(例如,對(duì)數(shù)據(jù)進(jìn)行重新分組),刷新模塊304可以將數(shù)據(jù)放置在寫(xiě)入流水線240中,寫(xiě)入流水線240可以對(duì)數(shù)據(jù)進(jìn)行刷新、編碼和/或分組。并非對(duì)于使用寫(xiě)入流水線240所刷新的數(shù)據(jù)完成對(duì)同一非易失性存儲(chǔ)器元件123的回拷和/或IDM操作,在特定實(shí)施例中,刷新模塊304和/或?qū)懭肓魉€240可以將刷新后的數(shù)據(jù)寫(xiě)入到新的位置(例如有序的基于日志的寫(xiě)入結(jié)構(gòu)的附接點(diǎn)等)。在特定實(shí)施例中,新的位置可以包括具有與讀取數(shù)據(jù)(例如回到SLC存儲(chǔ)單元的緩沖器)的第一源存儲(chǔ)單元集合相同的存儲(chǔ)狀態(tài)的數(shù)量、相同的每單元的比特的數(shù)量等的存儲(chǔ)單元,在此數(shù)據(jù)可以稍后經(jīng)受隨后回拷和/或IDM操作等。

通過(guò)有選擇地確定是否刷新源頁(yè)面、源擦除塊等(例如SLC存儲(chǔ)單元)的數(shù)據(jù)用于回拷和/或IDM操作,而非簡(jiǎn)單地刷新所有數(shù)據(jù),刷新模塊304可以減少在回拷和/或IDM操作期間非易失性存儲(chǔ)器元件123的拷貝丟掉的數(shù)據(jù)量。刷新模塊304可以由此在仍刷新其它數(shù)據(jù)以糾正特定數(shù)據(jù)錯(cuò)誤的同時(shí)避免刷新特定數(shù)據(jù)的性能懲罰。以此方式,刷新模塊304可以通過(guò)優(yōu)化地確定正移動(dòng)(例如從SLC存儲(chǔ)單元到TLC存儲(chǔ)單元)的頁(yè)面是否應(yīng)在被移動(dòng)(例如到TLC頁(yè)面)之前被錯(cuò)誤校驗(yàn)和/或糾正來(lái)優(yōu)化用于非易失性存儲(chǔ)器介質(zhì)122的裸芯上緩沖式回拷和/或IDM操作。如上所述,對(duì)ECC碼字進(jìn)行解碼、糾正一個(gè)或多個(gè)錯(cuò)誤以及對(duì)碼字進(jìn)行重新編碼的處理可以稱為刷新、數(shù)據(jù)刷新、編碼刷新、重新編碼、數(shù)據(jù)重新編碼等。

雖然在特定實(shí)施例中,非易失性存儲(chǔ)器介質(zhì)122的制造商可以推薦刷新回拷和/或IDM操作的所有數(shù)據(jù),但刷新模塊304可以有選擇地確定是否刷新數(shù)據(jù),僅刷新回拷模塊306拷貝回去的數(shù)據(jù)子集。在一個(gè)實(shí)施例中,刷新模塊304可以不刷新任何回拷數(shù)據(jù),從而所有或?qū)嵸|(zhì)上所有數(shù)據(jù)在回拷和/或IDM操作期間保留在非易失性存儲(chǔ)器元件123上。

在特定實(shí)施例中,回拷模塊306可以使用預(yù)先確定的、預(yù)先定義的或已知的選擇處理,以基于源存儲(chǔ)單元和/或目的地存儲(chǔ)單元的地址或另外標(biāo)識(shí)符而確定移動(dòng)或回拷數(shù)據(jù)的第二目的地存儲(chǔ)單元集合中的位置。如果目的地存儲(chǔ)單元集合(例如TLC擦除塊等)是不可使用的(例如,疲勞,惡劣,受損耗,具有錯(cuò)誤,或另外不可用于存儲(chǔ)數(shù)據(jù)),則回拷模塊306可能不能夠?qū)?shù)據(jù)移動(dòng)或拷貝到目的地。取代改動(dòng)預(yù)先定義的目的地選擇處理,在特定實(shí)施例中,刷新模塊304可以被配置為:對(duì)于目的地為不可使用或不可用的存儲(chǔ)單元集合的數(shù)據(jù)執(zhí)行刷新操作,從而該數(shù)據(jù)寫(xiě)入到不同的位置。例如,刷新模塊304除了通過(guò)ECC編碼器對(duì)數(shù)據(jù)進(jìn)行重新編碼之外還可以執(zhí)行擴(kuò)展的刷新操作(例如對(duì)數(shù)據(jù)進(jìn)行重新分組),并且可以使用寫(xiě)入流水線240等將數(shù)據(jù)寫(xiě)入到不同的位置(例如有序的基于日志的寫(xiě)入結(jié)構(gòu)的附接點(diǎn))。以此方式,可以對(duì)于回拷和/或IDM操作而跳過(guò)不可使用的或不可用的目的地,而不修改或改動(dòng)預(yù)先定義的目的地選擇處理。

如以下關(guān)于圖8A和圖8B所描述的那樣,在特定實(shí)施例中,非易失性存儲(chǔ)器元件123可以在物理上或在邏輯上被布置在陣列中,并且陣列可以組織為n個(gè)裸芯寬的行(例如,n=29列=28個(gè)數(shù)據(jù)裸芯+1個(gè)奇偶校驗(yàn)裸芯等),其中,行中的物理擦除塊被管理作為邏輯擦除塊等。在一個(gè)實(shí)施例中,可以使用自適應(yīng)閃回(flashback)來(lái)管理陣列的行,意味著隨著行中的物理擦除塊出故障,取代重新映射另一擦除塊以保持相同的行寬度,可以減少行大小,并且可以使用更短的行。

然而,如果用于回拷和/或IDM操作的目的地邏輯擦除塊具有比源邏輯擦除塊更短的行以及更少的物理擦除塊,則回拷和/或IDM操作對(duì)于每個(gè)物理擦除塊無(wú)法完成。因此,為了在陣列的兩個(gè)行之間使用回拷和/或IDM,每個(gè)行中的可使用的物理擦除塊的數(shù)量應(yīng)至少對(duì)于每個(gè)回拷和/或IDM操作是相同的。換言之,目的地行(例如TLC行)應(yīng)如源行(例如SLC行)一樣寬、或?qū)捰谠葱?例如SLC行)。如果目的地行并非如源行一樣寬,則在特定實(shí)施例中,回拷模塊306可以關(guān)于數(shù)據(jù)選擇不同的目的地(例如從為此目的而又設(shè)置的預(yù)留擦除塊的池選取的替選擦除塊)。在另一實(shí)施例中,如果目的地行并非如源行一樣寬,則回拷模塊306可以與刷新模塊304協(xié)作,以刷新數(shù)據(jù)(例如,重新編碼,重新分組等),并且使用寫(xiě)入流水線240等將源數(shù)據(jù)重定向到不同的位置(例如有序的基于日志的寫(xiě)入結(jié)構(gòu)的附接點(diǎn)),取代完成回拷和/或IDM操作。

在一個(gè)實(shí)施例中,刷新模塊304可以包括非易失性存儲(chǔ)器介質(zhì)控制器126中的邏輯(例如讀取流水線241、寫(xiě)入流水線240等)。在特定實(shí)施例中,刷新模塊304可以確定是否在控制器126內(nèi)進(jìn)行編碼刷新,并且如果刷新模塊304確定執(zhí)行編碼刷新,則刷新模塊304可以在控制器126內(nèi)將重新編碼后的數(shù)據(jù)解碼為一個(gè)或多個(gè)新的ECC碼字。在另一實(shí)施例中,在刷新期間,刷新模塊304刷新的數(shù)據(jù)可以保留在控制器126中,而不通過(guò)總線125發(fā)送或拷貝到主機(jī)計(jì)算設(shè)備110的主易失性存儲(chǔ)器112。

刷新模塊304可以被配置為:基于可用的信息(例如與數(shù)據(jù)關(guān)聯(lián)的屬性、數(shù)據(jù)因素)等而快速地并且高效地確定是否將要刷新數(shù)據(jù)。在特定實(shí)施例中,如以下關(guān)于數(shù)據(jù)因素模塊322所描述的那樣,刷新模塊304和/或數(shù)據(jù)因素模塊322可以使用與存儲(chǔ)單元集合關(guān)聯(lián)的預(yù)先確定的模型或表征,以主動(dòng)確定是否刷新存儲(chǔ)單元的數(shù)據(jù),而不必讀取或另外處理來(lái)自存儲(chǔ)單元的數(shù)據(jù)。在另一實(shí)施例中,如下所述,數(shù)據(jù)因素模塊322可以掃描非易失性存儲(chǔ)器介質(zhì)122作為后臺(tái)處理,以確定一個(gè)或多個(gè)數(shù)據(jù)因素或用于數(shù)據(jù)的其它屬性,確定刷新模塊304是否刷新數(shù)據(jù)等,從而刷新模塊304可以簡(jiǎn)單地查找或引用數(shù)據(jù)因素和/或響應(yīng)于用于數(shù)據(jù)的回拷和/或IDM操作而確定是否刷新數(shù)據(jù)。

在特定實(shí)施例中,刷新模塊304可以被配置為:與刷新過(guò)程關(guān)聯(lián)地對(duì)于數(shù)據(jù)執(zhí)行垃圾收集或存儲(chǔ)容量恢復(fù)操作,如以下關(guān)于存儲(chǔ)容量恢復(fù)模塊318更詳細(xì)地描述的那樣。例如,刷新模塊304和/或存儲(chǔ)容量恢復(fù)模塊318可以從關(guān)于回拷和/或IDM操作而被刷新的數(shù)據(jù)移除無(wú)效數(shù)據(jù)(例如已經(jīng)通過(guò)對(duì)于相同地址的隨后寫(xiě)入操作所替換或蓋寫(xiě)的數(shù)據(jù))。以此方式,刷新模塊304可以減少數(shù)據(jù)的大小,有效地縮減或壓縮數(shù)據(jù)。刷新模塊304在一個(gè)實(shí)施例中可以與寫(xiě)入流水線240協(xié)作,如上所述,以在已經(jīng)移除無(wú)效部分之后對(duì)數(shù)據(jù)進(jìn)行重新編碼和/或重新分組。

在另一實(shí)施例中,在回拷模塊306已經(jīng)將數(shù)據(jù)拷貝回到或另外將數(shù)據(jù)存儲(chǔ)在第二存儲(chǔ)單元集合中之后,至少對(duì)于數(shù)據(jù)子集,回拷模塊306可以從第一存儲(chǔ)單元集合(例如SLC存儲(chǔ)單元)移動(dòng)、回拷所有數(shù)據(jù),并且刷新模塊304可以執(zhí)行刷新操作。刷新模塊304可以基于一個(gè)或多個(gè)數(shù)據(jù)因素或其它與數(shù)據(jù)關(guān)聯(lián)的屬性而確定刷新哪些數(shù)據(jù),如上所述。在特定實(shí)施例中,刷新模塊304可以基于回拷和/或IDM操作自身的方面或?qū)傩?例如用于回拷和/或IDM操作的編程時(shí)間(例如Tprog)、在回拷和/或IDM操作期間檢測(cè)到的錯(cuò)誤等)而確定刷新哪些數(shù)據(jù)。在一些實(shí)施例中,在回拷和/或IDM過(guò)程之后執(zhí)行刷新操作可以允許比在回拷和/或IDM過(guò)程之前或在此期間執(zhí)行回拷和/或IDM操作更多的錯(cuò)誤,但可以允許刷新產(chǎn)生在低壓力、錯(cuò)峰時(shí)間期間,可以允許回拷和/或IDM過(guò)程產(chǎn)生得更快,等等。

在特定實(shí)施例中,刷新模塊304可以與回拷模塊306協(xié)作,以確定用于刷新后的數(shù)據(jù)的目的地。例如,如上所述,如果目的地存儲(chǔ)單元集合(例如TLC存儲(chǔ)單元)超過(guò)或另外滿足損耗和/或錯(cuò)誤閾值(例如,超過(guò)預(yù)先定義的編程/擦除周期計(jì)數(shù)、錯(cuò)誤率等),則刷新模塊304和/或回拷模塊306可以確定數(shù)據(jù)應(yīng)另外寫(xiě)入到不同的位置(例如有序的、基于日志的寫(xiě)入結(jié)構(gòu)的附接點(diǎn)(例如,不同的SLC存儲(chǔ)單元集合))、可替換的存儲(chǔ)單元集合(例如不同的TLC存儲(chǔ)單元集合)等,取代初始確定的目的地。在一個(gè)實(shí)施例中,如果刷新模塊304確定回拷和/或IDM操作的數(shù)據(jù)處于低需求(例如,用于數(shù)據(jù)的讀取計(jì)數(shù)無(wú)法滿足預(yù)先定義的頻率閾值),則刷新模塊304可以與存儲(chǔ)容量恢復(fù)模塊318協(xié)作,以移除無(wú)效數(shù)據(jù),并且可以將數(shù)據(jù)重定向到有序的基于日志的寫(xiě)入結(jié)構(gòu)的附接點(diǎn)。

在一個(gè)實(shí)施例中,回拷模塊306被配置為:確定何時(shí)和/或是否對(duì)于數(shù)據(jù)執(zhí)行回拷和/或IDM操作(例如,來(lái)自SLC存儲(chǔ)單元集合的數(shù)據(jù)是否待存儲(chǔ)在TLC存儲(chǔ)單元集合中)?;乜侥K306可以有選擇地(例如在SLC存儲(chǔ)單元與TLC存儲(chǔ)單元之間)執(zhí)行回拷和/或IDM操作,從而并非所有數(shù)據(jù)從源存儲(chǔ)單元集合移動(dòng)或拷貝并且存儲(chǔ)在目的地存儲(chǔ)單元集合中。在源緩沖存儲(chǔ)單元集合具有對(duì)于比目的地存儲(chǔ)單元集合更少的數(shù)量的比特進(jìn)行編碼或表示的更少的存儲(chǔ)狀態(tài)的實(shí)施例中,源存儲(chǔ)單元集合可以具有比目的地存儲(chǔ)單元集合更快的讀取時(shí)間、更快的寫(xiě)入/編程時(shí)間、更少的單元泄漏或其它更好的更魯棒的訪問(wèn)特性,而非存儲(chǔ)容量?;乜侥K306可以基于一個(gè)或多個(gè)數(shù)據(jù)因素或其它與數(shù)據(jù)關(guān)聯(lián)的屬性而確定是否存儲(chǔ)、移動(dòng)或回拷數(shù)據(jù)。

回拷模塊306在一個(gè)實(shí)施例中在緩沖器模塊302將數(shù)據(jù)存儲(chǔ)在第一/源存儲(chǔ)單元集合中之后將數(shù)據(jù)存儲(chǔ)在第二/目的地存儲(chǔ)單元集合中。在特定實(shí)施例中,回拷模塊306被配置為:使得數(shù)據(jù)存儲(chǔ)在第一/源非易失性存儲(chǔ)單元集合與回拷模塊306從第一/源非易失性存儲(chǔ)單元集合到第二/目的地非易失性存儲(chǔ)單元集合(例如從SLC單元到TLC單元)拷貝、移動(dòng)或另外存儲(chǔ)數(shù)據(jù)之間的時(shí)間量最小化。例如,在一個(gè)實(shí)施例中,回拷模塊306可以響應(yīng)于數(shù)據(jù)正寫(xiě)入到第一/源單元集合而立即或?qū)嵸|(zhì)上立即確定是否將數(shù)據(jù)拷貝回到第二/目的地單元集合,并且響應(yīng)于做出確定而立即或?qū)嵸|(zhì)上立即將數(shù)據(jù)存儲(chǔ)在第二/目的地單元集合中。

通過(guò)確定是否將數(shù)據(jù)從第一/源單元集合拷貝或移動(dòng)回到第二/目的地單元集合并且盡快拷貝或移動(dòng)數(shù)據(jù),在一個(gè)實(shí)施例中,回拷模塊306可以減少或防止在被拷貝或移動(dòng)到第二/目的地單元集合之前可能產(chǎn)生在數(shù)據(jù)中的錯(cuò)誤。在另一實(shí)施例中,通過(guò)盡快對(duì)數(shù)據(jù)執(zhí)行回拷和/或IDM操作,由于數(shù)據(jù)中的錯(cuò)誤的數(shù)量可以比如果數(shù)據(jù)存儲(chǔ)在第一/源單元集合中達(dá)較長(zhǎng)時(shí)間段更少,因此回拷模塊306可以減少刷新模塊304執(zhí)行刷新操作的數(shù)據(jù)量。

盡快對(duì)于數(shù)據(jù)執(zhí)行回拷和/或IDM操作在特定實(shí)施例中不會(huì)不利地影響或減慢存儲(chǔ)客戶機(jī)116的操作或?qū)?shù)據(jù)寫(xiě)入到非易失性存儲(chǔ)器設(shè)備120的主機(jī)計(jì)算設(shè)備110的其它處理。例如,在一個(gè)實(shí)施例中,由于功率切斷模塊320即使功率故障或中斷產(chǎn)生也可以確保數(shù)據(jù)存儲(chǔ)在第一/源存儲(chǔ)單元集合中,如下所述,因此寫(xiě)入流水線240、功率切斷模塊320、非易失性存儲(chǔ)器介質(zhì)控制器126、SML 130等可以響應(yīng)于將數(shù)據(jù)存儲(chǔ)在非易失性存儲(chǔ)器介質(zhì)控制器126、非易失性存儲(chǔ)器介質(zhì)122等的寫(xiě)入緩沖器中而對(duì)請(qǐng)求存儲(chǔ)客戶機(jī)116確認(rèn)完成對(duì)數(shù)據(jù)的寫(xiě)入請(qǐng)求。在另一實(shí)施例中,寫(xiě)入流水線240、功率切斷模塊320、非易失性存儲(chǔ)器介質(zhì)控制器126、SML 130等可以響應(yīng)于將數(shù)據(jù)存儲(chǔ)在第一/源存儲(chǔ)單元集合中而對(duì)請(qǐng)求存儲(chǔ)客戶機(jī)116確認(rèn)完成對(duì)數(shù)據(jù)的寫(xiě)入請(qǐng)求。在任一實(shí)施例中,可以對(duì)請(qǐng)求存儲(chǔ)客戶機(jī)116確認(rèn)存儲(chǔ)數(shù)據(jù),然后回拷模塊306執(zhí)行回拷和/或IDM操作,從而執(zhí)行操作可以對(duì)請(qǐng)求存儲(chǔ)客戶機(jī)116的操作或關(guān)聯(lián)寫(xiě)入請(qǐng)求的完成很少有或沒(méi)有影響。

以下關(guān)于圖3B的數(shù)據(jù)因素模塊322更詳細(xì)地描述確定數(shù)據(jù)因素或其它與數(shù)據(jù)關(guān)聯(lián)的屬性。在一個(gè)實(shí)施例中,數(shù)據(jù)的屬性(例如數(shù)據(jù)因素)包括與所存儲(chǔ)的數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)的非易失性存儲(chǔ)單元等關(guān)聯(lián)的特征或方面。數(shù)據(jù)因素或其它與數(shù)據(jù)關(guān)聯(lián)的屬性在特定實(shí)施例中可以包括關(guān)聯(lián)數(shù)據(jù)具有一個(gè)或多個(gè)數(shù)據(jù)錯(cuò)誤的似然率的指示符。數(shù)據(jù)因素或另外與數(shù)據(jù)關(guān)聯(lián)的屬性在各個(gè)實(shí)施例中可以包括以下項(xiàng)中的一個(gè)或多個(gè):用于數(shù)據(jù)的服務(wù)質(zhì)量等級(jí)或另外優(yōu)先級(jí)、用于數(shù)據(jù)的錯(cuò)誤率(例如原始誤比特率(RBER)或不可糾正的誤比特率(UBER))、用于數(shù)據(jù)的年齡(例如保留時(shí)間或自從寫(xiě)入以來(lái)的時(shí)間)、用于存儲(chǔ)單元的編程/擦除周期計(jì)數(shù)、用于數(shù)據(jù)的寫(xiě)入頻率、用于數(shù)據(jù)的讀取頻率、關(guān)于存儲(chǔ)單元所滿足的容量閾值、用于存儲(chǔ)單元的編程操作的持續(xù)時(shí)間等。例如,回拷模塊306可以僅移動(dòng)或回拷具有特定服務(wù)質(zhì)量等級(jí)的數(shù)據(jù)、比特定年齡或保留時(shí)間更舊的數(shù)據(jù)等,允許其它數(shù)據(jù)保留在第一/源非易失性存儲(chǔ)單元集合(例如SLC存儲(chǔ)單元)中,而不被回拷。

第一/源存儲(chǔ)單元集合(例如SLC存儲(chǔ)單元)可以具有比第二/目的地存儲(chǔ)單元集合更高的可靠性、更快的訪問(wèn)時(shí)間(例如讀取時(shí)間和/或?qū)懭?編程時(shí)間)。將一些數(shù)據(jù)留在第一/源存儲(chǔ)單元集合中可以允許回拷模塊306實(shí)現(xiàn)用于數(shù)據(jù)的特定服務(wù)質(zhì)量、可靠性和/或性能要求。在特定實(shí)施例中,回拷模塊306可以驗(yàn)證第二/目的地非易失性存儲(chǔ)單元集合中的數(shù)據(jù)的存儲(chǔ)和/或數(shù)據(jù)完整性?;乜侥K306可以通過(guò)以下操作來(lái)驗(yàn)證數(shù)據(jù)的存儲(chǔ)和/或數(shù)據(jù)完整性:從第二/目的地非易失性存儲(chǔ)單元集合讀取數(shù)據(jù),從非易失性存儲(chǔ)器介質(zhì)122接收完成指示符或確認(rèn),對(duì)數(shù)據(jù)執(zhí)行糾錯(cuò),對(duì)讀取的數(shù)據(jù)與已知的或期待的數(shù)據(jù)進(jìn)行比較等。在一個(gè)實(shí)施例中,回拷模塊306可以響應(yīng)于觸發(fā)等而延遲驗(yàn)證第二/目的地非易失性存儲(chǔ)單元集合中的數(shù)據(jù)的存儲(chǔ),直到更晚時(shí)間。例如,回拷模塊306可以響應(yīng)于對(duì)數(shù)據(jù)的讀取請(qǐng)求、第二/目的地非易失性存儲(chǔ)單元集合的后臺(tái)掃描、(例如關(guān)于第一/源非易失性存儲(chǔ)單元集合、非易失性存儲(chǔ)器介質(zhì)122、非易失性存儲(chǔ)器設(shè)備120)所滿足的存儲(chǔ)容量閾值、用于第一/源非易失性存儲(chǔ)單元集合的存儲(chǔ)容量恢復(fù)事件等而驗(yàn)證數(shù)據(jù)的存儲(chǔ)和/或數(shù)據(jù)完整性。通過(guò)延遲數(shù)據(jù)的驗(yàn)證,在特定實(shí)施例中,回拷模塊306可以在出于不同目的(例如,為了滿足對(duì)數(shù)據(jù)的讀取請(qǐng)求等)已經(jīng)從第二/目的地非易失性存儲(chǔ)單元集合讀取數(shù)據(jù)之后驗(yàn)證數(shù)據(jù)。

回拷模塊306在一個(gè)實(shí)施例中可以使用非易失性存儲(chǔ)器元件123的內(nèi)部數(shù)據(jù)傳送命令(例如回拷和/或IDM命令),以在內(nèi)部將數(shù)據(jù)從第一/源非易失性存儲(chǔ)器單元集合拷貝或移動(dòng)到第二/目的地非易失性存儲(chǔ)器單元集合。內(nèi)部數(shù)據(jù)傳送命令(例如回拷和/或IDM命令)可以在非易失性存儲(chǔ)器元件123內(nèi)在內(nèi)部對(duì)于位于單個(gè)非易失性存儲(chǔ)器元件123(例如集成電路芯片、裸芯和/或裸芯平面)內(nèi)的數(shù)據(jù)執(zhí)行回拷和/或IDM操作,而沒(méi)有數(shù)據(jù)離開(kāi)非易失性存儲(chǔ)器元件123、非易失性存儲(chǔ)器元件123(例如芯片、裸芯每個(gè)裸芯平面)的封裝等。例如,非易失性存儲(chǔ)器介質(zhì)122可以支持回拷命令、IDM命令或另一內(nèi)部數(shù)據(jù)傳送命令,并且回拷模塊306可以對(duì)源和目的地提供每個(gè)回拷和/或IDM命令。作為內(nèi)部數(shù)據(jù)傳送操作的部分,回拷模塊306和/或非易失性存儲(chǔ)器介質(zhì)122可以將數(shù)據(jù)從第一/源存儲(chǔ)單元集合(例如SLC存儲(chǔ)單元)移動(dòng)、拷貝或加載到關(guān)聯(lián)非易失性存儲(chǔ)器元件123的易失性存儲(chǔ)器(例如頁(yè)面緩沖器)中,其中,刷新模塊304可以有選擇地刷新數(shù)據(jù)等?;乜侥K306可以然后在內(nèi)部將數(shù)據(jù)從易失性存儲(chǔ)器拷貝或移動(dòng)到第二目的地存儲(chǔ)單元集合。在特定實(shí)施例中,回拷模塊306可以將多個(gè)頁(yè)面或其它數(shù)據(jù)集合加載到易失性存儲(chǔ)器中(例如,將數(shù)據(jù)的三個(gè)頁(yè)面從用于回拷的SLC頁(yè)面加載到TLC頁(yè)面)。

圖3B描述管理模塊150的另一實(shí)施例。管理模塊150可以實(shí)質(zhì)上與以上關(guān)于圖1和圖3A所描述的管理模塊150相似。在所描述的實(shí)施例中,管理模塊150包括緩沖器模塊302、刷新模塊304和回拷模塊306,并且還包括中止模塊308、讀取模塊310、讀取電壓模塊312、單元容量模塊314、邏輯到物理映射模塊316、存儲(chǔ)容量恢復(fù)模塊318、功率切斷模塊320和數(shù)據(jù)因素模塊322。

在一個(gè)實(shí)施例中,中止模塊308被配置為:基于一個(gè)或多個(gè)數(shù)據(jù)因素等而響應(yīng)于回拷模塊306確定將關(guān)聯(lián)數(shù)據(jù)拷貝或移動(dòng)到第二/目的地存儲(chǔ)單元集合來(lái)中止、停止、取消和/或中斷回拷模塊306的處理中回拷和/或IDM過(guò)程。在特定實(shí)施例中,中止模塊308被配置為:響應(yīng)于功率切斷模塊320確定或檢測(cè)到用于非易失性存儲(chǔ)器設(shè)備120的功率等級(jí)已經(jīng)無(wú)法滿足功率閾值而中止、停止、取消和/或中斷回拷模塊306的處理中回拷和/或IDM過(guò)程。響應(yīng)于功率故障而中止處理中回拷和/或IDM過(guò)程在特定實(shí)施例中可以節(jié)約功率,允許其它命令或過(guò)程完成。

中止模塊308在一個(gè)實(shí)施例中可以通過(guò)將重置命令發(fā)放到與回拷和/或IDM過(guò)程關(guān)聯(lián)的非易失性存儲(chǔ)器元件123來(lái)中止回拷和/或IDM過(guò)程。在另一實(shí)施例中,中止模塊308可以通過(guò)以下操作來(lái)中止回拷和/或IDM過(guò)程:關(guān)于回拷和/或IDM過(guò)程忽略和/或蓋寫(xiě)加載到易失性存儲(chǔ)器(例如易失性頁(yè)面緩沖器)中的數(shù)據(jù),開(kāi)始下一回拷和/或IDM過(guò)程等。

在一個(gè)實(shí)施例中,讀取模塊310被配置為:服務(wù)于來(lái)自非易失性存儲(chǔ)器介質(zhì)122的讀取請(qǐng)求。讀取模塊310可以與上述讀取流水線241協(xié)作和/或集成。歸因于回拷和/或IDM處理,可能有相同數(shù)據(jù)的多個(gè)拷貝存在于非易失性存儲(chǔ)器介質(zhì)122中的次數(shù)。讀取模塊310在特定實(shí)施例中可以偏好用每單元更少的存儲(chǔ)狀態(tài)和比特在存儲(chǔ)單元中存儲(chǔ)的數(shù)據(jù)。例如,如果數(shù)據(jù)存儲(chǔ)在SLC存儲(chǔ)單元和TLC存儲(chǔ)單元二者中,則讀取模塊310可以被配置為:服務(wù)對(duì)來(lái)自SLC存儲(chǔ)單元的數(shù)據(jù)的讀取請(qǐng)求。

如以下關(guān)于存儲(chǔ)容量恢復(fù)模塊318所描述的那樣,已經(jīng)拷回的數(shù)據(jù)可以在回拷和/或IDM操作之后仍存儲(chǔ)在第一/源存儲(chǔ)單元集合中,直到需要存儲(chǔ)容量等。例如,存儲(chǔ)容量恢復(fù)模塊318可以在第一/源存儲(chǔ)單元集合中留下頻繁訪問(wèn)的數(shù)據(jù)、具有特定服務(wù)質(zhì)量或另外優(yōu)先級(jí)等級(jí)的數(shù)據(jù)等,并且恢復(fù)其它存儲(chǔ)單元集合(例如高QoS或另外優(yōu)先級(jí)數(shù)據(jù)的具有較低百分比或比率的頻繁訪問(wèn)的數(shù)據(jù)的擦除塊)的存儲(chǔ)容量,從而讀取模塊310只要可能就可以服務(wù)于來(lái)自第一/源存儲(chǔ)單元集合的讀取請(qǐng)求。讀取模塊310可以繼續(xù)服務(wù)于來(lái)自第一/源存儲(chǔ)單元集合的讀取請(qǐng)求,直到恢復(fù)存儲(chǔ)容量并且擦除關(guān)聯(lián)數(shù)據(jù)。響應(yīng)于存儲(chǔ)容量恢復(fù)模塊318等從第一/源存儲(chǔ)單元集合(例如SLC存儲(chǔ)單元)擦除數(shù)據(jù),讀取模塊310可以服務(wù)于對(duì)來(lái)自第二/目的地存儲(chǔ)單元集合(例如TLC存儲(chǔ)單元)的數(shù)據(jù)的讀取請(qǐng)求。在回拷模塊306確定對(duì)于數(shù)據(jù)不執(zhí)行回拷和/或IDM操作以在內(nèi)部將數(shù)據(jù)拷貝或移動(dòng)回到第二/目的地存儲(chǔ)單元集合(例如TLC存儲(chǔ)單元)的實(shí)施例中,讀取模塊310可以繼續(xù)服務(wù)于對(duì)來(lái)自第一/源存儲(chǔ)單元集合的數(shù)據(jù)的讀取請(qǐng)求。

在特定實(shí)施例中,非易失性存儲(chǔ)器介質(zhì)122可以被配置為:依賴于通過(guò)對(duì)下一相鄰頁(yè)面或字線進(jìn)行編程所產(chǎn)生的編程干擾影響,以完成第一頁(yè)面或字線的編程。制造商可以指定頁(yè)面或字線編程順序。頁(yè)面或字線編程順序可以要求以第一頁(yè)面對(duì)WLn的較低頁(yè)面進(jìn)行編程,并且以第二頁(yè)面對(duì)WLn+1的較低頁(yè)面進(jìn)行編程,而且以第三頁(yè)面對(duì)WLn的中間頁(yè)面進(jìn)行編程。此外,制造商頁(yè)面編程順序可以要求以第四頁(yè)面對(duì)WLn+1的中間頁(yè)面進(jìn)行編程,并且以第五頁(yè)面對(duì)WLn的較高頁(yè)面進(jìn)行編程。以此方式,字線漸進(jìn)地用于按改進(jìn)單元中的數(shù)據(jù)完整性的順序來(lái)存儲(chǔ)數(shù)據(jù)的頁(yè)面。

非易失性存儲(chǔ)器介質(zhì)122的制造商可以推薦或要求至少對(duì)于TLC存儲(chǔ)單元、在可以讀取第一頁(yè)面或字線之前對(duì)下一相鄰頁(yè)面或字線進(jìn)行編程。例如,制造商可以指定直到對(duì)字線WLn+1進(jìn)行編程之后才讀取字線WLn。這種約束可能延遲對(duì)此前編程的頁(yè)面(例如在WLn上)的讀取請(qǐng)求的服務(wù)。如在此所使用的那樣,關(guān)于頁(yè)面或字線,“相鄰”或“下一”在一個(gè)實(shí)施例中包括所指定的編程順序或?qū)ぶ讽樞騼?nèi)的數(shù)字上和/或邏輯上連續(xù)的頁(yè)面或字線。在其它實(shí)施例中,“相鄰”或“下一”可以指代非易失性存儲(chǔ)器元件123內(nèi)的物理上或時(shí)間上毗鄰或相接的頁(yè)面或字線。

讀取模塊310在特定實(shí)施例中可以被配置為:甚至在對(duì)下一或相鄰頁(yè)面或字線進(jìn)行編程前面或之前服務(wù)于對(duì)頁(yè)面或字線的讀取請(qǐng)求(例如,在對(duì)WLn+1進(jìn)行編程之前,服務(wù)于對(duì)WLn的讀取請(qǐng)求)。讀取模塊310在一個(gè)實(shí)施例中被配置為:僅在響應(yīng)于讀取模塊310確定數(shù)據(jù)中的錯(cuò)誤是可使用用于數(shù)據(jù)的ECC編碼等糾正的而在對(duì)下一相鄰頁(yè)面或字線進(jìn)行編程之前服務(wù)于對(duì)頁(yè)面或字線的讀取請(qǐng)求。如果不能糾正數(shù)據(jù)中的錯(cuò)誤,則讀取模塊310可以使得讀取請(qǐng)求失敗,返回錯(cuò)誤,將通知或另外消息等發(fā)送到請(qǐng)求存儲(chǔ)客戶機(jī)(requesting storage client)116。在另一實(shí)施例中,即使數(shù)據(jù)中的錯(cuò)誤是不可糾正的,讀取模塊310也可以返回讀取請(qǐng)求的數(shù)據(jù)。在特定實(shí)施例中,甚至在下一相鄰頁(yè)面或字線已經(jīng)得以寫(xiě)入/編程之前服務(wù)于對(duì)數(shù)據(jù)的讀取請(qǐng)求可以通過(guò)使得數(shù)據(jù)可訪問(wèn)得更快而增加性能。

在一個(gè)實(shí)施例中,讀取電壓模塊312管理并且調(diào)整用于具有用于對(duì)于比第二/目的地存儲(chǔ)單元更少的比特進(jìn)行編碼的更少的存儲(chǔ)狀態(tài)的非易失性存儲(chǔ)器介質(zhì)122的第一/源存儲(chǔ)單元(例如用于緩沖用于TLC存儲(chǔ)單元的數(shù)據(jù)的SLC存儲(chǔ)單元)的一個(gè)或多個(gè)讀取電壓閾值。歸因于干擾影響(例如讀取干擾或編程干擾),歸因于存儲(chǔ)單元上的損耗、歸因于高編程/擦除計(jì)數(shù),歸因于制造商瑕疵等,所存儲(chǔ)的用于存儲(chǔ)單元的讀取電壓電平可能隨著時(shí)間而漂移或改變。如以上關(guān)于刷新模塊304所描述的那樣,隨著數(shù)據(jù)拷貝回到第二/目的地存儲(chǔ)單元(例如TLC存儲(chǔ)單元),第一/源存儲(chǔ)單元(例如SLC存儲(chǔ)單元)中所引入的錯(cuò)誤可能被放大,要求刷新模塊304刷新正回拷的數(shù)據(jù)以糾正錯(cuò)誤,增加處理和帶寬開(kāi)銷。

為了減少刷新模塊304刷新以用于回拷和/或IDM操作的數(shù)據(jù)量和/或延長(zhǎng)數(shù)據(jù)可以在回拷之前存儲(chǔ)在第一/源存儲(chǔ)單元中的時(shí)間量,在特定實(shí)施例中,讀取電壓模塊312可以調(diào)整一個(gè)或多個(gè)讀取電壓閾值,以抵消或補(bǔ)償所存儲(chǔ)的電壓電平的改變,以減少錯(cuò)誤。讀取電壓模塊312在一個(gè)實(shí)施例中基于用于關(guān)聯(lián)存儲(chǔ)單元集合的一個(gè)或多個(gè)存儲(chǔ)介質(zhì)特性而確定用于存儲(chǔ)單元集合的讀取電壓閾值。例如,讀取電壓模塊312可以基于用于存儲(chǔ)單元集合的一個(gè)或多個(gè)存儲(chǔ)介質(zhì)特性而以開(kāi)環(huán)(open-loop)方式主動(dòng)確定用于存儲(chǔ)單元集合的一個(gè)或多個(gè)讀取電壓閾值,而不從存儲(chǔ)單元集合讀取數(shù)據(jù)作為對(duì)確定的反饋。

如在此所使用的那樣,“開(kāi)環(huán)”確定包括基于確定結(jié)果的反饋或另一指示符或測(cè)度而進(jìn)行的確定。例如,在特定實(shí)施例中,讀取電壓模塊312可以通過(guò)開(kāi)環(huán)方式基于一個(gè)或多個(gè)存儲(chǔ)介質(zhì)特性而確定所調(diào)整的或更新后的用于存儲(chǔ)單元集合的讀取電壓閾值,而不首先從單元集合讀取數(shù)據(jù)作為反饋。可以基于存儲(chǔ)介質(zhì)設(shè)備的此前研究和開(kāi)發(fā)測(cè)試(例如設(shè)備表征)而確定存儲(chǔ)介質(zhì)特性?!伴]環(huán)”確定如在此所使用的那樣包括至少部分地基于確定結(jié)果的某種反饋或另外指示符或測(cè)度而進(jìn)行或更新的確定。例如,讀取電壓模塊312在一個(gè)實(shí)施例中可以基于從存儲(chǔ)單元讀回的數(shù)據(jù)(例如關(guān)于數(shù)據(jù)的錯(cuò)誤率、該數(shù)據(jù)與已知數(shù)據(jù)的比較等)而迭代地更新用于存儲(chǔ)單元集合的讀取電壓閾值。在特定實(shí)施例中,讀取電壓模塊312可以初始地基于用于存儲(chǔ)單元集合的一個(gè)或多個(gè)存儲(chǔ)介質(zhì)特性等而以開(kāi)環(huán)方式確定用于存儲(chǔ)單元集合的讀取電壓閾值,并且可以隨后通過(guò)從存儲(chǔ)單元集合讀取數(shù)據(jù)并且基于錯(cuò)誤率或其它反饋而更新或另外調(diào)整讀取電壓閾值來(lái)以閉環(huán)方式精細(xì)調(diào)諧或調(diào)整讀取電壓閾值。

在一個(gè)實(shí)施例中,讀取電壓模塊312關(guān)于用于非易失性存儲(chǔ)器介質(zhì)122的存儲(chǔ)單元集合的停留態(tài)或存儲(chǔ)狀態(tài)等來(lái)引用或另外確定用于非易失性存儲(chǔ)器介質(zhì)122的存儲(chǔ)單元集合的一個(gè)或多個(gè)介質(zhì)特性。存儲(chǔ)單元集合可以包括單個(gè)存儲(chǔ)區(qū)域(例如物理頁(yè)面、邏輯頁(yè)面、物理擦除塊、邏輯擦除塊、字線、ECC片塊/碼字、芯片、裸芯、裸芯中的平面等),或可以包括多個(gè)存儲(chǔ)區(qū)域的集合。在特定實(shí)施例中,非易失性存儲(chǔ)器介質(zhì)122的存儲(chǔ)單元的不同存儲(chǔ)狀態(tài)、停留態(tài)、編碼數(shù)字(例如LSB、MSB)可以具有不同介質(zhì)特性,并且讀取電壓模塊312可以對(duì)于不同的停留態(tài)/存儲(chǔ)狀態(tài)等分離地監(jiān)控或另外確定不同的介質(zhì)特性。

讀取電壓模塊312自身可以確定一個(gè)或多個(gè)介質(zhì)特性,可以從另一模塊接收介質(zhì)特性,可以從介質(zhì)特性庫(kù)檢索介質(zhì)特性等。介質(zhì)特性是與非易失性存儲(chǔ)器介質(zhì)122的屬性關(guān)聯(lián)的統(tǒng)計(jì)、啟發(fā)或其它描述符。介質(zhì)特性可以包括或有關(guān)于用于非易失性存儲(chǔ)器設(shè)備120和/或用于非易失性存儲(chǔ)器介質(zhì)122的制作、模型、制造商、產(chǎn)品版本等;用于存儲(chǔ)單元集合的屬性或統(tǒng)計(jì);非易失性存儲(chǔ)器設(shè)備120和/或非易失性存儲(chǔ)器介質(zhì)122的環(huán)境條件或使用情況;和/或用于非易失性存儲(chǔ)器介質(zhì)122的屬性的另一統(tǒng)計(jì)、啟發(fā)或其它描述符。

用于存儲(chǔ)單元集合的介質(zhì)特性影響或通告確定用于存儲(chǔ)單元集合的讀取電壓閾值。在一個(gè)實(shí)施例中,介質(zhì)特性包括用于存儲(chǔ)單元集合的編程/擦除周期計(jì)數(shù)。在另一實(shí)施例中,介質(zhì)特性包括用于存儲(chǔ)單元集合的讀取計(jì)數(shù)。介質(zhì)特性在另一實(shí)施例中包括自從對(duì)于存儲(chǔ)單元集合的此前寫(xiě)入以來(lái)的保留時(shí)間。在附加實(shí)施例中,介質(zhì)特性包括關(guān)于存儲(chǔ)單元集合的溫度。介質(zhì)特性在特定實(shí)施例中包括關(guān)于存儲(chǔ)單元集合的使用情況。在另一實(shí)施例中,介質(zhì)特性包括關(guān)于存儲(chǔ)單元集合的錯(cuò)誤統(tǒng)計(jì)(例如UBER、RBER等)。在另一實(shí)施例中,介質(zhì)特性可以包括用于存儲(chǔ)單元集合的此前或歷史讀取電壓閾值、用于其它存儲(chǔ)單元集合的讀取電壓閾值或介質(zhì)特性等。

在特定實(shí)施例中,讀取電壓模塊312管理介質(zhì)特性的收集和/或保存。讀取電壓模塊312可以將介質(zhì)特性保存在介質(zhì)特性庫(kù)中和/或從介質(zhì)特性庫(kù)檢索介質(zhì)特性。在特定實(shí)施例中,讀取電壓模塊312引用、確定和/或管理用于若干不同存儲(chǔ)單元集合的介質(zhì)特性(例如非易失性存儲(chǔ)器設(shè)備120的每個(gè)存儲(chǔ)區(qū)域或存儲(chǔ)分區(qū))。介質(zhì)區(qū)域可以包括擦除塊(邏輯或物理)、頁(yè)面(邏輯或物理)、ECC片塊/碼字、頁(yè)面內(nèi)的分區(qū)、頁(yè)面集合、裸芯、裸芯中的平面、芯片等。

在一個(gè)實(shí)施例中,讀取電壓模塊312可以與以上關(guān)于圖3B所描述的數(shù)據(jù)因素模塊322相似,可以隨之工作,和/或可以與之集成。例如,介質(zhì)特性可以包括以上關(guān)于數(shù)據(jù)因素模塊322所描述的統(tǒng)計(jì)中的一個(gè)或多個(gè)(例如關(guān)于非易失性存儲(chǔ)器設(shè)備120的溫度、關(guān)于非易失性存儲(chǔ)器設(shè)備120的錯(cuò)誤率(例如UBER、RBER等)、用于非易失性存儲(chǔ)器設(shè)備120的編程/擦除周期計(jì)數(shù)、用于非易失性存儲(chǔ)器設(shè)備120的存儲(chǔ)請(qǐng)求延時(shí)(例如平均、最大或另外存儲(chǔ)請(qǐng)求執(zhí)行延時(shí))、非易失性存儲(chǔ)器設(shè)備120的年齡和/或其它統(tǒng)計(jì)或特性)。讀取電壓模塊312在特定實(shí)施例中可以從一個(gè)或多個(gè)傳感器、從其它模塊或元件(例如ECC解碼器等)直接或間接地接收輸入。

在一個(gè)實(shí)施例中,讀取電壓模塊312基于用于存儲(chǔ)單元集合的一個(gè)或多個(gè)介質(zhì)特性而確定用于存儲(chǔ)單元集合的讀取電壓閾值。讀取電壓模塊312確定為之讀取電壓閾值的存儲(chǔ)單元集合可以包括擦除塊(邏輯或物理)、頁(yè)面(邏輯或物理)、ECC片塊/碼字、頁(yè)面內(nèi)的分區(qū)、頁(yè)面集合、裸芯、裸芯中的平面、芯片等。讀取電壓模塊312可以基于對(duì)應(yīng)介質(zhì)特性而確定用于不同存儲(chǔ)單元集合、不同頁(yè)面集合、存儲(chǔ)單元的不同停留態(tài)/存儲(chǔ)狀態(tài)等的不同讀取電壓閾值。讀取電壓模塊312在特定實(shí)施例中隨著對(duì)初始或默認(rèn)設(shè)置的調(diào)整或更新而在非易失性存儲(chǔ)器設(shè)備120的操作或運(yùn)行時(shí)期間動(dòng)態(tài)地確定讀取電壓閾值。

如上所述,讀取電壓閾值是可通過(guò)接口的方式修改以區(qū)分所存儲(chǔ)的值(例如二進(jìn)制一和零)的存儲(chǔ)單元集合的參數(shù)。讀取電壓模塊312可以確定讀取電壓閾值作為絕對(duì)數(shù)據(jù)值、作為對(duì)數(shù)據(jù)值的偏移或調(diào)整、或作為讀取電壓模塊312可以配置存儲(chǔ)單元集合的另一參數(shù)。

讀取電壓模塊312可以通過(guò)以下操作將讀取電壓閾值基于一個(gè)或多個(gè)介質(zhì)特性:將一個(gè)或多個(gè)介質(zhì)特性錄入到公式、數(shù)學(xué)模型、查找表(LUT)、矩陣等中;對(duì)一個(gè)或多個(gè)介質(zhì)特性執(zhí)行預(yù)先定義的變換或操作;或另外引用或操控一個(gè)或多個(gè)介質(zhì)特性以確定讀取電壓閾值。讀取電壓閾值公式、數(shù)學(xué)模型、LUT、矩陣等可以基于實(shí)驗(yàn)數(shù)據(jù)(例如測(cè)試數(shù)據(jù)、歷史數(shù)據(jù)等)。設(shè)計(jì)工程師等在一個(gè)實(shí)施例中可以測(cè)試具有各種介質(zhì)特性的存儲(chǔ)單元集合(例如來(lái)自各個(gè)制造商的非易失性存儲(chǔ)器介質(zhì)等),并且確定用于具有各種介質(zhì)特性的存儲(chǔ)單元的優(yōu)化讀取電壓閾值。例如,公式、數(shù)學(xué)模型、LUT、矩陣等可以指示來(lái)自制造商X的非易失性存儲(chǔ)器介質(zhì)122趨于在1,000個(gè)編程/擦除周期之后具有單元值的Y量的自然漂移,從而讀取閾值可以增加達(dá)Z伏特以進(jìn)行補(bǔ)償,等等。

在其它實(shí)施例中,讀取電壓模塊312可以在非易失性存儲(chǔ)器設(shè)備120的操作期間動(dòng)態(tài)地確定讀取電壓閾值;用于定義讀取電壓閾值的公式、數(shù)學(xué)模型、LUT、矩陣、變換等;對(duì)讀取電壓閾值的調(diào)整;等,如以上關(guān)于調(diào)整模塊408所描述的那樣。例如,讀取電壓模塊312可以初始地基于默認(rèn)值、基于試錯(cuò)法等確定用于各種介質(zhì)特性的讀取電壓閾值,并且可以基于錯(cuò)誤率(例如RBER、UBER)、編程/擦除計(jì)數(shù)等的改變而自主地對(duì)讀取電壓閾值的有效性進(jìn)行相關(guān),以確定公式、數(shù)學(xué)模型、LUT、矩陣、變換等,以用于確定后續(xù)讀取電壓閾值和/或讀取電壓閾值調(diào)整。

在一個(gè)實(shí)施例中,用于存儲(chǔ)單元集合的介質(zhì)特性包括溫度。關(guān)于存儲(chǔ)單元集合的溫度可以作用于存儲(chǔ)單元集合上的一個(gè)或多個(gè)其它介質(zhì)特性的影響的速度。例如,在較高溫度,關(guān)于與錯(cuò)誤統(tǒng)計(jì)有關(guān)的介質(zhì)特性(例如原始誤比特率(RBER)和數(shù)據(jù)保留時(shí)間)的改變速率可能增加,并且對(duì)讀取電壓閾值的特定調(diào)整可以緩解該影響。在特定實(shí)施例中,讀取電壓模塊312可以按溫度來(lái)調(diào)整或縮放讀取電壓閾值、介質(zhì)特性等,以補(bǔ)償溫度的影響,使得用于溫度的數(shù)據(jù)正?;jP(guān)于存儲(chǔ)單元集合的溫度可以是平均溫度、遍及滑動(dòng)窗口的溫度、當(dāng)前溫度、用于非易失性存儲(chǔ)器設(shè)備120的溫度或與一個(gè)或多個(gè)存儲(chǔ)單元集合關(guān)聯(lián)的另一溫度測(cè)度。

一個(gè)或多個(gè)介質(zhì)特性在一個(gè)實(shí)施例中對(duì)讀取電壓模塊312指示關(guān)于讀取電壓閾值的趨勢(shì)、優(yōu)化等,并且讀取電壓模塊312確定用于滿足該趨勢(shì)或優(yōu)化的讀取電壓閾值。例如,編程/擦除周期計(jì)數(shù)、讀取計(jì)數(shù)、UBER、RBER或另一介質(zhì)特性的量值可以指示讀取電壓或另外讀取電壓閾值已經(jīng)漂移的量,并且讀取電壓模塊312可以基于介質(zhì)特性而主動(dòng)確定讀取電壓閾值,而無(wú)需來(lái)自存儲(chǔ)單元的直接反饋(例如讀取、讀取重試等)。

在一個(gè)實(shí)施例中,讀取電壓模塊312將用于非易失性存儲(chǔ)器介質(zhì)122的不同存儲(chǔ)區(qū)域或存儲(chǔ)分區(qū)的存儲(chǔ)單元集合(例如擦除塊(邏輯或物理)、頁(yè)面(邏輯或物理)、ECC片塊/碼字、頁(yè)面內(nèi)的分區(qū)、頁(yè)面集合、停留態(tài)/存儲(chǔ)狀態(tài)、裸芯、裸芯中的平面、芯片等)的讀取電壓閾值保存在讀取電壓閾值庫(kù)中。通過(guò)確定并且管理用于不同存儲(chǔ)區(qū)域、用于不同停留態(tài)/存儲(chǔ)狀態(tài)等的分離的介質(zhì)特性和/或讀取電壓閾值,讀取電壓模塊312在特定實(shí)施例中可以單獨(dú)地定制用于每個(gè)存儲(chǔ)區(qū)域或停留態(tài)/存儲(chǔ)狀態(tài)的讀取電壓閾值,由此減少錯(cuò)誤,延長(zhǎng)非易失性存儲(chǔ)器介質(zhì)122的壽命等等。

存儲(chǔ)單元的不同停留態(tài)/存儲(chǔ)狀態(tài)可以具有不同介質(zhì)特性。例如,特定停留態(tài)/存儲(chǔ)狀態(tài)(例如L0狀態(tài))可以更易被編程干擾、讀取干擾或其它干擾。停留態(tài)或存儲(chǔ)狀態(tài)——如在此所使用的那樣——是與特定數(shù)據(jù)值集合關(guān)聯(lián)的讀取等級(jí)(例如用于閃速介質(zhì)的讀取電壓電平、用于PCM介質(zhì)的讀取電阻率等級(jí)等)的范圍。讀取閾值(例如讀取電壓閾值、讀取電阻率閾值等)可以分離停留態(tài)或存儲(chǔ)狀態(tài)。以下關(guān)于圖9A描述停留態(tài)或存儲(chǔ)狀態(tài)的一個(gè)示例。

在特定實(shí)施例中,讀取電壓模塊312確定和/或調(diào)整僅用于從第一/源存儲(chǔ)單元集合(例如SLC存儲(chǔ)單元)到第二/目的地存儲(chǔ)單元集合(例如TLC存儲(chǔ)單元)的回拷和/或IDM操作的讀取電壓閾值,以減少錯(cuò)誤,減少數(shù)據(jù)刷新量等。在這些實(shí)施例中,讀取電壓模塊312可以響應(yīng)于來(lái)自存儲(chǔ)客戶機(jī)116的讀取請(qǐng)求等而不確定或調(diào)整用于標(biāo)準(zhǔn)、工作量讀取操作的讀取電壓閾值,而可以使用默認(rèn)讀取電壓閾值等。在另一實(shí)施例中,讀取電壓模塊312可以僅對(duì)于具有預(yù)先定義的介質(zhì)特性的存儲(chǔ)單元(例如頁(yè)面、擦除塊或其它存儲(chǔ)單元集合)使用所調(diào)整的讀取電壓閾值,而對(duì)于其它存儲(chǔ)單元使用默認(rèn)讀取電壓閾值。在一個(gè)實(shí)施例中,讀取電壓模塊312所使用的主動(dòng)讀取電壓閾值模型也可以指示刷新模塊304在回拷和/或IDM操作期間將要刷新的一個(gè)或多個(gè)頁(yè)面、擦除塊或其它存儲(chǔ)單元集合。

雖然SLC存儲(chǔ)單元在特定實(shí)施例中至少與MLC或TLC存儲(chǔ)單元相比可以看作相對(duì)魯棒并且可靠的,但朝著SLC存儲(chǔ)單元的壽命的結(jié)束,對(duì)于以下關(guān)于單元容量模塊314所描述的已經(jīng)用作MLC和/或TLC存儲(chǔ)單元的SLC存儲(chǔ)單元等,可能快速地引入數(shù)據(jù)錯(cuò)誤,留下在沒(méi)有錯(cuò)誤的情況下用來(lái)移動(dòng)或回拷數(shù)據(jù)的有限窗口。通過(guò)調(diào)整用于第一/源存儲(chǔ)單元集合的一個(gè)或多個(gè)讀取電壓閾值,讀取電壓模塊312可以在仍使得用于對(duì)第二/目的地存儲(chǔ)單元集合的移動(dòng)或回拷的刷新量最小化的同時(shí)延長(zhǎng)該窗口,允許數(shù)據(jù)存儲(chǔ)在第一/源存儲(chǔ)單元集合中達(dá)較長(zhǎng)時(shí)間段。

在一個(gè)實(shí)施例中,單元容量模塊314被配置為:通過(guò)調(diào)整SLC存儲(chǔ)單元或擦除塊、MLC存儲(chǔ)單元或擦除塊、TLC存儲(chǔ)單元或擦除塊等的比率來(lái)動(dòng)態(tài)地調(diào)整用于非易失性存儲(chǔ)器介質(zhì)122的每單元所存儲(chǔ)的比特的數(shù)量。在特定實(shí)施例中,可以由制造商通過(guò)SLC擦除塊和TLC擦除塊的預(yù)先確定的比率(例如1.2%SLC擦除塊和98.8%TLC擦除塊)或另一預(yù)先確定的比率來(lái)預(yù)先配置非易失性存儲(chǔ)器介質(zhì)122。然而,制造商的預(yù)先確定的比率可能對(duì)于非易失性存儲(chǔ)器設(shè)備120的使用情況并不是優(yōu)化的。此外,制造商的SLC和TLC擦除塊的分配典型地是靜態(tài)的,其中,相同存儲(chǔ)單元關(guān)于設(shè)備120的壽命而被設(shè)置為SLC存儲(chǔ)單元或TLC存儲(chǔ)單元。

在一個(gè)實(shí)施例中,單元容量模塊314確定不同類型的存儲(chǔ)單元和/或擦除塊(例如SLC、MLC和/或TLC)的分配,以使得非易失性存儲(chǔ)器介質(zhì)122的壽命最大化。在另一實(shí)施例中,單元容量模塊314可以確定不同類型的存儲(chǔ)單元和/或擦除塊(例如SLC、MLC和/或TLC)的分配,以使得非易失性存儲(chǔ)器介質(zhì)122的性能最大化。在另一實(shí)施例中,單元容量模塊314可以確定不同類型的存儲(chǔ)單元和/或擦除塊(例如SLC、MLC和/或TLC)的分配,以使得非易失性存儲(chǔ)器介質(zhì)122的存儲(chǔ)容量最大化。單元容量模塊314在特定實(shí)施例中可以提供允許存儲(chǔ)客戶機(jī)116或其它用戶確定不同類型的存儲(chǔ)單元和/或擦除塊(例如SLC、MLC和/或TLC)的分配的用戶接口。

在特定實(shí)施例中,單元容量模塊314基于非易失性存儲(chǔ)器設(shè)備120的一個(gè)或多個(gè)數(shù)據(jù)因素或其它用于數(shù)據(jù)的屬性而確定不同類型的存儲(chǔ)單元和/或擦除塊(例如SLC、MLC和/或TLC)的分配。例如,在一個(gè)實(shí)施例中,單元容量模塊314可以隨著用于數(shù)據(jù)的服務(wù)質(zhì)量或另外優(yōu)先級(jí)等級(jí)增加而相對(duì)于TLC模式下的擦除塊的數(shù)量增加SLC模式下的擦除塊的數(shù)量,可以隨著用于數(shù)據(jù)的服務(wù)質(zhì)量或另外優(yōu)先級(jí)等級(jí)降低而相對(duì)于TLC模式下的擦除塊的數(shù)量降低SLC模式下的擦除塊的數(shù)量,從而具有較高服務(wù)質(zhì)量或另外優(yōu)先級(jí)等級(jí)的數(shù)據(jù)可以存儲(chǔ)在SLC存儲(chǔ)單元中。以此方式,在特定實(shí)施例中,單元容量模塊314可以使用不同類型的存儲(chǔ)單元和/或擦除塊來(lái)提供有區(qū)別的服務(wù)質(zhì)量(QoS)等級(jí)(例如,將高QoS等級(jí)數(shù)據(jù)存儲(chǔ)在SLC單元中,將中等QoS等級(jí)數(shù)據(jù)存儲(chǔ)在MLC單元中,將低QoS等級(jí)數(shù)據(jù)存儲(chǔ)在TLC單元中),并且可以在各個(gè)模式下調(diào)整或改變存儲(chǔ)單元的分配,以容納數(shù)據(jù)的性質(zhì)(例如SLC模式、MLC模式、TLC模式)。

在一個(gè)實(shí)施例中,單元容量模塊314確定單元容量模塊314貫穿非易失性存儲(chǔ)器介質(zhì)122的壽命使用的不同類型的存儲(chǔ)單元和/或擦除塊(例如SLC和TLC)的靜態(tài)分配。在其它實(shí)施例中,單元容量模塊314可以隨著非易失性存儲(chǔ)器老化(例如,基于編程/擦除計(jì)數(shù)、以時(shí)間為單位的年齡等)、隨著用于非易失性存儲(chǔ)器設(shè)備120的使用情況改變(例如緩存設(shè)備、備份設(shè)備、服務(wù)器設(shè)備、高寫(xiě)入負(fù)載設(shè)備、高讀取負(fù)載設(shè)備、低寫(xiě)入負(fù)載設(shè)備、低讀取負(fù)載設(shè)備等)來(lái)動(dòng)態(tài)地更新或調(diào)整不同類型的存儲(chǔ)單元和/或擦除塊(例如SLC和TLC)的分配。

在特定實(shí)施例中,單元容量模塊314可以隨著時(shí)間動(dòng)態(tài)地改變、輪換或損耗存儲(chǔ)單元集合(例如擦除塊)被配置作為SLC存儲(chǔ)單元、MLC存儲(chǔ)單元、TLC存儲(chǔ)單元的層式和/或存儲(chǔ)單元的其它層式。在一個(gè)實(shí)施例中,單元容量模塊314可以實(shí)質(zhì)上均勻地分配哪些存儲(chǔ)單元集合(例如擦除塊)被配置有不同層式或數(shù)量的每單元比特、存儲(chǔ)單元被分配有不同層式(例如SLC、MLC、TLC)的損耗層式劃分。例如,對(duì)于具有SLC和TLC存儲(chǔ)單元的裸芯上緩沖式非易失性存儲(chǔ)器介質(zhì)122,單元容量模塊314可以隨著關(guān)于存儲(chǔ)容量恢復(fù)等而選擇擦除塊來(lái)實(shí)質(zhì)上均勻地輪換哪些擦除塊被配置作為SLC并且哪些作為T(mén)LC,從而每個(gè)擦除塊在作為SLC存儲(chǔ)的使用中花費(fèi)與在作為T(mén)LC存儲(chǔ)的使用中實(shí)質(zhì)上相同的時(shí)間。在另一實(shí)施例中,單元容量模塊314可以選擇具有比單元容量模塊314可以對(duì)于較高數(shù)量的每單元比特(例如TLC)而選擇的其它擦除塊更高的錯(cuò)誤率、更高的編程/擦除計(jì)數(shù)等的用于較低數(shù)量的每單元比特(例如SLC)的擦除塊或其它存儲(chǔ)單元集合。例如,單元容量模塊314可以分配單元模式,從而可使用的壽命(例如時(shí)間量)對(duì)于每個(gè)存儲(chǔ)單元集合實(shí)質(zhì)上相等,從而不同的存儲(chǔ)單元集合同時(shí)或近乎同時(shí)地?fù)p耗掉。

在一個(gè)實(shí)施例中,非易失性存儲(chǔ)器介質(zhì)122可以支持用于設(shè)置每單元比特的數(shù)量(例如SLC模式、MLC模式和/或TLC模式)的操作或命令(例如SET FEATURE命令等)。在另一實(shí)施例中,單元容量模塊314可以通過(guò)與讀取電壓模塊312等協(xié)作來(lái)添加或調(diào)整一個(gè)或多個(gè)讀取電壓閾值而在沒(méi)有操作或命令的情況下設(shè)置每單元比特的數(shù)量(例如SLC模式、MLC模式和/或TLC模式)。例如,即使非易失性存儲(chǔ)器介質(zhì)122不支持或提供MLC模式,單元容量模塊314和/或讀取電壓模塊312也可以在邏輯上將讀取電壓閾值添加到SLC模式,或在邏輯上從TLC模式移除(例如,忽略、縮減、重疊)讀取電壓閾值,以在虛擬MLC模式下操作存儲(chǔ)單元集合等。

在特定實(shí)施例中,單元容量模塊314可以對(duì)于每個(gè)分配而設(shè)置用于存儲(chǔ)單元集合的模式一次,非易失性存儲(chǔ)器介質(zhì)122使用所設(shè)置的模式,直到其改變。在另一實(shí)施例中,單元容量模塊314可以通過(guò)每個(gè)命令或操作來(lái)設(shè)置模式。單元容量模塊314在一個(gè)實(shí)施例中可以保存指示在不同的模式下分配哪些擦除塊或其它存儲(chǔ)單元集合的元數(shù)據(jù),從而即使非易失性存儲(chǔ)器設(shè)備120重置或斷電,單元容量模塊314也可以使得分配一致。

在特定實(shí)施例中,單元容量模塊314與數(shù)據(jù)因素模塊322、存儲(chǔ)容量恢復(fù)模塊318等協(xié)作可以通過(guò)每個(gè)存儲(chǔ)容量恢復(fù)事件來(lái)監(jiān)控或跟蹤用于每個(gè)擦除塊的一個(gè)或多個(gè)統(tǒng)計(jì)(例如錯(cuò)誤率(例如RBER、UBER)、程序/擦除計(jì)數(shù)、其花費(fèi)于對(duì)擦除塊進(jìn)行擦除的T-erase時(shí)間、其花費(fèi)于對(duì)擦除塊進(jìn)行編程的T-prog時(shí)間和/或另一存儲(chǔ)介質(zhì)特性、數(shù)據(jù)因素和/或與數(shù)據(jù)關(guān)聯(lián)的屬性)作為非易失性存儲(chǔ)器介質(zhì)122的周期性后臺(tái)掃描等。T-erase、T-prog等可以隨著存儲(chǔ)單元老化而隨著時(shí)間增加,并且可以指示存儲(chǔ)單元的可靠性。存儲(chǔ)容量恢復(fù)模塊318在一個(gè)示例中可以隨著其在存儲(chǔ)容量恢復(fù)操作期間擦除塊而測(cè)量用于擦除塊的T-erase時(shí)間。單元容量模塊314可以將最損耗的存儲(chǔ)單元(例如擦除塊)分配給SLC模式并且將其余分配為T(mén)LC模式等。一旦TLC擦除塊的可靠性落入可靠性閾值之下,在一個(gè)實(shí)施例中,單元容量模塊314就可以將TLC擦除塊重新分配給具有更少的每存儲(chǔ)單元的狀態(tài)和比特的MLC模式、SLC模式等。

在一個(gè)實(shí)施例中,邏輯到物理映射模塊316被配置為:保存將邏輯標(biāo)識(shí)符(例如LBA)映射為非易失性存儲(chǔ)器介質(zhì)122中的物理位置的邏輯到物理映射結(jié)構(gòu)。以下關(guān)于圖6描述邏輯到物理映射結(jié)構(gòu)的一個(gè)實(shí)施例。如上所述,歸因于回拷和/或IDM過(guò)程,在特定實(shí)施例中,相同的有效數(shù)據(jù)可能存在于非易失性存儲(chǔ)器介質(zhì)122內(nèi)的兩個(gè)位置處。不同的位置可以處于不同類型的存儲(chǔ)單元(例如SLC存儲(chǔ)單元和TLC存儲(chǔ)單元)中。

邏輯到物理映射模塊316在一個(gè)實(shí)施例中與回拷模塊306協(xié)作,以在回拷和/或IDM操作之前、期間以及之后跟蹤用于非易失性存儲(chǔ)器介質(zhì)122中的數(shù)據(jù)的位置。邏輯到物理映射模塊316在特定實(shí)施例中可以在保存對(duì)于同一數(shù)據(jù)的多個(gè)映射、對(duì)第一/源存儲(chǔ)單元集合中的位置的主級(jí)/之前映射以及對(duì)第二/目的地存儲(chǔ)單元集合中的位置的次級(jí)/之后映射等。在特定實(shí)施例中,邏輯到物理映射模塊316可以將對(duì)于同一邏輯地址或邏輯地址范圍的多個(gè)映射存儲(chǔ)或保存在邏輯到物理映射結(jié)構(gòu)內(nèi)的相同項(xiàng)內(nèi)(例如對(duì)SLC位置的主級(jí)映射以及對(duì)TLC位置的次級(jí)映射)。在其它實(shí)施例中,邏輯到物理映射模塊316可以將對(duì)于同一邏輯地址或邏輯地址范圍的不同映射存儲(chǔ)或保存在邏輯到物理映射結(jié)構(gòu)中的不同項(xiàng)中。邏輯到物理映射模塊316可以與讀取模塊310協(xié)作,從而甚至在數(shù)據(jù)已經(jīng)拷貝回到可以具有比第一/源存儲(chǔ)單元集合更慢的訪問(wèn)時(shí)間、更低的可靠性等的第二/目的地存儲(chǔ)單元集合之后,也使用主級(jí)映射(對(duì)SLC存儲(chǔ)單元中的數(shù)據(jù)的映射)來(lái)服務(wù)于讀取請(qǐng)求。

邏輯到物理映射模塊316在一個(gè)實(shí)施例中可以被配置為:響應(yīng)于將數(shù)據(jù)拷貝或移動(dòng)到第二/目的地非易失性存儲(chǔ)單元集合而更新、移除或替換對(duì)于第一/源非易失性存儲(chǔ)單元集合中的數(shù)據(jù)的位置的邏輯到物理映射,而無(wú)需驗(yàn)證。在另一實(shí)施例中,邏輯到物理映射模塊316可以與回拷模塊306協(xié)作,以通過(guò)以下操作而在更新、移除或替換對(duì)第一/源非易失性存儲(chǔ)單元集合的映射之前驗(yàn)證第二/目的地非易失性存儲(chǔ)單元集合中的數(shù)據(jù)的存儲(chǔ)和/或數(shù)據(jù)完整性:從第二/目的地非易失性存儲(chǔ)單元集合讀取數(shù)據(jù),從非易失性存儲(chǔ)器介質(zhì)122接收完成指示符或確認(rèn),對(duì)數(shù)據(jù)執(zhí)行糾錯(cuò)等,如上所述。邏輯到物理映射模塊316可以與存儲(chǔ)容量恢復(fù)模塊318協(xié)作,以一旦邏輯到物理映射模塊316已經(jīng)移除對(duì)第一/源存儲(chǔ)單元集合的映射就擦除并且恢復(fù)第一/源存儲(chǔ)單元集合的存儲(chǔ)容量。

邏輯到物理映射模塊316在特定實(shí)施例中可以延遲更新、移除或替換對(duì)第一/源非易失性存儲(chǔ)單元集合的映射,直到滿足預(yù)先定義的觸發(fā)。例如,邏輯到物理映射模塊316可以等待直到存儲(chǔ)容量恢復(fù)模塊318已經(jīng)關(guān)于存儲(chǔ)容量恢復(fù)操作而選擇第一/源存儲(chǔ)單元集合,直到非易失性存儲(chǔ)器設(shè)備120的可用的未使用的容量已經(jīng)落入容量閾值之下,直到關(guān)于第一/源存儲(chǔ)單元集合的數(shù)據(jù)的讀取速率落入頻繁訪問(wèn)閾值之下等。通過(guò)延遲移除對(duì)第一/源存儲(chǔ)單元集合的數(shù)據(jù)的映射,在一個(gè)實(shí)施例中,邏輯到物理映射模塊316允許從第一/源存儲(chǔ)單元集合訪問(wèn)數(shù)據(jù)達(dá)盡可能長(zhǎng),優(yōu)化關(guān)于數(shù)據(jù)的性能。

在特定實(shí)施例中,邏輯到物理映射模塊316與下述功率切斷模塊320協(xié)作,以確保在用于非易失性存儲(chǔ)器設(shè)備120的功率等級(jí)落入閾值之下(例如關(guān)閉、功率切斷、重新啟動(dòng)、重新引導(dǎo)、功率損耗等)之后邏輯到物理映射結(jié)構(gòu)、邏輯到物理映射以及關(guān)聯(lián)數(shù)據(jù)是可訪問(wèn)并且可恢復(fù)的。例如,在一個(gè)實(shí)施例中,邏輯到物理映射模塊316僅在可以從第二/目的地存儲(chǔ)單元(例如TLC擦除塊的一個(gè)或多個(gè)頁(yè)面)讀取和/或另外驗(yàn)證回拷和/或IDM操作的數(shù)據(jù)之后并且在已經(jīng)從第一/源存儲(chǔ)單元(例如SLC擦除塊的一個(gè)或多個(gè)頁(yè)面)擦除數(shù)據(jù)之前更新邏輯到物理映射。以此方式,因?yàn)樵谔囟▽?shí)施例中直到第二/目的地擦除塊已經(jīng)得以確認(rèn)或驗(yàn)證為完全填充的才擦除第一/源擦除塊(例如SLC擦除塊),所以邏輯到物理映射模塊316可以與功率切斷模塊320協(xié)作,以防止歸因于被部分填充的擦除塊導(dǎo)致的數(shù)據(jù)丟失。

如上所述,回拷模塊306可以優(yōu)化回拷和/或IDM處理。邏輯到物理映射模塊316可以優(yōu)化回拷和/或IDM操作中所涉及的對(duì)頁(yè)面或擦除塊中的數(shù)據(jù)的訪問(wèn)。例如,如果正以高頻率訪問(wèn)頁(yè)面上的數(shù)據(jù),則回拷模塊306與中止模塊308等協(xié)作可以中止或推遲回拷和/或IDM操作,并且將數(shù)據(jù)留在可以提供比第二/目的地存儲(chǔ)單元集合(例如TLC存儲(chǔ)單元)更快的讀取的第一/源存儲(chǔ)單元集合(例如SLC存儲(chǔ)單元)中。如上所述,在特定實(shí)施例中,如果正以高頻率訪問(wèn)頁(yè)面上的數(shù)據(jù),則回拷模塊306可以允許回拷和/或IDM操作繼續(xù),但可以修改回拷和/或IDM操作,從而數(shù)據(jù)的拷貝保留在第一/源存儲(chǔ)單元集合中,至少直到高頻率的訪問(wèn)下降等。

在一個(gè)實(shí)施例中,邏輯到物理映射模塊316可以從數(shù)據(jù)因素模塊322等將指示一個(gè)或多個(gè)數(shù)據(jù)因素或其它用于關(guān)聯(lián)數(shù)據(jù)的屬性的元數(shù)據(jù)存儲(chǔ)在邏輯到物理映射結(jié)構(gòu)中,允許刷新模塊304確定是否刷新回拷和/或IDM操作的數(shù)據(jù),允許回拷模塊306確定是否對(duì)于數(shù)據(jù)執(zhí)行回拷和/或IDM操作等。例如,邏輯到物理映射模塊316可以在每個(gè)邏輯到物理映射項(xiàng)中包括指示用于關(guān)聯(lián)的數(shù)據(jù)的服務(wù)質(zhì)量或另外優(yōu)先級(jí)、用于數(shù)據(jù)的訪問(wèn)頻率或頻率計(jì)數(shù)(例如讀取計(jì)數(shù)、寫(xiě)入計(jì)數(shù)等)等的元數(shù)據(jù)。如上所述,如果第一/源存儲(chǔ)單元集合(例如SLC擦除塊)的數(shù)據(jù)具有高QoS等級(jí),則回拷模塊306可以確定不使用回拷和/或IDM操作來(lái)移動(dòng)數(shù)據(jù),將數(shù)據(jù)拷貝到第二/目的地存儲(chǔ)單元集合(例如TLC存儲(chǔ)單元),但還讓數(shù)據(jù)至少臨時(shí)保留在第一/源存儲(chǔ)單元集合中,以提供較高的讀取性能。

在一個(gè)實(shí)施例中,存儲(chǔ)容量恢復(fù)模塊318與邏輯到物理映射模塊316和/或回拷模塊306協(xié)作,以在回拷和/或IDM操作已經(jīng)對(duì)于第一/源存儲(chǔ)單元集合(例如SLC擦除塊)成功地完成之后擦除并且恢復(fù)第一/源存儲(chǔ)單元集合的存儲(chǔ)容量,這可以稱為垃圾收集。存儲(chǔ)容量恢復(fù)模塊318在一個(gè)實(shí)施例中可以被配置為:通過(guò)以下操作在回拷和/或IDM操作之后響應(yīng)于驗(yàn)證第二/目的地非易失性存儲(chǔ)單元集合中的數(shù)據(jù)的存儲(chǔ)而恢復(fù)第一/源非易失性存儲(chǔ)單元集合的存儲(chǔ)容量:讀取數(shù)據(jù),對(duì)該數(shù)據(jù)與第一/源存儲(chǔ)單元集合中的數(shù)據(jù)進(jìn)行比較,從非易失性存儲(chǔ)器介質(zhì)122接收確認(rèn)等。存儲(chǔ)容量恢復(fù)模塊318在一個(gè)實(shí)施例中可以與服務(wù)于來(lái)自第二/目的地存儲(chǔ)單元集合等的讀取請(qǐng)求的讀取模塊310協(xié)作而響應(yīng)于對(duì)數(shù)據(jù)的讀取請(qǐng)求來(lái)驗(yàn)證數(shù)據(jù)的存儲(chǔ),從而由于已經(jīng)讀取數(shù)據(jù),因此驗(yàn)證添加很少的開(kāi)銷或不添加開(kāi)銷。

在特定實(shí)施例中,在回拷模塊306已經(jīng)從擦除塊拷貝數(shù)據(jù)之后,存儲(chǔ)容量恢復(fù)模塊318可以延遲恢復(fù)用于第一/源存儲(chǔ)單元集合的一個(gè)或多個(gè)擦除塊的存儲(chǔ)容量。存儲(chǔ)容量恢復(fù)模塊318在特定實(shí)施例中可以基于一個(gè)或多個(gè)數(shù)據(jù)因素或其它用于擦除塊的數(shù)據(jù)的屬性而有選擇地確定何時(shí)對(duì)于回拷模塊306已經(jīng)執(zhí)行回拷和/或IDM操作的第一/源擦除塊執(zhí)行存儲(chǔ)容量恢復(fù)操作。例如,存儲(chǔ)容量恢復(fù)模塊318可以選擇具有最低服務(wù)質(zhì)量或優(yōu)先級(jí)等級(jí)、具有最低讀取頻率、具有最高寫(xiě)入頻率(例如,很可能因后續(xù)寫(xiě)入而無(wú)效)、具有最長(zhǎng)保留時(shí)間、具有最高錯(cuò)誤率(例如RBER、UBER)等的用于存儲(chǔ)容量恢復(fù)的源(例如SLC)存儲(chǔ)單元的擦除塊。在一個(gè)實(shí)施例中,存儲(chǔ)容量恢復(fù)模塊318可以等待恢復(fù)第一/源存儲(chǔ)單元集合(例如SLC擦除塊)的存儲(chǔ)容量,直到關(guān)于存儲(chǔ)單元的數(shù)據(jù)的訪問(wèn)率(例如讀取速率)無(wú)法滿足預(yù)先定義的訪問(wèn)閾值。特定實(shí)施例中,存儲(chǔ)容量恢復(fù)模塊318在可以等待恢復(fù)第一/源存儲(chǔ)單元集合的存儲(chǔ)容量,直到滿足用于非易失性存儲(chǔ)器設(shè)備120的存儲(chǔ)容量閾值(例如,設(shè)備120是填滿的,接近填滿的等,并且存儲(chǔ)容量恢復(fù)是需要的)。在另一實(shí)施例中,存儲(chǔ)容量恢復(fù)模塊318可以基于多個(gè)數(shù)據(jù)因素或其它屬性(例如加權(quán)平均)的組合、縮放的數(shù)據(jù)因素或?qū)傩缘慕M合、判決樹(shù)等而選擇用于存儲(chǔ)容量恢復(fù)操作的擦除塊。

在一個(gè)實(shí)施例中,功率切斷模塊320在關(guān)于非易失性存儲(chǔ)器介質(zhì)122、非易失性存儲(chǔ)器設(shè)備120、計(jì)算設(shè)備110等的功率切斷事件之后管理數(shù)據(jù)的一致性。存儲(chǔ)器設(shè)備120在特定實(shí)施例中包括寫(xiě)入流水線240和讀取流水線241,如上所述。隨著數(shù)據(jù)從存儲(chǔ)客戶機(jī)116傳送到非易失性存儲(chǔ)器介質(zhì)122中,寫(xiě)入流水線240可以對(duì)數(shù)據(jù)執(zhí)行特定操作。這些操作可以包括例如糾錯(cuò)碼(ECC)生成、加密、壓縮等。讀取流水線241可以對(duì)正讀出非易失性存儲(chǔ)器介質(zhì)122并且發(fā)送到存儲(chǔ)客戶機(jī)116的數(shù)據(jù)執(zhí)行相似的以及勢(shì)必相反的操作。

存儲(chǔ)器設(shè)備120在特定實(shí)施例中還包括次級(jí)電源,其在倘若導(dǎo)致存儲(chǔ)器設(shè)備120未通過(guò)主級(jí)功率連接125接收到足夠的電功率的完全或部分功率中斷時(shí)提供功率。功率中斷是不期望地使得存儲(chǔ)器設(shè)備120停止通過(guò)主級(jí)功率連接125接收功率或產(chǎn)生存儲(chǔ)器設(shè)備120通過(guò)主級(jí)功率連接125接收到的功率的顯著減少的任何事件。在一個(gè)實(shí)施例中,功率的顯著減少包括功率落入預(yù)先定義的閾值之下。在另一實(shí)施例中,預(yù)先定義的閾值可以被選擇為允許來(lái)自主級(jí)功率連接125的功率的等級(jí)的正常波動(dòng)。例如,用于存儲(chǔ)客戶機(jī)116和存儲(chǔ)器設(shè)備120所處的建筑的功率可能出故障或停止。用戶動(dòng)作(例如,不正確地關(guān)斷將功率提供給存儲(chǔ)器設(shè)備120的計(jì)算設(shè)備110)、主級(jí)功率連接125中的故障或主級(jí)電源中的故障可以使得存儲(chǔ)器設(shè)備120停止接收功率。各種類型的功率中斷可以對(duì)于存儲(chǔ)器設(shè)備120產(chǎn)生不期望的功率損耗。

次級(jí)電源可以包括一個(gè)或多個(gè)電池、一個(gè)或多個(gè)電容器、電容器組、對(duì)電源的分離的連接等。在一個(gè)實(shí)施例中,次級(jí)電源在功率中斷或來(lái)自主級(jí)功率連接125的功率的另外減少期間將功率提供給存儲(chǔ)器設(shè)備120達(dá)至少功率保持時(shí)間。在另一實(shí)施例中,次級(jí)電源可以將功率保持時(shí)間提供得足夠長(zhǎng),以使得存儲(chǔ)器設(shè)備120能夠?qū)⒉⑽刺幱诜且资源鎯?chǔ)器介質(zhì)122中的特定數(shù)據(jù)沖刷到非易失性存儲(chǔ)器介質(zhì)122中。

在一個(gè)實(shí)施例中,次級(jí)電源是在來(lái)自主級(jí)功率連接125的功率的部分或完全丟失時(shí)自動(dòng)地將功率提供給存儲(chǔ)器設(shè)備120的電路的部分。相似地,存儲(chǔ)器設(shè)備120可以被配置為:在部分或完全功率損耗期間從次級(jí)電源接受或接收電功率。例如,在一個(gè)實(shí)施例中,次級(jí)電源可以與主級(jí)功率連接125并行地電耦合到存儲(chǔ)器設(shè)備120,從而主級(jí)功率連接125在正常操作期間對(duì)次級(jí)電源進(jìn)行充電,并且次級(jí)電源響應(yīng)于功率損耗而自動(dòng)地將功率提供給存儲(chǔ)器設(shè)備120。在一個(gè)實(shí)施例中,存儲(chǔ)器設(shè)備120還包括次級(jí)電源與主級(jí)功率連接125之間的二極管或其它反相電流保護(hù),以防止來(lái)自次級(jí)電源的電流到達(dá)主級(jí)功率連接125。在另一實(shí)施例中,功率切斷模塊320可以響應(yīng)于來(lái)自主級(jí)功率連接125的減少的功率而使用開(kāi)關(guān)等來(lái)啟用次級(jí)電源或?qū)⑵溥B接到存儲(chǔ)器設(shè)備120。

此外,在特定實(shí)施例中,寫(xiě)入流水線240內(nèi)的一些數(shù)據(jù)可能因?yàn)楣β手袛喽黄茐摹9β手袛嗫梢园üβ使收弦约八峁┑墓β实燃?jí)的不期望的改變。功率等級(jí)的不期望的改變可能冒風(fēng)險(xiǎn)而放置處于存儲(chǔ)器設(shè)備120中但尚未處于非易失性存儲(chǔ)器介質(zhì)122中的數(shù)據(jù)。在功率切斷模塊320甚至意識(shí)到(或被通知)已經(jīng)存在功率的中斷之前,數(shù)據(jù)破壞可能開(kāi)始產(chǎn)生。

在特定實(shí)施例中,功率切斷模塊320實(shí)現(xiàn)為非易失性存儲(chǔ)器控制器124、非易失性存儲(chǔ)器介質(zhì)控制器126等的部分。功率切斷模塊320可以是例如硬件驅(qū)動(dòng)器(例如SML 130)或?qū)崿F(xiàn)于用于存儲(chǔ)器設(shè)備120的固件(例如非易失性存儲(chǔ)器介質(zhì)控制器126)中。在其它實(shí)施例中,功率切斷模塊320可以部分地實(shí)現(xiàn)于驅(qū)動(dòng)器中并且部分地實(shí)現(xiàn)于非易失性存儲(chǔ)器介質(zhì)控制器126等中。在一個(gè)實(shí)施例中,功率切斷模塊320的至少一部分實(shí)現(xiàn)于存儲(chǔ)器設(shè)備120上作為非易失性存儲(chǔ)器介質(zhì)控制器126等的部分,從而即使存儲(chǔ)客戶機(jī)116不再運(yùn)作,功率切斷模塊320也使用來(lái)自次級(jí)電源的功率在部分或完全功率損耗期間繼續(xù)運(yùn)作。

在一個(gè)實(shí)施例中,功率切斷模塊320響應(yīng)于來(lái)自主級(jí)功率連接125的功率的減少而在存儲(chǔ)器設(shè)備120中發(fā)起功率損耗模式。在功率損耗模式期間,功率切斷模塊320在一個(gè)實(shí)施例中將尚未存儲(chǔ)在非易失性存儲(chǔ)器介質(zhì)122中的處于存儲(chǔ)器設(shè)備120中的數(shù)據(jù)沖刷到非易失性存儲(chǔ)器介質(zhì)122中。在特定實(shí)施例中,功率切斷模塊320可以將尚未存儲(chǔ)在非易失性存儲(chǔ)器介質(zhì)122中的已經(jīng)得以確認(rèn)并且處于存儲(chǔ)器設(shè)備120中的數(shù)據(jù)沖刷到非易失性存儲(chǔ)器介質(zhì)122中。在特定實(shí)施例中,功率切斷模塊320可以調(diào)整對(duì)存儲(chǔ)器設(shè)備120執(zhí)行數(shù)據(jù)操作,以確保必要操作在次級(jí)電源損耗足夠的功率之前完成,以在次級(jí)電源提供的功率保持時(shí)間期間完成必要操作。

在特定實(shí)施例中,必要操作包括用于已經(jīng)確認(rèn)為已經(jīng)存儲(chǔ)的數(shù)據(jù)的這些操作(例如所確認(rèn)的寫(xiě)入操作)。在其它實(shí)施例中,必要操作包括用于已經(jīng)確認(rèn)為已經(jīng)存儲(chǔ)并且擦除的數(shù)據(jù)的這些操作。在其它實(shí)施例中,必要操作包括用于已經(jīng)確認(rèn)為已經(jīng)存儲(chǔ)、讀取并且擦除的數(shù)據(jù)的這些操作。功率切斷模塊320也可以終止非必要操作,以確保這些非必要操作不會(huì)不必要地消耗功率和/或不阻止必要操作執(zhí)行;例如,功率切斷模塊320可以終止擦除操作、讀取操作、未確認(rèn)的寫(xiě)入操作等。

在一個(gè)實(shí)施例中,終止不必要操作保留來(lái)自次級(jí)電源的功率,允許次級(jí)電源提供功率保持時(shí)間。在另一實(shí)施例中,功率切斷模塊320在功率損耗模式期間靜默或另外關(guān)斷存儲(chǔ)器設(shè)備120的一個(gè)或多個(gè)子組件的操作,以節(jié)省來(lái)自次級(jí)電源的功率。例如,在各個(gè)實(shí)施例中,功率切斷模塊320可以靜默讀取流水線241、讀取直接存儲(chǔ)器訪問(wèn)(DMA)引擎和/或與非必要操作關(guān)聯(lián)的存儲(chǔ)器設(shè)備120的其它子組件的操作。

功率切斷模塊320也可以負(fù)責(zé)確定功率中斷破壞什么數(shù)據(jù),防止破壞數(shù)據(jù)存儲(chǔ)在非易失性存儲(chǔ)器介質(zhì)122中,并且確保存儲(chǔ)客戶機(jī)116意識(shí)到被破壞的數(shù)據(jù)實(shí)際上絕不存儲(chǔ)在存儲(chǔ)器設(shè)備120上。這樣防止源于功率中斷的存儲(chǔ)器設(shè)備120中的數(shù)據(jù)的破壞。

在一個(gè)實(shí)施例中,由于回拷和/或IDM操作的數(shù)據(jù)已經(jīng)存儲(chǔ)在第一/源存儲(chǔ)單元集合中,因此功率切斷模塊320將處理中回拷和/或IDM操作看作非必要的,并且與中止模塊308協(xié)作,以在功率損耗模式等期間響應(yīng)于功率等級(jí)不足以滿足閾值而中止處理中回拷和/或IDM操作。此外,對(duì)特定類型的存儲(chǔ)單元(例如TLC存儲(chǔ)單元)進(jìn)行編程可能需要對(duì)整個(gè)擦除塊進(jìn)行編程,或另外被部分填充的擦除塊可能是不可使用的或被破壞的,勢(shì)必導(dǎo)致數(shù)據(jù)丟失。功率切斷模塊320可以與邏輯到物理映射模塊316協(xié)作,以確保所中止的回拷和/或IDM操作的數(shù)據(jù)在功率故障之后在第一/源存儲(chǔ)單元集合保持可用,并且邏輯到物理映射結(jié)構(gòu)不包含對(duì)拷貝回到被部分填充的擦除塊的數(shù)據(jù)的任何映射。

功率切斷模塊320在一個(gè)實(shí)施例中可以與存儲(chǔ)容量恢復(fù)模塊318協(xié)作,以擦除并且恢復(fù)第二/目的地存儲(chǔ)單元集合(例如TLC擦除塊)的任何被部分填充的擦除塊的存儲(chǔ)容量。在特定實(shí)施例中,回拷模塊306可以在從功率等級(jí)不足(failing)中恢復(fù)等之后重啟任何所中止的回拷和/或IDM操作。為了促進(jìn)從功率不足的恢復(fù)、被部分填充的擦除塊等的擦除等,在特定實(shí)施例中,功率切斷模塊320可以與回拷模塊306協(xié)作,以響應(yīng)于回拷和/或IDM操作填充擦除塊而將第二/目的地存儲(chǔ)單元的擦除塊(例如TLC擦除塊)標(biāo)記為填充的。在恢復(fù)期間,功率切斷模塊320和/或存儲(chǔ)容量恢復(fù)模塊318可以對(duì)于未標(biāo)記為填充的第二/目的地存儲(chǔ)單元的任何擦除塊執(zhí)行存儲(chǔ)容量恢復(fù)操作。在另一實(shí)施例中,甚至在被部分填充的擦除塊未得以標(biāo)記的實(shí)施例中,功率切斷模塊320和/或存儲(chǔ)容量恢復(fù)模塊318也可以執(zhí)行非易失性存儲(chǔ)器介質(zhì)122的恢復(fù)掃描,以定位第二/目的地存儲(chǔ)單元的被部分填充的擦除塊。

在一個(gè)實(shí)施例中,數(shù)據(jù)因素模塊322被配置為:確定用于具有比第二/目的地非易失性存儲(chǔ)單元集合(例如TLC擦除塊)更低的每單元所表示的比特的數(shù)量的第一/源非易失性存儲(chǔ)單元集合(例如SLC擦除塊)的數(shù)據(jù)的一個(gè)或多個(gè)數(shù)據(jù)因素或其它屬性。在特定實(shí)施例中,數(shù)據(jù)因素模塊322可以保存指示數(shù)據(jù)因素模塊322已經(jīng)確定的數(shù)據(jù)因素或其它屬性的元數(shù)據(jù)。數(shù)據(jù)因素模塊322可以與邏輯到物理映射模塊316協(xié)作,以將指示一個(gè)或多個(gè)數(shù)據(jù)因素或其它與數(shù)據(jù)關(guān)聯(lián)的屬性的元數(shù)據(jù)存儲(chǔ)在邏輯到物理映射結(jié)構(gòu)中,可以將一個(gè)或多個(gè)數(shù)據(jù)因素或其它具有關(guān)聯(lián)數(shù)據(jù)的屬性的指示符存儲(chǔ)在非易失性存儲(chǔ)器介質(zhì)122中,和/或可以保存指示一個(gè)或多個(gè)數(shù)據(jù)因素或其它屬性的元數(shù)據(jù)。如上所述,在各個(gè)實(shí)施例中,刷新模塊304可以基于來(lái)自數(shù)據(jù)因素模塊322的一個(gè)或多個(gè)數(shù)據(jù)因素或其它屬性而確定刷新哪些數(shù)據(jù),回拷模塊306可以基于來(lái)自數(shù)據(jù)因素模塊322的一個(gè)或多個(gè)數(shù)據(jù)因素或其它屬性而確定移動(dòng)或回拷哪些數(shù)據(jù),存儲(chǔ)容量恢復(fù)模塊318可以基于來(lái)自數(shù)據(jù)因素模塊322的一個(gè)或多個(gè)數(shù)據(jù)因素或其它屬性而選擇用于存儲(chǔ)容量恢復(fù)或垃圾收集的擦除塊等。

在一個(gè)實(shí)施例中,與數(shù)據(jù)關(guān)聯(lián)的屬性(例如數(shù)據(jù)因素)包括與所存儲(chǔ)的數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)的非易失性存儲(chǔ)單元等關(guān)聯(lián)的特征或方面或與這些特征或方面關(guān)聯(lián)的指示符或標(biāo)志。與數(shù)據(jù)關(guān)聯(lián)的屬性(例如數(shù)據(jù)因素)在特定實(shí)施例中可以包括關(guān)聯(lián)數(shù)據(jù)具有一個(gè)或多個(gè)數(shù)據(jù)錯(cuò)誤的似然率的指示符。與數(shù)據(jù)關(guān)聯(lián)的屬性(例如數(shù)據(jù)因素)在特定實(shí)施例中可以包括關(guān)于關(guān)聯(lián)數(shù)據(jù)的數(shù)據(jù)錯(cuò)誤的數(shù)量的指示符。與數(shù)據(jù)關(guān)聯(lián)的屬性(例如數(shù)據(jù)因素)在各個(gè)實(shí)施例中可以包括以下項(xiàng)中的一個(gè)或多個(gè):用于數(shù)據(jù)的服務(wù)質(zhì)量等級(jí)或另外優(yōu)先級(jí)、用于數(shù)據(jù)的錯(cuò)誤率(例如原始誤比特率(RBER)或不可糾正的誤比特率(UBER))、用于數(shù)據(jù)的年齡(例如保留時(shí)間或自從寫(xiě)入以來(lái)的時(shí)間)、用于第一/源非易失性存儲(chǔ)單元集合的編程/擦除周期計(jì)數(shù)、用于數(shù)據(jù)的寫(xiě)入頻率、用于數(shù)據(jù)的讀取頻率、關(guān)于第一/源非易失性存儲(chǔ)單元集合所滿足的容量閾值等。

在特定實(shí)施例中,數(shù)據(jù)因素或另外與數(shù)據(jù)關(guān)聯(lián)的屬性可以包括指示數(shù)據(jù)滿足數(shù)據(jù)因素閾值(例如服務(wù)質(zhì)量或另外優(yōu)先級(jí)閾值、錯(cuò)誤率閾值、年齡閾值、程序/擦除計(jì)數(shù)閾值、寫(xiě)入頻率閾值、讀取頻率閾值、容量閾值等)的與數(shù)據(jù)關(guān)聯(lián)的標(biāo)志或另外指示符。例如,數(shù)據(jù)因素模塊322可以響應(yīng)于對(duì)數(shù)據(jù)的存儲(chǔ)請(qǐng)求、響應(yīng)于數(shù)據(jù)的后臺(tái)掃描、響應(yīng)于對(duì)于存儲(chǔ)數(shù)據(jù)的擦除塊或其它存儲(chǔ)單元集合的存儲(chǔ)容量恢復(fù)事件等而周期性地設(shè)置或存儲(chǔ)用于數(shù)據(jù)的標(biāo)志或另外指示符。在一個(gè)實(shí)施例中,刷新模塊304可以基于數(shù)據(jù)因素模塊322已經(jīng)對(duì)于數(shù)據(jù)設(shè)置的標(biāo)志或另外指示符(例如數(shù)據(jù)因素)而確定是否刷新數(shù)據(jù)?;乜侥K306在特定實(shí)施例中可以基于數(shù)據(jù)因素模塊322已經(jīng)對(duì)于數(shù)據(jù)設(shè)置的標(biāo)志或其它指示符(例如數(shù)據(jù)因素)而確定是否將數(shù)據(jù)存儲(chǔ)在第二/目的地存儲(chǔ)單元集合中。如下所述,數(shù)據(jù)因素模塊322可以將用于一個(gè)或多個(gè)數(shù)據(jù)因素或其它屬性的元數(shù)據(jù)(例如用于數(shù)據(jù)因素的一個(gè)或多個(gè)標(biāo)志或其它指示符)存儲(chǔ)或保存在邏輯到物理映射結(jié)構(gòu)的項(xiàng)中,隨數(shù)據(jù)存儲(chǔ)或保存在非易失性存儲(chǔ)器介質(zhì)122中,存儲(chǔ)或保存在分離的數(shù)據(jù)結(jié)構(gòu)中,等等。

數(shù)據(jù)因素模塊322可以確定、監(jiān)控和/或跟蹤用于數(shù)據(jù)的一個(gè)或多個(gè)粒度(例如每ECC碼字或片塊、每邏輯或物理頁(yè)面、每邏輯或物理擦除塊、邏輯到物理映射結(jié)構(gòu)中的LBA的每范圍等)的數(shù)據(jù)因素或其它屬性。數(shù)據(jù)因素模塊322在一個(gè)實(shí)施例中操作后臺(tái)處理,其掃描非易失性存儲(chǔ)器介質(zhì)122以確定數(shù)據(jù)因素或其它屬性,讀取數(shù)據(jù)并且對(duì)其進(jìn)行處理以確定數(shù)據(jù)因素或?qū)傩?。在另一?shí)施例中,數(shù)據(jù)因素模塊322可以確定用于存儲(chǔ)容量恢復(fù)模塊318恢復(fù)的擦除塊的數(shù)據(jù)因素或?qū)傩?。在另一?shí)施例中,隨著緩沖器模塊302和/或讀取模塊310接收并且滿足存儲(chǔ)請(qǐng)求(例如對(duì)數(shù)據(jù)的讀取請(qǐng)求和寫(xiě)入請(qǐng)求),數(shù)據(jù)因素模塊322可以確定數(shù)據(jù)因素或?qū)傩浴T谔囟▽?shí)施例中,數(shù)據(jù)因素模塊322可以使用與存儲(chǔ)單元集合關(guān)聯(lián)的預(yù)先確定的模型或表征,以周期性地確定數(shù)據(jù)因素或?qū)傩?,而不必讀取或另外處理來(lái)自存儲(chǔ)單元的數(shù)據(jù)。

圖4描述存儲(chǔ)器設(shè)備120中的三層式存儲(chǔ)器單元402的一個(gè)表示。三層式存儲(chǔ)器單元402是具有2^n個(gè)可能的狀態(tài)的單元,其中,n等于每單元的比特?cái)?shù)量。例如,三層式存儲(chǔ)器單元402(例如圖4所示的三層式存儲(chǔ)器單元402)可以存儲(chǔ)三個(gè)比特的信息,并且相應(yīng)地具有八個(gè)可能的狀態(tài)或停留態(tài),如以下更詳細(xì)地討論的那樣。在其它實(shí)施例中,存儲(chǔ)器單元402可以存儲(chǔ)兩個(gè)比特的信息,并且相應(yīng)地具有八個(gè)可能的狀態(tài)或停留態(tài);可以存儲(chǔ)四個(gè)比特的信息,并且相應(yīng)地具有三十二個(gè)可能的狀態(tài)或停留態(tài);依此類推。

三層式存儲(chǔ)器單元402至少存儲(chǔ)最高有效比特(MSB)、中間有效比特(CSB)和最低有效比特(LSB)。在特定實(shí)施例中,如圖4所示,MSB、CSB和LSB通過(guò)同一物理三層式存儲(chǔ)器單元402的部分可以分配給介質(zhì)122的不同頁(yè)面。在特定實(shí)施例中,多個(gè)三層式存儲(chǔ)器單元402被組織在非易失性存儲(chǔ)器介質(zhì)122(例如比如NAND閃速)上作為頁(yè)面或頁(yè)面元組。在包括多個(gè)三層式存儲(chǔ)器單元402的特定非易失性存儲(chǔ)器介質(zhì)122中,頁(yè)面是可以寫(xiě)入到介質(zhì)122的最小單元。在這些實(shí)施例中,三層式存儲(chǔ)器單元402可以與上述包括較高頁(yè)面404、中間頁(yè)面405和較低頁(yè)面406的頁(yè)面元組關(guān)聯(lián)。較高頁(yè)面404與MSB關(guān)聯(lián),中間頁(yè)面405與CSB關(guān)聯(lián),較低頁(yè)面406與LSB關(guān)聯(lián)。以此方式,較高頁(yè)面404、中間頁(yè)面405和較低頁(yè)面406可以與非易失性存儲(chǔ)器介質(zhì)122的同一公共存儲(chǔ)器單元402的集合關(guān)聯(lián),或由其存儲(chǔ)。

因此,同一三層式存儲(chǔ)器單元402中的MSB、CSB和LSB可以在非易失性存儲(chǔ)器設(shè)備120中具有不同的地址。在特定實(shí)施例中,較高頁(yè)面404包括多個(gè)三層式存儲(chǔ)器單元402的MSB,中間頁(yè)面405包括多個(gè)三層式存儲(chǔ)器單元402的CSB,較低頁(yè)面406包括同一三層式存儲(chǔ)器單元402的LSB。定向到較高頁(yè)面404的寫(xiě)入可以因此僅在關(guān)聯(lián)三層式存儲(chǔ)器單元402的MSB中產(chǎn)生改變,而定向到較低頁(yè)面406的寫(xiě)入可以僅在關(guān)聯(lián)三層式存儲(chǔ)器單元402的LSB中產(chǎn)生改變,依此類推到對(duì)中間頁(yè)面405的寫(xiě)入。對(duì)于三層式存儲(chǔ)器單元402(例如NAND閃存),由于擦除操作將三層式存儲(chǔ)器單元402置于第一邏輯值狀態(tài)下,并且寫(xiě)入操作或編程操作僅將頁(yè)面的特定三層式存儲(chǔ)器單元402改變?yōu)橄喾吹倪壿嬛禒顟B(tài),因此定向到較高頁(yè)面404、中間頁(yè)面405或較低頁(yè)面406的寫(xiě)入可以僅對(duì)特定關(guān)聯(lián)三層式存儲(chǔ)器單元402產(chǎn)生改變。相似地,讀取存儲(chǔ)在較高頁(yè)面404中的數(shù)據(jù)導(dǎo)致讀取多個(gè)三層式存儲(chǔ)器單元402的MSB,讀取存儲(chǔ)在中間頁(yè)面405中的數(shù)據(jù)導(dǎo)致讀取多個(gè)三層式存儲(chǔ)器單元402的CSB,讀取存儲(chǔ)在較低頁(yè)面406中的數(shù)據(jù)導(dǎo)致讀取多個(gè)三層式存儲(chǔ)器單元402的LSB。

在特定實(shí)施例中,響應(yīng)于對(duì)已經(jīng)存儲(chǔ)在非易失性存儲(chǔ)器設(shè)備120上的數(shù)據(jù)的請(qǐng)求而讀取數(shù)據(jù)比特。該請(qǐng)求可以稱為第一讀取操作。在特定實(shí)施例中,第一讀取操作定向到較低頁(yè)面406,從而從三層式存儲(chǔ)器單元402僅返回LSB。例如,存儲(chǔ)客戶機(jī)116(例如文件系統(tǒng)軟件應(yīng)用、操作系統(tǒng)應(yīng)用、數(shù)據(jù)庫(kù)管理系統(tǒng)軟件應(yīng)用、客戶機(jī)計(jì)算機(jī)、客戶機(jī)設(shè)備等)可以將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)設(shè)備120上。在該示例中,當(dāng)存儲(chǔ)客戶機(jī)116發(fā)送寫(xiě)入請(qǐng)求時(shí),數(shù)據(jù)獨(dú)占地(exclusively)寫(xiě)入到較低頁(yè)面406和/或中間頁(yè)面405。因此,各個(gè)三層式存儲(chǔ)器單元402中的LSB和/或CSB改變,但MSB不因?qū)懭攵淖?。相似地,在該示例中,?dāng)存儲(chǔ)客戶機(jī)116讀取數(shù)據(jù)時(shí),該讀取被定向或?qū)ぶ返捷^低頁(yè)面406和/或中間頁(yè)面405,并且僅LSB和/或CSB被讀取。

圖5描述非易失性存儲(chǔ)器元件123的一個(gè)實(shí)施例。在所描述的實(shí)施例中,非易失性存儲(chǔ)器元件123包括一個(gè)或多個(gè)SLC擦除塊410a-n、一個(gè)或多個(gè)TLC擦除塊412a-n、SLC頁(yè)面緩沖器414、TLC較低頁(yè)面緩沖器416a、TLC中間頁(yè)面緩沖器416b、TLC較高頁(yè)面緩沖器416c以及緩存緩沖器418。

在一個(gè)實(shí)施例中,緩沖模塊302將寫(xiě)入請(qǐng)求的數(shù)據(jù)寫(xiě)入到SLC頁(yè)面緩沖器414,數(shù)據(jù)從該SLC頁(yè)面緩沖器414被編程到一個(gè)或多個(gè)SLC擦除塊410a-n。隨著緩沖模塊302用數(shù)據(jù)來(lái)填充SLC擦除塊410a-c,回拷模塊306基于來(lái)自數(shù)據(jù)因素模塊322的一個(gè)或多個(gè)數(shù)據(jù)因素或用于數(shù)據(jù)的屬性等而確定是否在內(nèi)部將數(shù)據(jù)拷貝或移動(dòng)回到TLC擦除塊412。如果回拷模塊306確定在內(nèi)部將數(shù)據(jù)從SLC擦除塊410a-c拷貝或移動(dòng)回到TLC擦除塊412,則回拷模塊306可以頁(yè)面接頁(yè)面地將數(shù)據(jù)加載到TLC頁(yè)面緩沖器416中。

刷新模塊304可以確定是否對(duì)回拷模塊306已經(jīng)加載到TLC頁(yè)面緩沖器416中的數(shù)據(jù)、數(shù)據(jù)的部分等執(zhí)行刷新操作,并且可以將刷新后的數(shù)據(jù)返回到TLC頁(yè)面緩沖器416,將未刷新的數(shù)據(jù)留在TLC頁(yè)面緩沖器416中,等等。在特定實(shí)施例中,回拷模塊306從TLC頁(yè)面緩沖器器416a-c一次將三個(gè)頁(yè)面從SLC擦除塊410a-n寫(xiě)入或編程到TLC擦除塊412。一旦回拷和/或IDM操作已經(jīng)完成,該數(shù)據(jù)就可以被保留在SLC擦除塊410a-n中以用于由讀取模塊310使用,直到存儲(chǔ)容量恢復(fù)模塊318在稍后時(shí)間確定擦該除數(shù)據(jù)。

圖6描述映射結(jié)構(gòu)1000、邏輯地址空間1120和有序的基于日志的僅附接寫(xiě)入結(jié)構(gòu)1140的一個(gè)實(shí)施例。在一個(gè)實(shí)施例中,映射結(jié)構(gòu)1000由非易失性存儲(chǔ)器控制器124的邏輯到物理映射模塊316保存,以將LBA或其它邏輯地址映射為非易失性存儲(chǔ)器介質(zhì)122上的物理位置。在所描述的實(shí)施例中,映射結(jié)構(gòu)1000是具有若干項(xiàng)的B樹(shù)。在所描述的實(shí)施例中,映射結(jié)構(gòu)1000的節(jié)點(diǎn)包括對(duì)非易失性存儲(chǔ)器設(shè)備120中的物理位置的直接引用。在其它實(shí)施例中,映射結(jié)構(gòu)1000可以包括映射為反向(reverse)映射中的項(xiàng)的鏈接等。在各個(gè)實(shí)施例中,可以要么用、要么不用反向映射來(lái)使用映射結(jié)構(gòu)1000。在其它實(shí)施例中,映射結(jié)構(gòu)1000中的引用可以包括字母數(shù)字字符、十六進(jìn)制字符、指針、鏈接等。

在所描述的實(shí)施例中,映射結(jié)構(gòu)1000包括多個(gè)節(jié)點(diǎn)。在所描述的實(shí)施例中,每個(gè)節(jié)點(diǎn)能夠存儲(chǔ)兩個(gè)項(xiàng)。在其它實(shí)施例中,每個(gè)節(jié)點(diǎn)可以有能力存儲(chǔ)更大數(shù)量的項(xiàng),每個(gè)等級(jí)處的項(xiàng)的數(shù)量可以隨著映射結(jié)構(gòu)1000隨使用等增長(zhǎng)或縮減而改變。

在所描述的實(shí)施例中,每個(gè)項(xiàng)將非易失性存儲(chǔ)器設(shè)備120的LBA的可變長(zhǎng)度范圍映射為用于非易失性存儲(chǔ)器設(shè)備120的存儲(chǔ)介質(zhì)122中的物理位置。此外,在所描述的實(shí)施例中,雖然LBA的可變長(zhǎng)度范圍由開(kāi)始地址和結(jié)束地址表示,但在其它實(shí)施例中,LBA的可變長(zhǎng)度范圍可以由開(kāi)始地址和長(zhǎng)度等表示。在另一實(shí)施例中,取代存儲(chǔ)LBA的可變長(zhǎng)度范圍,映射結(jié)構(gòu)1000可以在項(xiàng)中存儲(chǔ)單個(gè)LBA或其它邏輯地址作為用于數(shù)據(jù)值和/或用于關(guān)聯(lián)元數(shù)據(jù)的開(kāi)始地址。

在一個(gè)實(shí)施例中,大寫(xiě)字母“A”至“M”表示存儲(chǔ)LBA的對(duì)應(yīng)范圍的數(shù)據(jù)的非易失性存儲(chǔ)器設(shè)備120的物理存儲(chǔ)介質(zhì)122中的邏輯或物理擦除塊。在其它實(shí)施例中,大寫(xiě)字母可以表示非易失性存儲(chǔ)器設(shè)備120的其它物理地址或位置。在所描述的實(shí)施例中,大寫(xiě)字母“A”至“M”還被描述在表示非易失性存儲(chǔ)器設(shè)備120的物理存儲(chǔ)介質(zhì)122的基于日志的寫(xiě)入結(jié)構(gòu)1140中。

在所描述的實(shí)施例中,映射結(jié)構(gòu)1000中的成員表示非易失性存儲(chǔ)器設(shè)備120中的成員(或存儲(chǔ))。在另一實(shí)施例中,項(xiàng)可以還包括非易失性存儲(chǔ)器設(shè)備120是否存儲(chǔ)與LBA的范圍內(nèi)的邏輯塊對(duì)應(yīng)的數(shù)據(jù)、反向映射的數(shù)據(jù)和/或其它數(shù)據(jù)的指示符。

在所描述的實(shí)施例中,根節(jié)點(diǎn)1008包括具有LBA的非毗鄰范圍的項(xiàng)1102、1104?!翱斩?hole)”存在于根節(jié)點(diǎn)的兩個(gè)項(xiàng)1102、1104之間的LBA“208”處。在一個(gè)實(shí)施例中,“空洞”指示非易失性存儲(chǔ)器設(shè)備120不存儲(chǔ)與對(duì)應(yīng)于“空洞”的一個(gè)或多個(gè)LBA對(duì)應(yīng)的數(shù)據(jù)。在一個(gè)實(shí)施例中,非易失性存儲(chǔ)器設(shè)備120支持具有LBA的多個(gè)毗鄰和/或非毗鄰范圍(即它們中包括一個(gè)或多個(gè)“空洞”的范圍)的塊I/O請(qǐng)求(讀取、寫(xiě)入、修整等)。在一個(gè)實(shí)施例中,“空洞”可以是具有LBA的兩個(gè)或更多個(gè)非毗鄰范圍的單個(gè)塊I/O的結(jié)果。在另一實(shí)施例中,“空洞”可以是具有界定“空洞”的LBA范圍的若干不同塊I/O請(qǐng)求的結(jié)果。

在所描述的實(shí)施例中,LBA的相似的“空洞”或非毗鄰范圍存在于節(jié)點(diǎn)1014的項(xiàng)1106、1108之間、節(jié)點(diǎn)1014的左子節(jié)點(diǎn)的項(xiàng)1110、1112之間、節(jié)點(diǎn)1018的項(xiàng)1114、1116之間以及節(jié)點(diǎn)1118的各項(xiàng)之間。在一個(gè)實(shí)施例中,“空洞”也可以存在于父節(jié)點(diǎn)和子節(jié)點(diǎn)中的各項(xiàng)之間。例如,在所描述的實(shí)施例中,LBA的“空洞”“060-071”存在于節(jié)點(diǎn)1014的左項(xiàng)1106與節(jié)點(diǎn)1014的左子節(jié)點(diǎn)的右項(xiàng)1112之間。

LBA處的“空洞”“003”在所描述的實(shí)施例也可以見(jiàn)于邏輯地址“003”1130處的非易失性存儲(chǔ)器設(shè)備120的邏輯地址空間1120中。LBA“003”1140處的散列標(biāo)記表示空白位置或非易失性存儲(chǔ)器設(shè)備120不存儲(chǔ)數(shù)據(jù)的位置。邏輯地址空間1120中的LBA 1134處的“空洞”歸因于具有非毗鄰范圍的一個(gè)或多個(gè)塊I/O請(qǐng)求、對(duì)于非易失性存儲(chǔ)器設(shè)備120的PTRIM或其它解除分配(deallocation)命令等。

在所描述的實(shí)施例中,非易失性存儲(chǔ)器設(shè)備120的邏輯地址空間1120大于非易失性存儲(chǔ)器設(shè)備120的物理存儲(chǔ)容量和對(duì)應(yīng)存儲(chǔ)設(shè)備地址空間。在所描述的實(shí)施例中,非易失性存儲(chǔ)器設(shè)備120具有開(kāi)始于邏輯地址“0”1122并且延伸到邏輯地址“264-1”1126的64比特邏輯地址空間1120。因?yàn)榇鎯?chǔ)設(shè)備地址空間僅與非易失性存儲(chǔ)器設(shè)備120的邏輯地址空間1120的子集對(duì)應(yīng),所以剩余邏輯地址空間1120可以受限或用于非易失性存儲(chǔ)器設(shè)備120的其它功能。

有序的、基于日志的僅附接寫(xiě)入結(jié)構(gòu)1140在所描述的實(shí)施例中是非易失性存儲(chǔ)器設(shè)備120的物理存儲(chǔ)介質(zhì)122的邏輯表示。在特定實(shí)施例中,非易失性存儲(chǔ)器設(shè)備120有序地存儲(chǔ)數(shù)據(jù),在附接點(diǎn)1144處將數(shù)據(jù)附接到基于日志的寫(xiě)入結(jié)構(gòu)1140。在另一實(shí)施例中,非易失性存儲(chǔ)器設(shè)備120使用存儲(chǔ)空間恢復(fù)處理(例如存儲(chǔ)容量恢復(fù)模塊318、或重用存儲(chǔ)了解除分配的/未使用的邏輯塊的非易失性存儲(chǔ)介質(zhì)122的其它存儲(chǔ)空間恢復(fù)模塊)。在所描述的實(shí)施例中,存儲(chǔ)了解除分配的/未使用的邏輯塊的非易失性存儲(chǔ)介質(zhì)被加入到用于非易失性存儲(chǔ)器設(shè)備120的可用存儲(chǔ)池1146。通過(guò)如上所述清理來(lái)自非易失性存儲(chǔ)器設(shè)備120的無(wú)效數(shù)據(jù),并且加入與清理回到可用存儲(chǔ)池1146的數(shù)據(jù)對(duì)應(yīng)的物理存儲(chǔ)容量,在一個(gè)實(shí)施例中,基于日志的寫(xiě)入結(jié)構(gòu)1140是周期性的、類似環(huán)的,并且具有理論上無(wú)限的容量。

在所描述的實(shí)施例中,附接點(diǎn)1144在圓形圖案1142中繞著基于日志的僅附接寫(xiě)入結(jié)構(gòu)1140而進(jìn)展。在一個(gè)實(shí)施例中,圓形圖案1142損耗平衡(wear balance)非易失性存儲(chǔ)器介質(zhì)122,增加非易失性存儲(chǔ)器介質(zhì)122的可使用的壽命。在所描述的實(shí)施例中,存儲(chǔ)容量恢復(fù)模塊318或其它存儲(chǔ)容量恢復(fù)處理已經(jīng)將若干塊1148、1150、1152、1154標(biāo)記為塊1148、1150、1152、1154上的“X”標(biāo)記所表示的無(wú)效。在一個(gè)實(shí)施例中,存儲(chǔ)容量恢復(fù)模塊318將恢復(fù)無(wú)效塊1148、1150、1152、1154的物理存儲(chǔ)容量,并且將所恢復(fù)的容量加入到可用存儲(chǔ)池1146。在所描述的實(shí)施例中,塊1148、1150、1152、1154的修改后的版本已經(jīng)在讀取、修改、寫(xiě)入操作等中被附接到基于日志的寫(xiě)入結(jié)構(gòu)1140作為新的塊1156、1158、1160、1162,允許原始?jí)K1148、1150、1152、1154被恢復(fù)。

圖7描述用于將信息存儲(chǔ)在包括一個(gè)或多個(gè)三層式存儲(chǔ)器單元402的存儲(chǔ)設(shè)備120中的系統(tǒng)的一個(gè)實(shí)施例。在一個(gè)實(shí)施例中,系統(tǒng)包括驅(qū)動(dòng)器702、映射邏輯模塊704、硬件控制器706和非易失性存儲(chǔ)器介質(zhì)122。在特定實(shí)施例中,這些組件是存儲(chǔ)設(shè)備120的部分。

在一個(gè)實(shí)施例中,驅(qū)動(dòng)器702從的一個(gè)或多個(gè)客戶機(jī)116接收定向在非易失性存儲(chǔ)器介質(zhì)122處的寫(xiě)入請(qǐng)求和讀取請(qǐng)求。所述請(qǐng)求典型地包括地址分量、例如頁(yè)面地址、邏輯塊地址、文件名和偏移等。在特定實(shí)施例中,較高頁(yè)面404、中間頁(yè)面405、較低頁(yè)面406都不對(duì)存儲(chǔ)客戶機(jī)116暴露。反之,驅(qū)動(dòng)器702將邏輯上毗鄰的塊地址、簇標(biāo)識(shí)符、文件標(biāo)識(shí)符或?qū)ο髽?biāo)識(shí)符(在此稱為邏輯塊地址)呈現(xiàn)給存儲(chǔ)客戶機(jī)116。

映射邏輯模塊704可以是軟件、硬件或其組合。在一個(gè)實(shí)施例中,物理介質(zhì)頁(yè)面地址是毗鄰的,并且映射邏輯基于存儲(chǔ)設(shè)備120的當(dāng)前操作模式以及存儲(chǔ)設(shè)備120的三層式存儲(chǔ)器單元402的損耗狀況而將物理介質(zhì)頁(yè)面地址映射為適當(dāng)?shù)妮^低頁(yè)面406、中間頁(yè)面405或較高頁(yè)面404。在另一實(shí)施例中,驅(qū)動(dòng)器702將邏輯塊地址直接映射為用于物理較低頁(yè)面406的適當(dāng)?shù)刂贰?/p>

映射邏輯模塊704可以是軟件、硬件或其組合。在一個(gè)實(shí)施例中,映射邏輯模塊704將物理頁(yè)面地址映射為存儲(chǔ)設(shè)備120的頁(yè)面元組。如上所述,頁(yè)面元組可以包括與非易失性存儲(chǔ)器介質(zhì)122中的三層式存儲(chǔ)器單元402的LSB關(guān)聯(lián)的較低頁(yè)面406、與三層式存儲(chǔ)器單元402的CSB關(guān)聯(lián)的中間頁(yè)面405以及與三層式存儲(chǔ)器單元402的MSB關(guān)聯(lián)的較高頁(yè)面404。

硬件控制器706從映射邏輯模塊704接收寫(xiě)入和/或讀取請(qǐng)求,并且執(zhí)行它們,從而數(shù)據(jù)被存儲(chǔ)在映射邏輯模塊704所給出的指令所定向的非易失性存儲(chǔ)器介質(zhì)122上。硬件控制器706可以是硬件、固件、軟件或其組合。在特定實(shí)施例中,硬件控制器706可以包括現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、處理器或?qū)S眉呻娐?ASIC)。

圖8A是示出N數(shù)量的存儲(chǔ)元件606的陣列600的一個(gè)實(shí)施例的示意性框圖。在所描述的實(shí)施例中,ECC片塊616包括來(lái)自若干存儲(chǔ)元件606的數(shù)據(jù)612。在另一實(shí)施例中,還遍歷若干存儲(chǔ)元件606來(lái)存儲(chǔ)用于ECC片塊616的ECC校驗(yàn)比特。

在一個(gè)實(shí)施例中,存儲(chǔ)元件606的陣列600包括N數(shù)量的存儲(chǔ)元件606a、606b、606c、…606n。每個(gè)存儲(chǔ)元件606可以包括設(shè)備、芯片、芯片的部分、裸芯、裸芯中的平面等。在所描述的實(shí)施例中,存儲(chǔ)元件606a-n形成組602a。陣列600在一個(gè)實(shí)施例中包括若干組(bank)602a…602m。在所描述的實(shí)施例中,組602a-m包括若干通道604a、604b、604c、…、604n。在一個(gè)實(shí)施例中,遍歷若干通道604a-n寫(xiě)入分組或數(shù)據(jù)集合,并且數(shù)據(jù)從每個(gè)通道604a-n得以分離地讀取而且重組為分組。在另一實(shí)施例中,遍歷若干通道604a-n寫(xiě)入ECC片塊616、分組或數(shù)據(jù)集合,并且從所有通道604a-n并行讀取數(shù)據(jù)。組602a上的一個(gè)讀取操作可以讀取整個(gè)ECC片塊616、分組、或數(shù)據(jù)集合、或重組為整個(gè)ECC片塊(chunk)616、分組(packet)、或數(shù)據(jù)集合的ECC片塊616、分組或數(shù)據(jù)集合的一部分。在所描述的實(shí)施例中,每個(gè)通道在每個(gè)組602中包括至少一個(gè)存儲(chǔ)元件606。

此外,在一個(gè)實(shí)施例中,每個(gè)存儲(chǔ)元件606包括物理擦除塊或“PEB”608。例如,存儲(chǔ)元件一個(gè)606a包括PEB一個(gè)608a。物理擦除塊典型地是位于一個(gè)裸芯、芯片或其它存儲(chǔ)元件606上的擦除塊。每個(gè)PEB 608包括m個(gè)物理頁(yè)面610。例如,PEB 1 608a包括頁(yè)面0 610a…頁(yè)面m 614a。每個(gè)物理頁(yè)面610a存儲(chǔ)數(shù)據(jù)(“D0、D1、…、Dm”)612的一部分以及隨數(shù)據(jù)612分布的ECC校驗(yàn)比特。如上所述,同一存儲(chǔ)元件606、同一PEB 608等的若干頁(yè)面610可以共享同一公共存儲(chǔ)器單元集合。例如,同一公共TLC存儲(chǔ)器單元集合的停留態(tài)或編程狀態(tài)可以對(duì)三個(gè)頁(yè)面610進(jìn)行存儲(chǔ)或編碼。

在一個(gè)實(shí)施例中,PEB群組(group)(PEB 1 608a-PEB m 608m)形成邏輯擦除塊(“LEB”)。LEB可以跨越N個(gè)存儲(chǔ)元件600的陣列。在特定實(shí)施例中,LEB被改變大小為適合在組602a-m內(nèi),其中,一個(gè)PEB 608a-m來(lái)自每個(gè)存儲(chǔ)元件606a-n等。在其它實(shí)施例中,LEB可以跨越不同的組602a-m,并且可以包括來(lái)自多個(gè)組602a-m的一個(gè)或多個(gè)PEB 608a-m。此外,在實(shí)施例中,邏輯頁(yè)面(“LP”)跨越行中的多個(gè)物理頁(yè)面610。在另一實(shí)施例中,邏輯頁(yè)面跨越N個(gè)存儲(chǔ)元件606a-n。

在一個(gè)實(shí)施例中,ECC是隨數(shù)據(jù)分布的塊碼(block code)。此外,數(shù)據(jù)和ECC可以不與任何特定物理硬件邊界對(duì)準(zhǔn)。因此,通過(guò)ECC碼進(jìn)行的糾錯(cuò)并不取決于特定硬件配置。因此,ECC和對(duì)應(yīng)數(shù)據(jù)可以形成ECC片塊616,并且ECC片塊616可以被劃分而且被存儲(chǔ)在N個(gè)存儲(chǔ)元件606a-n中的一個(gè)或多個(gè)上。ECC片塊616典型地跨越邏輯頁(yè)面的多個(gè)物理頁(yè)面610的至少一部分,其中,從數(shù)據(jù)612a、612b、…612m生成的數(shù)據(jù)和ECC遍歷N個(gè)存儲(chǔ)元件606a-n擴(kuò)展。在一個(gè)實(shí)施例中,LP包括多個(gè)ECC片塊616。物理頁(yè)面610可以包含ECC片塊616的一個(gè)或多個(gè)數(shù)據(jù)字節(jié)。ECC片塊616可以跨越物理頁(yè)面610內(nèi)的多個(gè)行,并且物理頁(yè)面610可以包括多個(gè)ECC片塊616。

因?yàn)樵谒枋龅膶?shí)施例中用于ECC片塊616的ECC校驗(yàn)比特分布遍歷若干存儲(chǔ)元件606a-n和通道604a-n,所以當(dāng)數(shù)據(jù)錯(cuò)誤歸因于存儲(chǔ)元件606a-n中的一個(gè)或多個(gè)的讀取電壓轉(zhuǎn)變而產(chǎn)生時(shí),ECC模塊或解碼器可能不能夠使用預(yù)先定義的耐受數(shù)據(jù)模式的監(jiān)督比特(audit bit)來(lái)確定哪些存儲(chǔ)元件606具有可糾正的錯(cuò)誤。在一個(gè)實(shí)施例中,管理模塊150確定哪些存儲(chǔ)元件606或通道604具有不匹配所期望的監(jiān)督比特的數(shù)據(jù)比特,以促進(jìn)ECC解碼器等進(jìn)行的糾錯(cuò)。

在一個(gè)實(shí)施例中,管理模塊150和/或ECC模塊或解碼器確定數(shù)據(jù)集合具有錯(cuò)誤或距已知值或期望值偏離的監(jiān)督比特,并且管理模塊150確定從哪個(gè)存儲(chǔ)元件606讀取數(shù)據(jù)集合。例如,在一個(gè)實(shí)施例中,陣列600可以具有24個(gè)通道604,并且在關(guān)于每讀取操作總共192個(gè)字節(jié)的讀取操作期間,可以并行地從單個(gè)組602的24個(gè)存儲(chǔ)元件606讀取8個(gè)字節(jié)。在一個(gè)實(shí)施例中,基于該信息,管理模塊150可以基于192個(gè)字節(jié)內(nèi)的8字節(jié)數(shù)據(jù)集合的位置而確定從哪個(gè)存儲(chǔ)元件606讀取數(shù)據(jù)集合。在一個(gè)實(shí)施例中,192個(gè)字節(jié)包括ECC片塊616。

圖8B是示出N個(gè)存儲(chǔ)元件606的陣列650的一個(gè)實(shí)施例的示意性框圖。陣列650在所描述的實(shí)施例中基本上與圖10A的陣列600相似,但其中,ECC片塊652包括單個(gè)存儲(chǔ)元件606a中的數(shù)據(jù)612a,而非遍歷若干存儲(chǔ)元件606a-n。在一個(gè)實(shí)施例中,用于ECC片塊652的ECC校驗(yàn)比特被存儲(chǔ)在單個(gè)存儲(chǔ)元件606a中。因?yàn)槊總€(gè)存儲(chǔ)元件606a-n或通道604a-n具有分離的ECC校驗(yàn)比特,所以在一個(gè)實(shí)施例中,ECC模塊或解碼器使用分離的ECC校驗(yàn)比特以確定錯(cuò)誤已經(jīng)產(chǎn)生在哪些存儲(chǔ)元件606a-n或通道604a-n中,并且倘若ECC校驗(yàn)比特歸因于比單獨(dú)使用ECC校驗(yàn)比特可糾正的更多錯(cuò)誤而失敗,那么可以與管理模塊150協(xié)作以使用監(jiān)督數(shù)據(jù)作為額外錯(cuò)誤保護(hù)層。

圖9A描述用于非易失性存儲(chǔ)器設(shè)備120的TLC存儲(chǔ)器單元的編程狀態(tài)或停留態(tài)的圖500。在所描述的實(shí)施例中,非易失性存儲(chǔ)器設(shè)備120可以是例如TLC NAND閃速存儲(chǔ)器設(shè)備,并且每個(gè)單元具有八個(gè)狀態(tài),但在其它實(shí)施例中可以使用各種類型的存儲(chǔ)器以及每單元各種數(shù)量的狀態(tài)。在所描述的實(shí)施例中,每個(gè)單元的數(shù)據(jù)編碼物理值是讀取電壓電平(level)。讀取電壓電平如在此所使用的那樣指代當(dāng)讀取電壓閾值(“Vt”)施加到控制柵極時(shí)使得浮置柵極晶體管的通道導(dǎo)通的電壓。通過(guò)改變確定讀取電壓電平的浮置柵極中的所存儲(chǔ)的電荷的量而在每個(gè)單元中存儲(chǔ)數(shù)據(jù)。

在所描述的實(shí)施例中,讀取電壓閾值510a-g將用于單元的可能讀取電壓電平的范圍劃分為狀態(tài)L0、L1、L2、L3、L4、L5、L6和L7,其中,L0是已擦除的狀態(tài)。在一些實(shí)施例中,已擦除的狀態(tài)L0可以與負(fù)讀取電壓電平對(duì)應(yīng)。如果用于單元的讀取電壓電平小于讀取電壓閾值510a,則單元處于L0狀態(tài)下。如果用于單元的閾值電壓Vt大于讀取電壓閾值510a、但小于讀取電壓閾值510b,則單元處于L1狀態(tài)下,依此類推。響應(yīng)于單元被編程(或擦除),可以通過(guò)將驗(yàn)證閾值電壓520a-g施加到控制柵極并且感測(cè)單元是否導(dǎo)通以確定讀取電壓電平是大于還是小于所施加的驗(yàn)證閾值電壓520a-g來(lái)確定單元的狀態(tài)。通過(guò)關(guān)于讀取電壓閾值510a-g和驗(yàn)證閾值電壓520a-g使用不同的電壓閾值,讀取電壓模塊312在各單元狀態(tài)之間形成保護(hù)帶(guard band)530a-g或分離距離(separation distance)。

雖然圖500描述各狀態(tài)L0-L7之間的單元的均勻分布,在每個(gè)狀態(tài)下描述讀取電壓電平的鐘形分布(bell-shaped),但因?yàn)樘囟顟B(tài)下的每個(gè)單元可以關(guān)于該狀態(tài)具有讀取電壓電平的范圍內(nèi)的不同的讀取電壓電平,所以讀取電壓電平可以隨著時(shí)間等而不同。當(dāng)單元被編程時(shí),單元和編程處理的變化可能產(chǎn)生讀取電壓電平的變化。此外,單元的讀取電壓電平可以歸因于讀取干擾、編程干擾、應(yīng)力誘導(dǎo)的泄漏電流等而隨著時(shí)間距其初始編程的電壓漂移。雖然示出對(duì)稱鐘形分布,但偏斜(skewed)分布和其它分布是可能的。隨著時(shí)間,分布可以隨著單元距它們的初始編程的讀取電壓電平漂移而加寬或偏斜,并且這些影響可能關(guān)于年齡隨著時(shí)間而增加。

如果分布加寬得超越最近的讀取電壓閾值510a-g,則一些單元已經(jīng)漂移到相鄰狀態(tài),產(chǎn)生錯(cuò)誤。為了減少這種影響,通過(guò)預(yù)先定義的分離距離的保護(hù)帶530a-g來(lái)分離狀態(tài)L0-L7。如上所述,保護(hù)帶或分離距離包括單元的數(shù)據(jù)編碼物理性質(zhì)的范圍(例如讀取電壓電平等),其分離單元的狀態(tài)。在所描述的實(shí)施例中,通過(guò)驗(yàn)證每個(gè)單元被至少大于驗(yàn)證電壓520a-g(其大于或高于定義狀態(tài)的下沿的讀取電壓閾值Vt 510a-g)的讀取電壓電平來(lái)編程,當(dāng)單元被編程時(shí),創(chuàng)建保護(hù)帶。因此,在所描述的實(shí)施例中,第一保護(hù)帶530a包括讀取電壓閾值510a與驗(yàn)證電壓閾值520a之間的電壓范圍530a,第二保護(hù)帶是讀取電壓閾值510b與驗(yàn)證電壓閾值520b之間的電壓范圍530b等。

在各個(gè)實(shí)施例中,狀態(tài)可以是距相鄰狀態(tài)的不同距離,保護(hù)帶530a-g可以具有不同的寬度或大小。例如,在所描述的實(shí)施例中,L0狀態(tài)與L1狀態(tài)之間的分離度530a大于其它相鄰狀態(tài)之間的分離度530b-g,并且L0與L1之間的保護(hù)帶530a對(duì)應(yīng)地是更寬的。此外,在所描述的實(shí)施例中,讀取電壓閾值510b-g處于用于相鄰狀態(tài)的各最可能的電壓之間的中點(diǎn)處,但在另一實(shí)施例中,讀取電壓閾值510可以更低,并且更靠近用于較低狀態(tài)的單元的分布的邊沿,因此加寬保護(hù)帶并且增加分離距離。狀態(tài)、保護(hù)帶530a-g、讀取電壓閾值510a-g和驗(yàn)證電壓閾值520a-g的其它布置是可能的,并且可以由讀取電壓模塊312管理而且調(diào)整,以對(duì)減少的層式單元模式增加分離距離。

圖9B描述示出用于圖11A的狀態(tài)L0-L7的一個(gè)示例編碼的表550。因?yàn)樗枋龅膶?shí)施例中的每個(gè)單元可以是八個(gè)不同狀態(tài)之一,所以每個(gè)單元對(duì)三個(gè)不同的比特進(jìn)行編碼。第一比特稱為最高有效比特(“MSB”),第二比特稱為中間有效比特(“CSB”),第三比特稱為最低有效比特(“LSB”)。在所描述的實(shí)施例中,編碼是Gray碼編碼,其中,僅一個(gè)比特在各相鄰狀態(tài)之間改變。在其它實(shí)施例中,可以使用其它編碼。

在一個(gè)實(shí)施例中,用于單元的比特的可靠性的等級(jí)可以基于關(guān)于單元的編碼中的各相鄰狀態(tài)之間的比特的轉(zhuǎn)變的數(shù)量。如果比特的值在各相鄰狀態(tài)之間改變,則關(guān)于比特的轉(zhuǎn)變552產(chǎn)生在這些狀態(tài)之間。在所描述的編碼中,可見(jiàn),LSB在L3狀態(tài)與L4狀態(tài)之間具有一個(gè)轉(zhuǎn)變552。CSB在L1狀態(tài)與L2狀態(tài)之間以及L5狀態(tài)與L6狀態(tài)之間具有兩個(gè)轉(zhuǎn)變552,MSB具有四個(gè)轉(zhuǎn)變552。因?yàn)槎鄶?shù)錯(cuò)誤產(chǎn)生在各相鄰狀態(tài)之間,所以在特定實(shí)施例中,比特在關(guān)于該比特的轉(zhuǎn)變552附近的狀態(tài)下經(jīng)歷較高的錯(cuò)誤風(fēng)險(xiǎn)。因此,因?yàn)長(zhǎng)SB具有一個(gè)轉(zhuǎn)變552,所以在所描述的實(shí)施例中,LSB提供比CSB和MSB所提供的更高的可靠性等級(jí)。在所描述的實(shí)施例中具有兩個(gè)轉(zhuǎn)變552的CSB提供LSB和MSB所提供的各可靠性等級(jí)之間的可靠性等級(jí)。在所描述的實(shí)施例中具有四個(gè)轉(zhuǎn)變552的MSB提供比LSB和CSB所提供的可靠性等級(jí)更低的可靠性等級(jí)。

在另一實(shí)施例中,用于單元的比特的可靠性的等級(jí)可以基于和/或相關(guān)于各相鄰狀態(tài)(例如具有關(guān)于單元的編碼中的比特的轉(zhuǎn)變552的狀態(tài))之間的保護(hù)帶530a-g或分離距離的大小。例如,在所描述的實(shí)施例中,可以通過(guò)加寬L3狀態(tài)與L4狀態(tài)之間的轉(zhuǎn)變552處的保護(hù)帶530d來(lái)增加用于LSB的可靠性等級(jí)。加寬一個(gè)轉(zhuǎn)變552處的保護(hù)帶可以包括:變化狀態(tài)并且縮窄其它保護(hù)帶,融合狀態(tài),掩蔽狀態(tài),使得狀態(tài)無(wú)效等,因此也影響其它比特(例如MSB和CSB)的可靠性等級(jí)。

圖10描述具有示例編碼或編程模型的用于三層式存儲(chǔ)器單元集合(例如MLC NAND閃速存儲(chǔ)單元、TLC NAND閃速存儲(chǔ)單元等)的邊界閾值662a-g的一個(gè)實(shí)施例。所表示的編碼模型中固有的任何限制不一定應(yīng)用于所有其它編碼模型,并且本公開(kāi)不應(yīng)理解為固有地包含任何這些限制。在所描述的實(shí)施例中,使用Gray碼編碼模型對(duì)停留態(tài)或編程狀態(tài)進(jìn)行編碼,其中,用于相鄰狀態(tài)的二進(jìn)制值在編碼中差異達(dá)單個(gè)比特。圖10的所描述的編碼可以是用于使用以上關(guān)于圖9A和圖9B所描述的編碼550和狀態(tài)500來(lái)對(duì)較低/LSB、中間/CSB和較高/MSB頁(yè)面進(jìn)行編程的編程級(jí)(stage)的一個(gè)實(shí)施例。

在所描述的實(shí)施例中,級(jí)1包括用于較低/LSB頁(yè)面的編程操作,其中,用于較低/LSB頁(yè)面的二進(jìn)制一將存儲(chǔ)器單元置于L0狀態(tài)或停留態(tài)下,用于較低/LSB頁(yè)面的二進(jìn)制零將存儲(chǔ)器單元置于L1狀態(tài)或停留態(tài)下。級(jí)2包括用于中間/CSB頁(yè)面的編程操作,其中,取決于級(jí)1中所編程的較低/LSB比特的值和正被編程的中間/CSB比特的值,存儲(chǔ)器單元可以具有四個(gè)可能的狀態(tài)或停留態(tài)之一。級(jí)3包括用于包括取決于級(jí)1中所編程的較低/LSB頁(yè)面、級(jí)2中所編程的中間/CSB頁(yè)面以及級(jí)3中正被編程的較高/MSB頁(yè)面的值的八個(gè)可能的狀態(tài)或停留態(tài)的對(duì)較高/MSB頁(yè)面的編程操作。

級(jí)、每級(jí)的狀態(tài)或停留態(tài)的數(shù)量以及關(guān)聯(lián)的編碼可以對(duì)于特定非易失性存儲(chǔ)器介質(zhì)122的架構(gòu)、類型、制造或型號(hào)是特定的。在特定實(shí)施例中,非易失性存儲(chǔ)器介質(zhì)122的一個(gè)或多個(gè)不同架構(gòu)可以使用圖12中所描述的同一公共預(yù)先定義的編碼(例如Gray碼;L0=111、L1=011、L2=001、L3=101、L4=100、L5=000、L6=010、L7=110;等)。例如,并非來(lái)自所描述的有序級(jí)中的從兩個(gè)停留態(tài)(SLC模式)到四個(gè)停留態(tài)(MLC模式)到八個(gè)停留態(tài)(TLC模式)的處理,其它架構(gòu)可以使用具有兩個(gè)停留態(tài)的第一級(jí)以及關(guān)于均具有八個(gè)停留態(tài)的第二級(jí)和第三級(jí)的處理,簡(jiǎn)單地窄化或細(xì)化第三級(jí)中的停留態(tài)的大小或?qū)挾?。其它架?gòu)可以在三個(gè)級(jí)中的每一個(gè)中包括八個(gè)停留態(tài)等。

圖11描述用于裸芯上緩沖式(ODB)非易失性存儲(chǔ)器管理的方法1300的一個(gè)實(shí)施例。方法1300開(kāi)始,并且緩沖模塊302將數(shù)據(jù)存儲(chǔ)(1302)在第一非易失性存儲(chǔ)器單元集合中。數(shù)據(jù)因素模塊322確定(1304)一個(gè)或多個(gè)數(shù)據(jù)因素或與數(shù)據(jù)關(guān)聯(lián)的屬性?;乜侥K306基于一個(gè)或多個(gè)數(shù)據(jù)因素或?qū)傩远_定(1306)是否在內(nèi)部將數(shù)據(jù)拷貝或移動(dòng)到第二非易失性存儲(chǔ)器單元集合。第二非易失性存儲(chǔ)器單元集合在一個(gè)實(shí)施例中被配置為:存儲(chǔ)比第一非易失性存儲(chǔ)器單元集合更多的每單元的比特。如果回拷模塊306確定(1306)移動(dòng)或回拷數(shù)據(jù),則回拷模塊306將數(shù)據(jù)拷貝(1308)到第二非易失性存儲(chǔ)器單元集合。方法1300結(jié)束。

圖12描述用于裸芯上緩沖式(ODB)非易失性存儲(chǔ)器管理的方法1400的另一實(shí)施例。方法1400開(kāi)始,并且緩沖模塊302將數(shù)據(jù)存儲(chǔ)(1402)在第一非易失性存儲(chǔ)單元集合中。刷新模塊304確定(1404)是否刷新數(shù)據(jù)。如果刷新模塊304確定(1404)刷新數(shù)據(jù),則刷新模塊304對(duì)來(lái)自第一非易失性存儲(chǔ)單元集合的數(shù)據(jù)進(jìn)行解碼(1406),并且基于一個(gè)或多個(gè)數(shù)據(jù)因素或與數(shù)據(jù)關(guān)聯(lián)的屬性而對(duì)用于拷貝或移動(dòng)到第二非易失性存儲(chǔ)單元集合的數(shù)據(jù)進(jìn)行重新編碼(1406)。第二非易失性存儲(chǔ)單元集合在一個(gè)實(shí)施例中通過(guò)比第一非易失性存儲(chǔ)單元集合更多的每單元的存儲(chǔ)狀態(tài)來(lái)對(duì)數(shù)據(jù)進(jìn)行編碼?;乜侥K306將數(shù)據(jù)拷貝(1408)到第二非易失性存儲(chǔ)單元集合,并且方法1400結(jié)束。

圖13描述用于裸芯上緩沖式(ODB)非易失性存儲(chǔ)器管理的方法1500的另一實(shí)施例。方法1500開(kāi)始,并且緩沖模塊302將數(shù)據(jù)緩沖(1502)在第一非易失性存儲(chǔ)器單元集合中。讀取電壓模塊312基于用于第一非易失性存儲(chǔ)器單元集合的一個(gè)或多個(gè)存儲(chǔ)介質(zhì)特性而調(diào)整(1504)用于第一非易失性存儲(chǔ)器單元集合的一個(gè)或多個(gè)讀取電壓閾值。回拷模塊306使用調(diào)整后的(1504)一個(gè)或多個(gè)讀取電壓閾值將數(shù)據(jù)從第一非易失性存儲(chǔ)器單元集合拷貝(1506)到第二非易失性存儲(chǔ)器單元集合。第二非易失性存儲(chǔ)器單元集合在一個(gè)實(shí)施例中被配置為:存儲(chǔ)比第一非易失性存儲(chǔ)器單元集合更多的每單元的比特。

附加描述:

在一個(gè)實(shí)施例中,管理模塊150優(yōu)化TLC NAND中的ODB編程步驟。在一個(gè)實(shí)施例中,管理模塊150可以優(yōu)化地確定在NAND設(shè)備中正從SLC移動(dòng)到TLC的頁(yè)面是否應(yīng)在放置在TLC頁(yè)面上之前被檢錯(cuò)/糾錯(cuò)。對(duì)碼字進(jìn)行解碼,糾正任何錯(cuò)誤并且然后對(duì)碼字進(jìn)行重新編碼的處理可以稱為“編碼刷新”。多個(gè)因素可以用于進(jìn)行該確定,包括NAND的當(dāng)前年齡(P/E)、掃描器反饋等。在特定實(shí)施例中,如果因素是容易可得的或快速并且容易的、用于測(cè)量/檢測(cè),則這是更好的。

ODB是用于TLC的編程模型。該模型可以將一些數(shù)據(jù)緩沖在SLC塊中的NAND芯片上,直到數(shù)據(jù)稍后壓縮到TLC塊中??刂破?和主機(jī))可以負(fù)責(zé)管理在SLC塊與TLC塊之間移動(dòng)的數(shù)據(jù)。

將頁(yè)面從SLC塊壓縮到TLC塊中的處理可以包括“回拷”操作。NAND制造商可以推薦對(duì)在拷貝返回期間從SLC塊讀取的塊進(jìn)行解碼,并且通過(guò)錯(cuò)誤保護(hù)機(jī)制(ECC)、“編碼刷新”來(lái)對(duì)其進(jìn)行重新編碼,以確保高數(shù)據(jù)可靠性。管理模塊150可以具有范圍從不進(jìn)行編碼刷新到進(jìn)行選擇性編碼刷新到進(jìn)行全部編碼刷新的多個(gè)變形。

如果目的地TLC EB并非可使用的(標(biāo)記為壞/損耗掉),則“回拷”可以不完成。此外,當(dāng)管理模塊150用在閃速陣列上時(shí),陣列可以組織為n個(gè)(n=29=28+1個(gè)奇偶校驗(yàn))裸芯寬的行??梢允褂米赃m應(yīng)閃回來(lái)管理該行——這意味著,隨著EB在一行中出故障,并非重新映射EB以保留相同行寬度,可以減少行大小并且使用更短的行。因此,在一個(gè)實(shí)施例中,為了拷貝返回用在陣列的兩個(gè)行之間,每個(gè)行中的可使用的EB的數(shù)量可以至少是相同的(換言之,目的地行(TLC行)可以如源行(SLC行)一樣寬或?qū)捰谠葱?SLC行))。

在特定實(shí)施例中,如果用于陣列的給定列的目的地TLC EB不是可使用的(損耗掉),則編碼刷新和/或垃圾收集可能是適當(dāng)?shù)??!盎乜健笔强梢蕴幱谟糜贜AND芯片的封裝等級(jí)上的操作。如果用于陣列的給定列的目的地TLC EB不是可使用的,則因?yàn)閷?duì)于給定的封裝/裸芯可能不存在可用的目的地TLC EB,所以在特定實(shí)施例中可以不執(zhí)行拷貝返回操作。在特定實(shí)施例中,可以對(duì)控制器告警用于陣列的給定列的目的地TLC EB不是可使用的事實(shí),并且將用于拷貝返回操作的目的地TLC EB重新映射為可用的另一TLC EB。(可以從為此目的而又設(shè)置的所保留的TLC EB的池選取所使用的替選TLC EB)。在另一實(shí)施例中,如果用于陣列的給定列的目的地TLC EB不是可使用的,則整個(gè)LEB可以被讀出NAND、進(jìn)入控制器中,并且在被存儲(chǔ)在目的地TLC EB上之前被重新分組。

單元的陣列可以由LEB的行構(gòu)成,該LEB的行映射到穿過(guò)焊盤(pán)(pad)的行的每個(gè)焊盤(pán)上的相同EB地址。如果目的地TLC EB是不可使用的,則這種映射可能使得拷貝返回操作是困難的。為了解決該問(wèn)題,可以通過(guò)不基于陣列的行中的物理位置或地址的任意分配來(lái)保持陣列的行中的PEB到LEB的映射。如果LEB 0映射為EB l、EB m、EB n、EB o等,則可以通過(guò)重新映射陣列的其它行中的PEB來(lái)執(zhí)行拷貝返回操作。

在一個(gè)實(shí)施例中,管理模塊150可以將SLC頁(yè)面的數(shù)據(jù)發(fā)送到TLC緩沖器之一,并且流送出數(shù)據(jù),以用于“編碼刷新”??刂破?讀取流水線中的邏輯可以確定是否進(jìn)行編碼刷新??梢曰赗BER(或錯(cuò)誤的數(shù)量)和/或其它因素而進(jìn)行確定。如果建議編碼刷新,則可以在控制器內(nèi)的新的碼字中對(duì)頁(yè)面進(jìn)行解碼并且重新編碼。在一個(gè)實(shí)施例中,頁(yè)面的數(shù)據(jù)可以停留在控制器中,并且在編碼刷新期間不通過(guò)PCIe接口移動(dòng)到主存儲(chǔ)器。管理模塊150在特定實(shí)施例中可以快速地確定是否進(jìn)行編碼刷新。

在另一實(shí)施例中,管理模塊150可以特征化NAND,從而管理模塊150具有預(yù)測(cè)編碼刷新何時(shí)可能是有益的模型。

在另一實(shí)施例中,管理模塊150包括掃描器,被配置為:標(biāo)記或另外注記當(dāng)在回拷操作中移動(dòng)時(shí)應(yīng)接收以及不應(yīng)接收編碼刷新的頁(yè)面。在這些實(shí)施例之一中,頁(yè)面的標(biāo)志或標(biāo)記可以使得頁(yè)面能夠直接發(fā)送到控制器,以用于編碼刷新,或保留在NAND裸芯中,以用于回拷,而非長(zhǎng)路徑向下發(fā)送數(shù)據(jù)。

在特定實(shí)施例中,NAND接口可以具有用于刷新操作的足夠高的吞吐量。

管理模塊150可以執(zhí)行的另一操作是“壓縮”——如果SLC中的塊的數(shù)據(jù)正移動(dòng)到TLC——利用這個(gè)機(jī)會(huì)以對(duì)塊進(jìn)行垃圾收集。

在特定實(shí)施例中,TLC NAND可能是比SLC/MLC更有損的,并且因此,SLC NAND中所存儲(chǔ)的數(shù)據(jù)可以被檢錯(cuò)并且重新編碼,以保持期望等級(jí)的數(shù)據(jù)可靠性。當(dāng)SLC NAND頁(yè)面正讀出SLC NAND以移動(dòng)到TLC NAND作為ODB回拷操作的部分時(shí),在一個(gè)實(shí)施例中,管理模塊150可以有選擇地決定哪些SLC NAND頁(yè)面進(jìn)行編碼刷新。管理模塊150在特定實(shí)施例中可以回拷所有或?qū)嵸|(zhì)上所有SLC NAND頁(yè)面,并且稍后基于一些準(zhǔn)則對(duì)子集進(jìn)行編碼刷新??梢曰趻呙?、NAND表征(模型)、用于回拷的Tprog、使用或損耗測(cè)量、在回拷期間所報(bào)告的錯(cuò)誤等而計(jì)算準(zhǔn)則。

在特定實(shí)施例中,管理模塊150可以收集元數(shù)據(jù),以通過(guò)滿足一個(gè)或多個(gè)性能度量的方式關(guān)于是否執(zhí)行刷新進(jìn)行決定。在一個(gè)實(shí)施例中,管理模塊150可以僅讀取少數(shù)頁(yè)面,并且計(jì)算關(guān)于它們的RBER。在另一實(shí)施例中,管理模塊150可以不收集任何數(shù)據(jù),但可以出于其它目的(例如編程/擦除計(jì)數(shù)、RBER、UBER、保留時(shí)間等)促使數(shù)據(jù)保留。在另一實(shí)施例中,管理模塊150可以不收集任何數(shù)據(jù),并且可以基于來(lái)自NAND設(shè)備的反饋(例如,較長(zhǎng)的Tprog或回拷、來(lái)自NAND芯片的錯(cuò)誤或告警消息等)而觸發(fā)該決定。

在特定實(shí)施例中,管理模塊150可以響應(yīng)于決定進(jìn)行編碼刷新而選擇用于刷新后的數(shù)據(jù)的多個(gè)目的地之一(例如初始TLC NAND、可替換的TLC NAND、日志附接點(diǎn)等)。在一個(gè)實(shí)施例中,如果目的地TLC頁(yè)面是壞的、太過(guò)損耗的或另外不可使用的(忙于進(jìn)行其它操作),則管理模塊150可以將SLC頁(yè)面重定向到日志附接點(diǎn)。如果SLC頁(yè)面處于低需求(少數(shù)讀取/寫(xiě)入)并且存在低執(zhí)行壓力,則在一個(gè)實(shí)施例中,管理模塊150可以從SLC頁(yè)面移除無(wú)效(例如垃圾)塊,并且將SLC頁(yè)面重定向到日志附接點(diǎn)。

在一個(gè)實(shí)施例中,管理模塊150可以在SLC EB與TLC EB之間有選擇地執(zhí)行回拷操作,而并非所有數(shù)據(jù)移動(dòng)到TLC EB。將一些數(shù)據(jù)留在SLC EB中可以使得設(shè)備能夠?qū)崿F(xiàn)特定QOS要求。在特定實(shí)施例中,管理模塊150基于可以在進(jìn)行是否執(zhí)行回拷操作的決定中考慮的因素(例如寫(xiě)入頻率、QOS等)而有選擇地進(jìn)行該決定。

在特定實(shí)施例中,讀取可能在TLC上比在SLC或MLC上耗時(shí)更長(zhǎng)。部分地歸因于NAND部分對(duì)字線干擾的依賴,NAND制造商可以建議直到WLn+1被編程才讀取WLn。如果可以容納、糾正等任何錯(cuò)誤,則管理模塊150在一個(gè)實(shí)施例中在WLn+1被編程之前讀取WLn。能夠在WLn+1之前讀取WLn在特定實(shí)施例中可以通過(guò)使得數(shù)據(jù)可存取得更快而增加性能。

管理模塊150在一個(gè)實(shí)施例中當(dāng)進(jìn)行回拷操作時(shí)可以通過(guò)使用用于SLC擦除塊(EB)的讀取電壓閾值管理(VTM)模型來(lái)避免數(shù)據(jù)刷新開(kāi)銷。在特定實(shí)施例中,管理模塊150可以將VTM模型應(yīng)用于源SLC EB,以用于回拷操作,并且SLC EB數(shù)據(jù)可以變?yōu)門(mén)LC EB,而無(wú)需解碼、糾正以及重新編碼。數(shù)據(jù)可以通過(guò)VTM設(shè)置從單元讀取到NAND緩沖器,然后移動(dòng)到TLC EB。VTM模型可以定向或指示用于刷新的少數(shù)SLC EB。在一個(gè)實(shí)施例中,僅在回拷操作(例如SLC EB讀取)期間應(yīng)用VTM模型。正常讀取在一個(gè)實(shí)施例中不使用SLC VTM模型。此外,在特定實(shí)施例中,VTM模型可以僅應(yīng)用于具有特定損耗特性的SLC EB。

管理模塊150在一個(gè)實(shí)施例中將VTM表用于SLC EB,以促進(jìn)回拷。在特定實(shí)施例中,SLC nand可以假設(shè)為魯棒得足以在沒(méi)有VTM的情況下操作。然而,在特定實(shí)施例中,并非刷新SLC EB,管理模塊150可以在SLC EB得以讀取之時(shí)應(yīng)用VTM調(diào)整,從而避免刷新。數(shù)據(jù)可以停留在分組中,并且從單元移動(dòng)到內(nèi)部頁(yè)面緩沖器,然后移動(dòng)到TLC目的地EB。在一個(gè)實(shí)施例中,如果掃描器確定應(yīng)執(zhí)行刷新,則掃描器仍可以標(biāo)記SLC EB,以用于刷新。管理模塊150可以在回拷操作期間檢測(cè)所標(biāo)記的SLC EB。在一個(gè)實(shí)施例中,VTM調(diào)整可以用在SLC EB上,僅用于回拷操作。

在一個(gè)實(shí)施例中,管理模塊150可以優(yōu)化TLC NAND中的ODB編程步驟的使用。管理模塊150在特定實(shí)施例中可以優(yōu)化地分配與TLC塊有關(guān)的SLC塊,以使得NAND的壽命最大化。管理模塊150在一個(gè)實(shí)施例中可以預(yù)先分配EB作為SLC并且預(yù)先分配其它EB作為T(mén)LC,而且在EB的壽命期間保持該分配。在另一實(shí)施例中,管理模塊150可以貫穿EB的壽命而改變模式分配。

ODB是用于TLC的編程模型。該模型在特定實(shí)施例中可以將一些數(shù)據(jù)緩沖在SLC塊中的NAND芯片上,直到數(shù)據(jù)可以稍后壓縮到TLC塊中??刂破?例如管理模塊150)可以負(fù)責(zé)管理在SLC塊與TLC塊之間移動(dòng)的數(shù)據(jù),并且可以引入特定優(yōu)化。

控制器在一個(gè)實(shí)施例中可以定義哪些塊是SLC以及哪些塊是TLC。NAND在特定實(shí)施例中可以對(duì)塊(EB)何時(shí)可以處于SLC或TLC模式下施加特定限制。在一個(gè)實(shí)施例中,在擦除操作之后,塊可以置于SLC、MLC和/或TLC模式下。在特定實(shí)施例中,關(guān)于一些NAND制造等,一旦模式改變,其就保持改變,直到再次使用SET FEATURE(設(shè)置特征)命令等進(jìn)行改變。在其它實(shí)施例中,對(duì)于其它NAND制造,模式改變僅用于當(dāng)前操作,并且然后反轉(zhuǎn)回到默認(rèn)模式。

在一個(gè)實(shí)施例中,管理模塊150可以工程化SLC/TLC塊分配,從而SLC塊和TLC塊都在基本上相同的轉(zhuǎn)折點(diǎn)或其附近損耗掉。在預(yù)先分配情況下,在一個(gè)實(shí)施例中,管理模塊可以確定優(yōu)化比率。在一個(gè)實(shí)施例中,制造商例如可以設(shè)置作為SLC和其余TLC的總?cè)萘康?.2%的用于SLC/TLC的比率。按默認(rèn),在一個(gè)實(shí)施例中,制造商可以關(guān)于設(shè)備的壽命將頁(yè)面保持在它們的SLC/TLC模式下。

在一個(gè)實(shí)施例中,管理模塊150對(duì)于一個(gè)或多個(gè)擦除塊動(dòng)態(tài)地切換塊模式。管理模塊150在特定實(shí)施例中可以適度地和/或均勻地?cái)U(kuò)展TLC和SLC損耗。管理模塊150可以確定何時(shí)從SLC切換到TLC到SLC等。

在特定實(shí)施例中,管理模塊150可以保持當(dāng)在TLC模式等下最新掃描時(shí)所測(cè)量的關(guān)于每個(gè)EB的RBER統(tǒng)計(jì),并且可以將最有損的EB分配給SLC緩沖器職責(zé)。在一個(gè)實(shí)施例中可以使用TLC塊,直到它們的可靠性落入閾值之下等,然后它們可以降級(jí)為SLC塊。TLC塊可以首先降級(jí)為MLC塊并且然后降級(jí)為SLC,可以直接變?yōu)镾LC等。當(dāng)掃描器瀏覽EB、再次對(duì)該EB進(jìn)行讀取操作、等等時(shí),管理模塊150在一個(gè)實(shí)施例中可以監(jiān)控可靠性。

在另一實(shí)施例中,管理模塊150可以通過(guò)檢查用于EB的tERASE來(lái)監(jiān)控EB的健康。tERASE在特定實(shí)施例中隨著EB損耗掉而上升。tERASE在一個(gè)實(shí)施例中可以易于在梳理或垃圾收集之時(shí)監(jiān)控并且檢測(cè)。

NAND部分在特定實(shí)施例中可以具有作為SLC的特定EB設(shè)置以及作為T(mén)LC的其它EB設(shè)置,其中,SLC對(duì)于TLC的百分比由制造商等設(shè)置。這些設(shè)置對(duì)于NAND的壽命可以是固定的。這些固定的并且剛性的分配和使用在一個(gè)實(shí)施例中可以由制造商普適化以用于所有消費(fèi)者,并且可以不是關(guān)于特定工作量的最佳解決方案。

管理模塊150在特定實(shí)施例中可以具有對(duì)將EB的配置從TLC動(dòng)態(tài)改變?yōu)镾LC或從SLC動(dòng)態(tài)改變?yōu)門(mén)LC等的存取,改變SLC/TLC分配,以使得NAND的壽命和使用最大化。通過(guò)對(duì)小塊(knob)的存取,管理模塊150可以基于可靠性和/或性能度量而將TLC EB改變?yōu)镸LC或SLC EB。基于工作量特性(例如QOS),在一個(gè)實(shí)施例中,管理模塊150可以當(dāng)在工作量方面存在更高值塊時(shí)將更多的EB分配給SLC,并且可以如果在處理中則使得回拷不完成、中止等?;谟脩襞渲迷O(shè)置,當(dāng)設(shè)置正確的用戶設(shè)置等時(shí),管理模塊150在另一實(shí)施例中可以將更多EB分配給TLC(例如,期望更高的密度)。

管理模塊150在一個(gè)實(shí)施例中優(yōu)化地將用于數(shù)據(jù)塊的LBA映射為用于NAND上的數(shù)據(jù)的兩個(gè)潛在物理位置之一。進(jìn)行裸芯上緩沖編程以將數(shù)據(jù)從SLC轉(zhuǎn)變?yōu)門(mén)LC EB的TLC NAND在特定實(shí)施例中可以在兩個(gè)不同的位置中具有相同數(shù)據(jù)達(dá)有限時(shí)間段。管理模塊150在一個(gè)實(shí)施例中可以確定前向映射(例如邏輯到物理映射結(jié)構(gòu))的LBA應(yīng)通過(guò)其LBA指向何處以及如何管理該目的地地址。管理模塊150可以使用工程化處理,以用于保存目的地物理地址、用于更新前向映射的操作順序和/或倘若功率切斷事件產(chǎn)生則恢復(fù)步驟。

ODB是用于TLC的編程模型。該模型可以將一些數(shù)據(jù)緩沖在SLC塊中的NAND芯片上,直到數(shù)據(jù)可以稍后壓縮到TLC塊中??刂破?例如管理模塊150)可以負(fù)責(zé)管理在SLC塊與TLC塊之間移動(dòng)的數(shù)據(jù),并且可以引入特定優(yōu)化。

控制器/驅(qū)動(dòng)器(例如管理模塊150)可以將LBA與目的地PA之間的前向映射(例如邏輯到物理映射結(jié)構(gòu))保存在NAND上。在TLC設(shè)備中,在正使用ODB的情況下,物理地址可以隨著數(shù)據(jù)使用拷貝返回操作在SLC塊與TLC塊之間移動(dòng)而改變。管理模塊150可以管理物理地址改變。在特定實(shí)施例中,管理模塊150可以處置功率切斷情況。

在一個(gè)實(shí)施例中,回拷操作涉及主機(jī)。主機(jī)可以確定目的地物理地址,其可以是NAND上的TLC頁(yè)面。在回拷期間,在特定實(shí)施例中,頁(yè)面的多個(gè)拷貝可以存在。在一個(gè)實(shí)施例中,用于前向映射(forward map)的物理地址可以初始地設(shè)置為SLC頁(yè)面的物理地址。在拷貝返回處于處理中的同時(shí),前向映射中的物理地址可以停留SLC頁(yè)面,直到管理模塊150確認(rèn)數(shù)據(jù)可從TLC頁(yè)面讀取。在各個(gè)實(shí)施例中,可以通過(guò)來(lái)自NAND的完成指示符、TLC頁(yè)面的測(cè)試讀取等來(lái)指示該情況。

在一個(gè)實(shí)施例中,管理模塊150可以僅在可以讀取TLC頁(yè)面之后并且在調(diào)度SLC擦除之前更新LRB樹(shù)(例如邏輯到物理映射結(jié)構(gòu))。在另一實(shí)施例中,管理模塊150可以僅在成功地對(duì)整個(gè)TLC擦除塊進(jìn)行編程之后并且在擦除源擦除塊之前更新LRB樹(shù)。管理模塊150在特定實(shí)施例中可以通過(guò)直到完全填充目標(biāo)擦除塊(空白速率和填充速率(empty and fill rate)可以歸因于無(wú)效而偏斜)才擦除源擦除塊來(lái)防止或消除部分填充的擦除塊。

因?yàn)榛乜皆谔囟▽?shí)施例中可以是擴(kuò)展的處理,所以管理模塊150可以優(yōu)化對(duì)回拷操作中所涉及的頁(yè)面中的數(shù)據(jù)的存取。例如,在一個(gè)實(shí)施例中,如果以高頻率來(lái)存取頁(yè)面上的數(shù)據(jù),則回拷操作可以中止并且將數(shù)據(jù)留在SLC中,這樣可以提供更快的讀取,促成緩存驅(qū)逐策略等。在另一實(shí)施例中,如果正以高頻率存取頁(yè)面上的數(shù)據(jù),則回拷操作可以繼續(xù),但可以被修改,從而數(shù)據(jù)的拷貝停留在SLC中,這樣可以提供更快的讀取等,并且可以從SLC讀取數(shù)據(jù),直到高頻率的存取下降。此外,在一個(gè)實(shí)施例中,可以通過(guò)特定服務(wù)質(zhì)量(QoS)標(biāo)記來(lái)對(duì)SLC PEB上的數(shù)據(jù)做標(biāo)簽。如果SLC PEB數(shù)據(jù)是高QoS的,則在特定實(shí)施例中,數(shù)據(jù)可以要么a)不移動(dòng)到TLC,b)移動(dòng)到TLC但也處于SLC PEB中,以提供較高的讀取性能等,要么c)其它技術(shù)。

在一個(gè)實(shí)施例中,當(dāng)考慮何時(shí)將SLC分組標(biāo)記為無(wú)效時(shí),管理模塊150可以不將回拷操作置于字線級(jí)。此外,在特定實(shí)施例中,管理模塊150可以直到整個(gè)擦除塊已經(jīng)拷貝到TLC之后才將SLC分組標(biāo)記為無(wú)效。管理模塊150在另一實(shí)施例中可以直到僅在管理模塊150擦除SLC EB之前才將SLC分組標(biāo)記為無(wú)效。管理模塊150在一個(gè)實(shí)施例中可以保存兩個(gè)不同的分組位置,以管理可以有益于讀取延時(shí)性能的重疊。

如上所述,在特定實(shí)施例中,如果目的地TLC擦除塊是不可使用的(例如,標(biāo)記為壞/磨損掉),則“拷貝返回”可以不完成。在一個(gè)實(shí)施例中,管理模塊150可以使用組織為n個(gè)(n=29=28+1個(gè)奇偶校驗(yàn))裸芯寬等的行的閃速陣列。可以使用自適應(yīng)閃回等來(lái)管理行。例如,在特定實(shí)施例中,隨著擦除塊在行中出故障,并非重新映射擦除塊以保留同一行寬度,可以減少行大小,并且可以使用更短的行。因此,在一個(gè)實(shí)施例中,為了拷貝返回用在陣列的兩個(gè)行之間,每個(gè)行中的可使用的EB的數(shù)量可以至少是相同的(換言之,在特定實(shí)施例中,目的地行(TLC行)可以與源行(SLC行))一樣寬或?qū)捰谠葱?SLC行))。

對(duì)碼字進(jìn)行解碼、糾正任何錯(cuò)誤并且然后對(duì)碼字進(jìn)行重新編碼的處理可以稱為“編碼刷新”。在特定實(shí)施例中,如果用于陣列的給定列的目的地TLC EB不是可使用的(磨損掉),則編碼刷新和/或垃圾收集可能是適當(dāng)?shù)??!盎乜健笔强梢蕴幱谟糜贜AND芯片的分組等級(jí)上的操作。如果用于陣列的給定列的目的地TLC EB不是可使用的,則因?yàn)閷?duì)于給定的分組/裸芯可能不存在可用的目的地TLC EB,所以在一個(gè)實(shí)施例中不能執(zhí)行拷貝返回操作。

在特定實(shí)施例中,可以對(duì)控制器(例如管理模塊150)告警用于陣列的給定列的目的地TLC EB不可使用的事實(shí),并且將用于拷貝返回操作的目的地TLC EB重新映射為可用的另一TLC EB。(在一個(gè)實(shí)施例中,可以從為此目的而又設(shè)置的所保留的TLC EB的池選取所使用的替選TLC EB)。在另一實(shí)施例中,如果用于陣列的給定的列的目的地TLC EB是不可使用的,則整個(gè)LEB可以讀出NAND進(jìn)入控制器并且重新分組,并且潛在地放置在日志中的新的位置中,然后存儲(chǔ)在目的地TLC EB上。

在一個(gè)實(shí)施例中,具有回拷編程的TLC可以呈現(xiàn)這樣的情況:NAND頁(yè)面上的數(shù)據(jù)存在于多個(gè)位置中達(dá)某時(shí)間段。源SLC頁(yè)面在特定實(shí)施例中可以出自相同EB、不同EB等。對(duì)于回拷過(guò)程,在一個(gè)實(shí)施例中,管理模塊150可以使用來(lái)自一個(gè)或多個(gè)不同EB、來(lái)自一個(gè)或多個(gè)相同EB等的三個(gè)頁(yè)面。管理模塊150在特定實(shí)施例中可以確定何時(shí)應(yīng)發(fā)起回拷以及何時(shí)應(yīng)延遲回拷。

在一個(gè)實(shí)施例中,如果以高QOS來(lái)標(biāo)記數(shù)據(jù)塊,則管理模塊150可以延緩回拷并且將數(shù)據(jù)留在SLC中。在另一實(shí)施例中,如果數(shù)據(jù)塊具有高存取速率(讀取和/或?qū)懭?,則管理模塊150可以延緩回拷并且將數(shù)據(jù)留在SLC中(例如,使用SLC作為緩存等)。如果存在高容量壓力并且數(shù)據(jù)塊未做標(biāo)簽以用于特殊對(duì)待等,則在特定實(shí)施例中,可以發(fā)起回拷。

管理模塊150在一個(gè)實(shí)施例中可以確定何時(shí)更新LBA與物理地址(PA)之間的映射。在特定實(shí)施例中,在SLC EB中的數(shù)據(jù)已經(jīng)驗(yàn)證為存儲(chǔ)的之后,管理模塊150可以更新前向映射。被驗(yàn)證在一個(gè)實(shí)施例中可以表示數(shù)據(jù)被讀取(例如,系統(tǒng)發(fā)起的讀取、掃描器所進(jìn)行的延緩的讀取等)返回并且被確認(rèn)為準(zhǔn)確。管理模塊150在另一實(shí)施例中可以在SLC EB中的數(shù)據(jù)存儲(chǔ)在TLC中之后更新前向映射,而無(wú)需驗(yàn)證等。在另一實(shí)施例中,管理模塊150可以在回拷操作之前通過(guò)之前PA(主級(jí))和之后PA(次級(jí))來(lái)更新前向映射,并且在數(shù)據(jù)處于TLC EB中之后移除之前PA等。主級(jí)PA在一個(gè)實(shí)施例中可以是SLC,因?yàn)槠淇梢跃哂懈斓淖x取和寫(xiě)入等。

管理模塊150在特定實(shí)施例中可以確定何時(shí)恢復(fù)舊的SLC頁(yè)面。在一個(gè)實(shí)施例中,管理模塊150可以在SLC EB中的數(shù)據(jù)驗(yàn)證為存儲(chǔ)的(例如讀取返回并且確認(rèn)精確)之后恢復(fù)SLC頁(yè)面。在特定實(shí)施例中,管理模塊150可以響應(yīng)于用戶發(fā)起的讀取而驗(yàn)證數(shù)據(jù)。管理模塊150在一個(gè)實(shí)施例中可以在關(guān)于SLC EB中的數(shù)據(jù)的存取速率小于閾值之后恢復(fù)SLC頁(yè)面,使用SLC EB等來(lái)緩存數(shù)據(jù)。管理模塊150在另一實(shí)施例中可以響應(yīng)于存儲(chǔ)容量壓力而恢復(fù)SLC頁(yè)面。

當(dāng)功率切斷中斷TLC回拷時(shí),管理模塊150在特定實(shí)施例中可以應(yīng)用優(yōu)選操作順序,以緩解問(wèn)題。在一個(gè)實(shí)施例中,一旦確認(rèn)數(shù)據(jù)安全地存儲(chǔ)在TLC頁(yè)面上,數(shù)據(jù)就可以功率切斷得安全。管理模塊150在另一實(shí)施例中可以a)發(fā)起回拷,b)確認(rèn)回拷成功,c)以新的地址來(lái)更新前向映射;和/或d)使用另一技術(shù)。在特定實(shí)施例中,管理模塊150可以延緩更新前向映射以及恢復(fù)SLC頁(yè)面,直到存在存儲(chǔ)容量壓力等。出于性能原因,在一個(gè)實(shí)施例中,SLC頁(yè)面可以用于服務(wù)于讀取。

管理模塊150在特定實(shí)施例中可以優(yōu)化在功率切斷事件期間TLC NAND的使用。在另一實(shí)施例中,在功率切斷的事件中,管理模塊150可以優(yōu)化地將用于數(shù)據(jù)塊的LBA映射為用于NAND上的數(shù)據(jù)的兩個(gè)潛在物理位置之一。進(jìn)行裸芯上緩沖編程以將數(shù)據(jù)從SLC轉(zhuǎn)變?yōu)門(mén)LC EB的TLC NAND在特定實(shí)施例中可以在兩種類型的塊中具有相同數(shù)據(jù)達(dá)有限時(shí)間段。在功率切斷的事件中,可能存在TLC物理擦除塊(PEB)尚未完全被填充(例如,PEB的每個(gè)頁(yè)面尚未被編程)(其可以稱為不完全TLC PEB)的機(jī)會(huì)。管理模塊150可以被配置為:處置這種不完全TLC PEB。

ODB是用于TLC的編程模型。該模型可以將一些數(shù)據(jù)緩沖在SLC塊中的NAND芯片上,直到數(shù)據(jù)稍后壓縮到TLC塊等中??刂破?和主機(jī))可以負(fù)責(zé)管理在SLC塊與TLC塊之間移動(dòng)的數(shù)據(jù)??刂破?驅(qū)動(dòng)器在特定實(shí)施例中可以將LBA與目的地PA之間的前向映射保存在NAND上。在TLC設(shè)備中,在正使用ODB的情況下,PA可以隨著數(shù)據(jù)使用拷貝返回操作在SLC塊與TLC塊之間移動(dòng)而改變。

管理模塊150在一個(gè)實(shí)施例中可以管理這種物理地址改變,可以管理部分地編程的TLC EB等。回拷操作在特定實(shí)施例中涉及主機(jī)。主機(jī)在一個(gè)實(shí)施例中確定目的地PA,其可以是NAND上的TLC頁(yè)面。

在回拷期間,頁(yè)面的多個(gè)拷貝可以存在。用于前向映射的PA在一個(gè)實(shí)施例中可以初始地設(shè)置為SLC頁(yè)面的PA。在拷貝返回處于處理中的同時(shí),在特定實(shí)施例中,前向映射中的PA可以保留用于SLC頁(yè)面的PA,直到管理模塊150可以確認(rèn)數(shù)據(jù)可從TLC頁(yè)面讀取??梢酝ㄟ^(guò)來(lái)自NAND的完成指示符、TLC頁(yè)面的測(cè)試讀取等來(lái)指示該情況。

為了避免在TLC PEB正被回拷來(lái)編程的同時(shí)功率切斷可能產(chǎn)生的潛在問(wèn)題,在一個(gè)實(shí)施例中,管理模塊150可以允許用于前向映射的PA保留SLC頁(yè)面的PA,直到管理模塊150可以確認(rèn)可從TLC頁(yè)面讀取數(shù)據(jù)等。如果功率切斷產(chǎn)生在TLC PEB的頁(yè)面的編程期間,則在一個(gè)實(shí)施例中,管理模塊150可以另外使用SLC PEB中的數(shù)據(jù)(例如,它們中的三個(gè))。在從功率切斷恢復(fù)時(shí),在特定實(shí)施例中,管理模塊150可以梳理(groom)該TLC EB。

在一個(gè)實(shí)施例中,管理模塊150可以不保存在梳理期間來(lái)自TLC EB的有效數(shù)據(jù),因?yàn)樯形词崂碓碨LC EB。管理模塊150可以滿足來(lái)自源SLC EB的讀取。在特定實(shí)施例中,一旦功率回來(lái)了(back on),管理模塊150就可以對(duì)TLC EB執(zhí)行擦除操作。在另一實(shí)施例中,管理模塊150可以馬上使用部分地編程的TLC EB作為有效TLC EB等。在特定實(shí)施例中,并不響應(yīng)于TLC EB的梳理而更新LRB樹(shù)(例如邏輯到物理映射結(jié)構(gòu))。

具有回拷編程的TLC在一個(gè)實(shí)施例中可以具有在功率切斷之時(shí)關(guān)于部分編程的TLC EB的潛力等。管理模塊150在特定實(shí)施例中可以發(fā)起/中止回拷操作,并且考慮部分填充的并且僅保存無(wú)效/垃圾數(shù)據(jù)的TLC EB。并非TLC EB中的數(shù)據(jù),在一個(gè)實(shí)施例中,管理模塊150可以使用SLC EB數(shù)據(jù)。管理模塊150在另一實(shí)施例中可以通過(guò)指示符來(lái)標(biāo)記完成的TLC EB,如果指示符未出現(xiàn),則EB是部分EB,并且管理模塊150可以將部分編程的EB上的所有數(shù)據(jù)看作不可靠的,而且標(biāo)記用于GC/擦除的EB等。在一個(gè)實(shí)施例中,管理模塊150可以直到新的數(shù)據(jù)正確地存儲(chǔ)在TLC EB中才更新前向映射等。在特定實(shí)施例中,管理模塊150可以使用包括NAND的當(dāng)前年齡(P/E)、掃描器反饋等的多個(gè)因素以進(jìn)行確定。在一個(gè)實(shí)施例中,因素對(duì)于測(cè)量/檢測(cè)等可以是易于可用的、非常快速的并且容易的。

在不脫離本公開(kāi)的精神或基本特性的情況下,可以通過(guò)其它具體形式來(lái)實(shí)施本公開(kāi)。因此,所描述的實(shí)施例被看作在所有方面僅是說(shuō)明性而非限制性的。因此,本公開(kāi)的范圍由所附權(quán)利要求而非前面的描述指示。出自權(quán)利要求的等同物的意義和范圍內(nèi)的所有改變囊括于其范圍內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1