背景技術(shù):
本公開涉及管理存儲(chǔ)設(shè)備中的數(shù)據(jù)塊集合。具體地,本公開描述了一種用于存儲(chǔ)應(yīng)用的可變大小反向映射。更具體地,本公開涉及一種用于處理可變大小數(shù)據(jù)的高效且動(dòng)態(tài)大小反向映射。
許多存儲(chǔ)設(shè)備系統(tǒng)使用跟蹤最新邏輯-物理媒體映射的動(dòng)態(tài)轉(zhuǎn)換表。隨著并且在重寫邏輯塊時(shí),更新轉(zhuǎn)換表以指向物理媒體中的新位置,并且通過垃圾收集過程收回舊物理媒體位置。垃圾收集過程處理物理媒體中鄰近范圍的位置;因此,這種過程要求物理媒體-邏輯塊地址的位置反向映射。
由于存儲(chǔ)設(shè)備支持?jǐn)?shù)據(jù)縮減,一個(gè)物理塊能夠以簡(jiǎn)化形式存儲(chǔ)多個(gè)邏輯塊。因此,物理塊的大小和能夠存儲(chǔ)在存儲(chǔ)設(shè)備中的邏輯塊數(shù)量之間不存在一一對(duì)應(yīng)的關(guān)系。這種系統(tǒng)中反向映射的大小應(yīng)是動(dòng)態(tài)的,并且優(yōu)選地取決于工作量。例如,如果物理塊大小是4096字節(jié)并以8倍壓縮,則最小可尋址單元的大小是512字節(jié),而僅擴(kuò)展反向映射以尋址512字節(jié)塊將產(chǎn)生8倍以上的存儲(chǔ)器消耗。反向轉(zhuǎn)換表被實(shí)施為分頁(yè)轉(zhuǎn)換表以限制存儲(chǔ)器消耗,因此更大的反向映射將消耗物理媒體中更多空間。系統(tǒng)軟件的存儲(chǔ)器占用和垃圾收集過程的整體效率高度依賴于反向映射的實(shí)施。
技術(shù)實(shí)現(xiàn)要素:
本公開涉及用于硬件高效數(shù)據(jù)管理的系統(tǒng)和方法。根據(jù)本公開主題的一個(gè)新穎方面,一種系統(tǒng)包括:動(dòng)態(tài)大小反向映射,所述動(dòng)態(tài)大小反向映射具有與用于因存儲(chǔ)設(shè)備執(zhí)行的壓縮而不同的物理塊的可變映射數(shù)量相對(duì)應(yīng)的可變大??;以及處理器,耦合至所述動(dòng)態(tài)大小反向映射,所述處理器被配置成用于:接收數(shù)據(jù)流,所述數(shù)據(jù)流包括一個(gè)或多個(gè)數(shù)據(jù)塊;確定所述一個(gè)或多個(gè)數(shù)據(jù)塊的大??;基于數(shù)據(jù)塊的大小和物理塊的大小,確定所述物理塊所需的映射數(shù)量,其中,根據(jù)存儲(chǔ)在所述物理塊中的所述一個(gè)或多個(gè)數(shù)據(jù)塊的所述大小,所述映射數(shù)量針對(duì)不同物理塊是可變的;確定在所述動(dòng)態(tài)大小反向映射中用于所述一個(gè)或多個(gè)數(shù)據(jù)塊的映射的起始位置;以及在所述動(dòng)態(tài)大小反向映射中針對(duì)所述物理塊創(chuàng)建條目,所述條目包括所述物理塊的所述映射數(shù)量以及所述一個(gè)或多個(gè)數(shù)據(jù)塊的所述起始位置,所述條目是用于所述物理塊的所述可變映射數(shù)量的索引。
通常,本公開中描述的主題的另一新穎方面可以通過多種方法實(shí)施,所述方法包括:接收數(shù)據(jù)流,所述數(shù)據(jù)流包括一個(gè)或多個(gè)數(shù)據(jù)塊;確定所述一個(gè)或多個(gè)數(shù)據(jù)塊的大??;基于所述一個(gè)或多個(gè)數(shù)據(jù)塊的所述大小以及物理塊的大小確定映射數(shù)量,根據(jù)存儲(chǔ)在所述物理塊中的所述一個(gè)或多個(gè)數(shù)據(jù)塊的所述大小,所述映射數(shù)量針對(duì)不同物理塊是可變的;檢索動(dòng)態(tài)大小反向映射,所述動(dòng)態(tài)大小反向映射的大小與用于不同物理塊的所述可變映射數(shù)量相對(duì)應(yīng);確定在所述動(dòng)態(tài)大小反向映射中用于所述一個(gè)或多個(gè)數(shù)據(jù)塊的映射的起始位置;以及在所述動(dòng)態(tài)大小反向映射中針對(duì)所述物理塊創(chuàng)建條目,所述條目包括所述物理塊的所述映射數(shù)量以及所述一個(gè)或多個(gè)數(shù)據(jù)塊的所述起始位置,所述條目是用于所述物理塊的所述映射數(shù)量的索引。
一個(gè)或多個(gè)這種方面的其他實(shí)施方式包括相應(yīng)系統(tǒng)、裝置和計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被配置成用于執(zhí)行方法的動(dòng)作并被編碼在計(jì)算機(jī)存儲(chǔ)設(shè)備上。
這些和其他實(shí)施方式均可以可選地包括一個(gè)或多個(gè)以下特征。例如,特征包括:所述動(dòng)態(tài)大小反向映射包括動(dòng)態(tài)樹結(jié)構(gòu),所述動(dòng)態(tài)樹結(jié)構(gòu)具有用于多個(gè)緩沖條目的可擴(kuò)展節(jié)點(diǎn),一個(gè)緩沖條目用于所述一個(gè)或多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊;操作包括:創(chuàng)建用于所述一個(gè)或多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的緩沖條目,所述緩沖條目包括邏輯塊號(hào)、物理塊號(hào)、所述物理塊中的起始扇區(qū)和所述物理塊中占用的扇區(qū)數(shù)量;所述緩沖條目被持久化到所述存儲(chǔ)設(shè)備中;所述物理塊中占用的所述扇區(qū)數(shù)量是基于所述一個(gè)或多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的大小以及所述扇區(qū)的大小來確定的;所述物理塊的所述映射數(shù)量表示物理塊消耗的緩沖條目數(shù)量;以及所述映射片段存儲(chǔ)包含所述正向指針和所述引用數(shù)量的所述動(dòng)態(tài)大小反向映射。
例如,操作進(jìn)一步包括:接收將多個(gè)數(shù)據(jù)塊從第一邏輯地址范圍復(fù)制到第二邏輯地址范圍的請(qǐng)求;確定所述多個(gè)數(shù)據(jù)塊的大??;基于所述多個(gè)數(shù)據(jù)塊的所述大小,確定所述多個(gè)數(shù)據(jù)塊占用的引用數(shù)量;基于所述動(dòng)態(tài)大小反向映射針對(duì)所述多個(gè)數(shù)據(jù)塊確定正向指針;以及使用具有所述正向指針和所述引用數(shù)量的額外條目來更新所述動(dòng)態(tài)大小反向映射。
例如,操作進(jìn)一步包括:從片段報(bào)頭中檢索映射片段的信息;確定所述映射片段的寫入塊的使用計(jì)數(shù);基于所述映射片段的所述使用計(jì)數(shù),判定所述映射片段是否滿足動(dòng)態(tài)大小反向映射更新標(biāo)準(zhǔn);響應(yīng)于所述映射片段滿足所述動(dòng)態(tài)大小反向映射更新標(biāo)準(zhǔn),對(duì)所述映射片段執(zhí)行動(dòng)態(tài)大小反向映射更新;以及更新所述片段報(bào)頭中的所述映射片段的所述信息。
這些實(shí)施方式在許多方面都是特別有利的。例如,本文中所描述的技術(shù)提供了一種用于在支持?jǐn)?shù)據(jù)縮減的系統(tǒng)中進(jìn)行高效數(shù)據(jù)存儲(chǔ)的動(dòng)態(tài)大小反向映射。進(jìn)一步地,所述動(dòng)態(tài)大小反向映射是可擴(kuò)展的并支持塊復(fù)制操作。
應(yīng)該理解的是,在本公開中使用的語(yǔ)言主要是為了可讀性和指導(dǎo)目的而被選擇的,而不是限制本文中所公開的主題的范圍。
附圖說明
以示例性而非限制性方式在附圖中展示本公開,在附圖中,類似號(hào)碼用于指示類似元件。
圖1是展示了根據(jù)本文中所描述技術(shù)的用于實(shí)施存儲(chǔ)系統(tǒng)動(dòng)態(tài)大小反向映射的示例系統(tǒng)的高級(jí)框圖。
圖2是展示了根據(jù)本文中所描述技術(shù)的存儲(chǔ)邏輯示例的框圖。
圖3是展示了根據(jù)本文中所描述技術(shù)的所述存儲(chǔ)邏輯使用的動(dòng)態(tài)大小反向映射布局的示例圖形表示。
圖4是展示了根據(jù)本文中所描述技術(shù)的所述動(dòng)態(tài)大小反向映射支持塊復(fù)制的布局的示例圖形表示。
圖5a和5b是根據(jù)本文中所描述技術(shù)的用于生成存儲(chǔ)設(shè)備寫過程動(dòng)態(tài)大小反向映射的示例方法的流程圖。
圖6是根據(jù)本文中所描述技術(shù)的實(shí)施動(dòng)態(tài)大小反向映射以包括用于存儲(chǔ)設(shè)備數(shù)據(jù)塊的緩沖條目的示例方法的流程圖。
圖7是根據(jù)本文中所描述技術(shù)的實(shí)施用于存儲(chǔ)設(shè)備動(dòng)態(tài)大小反向映射的垃圾收集操作的示例方法的流程圖。
圖8是根據(jù)本文中所描述技術(shù)的實(shí)施用于塊復(fù)制過程的存儲(chǔ)設(shè)備動(dòng)態(tài)大小反向映射的示例方法的流程圖。
具體實(shí)施方式
以下描述了用于實(shí)施動(dòng)態(tài)大小反向映射架構(gòu)的系統(tǒng)和方法。具體地,在本公開中,以下描述了用于實(shí)施存儲(chǔ)設(shè)備(具體是具有壓縮的閃存存儲(chǔ)設(shè)備)的動(dòng)態(tài)大小反向映射的系統(tǒng)和方法。雖然本公開的系統(tǒng)和方法是在使用了閃存存儲(chǔ)的特定系統(tǒng)架構(gòu)的背景下描述的,應(yīng)該理解的是,所述系統(tǒng)和方法可以應(yīng)用于硬件和其他具有類似屬性的存儲(chǔ)器設(shè)備的其他架構(gòu)和組織。
本公開涉及實(shí)施用于寫過程、垃圾收集過程和塊復(fù)制過程的存儲(chǔ)設(shè)備的動(dòng)態(tài)大小反向映射。在一些實(shí)施例中,本公開描述了一種用于存儲(chǔ)應(yīng)用的可變大小反向映射布局。本公開與現(xiàn)有實(shí)施方式的區(qū)別在于解決了各種問題。例如,當(dāng)存儲(chǔ)設(shè)備的存儲(chǔ)容量不斷增大時(shí),動(dòng)態(tài)轉(zhuǎn)換表和反向映射的大小也相應(yīng)增大。同時(shí),將數(shù)據(jù)縮減技術(shù)應(yīng)用于存儲(chǔ)器管理領(lǐng)域以在相同的存儲(chǔ)設(shè)備中存儲(chǔ)更多數(shù)據(jù),這導(dǎo)致存儲(chǔ)設(shè)備中的轉(zhuǎn)換表變得更大。進(jìn)一步地,由于所述數(shù)據(jù)縮減技術(shù)中使用了可變數(shù)據(jù)壓縮比率,這要求可變大小轉(zhuǎn)換表。因此,在存儲(chǔ)業(yè),亟需以下描述的基于工作量的反向映射。另外,垃圾收集(gc)是一種部署在存儲(chǔ)器管理中的典型技術(shù)。垃圾收集收回被不再使用的對(duì)象所占用的存儲(chǔ)器。垃圾收集機(jī)制處理存儲(chǔ)媒體中鄰近范圍的位置。因此,需要物理媒體-邏輯塊地址的反向映射(反向轉(zhuǎn)換表)。由此,本公開通過提供一種用于實(shí)施存儲(chǔ)設(shè)備存儲(chǔ)應(yīng)用的高度基于工作量的反向映射,解決了與高效數(shù)據(jù)存儲(chǔ)相關(guān)聯(lián)的問題。
系統(tǒng)
圖1是展示了根據(jù)本文中所描述技術(shù)的用于實(shí)施存儲(chǔ)設(shè)備動(dòng)態(tài)大小反向映射的示例系統(tǒng)100的高級(jí)框圖。在描繪的實(shí)施例中,系統(tǒng)100可以包括存儲(chǔ)邏輯104和一個(gè)或多個(gè)存儲(chǔ)設(shè)備或存儲(chǔ)媒體110a、110b至110n。應(yīng)當(dāng)注意的是,本公開通篇互換使用了術(shù)語(yǔ)“存儲(chǔ)媒體”和“存儲(chǔ)設(shè)備”,用于指示存儲(chǔ)數(shù)據(jù)的物理媒體。在展示的實(shí)施例中,存儲(chǔ)邏輯104與所述一個(gè)或多個(gè)存儲(chǔ)設(shè)備110a、110b至110n經(jīng)由信號(hào)線126a、126b至126n通信地耦合。但是,本公開并不局限于這種配置,可以部署各種不同的系統(tǒng)環(huán)境和配置,并且所述各種不同的系統(tǒng)環(huán)境和配置是在本公開的范圍內(nèi)。其他實(shí)施例可以包括額外的或更少的部件。應(yīng)該理解的是,圖1和其他圖是用于展示實(shí)施例的,并且參考號(hào)或標(biāo)記后字母(例如“110a”)的指示是對(duì)由該特定參考標(biāo)記指定的元件或部件的具體引用。如文中參考標(biāo)號(hào)(例如“110”)沒有后跟字母,應(yīng)該理解的是,這種參考標(biāo)記是對(duì)包含該參考標(biāo)記的元件或部件的不同實(shí)施例的總體參考。
在一些實(shí)施例中,存儲(chǔ)邏輯104實(shí)施存儲(chǔ)設(shè)備的動(dòng)態(tài)大小反向映射以及存儲(chǔ)相關(guān)操作。存儲(chǔ)邏輯104能夠提供計(jì)算功能、服務(wù)和/或資源以發(fā)送、接收、讀、寫和變換來自系統(tǒng)100其他實(shí)體的數(shù)據(jù)。在一些實(shí)施例中,存儲(chǔ)邏輯104可以是計(jì)算設(shè)備,被配置成用于使存儲(chǔ)設(shè)備110的一部分或全部存儲(chǔ)空間可用。存儲(chǔ)邏輯104經(jīng)由信號(hào)線126耦合至存儲(chǔ)設(shè)備110,用于與系統(tǒng)110的存儲(chǔ)設(shè)備110a-110n通信和合作。在其他實(shí)施例中,存儲(chǔ)邏輯104經(jīng)由信號(hào)線126a-126n在存儲(chǔ)設(shè)備110a-110n之間傳輸數(shù)據(jù)。應(yīng)該理解的是,可以以分布式架構(gòu)或其他方式利用多個(gè)存儲(chǔ)邏輯104。為了本申請(qǐng)的目的,系統(tǒng)100執(zhí)行的系統(tǒng)配置和操作是在單個(gè)存儲(chǔ)邏輯104的背景下描述的。
存儲(chǔ)設(shè)備110a、110b至110n可以包括非瞬態(tài)計(jì)算機(jī)可使用(例如可讀、可寫等)介質(zhì),所述非瞬態(tài)計(jì)算機(jī)可使用介質(zhì)可以是任何包含、存儲(chǔ)、傳達(dá)、傳播或傳輸由處理器處理或者與其結(jié)合處理的指令、數(shù)據(jù)、計(jì)算機(jī)程序、軟件、代碼例程等的非瞬態(tài)裝置或設(shè)備。在一些實(shí)施例中,存儲(chǔ)設(shè)備110a、110b至110n經(jīng)由信號(hào)線126a、126b至126n與存儲(chǔ)邏輯104通信和合作。雖然本公開將存儲(chǔ)設(shè)備110視為閃速存儲(chǔ)器,應(yīng)該理解的是,在一些實(shí)施例中,存儲(chǔ)設(shè)備110可以包括其他具有類似特性的非易失性存儲(chǔ)器設(shè)備。
圖2是展示了根據(jù)本文中所描述技術(shù)的存儲(chǔ)邏輯104示例的框圖。存儲(chǔ)邏輯104是組合邏輯、固件、軟件、代碼或例程或其一些組合,用于實(shí)施存儲(chǔ)設(shè)備110的動(dòng)態(tài)大小反向映射。如在圖2中所描繪的,存儲(chǔ)邏輯104可以包括數(shù)據(jù)接收模塊202、存儲(chǔ)控制器204、存儲(chǔ)器212和垃圾收集模塊210,上述部件可經(jīng)由通信總線(未示出)電耦合和通信地耦合以相互合作和通信。存儲(chǔ)器212可以進(jìn)一步包括動(dòng)態(tài)轉(zhuǎn)換表206和動(dòng)態(tài)大小反向映射208。部件202、204、206、208、210和212還經(jīng)由信號(hào)線126耦合以與系統(tǒng)100的其他實(shí)體(例如存儲(chǔ)設(shè)備110)進(jìn)行通信。但是,本公開并不局限于這種配置,可以部署各種不同的系統(tǒng)環(huán)境和配置,并且所述各種不同的系統(tǒng)環(huán)境和配置是在本公開的范圍內(nèi)。其他實(shí)施例可以包括額外的或更少的部件。
在一個(gè)實(shí)施例中,數(shù)據(jù)接收模塊202、存儲(chǔ)控制器204、存儲(chǔ)器212和垃圾收集模塊210是用于執(zhí)行以下描述的操作的硬件。在一些實(shí)施例中,數(shù)據(jù)接收模塊202、存儲(chǔ)控制器204、存儲(chǔ)器212和垃圾收集模塊210是可由處理器執(zhí)行的指令集或包括在一個(gè)或多個(gè)定制處理器中的邏輯,以便提供其各自功能。在一些實(shí)施例中,數(shù)據(jù)接收模塊202、存儲(chǔ)控制器204、存儲(chǔ)器212和垃圾收集模塊210存儲(chǔ)在存儲(chǔ)裝置中,并且可由處理器訪問和執(zhí)行,以便提供其各自功能。在進(jìn)一步實(shí)施例中,數(shù)據(jù)接收模塊202、存儲(chǔ)控制器204、存儲(chǔ)器212和垃圾收集模塊210被適配成用于與處理器和系統(tǒng)100的其他部件合作和通信。單元、模塊、例程、特征、屬性、方法和其他方面的特定命名和分割不是必需遵守的或者不是重要的,并且實(shí)施本公開或其特征的機(jī)制可以有不同的名稱、分割和/或格式。
數(shù)據(jù)接收模塊202是用于接收來自一個(gè)或多個(gè)設(shè)備的數(shù)據(jù)和/或命令和/或檢索數(shù)據(jù)的緩沖和軟件、代碼或例程。在一個(gè)實(shí)施例中,數(shù)據(jù)接收模塊202接收來自一個(gè)或多個(gè)設(shè)備的數(shù)據(jù)流(數(shù)據(jù)包),并將它們準(zhǔn)備好以存儲(chǔ)在非易失性存儲(chǔ)設(shè)備(例如存儲(chǔ)設(shè)備110)中。在一些實(shí)施例中,數(shù)據(jù)接收模塊202接收進(jìn)入數(shù)據(jù)包并暫時(shí)將所述數(shù)據(jù)包存儲(chǔ)在存儲(chǔ)器緩沖(可以是或可以不是存儲(chǔ)器212的一部分)中。
數(shù)據(jù)接收模塊202接收進(jìn)入數(shù)據(jù)和/或在一個(gè)或多個(gè)數(shù)據(jù)庫(kù)(例如,但不限于,存儲(chǔ)器212和系統(tǒng)100的存儲(chǔ)設(shè)備110)中檢索數(shù)據(jù)。進(jìn)入數(shù)據(jù)可以包括但不限于數(shù)據(jù)流和/或命令。所述數(shù)據(jù)流可以包括數(shù)據(jù)塊集合(例如,新數(shù)據(jù)流的當(dāng)前數(shù)據(jù)塊、來自存儲(chǔ)設(shè)備的現(xiàn)有數(shù)據(jù)塊等)。所述數(shù)據(jù)塊集合(例如,所述數(shù)據(jù)流的數(shù)據(jù)塊集合)可以與但不限于由定制處理器執(zhí)行和渲染和/或存儲(chǔ)在存儲(chǔ)器中的文檔、文件、郵件、消息、博客和/或任何應(yīng)用相關(guān)聯(lián)。所述命令可以包括但不限于與新數(shù)據(jù)流的當(dāng)前數(shù)據(jù)塊相關(guān)聯(lián)的寫操作請(qǐng)求,例如寫命令。在一些實(shí)施例中,數(shù)據(jù)接收模塊202可以向存儲(chǔ)控制器204傳輸所述命令以執(zhí)行。
存儲(chǔ)控制器204是用于提供高效數(shù)據(jù)管理的軟件、代碼、邏輯或例程。存儲(chǔ)控制器204可經(jīng)由通信總線(未示出)電耦合和通信地耦合以與存儲(chǔ)邏輯104的其他部件合作和通信。在一些實(shí)施例中,存儲(chǔ)控制器204是處理器。存儲(chǔ)控制器204可以接收來自數(shù)據(jù)接收模塊202的數(shù)據(jù)塊和來自檢索動(dòng)態(tài)轉(zhuǎn)換表206的其他數(shù)據(jù)和/或來自存儲(chǔ)器212的動(dòng)態(tài)大小反向映射208。在一些實(shí)施例中,存儲(chǔ)控制器204可以執(zhí)行存儲(chǔ)邏輯104的高效數(shù)據(jù)管理,例如,實(shí)施用于寫過程、垃圾收集過程和塊復(fù)制過程等的動(dòng)態(tài)大小反向映射208。以下參考圖5-8詳細(xì)地描述了存儲(chǔ)控制器204執(zhí)行的高效數(shù)據(jù)管理過程。
存儲(chǔ)器212還可以存儲(chǔ)可由定制處理器(例如存儲(chǔ)控制器204)執(zhí)行的指令和/或數(shù)據(jù)。在展示的實(shí)施例中,存儲(chǔ)器212可以包括動(dòng)態(tài)轉(zhuǎn)換表206和動(dòng)態(tài)大小反向映射208。存儲(chǔ)器212耦合至總線(未示出)以與存儲(chǔ)邏輯104的其他部件通信。存儲(chǔ)在存儲(chǔ)器212的所述指令和/或數(shù)據(jù)可以包括用于執(zhí)行本文中所描述技術(shù)的代碼。存儲(chǔ)器212可以是例如非瞬態(tài)存儲(chǔ)器,如動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(dram)設(shè)備、靜態(tài)隨機(jī)訪問存儲(chǔ)器(sram)設(shè)備或其他易失性存儲(chǔ)器設(shè)備。
動(dòng)態(tài)轉(zhuǎn)換表206是一種具有將邏輯地址映射至物理地址的轉(zhuǎn)換結(jié)構(gòu)的表。在一些實(shí)施例中,動(dòng)態(tài)轉(zhuǎn)換表206可以存儲(chǔ)在存儲(chǔ)器212中并在需要時(shí)由存儲(chǔ)控制器204檢索。應(yīng)該理解的是,動(dòng)態(tài)轉(zhuǎn)換表206還可以存儲(chǔ)在其他存儲(chǔ)單元中,例如存儲(chǔ)設(shè)備110。在一些實(shí)施例中,動(dòng)態(tài)轉(zhuǎn)換表206可以與數(shù)據(jù)存儲(chǔ)操作同步更新,以跟蹤最新邏輯地址-物理地址轉(zhuǎn)換。在展示的實(shí)施例中,動(dòng)態(tài)轉(zhuǎn)換表206由存儲(chǔ)控制器204用于將數(shù)據(jù)塊寫至存儲(chǔ)設(shè)備110、擦除存儲(chǔ)設(shè)備110的數(shù)據(jù)塊等。在完成寫過程并將其用于以下描述的垃圾收集過程時(shí),動(dòng)態(tài)轉(zhuǎn)換表206還可由存儲(chǔ)控制器204進(jìn)行更新。
動(dòng)態(tài)大小反向映射208是一種具有將物理地址映射至邏輯地址的轉(zhuǎn)換結(jié)構(gòu)的映射。在一些實(shí)施例中,動(dòng)態(tài)大小反向映射208可以存儲(chǔ)在存儲(chǔ)器212中并在需要時(shí)由存儲(chǔ)控制器204檢索。應(yīng)該理解的是,動(dòng)態(tài)大小反向映射208還可以存儲(chǔ)在其他存儲(chǔ)單元中,例如存儲(chǔ)設(shè)備110。在一些實(shí)施例中,動(dòng)態(tài)大小反向映射208可以與數(shù)據(jù)存儲(chǔ)操作同步更新,以跟蹤最新物理地址-邏輯地址轉(zhuǎn)換。在展示的實(shí)施例中,動(dòng)態(tài)大小反向映射208由存儲(chǔ)控制器204用于將數(shù)據(jù)塊寫至存儲(chǔ)設(shè)備110以及用于以下描述的垃圾收集過程。在完成寫過程時(shí),動(dòng)態(tài)大小反向映射208還可由存儲(chǔ)控制器204進(jìn)行更新。以下參考圖3詳細(xì)地描述了反向映射208的布局。
垃圾收集模塊210是用于執(zhí)行存儲(chǔ)設(shè)備110的垃圾收集的軟件、代碼、邏輯或例程。垃圾收集模塊210可經(jīng)由通信總線(未示出)電耦合和通信地耦合以與存儲(chǔ)邏輯104的其他部件合作和通信。垃圾收集模塊210定期執(zhí)行系統(tǒng)100的存儲(chǔ)設(shè)備110的數(shù)據(jù)垃圾收集。垃圾收集模塊210可以指動(dòng)態(tài)大小反向映射208決定數(shù)據(jù)塊是否有效以及是否需要重新定位。所述機(jī)制針對(duì)該數(shù)據(jù)塊比較動(dòng)態(tài)轉(zhuǎn)換表206和動(dòng)態(tài)大小反向映射208中的兩個(gè)實(shí)體;如果發(fā)現(xiàn)在兩個(gè)映射中物理塊是一樣的,則判定垃圾收集過程中所述數(shù)據(jù)塊有效且需要重新定位。
垃圾收集模塊210可以執(zhí)行用于映射片段的動(dòng)態(tài)大小反向映射更新(例如,動(dòng)態(tài)大小反向映射208的垃圾收集)。判定是否執(zhí)行動(dòng)態(tài)大小反向映射更新的時(shí)間可以根據(jù)需要來改變和限定。在一些實(shí)施例中,垃圾收集模塊210可以判定是否定期執(zhí)行動(dòng)態(tài)大小反向映射片段的垃圾收集。在其他實(shí)施例中,垃圾收集模塊210可以響應(yīng)于所述數(shù)據(jù)垃圾收集的完成,判定是否執(zhí)行動(dòng)態(tài)大小反向映射片段的垃圾收集。在說明性實(shí)施例中,垃圾收集模塊210可以從片段報(bào)頭中檢索映射片段的信息。
僅出于說明性目的,應(yīng)該理解的是,片段是存儲(chǔ)媒體110上固定范圍的鄰近物理塊,所述物理塊依次填充并一起擦除。映射片段可以是存儲(chǔ)動(dòng)態(tài)轉(zhuǎn)換表206和動(dòng)態(tài)大小反向映射208的專用片段。在動(dòng)態(tài)大小反向映射208的樹結(jié)構(gòu)中,所述片段報(bào)頭(例如,如圖3中所展示的動(dòng)態(tài)大小反向映射208中的l1節(jié)點(diǎn)304)可以是比擴(kuò)展節(jié)點(diǎn)(例如,如圖3中所展示的動(dòng)態(tài)大小反向映射208中的l0節(jié)點(diǎn)306)更高級(jí)別的節(jié)點(diǎn),所述節(jié)點(diǎn)存儲(chǔ)一個(gè)或多個(gè)擴(kuò)展節(jié)點(diǎn)的元信息。所述信息可以包括但不限于所述映射片段的寫入塊的使用計(jì)數(shù)。寫入塊可以是數(shù)據(jù)顆?;蛏葏^(qū),所述數(shù)據(jù)顆?;蛏葏^(qū)是邏輯塊可以縮小的最小單元。作為示例,如果物理塊的大小是4096字節(jié),則其可以容納八(8)個(gè)512字節(jié)的縮小邏輯塊。在一些實(shí)施例中,垃圾收集模塊210可以基于在所述片段報(bào)頭中檢索的所述信息確定所述映射片段的寫入塊的使用計(jì)數(shù)。在進(jìn)一步實(shí)施例中,垃圾收集模塊210可以基于所述映射片段的所述使用計(jì)數(shù),判定所述映射片段是否滿足動(dòng)態(tài)大小反向映射更新標(biāo)準(zhǔn)。例如,假設(shè)映射片段包括8個(gè)寫入塊,當(dāng)預(yù)定義數(shù)量(例如6個(gè))的寫入塊無(wú)效時(shí),確定所述映射片段滿足所述動(dòng)態(tài)大小反向映射更新標(biāo)準(zhǔn)。應(yīng)該理解的是,以上數(shù)字僅是出于說明性目的而提供的,可以使用各種數(shù)字和不同預(yù)定義的動(dòng)態(tài)大小反向映射更新標(biāo)準(zhǔn)。
當(dāng)垃圾收集模塊210確定所述映射片段滿足所述動(dòng)態(tài)大小反向映射更新標(biāo)準(zhǔn)時(shí),垃圾收集模塊210可以執(zhí)行動(dòng)態(tài)大小反向映射更新過程,例如,用于所述映射片段的垃圾收集。在進(jìn)一步實(shí)施例中,在完成所述動(dòng)態(tài)大小反向映射更新過程時(shí),垃圾收集模塊210可以更新所述片段報(bào)頭中的所述映射片段信息。
圖3是展示了根據(jù)本文中所描述技術(shù)的存儲(chǔ)邏輯104所見的動(dòng)態(tài)大小反向映射208布局的示例圖形表示。如在圖3中所描繪的,動(dòng)態(tài)大小反向映射208可以是樹結(jié)構(gòu),并且可以使用基數(shù)樹的形式來實(shí)施樹的節(jié)點(diǎn)。在展示的實(shí)施例中,動(dòng)態(tài)大小反向映射208可以包括l2節(jié)點(diǎn)302、l1節(jié)點(diǎn)304、l0節(jié)點(diǎn)306、l0e映射節(jié)點(diǎn)308和l0節(jié)點(diǎn)緩沖310。應(yīng)該理解的是,圖3和其他圖是用于展示實(shí)施例的,并且參考號(hào)或標(biāo)記(例如“304”)的指示是對(duì)由該特定參考標(biāo)記指定的元件或部件的具體引用。如文中參考標(biāo)號(hào)跟在多詞術(shù)語(yǔ)(例如“l(fā)1節(jié)點(diǎn)304”)后,應(yīng)該理解的是,這種參考標(biāo)記是對(duì)包含該參考標(biāo)記的元件或部件的不同實(shí)施例的總體參考。
如圖3所示的l2節(jié)點(diǎn)302是動(dòng)態(tài)大小反向映射樹結(jié)構(gòu)的根節(jié)點(diǎn)或母節(jié)點(diǎn)。在一些實(shí)施例中,可以在動(dòng)態(tài)大小反向映射樹結(jié)構(gòu)中利用比l2節(jié)點(diǎn)302更高級(jí)別的節(jié)點(diǎn)。應(yīng)該理解的是,可以利用多個(gè)l2節(jié)點(diǎn)302。為了本申請(qǐng)的目的,執(zhí)行的與動(dòng)態(tài)大小反向映射208相關(guān)聯(lián)的功能和操作是在單個(gè)l2節(jié)點(diǎn)的背景下描述的。
如圖3所示的l1節(jié)點(diǎn)304是l2節(jié)點(diǎn)302的子節(jié)點(diǎn)。在一些實(shí)施例中,l1節(jié)點(diǎn)304可以存儲(chǔ)映射片段的信息,即,l1節(jié)點(diǎn)用作片段報(bào)頭。映射片段可以是存儲(chǔ)動(dòng)態(tài)轉(zhuǎn)換表206和動(dòng)態(tài)大小反向映射208的專用片段。在動(dòng)態(tài)大小反向映射樹結(jié)構(gòu)中,所述片段報(bào)頭(例如,如圖3中所展示的動(dòng)態(tài)大小反向映射208中的l1節(jié)點(diǎn)304)可以是比擴(kuò)展節(jié)點(diǎn)(例如,如圖3中所展示的動(dòng)態(tài)大小反向映射208中的l0節(jié)點(diǎn)306)更高級(jí)別的節(jié)點(diǎn),所述節(jié)點(diǎn)存儲(chǔ)動(dòng)態(tài)大小反向映射208的節(jié)點(diǎn)l0306的信息。所述信息可以包括但不限于所述映射片段的寫入塊的使用計(jì)數(shù)。寫入塊可以是數(shù)據(jù)顆?;蛏葏^(qū),所述數(shù)據(jù)顆?;蛏葏^(qū)是邏輯塊可以縮小的最小單元。作為示例,如果物理塊的大小是4096字節(jié),則其可以容納八(8)個(gè)512字節(jié)的縮小邏輯塊。
如在圖3中所描繪的展示的實(shí)施例中,動(dòng)態(tài)大小反向映射208樹結(jié)構(gòu)的葉節(jié)點(diǎn)被稱為l0節(jié)點(diǎn)306。在一些實(shí)施例中,一個(gè)l0節(jié)點(diǎn)306包括用于片段物理塊的映射。此處的片段可以是存儲(chǔ)設(shè)備110上固定范圍的鄰近物理塊,所述物理塊依次填充并一起擦除。應(yīng)該理解的是,由于片段的大小是固定的,其可能包括固定數(shù)量的物理塊。例如,假設(shè)片段是32k字節(jié)且物理塊大小是4096字節(jié),則所述片段包括八(8)個(gè)物理塊。在這種情況下,一個(gè)l0節(jié)點(diǎn)306包括用于該片段中這八(8)個(gè)物理塊的映射。
為了支持l0節(jié)點(diǎn)306的動(dòng)態(tài)尺寸(從而整個(gè)反向映射的動(dòng)態(tài)尺寸),動(dòng)態(tài)大小反向映射208樹結(jié)構(gòu)再擴(kuò)展了一個(gè)級(jí)別,如圖3所示的l0e映射節(jié)點(diǎn)308。l0e映射節(jié)點(diǎn)308又稱l0條目映射節(jié)點(diǎn),并且本公開通篇互換使用了這兩個(gè)名稱。存儲(chǔ)器查找時(shí),基數(shù)樹搜索物理塊將使其前往l0e映射節(jié)點(diǎn)308中的條目。如在圖3中所描繪的,l0e映射節(jié)點(diǎn)308包括多個(gè)條目:條目3080、條目3081、條目3082和條目3083。應(yīng)該理解的是,盡管圖3僅示出4個(gè)條目,可以利用其他數(shù)量的條目,并且所述其他數(shù)量的條目是在本公開的范圍內(nèi)。在展示的實(shí)施例中,條目3083為空并且將依次填充。在一些實(shí)施例中,所述條目中每個(gè)條目與一個(gè)物理塊相對(duì)應(yīng)。因此,l0e映射節(jié)點(diǎn)308是固定大小的節(jié)點(diǎn),并且條目數(shù)量等于片段物理塊的數(shù)量。通過以上描述的相同例子,假設(shè)在展示的實(shí)施例中的片段包括八(8)個(gè)物理塊。l0e映射節(jié)點(diǎn)308的每個(gè)條目具有用于所述八(8)個(gè)物理塊的一個(gè)物理塊的映射數(shù)據(jù)。因此,l0e映射節(jié)點(diǎn)308可以具有8個(gè)條目。如圖3中所示,當(dāng)這些條目表示的物理塊被依次填充時(shí),這些條目被依次填充。該特征增強(qiáng)了動(dòng)態(tài)大小反向映射208的位置,并且有益于整體性能,尤其是存儲(chǔ)設(shè)備的垃圾收集操作。本領(lǐng)域技術(shù)人員將會(huì)認(rèn)識(shí)到,以上描述的片段大小和物理塊大小僅用于示例展示。片段和物理塊的各種其他大小被視為在本公開的范圍內(nèi)。
僅出于描述目的,假設(shè)圖3中所展示的物理塊大小是4096字節(jié),并且應(yīng)該理解的是,可以利用物理塊的各種大小。在圖3和其他圖中,物理塊號(hào)可以簡(jiǎn)稱為pbn,而邏輯塊號(hào)可以簡(jiǎn)稱為lbn。
如圖3中所展示的,l0e映射節(jié)點(diǎn)308的所述條目中每個(gè)條目的大小是32比特且格式為<n:e>,其中“n”是該物理塊所需的映射數(shù)量,“e”是l0節(jié)點(diǎn)306中該物理塊第一映射的條目索引。更具體地,“n”表示由該條目代表的一個(gè)特定物理塊所需的映射數(shù)量??梢曰跀?shù)據(jù)塊的大小和物理塊的大小計(jì)算一個(gè)特定物理塊所需的映射數(shù)量。例如,如果輸入數(shù)據(jù)流包括一個(gè)或多個(gè)數(shù)據(jù)塊,其中,所述一個(gè)或多個(gè)數(shù)據(jù)塊在被壓縮后的大小均是1024字節(jié),并且將數(shù)據(jù)流準(zhǔn)備好以在物理塊0(pbn=0)中存儲(chǔ)所述一個(gè)或多個(gè)數(shù)據(jù)塊,如果物理塊的大小是4096字節(jié),則當(dāng)該物理塊0存儲(chǔ)該數(shù)據(jù)流時(shí),動(dòng)態(tài)大小反向映射208樹結(jié)構(gòu)需要用于該物理塊的四(4)個(gè)映射。本領(lǐng)域技術(shù)人員將會(huì)認(rèn)識(shí)到,以上描述的物理塊大小和數(shù)據(jù)塊大小僅用于示例展示。物理塊和數(shù)據(jù)塊的各種其他大小(由于不同壓縮程度)被視為在本公開的范圍內(nèi)。如圖3中所示,基于所展示的示例,條目3080代表物理塊0,并且該條目3080中的“n”是四(4)。應(yīng)該理解的是,由于不同的壓縮量,物理塊所需的映射數(shù)量可以基于數(shù)據(jù)塊的大小來改變,數(shù)據(jù)塊需要存儲(chǔ)在物理塊中。例如,如果需要存儲(chǔ)在物理塊1中的數(shù)據(jù)塊的大小是2048字節(jié),則該物理塊1所需的映射數(shù)量是二(2)。如圖3中所示,基于以上示例,條目3081代表物理塊1,并且該條目3081中的“n”是二(2)。應(yīng)該理解的是,基于壓縮比率,數(shù)據(jù)塊可以具有不同的大小,并且存儲(chǔ)在相同物理塊的數(shù)據(jù)塊可以具有不同的大小。在一些實(shí)施例中,當(dāng)一個(gè)物理塊中的可用空間不夠用于下一個(gè)進(jìn)入數(shù)據(jù)塊時(shí),系統(tǒng)100可以跨物理塊邊界存儲(chǔ)所述進(jìn)入數(shù)據(jù)塊。
如以上所討論的,條目<n:e>中的“e”是l0節(jié)點(diǎn)306中第一映射的條目索引。更具體地,“e”代表l0節(jié)點(diǎn)306中一個(gè)物理塊的映射相對(duì)起始位置。如在存儲(chǔ)業(yè)已知的,存儲(chǔ)設(shè)備的物理塊被依次填充。可以理解的是,l0e映射節(jié)點(diǎn)308的第一條目(即條目3080)代表片段的物理塊號(hào)0,并且物理塊0的映射起始位置是0。因此,條目3080的條目索引“e”是“0”。如以上所討論的,物理塊0所需的映射數(shù)量是4,這意味著物理塊0進(jìn)行4次映射。這4次映射自0開始,即0、1、2和3。由于存儲(chǔ)設(shè)備的物理塊被依次填充,下一個(gè)物理塊1的映射自數(shù)字4開始。在展示的實(shí)施例中,條目3081代表片段中的物理塊1。因此,條目3081的“e”是4。如以上所討論的,條目3081的“n”是2;因此這2次映射自4開始,即4和5。依次地,在條目3081后的下一個(gè)條目3082的“e”是6。此外,如圖3中所示,條目3082可能消耗2次映射,則應(yīng)為6和7。下一個(gè)條目3803為空并且將隨后填充。根據(jù)先前的分析,條目3803的“e”將是8。這意味著物理塊3的第一映射的起始位置地址將是8。
返回參照?qǐng)D3中的l0節(jié)點(diǎn)306,所述節(jié)點(diǎn)包含用于片段物理塊的映射。如圖3中所示,l0節(jié)點(diǎn)306是由整數(shù)個(gè)固定大小的分塊組成的,所述分塊被稱為l0節(jié)點(diǎn)緩沖310。在一些實(shí)施例中,根據(jù)需求,從預(yù)分配池中分配這些分塊。這實(shí)現(xiàn)了l0節(jié)點(diǎn)306的動(dòng)態(tài)尺寸,從而實(shí)現(xiàn)了整個(gè)反向映射的動(dòng)態(tài)尺寸。這些分塊具有寫入塊的大小,所述寫入塊是存儲(chǔ)媒體的最小可編程單元。
如圖3中所示,l0節(jié)點(diǎn)緩沖310包括多個(gè)緩沖條目:緩沖條目3100、緩沖條目3101、緩沖條目3102、緩沖條目3103、緩沖條目3104、緩沖條目3105、緩沖條目3106、緩沖條目3107和緩沖條目3108。應(yīng)該理解的是,盡管圖3僅示出9個(gè)緩沖條目,可以利用其他數(shù)量的條目,并且所述其他數(shù)量的條目是在本公開的范圍內(nèi)。在展示的實(shí)施例中,緩沖條目3108為空并且將依次填充。在一些實(shí)施例中,所述緩沖條目中每個(gè)緩沖條目與一個(gè)物理塊的一個(gè)映射相關(guān)聯(lián)。因此,應(yīng)該理解的是,一個(gè)物理塊的映射數(shù)量等于代表該物理塊的緩沖條目數(shù)量。例如,如在圖3中所描繪的,代表物理塊號(hào)0的條目3080是<4:0>,意味著其需要4次映射以代表物理塊號(hào)0;因此,為物理塊號(hào)0分配了四(4)個(gè)緩沖條目,即緩沖條目3100、3101、3102和3103。
如圖3中所展示的,緩沖條目的格式為<l:p:s:n>,其中“l(fā)”是邏輯塊號(hào)(lbn),“p”是物理塊號(hào)(pbn),“s”代表物理塊中的起始扇區(qū),以及“n”代表物理塊的扇區(qū)數(shù)量。
緩沖條目的“l(fā)”代表數(shù)據(jù)塊存儲(chǔ)的邏輯塊號(hào)。在一些實(shí)施例中,所述邏輯塊號(hào)是基于寫命令中包括的信息來確定的。
緩沖條目的“p”代表數(shù)據(jù)塊存儲(chǔ)的物理塊號(hào)。應(yīng)該理解的是,針對(duì)一個(gè)特定物理塊,“p”在其占有的緩沖條目中應(yīng)相同。例如,物理塊0具有4次映射,即緩沖條目3100、3101、3102和3103。這些緩沖條目中的所有“p”均應(yīng)相同,即pbn是零(0)。類似地,緩沖條目3104和3105中的“p”均應(yīng)相同,即pbn是一(1)。
緩沖條目的“s”代表物理塊的起始扇區(qū)。如以上所討論的,所述緩沖條目中每個(gè)緩沖條目代表一個(gè)映射。例如,一個(gè)物理塊的第一映射占用所述物理塊的第一整數(shù)個(gè)扇區(qū),并且用于其的“s”應(yīng)是零(0)。該相同物理塊的第二映射自所述第一映射的結(jié)束位置開始,并且可以基于所述物理塊的第一映射的“s”和“n”來確定用于其的“s”。
緩沖條目的“n”代表該映射消耗的所述物理塊的扇區(qū)數(shù)量。應(yīng)該理解的是,可以基于壓縮數(shù)據(jù)塊的大小和該物理塊扇區(qū)的大小來計(jì)算用于一次映射的“n”。例如,假設(shè)壓縮數(shù)據(jù)塊的大小是1024字節(jié)(可在存儲(chǔ)之前進(jìn)行壓縮,壓縮比率為4,例如,4096字節(jié)壓縮至1024字節(jié)),扇區(qū)的大小是512字節(jié),則該壓縮數(shù)據(jù)塊可能消耗二(2)個(gè)扇區(qū)以進(jìn)行存儲(chǔ)。這意味著用于該數(shù)據(jù)塊的映射(緩沖條目)中的“n”是2。在其他實(shí)施例中,如果進(jìn)入壓縮數(shù)據(jù)塊的大小(可在存儲(chǔ)之前進(jìn)行壓縮,壓縮比率為2,例如,4096字節(jié)壓縮至2048字節(jié))和扇區(qū)的大小是512字節(jié),則該壓縮數(shù)據(jù)塊可能消耗四(4)個(gè)扇區(qū)以進(jìn)行存儲(chǔ)。應(yīng)該理解的是,存儲(chǔ)在相同物理塊中的壓縮數(shù)據(jù)塊的大小可能不同。在一些實(shí)施例中,當(dāng)一個(gè)物理塊中的可用空間不夠用于下一個(gè)進(jìn)入數(shù)據(jù)塊時(shí),系統(tǒng)100可以跨物理塊邊界存儲(chǔ)所述進(jìn)入數(shù)據(jù)塊。例如,針對(duì)一個(gè)物理塊號(hào)0,進(jìn)入數(shù)據(jù)流包括若干(第一、第二和第三)壓縮數(shù)據(jù)塊,其大小分別為2048字節(jié)、1024字節(jié)和2048字節(jié)。第一2048字節(jié)數(shù)據(jù)塊可能消耗四(4)個(gè)扇區(qū),并且用于其的映射可以是<l:p:0:4>,其中l(wèi)代表邏輯塊號(hào),p代表物理塊號(hào),兩者可以根據(jù)以上描述來確定。這里,如以上所討論的,用于該第一2048字節(jié)數(shù)據(jù)塊的“s”是零(0),并且用于其的“n”是四(4)。第二1024字節(jié)數(shù)據(jù)塊可能消耗兩(2)個(gè)扇區(qū),并且用于其的映射可以是<lp:4:2>,其中用于其的“s”是四(4),這意味著用于其的起始扇區(qū)是4??梢岳斫獾氖?,由于第一數(shù)據(jù)塊已經(jīng)采用了4個(gè)扇區(qū),即0、1、2和3,用于該第二數(shù)據(jù)塊的“n”是二(2),這意味著其消耗2個(gè)扇區(qū)以進(jìn)行存儲(chǔ)。如以上所討論的,本公開允許相同物理塊中的不同數(shù)據(jù)塊具有不同大小的物理空間。然后,參照相同的示例,如以上所討論的,所述進(jìn)入數(shù)據(jù)流的第三數(shù)據(jù)塊是2048字節(jié),并且其將采用4個(gè)扇區(qū)以進(jìn)行存儲(chǔ)。但是,如以上所討論的,假設(shè)物理塊的大小是4096字節(jié),前兩個(gè)數(shù)據(jù)塊已經(jīng)消耗了3072字節(jié)。這使得該物理塊中僅1024字節(jié)可用,這不夠用于整個(gè)第三數(shù)據(jù)塊。在一些實(shí)施例中,可以跨物理塊邊界存儲(chǔ)數(shù)據(jù)塊。因此,用于第三數(shù)據(jù)塊的映射可以是<lp:6:4>,其中“s”是6,“n”是4。如以上所討論的,該物理塊的可用空間不夠用于第三數(shù)據(jù)塊;因此,所述第三數(shù)據(jù)塊采用該物理塊的2個(gè)扇區(qū)和下一個(gè)物理塊的2個(gè)扇區(qū)以存儲(chǔ)。應(yīng)該理解的是,第二物理塊的第一映射應(yīng)反映出所述第二物理塊的第一1024字節(jié)(2個(gè)扇區(qū))已經(jīng)被采用;由此,所述第一映射應(yīng)是<lp:2:n>。這意味著,所述第二物理塊的第一映射自扇區(qū)2開始,反映出該物理塊的前2個(gè)扇區(qū)已經(jīng)被采用。應(yīng)該理解的是,以上示例僅是一個(gè)示例且并未在圖3中示出。
由于本文中所描述的技術(shù)引入了基于工作量的動(dòng)態(tài)大小反向映射208,其是有益的。如以上所討論的,由于存儲(chǔ)設(shè)備110支持?jǐn)?shù)據(jù)縮減,一個(gè)物理塊能夠以簡(jiǎn)化形式存儲(chǔ)多個(gè)邏輯塊。因此,基于不同的壓縮比率,每個(gè)物理塊可能需要不同的映射數(shù)量。因此,盡管所述l0節(jié)點(diǎn)306中每個(gè)節(jié)點(diǎn)代表相同數(shù)量的物理塊,但是因?yàn)閘0節(jié)點(diǎn)306可以根據(jù)需求包括不同數(shù)量的l0節(jié)點(diǎn)緩沖,其大小可能互不相同。因此,基于工作量,動(dòng)態(tài)大小反向映射208的總體大小可以是可變的。
圖4是展示了根據(jù)本文中所描述技術(shù)的動(dòng)態(tài)大小反向映射208支持塊復(fù)制的布局的示例圖形表示。塊復(fù)制是一種將一定范圍的邏輯塊復(fù)制至另一范圍的邏輯塊的機(jī)制。為了在本文中所描述的動(dòng)態(tài)大小反向映射208實(shí)施中支持塊復(fù)制,l0節(jié)點(diǎn)306的可變大小特征可以是有益的。如參照?qǐng)D3而討論的,可將l0節(jié)點(diǎn)擴(kuò)展至超過片段能夠具有的最大映射數(shù)量。在塊復(fù)制后,可以將這些新映射用于物理塊指向的新范圍的邏輯塊。
如在圖4中所描繪的,l0節(jié)點(diǎn)緩沖310可以包括整數(shù)個(gè)緩沖條目。當(dāng)系統(tǒng)100接收到將多個(gè)數(shù)據(jù)塊從第一邏輯地址范圍復(fù)制到第二邏輯地址范圍的請(qǐng)求時(shí),系統(tǒng)100可以更新動(dòng)態(tài)大小反向映射208以指示塊復(fù)制過程。例如,假設(shè)塊復(fù)制請(qǐng)求旨在將數(shù)據(jù)從邏輯塊號(hào)5復(fù)制至邏輯塊號(hào)8,則可以更新動(dòng)態(tài)大小反向映射208以指示數(shù)據(jù)的物理塊至邏輯塊號(hào)8的新映射。如在圖4中所描繪的,可以更新緩沖條目3105以包括格式為<fp:nr>的額外信息,其中,“fp”代表正向指針,“nr”代表引用數(shù)量。以下參考圖8詳細(xì)地描述了塊復(fù)制過程。
圖5a和5b是根據(jù)本文中所描述技術(shù)的用于生成存儲(chǔ)設(shè)備110寫過程動(dòng)態(tài)大小反向映射208的示例方法500的流程圖。方法500可以通過以下方式來開始:接收502數(shù)據(jù)流,所述數(shù)據(jù)流包括一個(gè)或多個(gè)數(shù)據(jù)塊。在一個(gè)實(shí)施例中,數(shù)據(jù)接收模塊202接收來自一個(gè)或多個(gè)設(shè)備(未示出)的數(shù)據(jù)流(數(shù)據(jù)包),并將它們準(zhǔn)備好以存儲(chǔ)在存儲(chǔ)設(shè)備110中。進(jìn)入數(shù)據(jù)可以包括但不限于數(shù)據(jù)流和/或命令。所述數(shù)據(jù)流可以包括數(shù)據(jù)塊集合(例如,新數(shù)據(jù)流的當(dāng)前數(shù)據(jù)塊)。在一些實(shí)施例中,數(shù)據(jù)接收模塊202接收的所述數(shù)據(jù)流呈壓縮形式。在其他實(shí)施例中,數(shù)據(jù)接收模塊202接收的所述數(shù)據(jù)流傳輸至存儲(chǔ)控制器204以在存儲(chǔ)過程前進(jìn)行壓縮。在一些實(shí)施例中,步驟502中執(zhí)行的操作可以由數(shù)據(jù)接收模塊202與系統(tǒng)100的一個(gè)或多個(gè)其他部件協(xié)作執(zhí)行。
然后,響應(yīng)于步驟502的接收數(shù)據(jù)流,方法500通過以下方式繼續(xù):檢索504動(dòng)態(tài)轉(zhuǎn)換表206。在一個(gè)實(shí)施例中,存儲(chǔ)控制器204在存儲(chǔ)器212中檢索動(dòng)態(tài)轉(zhuǎn)換表206。在一些實(shí)施例中,如果需要,存儲(chǔ)控制器204可以在存儲(chǔ)過程前壓縮所述進(jìn)入數(shù)據(jù)流。
然后,方法500可以通過以下方式前進(jìn):標(biāo)識(shí)506物理地址和邏輯地址,以基于動(dòng)態(tài)轉(zhuǎn)換表206存儲(chǔ)檢索的數(shù)據(jù)流的所述一個(gè)或多個(gè)數(shù)據(jù)塊。應(yīng)該理解的是,可以在存儲(chǔ)過程前壓縮所述檢索的數(shù)據(jù)流的所述一個(gè)或多個(gè)數(shù)據(jù)塊。在一個(gè)實(shí)施例中,存儲(chǔ)控制器204標(biāo)識(shí)物理地址和邏輯地址以存儲(chǔ)所述一個(gè)或多個(gè)數(shù)據(jù)塊。
然后,方法500可以將所述數(shù)據(jù)塊存儲(chǔ)508在存儲(chǔ)設(shè)備110中,并更新動(dòng)態(tài)轉(zhuǎn)換表206以包括用于所述數(shù)據(jù)塊的物理地址和邏輯地址。在一個(gè)實(shí)施例中,存儲(chǔ)控制器204將所述數(shù)據(jù)塊存儲(chǔ)至存儲(chǔ)設(shè)備110中,并更新動(dòng)態(tài)轉(zhuǎn)換表206以包括用于所述數(shù)據(jù)塊的邏輯地址-物理地址映射。在一些實(shí)施例中,存儲(chǔ)控制器204還將更新的動(dòng)態(tài)轉(zhuǎn)換表206存儲(chǔ)至存儲(chǔ)器212中。
然后,方法500可以通過以下方式前進(jìn):確定510所述數(shù)據(jù)塊的大小。在一個(gè)實(shí)施例中,存儲(chǔ)控制器204確定所述數(shù)據(jù)塊的大小。返回參照?qǐng)D3,所述數(shù)據(jù)塊的大小可用于確定一個(gè)特定物理塊所需的映射數(shù)量。此外,所述數(shù)據(jù)塊的大小可用于確定物理塊緩沖條目中每個(gè)緩沖條目占用的扇區(qū)數(shù)量。
然后,方法500可以基于數(shù)據(jù)塊的大小(壓縮后)和物理塊的大小確定512物理塊所需的映射數(shù)量。應(yīng)該理解的是,如果已經(jīng)壓縮了數(shù)據(jù)塊,基于壓縮比例,所述數(shù)據(jù)塊的大小是可變化的。在一個(gè)實(shí)施例中,存儲(chǔ)控制器204基于數(shù)據(jù)塊的大小(或數(shù)據(jù)塊的壓縮后大小)和物理塊的大小確定物理塊所需的映射數(shù)量。例如,如果輸入數(shù)據(jù)流包括一個(gè)或多個(gè)數(shù)據(jù)塊,其中,所述一個(gè)或多個(gè)數(shù)據(jù)塊在被壓縮后的大小是1024字節(jié)(由于邏輯塊大小最初為4096字節(jié)且壓縮至1024字節(jié)),并且準(zhǔn)備好以存儲(chǔ)在物理塊0(pbn=0),如果物理塊的大小是4096字節(jié),則當(dāng)該物理塊0存儲(chǔ)該數(shù)據(jù)流時(shí),動(dòng)態(tài)大小反向映射208樹結(jié)構(gòu)需要用于該物理塊的四(4)個(gè)映射。應(yīng)該理解的是,如圖3中所展示的,物理塊所需的映射數(shù)量是l0e映射節(jié)點(diǎn)308中的“n”。應(yīng)該理解的是,基于壓縮比率,數(shù)據(jù)塊可以具有不同的大小,并且存儲(chǔ)在相同物理塊的數(shù)據(jù)塊可以具有不同的大小。在一些實(shí)施例中,當(dāng)一個(gè)物理塊中的可用空間不夠用于下一個(gè)進(jìn)入數(shù)據(jù)塊時(shí),系統(tǒng)100可以跨物理塊邊界存儲(chǔ)所述進(jìn)入數(shù)據(jù)塊。
然后,方法500可以檢索514動(dòng)態(tài)大小反向映射208。在一些實(shí)施例中,動(dòng)態(tài)大小反向映射208可以存儲(chǔ)在存儲(chǔ)器212中并在需要時(shí)由存儲(chǔ)控制器204檢索。應(yīng)該理解的是,動(dòng)態(tài)大小反向映射208還可以存儲(chǔ)在其他存儲(chǔ)單元中,例如存儲(chǔ)設(shè)備110。在一些實(shí)施例中,動(dòng)態(tài)大小反向映射208可以與數(shù)據(jù)存儲(chǔ)操作同步更新,以跟蹤最新物理地址-邏輯地址轉(zhuǎn)換。
然后,方法500可以通過以下方式前進(jìn):確定動(dòng)態(tài)大小反向映射208中用于存儲(chǔ)數(shù)據(jù)塊的映射的相對(duì)起始位置。在一個(gè)實(shí)施例中,存儲(chǔ)控制器204確定動(dòng)態(tài)大小反向映射208中用于存儲(chǔ)數(shù)據(jù)塊的映射的相對(duì)起始位置。如以上參照?qǐng)D3所討論的,所述相對(duì)起始位置是l0e映射節(jié)點(diǎn)308中條目的條目索引“e”。返回參照?qǐng)D3,“e”代表l0節(jié)點(diǎn)306中一個(gè)物理塊的映射相對(duì)起始位置。如在存儲(chǔ)業(yè)已知的,存儲(chǔ)設(shè)備的物理塊被依次填充??梢岳斫獾氖牵琹0e映射節(jié)點(diǎn)308的第一條目(即條目3080)代表片段的物理塊號(hào)0,并且物理塊0的映射起始位置是0。因此,條目3080的條目索引“e”是“0”。如以上所討論的,物理塊0所需的映射數(shù)量是4,這意味著物理塊0進(jìn)行4次映射。這4次映射自0開始,即0、1、2和3。由于存儲(chǔ)設(shè)備110的物理塊被依次填充,下一個(gè)物理塊1的映射自數(shù)字4開始。在展示的實(shí)施例中,條目3081代表片段中的物理塊1。因此,條目3081的“e”是4。如以上所討論的,條目3081的“n”是2;因此這2次映射自4開始,即4和5。依次地,在條目3081后的下一個(gè)條目3082的“e”是6。條目3803為空并且將隨后填充。根據(jù)先前的分析,條目3803的“e”將是8。這意味著物理塊3的第一映射的起始位置地址將是8。再次,還應(yīng)該理解的是,基于壓縮比率,數(shù)據(jù)塊可以具有不同的大小,并且存儲(chǔ)在相同物理塊的數(shù)據(jù)塊可以具有不同的大小。在一些實(shí)施例中,當(dāng)一個(gè)物理塊中的可用空間不夠用于下一個(gè)進(jìn)入數(shù)據(jù)塊時(shí),系統(tǒng)100可以跨物理塊邊界存儲(chǔ)所述進(jìn)入數(shù)據(jù)塊。
返回參照?qǐng)D5b,方法500可以通過以下方式前進(jìn):在動(dòng)態(tài)大小反向映射208中針對(duì)物理塊中每個(gè)物理塊創(chuàng)建一個(gè)條目,所述條目包括該物理塊的映射數(shù)量和存儲(chǔ)數(shù)據(jù)塊的映射的相對(duì)起始位置。在一個(gè)實(shí)施例中,存儲(chǔ)控制器204創(chuàng)建用于動(dòng)態(tài)大小反向映射208物理塊中每個(gè)物理塊的一個(gè)條目。所述條目被創(chuàng)建為包括該物理塊所需的映射數(shù)量和用于該物理塊的第一映射相對(duì)起始位置。在一些實(shí)施例中,如在圖3中所描繪的,創(chuàng)建多個(gè)所述條目并將其存儲(chǔ)為l0e映射節(jié)點(diǎn)308。然后,方法500可以更新520動(dòng)態(tài)大小反向映射208。在一些實(shí)施例中,存儲(chǔ)控制器204更新動(dòng)態(tài)大小反向映射208,并將更新的動(dòng)態(tài)大小反向映射208存儲(chǔ)至存儲(chǔ)器212中。
圖6是根據(jù)本文中所描述技術(shù)的實(shí)施動(dòng)態(tài)大小反向映射208以包括用于存儲(chǔ)設(shè)備110數(shù)據(jù)塊的緩沖條目的示例方法600的流程圖。如以上所討論的,動(dòng)態(tài)大小反向映射208是可變大小映射。針對(duì)每個(gè)物理塊,動(dòng)態(tài)大小反向映射208可以具有不同數(shù)量的緩沖條目以存儲(chǔ)用于該物理塊的不同數(shù)量的映射。應(yīng)該理解的是,如果已經(jīng)壓縮了數(shù)據(jù)塊,基于壓縮比例,所述數(shù)據(jù)塊的大小是可變化的。因此,盡管物理塊的大小是固定的,一個(gè)物理塊可以存儲(chǔ)多個(gè)呈圧縮形式的邏輯塊。由此,基于工作量和/或存儲(chǔ)在存儲(chǔ)設(shè)備110中的邏輯塊的數(shù)量,動(dòng)態(tài)大小反向映射208的大小可以是可變的。本文參照?qǐng)D6描述了建立用于數(shù)據(jù)塊的緩沖條目的詳細(xì)步驟。如在圖3中所描繪的,緩沖條目包括在l0節(jié)點(diǎn)306中,格式為<l:p:s:n>,其中“l(fā)”是邏輯塊號(hào)(lbn),“p”是物理塊號(hào)(pbn),“s”代表物理塊中的起始扇區(qū),以及“n”代表物理塊的扇區(qū)數(shù)量。
方法600可以通過以下方式來開始:針對(duì)所述數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊,基于動(dòng)態(tài)大小反向映射208確定602物理塊號(hào)。如以上所討論的,當(dāng)系統(tǒng)100接收數(shù)據(jù)流,所述數(shù)據(jù)流包括一個(gè)或多個(gè)數(shù)據(jù)塊時(shí),系統(tǒng)100將所述數(shù)據(jù)塊存儲(chǔ)至存儲(chǔ)設(shè)備110中。所述數(shù)據(jù)流可以由存儲(chǔ)邏輯104的數(shù)據(jù)接收模塊202接收。在一些實(shí)施例中,存儲(chǔ)控制器204基于動(dòng)態(tài)大小反向映射208確定用于所述數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的物理塊號(hào)。如以上參照?qǐng)D3所討論的,動(dòng)態(tài)大小反向映射208可以包括下一個(gè)可用物理塊號(hào)的映射信息。緩沖條目的“p”代表數(shù)據(jù)塊存儲(chǔ)的物理塊號(hào)。應(yīng)該理解的是,針對(duì)一個(gè)特定物理塊,“p”在其占有的緩沖條目中應(yīng)相同。例如,如圖3中所示,物理塊0具有4次映射,即緩沖條目3100、3101、3102和3103。這些緩沖條目中的所有“p”均應(yīng)相同,即pbn是零(0)。類似地,緩沖條目3104和3105中的“p”均應(yīng)相同,即pbn是一(1)。
返回參照?qǐng)D6,方法600可以通過以下方式繼續(xù):關(guān)于所述數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊,基于所述數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的大小確定604其將占用的物理塊中的扇區(qū)數(shù)量。應(yīng)該理解的是,如果已經(jīng)壓縮了數(shù)據(jù)塊,基于壓縮比例,所述數(shù)據(jù)塊的大小是可變化的。如以上參照?qǐng)D3所討論的,緩沖條目的“n”代表該數(shù)據(jù)塊消耗的所述物理塊的扇區(qū)數(shù)量。在一些實(shí)施例中,存儲(chǔ)控制器204基于該物理塊存儲(chǔ)的壓縮數(shù)據(jù)塊的大小和該物理塊扇區(qū)的大小來計(jì)算所述“n”。例如,假設(shè)壓縮數(shù)據(jù)塊的大小是1024字節(jié)(可在存儲(chǔ)之前進(jìn)行壓縮,壓縮比率為4,例如,4096字節(jié)壓縮至1024字節(jié)),扇區(qū)的大小是512字節(jié),則該壓縮數(shù)據(jù)塊可能消耗二(2)個(gè)扇區(qū)以進(jìn)行存儲(chǔ)。這意味著用于該數(shù)據(jù)塊的映射(緩沖條目)中的“n”是2。在其他實(shí)施例中,如果進(jìn)入壓縮數(shù)據(jù)塊的大小(可在存儲(chǔ)之前進(jìn)行壓縮,例如壓縮比率為2)和扇區(qū)的大小是512字節(jié),則該壓縮數(shù)據(jù)塊可能消耗四(4)個(gè)扇區(qū)以進(jìn)行存儲(chǔ)。應(yīng)該理解的是,存儲(chǔ)在相同物理塊中的壓縮數(shù)據(jù)塊的大小可能不同。在一些實(shí)施例中,當(dāng)一個(gè)物理塊中的可用空間不夠用于下一個(gè)進(jìn)入數(shù)據(jù)塊時(shí),系統(tǒng)100可以跨物理塊邊界存儲(chǔ)所述進(jìn)入數(shù)據(jù)塊。
返回參照?qǐng)D6,方法600可以通過以下方式前進(jìn):關(guān)于所述數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊,基于動(dòng)態(tài)大小反向映射208確定606的物理塊中的起始扇區(qū)。物理塊的起始扇區(qū)由緩沖條目的“s”來表示。如以上參照?qǐng)D3所討論的,所述緩沖條目中每個(gè)緩沖條目代表一個(gè)映射。例如,一個(gè)物理塊的第一映射/緩沖條目占用所述物理塊的第一整數(shù)個(gè)扇區(qū),并且用于其的“s”應(yīng)是零(0)。該相同物理塊的第二映射/緩沖條目自所述第一映射的結(jié)束位置開始,并且可以基于所述物理塊的第一映射/緩沖條目的“s”和“n”來確定用于其的“s”。
然后,方法600可以通過以下方式繼續(xù):確定608用于數(shù)據(jù)塊的邏輯塊號(hào)。在一些實(shí)施例中,存儲(chǔ)控制器204可以基于寫命令推斷出用于數(shù)據(jù)塊的邏輯塊號(hào)。如在圖3中所描繪的,所述邏輯塊號(hào)由緩沖條目的“l(fā)”來表示。
方法600可以通過以下方式繼續(xù):更新610動(dòng)態(tài)大小反向映射208以包括針對(duì)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的緩沖條目,其中,緩沖條目包括邏輯塊號(hào)(l)、物理塊號(hào)(p)、物理塊中的起始扇區(qū)(s)和存儲(chǔ)數(shù)據(jù)塊所需要的扇區(qū)數(shù)量(n)。在一些實(shí)施例中,存儲(chǔ)控制器204可以更新動(dòng)態(tài)大小反向映射208,然后將更新的動(dòng)態(tài)大小反向映射208存儲(chǔ)至存儲(chǔ)器212中,并且方法600可結(jié)束。
圖7是根據(jù)本文中所描述技術(shù)的實(shí)施用于存儲(chǔ)設(shè)備110動(dòng)態(tài)大小反向映射208的垃圾收集操作的示例方法700的流程圖。通過垃圾收集過程收回物理塊后,所述物理塊將由新邏輯塊使用。這將產(chǎn)生新反向映射,使得該物理塊的舊反向映射無(wú)效。這種無(wú)效映射會(huì)隨著時(shí)間在存儲(chǔ)設(shè)備110中積累。這些無(wú)效映射消耗的空間通過動(dòng)態(tài)大小反向映射更新過程收回,即用于動(dòng)態(tài)大小反向映射208的垃圾收集。所述動(dòng)態(tài)大小反向映射208的垃圾收集每次處理一個(gè)片段,并至少基于所述片段中存在的無(wú)效數(shù)據(jù)量來選擇用于垃圾收集的最佳片段。針對(duì)可變大小l0節(jié)點(diǎn)306,動(dòng)態(tài)大小反向映射208需要記錄l0節(jié)點(diǎn)消耗的片段空間。如以上所討論的,l0節(jié)點(diǎn)306是由整數(shù)個(gè)寫入塊組成。由此,片段的無(wú)效空間是以寫入塊為單元計(jì)算的。
方法700可以通過以下方式來開始:對(duì)存儲(chǔ)設(shè)備110執(zhí)行702數(shù)據(jù)垃圾收集。在一些實(shí)施例中,垃圾收集模塊210定期執(zhí)行系統(tǒng)100的存儲(chǔ)設(shè)備110的數(shù)據(jù)垃圾收集。應(yīng)該理解的是,垃圾收集是一種發(fā)現(xiàn)程序中無(wú)法再訪問的數(shù)據(jù)對(duì)象并收回被這些對(duì)象使用的資源的自動(dòng)存儲(chǔ)器管理形式。
然后,方法700則可以通過以下方式繼續(xù):從片段報(bào)頭中檢索704映射片段的信息。在一些實(shí)施例中,存儲(chǔ)控制器204可以響應(yīng)于數(shù)據(jù)垃圾收集的完成而在片段報(bào)頭中檢索映射片段的信息。僅出于說明性目的,應(yīng)該理解的是,片段是存儲(chǔ)設(shè)備110上固定范圍的鄰近物理塊,所述物理塊依次填充并一起擦除。映射片段可以是存儲(chǔ)動(dòng)態(tài)轉(zhuǎn)換表206和動(dòng)態(tài)大小反向映射208的專用片段。在動(dòng)態(tài)大小反向映射208的樹結(jié)構(gòu)中,所述片段報(bào)頭(例如,如圖3中所展示的動(dòng)態(tài)大小反向映射208中的l1節(jié)點(diǎn)304)可以是比擴(kuò)展節(jié)點(diǎn)(例如,如圖3中所展示的動(dòng)態(tài)大小反向映射208中的l0節(jié)點(diǎn)306)更高級(jí)別的節(jié)點(diǎn)。所述映射片段信息存儲(chǔ)在l0節(jié)點(diǎn)報(bào)頭中,即圖3動(dòng)態(tài)大小反向映射208的樹結(jié)構(gòu)中所描繪的l1節(jié)點(diǎn)304。l1節(jié)點(diǎn)304存儲(chǔ)構(gòu)成存儲(chǔ)設(shè)備110上l0節(jié)點(diǎn)306的寫入塊的數(shù)量信息以及該l0節(jié)點(diǎn)306寫入的片段地址。當(dāng)l0節(jié)點(diǎn)306寫入存儲(chǔ)設(shè)備110時(shí),從l1節(jié)點(diǎn)304中提取舊片段地址和寫入塊的數(shù)量。舊片段中無(wú)效寫入塊的數(shù)量(使用計(jì)數(shù))按照該l0節(jié)點(diǎn)306已經(jīng)消耗的寫入塊數(shù)量遞增。
返回參照?qǐng)D7,方法700可以通過以下方式繼續(xù):確定706映射片段的寫入塊的使用計(jì)數(shù)。寫入塊可以是數(shù)據(jù)顆?;蛏葏^(qū),所述數(shù)據(jù)顆?;蛏葏^(qū)是邏輯塊可以縮小的最小單元。作為示例,如果物理塊的大小是4096字節(jié),則其可以容納八(8)個(gè)512字節(jié)的縮小邏輯塊。在一些實(shí)施例中,垃圾收集模塊210可以基于在所述片段報(bào)頭中檢索的所述信息確定所述映射片段的寫入塊的使用計(jì)數(shù)。步驟706中執(zhí)行的操作可以由存儲(chǔ)控制器204與系統(tǒng)100的一個(gè)或多個(gè)其他部件協(xié)作執(zhí)行。
然后,方法700可以通過以下方式前進(jìn):基于所述映射片段的所述使用計(jì)數(shù),判定708所述映射片段是否滿足動(dòng)態(tài)大小反向映射更新標(biāo)準(zhǔn)。在一些實(shí)施例中,垃圾收集模塊210可以基于所述映射片段的所述使用計(jì)數(shù),判定所述映射片段是否滿足動(dòng)態(tài)大小反向映射更新標(biāo)準(zhǔn)。例如,所述動(dòng)態(tài)大小反向映射更新標(biāo)準(zhǔn)可以預(yù)先定義為比較使用計(jì)數(shù)和閾值。該過程在方法700的步驟710中進(jìn)行了描述。例如,如果映射片段的使用計(jì)數(shù)遞增為36且預(yù)定閾值為30,則垃圾收集模塊210確定該映射片段滿足動(dòng)態(tài)大小反向映射更新標(biāo)準(zhǔn)。在另一個(gè)實(shí)施例中,如果映射片段的使用計(jì)數(shù)為26且預(yù)定閾值為30,則垃圾收集模塊210確定該映射片段不滿足動(dòng)態(tài)大小反向映射更新標(biāo)準(zhǔn)。如在圖7中所描繪的,響應(yīng)于映射片段不滿足動(dòng)態(tài)大小反向映射更新標(biāo)準(zhǔn)的判定,方法700可以結(jié)束。
然后,方法700則可以通過以下方式繼續(xù):響應(yīng)于確定映射片段滿足動(dòng)態(tài)大小反向映射更新標(biāo)準(zhǔn),執(zhí)行712對(duì)映射片段的動(dòng)態(tài)大小反向映射更新過程。在一些實(shí)施例中,垃圾收集模塊210可以執(zhí)行動(dòng)態(tài)大小反向映射更新過程,即動(dòng)態(tài)大小反向映射208的垃圾收集。步驟712中執(zhí)行的操作可以由存儲(chǔ)控制器204與系統(tǒng)100的一個(gè)或多個(gè)其他部件協(xié)作執(zhí)行。
然后,方法700可以通過以下方式繼續(xù):更新714片段報(bào)頭中的映射片段的信息。在一些實(shí)施例中,垃圾收集模塊210可以更新片段報(bào)頭中的映射片段的信息。在展示的實(shí)施例中,在映射片段的垃圾收集過程后,重置映射片段的使用計(jì)數(shù)。所述映射片段信息可以存儲(chǔ)在映射片段報(bào)頭中,即如在圖3中所描繪的l1節(jié)點(diǎn)304。在更新所述映射片段信息后,方法700可以結(jié)束。
圖8是根據(jù)本文中所描述技術(shù)的實(shí)施用于塊復(fù)制過程的存儲(chǔ)設(shè)備110動(dòng)態(tài)大小反向映射208的示例方法800的流程圖。方法800可以通過以下方式來開始:接收802將多個(gè)數(shù)據(jù)塊從第一邏輯地址范圍復(fù)制到第二邏輯地址范圍的請(qǐng)求。在一個(gè)實(shí)施例中,數(shù)據(jù)接收模塊202接收將多個(gè)數(shù)據(jù)塊從第一邏輯地址范圍復(fù)制到第二邏輯地址范圍的請(qǐng)求。所述請(qǐng)求可以包括但不限于所述第一邏輯地址范圍的信息、所述第二邏輯地址范圍的信息和數(shù)據(jù)塊的信息。
然后,方法800可以通過以下方式繼續(xù):檢索804動(dòng)態(tài)轉(zhuǎn)換表206。在一些實(shí)施例中,存儲(chǔ)控制器204可以檢索動(dòng)態(tài)轉(zhuǎn)換表206。
然后,方法800可以通過以下方式前進(jìn):基于所述第一邏輯地址范圍和所述轉(zhuǎn)換表,確定806所述數(shù)據(jù)塊的物理地址。在一些實(shí)施例中,存儲(chǔ)控制器204可以基于所述第一邏輯地址范圍和動(dòng)態(tài)轉(zhuǎn)換表206,確定所述數(shù)據(jù)塊的物理地址。
然后,方法800可以通過以下方式繼續(xù):更新808動(dòng)態(tài)轉(zhuǎn)換表206以包括第二邏輯地址范圍到物理地址的條目。在一些實(shí)施例中,存儲(chǔ)控制器204可以更新動(dòng)態(tài)轉(zhuǎn)換表206以包括第二邏輯地址范圍到物理地址的條目。通過步驟808中執(zhí)行的操作,第二邏輯地址范圍指向存儲(chǔ)多個(gè)數(shù)據(jù)塊的物理地址。
然后,方法800可以通過以下方式繼續(xù):檢索810動(dòng)態(tài)大小反向映射208。
方法800可以通過以下方式繼續(xù):確定812所述數(shù)據(jù)塊的大小。在一些實(shí)施例中,存儲(chǔ)控制器204可以基于所述將多個(gè)數(shù)據(jù)塊從第一邏輯地址范圍復(fù)制到第二邏輯地址范圍的請(qǐng)求,確定所述數(shù)據(jù)塊的大小。所述請(qǐng)求可以包括所述數(shù)據(jù)塊的信息。
然后,方法800可以通過以下方式前進(jìn):基于數(shù)據(jù)塊的大小和動(dòng)態(tài)大小反向映射208,確定814所述數(shù)據(jù)塊占用的引用數(shù)量。如以上參照?qǐng)D4所討論的,可以基于數(shù)據(jù)塊的大小和動(dòng)態(tài)大小反向映射208確定引用數(shù)量。緩沖條目3105復(fù)制至緩沖條目3108,并且引用數(shù)量為“1”。
方法800可以通過以下方式前進(jìn):基于動(dòng)態(tài)大小反向映射208確定816正向指針,所述正向指針指示所述物理塊指向的第二邏輯地址范圍。如在圖4中所描繪的,當(dāng)將數(shù)據(jù)塊從第一邏輯地址范圍(例如,緩沖條目3105中所示的邏輯塊號(hào)5)復(fù)制至第二邏輯地址范圍(例如,緩沖條目3108中所示的邏輯塊號(hào)8)時(shí),確定所述正向指針(fp)為8。
方法800可以通過以下方式前進(jìn):使用所述正向指針和所述引用數(shù)量來更新818動(dòng)態(tài)大小反向映射208中的數(shù)據(jù)塊的映射。如在圖4中所描繪的,可以更新緩沖條目3105以包括<fp:nr>信息,其中,“fp”代表正向指針,“nr”代表引用數(shù)量。在更新動(dòng)態(tài)大小反向映射208的數(shù)據(jù)塊映射后,方法800可以結(jié)束。
以下描述了用于實(shí)施存儲(chǔ)設(shè)備的動(dòng)態(tài)大小反向映射的系統(tǒng)和方法。在以上描述中,出于解釋的目的,闡述了許多具體的細(xì)節(jié)。然而,可能顯而易見的是,可以在沒有任何這些具體細(xì)節(jié)給定子集的情況下實(shí)踐所公開的技術(shù)。在其他實(shí)例中,以框圖的形式示出了結(jié)構(gòu)和設(shè)備。例如,參考用戶界面和特定硬件,以上在一些實(shí)現(xiàn)方式中描述了所公開的技術(shù)。而且,以上所公開的技術(shù)主要針對(duì)在線服務(wù);但是,所公開的技術(shù)適用于其他數(shù)據(jù)來源和其他數(shù)據(jù)類型(例如,收集如圖像、音頻、網(wǎng)頁(yè)等其他資源)。
本說明書中對(duì)“一個(gè)實(shí)施例”、“一些實(shí)施例”或“實(shí)施例”的引用意味著結(jié)合該實(shí)施例所描述的特定特征、結(jié)構(gòu)、或特性包括在所公開的技術(shù)的至少一個(gè)實(shí)施例中。短語(yǔ)“在一個(gè)實(shí)施例中”在本說明書中各地方的出現(xiàn)不一定全都引用相同的實(shí)施例。
已經(jīng)在對(duì)計(jì)算機(jī)存儲(chǔ)器內(nèi)數(shù)據(jù)位的操作的處理和符號(hào)表示方面呈現(xiàn)了以上詳細(xì)描述的某些部分。通常,過程被認(rèn)為是導(dǎo)致結(jié)果的自相一致的一序列步驟。這些步驟可以涉及物理量的物理操縱。這些量采用能夠被存儲(chǔ)、傳遞、組合、比較、以及以另外方式操縱的電或磁信號(hào)的形式。這些信號(hào)可以稱為呈比特、值、元素、符號(hào)、字符、術(shù)語(yǔ)、數(shù)字等形式。
這些和類似的術(shù)語(yǔ)與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián)并且可以被視為應(yīng)用于這些量的標(biāo)記。如從現(xiàn)有討論中明顯看到,除非另外特別聲明,否則應(yīng)認(rèn)識(shí)到,貫穿本說明書,使用如“處理”或“運(yùn)算”或“計(jì)算”或“確定”或“顯示”等術(shù)語(yǔ)的討論可以指計(jì)算機(jī)系統(tǒng)或類似電子計(jì)算設(shè)備的動(dòng)作和過程,所述計(jì)算機(jī)系統(tǒng)或類似電子計(jì)算設(shè)備對(duì)表示為計(jì)算機(jī)系統(tǒng)的寄存器和存儲(chǔ)器的物理(電子)量的數(shù)據(jù)進(jìn)行操縱并且將其轉(zhuǎn)換成類似地表示為計(jì)算機(jī)系統(tǒng)存儲(chǔ)器或寄存器或其他此類信息存儲(chǔ)、傳輸或顯示設(shè)備中的物理量的其他數(shù)據(jù)。
所公開的技術(shù)還可涉及一種用于執(zhí)行本文中的操作的裝置。該裝置可以是為了所需目的而特別構(gòu)造的,或者它可以包括通過存儲(chǔ)在計(jì)算機(jī)中的由計(jì)算機(jī)程序選擇性地激活或重新配置的通用計(jì)算機(jī)。
所公開的技術(shù)可以采用完全硬件實(shí)現(xiàn)方式、完全軟件實(shí)現(xiàn)方式或包含硬件和軟件元件兩者的實(shí)現(xiàn)方式的形式。在一些實(shí)現(xiàn)方式中,通過軟件實(shí)施技術(shù),所述軟件包括但不限于固件、駐留軟件、微代碼等。
進(jìn)一步地,所公開的技術(shù)可以采用計(jì)算機(jī)程序產(chǎn)品的形式,可以從提供由計(jì)算機(jī)或任何指令執(zhí)行系統(tǒng)使用或者與其結(jié)合使用的程序代碼的非瞬態(tài)計(jì)算機(jī)可使用或計(jì)算機(jī)可讀介質(zhì)訪問所述計(jì)算機(jī)程序產(chǎn)品。為了本申請(qǐng)的目的,計(jì)算機(jī)可使用或者計(jì)算機(jī)可讀介質(zhì)可以是任何包含、存儲(chǔ)、傳達(dá)、傳播或傳輸由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或者與其結(jié)合使用的程序的裝置。
適合于存儲(chǔ)和/或執(zhí)行程序代碼的計(jì)算機(jī)系統(tǒng)或數(shù)據(jù)處理系統(tǒng)將包括至少一個(gè)處理器(例如,硬件處理器),所述處理器經(jīng)由系統(tǒng)總線直接或間接耦合至存儲(chǔ)器元件。所述存儲(chǔ)器元件可以包括在實(shí)際執(zhí)行程序代碼時(shí)采用的本地存儲(chǔ)器、大容量存儲(chǔ)器和高速緩沖存儲(chǔ)器,所述高速緩沖存儲(chǔ)器提供臨時(shí)存儲(chǔ)至少一些程序代碼,以便減少執(zhí)行時(shí)必須在大容量存儲(chǔ)器中檢索代碼的次數(shù)。
輸入/輸出或i/o設(shè)備(包括但不限于鍵盤、顯示器、指點(diǎn)設(shè)備等)可以直接或通過介于其間的i/o控制器耦合至系統(tǒng)。
網(wǎng)絡(luò)適配器也可以耦合至系統(tǒng),以使數(shù)據(jù)處理系統(tǒng)通過介于其間的私有或公共網(wǎng)絡(luò)耦合至其他數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)設(shè)備。調(diào)制解調(diào)器、纜線調(diào)制解調(diào)器和以太網(wǎng)卡僅是少數(shù)當(dāng)前可用的網(wǎng)絡(luò)適配器類型。
最后,本文呈現(xiàn)的處理器和顯示器可能不是固有地與任何特定計(jì)算機(jī)或其他裝置相關(guān)。各種通用系統(tǒng)可以與根據(jù)本文中的教導(dǎo)的程序一起使用,或者可以證明構(gòu)建更加專用的裝置來執(zhí)行所需的方法步驟是方便的。多種這些系統(tǒng)所需的結(jié)構(gòu)將出現(xiàn)在以下描述中。此外,沒有引用任何具體的編程語(yǔ)言來描述所公開的技術(shù)。應(yīng)認(rèn)識(shí)到,各種編程語(yǔ)言可以用于實(shí)現(xiàn)如在本文中所描述的技術(shù)的教導(dǎo)。
出于說明和描述的目的,提供了先前的本技術(shù)實(shí)施方式描述。未旨在詳盡地展示或?qū)⒈炯夹g(shù)限制在所公開的確切形式。鑒于以上教導(dǎo),可以做出許多修改和變更。本技術(shù)的范圍旨在不受此詳細(xì)說明的限制??梢砸云渌唧w形式實(shí)施技術(shù)而不偏離其精神或必要特征。同樣,模塊、例程、特征、屬性、方法和其他方面的特定命名和分割不是必需遵守的或者不是重要的,并且實(shí)施本技術(shù)或其特征的機(jī)制可以有不同的名稱、分割或格式。進(jìn)一步地,本技術(shù)的模塊、例程、特征、屬性、方法和其他方面可以被實(shí)現(xiàn)為軟件、硬件、固件、或任何三者的組合。另外,在部件(其示例是模塊)被實(shí)現(xiàn)為軟件的情況下,所述部件可以被實(shí)現(xiàn)為獨(dú)立的程序、更大程序的一部分、多個(gè)單獨(dú)的程序、靜態(tài)或動(dòng)態(tài)鏈接庫(kù)、內(nèi)核可加載模塊、設(shè)備驅(qū)動(dòng)程序、和/或計(jì)算機(jī)編程現(xiàn)在已知或?qū)碇獣缘拿恳粋€(gè)和任何其他方式。另外,本技術(shù)絕不限于使用任何具體編程語(yǔ)言或者用于任何具體操作系統(tǒng)或環(huán)境的實(shí)現(xiàn)。因此,本技術(shù)的公開旨在說明而非旨在限制。