TWI476771B - 非揮發性記憶體儲存系統之雙範圍目錄 - Google Patents
非揮發性記憶體儲存系統之雙範圍目錄 Download PDFInfo
- Publication number
- TWI476771B TWI476771B TW099123979A TW99123979A TWI476771B TW I476771 B TWI476771 B TW I476771B TW 099123979 A TW099123979 A TW 099123979A TW 99123979 A TW99123979 A TW 99123979A TW I476771 B TWI476771 B TW I476771B
- Authority
- TW
- Taiwan
- Prior art keywords
- item
- storage
- space
- new
- nvm
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本發明有關於非揮發性記憶體儲存系統。詳言之,本發明有關於維持來和該非揮發性記憶體儲存系統一起使用之目錄結構。
非揮發性記憶體(NVM)貯存在電腦產業及電子產業中非常普及。電腦早已將NVM貯存用於基本輸入/輸出系統(BIOS)碼貯存及其他重要開機程序。但是,最近,NVM貯存之使用模型已從數位相機影像貯存大幅擴張至歌曲的數位音樂播放器貯存。NVM裝置的尺寸已顯著地減少且儲存容量已顯著地增加。電腦產業現開始建構利用NVM裝置的固態驅動器(SSD)以用於大量貯存。SSD某日可能會顯著取代傳統硬碟驅動器,部分因為優越性能、較小外形、及較低電力需求。
本文描述維持用於非揮發性記憶體之雙範圍目錄結構的裝置、系統、及方法之實施例。
電腦系統可包括非揮發性記憶體(NVM)貯存子系統。在許多實施例中,NVM貯存子系統可為固態驅動器(SSD)。在其他實施例中,NVM貯存子系統可用於與一般目的貯存驅動器不同的目的。NVM貯存子系統包括一或更多NVM裝置。例如,可能有數個NAND快閃記憶體裝置,其在NVM貯存子系統內創造儲存陣列。NVM貯存子系統,如SSD,儲存大量的儲存元件,其之尺寸可有所不同。當寫入請求抵達NVM子系統時,接著將欲寫入至NVM裝置之資料區塊式地寫入到子系統內之NVM儲存陣列。
欲維持至這些區塊所在之處的簡單存取結構,一般會在如系統記憶體之揮發性記憶體中維持目錄結構。該目錄結構包括對應至儲存在NVM儲存陣列中之每一元件的項目。
在許多實施例中,當寫入請求抵達時,與NVM子系統關聯之邏輯剖析出至少一邏輯區塊位址(LBA)起始位址及操作尺寸。在其中新寫入之處已儲存了儲存元件的許多例子中,部分重寫較舊的元件。在許多情況中,新元件將舊元件實際分為二(亦即在新元件起始前的前部分及在新元件結束後的後部分)。藉由目前的目錄結構,這導致維持目錄的邏輯除了針對在新元件所增加的項目以外還增加一額外項目,因為較舊的元件現為兩元件。此為必須,因為目前的目錄結構維持所有項目之單一線性範圍。
在許多實施例中,提出雙範圍目錄結構,其允許對應至新元件的項目被寫入至目錄結構的一前景空間中,同時較舊較大的元件能夠在目錄結構中的一背景空間中維持單一項目。這本質上允許當持續引進新儲存元件時可在目錄結構中創造較少總項目。
於下列說明及申請專利範圍中對於所揭露技術之「一實施例」、或「實施例」的參照意指連同該實施例所述的特定特性、結構、或特徵係包括在所揭露技術之至少一實施例中。因此,出現在說明書各處中之詞語「在一實施例中」或「在實施例中」的出現並非一定皆參照相同之實施例。
於下列說明及申請專利範圍中,可使用術語「包括」及「包含」,連同其衍生詞,且意圖將它們視為彼此之同義詞。此外,於下列說明及申請專利範圍中,可使用術語「耦合」及「連接」,連同其衍生詞。應了解到這些術語並非為彼此之同義詞。確切地,在特定的實施例中,「連接」可用來指示兩或更多元件為彼此直接實體或電性接觸。「耦合」可意指兩或多元件為直接實體或電性接觸。然而,「耦合」亦可意指兩或多元件為不彼此直接接觸,但仍彼此合作、互動、或通訊。
第1圖描繪包括非揮發性記憶體儲存系統之電腦系統的一實施例。電腦系統包括一或更多中央處理單元(CPU),如CPU 100。在許多實施例中,CPU 100為英特爾公司CPU。在其他實施例中,CPU 100為另一品牌CPU。CPU 100包括一或更多處理器核心,如核心102、104、106、及108。每一核心包括一或更多執行單元、引退(retirement)單元、多個儲存暫存器、潛在一或更多快取記憶體,還有一般存在於CPU核心內的其他電路。CPU 100亦可包括系統記憶體控制器110以控制和系統記憶體112之通訊。系統記憶體互連114通訊式耦合系統記憶體112及CPU 100。該互連可包括在CPU 100及系統記憶體112間傳輸位址、資料、控制、及時脈資訊的線。雖於第1圖中系統記憶體控制器110處於CPU 100內,在未圖示之其他實施例中,系統記憶體控制器110可處於電腦系統中與CPU 100離散之不同的積體電路中。
在許多實施例中,系統記憶體112可為動態隨機存取記憶體(DRAM)。例如,系統記憶體112可為雙資料率(DDR)同步DRAM的形式。在其他實施例中,系統記憶體可為另一形式之記憶體,如非揮發性記憶體。系統記憶體112可儲存由CPU 100所執行之指令及資料。例如,系統記憶體112可在電腦系統操作期間儲存操作系統(OS)116。
在許多實施例中,CPU 100通訊式耦合至輸入/輸出(I/O)複合118。I/O複合118可包括一或更多I/O控制器(未圖示),其允許電腦系統與一或更多I/O裝置(如裝置120及122)通訊。例如,I/O複合118可包括通用序列匯流排(USB)控制器,且I/O裝置120及122可為USB裝置。
在許多實施例中,I/O複合118亦耦合至非揮發性記憶體(NVM)子系統124。NVM子系統124包括至少一或更多非揮發性記憶體裝置。在不同之實施例中,NVM裝置可包括某種快閃記憶體,如基於NAND及NOR之裝置、相變記憶體(PCM)、可電性抹除可編程唯讀記憶體(EEPROM)、或一或更多其他種類的NVM。NVM裝置可不取決於供應至NVM子系統之電力而儲存資料。因此,於電腦系統重設序列、不供電及供電序列、還有可循環電力至電腦系統之任何其他序列期間,NVM子系統可繼續在一或更多裝置中儲存資料。這與系統記憶體112相反,其需要電力來儲存資料。於重設或電力序列期間所儲存在系統記憶體112中之任何資料若在該序列期間沒有儲存在別處將會不見。
NVM子系統124透過互連126通訊式耦合至電腦系統。互連126包含一或更多條線,其利用來傳送資料、位址、控制、及其他信號。在一些實施例中,這些線可包含銅電線。在其他實施例中,這些線可包含另一金屬或合金、光學線、或用來傳送資訊之另一媒體。
在許多實施例中,互連126通訊式耦合NVM子系統124與I/O複合(第1圖中之構件118)。然而,在其他實施例中,互連126可通訊式耦合NVM子系統124與電腦系統內之另一積體電路構件。
第2圖描繪NVM子系統之一實施例的詳圖。該NVM子系統包括NVM儲存陣列200。在不同的實施例中,該貯存可為快閃記憶體或非揮發性之另一形式的記憶體貯存。例如,該貯存可包含一或更多NAND裝置。在其他實施例中,非揮發性儲存陣列200可包含NOR裝置、PCM、EEPROM、或另一種NVM。在許多實施例中,非揮發性儲存陣列可包括一或更多NVM裝置且該些裝置各次分成數個區段。
NVM子系統124包括主機介面202。主機介面202為NVM子系統124與電腦系統之其餘部分間的通訊介面。例如,主機CPU(如第1圖中之CPU 100)與NVM子系統124間之通訊可經由主機介面202發生。來自CPU 100之讀取及寫入請求可經由主機介面202路由到NVM子系統124中。在許多實施例中,主機介面202包括一或更多緩衝器,其可儲存進入NVM子系統124之數個讀取及寫入請求。緩衝器可具有佇列之形式,如先進先出(FIFO)佇列,其可儲存進入NVM子系統124之請求。
主機介面202可接收主機請求,如讀取及寫入請求,並接著將它們轉送至一NVM控制器204。NVM控制器204內之控制邏輯可處理這些請求並寫入至非揮發性儲存陣列200或從非揮發性儲存陣列200讀取。
在許多實施例中,NVM子系統124儲存資料於邏輯區塊中。針對每一寫入,將資料寫入NVM儲存陣列200中的一邏輯區塊位址(LBA)起始位址與一LBA結束位址之間。NVM儲存陣列200中所儲存的每一塊資料可稱為儲存元件。因此,在許多實施例中,儲存元件具有指定的LBA起始位址及LBA結束位址或尺寸。此資訊允許藉由使用LBA起始位址及LBA結束位址而捕捉全部資料量來簡單地讀取儲存元件。
在許多實施例中,使用一目錄結構來追蹤每一儲存元件。該目錄結構可儲存在系統記憶體(例如第1圖中之系統記憶體112中之目錄128)中或電腦系統中之別處的記憶體中。例如,在另一實施例中,目錄結構可設置在NVM子系統124內之記憶體貯存中。一般而言,儲存目錄結構之記憶體可設置在揮發性記憶體中,雖此非必要。
目錄結構包括針對每一儲存元件之一項目以追蹤元件,用於至NVM儲存陣列200之未來寫入及自NVM儲存陣列200之未來讀取。目錄結構中儲存之每一項目的組成在不同實施例中可有所不同。例如,每元件之安全性存取寫入可能需要在項目內儲存額外資訊。但一般而言,每一項目至少具有起始位址之LBA與結束位址之LBA或在邏輯空間中項目的跨度。在許多實施例中,項目亦可包括特定的NVM儲存陣列位址位置。例如,每一項目的尺寸可為8位元組,其中2位元組可為LBA起始位址、2位元組可為LBA結束位址、及4位元組可為NVM儲存陣列位址。在其他實施例中,項目可包含不同或也許額外的資訊。取決於實行例,基於儲存單位有多小或多大,可由不同位元量來代表LBA(例如,若最小儲存單位為一千位元組,則沒有必要儲存代表小於一千位元組粒度的位置之位址位元)。
在許多實施例中,目錄結構允許對資料之一種間接程度。例如,雖目錄結構涉及線性及相連的儲存元件(其各可有任何給定尺寸),NVM控制器可將線性位址轉譯成實體位址,其可能不包含資料的線性區塊。事實上,實際上該資料可能隨機散佈在整個NVM儲存陣列中以允許NVM裝置的損耗同等化(wear leveling)。由於NVM裝置一般具有有限壽命,且在多次寫入後會變得不可靠,將寫入均勻散佈於所有裝置間至為重要,以延長陣列的整體壽命。
可以數個方式改變項目。例如,若較舊的儲存元件被較新的儲存元件完全重寫,可抹除對應至較舊儲存元件(亦即,與較舊儲存元件關聯)的項目以釋放記憶體貯存。
在單範圍目錄結構中,有與構成整個儲存陣列之所有LBA關聯的線性空間。針對該陣列中之每一儲存元件,若那個儲存元件被新儲存元件部分重寫但非完全重寫,必須在目錄結構中針對該新的儲存元件創造新的項目。除了新項目以外,將需要修改對應至被部分重寫的較舊儲存元件的項目。在某些情境中,若部分重寫較舊儲存元件被切成兩不同塊且新的元件在這兩塊間,會需要創造出第二額外的新項目。這導致在單範圍目錄結構中之額外空間需求,因為取代創造一額外的項目,現在有第二額外的項目,其需要用來準確地代表較舊儲存元件的剩餘塊。
第3圖描繪單範圍目錄結構經由寫入來增加新儲存元件的一實施例。LBA空間顯示儲存在NVM儲存陣列中之三個分別的儲存元件:儲存元件A、B、及C。這些儲存元件對應至位在目錄結構中之三個項目:項目1、2、及3。
接著發生增加元件D至LBA空間的新寫入。必須將項目4,其包括描述元件D之資訊,增加至目錄結構。在此特定情況中,元件D完全包圍在元件B的位置內。換言之,在該線性LBA空間中元件B在元件D之起始前開始且元件B之結束超過元件D之結束。
因此,欲在目錄結構中準確地代表元件D還有元件B之其餘有效的部分,創造項目5(第二新項目)。結果顯示元件A及C及其對應項目1及3並未改變。但現在,項目4代表新寫入的元件D、項目2代表在元件D起始前的元件B之仍為有效的部份、且項目5代表在元件D結束後的元件B之仍為有效的部份(現在為元件E)。在此顯示出單範圍目錄結構的負面態樣,因為雖僅增加單一儲存元件至LBA空間,單範圍目錄結構的限制要求增加兩個項目到目錄結構中。
第4至8圖描繪雙範圍目錄結構經由寫入來增加新儲存元件的數個實施例。
第4圖描繪與第3圖中所示之相同示範儲存元件及尺寸,但現在顯示利用目錄結構的雙範圍本質。該目錄結構的雙範圍本質允許該結構一起操作一前景空間及一背景空間。這兩個不同的空間純粹與目錄結構相關。實際的NVM儲存陣列仍可被視為單一LBA線性陣列。該線性係由橫跨每一圖之長度的雙端箭頭所顯示(亦即在那個x軸線上的每一點可視為一單一LBA)。
為了方便說明,NVM儲存陣列包括當抽象地從前景上方的一點往下看該線性陣列並接著穿過前景到背景時可看到的資料。換言之,在一給定LBA,若在前景中沒有第4圖中所示的儲存元件,則儲存在那個LBA的資料為背景中所示之儲存元件中的資料。最後,在一給定LBA,若在相同LBA在前景中顯示有儲存元件且在背景中顯示有儲存元件,則前景中所示的儲存元件優先(亦即,來自在那個LBA的背景儲存元件之資料被來自前景儲存元件的資料重寫)。
返回到第4圖,LBA空間顯示儲存在NVM儲存陣列中的三個分別的儲存元件:儲存元件A、B、及C。這些儲存元件對應至位在目錄結構的背景中之三個項目:項目1、2、及3。
接著發生增加元件D至LBA空間的新寫入。接著將項目4,其包括描述元件D之資訊,增加至目錄結構的前景。在此特定情況中,元件D完全包圍在元件B的位置內。換言之,在該線性LBA空間中元件B在元件D之起始前開始且元件B之結束超過元件D之結束。
在雙範圍目錄結構實行例中,元件D寫入可發生並重寫NVM儲存陣列中之元件B的部分,且將會增加單一項目,項目4,至目錄結構。因此,在此時,目錄結構仍有三個原始項目於目錄結構中,項目1、2、及3,還有新項目4。原始項目的每一個維持不變,無需修改。這包括項目B,其保留其初始LBA起始及結束位址。因此,在寫入後,目錄結構中的前景空間包括項目4且背景空間包括項目1、2、及3。
當在雙範圍實施例中發生讀取時,讀取可在一給定LBA開始並橫跨一或更多元件。每一元件係由目錄結構中的前景或背景空間中的一項目所代表。目錄結構之前景空間中的項目比背景空間中之項目較優先。因此若在一給定LBA之前景及背景空間兩者中皆有項目,則讀取會利用前景項目資訊來拉出資料。
邏輯,其可在NVM控制器204或電腦系統別處內,利用目錄結構來爬過NVM儲存陣列以拉出一讀取之資料。例如,使用在第4圖底部在已經發生新寫入之後的示範LBA線性的線,假設進來一讀取請求,其想要從LBA 2至7的資料。邏輯藉由查詢在目錄結構中的LBA 2作為開始,並判斷在前景空間中的那個位置是否有項目。由於沒有前景空間項目,邏輯接著檢查背景空間中之項目並發現儲存元件B(在目錄結構中由項目2代表)位在LBA 2。邏輯接著判斷項目2在LBA 2至LBA 4為有效,並從那些LBA位置讀取資料。在LBA 4,邏輯體認到有前景項目(項目4)並接著在LBA 4讀取儲存元件D。接著看到在LBA 5沒有前景項目,邏輯返回到項目2並讀取從LBA 5開始的儲存元件B之其餘部分。項目2在LBA 6結束,但邏輯在LBA 6看見另一背景空間項目,項目3。邏輯從對應至項目3(從LBA 6至LBA 7)之儲存元件C讀取資料並完成該讀取。
在許多實施例中,在NVM控制器204或電腦系統別處內之邏輯在當讀取從起始LBA進展至結束LBA時,追蹤在每一LBA之前景及背景中的元件。在一些實施例中,邏輯可具有若一則(IF-THEN)程序的形式,其中,針對每一LBA:
若項目位在前景中,則從前景項目的元件讀取;否則從背景項目的元件讀取;
在一些實施例中,讀取程序可利用回歸邏輯以在當完成由前景空間項目所代表之任何元件的讀取時,多次返回至背景空間項目。
許多其他演算法可用於利用雙範圍目錄結構之讀取。
第5圖描繪雙範圍目錄結構經由寫入來增加新儲存元件的另一實施例。
在第5圖中之寫入程序的一開始,在NVM儲存陣列中儲存有由目錄結構的背景空間中之項目所代表的三個分別儲存元件:儲存元件A、B、及C和其個別的項目1、2、及3。在NVM儲存陣列中亦儲存有由目錄結構之前景空間中的一項目所代表的一儲存元件:儲存元件D及其項目4。
接著發生增加元件E至LBA空間的寫入。接著將項目5,其包括描述元件E之資訊,增加至目錄結構的前景。在此特定情況中,先前由前景項目4所代表之元件D完全被元件E重寫。因此,在此情況中,儲存元件D及項目4不再存在,並且在NVM儲存陣列中被元件E及在目錄結構中之前景空間中的項目5所取代。
第6圖描繪雙範圍目錄結構經由寫入來增加新儲存元件的另一實施例。
在第6圖中之寫入程序的一開始,在NVM儲存陣列中儲存有由目錄結構的背景空間中之項目所代表的三個分別儲存元件:儲存元件A、B、及C和其個別的項目1、2、及3。
接著發生增加元件D至LBA空間的寫入。接著將項目4,其包括描述元件D之資訊,增加至LBA空間,但在不同實施例中,可將對應至元件D的項目增加至目錄結構中的前景或背景空間。這針對此範例尤其如此,因為元件D,雖和項目2(元件D部分重寫項目2)具有不同起始LBA,但具有相同結束位址。因此,元件B不需分裂成新的較小元件B及額外元件E(如第4圖中之情況般)。在此,元件B之唯一剩餘有效部分係從項目2之原始起始LBA至項目D之起始LBA(在項目4)。由於無需第二項目,不像在第4圖中所示之實施例中所需般在目錄結構中需要額外的項目儲存空間。因此,在一些實施例中,可將第6圖中之項目4增加至前景空間(類似第4圖),但在其他實施例中,可將第6圖中之項目4增加至背景空間,就如同在單範圍目錄結構中般。
在一些實施例中,判斷是否增加新項目至目錄結構的前景空間或背景空間之邏輯可利用簡單測試,其中針對新儲存元件增加背景空間項目,若其為整個目錄結構中之唯一需要增加的項目(亦即,針對增加單一新儲存元件共只增加一項目)。否則,針對新儲存元件增加前景空間項目,若藉由增加背景空間項目會需要第二背景空間項目(亦即,如上述般,針對增加單一新儲存元件,共增加兩項目之單範圍限制)。
第7圖描繪雙範圍目錄結構經由寫入來增加新儲存元件的另一實施例。
在第7圖中之寫入程序的一開始,在NVM儲存陣列中儲存有由目錄結構的背景空間中之項目所代表的三個分別儲存元件:儲存元件A、B、及C和其個別的項目1、2、及3。
接著發生增加元件D至LBA空間的新寫入。接著將項目4,其包括描述元件D之資訊,增加至LBA空間,但在不同實施例中,可將對應至元件D的項目增加至目錄結構中的前景或背景空間。這針對此範例尤其如此,因為元件D完全重寫元件B,使項目2變成不必要。因此,在此情況中,有利地不將代表元件D之項目4放在目錄結構之前景空間中。使用前景空間會增加需要儲存之項目(從三個項目增至四個項目),而使用背景空間來儲存項目4可將目錄結構中所儲存之項目總數維持相同。換言之,在新寫入前,項目1、2、及3儲存在目錄結構的背景空間中,且在新寫入後,項目1、3、及4儲存在目錄結構的背景空間中。
第8圖描繪雙範圍目錄結構經由寫入來增加新儲存元件的另一實施例。
在第8圖中之寫入程序的一開始,在NVM儲存陣列中儲存有由目錄結構的背景空間中之項目所代表的三個分別儲存元件:儲存元件A、B、及C和其個別的項目1、2、及3。在NVM儲存陣列中亦儲存有由目錄結構之前景空間中的一項目所代表的一儲存元件:儲存元件D及其項目4。
接著發生增加元件E至LBA空間的新寫入。接著將項目5,其包括描述元件E之資訊,增加至LBA空間。在許多實施例中,由項目5所代表之儲存元件E部分重寫由項目4所代表之元件D。因此,項目5儲存在目錄結構的前景空間中,且修改項目4以準確地描述元件D的新(較短)長度,因其被元件E部分重寫。在此情況中,背景空間項目1、2、及3不需任何修改。
有規定許多類型之角落情況的特定操作之許多更多規則。但一般而言,可在當目錄結構中之前景空間節省否則會是單範圍目錄結構之結果的儲存空間時,利用前景空間。在任何時候,控制前景及背景空間之邏輯可決定是否應發生NVM儲存陣列的去分割程序以清除任何程度的資料碎裂。在許多量施例中,在發生去分割時,把代表NVM儲存陣列中之所有儲存元件的所有項目放在目錄結構的背景空間中。在一些實施例中,可在具有大量的區域中發生部分去分割。
第9圖為利用雙範圍目錄結構來將資料寫入NVM儲存陣列中的程序之一實施例的流程圖。藉由處理邏輯來執行該程序,該處理邏輯可包含硬體、軟體、或硬體及軟體兩者之組合。參照第9圖,該程序藉由處理邏輯剖析來自新寫入請求的LBA起始位址及結束位址作為開始(處理區塊900)。處理邏輯接著檢查看目前是否有任何項目位在該LBA起始位址至該LBA結束位址之間的背景空間中(處理區塊902)。
若在背景空間中的那個位置中的項目沒有含有已儲存資料之儲存元件,則處理邏輯可將新項目增加至目錄結構中之背景空間中(處理區塊904)。接著處理邏輯可將新元件寫入NVM儲存陣列中,從該LBA起始位置開始(處理區塊906)。
返回至區塊902,若在那個位置的背景空間中有項目,則處理邏輯將新項目增加至目錄結構中的前景空間中(處理區塊908)。最後,處理邏輯則可將新儲存元件寫於NVM儲存陣列中在該LBA起始位址至該LBA結束位址的任何目前元件的部份或全部之上(處理區塊910)並且程序結束。
第10圖為利用雙範圍目錄結構來從NVM儲存陣列讀取資料之程序的一實施例之流程圖。藉由處理邏輯來執行該程序,該處理邏輯可包含硬體、軟體、或硬體及軟體兩者之組合。參照第10圖,該程序藉由處理邏輯剖析來自新讀取請求之LBA起始位址及結束位址作為開始(處理區塊1000)。處理邏輯接著將LBA起始位址值放入目前LBA參數中(處理區塊1002)。目前LBA參數只是一個儲存位置,其係由處理邏輯用來指向從其讀取資料之線性LBA位址空間內的目前位置。
在目前LBA,處理邏輯檢查該位址是否位在目錄結構之前景空間中之一項目的範圍內(處理區塊1004)。若目前位置不在前景空間中,則處理邏輯從對應至位在背景空間中之項目的儲存元件讀取資料(處理區塊1006)。否則,若目前位置在前景空間中,則處理邏輯從對應至位在前景空間中之項目的儲存元件讀取資料(處理區塊1008)。
在讀取資料之後,處理邏輯接著檢查目前LBA是否等於來自讀取請求之LBA結束位址(處理區塊1010)。若目前LBA參數係在LBA結束位址,則程序結束。否則,若目前LBA參數不在LBA結束位址,則處理邏輯將目前LBA增額至欲讀取的下一個位置(處理區塊1012)並且程序返回至區塊1004。
因此,已說明維持用於非揮發性記憶體的雙範圍目錄結構之裝置、系統、及方法。這些實施例已經參照其之特定示範實施例加以說明。顯然得利於此揭露之人士可對這些實施例做出各種修改及變更而不背離在此所述之實施例的較廣精神及範圍。依此,說明書及圖僅應視為例示而非限制。
100...中央處理單元
102、104、106、108...核心
110...系統記憶體控制器
112...系統記憶體
114...系統記憶體互連
116...操作系統
118...輸入/輸出複合
120、122...I/O裝置
124...非揮發性記憶體子系統
126...互連
128...目錄
200...NVM儲存陣列
202...主機介面
204...NVM控制器
舉例而非限制地以圖來說明本發明,圖中類似參考符號代表類似元件,且其中:
第1圖描繪包括非揮發性記憶體儲存系統之電腦系統的一實施例。
第2圖描繪NVM子系統之一實施例的詳圖。
第3圖描繪單範圍目錄結構經由寫入來增加新儲存元件的一實施例。
第4至8圖描繪雙範圍目錄結構經由寫入來增加新儲存元件的數個實施例。
第9圖為利用雙範圍目錄結構來將資料寫入NVM儲存陣列中的程序之一實施例的流程圖。
第10圖為利用雙範圍目錄結構來從NVM儲存陣列讀取資料之程序的一實施例之流程圖。
100...中央處理單元
102、104、106、108...核心
110...系統記憶體控制器
112...系統記憶體
114...系統記憶體互連
116...操作系統
118...輸入/輸出複合
120、122...I/O裝置
124...非揮發性記憶體子系統
126...互連
128...目錄
Claims (25)
- 一種非揮發性記憶體(NVM)寫入間接裝置,包含:儲存複數儲存元件之NVM儲存陣列;以及具有背景空間及前景空間之雙範圍目錄結構,該結構儲存複數項目,該複數項目之每一項目對應至儲存該複數儲存元件之一的該NVM儲存陣列中之一位置,其中該背景空間包括針對寫入該陣列中而無在該背景空間中之先前儲存的儲存元件之任何部分重寫之儲存元件的項目,且該前景空間包括針對寫入該陣列中並具有在該背景空間中之一或更多先前儲存的儲存元件之至少一部分重寫之儲存元件的項目。
- 如申請專利範圍第1項所述之裝置,其中該複數項目之每一項目包括該儲存元件之一單一邏輯區塊位址(LBA)起始位址及一單一LBA結束位址。
- 如申請專利範圍第2項所述之裝置,其中對應至在該背景空間中已經被在前景空間中之一或更多元件部分重寫的儲存元件之每一項目繼續維持該LBA起始及結束位址。
- 如申請專利範圍第3項所述之裝置,進一步包含控制器,以控制對該NVM儲存陣列之存取。
- 如申請專利範圍第4項所述之裝置,其中該控制器可操作成:針對包括將寫至該NVM儲存陣列中之一位置的一新 儲存元件之給定寫入請求,當該位置目前可供儲存新資料時,為該新儲存元件在該雙範圍目錄結構中之該背景空間中產生一新項目。
- 如申請專利範圍第4項所述之裝置,其中該控制器可操作成:針對包括將寫至該NVM儲存陣列中之一位置的一新儲存元件之給定寫入請求,當該位置目前儲存在該背景空間中之將會被該新儲存元件完全重寫的一或更多先前儲存的儲存元件,而非儲存在該背景空間中之將會被部分重寫的一或更多先前儲存的儲存元件時,為該新儲存元件在該雙範圍目錄結構中之該背景空間中產生一新項目。
- 如申請專利範圍第4項所述之裝置,其中該控制器可操作成:針對包括將寫至該NVM儲存陣列中之一位置的一新儲存元件之給定寫入請求,當該位置目前儲存在該背景空間中之將會被部分重寫的一或更多先前儲存的儲存元件時,為該新儲存元件在該雙範圍目錄結構中之該前景空間中產生一新項目。
- 如申請專利範圍第4項所述之裝置,其中該控制器可操作成:針對給定NVM儲存陣列讀取請求,其在該讀取請求之LBA起始位址開始並延續至該讀取請求之LBA結束位址,以及其中針對在該NVM儲存陣列中從該LBA起始位址至該LBA結束位址之每一位址位置,當存在前景空間 項目時,從對應至前景空間項目之該NVM儲存陣列中的儲存元件讀取資料;以及當不存在前景空間項目時,從對應至背景空間項目之該NVM儲存陣列中的儲存元件讀取資料。
- 如申請專利範圍第4項所述之裝置,其中該控制器可操作成:針對包括將寫至該NVM儲存陣列中之一位置的一新儲存元件之給定寫入請求,當在該背景空間中之該新項目的產生使代表該NVM陣列中儲存的所有儲存元件所需之該背景空間中之項目總數增加最多一項目時,為該新儲存元件在該雙範圍目錄結構中之該背景空間中產生一新項目。
- 一種非揮發性記憶體儲存系統,包含:系統動態隨機存取記憶體(DRAM);儲存複數儲存元件之NVM儲存陣列;以及儲存在該系統DRAM中的具有背景空間及前景空間之雙範圍目錄結構,該結構儲存複數項目,該複數項目之每一項目對應至儲存該複數儲存元件之一的該NVM儲存陣列中之一位置,其中該背景空間包括針對寫入該陣列中而無在該背景空間中之先前儲存的儲存元件之任何部分重寫之儲存元件的項目,且該前景空間包括針對寫入該陣列中並具有在該背景空間中之一或更多先前儲存的儲存元件之至少一部分重寫之儲存元件的項目。
- 如申請專利範圍第10項所述之系統,其中每一項目包括一單一邏輯區塊位址(LBA)及該儲存元件之長度參數。
- 如申請專利範圍第11項所述之系統,其中對應至在該背景空間中已經被在前景空間中之一或更多元件部分重寫的儲存元件之每一項目繼續維持該單一LBA及長度參數。
- 如申請專利範圍第12項所述之系統,進一步包含控制器,以控制對該NVM儲存陣列之存取。
- 如申請專利範圍第13項所述之系統,其中該控制器可操作成:針對包括將寫至該NVM儲存陣列中之一位置的一新儲存元件之給定寫入請求,當該位置目前可供儲存新資料時,為該新儲存元件在該雙範圍目錄結構中之該背景空間中產生一新項目。
- 如申請專利範圍第13項所述之系統,其中該控制器可操作成:針對包括將寫至該NVM儲存陣列中之一位置的一新儲存元件之給定寫入請求,當該位置目前儲存在該背景空間中之將會被該新儲存元件完全重寫的一或更多先前儲存的儲存元件,而非儲存在該背景空間中之將會被部分重寫的一或更多先前儲存的儲存元件時,為該新儲存元件在該雙範圍目錄結構中之該背景空間中產生一新項目。
- 如申請專利範圍第13項所述之系統,其中該控制 器可操作成:針對包括將寫至該NVM儲存陣列中之一位置的一新儲存元件之給定寫入請求,當該位置目前儲存在該背景空間中之將會被部分重寫的一或更多先前儲存的儲存元件時,為該新儲存元件在該雙範圍目錄結構中之該前景空間中產生一新項目。
- 如申請專利範圍第13項所述之系統,其中該控制器可操作成:針對給定NVM儲存陣列讀取請求,其在該讀取請求之LBA起始位址開始並延續至該讀取請求之LBA結束位址,以及其中針對在該NVM儲存陣列中從該LBA起始位址至該LBA結束位址之每一位址位置,當存在前景空間項目時,從對應至前景空間項目之該NVM儲存陣列中的儲存元件讀取資料;以及當不存在前景空間項目時,從對應至背景空間項目之該NVM儲存陣列中的儲存元件讀取資料。
- 一種用於非揮發性記憶體儲存系統之方法,包含:在包括背景空間及前景空間的雙範圍目錄結構中儲存複數項目,該複數項目之每一項目對應至非揮發性記憶體(NVM)儲存陣列中之一儲存元件,其中該背景空間包括針對寫入該陣列中而無在該背景空間中之一或更多先前儲存的儲存元件之任何部分重寫之儲存元件的項目,且該前景空間包括針對寫入該陣列中並 具有在該背景空間中之一或更多先前儲存的儲存元件之至少一部分重寫之儲存元件的項目。
- 如申請專利範圍第18項所述之方法,其中該複數項目之每一項目包括一單一邏輯區塊位址(LBA)及該儲存元件之長度參數。
- 如申請專利範圍第19項所述之方法,進一步包含:針對對應至在該背景空間中已經被在前景空間中之一或更多元件部分重寫的儲存元件之該複數項目的每一項目,維持該單一LBA及尺寸參數。
- 如申請專利範圍第20項所述之方法,進一步包含:針對包括將寫至該NVM儲存陣列中之一位置的一新儲存元件之給定寫入請求,當該位置目前可供儲存新資料時,為該新儲存元件在該雙範圍目錄結構中之該背景空間中產生一新項目。
- 如申請專利範圍第20項所述之方法,進一步包含:針對包括將寫至該NVM儲存陣列中之一位置的一新儲存元件之給定寫入請求,當該位置目前儲存在該背景空間中之將會被該新儲存元件完全重寫的一或更多先前儲存的儲存元件,而非儲存在該背景空間中之將會被部分重寫的一或更多先前儲存的儲存元件時,為該新儲存元件在該雙範圍目錄結構中之該 背景空間中產生一新項目。
- 如申請專利範圍第20項所述之方法,進一步包含:針對包括將寫至該NVM儲存陣列中之一位置的一新儲存元件之給定寫入請求,當該位置目前儲存在該背景空間中之將會被部分重寫的一或更多先前儲存的儲存元件時,為該新儲存元件在該雙範圍目錄結構中之該前景空間中產生一新項目。
- 如申請專利範圍第20項所述之方法,進一步包含:針對給定NVM儲存陣列讀取請求,其在該讀取請求之LBA起始位址開始並延續至該讀取請求之LBA結束位址,以及其中針對在該NVM儲存陣列中從該LBA起始位址至該LBA結束位址之每一位址位置,當存在前景空間項目時,從對應至前景空間項目之該NVM儲存陣列中的儲存元件讀取資料;以及當不存在前景空間項目時,從對應至背景空間項目之該NVM儲存陣列中的儲存元件讀取資料。
- 如申請專利範圍第20項所述之方法,進一步包含:針對包括將寫至該NVM儲存陣列中之一位置的一新儲存元件之給定寫入請求,當在該背景空間中之該新項目的產生使代表該NVM陣列中儲存的所有儲存元件所需之該背景空間中之項目總 數增加最多一項目時,為該新儲存元件在該雙範圍目錄結構中之該背景空間中產生一新項目。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/462,695 US8631187B2 (en) | 2009-08-07 | 2009-08-07 | Dual-scope directory for a non-volatile memory storage system |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201120890A TW201120890A (en) | 2011-06-16 |
TWI476771B true TWI476771B (zh) | 2015-03-11 |
Family
ID=43535658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099123979A TWI476771B (zh) | 2009-08-07 | 2010-07-21 | 非揮發性記憶體儲存系統之雙範圍目錄 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8631187B2 (zh) |
CN (1) | CN102023930B (zh) |
TW (1) | TWI476771B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10466917B2 (en) * | 2017-09-29 | 2019-11-05 | Intel Corporation | Indirection structure prefetch based on prior state information |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544356A (en) * | 1990-12-31 | 1996-08-06 | Intel Corporation | Block-erasable non-volatile semiconductor memory which tracks and stores the total number of write/erase cycles for each block |
US20090172499A1 (en) * | 2007-12-27 | 2009-07-02 | Pliant Technology, Inc. | Patrol function used in flash storage controller to detect data errors |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060184719A1 (en) | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct data file storage implementation techniques in flash memories |
-
2009
- 2009-08-07 US US12/462,695 patent/US8631187B2/en active Active
-
2010
- 2010-07-21 TW TW099123979A patent/TWI476771B/zh not_active IP Right Cessation
- 2010-08-06 CN CN201010248967.3A patent/CN102023930B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544356A (en) * | 1990-12-31 | 1996-08-06 | Intel Corporation | Block-erasable non-volatile semiconductor memory which tracks and stores the total number of write/erase cycles for each block |
US20090172499A1 (en) * | 2007-12-27 | 2009-07-02 | Pliant Technology, Inc. | Patrol function used in flash storage controller to detect data errors |
Also Published As
Publication number | Publication date |
---|---|
CN102023930B (zh) | 2014-09-10 |
US20110035534A1 (en) | 2011-02-10 |
TW201120890A (en) | 2011-06-16 |
CN102023930A (zh) | 2011-04-20 |
US8631187B2 (en) | 2014-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11188259B2 (en) | Storage device and method of operating the storage device | |
US9697116B2 (en) | Storage system and writing method thereof | |
JP4829365B1 (ja) | データ記憶装置及びデータ書き込み方法 | |
US7937523B2 (en) | Memory system with nonvolatile semiconductor memory | |
US11520660B2 (en) | Storage devices hiding parity swapping behavior | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
US20080028132A1 (en) | Non-volatile storage device, data storage system, and data storage method | |
JP4977703B2 (ja) | 予定再生操作を伴う不揮発性メモリ | |
US9304900B2 (en) | Data reading method, memory controller, and memory storage device | |
JP2013242908A (ja) | ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法 | |
CN110083545A (zh) | 数据存储装置及其操作方法 | |
CN109783008B (zh) | 数据存储装置及其操作方法 | |
US11210226B2 (en) | Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof | |
US20190391756A1 (en) | Data storage device and cache-diversion method thereof | |
US9619380B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
US9389998B2 (en) | Memory formatting method, memory controller, and memory storage apparatus | |
TW201715401A (zh) | 資料儲存設備及其操作方法 | |
US8185687B2 (en) | Semiconductor storage device and method of controlling semiconductor storage device | |
CN111813703B (zh) | 数据储存装置及逻辑至物理地址映射表的更新方法 | |
CN114063893A (zh) | 数据储存装置与数据处理方法 | |
US9037781B2 (en) | Method for managing buffer memory, memory controllor, and memory storage device | |
JP2005339231A (ja) | メモリカード、半導体装置、及び半導体メモリの制御方法 | |
TWI476771B (zh) | 非揮發性記憶體儲存系統之雙範圍目錄 | |
JP2007233838A (ja) | メモリシステムの制御方法 | |
JP4663577B2 (ja) | データ記憶装置およびこの初期化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |