所公開的實(shí)施例總體上涉及存儲器系統(tǒng),并且具體地涉及在存儲設(shè)備(例如,包括一個或多個閃存設(shè)備)中跨電源周期跟蹤對寫入命令和解除映射命令的混合。
背景技術(shù):
半導(dǎo)體存儲器設(shè)備(包括閃存)通常利用存儲器單元來將數(shù)據(jù)存儲為電性值,如電荷或電壓。閃存單元例如包括具有用于存儲表示數(shù)據(jù)值的電荷的浮柵的單個晶體管。閃存是可以被電擦除和重新編程的非易失性數(shù)據(jù)存儲設(shè)備。更一般地,與需要電力來維持存儲信息的易失性存儲器相反,即使斷電時,非易失性存儲器(例如,閃存以及使用各種技術(shù)中的任何技術(shù)實(shí)現(xiàn)的其他類型的非易失性存儲器)仍然保持所存儲的信息。
數(shù)據(jù)強(qiáng)化(保存保持在易失性存儲設(shè)備中的數(shù)據(jù)和關(guān)鍵任務(wù)元數(shù)據(jù))對于存儲設(shè)備而言是重要的。當(dāng)存在掉電時,關(guān)鍵任務(wù)數(shù)據(jù)可以駐存在多個子系統(tǒng)部件中的易失性存儲器中。協(xié)調(diào)并管理多個子系統(tǒng)部件以確保易失性數(shù)據(jù)被成功保存對于保護(hù)存儲設(shè)備的數(shù)據(jù)完整性而言是重要的。
技術(shù)實(shí)現(xiàn)要素:
所附權(quán)利要求書的范圍內(nèi)的系統(tǒng)、方法和設(shè)備的各個實(shí)施例各自具有若干方面,其中這些方面中沒有哪個單個方面單獨(dú)地負(fù)責(zé)在此所描述的屬性。不限制所附權(quán)利要求書的范圍,在考慮本公開之后,并且具體地在考慮標(biāo)題為“具體實(shí)施方式”的部分之后,將理解如何使用各個實(shí)施例的各個方面來使能夠跨電源周期跟蹤對寫入命令和解除映射命令的混合。一方面,當(dāng)存儲設(shè)備上電時,根據(jù)存儲設(shè)備的非易失性存儲器中的保存的映射表快照以及根據(jù)存儲設(shè)備的非易失性存儲器中保存的日志重建易失性存儲器中的映射表。
附圖說明
為了可以更詳細(xì)地理解本公開,可參考各個實(shí)施例的特征以產(chǎn)生更具體的說明,所述實(shí)施例中的一些被展示在附圖中。然而,附圖僅展示了本公開的相關(guān)特征,并且因此不應(yīng)被認(rèn)為是限制性的,因?yàn)檎f明書可以允許其他有效的特征。
圖1是框圖,展示了根據(jù)一些實(shí)施例的數(shù)據(jù)存儲系統(tǒng)的實(shí)施方式。
圖2是框圖,展示了根據(jù)一些實(shí)施例的管理模塊的實(shí)施方式。
圖3是根據(jù)一些實(shí)施例的邏輯地址空間并且更確切地邏輯塊地址(lba)空間的框圖。
圖4是根據(jù)一些實(shí)施例的映射表和物理地址空間的框圖。
圖5a至圖5b展示了根據(jù)一些實(shí)施例的管理存儲系統(tǒng)的方法的流程圖表示。
根據(jù)慣例,附圖中展示的各種特征不必按比例繪制。因此,為了清晰起見,不同特征的尺寸可以被任意放大或減小。此外,一些附圖可能沒有描繪給定系統(tǒng)、方法或設(shè)備的所有部件。最后,貫穿說明書和附圖,相同的參考數(shù)字可以用來表示相似的特征。
具體實(shí)施方式
在此所描述的各實(shí)施例包括用于使能夠跨電源周期跟蹤對寫入命令和解除映射命令的混合的系統(tǒng)、方法和/或設(shè)備。一些實(shí)施例包括用于在存儲設(shè)備上電時從保存的映射表快照以及從日志中重建易失性存儲器中的映射表的系統(tǒng)、方法和/或設(shè)備。
(a1)更確切地,一些實(shí)施例包括一種管理存儲系統(tǒng)的方法。在一些實(shí)施例中,所述方法包括:(1)在所述存儲系統(tǒng)的存儲設(shè)備處接收來自與所述存儲設(shè)備操作性地耦合主機(jī)的多個命令,所述存儲設(shè)備包括非易失性存儲器;(2)維護(hù)與來自所述主機(jī)的寫入命令和解除映射命令相對應(yīng)的日志;(3)在易失性存儲器中維護(hù)映射表,所述映射表用于將邏輯地址空間中對所述主機(jī)可用的邏輯地址轉(zhuǎn)換為在所述存儲設(shè)備的物理地址空間中的物理地址;(4)在與所述解除映射命令無關(guān)的調(diào)度基礎(chǔ)上,將所述映射表保存至所述存儲設(shè)備的所述非易失性存儲器中;(5)將所述日志保存到所述存儲設(shè)備的所述非易失性存儲器中;以及(6)當(dāng)所述存儲設(shè)備上電時,從所述存儲設(shè)備的所述非易失性存儲器中的所述保存的映射表以及從所述存儲設(shè)備的所述非易失性存儲器中的所述保存的日志來重建所述映射表。
(a2)在a1所述的方法的一些實(shí)施例中,保存所述映射表包括將指向所述日志中的位置的位置指針存儲在所述非易失存儲器中。
(a3)在a1至a2中任一項(xiàng)所述的方法的一些實(shí)施例中,保存映射表包括在不同的調(diào)度時間處將映射表的多個不同部分保存到非易失性存儲器中。
(a4)在a1至a3中任一項(xiàng)所述的方法的一些實(shí)施例中,針對寫入命令,所述日志包括結(jié)合執(zhí)行所述寫入命令存儲數(shù)據(jù)的物理地址。
(a5)在a1至a4中任一項(xiàng)所述的方法的一些實(shí)施例中,所述日志包括針對對應(yīng)解除映射命令(有時被稱為“第一解除映射命令”)的條目,所述條目包括標(biāo)識根據(jù)所述對應(yīng)解除映射命令而被解除映射的多個邏輯地址的信息。
(a6)在a1至a4中任一項(xiàng)所述的方法的一些實(shí)施例中,所述日志包括針對對應(yīng)解除映射命令的條目,所述條目包括標(biāo)識根據(jù)所述對應(yīng)解除映射命令而被解除映射的邏輯地址范圍的信息。
(a7)在a1至a6中任一項(xiàng)所述的方法的一些實(shí)施例中,將所述日志保存到所述非易失性存儲器中包括結(jié)合掉電事件將所述日志的至少一部分保存到所述非易失性存儲器中。
(a8)在a1至a7中任一項(xiàng)所述的方法的一些實(shí)施例中,將所述日志保存到所述非易失性存儲器中包括當(dāng)所述日志滿足預(yù)定義的充滿度標(biāo)準(zhǔn)時將所述日志的至少第一部分保存到所述非易失性存儲器中,并且結(jié)合掉電事件將所述日志的最終部分保存到所述非易失性存儲器中。
(a9)在a1至a8中任一項(xiàng)所述的方法的一些實(shí)施例中,所述存儲設(shè)備包括一個或多個閃存設(shè)備。
(a10)另一方面,一種存儲設(shè)備包括:(1)非易失性存儲器(例如,包括如閃存設(shè)備等一個或多個非易失性存儲設(shè)備);(2)一個或多個處理器;以及(3)存儲一個或多個程序的控制器存儲器(例如,所述控制器中或者耦合至所述控制器的非易失性存儲器或易失性存儲器),所述一個或多個程序當(dāng)由所述一個或多個處理器執(zhí)行時使所述存儲設(shè)備執(zhí)行或控制在此所描述的a1至a9方法中的任何方法的執(zhí)行。
(a12)在又另一方面,以上所描述的a1至a9方法中的任何方法由存儲設(shè)備執(zhí)行,所述存儲設(shè)備包括用于執(zhí)行在此所描述的方法中的任何方法的裝置。
(a14)在又另一方面,一種存儲系統(tǒng)包括:(1)存儲介質(zhì)(例如,包括如閃存設(shè)備等一個或多個非易失性存儲設(shè)備);(2)一個或多個處理器;以及(3)存儲一個或多個程序的存儲器(例如,所述存儲系統(tǒng)中的非易失性存儲器或易失性存儲器),所述一個或多個程序當(dāng)由所述一個或多個處理器執(zhí)行時使所述存儲系統(tǒng)執(zhí)行或控制在此所描述的a1至a9方法中的任何方法的執(zhí)行。
(a15)在又另一方面,一些實(shí)施例包括一種非瞬態(tài)計(jì)算機(jī)可讀存儲介質(zhì),所述非瞬態(tài)計(jì)算機(jī)可讀存儲介質(zhì)存儲有被配置成由存儲設(shè)備的一個或多個處理器執(zhí)行的一個或多個程序,所述一個或多個程序包括用于執(zhí)行在此所描述的方法中的任何方法的指令。
為了提供對附圖中展示的示例實(shí)施例的透徹理解,在此描述了大量細(xì)節(jié)。然而,可以在沒有許多特定細(xì)節(jié)的情況下實(shí)踐一些實(shí)施例,并且權(quán)利要求書的范圍僅由在權(quán)利要求中具體記載的那些特征和方面限制。此外,并未對已知的方法、部件和電路進(jìn)行詳細(xì)描述,以免不必要模糊在此所描述的實(shí)施例的相關(guān)方面。
圖1是框圖,展示了根據(jù)一些實(shí)施例的數(shù)據(jù)存儲系統(tǒng)100。盡管展示了一些示例特征,但是,為簡潔起見并且以免不必要模糊在此所公開的示例實(shí)施例的相關(guān)方面,沒有展示各種其他特征。為此,作為非限制性示例,數(shù)據(jù)存儲系統(tǒng)100包括存儲設(shè)備120(有時也被稱為信息存儲設(shè)備、或數(shù)據(jù)存儲設(shè)備、或存儲器設(shè)備),所述存儲設(shè)備包括存儲控制器124、一個或多個非易失性存儲器(nvm)控制器130(如閃存控制器)、以及非易失性存儲器(例如,一個或多個nvm設(shè)備140、142,如一個或多個閃存設(shè)備),并且結(jié)合計(jì)算機(jī)系統(tǒng)110一起使用。在一些實(shí)施例中,存儲設(shè)備120包括單個nvm設(shè)備,而在其他實(shí)施例中,存儲設(shè)備120包括多個nvm設(shè)備。在一些實(shí)施例中,nvm設(shè)備140、142包括nand類型閃存或nor類型閃存。此外,在一些實(shí)施例中,nvm控制器130是固態(tài)驅(qū)動器(ssd)控制器。然而,根據(jù)各種各樣的實(shí)施例的方面,可以包括其他類型的存儲介質(zhì)(例如,pcram、reram、stt-ram等)。在一些實(shí)施例中,閃存設(shè)備包括一個或多個閃存管芯、一個或多個閃存封裝體、一個或多個閃存信道等。在一些實(shí)施例中,數(shù)據(jù)存儲系統(tǒng)100可以包括一個或多個存儲設(shè)備120。
計(jì)算機(jī)系統(tǒng)110通過數(shù)據(jù)連接101耦合至存儲控制器124。然而,在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)110包括作為部件和/或子系統(tǒng)的存儲控制器124或存儲控制器124的一部分。例如,在一些實(shí)施例中,存儲控制器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)信息站、個人數(shù)字助理、移動電話、智能電話、游戲設(shè)備、計(jì)算機(jī)服務(wù)器、或任何其他計(jì)算設(shè)備。計(jì)算機(jī)系統(tǒng)110有時被稱為主機(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包括一個或多個處理器、一種或多種類型的存儲器、顯示器和/或其他用戶接口部件,如鍵盤、觸屏顯示器、鼠標(biāo)、軌跡板、數(shù)字相機(jī)和/或用于增加功能的任何數(shù)量的補(bǔ)充設(shè)備。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)110不具有顯示器和其他用戶接口部件。
所述一個或多個nvm控制器130通過連接103與存儲控制器124耦合。連接103有時被稱為數(shù)據(jù)連接,但是通常傳達(dá)除數(shù)據(jù)外的命令,并且可選地傳達(dá)元數(shù)據(jù)、糾錯信息和/或除了將要存儲在nvm設(shè)備140、142中的數(shù)據(jù)值以及從nvm設(shè)備140、142中讀取出的數(shù)據(jù)值之外的其他信息。然而,在一些實(shí)施例中,存儲控制器124、所述一個或多個nvm控制器130以及nvm設(shè)備140、142包括在如其部件等相同設(shè)備(即,集成設(shè)備)中。此外,在一些實(shí)施例中,存儲控制器124、所述一個或多個nvm控制器130以及nvm設(shè)備140、142嵌入在主機(jī)設(shè)備(例如,計(jì)算機(jī)系統(tǒng)110)中,如移動設(shè)備、平板計(jì)算機(jī)、其他計(jì)算機(jī)或計(jì)算機(jī)控制設(shè)備,并且在此所描述的方法至少部分地由嵌入的存儲控制器執(zhí)行。
在一些實(shí)施例中,存儲設(shè)備120包括nvm設(shè)備140、142,如閃存設(shè)備(例如,nvm設(shè)備140-1至140-n、以及nvm設(shè)備142-1至142-k)和nvm控制器130(例如,nvm控制器130-1至130-m)。以另一種方式來看,存儲設(shè)備120包括m個存儲器通道,其中每個存儲器通道具有nvm控制器130以及耦合至nvm控制器130的nvm設(shè)備140或142集合,其中,m是大于一的整數(shù)。然而,在一些實(shí)施例中,兩個或更多個存儲器通道共享nvm控制器130。在任一示例中,每個存儲器通道具有其自己不同的nvm設(shè)備140或142集合。在非限制性示例中,典型存儲設(shè)備中的存儲器通道數(shù)量為8、16或32。在另一個非限制性示例中,每存儲器通道nvm設(shè)備140或142的數(shù)量通常為8、16、32或64。此外,在一些實(shí)施例中,nvm設(shè)備140/142的數(shù)量在不同存儲器通道中有所不同。
在一些實(shí)施例中,nvm控制器130中的每個nvm控制器包括被配置成用于執(zhí)行一個或多個程序中的指令(例如,在nvm控制器130中)的一個或多個處理單元(有時也被稱為cpu或處理器或微處理器或微控制器)。在一些實(shí)施例中,所述一個或多個處理器由在nvm控制器130的功能之內(nèi)(以及某些情況下之外)的一個或多個部件共享。nvm設(shè)備140、142通過連接耦合至nvm控制器130,所述連接典型地傳達(dá)除數(shù)據(jù)外的命令,并且可選地傳達(dá)元數(shù)據(jù)、糾錯信息和/或除了將要存儲在nvm設(shè)備140、142中的數(shù)據(jù)值以及從nvm設(shè)備140、142中讀取出的數(shù)據(jù)值之外的其他信息。nvm設(shè)備140、142可以包括任意數(shù)量(即,一個或多個)的存儲設(shè)備,包括但不限于,非易失性半導(dǎo)體存儲設(shè)備,如(多個)閃存設(shè)備。
例如,(多個)閃存設(shè)備(例如,nvm設(shè)備140、142)可以被配置成用于適合于如云計(jì)算應(yīng)用、數(shù)據(jù)庫應(yīng)用的企業(yè)存儲設(shè)備、主存儲設(shè)備和/或輔助存儲設(shè)備,或者于緩存在輔助存儲設(shè)備(如硬盤驅(qū)動器)中所存儲(或?qū)⒁鎯?的數(shù)據(jù)。另外地或替代性地,(多個)閃存設(shè)備(例如,nvm設(shè)備140、142)還可以被配置成用于個人計(jì)算機(jī)、膝上型計(jì)算機(jī)和平板計(jì)算機(jī)的相對更小型應(yīng)用,如個人閃存驅(qū)動器或硬盤替代。盡管閃存設(shè)備和閃存控制器在此被用作示例,但是,在一些實(shí)施例中,存儲設(shè)備120包括其他(多個)非易失性存儲器設(shè)備和相應(yīng)的(多個)非易失性存儲控制器。
在一些實(shí)施例中,nvm設(shè)備140、142被劃分為多個可尋址且單獨(dú)可選擇塊。在一些實(shí)施例中,單獨(dú)可選塊是閃存設(shè)備中的最小尺寸可擦除單元。換言之,每個塊包含可同時擦除的最少數(shù)量的存儲器單元。每個塊通常被進(jìn)一步劃分為多個頁和/或字線,其中,每一頁或字線典型地是塊中的最小單獨(dú)可尋址(可讀)部分的實(shí)例。在一些實(shí)施例中(例如,使用某些類型的閃存),然而,數(shù)據(jù)集的最小單獨(dú)可尋址單元是作為頁的子集的扇區(qū)。也就是說,一個塊包括多頁,每一頁包含多個扇區(qū),并且每個扇區(qū)是用于從閃存設(shè)備讀取數(shù)據(jù)的最小數(shù)據(jù)單元。
如以上指出的,當(dāng)非易失性半導(dǎo)體存儲設(shè)備的數(shù)據(jù)存儲密度總體增加時,增加的存儲密度的缺點(diǎn)為所存儲的數(shù)據(jù)更傾向于被錯誤地存儲和/或讀取。在一些實(shí)施例中,誤差控制編碼可以用于限制由電氣波動、存儲介質(zhì)缺陷、操作狀況、設(shè)備歷史、讀取寫入電路等或這些以及各種其他因素的組合引入的不可校正的誤差數(shù)量。
在一些實(shí)施例中,存儲控制器124包括管理模塊121-1、主機(jī)接口129、存儲介質(zhì)(i/o)接口128以及(多個)附加模塊125。存儲控制器124可以包括各種附加特征,為簡潔起見并且以免模糊在此公開的示例實(shí)施例的相關(guān)特征,沒有展示所述附加特征,并且所述特征的不同安排是可能的。
主機(jī)接口129通過數(shù)據(jù)連接101向計(jì)算機(jī)系統(tǒng)110提供接口。類似地,存儲介質(zhì)接口128提供用于通過連接103到達(dá)nvm控制器130的接口。在一些實(shí)施例中,存儲介質(zhì)接口128包括讀取寫入電路,所述讀取寫入電路包括能夠?qū)⒆x取信號提供至nvm控制器130的電路(例如,針對nand類型閃存的讀取閾值電壓)。在一些實(shí)施例中,連接101和連接103被實(shí)現(xiàn)為通信介質(zhì),在所述通信介質(zhì)上,使用如ddr3、scsi、sata、sas等協(xié)議傳達(dá)命令和數(shù)據(jù)。在一些實(shí)施例中,存儲控制器124包括被配置成用于執(zhí)行一個或多個程序中的指令(例如,在存儲控制器124中)的一個或多個處理單元(有時也被稱為cpu或處理器或微處理器或微控制器)。在一些實(shí)施例中,所述一個或多個處理器由在存儲控制器124的功能之內(nèi)(以及某些情況下之外)的一個或多個部件共享。
在一些實(shí)施例中,管理模塊121-1包括被配置成用于執(zhí)行一個或多個程序中的指令(例如,在管理模塊121-1中)的一個或多個處理單元(cpu,有時還被稱為處理器或微處理器或微控制器)122。在一些實(shí)施例中,一個或多個cpu122由在存儲控制器124的功能之內(nèi)(以及某些情況下之外)的一個或多個部件共享。管理模塊121-1耦合至主機(jī)接口129、(多個)附加模塊125以及存儲介質(zhì)接口128,以便協(xié)調(diào)這些部件的操作。在一些實(shí)施例中,管理模塊121-1的一個或多個模塊在計(jì)算機(jī)系統(tǒng)110的管理模塊121-2中實(shí)現(xiàn)。在一些實(shí)施例中,計(jì)算機(jī)系統(tǒng)110(未示出)的一個或多個處理器被配置成用于執(zhí)行一個或多個程序中的指令(例如,在管理模塊121-2中)。管理模塊121-2耦合至存儲設(shè)備120,以便管理存儲設(shè)備120的操作。
(多個)附加模塊125耦合至存儲介質(zhì)接口128、主機(jī)接口129以及管理模塊121-1。舉例來講,(多個)附加模塊125可以包括誤差控制模塊,用于限制在寫入存儲器和/或從存儲器讀取的過程中無意中引入數(shù)據(jù)中的不可校正的誤差的數(shù)量。在一些實(shí)施例中,(多個)附加模塊125由管理模塊121-1的一個或多個cpu122在軟件中執(zhí)行,并且,在其他實(shí)施例中,(多個)附加模塊125全部地或部分地使用特殊用途電路實(shí)現(xiàn)(例如,以執(zhí)行編碼和解碼功能)。在一些實(shí)施例中,(多個)附加模塊125全部地或部分地由在計(jì)算機(jī)系統(tǒng)110上執(zhí)行的軟件實(shí)現(xiàn)。
在一些實(shí)施例中,包括在(多個)附加模塊125中的誤差控制模塊包括編碼器和解碼器。在一些實(shí)施例中,編碼器通過應(yīng)用誤差控制碼(ecc)來對數(shù)據(jù)進(jìn)行編碼以產(chǎn)生碼字,所述碼字隨后被存儲在nvm設(shè)備140、142中。當(dāng)從nvm設(shè)備140、142中讀取編碼數(shù)據(jù)(例如,一個或多個碼字)時,解碼器將解碼過程應(yīng)用于編碼數(shù)據(jù)以恢復(fù)所述數(shù)據(jù)并且在誤差控制碼的誤差校正能力范圍內(nèi)校正所述恢復(fù)數(shù)據(jù)中的誤差。本領(lǐng)域技術(shù)人員將理解的是,各種誤差控制碼具有不同的誤差檢測和校正能力,并且由于超出本公開范圍的原因,選擇特定的碼用于各種應(yīng)用。由此,本文不提供各種類型的誤差控制碼的詳盡回顧。此外,本領(lǐng)域技術(shù)人員將認(rèn)識到,每一類或每一族誤差控制碼可以具有特定于所述一類或一族誤差控制碼的編碼和解碼算法。另一方面,一些算法可以至少在一定程度上用于對多個不同類或族的誤差控制碼進(jìn)行解碼。由此,為了簡潔起見,在此不提供對本領(lǐng)域技術(shù)人員而言通常可用且已知的各種類型的編碼和解碼算法的詳盡描述。
在一些實(shí)施例中,在寫入操作過程中,主機(jī)接口129從計(jì)算機(jī)系統(tǒng)110接收有待存儲在nvm設(shè)備140、142中的數(shù)據(jù)。由主機(jī)接口129接收的數(shù)據(jù)可用于編碼器(例如,在(多個)附加模塊125中),所述編碼器對所述數(shù)據(jù)進(jìn)行編碼以產(chǎn)生一個或多個碼字。所述一個或多個碼字可用于存儲介質(zhì)接口128,所述存儲介質(zhì)接口128以與所利用的存儲介質(zhì)的類型無關(guān)的方式將所述一個或多個碼字傳送至nvm設(shè)備140、142(例如,通過nvm控制器130)。
在一些實(shí)施例中,當(dāng)計(jì)算機(jī)系統(tǒng)(主機(jī))110(例如,經(jīng)由數(shù)據(jù)連接101,或替代性地單獨(dú)的控制線或總線)將一個或多個主機(jī)讀取命令發(fā)送至從nvm設(shè)備140、142請求數(shù)據(jù)的存儲控制器124時,發(fā)起讀取操作。存儲控制器124經(jīng)由存儲介質(zhì)接口128將一個或多個讀取訪問命令發(fā)送至nvm設(shè)備140、142(例如,通過nvm控制器130),以根據(jù)由所述一個或多個主機(jī)讀取命令指定的存儲器位置(地址)獲取原始讀取數(shù)據(jù)。存儲介質(zhì)接口128將原始讀取數(shù)據(jù)(例如,包括一個或多個碼字)提供給解碼器(例如,在(多個)附加模塊125中)。如果解碼成功,則解碼數(shù)據(jù)被提供給主機(jī)接口129,其中,解碼數(shù)據(jù)可用于計(jì)算機(jī)系統(tǒng)110。在一些實(shí)施例中,如果解碼不成功,則存儲控制器124可以采取多個補(bǔ)救動作或提供不能解決誤差狀況的指示。
如以上所解釋的,存儲介質(zhì)(例如,nvm設(shè)備140、142)被劃分為多個可尋址的且可單獨(dú)選擇的塊并且每個塊可選地(但典型地)被進(jìn)一步劃分為多個頁和/或字線和/或扇區(qū)。當(dāng)在塊基礎(chǔ)上執(zhí)行存儲介質(zhì)的擦除時,在許多實(shí)施例中,存儲介質(zhì)的讀取和編程是在塊的更小子單元上執(zhí)行的(例如,在頁基礎(chǔ)、字線基礎(chǔ)或扇區(qū)基礎(chǔ)上)。在一些實(shí)施例中,塊的較小子單元由多個存儲器單元(例如,單級單元或多級單元)組成。在一些實(shí)施例中,編程是在整頁上執(zhí)行的。在一些實(shí)施例中,多級單元(mlc)nand閃存通常每單元具有四個可能的狀態(tài),每單元產(chǎn)生兩比特信息。進(jìn)一步地,在一些實(shí)施例中,mlcnand具有兩頁類型:(1)下頁(有時被稱為快頁),以及(2)上頁(有時被稱為慢頁)。在一些實(shí)施例中,三級單元(tlc)nand閃存每單元具有八個可能的狀態(tài),每單元產(chǎn)生三比特信息。盡管本文的描述示例性地使用tlc、mlc和slc,本領(lǐng)域技術(shù)人員將理解的是,本文描述的實(shí)施例可以擴(kuò)展至每單元具有多于八個可能狀態(tài)的存儲器單元,每單元產(chǎn)生多于三比特的信息。在一些實(shí)施例中,存儲介質(zhì)(即,tlc、mlc或slc和/或所選的數(shù)據(jù)冗余機(jī)制)的編碼格式是當(dāng)數(shù)據(jù)實(shí)際被寫入存儲介質(zhì)中時所做的選擇。
舉例來講,如果數(shù)據(jù)按頁被寫入存儲介質(zhì),但所述存儲介質(zhì)以塊為單位被擦除,則所述存儲介質(zhì)中的頁可能包含無效數(shù)據(jù)(例如,過期數(shù)據(jù)),但那些頁不可被覆寫入,直到包含那些頁的整個塊被擦除。為了利用無效數(shù)據(jù)對頁進(jìn)行寫入操作,所述塊中具有無效數(shù)據(jù)的頁(若有的話)被讀取并被重寫入成新的塊,而舊的塊被擦除(或被放入隊(duì)列中以等待擦除)。這個過程被稱作垃圾收集。在垃圾收集之后,新塊包含具有無效數(shù)據(jù)的頁并且可以具有空頁,所述空頁可用于新數(shù)據(jù)寫入,并且舊塊可被擦除以便可用于新數(shù)據(jù)寫入。因?yàn)殚W存僅可以被編程和擦除有限次數(shù),所以用于挑選(多個)接下來的塊來進(jìn)行重寫入和擦除的算法的效率對基于閃存的存儲系統(tǒng)的壽命和可靠性具有顯著影響。
寫入放大是一種現(xiàn)象,其中,寫入存儲介質(zhì)(例如,存儲設(shè)備120中的nvm設(shè)備140、142)的實(shí)際物理數(shù)據(jù)量是由主機(jī)(例如,計(jì)算機(jī)系統(tǒng)110,有時被稱為主機(jī))寫入介質(zhì)的邏輯數(shù)據(jù)量的倍數(shù)。如以上所討論的,當(dāng)存儲介質(zhì)的塊在其可以被重寫入之前必須被擦除時,用于執(zhí)行這些操作的垃圾收集過程一次或多次產(chǎn)生重寫入數(shù)據(jù)。這個倍乘效應(yīng)增加了在存儲介質(zhì)的壽命之上所要求的寫入次數(shù),其縮短了可以可靠操作的時間。用于計(jì)算存儲系統(tǒng)的寫入放大的公式由以下等式給出:
任何基于閃存的數(shù)據(jù)存儲系統(tǒng)架構(gòu)的目標(biāo)之一是盡可能地減少寫入放大,從而使得可用的持久性用于滿足存儲介質(zhì)可靠性和保修規(guī)格。更高的系統(tǒng)持久性還導(dǎo)致更低的成本,因?yàn)榇鎯ο到y(tǒng)可能需要更少的預(yù)留空間。通過減少寫入放大,存儲介質(zhì)的持久性增加并且存儲系統(tǒng)的整體成本降低。通常,垃圾收集是在具有最少數(shù)量的有效頁的擦除塊上執(zhí)行的,以獲得最佳的性能和最佳的寫入放大。
閃存設(shè)備利用存儲器單元來將數(shù)據(jù)存儲為電性值,如電荷或電壓。每個閃存單元通常包括單晶體管,所述單晶體管具有用于存儲電荷的浮柵,所述浮柵修改晶體管的閾值電壓(即,導(dǎo)通晶體管所需的電壓)。電荷大小以及電荷所產(chǎn)生的相應(yīng)閾值電壓用于表示一個或多個數(shù)據(jù)值。在一些實(shí)施例中,在讀取操作期間,讀取閾值電壓施加于晶體管的控制柵極并且所產(chǎn)生的感測電流或電壓被映射為數(shù)據(jù)值。
在閃存單元的背景下,術(shù)語“單元電壓”和“存儲器單元電壓”指存儲單元的閾值電壓,所述閾值電壓是需要施加于存儲器單元的晶體管的柵極以便由晶體管傳導(dǎo)電流的最小電壓。類似地,施加于閃存單元的讀取閾值電壓(有時也被稱為讀取信號和讀取電壓)是施加于閃存單元的柵極以判定存儲器單元是否在所述柵極電壓處傳導(dǎo)電流的柵極電壓。在一些實(shí)施例中,當(dāng)閃存單元的晶體管在給定讀取閾值電壓處傳導(dǎo)電流時,指示所述單元電壓小于讀取閾值電壓,針對所述讀取操作的原始數(shù)據(jù)值為“1”并且另外地所述原始數(shù)據(jù)值為“0”。
圖2是框圖,展示了根據(jù)一些實(shí)施例的管理模塊121-1,如圖1中所示。管理模塊121-1通常包括用于執(zhí)行存儲在存儲器206中的模塊、程序和/或指令并且由此執(zhí)行處理操作的一個或多個處理單元(有時被稱為cpu或處理器)122-1、存儲器206(有時被稱為控制器存儲器)、以及使這些部件互連的一根或多根通信總線208。所述一根或多根通信總線208可選地包括使系統(tǒng)部件互連并且控制系統(tǒng)部件之間的通信的電路(有時被稱為芯片組)。管理模塊121-1通過所述一根或多根通信總線208耦合至主機(jī)接口129、(多個)附加模塊125以及存儲介質(zhì)i/o128。存儲器206包括高速隨機(jī)存取存儲器,如dram、sram、ddrram或者其他隨機(jī)存取固態(tài)存儲設(shè)備;并且可包括非易失性存儲器,如一個或多個磁盤存儲設(shè)備、光盤存儲設(shè)備、閃存設(shè)備、或者其他非易失性固態(tài)存儲設(shè)備。存儲器206可選地包括與(多個)cpu122-1遠(yuǎn)離地定位的一個或多個存儲設(shè)備。存儲器206或者替代性地在存儲器206內(nèi)的(多個)非易失性存儲器設(shè)備包括非瞬態(tài)計(jì)算機(jī)可讀存儲介質(zhì)。在一些實(shí)施例中,存儲器206或存儲器206的非瞬態(tài)計(jì)算機(jī)可讀存儲介質(zhì)存儲下述程序、模塊和數(shù)據(jù)結(jié)構(gòu)或其子集或超集:
·轉(zhuǎn)換表212,所述轉(zhuǎn)換表用于將邏輯地址映射到物理地址(例如,在一些實(shí)施例中,轉(zhuǎn)換表212包括圖4的映射表402);
·數(shù)據(jù)讀取模塊214,所述數(shù)據(jù)讀取模塊用于從存儲介質(zhì)(例如,圖1的nvm設(shè)備140、142)中的一個或多個碼字、頁或塊讀取數(shù)據(jù);
·數(shù)據(jù)寫入模塊216,所述數(shù)據(jù)寫入模塊用于將數(shù)據(jù)寫入存儲介質(zhì)(例如,圖1的nvm設(shè)備140、142)中的一個或多個碼字、頁或塊;
·數(shù)據(jù)擦除模塊218,所述數(shù)據(jù)擦除模塊用于從存儲介質(zhì)(例如,圖1的nvm設(shè)備140、142)中的一個或多個塊中擦除數(shù)據(jù);
·垃圾收集模塊220,所述垃圾收集模塊用于對存儲介質(zhì)(例如,圖1的nvm設(shè)備140、142)中的一個或多個塊進(jìn)行垃圾收集;
·命令接收模塊222,所述命令接收模塊用于接收來自主機(jī)的多個命令(例如,解除映射命令和i/o命令,如寫入請求和/或讀取請求);
·日志模塊224,所述日志模塊用戶維護(hù)和/或保存日志(例如,日志226,有時被稱為重放fifo);
·日志226,所述日志包括與來自主機(jī)的寫入命令和解除映射命令相對應(yīng)的數(shù)據(jù)結(jié)構(gòu)集合;以及
·映射模塊228,所述映射模塊用于執(zhí)行與映射表(例如,轉(zhuǎn)換表212)相關(guān)的一個或多個操作,所述映射模塊可選地包括:
o維護(hù)模塊230,所述維護(hù)模塊用于維護(hù)易失性存儲器中的映射表;
o保存模塊232,所述保存模塊用于將映射表保存到存儲設(shè)備的非易失性存儲器中;以及
o重建模塊234,所述重建模塊用于重建映射表。
上述要素中的每一個都可以被存儲在前面所提到的存儲器設(shè)備中的一個或多個中,并且與用于執(zhí)行上述功能的指令集相對應(yīng)。上述模塊或程序(即,指令集)不需要被實(shí)現(xiàn)為獨(dú)立的軟件程序、過程或模塊,從而在各個實(shí)施例中,可以組合或者以其他方式重新排列這些模塊的各個子集。在一些實(shí)施例中,存儲器206可保存上述模塊和數(shù)據(jù)結(jié)構(gòu)的子集。此外,存儲器206可存儲上面沒有說明的另外的模塊和數(shù)據(jù)結(jié)構(gòu)。在一些實(shí)施例中,存儲在存儲器206中的程序、模塊和數(shù)據(jù)結(jié)構(gòu)或者存儲器206的計(jì)算機(jī)可讀存儲介質(zhì)提供用于實(shí)現(xiàn)以下所描述的一些方法的指令。在一些實(shí)施例中,這些模塊中的部分和全部可以利用將部分或全部模塊功能包含在內(nèi)的專用硬件電路來實(shí)現(xiàn)。
盡管圖2示出了根據(jù)一些實(shí)施例的管理模塊121-1,但是圖2與其意在作為在此所描述的實(shí)施例的結(jié)構(gòu)示意相比,更意在作為可以在管理模塊121-1中存在的各種特征的功能描述。實(shí)踐中,并且如本領(lǐng)域技術(shù)人員認(rèn)識到的,分開示出的程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以組合,并且一些程序、模塊和數(shù)據(jù)結(jié)構(gòu)可以被分開。
圖3是根據(jù)一些實(shí)施例的邏輯地址(lba)空間320(有時被稱為(la)空間)的框圖。在一些實(shí)施例中,邏輯地址是從主機(jī)(例如,圖1的計(jì)算機(jī)系統(tǒng)110)的角度來看,項(xiàng)(例如,文件或其他數(shù)據(jù))所駐留的地址。在一些實(shí)施例中,邏輯地址(例如,在lba空間320中)由于映射函數(shù)或地址轉(zhuǎn)換器(例如,圖2中包括轉(zhuǎn)換表212的函數(shù)或模塊,或者圖4中的映射表402)的操作而不同于物理地址(例如,在物理空間318中)。在一些實(shí)施例中,邏輯地址被實(shí)現(xiàn)為邏輯塊地址(lba),所述lba被映射至物理閃存地址(例如,物理頁編號(ppn))。物理地址通常包括與多級存儲器層次相對應(yīng)的多個部分,如,組(bank)、塊(block)和頁(page)。
在一些實(shí)施例中,邏輯塊地址(lba)被映射到物理閃存地址(例如,物理頁編號(ppn),包括組、塊和頁),如進(jìn)一步關(guān)于圖4所述。
在一些實(shí)施例中,邏輯地址空間包括已分配的邏輯地址空間(例如,已分配的lba空間342)以及未分配的邏輯地址空間(例如,未分配的lba空間340)。在一些實(shí)施例中,未分配的邏輯地址空間是在其處不存儲數(shù)據(jù)的邏輯地址空間。在一些實(shí)施例中,未分配的邏輯地址空間包括從未被寫入和/或已經(jīng)被丟棄的邏輯地址空間(預(yù)先寫入的數(shù)據(jù)可以通過修整或解除映射操作被丟棄,并且有時被稱為修整邏輯地址空間)。例如,在圖3中,未分配的lba空間340包括修整的lba空間330。在一些實(shí)施例中,已分配的邏輯地址空間是由主機(jī)預(yù)先寫入包括不再由主機(jī)使用的數(shù)據(jù)(例如,非實(shí)時數(shù)據(jù)332)以及仍由主機(jī)使用的數(shù)據(jù)(例如,實(shí)時數(shù)據(jù)334)的預(yù)先寫入數(shù)據(jù)的邏輯地址空間。在一些實(shí)施例中,非實(shí)時數(shù)據(jù)是在邏輯地址空間的在文件系統(tǒng)的元數(shù)據(jù)中被標(biāo)記為空閑、可用或未使用的一部分中的數(shù)據(jù)??蛇x地,文件系統(tǒng)可以通過修整或解除映射操作選擇將非實(shí)時地址空間轉(zhuǎn)換為未分配的地址空間。
在圖3中,已分配的lba空間342表示分配空間的量,而未分配的lba空間340表示未分配空間的量。然而,已分配的lba空間342和未分配的lba空間340都不必是lba空間320的單個連續(xù)區(qū)域。類似地,圖3中的實(shí)時數(shù)據(jù)334和非實(shí)時數(shù)據(jù)332分別表示實(shí)時數(shù)據(jù)和非實(shí)時數(shù)據(jù)的量(例如,lba計(jì)數(shù))。然而,實(shí)時數(shù)據(jù)334和非實(shí)時數(shù)據(jù)332都不必是lba空間320或已分配的lba空間342的單個連續(xù)區(qū)域,圖3中所展示的實(shí)時數(shù)據(jù)334和非實(shí)時數(shù)據(jù)332的位置也不與實(shí)時數(shù)據(jù)和非實(shí)時數(shù)據(jù)的邏輯或物理地址值具有任何關(guān)聯(lián)。通常,實(shí)時數(shù)據(jù)334和/或非實(shí)時數(shù)據(jù)332將存在于lba空間320的多個區(qū)域中,并因此不是連續(xù)的??蛇x地,然而,可以執(zhí)行重映射或聚結(jié)過程(其也可被稱為垃圾重組),以將部分或全部實(shí)時數(shù)據(jù)334合并為lba空間320的連續(xù)區(qū)域。
已分配的邏輯地址空間(342)是被利用的空間。典型地,減小已分配的邏輯地址空間的大小要求減小由存儲設(shè)備或存儲系統(tǒng)存儲的實(shí)時數(shù)據(jù)334和/或非實(shí)時數(shù)據(jù)332的量,由此將已分配的邏輯地址空間的一部分轉(zhuǎn)換為未分配的邏輯地址空間。在一些實(shí)施例中,非實(shí)時數(shù)據(jù)332的一部分被修整,并由此通過使用修整或解除映射操作被轉(zhuǎn)換為未分配的邏輯地址空間。
圖4是根據(jù)一些實(shí)施例的映射表402和物理地址空間410的框圖。在一些實(shí)施例中,映射表402用于將邏輯塊地址(lba)從主機(jī)(例如,圖1的計(jì)算機(jī)系統(tǒng)110)的角度轉(zhuǎn)換為存儲設(shè)備(例如,圖1的存儲設(shè)備120)中的非易失性存儲器的在物理地址空間(例如,物理地址空間410)中的物理地址。在一些實(shí)施例中,lba是可由主機(jī)訪問的最小單元存儲數(shù)據(jù)的地址(例如,512b或4096b)。在一些實(shí)施例中,lba是在邏輯地址空間中按數(shù)值順序組織的整數(shù)序列。在一些實(shí)施例中,lba是從邏輯地址空間選擇的但不必連續(xù)的整數(shù)。例如,在利用稀疏邏輯地址空間的實(shí)現(xiàn)方式中,可尋址空間的量由可以被已分配的邏輯地址數(shù)量極限控制,但是那些邏輯地址分布在比可以被分配(例如,至主機(jī)或者主機(jī)或客戶端的集合)的邏輯地址的最大數(shù)量更大的地址空間之上。
在一些實(shí)施例中,映射表402存儲在與存儲設(shè)備相關(guān)聯(lián)的存儲器中(例如,在圖2的存儲器206中,作為轉(zhuǎn)換表212的一部分)。在一些實(shí)施例中,映射表402用于在管理模塊121-1(圖2)中實(shí)現(xiàn)轉(zhuǎn)換表212。在一些實(shí)施例中,物理地址是物理頁編號(ppn),包括組編號、塊編號和頁編號。在圖4中所示的示例中,lba0被映射至物理地址空間410的組1(例如,組420-1)、塊3(例如,塊421-3)、頁37(頁未在塊421-3中示出)。圖4示出物理地址空間410包括多個非易失性存儲器塊421、422、423、424。如上所述,并且如在塊424-p的表示中所示,存儲設(shè)備的物理地址空間中的每個非易失性存儲器塊通常包括多個頁426,其中,每一頁是塊的最小單獨(dú)可訪問(例如,可讀或可寫入)部分的實(shí)例。盡管圖4展示了邏輯地址至物理地址映射的一個示例,在其他實(shí)施例中,可以使用不同的映射。例如,在一些實(shí)施例中,邏輯地址條目中的每個邏輯地址條目與多個(例如,八個)邏輯地址相對應(yīng)(例如,每邏輯地址條目8個lba)。在一些實(shí)施例中,映射表402不需要包含連續(xù)的lba地址并且可以以任何方式被組織以促進(jìn)高效的查找操作,例如,哈希表、二叉樹、內(nèi)容可尋址存儲器等。
如以上指出的,保存保持在易失性存儲設(shè)備中的數(shù)據(jù)和關(guān)鍵任務(wù)元數(shù)據(jù)對于非易失性數(shù)據(jù)存儲設(shè)備而言是重要的。閃存設(shè)備需要使數(shù)據(jù)跨電源周期受到保護(hù),并且完整轉(zhuǎn)換表(例如,圖2的轉(zhuǎn)換表212或圖4的映射表402)被要求針對存儲設(shè)備(例如,圖1的存儲設(shè)備120)為有效的。然而,針對企業(yè)產(chǎn)品,轉(zhuǎn)換表通常極大(例如,幾百mb)并且在由電池備用(例如,電容器)提供的時間幀中保存完整轉(zhuǎn)換表是不可行的。在一些實(shí)施例中,在調(diào)度時間處保存轉(zhuǎn)換表的增加部分,以便使在掉電情況下需要被保存的數(shù)據(jù)量最小。然而,期望幾乎立即響應(yīng)有效地擦除數(shù)據(jù)的一部分(例如,一個扇區(qū)、一個單元、整個存儲設(shè)備等)的解除映射命令。這個響應(yīng)時間不允許保存完整轉(zhuǎn)換表。在此描述的各實(shí)施例包括用于使能夠快速重放解除映射命令并且通過經(jīng)由日志(有時被稱為重放fifo)跨電源周期跟蹤對寫入命令和解除映射命令的混合來確保轉(zhuǎn)換表的一致性的系統(tǒng)、方法和/或設(shè)備。
圖5a至圖5b展示了根據(jù)一些實(shí)施例的管理存儲系統(tǒng)的方法500的流程圖表示。至少在一些實(shí)施例中,方法500由存儲設(shè)備(例如,圖1中的存儲設(shè)備120)或存儲設(shè)備的一個或多個部件(例如,圖1中的存儲控制器124、nvm控制器130和/或nvm設(shè)備140、142)執(zhí)行,其中,存儲設(shè)備與主機(jī)系統(tǒng)(例如,圖1中的計(jì)算機(jī)系統(tǒng)110)操作性地耦合。在一些實(shí)施例中,方法500由存儲在非瞬態(tài)計(jì)算機(jī)可讀存儲介質(zhì)中并由設(shè)備的一個或多個處理器(如圖1和圖2中所示出的管理模塊121-1的一個或多個處理單元(cpu)122-1)執(zhí)行的指令進(jìn)行控制。在一些實(shí)施例中,方法500由存儲系統(tǒng)(例如,圖1的數(shù)據(jù)存儲系統(tǒng)100)或者存儲系統(tǒng)的一個或多個部件(例如,圖1的計(jì)算機(jī)系統(tǒng)110和/或存儲設(shè)備120)執(zhí)行。在一些實(shí)施例中,方法500的操作中的一些操作在主機(jī)(例如,圖1中的計(jì)算機(jī)系統(tǒng)110)處執(zhí)行,并且信息被傳輸至存儲設(shè)備(例如,圖1中的存儲設(shè)備120)。在一些實(shí)施例中,方法500至少部分地由存儲在非瞬態(tài)計(jì)算機(jī)可讀存儲介質(zhì)中并由主機(jī)(圖1中未示出)的一個或多個處理器執(zhí)行的指令控制。為便于解釋,以下描述了由存儲設(shè)備(例如,圖1中的存儲設(shè)備120)執(zhí)行的方法500。然而,本領(lǐng)域的技術(shù)人員將認(rèn)識到,在其他實(shí)施例中,方法500中描述的操作中的一個或多個操作由主機(jī)(例如,圖1中的計(jì)算機(jī)系統(tǒng)110)執(zhí)行。
存儲系統(tǒng)(例如,圖1的數(shù)據(jù)存儲系統(tǒng)100)的存儲設(shè)備(例如,圖1的存儲設(shè)備120)接收(502)來自與所述存儲設(shè)備操作性地耦合的主機(jī)(例如,圖1的計(jì)算機(jī)系統(tǒng)110)的多個命令,所述存儲設(shè)備包括非易失性存儲器(例如,圖1的nvm設(shè)備140、142)。在一些實(shí)施例中,所述多個命令包括寫入命令、讀取命令和/或接觸映射命令。在一些實(shí)施例中,命令接收模塊(例如,圖2的命令接收模塊222)用于在存儲系統(tǒng)的存儲設(shè)備處接收來自與存儲設(shè)備操作性地耦合的主機(jī)的多個命令,所述存儲設(shè)備包括非易失性存儲器,如以上關(guān)于圖2所描述的。
在一些實(shí)施例中,存儲設(shè)備包括(504)一個或多個閃存設(shè)備。在一些實(shí)施例中,存儲設(shè)備包括存儲介質(zhì)(例如,圖1的nvm設(shè)備140、142),并且存儲介質(zhì)包括如閃存設(shè)備等一個或多個非易失性存儲設(shè)備。在一些實(shí)施例中,存儲介質(zhì)是單個閃存設(shè)備,而在其他實(shí)施例中,存儲介質(zhì)包括多個閃存設(shè)備。例如,在一些實(shí)施例中,存儲介質(zhì)包括在并行存儲器通道中組織的數(shù)十個或數(shù)百個閃存設(shè)備,如每個存儲器通道16、32或64個閃存設(shè)備,以及8、16或32個并行存儲器通道。在一些實(shí)施例中,非易失性存儲介質(zhì)(例如,圖1的nvm設(shè)備140、142)包括nand類型閃存或nor類型閃存。在其他實(shí)施例中,存儲介質(zhì)包括一種或多種其他類型的非易失性存儲設(shè)備。
存儲設(shè)備維護(hù)(506)與來自主機(jī)的寫入命令和解除映射命令相對應(yīng)的日志(例如,圖2的日志226,有時被稱為重放fifo)。在一些實(shí)施例中,日志是fifo(先入先出)隊(duì)列。在一些實(shí)施例中,存儲設(shè)備維護(hù)存儲設(shè)備的單個日志。在一些實(shí)施例中,存儲設(shè)備維護(hù)針對存儲設(shè)備的每個邏輯端口(有時被稱為存儲器通道)的不同的日志。在一些實(shí)施例中,日志模塊(例如,圖2的日志模塊224)用于維護(hù)與來自主機(jī)的寫入命令和解除映射命令相對應(yīng)的日志,如以上關(guān)于圖2所描述的。
在一些實(shí)施例中,針對寫入命令,所述日志包括(508)結(jié)合執(zhí)行寫入命令來存儲數(shù)據(jù)的物理地址。例如,在一些實(shí)施例中,日志中的每個物理頁條目包括其被物理地寫入的所述頁的管芯編號、塊編號和頁編號。在一些實(shí)施例中,所述物理頁條目按照其被寫入存儲介質(zhì)(例如,nvm設(shè)備140、142)中的內(nèi)插順序被存入日志中。
在一些實(shí)施例中,所述日志包括(510)針對對應(yīng)解除映射命令的條目,所述條目包括標(biāo)識根據(jù)所述對應(yīng)解除映射命令而被解除映射的多個邏輯地址的信息。例如,在一些實(shí)施例中,如果對應(yīng)的解除映射命令為解除映射lba8、lba13和lba63,則日志中針對對應(yīng)解除映射命令的條目包括標(biāo)識lba8、lba13和lba63的信息。在一些替代性實(shí)施例中,當(dāng)由解除映射命令解除映射的邏輯地址不是單個地址并且不是單個邏輯地址范圍時,所述日志包括與解除映射命令相對應(yīng)的多個條目,每個條目指定由解除映射命令解除映射的單獨(dú)的lba或者lba范圍。例如,針對解除映射lba8和lba100-130的解除映射命令,所述日志包括兩個條目,一個條目針對lba8而另一個條目針對lba范圍100-130。
在一些實(shí)施例中,所述日志包括(512)針對對應(yīng)解除映射命令的條目,所述條目包括標(biāo)識根據(jù)所述對應(yīng)解除映射命令而被解除映射的邏輯地址范圍的信息。例如,在一些實(shí)施例中,如果對應(yīng)的解除映射命令為解除映射lba8至lba63,則日志中針對對應(yīng)解除映射命令的條目包括標(biāo)識從lba8至lba63的邏輯地址范圍的信息。在一些實(shí)施例中,日志中的條目通過標(biāo)識第一lba為解除映射以及最后lba為解除映射而標(biāo)識邏輯地址范圍。
存儲設(shè)備維護(hù)(514)易失性存儲器中的映射表(例如,圖2的轉(zhuǎn)換表212、和/或圖4的映射表402),所述映射表用于將邏輯地址空間中對主機(jī)可用的邏輯地址轉(zhuǎn)換為在存儲設(shè)備的物理地址空間中的物理地址。在一些實(shí)施例中,維護(hù)模塊(例如,圖2的維護(hù)模塊230)用于維護(hù)易失性存儲器中的映射表,所述映射表用于將邏輯地址空間中對主機(jī)可用的邏輯地址轉(zhuǎn)換為在存儲設(shè)備的物理地址空間中的物理地址,如以上關(guān)于圖2所描述的。
在與解除映射命令無關(guān)的調(diào)度基礎(chǔ)上(例如,與接收和/或處理解除映射命令無關(guān)),存儲設(shè)備將映射表保存(516)到存儲設(shè)備的非易失性存儲器(例如,圖1的nvm設(shè)備140、142)中。例如,在一些實(shí)施例中,存儲設(shè)備在周期性基礎(chǔ)上(例如,每小時等)存儲映射表(例如,映射表的一部分)。在一些實(shí)施例中,存儲設(shè)備在非周期性的調(diào)度基礎(chǔ)上(例如,在1:00am、在3:30am以及在6:00am)保存映射表。在一些實(shí)施例中,保存模塊(例如,圖2的保存模塊232)用于在與解除映射命令無關(guān)的調(diào)度基礎(chǔ)上,將映射表保存至存儲設(shè)備的非易失性存儲器中,如以上關(guān)于圖2所述。
在一些實(shí)施例中,保存所述映射表包括(518)將指向日志中的位置的位置指針存儲在非易失存儲器中。在一些實(shí)施例中,日志中的位置對應(yīng)于當(dāng)重建映射表時日志中有待處理的條目(如以下關(guān)于操作528所描述的)。在一些實(shí)施例中,日志中的位置偏離日志中對應(yīng)于在將映射表保存到存儲設(shè)備的非易失性存儲器中之前更新的映射表的一部分的最后條目。例如,如果條目n是日志中在非易失性存儲器中在保存的映射表中反映的最后條目,則所述日志中的位置將指向條目n+1,作為當(dāng)重建映射表時有待處理的下一條目。
在一些實(shí)施例中,保存映射表包括(520)在不同的調(diào)度時間處將映射表的多個不同部分保存到非易失性存儲器中。在一些實(shí)施例中,存儲設(shè)備在周期性基礎(chǔ)上(例如,每小時等)存儲映射表的一部分(例如,10mb)。在一些實(shí)施例中,存儲設(shè)備在非周期性調(diào)度基礎(chǔ)上(例如,在1:00am、在3:30am以及在6:00am)存儲映射表的一部分。在一些實(shí)施例中,存儲設(shè)備在第一時間處保存映射表的第一部分、在不同于(并且通常晚于)第一時間的第二時間處保存映射表的第二部分、在不同于(并且通常晚于)第一時間和第二時間的第三時間處保存映射表的第三部分等。
存儲設(shè)備將日志(例如,圖2的日志226)保存(522)到存儲設(shè)備的非易失性存儲器中(例如,圖1的nvm設(shè)備140、142)。在一些實(shí)施例中,日志模塊(例如,圖2的日志模塊224)將日志保存到存儲設(shè)備的非易失性存儲器中,如以上關(guān)于圖2所描述的。
在一些實(shí)施例中,將日志保存到非易失性存儲器中包括(524)結(jié)合掉電事件將日志的至少一部分保存到非易失性存儲器(例如,圖1的nvm設(shè)備140、142)中。例如,在一些實(shí)施例中,日志的與尚未在保存的映射表中反映的條目相對應(yīng)的一部分被保存到非易失性存儲器中。
在一些實(shí)施例中,將日志保存到非易失性存儲器中包括(526)當(dāng)所述日志滿足預(yù)定義充滿度標(biāo)準(zhǔn)時將日志的至少第一部分保存到非易失性存儲器(例如,圖1的nvm設(shè)備140、142)中,并且結(jié)合掉電事件將日志的最終部分保存到非易失性存儲器中。例如,在一些實(shí)施例中,當(dāng)日志半滿時,將日志的前一半保存到非易失存儲器中,并且結(jié)合掉電事件,將日志的最終部分(例如,日志的尚未被保存的剩余部分)保存到非易失性存儲器中。
當(dāng)存儲設(shè)備上電時,存儲設(shè)備從存儲設(shè)備的非易失性存儲器中的保存的映射表以及從存儲設(shè)備的非易失性存儲器中的保存的日志來重建(528)映射表。在一些實(shí)施例中,存儲設(shè)備通過用來自保存的日志的從所述日志的保存位置開始的條目來更新保存的映射表并且更新映射表直到到達(dá)日志的末尾來重建所述映射表(如以上關(guān)于操作518所描述的)。在一些實(shí)施例中,重建映射表包括獲取塊元數(shù)據(jù)(例如,以獲取針對日志中的物理地址的相應(yīng)邏輯地址)。在一些實(shí)施例中,重建模塊(例如,圖2的重建模塊234)用于當(dāng)存儲設(shè)備上電時,從存儲設(shè)備的非易失性存儲器中的保存的映射表以及從存儲設(shè)備的非易失性存儲器中的保存的日志來重建所述映射表,如以上關(guān)于圖2所描述的。
將理解的是,盡管此處可以使用術(shù)語“第一”、“第二”等來描述各個元件,但是這些元件不應(yīng)被這些術(shù)語限制。這些術(shù)語僅用于將一個元件與另一個元件相區(qū)分。例如,在不改變描述的含義的情況下,第一區(qū)域可以被稱為第二區(qū)域,并且類似地,第二區(qū)域可以被稱為第一區(qū)域,只要一致地重新命名“第一區(qū)域”的所有出現(xiàn)并且一致地重新命名“第二區(qū)域”的所有出現(xiàn)即可。第一區(qū)域和第二區(qū)域都是區(qū)域,不過它們不是同一區(qū)域。
此處所使用的術(shù)語僅出于描述特定實(shí)施例的目的,而不旨在于限制權(quán)利要求書。如在對實(shí)施例和所附權(quán)利要求書的描述中所使用的,除非上下文另有明示,否則單數(shù)形式“一個(a)”、“一個(an)”和“所述(the)”旨在同樣包括復(fù)數(shù)形式。還將理解的是,如本文使用的術(shù)語“和/或”指代并且包括相關(guān)聯(lián)的列舉項(xiàng)的一個或多個項(xiàng)的任何和所有可能組合。將進(jìn)一步理解的是,當(dāng)在本說明書中使用術(shù)語“包括(comprises)”和/或“包括(comprising)”時,其指定陳述的特征、整數(shù)、步驟、操作、元件和/或部件的存在,但不排除一個或多個其他特征、整數(shù)、步驟、操作、元件、部件和/或它們的組的存在或添加。
如在此所使用的,短語“a、b和c中的至少一者”將被解釋為需要所列項(xiàng)目中的一個或多個項(xiàng)目,并且此短語關(guān)于單獨(dú)a的單個實(shí)例、單獨(dú)b的單個實(shí)例、或單獨(dú)c的單個實(shí)例,同時還包括如“a中的一者或多者以及b中的一者或多者而沒有c中的任何一者”等所列項(xiàng)目的組合。
如在此所使用的,根據(jù)上下文,術(shù)語“如果”可以被解釋為指“當(dāng)…時”或者“在…時”或者“響應(yīng)于確定”或者“根據(jù)確定“或者“響應(yīng)于檢測到”所述先決條件為真。類似地,根據(jù)上下文,短語“如果確定”或“如果”或“當(dāng)時”可以被解釋為指“在確定時”或“響應(yīng)于確定”或“根據(jù)確定”或“在檢測到時”或“響應(yīng)于檢測到”所述先決條件為真。
出于解釋的目的,已經(jīng)參考特定實(shí)施例描述了前述描述。然而,以上的說明性討論并不旨在是詳盡的或旨在將權(quán)利要求書限制成所公開的精確形式。鑒于以上教導(dǎo),許多修改和變化都是可能的。選擇并描述了實(shí)施例,以便最好地解釋操作原理和實(shí)際應(yīng)用,由此使能本領(lǐng)域的技術(shù)人員。