所公開的實(shí)施例總體上涉及存儲(chǔ)器系統(tǒng),并且具體地涉及減小存儲(chǔ)設(shè)備(例如,包括一個(gè)或多個(gè)閃存設(shè)備)的聲明容量。
背景技術(shù):
半導(dǎo)體存儲(chǔ)器設(shè)備(包括閃存)通常利用存儲(chǔ)器單元來將數(shù)據(jù)存儲(chǔ)為電性值,如電荷或電壓。閃存單元例如包括具有用于存儲(chǔ)表示數(shù)據(jù)值的電荷的浮柵的單個(gè)晶體管。閃存是可以被電擦除和重新編程的非易失性數(shù)據(jù)存儲(chǔ)設(shè)備。更一般地,與需要電力來維持存儲(chǔ)信息的易失性存儲(chǔ)器相反,即使斷電時(shí),非易失性存儲(chǔ)器(例如,閃存以及使用各種技術(shù)中的任何技術(shù)實(shí)現(xiàn)的其他類型的非易失性存儲(chǔ)器)仍然保持所存儲(chǔ)的信息。已經(jīng)采用各種方式來促進(jìn)存儲(chǔ)密度的增加,包括:增加芯片上的通過制造發(fā)展而啟動(dòng)的存儲(chǔ)器單元的密度,以及從單級(jí)閃存單元到多級(jí)閃存單元的轉(zhuǎn)變,從而使得每個(gè)閃存單元可以存儲(chǔ)兩個(gè)或更多個(gè)比特。
閃存單元的反復(fù)擦除和重新編程引起電荷存儲(chǔ)能力的降級(jí)(磨損)。最終,電荷存儲(chǔ)能力降級(jí)到其變得不可能或無法恢復(fù)原始數(shù)據(jù)的點(diǎn)處(例如,不可恢復(fù)的碼字從閃存設(shè)備中被讀取、要求恢復(fù)碼字的計(jì)算資源超過預(yù)定義的閾值、或者針對(duì)閃存設(shè)備的程序擦除(P/E)周期計(jì)數(shù)超過閾值)并且所述設(shè)備被認(rèn)為已磨損。磨損均衡技術(shù)經(jīng)常用于跨閃存設(shè)備的多個(gè)部分來使磨損分布開。在典型系統(tǒng)中,一旦達(dá)到閃存設(shè)備的一部分的磨損極限,整個(gè)閃存設(shè)備就被認(rèn)為已經(jīng)故障。
技術(shù)實(shí)現(xiàn)要素:
所附權(quán)利要求書的范圍內(nèi)的系統(tǒng)、方法和設(shè)備的各個(gè)實(shí)施例各自具有若干方面,其中這些方面中沒有哪個(gè)單個(gè)方面單獨(dú)地負(fù)責(zé)在此所描述的屬性。在不限制所附權(quán)利要求書的范圍的情況下,在考慮本公開之后,并且具體地在考慮標(biāo)題為“具體實(shí)施方式”的部分之后,人們將理解如何使用各種實(shí)施例的各方面來使減小存儲(chǔ)設(shè)備的聲明容量成為可能。一方面,檢測(cè)用于減小存儲(chǔ)系統(tǒng)中的存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā),并且根據(jù)檢測(cè)到的改善觸發(fā)來執(zhí)行用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程。
附圖說明
為了可以更詳細(xì)地理解本公開,可參考各個(gè)實(shí)施例的特征以產(chǎn)生更具體的說明,所述實(shí)施例中的一些被展示在附圖中。然而,附圖僅展示了本公開的相關(guān)特征,并且因此不應(yīng)被認(rèn)為是限制性的,因?yàn)檎f明書可以允許其他有效的特征。
圖1A是框圖,展示了根據(jù)一些實(shí)施例的數(shù)據(jù)存儲(chǔ)系統(tǒng)的實(shí)施方式。
圖1B是框圖,展示了根據(jù)一些實(shí)施例的數(shù)據(jù)存儲(chǔ)系統(tǒng)的實(shí)施方式。
圖1C是框圖,展示了根據(jù)一些實(shí)施例的數(shù)據(jù)存儲(chǔ)系統(tǒng)的實(shí)施方式。
圖2A-1是框圖,展示了根據(jù)一些實(shí)施例的管理模塊的實(shí)施方式。
圖2A-2是框圖,展示了根據(jù)一些實(shí)施例的管理模塊的實(shí)施方式。
圖2B-1是框圖,展示了根據(jù)一些實(shí)施例的系統(tǒng)管理模塊的實(shí)施方式。
圖2B-2是框圖,展示了根據(jù)一些實(shí)施例的系統(tǒng)管理模塊的實(shí)施方式。
圖2C-1是框圖,展示了根據(jù)一些實(shí)施例的集群管理模塊的實(shí)施方式。
圖2C-2是框圖,展示了根據(jù)一些實(shí)施例的集群管理模塊的實(shí)施方式。
圖2D是框圖,展示了根據(jù)一些實(shí)施例的包括在圖2A-1和圖2A-2中的改善模塊的實(shí)施方式。
圖3是根據(jù)一些實(shí)施例的邏輯地址空間并且更確切地邏輯塊地址(LBA)空間的框圖。
圖4是根據(jù)一些實(shí)施例的映射表和物理地址空間的框圖。
圖5A是根據(jù)一些實(shí)施例的可以在單級(jí)閃存單元(SLC)中發(fā)現(xiàn)的電壓分布隨時(shí)間推移的預(yù)知圖。
圖5B是根據(jù)一些實(shí)施例的可以在多級(jí)閃存單元(MLC)中發(fā)現(xiàn)的電壓分布隨時(shí)間推移的預(yù)知圖。
圖6展示了根據(jù)一些實(shí)施例的管理存儲(chǔ)系統(tǒng)的方法的流程圖表示。
圖7A-7D展示了根據(jù)一些實(shí)施例的管理存儲(chǔ)系統(tǒng)的方法的流程圖表示。
圖8A至圖8C展示了根據(jù)一些實(shí)施例的管理存儲(chǔ)系統(tǒng)的方法的流程圖表示。
圖9A至圖9C展示了根據(jù)一些實(shí)施例的管理存儲(chǔ)系統(tǒng)的方法的流程圖表示。
根據(jù)慣例,附圖中展示的各種特征不必按比例繪制。因此,為了清晰起見,不同特征的尺寸可以被任意放大或減小。此外,一些附圖可能沒有描繪給定系統(tǒng)、方法或設(shè)備的所有部件。最后,貫穿說明書和附圖,相同的參考數(shù)字可以用來表示相似的特征。
具體實(shí)施方式
當(dāng)多級(jí)閃存單元已經(jīng)達(dá)到其磨損極限時(shí),它通常仍具有足以儲(chǔ)存數(shù)量減少的電荷量的電荷保持能力。情況經(jīng)常為,大多數(shù)擦除和重新編程周期可以在具有存儲(chǔ)數(shù)據(jù)的完全恢復(fù)的磨損有限的多級(jí)閃存單元上執(zhí)行,條件是減少數(shù)量的電荷量被使用和被期望。例如,以3比特每單元模式(TLC)操作的閃存設(shè)備在被認(rèn)為磨損之前通常可以執(zhí)行500至1500次擦除和重新編程周期。然而,在所述時(shí)間點(diǎn),將通常仍具有足夠的電荷存儲(chǔ)能力來以單比特每單元模式(SLC)進(jìn)行操作,以在SLC磨損極限達(dá)到之前用于附加的10,000至20,000次擦除和重新編程周期。因此,如果允許閃存設(shè)備存儲(chǔ)較少的數(shù)據(jù),則所述閃存設(shè)備的壽命可被延長(zhǎng)。目前,存儲(chǔ)系統(tǒng)難以利用這個(gè)擴(kuò)展的能力,因?yàn)橛糜谕ㄟ^減小預(yù)留空間來管理其容量隨使用而降低的存儲(chǔ)設(shè)備并與所述存儲(chǔ)設(shè)備一起工作的存儲(chǔ)系統(tǒng)機(jī)制不能勝任。因此,期望用于管理并與這種存儲(chǔ)設(shè)備一起工作的機(jī)制,包括用于通知周圍系統(tǒng)其即將發(fā)生的(或迫近的)容量減小從而使得所述系統(tǒng)可以相應(yīng)地調(diào)整其操作的機(jī)制。可能地,具有其他形式的非易失性存儲(chǔ)器的存儲(chǔ)器設(shè)備可以從本文獻(xiàn)中所描述的那些機(jī)制相同或類似的機(jī)制中受益。
本文中所描述的各種實(shí)施例包括用于根據(jù)檢測(cè)到的改善觸發(fā)來減小存儲(chǔ)設(shè)備的聲明容量的系統(tǒng)、方法和/或設(shè)備。一些實(shí)施例包括用于根據(jù)存儲(chǔ)設(shè)備的一個(gè)或多個(gè)度量來檢測(cè)觸發(fā)條件并啟用與檢測(cè)到的觸發(fā)條件相關(guān)聯(lián)的改善過程的系統(tǒng)、方法和/或設(shè)備,所述改善過程用于減小所述存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量。
(I1)更確切地,一些實(shí)施例包括一種管理存儲(chǔ)系統(tǒng)的方法。在一些實(shí)施例中,所述方法包括:(1)檢測(cè)用于減小所述存儲(chǔ)系統(tǒng)的存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā);以及(2)根據(jù)所述檢測(cè)到的改善觸發(fā)來執(zhí)行用于減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的改善過程,所述執(zhí)行包括:變更所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的至少一部分的編碼格式,以及減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量。
(I1-1)在如I1所述的方法的一些實(shí)施例中,所述方法進(jìn)一步包括:(1)在檢測(cè)所述改善觸發(fā)之前,檢測(cè)所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的第一磨損狀況,其中,所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的總存儲(chǔ)容量包括聲明容量和預(yù)留空間;以及(2)響應(yīng)于檢測(cè)所述第一磨損狀況而執(zhí)行補(bǔ)救動(dòng)作,所述補(bǔ)救動(dòng)作減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的預(yù)留空間而不減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量。
(I1-2)在如I1-1所述的方法的一些實(shí)施例中,檢測(cè)所述改善觸發(fā)包括檢測(cè)不同于所述第一磨損狀況的第二磨損狀況。
(I2)在如I1或I1-1或I1-2所述的方法的一些實(shí)施例中,所述檢測(cè)、所述執(zhí)行、或所述檢測(cè)和所述執(zhí)行兩者由所述存儲(chǔ)設(shè)備執(zhí)行。
(I3)在如I1或I1-1或I1-2所述的方法的一些實(shí)施例中,所述檢測(cè)、所述執(zhí)行、或所述檢測(cè)和所述執(zhí)行兩者由所述存儲(chǔ)系統(tǒng)的不同于所述存儲(chǔ)設(shè)備的一個(gè)或多個(gè)子系統(tǒng)執(zhí)行。
(I4)在如I1或I1-1或I1-2所述的方法的一些實(shí)施例中,所述檢測(cè)、所述執(zhí)行、或所述檢測(cè)和所述執(zhí)行兩者由主機(jī)執(zhí)行。
(I5)在如I4所述的方法的一些實(shí)施例中,所述主機(jī)包括客戶端,代表所述客戶端而將數(shù)據(jù)存儲(chǔ)在所述存儲(chǔ)系統(tǒng)中。
(I6)在如I4所述的方法的一些實(shí)施例中,所述主機(jī)包括所述存儲(chǔ)系統(tǒng)的存儲(chǔ)系統(tǒng)控制器。
(I7)在如I4所述的方法的一些實(shí)施例中,所述主機(jī)包括所述存儲(chǔ)系統(tǒng)的集群控制器。
(I8)在如I1至I7中任一項(xiàng)所述的方法的一些實(shí)施例中,變更所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的至少一部分的所述編碼格式包括根據(jù)所述改善過程的一個(gè)或多個(gè)參數(shù)來變更所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的至少一部分的所述編碼格式。
(I9)在如I1至I8中任一項(xiàng)所述的方法的一些實(shí)施例中,變更所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的至少一部分的所述編碼格式包括將所述編碼格式從更高密度物理編碼格式變更成更低密度物理編碼格式。
(I10)在如I1至I9中任一項(xiàng)所述的方法的一些實(shí)施例中,變更所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的至少一部分的所述編碼格式包括將每存儲(chǔ)器單元狀態(tài)數(shù)從更高狀態(tài)數(shù)變更成更低狀態(tài)數(shù)。
(I11)在如I1至I10中任一項(xiàng)所述的方法的一些實(shí)施例中,變更所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的至少一部分的所述編碼格式包括將所述編碼格式從三層單元(TLC)格式變更成多層單元(MLC)格式。
(I12)在如I1至I11中任一項(xiàng)所述的方法的一些實(shí)施例中,變更所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的至少一部分的所述編碼格式包括將所述編碼格式從三層單元(TLC)格式變更成單層單元(SLC)格式。
(I13)在如I1至I12中任一項(xiàng)所述的方法的一些實(shí)施例中,變更所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的至少一部分的所述編碼格式包括將所述編碼格式從多層單元(MLC)格式變更成單層單元(SLC)格式。
(I14)在如I1至I13中任一項(xiàng)所述的方法的一些實(shí)施例中,執(zhí)行用于減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述改善過程包括減少對(duì)所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的利用。
(I15)在如I1至I14中任一項(xiàng)所述的方法的一些實(shí)施例中,變更所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的至少一部分的所述編碼格式包括變更所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的多個(gè)存儲(chǔ)器部分中的存儲(chǔ)器部分的所述編碼格式。
(I16)在如I1至I15中任一項(xiàng)所述的方法的一些實(shí)施例中,變更所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的至少一部分的所述編碼格式包括變更所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的所有客戶端數(shù)據(jù)的所述編碼格式。
(I17)在如I1至I16中任一項(xiàng)所述的方法的一些實(shí)施例中,執(zhí)行用于減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述改善過程進(jìn)一步包括通告所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的減小的聲明容量。
(I18)在如I1至I17中任一項(xiàng)所述的方法的一些實(shí)施例中,所述方法進(jìn)一步包括(1)在開始執(zhí)行用于減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述改善過程之后,檢測(cè)用于中止對(duì)所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述減小的指示;以及(2)響應(yīng)于檢測(cè)用于中止對(duì)所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述減小的所述指示而中止執(zhí)行用于減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述改善過程。
(I19)在如I1至I18中任一項(xiàng)所述的方法的一些實(shí)施例中,所述存儲(chǔ)設(shè)備包括一個(gè)或多個(gè)閃存設(shè)備。
(I20)在另一方面,一種存儲(chǔ)設(shè)備包括:(1)非易失性存儲(chǔ)器;(2)一個(gè)或多個(gè)處理器;以及(3)控制器存儲(chǔ)器,所述控制器存儲(chǔ)器存儲(chǔ)有一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序當(dāng)由所述一個(gè)或多個(gè)處理器執(zhí)行時(shí)使所述存儲(chǔ)設(shè)備執(zhí)行本文中所描述的方法I1至I19中的任何方法或控制對(duì)其的執(zhí)行。
(I22)在又另一方面,以上所描述的方法I1至I19中的任何方法由存儲(chǔ)設(shè)備執(zhí)行,所述存儲(chǔ)設(shè)備包括用于執(zhí)行本文中所描述的方法中的任何方法的裝置。
(I24)在又另一方面,一種存儲(chǔ)系統(tǒng)包括:(1)存儲(chǔ)介質(zhì)(例如,包括如閃存設(shè)備等一個(gè)或多個(gè)非易失性存儲(chǔ)設(shè)備);(2)一個(gè)或多個(gè)處理器;以及(3)存儲(chǔ)器,所述存儲(chǔ)器存儲(chǔ)有一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序當(dāng)由所述一個(gè)或多個(gè)處理器執(zhí)行時(shí)使所述存儲(chǔ)系統(tǒng)執(zhí)行本文中所描述的方法I1至I19中的任何方法或控制對(duì)其的執(zhí)行。
(I25)在又另一方面,一些實(shí)施例包括一種非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有被配置成由主機(jī)系統(tǒng)的一個(gè)或多個(gè)處理器執(zhí)行的一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序包括用于執(zhí)行本文中所描述的方法I1至I19中的任何方法的指令。
(I26)在又另一方面,一種存儲(chǔ)系統(tǒng)包括:(1)一個(gè)或多個(gè)存儲(chǔ)設(shè)備;(2)一個(gè)或多個(gè)子系統(tǒng),所述一個(gè)或多個(gè)子系統(tǒng)具有一個(gè)或多個(gè)處理器;以及(3)存儲(chǔ)器,所述存儲(chǔ)器存儲(chǔ)有一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序當(dāng)由所述一個(gè)或多個(gè)處理器執(zhí)行時(shí)使所述一個(gè)或多個(gè)子系統(tǒng)執(zhí)行本文中所描述的方法I1至I19中的任何方法或控制對(duì)其的執(zhí)行。
(I28)在又另一方面,一種主機(jī)系統(tǒng)包括:(1)接口,所述接口用于可操作地耦合至存儲(chǔ)系統(tǒng);(2)一個(gè)或多個(gè)處理器;以及(3)控制器存儲(chǔ)器,所述控制器存儲(chǔ)器存儲(chǔ)有一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序當(dāng)由所述一個(gè)或多個(gè)處理器執(zhí)行時(shí)使所述主機(jī)系統(tǒng)執(zhí)行本文中所描述的方法I1至I19中的任何方法或控制對(duì)其的執(zhí)行。
(K1)更確切地,一些實(shí)施例包括一種管理存儲(chǔ)系統(tǒng)的方法。在一些實(shí)施例中,所述方法包括:(1)檢測(cè)用于減小所述存儲(chǔ)系統(tǒng)的存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā);以及(2)根據(jù)所述檢測(cè)到的改善觸發(fā)來執(zhí)行用于減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的改善過程,所述執(zhí)行包括:從所述存儲(chǔ)設(shè)備中刪除主機(jī)使用的可丟棄數(shù)據(jù),以及減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量。
(K1-1)在如K1所述的方法的一些實(shí)施例中,所述方法進(jìn)一步包括:(1)在檢測(cè)所述改善觸發(fā)之前,檢測(cè)所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的第一磨損狀況,其中,所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的總存儲(chǔ)容量包括聲明容量和預(yù)留空間;以及(2)響應(yīng)于檢測(cè)所述第一磨損狀況而執(zhí)行補(bǔ)救動(dòng)作,所述補(bǔ)救動(dòng)作減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的預(yù)留空間而不減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量。
(K1-2)在如K1-1所述的方法的一些實(shí)施例中,檢測(cè)所述改善觸發(fā)包括檢測(cè)不同于所述第一磨損狀況的第二磨損狀況。
(K2)在如K1或K1-1或K1-2所述的方法的一些實(shí)施例中,所述主機(jī)包括客戶端,代表所述客戶端而將數(shù)據(jù)存儲(chǔ)在所述存儲(chǔ)系統(tǒng)中。
(K3)在如K1或K1-1或K1-2所述的方法的一些實(shí)施例中,所述主機(jī)包括所述存儲(chǔ)系統(tǒng)的存儲(chǔ)系統(tǒng)控制器。
(K4)在如K1或K1-1或K1-2所述的方法的一些實(shí)施例中,所述主機(jī)包括所述存儲(chǔ)系統(tǒng)的集群控制器。
(K5)在如K1至K4中任一項(xiàng)所述的方法的一些實(shí)施例中,所述檢測(cè)、所述執(zhí)行、或所述檢測(cè)和所述執(zhí)行兩者由所述存儲(chǔ)設(shè)備執(zhí)行。
(K6)在如K1至K4中任一項(xiàng)所述的方法的一些實(shí)施例中,所述檢測(cè)、所述執(zhí)行、或所述檢測(cè)和所述執(zhí)行兩者由所述存儲(chǔ)系統(tǒng)的不同于所述存儲(chǔ)設(shè)備的一個(gè)或多個(gè)子系統(tǒng)執(zhí)行。
(K7)在如K1至K4中任一項(xiàng)所述的方法的一些實(shí)施例中,所述檢測(cè)、所述執(zhí)行、或所述檢測(cè)和所述執(zhí)行兩者由所述主機(jī)執(zhí)行。
(K8)在如K1至K7中任一項(xiàng)所述的方法的一些實(shí)施例中,刪除所述主機(jī)使用的可丟棄數(shù)據(jù)包括根據(jù)所述改善過程的一個(gè)或多個(gè)參數(shù)來刪除所述主機(jī)使用的可丟棄數(shù)據(jù)。
(K9)在如K1至K8中任一項(xiàng)所述的方法的一些實(shí)施例中,刪除所述主機(jī)使用的可丟棄數(shù)據(jù)包括刪除臨時(shí)數(shù)據(jù)。
(K10)在如K1至K9中任一項(xiàng)所述的方法的一些實(shí)施例中,刪除所述主機(jī)使用的可丟棄數(shù)據(jù)包括刪除在需要時(shí)可以重建的數(shù)據(jù)。
(K11)在如K1至K10中任一項(xiàng)所述的方法的一些實(shí)施例中,刪除所述主機(jī)使用的可丟棄數(shù)據(jù)包括刪除數(shù)據(jù)快照。
(K12)在如K1至K11中任一項(xiàng)所述的方法的一些實(shí)施例中,刪除所述主機(jī)使用的可丟棄數(shù)據(jù)包括刪除所述主機(jī)預(yù)標(biāo)記為可丟棄數(shù)據(jù)的數(shù)據(jù)。
(K13)在如K1至K12中任一項(xiàng)所述的方法的一些實(shí)施例中,刪除所述主機(jī)使用的可丟棄數(shù)據(jù)包括:使映射表的與所述可丟棄數(shù)據(jù)相關(guān)聯(lián)的一個(gè)或多個(gè)邏輯地址條目無效,所述映射表用于將邏輯地址空間中的邏輯地址轉(zhuǎn)換成所述存儲(chǔ)設(shè)備的物理地址空間中的物理地址。
(K14)在如K13所述的方法的一些實(shí)施例中,減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量包括使一定數(shù)量的邏輯地址對(duì)所述主機(jī)不可用,所述數(shù)量小于或等于與所述無效邏輯地址條目相對(duì)應(yīng)的邏輯地址的數(shù)量。
(K15)在如K1至K14中任一項(xiàng)所述的方法的一些實(shí)施例中,執(zhí)行用于減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述改善過程進(jìn)一步包括通告所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的減小的聲明容量。
(K16)在如K1至K15中任一項(xiàng)所述的方法的一些實(shí)施例中,所述方法進(jìn)一步包括(1)在開始執(zhí)行用于減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述改善過程之后,檢測(cè)用于中止對(duì)所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述減小的指示;以及(2)響應(yīng)于檢測(cè)用于中止對(duì)所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述減小的所述指示而中止執(zhí)行用于減小所述存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述改善過程。
(K17)在如K1至K16中任一項(xiàng)所述的方法的一些實(shí)施例中,所述存儲(chǔ)設(shè)備包括一個(gè)或多個(gè)閃存設(shè)備。
(K18)在另一方面,一種存儲(chǔ)設(shè)備包括:(1)非易失性存儲(chǔ)器;(2)一個(gè)或多個(gè)處理器;以及(3)控制器存儲(chǔ)器,所述控制器存儲(chǔ)器存儲(chǔ)有一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序當(dāng)由所述一個(gè)或多個(gè)處理器執(zhí)行時(shí)使所述存儲(chǔ)設(shè)備執(zhí)行本文中所描述的方法K1至K17中的任何方法或控制對(duì)其的執(zhí)行。
(K20)在又另一方面,以上所描述的方法K1至K17中的任何方法由存儲(chǔ)設(shè)備執(zhí)行,所述存儲(chǔ)設(shè)備包括用于執(zhí)行本文中所描述的方法中的任何方法的裝置。
(K22)在又另一方面,一種存儲(chǔ)系統(tǒng)包括:(1)存儲(chǔ)介質(zhì)(例如,包括如閃存設(shè)備等一個(gè)或多個(gè)非易失性存儲(chǔ)設(shè)備);(2)一個(gè)或多個(gè)處理器;以及(3)存儲(chǔ)器,所述存儲(chǔ)器存儲(chǔ)有一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序當(dāng)由所述一個(gè)或多個(gè)處理器執(zhí)行時(shí)使所述存儲(chǔ)系統(tǒng)執(zhí)行本文中所描述的方法K1至K17中的任何方法或控制對(duì)其的執(zhí)行。
(K23)在又另一方面,一些實(shí)施例包括一種非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有被配置成由存儲(chǔ)設(shè)備的一個(gè)或多個(gè)處理器執(zhí)行的一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序包括用于執(zhí)行本文中所描述的方法K1至K17中的任何方法的指令。
(K24)在又另一方面,一種存儲(chǔ)系統(tǒng)包括:(1)一個(gè)或多個(gè)存儲(chǔ)設(shè)備;(2)一個(gè)或多個(gè)子系統(tǒng),所述一個(gè)或多個(gè)子系統(tǒng)具有一個(gè)或多個(gè)處理器;以及(3)存儲(chǔ)器,所述存儲(chǔ)器存儲(chǔ)有一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序當(dāng)由所述一個(gè)或多個(gè)處理器執(zhí)行時(shí)使所述一個(gè)或多個(gè)子系統(tǒng)執(zhí)行本文中所描述的方法K1至K17中的任何方法或控制對(duì)其的執(zhí)行。
(K26)在又另一方面,一種主機(jī)系統(tǒng)包括:(1)接口,所述接口用于可操作地耦合至存儲(chǔ)系統(tǒng);(2)一個(gè)或多個(gè)處理器;以及(3)控制器存儲(chǔ)器,所述控制器存儲(chǔ)器存儲(chǔ)有一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序當(dāng)由所述一個(gè)或多個(gè)處理器執(zhí)行時(shí)使所述主機(jī)系統(tǒng)執(zhí)行本文中所描述的方法K1至K17中的任何方法或控制對(duì)其的執(zhí)行。
在又另一方面,一些實(shí)施例包括一種非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有被配置成由主機(jī)系統(tǒng)的一個(gè)或多個(gè)處理器執(zhí)行的一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序包括用于執(zhí)行在此所描述的方法中的任何方法的指令。
(L1)更確切地,一些實(shí)施例包括一種管理存儲(chǔ)系統(tǒng)的方法。在一些實(shí)施例中,所述方法包括:(1)檢測(cè)用于減小所述存儲(chǔ)系統(tǒng)的第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā);以及(2)根據(jù)所述檢測(cè)到的改善觸發(fā)來執(zhí)行用于減小所述第一存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的改善過程,所述執(zhí)行包括:將主機(jī)使用的數(shù)據(jù)的一部分從所述存儲(chǔ)系統(tǒng)的所述第一存儲(chǔ)設(shè)備移動(dòng)到另一個(gè)存儲(chǔ)設(shè)備中,以及減小所述第一存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量。
(L1-1)在如L1所述的方法的一些實(shí)施例中,所述方法進(jìn)一步包括:(1)在檢測(cè)所述改善觸發(fā)之前,檢測(cè)所述第一存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的第一磨損狀況,其中,所述第一存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的總存儲(chǔ)容量包括聲明容量和預(yù)留空間;以及(2)響應(yīng)于檢測(cè)所述第一磨損狀況而執(zhí)行補(bǔ)救動(dòng)作,所述補(bǔ)救動(dòng)作減小所述第一存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的預(yù)留空間而不減小所述第一存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量。
(L1-2)在如L1-1所述的方法的一些實(shí)施例中,檢測(cè)所述改善觸發(fā)包括檢測(cè)不同于所述第一磨損狀況的第二磨損狀況。
(L2)在如L1或L1-1或L1-2所述的方法的一些實(shí)施例中,所述主機(jī)包括客戶端,代表所述客戶端而將數(shù)據(jù)存儲(chǔ)在所述存儲(chǔ)系統(tǒng)中。
(L3)在如L1或L1-1或L1-2所述的方法的一些實(shí)施例中,所述主機(jī)包括所述存儲(chǔ)系統(tǒng)的存儲(chǔ)系統(tǒng)控制器。
(L4)在如L1或L1-1或L1-2所述的方法的一些實(shí)施例中,所述主機(jī)包括所述存儲(chǔ)系統(tǒng)的集群控制器。
(L5)在如L1至L4中任一項(xiàng)所述的方法的一些實(shí)施例中,所述檢測(cè)、所述執(zhí)行、或所述檢測(cè)和所述執(zhí)行兩者由所述主機(jī)執(zhí)行。
(L6)在如L1至L4中任一項(xiàng)所述的方法的一些實(shí)施例中,所述檢測(cè)、所述執(zhí)行、或所述檢測(cè)和所述執(zhí)行兩者由所述存儲(chǔ)系統(tǒng)的不同于所述存儲(chǔ)設(shè)備的一個(gè)或多個(gè)子系統(tǒng)執(zhí)行。
(L7)在如L1至L6中任一項(xiàng)所述的方法的一些實(shí)施例中,移動(dòng)所述主機(jī)使用的數(shù)據(jù)的所述部分包括根據(jù)所述改善過程的一個(gè)或多個(gè)參數(shù)來移動(dòng)所述主機(jī)使用的數(shù)據(jù)的所述部分。
(L8)在如L1至L7中任一項(xiàng)所述的方法的一些實(shí)施例中,移動(dòng)所述主機(jī)使用的數(shù)據(jù)的所述部分包括移動(dòng)與一個(gè)或多個(gè)虛擬邏輯地址相關(guān)聯(lián)的數(shù)據(jù),包括更新虛擬地址映射模塊。
(L9)在如L1至L8中任一項(xiàng)所述的方法的一些實(shí)施例中,移動(dòng)所述數(shù)據(jù)的所述部分包括選擇該數(shù)據(jù)的一個(gè)或多個(gè)邏輯地址以便使性能退化最小化。
(L10)在如L1至L8中任一項(xiàng)所述的方法的一些實(shí)施例中,移動(dòng)所述數(shù)據(jù)的所述部分包括選擇該數(shù)據(jù)的一個(gè)或多個(gè)邏輯地址以便使垃圾收集開銷最小化。
(L11)在如L8至L10中任一項(xiàng)所述的方法的一些實(shí)施例中,執(zhí)行用于減小所述第一存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述改善過程進(jìn)一步包括:使映射表的與所述數(shù)據(jù)的所述部分相關(guān)聯(lián)的一個(gè)或多個(gè)邏輯地址條目無效,所述映射表用于將邏輯地址空間中的邏輯地址轉(zhuǎn)換成所述第一存儲(chǔ)設(shè)備的物理地址空間中的物理地址。
(L12)在如L11所述的方法的一些實(shí)施例中,減小所述第一存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量包括對(duì)與從所述第一存儲(chǔ)設(shè)備處移動(dòng)的數(shù)據(jù)的所述部分相關(guān)聯(lián)的邏輯地址進(jìn)行修整。
(L13)在如L1至L12中任一項(xiàng)所述的方法的一些實(shí)施例中,執(zhí)行用于減小所述第一存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述改善過程進(jìn)一步包括通告所述第一存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的減小的聲明容量。
(L14)在如L1至L13中任一項(xiàng)所述的方法的一些實(shí)施例中,所述方法進(jìn)一步包括:(1)在開始執(zhí)行用于減小所述第一存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述改善過程之后,檢測(cè)用于中止對(duì)所述第一存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述減小的指示;以及(2)響應(yīng)于檢測(cè)用于中止對(duì)所述第一存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述減小的所述指示而中止執(zhí)行用于減小所述第一存儲(chǔ)設(shè)備的所述非易失性存儲(chǔ)器的聲明容量的所述改善過程。
(L15)在如L1至L14中任一項(xiàng)所述的方法的一些實(shí)施例中,所述第一存儲(chǔ)設(shè)備包括一個(gè)或多個(gè)閃存設(shè)備。
(L16)在另一方面,一種主機(jī)系統(tǒng)包括:(1)接口,所述接口用于可操作地耦合至存儲(chǔ)系統(tǒng);(2)一個(gè)或多個(gè)處理器;以及(3)控制器存儲(chǔ)器,所述控制器存儲(chǔ)器存儲(chǔ)有一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序當(dāng)由所述一個(gè)或多個(gè)處理器執(zhí)行時(shí)使所述第一存儲(chǔ)設(shè)備執(zhí)行本文中所描述的方法L1至L15中的任何方法或控制對(duì)其的執(zhí)行。
(L18)在又另一方面,以上所描述的方法L1至L15中的任何方法由系統(tǒng)執(zhí)行,所述系統(tǒng)包括用于執(zhí)行本文中所描述的方法中的任何方法的裝置。
(L20)在又另一方面,一種存儲(chǔ)系統(tǒng)包括:(1)存儲(chǔ)介質(zhì)(例如,包括如閃存設(shè)備等一個(gè)或多個(gè)非易失性存儲(chǔ)設(shè)備);(2)一個(gè)或多個(gè)處理器;以及(3)存儲(chǔ)器,所述存儲(chǔ)器存儲(chǔ)有一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序當(dāng)由所述一個(gè)或多個(gè)處理器執(zhí)行時(shí)使所述存儲(chǔ)系統(tǒng)執(zhí)行本文中所描述的方法L1至L15中的任何方法或控制對(duì)其的執(zhí)行。
為了提供對(duì)附圖中展示的示例實(shí)施例的透徹理解,在此描述了大量細(xì)節(jié)。然而,可以在沒有許多特定細(xì)節(jié)的情況下實(shí)踐一些實(shí)施例,并且權(quán)利要求書的范圍僅由在權(quán)利要求中具體記載的那些特征和方面限制。此外,并未對(duì)已知的方法、部件和電路進(jìn)行詳細(xì)描述,以免不必要模糊在此所描述的實(shí)施例的相關(guān)方面。
包括下述那些部件的數(shù)據(jù)存儲(chǔ)系統(tǒng)使用各種技術(shù)來避免由各種故障機(jī)制引起的數(shù)據(jù)丟失,包括存儲(chǔ)介質(zhì)故障、通信故障以及系統(tǒng)和子系統(tǒng)級(jí)別故障。這些機(jī)制的共同特征是使用數(shù)據(jù)冗余來保護(hù)數(shù)據(jù)、來補(bǔ)償實(shí)際的或可能的數(shù)據(jù)誤差(例如,介質(zhì)誤差、丟失數(shù)據(jù)、傳輸誤差、無法訪問的數(shù)據(jù)等)。一類冗余機(jī)制已知為糾錯(cuò)碼(ECC)。各種類型的糾錯(cuò)碼是眾所周知的(例如,BCH、LDPC、羅門碼等),同樣用于將其與受保護(hù)的數(shù)據(jù)一起存儲(chǔ)或結(jié)合所述數(shù)據(jù)一起存儲(chǔ)的各種方案也是眾所周知的。另一類冗余機(jī)制是擦除碼(例如,金字塔碼、噴泉碼、部分MDS、本地可修復(fù)碼、簡(jiǎn)單再生碼等)。
另一類型或級(jí)別的冗余機(jī)制通常被稱為RAID(獨(dú)立磁盤冗余陣列),即使當(dāng)存儲(chǔ)介質(zhì)在傳統(tǒng)意義上不是“磁盤”時(shí)。存在多種形式的RAID或RAID方案,提供不同級(jí)別的數(shù)據(jù)保護(hù)(例如,RAID-1、RAID-5、RAID-6、RAID-10等)。通常,在使用RAID的系統(tǒng)中,存儲(chǔ)在多個(gè)不同存儲(chǔ)位置中的數(shù)據(jù)“條”被處理成集合,并且存儲(chǔ)由充足的冗余數(shù)據(jù),從而使得條中本來已經(jīng)丟失的任何數(shù)據(jù)在任何一個(gè)存儲(chǔ)位置部分或完全故障時(shí)使用所述條中的其他數(shù)據(jù)(可能包括冗余數(shù)據(jù))被恢復(fù)。
第三類冗余機(jī)制是將數(shù)據(jù)復(fù)制到通常在不同故障域中的多個(gè)存儲(chǔ)位置。實(shí)現(xiàn)這種類型的冗余機(jī)制的系統(tǒng)通常存儲(chǔ)每個(gè)數(shù)據(jù)集或數(shù)據(jù)項(xiàng)的三個(gè)或更多個(gè)副本。通常,要么每個(gè)副本都是在來自其他副本的不同的故障域中,要么至少一個(gè)副本是在來自其他副本的不同的故障域中。
下述實(shí)施例結(jié)合上述數(shù)據(jù)冗余機(jī)制一起工作(單獨(dú)地或組合地使用)。下述某些數(shù)據(jù)存儲(chǔ)系統(tǒng)具有被設(shè)計(jì)成用于實(shí)現(xiàn)具體冗余機(jī)制的架構(gòu)或配置。此外,下述某些實(shí)施例可以單獨(dú)地或者組合地利用上述多于一個(gè)的冗余機(jī)制。此外,某些實(shí)施例能夠同時(shí)存儲(chǔ)用不同冗余機(jī)制編碼的數(shù)據(jù)。此外,即使在單機(jī)制內(nèi),參數(shù)的選擇(即,相對(duì)于數(shù)據(jù)大小的碼字大小)可以動(dòng)態(tài)地變化。因此,更改冗余機(jī)制直接影響存儲(chǔ)的數(shù)據(jù)量并進(jìn)而影響利用。
圖1A是框圖,展示了根據(jù)一些實(shí)施例的數(shù)據(jù)存儲(chǔ)系統(tǒng)100。盡管展示了一些示例特征,但是,為簡(jiǎn)潔起見并且以免不必要模糊在此所公開的示例實(shí)施例的相關(guān)方面,沒有展示各種其他特征。為此,作為非限制性示例,數(shù)據(jù)存儲(chǔ)系統(tǒng)100包括存儲(chǔ)設(shè)備120,所述存儲(chǔ)設(shè)備包括存儲(chǔ)控制器124和存儲(chǔ)介質(zhì)130,并且用于結(jié)合計(jì)算系統(tǒng)110一起使用或包括計(jì)算系統(tǒng)110。在一些實(shí)施例中,存儲(chǔ)介質(zhì)130是單個(gè)閃存設(shè)備,而在其他實(shí)施例中,存儲(chǔ)介質(zhì)130包括多個(gè)閃存設(shè)備。在一些實(shí)施例中,存儲(chǔ)介質(zhì)130是NAND類型閃存或NOR類型閃存。在一些實(shí)施例中,如在此進(jìn)一步定義的,存儲(chǔ)介質(zhì)130包括一個(gè)或多個(gè)三維(3D)存儲(chǔ)器設(shè)備。進(jìn)一步地,在一些實(shí)施例中,存儲(chǔ)控制器124是固態(tài)驅(qū)動(dòng)器(SSD)控制器。然而,根據(jù)各種各樣的實(shí)施例的方面,可以包括其他類型的存儲(chǔ)介質(zhì)(例如,PCRAM、ReRAM、STT-RAM等)。在一些實(shí)施例中,閃存設(shè)備包括一個(gè)或多個(gè)閃存管芯、一個(gè)或多個(gè)閃存封裝體、一個(gè)或多個(gè)閃存信道等。在一些實(shí)施例中,數(shù)據(jù)存儲(chǔ)系統(tǒng)100可以包括一個(gè)或多個(gè)存儲(chǔ)設(shè)備120。
計(jì)算機(jī)系統(tǒng)110通過數(shù)據(jù)連接101耦合至存儲(chǔ)控制器124。然而,在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)110包括作為部件和/或子系統(tǒng)的存儲(chǔ)控制器124或存儲(chǔ)控制器124的一部分。例如,在一些實(shí)施例中,存儲(chǔ)控制器124的部分或全部功能是由在計(jì)算機(jī)系統(tǒng)110上執(zhí)行的軟件實(shí)現(xiàn)的。計(jì)算機(jī)系統(tǒng)110可以是任何合適的計(jì)算機(jī)設(shè)備,如計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、上網(wǎng)本、因特網(wǎng)信息站、個(gè)人數(shù)字助理、移動(dòng)電話、智能電話、游戲設(shè)備、計(jì)算機(jī)服務(wù)器、或任何其他計(jì)算設(shè)備。計(jì)算機(jī)系統(tǒng)110有時(shí)被稱為主機(jī)、主機(jī)系統(tǒng)、客戶端或客戶端系統(tǒng)。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)110是服務(wù)器系統(tǒng),如數(shù)據(jù)中心中的服務(wù)器系統(tǒng)。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)110包括一個(gè)或多個(gè)處理器、一種或多種類型的存儲(chǔ)器、顯示器和/或其他用戶接口部件,如鍵盤、觸屏顯示器、鼠標(biāo)、軌跡板、數(shù)字相機(jī)和/或用于增加功能的任何數(shù)量的補(bǔ)充設(shè)備。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)110不具有顯示器和其他用戶接口部件。
存儲(chǔ)介質(zhì)130通過連接103耦合至存儲(chǔ)控制器124。連接103有時(shí)被稱為數(shù)據(jù)連接,但是通常傳達(dá)除數(shù)據(jù)外的命令,并且可選地傳達(dá)元數(shù)據(jù)、糾錯(cuò)信息和/或除了將要存儲(chǔ)在存儲(chǔ)介質(zhì)130中的數(shù)據(jù)值以及從存儲(chǔ)介質(zhì)130中讀出的數(shù)據(jù)值之外的其他信息。在一些實(shí)施例中,然而,存儲(chǔ)控制器124和存儲(chǔ)介質(zhì)130被包括在相同設(shè)備中(即,一體化設(shè)備)作為其部件。此外,在一些實(shí)施例中,存儲(chǔ)控制器124和存儲(chǔ)介質(zhì)130嵌入在主機(jī)設(shè)備(例如,計(jì)算機(jī)系統(tǒng)110)中,如移動(dòng)設(shè)備、平板計(jì)算機(jī)、其他計(jì)算機(jī)或計(jì)算機(jī)控制設(shè)備,并且在此所描述的方法至少部分地由嵌入的存儲(chǔ)器控制器執(zhí)行。存儲(chǔ)介質(zhì)130可以包括任意數(shù)量(即,一個(gè)或多個(gè))的存儲(chǔ)設(shè)備,包括但不限于,非易失性半導(dǎo)體存儲(chǔ)設(shè)備,如(多個(gè))閃存設(shè)備。例如,(多個(gè))閃存設(shè)備可以被配置成用于適合于如云計(jì)算應(yīng)用、數(shù)據(jù)庫(kù)應(yīng)用的企業(yè)存儲(chǔ)設(shè)備、主存儲(chǔ)設(shè)備和/或輔助存儲(chǔ)設(shè)備,或者于緩存在輔助存儲(chǔ)設(shè)備(如硬盤驅(qū)動(dòng)器)中所存儲(chǔ)(或?qū)⒁鎯?chǔ))的數(shù)據(jù)。另外地或替代性地,(多個(gè))閃存設(shè)備還可以被配置成用于個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)和平板計(jì)算機(jī)的相對(duì)更小型應(yīng)用,如個(gè)人閃存驅(qū)動(dòng)器或硬盤替代。在一些實(shí)施例中,如在此進(jìn)一步定義的,存儲(chǔ)介質(zhì)130包括一個(gè)或多個(gè)三維(3D)存儲(chǔ)器設(shè)備。
存儲(chǔ)介質(zhì)130被劃分為多個(gè)可尋址且單獨(dú)可選的塊,如可選部分131。在一些實(shí)施例中,單獨(dú)可選塊是閃存設(shè)備中的最小尺寸可擦除單元。換言之,每個(gè)塊包含可同時(shí)擦除的最少數(shù)量的存儲(chǔ)器單元。每個(gè)塊通常被進(jìn)一步劃分為多個(gè)頁(yè)和/或字線,其中,每一頁(yè)或字線典型地是塊中的最小單獨(dú)可尋址(可讀)部分的實(shí)例。在一些實(shí)施例中(例如,使用某些類型的閃存),然而,數(shù)據(jù)集的最小單獨(dú)可尋址單元是作為頁(yè)的子集的扇區(qū)。也就是說,一個(gè)塊包括多頁(yè),每一頁(yè)包含多個(gè)扇區(qū),并且每個(gè)扇區(qū)是用于從閃存設(shè)備讀取數(shù)據(jù)的最小數(shù)據(jù)單元。
如以上指出的,當(dāng)非易失性半導(dǎo)體存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)密度總體增加時(shí),增加的存儲(chǔ)密度的缺點(diǎn)為所存儲(chǔ)的數(shù)據(jù)更傾向于被錯(cuò)誤地存儲(chǔ)和/或讀取。在一些實(shí)施例中,誤差控制編碼可以用于限制由電氣波動(dòng)、存儲(chǔ)介質(zhì)缺陷、操作狀況、設(shè)備歷史、讀寫電路等或這些以及各種其他因素的組合引入的不可校正的誤差數(shù)量。
在一些實(shí)施例中,存儲(chǔ)控制器124包括管理模塊121-1、主機(jī)接口129、存儲(chǔ)介質(zhì)I/O接口128以及(多個(gè))附加模塊125。存儲(chǔ)控制器124可以包括各種附加特征,為簡(jiǎn)潔起見并且以免模糊在此公開的示例實(shí)施例的相關(guān)特征,沒有展示所述附加特征,并且所述特征的不同安排是可能的。主機(jī)接口129通過數(shù)據(jù)連接101向計(jì)算機(jī)系統(tǒng)110提供接口。類似地,存儲(chǔ)介質(zhì)I/O 128提供用于通過連接103到達(dá)存儲(chǔ)介質(zhì)130的接口。在一些實(shí)施例中,存儲(chǔ)介質(zhì)I/O 128包括讀寫電路,所述讀寫電路包括能夠?qū)⒆x信號(hào)提供至存儲(chǔ)介質(zhì)130的電路(例如,針對(duì)NAND類型閃存的讀閾值電壓)。
在一些實(shí)施例中,管理模塊121-1包括被配置成用于執(zhí)行一個(gè)或多個(gè)程序中的指令(例如,在管理模塊121-1中)的一個(gè)或多個(gè)處理單元(CPU,有時(shí)還被稱為處理器)122-1。在一些實(shí)施例中,一個(gè)或多個(gè)CPU 122-1由在存儲(chǔ)控制器124的功能之內(nèi)(以及某些情況下之外)的一個(gè)或多個(gè)部件共享。管理模塊121-1耦合至主機(jī)接口129、(多個(gè))附加模塊125以及存儲(chǔ)介質(zhì)I/O 128,以便協(xié)調(diào)這些部件的操作。在一些實(shí)施例中,管理模塊121-1的一個(gè)或多個(gè)模塊在計(jì)算機(jī)系統(tǒng)110的管理模塊121-2中實(shí)現(xiàn)。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)110(未示出)的一個(gè)或多個(gè)處理器被配置成用于執(zhí)行一個(gè)或多個(gè)程序中的指令(例如,在管理模塊121-2中)。管理模塊121-2耦合至存儲(chǔ)設(shè)備120,以便管理存儲(chǔ)設(shè)備120的操作。
(多個(gè))附加模塊125耦合至存儲(chǔ)介質(zhì)I/O 128、主機(jī)接口129以及管理模塊121-1。舉例來講,(多個(gè))附加模塊125可以包括誤差控制模塊,用于限制在寫入存儲(chǔ)器或從存儲(chǔ)器讀取的過程中無意中引入數(shù)據(jù)中的不可校正的誤差的數(shù)量。在一些實(shí)施例中,(多個(gè))附加模塊125由管理模塊121-1的一個(gè)或多個(gè)CPU 122-1在軟件中執(zhí)行,并且,在其他實(shí)施例中,(多個(gè))附加模塊125全部地或部分地使用特殊用途電路實(shí)現(xiàn)(例如,以執(zhí)行編碼和解碼功能)。在一些實(shí)施例中,(多個(gè))附加模塊125全部地或部分地由在計(jì)算機(jī)系統(tǒng)110上執(zhí)行的軟件實(shí)現(xiàn)。
在一些實(shí)施例中,包括在(多個(gè))附加模塊125中的誤差控制模塊包括編碼器和解碼器。在一些實(shí)施例中,編碼器通過應(yīng)用誤差控制碼來對(duì)數(shù)據(jù)進(jìn)行編碼以產(chǎn)生碼字,所述碼字隨后被存儲(chǔ)在存儲(chǔ)介質(zhì)130中。當(dāng)從存儲(chǔ)介質(zhì)130中讀取編碼數(shù)據(jù)(例如,一個(gè)或多個(gè)碼字)時(shí),解碼器將解碼過程應(yīng)用于編碼數(shù)據(jù)以恢復(fù)所述數(shù)據(jù)并且在誤差控制碼的誤差校正能力范圍內(nèi)校正所述恢復(fù)數(shù)據(jù)中的誤差。本領(lǐng)域技術(shù)人員將理解的是,各種誤差控制碼具有不同的誤差檢測(cè)和校正能力,并且由于超出本披露范圍的原因,選擇特定的碼用于各種應(yīng)用。由此,本文不提供各種類型的誤差控制碼的詳盡回顧。此外,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,每一類或每一族誤差控制碼可以具有特定于所述一類或一族誤差控制碼的編碼和解碼算法。另一方面,一些算法可以至少在一定程度上用于對(duì)多個(gè)不同類或族的誤差控制碼進(jìn)行解碼。由此,為了簡(jiǎn)潔起見,在此不提供對(duì)本領(lǐng)域技術(shù)人員而言通??捎们乙阎母鞣N類型的編碼和解碼算法的詳盡描述。
在一些實(shí)施例中,在寫操作過程中,主機(jī)接口129從計(jì)算機(jī)系統(tǒng)110接收有待存儲(chǔ)在存儲(chǔ)介質(zhì)130中的數(shù)據(jù)。由主機(jī)接口129接收的數(shù)據(jù)可用于編碼器(例如,在(多個(gè))附加模塊125中),所述編碼器對(duì)所述數(shù)據(jù)進(jìn)行編碼以產(chǎn)生一個(gè)或多個(gè)碼字。所述一個(gè)或多個(gè)碼字可用于存儲(chǔ)介質(zhì)I/O 128,所述存儲(chǔ)介質(zhì)I/O 128以與所利用的存儲(chǔ)介質(zhì)的類型無關(guān)的方式將所述一個(gè)或多個(gè)碼字傳送至存儲(chǔ)介質(zhì)130。
在一些實(shí)施例中,當(dāng)計(jì)算機(jī)系統(tǒng)(主機(jī))110(例如,經(jīng)由數(shù)據(jù)連接101,或替代性地單獨(dú)的控制線或總線)將一個(gè)或多個(gè)主機(jī)讀命令發(fā)送至從存儲(chǔ)介質(zhì)130請(qǐng)求數(shù)據(jù)的存儲(chǔ)控制器124時(shí),發(fā)起讀操作。存儲(chǔ)控制器124經(jīng)由存儲(chǔ)介質(zhì)I/O 128將一個(gè)或多個(gè)讀訪問命令發(fā)送至存儲(chǔ)介質(zhì)130,以根據(jù)由所述一個(gè)或多個(gè)主機(jī)讀命令指定的存儲(chǔ)器位置(地址)獲取原始讀數(shù)據(jù)。存儲(chǔ)介質(zhì)I/O 128將原始讀數(shù)據(jù)(例如,包括一個(gè)或多個(gè)碼字)提供給解碼器(例如,在(多個(gè))附加模塊125中)。如果解碼成功,則解碼數(shù)據(jù)被提供給主機(jī)接口129,其中,解碼數(shù)據(jù)可用于計(jì)算機(jī)系統(tǒng)110。在一些實(shí)施例中,如果解碼不成功,則存儲(chǔ)控制器124可以采取多個(gè)補(bǔ)救動(dòng)作或提供不能解決誤差狀況的指示。
如以上所解釋的,存儲(chǔ)介質(zhì)(例如,存儲(chǔ)介質(zhì)130)被劃分為多個(gè)可尋址的且可單獨(dú)選擇的塊并且每個(gè)塊可選地(但典型地)被進(jìn)一步劃分為多個(gè)頁(yè)和/或字線和/或扇區(qū)。當(dāng)在塊基礎(chǔ)上執(zhí)行存儲(chǔ)介質(zhì)的擦除時(shí),在許多實(shí)施例中,存儲(chǔ)介質(zhì)的讀取和編程是在塊的更小子單元上執(zhí)行的(例如,在頁(yè)基礎(chǔ)、字線基礎(chǔ)或扇區(qū)基礎(chǔ)上)。在一些實(shí)施例中,塊的較小子單元由多個(gè)存儲(chǔ)器單元(例如,單級(jí)單元或多級(jí)單元)組成。在一些實(shí)施例中,編程是在整頁(yè)上執(zhí)行的。在一些實(shí)施例中,多級(jí)單元(MLC)NAND閃存通常每單元具有四個(gè)可能的狀態(tài),每單元產(chǎn)生兩比特信息。進(jìn)一步地,在一些實(shí)施例中,MLC NAND具有兩頁(yè)類型:(1)下頁(yè)(有時(shí)被稱為快頁(yè)),以及(2)上頁(yè)(有時(shí)被稱為慢頁(yè))。在一些實(shí)施例中,三級(jí)單元(TLC)NAND閃存每單元具有八個(gè)可能的狀態(tài),每單元產(chǎn)生三比特信息。盡管本文的描述示例性地使用TLC、MLC和SLC,本領(lǐng)域技術(shù)人員將理解的是,本文描述的實(shí)施例可以擴(kuò)展至每單元具有多于八個(gè)可能狀態(tài)的存儲(chǔ)器單元,每單元產(chǎn)生多于三比特的信息。
存儲(chǔ)介質(zhì)(即,TLC、MLC或SLC和/或所選的數(shù)據(jù)冗余機(jī)制)的編碼格式是當(dāng)數(shù)據(jù)實(shí)際被寫入存儲(chǔ)介質(zhì)中時(shí)所做的選擇。經(jīng)常,在本說明書中,描述了據(jù)說用于設(shè)置編碼格式、變更存儲(chǔ)介質(zhì)的編碼格式等的事件、狀況或過程。應(yīng)認(rèn)識(shí)的是,實(shí)際過程可以涉及多個(gè)步驟,例如,擦除存儲(chǔ)介質(zhì)之前的內(nèi)容,接著使用新編碼格式寫入數(shù)據(jù),并且這些操作時(shí)間上可以與所述初始化事件、狀況或過程分開。
舉例來講,如果數(shù)據(jù)按頁(yè)被寫入存儲(chǔ)介質(zhì),但所述存儲(chǔ)介質(zhì)以塊為單位被擦除,則所述存儲(chǔ)介質(zhì)中的頁(yè)可能包含無效數(shù)據(jù)(例如,過期數(shù)據(jù)),但那些頁(yè)不可被重寫,直到包含那些頁(yè)的整個(gè)塊被擦除。為了利用無效數(shù)據(jù)對(duì)頁(yè)進(jìn)行寫操作,所述塊中具有無效數(shù)據(jù)的頁(yè)(若有的話)被讀取并被重寫成新的塊,而舊的塊被擦除(或被放入隊(duì)列中以等待擦除)。這個(gè)過程被稱作垃圾收集。在垃圾收集之后,新塊包含具有無效數(shù)據(jù)的頁(yè)并且可以具有空頁(yè),所述空頁(yè)可用于新數(shù)據(jù)寫入,并且舊塊可被擦除以便可用于新數(shù)據(jù)寫入。因?yàn)殚W存僅可以被編程和擦除有限次數(shù),所以用于挑選(多個(gè))接下來的塊來進(jìn)行重寫和擦除的算法的效率對(duì)基于閃存的存儲(chǔ)系統(tǒng)的壽命和可靠性具有顯著影響。
圖1B是框圖,展示了根據(jù)一些實(shí)施例的數(shù)據(jù)存儲(chǔ)系統(tǒng)140。盡管展示了一些示例特征,但是,為簡(jiǎn)潔起見并且以免不必要模糊在此所公開的示例實(shí)施例的相關(guān)方面,沒有展示各種其他特征。為此,作為非限制性示例,數(shù)據(jù)存儲(chǔ)系統(tǒng)140(有時(shí)被稱為擴(kuò)大存儲(chǔ)系統(tǒng)、單節(jié)點(diǎn)存儲(chǔ)系統(tǒng)等)包括多個(gè)存儲(chǔ)設(shè)備160(例如,存儲(chǔ)設(shè)備160-1至160-m)和存儲(chǔ)系統(tǒng)控制器150,并且結(jié)合計(jì)算機(jī)系統(tǒng)142一起使用。在一些實(shí)施例中,存儲(chǔ)設(shè)備160包括管理模塊161(例如,存儲(chǔ)設(shè)備160-1包括管理模塊161-1并且存儲(chǔ)設(shè)備160-m包括管理模塊161-m)。以上關(guān)于存儲(chǔ)設(shè)備120(圖1A)和管理模塊121-1(圖1A)所描述的特征中的一些特征分別可應(yīng)用于存儲(chǔ)設(shè)備160和管理模塊161,并且為了簡(jiǎn)潔和簡(jiǎn)單起見,在此不重復(fù)所述細(xì)節(jié)。
計(jì)算機(jī)系統(tǒng)142通過連接141耦合至存儲(chǔ)系統(tǒng)控制器150。然而,在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)142包括作為部件和/或子系統(tǒng)的存儲(chǔ)系統(tǒng)控制器150的一部分或其整體。例如,在一些實(shí)施例中,存儲(chǔ)系統(tǒng)控制器150的部分或全部功能是由在計(jì)算機(jī)系統(tǒng)142上執(zhí)行的軟件實(shí)現(xiàn)的。計(jì)算機(jī)系統(tǒng)142可以是任何合適的計(jì)算機(jī)設(shè)備,如計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、上網(wǎng)本、因特網(wǎng)信息站、個(gè)人數(shù)字助理、移動(dòng)電話、智能電話、游戲設(shè)備、計(jì)算機(jī)服務(wù)器、或任何其他計(jì)算設(shè)備。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)142是服務(wù)器系統(tǒng),如數(shù)據(jù)中心中的服務(wù)器系統(tǒng)。計(jì)算機(jī)系統(tǒng)142有時(shí)被稱為主機(jī)、主機(jī)系統(tǒng)、客戶端或客戶端系統(tǒng)。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)142包括一個(gè)或多個(gè)處理器、一種或多種類型的存儲(chǔ)器、顯示器和/或其他用戶接口部件,如鍵盤、觸屏顯示器、鼠標(biāo)、軌跡板、數(shù)字相機(jī)和/或用于增加功能的任何數(shù)量的補(bǔ)充設(shè)備。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)142不具有顯示器和其他用戶接口部件。
在一些實(shí)施例中,存儲(chǔ)系統(tǒng)控制器150包括系統(tǒng)管理模塊151-1以及(多個(gè))附加模塊155。存儲(chǔ)系統(tǒng)控制器150可以包括各種附加特征,為簡(jiǎn)潔起見并且以免模糊在此公開的示例實(shí)施例的相關(guān)特征,沒有展示所述附加特征,并且所述特征的不同安排是可能的。例如,在一些實(shí)施例中,存儲(chǔ)系統(tǒng)控制器150附加地包括由每個(gè)存儲(chǔ)設(shè)備160耦合至存儲(chǔ)系統(tǒng)控制器150的接口。存儲(chǔ)設(shè)備160通過連接143耦合至存儲(chǔ)系統(tǒng)控制器150(例如,存儲(chǔ)設(shè)備160-1通過連接143-1耦合至存儲(chǔ)系統(tǒng)控制器150,并且存儲(chǔ)設(shè)備160-m通過連接143-m耦合至存儲(chǔ)系統(tǒng)控制器150)。在一些實(shí)施例中,連接143-1至143-m被實(shí)現(xiàn)為通信介質(zhì),在所述通信介質(zhì)上,使用如SCSI、SATA、無限帶寬技術(shù)、以太網(wǎng)、令牌環(huán)等協(xié)議傳達(dá)命令和數(shù)據(jù)。
在一些實(shí)施例中,系統(tǒng)管理模塊151-1包括被配置成用于執(zhí)行一個(gè)或多個(gè)程序中的指令(例如,在系統(tǒng)管理模塊151-1中)的一個(gè)或多個(gè)處理單元(CPU,有時(shí)也被稱為處理器)152-1。在一些實(shí)施例中,所述一個(gè)或多個(gè)CPU 152-1由在存儲(chǔ)系統(tǒng)控制器150的功能之內(nèi)(以及某些情況下之外)的一個(gè)或多個(gè)部件共享。系統(tǒng)管理模塊151-1耦合至(多個(gè))附加模塊155,以便協(xié)調(diào)這些部件的操作。在一些實(shí)施例中,系統(tǒng)管理模塊151-1的一個(gè)或多個(gè)模塊在計(jì)算機(jī)系統(tǒng)142(有時(shí)被稱為主機(jī)、主機(jī)系統(tǒng)、客戶端或客戶端系統(tǒng))的系統(tǒng)管理模塊151-2中實(shí)現(xiàn)。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)142(未示出)的一個(gè)或多個(gè)處理器(有時(shí)被稱為CPU或處理單元)被配置成用于執(zhí)行一個(gè)或多個(gè)程序中的指令(例如,在系統(tǒng)管理模塊151-2中)。系統(tǒng)管理模塊151-2耦合至存儲(chǔ)系統(tǒng)控制器150,以便管理存儲(chǔ)系統(tǒng)控制器150的操作。
(多個(gè))附加模塊155耦合至系統(tǒng)管理模塊151-1。在一些實(shí)施例中,(多個(gè))附加模塊155由系統(tǒng)管理模塊151-1的一個(gè)或多個(gè)CPU 152-1在軟件中執(zhí)行,并且,在其他實(shí)施例中,(多個(gè))附加模塊155全部地或部分地使用特殊用途電路實(shí)現(xiàn)。在一些實(shí)施例中,(多個(gè))附加模塊155全部地或部分地由在計(jì)算機(jī)系統(tǒng)142上執(zhí)行的軟件實(shí)現(xiàn)。
在寫操作期間,存儲(chǔ)系統(tǒng)控制器150從計(jì)算機(jī)系統(tǒng)142(有時(shí)被稱為主機(jī)、主機(jī)系統(tǒng)、客戶端或客戶端系統(tǒng))接收有待存儲(chǔ)在存儲(chǔ)設(shè)備160中的數(shù)據(jù)。在一些實(shí)施例中,存儲(chǔ)系統(tǒng)控制器150將虛擬邏輯地址從計(jì)算機(jī)系統(tǒng)142映射到一個(gè)地址,所述地址確定或標(biāo)識(shí)對(duì)其寫入數(shù)據(jù)的一個(gè)或多個(gè)存儲(chǔ)設(shè)備160。
當(dāng)計(jì)算機(jī)系統(tǒng)142將一個(gè)或多個(gè)主機(jī)讀命令發(fā)送至從存儲(chǔ)介質(zhì)160請(qǐng)求數(shù)據(jù)的存儲(chǔ)系統(tǒng)控制器150時(shí),發(fā)起讀操作。在一些實(shí)施例中,存儲(chǔ)系統(tǒng)控制器150將虛擬邏輯地址從計(jì)算機(jī)系統(tǒng)142映射到一個(gè)地址,所述地址確定或標(biāo)識(shí)從其讀取所請(qǐng)求的數(shù)據(jù)的一個(gè)或多個(gè)存儲(chǔ)設(shè)備160。
圖1C是框圖,展示了根據(jù)一些實(shí)施例的數(shù)據(jù)存儲(chǔ)系統(tǒng)170的實(shí)現(xiàn)方式。盡管展示了一些示例特征,但是,為簡(jiǎn)潔起見并且以免不必要模糊在此所公開的示例實(shí)施例的相關(guān)方面,沒有展示各種其他特征。為此,作為非限制性示例,數(shù)據(jù)存儲(chǔ)系統(tǒng)170(有時(shí)被稱為擴(kuò)大存儲(chǔ)系統(tǒng)、多節(jié)點(diǎn)存儲(chǔ)系統(tǒng)或存儲(chǔ)集群系統(tǒng))包括多個(gè)存儲(chǔ)子系統(tǒng)192(例如,存儲(chǔ)設(shè)備192-1至192-s)和集群控制器180,并且結(jié)合計(jì)算機(jī)系統(tǒng)172一起使用。在一些實(shí)施例中,存儲(chǔ)子系統(tǒng)192包括存儲(chǔ)系統(tǒng)控制器190和存儲(chǔ)設(shè)備194(例如,存儲(chǔ)子系統(tǒng)192-1包括存儲(chǔ)系統(tǒng)控制器190-1以及存儲(chǔ)設(shè)備194-1至194-n)。以上關(guān)于數(shù)據(jù)存儲(chǔ)系統(tǒng)140(圖1B)所描述的特征中的一些特征可應(yīng)用于存儲(chǔ)子系統(tǒng)192,并且出于簡(jiǎn)潔起見,在此不重復(fù)所述細(xì)節(jié)。在一些實(shí)施例中,可以存在多個(gè)集群控制器180,所述集群控制器可以彼此進(jìn)行通信以協(xié)調(diào)其活動(dòng)。
計(jì)算機(jī)系統(tǒng)172通過連接171耦合至集群控制器180。然而,在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)172包括作為部件和/或子系統(tǒng)的集群控制器180。例如,在一些實(shí)施例中,集群控制器180的部分或全部功能是由在計(jì)算機(jī)系統(tǒng)172上執(zhí)行的軟件實(shí)現(xiàn)的。計(jì)算機(jī)系統(tǒng)172可以是任何合適的計(jì)算機(jī)設(shè)備,如計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、上網(wǎng)本、因特網(wǎng)信息站、個(gè)人數(shù)字助理、移動(dòng)電話、智能電話、游戲設(shè)備、計(jì)算機(jī)服務(wù)器、或任何其他計(jì)算設(shè)備。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)172是服務(wù)器系統(tǒng),如數(shù)據(jù)中心中的服務(wù)器系統(tǒng)。計(jì)算機(jī)系統(tǒng)172有時(shí)被稱為主機(jī)、主機(jī)系統(tǒng)、客戶端或客戶端系統(tǒng)。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)172包括一個(gè)或多個(gè)處理器、一種或多種類型的存儲(chǔ)器、顯示器和/或其他用戶接口部件,如鍵盤、觸屏顯示器、鼠標(biāo)、軌跡板、數(shù)字相機(jī)和/或用于增加功能的任何數(shù)量的補(bǔ)充設(shè)備。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)172不具有顯示器和其他用戶接口部件。
在一些實(shí)施例中,集群控制器180包括集群管理模塊181-1以及(多個(gè))附加模塊185。集群控制器180可以包括各種附加特征,為簡(jiǎn)潔起見并且以免模糊在此公開的示例實(shí)施例的相關(guān)特征,沒有展示所述附加特征,并且所述特征的不同安排是可能的。例如,在一些實(shí)施例中,集群控制器180附加地包括由每個(gè)存儲(chǔ)子系統(tǒng)192耦合至集群控制器180的接口。存儲(chǔ)子系統(tǒng)192通過連接173耦合至集群控制器180(例如,存儲(chǔ)子系統(tǒng)192-1通過連接173-1耦合至集群控制器180,并且存儲(chǔ)子系統(tǒng)192-s通過連接173-s耦合至集群控制器180)。在一些實(shí)施例中,連接173可以被實(shí)現(xiàn)為共享通信網(wǎng)絡(luò),例如,令牌環(huán)、以太網(wǎng)、無限帶寬技術(shù)等。
在一些實(shí)施例中,集群管理模塊181-1包括被配置成用于執(zhí)行一個(gè)或多個(gè)程序中的指令(例如,在集群管理模塊181-1中)的一個(gè)或多個(gè)處理單元(CPU,有時(shí)也被稱為處理器)182-1。在一些實(shí)施例中,一個(gè)或多個(gè)CPU182-1由在集群控制器180的功能之內(nèi)(以及某些情況下之外)的一個(gè)或多個(gè)部件共享。集群管理模塊181-1耦合至(多個(gè))附加模塊185,以便協(xié)調(diào)這些部件的操作。在一些實(shí)施例中,集群管理模塊181-1的一個(gè)或多個(gè)模塊在計(jì)算機(jī)系統(tǒng)172(有時(shí)被稱為主機(jī)、主機(jī)系統(tǒng)、客戶端或客戶端系統(tǒng))的集群管理模塊181-2中實(shí)現(xiàn)。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)172(未示出)的一個(gè)或多個(gè)處理器(有時(shí)被稱為CPU或處理單元)被配置成用于執(zhí)行一個(gè)或多個(gè)程序中的指令(例如,在集群管理模塊181-2中)。集群管理模塊181-2耦合至集群控制器180,以便管理集群控制器180的操作。
(多個(gè))附加模塊185耦合至集群管理模塊181-1。在一些實(shí)施例中,(多個(gè))附加模塊185由集群管理模塊181-1的一個(gè)或多個(gè)CPU 182-1在軟件中執(zhí)行,并且,在其他實(shí)施例中,(多個(gè))附加模塊185全部地或部分地使用特殊用途電路實(shí)現(xiàn)。在一些實(shí)施例中,(多個(gè))附加模塊185全部地或部分地由在計(jì)算機(jī)系統(tǒng)172上執(zhí)行的軟件實(shí)現(xiàn)。
在一些實(shí)施例中,在寫操作期間,集群控制器180從計(jì)算機(jī)系統(tǒng)172(有時(shí)被稱為主機(jī)、主機(jī)系統(tǒng)、客戶端或客戶端系統(tǒng))接收有待存儲(chǔ)在存儲(chǔ)子系統(tǒng)192中的數(shù)據(jù)。在一些實(shí)施例中,集群控制器180將虛擬邏輯地址從計(jì)算機(jī)系統(tǒng)172映射到一個(gè)地址格式,所述地址格式可由存儲(chǔ)子系統(tǒng)192理解并且用于標(biāo)識(shí)存儲(chǔ)子系統(tǒng)192的對(duì)其寫入數(shù)據(jù)的存儲(chǔ)子系統(tǒng)。在一些實(shí)施例中,集群控制器180可以轉(zhuǎn)換有待存儲(chǔ)到多個(gè)數(shù)據(jù)集中的數(shù)據(jù),每個(gè)數(shù)據(jù)集被存儲(chǔ)在存儲(chǔ)系統(tǒng)192的一個(gè)存儲(chǔ)子系統(tǒng)上。在一個(gè)實(shí)施例中,所述轉(zhuǎn)換過程可以與劃分有待存儲(chǔ)的數(shù)據(jù)一樣簡(jiǎn)單。在另一個(gè)實(shí)施例中,所述轉(zhuǎn)換過程可以對(duì)有待存儲(chǔ)的數(shù)據(jù)進(jìn)行冗余編碼,以便在面對(duì)存儲(chǔ)子系統(tǒng)192的一個(gè)或多個(gè)存儲(chǔ)子系統(tǒng)或到其的通信故障時(shí)提供增強(qiáng)的數(shù)據(jù)完整性和訪問。
在一些實(shí)施例中,當(dāng)計(jì)算機(jī)系統(tǒng)172將一個(gè)或多個(gè)主機(jī)讀命令發(fā)送至從存儲(chǔ)子系統(tǒng)192請(qǐng)求數(shù)據(jù)的集群控制器180時(shí),發(fā)起讀操作。在一些實(shí)施例中,集群控制器180將虛擬邏輯地址從計(jì)算機(jī)系統(tǒng)172映射到一個(gè)地址格式,所述地址格式可由存儲(chǔ)子系統(tǒng)192理解,以用于確定或標(biāo)識(shí)存儲(chǔ)子系統(tǒng)192的從其讀取所請(qǐng)求的數(shù)據(jù)的存儲(chǔ)子系統(tǒng)。在一些實(shí)施例中,存儲(chǔ)子系統(tǒng)192的多于一個(gè)的存儲(chǔ)子系統(tǒng)可以使數(shù)據(jù)被讀取,以便滿足讀操作,例如,用于數(shù)據(jù)重構(gòu)。
如在此使用的,術(shù)語(yǔ)“主機(jī)”或“主機(jī)系統(tǒng)”根據(jù)上下文可以被解釋為意味著(1)計(jì)算機(jī)系統(tǒng)(例如,圖1A的計(jì)算機(jī)系統(tǒng)110、圖1B的計(jì)算機(jī)系統(tǒng)142、或圖1C的計(jì)算機(jī)系統(tǒng)172),代表所述計(jì)算機(jī)系統(tǒng)將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)系統(tǒng)(例如,圖1A的數(shù)據(jù)存儲(chǔ)系統(tǒng)100、圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140、或圖1C的數(shù)據(jù)存儲(chǔ)系統(tǒng)170)中;(2)存儲(chǔ)系統(tǒng)(例如,圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140)的存儲(chǔ)系統(tǒng)控制器(例如,圖1B的存儲(chǔ)系統(tǒng)控制器150);(3)存儲(chǔ)系統(tǒng)(例如,圖1C的數(shù)據(jù)存儲(chǔ)系統(tǒng)170)的集群控制器(例如,圖1C的集群控制器180);和/或(4)操作性地要么直接地要么間接地耦合至存儲(chǔ)系統(tǒng)的任何計(jì)算實(shí)體(例如,計(jì)算機(jī)、在計(jì)算機(jī)上運(yùn)行的過程、移動(dòng)電話、互聯(lián)網(wǎng)信息站、平板計(jì)算機(jī)、膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)等)。例如,在一些情況下,相對(duì)于數(shù)據(jù)存儲(chǔ)系統(tǒng)140(圖1B),術(shù)語(yǔ)“主機(jī)”根據(jù)上下文可以指計(jì)算機(jī)系統(tǒng)142或存儲(chǔ)系統(tǒng)控制器150。作為另一個(gè)示例,在一些情況下,相對(duì)于數(shù)據(jù)存儲(chǔ)系統(tǒng)170(圖1C),術(shù)語(yǔ)“主機(jī)”根據(jù)上下文可以指計(jì)算機(jī)系統(tǒng)172或集群控制器180。進(jìn)一步地,在一些上下文中,主機(jī)是或者包括客戶端或客戶端系統(tǒng),代表所述客戶端而或客戶端系統(tǒng)將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)系統(tǒng)中。
圖2A-1是框圖,展示了根據(jù)一些實(shí)施例的管理模塊121-1,如圖1A中所示。管理模塊121-1通常包括用于執(zhí)行存儲(chǔ)在存儲(chǔ)器206-1中的模塊、程序和/或指令并且由此執(zhí)行處理操作的一個(gè)或多個(gè)處理單元(有時(shí)被稱為CPU或處理器)122-1、存儲(chǔ)器206-1(有時(shí)被稱為控制器存儲(chǔ)器)、以及使這些部件互連的一根或多根通信總線208-1。所述一根或多根通信總線208-1可選地包括使系統(tǒng)部件互連并且控制系統(tǒng)部件之間的通信的電路(有時(shí)被稱為芯片組)。管理模塊121-1通過所述一根或多根通信總線208-1耦合至主機(jī)接口129、(多個(gè))附加模塊125以及存儲(chǔ)介質(zhì)I/O 128。存儲(chǔ)器206-1包括高速隨機(jī)存取存儲(chǔ)器,如DRAM、SRAM、DDR RAM或者其他隨機(jī)存取固態(tài)存儲(chǔ)設(shè)備,并且可包括非易失性存儲(chǔ)器,如一個(gè)或多個(gè)磁盤存儲(chǔ)設(shè)備、光盤存儲(chǔ)設(shè)備、閃存設(shè)備、或者其他非易失性固態(tài)存儲(chǔ)設(shè)備。存儲(chǔ)器206-1可選地包括與(多個(gè))CPU 122-1遠(yuǎn)離地定位的一個(gè)或多個(gè)存儲(chǔ)設(shè)備。存儲(chǔ)器206-1或者替代性地在存儲(chǔ)器206-1內(nèi)的(多個(gè))非易失性存儲(chǔ)器設(shè)備包括非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在一些實(shí)施例中,存儲(chǔ)器206-1或存儲(chǔ)器206-1的非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)下述程序、模塊和數(shù)據(jù)結(jié)構(gòu)或其子集或超集:
轉(zhuǎn)換表212-1,所述轉(zhuǎn)換表用于將邏輯地址映射到物理地址(例如,在一些實(shí)施例中,轉(zhuǎn)換表212-1包括圖4的映射表402);
數(shù)據(jù)讀取模塊214-1,所述數(shù)據(jù)讀取模塊用于從存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)中的一個(gè)或多個(gè)碼字、頁(yè)或塊讀取數(shù)據(jù);
數(shù)據(jù)寫入模塊216-1,所述數(shù)據(jù)寫入模塊用于將數(shù)據(jù)寫入存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)中的一個(gè)或多個(gè)碼字、頁(yè)或塊;
數(shù)據(jù)擦除模塊218-1,所述數(shù)據(jù)擦除模塊用于從存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)中的一個(gè)或多個(gè)塊中擦除數(shù)據(jù);
垃圾收集模塊220-1,所述垃圾收集模塊用于針對(duì)存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)中的一個(gè)或多個(gè)塊進(jìn)行垃圾收集;
度量模塊222-1,所述度量模塊用于生成和/或獲取存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120)的一個(gè)或多個(gè)度量;
觸發(fā)檢測(cè)模塊224-1,所述觸發(fā)檢測(cè)模塊用于檢測(cè)觸發(fā)條件(例如,根據(jù)存儲(chǔ)設(shè)備的一個(gè)或多個(gè)度量);
啟用模塊226-1,所述啟用模塊用于啟用與(例如,由觸發(fā)檢測(cè)模塊224-1檢測(cè)到的)觸發(fā)條件相關(guān)聯(lián)的改善過程;
通知模塊228-1,所述通知模塊用于將(例如,由觸發(fā)檢測(cè)模塊224-1檢測(cè)到的)觸發(fā)條件和/或所述觸發(fā)條件的不存在通知給存儲(chǔ)設(shè)備操作性地耦合的主機(jī);
改善模塊230-1,所述改善模塊用于執(zhí)行用于減小存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120)的非易失存儲(chǔ)器的聲明容量的改善過程,所述改善模塊可選地包括:
檢測(cè)模塊231-1,所述檢測(cè)模塊用于檢測(cè)用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā);
利用模塊232-1,所述利用模塊用于減少存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的利用;以及
容量模塊234-1,所述容量模塊用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量。
上述要素中的每一個(gè)都可以被存儲(chǔ)在前面所提到的存儲(chǔ)器設(shè)備中的一個(gè)或多個(gè)中,并且與用于執(zhí)行上述功能的指令集相對(duì)應(yīng)。上述模塊或程序(即,指令集)不需要被實(shí)現(xiàn)為獨(dú)立的軟件程序、過程或模塊,從而在各個(gè)實(shí)施例中,可以組合或者以其他方式重新排列這些模塊的各個(gè)子集。在一些實(shí)施例中,存儲(chǔ)器206-1可保存以上定義的模塊和數(shù)據(jù)結(jié)構(gòu)的子集。此外,存儲(chǔ)器206-1可存儲(chǔ)以上沒有說明的另外的模塊和數(shù)據(jù)結(jié)構(gòu)。在一些實(shí)施例中,存儲(chǔ)在存儲(chǔ)器206-1中的程序、模塊和數(shù)據(jù)結(jié)構(gòu)或者存儲(chǔ)器206-1的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)提供用于實(shí)現(xiàn)以下所描述的一些方法的指令。在一些實(shí)施例中,這些模塊中的部分和全部可以利用將部分或全部模塊功能包含在內(nèi)的專用硬件電路來實(shí)現(xiàn)。
盡管圖2A-1示出了根據(jù)一些實(shí)施例的管理模塊121-1,但是圖2A-1與其意在作為在此所描述的實(shí)施例的結(jié)構(gòu)示意相比,更意在作為可以在管理模塊121-1中存在的各種特征的功能描述。實(shí)踐中,并且如本領(lǐng)域技術(shù)人員認(rèn)識(shí)到的,分開示出的程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以組合,并且一些程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以被分開。
圖2A-2是框圖,展示了根據(jù)一些實(shí)施例的計(jì)算機(jī)系統(tǒng)110的管理模塊121-2(圖1A)。管理模塊121-2通常包括用于執(zhí)行存儲(chǔ)在存儲(chǔ)器206-2中的模塊、程序和/或指令并且由此執(zhí)行處理操作的一個(gè)或多個(gè)處理單元(有時(shí)被稱為CPU或處理器)122-2、存儲(chǔ)器206-2、以及使這些部件互連的一根或多根通信總線208-2。所述一根或多根通信總線208-2可選地包括使系統(tǒng)部件互連并且控制系統(tǒng)部件之間的通信的電路(有時(shí)被稱為芯片組)。管理模塊121-2通過所述一根或多根通信總線208-2耦合至存儲(chǔ)設(shè)備120。存儲(chǔ)器206-2(有時(shí)被稱為主機(jī)存儲(chǔ)器)包括高速隨機(jī)存取存儲(chǔ)器,如DRAM、SRAM、DDR RAM或者其他隨機(jī)存取固態(tài)存儲(chǔ)設(shè)備,并且可包括非易失性存儲(chǔ)器,如一個(gè)或多個(gè)磁盤存儲(chǔ)設(shè)備、光盤存儲(chǔ)設(shè)備、閃存設(shè)備、或者其他非易失性固態(tài)存儲(chǔ)設(shè)備。存儲(chǔ)器206-2可選地包括與(多個(gè))CPU 122-2遠(yuǎn)離地定位的一個(gè)或多個(gè)存儲(chǔ)設(shè)備。存儲(chǔ)器206-2或者替代性地在存儲(chǔ)器206-2內(nèi)的(多個(gè))非易失性存儲(chǔ)器設(shè)備包括非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在一些實(shí)施例中,存儲(chǔ)器206-2或存儲(chǔ)器206-2的非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)下述程序、模塊和數(shù)據(jù)結(jié)構(gòu)或其子集或超集:
轉(zhuǎn)換表212-2,所述轉(zhuǎn)換表用于將邏輯地址映射到物理地址(例如,在一些實(shí)施例中,轉(zhuǎn)換表212-2包括圖4的映射表402);
數(shù)據(jù)讀取模塊214-2,所述數(shù)據(jù)讀取模塊用于從存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)中的一個(gè)或多個(gè)碼字、頁(yè)或塊讀取數(shù)據(jù);
數(shù)據(jù)寫入模塊216-2,所述數(shù)據(jù)寫入模塊用于將數(shù)據(jù)寫入存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)中的一個(gè)或多個(gè)碼字、頁(yè)或塊;
數(shù)據(jù)擦除模塊218-2,所述數(shù)據(jù)擦除模塊用于從存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)中的一個(gè)或多個(gè)塊中擦除數(shù)據(jù);
垃圾收集模塊220-2,所述垃圾收集模塊用于針對(duì)存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)中的一個(gè)或多個(gè)塊進(jìn)行垃圾收集;
度量模塊222-2,所述度量模塊用于生成和/或獲取存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120)的一個(gè)或多個(gè)度量;
觸發(fā)檢測(cè)模塊224-2,所述觸發(fā)檢測(cè)模塊用于檢測(cè)觸發(fā)條件(例如,根據(jù)存儲(chǔ)設(shè)備的一個(gè)或多個(gè)度量);
啟用模塊226-2,所述啟用模塊用于啟用與(例如,由觸發(fā)檢測(cè)模塊224-2檢測(cè)到的)觸發(fā)條件相關(guān)聯(lián)的改善過程;
通知模塊228-2,所述通知模塊用于將(例如,由觸發(fā)檢測(cè)模塊224-2檢測(cè)到的)觸發(fā)條件和/或所述觸發(fā)條件的不存在通知給主機(jī)(例如,圖1A的計(jì)算機(jī)系統(tǒng)110)的應(yīng)用、模塊和過程;
改善模塊230-2,所述改善模塊用于執(zhí)行用于減小存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120)的非易失存儲(chǔ)器的聲明容量的改善過程,所述改善模塊可選地包括:
o檢測(cè)模塊231-2,所述檢測(cè)模塊用于檢測(cè)用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā);
o利用模塊232-2,所述利用模塊用于減少存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的利用;以及
o容量模塊234-2,所述容量模塊用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量。
上述要素中的每一個(gè)都可以被存儲(chǔ)在前面所提到的存儲(chǔ)器設(shè)備中的一個(gè)或多個(gè)中,并且與用于執(zhí)行上述功能的指令集相對(duì)應(yīng)。上述模塊或程序(即,指令集)不需要被實(shí)現(xiàn)為獨(dú)立的軟件程序、過程或模塊,從而在各個(gè)實(shí)施例中,可以組合或者以其他方式重新排列這些模塊的各個(gè)子集。在一些實(shí)施例中,存儲(chǔ)器206-2可保存以上定義的模塊和數(shù)據(jù)結(jié)構(gòu)的子集。此外,存儲(chǔ)器206-2可存儲(chǔ)以上沒有說明的另外的模塊和數(shù)據(jù)結(jié)構(gòu)。在一些實(shí)施例中,存儲(chǔ)在存儲(chǔ)器206-2中的程序、模塊和數(shù)據(jù)結(jié)構(gòu)或者存儲(chǔ)器206-2的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)提供用于實(shí)現(xiàn)以下所描述的一些方法的指令。在一些實(shí)施例中,這些模塊中的部分和全部可以利用將部分或全部模塊功能包含在內(nèi)的專用硬件電路來實(shí)現(xiàn)。
盡管圖2A-2示出了根據(jù)一些實(shí)施例的管理模塊121-2,但是圖2A-2與其意在作為在此所描述的實(shí)施例的結(jié)構(gòu)示意相比,更意在作為可以在管理模塊121-2中存在的各種特征的功能描述。實(shí)踐中,并且如本領(lǐng)域技術(shù)人員認(rèn)識(shí)到的,分開示出的程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以組合,并且一些程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以被分開。
圖2B-1是框圖,展示了根據(jù)一些實(shí)施例的系統(tǒng)管理模塊151-1,例如,系統(tǒng)管理模塊在存儲(chǔ)系統(tǒng)控制器中的實(shí)施例,如圖1B中所示。系統(tǒng)管理模塊151-1通常包括用于執(zhí)行存儲(chǔ)在存儲(chǔ)器246-1中的模塊、程序和/或指令并且由此執(zhí)行處理操作的一個(gè)或多個(gè)處理單元(有時(shí)被稱為CPU或處理器)152-1、存儲(chǔ)器246-1(有時(shí)被稱為存儲(chǔ)系統(tǒng)控制器存儲(chǔ)器或控制器存儲(chǔ)器)、以及使這些部件互連的一根或多根通信總線248-1。所述一根或多根通信總線248-1可選地包括使系統(tǒng)部件互連并且控制系統(tǒng)部件之間的通信的電路(有時(shí)被稱為芯片組)。系統(tǒng)管理模塊151-1通過所述一根或多根通信總線248-1耦合至(多個(gè))附加模塊155。存儲(chǔ)器246-1包括高速隨機(jī)存取存儲(chǔ)器,如DRAM、SRAM、DDR RAM或者其他隨機(jī)存取固態(tài)存儲(chǔ)設(shè)備,并且可包括非易失性存儲(chǔ)器,如一個(gè)或多個(gè)磁盤存儲(chǔ)設(shè)備、光盤存儲(chǔ)設(shè)備、閃存設(shè)備、或者其他非易失性固態(tài)存儲(chǔ)設(shè)備。存儲(chǔ)器246-1可選地包括與(多個(gè))CPU152-1遠(yuǎn)離地定位的一個(gè)或多個(gè)存儲(chǔ)設(shè)備。存儲(chǔ)器246-1或者替代性地在存儲(chǔ)器246-1內(nèi)的(多個(gè))非易失性存儲(chǔ)器設(shè)備包括非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在一些實(shí)施例中,存儲(chǔ)器246-1或存儲(chǔ)器246-1的非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)下述程序、模塊和數(shù)據(jù)結(jié)構(gòu)或其子集或超集:
系統(tǒng)映射模塊250-1,所述系統(tǒng)映射模塊用于將虛擬地址(例如,圖1B中由計(jì)算機(jī)系統(tǒng)142使用的)映射到中間地址(例如,圖1B中由存儲(chǔ)設(shè)備160將所述中間地址映射到物理地址);
度量模塊252-1,所述度量模塊用于生成和/或獲取存儲(chǔ)設(shè)備(例如,圖1B的存儲(chǔ)設(shè)備160-1至160-m中任何一個(gè))的一個(gè)或多個(gè)度量;
觸發(fā)檢測(cè)模塊254-1,所述觸發(fā)檢測(cè)模塊用于檢測(cè)觸發(fā)條件(例如,根據(jù)存儲(chǔ)設(shè)備的一個(gè)或多個(gè)度量);
啟用模塊256-1,所述啟用模塊用于啟用與(例如,由觸發(fā)檢測(cè)模塊254-1檢測(cè)到的)觸發(fā)條件相關(guān)聯(lián)的改善過程;
通知模塊258-1,所述通知模塊用于將(例如,由觸發(fā)檢測(cè)模塊254-1檢測(cè)到的)觸發(fā)條件和/或所述觸發(fā)條件的不存在通知給存儲(chǔ)設(shè)備操作性地耦合的主機(jī);
改善模塊260-1,所述改善模塊用于執(zhí)行用于減小存儲(chǔ)設(shè)備(例如,圖1B的存儲(chǔ)設(shè)備160)的非易失存儲(chǔ)器的聲明容量的改善過程,所述改善模塊可選地包括:
o檢測(cè)模塊261-1,所述檢測(cè)模塊用于檢測(cè)用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā);
o利用模塊262-1,所述利用模塊用于減少存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的利用;以及
o容量模塊264-1,所述容量模塊用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量;以及
可選地,數(shù)據(jù)冗余模塊266-1,所述數(shù)據(jù)冗余模塊用于對(duì)數(shù)據(jù)進(jìn)行冗余編碼(例如,以實(shí)現(xiàn)特定的RAID(獨(dú)立磁盤冗余陣列)級(jí)別);以及
可選地,通信模塊268-1,所述通信模塊用于例如經(jīng)由存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)促進(jìn)與其他設(shè)備的通信。
上述要素中的每一個(gè)都可以被存儲(chǔ)在前面所提到的存儲(chǔ)器設(shè)備中的一個(gè)或多個(gè)中,并且與用于執(zhí)行上述功能的指令集相對(duì)應(yīng)。上述模塊或程序(即,指令集)不需要被實(shí)現(xiàn)為獨(dú)立的軟件程序、過程或模塊,從而在各個(gè)實(shí)施例中,可以組合或者以其他方式重新排列這些模塊的各個(gè)子集。在一些實(shí)施例中,存儲(chǔ)器246-1可保存以上定義的模塊和數(shù)據(jù)結(jié)構(gòu)的子集。此外,存儲(chǔ)器246-1可存儲(chǔ)以上沒有說明的另外的模塊和數(shù)據(jù)結(jié)構(gòu)。在一些實(shí)施例中,存儲(chǔ)在存儲(chǔ)器246-1中的程序、模塊和數(shù)據(jù)結(jié)構(gòu)或者存儲(chǔ)器246-1的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)提供用于實(shí)現(xiàn)以下所描述的一些方法的指令。在一些實(shí)施例中,這些模塊中的部分和全部可以利用將部分或全部模塊功能包含在內(nèi)的專用硬件電路來實(shí)現(xiàn)。
盡管圖2B-1示出了根據(jù)一些實(shí)施例的系統(tǒng)管理模塊151-1,但是圖2B-1與其意在作為在此所描述的實(shí)施例的結(jié)構(gòu)示意相比,更意在作為可以在系統(tǒng)管理模塊151-1中存在的各種特征的功能描述。實(shí)踐中,并且如本領(lǐng)域技術(shù)人員認(rèn)識(shí)到的,分開示出的程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以組合,并且一些程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以被分開。
圖2B-2是框圖,展示了根據(jù)一些實(shí)施例的系統(tǒng)管理模塊151-2,例如,系統(tǒng)管理模塊位于主機(jī)中的實(shí)施例,如圖1B所示;在一些這種實(shí)施例中,存儲(chǔ)系統(tǒng)被稱為主機(jī)管理的存儲(chǔ)系統(tǒng)。系統(tǒng)管理模塊151-2通常包括用于執(zhí)行存儲(chǔ)在存儲(chǔ)器246-2中的模塊、程序和/或指令并且由此執(zhí)行處理操作的一個(gè)或多個(gè)處理單元(有時(shí)被稱為CPU或處理器)152-2、存儲(chǔ)器246-2(有時(shí)被稱為主機(jī)存儲(chǔ)器)、以及使這些部件互連的一根或多根通信總線248-2。所述一根或多根通信總線248-2可選地包括使系統(tǒng)部件互連并且控制系統(tǒng)部件之間的通信的電路(有時(shí)被稱為芯片組)。系統(tǒng)管理模塊151-2通過所述一根或多根通信總線248-2耦合至存儲(chǔ)系統(tǒng)控制器150。存儲(chǔ)器246-2包括高速隨機(jī)存取存儲(chǔ)器,如DRAM、SRAM、DDR RAM或者其他隨機(jī)存取固態(tài)存儲(chǔ)設(shè)備,并且可包括非易失性存儲(chǔ)器,如一個(gè)或多個(gè)磁盤存儲(chǔ)設(shè)備、光盤存儲(chǔ)設(shè)備、閃存設(shè)備、或者其他非易失性固態(tài)存儲(chǔ)設(shè)備。存儲(chǔ)器246-2可選地包括與(多個(gè))CPU 152-2遠(yuǎn)離地定位的一個(gè)或多個(gè)存儲(chǔ)設(shè)備。存儲(chǔ)器246-2或者替代性地在存儲(chǔ)器246-2內(nèi)的(多個(gè))非易失性存儲(chǔ)器設(shè)備包括非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在一些實(shí)施例中,存儲(chǔ)器246-2或存儲(chǔ)器246-2的非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)下述程序、模塊和數(shù)據(jù)結(jié)構(gòu)或其子集或超集:
系統(tǒng)映射模塊250-2,所述系統(tǒng)映射模塊用于將虛擬地址(例如,圖1B中由計(jì)算機(jī)系統(tǒng)142使用的)映射到中間地址(例如,圖1B中由存儲(chǔ)設(shè)備160將所述中間地址映射到物理地址);
度量模塊252-2,所述度量模塊用于生成和/或獲取存儲(chǔ)設(shè)備(例如,圖1B的存儲(chǔ)設(shè)備160-1至160-m中任何一個(gè))的一個(gè)或多個(gè)度量;
觸發(fā)檢測(cè)模塊254-2,所述觸發(fā)檢測(cè)模塊用于檢測(cè)觸發(fā)條件(例如,根據(jù)存儲(chǔ)設(shè)備的一個(gè)或多個(gè)度量);
啟用模塊256-2,所述啟用模塊用于啟用與(例如,由觸發(fā)檢測(cè)模塊254-2檢測(cè)到的)觸發(fā)條件相關(guān)聯(lián)的改善過程;
通知模塊258-2,所述通知模塊用于將(例如,由觸發(fā)檢測(cè)模塊254-2檢測(cè)到的)觸發(fā)條件和/或所述觸發(fā)條件的不存在通知給存儲(chǔ)設(shè)備操作性地耦合的主機(jī);
改善模塊260-2,所述改善模塊用于執(zhí)行用于減小存儲(chǔ)設(shè)備(例如,圖1B的存儲(chǔ)設(shè)備160)的非易失存儲(chǔ)器的聲明容量的改善過程,所述改善模塊可選地包括:
o檢測(cè)模塊261-2,所述檢測(cè)模塊用于檢測(cè)用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā);
o利用模塊262-2,所述利用模塊用于減少存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的利用;以及
o容量模塊264-2,所述容量模塊用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量;
可選地,數(shù)據(jù)冗余模塊266-2,所述數(shù)據(jù)冗余模塊用于對(duì)數(shù)據(jù)進(jìn)行冗余編碼(例如,以實(shí)現(xiàn)特定的RAID(獨(dú)立磁盤冗余陣列)級(jí)別);以及
可選地,通信模塊268-2,所述通信模塊用于例如經(jīng)由存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)促進(jìn)與其他設(shè)備的通信。
上述要素中的每一個(gè)都可以被存儲(chǔ)在前面所提到的存儲(chǔ)器設(shè)備中的一個(gè)或多個(gè)中,并且與用于執(zhí)行上述功能的指令集相對(duì)應(yīng)。上述模塊或程序(即,指令集)不需要被實(shí)現(xiàn)為獨(dú)立的軟件程序、過程或模塊,從而在各個(gè)實(shí)施例中,可以組合或者以其他方式重新排列這些模塊的各個(gè)子集。在一些實(shí)施例中,存儲(chǔ)器246-2可保存以上定義的模塊和數(shù)據(jù)結(jié)構(gòu)的子集。此外,存儲(chǔ)器246-2可存儲(chǔ)以上沒有說明的另外的模塊和數(shù)據(jù)結(jié)構(gòu)。在一些實(shí)施例中,存儲(chǔ)在存儲(chǔ)器246-2中的程序、模塊和數(shù)據(jù)結(jié)構(gòu)或者存儲(chǔ)器246-2的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)提供用于實(shí)現(xiàn)以下所描述的一些方法的指令。在一些實(shí)施例中,這些模塊中的部分和全部可以利用將部分或全部模塊功能包含在內(nèi)的專用硬件電路來實(shí)現(xiàn)。
盡管圖2B-2示出了根據(jù)一些實(shí)施例的系統(tǒng)管理模塊151-2,但是圖2B-2與其意在作為在此所描述的實(shí)施例的結(jié)構(gòu)示意相比,更意在作為可以在系統(tǒng)管理模塊151-2中存在的各種特征的功能描述。實(shí)踐中,并且如本領(lǐng)域技術(shù)人員認(rèn)識(shí)到的,分開示出的程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以組合,并且一些程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以被分開。
圖2C-1是框圖,展示了根據(jù)一些實(shí)施例的集群管理模塊181-1,如圖1C中所示。集群管理模塊181-1通常包括用于執(zhí)行存儲(chǔ)在存儲(chǔ)器276-1中的模塊、程序和/或指令并且由此執(zhí)行處理操作的一個(gè)或多個(gè)處理單元(有時(shí)被稱為CPU或處理器)182-1、存儲(chǔ)器276-1、以及使這些部件互連的一根或多根通信總線278-1。所述一根或多根通信總線278-1可選地包括使系統(tǒng)部件互連并且控制系統(tǒng)部件之間的通信的電路(有時(shí)被稱為芯片組)。集群管理模塊181-1通過所述一根或多根通信總線278-1耦合至(多個(gè))附加模塊185。存儲(chǔ)器276-1包括高速隨機(jī)存取存儲(chǔ)器,如DRAM、SRAM、DDR RAM或者其他隨機(jī)存取固態(tài)存儲(chǔ)設(shè)備,并且可包括非易失性存儲(chǔ)器,如一個(gè)或多個(gè)磁盤存儲(chǔ)設(shè)備、光盤存儲(chǔ)設(shè)備、閃存設(shè)備、或者其他非易失性固態(tài)存儲(chǔ)設(shè)備。存儲(chǔ)器276-1可選地包括與(多個(gè))CPU 182-1遠(yuǎn)離地定位的一個(gè)或多個(gè)存儲(chǔ)設(shè)備。存儲(chǔ)器276-1或者替代性地在存儲(chǔ)器276-1內(nèi)的(多個(gè))非易失性存儲(chǔ)器設(shè)備包括非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在一些實(shí)施例中,存儲(chǔ)器276-1或存儲(chǔ)器276-1的非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)下述程序、模塊和數(shù)據(jù)結(jié)構(gòu)或其子集或超集:
集群映射模塊280-1,所述集群映射模塊用于將虛擬地址(例如,圖1C中由計(jì)算機(jī)系統(tǒng)172使用的)映射到中間地址(例如,圖1C中由存儲(chǔ)子系統(tǒng)192將所述中間地址映射到物理地址);
度量模塊282-1,所述度量模塊用于生成和/或獲取存儲(chǔ)設(shè)備(例如,圖1C的存儲(chǔ)設(shè)備194-1至194-n或194-j至194-k中任何一個(gè))的一個(gè)或多個(gè)度量;
觸發(fā)檢測(cè)模塊284-1,所述觸發(fā)檢測(cè)模塊用于檢測(cè)觸發(fā)條件(例如,根據(jù)存儲(chǔ)設(shè)備的一個(gè)或多個(gè)度量);
啟用模塊286-1,所述啟用模塊用于啟用與(例如,由觸發(fā)檢測(cè)模塊284-1檢測(cè)到的)觸發(fā)條件相關(guān)聯(lián)的改善過程;
通知模塊288-1,所述通知模塊用于將(例如,由觸發(fā)檢測(cè)模塊284-1檢測(cè)到的)觸發(fā)條件和/或所述觸發(fā)條件的不存在通知給存儲(chǔ)設(shè)備操作性地耦合的主機(jī);
改善模塊290-1,所述改善模塊用于執(zhí)行用于減小存儲(chǔ)設(shè)備(例如,圖1C的存儲(chǔ)設(shè)備194)的非易失存儲(chǔ)器的聲明容量的改善過程,所述改善模塊可選地包括:
o檢測(cè)模塊291-1,所述檢測(cè)模塊用于檢測(cè)用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā);
o利用模塊292-1,所述利用模塊用于減少存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的利用;以及
o容量模塊294-1,所述容量模塊用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量;
可選地,數(shù)據(jù)冗余模塊296-1,所述數(shù)據(jù)冗余模塊用于對(duì)數(shù)據(jù)進(jìn)行冗余編碼;以及
可選地,通信模塊298-1,所述通信模塊用于例如經(jīng)由存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)促進(jìn)與其他設(shè)備的通信。
上述要素中的每一個(gè)都可以被存儲(chǔ)在前面所提到的存儲(chǔ)器設(shè)備中的一個(gè)或多個(gè)中,并且與用于執(zhí)行上述功能的指令集相對(duì)應(yīng)。上述模塊或程序(即,指令集)不需要被實(shí)現(xiàn)為獨(dú)立的軟件程序、過程或模塊,從而在各個(gè)實(shí)施例中,可以組合或者以其他方式重新排列這些模塊的各個(gè)子集。在一些實(shí)施例中,存儲(chǔ)器276-1可保存以上定義的模塊和數(shù)據(jù)結(jié)構(gòu)的子集。此外,存儲(chǔ)器276-1可存儲(chǔ)以上沒有說明的另外的模塊和數(shù)據(jù)結(jié)構(gòu)。在一些實(shí)施例中,存儲(chǔ)在存儲(chǔ)器276-1中的程序、模塊和數(shù)據(jù)結(jié)構(gòu)或者存儲(chǔ)器276-1的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)提供用于實(shí)現(xiàn)以下所描述的一些方法的指令。在一些實(shí)施例中,這些模塊中的部分和全部可以利用將部分或全部模塊功能包含在內(nèi)的專用硬件電路來實(shí)現(xiàn)。
盡管圖2C-1示出了根據(jù)一些實(shí)施例的集群管理模塊181-1,但是圖2C-1與其意在作為在此所描述的實(shí)施例的結(jié)構(gòu)示意相比,更意在作為可以在集群管理模塊181-2中存在的各種特征的功能描述。實(shí)踐中,并且如本領(lǐng)域技術(shù)人員認(rèn)識(shí)到的,分開示出的程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以組合,并且一些程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以被分開。
圖2C-2是框圖,展示了根據(jù)一些實(shí)施例的集群管理模塊181-2,例如,集群管理模塊至少部分地位于主機(jī)中的實(shí)施例,如圖1C所示;在一些這種實(shí)施例中,存儲(chǔ)系統(tǒng)使用基于主機(jī)的集群管理。集群管理模塊181-2通常包括用于執(zhí)行存儲(chǔ)在存儲(chǔ)器276-2中的模塊、程序和/或指令并且由此執(zhí)行處理操作的一個(gè)或多個(gè)處理單元(有時(shí)被稱為CPU或處理器)182-2、存儲(chǔ)器276-2(有時(shí)被稱為主機(jī)存儲(chǔ)器)、以及使這些部件互連的一根或多根通信總線278-2。所述一根或多根通信總線278-2可選地包括使系統(tǒng)部件互連并且控制系統(tǒng)部件之間的通信的電路(有時(shí)被稱為芯片組)。集群管理模塊181-2通過所述一根或多根通信總線278-2耦合至集群控制器180。存儲(chǔ)器276-2包括高速隨機(jī)存取存儲(chǔ)器,如DRAM、SRAM、DDR RAM或者其他隨機(jī)存取固態(tài)存儲(chǔ)設(shè)備,并且可包括非易失性存儲(chǔ)器,如一個(gè)或多個(gè)磁盤存儲(chǔ)設(shè)備、光盤存儲(chǔ)設(shè)備、閃存設(shè)備、或者其他非易失性固態(tài)存儲(chǔ)設(shè)備。存儲(chǔ)器276-2可選地包括與(多個(gè))CPU 182-2遠(yuǎn)離地定位的一個(gè)或多個(gè)存儲(chǔ)設(shè)備。存儲(chǔ)器276-2或者替代性地在存儲(chǔ)器276-2內(nèi)的(多個(gè))非易失性存儲(chǔ)器設(shè)備包括非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在一些實(shí)施例中,存儲(chǔ)器276-2或存儲(chǔ)器276-2的非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)下述程序、模塊和數(shù)據(jù)結(jié)構(gòu)或其子集或超集:
集群映射模塊280-2,所述集群映射模塊用于將虛擬地址(例如,圖1C中由計(jì)算機(jī)系統(tǒng)172使用的)映射到中間地址(例如,圖1C中由存儲(chǔ)子系統(tǒng)192將所述中間地址映射到物理地址);
度量模塊282-2,所述度量模塊用于生成和/或獲取存儲(chǔ)設(shè)備(例如,圖1C的存儲(chǔ)設(shè)備194-1至194-n或194-j至194-k中任何一個(gè))的一個(gè)或多個(gè)度量;
觸發(fā)檢測(cè)模塊284-2,所述觸發(fā)檢測(cè)模塊用于檢測(cè)觸發(fā)條件(例如,根據(jù)存儲(chǔ)設(shè)備的一個(gè)或多個(gè)度量);
啟用模塊286-2,所述啟用模塊用于啟用與(例如,由觸發(fā)檢測(cè)模塊284-2檢測(cè)到的)觸發(fā)條件相關(guān)聯(lián)的改善過程;
通知模塊288-2,所述通知模塊用于將(例如,由觸發(fā)檢測(cè)模塊284-2檢測(cè)到的)觸發(fā)條件和/或所述觸發(fā)條件的不存在通知給存儲(chǔ)設(shè)備操作性地耦合的主機(jī);
改善模塊290-2,所述改善模塊用于執(zhí)行用于減小存儲(chǔ)設(shè)備(例如,圖1C的存儲(chǔ)設(shè)備194)的非易失存儲(chǔ)器的聲明容量的改善過程,所述改善模塊可選地包括:
o檢測(cè)模塊291-2,所述檢測(cè)模塊用于檢測(cè)用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā);
o利用模塊292-2,所述利用模塊用于減少存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的利用;以及
o容量模塊294-2,所述容量模塊用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量;
可選地,數(shù)據(jù)冗余模塊296-2,所述數(shù)據(jù)冗余模塊用于對(duì)數(shù)據(jù)進(jìn)行冗余編碼;以及
可選地,通信模塊298-2,所述通信模塊用于例如經(jīng)由存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)促進(jìn)與其他設(shè)備的通信。
上述要素中的每一個(gè)都可以被存儲(chǔ)在前面所提到的存儲(chǔ)器設(shè)備中的一個(gè)或多個(gè)中,并且與用于執(zhí)行上述功能的指令集相對(duì)應(yīng)。上述模塊或程序(即,指令集)不需要被實(shí)現(xiàn)為獨(dú)立的軟件程序、過程或模塊,從而在各個(gè)實(shí)施例中,可以組合或者以其他方式重新排列這些模塊的各個(gè)子集。在一些實(shí)施例中,存儲(chǔ)器276-2可保存以上定義的模塊和數(shù)據(jù)結(jié)構(gòu)的子集。此外,存儲(chǔ)器276-2可存儲(chǔ)以上沒有說明的另外的模塊和數(shù)據(jù)結(jié)構(gòu)。在一些實(shí)施例中,存儲(chǔ)在存儲(chǔ)器276-2中的程序、模塊和數(shù)據(jù)結(jié)構(gòu)或者存儲(chǔ)器276-2的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)提供用于實(shí)現(xiàn)以下所描述的一些方法的指令。在一些實(shí)施例中,這些模塊中的部分和全部可以利用將部分或全部模塊功能包含在內(nèi)的專用硬件電路來實(shí)現(xiàn)。
盡管圖2C-2示出了根據(jù)一些實(shí)施例的集群管理模塊181-2,但是圖2C-2與其意在作為在此所描述的實(shí)施例的結(jié)構(gòu)示意相比,更意在作為可以在集群管理模塊181-2中存在的各種特征的功能描述。實(shí)踐中,并且如本領(lǐng)域技術(shù)人員認(rèn)識(shí)到的,分開示出的程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以組合,并且一些程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以被分開。
圖2D是框圖,展示了根據(jù)一些實(shí)施例的包括在圖2A-1的管理模塊121-1和/或圖2A-2的管理模塊121-2中的改善模塊230。如以上關(guān)于圖2A-1和圖2A-2所述,在一些實(shí)施例中,改善模塊230包括利用模塊232和容量模塊234。在一些實(shí)施例中,利用模塊232包括以下程序和/或模塊,或者其子集或超集:
修整模塊235,所述修整模塊用于從存儲(chǔ)設(shè)備修整之前寫入的不再由主機(jī)使用的數(shù)據(jù)(例如,圖3的非實(shí)時(shí)數(shù)據(jù)332)的至少一部分;
刪除模塊236,所述刪除模塊用于從存儲(chǔ)設(shè)備刪除主機(jī)使用的可丟棄數(shù)據(jù);以及
移動(dòng)模塊237,所述移動(dòng)模塊用于將主機(jī)使用的數(shù)據(jù)的一部分從一個(gè)存儲(chǔ)設(shè)備移動(dòng)到另一個(gè)存儲(chǔ)設(shè)備。
在一些實(shí)施例中,容量模塊234包括以下程序和/或模塊,或者其子集或超集:
LBA減小模塊238(有時(shí)被稱為邏輯地址減小模塊),所述LBA減小模塊用于縮小邏輯地址的范圍、減小邏輯地址計(jì)數(shù)和/或使特定的邏輯地址對(duì)于主機(jī)不可用;以及
通告模塊239,所述通告模塊用于通告存儲(chǔ)設(shè)備或存儲(chǔ)子系統(tǒng)的非易失性存儲(chǔ)器的聲明容量。
在一些實(shí)施例中,改善過程包括(例如,由利用模塊232執(zhí)行的)利用減少過程以及(例如,由容量模塊234執(zhí)行的)聲明容量減少過程。在一些實(shí)施例中,改善過程具有將由改善過程實(shí)現(xiàn)的目標(biāo)減少的聲明容量,并利用所述目標(biāo)減少的聲明容量來確定有待由改善過程實(shí)現(xiàn)的目標(biāo)利用減少量。在一些情況中,如當(dāng)改善過程具有將由改善過程實(shí)現(xiàn)的目標(biāo)減少的聲明容量,并且所利用的存儲(chǔ)設(shè)備的量小于所述目標(biāo)減少的聲明容量時(shí),所述目標(biāo)利用減少量為零。在這種情況下,執(zhí)行利用減少過程或者利用減少過程的一個(gè)或多個(gè)部分是不需要的并因此被跳過或放棄。此外,在一些實(shí)施例中,因?yàn)樵S多參數(shù)的值可能由于改善過程和/或正常存儲(chǔ)操作(例如,讀取、寫入、擦除、和修整或去映射操作)而改變,所以改善過程(例如,周期性地、半連續(xù)地、不規(guī)律地、初始地和/或最終地)重新計(jì)算或重新評(píng)估那些參數(shù)(比如,目標(biāo)減小的聲明容量和/或目標(biāo)利用減少量)。在一些情況下,根據(jù)重新計(jì)算或重新評(píng)估的參數(shù),利用減少重新進(jìn)行優(yōu)先級(jí)排序、重新安排或中止。盡管圖2D使用包括在圖2A-1和圖2A-2中的改善模塊230的示例,圖2D的描述類似地應(yīng)用于其他改善模塊(例如,圖2B-1的改善模塊260-1、圖2B-2的改善模塊260-2、圖2C-1的改善模塊290-1和/或圖2C-2的改善模塊290-2),并且為了簡(jiǎn)潔起見,在此不重復(fù)所述細(xì)節(jié)。
修整操作指示LBA空間(圖3的320)的特定部分被轉(zhuǎn)換成未分配的LBA空間(340),由此減小利用。修整操作通常包括使用于將邏輯地址空間中的邏輯地址轉(zhuǎn)化為存儲(chǔ)設(shè)備的物理地址空間中的物理地址的映射表(例如,圖4的映射表402)的一個(gè)或多個(gè)條目無效。由于所述修整操作,使用LBA空間的特定部分預(yù)先存儲(chǔ)的任何數(shù)據(jù)不再可用于主機(jī)(例如,被丟棄)。用于預(yù)先存儲(chǔ)這個(gè)數(shù)據(jù)的物理頁(yè)出于其他目的可以被重新使用。所述重新使用可以與修整操作時(shí)間上重合地或者在未來時(shí)間處(例如,在垃圾收集期間)完成。如別處所討論的,所述重新使用的物理頁(yè)可以用于在所述重新使用之前由那些相同的物理頁(yè)使用的編碼格式或不同冗余機(jī)制不同的編碼格式或不同的冗余機(jī)制而被使用。修整操作有時(shí)也被稱為去映射操作。如在此使用的,修整操作不必完全等同于SATA協(xié)議的修整操作。如在此使用的,去映射操作不必完全等同于SCSI協(xié)議的去映射操作。
圖3是根據(jù)一些實(shí)施例的邏輯地址(LBA)空間320(有時(shí)被稱為(LA)空間)的框圖。在一些實(shí)施例中,邏輯地址是從主機(jī)(例如,圖1A的計(jì)算機(jī)系統(tǒng)110、圖1B的計(jì)算機(jī)系統(tǒng)142和/或圖1C的計(jì)算機(jī)系統(tǒng)172)的角度來看,項(xiàng)(例如,文件或其他數(shù)據(jù))所駐留的地址。在一些實(shí)施例中,邏輯地址(例如,在LBA空間320中)由于映射函數(shù)或地址轉(zhuǎn)換器(例如,圖2A-1中包括轉(zhuǎn)換表212-1的函數(shù)或模塊,或者圖4中的映射表402)的操作而不同于物理地址(例如,在物理空間318中)。在一些實(shí)施例中,邏輯塊地址(LBA)被映射到物理閃存地址(例如,物理頁(yè)編號(hào)(PPN),包括組、塊和頁(yè)),如進(jìn)一步關(guān)于圖4所述。
在一些實(shí)施例中,邏輯地址空間包括已分配的邏輯地址空間(例如,已分配的LBA空間342)以及未分配的邏輯地址空間(例如,未分配的LBA空間340)。在一些實(shí)施例中,未分配的邏輯地址空間是在其處不存儲(chǔ)數(shù)據(jù)的邏輯地址空間。在一些實(shí)施例中,未分配的邏輯地址空間包括從未被寫入和/或已經(jīng)被丟棄的邏輯地址空間(預(yù)先寫入的數(shù)據(jù)可以通過修整或去映射操作被丟棄,并且有時(shí)被稱為修整邏輯地址空間)。例如,在圖3中,未分配的LBA空間340包括修整的LBA空間330。在一些實(shí)施例中,已分配的邏輯地址空間是由主機(jī)預(yù)先寫入包括不再由主機(jī)使用的數(shù)據(jù)(例如,非實(shí)時(shí)數(shù)據(jù)332)以及仍由主機(jī)使用的數(shù)據(jù)(例如,實(shí)時(shí)數(shù)據(jù)334)的預(yù)先寫入數(shù)據(jù)的邏輯地址空間。在一些實(shí)施例中,非實(shí)時(shí)數(shù)據(jù)是在邏輯地址空間的在文件系統(tǒng)的元數(shù)據(jù)中被標(biāo)記為空閑、可用或未使用的一部分中的數(shù)據(jù)。可選地,文件系統(tǒng)可以通過修整或去映射操作選擇將非實(shí)時(shí)地址空間轉(zhuǎn)換為未分配的地址空間。
在圖3中,已分配的LBA空間342表示分配空間的量,而未分配的LBA空間340表示未分配空間的量。然而,已分配的LBA空間342和未分配的LBA空間340都不必是LBA空間320的單個(gè)連續(xù)區(qū)域。類似地,圖3中的實(shí)時(shí)數(shù)據(jù)334和非實(shí)時(shí)數(shù)據(jù)332分別表示實(shí)時(shí)數(shù)據(jù)和非實(shí)時(shí)數(shù)據(jù)的量(例如,LBA計(jì)數(shù))。然而,實(shí)時(shí)數(shù)據(jù)334和非實(shí)時(shí)數(shù)據(jù)332都不必是LBA空間320或已分配的LBA空間342的單個(gè)連續(xù)區(qū)域,圖3中所展示的實(shí)時(shí)數(shù)據(jù)334和非實(shí)時(shí)數(shù)據(jù)332的位置也不與實(shí)時(shí)數(shù)據(jù)和非實(shí)時(shí)數(shù)據(jù)的邏輯或物理地址值具有任何關(guān)聯(lián)。通常,實(shí)時(shí)數(shù)據(jù)334和/或非實(shí)時(shí)數(shù)據(jù)332將存在于LBA空間320的多個(gè)區(qū)域中,并因此不是連續(xù)的??蛇x地,然而,可以執(zhí)行重映射或聚結(jié)過程(其也可被稱為垃圾重組),以將部分或全部實(shí)時(shí)數(shù)據(jù)334合并為L(zhǎng)BA空間320的連續(xù)區(qū)域。
已分配的邏輯地址空間(342)是被利用的空間。在此討論的利用減少模塊和過程是其目的用于減小已分配的邏輯地址空間的大小并因此減少存儲(chǔ)設(shè)備或數(shù)據(jù)存儲(chǔ)系統(tǒng)中的非易失性存儲(chǔ)器的利用的模塊、應(yīng)用和過程。典型地,減小已分配的邏輯地址空間的大小要求減小由存儲(chǔ)設(shè)備或存儲(chǔ)系統(tǒng)存儲(chǔ)的實(shí)時(shí)數(shù)據(jù)334和/或非實(shí)時(shí)數(shù)據(jù)332的量,由此將已分配的邏輯地址空間的一部分轉(zhuǎn)換為未分配的邏輯地址空間。在一些實(shí)施例中,非實(shí)時(shí)數(shù)據(jù)332的一部分被修整,并由此通過使用修整或去映射操作被轉(zhuǎn)換為未分配的邏輯地址空間。
在一些實(shí)施例中,邏輯地址可能在LBA空間(320)之外并因此不可用。之前可用的邏輯地址可以通過減小LBA空間(320)的大小而不可用,從而使得所述地址不再位于LBA空間(320)內(nèi)并因此變得不可用(例如,對(duì)在LBA空間(320)之外的邏輯地址請(qǐng)求正常的存儲(chǔ)操作是未定義的操作或不正確的操作)。如以上指出的,LBA空間(320)可以通過至存儲(chǔ)設(shè)備的命令被縮小,或者主機(jī)可以將其對(duì)邏輯地址的使用限制到邏輯地址的縮小范圍,因此有效地縮小LBA空間(320)。
在一些實(shí)施例中,已分配的邏輯地址(342)的總數(shù)被限制。在這種實(shí)施例中,特定的邏輯地址被認(rèn)為不可用,如果使用它們將致使系統(tǒng)超出限制的總數(shù)。例如,如果已分配的邏輯地址的總數(shù)被限制為五并且當(dāng)前已分配的地址為1、3、19、45和273838,則除了這五個(gè)之外的任何具體的邏輯地址(例如,6、15、137等)將被認(rèn)為是不可用的。
圖4是根據(jù)一些實(shí)施例的映射表402和物理地址空間410的框圖。在一些實(shí)施例中,映射表402用于將邏輯塊地址(LBA)從主機(jī)(例如,圖1A的計(jì)算機(jī)系統(tǒng)110)的角度轉(zhuǎn)換為存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120)中的非易失性存儲(chǔ)器的在物理地址空間(例如,物理地址空間410)中的物理地址。在一些實(shí)施例中,LBA是可由主機(jī)訪問的最小單元存儲(chǔ)數(shù)據(jù)的地址(例如,512B或4096B)。在一些實(shí)施例中,LBA是在邏輯地址空間中按數(shù)值順序組織的整數(shù)序列。在一些實(shí)施例中,LBA是從邏輯地址空間選擇的但不必連續(xù)的整數(shù)。例如,在利用稀疏邏輯地址空間的實(shí)現(xiàn)方式中,可尋址空間的量由可以被已分配的邏輯地址數(shù)量極限控制,但是那些邏輯地址分布在比可以被分配(例如,至主機(jī)或者主機(jī)或客戶端的集合)的邏輯地址的最大數(shù)量更大的地址空間之上。
在一些實(shí)施例中,映射表402存儲(chǔ)在與存儲(chǔ)設(shè)備相關(guān)聯(lián)的存儲(chǔ)器中(例如,在圖2A-1的存儲(chǔ)器206-1中,作為轉(zhuǎn)換表212-1的一部分)。在一些實(shí)施例中,物理地址是物理頁(yè)編號(hào)(PPN),包括組編號(hào)、塊編號(hào)和頁(yè)編號(hào)。在圖4中所示的示例中,LBA 0被映射至物理地址空間410的組1(例如,組420-1)、塊3(例如,塊421-3)、頁(yè)37(頁(yè)未在圖4中示出)。圖4示出物理地址空間410包括多個(gè)非易失性存儲(chǔ)器塊421、422、423、424。如上所述,并且如在塊424-p的表示中所示,存儲(chǔ)設(shè)備的物理地址空間中的每個(gè)非易失性存儲(chǔ)器塊通常包括多個(gè)頁(yè)426,其中,每一頁(yè)是塊的最小單獨(dú)可訪問(例如,可讀或可寫)部分的實(shí)例。盡管圖4展示了邏輯地址至物理地址映射的一個(gè)示例,在其他實(shí)施例中,可以使用不同的映射。例如,在一些實(shí)施例中,邏輯地址條目中的每個(gè)邏輯地址條目與多個(gè)(例如,八個(gè))邏輯地址相對(duì)應(yīng)(例如,每邏輯地址條目8個(gè)LBA)。在一些實(shí)施例中,映射表402不需要包含連續(xù)的LBA地址并且可以以任何方式被組織以促進(jìn)查找操作,例如,哈希表、二叉樹、內(nèi)容可尋址存儲(chǔ)器等。
如以下關(guān)于圖5A所討論的,單級(jí)閃存單元(SLC)存儲(chǔ)一比特(“0”或“1”)。因此,SLC存儲(chǔ)器設(shè)備的存儲(chǔ)密度為每存儲(chǔ)器單元一比特信息。然而,多級(jí)閃存單元(MLC)通過使用在存儲(chǔ)器單元的總電壓范圍內(nèi)的不同范圍可以每單元存儲(chǔ)兩比特或更多比特的信息,以表示多比特比特元組。進(jìn)而,MLC存儲(chǔ)器設(shè)備的存儲(chǔ)密度為每單元多比特(例如,每存儲(chǔ)器單元兩比特)。
閃存設(shè)備利用存儲(chǔ)器單元來將數(shù)據(jù)存儲(chǔ)為電性值,如電荷或電壓。每個(gè)閃存單元通常包括單晶體管,所述單晶體管具有用于存儲(chǔ)電荷的浮柵,所述浮柵修改晶體管的閾值電壓(即,導(dǎo)通晶體管所需的電壓)。電荷大小以及相應(yīng)的閾值電壓用于表示一個(gè)或多個(gè)數(shù)據(jù)值。在一些實(shí)施例中,在讀操作期間,讀閾值電壓施加于晶體管的控制柵極并且所產(chǎn)生的感測(cè)電流或電壓被映射為數(shù)據(jù)值。
在閃存單元的背景下,術(shù)語(yǔ)“單元電壓”和“存儲(chǔ)器單元電壓”通常指存儲(chǔ)單元的閾值電壓,所述閾值電壓是需要施加于存儲(chǔ)器單元的晶體管的柵極以便由晶體管傳導(dǎo)電流的最小電壓。類似地,施加于閃存單元的讀閾值電壓(有時(shí)也被稱為讀信號(hào)、讀電壓和/或讀閾值)是施加于閃存單元的柵極以判定存儲(chǔ)器單元是否在所述柵極電壓處傳導(dǎo)電流的柵極電壓。在一些實(shí)施例中,當(dāng)閃存單元的晶體管在給定讀閾值電壓處傳導(dǎo)電流時(shí),指示所述單元電壓小于讀閾值電壓,針對(duì)所述讀操作的原始數(shù)據(jù)值為“1”并且另外地所述原始數(shù)據(jù)值為“0”。
圖5A是根據(jù)一些實(shí)施例的在單級(jí)閃存單元(SLC)中找到的電壓分布300a隨時(shí)間推移的簡(jiǎn)化預(yù)知圖。圖5A中示出的電壓分布300a出于說明目的已經(jīng)被簡(jiǎn)化。在這個(gè)示例中,SLC的電壓范圍約從NMOS晶體管的源極端子處的電壓VSS延伸為NMOS晶體管的漏極端子處的電壓VDD。這樣,電壓分布300a在VSS與VDD之間延伸。
源極電壓VSS與漏極電壓VDD之間的順序電壓范圍301和302用于分別表示相應(yīng)的比特值“1”和“0”。每個(gè)電壓范圍301、302具有對(duì)應(yīng)的中心電壓V1 301b、V0 302b。如以下所討論的,在許多情況下,響應(yīng)于施加的讀閾值電壓而感測(cè)到的存儲(chǔ)單元電流指示不同于與寫入存儲(chǔ)器單元中的對(duì)應(yīng)比特值相對(duì)應(yīng)的對(duì)應(yīng)中心電壓V1 301b或V0 302b的存儲(chǔ)器單元電壓。單元電壓和/或當(dāng)對(duì)存儲(chǔ)器單元進(jìn)行讀操作時(shí)感測(cè)到的單元電壓的誤差可以在寫操作、讀操作期間或者由于將數(shù)據(jù)寫入存儲(chǔ)器單元時(shí)與執(zhí)行讀操作以讀取存儲(chǔ)在存儲(chǔ)器單元中的數(shù)據(jù)時(shí)之間的單元電壓的“漂移”而發(fā)生。為了便于討論,這些影響統(tǒng)一描述為“單元電壓漂移”。每個(gè)電壓范圍301、302還可以具有對(duì)應(yīng)的電壓分布301a、302a,所述電壓分布可以由于以上定義的誤差誘導(dǎo)因素示例的任意數(shù)量的組合而發(fā)生。
在一些實(shí)現(xiàn)方式中,讀閾值電壓VR被施加在相鄰的中心電壓之間(例如,被施加在相鄰的中心電壓V1 301b與V0 302b之間的中間區(qū)域附近)。可選地,在一些實(shí)現(xiàn)方式中,讀閾值電壓位于電壓范圍301與302之間。在一些實(shí)現(xiàn)方式中,讀閾值電壓VR被施加在電壓分布301a與302a重疊位置附近的區(qū)域中,所述區(qū)域不必鄰近相鄰中心電壓V1 301b與V0 302b之間的中間區(qū)域。
為了增加閃存的存儲(chǔ)密度,閃存已經(jīng)從單級(jí)(SLC)單元閃存發(fā)展為多級(jí)單元(MLC)閃存,從而使得可以由每個(gè)存儲(chǔ)器單元存儲(chǔ)兩比特或更多比特。如以下參照?qǐng)D5B所討論的,MLC閃存設(shè)備用于通過使用在存儲(chǔ)器單元的總電壓范圍內(nèi)的電壓范圍來存儲(chǔ)多比特,以表示不同的比特元組。MLC閃存設(shè)備相比使用相同制造工藝產(chǎn)生的SLC閃存設(shè)備通常更易出錯(cuò),因?yàn)镸LC閃存設(shè)備的用于存儲(chǔ)不同數(shù)據(jù)值的電壓之間的有效電壓差更小。此外,由于任意數(shù)量的因素組合(如,電氣波動(dòng)、存儲(chǔ)介質(zhì)缺陷、操作狀態(tài)、設(shè)備歷史和/或讀寫電路),典型的誤差包括與將以其他方式代表特定比特元組的正確存儲(chǔ)的電壓范圍相鄰的電壓范圍內(nèi)的特定MLC中存儲(chǔ)的電壓電平。如以下參照?qǐng)D5B更詳細(xì)討論的,這種誤差的影響可以通過對(duì)數(shù)據(jù)進(jìn)行灰度編碼而減小,從而使得相鄰電壓范圍表示比特元組之間的單比特變化。
圖5B是根據(jù)一些實(shí)施例的在多級(jí)閃存單元(MLC)中找到的電壓分布300b隨時(shí)間推移的簡(jiǎn)化預(yù)知圖。圖5B中示出的電壓分布300b出于說明性目的已經(jīng)被簡(jiǎn)化。MLC的單元電壓約從NMOS晶體管的源極端子處的電壓VSS延伸為漏極端子處的電壓VDD。這樣,電壓分布300b在VSS與VDD之間延伸。
源極電壓VSS與漏極電壓VDD之間的順序電壓范圍311、312、313、314用于分別表示相應(yīng)的比特元組“11”“01”、“00”、“10”。每個(gè)電壓范圍311、312、313、314具有對(duì)應(yīng)的中心電壓311b、312b、313b、314b。每個(gè)電壓范圍311、312、313、314還具有對(duì)應(yīng)的電壓分布311a、312a、313a、314a,所述電壓分布可以由于任意數(shù)量的因素組合(如,電氣波動(dòng)、存儲(chǔ)介質(zhì)缺陷、操作狀態(tài)、設(shè)備歷史(例如,編程-擦除(P/E)循環(huán)數(shù)量)和/或讀寫電路的不完美性能或設(shè)計(jì))而發(fā)生。
理想上,在寫操作期間,MLC的浮柵上的電荷將被設(shè)置成使得所產(chǎn)生的單元電壓在范圍311、312、313、314之一的中心處,以便將相應(yīng)的比特元組寫入MLC中。確切地,所產(chǎn)生的單元電壓將被設(shè)置為V11 311b、V01 312b、V00 313b和V10 314b之一,以便寫入比特元組“11”“01”、“00”和“10”中的一個(gè)相應(yīng)元組。實(shí)際上,由于以上提及的因素,初始單元電壓可以不同于寫入MLC中的數(shù)據(jù)的中心電壓。
讀閾值電壓VRA、VRB與VRC被置于相鄰中心電壓之間(例如,被置于相鄰中心電壓之間的中間點(diǎn)處或附近),并且因此,將閾值電壓定義在電壓范圍311、312、313、314之間。在讀操作期間,施加讀閾值電壓VRA、VRB與VRC之一,以使用比較過程來確定單元電壓。然而,由于以上所討論的各因素,實(shí)際單元電壓和/或當(dāng)對(duì)MLC進(jìn)行讀操作時(shí)接收的單元電壓可以不同于與寫入單元中的數(shù)據(jù)值相對(duì)應(yīng)的對(duì)應(yīng)中心電壓V11 311b、V01 312b、V00 313b和V10 314b。例如,實(shí)際單元電壓可以整體不同于電壓范圍,強(qiáng)烈地指示MLC正存儲(chǔ)與寫入MLC中不同的比特元組。更一般地,實(shí)際單元電壓可以接近讀比較電壓之一,使得難以肯定地確定哪兩個(gè)相鄰的比特元組被MLC存儲(chǔ)。
單元電壓和/或當(dāng)對(duì)MLC進(jìn)行讀操作時(shí)接收到的單元電壓的誤差可以在寫操作、讀操作期間或者由于將數(shù)據(jù)寫入MLC時(shí)與執(zhí)行讀操作以讀取存儲(chǔ)在MLC中的數(shù)據(jù)時(shí)之間的單元電壓的“漂移”而發(fā)生。為了便于討論,單元電壓和/或當(dāng)對(duì)MLC進(jìn)行讀操作時(shí)接收到的單元電壓的誤差有時(shí)統(tǒng)一被稱為“單元電壓漂移”。
一種用于減小從一個(gè)電壓范圍到相鄰電壓范圍的單元電壓漂移影響的方式是對(duì)比特元組進(jìn)行灰度編碼。對(duì)比特元組進(jìn)行灰度編碼包括約束比特元組的分配,從而使得特定電壓范圍的對(duì)應(yīng)比特元組與相鄰電壓范圍的對(duì)應(yīng)比特元組相差僅一比特。例如,如圖5B中所示,相鄰范圍301和302的相應(yīng)比特元組分別為“11”和“01”,相鄰范圍302和303的相應(yīng)比特元組分別為“01”和“00”,并且相鄰范圍303和304的相應(yīng)比特元組分別為“00”和“10”。使用灰度編碼,如果單元電壓偏移接近讀比較電壓電平,則誤差通常被限制為2比特比特元組內(nèi)的單比特。
盡管圖5B的描述使用q=2(即,在MLC閃存中每單元2比特)的示例,本領(lǐng)域技術(shù)人員將理解的是,本文描述的實(shí)施例可以擴(kuò)展至每單元具有多于四個(gè)可能狀態(tài)的存儲(chǔ)器單元,每單元產(chǎn)生多于兩比特的信息。例如,在一些實(shí)施例中,三級(jí)存儲(chǔ)器單元(TLC)每單元具有八個(gè)可能的狀態(tài),每單元產(chǎn)生三比特信息。作為另一個(gè)示例,在一些實(shí)施例中,四級(jí)存儲(chǔ)器單元(QLC)每單元具有16個(gè)可能的狀態(tài),每單元產(chǎn)生四比特信息。作為另一個(gè)示例,在一些實(shí)施例中,一個(gè)單元僅可以存儲(chǔ)6個(gè)狀態(tài),每單元產(chǎn)生約2.5比特的信息,意味著兩個(gè)在一起的單元將提供36個(gè)可能的狀態(tài),每單元對(duì)存儲(chǔ)5比特的信息綽綽有余。
圖6展示了根據(jù)一些實(shí)施例的管理存儲(chǔ)系統(tǒng)的方法600的流程圖表示。至少在一些實(shí)施例中,方法600由存儲(chǔ)設(shè)備(例如,圖1A中的存儲(chǔ)設(shè)備120)或存儲(chǔ)設(shè)備的一個(gè)或多個(gè)部件(例如,圖1A中的存儲(chǔ)控制器124和/或存儲(chǔ)介質(zhì)130)執(zhí)行,其中,存儲(chǔ)設(shè)備與主機(jī)系統(tǒng)(例如,圖1A中的計(jì)算機(jī)系統(tǒng)110)操作性地耦合。在一些實(shí)施例中,方法600由存儲(chǔ)在非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中并由設(shè)備的一個(gè)或多個(gè)處理器(如圖1A和圖2A-1中所示出的管理模塊121-1的一個(gè)或多個(gè)處理單元(CPU)122-1)執(zhí)行的指令進(jìn)行控制。在一些實(shí)施例中,方法600由存儲(chǔ)系統(tǒng)(例如,圖1A的數(shù)據(jù)存儲(chǔ)系統(tǒng)100、圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140、和/或圖1C的存儲(chǔ)系統(tǒng)170)或存儲(chǔ)系統(tǒng)的一個(gè)或多個(gè)部件(例如,圖1A的計(jì)算機(jī)系統(tǒng)110和/或存儲(chǔ)設(shè)備120、圖1B的存儲(chǔ)系統(tǒng)控制器150、和/或圖1C的集群控制器180)執(zhí)行。在一些實(shí)施例中,在主機(jī)(例如,圖1A的計(jì)算機(jī)系統(tǒng)110、圖1B的從計(jì)算機(jī)系統(tǒng)142、和/或圖1C的計(jì)算機(jī)系統(tǒng)172)處執(zhí)行方法600的操作中的一些操作,并且向存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120)和/或存儲(chǔ)系統(tǒng)(例如,圖1B的存儲(chǔ)系統(tǒng)控制器150、和/或圖1C的集群控制器180)的一個(gè)或多個(gè)子系統(tǒng)傳輸信息。在一些實(shí)施例中,方法600至少部分地由存儲(chǔ)在非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中并由存儲(chǔ)系統(tǒng)的子系統(tǒng)的一個(gè)或多個(gè)處理器(如圖1B和圖2B-1中所示出的系統(tǒng)管理模塊151-1的一個(gè)或多個(gè)處理單元(CPU)152-1或者圖1C和圖2C-1中所示出的集群管理模塊181-1的一個(gè)或多個(gè)處理單元(CPU)182-1)執(zhí)行的指令進(jìn)行控制。在一些實(shí)施例中,方法600至少部分地由存儲(chǔ)在非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中并由主機(jī)的一個(gè)或多個(gè)處理器(圖1A、圖1B和圖1C中未示出的主機(jī)的處理器)執(zhí)行的指令控制。為便于解釋,以下描述了由存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120)執(zhí)行的方法600。然而,本領(lǐng)域的技術(shù)人員將理解的是,在其他實(shí)施例中,在方法600中所描述的操作中的一項(xiàng)或多項(xiàng)操作由主機(jī)(例如,圖1A的計(jì)算機(jī)系統(tǒng)110、圖1B的從計(jì)算機(jī)系統(tǒng)142、和/或圖1C的計(jì)算機(jī)系統(tǒng)172)和/或存儲(chǔ)系統(tǒng)的不同于存儲(chǔ)設(shè)備的一個(gè)或多個(gè)子系統(tǒng)(例如,圖1B的存儲(chǔ)系統(tǒng)控制器150和/或圖1C的集群控制器180)執(zhí)行。
存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120)根據(jù)存儲(chǔ)設(shè)備的一個(gè)或多個(gè)度量(例如,包括與存儲(chǔ)設(shè)備保留數(shù)據(jù)的能力相對(duì)應(yīng)的一個(gè)或多個(gè)狀態(tài)度量、與存儲(chǔ)設(shè)備的性能相對(duì)應(yīng)的一個(gè)或多個(gè)性能度量、與存儲(chǔ)設(shè)備上的磨損相對(duì)應(yīng)的一個(gè)或多個(gè)磨損度量、和/或一個(gè)或多個(gè)時(shí)間度量)來觸發(fā)(602)用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的條件。存儲(chǔ)設(shè)備的度量包括存儲(chǔ)設(shè)備的非易失性存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)的度量(例如,磨損度量,如P/E循環(huán)計(jì)數(shù)、寫操作計(jì)數(shù)等),但不必受限于這些度量。例如,存儲(chǔ)設(shè)備的一些度量(例如,一些性能度量,如延遲度量、測(cè)量完成寫操作或擦除操作需要多久或需要多少次操作的度量等)反映存儲(chǔ)介質(zhì)性能以及控制器和/或其他存儲(chǔ)設(shè)備部件性能兩者。
在一些實(shí)施例中,存儲(chǔ)設(shè)備用于確定觸發(fā)條件的度量包括存儲(chǔ)設(shè)備的寫放大度量。在一些實(shí)施例中,存儲(chǔ)設(shè)備的用于確定觸發(fā)條件的另一個(gè)度量是預(yù)留空間度量(例如,超過存儲(chǔ)設(shè)備的聲明容量的總存儲(chǔ)容量的數(shù)量或百分比、和/或在多個(gè)存儲(chǔ)器塊(或存儲(chǔ)設(shè)備的其他部分)從當(dāng)前編碼格式(例如,TLC、MLC和/或數(shù)據(jù)冗余機(jī)制)投射轉(zhuǎn)換為較低存儲(chǔ)密度編碼格式(例如,MLC、SLC和/或數(shù)據(jù)冗余機(jī)制)之后超過存儲(chǔ)設(shè)備的聲明容量的總存儲(chǔ)容量的數(shù)量或百分比)。例如,在一些實(shí)施例中,如果與由于磨損或由于塊(或其他部分)故障而從服務(wù)中去除(例如,已經(jīng)或?qū)姆?wù)中去除)以滿足服務(wù)度量的預(yù)定義質(zhì)量的存儲(chǔ)設(shè)備的多個(gè)塊(或其他部分)相對(duì)應(yīng)的投射的預(yù)留空間度量下降到預(yù)定義閾值(例如,非零閾值,2%或5%等)以下,或者下降到根據(jù)存儲(chǔ)設(shè)備的測(cè)量的或投射的寫放大而確定的閾值以下,則觸發(fā)條件被確定。
寫放大是一種現(xiàn)象,其中,寫入存儲(chǔ)介質(zhì)(例如,存儲(chǔ)設(shè)備120中的存儲(chǔ)介質(zhì)130)的實(shí)際物理數(shù)據(jù)量是由主機(jī)(例如,計(jì)算機(jī)系統(tǒng)110,有時(shí)被稱為主機(jī))寫入介質(zhì)的邏輯數(shù)據(jù)量的倍數(shù)。如以上所討論的,當(dāng)存儲(chǔ)介質(zhì)的塊在其可以被重寫之前必須被擦除時(shí),用于執(zhí)行這些操作的垃圾收集過程一次或多次產(chǎn)生重寫數(shù)據(jù)。這個(gè)倍乘效應(yīng)增加了在存儲(chǔ)介質(zhì)的壽命之上所要求的寫次數(shù),其縮短了可以可靠操作的時(shí)間。用于計(jì)算存儲(chǔ)系統(tǒng)的寫放大的公式由以下等式給出:
任何基于閃存的數(shù)據(jù)存儲(chǔ)系統(tǒng)架構(gòu)的目標(biāo)之一是盡可能地減少寫放大,從而使得可用的持久性用于滿足存儲(chǔ)介質(zhì)可靠性和保修規(guī)格。更高的系統(tǒng)持久性還導(dǎo)致更低的成本,因?yàn)榇鎯?chǔ)系統(tǒng)可能需要更少的預(yù)留空間。通過減少寫放大,存儲(chǔ)介質(zhì)的持久性增加并且存儲(chǔ)系統(tǒng)的整體成本降低。通常,垃圾收集是在具有最少數(shù)量的有效頁(yè)的擦除塊上執(zhí)行的,以獲得最佳的性能和最佳的寫放大。
在一些實(shí)施例中,根據(jù)所述一個(gè)或多個(gè)度量的非線性和/或線性組合來檢測(cè)觸發(fā)條件。例如,在一些實(shí)施例中,通過將磨損度量(如,P/E循環(huán)計(jì)數(shù))與之前確定的值(例如,閾值)進(jìn)行比較來檢測(cè)觸發(fā)條件。在一些實(shí)施例中,觸發(fā)條件還可以通過其他手段(例如,通過人類操作員)來斷言或者通過人類操作員來調(diào)度。例如,由于資源的預(yù)期可用性或不可用性,可能期望發(fā)起改善過程。例如,由于存儲(chǔ)設(shè)備的性能特性(包括可靠性)改變,可能期望發(fā)起改善過程。
在一些實(shí)施例中,根據(jù)對(duì)所述一個(gè)或多個(gè)度量的歷史知識(shí)來檢測(cè)觸發(fā)條件。例如,歷史知識(shí)可以是一個(gè)或多個(gè)度量的運(yùn)行平均值。在另一個(gè)示例中,歷史知識(shí)可以用于確定(例如,計(jì)算)一個(gè)或多個(gè)度量在未來特定時(shí)間(例如,未來的小時(shí)、天、周、或月)的一個(gè)或多個(gè)預(yù)計(jì)值,并且觸發(fā)條件可以根據(jù)一個(gè)或多個(gè)投射值而被檢測(cè)到。后面的方法可以具體地有助于避免(例如,由于磨損)導(dǎo)致數(shù)據(jù)丟失的事件,或者更具體地用于避免顯著地影響由存儲(chǔ)系統(tǒng)提供的服務(wù)質(zhì)量的事件,并且用于使存儲(chǔ)系統(tǒng)能夠在緊急需要這樣做之前進(jìn)行改善測(cè)量。例如,在一些實(shí)施例中,通過將歷史磨損度量(如,P/E循環(huán)計(jì)數(shù))與之前確定的值進(jìn)行比較來檢測(cè)觸發(fā)條件,從而預(yù)測(cè)存儲(chǔ)介質(zhì)的一部分的磨損。類似地,在一些實(shí)施例中,通過將歷史度量(如,誤碼率(BER)、或度量變化率、(存儲(chǔ)介質(zhì)或存儲(chǔ)介質(zhì)的一部分的)BER、或投射值(例如,在未來具體時(shí)間處的投射BER率,如基于當(dāng)前的或歷史的BER以及BER的變化率確定的))與之前確定的值進(jìn)行比較來檢測(cè)觸發(fā)條件,從而預(yù)測(cè)由于誤差校正的增加的計(jì)算要求引起的性能降級(jí)。
在具有多個(gè)存儲(chǔ)設(shè)備的存儲(chǔ)系統(tǒng)中,觸發(fā)條件可以取決于從多個(gè)存儲(chǔ)設(shè)備獲得的度量。改善過程在或者按順序或者并行地在每次在多于一個(gè)的存儲(chǔ)設(shè)備上操作。例如,存儲(chǔ)系統(tǒng)可以具有與當(dāng)前正由改善過程并行操作的存儲(chǔ)設(shè)備數(shù)量無關(guān)的固定最大容量減小速率(例如,當(dāng)減少利用時(shí),存儲(chǔ)設(shè)備之間的最大數(shù)據(jù)移動(dòng)速率)。觸發(fā)條件應(yīng)該包括單獨(dú)地以及組合地考慮:當(dāng)確定目標(biāo)容量減少時(shí)多個(gè)存儲(chǔ)設(shè)備的度量;以及由于所述固定最大速率對(duì)改善過程的調(diào)度。
存儲(chǔ)設(shè)備將用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的觸發(fā)條件通知(604)給與存儲(chǔ)設(shè)備操作性地耦合的主機(jī)(例如,圖1A的計(jì)算機(jī)系統(tǒng)110、圖1B的計(jì)算機(jī)系統(tǒng)142、圖1C的計(jì)算機(jī)系統(tǒng)172、圖1B的存儲(chǔ)系統(tǒng)控制器150、和/或圖1C的集群控制器180)。在一些實(shí)施例中,當(dāng)接收觸發(fā)條件通知時(shí),主機(jī)發(fā)送改善觸發(fā)以發(fā)起改善過程(606)。
存儲(chǔ)設(shè)備或主機(jī)檢測(cè)改善觸發(fā)并且根據(jù)檢測(cè)到的改善觸發(fā)來執(zhí)行改善過程(606),以減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量。在一些實(shí)施例中,改善過程包括用于減少利用的過程(608)、用于減小聲明容量的過程(610)、和/或用于通告(612)所減小的聲明容量的過程。如以上關(guān)于圖2D所討論的,在一些實(shí)施例中,改善過程(606)包括利用減少過程(608)(例如,由圖2A-1和圖2A-2的利用模塊232、圖2B-1和圖2B-2的利用模塊262、或圖2C-1和圖2C-2的利用模塊292執(zhí)行)和/或聲明容量減小過程(610)(例如,由圖2A-1和圖2A-2的容量模塊234、圖2B-1和圖2B-2的容量模塊264、或圖2C-1和圖2C-2的容量模塊294執(zhí)行)。在一些情況下,如當(dāng)由主機(jī)利用的存儲(chǔ)設(shè)備的量小于減小的聲明容量時(shí),跳過或放棄執(zhí)行用于減少利用的過程(608)或者用于減少利用的過程的一個(gè)或多個(gè)部分。在一些實(shí)施例中,盡管圖6示出操作608、610和612為改善過程(606)的順序過程,但是這些過程可以是重疊的、不按順序的和/或以不同順序執(zhí)行的。
在一些實(shí)施例中,在圖6中上述操作(例如,操作602、604和/或606)之前,方法600包括減小(601)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的預(yù)留空間。如以上所描述的,預(yù)留空間指超過存儲(chǔ)設(shè)備的聲明容量的總存儲(chǔ)容量的數(shù)量或百分比。在一些實(shí)施例中,預(yù)留空間指用于存儲(chǔ)用戶數(shù)據(jù)(例如,存儲(chǔ)在代表主機(jī)或主機(jī)系統(tǒng)的存儲(chǔ)系統(tǒng)中的數(shù)據(jù))的存儲(chǔ)設(shè)備的物理容量(例如,比留出用于管理數(shù)據(jù)結(jié)構(gòu)和元數(shù)據(jù)的容量少的物理容量)與被呈現(xiàn)為可用于主機(jī)或用戶的邏輯容量之差。例如,在一些實(shí)施例中,如果存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器具有總共12GB存儲(chǔ)容量(例如,用于存儲(chǔ)用戶數(shù)據(jù)的總存儲(chǔ)容量)和10GB聲明容量,那么存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器具有2GB預(yù)留空間。不像作為可用于主機(jī)的存儲(chǔ)容量的聲明容量,預(yù)留空間的額外容量不可見于主機(jī)作為可用存儲(chǔ)。相反,預(yù)留空間用于增加存儲(chǔ)設(shè)備的持久性(例如,通過隨時(shí)間推移跨較大數(shù)量的塊和/或頁(yè)分布全部數(shù)量的寫入和擦除)、提高性能(例如,通過提供附加的緩沖空間來管理P/E循環(huán)并提高寫操作將具有對(duì)預(yù)先擦除的塊的中間訪問的可能性)、以及減小寫放大。
在一些實(shí)施例中,減小(601)預(yù)留空間包括:(1)檢測(cè)存儲(chǔ)系統(tǒng)的存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的第一磨損狀況,其中,存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的總存儲(chǔ)容量包括聲明容量和預(yù)留空間;并且(2)響應(yīng)于檢測(cè)第一磨損狀況而執(zhí)行補(bǔ)救動(dòng)作,所述補(bǔ)救動(dòng)作減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的預(yù)留空間而不減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量。在一些實(shí)施例中,執(zhí)行減小預(yù)留空間的補(bǔ)救動(dòng)作包括將非易失性存儲(chǔ)器的一個(gè)或多個(gè)塊標(biāo)志為不可用。在一些實(shí)施例中,執(zhí)行減小預(yù)留空間的補(bǔ)救動(dòng)作包括將一個(gè)或多個(gè)MLC塊轉(zhuǎn)換為SLC,或者更具體地,改變非易失性存儲(chǔ)器的一個(gè)或多個(gè)塊的物理編碼格式。在一些實(shí)施例中,減小預(yù)留空間是由(例如,分別在圖2A-1和圖2A-2的存儲(chǔ)器206中、在圖2B-1和圖2B-2的存儲(chǔ)器246中、或在圖2C-1和圖2C-1的存儲(chǔ)器276中,但未明確示出)管理模塊121、系統(tǒng)管理模塊151或集群管理模塊181的預(yù)留空間模塊執(zhí)行的。此外,在一些情況或在一些實(shí)施例中,在執(zhí)行第一時(shí)間操作602之前,多次執(zhí)行預(yù)留空間減小操作601。例如,預(yù)留空間減小操作601可以在檢測(cè)預(yù)定義的磨損狀況的多次中的每一次中重復(fù),直到預(yù)留空間下降或低于預(yù)定義的最小水平。
在一些實(shí)施例中,如以上關(guān)于操作602所描述的,根據(jù)存儲(chǔ)設(shè)備的一個(gè)或多個(gè)度量(例如,包括與存儲(chǔ)設(shè)備保留數(shù)據(jù)的能力相對(duì)應(yīng)的一個(gè)或多個(gè)狀態(tài)度量、與存儲(chǔ)設(shè)備的性能相對(duì)應(yīng)的一個(gè)或多個(gè)性能度量、與存儲(chǔ)設(shè)備的磨損相對(duì)應(yīng)的一個(gè)或多個(gè)磨損度量、和/或一個(gè)或多個(gè)時(shí)間度量)來檢測(cè)第一磨損狀況。在一些實(shí)施例中,根據(jù)確定存儲(chǔ)設(shè)備的一個(gè)或多個(gè)度量滿足第一標(biāo)準(zhǔn)并且存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的預(yù)留空間大于預(yù)定義的閾值(例如,聲明容量的2%、至少100個(gè)塊或40個(gè)塊+n%聲明容量等)來檢測(cè)第一磨損狀況。
在一些實(shí)施例中,檢測(cè)觸發(fā)條件(如以上關(guān)于操作602所描述的)包括檢測(cè)不同于第一磨損狀況的第二磨損狀況。例如,在一些實(shí)施例中,根據(jù)確定存儲(chǔ)設(shè)備的一個(gè)或多個(gè)度量滿足第二標(biāo)準(zhǔn)(例如,針對(duì)第一磨損狀況的第一標(biāo)準(zhǔn)或另一個(gè)標(biāo)準(zhǔn))并且存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的預(yù)留空間小于或等于(例如,不大于)預(yù)定義的閾值(例如,聲明容量的2%、至少100個(gè)塊或40個(gè)塊+n%聲明容量等)來檢測(cè)觸發(fā)條件(或第二磨損狀況)。
圖7A至圖7D展示了根據(jù)一些實(shí)施例的管理存儲(chǔ)系統(tǒng)的方法700的流程圖表示。在一些實(shí)施例中,方法700包括:檢測(cè)(702)用于減小存儲(chǔ)系統(tǒng)(例如,圖1A的數(shù)據(jù)存儲(chǔ)系統(tǒng)100、圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140、或圖1C的數(shù)據(jù)存儲(chǔ)系統(tǒng)170)的存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120、或圖1B的存儲(chǔ)設(shè)備160-1至160-m中的任何存儲(chǔ)設(shè)備、或圖1C的存儲(chǔ)設(shè)備194-1至194-n或194-j至194-k中的任何存儲(chǔ)設(shè)備)的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā);以及根據(jù)檢測(cè)到的改善觸發(fā),執(zhí)行(704)用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程,所述執(zhí)行包括:變更存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的至少一部分的編碼格式;以及減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量。數(shù)據(jù)的編碼格式包括與使用如以上所描述的冗余機(jī)制中的一個(gè)或多個(gè)冗余機(jī)制來對(duì)數(shù)據(jù)進(jìn)行的邏輯編碼相組合的對(duì)存儲(chǔ)介質(zhì)中的數(shù)據(jù)的物理編碼。非易失性存儲(chǔ)器的一部分的物理編碼格式是包括非易失性存儲(chǔ)器的所述部分的存儲(chǔ)器單元的物理編碼格式,并且指示每存儲(chǔ)器單元可存儲(chǔ)的信息的比特?cái)?shù)。如以上關(guān)于圖5A和圖5B而描述的,物理編碼格式的示例包括每存儲(chǔ)器單元分別能夠存儲(chǔ)高達(dá)一個(gè)、二個(gè)、三個(gè)、和四個(gè)比特的單層閃存單元(SLC)、多層閃存單元(MLC)、三層閃存單元(TLC)、和四層存儲(chǔ)器單元(QLC)。物理編碼格式可以進(jìn)一步包括用于每存儲(chǔ)器單元信息的非整數(shù)數(shù)量的比特的其他物理編碼格式。對(duì)編碼格式的變更可以涉及變更物理編碼格式或(多個(gè))冗余機(jī)制或者物理編碼格式和(多個(gè))冗余機(jī)制兩者。在一些實(shí)施例中,對(duì)編碼格式的變更是多步驟順序。在此順序的第一步驟中,做出或者記錄對(duì)新編碼格式的指示。此指示將通知隨后操作使用所指示的(例如,更低密度)編碼格式。在隨后步驟(例如,垃圾收集)中,將使用新編碼格式來記錄數(shù)據(jù)。在一些實(shí)施例中,減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量包括減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的對(duì)主機(jī)可用的存儲(chǔ)容量。存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量有時(shí)被稱為通告容量,并且通常被主機(jī)的操作系統(tǒng)和/或文件系統(tǒng)用作主機(jī)的操作系統(tǒng)或文件系統(tǒng)將試圖分配的最大容量。
在一些實(shí)施例中,由改善模塊(例如,圖2A-1、圖2A-2或圖2D的改善模塊230、圖2B-1或圖2B-2的260、或圖2C-1或圖2C-2的290)或其部件(例如,圖2A-1、圖2A-2或圖2D的檢測(cè)模塊231、圖2B-1或圖2B-2的261、或圖2C-1或2C-2的291)檢測(cè)(702)改善觸發(fā)。在一些實(shí)施例中,檢測(cè)改善觸發(fā)包括接收或生成改善觸發(fā)。此外,在一些實(shí)施例中,如以上關(guān)于圖6的操作601而描述的,在檢測(cè)改善觸發(fā)(702)之前,方法700包括檢測(cè)磨損狀況并在不減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的情況下減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的預(yù)留空間。
在一些實(shí)施例中,改善模塊(例如,圖2A-1和圖2A-2的改善模塊230、圖2B-1和圖2B-2的改善模塊260、和/或圖2C-1和圖2C-2的改善模塊290)用于根據(jù)改善觸發(fā)來執(zhí)行(704)用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程。在一些實(shí)施例中,改善模塊包括用于變更存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的至少一部分的編碼格式的模塊(例如,圖2D的利用模塊232)和用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的容量模塊(例如,容量模塊234)。
在一些實(shí)施例中,檢測(cè)、執(zhí)行、或檢測(cè)和執(zhí)行兩者由存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120、圖1B的存儲(chǔ)設(shè)備160、或圖1C的存儲(chǔ)設(shè)備194)或存儲(chǔ)設(shè)備的一個(gè)或多個(gè)部件(例如,圖1A的存儲(chǔ)控制器124)執(zhí)行(706)。在一些實(shí)施例中,方法700(或者至少方法700的檢測(cè)操作702和/或執(zhí)行操作704)由存儲(chǔ)在非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中并由設(shè)備的一個(gè)或多個(gè)處理器(比如,圖1A和圖2A-1中所示出的管理模塊121-1的一個(gè)或多個(gè)處理單元(CPU)122-1)執(zhí)行的指令進(jìn)行控制。
在一些實(shí)施例中,檢測(cè)、執(zhí)行、或檢測(cè)和執(zhí)行兩者由存儲(chǔ)系統(tǒng)的不同于存儲(chǔ)設(shè)備的一個(gè)或多個(gè)子系統(tǒng)執(zhí)行(708)。例如,在這些實(shí)施例中的一些實(shí)施例中,檢測(cè)、執(zhí)行、或檢測(cè)和執(zhí)行兩者由存儲(chǔ)系統(tǒng)(例如,圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140)的存儲(chǔ)系統(tǒng)控制器(例如,圖1B的存儲(chǔ)系統(tǒng)控制器150)執(zhí)行。在一些實(shí)施例中,方法700(或者至少方法700的檢測(cè)操作702和/或執(zhí)行操作704)由存儲(chǔ)在非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中并由設(shè)備的一個(gè)或多個(gè)處理器(比如,圖1B和圖2B-1中所示出的管理模塊151-1的一個(gè)或多個(gè)處理單元(CPU)152-1)執(zhí)行的指令進(jìn)行控制。
在一些實(shí)施例中,檢測(cè)、執(zhí)行、或檢測(cè)和執(zhí)行兩者至少部分地由主機(jī)執(zhí)行(710)。在一些實(shí)施例中,方法700(或者至少方法700的檢測(cè)操作702和/或執(zhí)行操作704)至少部分地由存儲(chǔ)在非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中并由主機(jī)的一個(gè)或多個(gè)處理器(未在圖1A、圖1B和圖1C中示出的處理器)(比如,圖1A和圖2A-2的管理模塊121-2、或圖1B和圖2B-2的管理模塊151-2、或圖1C和圖2C-2的管理模塊181-2的一個(gè)或多個(gè)處理單元(CPU))執(zhí)行的指令進(jìn)行控制。
在一些實(shí)施例中,主機(jī)(例如,圖1A的計(jì)算機(jī)系統(tǒng)110、圖1B的計(jì)算機(jī)系統(tǒng)142、或圖1C的計(jì)算機(jī)系統(tǒng)172)包括(712)客戶端,代表所述客戶端而將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)系統(tǒng)(例如,圖1A的數(shù)據(jù)存儲(chǔ)系統(tǒng)100、圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140、圖1C的數(shù)據(jù)存儲(chǔ)系統(tǒng)170)中。在一些實(shí)施例中,客戶端是或者包括實(shí)體,代表所述實(shí)體而將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)系統(tǒng)中。
在一些實(shí)施例中,主機(jī)包括(714)存儲(chǔ)系統(tǒng)(例如,圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140)的存儲(chǔ)系統(tǒng)控制器(例如,圖1B的存儲(chǔ)系統(tǒng)控制器150)。在這些實(shí)施例中的一些實(shí)施例中,存儲(chǔ)系統(tǒng)控制器在一個(gè)或多個(gè)存儲(chǔ)設(shè)備當(dāng)中控制和/或協(xié)調(diào)操作。在這些實(shí)施例中的一些實(shí)施例中,數(shù)據(jù)存儲(chǔ)系統(tǒng)(例如,圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140)被稱為縱向擴(kuò)展系統(tǒng)。
在一些實(shí)施例中,主機(jī)包括(716)存儲(chǔ)系統(tǒng)(例如,圖1C的數(shù)據(jù)存儲(chǔ)系統(tǒng)170)的集群控制器(例如,圖1C的集群控制器180)。在這些實(shí)施例中的一些實(shí)施例中,如例如在圖1C中(在所述圖中,數(shù)據(jù)存儲(chǔ)子系統(tǒng)中的每個(gè)數(shù)據(jù)存儲(chǔ)子系統(tǒng)可以被實(shí)施為具有一個(gè)或多個(gè)存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)系統(tǒng)(例如,圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140))所示出的,集群控制器在一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)子系統(tǒng)當(dāng)中控制和/或協(xié)調(diào)操作。在這些實(shí)施例中的一些實(shí)施例中,數(shù)據(jù)存儲(chǔ)系統(tǒng)(例如,圖1C的數(shù)據(jù)存儲(chǔ)系統(tǒng)170)被稱為橫向擴(kuò)展系統(tǒng)或集群式存儲(chǔ)系統(tǒng)。
在一些實(shí)施例中,變更(704)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的至少一部分的編碼格式包括根據(jù)改善過程的一個(gè)或多個(gè)參數(shù)來變更(718)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的至少一部分的編碼格式。在一些實(shí)施例中,存儲(chǔ)控制器124(圖1A)或其部件(例如,圖2D的改善模塊230)變更存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的至少一部分(圖1A的存儲(chǔ)設(shè)備120的存儲(chǔ)介質(zhì)130)的編碼格式和/或協(xié)調(diào)所述變更。在一些實(shí)施例中,改善過程的所述一個(gè)或多個(gè)參數(shù)包括改善過程的緊急程度、目標(biāo)減小的存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量、和/或?qū)Υ鎯?chǔ)設(shè)備的非易失性存儲(chǔ)器的利用的目標(biāo)減少量、或其任何組合或子集。在一些實(shí)施例中,根據(jù)改善過程的一個(gè)或多個(gè)參數(shù)來變更存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的至少一部分的編碼格式包括僅變更足以滿足所述一個(gè)或多個(gè)參數(shù)指定的減小的聲明容量的目標(biāo)量的編碼格式。換句話說,改善過程的所述一個(gè)或多個(gè)參數(shù)指示或?qū)?yīng)于對(duì)主機(jī)可用的存儲(chǔ)容量的目標(biāo)減小量。例如,如以下更加詳細(xì)地描述的,如果可以通過這樣做來滿足減小的聲明容量的目標(biāo)量,則將非易失性存儲(chǔ)器的一部分的編碼格式從TLC變更成MLC,而不是將編碼格式從TLC變更成SLC。在一些實(shí)施例中,改善過程的所述一個(gè)或多個(gè)參數(shù)考慮或使改善過程能夠考慮將在預(yù)定義時(shí)間段(例如,一小時(shí)、一天、一周、或任何其他期間)內(nèi)需要的對(duì)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的預(yù)計(jì)減小。例如,在一些實(shí)施例中,改善過程的參數(shù)指示聲明容量的特定減小和利用的減少。主機(jī)可以使用修整操作來減少利用并且然后指示存儲(chǔ)設(shè)備減小其聲明容量。根據(jù)減少的容量和利用,存儲(chǔ)設(shè)備變更非易失性存儲(chǔ)介質(zhì)的所選部分的編碼格式(如以上所指出的,變更本身可以是多步驟過程)。在一些實(shí)施例中,減少利用、減小聲明容量和變更編碼格式的改善過程步驟可以以任何順序發(fā)生并且可以部分地或完全地重疊(例如,并行地執(zhí)行)。在一些實(shí)施例中,改善過程可以在完成減少利用之前改變存儲(chǔ)設(shè)備的聲明容量,其中,存儲(chǔ)設(shè)備以較少的預(yù)留空間來進(jìn)行操作,直到利用減少完成為止。
在一些實(shí)施例中,變更(704)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的至少一部分的編碼格式包括將編碼格式從更高密度物理編碼格式變更(720)成更低密度物理編碼格式。例如,將存儲(chǔ)介質(zhì)130(圖1A)的可選擇部分131的編碼格式從MLC變更成SLC(例如,從更高密度物理編碼格式變更成更低密度物理編碼格式),從而使得包括可選擇部分131的存儲(chǔ)器單元比在之前的編碼格式下存儲(chǔ)更少的每單元比特。
在一些實(shí)施例中,變更(704)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的至少一部分的編碼格式包括將每存儲(chǔ)器單元狀態(tài)數(shù)從更高狀態(tài)數(shù)變更(722)成更低狀態(tài)數(shù)。如以上關(guān)于圖5A和圖5B而描述的,存儲(chǔ)器單元的狀態(tài)表示存儲(chǔ)器單元的總電壓范圍內(nèi)的順序電壓范圍,所述順序電壓范圍表示不同的位元組(例如,在圖5B中,順序電壓范圍311、312、313、314表示相應(yīng)位元組“11”、“01”、“00”和“10”)。非易失性存儲(chǔ)器的存儲(chǔ)器單元中的信息的比特?cái)?shù)是每存儲(chǔ)器單元可存儲(chǔ)的可能狀態(tài)的函數(shù),所述函數(shù)由存儲(chǔ)器單元的物理編碼格式確定。確切地,每單元可存儲(chǔ)的信息的比特?cái)?shù)等于log2N,其中,N是每單元可能狀態(tài)的相應(yīng)最大數(shù)量。因此,在一些實(shí)施例中,變更每存儲(chǔ)器單元狀態(tài)數(shù)包括變更存儲(chǔ)器單元的可檢測(cè)電壓電平數(shù),由此變更存儲(chǔ)在存儲(chǔ)器單元中的信息的量。
在一些實(shí)施例中,變更(704)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的至少一部分的編碼格式包括將編碼格式從三層單元(TLC)格式變更(724)成多層單元(MLC)格式。
在一些實(shí)施例中,變更(704)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的至少一部分的編碼格式包括將編碼格式從三層單元(TLC)格式變更(726)成單層單元(SLC)格式。
在一些實(shí)施例中,變更(704)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的至少一部分的編碼格式包括將編碼格式從多層單元(MLC)格式變更(728)成單層單元(SLC)格式。
在一些實(shí)施例中,執(zhí)行(704)用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程包括減少(730)對(duì)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的利用。如以上關(guān)于圖2D而描述的,在一些實(shí)施例中,改善過程(606)包括利用減少過程(608)(例如,由圖2A-1和圖2A-2的利用模塊232、圖2B-1和圖2B-2的利用模塊262、或圖2C-1和圖2C-2的利用模塊292執(zhí)行)??梢詼p少對(duì)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的利用的方式的示例包括修整或去映射非實(shí)時(shí)數(shù)據(jù)、刪除主機(jī)使用的可丟棄數(shù)據(jù)(例如,臨時(shí)數(shù)據(jù)文件)、和/或?qū)?shù)據(jù)從存儲(chǔ)設(shè)備移動(dòng)到一個(gè)或多個(gè)其他存儲(chǔ)設(shè)備中。
在一些實(shí)施例中,變更(704)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的至少一部分的編碼格式包括變更(732)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的多個(gè)存儲(chǔ)器部分中的存儲(chǔ)器部分的編碼格式。例如,參照?qǐng)D4,確切地,將包括組1(例如,多個(gè)組(組420-1至組420-q)中的組420-1)的存儲(chǔ)器單元的編碼格式從MLC變更成SLC,導(dǎo)致組1中的存儲(chǔ)器單元存儲(chǔ)比非易失性存儲(chǔ)器的其他組中的存儲(chǔ)器單元更少的每單元比特。
在一些實(shí)施例中,變更(704)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的至少一部分的編碼格式包括變更(734)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器所有客戶端數(shù)據(jù)的編碼格式。例如,將包括存儲(chǔ)介質(zhì)130(圖1A)的所有存儲(chǔ)器單元的編碼格式從MLC變更成SLC,導(dǎo)致存儲(chǔ)介質(zhì)130的這些存儲(chǔ)器單元存儲(chǔ)每單元一比特信息,而不是二比特。在一些實(shí)施例中,存儲(chǔ)設(shè)備可以采用高密度編碼格式(例如,TLC或MLC)來存儲(chǔ)所有客戶端數(shù)據(jù),但采用不同的編碼格式(例如,SLC)來存儲(chǔ)存儲(chǔ)設(shè)備元數(shù)據(jù)(例如,映射表402)。改善過程可能導(dǎo)致將與客戶端數(shù)據(jù)相關(guān)聯(lián)的存儲(chǔ)介質(zhì)中的所有存儲(chǔ)介質(zhì)轉(zhuǎn)換成更低密度編碼格式,而存儲(chǔ)設(shè)備元數(shù)據(jù)仍采用其原始編碼格式。在一些實(shí)施例中,對(duì)客戶端數(shù)據(jù)的保留是可選的。例如,類似于SCSI低層格式操作,如果沒有保留客戶端數(shù)據(jù),則可以更快地執(zhí)行改善過程。
在一些實(shí)施例中,執(zhí)行(704)用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程進(jìn)一步包括通告(736)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量。在一些實(shí)施例中,存儲(chǔ)控制器124(圖1A)或其部件(例如,圖2D的容量模塊234的通告模塊239)通告存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120的存儲(chǔ)介質(zhì)130)或存儲(chǔ)子系統(tǒng)的非易失性存儲(chǔ)器的減小的聲明容量/或者協(xié)調(diào)所述通告。在一些實(shí)施方式中,存儲(chǔ)設(shè)備或相應(yīng)存儲(chǔ)控制器、集群控制器、管理模塊或數(shù)據(jù)存儲(chǔ)系統(tǒng)向主機(jī)發(fā)送消息,通告存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量。在一些實(shí)施方式中,通過以下方式來完成通告減小的聲明容量:向主機(jī)發(fā)送中斷消息或其他消息。
在一些實(shí)施方式中,通過以下方式來完成通告減小的聲明容量:接收來自與存儲(chǔ)設(shè)備可操作地耦合的主機(jī)的查詢以及響應(yīng)于接收查詢而上報(bào)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量。在一些這種實(shí)施方式中,主機(jī)被配置成用于在存儲(chǔ)系統(tǒng)、存儲(chǔ)控制器、管理模塊、集群控制器或存儲(chǔ)設(shè)備中周期性地查詢例如系統(tǒng)或設(shè)備健康狀態(tài)。
在一些實(shí)施方式中,通過以下方式來完成通告減小的聲明容量:接收來自與存儲(chǔ)設(shè)備可操作地耦合的主機(jī)的命令(例如,存儲(chǔ)讀取或?qū)懭朊?以及響應(yīng)于接收命令而發(fā)送對(duì)命令的響應(yīng)(所述響應(yīng)包括對(duì)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量的通知)。
在一些實(shí)施方式中,通過以下方式來完成通告減小的聲明容量:接收來自與存儲(chǔ)設(shè)備可操作地耦合的主機(jī)的命令(例如,存儲(chǔ)讀取或?qū)懭朊?以及響應(yīng)于接收命令而發(fā)送對(duì)命令的響應(yīng)和提醒主機(jī)從存儲(chǔ)設(shè)備處或者從包括存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)系統(tǒng)處獲取包括存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量的信息的通知。在一些實(shí)施例中,用于在對(duì)來自主機(jī)的命令進(jìn)行響應(yīng)時(shí)返回通知的機(jī)制是SCSI延遲錯(cuò)誤或延遲錯(cuò)誤響應(yīng)碼。
在一些實(shí)施例中,在開始執(zhí)行用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程(704)之后,所述方法包括檢測(cè)用于中止對(duì)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的減小的指示(738);以及響應(yīng)于檢測(cè)用于中止對(duì)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的減小的指示而中止(740)執(zhí)行用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程。在這些實(shí)施例的上下文中,檢測(cè)用于中止的指示在本文中被定義為指接收用于中止對(duì)聲明容量的減小的信號(hào)(例如,接收來自存儲(chǔ)設(shè)備的控制器或包括存儲(chǔ)設(shè)備的存儲(chǔ)系統(tǒng)的存儲(chǔ)系統(tǒng)控制器的信號(hào))或者評(píng)估存儲(chǔ)設(shè)備的一個(gè)或多個(gè)度量以及基于所述評(píng)估來決定中止對(duì)聲明容量的減小。例如,在改善過程的操作期間,將繼續(xù)執(zhí)行正常存儲(chǔ)操作(例如,讀取、寫入、刪除、修整等)。正常存儲(chǔ)操作包括像修整等明確減少存儲(chǔ)設(shè)備利用的操作,有可能足以值得中止改善過程。如垃圾收集等其他存儲(chǔ)活動(dòng)也可以減少利用,有可能足以值得中止改善過程。
在一些實(shí)施例中,因?yàn)樵S多參數(shù)的值可能由于改善過程和/或正常存儲(chǔ)操作(例如,讀取、寫入、擦除、和修整或去映射操作)而改變,所以改善過程(例如,周期性地、半連續(xù)地、初始地、最終地、偶爾、或不定期地)重新計(jì)算或重新評(píng)估那些參數(shù)(比如,目標(biāo)減小的聲明容量和/或目標(biāo)利用減少量)。在一些情況下,根據(jù)重新計(jì)算的或重新評(píng)估的參數(shù),對(duì)改善過程的一個(gè)或多個(gè)部分(比如,利用減少過程)重新進(jìn)行優(yōu)先級(jí)排序、重新安排、或中止。
在一些實(shí)施例中,存儲(chǔ)設(shè)備包括(742)一個(gè)或多個(gè)閃存設(shè)備。在一些實(shí)施例中,存儲(chǔ)設(shè)備包括存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130),并且存儲(chǔ)介質(zhì)包括如閃存設(shè)備等一個(gè)或多個(gè)非易失性存儲(chǔ)設(shè)備。在一些實(shí)施例中,存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)是單個(gè)閃存設(shè)備,而在其他實(shí)施例中,存儲(chǔ)介質(zhì)包括多個(gè)閃存設(shè)備。例如,在一些實(shí)施例中,存儲(chǔ)介質(zhì)包括在并行存儲(chǔ)器通道中組織的數(shù)十個(gè)或數(shù)百個(gè)閃存設(shè)備,比如,每個(gè)存儲(chǔ)器通道16、32或64個(gè)閃存設(shè)備,以及8、16或32個(gè)并行存儲(chǔ)器通道。在一些實(shí)施例中,非易失性存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)包括NAND類型閃存或NOR類型閃存。在其他實(shí)施例中,存儲(chǔ)介質(zhì)包括一種或多種其他類型的非易失性存儲(chǔ)設(shè)備。
圖8A至圖8C展示了根據(jù)一些實(shí)施例的管理存儲(chǔ)系統(tǒng)的方法800的流程圖表示。在一些實(shí)施例中,方法800包括:檢測(cè)(802)用于減小存儲(chǔ)系統(tǒng)(例如,圖1A的數(shù)據(jù)存儲(chǔ)系統(tǒng)100、圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140、或圖1C的數(shù)據(jù)存儲(chǔ)系統(tǒng)170)的存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120、或圖1B的存儲(chǔ)設(shè)備160-1至160-m中的任何存儲(chǔ)設(shè)備、或圖1C的存儲(chǔ)設(shè)備194-1至194-n或194-j至194-k中的任何存儲(chǔ)設(shè)備)的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā);以及根據(jù)檢測(cè)到的改善觸發(fā),執(zhí)行(804)用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程,所述執(zhí)行包括:從存儲(chǔ)設(shè)備中刪除主機(jī)(例如,圖1A的計(jì)算機(jī)系統(tǒng)110、圖1B的計(jì)算機(jī)系統(tǒng)142、或圖1C的計(jì)算機(jī)系統(tǒng)172)使用的可丟棄數(shù)據(jù);以及減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量。在一些實(shí)施例中,減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量包括減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的對(duì)主機(jī)可用的存儲(chǔ)容量。存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量有時(shí)被稱為通告容量,并且通常被主機(jī)的操作系統(tǒng)和/或文件系統(tǒng)用作主機(jī)的操作系統(tǒng)或文件系統(tǒng)將試圖分配的最大容量。
在一些實(shí)施例中,由改善模塊(例如,圖2A-1、圖2A-2或圖2D的改善模塊230、圖2B-1或圖2B-2的260、或圖2C-1或圖2C-2的290)或其部件(例如,圖2A-1、圖2A-2或圖2D的檢測(cè)模塊231、圖2B-1或圖2B-2的261、或圖2C-1或2C-2的291)檢測(cè)(802)改善觸發(fā)。在一些實(shí)施例中,檢測(cè)改善觸發(fā)包括接收或生成改善觸發(fā)。此外,在一些實(shí)施例中,如以上關(guān)于圖6的操作601而描述的,在檢測(cè)改善觸發(fā)(802)之前,方法800包括檢測(cè)磨損狀況并在不減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的情況下減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的預(yù)留空間。
在一些實(shí)施例中,改善模塊(例如,圖2A-1和圖2A-2的改善模塊230、圖2B-1和圖2B-2的改善模塊260、和/或圖2C-1和圖2C-2的改善模塊290)用于根據(jù)改善觸發(fā)來執(zhí)行(804)用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程。在一些實(shí)施例中,改善模塊包括用于從存儲(chǔ)設(shè)備中刪除主機(jī)使用的可丟棄數(shù)據(jù)的利用模塊(例如,確切地,圖2D的利用模塊232的刪除模塊236)和用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的容量模塊(例如,容量模塊234)。
在一些實(shí)施例中,主機(jī)(例如,圖1A的計(jì)算機(jī)系統(tǒng)110、圖1B的計(jì)算機(jī)系統(tǒng)142、或圖1C的計(jì)算機(jī)系統(tǒng)172)包括(806)客戶端,代表所述客戶端而將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)系統(tǒng)(例如,圖1A的數(shù)據(jù)存儲(chǔ)系統(tǒng)100、圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140、圖1C的數(shù)據(jù)存儲(chǔ)系統(tǒng)170)中。在一些實(shí)施例中,客戶端是或者包括實(shí)體,代表所述實(shí)體而將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)系統(tǒng)中。
在一些實(shí)施例中,主機(jī)包括(808)存儲(chǔ)系統(tǒng)(例如,圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140)的存儲(chǔ)系統(tǒng)控制器(例如,圖1B的存儲(chǔ)系統(tǒng)控制器150)。在這些實(shí)施例中的一些實(shí)施例中,存儲(chǔ)系統(tǒng)控制器在一個(gè)或多個(gè)存儲(chǔ)設(shè)備當(dāng)中控制和/或協(xié)調(diào)操作。在這些實(shí)施例中的一些實(shí)施例中,數(shù)據(jù)存儲(chǔ)系統(tǒng)(例如,圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140)被稱為縱向擴(kuò)展系統(tǒng)。
在一些實(shí)施例中,主機(jī)包括(810)存儲(chǔ)系統(tǒng)(例如,圖1C的數(shù)據(jù)存儲(chǔ)系統(tǒng)170)的集群控制器(例如,圖1C的集群控制器180)。在這些實(shí)施例中的一些實(shí)施例中,如例如在圖1C中(在所述圖中,數(shù)據(jù)存儲(chǔ)子系統(tǒng)中的每個(gè)數(shù)據(jù)存儲(chǔ)子系統(tǒng)可以被實(shí)施為具有一個(gè)或多個(gè)存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)系統(tǒng)(例如,圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140))所示出的,集群控制器在一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)子系統(tǒng)當(dāng)中控制和/或協(xié)調(diào)操作。在這些實(shí)施例中的一些實(shí)施例中,數(shù)據(jù)存儲(chǔ)系統(tǒng)(例如,圖1C的數(shù)據(jù)存儲(chǔ)系統(tǒng)170)被稱為橫向擴(kuò)展系統(tǒng)或集群式存儲(chǔ)系統(tǒng)。
在一些實(shí)施例中,檢測(cè)、執(zhí)行、或檢測(cè)和執(zhí)行兩者由存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120、圖1B的存儲(chǔ)設(shè)備160、或圖1C的存儲(chǔ)設(shè)備194)或存儲(chǔ)設(shè)備的一個(gè)或多個(gè)部件(例如,圖1A的存儲(chǔ)控制器124)執(zhí)行(812)。在一些實(shí)施例中,方法800(或者至少方法800的檢測(cè)操作802和/或執(zhí)行操作804)由存儲(chǔ)在非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中并由設(shè)備的一個(gè)或多個(gè)處理器(比如,圖1A和圖2A-1中所示出的管理模塊121-1的一個(gè)或多個(gè)處理單元(CPU)122-1)執(zhí)行的指令進(jìn)行控制。
在一些實(shí)施例中,檢測(cè)、執(zhí)行、或檢測(cè)和執(zhí)行兩者由存儲(chǔ)系統(tǒng)的不同于存儲(chǔ)設(shè)備的一個(gè)或多個(gè)子系統(tǒng)執(zhí)行(814)。例如,在這些實(shí)施例中的一些實(shí)施例中,檢測(cè)、執(zhí)行、或檢測(cè)和執(zhí)行兩者由存儲(chǔ)系統(tǒng)(例如,圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140)的存儲(chǔ)系統(tǒng)控制器(例如,圖1B的存儲(chǔ)系統(tǒng)控制器150)執(zhí)行。在一些實(shí)施例中,方法800(或者至少方法800的檢測(cè)操作802和/或執(zhí)行操作804)由存儲(chǔ)在非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中并由設(shè)備的一個(gè)或多個(gè)處理器(比如,圖1B和圖2B-1中所示出的管理模塊151-1的一個(gè)或多個(gè)處理單元(CPU)152-1)執(zhí)行的指令進(jìn)行控制。
在一些實(shí)施例中,檢測(cè)、執(zhí)行、或檢測(cè)和執(zhí)行兩者至少部分地由主機(jī)執(zhí)行(816)。在一些實(shí)施例中,方法800(或者至少方法800的檢測(cè)操作802和/或執(zhí)行操作804)至少部分地由存儲(chǔ)在非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中并由主機(jī)的一個(gè)或多個(gè)處理器(未在圖1A、圖1B和圖1C中示出的處理器)(比如,圖1A和圖2A-2的管理模塊121-2、或圖1B和圖2B-2的管理模塊151-2、或圖1C和圖2C-2的管理模塊181-2的一個(gè)或多個(gè)處理單元(CPU))執(zhí)行的指令進(jìn)行控制。
在一些實(shí)施例中,刪除(804)主機(jī)使用的可丟棄數(shù)據(jù)包括根據(jù)改善過程的一個(gè)或多個(gè)參數(shù)來刪除(818)主機(jī)使用的可丟棄數(shù)據(jù)。在一些實(shí)施例中,存儲(chǔ)控制器124(圖1A)或其部件(例如,圖2D的利用模塊232的刪除模塊236)從存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120的存儲(chǔ)介質(zhì)130)中刪除主機(jī)使用的可丟棄數(shù)據(jù)和/或者協(xié)調(diào)所述刪除。在一些實(shí)施例中,改善過程的所述一個(gè)或多個(gè)參數(shù)包括改善過程的緊急程度、目標(biāo)減小的存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量、和/或?qū)Υ鎯?chǔ)設(shè)備的非易失性存儲(chǔ)器的利用的目標(biāo)減少量、或其任何組合或子集。在一些實(shí)施例中,根據(jù)改善過程的一個(gè)或多個(gè)參數(shù)來刪除主機(jī)使用的可丟棄數(shù)據(jù)(例如,臨時(shí)數(shù)據(jù))包括僅刪除用于滿足所述一個(gè)或多個(gè)參數(shù)指定的減小的聲明容量的目標(biāo)量的可丟棄數(shù)據(jù)。換句話說,改善過程的所述一個(gè)或多個(gè)參數(shù)指示或?qū)?yīng)于對(duì)主機(jī)可用的存儲(chǔ)容量的目標(biāo)減小量。在一些實(shí)施例中,改善過程的所述一個(gè)或多個(gè)參數(shù)考慮或使改善過程能夠考慮將在預(yù)定義時(shí)間段(例如,一小時(shí)、一天、一周、或任何其他期間)內(nèi)需要的對(duì)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的預(yù)計(jì)減小。
在一些實(shí)施例中,刪除(804)主機(jī)使用的可丟棄數(shù)據(jù)包括刪除(820)臨時(shí)數(shù)據(jù)。在一些實(shí)施例中,臨時(shí)數(shù)據(jù)存儲(chǔ)在存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120的存儲(chǔ)介質(zhì)130)中,并且包括例如安裝在主機(jī)(例如,圖1A的計(jì)算系統(tǒng)110)上的操作系統(tǒng)的臨時(shí)數(shù)據(jù)或者主機(jī)使用的一個(gè)或多個(gè)應(yīng)用、系統(tǒng)進(jìn)程和/或程序所生成的臨時(shí)數(shù)據(jù)。例如,在Unix或Linux操作系統(tǒng)中,如果在指定時(shí)間段(通常為一小時(shí)或一天等)內(nèi)沒有使用存儲(chǔ)在目錄“/tmp”中的文件,則它們已知是可丟棄的。
在一些實(shí)施例中,刪除(804)主機(jī)使用的可丟棄數(shù)據(jù)包括刪除(822)在需要時(shí)可以重建的數(shù)據(jù)。可以重建的數(shù)據(jù)包括例如參照存儲(chǔ)在主機(jī)(例如,圖1A的計(jì)算機(jī)系統(tǒng)110)的存儲(chǔ)器和/或存儲(chǔ)系統(tǒng)的存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120、或圖1B的存儲(chǔ)設(shè)備160-1至160-m中的任何存儲(chǔ)設(shè)備、或圖1C的存儲(chǔ)設(shè)備194-1至194-n或194-j至194-k中的任何存儲(chǔ)設(shè)備)中的數(shù)據(jù)而生成的并且可以在需要時(shí)再生成的某些索引、緩存或其他文件類型。
在一些實(shí)施例中,刪除(804)主機(jī)使用的可丟棄數(shù)據(jù)包括刪除(824)數(shù)據(jù)快照。數(shù)據(jù)快照包括例如備份文件/圖像(例如,用于恢復(fù)數(shù)據(jù))、虛擬機(jī)快照(例如,用于捕獲虛擬機(jī)的狀態(tài)、數(shù)據(jù)和硬件配置)、以及用于捕獲存儲(chǔ)在主機(jī)(例如,圖1A的計(jì)算機(jī)系統(tǒng)110)的存儲(chǔ)器和/或存儲(chǔ)系統(tǒng)的存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120、或圖1B的存儲(chǔ)設(shè)備160-1至160-m中的任何存儲(chǔ)設(shè)備、或圖1C的存儲(chǔ)設(shè)備194-1至194-n或194-j至194-k中的任何存儲(chǔ)設(shè)備)中的數(shù)據(jù)的狀態(tài)的其他類型的文件。
在一些實(shí)施例中,刪除(804)主機(jī)使用的可丟棄數(shù)據(jù)包括刪除(826)主機(jī)預(yù)標(biāo)記為可丟棄數(shù)據(jù)的數(shù)據(jù)。在一些實(shí)施例中,這種數(shù)據(jù)包括用戶未請(qǐng)求的預(yù)加載數(shù)據(jù),所述預(yù)加載數(shù)據(jù)的一個(gè)示例是制造商存儲(chǔ)在存儲(chǔ)設(shè)備120中的工廠預(yù)加載數(shù)據(jù)(例如,程序、應(yīng)用、用于恢復(fù)OS的備份文件等)。用戶未請(qǐng)求的預(yù)加載數(shù)據(jù)的另一個(gè)示例是預(yù)期到用戶的未來請(qǐng)求而由網(wǎng)站或在線應(yīng)用預(yù)加載的數(shù)據(jù)。
在一些實(shí)施例中,刪除(804)主機(jī)使用的可丟棄數(shù)據(jù)包括使映射表的一個(gè)或多個(gè)邏輯地址條目無效(828)(例如,通過使用修整操作),在所述映射表中,邏輯地址條目與可丟棄數(shù)據(jù)相關(guān)聯(lián),并且映射表用于將邏輯地址空間中的邏輯地址轉(zhuǎn)換成存儲(chǔ)設(shè)備的物理地址空間中的物理地址。例如,參照?qǐng)D4,刪除可丟棄數(shù)據(jù)包括使映射表402的邏輯地址條目LBA 0無效,在所述映射表中,LBA 0被映射到物理地址空間410的組1(例如,組420-1)、塊3(例如,塊421-3)、頁(yè)37(圖4中未示出的頁(yè))中。
在一些實(shí)施例中,減小(804)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量包括使(830)一定數(shù)量的邏輯地址對(duì)主機(jī)不可用,所述數(shù)量小于或等于與無效邏輯地址條目相對(duì)應(yīng)的邏輯地址的數(shù)量。在一些實(shí)施例中,存儲(chǔ)控制器124(圖1A)或其部件(例如,圖2D的容量模塊234的LBA減小模塊238)減少邏輯塊地址空間(例如,圖3的LBA空間320)的邏輯地址和/或協(xié)調(diào)所述減小。在一些實(shí)施例中,邏輯地址條目中的每個(gè)邏輯地址條目與多個(gè)(例如,八個(gè))邏輯地址相對(duì)應(yīng)(例如,每邏輯地址條目8個(gè)LBA)。
在一些實(shí)施例中,執(zhí)行(804)用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程進(jìn)一步包括通告(832)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量。在一些實(shí)施例中,存儲(chǔ)控制器124(圖1A)或其部件(例如,圖2D的容量模塊234的通告模塊239)通告存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120的存儲(chǔ)介質(zhì)130)或存儲(chǔ)子系統(tǒng)的非易失性存儲(chǔ)器的減小的聲明容量/或者協(xié)調(diào)所述通告。在一些實(shí)施方式中,存儲(chǔ)設(shè)備或相應(yīng)存儲(chǔ)控制器、集群控制器、管理模塊或數(shù)據(jù)存儲(chǔ)系統(tǒng)向主機(jī)發(fā)送消息,通告存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量。在一些實(shí)施方式中,通過以下方式來完成通告減小的聲明容量:向主機(jī)發(fā)送中斷消息或其他帶內(nèi)或帶外消息。
在一些實(shí)施方式中,通過以下方式來完成通告減小的聲明容量:接收來自與存儲(chǔ)設(shè)備可操作地耦合的主機(jī)的查詢以及響應(yīng)于接收查詢而上報(bào)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量。在一些這種實(shí)施方式中,主機(jī)被配置成用于在存儲(chǔ)系統(tǒng)、存儲(chǔ)控制器、管理模塊、集群控制器或存儲(chǔ)設(shè)備中周期性地查詢例如系統(tǒng)或設(shè)備健康狀態(tài)。
在一些實(shí)施方式中,通過以下方式來完成通告減小的聲明容量:接收來自與存儲(chǔ)設(shè)備可操作地耦合的主機(jī)的命令(例如,存儲(chǔ)讀取或?qū)懭朊?以及響應(yīng)于接收命令而發(fā)送對(duì)命令的響應(yīng)(所述響應(yīng)包括對(duì)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量的通知)。
在一些實(shí)施方式中,通過以下方式來完成通告減小的聲明容量:接收來自與存儲(chǔ)設(shè)備可操作地耦合的主機(jī)的命令(例如,存儲(chǔ)讀取或?qū)懭朊?以及響應(yīng)于接收命令而發(fā)送對(duì)命令的響應(yīng)和提醒主機(jī)從存儲(chǔ)設(shè)備處或者從包括存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)系統(tǒng)處獲取包括存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量的信息的通知。在一些實(shí)施例中,用于在對(duì)來自主機(jī)的命令進(jìn)行響應(yīng)時(shí)返回通知的機(jī)制是SCSI延遲錯(cuò)誤或延遲錯(cuò)誤響應(yīng)碼。
在一些實(shí)施例中,在開始執(zhí)行用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程(804)之后,所述方法包括檢測(cè)用于中止對(duì)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的減小的指示(834);以及響應(yīng)于檢測(cè)用于中止對(duì)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的減小的指示而中止(836)執(zhí)行用于減小存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程。檢測(cè)用于中止的指示在本文中被定義為指接收用于中止對(duì)聲明容量的減小的信號(hào)(例如,接收來自存儲(chǔ)設(shè)備的控制器或包括存儲(chǔ)設(shè)備的存儲(chǔ)系統(tǒng)的存儲(chǔ)系統(tǒng)控制器的信號(hào))或者評(píng)估存儲(chǔ)設(shè)備的一個(gè)或多個(gè)度量以及基于所述評(píng)估來決定中止對(duì)聲明容量的減小。例如,在改善過程的操作期間,將繼續(xù)執(zhí)行正常存儲(chǔ)操作(例如,讀取、寫入、修整等)。正常存儲(chǔ)操作包括像修整等明確減少存儲(chǔ)設(shè)備利用的操作,有可能足以值得中止改善過程。如垃圾收集等其他存儲(chǔ)活動(dòng)也可以減少利用,有可能足以值得中止改善過程。
在一些實(shí)施例中,因?yàn)樵S多參數(shù)的值可能由于改善過程和/或正常存儲(chǔ)操作(例如,讀取、寫入、擦除、和修整或去映射操作)而改變,所以改善過程(例如,周期性地、半連續(xù)地、初始地、最終地、偶爾、或不定期地)重新計(jì)算或重新評(píng)估那些參數(shù)(比如,目標(biāo)減小的聲明容量和/或目標(biāo)利用減少量)。在一些情況下,根據(jù)重新計(jì)算的或重新評(píng)估的參數(shù),對(duì)改善過程的一個(gè)或多個(gè)部分(比如,利用減少過程)重新進(jìn)行優(yōu)先級(jí)排序、重新安排、或中止。
在一些實(shí)施例中,存儲(chǔ)設(shè)備包括(838)一個(gè)或多個(gè)閃存設(shè)備。在一些實(shí)施例中,存儲(chǔ)設(shè)備包括存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130),并且存儲(chǔ)介質(zhì)包括如閃存設(shè)備等一個(gè)或多個(gè)非易失性存儲(chǔ)設(shè)備。在一些實(shí)施例中,存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)是單個(gè)閃存設(shè)備,而在其他實(shí)施例中,存儲(chǔ)介質(zhì)包括多個(gè)閃存設(shè)備。例如,在一些實(shí)施例中,存儲(chǔ)介質(zhì)包括在并行存儲(chǔ)器通道中組織的數(shù)十個(gè)或數(shù)百個(gè)閃存設(shè)備,比如,每個(gè)存儲(chǔ)器通道16、32或64個(gè)閃存設(shè)備,以及8、16或32個(gè)并行存儲(chǔ)器通道。在一些實(shí)施例中,非易失性存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)包括NAND類型閃存或NOR類型閃存。在其他實(shí)施例中,存儲(chǔ)介質(zhì)包括一種或多種其他類型的非易失性存儲(chǔ)設(shè)備。
圖9A至圖9C展示了根據(jù)一些實(shí)施例的管理存儲(chǔ)系統(tǒng)的方法900的流程圖表示。在一些實(shí)施例中,方法900包括:檢測(cè)(902)用于減小存儲(chǔ)系統(tǒng)(例如,圖1A的數(shù)據(jù)存儲(chǔ)系統(tǒng)100、圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140、或圖1C的數(shù)據(jù)存儲(chǔ)系統(tǒng)170)的第一存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120、或圖1B的存儲(chǔ)設(shè)備160-1至160-m中的任何存儲(chǔ)設(shè)備、或圖1C的存儲(chǔ)設(shè)備194-1至194-n或194-j至194-k中的任何存儲(chǔ)設(shè)備)的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā);以及根據(jù)檢測(cè)到的改善觸發(fā),執(zhí)行(904)用于減小第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程,所述執(zhí)行包括:將主機(jī)(例如,圖1A的計(jì)算機(jī)系統(tǒng)110、圖1B的計(jì)算機(jī)系統(tǒng)142、或圖1C的計(jì)算機(jī)系統(tǒng)172)使用的數(shù)據(jù)(例如,圖3的實(shí)時(shí)數(shù)據(jù)334)的一部分從存儲(chǔ)系統(tǒng)的第一存儲(chǔ)設(shè)備移動(dòng)到另一個(gè)存儲(chǔ)設(shè)備中;以及減小第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量。在一些實(shí)施例中,檢測(cè)用于減小存儲(chǔ)系統(tǒng)的第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā)包括生成用于減小存儲(chǔ)系統(tǒng)的第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善觸發(fā)。在一些實(shí)施例中,減小第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量包括減小第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的對(duì)主機(jī)可用的存儲(chǔ)容量。第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量有時(shí)被稱為通告容量,并且通常被主機(jī)的操作系統(tǒng)和/或文件系統(tǒng)用作主機(jī)的操作系統(tǒng)或文件系統(tǒng)將試圖分配的最大容量。
在一些實(shí)施例中,由改善模塊(例如,圖2A-1、圖2A-2或圖2D的改善模塊230、圖2B-1或圖2B-2的260、或圖2C-1或圖2C-2的290)或其部件(例如,圖2A-1、圖2A-2或圖2D的檢測(cè)模塊231、圖2B-1或圖2B-2的261、或圖2C-1或2C-2的291)檢測(cè)(902)改善觸發(fā)。在一些實(shí)施例中,檢測(cè)改善觸發(fā)包括接收或生成改善觸發(fā)。此外,在一些實(shí)施例中,如以上關(guān)于圖6的操作601而描述的,在檢測(cè)改善觸發(fā)(902)之前,方法900包括檢測(cè)磨損狀況并在不減小第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的情況下減小第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的預(yù)留空間。
在一些實(shí)施例中,改善模塊(例如,圖2A-1和圖2A-2的改善模塊230、圖2B-1和圖2B-2的改善模塊260、和/或圖2C-1和圖2C-2的改善模塊290)用于根據(jù)改善觸發(fā)來執(zhí)行(904)用于減小第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程。在一些實(shí)施例中,改善模塊包括用于將主機(jī)使用的數(shù)據(jù)的一部分從存儲(chǔ)系統(tǒng)的第一存儲(chǔ)設(shè)備移動(dòng)到另一個(gè)存儲(chǔ)設(shè)備中的利用模塊(例如,確切地,圖2D的利用模塊232的移動(dòng)模塊237)和用于減小第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的容量模塊(例如,容量模塊234)。
在一些實(shí)施例中,主機(jī)(例如,圖1A的計(jì)算機(jī)系統(tǒng)110、圖1B的計(jì)算機(jī)系統(tǒng)142、或圖1C的計(jì)算機(jī)系統(tǒng)172)包括(906)客戶端,代表所述客戶端而將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)系統(tǒng)(例如,圖1A的數(shù)據(jù)存儲(chǔ)系統(tǒng)100、圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140、圖1C的數(shù)據(jù)存儲(chǔ)系統(tǒng)170)中。在一些實(shí)施例中,客戶端是或者包括實(shí)體,代表所述實(shí)體而將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)系統(tǒng)中。
在一些實(shí)施例中,主機(jī)包括(908)存儲(chǔ)系統(tǒng)(例如,圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140)的存儲(chǔ)系統(tǒng)控制器(例如,圖1B的存儲(chǔ)系統(tǒng)控制器150)。在這些實(shí)施例中的一些實(shí)施例中,存儲(chǔ)系統(tǒng)控制器在一個(gè)或多個(gè)存儲(chǔ)設(shè)備當(dāng)中控制和/或協(xié)調(diào)操作。在這些實(shí)施例中的一些實(shí)施例中,數(shù)據(jù)存儲(chǔ)系統(tǒng)(例如,圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140)被稱為縱向擴(kuò)展系統(tǒng)。
在一些實(shí)施例中,主機(jī)包括(910)存儲(chǔ)系統(tǒng)(例如,圖1C的數(shù)據(jù)存儲(chǔ)系統(tǒng)170)的集群控制器(例如,圖1C的集群控制器180)。在這些實(shí)施例中的一些實(shí)施例中,如例如在圖1C中(在所述圖中,數(shù)據(jù)存儲(chǔ)子系統(tǒng)中的每個(gè)數(shù)據(jù)存儲(chǔ)子系統(tǒng)可以被實(shí)施為具有一個(gè)或多個(gè)存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)系統(tǒng)(例如,圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140))所示出的,集群控制器在一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)子系統(tǒng)當(dāng)中控制和/或協(xié)調(diào)操作。在這些實(shí)施例中的一些實(shí)施例中,數(shù)據(jù)存儲(chǔ)系統(tǒng)(例如,圖1C的數(shù)據(jù)存儲(chǔ)系統(tǒng)170)被稱為橫向擴(kuò)展系統(tǒng)或集群式存儲(chǔ)系統(tǒng)。
在一些實(shí)施例中,檢測(cè)、執(zhí)行、或檢測(cè)和執(zhí)行兩者至少部分地由主機(jī)執(zhí)行(912)。在一些實(shí)施例中,方法900(或者至少方法900的檢測(cè)操作902和/或執(zhí)行操作904)至少部分地由存儲(chǔ)在非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中并由主機(jī)的一個(gè)或多個(gè)處理器(未在圖1A、圖1B和圖1C中示出的處理器)(比如,圖1A和圖2A-2的管理模塊121-2、或圖1B和圖2B-2的管理模塊151-2、或圖1C和圖2C-2的管理模塊181-2的一個(gè)或多個(gè)處理單元(CPU))執(zhí)行的指令進(jìn)行控制。
在一些實(shí)施例中,檢測(cè)、執(zhí)行、或檢測(cè)和執(zhí)行兩者由存儲(chǔ)系統(tǒng)的不同于第一存儲(chǔ)設(shè)備的一個(gè)或多個(gè)子系統(tǒng)執(zhí)行(914)。例如,在這些實(shí)施例中的一些實(shí)施例中,檢測(cè)、執(zhí)行、或檢測(cè)和執(zhí)行兩者由存儲(chǔ)系統(tǒng)(例如,圖1B的數(shù)據(jù)存儲(chǔ)系統(tǒng)140)的存儲(chǔ)系統(tǒng)控制器(例如,圖1B的存儲(chǔ)系統(tǒng)控制器150)執(zhí)行。在一些實(shí)施例中,方法900(或者至少方法900的檢測(cè)操作902和/或執(zhí)行操作904)由存儲(chǔ)在非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中并由設(shè)備的一個(gè)或多個(gè)處理器(比如,圖1B和圖2B-1中所示出的管理模塊151-1的一個(gè)或多個(gè)處理單元(CPU)152-1)執(zhí)行的指令進(jìn)行控制。
在一些實(shí)施例中,移動(dòng)(904)主機(jī)使用的數(shù)據(jù)的一部分包括根據(jù)改善過程的一個(gè)或多個(gè)參數(shù)來移動(dòng)(916)數(shù)據(jù)的所述部分。在一些實(shí)施例中,存儲(chǔ)控制器124(圖1A)或其部件(例如,圖2D的利用模塊232的移動(dòng)模塊237)將主機(jī)使用的戶數(shù)從第一存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120的存儲(chǔ)介質(zhì)130)或數(shù)據(jù)存儲(chǔ)的第一存儲(chǔ)設(shè)備內(nèi)的物理地址移動(dòng)到另一個(gè)存儲(chǔ)設(shè)備中。在一些實(shí)施例中,改善過程的所述一個(gè)或多個(gè)參數(shù)包括改善過程的緊急程度、目標(biāo)減小的第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量、和/或?qū)Φ谝淮鎯?chǔ)設(shè)備的非易失性存儲(chǔ)器的利用的目標(biāo)減少量、或其任何組合或子集。在一些實(shí)施例中,根據(jù)改善過程的一個(gè)或多個(gè)參數(shù)來移動(dòng)主機(jī)使用的數(shù)據(jù)的所述部分包括移動(dòng)足以滿足所述一個(gè)或多個(gè)參數(shù)指定的減小的聲明容量的目標(biāo)量的數(shù)據(jù)。換句話說,改善過程的所述一個(gè)或多個(gè)參數(shù)指示或?qū)?yīng)于對(duì)主機(jī)可用的存儲(chǔ)容量的目標(biāo)減小量。在一些實(shí)施例中,改善過程的所述一個(gè)或多個(gè)參數(shù)考慮或使改善過程能夠考慮將在預(yù)定義時(shí)間段(例如,一小時(shí)、一天、一周、或任何其他期間)內(nèi)需要的對(duì)第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的預(yù)計(jì)減小。
在一些實(shí)施例中,移動(dòng)(904)主機(jī)使用的數(shù)據(jù)的所述部分包括(922):移動(dòng)與一個(gè)或多個(gè)虛擬邏輯地址相關(guān)聯(lián)的數(shù)據(jù),包括更新虛擬地址映射模塊。參照?qǐng)D2B-1,例如,系統(tǒng)映射模塊250-1是將虛擬邏輯地址映射到中間地址的虛擬地址映射模塊的示例,所述中間地址的每個(gè)中間地址標(biāo)識(shí)與虛擬邏輯地址相對(duì)應(yīng)的數(shù)據(jù)所存儲(chǔ)的存儲(chǔ)設(shè)備或存儲(chǔ)設(shè)備內(nèi)的位置。類似地,圖2C-1的集群映射模塊280-1是將虛擬邏輯地址映射到中間地址的虛擬地址映射模塊的示例,所述中間地址的每個(gè)中間地址標(biāo)識(shí)與虛擬邏輯地址相對(duì)應(yīng)的數(shù)據(jù)所存儲(chǔ)的存儲(chǔ)設(shè)備或存儲(chǔ)設(shè)備內(nèi)的位置。
在一些實(shí)施例中,移動(dòng)數(shù)據(jù)的所述部分包括選擇(918)該數(shù)據(jù)的一個(gè)或多個(gè)邏輯地址以便使性能退化最小化。換句話說,在一些實(shí)施例中,所述方法包括選擇移動(dòng)哪些邏輯地址條目,以便使性能退化最小化。例如,為了實(shí)現(xiàn)特定的聲明容量減小量,在一些情況下,可能存在多個(gè)邏輯地址候選項(xiàng)或候選項(xiàng)集合,可以變更(例如,通過移動(dòng)相關(guān)聯(lián)數(shù)據(jù)以及隨后更新虛擬地址映射模塊)虛擬地址映射模塊(例如,圖2B-1或圖2B-2的系統(tǒng)映射模塊250、或圖2C-1或圖2C-2的集群映射模塊280)中對(duì)所述邏輯地址的映射以便實(shí)現(xiàn)存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明存儲(chǔ)容量的減小。進(jìn)一步地,可以比其他候選項(xiàng)集合更不頻繁地訪問或覆寫候選項(xiàng)集合中的一些候選項(xiàng)集合。通過從最不頻繁地訪問或覆寫的候選項(xiàng)集合當(dāng)中選擇(918)一個(gè)或多個(gè)邏輯地址,過程使性能退化最小化。在另一個(gè)示例中,根據(jù)磨損均衡方法來選擇邏輯地址,以便促進(jìn)均勻磨損或者以便避免非易失性存儲(chǔ)器介質(zhì)的不均勻磨損。
在一些實(shí)施例中,在移動(dòng)與一個(gè)或多個(gè)邏輯地址相關(guān)聯(lián)的數(shù)據(jù)之前,選擇(920)所述一個(gè)或多個(gè)邏輯地址以便使垃圾收集開銷最小化。當(dāng)可以在不需要無理地將數(shù)據(jù)從第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的物理地址空間內(nèi)的一個(gè)位置移動(dòng)到另一個(gè)位置的情況下實(shí)現(xiàn)更新虛擬地址映射模塊(至少在一些情況下)時(shí),在實(shí)踐中,檢測(cè)到的改善觸發(fā)的基本原因可能指示物理地將一些數(shù)據(jù)從第一存儲(chǔ)設(shè)備移動(dòng)到另一個(gè)存儲(chǔ)設(shè)備中。根據(jù)一些實(shí)施例,進(jìn)行選擇(920)的設(shè)備或系統(tǒng)使用過程或分析方法來使將由變更虛擬地址映射模塊產(chǎn)生的數(shù)據(jù)移動(dòng)的量最小化。
在一些實(shí)施例中,減小(904)第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量包括對(duì)與從第一存儲(chǔ)設(shè)備處移動(dòng)的數(shù)據(jù)相關(guān)聯(lián)的邏輯地址進(jìn)行修整(924)。因此,被移動(dòng)數(shù)據(jù)的“舊副本”不再可訪問。
在一些實(shí)施例中,存儲(chǔ)控制器124(圖1A)或其部件(例如,圖2D的容量模塊234的LBA減小模塊238)減少邏輯塊地址空間(例如,圖3的LBA空間320)的邏輯地址和/或協(xié)調(diào)所述減小。在一些實(shí)施例中,邏輯地址是在執(zhí)行改善過程之前與第一存儲(chǔ)設(shè)備相關(guān)聯(lián)的那些邏輯地址。在一些實(shí)施例中,邏輯地址條目中的每個(gè)邏輯地址條目與多個(gè)(例如,八個(gè))邏輯地址相對(duì)應(yīng)(例如,每邏輯地址條目8個(gè)LBA)。
在一些實(shí)施例中,執(zhí)行(904)用于減小第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程進(jìn)一步包括:使映射表的與數(shù)據(jù)的所述部分相關(guān)聯(lián)的一個(gè)或多個(gè)邏輯地址條目無效(926),所述映射表用于將邏輯地址空間中的邏輯地址轉(zhuǎn)換成第一存儲(chǔ)設(shè)備的物理地址空間中的物理地址。例如,參照?qǐng)D4,執(zhí)行改善過程包括使映射表402的邏輯地址條目LBA 0無效,在所述映射表中,LBA 0被映射到物理地址空間410的組1(例如,組420-1)、塊3(例如,塊421-3)、頁(yè)37(圖4中未示出的頁(yè))中。因此,與無效數(shù)據(jù)和許多邏輯地址相對(duì)應(yīng)的相應(yīng)存儲(chǔ)器塊準(zhǔn)備好對(duì)主機(jī)不可用、進(jìn)行刪除、和/或進(jìn)行垃圾收集(例如,將塊的有效頁(yè)重寫到新的塊中,并且擦除包含無效數(shù)據(jù)的舊塊從而使得舊塊可用于待寫入的新數(shù)據(jù))。在一些實(shí)施例中,執(zhí)行改善過程包括還為與一個(gè)或多個(gè)無效邏輯地址條目相對(duì)應(yīng)的一個(gè)或多個(gè)物理地址設(shè)置一個(gè)或多個(gè)指示符以便指示可以丟棄存儲(chǔ)在一個(gè)或多個(gè)物理地址處的數(shù)據(jù)。替代性地,將與一個(gè)或多個(gè)無效邏輯地址條目相對(duì)應(yīng)的物理地址中的一個(gè)或多個(gè)物理地址相對(duì)應(yīng)的記錄或其他數(shù)據(jù)移動(dòng)到符合刪除條件或準(zhǔn)備好進(jìn)行刪除的存儲(chǔ)器部分列表中。
在一些實(shí)施例中,執(zhí)行(904)用于減小第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程進(jìn)一步包括通告(928)第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量。在一些實(shí)施例中,存儲(chǔ)控制器124(圖1A)或其部件(例如,圖2D的容量模塊234的通告模塊239)通告第一存儲(chǔ)設(shè)備(例如,圖1A的存儲(chǔ)設(shè)備120的存儲(chǔ)介質(zhì)130)或存儲(chǔ)子系統(tǒng)的非易失性存儲(chǔ)器的減小的聲明容量/或者協(xié)調(diào)所述通告。在一些實(shí)施方式中,第一存儲(chǔ)設(shè)備或相應(yīng)存儲(chǔ)控制器、集群控制器、管理模塊或數(shù)據(jù)存儲(chǔ)系統(tǒng)向主機(jī)發(fā)送消息,通告第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量。在一些實(shí)施方式中,通過以下方式來完成通告減小的聲明容量:向主機(jī)發(fā)送中斷消息或其他帶內(nèi)或帶外消息。
在一些實(shí)施方式中,通過以下方式來完成通告減小的聲明容量:接收來自與第一存儲(chǔ)設(shè)備可操作地耦合的主機(jī)的查詢以及響應(yīng)于接收查詢而上報(bào)第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量。在一些這種實(shí)施方式中,主機(jī)被配置成用于在存儲(chǔ)系統(tǒng)、存儲(chǔ)控制器、管理模塊、集群控制器或存儲(chǔ)設(shè)備中周期性地查詢例如系統(tǒng)或設(shè)備健康狀態(tài)。
在一些實(shí)施方式中,通過以下方式來完成通告減小的聲明容量:接收來自與第一存儲(chǔ)設(shè)備可操作地耦合的主機(jī)的命令(例如,存儲(chǔ)讀取或?qū)懭朊?以及響應(yīng)于接收命令而發(fā)送對(duì)命令的響應(yīng)(所述響應(yīng)包括對(duì)第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量的通知)。
在一些實(shí)施方式中,通過以下方式來完成通告減小的聲明容量:接收來自與第一存儲(chǔ)設(shè)備可操作地耦合的主機(jī)的命令(例如,存儲(chǔ)讀取或?qū)懭朊?以及響應(yīng)于接收命令而發(fā)送對(duì)命令的響應(yīng)(所述響應(yīng)包括對(duì)第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量的通知)。
在一些實(shí)施方式中,通過以下方式來完成通告減小的聲明容量:接收來自與第一存儲(chǔ)設(shè)備可操作地耦合的主機(jī)的命令(例如,存儲(chǔ)讀取或?qū)懭朊?以及響應(yīng)于接收命令而發(fā)送對(duì)命令的響應(yīng)和提醒主機(jī)從第一存儲(chǔ)設(shè)備處或者從包括第一存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)系統(tǒng)處獲取包括第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的減小的聲明容量的信息的通知。在一些實(shí)施例中,用于在對(duì)來自主機(jī)的命令進(jìn)行響應(yīng)時(shí)返回通知的機(jī)制是SCSI延遲錯(cuò)誤或延遲錯(cuò)誤響應(yīng)碼。
在一些實(shí)施例中,在開始執(zhí)行用于減小第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程(904)之后,所述方法包括檢測(cè)用于中止對(duì)第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的減小的指示(930);以及響應(yīng)于檢測(cè)用于中止對(duì)第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的減小的指示而中止(932)執(zhí)行用于減小第一存儲(chǔ)設(shè)備的非易失性存儲(chǔ)器的聲明容量的改善過程。檢測(cè)用于中止的指示在本文中被定義為指接收用于中止對(duì)聲明容量的減小的信號(hào)(例如,接收來自第一存儲(chǔ)設(shè)備的控制器或包括第一存儲(chǔ)設(shè)備的存儲(chǔ)系統(tǒng)的存儲(chǔ)系統(tǒng)控制器的信號(hào))或者評(píng)估第一存儲(chǔ)設(shè)備的一個(gè)或多個(gè)度量以及基于所述評(píng)估來決定中止對(duì)聲明容量的減小。例如,在改善過程的操作期間,將繼續(xù)執(zhí)行正常存儲(chǔ)操作(例如,讀取、寫入、刪除、修整等)。正常存儲(chǔ)操作包括像修整等明確減少第一存儲(chǔ)設(shè)備利用的操作,有可能足以值得中止改善過程。如垃圾收集等其他存儲(chǔ)活動(dòng)也可以減少利用,有可能足以值得中止改善過程。
在一些實(shí)施例中,因?yàn)樵S多參數(shù)的值可能由于改善過程和/或正常存儲(chǔ)操作(例如,讀取、寫入、擦除、和修整或去映射操作)而改變,所以改善過程(例如,周期性地、半連續(xù)地、初始地、最終地、偶爾、或不定期地)重新計(jì)算或重新評(píng)估那些參數(shù)(比如,目標(biāo)減小的聲明容量和/或目標(biāo)利用減少量)。在一些情況下,根據(jù)重新計(jì)算的或重新評(píng)估的參數(shù),對(duì)改善過程的一個(gè)或多個(gè)部分(比如,利用減少過程)重新進(jìn)行優(yōu)先級(jí)排序、重新安排、或中止。
在一些實(shí)施例中,第一存儲(chǔ)設(shè)備包括(934)一個(gè)或多個(gè)閃存設(shè)備。在一些實(shí)施例中,第一存儲(chǔ)設(shè)備包括存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130),并且存儲(chǔ)介質(zhì)包括如閃存設(shè)備等一個(gè)或多個(gè)非易失性存儲(chǔ)設(shè)備。在一些實(shí)施例中,存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)是單個(gè)閃存設(shè)備,而在其他實(shí)施例中,存儲(chǔ)介質(zhì)包括多個(gè)閃存設(shè)備。例如,在一些實(shí)施例中,存儲(chǔ)介質(zhì)包括在并行存儲(chǔ)器通道中組織的數(shù)十個(gè)或數(shù)百個(gè)閃存設(shè)備,比如,每個(gè)存儲(chǔ)器通道16、32或64個(gè)閃存設(shè)備,以及8、16或32個(gè)并行存儲(chǔ)器通道。在一些實(shí)施例中,非易失性存儲(chǔ)介質(zhì)(例如,圖1A的存儲(chǔ)介質(zhì)130)包括NAND類型閃存或NOR類型閃存。在其他實(shí)施例中,存儲(chǔ)介質(zhì)包括一種或多種其他類型的非易失性存儲(chǔ)設(shè)備。
在具有多個(gè)存儲(chǔ)設(shè)備的實(shí)施例中,存儲(chǔ)系統(tǒng)可能發(fā)現(xiàn)針對(duì)(或者關(guān)聯(lián)于)多個(gè)存儲(chǔ)設(shè)備而從邏輯地址空間或邏輯地址空間的部分中構(gòu)造出虛擬邏輯地址空間(LBA空間320)是有利的。存儲(chǔ)系統(tǒng)(例如,數(shù)據(jù)存儲(chǔ)系統(tǒng)140、數(shù)據(jù)存儲(chǔ)系統(tǒng)170等)包括將接收到的虛擬邏輯地址轉(zhuǎn)換成中間地址的虛擬映射模塊(例如,系統(tǒng)映射模塊250-2、集群映射模塊280-1等)。在一些實(shí)施例中,虛擬映射模塊可以包含算法函數(shù)(例如,Ceph存儲(chǔ)系統(tǒng)的CRUSH映射)。在其他實(shí)施例中,虛擬映射模塊可以是通過虛擬邏輯地址索引的中間地址表。在一些實(shí)施例中(例如,圖1B),中間地址由特定存儲(chǔ)設(shè)備(160-x)的一個(gè)或多個(gè)編號(hào)和一個(gè)或多個(gè)參考的存儲(chǔ)設(shè)備的一個(gè)或多個(gè)邏輯地址組成。在一些實(shí)施例中(例如,圖1C),中間地址由一個(gè)或多個(gè)存儲(chǔ)子系統(tǒng)(192-x)的編號(hào)和一個(gè)或多個(gè)存儲(chǔ)子系統(tǒng)內(nèi)的數(shù)據(jù)的一個(gè)或多個(gè)定位符組成。定位符被存儲(chǔ)子系統(tǒng)理解為引用該存儲(chǔ)系統(tǒng)的一個(gè)或多個(gè)存儲(chǔ)設(shè)備(194-x)一個(gè)或多個(gè)邏輯地址。例如,存儲(chǔ)子系統(tǒng)可以使用文件系統(tǒng)來組織存儲(chǔ)設(shè)備(194-1、194-2、…、等),在這種情況下,定位符可以是文件編號(hào)(例如,文件名)或?qū)ξ募囊徊糠值木幪?hào)。因?yàn)閷?duì)虛擬映射模塊的使用允許在與虛擬邏輯地址空間相關(guān)聯(lián)的數(shù)據(jù)的位置中的存儲(chǔ)系統(tǒng)靈活性,所以其是有利的。具體地,可以在不通過變更虛擬映射表的內(nèi)容來改變虛擬邏輯地址的情況下在所述多個(gè)存儲(chǔ)設(shè)備之間移動(dòng)數(shù)據(jù)(或甚至移動(dòng)到單個(gè)設(shè)備內(nèi)的不同位置中)。
半導(dǎo)體存儲(chǔ)器設(shè)備包括易失性存儲(chǔ)器設(shè)備(如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(“DRAM”)或靜態(tài)隨機(jī)存取存儲(chǔ)器(“SRAM”))、非易失性存儲(chǔ)器設(shè)備(如電阻式隨機(jī)存取存儲(chǔ)器(“ReRAM”)、電可擦除可編程只讀存儲(chǔ)器(“EEPROM”)、閃存(其還可以被考慮為EEPROM的子集)、鐵電隨機(jī)存取存儲(chǔ)器(“FRAM”)、和磁阻隨機(jī)存取存儲(chǔ)器(“MRAM”))、以及能夠存儲(chǔ)信息的其他半導(dǎo)體元件。每種類型的存儲(chǔ)器設(shè)備可以具有不同的配置。例如,閃存設(shè)備可以被配置成NAND或NOR配置。
位于基板內(nèi)和/或上方的半導(dǎo)體存儲(chǔ)器元件可以被安排在兩個(gè)或三個(gè)維度(如二維存儲(chǔ)器結(jié)構(gòu)或三維存儲(chǔ)器結(jié)構(gòu))中。
術(shù)語(yǔ)“三維存儲(chǔ)器設(shè)備”(或3D存儲(chǔ)器設(shè)備)在此被定義為指具有多個(gè)存儲(chǔ)器層或多個(gè)存儲(chǔ)器元件級(jí)(例如,有時(shí)被稱為多個(gè)存儲(chǔ)器設(shè)備級(jí))的存儲(chǔ)器設(shè)備,包括以下各項(xiàng)中的任一項(xiàng):具有單片式或非單片式3D存儲(chǔ)器陣列的存儲(chǔ)器設(shè)備;或兩個(gè)或更多個(gè)2D和/或3D存儲(chǔ)器設(shè)備(其被封裝在一起,以便形成堆疊芯片存儲(chǔ)器設(shè)備)。
本領(lǐng)域的技術(shù)人員將意識(shí)到,本發(fā)明不限于所描述的二維和三維結(jié)構(gòu),但涵蓋了如此處描述的本發(fā)明的精神和范圍內(nèi)的和如本領(lǐng)域的技術(shù)人員理解的所有相關(guān)存儲(chǔ)器結(jié)構(gòu)。
將理解的是,盡管此處可以使用術(shù)語(yǔ)“第一”、“第二”等來描述各個(gè)元件,但是這些元件不應(yīng)被這些術(shù)語(yǔ)限制。這些術(shù)語(yǔ)僅用于將一個(gè)元件與另一個(gè)元件相區(qū)分。例如,在不改變描述的含義的情況下,第一存儲(chǔ)設(shè)備可以被稱為第二存儲(chǔ)設(shè)備,并且類似地,第二存儲(chǔ)設(shè)備可以被稱為第一存儲(chǔ)設(shè)備,只要一致地重新命名“第一存儲(chǔ)設(shè)備”的所有出現(xiàn)并且一致地重新命名“第二存儲(chǔ)設(shè)備”的所有出現(xiàn)即可。第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備都是存儲(chǔ)設(shè)備,但是它們不是相同的存儲(chǔ)設(shè)備。
此處所使用的術(shù)語(yǔ)僅出于描述特定實(shí)施例的目的,而不旨在于限制權(quán)利要求書。如在對(duì)實(shí)施例和所附權(quán)利要求書的描述中所使用的,除非上下文另有明示,否則單數(shù)形式“一個(gè)(a)”、“一個(gè)(an)”和“所述(the)”旨在同樣包括復(fù)數(shù)形式。還將理解的是,如本文使用的術(shù)語(yǔ)“和/或”指代并且包括相關(guān)聯(lián)的列舉項(xiàng)的一個(gè)或多個(gè)項(xiàng)的任何和所有可能組合。將進(jìn)一步理解的是,當(dāng)在本說明書中使用術(shù)語(yǔ)“包括(comprises)”和/或“包括(comprising)”時(shí),其指定陳述的特征、整數(shù)、步驟、操作、元件和/或部件的存在,但不排除一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、部件和/或它們的組的存在或添加。
如在此所使用的,根據(jù)上下文,術(shù)語(yǔ)“如果”可以被解釋為指“當(dāng)…時(shí)”或者“在…時(shí)”或者“響應(yīng)于確定”或者“根據(jù)確定”或者“響應(yīng)于檢測(cè)到”所述先決條件為真。類似地,根據(jù)上下文,短語(yǔ)“如果確定”或“如果”或“當(dāng)時(shí)”可以被解釋為指“在確定時(shí)”或“響應(yīng)于確定”或“根據(jù)確定”或“在檢測(cè)到時(shí)”或“響應(yīng)于檢測(cè)到”所述先決條件為真。
出于解釋的目的,已經(jīng)參考特定實(shí)施例描述了前述描述。然而,以上的說明性討論并不旨在是詳盡的或旨在將權(quán)利要求書限制成所公開的精確形式。鑒于以上教導(dǎo),許多修改和變化都是可能的。選擇并描述了實(shí)施例,以便最好地解釋操作原理和實(shí)際應(yīng)用,由此使能本領(lǐng)域的技術(shù)人員。