專利名稱:用于非易失性存儲(chǔ)器存儲(chǔ)系統(tǒng)的雙范圍目錄的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及非易失性存儲(chǔ)器存儲(chǔ)系統(tǒng)。更具體地說,本發(fā)明涉及針對非易失性 存儲(chǔ)器存儲(chǔ)系統(tǒng)的使用而維護(hù)的目錄結(jié)構(gòu)。
背景技術(shù):
非易失性存儲(chǔ)器(NVM)存儲(chǔ)設(shè)備在計(jì)算機(jī)工業(yè)和電子工業(yè)中非常普及。計(jì)算 機(jī)具有長期使用的NVM存儲(chǔ)設(shè)備,以用于基本輸入/輸出系統(tǒng)(BIOS)代碼存儲(chǔ)設(shè)備和 其它重要的引導(dǎo)例程。但是,近來,NVM存儲(chǔ)設(shè)備的使用模型已經(jīng)從數(shù)碼相機(jī)圖像存儲(chǔ) 設(shè)備極大地?cái)U(kuò)展到了歌曲的數(shù)字音樂播放器存儲(chǔ)設(shè)備。NVM設(shè)備已經(jīng)在大小上顯著地減 小并且在存儲(chǔ)容量上顯著地增加?,F(xiàn)在,計(jì)算機(jī)工業(yè)正開始使用NVM設(shè)備為大容量存 儲(chǔ)設(shè)備建立固態(tài)驅(qū)動(dòng)器(SSD)。未來,SSD能夠部分地由于優(yōu)秀的性能、更小的外形和 更低的電能需求而顯著地取代傳統(tǒng)的硬盤驅(qū)動(dòng)器。
通過示例的方式來說明本發(fā)明,并且本發(fā)明不受附圖的限制,其中,相似的標(biāo) 記指示相似的元件,并且其中圖1說明了包括非易失性存儲(chǔ)器存儲(chǔ)系統(tǒng)的計(jì)算機(jī)系統(tǒng)的實(shí)施例。圖2說明了 NVM子系統(tǒng)的實(shí)施例的詳細(xì)視圖。圖3說明了通過寫入來添加新的存儲(chǔ)元素的單范圍目錄結(jié)構(gòu)的實(shí)施例。圖4-8說明了通過寫入來添加新的存儲(chǔ)元素的雙范圍目錄結(jié)構(gòu)的若干實(shí)施例。圖9是使用雙范圍目錄結(jié)構(gòu)將數(shù)據(jù)寫入NVM存儲(chǔ)陣列中的過程的實(shí)施例的流程 圖。圖10是使用雙范圍目錄結(jié)構(gòu)從NVM存儲(chǔ)陣列中讀取數(shù)據(jù)的過程的實(shí)施例的流 程圖。
具體實(shí)施例方式描述了用于維護(hù)針對非易失性存儲(chǔ)器的雙范圍目錄結(jié)構(gòu)的設(shè)備、系統(tǒng)和方法的 實(shí)施例。計(jì)算機(jī)系統(tǒng)可以包括非易失性存儲(chǔ)器(NVM)存儲(chǔ)子系統(tǒng)。在許多實(shí)施例中, NVM存儲(chǔ)子系統(tǒng)可以是固態(tài)驅(qū)動(dòng)器(SSD)。在其它實(shí)施例中,NVM存儲(chǔ)子系統(tǒng)可以用 于不同用途的(而不是通用的)存儲(chǔ)驅(qū)動(dòng)器。NVM存儲(chǔ)子系統(tǒng)包括一個(gè)或多個(gè)NVM設(shè) 備。例如,可以存在數(shù)個(gè)NAND閃速存儲(chǔ)器設(shè)備,其在NVM存儲(chǔ)子系統(tǒng)內(nèi)創(chuàng)建存儲(chǔ)陣 列。NVM存儲(chǔ)子系統(tǒng)(例如,SSD)存儲(chǔ)了大量的可以是各種大小的存儲(chǔ)元素。當(dāng)寫 請求到達(dá)NVM子系統(tǒng)時(shí),要被寫入到NVM設(shè)備的數(shù)據(jù)隨后被寫入到在子系統(tǒng)內(nèi)的NVM 存儲(chǔ)陣列的塊中。為了維護(hù)針對這些塊所處位置的簡單的訪問結(jié)構(gòu),通常在非易失性存儲(chǔ)器(例如系統(tǒng)存儲(chǔ)器)中維護(hù)目錄結(jié)構(gòu)。目錄結(jié)構(gòu)包括與在NVM存儲(chǔ)陣列中存儲(chǔ)的每一個(gè)元 素相對應(yīng)的條目。在許多實(shí)施例中,當(dāng)寫請求到達(dá)時(shí),與NVM子系統(tǒng)相關(guān)聯(lián)的邏輯至少分析邏輯 塊地址(LBA)開始地址和操作范圍。在存儲(chǔ)元素已經(jīng)被存儲(chǔ)在新寫入的位置的許多情況 下,較舊的元素被部分重寫。在一些情況下,新元素有效地將舊元素分成兩部分(即, 在新元素的開始之前的前面部分,以及在新元素的結(jié)束之后的后面部分)。使用當(dāng)前的目 錄結(jié)構(gòu),這使得維護(hù)目錄的邏輯除了為新元素添加的條目之外還添加了額外的條目,因 為較舊的元素現(xiàn)在是兩個(gè)元素。這是必須的,因?yàn)楫?dāng)前的目錄結(jié)構(gòu)針對所有條目維護(hù)單 個(gè)線性范圍。在許多實(shí)施例中,提出了雙范圍目錄結(jié)構(gòu),其允許將對應(yīng)于新元素的條目寫入 到目錄結(jié)構(gòu)中的前臺(tái)空間,同時(shí)較舊的較大元素能夠在目錄結(jié)構(gòu)中的后臺(tái)空間中維護(hù)單 個(gè)條目。這實(shí)質(zhì)上允許當(dāng)新的存儲(chǔ)元素被不斷地引入時(shí),在目錄結(jié)構(gòu)中創(chuàng)建較少的總的 條目。在以下說明和權(quán)利要求中提及的、所公開的技術(shù)中的“一個(gè)實(shí)施例”或“實(shí)施 例”意味著結(jié)合該實(shí)施例而描述的特定特征、結(jié)構(gòu)或特性被包括在所公開的技術(shù)的至少 一個(gè)實(shí)施例中。因此,整個(gè)說明書的各個(gè)地方出現(xiàn)的短語“在一個(gè)實(shí)施例中”的出現(xiàn)并 非必然都是指同一實(shí)施例。在以下說明和權(quán)利要求中,可以使用術(shù)語“包括”和“包含”以及它們的派 生詞,并且旨在被視為彼此的同義詞。此外,在以下說明和權(quán)利要求中,可以使用術(shù)語
“耦合”和“連接”以及它們的派生詞。應(yīng)當(dāng)理解,這些術(shù)語不意在作為彼此的同義 詞。而是,在特定的實(shí)施例中,“連接”可以用于指示兩個(gè)或更多個(gè)元件彼此直接物理 或電接觸?!榜詈稀笨梢砸馕吨鴥蓚€(gè)或更多個(gè)元件直接物理或電接觸。但是,“耦合” 還可以意味著兩個(gè)或更多個(gè)元件彼此沒有直接接觸,但仍然彼此合作、交互或通信。圖1說明了包括非易失性存儲(chǔ)器存儲(chǔ)系統(tǒng)的計(jì)算機(jī)系統(tǒng)的實(shí)施例。計(jì)算機(jī)系統(tǒng) 包括一個(gè)或多個(gè)中央處理單元(CPU),例如CPU 100。在許多實(shí)施例中,CPU 100是 Intel 公司的CPU。在其它實(shí)施例中,CPU 100是其它品牌的CPU。CPUioo包括一 個(gè)或多個(gè)處理器核心,例如核心102、104、106和108。每一個(gè)核心包括一個(gè)或多個(gè)執(zhí)行 單元、回退單元(retirementunit)、多個(gè)存儲(chǔ)寄存器,可能的一個(gè)或多個(gè)高速緩存存儲(chǔ)器 以及通常位于CPU核心內(nèi)的其它電路。CPU 100還可以包括系統(tǒng)存儲(chǔ)器控制器110,以 控制與系統(tǒng)存儲(chǔ)器112的通信。系統(tǒng)存儲(chǔ)器互連114將系統(tǒng)存儲(chǔ)器112與CPU100通信 地耦合。互連可以包括線路以在CPU 100和系統(tǒng)存儲(chǔ)器112之間傳輸?shù)刂?、?shù)據(jù)、控制 和時(shí)鐘信息。雖然系統(tǒng)存儲(chǔ)器控制器110位于圖1中的CPU 100內(nèi),但是在沒有被示出 的其它實(shí)施例中,系統(tǒng)存儲(chǔ)器控制器110可以位于在計(jì)算機(jī)系統(tǒng)中與CPU 100分離的、獨(dú) 立的集成電路中。 在許多實(shí)施例中,系統(tǒng)存儲(chǔ)器112可以是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。例 如,系統(tǒng)存儲(chǔ)器112可以是雙倍數(shù)據(jù)速率(DDR)同步DRAM的形式。在其它實(shí)施例中, 系統(tǒng)存儲(chǔ)器可以是另一種形式的存儲(chǔ)器,例如非易失性存儲(chǔ)器。系統(tǒng)存儲(chǔ)器110可以存 儲(chǔ)由CPU 100執(zhí)行的指令和數(shù)據(jù)。例如,系統(tǒng)存儲(chǔ)器110可以在計(jì)算機(jī)系統(tǒng)的操作期間 存儲(chǔ)操作系統(tǒng)(OS) 116。
在許多實(shí)施例中,CPU 100通信地耦合到1/0(輸入/輸出)組件118。I/O組 件118可以包括一個(gè)或多個(gè)I/O控制器(沒有示出),其允許計(jì)算機(jī)系統(tǒng)與一個(gè)或多個(gè)I/ O設(shè)備(例如,設(shè)備120和122)進(jìn)行通信。例如,I/O組件118可以包括通用串行總線 (USB)控制器,并且I/O設(shè)備120和122可以是USB設(shè)備。在許多實(shí)施例中,I/O組件118還耦合到非易失性存儲(chǔ)器(NVM)子系統(tǒng)124。 NVM子系統(tǒng)124包括至少一個(gè)或多個(gè)非易失性存儲(chǔ)器設(shè)備。在不同的實(shí)施例中,NVM 設(shè)備可以包括某些類型的閃速存儲(chǔ)器,例如基于NAND和NOR的設(shè)備、相變存儲(chǔ)器 (PCM),電可擦除可編程只讀存儲(chǔ)器(EEPROM)、或一個(gè)或多個(gè)其它類型的NVM。 NVM設(shè)備可以存儲(chǔ)不取決于被提供到NVM子系統(tǒng)的電能的數(shù)據(jù)。因此,在計(jì)算機(jī)系 統(tǒng)的復(fù)位序列、斷電和上電序列、以及可以將電能循環(huán)到計(jì)算機(jī)系統(tǒng)的任何其它序列期 間,NVM子系統(tǒng)可以繼續(xù)將數(shù)據(jù)存儲(chǔ)在一個(gè)或多個(gè)設(shè)備中。這與系統(tǒng)存儲(chǔ)器112相反, 其需要電能來存儲(chǔ)數(shù)據(jù)。如果在復(fù)位或電能序列期間沒有在其它地方保存數(shù)據(jù),則在系 統(tǒng)存儲(chǔ)器112中存儲(chǔ)的任何數(shù)據(jù)在該復(fù)位或電能序列期間將丟失。NVM子系統(tǒng)124通過互連126通信地耦合到計(jì)算機(jī)系統(tǒng)?;ミB126包括用于發(fā) 送數(shù)據(jù)、地址、控制和其它信號(hào)的一個(gè)或多個(gè)線路。在一些實(shí)施例中,該線路可以包括 銅線。在其它實(shí)施例中,該線路可以包括其它金屬或合金、光學(xué)線路,或用于發(fā)送信息 的另一種介質(zhì)。在許多實(shí)施例中,互連126將NVM子系統(tǒng)124與I/O組件(在圖1中的部件 118)通信地耦合。但是,在其它實(shí)施例中,互連126可以將NVM子系統(tǒng)124與計(jì)算機(jī) 系統(tǒng)內(nèi)的另一個(gè)集成電路部件通信地耦合。 圖2說明了 NVM子系統(tǒng)的實(shí)施例的詳細(xì)的視圖。NVM子系統(tǒng)包括NVM存儲(chǔ) 陣列200。在不同的實(shí)施例中,存儲(chǔ)設(shè)備可以是閃速存儲(chǔ)器或另一種形式的非易失性的存 儲(chǔ)器設(shè)備。例如,存儲(chǔ)設(shè)備可以包括一個(gè)或多個(gè)NAND設(shè)備。在其它實(shí)施例中,非易 失性存儲(chǔ)陣列200可以包括NOR設(shè)備、PCM、EEPROM或另一種類型的NVM。在許 多實(shí)施例中,非易失性存儲(chǔ)陣列包括一個(gè)或多個(gè)NVM設(shè)備,并且將所述設(shè)備中的每一個(gè) 細(xì)分為多個(gè)扇區(qū)。NVM子系統(tǒng)124包括主機(jī)接口 202。主機(jī)接口 202是在NVM子系統(tǒng)124和計(jì) 算機(jī)系統(tǒng)的其余部分之間的通信接口。例如,在主機(jī)CPU(例如,圖1中的CPU 100)和 NVM子系統(tǒng)124之間的通信可以通過主機(jī)接口 202發(fā)生。可以將來自CPU 100的讀請求 和寫請求通過主機(jī)接口 202路由到NVM子系統(tǒng)124中。在許多實(shí)施例中,主機(jī)接口 202 包括一個(gè)或多個(gè)緩沖器,其可以存儲(chǔ)輸入到NVM子系統(tǒng)124的數(shù)個(gè)讀請求和寫請求。緩 沖器可以是隊(duì)列的形式,例如先入先出(FIFO)隊(duì)列,其可以存儲(chǔ)輸入到NVM子系統(tǒng)124 的請求。主機(jī)接口 202可以接收主機(jī)請求,例如讀請求和寫請求,然后將它們轉(zhuǎn)發(fā)到 NVM控制器204。在NVM控制器204內(nèi)的控制邏輯可以處理這些請求,并寫入非易失 性存儲(chǔ)陣列200或從其讀取。在許多實(shí)施例中,NVM子系統(tǒng)124將數(shù)據(jù)存儲(chǔ)在邏輯塊中。對于每一個(gè)寫入, 將數(shù)據(jù)寫入到NVM存儲(chǔ)陣列200的邏輯塊地址(LBA)開始地址和LBA結(jié)束地址之間。 在NVM存儲(chǔ)陣列200中存儲(chǔ)的每條數(shù)據(jù)可以被稱為存儲(chǔ)元素。因此,在許多實(shí)施例中,存儲(chǔ)元素具有指定的LBA開始地址,并且具有LBA結(jié)束地址或大小。該信息允許通過 使用LBA開始地址和LBA結(jié)束地址來簡單地讀取存儲(chǔ)元素,以捕獲整個(gè)數(shù)據(jù)量。在許多實(shí)施例中,使用目錄結(jié)構(gòu)來跟蹤每一個(gè)存儲(chǔ)元素。目錄結(jié)構(gòu)可以被存儲(chǔ) 在系統(tǒng)存儲(chǔ)器(例如,圖1中的系統(tǒng)存儲(chǔ)器112中的目錄128)或計(jì)算機(jī)系統(tǒng)中其它地方 的存儲(chǔ)器中。例如,在另一個(gè)實(shí)施例中,目錄結(jié)構(gòu)可以位于在NVM子系統(tǒng)124內(nèi)的存 儲(chǔ)器存儲(chǔ)設(shè)備中。一般而言,用于存儲(chǔ)目錄結(jié)構(gòu)的存儲(chǔ)器將位于易失性存儲(chǔ)器中,盡管 這并不是必須的。 目錄結(jié)構(gòu)包括用于每個(gè)存儲(chǔ)元素的條目,以便為了將來寫入和讀取NVM存儲(chǔ)陣 列200的目的來跟蹤元素。在目錄結(jié)構(gòu)中存儲(chǔ)的每個(gè)條目的組成在不同的實(shí)施例中可以 改變。例如,每個(gè)元素的安全訪問寫入可能需要額外的信息被存儲(chǔ)在條目內(nèi)。但是一 般而言,每個(gè)條目至少具有LBA的開始地址,以及LBA的結(jié)束地址或者在邏輯空間中條 目的跨度。在許多實(shí)施例中,條目還可以包括具體的NVM存儲(chǔ)陣列地址單元。例如, 每個(gè)條目的大小可以是8個(gè)字節(jié),其中,2個(gè)字節(jié)可以是LBA開始地址,2個(gè)字節(jié)可以是 LBA結(jié)束地址,并且4個(gè)字節(jié)可以是NVM存儲(chǔ)陣列地址。在其它實(shí)施例中,條目可以 包括不同的信息或者可能的額外信息。取決于實(shí)現(xiàn)方式,LBA可以由不同數(shù)量的比特來 表示,所述比特?cái)?shù)量的不同是由于存儲(chǔ)單元的大小不同而引起的(例如,如果存儲(chǔ)設(shè)備 的最小單元是1KB,則不需要存儲(chǔ)表示小于1KB粒度的單元的地址比特)。在許多實(shí)施例中,目錄結(jié)構(gòu)允許在一定程度上間接讀寫數(shù)據(jù)。例如,雖然目錄 結(jié)構(gòu)涉及線性的、連續(xù)的存儲(chǔ)元素(其每一個(gè)可以是任意給定大小),但是NVM控制器 可以將線性地址翻譯為物理地址,其可能不包括線性的數(shù)據(jù)塊。事實(shí)上,在物理上,可 以將數(shù)據(jù)在NVM存儲(chǔ)陣列的范圍內(nèi)隨機(jī)地展開,以允許調(diào)整NVM設(shè)備的磨損。因?yàn)?NVM設(shè)備通常具有有限的壽命,并且在很多次寫入之后變得不可靠,所以將寫入均勻地 展開到所有設(shè)備之間是重要的,以便延長陣列的整體壽命??梢砸远喾N方式來改變條目。例如,如果由較新的存儲(chǔ)元素完全重寫了較舊的 存儲(chǔ)元素,則與較舊的存儲(chǔ)元素相對應(yīng)(即,相關(guān)聯(lián))的條目可以被擦除(即,釋放), 以釋放存儲(chǔ)器的存儲(chǔ)空間。在單范圍目錄結(jié)構(gòu)中,存在包括整個(gè)存儲(chǔ)陣列的、與所有LBA相關(guān)聯(lián)的線性空 間。對于陣列中的每一個(gè)存儲(chǔ)元素,如果由新的存儲(chǔ)元素部分重寫了(而不是完全重寫 了)存儲(chǔ)元素,則必須在目錄結(jié)構(gòu)中為新的存儲(chǔ)元素創(chuàng)建新的條目。除了新的條目之 夕卜,與被部分重寫的較舊的存儲(chǔ)元素相對應(yīng)的條目將需要被修改。在某些情況下,如果 被部分重寫的較舊的存儲(chǔ)元素被切分為分離的兩塊,并且新的元素在它們之間,則需要 創(chuàng)建第二個(gè)額外的新條目。這使得在單范圍目錄結(jié)構(gòu)中產(chǎn)生了額外的空間需求,因?yàn)椴?是創(chuàng)建了一個(gè)額外的條目,而是現(xiàn)在存在第二個(gè)額外的條目,需要用其來準(zhǔn)確地表示較 舊的存儲(chǔ)元素的剩余塊。圖3說明了通過寫入來添加新的存儲(chǔ)元素的單范圍目錄結(jié)構(gòu)的實(shí)施例。LBA空 間示出了存儲(chǔ)在NVM存儲(chǔ)陣列中的三個(gè)獨(dú)立的存儲(chǔ)元素存儲(chǔ)元素A、B和C。這些 存儲(chǔ)元素對應(yīng)于位于目錄結(jié)構(gòu)中的三個(gè)條目條目1、2和3。然后,新的寫入發(fā)生,其將元素D添加到LBA空間。包括用于描述元素D的 信息的條目4需要被添加到目錄結(jié)構(gòu)。在該特定的情況下,元素D完全地包括在元素B的單元內(nèi)。換句話說,在線性LBA空間中,元素B在元素D的開始之前開始,并且元素B在元素D的結(jié)束之后結(jié)束。因此,為了在目錄結(jié)構(gòu)中準(zhǔn)確地表示元素D以及元素B的其余有效部分,第二 個(gè)新條目(條目5)被創(chuàng)建。結(jié)果顯示元素A和C以及它們對應(yīng)的條目1和3沒有改變。 現(xiàn)在,條目4表示新寫入的元素D,條目2表示在元素D的開始之前的、元素B的仍然 有效的部分,并且條目5表示在元素D的結(jié)束之后的、元素B的仍然有效的部分(現(xiàn)在 是元素E)。在這里示出了單范圍目錄結(jié)構(gòu)的不利方面,這是因?yàn)殡m然僅單個(gè)存儲(chǔ)元素被 添加到LBA空間,但是單范圍目錄結(jié)構(gòu)的局限需要將兩個(gè)條目添加到目錄結(jié)構(gòu)中。圖4-8說明了通過寫入來添加新的存儲(chǔ)元素的雙范圍目錄結(jié)構(gòu)的數(shù)個(gè)實(shí)施例。圖4說明了現(xiàn)在示出為使用目錄結(jié)構(gòu)的雙范圍性質(zhì)的、與在圖3中所示的相同 的示例存儲(chǔ)元素和大小。目錄結(jié)構(gòu)的雙范圍性質(zhì)允許該結(jié)構(gòu)一起操作前臺(tái)空間和后臺(tái)空 間。這兩個(gè)獨(dú)立的空間僅與目錄結(jié)構(gòu)相關(guān)。實(shí)際的NVM存儲(chǔ)陣列仍然可以被看作是 LBA的單個(gè)線性陣列。在每個(gè)圖的長度方向上通過雙箭頭的方式來示出線性度(即,在 X軸線上的每一個(gè)點(diǎn)可以被看作是單個(gè)LBA)。為了便于解釋,NVM存儲(chǔ)陣列包括以如下方式看到的數(shù)據(jù)在圖形上從前臺(tái) 上的點(diǎn)向下看線性陣列、并然后通過前臺(tái)到達(dá)后臺(tái)所看到的數(shù)據(jù)。換句話說,在給定的 LBA處,如果在圖4的前臺(tái)中沒有示出存儲(chǔ)元素,則在該LBA處存儲(chǔ)的數(shù)據(jù)是在后臺(tái)中 示出的存儲(chǔ)元素中的數(shù)據(jù)。最后,在給定的LBA處,如果在同一 LBA處存在在前臺(tái)中 示出的存儲(chǔ)元素和在后臺(tái)中示出的存儲(chǔ)元素,則在前臺(tái)中示出的存儲(chǔ)元素優(yōu)先(即,在 該LBA處,來自后臺(tái)的存儲(chǔ)元素的數(shù)據(jù)被來自前臺(tái)的存儲(chǔ)元素的數(shù)據(jù)重寫)。返回圖4,LBA空間顯示在NVM存儲(chǔ)陣列中存儲(chǔ)的三個(gè)獨(dú)立的存儲(chǔ)元素存儲(chǔ) 元素A、B和C。這些存儲(chǔ)元素對應(yīng)于位于目錄結(jié)構(gòu)的后臺(tái)中的三個(gè)條目條目1、2和 3。然后,新的寫入發(fā)生,其將元素D添加到LBA空間。然后,包括用于描述元素 D的信息的條目4被添加到目錄結(jié)構(gòu)的前臺(tái)。在該特定的情況下,元素D完全地包括在 元素B的單元內(nèi)。換句話說,在線性LBA空間中,元素B在元素D的開始之前開始, 并且元素B在元素D的結(jié)束之后結(jié)束。在雙范圍目錄結(jié)構(gòu)實(shí)現(xiàn)中,元素D寫入可以發(fā)生,并且重寫在NVM存儲(chǔ)陣列中 的元素B的一部分,并且單個(gè)條目(條目4)將被添加到目錄結(jié)構(gòu)。因此,此時(shí),目錄結(jié) 構(gòu)仍然具有在所述目錄結(jié)構(gòu)中的三個(gè)原始的條目(條目1、2和3)以及新條目4。原始 條目中的每一個(gè)保持原樣并且不需要修改。這包括條目B,其保持條目B的初始的LBA 開始和結(jié)束地址。因此,在寫入之后,在目錄結(jié)構(gòu)中的前臺(tái)空間包括條目4,并且后臺(tái)空 間包括條目1、2和3。當(dāng)讀取發(fā)生在雙范圍的實(shí)施例中時(shí),讀取可以在給定的LBA處開始并跨越一個(gè) 或多個(gè)元素。每個(gè)元素由目錄結(jié)構(gòu)的前臺(tái)或后臺(tái)空間中的條目來表示。在目錄結(jié)構(gòu)的前 臺(tái)空間中的條目優(yōu)先于在后臺(tái)空間中的條目。因此,如果在給定LBA處在前臺(tái)和后臺(tái)空 間中都存在條目,則讀取將使用前臺(tái)條目信息來將數(shù)據(jù)取出??赡芪挥贜VM控制器204內(nèi)或者在計(jì)算機(jī)系統(tǒng)中的其它地方的邏輯使用目錄結(jié) 構(gòu)來瀏覽NVM存儲(chǔ)陣列,從而為了讀取數(shù)據(jù)而將其取出。例如,假設(shè)讀請求到達(dá)并且其想要讀取從LBA 2到LBA 7的數(shù)據(jù),在新的寫入已經(jīng)發(fā)生后,使用在圖4的底部的示例 LBA的線性的行。通過在目錄結(jié)構(gòu)中查找LBA 2并且確定在前臺(tái)空間中的該單元處是否 存在條目,邏輯開始操作。因?yàn)椴淮嬖谇芭_(tái)空間條目,然后邏輯檢查在后臺(tái)空間中的條 目并且發(fā)現(xiàn)存儲(chǔ)元素B(在目錄結(jié)構(gòu)中由條目2來表示)位于LBA2。然后,邏輯確定條 目2在LBA 2到LBA 4處有效,并且從這些LBA單元讀取數(shù)據(jù)。在LBA 4處,邏輯意 識(shí)到前臺(tái)條目存在(條目4),然后在LBA 4處讀取存儲(chǔ)元素D。然后,發(fā)現(xiàn)沒有前臺(tái)條 目位于LBA 5,邏輯返回到條目2并且讀取在LBA 5處開始的存儲(chǔ)元素B的其余部分。 條目2在LBA 6處結(jié)束,但是邏輯發(fā)現(xiàn)另一個(gè)后臺(tái)空間條目存在在LBA 6(條目3)。邏 輯從與條目3相對應(yīng)的存儲(chǔ)元素C讀取從LBA 6到LBA 7的數(shù)據(jù),并且結(jié)束所述讀取。在許多實(shí)施例中,當(dāng)讀取從開始的LBA進(jìn)行到結(jié)束的LBA的過程中,在NVM 控制器204內(nèi)或其它地方的邏輯在每一個(gè)LBA處保持跟蹤在前臺(tái)和后臺(tái)中的元素。在一 些實(shí)施例中,邏輯可以是IF-THEN例程的形式,其中,對于每個(gè)LBA:IF條目位于前臺(tái)中,THEN從前臺(tái)條目的元素中讀?。籈LSE從后臺(tái)的條目的元素中讀??;在一些實(shí)施例中,讀取處理可以使用遞歸邏輯,從而在完成由前臺(tái)空間條目表 示的任何元素的讀取之后,數(shù)次返回到后臺(tái)空間條目。對于使用雙范圍目錄結(jié)構(gòu)的讀取,許多其它算法也是可用的。圖5說明了通過寫入來添加新的存儲(chǔ)元素的雙范圍目錄結(jié)構(gòu)的另一個(gè)實(shí)施例。在圖5中的寫入處理的開始處,存在由在目錄結(jié)構(gòu)的后臺(tái)空間中的條目表示 的、存儲(chǔ)在NVM存儲(chǔ)陣列中的三個(gè)獨(dú)立的存儲(chǔ)元素存儲(chǔ)元素A、B和C以及它們各自 的條目1、2和3。還存在由在目錄結(jié)構(gòu)的前臺(tái)空間中的條目表示的、存儲(chǔ)在NVM存儲(chǔ) 陣列中的一個(gè)存儲(chǔ)元素存儲(chǔ)元素D以及其條目4。然后,新的寫入發(fā)生,其將元素E添加到LBA空間。然后,包括用于描述元素 E的信息的條目5被添加到目錄結(jié)構(gòu)的前臺(tái)。在該特定的情況下,先前由前臺(tái)條目4表 示的元素D被元素E完全重寫。因此,在該情況下,存儲(chǔ)元素D和條目4不再存在,并 且被NVM存儲(chǔ)陣列中的元素E以及在目錄結(jié)構(gòu)的前臺(tái)空間中的條目5所取代。圖6說明了通過寫入來添加新的存儲(chǔ)元素的雙范圍目錄結(jié)構(gòu)的另一個(gè)實(shí)施例。在圖6中的寫入處理的開始處,存在由在目錄結(jié)構(gòu)的后臺(tái)空間中的條目表示 的、存儲(chǔ)在NVM存儲(chǔ)陣列中的三個(gè)獨(dú)立的存儲(chǔ)元素存儲(chǔ)元素A、B和C以及它們各自 的條目1、2和3。然后,新的寫入發(fā)生,其將元素D添加到LBA空間。然后,包括用于描述元素D的信息的條目4被添加到LBA空間,但是在不同實(shí)施例中,與元素D相對應(yīng)的條目可 以被添加到目錄結(jié)構(gòu)中的前臺(tái)或后臺(tái)空間中。對于該示例的特定情況,因?yàn)榫哂信c條目 2(其被部分重寫)不同的開始LBA的元素D具有同一結(jié)束地址。因此,元素B不必被 分割為新的較小的元素B和額外的元素E(例如,圖4中的情況)。這里,元素B的僅有 的其余有效部分是從條目2的原始的開始LBA到元素D的開始LBA(在條目4)。因?yàn)椴?需要第二條目,所以在目錄結(jié)構(gòu)中不需要如圖4所示的實(shí)施例中所需的額外的條目存儲(chǔ) 空間。因此,在一些實(shí)施例中,圖6中的條目4可以被添加到前臺(tái)空間(類似于圖4), 但在其它實(shí)施例中,圖6中的條目4可以被添加到后臺(tái)空間,如同其在單范圍目錄結(jié)構(gòu)中那樣。在一些實(shí)施例中,邏輯可以使用簡單的測試來確定是否將新的條目添加到目錄結(jié)構(gòu)的前臺(tái)空間或后臺(tái)空間,其中,如果所述條目是需要添加到整個(gè)目錄結(jié)構(gòu)中的唯一 條目(即,對于添加單個(gè)新的存儲(chǔ)元素,總共添加一個(gè)條目),則針對新的存儲(chǔ)元素添加 后臺(tái)空間條目。否則,如果通過添加后臺(tái)空間條目將需要第二個(gè)后臺(tái)空間條目(即,如 上所述的單范圍的缺陷對于添加單個(gè)新的存儲(chǔ)元素,總共添加兩個(gè)條目),則針對新 的存儲(chǔ)元素添加前臺(tái)空間條目。圖7說明了通過寫入來添加新的存儲(chǔ)元素的雙范圍目錄結(jié)構(gòu)的另一個(gè)實(shí)施例。在圖7中的寫入處理的開始處,存在由在目錄結(jié)構(gòu)的后臺(tái)空間中的條目表示 的、存儲(chǔ)在NVM存儲(chǔ)陣列中的三個(gè)獨(dú)立的存儲(chǔ)元素存儲(chǔ)元素A、B和C以及它們各自 的條目1、2和3。然后,新寫入發(fā)生,其將元素D添加到LBA空間。然后,包括用于描述元素D 的信息的條目4被添加到LBA空間,但是在不同實(shí)施例中,與元素D相對應(yīng)的條目可以 被添加到目錄結(jié)構(gòu)中的前臺(tái)或后臺(tái)空間中。對于該示例的特定情況,因?yàn)樵谼完全重 寫元素B,使得條目2不再需要。因此,在該情況下,不將表示元素D的條目4放入目 錄結(jié)構(gòu)的前臺(tái)空間中是有益的。使用前臺(tái)空間將會(huì)增加需要存儲(chǔ)的條目(從3個(gè)條目變 為4個(gè)條目),而使用后臺(tái)空間來存儲(chǔ)條目4將保持在目錄結(jié)構(gòu)中存儲(chǔ)的條目的總數(shù)量不 變。換句話說,在新的寫入之前,條目1、2和3被存儲(chǔ)在目錄結(jié)構(gòu)的后臺(tái)空間中,在新 的寫入之后,條目1、3和4被存儲(chǔ)在目錄結(jié)構(gòu)的后臺(tái)空間中。圖8說明了通過寫入來添加新的存儲(chǔ)元素的雙范圍目錄結(jié)構(gòu)的另一個(gè)實(shí)施例。在圖8中的寫入處理的開始處,存在由在目錄結(jié)構(gòu)的后臺(tái)空間中的條目表示 的、存儲(chǔ)在NVM存儲(chǔ)陣列中的三個(gè)獨(dú)立的存儲(chǔ)元素存儲(chǔ)元素A、B和C以及它們各自 的條目1、2和3。還存在由在目錄結(jié)構(gòu)的前臺(tái)空間中的條目表示的、存儲(chǔ)在NVM存儲(chǔ) 陣列中的一個(gè)存儲(chǔ)元素存儲(chǔ)元素D及其條目4。然后,新的寫入發(fā)生,其將元素E添加到LBA空間。然后,包括用于描述元素 E的信息的條目5被添加到LBA空間。在許多實(shí)施例中,由條目5表示的存儲(chǔ)元素E部 分重寫由條目4表示的元素D。因此,條目5被存儲(chǔ)在目錄結(jié)構(gòu)的前臺(tái)空間中,并且條 目4被修改以準(zhǔn)確地描述由于元素E對元素D部分重寫而造成的元素D的新(較短)長 度。在該情況下,后臺(tái)空間條目1、2和3不需要任何修改??梢源嬖谠S多條規(guī)定了許多類型的個(gè)別案例的具體操作的規(guī)則。一般而言,當(dāng) 前臺(tái)空間節(jié)省存儲(chǔ)空間(否則所述存儲(chǔ)空間是使用單范圍目錄結(jié)構(gòu)的結(jié)果)時(shí),可以使用 目錄結(jié)構(gòu)中的前臺(tái)空間。在任何時(shí)候,用于對前臺(tái)和后臺(tái)空間進(jìn)行控制的邏輯可以決定 用于NVM存儲(chǔ)陣列的碎片整理(desegmentation)處理應(yīng)當(dāng)發(fā)生,以清理任何級(jí)別的數(shù)據(jù) 碎片。在許多實(shí)施例中,當(dāng)碎片整理發(fā)生時(shí),表示在NVM存儲(chǔ)陣列中的所有存儲(chǔ)元素 的所有條目被置入目錄結(jié)構(gòu)的后臺(tái)空間。在一些實(shí)施例中,可以在具有顯著的碎片量的 區(qū)域中進(jìn)行部分的碎片整理。圖9是使用雙范圍目錄結(jié)構(gòu)將數(shù)據(jù)寫入到NVM存儲(chǔ)陣列中的過程的實(shí)施例的 流程圖。由處理邏輯來執(zhí)行該過程,該處理邏輯可以包括硬件、軟件或硬件和軟件的組 合。參照圖9,過程以處理邏輯根據(jù)新的寫請求分析LBA開始地址和結(jié)束地址作為開始(處理框900)。然后,處理邏輯檢查以查看當(dāng)前在LBA開始地址到LBA結(jié)束地址之間 是否存在任何條目位于后臺(tái)空間中(處理框902)。
如果在后臺(tái)空間中在該單元的條目處不存在包含存儲(chǔ)的數(shù)據(jù)的存儲(chǔ)元素,則處 理邏輯可以將新的條目添加到目錄結(jié)構(gòu)的后臺(tái)空間中(處理框904)。然后,處理邏輯可 以將新的元素寫入到開始于LBA開始位置的NVM存儲(chǔ)陣列中(處理框906)。
返回框902,如果在該單元的后臺(tái)空間中存在條目,則處理邏輯將新的條目添加 到目錄結(jié)構(gòu)的前臺(tái)空間中(處理框908)。最后,處理邏輯隨后可以將新的存儲(chǔ)元素寫入 到在LBA開始地址到LBA結(jié)束地址范圍內(nèi)的、在NVM存儲(chǔ)陣列中的任意當(dāng)前元素中的 一部分或所有元素上(處理框910),并且處理結(jié)束。
圖10是使用雙范圍目錄結(jié)構(gòu)從NVM存儲(chǔ)陣列中讀取數(shù)據(jù)的過程的實(shí)施例的流 程圖。由處理邏輯來執(zhí)行該過程,該處理邏輯可以包括硬件、軟件或硬件和軟件的組 合。參照圖10,過程以處理邏輯根據(jù)新的讀請求分析LBA開始地址和LBA結(jié)束地址作 為開始(處理框1000)。然后,處理邏輯將LBA開始地址值置入當(dāng)前LBA參數(shù)(處理框 1002)。當(dāng)前LBA參數(shù)僅是由處理邏輯使用的存儲(chǔ)單元,其用于指向從線性LBA地址空 間內(nèi)讀取數(shù)據(jù)的當(dāng)前單元。
在當(dāng)前LBA,處理邏輯檢查以查看地址是否位于在目錄結(jié)構(gòu)的前臺(tái)空間中的條 目的范圍內(nèi)(處理框1004)。如果當(dāng)前單元不在前臺(tái)空間中,則處理邏輯從與位于后臺(tái)空 間中的條目相對應(yīng)的存儲(chǔ)元素中讀取數(shù)據(jù)(處理框1006)。否則,如果當(dāng)前單元處于前臺(tái) 空間中,則處理邏輯從與位于前臺(tái)空間中的條目相對應(yīng)的存儲(chǔ)元素中讀取數(shù)據(jù)(處理框 1008)。
在讀取數(shù)據(jù)之后,處理邏輯隨后檢查以查看當(dāng)前LBA是否等于根據(jù)讀請求分析 的LBA結(jié)束地址(處理框1010)。如果當(dāng)前LBA參數(shù)處在LBA結(jié)束地址處,則處理結(jié) 束。否則,如果當(dāng)前LBA參數(shù)不在LBA結(jié)束地址處,則處理邏輯增加當(dāng)前LBA到要讀 取的下一單元(處理框1012),并且處理返回到框1004。
因此,描述了用于維護(hù)針對非易失性存儲(chǔ)器的雙范圍目錄結(jié)構(gòu)的設(shè)備、系統(tǒng)和 方法的實(shí)施例。參照其具體示例性實(shí)施例描述了這些實(shí)施例。對于受益于該公開的人而 言顯而易見,可以在不脫離本文描述的實(shí)施例的較寬的精神和范圍的情況下,對這些實(shí) 施例進(jìn)行各種變型和改變。因此,說明書和附圖被認(rèn)為是說明性的而不是限制性的。
權(quán)利要求
1.一種非易失性存儲(chǔ)器(NVM)間接寫入設(shè)備,包括NVM存儲(chǔ)陣列,其用于存儲(chǔ)多個(gè)存儲(chǔ)元素;以及雙范圍目錄結(jié)構(gòu),其具有后臺(tái)空間和前臺(tái)空間,所述結(jié)構(gòu)用于存儲(chǔ)多個(gè)條目,所述 多個(gè)條目中的每一個(gè)條目對應(yīng)于在所述NVM存儲(chǔ)陣列中用于存儲(chǔ)所述多個(gè)存儲(chǔ)元素中的 一個(gè)存儲(chǔ)元素的單元,其中,所述后臺(tái)空間包括針對如下存儲(chǔ)元素的條目,該存儲(chǔ)元素在沒有對所述后臺(tái) 空間中的先前存儲(chǔ)的存儲(chǔ)元素進(jìn)行任何部分重寫的情況下被寫入到所述陣列;并且所述 前臺(tái)空間包括針對如下存儲(chǔ)元素的條目,該存儲(chǔ)元素在對所述后臺(tái)空間中的一個(gè)或多個(gè) 先前存儲(chǔ)的存儲(chǔ)元素進(jìn)行至少一次部分重寫的情況下被寫入到所述陣列。
2.根據(jù)權(quán)利要求1所述的設(shè)備,其中,所述多個(gè)條目中的每一個(gè)條目包括所述存儲(chǔ)元 素的單個(gè)邏輯塊地址(LBA)開始地址和單個(gè)LBA結(jié)束地址。
3.根據(jù)權(quán)利要求2所述的設(shè)備,其中,與已經(jīng)被在所述前臺(tái)空間中的一個(gè)或多個(gè)元素 部分重寫的、在所述后臺(tái)空間中的存儲(chǔ)元素相對應(yīng)的每一個(gè)條目繼續(xù)保持所述單個(gè)LBA 開始和結(jié)束地址。
4.根據(jù)權(quán)利要求3所述的設(shè)備,還包括控制器,其用于控制對所述NVM存儲(chǔ)陣列的訪問。
5.根據(jù)權(quán)利要求4所述的設(shè)備,其中,所述控制器用于對于包括要被寫入到所述NVM存儲(chǔ)陣列中的單元的新的存儲(chǔ)元素的給定的寫請求, 當(dāng)所述單元當(dāng)前可用于存儲(chǔ)新數(shù)據(jù)時(shí),針對所述新的存儲(chǔ)元素在所述雙范圍目錄結(jié)構(gòu)中 的所述后臺(tái)空間中創(chuàng)建新的條目。
6.根據(jù)權(quán)利要求4所述的設(shè)備,其中,所述控制器用于對于包括要被寫入到所述NVM存儲(chǔ)陣列中的單元的新的存儲(chǔ)元素的給定的寫請求, 當(dāng)所述單元當(dāng)前存儲(chǔ)了將被所述新的存儲(chǔ)元素完全重寫的、在所述后臺(tái)空間中的一個(gè)或 多個(gè)先前存儲(chǔ)的存儲(chǔ)元素,而沒有存儲(chǔ)將被部分重寫的、在所述后臺(tái)空間中的一個(gè)或多 個(gè)先前存儲(chǔ)的存儲(chǔ)元素時(shí),針對所述新的存儲(chǔ)元素在所述雙范圍目錄結(jié)構(gòu)中的所述后臺(tái) 空間中創(chuàng)建新的條目。
7.根據(jù)權(quán)利要求4所述的設(shè)備,其中,所述控制器用于對于包括要被寫入到所述NVM存儲(chǔ)陣列中的單元的新的存儲(chǔ)元素的給定的寫請求, 當(dāng)所述單元當(dāng)前存儲(chǔ)了將被部分重寫的、在所述后臺(tái)空間中的一個(gè)或多個(gè)先前存儲(chǔ)的存 儲(chǔ)元素時(shí),針對所述新的存儲(chǔ)元素在所述雙范圍目錄結(jié)構(gòu)中的所述前臺(tái)空間中創(chuàng)建新的 條目。
8.根據(jù)權(quán)利要求4所述的設(shè)備,其中,所述控制器用于對于開始于讀請求的LBA開始地址并且持續(xù)到讀請求的LBA結(jié)束地址的給定的 NVM存儲(chǔ)陣列讀請求,并且其中,對于在所述NVM存儲(chǔ)陣列中從所述LBA開始地址到 所述LBA結(jié)束地址的每一個(gè)地址單元,當(dāng)前臺(tái)空間條目存在時(shí),從在所述NVM存儲(chǔ)陣 列中的、與前臺(tái)空間條目相對應(yīng)的存儲(chǔ)元素讀取數(shù)據(jù);并且當(dāng)前臺(tái)空間條目不存在時(shí), 從在所述NVM存儲(chǔ)陣列中的、與后臺(tái)空間條目相對應(yīng)的存儲(chǔ)元素讀取數(shù)據(jù)。
9.根據(jù)權(quán)利要求4所述的設(shè)備,其中,所述控制器用于對于包括要被寫入到所述NVM存儲(chǔ)陣列中的單元的新的存儲(chǔ)元素的給定的寫請求,當(dāng)在所述后臺(tái)空間中創(chuàng)建新的條目使得表示在所述NVM陣列中存儲(chǔ)的所有存儲(chǔ)元素所需 的所述后臺(tái)空間中的條目的總數(shù)量增加至多一個(gè)條目時(shí),針對所述新的存儲(chǔ)元素在所述 雙范圍目錄結(jié)構(gòu)中的所述后臺(tái)空間中創(chuàng)建新的條目。
10.—種系統(tǒng),包括系統(tǒng)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM);NVM存儲(chǔ)陣列,其用于存儲(chǔ)多個(gè)存儲(chǔ)元素;以及存儲(chǔ)在所述系統(tǒng)DRAM中的雙范圍目錄結(jié)構(gòu),其具有后臺(tái)空間和前臺(tái)空間,所述結(jié) 構(gòu)用于存儲(chǔ)多個(gè)條目,所述多個(gè)條目中的每一個(gè)條目對應(yīng)于在所述NVM存儲(chǔ)陣列中用于 存儲(chǔ)所述多個(gè)存儲(chǔ)元素中的一個(gè)存儲(chǔ)元素的單元,其中,所述后臺(tái)空間包括針對如下存儲(chǔ)元素的條目,該存儲(chǔ)元素在沒有對所述后臺(tái) 空間中的先前存儲(chǔ)的存儲(chǔ)元素進(jìn)行任何部分重寫的情況下被寫入到所述陣列;并且所述 前臺(tái)空間包括針對如下存儲(chǔ)元素的條目,該存儲(chǔ)元素在對所述后臺(tái)空間中的一個(gè)或多個(gè) 先前存儲(chǔ)的存儲(chǔ)元素進(jìn)行至少一次部分重寫的情況下被寫入到所述陣列。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中,每一個(gè)條目包括所述存儲(chǔ)元素的單個(gè)邏輯塊 地址(LBA)和長度參數(shù)。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,與已經(jīng)被在所述前臺(tái)空間中的一個(gè)或多個(gè) 元素部分重寫的、在所述后臺(tái)空間中的存儲(chǔ)元素相對應(yīng)的每一個(gè)條目繼續(xù)保持所述單個(gè) LBA和長度參數(shù)。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),還包括控制器,其用于控制對所述NVM存儲(chǔ)陣列的訪問。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其中,所述控制器用于對于包括要被寫入到所述NVM存儲(chǔ)陣列中的單元的新的存儲(chǔ)元素的給定的寫請求, 當(dāng)所述單元當(dāng)前可用于存儲(chǔ)新數(shù)據(jù)時(shí),針對所述新的存儲(chǔ)元素在所述雙范圍目錄結(jié)構(gòu)中 的所述后臺(tái)空間中創(chuàng)建新的條目。
15.根據(jù)權(quán)利要求13所述的系統(tǒng),其中,所述控制器用于對于包括要被寫入到所述NVM存儲(chǔ)陣列中的單元的新的存儲(chǔ)元素的給定的寫請求, 當(dāng)所述單元當(dāng)前存儲(chǔ)了將被所述新的存儲(chǔ)元素完全重寫的、在所述后臺(tái)空間中的一個(gè)或 多個(gè)先前存儲(chǔ)的存儲(chǔ)元素,而沒有存儲(chǔ)將被部分重寫的、在所述后臺(tái)空間中的一個(gè)或多 個(gè)先前存儲(chǔ)的存儲(chǔ)元素時(shí),針對所述新的存儲(chǔ)元素在所述雙范圍目錄結(jié)構(gòu)中的所述后臺(tái) 空間中創(chuàng)建新的條目。
16.根據(jù)權(quán)利要求13所述的系統(tǒng),其中,所述控制器用于對于包括要被寫入到所述NVM存儲(chǔ)陣列中的單元的新的存儲(chǔ)元素的給定的寫請求, 當(dāng)所述單元當(dāng)前存儲(chǔ)了將被部分重寫的、在所述后臺(tái)空間中的一個(gè)或多個(gè)先前存儲(chǔ)的存 儲(chǔ)元素時(shí),針對所述新的存儲(chǔ)元素在所述雙范圍目錄結(jié)構(gòu)中的所述前臺(tái)空間中創(chuàng)建新的 條目。
17.根據(jù)權(quán)利要求13所述的系統(tǒng),其中,所述控制器用于對于開始于讀請求的LBA開始地址并且持續(xù)到讀請求的LBA結(jié)束地址的給定的 NVM存儲(chǔ)陣列讀請求,并且其中,對于在所述NVM存儲(chǔ)陣列中從所述LBA開始地址到 所述LBA結(jié)束地址的每一個(gè)地址單元,當(dāng)前臺(tái)空間條目存在時(shí),從在所述NVM存儲(chǔ)陣列中的、與前臺(tái)空間條目相對應(yīng)的存儲(chǔ)元素讀取數(shù)據(jù);并且當(dāng)前臺(tái)空間條目不存在時(shí), 從在所述NVM存儲(chǔ)陣列中的、與后臺(tái)空間條目相對應(yīng)的存儲(chǔ)元素讀取數(shù)據(jù)。
18.—種方法,包括在包括后臺(tái)空間和前臺(tái)空間的雙范圍目錄結(jié)構(gòu)中存儲(chǔ)多個(gè)條目,所述多個(gè)條目中的 每一個(gè)條目對應(yīng)于在非易失性存儲(chǔ)器(NVM)存儲(chǔ)陣列中的存儲(chǔ)元素,其中,所述后臺(tái)空間包括針對如下存儲(chǔ)元素的條目,該存儲(chǔ)元素在沒有對所述后臺(tái) 空間中的一個(gè)或多個(gè)先前存儲(chǔ)的元素進(jìn)行任何部分重寫的情況下被寫入到所述陣列;并 且所述前臺(tái)空間包括針對如下存儲(chǔ)元素的條目,該存儲(chǔ)元素在對所述后臺(tái)空間中的一個(gè) 或多個(gè)先前存儲(chǔ)的元素進(jìn)行至少一次部分重寫的情況下被寫入到所述陣列。
19.根據(jù)權(quán)利要求18所述的方法,其中,所述多個(gè)條目中的每一個(gè)條目包括所述存儲(chǔ) 元素的單個(gè)邏輯塊地址(LBA)和長度參數(shù)。
20.根據(jù)權(quán)利要求19所述的方法,還包括針對與已經(jīng)被在所述前臺(tái)空間中的一個(gè)或多個(gè)元素部分重寫的、在所述后臺(tái)空間中 的存儲(chǔ)元素相對應(yīng)的所述多個(gè)條目中的每一個(gè)條目,保持所述單個(gè)LBA和大小參數(shù)。
21.根據(jù)權(quán)利要求20所述的方法,還包括對于包括要被寫入到所述NVM存儲(chǔ)陣列中的單元的新的存儲(chǔ)元素的給定的寫請求,當(dāng)所述單元當(dāng)前可用于存儲(chǔ)新數(shù)據(jù)時(shí),針對所述新的存儲(chǔ)元素在所述雙范圍目錄結(jié) 構(gòu)中的所述后臺(tái)空間中創(chuàng)建新的條目。
22.根據(jù)權(quán)利要求20所述的方法,還包括對于包括要被寫入到所述NVM存儲(chǔ)陣列中的單元的新的存儲(chǔ)元素的給定的寫請求,當(dāng)所述單元當(dāng)前存儲(chǔ)了將被所述新的存儲(chǔ)元素完全重寫的、在所述后臺(tái)空間中的一 個(gè)或多個(gè)先前存儲(chǔ)的存儲(chǔ)元素,而沒有存儲(chǔ)將被部分重寫的、在所述后臺(tái)空間中的一個(gè) 或多個(gè)先前存儲(chǔ)的存儲(chǔ)元素時(shí),針對所述新的存儲(chǔ)元素在所述雙范圍目錄結(jié)構(gòu)中的所述 后臺(tái)空間中創(chuàng)建新的條目。
23.根據(jù)權(quán)利要求20所述的方法,還包括對于包括要被寫入到所述NVM存儲(chǔ)陣列中的單元的新的存儲(chǔ)元素的給定的寫請求,當(dāng)所述單元當(dāng)前存儲(chǔ)了將被部分重寫的、在所述后臺(tái)空間中的一個(gè)或多個(gè)先前存儲(chǔ) 的存儲(chǔ)元素時(shí),針對所述新的存儲(chǔ)元素在所述雙范圍目錄結(jié)構(gòu)中的所述前臺(tái)空間中創(chuàng)建 新的條目。
24.根據(jù)權(quán)利要求20所述的方法,還包括對于開始于讀請求的LBA開始地址并且持續(xù)到讀請求的LBA結(jié)束地址的給定的 NVM存儲(chǔ)陣列讀請求,并且其中,對于在所述NVM存儲(chǔ)陣列中從所述LBA開始地址到 所述LBA結(jié)束地址的每一個(gè)地址單元,當(dāng)前臺(tái)空間條目存在時(shí),從在所述NVM存儲(chǔ)陣列中的、與前臺(tái)空間條目相對應(yīng)的存 儲(chǔ)元素讀取數(shù)據(jù);以及當(dāng)前臺(tái)空間條目不存在時(shí),從在所述NVM存儲(chǔ)陣列中的、與后臺(tái)空間條目相對應(yīng)的 存儲(chǔ)元素讀取數(shù)據(jù)。
25.根據(jù)權(quán)利要求20所述的方法,還包括對于包括要被寫入到所述NVM存儲(chǔ)陣列中的單元的新的存儲(chǔ)元素的給定的寫請求,當(dāng)在所述后臺(tái)空間中創(chuàng)建新的條目使得表示在所述NVM陣列中存儲(chǔ)的所有存儲(chǔ)元素 所需的所述后臺(tái)空間中的條目的總數(shù)量增加至多一個(gè)條目時(shí),針對所述新的存儲(chǔ)元素在 所述雙范圍目錄結(jié)構(gòu)中的所述后臺(tái)空間中創(chuàng)建新的條目。
全文摘要
公開了一種設(shè)備、系統(tǒng)和方法。在一個(gè)實(shí)施例中,所述設(shè)備包括非易失性存儲(chǔ)器(NVM)存儲(chǔ)陣列以存儲(chǔ)多個(gè)存儲(chǔ)元素。所述設(shè)備還包括具有后臺(tái)空間和前臺(tái)空間的雙范圍目錄結(jié)構(gòu)。所述結(jié)構(gòu)能夠存儲(chǔ)若干條目,其每一個(gè)對應(yīng)于在NVM存儲(chǔ)陣列中用于對存儲(chǔ)元素進(jìn)行存儲(chǔ)的單元。后臺(tái)空間包括針對如下存儲(chǔ)元素的條目,該存儲(chǔ)元素在沒有對所述后臺(tái)空間中的先前存儲(chǔ)的存儲(chǔ)元素進(jìn)行任何部分重寫的情況下被寫入到所述陣列。前臺(tái)空間包括針對如下存儲(chǔ)元素的條目,該存儲(chǔ)元素在對所述后臺(tái)空間中的一個(gè)或多個(gè)先前存儲(chǔ)的存儲(chǔ)元素進(jìn)行至少一次部分重寫的情況下被寫入到所述陣列。
文檔編號(hào)G06F12/08GK102023930SQ20101024896
公開日2011年4月20日 申請日期2010年8月6日 優(yōu)先權(quán)日2009年8月7日
發(fā)明者A·沃根 申請人:英特爾公司